Abbiamo eseguito 36 grandi modelli linguistici su 759 domande di BIRD-SQL, ciascun modello scrivendo SQL contro un database che doveva identificare da solo tra 11 candidati. Ogni query analizzabile è stata eseguita sul database reale e il suo set di risultati confrontato con il set di risultati della query gold di BIRD. Le query mancanti, malformate e con errori di esecuzione sono state conteggiate come mancate.
Ogni esecuzione è stata a temperatura 0, zero-shot, con l'indizio di dominio di BIRD nascosto. Diciannove delle 36 esecuzioni hanno utilizzato il livello di recupero delle tool-call descritto nella pagina sul routing, che analizza le tool call che il parser standard rifiuta. Quindici esecuzioni precedono tale livello e due si collocano a cavallo del cambiamento.
Metriche spiegate:
Corrispondenza di esecuzione rigorosa: Corrispondenza di esecuzione sulle domande che il modello ha instradato correttamente. Condizionare al percorso corretto rimuove gli errori diretti dovuti al database sbagliato, ma non isola completamente la capacità SQL, perché ogni modello raggiunge un sottoinsieme diverso di domande.
Gold pulito: La stessa misurazione con le domande il cui SQL gold abbiamo giudicato difettoso eliminate dal denominatore. Tali domande non vengono conteggiate come superate, ma rimosse.
Aggiudicato: L'estremità superiore. Una giuria cieca di tre modelli, estratta da famiglie diverse dal modello in esame, riesamina ogni risposta rifiutata dal confronto rigoroso, nei casi in cui il modello ha instradato correttamente, il SQL viene eseguito e le sue righe si sovrappongono a quelle del gold per meno della metà. Decide se la query è una formulazione diversa ma equivalente, se il gold è sbagliato o se è sbagliato il modello. Le risposte equivalenti e i gold difettosi vengono accreditati.
Tutte e tre partono dall'insieme completo di 759 domande piuttosto che dal sottoinsieme difficile e nessuna di esse usa 759 come denominatore. Ciascuna viene misurata sulle domande che il modello ha instradato correttamente e la colonna gold pulito elimina poi i gold contrassegnati. Il caso non si applica a questo asse, perché una query restituisce il set di risultati gold oppure no.
Text-to-SQL: risultati del benchmark
Risposte corrette nella forma sbagliata costano a un modello 22.7 punti
claude-sonnet-5 registra 0.311 nella corrispondenza di esecuzione rigorosa, 33° su 36 modelli e il più basso di qualsiasi riga Anthropic. In condizioni di aggiudicazione cieca la stessa esecuzione ottiene 0.710, 0.007 sotto il 0.717 di qwen3.6-27b.
Il guadagno di 39.9 punti si divide in due. 154 delle sue 679 domande valutate, 22.7 punti, sono risposte che la giuria ha letto come equivalenti al gold ma in forma diversa. Altre 117, 17.2 punti, sono domande in cui la giuria ha giudicato il gold stesso difettoso. Lo stile di risposta spiega la prima di queste due componenti, non la somma. I guasti dell'harness non spiegano nulla di tutto ciò, perché l'esecuzione non ha registrato query mancanti, un solo crash e nessuna risposta non recuperata.
Quelle stesse 154 risposte rappresentano il 34% delle 453 mancate di sonnet-5 arrivate all'aggiudicazione. "Format-equivalent" significa che la query restituisce le informazioni giuste in una proiezione diversa, con una colonna in più, un ordine di colonne diverso oppure un conteggio dove il gold restituiva le righe. La corrispondenza di esecuzione rigorosa classifica questo come un fallimento.
La tendenza dipende dalla famiglia di modelli più che dal livello di capacità. Le famiglie con proiezione ricca perdono in questo modo da un quarto a un terzo delle loro mancate aggiudicate: Claude dal 25 al 34%, Kimi dal 24 al 34%, la linea di ragionamento 5.x di OpenAI dal 26 al 32%, DeepSeek 31%, MiniMax dal 26 al 30% e GLM-5.x 28%. I modelli che scrivono nella forma del gold perdono molto meno: Google dal 9 al 17%, Llama 9%, Mistral 18%, Grok 19% e i modelli piccoli di OpenAI dal 19 al 20%. Grok ha infranto la nostra prima spiegazione di questo schema. Si colloca nel livello di ragionamento e perde il 19%.
La misurazione aggiudicata colloca sonnet-5 al 17° posto, con un divario di 16 posizioni.
La giuria rileva che il 46% delle risposte rifiutate di un modello non sono errori del modello
Abbiamo preso 314 delle 346 risposte che il confronto rigoroso ha rifiutato per gemini-3.5-flash-lite sulle domande instradate correttamente, quelle il cui SQL è stato eseguito e le cui righe si sovrapponevano a quelle del gold per meno della metà, e le abbiamo inviate alla giuria cieca di tre modelli con posizioni mescolate. Quelle 346 coprono ogni classe di difficoltà, non solo quelle difficili, e quindi corrispondono alla popolazione coperta dalle colonne SQL.
La giuria le ha divise in quattro categorie. I difetti del gold, dove il modello ha ragione e la query gold di BIRD è sbagliata, hanno rappresentato il 29.3%. I format-equivalent il 16.6%, gli errori autentici del modello il 33.4% e i casi ambigui il 20.7%. Sommando i primi due, 144 delle 314 mancate aggiudicate (46%) non sono errori del modello. Tale quota è calcolata sulle 314 arrivate alla giuria, non su tutte le 346 risposte rifiutate. Le 32 trattenute o non sono state eseguite o si sovrapponevano troppo al gold per costituire un disaccordo netto.
La severità del comparatore non spiega il divario. Allentare la corrispondenza sull'ordine delle colonne fa guadagnare 0.5 punti e il 92% delle mancate si sovrappone al risultato gold per meno di 0.5. L'aggiudicazione, anziché un comparatore più permissivo, colloca quel modello in un intervallo tra 0.606 e 0.687, contro un rigoroso 0.464.
Le mancate che la giuria ha chiamato difetti del gold si concentrano dove nessuna correzione pubblicata arriva: 33% delle mancate del train split di questo modello contro il 20% delle mancate del dev split. Ogni correzione deterministica a nostra disposizione era già stata utilizzata. Il nuovo punteggio rispetto alla release dev corretta di BIRD ha ribaltato 0 delle 92 mancate dev, un set di correzioni esterne ne ha coperte 39 e ne ha ribaltata 1, e un audit del motore MySQL rispetto a SQLite ha trovato 4 gold divergenti nell'intero set, insieme circa l'1% delle 314.
Il nostro audit con cinque modelli segnala il 31.1% delle query gold di BIRD come difettose
Abbiamo verificato il gold stesso. Cinque modelli di frontiera, uno per famiglia, hanno valutato tutte le 759 query gold rispetto alle rispettive domande e schemi. A nessun giurato è mai stato mostrato l'output di alcun modello. Il panel ha segnalato 236 delle 759 query gold come difettose, il 31.1%, a un costo di $20,55 e senza chiamate della giuria fallite.
Il tasso si divide per partizione BIRD: 204 delle 560 query gold di train (36%) contro 32 delle 199 query gold di dev (16%). Un panel indipendente di tre modelli eseguito in precedenza aveva raggiunto il 29.1% e 207 delle sue 221 segnalazioni di gold difettosi, il 94%, risultano difettose anche in questa edizione. Su tutte le 759 domande i due panel concordano sul 92.9%.
Una stima pubblicata copre il train split di BIRD, l'audit di MotherDuck di 151 esempi, e colloca il tasso al 32.5%. Gli audit peer-reviewed di BIRD coprono per scelta esplicita il dev split, quindi i 151 esempi di MotherDuck rappresentano l'unico controllo esterno sulle 560 domande di train nel nostro set congelato, pari al 73.8% di esso.1
Eliminando i gold difettosi dal denominatore, il miglior modello in corrispondenza rigorosa passa da 0.551 a 0.677 e i guadagni per modello vanno da +4.5 a +13.3 punti. La fascia alta mantiene il proprio ordine e le posizioni intermedie vicine si spostano al massimo di tre posizioni.
Un modello da 27B è quinto per accuratezza SQL rigorosa
qwen3.6-27b registra 0.471 in modalità rigorosa e 0.590 in gold pulito, quinto nel panel dietro a gemini-3-flash-preview (0.551 / 0.677), gemini-3.1-pro-preview (0.536 / 0.669), claude-fable-5 (0.531 / 0.655) e claude-opus-5 (0.523 / 0.643). Ogni riga di OpenAI, Kimi e DeepSeek registra un punteggio rigoroso inferiore e l'esecuzione è costata $15.28.
La colonna è misurata sui percorsi corretti di ciascun modello, quindi un router più debole viene valutato su una selezione più facile. qwen3.6-27b instrada 0.679 e la sezione sulle limitazioni misura tale effetto con una correlazione di 0.96 tra accuratezza di routing e difficoltà del denominatore.
L'ordinamento cambia quando si usa l'estremità superiore del bracket. Nei punteggi aggiudicati qwen3.6-27b è quattordicesimo con 0.717 mentre claude-opus-5 guida con 0.824.
La capacità di routing e la capacità di scrittura SQL sono assi separati
kimi-k3 instrada 0.832, dietro a claude-opus-5 a 0.848 e a pari merito con qwen3.8-max, e scrive 0.482 di SQL gold pulito contro il miglior panel di 0.677. gemini-3-flash-preview fa il contrario, instradando 0.753 con quel SQL gold pulito migliore del panel. gpt-5.6-terra instrada a 0.772 e scrive 0.447.
I due assi non sono misurati sullo stesso denominatore. Ogni modello scrive SQL per le domande che ha instradato correttamente e solo per quelle; i router migliori si guadagnano un insieme più difficile, il che spinge verso il basso qualsiasi associazione misurata tra gli assi.
L'audit del gold e la giuria di aggiudicazione
Due giurie hanno svolto due lavori diversi.
La giuria di validità del gold valuta le query gold. I suoi cinque giurati (claude-opus-4.8, gpt-5.6-sol, gemini-3.1-pro-preview, grok-4.5, deepseek-v4-pro) vedono ciascuno una domanda, il SQL gold e gli elenchi delle colonne delle tabelle toccate dalla query, e rispondono se il gold risponde alla domanda. Non viene mai mostrato l'output di alcun modello. I suoi verdetti sono congelati in un file hash-pinned e alimentano la colonna gold pulito.
La giuria di aggiudicazione valuta la mancata di un modello specifico. Tre modelli estratti da famiglie diverse dal modello in esame vedono la domanda, la query e il risultato gold e la query e il risultato candidato, con le posizioni mescolate, e votano a quale di quattro categorie appartiene la mancata. Costa circa $6 per modello e i suoi verdetti alimentano la colonna aggiudicata. L'aggiudicazione sull'intero panel di 36 modelli è costata $208.81.
La colonna aggiudicata è un endpoint ottimistico corretto per l'aggiudicazione piuttosto che una verità di riferimento indipendente. Può sbagliare in entrambe le direzioni. Una risposta ambigua che in realtà era corretta non riceve credito e un falso positivo della giuria ne accredita una che non lo era. Tre proprietà misurate limitano quanto ci si può spingere.
La revisione è asimmetrica. Le mancate ricevono un secondo esame, i superamenti mai, quindi un errore nel senso dei superamenti non può essere individuato. I verdetti ambigui, dal 15 al 23% a seconda del modello, non vengono mai accreditati, e i quasi successi e le query non eseguite restano mancate.
Non elimina il pavimento dei modelli deboli. Come controllo negativo abbiamo aggiudicato nova-lite-v1, la riga più debole del panel. Il suo punteggio sale da 0.190 a 0.316 e rimane 0.150 sotto la riga successiva. Il pavimento è confermato da llama a 0.466, mistral a 0.509 e gpt-5.4-nano a 0.512.
La quota di difetti del gold segue la forza del modello con una correlazione di rango di 0.906, misurata su 33 modelli. Le mancate di gpt-5.6-sol sono per il 40% difetti del gold e per il 19% errori autentici, mentre quelle di llama-4-maverick sono per il 13% e il 50%.
Ventiquattro dei 36 modelli si collocano a o sopra 0.68 nel punteggio aggiudicato.
Come funziona la generazione SQL in questo benchmark
Il modello non riceve mai uno schema in anticipo. Sceglie uno degli 11 strumenti database, legge l'elenco delle tabelle restituito, chiede le colonne di una tabella quando ne ha bisogno e può eseguire query esplorative sul database su cui si è assestato prima di impegnarsi. L'output dello schema è limitato a 4.000 caratteri e i risultati delle query a 50 righe.
La query finale arriva tramite una chiamata di finalizzazione obbligatoria inviata senza strumenti associati, insieme al database dichiarato dal modello. Il punteggio esegue tale query e la query gold di BIRD sullo stesso file di database e confronta i due set di risultati, con una sentinella NULL e una modalità sensibile all'ordine per le domande che specificano un ordine.
Il confronto è il passo rigoroso ed è lì che una risposta corretta può essere conteggiata come mancata. Una query che restituisce le stesse righe con una colonna in più, in un ordine di colonne diverso oppure come conteggio dove il gold restituiva le righe, non supera il confronto. È questo il divario che la giuria di aggiudicazione misura, non quello che un comparatore più permissivo chiuderebbe, che vale 0.5 punti.
Metodologia del benchmark per text-to-SQL
Questo benchmark condivide il proprio harness con il benchmark RAG agentico, che descrive per intero la selezione del database, la tassonomia della difficoltà, l'anonimizzazione, il loop agentico e il budget dei turni. Entrambe le pagine riportano lo stesso sottoinsieme congelato di 759 domande BIRD-SQL, eseguito su 11 database tra cui il modello deve scegliere, a temperatura 0 con l'indizio di dominio nascosto. La pagina sul routing descrive l'asse del routing, questa pagina descrive l'asse SQL.
Punteggio: corrispondenza di esecuzione. La query finale del modello e la query gold di BIRD vengono entrambe eseguite sul database reale e i loro set di risultati confrontati, con una sentinella NULL e una modalità sensibile all'ordine per le query la cui domanda specifica un ordine. Denominatore: domande instradate correttamente dal modello. Forma riportata: un bracket a tre valori, corrispondenza di esecuzione rigorosa, poi gold pulito, poi aggiudicato. Audit del gold: 5 famiglie di frontiera, un modello ciascuna, 759 query gold valutate, 236 segnalate come difettose, hash-pinned. Aggiudicazione: 3 modelli per candidato, di famiglie disgiunte dal modello in esame, ciechi e con posizioni mescolate. Panel: 36 modelli, una singola esecuzione ciascuno, $874,53 per le esecuzioni e $208,81 per l'aggiudicazione.
Perché nessun giudice LLM valuta la correttezza al livello di base. Abbiamo misurato l'alternativa prima di scegliere. Su 2.203 record del benchmark precedente, un giudice LLM non ha mai bocciato una query superata dall'esecuzione, a nessuna soglia. A quel giudice erano mostrati entrambi i set di risultati, quindi il suo verdetto non è indipendente dall'esito dell'esecuzione e lo zero non dimostra che un giudice non possa essere più severo. L'esecuzione rimane il pavimento e la giuria compare più in alto nel bracket, dove la sua clemenza è il punto.
Perché l'indizio viene nascosto. BIRD fornisce un indizio di dominio per ogni domanda. Fornirlo vale da 6 a 9 punti di corrispondenza di esecuzione e sposta anche l'accuratezza di routing di 5.7 punti, il che lo rende una fuga di informazioni sull'asse del routing. Entrambe le pagine riportano quindi la condizione gratuito senza indizio e i numeri SQL qui sono inferiori a quelli che gli stessi modelli otterrebbero in condizioni standard BIRD.
Accuratezza SQL nel panel, in tre modi
Classificato in base alla colonna aggiudicata. Sei righe sono rimaste al di sotto dei 759 record dopo due tentativi di retry e le domande mancanti sono assenti da ogni denominatore anziché essere conteggiate come errori.
Limiti dell'asse SQL
Il gold è preso in prestito e contestato. La nostra cifra del 31.1% di gold difettosi è il nostro sottoinsieme verificato, non una verità di riferimento multi-annotatore. Non esiste un passaggio duplicato in cieco, non esiste un dato di accordo tra annotatori e la verifica umana è stata svolta dal proprietario del benchmark piuttosto che da un annotatore indipendente. I giurati vedevano gli elenchi delle colonne delle tabelle toccate dalla query gold, quindi un gold che interroga la tabella sbagliata non è rilevabile da quella vista e tali difetti vengono mancati. Il panel può anche segnalare un gold funzionante, un errore nella direzione opposta. Nessun annotatore indipendente ha ripetuto il passaggio, quindi l'errore residuo non è misurato in nessuna delle due direzioni e la cifra non è un pavimento.
La colonna aggiudicata è uno strumento LLM, non una seconda verità di riferimento e non un limite superiore rigoroso. I suoi tre giurati sono modelli, quindi la colonna eredita qualsiasi errore che un panel di modelli commette sull'equivalenza SQL, e nessun essere umano ha riletto i verdetti.
Il comparatore sbaglia in entrambe le direzioni. L'ordine e il numero delle colonne causano falsi negativi, mentre la normalizzazione delle maiuscole e l'arrotondamento dei float a sei cifre significative causano falsi positivi. L'errore del comparatore e l'errore della query gold sono fonti di incertezza separate e possono spostare un punteggio in direzioni diverse.
La corrispondenza di esecuzione rigorosa è misurata sulle domande correttamente instradate di ciascun modello e i router migliori ottengono un insieme più difficile. L'accuratezza di routing segue la difficoltà delle domande che arrivano al denominatore SQL di un modello. Tra i 36 modelli questa correlazione è 0.96 (Pearson, sulla media del conteggio dei vicini cross-database) e 0.97 rispetto alla quota di domande più difficili in quel denominatore. In termini concreti claude-opus-5 scrive SQL per 717 domande, di cui il 21.8% sono tra le 184 più difficili, mentre nova-lite-v1 scrive SQL per 285 domande, di cui il 7.7% lo sono. Un router debole è valutato su una selezione più facile. Tratta questa colonna come una diagnosi per modello piuttosto che come una classifica tra modelli e leggi le tre colonne come livelli. Per colmare il divario serve un'esecuzione con percorso oracle, in cui ogni modello scrive SQL per le stesse domande. Tale esecuzione non è stata effettuata.
Gli intervalli di confidenza coprono solo il rumore di campionamento. La tabella sopra riporta stime puntuali e gli intervalli di Wilson per le colonne rigorosa e gold pulito sono disponibili nel CSV pubblicato accanto a ogni riga. Gli intervalli contengono il rumore di campionamento delle domande e non l'incertezza delle giurie né quella delle segnalazioni dei gold. Due esecuzioni del panel ripetute in condizioni identiche hanno spostato l'accuratezza di routing da 1.6 a 2.7 punti e questa pagina non riporta alcuna misurazione ripetuta per le colonne SQL.
Questi numeri sono per costruzione gratuito da indizi, quindi non sono confrontabili con i punteggi della leaderboard BIRD per gli stessi modelli.
Conclusione
La corrispondenza di esecuzione rigorosa rispetto alle query gold di BIRD varia da 0.190 a 0.551 tra i 36 modelli, e lo stesso panel varia da 0.316 a 0.824 una volta che una giuria cieca ha riesaminato ogni mancata. La distanza tra queste due letture è il risultato. Per claude-sonnet-5 è di 39.9 punti, di cui 22.7 provengono da risposte che restituiscono le informazioni giuste in una forma che il comparatore rifiuta.
Per un carico di lavoro valutato con corrispondenza di esecuzione rigorosa, gemini-3-flash-preview ha registrato 0.551 grezzo e 0.677 gold pulito a $7,67 per esecuzione. Per un carico di lavoro in cui una risposta equivalente in una proiezione diversa è accettabile, claude-opus-5 ha registrato 0.824 aggiudicato contro il 0.785 di gpt-5.6-sol, all'interno di un intervallo di confidenza. Per qualsiasi confronto per modello, il denominatore varia da modello a modello, quindi le tre colonne sono strumenti diagnostici piuttosto che una leaderboard controllata.
Il limite superiore su questo asse è il gold, non i modelli. Un terzo delle query gold di BIRD non supera il nostro audit, i difetti si concentrano nel train split dove nessuna correzione pubblicata arriva, e i due strumenti che vedono oltre tali difetti sono entrambi giurie LLM piuttosto che annotatori umani. Far progredire l'asse richiede un'esecuzione con percorso oracle, così che ogni modello scriva SQL per le stesse domande, e una doppia annotazione umana indipendente di un campione di gold stratificato. Nessuna delle due è stata effettuata.
Ulteriori letture
- Benchmark RAG agentico: routing multi-database su 36 LLMs
- 200+ principali benchmark di intelligenza artificiale
- HALC-Bench: LLM allucinazione nel benchmark di retrieval su contesto lungo
- +100 dataset per modelli di ML & IA
- Migliori strumenti RAG, framework e librerie
FAQ
Perché le query gold sono di BIRD e un terzo di esse non supera il nostro audit. La corrispondenza di esecuzione rigorosa è il pavimento, la colonna gold pulito rimuove le domande il cui gold abbiamo giudicato difettoso e la colonna aggiudicata accredita le risposte che una giuria cieca ha letto come equivalenti. claude-sonnet-5 passa da 0.311 a 0.710 attraverso quel bracket, quindi un singolo numero rappresenterebbe male il panel fino a 39.9 punti.
No. BIRD fornisce un indizio di dominio per ogni domanda e fornisce il database. Questo benchmark nasconde l'indizio e fa scegliere al modello il database tra 11. Il solo indizio vale da 6 a 9 punti di corrispondenza di esecuzione.
Non su questo panel. Ogni modello scrive SQL per le domande che ha instradato correttamente, quindi un router migliore ottiene un denominatore più difficile, con una correlazione di 0.96 tra accuratezza di routing e difficoltà del denominatore. kimi-k3 instrada 0.832 e scrive 0.482 gold pulito, mentre gemini-3-flash-preview instrada 0.753 e scrive il miglior 0.677 del panel.
Una query gold che non risponde alla propria domanda, valutata da cinque modelli di frontiera di cinque famiglie diverse, nessuno dei quali ha visto alcuna risposta candidata. Il panel ha segnalato 236 delle 759, e un precedente panel di tre modelli ne ha segnalate indipendentemente 221, di cui 207 sovrapposte.
Cita questo benchmark
Scegli il formato adatto a dove pubblicherai. Incollare la versione con link nel tuo CMS preserva il backlink.
@misc{sari2026,
author = {Sarı, Ekrem},
title = {{Text-to-SQL: Confronto dell'accuratezza degli LLM}},
year = {2026},
month = aug,
howpublished = {\url{https://aimultiple.com/text-to-sql}},
note = {AIMultiple. Consultato il 7 Agosto 2026}
}Registro delle modifiche
9 aggiornamenti- 2026
Sostituiti i risultati del benchmark text-to-SQL con un panel di 36 modelli valutato tramite corrispondenza di esecuzione strict, gold-clean e adjudicated.
Aggiunto un changelog alla sezione "Agentic RAG benchmark: multi-database routing and query generation".
Sostituita la sezione metodologia con un riassunto e un riferimento a un altro articolo.
- 2025
Aggiornato il numero di modelli linguistici di grandi dimensioni nell'introduzione.
Aggiornata la sezione Dataset e verità di base con il livello di difficoltà del dataset BIRD-SQL.
Sostituito l'esempio di un filtro mancante nella sezione 'Filtri mancanti o errati'.
Aggiunta una sezione, "Come gli LLM generano SQL: uno sguardo passo-passo", all'articolo.
Sostituita la sezione metodologia con un framework di generazione aumentata da recupero (RAG) agentico.
Spostata la sezione "Metodologia di benchmark per il testo a SQL".


Commenti 1
Condividi i tuoi pensieri
Il tuo indirizzo email non verrà pubblicato. Tutti i campi sono obbligatori. I commenti vengono lasciati nella loro lingua originale.
Curious, how much of the context engineering and specific prompting did you apply in your benchmarks. Or, was it to review the models only? I have found much higher return of correct and consistent responses. A higher fidelity. To do that, I needed to provide a most sophisticated prompt that fed the context window as the question was being asked. Not perfect, but better than those scores represented in this article when using the Grok 4.x .
Great point. This benchmark intentionally uses zero-shot, minimal prompting with temperature=0. No few-shot examples, no domain-specific instructions, no iterative refinement. The goal was to measure each model's baseline text-to-SQL capability. So your experience with Grok 4 getting higher fidelity through sophisticated context engineering is completely expected. A well-crafted prompt with detailed schema descriptions, few-shot examples, and domain-specific rules will improve any model's performance significantly. What this benchmark isolates is how well the model performs out-of-the-box when given only the raw question and retrieved schema, which helps compare the models' inherent SQL reasoning abilities on a level playing field. We'll make this clearer in the methodology section. Thanks for raising it.