ant entre els locales generats.\n\nAmb aquesta opció seleccioneu la llengua predeterminada de tot el sistema. Si aquest és un entorn multiusuari on no tothom parla la mateixa llengua, alguns usuaris poden tindre dificultats.
Extended_description-cs.utf-8: Mnoho balíků v Debianu používá locales k zobrazení textu ve správném jazyce. Z vygenerovaných locales si můžete vybrat to, které bude v systému použito jako výchozí.\n\nTímto vyberete výchozí jazyk pro celý systém. Pokud se na počítač přihlašují i uživatelé nemluvící vybraným jazykem, zaznamenají jisté problémy.
Extended_description-da.utf-8: Mange pakker i Debian bruger lokaliteter til at vise tekst i det korrekte sprog til brugerne. Du kan vælge en standardlokalitet til systemet fra de oprettede lokaliteter.\n\nDette vil sætte sproget for hele systemet. Hvis dette system er et flerbrugersystem, hvor ikke alle brugerne er i stand til at tale standardsproget, vil de løbe ind i problemer.
Extended_description-de.utf-8: Viele Debian-Pakete benutzen Locales, um Text in der für die Benutzer korrekten Sprache anzuzeigen. Sie können aus den generierten Locales einen Standard für Ihr System auswählen.\n\nBemerkung: Dies wählt die Standardsprache für das gesamte System. Falls dies ein Mehrbenutzer-System ist und nicht alle Benutzer die Standardsprache sprechen, dann werden diese Schwierigkeiten haben.
Extended_description-el.utf-8: Πολλά πακέτα στο Debian χρησιμοποιούν τοπικοποιήσεις για να εμφανίζουν κείμενο στην επιλεγμένη γλώσσα του κάθε χρήστη. Μπορείτε να επιλέξετε μία προκαθορισμένη τοπικοποίηση για το σύστημα, από τις δημιουργημένες τοπικοποιήσεις.\n\nΑυτό θα επιλέξει την προκαθορισμένη γλώσσα για ολόκληρο το σύστημά σας. Αν έχετε ένα σύστημα με πολλούς χρήστες, στο οποίο οι χρήστες δε μιλούν όλοι την προκαθορισμένη γλώσσα, θα συναντήσουν δυσκολίες.
Extended_description-es.utf-8: Muchos paquetes en Debian utilizan las configuraciones regionales para mostrar el texto en el idioma de los usuarios. Puede elegir la opción predeterminada de entre las configuraciones regionales que ha generado.\n\nEsto seleccionará el idioma predeterminado de todo el sistema. Si se trata de un sistema con varios usuarios en el que no todos hablan el idioma elegido, pueden tener problemas.
Extended_description-eu.utf-8: Debian pakete anitzek locale-ak erabiltzen dituzte erabiltzaileari dagokion hizkuntzan testuak bistaratzeko. Locale lehenetsia sortutako locale-en artean hautatu dezakezu.\n\nHonek zure sistemako hizkuntza aukeratuko du. Hautatutako hizkuntza denek erabiltzen ez duten erabiltzaile anitzeko sistema bat bada, agian erabiltzaile horiek arazoetan aurki daitezke.
Extended_description-fi.utf-8: Monet Debianin paketit käyttävät maa-asetuksia näyttääkseen tekstit käyttäjälle oikealla kielellä. Järjestelmän oletusmaa-asetus voidaan valita luoduista maa-asetuksista.\n\nTämä asettaa koko järjestelmän oletuskielen. Jos tällä järjestelmällä on useita käyttäjiä, eivätkä kaikki käyttäjät ymmärrä oletuskieltä, heillä tulee olemaan ongelmia.
Extended_description-fr.utf-8: De nombreux paquets utilisent le mécanisme de localisation pour afficher les messages destinés aux utilisateurs dans la langue adéquate. Vous pouvez changer la valeur par défaut de l'ensemble du système pour utiliser un des jeux de paramètres régionaux qui seront créés.\n\nVeuillez noter que cette valeur modifiera la langue utilisée par le système. Si l'environnement est multi-utilisateurs et que certains utilisateurs ne parlent pas votre langue, ils risquent d'avoir des difficultés.
Extended_description-gl.utf-8: Moitos paquetes de Debian empregan configuracións locais para amosar texto aos usuarios no idioma correcto. Pode escoller unha configuración local por defecto para o sistema entre as configuracións locais xeradas.\n\nCon isto hase escoller o idioma de todo o sistema. Se este sistema ten varios usuarios e non todos coñecen o idioma por defecto, han ter dificultades.
Extended_description-hu.utf-8: A Debian számos csomagja nyelvi beállításokat használ a szövegek a felhasználó számára megfelelő nyelvű megjelenítésére . Választhatsz egy alapértelmezett.\n\nEz kiválasztja az egész rendszer alapértelmezett nyelvét. Több nyelvű rendszeren, ahol nem minden felhasználó beszéli az alapértelmezett nyelvet további beállítások kellenek.
Extended_description-it.utf-8: Molti pacchetti Debian usano i «locale» per mostrare messaggi nella lingua dell'utente. È possibile scegliere, fra quelli generati, un «locale» come predefinito per il sistema.\n\nQuesto imposta la lingua predefinita per l'intero sistema. Se questo è un sistema multi-utente e alcuni utenti non parlano la lingua predefinita, quegli utenti potrebbero avere delle difficoltà.
Extended_description-ja.utf-8: ユーザに合った言語でテキストを表示するため、Debian では多くのパッケージがロケールを使用します。生成したロケールの中からシステムでのデフォルトロケールを選択できます。\n\nこれはシステム全体のデフォルトの言語を選ぶことになります。このシステムがマルチユーザシステムで、すべてのユーザがデフォルトの言語を話すことができるというわけではない場合は、そういった人々は困難を感じることになってしまいます。
Extended_description-ko.utf-8: 데비안에 있는 많은 꾸러미들은 사용자에게 맞는 언어로 출력하기 위해 로캘을 사용합니다. 생성된 로캘 중에서 시스템의 기본 로캘로 사용할 로캘을 선택하실 수 있습니다.\n\n이 선택은 시스템 전체의 기본 언어를 결정합니다. 기본 언어를 사용할 수 없는 사용자도 있는 복수 사용자 시스템일 경우에는 그 사용자들이 시스템 사용에 어려움을 겪으실 수 있습니다.
Extended_description-lt.utf-8: Daug Debian paketų naudoja lokales tekstui reikiama kalba rodyti. Galite iš sugeneruotų lokalių išsirinkti standartinę sistemos lokalę.\n\nBus nustatyta kalba visai sistemai. Jei sistemą naudoja keletas naudotojų ir ne visi kalba pasirinkta kalba, gali kilti nepatogumų.
Extended_description-ml.utf-8: ഉപയോക്താവിനുവേണ്ടി ശരിയായ ഭാഷയില്‍ ടെക്സ്റ്റ് പ്രദര്‍ശിപ്പിക്കുന്നതിനായി ഒരുപാട് ഡെബിയന്‍ പാക്കേജുകള്‍ ലൊക്കേല്‍ ഉപയോഗിക്കുന്നു. സൃഷ്ടിക്കപ്പെട്ട ലൊക്കേലുകളില്‍ നിന്ന് സഹജമായ ലൊക്കേല്‍ സിസ്റ്റത്തിനുവേണ്ടി നിങ്ങള്‍ക്ക് തിരഞ്ഞെടുക്കാവുന്നതാണ്.\n\nസിസ്റ്റത്തില്‍ എല്ലായിടത്തേയും സഹജമായ ഭാഷ ഇത്  തിരഞ്ഞെടുക്കും.  സഹജമായ ഭാഷ സംസാരിക്കാന്‍ കഴിയാത്ത ഒന്നിലധികം ഉപയോക്താക്കളുള്ള സിസ്റ്റമാണിതെങ്കില്‍ അവര്‍ക്ക് പ്രയാസങ്ങള്‍ അനുഭവപ്പെടും.
Extended_description-nb.utf-8: Mange pakker i Debian bruker lokaler for å vise tekst i det riktige språket for brukerne. Du kan velge et standardlokale for systemet blant de lokalene som er opprettet.\n\nDette velger standard språk for hele systemet. Hvis dette er et flerbrukersystem der ikke alle brukerne forstår det valgte språket, så kan de komme opp i vansker.
Extended_description-nl.utf-8: Veel Debian-pakketten gebruiken lokalisaties om de tekst in de voor de gebruiker juiste taal weer te geven. U kunt de standaardlokalisatie voor het systeem kiezen uit de gegeneerde lokalisaties.\n\nDit bepaalt de standaardtaal voor het volledige systeem. Op systemen met meerdere gebruikers kunt u problemen krijgen als niet alle gebruikers de gekozen taal spreken; in dat geval kunt u misschien beter de standaardlokalisatie niet veranderen.
Extended_description-no.utf-8: Mange pakker i Debian bruker lokaler for å vise tekst i det riktige språket for brukerne. Du kan velge et standardlokale for systemet blant de lokalene som er opprettet.\n\nDette velger standard språk for hele systemet. Hvis dette er et flerbrukersystem der ikke alle brukerne forstår det valgte språket, så kan de komme opp i vansker.
Extended_description-pl.utf-8: Wiele programów dostarczanych w pakietach Debiana wykorzystuje ustawienia lokalne, aby wyświetlać komunikaty we właściwym dla użytkownika języku. Można zmienić domyślne ustawienia lokalne dla całego systemu. Można wybrać tylko te ustawienia lokalne, które wcześniej zostały wygenerowane.\n\nProszę zwrócić uwagę na to, że wybrany tutaj język ma wpływ na na cały system i większość działających w nim programów. Jeżeli z tego systemu korzysta wielu użytkowników posłujących się różnymi językami, to mogą oni mieć problemy ze zrozumieniem komunikatów systemu.
Extended_description-pt.utf-8: Muitos pacotes em Debian usam locales para mostrar texto no idioma correcto do utilizador. Dos locales gerados, pode escolher o padrão do sistema.\n\nIsto irá escolher o idioma padrão para todo o sistema. Se este é um sistema multi-utilizador em que nem todos os utilizadores são capazes de o falar estes irão ter dificuldades.
Extended_description-pt_br.utf-8: Muitos pacotes no Debian usam locales para exibir texto aos usuários no idioma correto. Você pode escolher um locale padrão para o sistema a partir dos locales gerados.\n\nIsto selecionará o idioma padrão para o sistema inteiro. Se este sistema é um sistema multiusuário no qual nem todos os usuários são capazes de falar o idioma padrão, eles enfrentarão dificuldades.
Extended_description-ro.utf-8: Multe pachete din Debian folosesc configurările regionale pentru a afișa text în limba corectă pentru utilizatori. Puteți alege o configurație regională, implicită pentru sistem, dintre configurațiile ce-au fost generate.\n\nAceastă opțiune va stabili limba pentru tot sistemul. Dacă aveți un sistem multi-utilizator unde nu toți utilizatorii vorbesc limba aleasă, atunci ei vor întâmpina dificultăți.
Extended_description-ru.utf-8: Многие пакеты в Debian используют локали для отображения сообщений на языке пользователя. Вы можете выбрать из созданных локалей системную локаль по умолчанию.\n\nЭта настройка устанавливает язык по умолчанию для всей системы. Если это многопользовательская система, где не все пользователи говорят на выбранном языке по умолчанию, то у них возникнут трудности.
Extended_description-sk.utf-8: Mnohé balíky v Debiane používajú locales pre zobrazovanie textu v správnom jazyku používateľa. Z vytvorených locales môžete zvoliť štandardné locale systému.\n\nTýmto vyberiete štandardný jazyk pre celý systém. Ak je toto viacpoužívateľský systém, kde nie všetci používatelia hovoria štandardným jazykom, môžu mať ťažkosti.
Extended_description-sv.utf-8: Många paket i Debian använder lokalanpassningar för att visa text i det korrekta språket för användaren. Du kan välja en standardlokal för systemet från de genererade lokalerna.\n\nDetta kommer att välja standardspråket för hela systemet. Om du kör ett system med flera användare där inte alla talar det valda språket, kan de få problem.
Extended_description-ta.utf-8: பயனருக்கு சரியான மொழியில் உரையை காட்ட டெபியனின் பல பொதிகள் உள்ளார்ந்த இடத்தை பயன்படுத்துகின்றன. உருவாக்கப்பட்டவற்றிலிருந்து கணினிக்கு முன்னிருப்பு உள்ளார்ந்த இடத்தை தேர்வு செய்யவும்.\n\nஇது முழு கணினிக்கு முன்னிருப்பு மொழியை தேர்வு செய்யும். இது பலர் பயன் படுத்தும் கணினியானால் எல்லா பயனர்களும் முன்னிருப்பு மொழியை அறிந்திராவிடில் அவர்கள் துன்புறுவர்.
Extended_description-tr.utf-8: Debian paketleri sizinle düzgün iletişim kurmak amacıyla seçeceği dili belirlerken, yerelleri kullanır. Eklediğiniz yereller arasından sisteminiz için ön tanımlı bir yerel seçebilirsiniz.\n\nBu seçim, sisteminizin tümünde kullanılacak olan ön tanımlı dili belirleyecektir. Sisteminiz aynı dili konuşmayan kullanıcılar tarafından kullanıyorsa, ön tanımlı yerel dilini kullanmayan kullanıcılar bazı zorluklarla karşılaşabilir.
Extended_description-vi.utf-8: Nhiều gói của Debian có dùng miền địa phương để hiển thị văn bản bằng ngôn ngữ thích hợp với người dùng. Bạn có dịp chọn miền địa phương mặc định cho hệ thống, trong những miền địa phương được tạo ra.\n\nGhi chú : việc này sẽ chọn ngôn ngữ mặc định cho toàn hệ thống. Nếu hệ thống này có nhiều người dùng và không phải tất cả có khả năng nói ngôn ngữ mặc định, họ sẽ gặp khó khăn.
Extended_description-zh_cn.utf-8: Debian 里的很多软件包都使用区域设置(locale)来以正确的语言向用户显示文本。你可以从生成的区域设置中选择一个缺省的区域设置。\n\n注意：这将会把整个系统都设置为这种语言。如果您运行的是一个多用户系统，而且并不是系统内的所有用户都使用您选择的语言，那么他们将会遇到一些麻烦。
Type: select

Name: locales/locales_to_be_generated
Choices: All locales, ${locales}
Choices-ar.utf-8: جميع المحليات, ${locales}
Choices-ca.utf-8: Tots els locales, ${locales}
Choices-cs.utf-8: Všechny locales, ${locales}
Choices-da.utf-8: Alle lokalitetsfiler, ${locales}
Choices-de.utf-8: Alle Locales, ${locales}
Choices-el.utf-8: Όλες οι τοπικοποιήσεις, ${locales}
Choices-es.utf-8: Todas las configuraciones regionales («locales»), ${locales}
Choices-eu.utf-8: Lokal guztiak, ${locales}
Choices-fi.utf-8: Kaikki maa-asetukset, ${locales}
Choices-fr.utf-8: Tous les choix possibles, ${locales}
Choices-gl.utf-8: Todas as configuracións locais, ${locales}
Choices-hu.utf-8: Minden nyelvi beállítás, ${locales}
Choices-it.utf-8: Tutti i «locale», ${locales}
Choices-ja.utf-8: すべてのロケール, ${locales}
Choices-ko.utf-8: 모든 로캘, ${locales}
Choices-lt.utf-8: Visos lokalės, ${locales}
Choices-ml.utf-8: എല്ലാ ലൊക്കേലുകളും, ${locales}
Choices-nb.utf-8: Alle lokaler, ${locales}
Choices-nl.utf-8: Alle lokalisaties, ${locales}
Choices-no.utf-8: Alle lokaler, ${locales}
Choices-pl.utf-8: Wszystkie dostępne, ${locales}
Choices-pt.utf-8: Todos os locales, ${locales}
Choices-pt_br.utf-8: Todos os "locales", ${locales}
Choices-ro.utf-8: Toate configurările regionale, ${locales}
Choices-ru.utf-8: Все локали, ${locales}
Choices-sk.utf-8: Všetky locales, ${locales}
Choices-sv.utf-8: Alla lokalanpassningar, ${locales}
Choices-ta.utf-8: எல்லா உள்ளார்ந்த இடங்களும், ${locales}
Choices-tr.utf-8: Tüm yereller, ${locales}
Choices-uk.utf-8: Всі локалі, ${locales}
Choices-vi.utf-8: Mọi miền địa phương, ${locales}
Choices-zh_cn.utf-8: 全部区域设置, ${locales}
Description: Locales to be generated:
Description-ar.utf-8: المحليات التي سيتم توليدها:
Description-ca.utf-8: Locales a generar:
Description-cs.utf-8: Locales, které se mají vygenerovat:
Description-da.utf-8: Lokalitetsfiler der skal genereres:
Description-de.utf-8: Zu generierende Locales (»Standorteinstellungen«):
Description-el.utf-8: Τοπικοποιήσεις προς δημιουργία.
Description-es.utf-8: Seleccione las configuraciones regionales que desea generar:
Description-eu.utf-8: Sortu behar diren lokalak:
Description-fi.utf-8: Luotavat maa-asetukset:
Description-fr.utf-8: Jeux de paramètres régionaux à créer :
Description-gl.utf-8: Configuracións locais a xerar:
Description-hu.utf-8: Létrehozandó nyelvi beállítások:
Description-it.utf-8: «Locale» da generare:
Description-ja.utf-8: 生成するロケールの選択:
Description-ko.utf-8: 생성할 로캘 목록:
Description-lt.utf-8: Lokalės, kurios bus sugeneruotos:
Description-ml.utf-8: സൃഷ്ടിക്കപ്പെടേണ്ട ലൊക്കേലുകള്‍:
Description-nb.utf-8: Lokaler (stedstilpasninger) som skal opprettes:
Description-nl.utf-8: Te genereren lokalisaties:
Description-no.utf-8: Lokaler (stedstilpasninger) som skal opprettes:
Description-pl.utf-8: Proszę wybrać ustawienia lokalne, które mają zostać wygenerowane:
Description-pt.utf-8: Locales a serem gerados:
Description-pt_br.utf-8: "Locales" a serem gerados:
Description-ro.utf-8: Configurările regionale ce vor fi generate:
Description-ru.utf-8: Локали, которые будут созданы:
Description-sk.utf-8: Locales, ktoré sa majú vytvoriť:
Description-sv.utf-8: Lokalanpassningar att generera:
Description-ta.utf-8: உருவாக்க வேண்டிய உள்ளார்ந்த இடங்கள்
Description-tr.utf-8: Oluşturulacak yereller:
Description-vi.utf-8: Miền địa phương cần tạo ra:
Description-zh_cn.utf-8: 请选择需要生成的区域设置(locale)。
Extended_description: Locales are a framework to switch between multiple languages and allow users to use their language, country, characters, collation order, etc.\n\nPlease choose which locales to generate. UTF-8 locales should be chosen by default, particularly for new installations. Other character sets may be useful for backwards compatibility with older systems and software.
Extended_description-ar.utf-8: المحليات هي إطار عمل يمكنك من التبديل بين اللغات المتعددة وتمكن المستخدمين من اختيار لغتهم، وبلدهم، ومجموعة الأحرف الخاصة بهم، إلخ.\n\nالرجاء اختيار المحليات التي تريد توليدها. يجب اختيار محليات UTF-8 بشكل افتراضي، وبالتحديد لعمليات التثبيت الجديدة. يمكن الاستفادة من مجموعات المحارف الأخرى للتوافق مع الأنظمة والبرامج القديمة.
Extended_description-ca.utf-8: Els locales són un entorn que permet que els usuaris canviïn la llengua, el país, els caràcters, la classificació alfabètica, etc.\n\nTrieu els locales que vulgueu generar. Els locales UTF-8 haurien de ser l'opció predeterminada, especialment en noves instal·lacions. Altres jocs de caràcters us poden ser útils per motius de compatibilitat amb sistemes i programari antic.
Extended_description-cs.utf-8: Locales je systém pro přepínání mezi různými jazyky. Uživatelé si pak mohou zvolit svůj jazyk, zemi, znaky, způsob porovnávání, atd.\n\nVyberte, které locales se mají vygenerovat. Přednostně byste měli vybírat locales v kódování UTF-8 (obzvláště u nových instalací). Ostatní znakové sady jsou užitečné pro zpětnou kompatibilitu se staršími systémy a programy.
Extended_description-da.utf-8: Lokalitetsfilerne er en ramme, så du kan skifte imellem forskellige sprog og give brugerne mulighed for at anvende deres eget sprog, land, tegn, sorteringsrækkefølge med mere.\n\nVælg venligst hvilken lokalitet der skal oprettes. UTF-8-lokaliteter bør vælges som standard, specielt for nyinstallationer. Andre tegnsæt kan være brugbare for kompatibilitet bagud med ældre systemer og programmer.
Extended_description-de.utf-8: Locales ist ein System, um zwischen verschiedenen Sprachen umzuschalten. Benutzer können damit ihre Sprache, ihr Land, ihren Zeichensatz, ihre Sortierreihenfolge und anderes mehr festlegen.\n\nBitte wählen Sie aus, welche Locales erzeugt werden sollen. UTF-8-Locales sollten standardmäßig ausgewählt werden, insbesondere für neue Installationen. Andere Zeichensätze könnten für Rückkompatibilität mit älteren Systemen und Software nützlich sein.
Extended_description-el.utf-8: Οι τοπικοποιήσεις είναι ένα πλαίσιο υποστήριξης για την εναλλαγή πολλαπλών γλωσσών, ώστε οι χρήστες να μπορούν να χρησιμοποιούν τη γλώσσα τους, χώρα, χαρακτήρες, σειρά ταξινόμησης, κλπ.\n\nΠαρακαλώ επιλέξτε ποιες τοπικοποιήσεις θα δημιουργηθούν. Οι τοπικοποιήσεις UTF-8 πρέπει να επιλέγονται εξ ορισμού, ειδικά για νέες εγκαταστάσεις. Άλλα σύνολα χαρακτήρων μπορεί να είναι χρήσιμα, για συμβατότητα προς τα πίσω, με συστήματα και λογισμικό.
Extended_description-es.utf-8: Las configuraciones regionales componen un sistema para cambiar entre varios idiomas, y permite a los usuarios utilizar su idioma, país, juego de caracteres, ordenación alfanumérica, etc.\n\nPor favor, elija las configuraciones regionales que desea generar. Se recomiendan las configuraciones regionales UTF-8, especialmente para instalaciones nuevas. Otros juegos de caracteres pueden resultar útiles por compatibilidad con sistemas y software antiguo.
Extended_description-eu.utf-8: Lokalak hizkuntza anitz artean aldatzeko ingurugiroa da erabiltzaileek beren hizkuntza, herrialdea, karaktere-jokoa etab. erabiltzeko gaitasuna ematen dute.\n\nMesedez zein lokala sortuko diren hautatu. Lehenespen bezala UTF-8 locale-ak hautau beharko lirateke, bereiziki instalazio berri batetan. Beste karaktere joko batzuek sortzea erabilgarri izan liteke sistema eta software zaharragoekin bateragarritasuna mantentzeko.
Extended_description-fi.utf-8: Maa-asetusten avulla on mahdollista vaihtaa käytettävää kieltä ja antaa käyttäjien asettaa haluamansa kieli, maa, merkistö, aakkostustapa, jne.\n\nValitse mitkä maa-asetukset luodaan. Oletuksena tulisi valita UTF-8-tyypin asetuksia, erityisesti uusissa asennuksissa. Muut merkkijoukot voi olla tarpeen vanhempien järjestelmien ja ohjelmien kanssa yhteensopivuussyistä.
Extended_description-fr.utf-8: Les jeux de paramètres régionaux (aussi appelés « locales ») permettent de gérer des langues multiples et offrent aux utilisateurs la possibilité de choisir la langue, le pays, le jeu de caractères, l'ordre de tri, etc.\n\nVeuillez choisir les paramètres régionaux à créer. Des paramètres régionaux utilisant l'encodage UTF-8 devraient être le choix par défaut, notamment pour de nouvelles installations. Les autres jeux de caractères peuvent être utiles pour conserver la compatibilité avec d'anciens systèmes ou logiciels.
Extended_description-gl.utf-8: O sistema de configuracións locais permite ter varios idiomas, e que os usuarios poidan empregar o seu idioma, país, alfabeto, orde alfabética, etc.\n\nEscolla as configuracións locais a xerar. Debería escoller configuracións locais UTF-8 por defecto, especialmente en instalacións novas. Os outros xogos de caracteres poden ser útiles para a compatibilidade con sistemas e software antigos.
Extended_description-hu.utf-8: A nyelvi beállítások (locales) egy nyelveket váltó keretrendszer, mely lehetővé teszi, hogy a felhasználó saját nyelvét, országát, karaktereit használhassa.\n\nVálaszd ki, milyen nyelvi beállításokat hozzunk létre. UTF-8 nyelvi beállításokat érdemes alapértelmezetten választani. Más karakter-készletek elavult rendszerekhez és szoftverekhez való kapcsolódáskor lehetnek jók.
Extended_description-it.utf-8: I «locale» sono l'infrastruttura che permette di passare da una lingua a un'altra e consente agli utenti di utilizzare la propria lingua, paese, caratteri, criteri di ordinamento, ecc.\n\nScegliere quali «locale» generare. È opportuno scegliere i «locale» UTF-8, in particolare sulle nuove installazioni. Gli altri set di caratteri potrebbero essere utili per risolvere problemi di compatibilità all'indietro con sistemi o programmi più vecchi.
Extended_description-ja.utf-8: ロケールとは、複数の言語を切り替え、ユーザが自身の言語・国・文字・並べ替え順序などを使えるようにするための仕組みです。\n\n生成したいロケールを選択してください。UTF-8 ロケールは、特に新規にインストールしたものであれば、デフォルトで選択されているはずです。その他の文字セットは、より古いシステムおよびソフトウェアとの後方互換性のために役立つでしょう。
Extended_description-ko.utf-8: 로캘이란 여러 언어 중에서 선택하여 사용자들이 자신의 언어, 국가, 문자, 정렬순서 등을 사용할 수 있도록 해주는 구성틀입니다.\n\n생성하고자 하는 로캘을 선택하여 주십시오. 기본적으로는 UTF-8 로캘을 선택하시고, 특히 새로 설치하는 시스템에서는 더더욱 이를 선택하십시오. 기존 시스템이나 소프트웨어와의 역호환성을 위해서는 다른 문제셋을 선택하셔도 됩니다.
Extended_description-lt.utf-8: Lokalės yra karkasas, kuriuo naudotojai gali nustatyti savo kalbą, informaciją apie savo šalį, simbolius, valiutą, rikiavimo tvarką ir t.t.\n\nPasirinkite, kurias lokales norite generuoti. Turėtų būti pasirinktos UTF-8 lokalės, ypač jei diegiate naują sistemą. Kiti simbolių rinkiniai gali būti naudingi atgaliniam suderinamumui su senesnėmis sistemomis ir programomis.
Extended_description-ml.utf-8: വിവിധ ഭാഷകളില്‍ നിന്ന് സ്വന്തം ഭാഷ, രാജ്യം, അക്ഷരങ്ങള്‍, അക്ഷരക്രമം മുതലായവ ഉപയോഗിക്കാനായി ഉപയോക്താക്കളെ സഹായിക്കുന്ന ചട്ടക്കൂടുകളാണ്  ലൊക്കേലുകള്‍.\n\nദയവായി സൃഷ്ടിക്കേണ്ട ലൊക്കേലുകള്‍ തിരഞ്ഞെടുക്കുക. പുതിയ ഇന്‍സ്റ്റാലേഷനുകള്‍ക്ക് സ്വതേ തിരഞ്ഞെടുക്കുന്നത് UTF-8 ലൊക്കേലുകള്‍ ആയിരിക്കും. മറ്റ്  അക്ഷരക്കൂട്ടങ്ങള്‍ പഴയ സിസ്റ്റങ്ങളും സോഫ്റ്റ്‌വെയറുകളുമായി പിന്നോട്ടുള്ള പൊരുത്തത്തിനായി ഉപയോഗപ്രദമായേയ്ക്കാം.
Extended_description-nb.utf-8: Lokaler er et rammeverk som kan veksle mellom flere språk, slik at brukere kan velge sitt språk, land, tegnsett, sorteringsrekkefølge osv.\n\nVelg hvilke lokaler som skal opprettes. Som standard er det best å opprette UTF-8-lokaler, spesielt for mye installasjoner. Andre tegnsett kan være nyttig for kompatibilitet bakover med eldre systemer og programvare.
Extended_description-nl.utf-8: Lokalisatie is een raamwerk om tussen verschillende talen om te schakelen en het laat gebruikers toe om hun eigen taal, land, karakterset, enzovoort te gebruiken.\n\nWelke lokalisaties wilt u laten genereren? Standaard kiest u, zeker voor nieuwe installaties, best UTF-8 lokalisaties. Andere karaktersets kunnen nuttig zijn voor compatibiliteit met oudere systemen of software.
Extended_description-no.utf-8: Lokaler er et rammeverk som kan veksle mellom flere språk, slik at brukere kan velge sitt språk, land, tegnsett, sorteringsrekkefølge osv.\n\nVelg hvilke lokaler som skal opprettes. Som standard er det best å opprette UTF-8-lokaler, spesielt for mye installasjoner. Andre tegnsett kan være nyttig for kompatibilitet bakover med eldre systemer og programvare.
Extended_description-pl.utf-8: Wybierane tutaj ustawienia lokalne stanowią podstawową strukturę dającą możliwość pracy systemu w specyficznym dla danego kraju środowisku (język, zestaw znaków, kolejność sortowania itp.).\n\nProszę wybrać jakie ustawienia lokalne mają zostać wygenerowane. Najkorzystniej jest wybrać UTF-8, zwłaszcza na nowo instalowanych systemach. Pozostałe kodowania mogą być przydatne, aby utrzymać wsteczną kompatybilność ze starymi systemami lub programami.
Extended_description-pt.utf-8: Locales é uma framework para alternar entre vários idiomas e permitir aos utilizadores utilizarem o seu idioma, país, caracteres, etc.\n\nPor favor escolha quais os locales a gerar. Os locales UTF-8 devem ser seleccionados, especialmente em instalações de raiz. Outros conjuntos de caracteres podem ser úteis para compatibilidade com software e sistemas mais antigos.
Extended_description-pt_br.utf-8: Locales são uma infraestrutura para alternar entre múltiplos idiomas e permitem aos usuários utilizar o seu idioma, país, caracteres, ordenação, etc.\n\nPor favor, escolha quais locales serão gerados. Locales UTF-8 deveriam ser escolhidos por padrão, particularmente para novas instalações. Outros conjuntos de caracteres podem ser úteis para compatibilidade com sistemas e softwares antigos.
Extended_description-ro.utf-8: Configurările regionale (numite și „locales”) constituie un cadru de lucru pentru utilizatori, ce le permite acestora să aleagă propria lor limbă, țară, set de caractere, ordonare alfanumerică, formatare a datei, etc.\n\nAlegeți ce configurări regionale vor fi generate. Configurările regionale UTF-8 ar trebui alese implicit, în special pentru instalări noi. Din motive de compatibilitate cu software sau sisteme mai vechi, puteți alege să se genereze și alte seturi de caractere (sau datorită unor necesități proprii; de exemplu dorința/necesitatea de-a scrie într-o limbă diferită de cea maternă).
Extended_description-ru.utf-8: Локаль — это инфраструктура для поддержки в системе нескольких языков; она позволяет пользователю настроить язык сообщений, страну, алфавит, порядок сортировки и т. п.\n\nВыберите создаваемые локали. Кодировка локали UTF-8 должна быть выбрана по умолчанию, особенно при новой установке. Другие кодировки локали могут быть полезны для обратной совместимости со старыми системами и программами.
Extended_description-sk.utf-8: Locales sú infraštruktúra na prepínanie medzi viacerými jazykmi a umožňujú používateľom používať ich jazyk, krajinu, poradie znakov atď.\n\nProsím zvoľte, ktoré locales sa majú vytvoriť. Štandardne by mali byť zvolené UTF-8 locales, zvlášť na nových inštaláciách. Iné znakové sady môžu byť užitočné pre spätnú kompatibilitu so staršími systémami a softvérom.
Extended_description-sv.utf-8: Lokalanpassning (locale) är ett ramverk för att växla mellan flera språk för att låta användare använda sitt språk, land, tecken och sorteringsordning, etc.\n\nVälj vilka lokalanpassningar som ska genereras. UTF-8-lokaler bör väljas som standard, speciellt för nya installationer. Andra teckenuppsättningar kan vara användbara för bakåtkompatibilitet med äldre system och programvara.
Extended_description-ta.utf-8: உள்ளார்ந்த இடங்கள் என்பது பல மொழிகளுக்கிடையே மாறவும் பயனர்களை அவரவர் மொழி, நாடு, குறிகள், முறைமைகள் ஆகியவற்றை பயன்படுத்தவும் பயனாகும் சட்ட அமைப்பு\n\nஎந்த உள்ளார்ந்த இடத்தை உருவாக்க வேண்டும் என தேர்வு செய்க. முன்னிருப்பாக UTF-8 உள்ளார்ந்த இடங்கள் தேர்வு செய்யபட வேண்டும். குறிப்பாக புதிய நிறுவல்களுக்கு. மற்ற குறியாக்க தொகுப்புகள் பழைய கணினிகள் மற்றும் மென்பொருட்களுடன் பின் நோக்கு இசைவுக்கு பயன்படும்.
Extended_description-tr.utf-8: Yereller; kullanıcıların kendi dillerini, yazı karakterlerini, ülkelerine ve dillerine özgü tanımlama şekillerini kullanabilmeleri için birden çok dil arasında geçiş yapmalarını sağlayan bir yapıdır.\n\nHangi yerellerin oluşturulacağını seçin. Yeni kurulumlar için ön tanımlı olarak UTF-8 yereller seçilecektir. Daha eski sistemler ve yazılımlar ile uyumluluk için başka karakter setleri de yararlı olabilir.
Extended_description-vi.utf-8: Miền địa phương (locale) là một khuôn khổ để chuyển đổi giữa các ngôn ngữ khác nhau, cũng cho phép người dùng chọn sử dụng ngôn ngữ, quốc gia, ký tự, thứ tự sắp xếp v.v. của quê.\n\nHãy chọn những miền địa phương cần tạo ra. Có nên chọn miền địa phương kiểu UTF-8 theo mặc định, đặc biệt cho việc cài đặt mới. (Ghi chú : tiếng Việt cần thiết UTF-8.) Bộ ký tự khác có thể hữu ích để tương thích ngược với hệ thống/phần mềm cũ.
Extended_description-zh_cn.utf-8: 区域设置(locale)是一种在多种语言之间切换的框架，用户可以通过它来设定自己的语言、国家、字符集、字符串排序方式等。\n\n请选择需要生成的区域设置。通常应当选择 UTF-8 字符集的区域设置，特别是对于新安装的系统。其他的字符集一般用于兼容旧系统和旧软件。
Type: multiselect

Name: man-db/auto-update
Default: true
Description: for internal use; can be preseeded
Extended_description: If true, automatically rebuild man-db's database when packages containing manual pages are installed.
Type: boolean
Owners: man-db/auto-update

Name: man-db/install-setuid
Default: false
Description: Should man and mandb be installed 'setuid man'?
Description-ca.utf-8: Voleu que man i mandb s'instal·lin «setuid man»?
Description-cs.utf-8: Mají se man a mandb nainstalovat jako „setuid man“?
Description-da.utf-8: Skal man og mandb installeres 'setuid man'?
Description-de.utf-8: Möchten Sie man und mandb »setuid man« installieren?
Description-es.utf-8: ¿Quiere que man y man-db se instalen 'setuid man'?
Description-eu.utf-8: man eta mandb 'setuid man' bezala instalatu behar al da?
Description-fi.utf-8: Tulisiko man ja mandb asentaa asetuksella ”setuid man”?
Description-fr.utf-8: Faut-il exécuter les programmes man et mandb avec les droits de l'utilisateur « man » ?
Description-gl.utf-8: ¿Deberían instalarse man e mandb con "setuid man"?
Description-it.utf-8: Installare i programmi man e mandb con "setuid man"?
Description-ja.utf-8: man と mandb を man に setuid した状態でインストールしますか?
Description-nl.utf-8: Wilt u man en mandb installeren met 'setuid man'?
Description-pl.utf-8: Czy man i mandb mają być zainstalowane jako 'setuid man'?
Description-pt.utf-8: Devem os man e mandb ser instalados com 'setuid man'?
Description-pt_br.utf-8: O man e o mandb devem ser instalados 'setuid man'?
Description-ro.utf-8: Trebuie să fie instalate «man» și «mandb» cu bitul „setuid man” activat (cu drepturile utilizatorului „man”)?
Description-ru.utf-8: Установить программы man и mandb как 'setuid man'?
Description-sk.utf-8: Majú byť man a mandb nainštalované pomocou „setuid man”?
Description-sr.utf-8: Треба ли <man> и <mandb> бити инсталиран као 'setuid man'
Description-sr@latin.utf-8: Treba li <man> i <mandb> biti instaliran kao 'setuid man'
Description-sv.utf-8: Ska man och mandb installeras "setuid man"?
Description-ta.utf-8: மான் மற்றும் மான்டிபி(mandb) ஐ செட்யூஐடி மான் 'setuid man' உடன் நிறுவ வேண்டுமா?
Description-tr.utf-8: man ve mandb'nin 'setuid man' olarak kurulmasını ister misiniz?
Description-uk.utf-8: Чи потрібно встановлювати mandb з атрибутом 'setuid man'?
Description-vi.utf-8: Có nên cài đặt cả hai gói man và mandb một cách « setuid man » không?
Description-zh_cn.utf-8: 要把 man 和 mandb 安装为“setuid man”权限吗？
Extended_description: The man and mandb program can be installed with the set-user-id bit set, so that they will run with the permissions of the 'man' user. This allows ordinary users to benefit from the caching of preformatted manual pages ('cat pages'), which may aid performance on slower machines.\n\nCached man pages only work if you are using an 80-column terminal, to avoid one user causing cat pages to be saved at widths that would be inconvenient for other users. If you use a wide terminal, you can force man pages to be formatted to 80 columns anyway by setting MANWIDTH=80.\n\nEnabling this feature may be a security risk, so it is disabled by default. If in doubt, you should leave it disabled.
Extended_description-ca.utf-8: Els programes man i mandb poden ser instal·lats amb el bit «set-user-id» establert, per tal d'executar-los amb els permisos de l'usuari «man». Això permetrà als usuaris regulars beneficiar-se de la memòria cau de pàgines de manual preformatades (també conegudes com «cat pages»), que pot millorar el rendiment en màquines lentes.\n\nLa memòria cau de les pàgines de manual només funciona si useu un terminal de 80 columnes d'amplada, per tal d'evitar que es desin pàgines cat amb amplades que podrien resultar incòmodes a altres usuaris. Si utilitzeu un terminal més ample, podeu forçar el format de les pàgines de manual a 80 columnes establint MANWIDTH=80.\n\nHabilitar aquesta característica pot representar un risc de seguretat, de manera que està desactivada per defecte. Si dubteu, segurament us convingui deixar-la desactivada.
Extended_description-cs.utf-8: Programy man a mandb mohou být nainstalovány s nastaveným příznakem set-user-id, tudíž se spouští s právy uživatele „man“. Takto mohou i obyčejní uživatelé využívat urychleného načítání předformátovaných manuálových stránek z vyrovnávací paměti, což může pomoci obzvláště na pomalejších počítačích.\n\nManuálové stránky ve vyrovnávací paměti fungují pouze pokud používáte 80 sloupcový terminál, aby se zabránilo možnosti, že některý uživatel uloží stránky s takovou šířkou, která bude obtěžovat ostatní uživatele. Používáte-li široký terminál, můžete přinutit formátovač stránek, aby použil standardních 80 sloupců nastavením proměnné MANWIDTH=80.\n\nProtože se povolením této vlastnosti můžete vystavit bezpečnostnímu riziku, je vlastnost standardně vypnutá.
Extended_description-da.utf-8: Programmerne man og mandb kan blive installeret med sæt-bruger-ID sat, så de vil blive kørt med brugeren 'man's rettigheder. Det gør det muligt for almindelige brugere at benytte præformaterede manualsider ('cat-sider') fra mellemlageret, hvilket går hurtigere på langsomme maskiner.\n\nGemte manualsider vil kun virke, hvis du bruger en terminal, der er 80 tegn bred, for at undgå at nogle cat-sider bliver gemt med bredder, der ikke passer til andre brugeres skærme. Hvis du bruger en 'bred' terminal, tvinge manualsider til alligevel at blive tilpasset 80 tegn ved at sætte MANWIDTH=80.\n\nDet kan være en sikkerhedsrisiko at slå denne funktion til. Derfor er den som udgangspunkt slået fra. Hvis du er i tvivl, bør du slå den fra.
Extended_description-de.utf-8: Die Programme »man« und »mandb« können so installiert werden, dass das »set-user-id-Bit« gesetzt ist und die Programme daher mit den Rechten des Benutzers »man« laufen. Dadurch kommen reguläre Benutzer in den Genuss von vorformatierten Handbuchseiten (sogenannten »cat-Seiten«), die auf langsameren Computern einen Geschwindigkeitsvorteil beim Benutzen der Handbuchseiten bringen.\n\nVorformatierte Handbuchseiten funktionieren nur mit Terminals mit normaler Breite (80 Buchstaben). Dadurch wird verhindert, dass ein Benutzer die Seiten mit einer Größe speichert, die für andere Benutzer unlesbar ist. Zukünftig wird sich dies konfigurieren lassen. Falls Sie ein breiteres Terminal verwenden, können Sie dennoch eine Breite der Handbuchseiten von 80 Zeichen durch Setzen der Umgebungsvariable MANWIDTH=80 erzwingen.\n\nDas Einschalten dieses Funktionalität kann ein Sicherheitsrisiko sein. Daher ist es standardmäßig abgeschaltet. Falls Sie sich nicht sicher sind, sollten Sie es daher deaktiviert lassen.
Extended_description-es.utf-8: Los programas man y mandb se pueden instalar setuid man, de forma que se ejecutarán con los permisos del usuario 'man'. Esto permite a los usuarios normales beneficiarse de la caché de las páginas de manual preformateadas ('cat pages'), lo cual puede contribuir a mejorar el rendimiento en máquinas lentas.\n\nLa caché de las páginas de manual preformateadas sólo funciona si está usando un terminal de 80 columnas, para evitar que algún usuario guarde páginas de manual preformateadas con anchuras que puedan resultar molestas para otros usuarios. Si usa un terminal ancho, puede obligar a que las páginas de manual se formateen a 80 columnas estableciendo MANWIDTH=80 como variable de entorno.\n\nEsta práctica puede representar un riesgo de seguridad, por lo que está desactivada por defecto. Si tiene dudas, le sugiero que la deje desactivada.
Extended_description-eu.utf-8: Man eta mandb programak set-user-id-a ezarririk dutela instala daitezke 'man' erabiltzailearen baimenekin abiarazi ahal izateko. Honek erabiltzaile arruntei aurrez eraikitako manual orriez ('cat pages') baliatzeko aukera ematen die, honekin makina geldoen performantzia hobetzen.\n\nKatxeaturiko man orrialdeak 80 zutabeko terminal bat erabiltzen baduzu bakarrik funtzionatzen dute erabiltzaile batek beste erabiltzaileei arazoak sor ditzaken zutabe tamaina bat ezarri ez dezan. Terminal zabal bat erabiltzen baduzu, man orrialdeak hala ere 80 zutabetara mugatzea egin dezakezu MANWIDTH=80 ezarriaz.\n\nEzaugarri hau gaitzea segurtasun arrisku bat izan daiteke, beraz ezgaiturik dago lehenespen gisa. Ziur ez bazaude ezgaiturik utzi beharko zenuke.
Extended_description-fi.utf-8: Ohjelmat man ja mandb voidaan asentaa asetuksella set-user-id, jolloin ne ajetaan käyttäjän ”man” oikeuksilla. Tämä sallii tavallisten käyttäjien hyötyä esimuotoiltujen man-ohjesivujen (”cat-sivujen”) varastosta, mikä saattaa parantaa suorituskykyä hitaammilla koneilla.\n\nVarastoidut man-sivut toimivat vain 80 merkin levyisillä päätteillä, jottei yksi käyttäjä tule tallentaneeksi cat-sivuja leveyksillä, jotka olisivat hankalia muille käyttäjille. man-sivut voidaan pakottaa näytettäväksi 80 merkin levyisinä asetuksella MANWIDTH=80, vaikka pääte olisikin leveämpi.\n\nOminaisuuden käyttäminen saattaa olla turvallisuusriski, joten se on oletuksena passivoitu. Jos olet epävarma, jätä se passivoiduksi.
Extended_description-fr.utf-8: Les programmes man et mandb peuvent s'exécuter avec les droits de l'utilisateur « man ». Les utilisateurs ordinaires peuvent ainsi bénéficier du cache des pages de manuel pré-formatées (« catpage ») ce qui peut améliorer les performances des machines lentes.\n\nUn terminal d'une largeur « normale » (80 caractères par ligne) est indispensable pour que la mise en cache des pages fonctionne. Cela évite qu'un utilisateur ne mette en cache des pages dans un format inutilisable par un autre utilisateur. Si vous utilisez un terminal plus large, vous pouvez forcer un formatage des pages sur 80 colonnes avec le paramètre MANWIDTH=80.\n\nCette fonctionnalité peut comporter un risque pour la sécurité du système ; elle n'est pas activée par défaut. Dans le doute, vous devriez la laisser désactivée.
Extended_description-gl.utf-8: Poden instalarse os programas man e mandb co bit de cambio de usuario (setuid) activado para que se executen cos permisos do usuario "man". Isto permite que os usuarios normais se poidan beneficiar do armacenamento de versións preformatadas das páxinas de manual (páxinas "cat"), o que pode mellorar o rendemento nas máquinas lentas.\n\nO armacenamento de páxinas man preformatadas só funciona se emprega un terminal de 80 columnas para evitar que un usuario garde as páxinas "cat" en anchuras que non serven para outros usuarios. Se emprega un terminal ancho pode facer que as páxinas man saian formatadas en 80 columnas estabrecendo a variable de ambiente MANWIDTH=80.\n\nEsta característica pode ser un risco de seguridade, así que está desactivada por defecto. Se ten dúbidas, debería deixala desactivada.
Extended_description-it.utf-8: I programmi man e mandb possono essere installati con il bit set-user-id attivo per essere eseguiti con i permessi dell'utente "man". Questo permette ai normali utenti di usare la versione in cache delle pagine di manuale già preformattate (le "cat page") e quindi migliorare le prestazioni sulle macchine più lente.\n\nLe pagine in cache funzionano solo se viene usato un terminale con 80 colonne, questo per evitare che un utente provochi la creazione delle "cat page" con una larghezza che potrebbe essere scomoda per gli altri. Se si usa un terminale più largo si può comunque forzare la formattazione delle pagine a 80 colonne impostando MANWIDTH=80.\n\nL'attivazione di questa funzione può essere un rischio per la sicurezza, quindi nelle impostazioni predefinite è disattivata. In caso di dubbi è consigliato lasciarla disattivata.
Extended_description-ja.utf-8: man プログラムと mandb プログラムは、「man」ユーザの権限恩恵を受けるために、set-user-id ビットをセットした状態でインストールすることができます。そうすると、通常のユーザがフォーマット済みのマニュアルページ (「cat ページ」) のキャッシングを使うことができ、遅いマシンでのパフォーマンスの向上に役立ちます。\n\nほかのユーザにとって不便な幅に整形されたページが保存されてしまうのを防ぐため、キャッシュされたマニュアルページは、80 文字幅の端末を使っているときのみ動作します。幅の広い端末を使っている場合、MANWIDTH=80 と設定することでマニュアルページが 80 文字幅で整形されるように強制できます。\n\nこれを有効にするとセキュリティ上の問題が発生するかもしれないため、この機能はデフォルトでは無効となっています。よくわからなければ、無効のままにしておくことをお勧めします。
Extended_description-nl.utf-8: De man en mandb programma's kunnen geinstalleerd worden met de set-user-id bit ingesteld zodat ze uitgevoerd worden als de gebruiker 'man'. Dit geeft gewone gebruikers de gelegenheid om van de tijdelijke opslag van voorgeformatteerde handleidingpagina's ('cat pages') gebruik te maken, wat de prestaties op tragere systemen kan verbeteren.\n\nTijdelijk opgeslagen man-pagina's werken enkel wanneer u een terminal met een breedte van 80 gebruikt. Dit vermijdt dat één gebruiker cat-pagina's opslaat met breedtes die niet geschikt zijn voor andere gebruikers. Wanneer u een bredere terminal gebruikt kunt u een breedte van 80 karakters afdwingen voor man-pagina's door 'MANWIDTH=80' in te stellen als omgevingsvariabele.\n\nHet activeren van deze optie kan een veiligheidsrisico zijn; daarom staat deze optie standaard uit. Bij twijfel kunt u deze optie best uit laten.
Extended_description-pl.utf-8: Programy man i mandb mogą być zainstalowane z ustawionym bitem set-user-id, tak że będą się uruchamiać z uprawnieniami użytkownika 'man'. Pozwala to zwykłym użytkownikom na korzystanie z buforowania preformatowanych stron podręcznika (tzw. "strony cat"), co może zwiększyć wydajność działania programu man na wolniejszych komputerach.\n\nBuforowanie preformatowanych stron podręcznika jest dostępne tylko na terminalach o szerokości 80 znaków, aby uniknąć sytuacji, gdy strona podręcznika zachowana przez jednego użytkownika sprawiałaby kłopot innym użytkownikom. Jeżeli używany jest szeroki terminal, można wymusić na programie man zachowywanie preformatowanych stron o szerokości 80 znaków ustawiając zmienną środowiska MANWIDTH=80.\n\nWłączenie tej opcji stanowi ryzyko dla bezpieczeństwa systemu, więc jest domyślnie wyłączona. W razie wątpliwości, sugerujemy pozostawienie jej wyłączonej.
Extended_description-pt.utf-8: Os programas man e mandb podem ser instalados com o bit set-user-id ligado, de modo a que corram com as permissões do utilizador 'man'. Isto permite a vulgares utilizadores beneficiar da cache de páginas de manual pré--formatadas ('cat pages'), que podem ajudar na performance em máquinas mais lentas.\n\nAs páginas em cache do manual só funcionam se estiver a utilizar um terminal de 80-colunas, para evitar que um utilizador faça com que as páginas sejam guardadas com larguras inconvenientes para outros utilizadores. Se utilizar um terminal largo, pode forçar que as páginas do manual sejam formatadas à mesma em 80 colunas definindo MANWIDTH=80.\n\nHabilitar esta funcionalidade pode ser um risco de segurança, por isso desabilita-la é a escolha por omissão. Em caso de dúvida, deve deixa-la desabilitada.
Extended_description-pt_br.utf-8: Os programas man e mandb podem ser instalados com bit set-user-id ligado, assim eles serão executados com as permissões do usuário 'man'. Isto permite que usuários normais se beneficiem do caching de páginas de manual pré-formatadas ('cat pages'), o que pode ajudar na performance em máquinas mais lentas.\n\nPáginas de manual em cache funcionarão somente se você utilizar um terminal de 80 colunas. Isso é para evitar que um usuário faça com que páginas cat sejam salvas em larguras que seriam incovenientes para outros usuários. Caso você utilize um terminal amplo, você pode forçar as páginas de manual a serem formatadas para 80 colunas definindo a variável de ambiente MANWIDTH=80.\n\nHabilitar este recurso pode ser um risco de segurança, por isso o mesmo está desabilitado por padrão. Em caso de dúvidas, é sugerido que você mantenho-o desabilitado.
Extended_description-ro.utf-8: Programele «man» și «mandb» pot fi instalate cu bitul „set-user-id” activat, astfel încât acestea să ruleze cu permisiunile utilizatorului „man”. Acest lucru permite utilizatorilor obișnuiți să beneficieze de stocarea în zona de prestocare a memoriei, a paginilor de manual preformatate („pagini cat”), ceea ce poate ajuta la îmbunătățirea performanței pe mașinile mai lente.\n\nPaginile de manual stocate în zona de prestocare a memoriei funcționează numai dacă utilizați un terminal cu 80 de coloane, pentru a evita ca un utilizator să provoace salvarea paginilor „cat” (preformatate) cu lățimi care ar fi incomode pentru alți utilizatori. Dacă utilizați un terminal larg, puteți forța oricum paginile de manual să fie formatate la 80 de coloane stabilind MANWIDTH=80.\n\nActivarea acestei funcții poate reprezenta un risc de securitate, deci este dezactivată în mod implicit. Dacă aveți îndoieli, ar trebui să o lăsați dezactivată.
Extended_description-ru.utf-8: Программы man и mandb могут быть установлены с включённым битом set-user-id для того, чтобы они запускались с правами пользователя 'man'. Это позволит обычным пользователям использовать ранее отформатированные страницы руководств ('cat pages'), что, возможно, ускорит вывод страниц на медленных машинах.\n\nКэшированные страницы руководств используются при выводе только на 80-ти колоночный терминал, что избавляет от сохранения в кэше страниц одного из пользователей с форматом, несовместимым с форматом других пользователей. Если вы используете широкий терминал, то можете принудительно форматировать страницы по 80 символов в строке установкой MANWIDTH=80.\n\nВключение этой возможности является угрозой безопасности, поэтому по умолчанию она выключена. Если не знаете что делать, то оставьте как есть.
Extended_description-sk.utf-8: Programy man a mandb môžu byť nainštalované s nastaveným príznakom set-user-id, takže sa budú spúšťať s právami používateľa „man“. Takto môžu aj obyčajní používatelia využívať zrýchlené načítanie predformátovaných manuálových stránok z vyrovnávacej pamäte, čo môže pomôcť najmä na pomalších počítačoch.\n\nManuálové stránky z vyrovnávacej pamäte fungujú, len ak používate 80 stĺpcový terminál, aby sa zabránilo možnosti, že niekto iný uloží stránky so šírkou, ktorá bude nevyhovujúca pre iných. Ak používate široký terminál, môžete vynútiť formátovanie manuálových stránok na 80 stĺpcov nastavením premennej MANWIDTH=80.\n\nPovolenie tejto možnosti môže byť bezpečnostným rizikom, preto je predvolene vypnutá. Ak máte pochybnosti, nechajte ju vypnutú.
Extended_description-sr.utf-8: <man> и <mandb> програм може бити инсталиран са (set-user-id bit) постављеним тако, да ће се покретати са дозволама 'man' корисника. Ово дозвољава обичним корисницима да имају корист од кешираних преформатираних страница са упутствима ('cat pages'), што може повећати перформансе на старијим машинама.\n\nКеширане странице са упуствима раде само ако кориситите терминал са 80-колонада би се избјегло да један корисник сачува (cat pages) ширину која бу била непогодназа остале кориснике. Ако користите широки терминал, можете форсирати странице саупутствима да буду форматиране на 80 колона подешавањем MANWIDTH=80.\n\nОмогућавање ове опције може бити сигурносни ризик, тако да није подразумијевана. Ако сте у недоумици, ова опција треба бити остављена онемогућена.
Extended_description-sr@latin.utf-8: <man> i <mandb> program može biti instaliran sa (set-user-id bit) postavljenim тtako, da će se pokretati sa dozvolama 'man' korisnika. Ovo dozvoljava običnim korisnicima da imaju korist od keširanih preformatiranih stranica sa uputstvima ('cat pages'), što može povećati performanse na starijim mašinama.\n\nKeširane stranice sa upustvima rade samo ako korisitite terminal sa 80-kolonada bi se izbjeglo da jedan korisnik sačuva (cat pages) širinu koja bu bila nepogodnaza ostale korisnike. Ako koristite široki terminal, možete forsirati stranice sauputstvima da budu formatirane na 80 kolona podešavanjem MANWIDTH=80.\n\nOmogućavanje ove opcije može biti sigurnosni rizik, tako da nije podrazumijevana. Ako ste u nedoumici, ova opcija treba biti ostavljena onemogućena.
Extended_description-sv.utf-8: Programmen man och mandb kan installeras med set-user-id-biten inställd så att de kommer att köras med rättigheterna från användaren "man". Detta gör att vanliga användare att dra nytta av mellanlagring av förformaterade manualsidor ("cat pages") vilket kan öka prestandan för långsammare maskiner.\n\nCachelagrade manualsidor fungerar endast om du använder en 80-kolumners terminal för att undvika att en användare orsakar att sidor sparas med en bredd som inte lämpar sig för andra användare. Om du använder en bred terminal kan du tvinga manualsidorna att formateras till 80 kolumner i alla fall, genom att ställa in MANWIDTH=80.\n\nAktivera denna funktion kan vara en säkerhetsrisk så den är inaktiverad som standard. Om du är osäker bör du låta den vara inaktiverad.
Extended_description-ta.utf-8: மான் மற்றும் மான்டிபி(mandb) ஐ செட்யூஐடி மான் 'setuid man' பிட் உடன் நிறுவலாம். அதனால் அவை மான் 'man'  பயனர் அனுமதியுடன் இயங்கும். இதனால் சாதாரண பயனர்கள் முன் வகைப்படுத்திய கையேட்டு பக்கங்களை இடையகப்படுத்தி பார்க்க ('cat pages') முடியும். மெதுவான கணினிகளுக்கு இது உதவியாக இருக்கும்.\n\nஒரு பயனர் மற்ற பயனர்களுக்கு இடையூறாக இருக்கும்படி பக்கங்களை சேமிப்பதை தவிர்க்க, 'cat pages' நீங்கள் 80 பத்தி முனையம் பயன்படுத்தினால்தான் வேலை செய்யும். நீங்கள் இன்னும் அகல முனையத்தை பயன்படுத்தினால், கையேட்டு பக்கங்களை80 பத்தியாக MANWIDTH=80 அமைப்பின் மூலம் வடிவமைக்கலாம்.\n\nஇதை இயலுமைபடுத்துவது ஒரு பாதுகாப்பு பிரச்சினை. அதனால் இது முன்னிருப்பாக செய்ல் நீக்கி இருக்கும். நீங்கள் குழம்பினால் இதை முன்னிருப்பிலேயே விடவும்.
Extended_description-tr.utf-8: man kullanıcısı izinleri ile çalışması için man ve mandb uygulamaları set-user-id biti ile kurulabilir. Bu, normal kullanıcıların önceden biçimlendirilmiş yardım sayfalarının önbelleğe alınması avantajından yararlanmalarını sağlar ('cat pages'). Önbellek kullanımı, yavaş makinelerde performans artışına yardımcı olabilir.\n\nÖnbelleğe alınmış man sayfaları sadece eğer 80 sütun genişlikte bir terminal kullanıyorsanız çalışır. Bu, bir kullanıcı için görüntülenmiş sayfaların diğer kullanıcılarla uyumlu olmayan genişliklerde kaydedilmemesi içindir. Eğer geniş bir terminal kullanıyorsanız MANWIDTH=80 ayarıyla man sayfalarını 80 sütun genişliğinde biçimlendirmeye zorlayabilirsiniz.\n\nBu özelliği açmak bir güvenlik riski oluşturabilir, bu yüzden etkinleştirilmedi. Eğer kararsızsanız böyle bırakmanızı tavsiye ederiz.
Extended_description-uk.utf-8: Програми man та mandb можуть бути інстальовані з встановленим бітом set-user-id, таким чином вони будуть запускатися з правами користувача 'man'. Це дозволить звичайним користувачам користуватися кешуванням відформатованих сторінок керівництва, що може збільшити швидкість роботи на повільних машинах.\n\nЩоб запобігти збереженню сторінок з кількістю стовпців неприйнятною для інших користувачів, кешовані сторінки керівництва будуть працювати тільки якщо ви використовуєте термінал шириною 80 стовпців. Якщо ви використовуєте широкий термінал, то ви можете вказати, щоб сторінки керівництва форматувалися по 80 колонок, шляхом встановлення MANWIDTH=80.\n\nВвімкнення цієї можливості може бути ризиком з точки зору безпеки, тому вона заборонена за замовчанням. Якщо ви невпевнені, то залиште її забороненою.
Extended_description-vi.utf-8: Chương trình man và man-db đều có thể được cài đặt với bit « set-user-id » được đặt, để chạy với quyền của người dùng « man ». Vì thế người dùng chuẩn có lợi dụng khả năng nhớ tạm các trang hướng dẫn đã định dạng sẵn (« trang cat »), mà có thể tăng hiệu suất trên máy chạy chậm hơn.\n\nKhả năng nhớ tạm trang hướng dẫn chỉ hoạt động được nếu bạn có phải sử dụng một thiết bị cuối kiểu 80-cột, để tránh có một người dùng gây ra các trang cat được lưu theo độ rộng bất tiện cho người dùng khác. Nếu bạn sử dụng thiết bị rộng, vẫn còn có thể ép buộc các trang hướng dẫn được định dạng thành 80 cột, bằng cách lập biến « MANWIDTH=80 ».\n\nHiệu lực tính năng này có thể rủi ro bảo mật, vậy nó bị tắt theo mặc định. Chưa chắc thì bạn nên để lại nó bị tắt.
Extended_description-zh_cn.utf-8: 在安装 man 和 mandb 这两个程序时，可以把它们的 set-user-id 位开启，从而使其以用户“man”的权限运行。这样做可以让普通用户也能得益于对预先排版好的手册页 (又称 cat 页) 所作的缓存处理，有助于提高在比较慢的机器上的运行速度。\n\n为了避免因一个用户的特殊设置造成所存储的 cat 页使用对其他用户来说都不方便的行宽，手册页的缓存处理只在使用 80 列的终端时生效。如果您使用更宽的终端，仍可使用 MANWIDTH=80 设置来强制对手册页以 80 列行宽进行排版。\n\n启用这一功能可能会有安全隐患，因此默认关闭此功能。如果您不确定，请保留关闭的设定。
Type: boolean
Owners: man-db/install-setuid

Name: openssh-server/password-authentication
Default: true
Description: Allow password authentication?
Extended_description: By default, the SSH server will allow authenticating using a password. You may want to change this if all users on this system authenticate using a stronger authentication method, such as public keys.
Type: boolean
Owners: openssh-server/password-authentication

Name: openssh-server/permit-root-login
Default: true
Description: Disable SSH password authentication for root?
Description-cs.utf-8: Zakázat ověřování heslem pro uživatele root?
Description-da.utf-8: Deaktiver SSH-adgangskodegodkendelse for root?
Description-de.utf-8: SSH Passwort-Authentifizierung für »root« deaktivieren?
Description-es.utf-8: ¿Desea desactivar la autenticación SSH mediante contraseña para el usuario root?
Description-fr.utf-8: Désactiver l’authentification SSH par mot de passe pour le superutilisateur ?
Description-it.utf-8: Disabilitare l'autenticazione SSH con password per root?
Description-ja.utf-8: root での SSH パスワード認証を無効にしますか?
Description-nl.utf-8: Wachtwoordauthenticatie over SSH voor de systeembeheerder uitschakelen?
Description-pt.utf-8: Desactivar a autenticação SSH por palavra passe para o root?
Description-pt_br.utf-8: Desabilitar autenticação por senha do SSH para root?
Description-ru.utf-8: Выключить в SSH аутентификацию по паролю для root?
Description-sv.utf-8: Inaktivera SSH-lösenordsautentisering för root?
Description-tr.utf-8: root kullanıcısının parola ile kimlik doğrulaması engellensin mi?
Extended_description: Previous versions of openssh-server permitted logging in as root over SSH using password authentication. The default for new installations is now "PermitRootLogin prohibit-password", which disables password authentication for root without breaking systems that have explicitly configured SSH public key authentication for root.\n\nThis change makes systems more secure against brute-force password dictionary attacks on the root user (a very common target for such attacks). However, it may break systems that are set up with the expectation of being able to SSH as root using password authentication. You should only make this change if you do not need to do that.
Extended_description-cs.utf-8: Předchozí verze openssh-server dovolovala přihlašovat se přes SSH jako root pomocí ověřování heslem. Výchozí volba pro nové instalace je nyní "PermitRootLogin prohibit-password", která zakazuje ověřování heslem pro uživatele root, aniž by to omezilo systémy, které mají explicitně nastaveno ověřování veřejným SSH klíčem pro uživatele root.\n\nTato změna činí systémy zabezpečenějšími proti útokům hrubou silou na heslo  uživatele root pomocí slovníku (velmi častý cíl útoků). Nicméně, to může poškodit systémy, které jsou nastaveny s předpokladem, že bude možné se přihlašovat přes SSH jako root pomocí ověřování heslem. Změnu této volby byste měli provést pouze pokud ověřování heslem potřebujete.
Extended_description-da.utf-8: Tidligere versioner af openssh-server tillod indlogning som root over SSH med brug af adgangskodegodkendelse. Standarden for nye installationer er nu »PermitRootLogin prohibit-password«, som deaktiverer adgangskodegodkendelse for root uden at ødelægge systemer, som eksplicit har konfigureret SSH-offentlig nøglegodkendelse for root.\n\nDenne ændring gør systemer mere sikre mod brute-force angreb vis ordlister med adgangskoder på root-brugeren (et meget ofte mål for sådanne angreb). Det kan dog ødelægge systemer, som er opsat med forventning om at kunne SSH som root via brug af adgangskodegodkendelse. Du skal kun lave denne ændring, hvis du ikke har brug for dette.
Extended_description-de.utf-8: Vorherige Versionen von openssh-server erlaubten das Anmelden als »root« über SSH unter Verwendung von Passwort-Authentifizierung. Die Standardeinstellung für Neuinstallationen lautet nun »PermitRootLogin prohibit-password«, wodurch die Passwort-Authentifizierung für »root« deaktiviert wird, und Systeme dennoch funktionsfähig bleiben, bei denen ausdrücklich die Authentifizierung als »root« mittels öffentlichem SSH-Schlüssel konfiguriert ist.\n\nDiese Änderung sichert Systeme besser gegen jene Angriffe auf den Benutzer »root« (ein verbreitetes Ziel solcher Angriffe) ab, die das Passwort durch simples Ausprobieren aller Einträge von Wörterbüchern zu erraten versuchen. Sie kann allerdings dazu führen, dass Systeme nicht mehr funktionieren, die in der Absicht konfiguriert wurden, die Anmeldung als »root« über SSH unter Verwendung von Passwort-Authentifizierung zuzulassen. Sie sollten diese Änderung nur vornehmen, wenn Sie auf Letzteres verzichten können.
Extended_description-es.utf-8: Las versiones anteriores de openssh-server permitían iniciar sesión como usuario root utilizando autenticación con contraseña. La configuración predeterminada para las nuevas instalaciones ahora incluye «PermitRootLogin prohibit-password», lo que desactiva la autenticación con contraseña para el usuario root sin romper los sistemas que tienen configurado explícitamente la autenticación SSH utilizando claves públicas para el usuario root.\n\nEste cambio hace que los sistemas sean más resistentes contra ataques de fuerza bruta basados en diccionarios sobre el usuario root (un objetivo muy común para este tipo de ataques). Sin embargo, podría romper sistemas cuya configuración permite que el usuario root inicie sesión a través de SSH utilizando una contraseña. Sólo debería realizar este cambio si no necesita este comportamiento.
Extended_description-fr.utf-8: Les versions précédentes du paquet openssh-server autorisaient la connexion par SSH du superutilisateur (root) en utilisant l’authentification par mot de passe. Par défaut, les nouvelles installations ont maintenant l’option « PermitRootLogin prohibit-password », qui désactive l’authentification par mot de passe pour le compte « root », sans casser les systèmes qui ont configuré explicitement l’authentification SSH par clé publique pour ce compte.\n\nCette modification rend les systèmes plus robustes face aux attaques par force brute et par dictionnaire contre le superutilisateur (très souvent pris pour cible par ce type d’attaque). Cependant, cela peut rendre inutilisables les systèmes reposant sur la possibilité de se connecter au compte « root » par SSH avec authentification par mot de passe. Vous ne devriez appliquer cette modification que si ce n’est pas votre cas.
Extended_description-it.utf-8: Le versioni precedenti di openssh-server permettevano il login come root via SSH, usando l'autenticazione con password. Il comportamento predefinito delle nuove installazioni è «PermitRootLogin prohibit-password» che disabilita l'autenticazione con password per root, senza rendere non funzionanti sistemi che hanno esplicitamente configurato l'autenticazione SSH con chiave pubblica per root.\n\nQuesto cambiamento rende i sistemi più al sicuro da attacchi di forza bruta a dizionario sulle password per l'utente root (un obiettivo molto comune per tali attacchi). Tuttavia, può rendere non funzionanti sistemi che sono impostati facendo affidamento sulla possibilità di autenticazione SSH come root usando la password. Si dovrebbe fare questo cambiamento solo se non si ha bisogno di tale comportamento.
Extended_description-ja.utf-8: openssh-server の以前のバージョンではパスワード認証を利用した SSH 経由の root のログインを許可していました。新しくインストールした場合のデフォルト値が現在は「PermitRootLogin prohibit-password」になり、root のパスワード認証を無効化しますが SSH の公開鍵認証を root 用に明示的に設定しているシステムでは特に問題はありません。\n\nこの変更によりシステムは root ユーザ (こういった攻撃ではとても一般的な攻撃対象です) へのブルートフォースによるパスワード辞書攻撃に対してはより安全になります。しかしパスワード認証により root で SSH 接続できることを前提として構成したシステムでは問題が発生する可能性があります。そういった必要のない場合にのみこの変更を行うようにしてください。
Extended_description-nl.utf-8: Eerdere versies van de openssh-server lieten de systeembeheerder toe om zich over SSH te authenticeren met een wachtwoord. Voor nieuwe installaties is de standaard nu "PermitRootLogin prohibit-password". Deze standaardinstelling maakt het voor de systeembeheerder onmogelijk om zich via een wachtwoord te authenticeren. Deze instelling heeft geen impact op systemen waarbij de SSH-configuratie expliciet vereist dat de systeembeheerder zich authenticeert via een publieke sleutel.\n\nDeze wijziging maakt systemen veiliger tegenover aanvallen met brute kracht (met een wachtwoordenwoordenboek) op de systeembeheerder, een zeer courant doelwit voor zulke aanvallen. Maar het kan systemen onbruikbaar maken die ingesteld werden vanuit de verwachting dat de systeembeheerder SSH kan gebruiken met authenticatie via wachtwoord. Enkel wanneer u dit laatste niet nodig heeft, zou u deze wijziging kunnen doorvoeren.
Extended_description-pt.utf-8: As versões anteriores do servidor openssh permitiam iniciar sessão como root sobre SSH usando autenticação por palavra-passe. A predefinição para novas instalações é agora "PermitRootLogin prohibit-password", a qual desactiva a autenticação por palavra-passe para o root sem danificar os sistemas que têm configurados explicitamente autenticação SSH por chave pública para o root.\n\nEsta alteração torna os sistemas mais seguros contra ataques em que se forçam dicionários de palavras-passe no utilizador root (um alvo muito comum para tais ataques). No entanto, pode danificar sistemas que estão configurados com a expectativa de serem capazes de SSH como root usando autenticação por palavra-passe. Apenas deverá fazer esta alteração se não precisa de tal método de autenticação.
Extended_description-pt_br.utf-8: Versões anteriores do openssh-server permitiam login como root sobre SSH usando autenticação por senha. O padrão para as novas instalações agora é "PermitRootLogin prohibit-password", que desabilita a autenticação por senha para root sem quebrar sistemas que tenham configurado explicitamente o SSH para autenticação por chave pública para root.\n\nEsta alteração torna sistemas mais seguros contra ataques de força bruta por dicionário de senhas no usuário root (um alvo muito comum destes ataques). Entretanto, ela pode quebrar sistemas que foram configurados com a expectativa de acesso SSH com root usando autenticação por senha. Você deve fazer esta mudança somente se você não precisa fazer isso.
Extended_description-ru.utf-8: В предыдущих версиях openssh-server разрешён вход с правами пользователя root через SSH с помощью аутентификации по паролю. При новых установках по умолчанию теперь используется настройка «PermitRootLogin prohibit-password», которая отключает аутентификацию по паролю для root, что не вредит системам, у которых в SSH для root настроена аутентификация по открытому ключу.\n\nЭто изменение делает системы более стойкими к атакам методом перебора словарных паролей для пользователя root (самая распространённая цель таких атак). Однако, это вредит системам, в которых специально настроен вход для root по SSH с парольной аутентификацией. Если это не ваш случай, то ответьте утвердительно.
Extended_description-sv.utf-8: Tidigare versioner av openssh-server tillät inloggning som root över SSH med hjälp av lösenordsautentisering. Standardinställningen för nya installationer är nu "PermitRootLogin prohibit-password", vilket inaktiverar lösenordsautentisering för root utan att förstöra system som explicit har konfigurerat nyckelautentisering med hjälp av publika nycklar för root.\n\nDenna förändring gör system säkrare mot brute-force-angrepp med hjälp av ordlistor med lösenord på root-användaren (ett väldigt vanligt mål för sådana angrepp). Dock så kan detta förstöra system som förväntas kunna använda SSH som root med hjälp av lösenordsautentisering. Du skall endast göra denna förändring om du inte har ett behov av att kunna göra detta.
Extended_description-tr.utf-8: openssh-server'ın önceki sürümleri parola ile kimlik doğrulama kullanılarak root kullanıcısının SSH üzerinden oturum açmasına izin veriyordu. Artık yeni kurulumların öntanımlı ayarı "PermitRootLogin prohibit-password" şeklindedir. Bu ayar root kullanıcısının parola kullanarak oturum açmasını yasaklar. SSH genel anahtar doğrulama yöntemine ayrıca izin veren mevcut sistemler bu ayardan etkilenmez.\n\nBu ayar sistemleri kaba kuvvet sözlükten parola saldırılarına karşı güvenli hale getirir (root kullanıcısı bu tarz saldırıların en büyük hedeflerindendir). Fakat bu ayarın etkinleştirilmesi, root kullanıcısına parola doğrulama yöntemiyle oturum açılabileceği varsayımıyla hareket eden sistemlerde eskiden çalışan düzenin bozulmasına sebep olacaktır. Bu değişikliği yalnızca sorun çıkarmayacağından eminseniz yapın.
Type: boolean
Owners: openssh-server/permit-root-login

Name: partman-partitioning/choose_label
Description: Dummy template
Extended_description: This is a fake template used to pre-seed the debconf database. If you are seeing this, something is probably wrong.
Type: select

Name: passwd/username
Description: Username for your account:
Description-am.utf-8: ለመዝገብዎ ተጠቃሚ-ስም፦
Description-ar.utf-8: اسم المستخدم لحسابك:
Description-ast.utf-8: Nome d'usuariu pa la to cuenta:
Description-be.utf-8: Імя карыстальніка для Вашага рахунку:
Description-bg.utf-8: Потребителско име за Вашия акаунт:
Description-bn.utf-8: আপনার অ্যাকাউন্টের ব্যবহারকারীর-নাম:
Description-bo.utf-8: ཁྱོད་ཀྱི་ཐོ་ཁོངས་ཀྱི་སྤྱོད་མཁན་མིང：
Description-bs.utf-8: Korisničko ime za Vaš račun:
Description-ca.utf-8: Nom d'usuari pel vostre compte:
Description-cs.utf-8: Uživatelské jméno pro nový účet:
Description-cy.utf-8: Enw defnyddiwr ar gyfer eich cyfrif:
Description-da.utf-8: Brugernavn til din konto:
Description-de.utf-8: Benutzername für Ihr Konto:
Description-dz.utf-8: ཁྱོད་ཀྱི་རྩིས་ཐོའི་དོན་ལུ་ལག་ལེན་པའི་མིང་།
Description-el.utf-8: Εισάγετε το όνομα χρήστη του λογαριασμού σας:
Description-eo.utf-8: Salutnomo por via konto:
Description-es.utf-8: Nombre de usuario para la cuenta:
Description-et.utf-8: Sisesta oma kontole kasutajanimi:
Description-eu.utf-8: Sartu kontuaren erabiltzaile-izena:
Description-fa.utf-8: نام کاربری حساب شما:
Description-fi.utf-8: Käyttäjätunnuksesi:
Description-fr.utf-8: Identifiant pour le compte utilisateur :
Description-ga.utf-8: Ainm úsáideora do do chuntas:
Description-gl.utf-8: Nome de usuario para a súa conta:
Description-gu.utf-8: તમારા ખાતાનું વપરાશકર્તાનામ:
Description-he.utf-8: שם משתמש עבור החשבון שלך:
Description-hi.utf-8: आपके खाते के लिए उपयोक्ता नाम:
Description-hr.utf-8: Korisničko ime za vaš račun:
Description-hu.utf-8: Felhasználóneve:
Description-id.utf-8: Nama untuk akun Anda:
Description-is.utf-8: Notendanafn fyrir þennan reikning:
Description-it.utf-8: Nome utente per l'account:
Description-ja.utf-8: あなたのアカウントのユーザ名:
Description-ka.utf-8: თქვენი ანგარიშის მომხმარებლის სახელი:
Description-kab.utf-8: Isem n useqdac i umiḍan-inek·inem:
Description-kk.utf-8: Тіркелгіңіз үшін пайдаланушы аты:
Description-km.utf-8: ឈ្មោះ​អ្នក​ប្រើ សម្រាប់​គណនី​របស់​អ្នក ៖
Description-kn.utf-8: ಖಾತೆಯ ಬಳಕೆದಾರನ ಹೆಸರು:
Description-ko.utf-8: 계정의 사용자 이름:
Description-ku.utf-8: Navê bikarhêner yê hesaba te:
Description-lo.utf-8: ຊື່ຜູ້ໃຊ້ສຳຫລັບບັນຊີຂອງທ່ານ:
Description-lt.utf-8: Naudotojo vardas Jūsų paskyrai:
Description-lv.utf-8: Jūsu konta lietotājvārds:
Description-mk.utf-8: Корисничко име за твојата сметка:
Description-ml.utf-8: നിങ്ങളുടെ അക്കൌണ്ടിനു വേണ്ട ഉപയോക്താവിന്റെ പേരു്:
Description-mr.utf-8: आपल्या खात्याकरिता वापरदारनाव:
Description-nb.utf-8: Brukernavnet for kontoen din:
Description-ne.utf-8: तपाईँको खाताका लागि प्रयोगकर्ता नाम:
Description-nl.utf-8: Wat is de gebruikersnaam voor uw account?
Description-nn.utf-8: Brukarnamn for kontoen din:
Description-no.utf-8: Brukernavnet for kontoen din:
Description-oc.utf-8: Nom d'utilizaire pel vòstre compte :
Description-pa.utf-8: ਤੁਹਾਡੇ ਖਾਤੇ ਲਈ ਯੂਜ਼ਰ ਨਾਂ:
Description-pl.utf-8: Nazwa użytkownika dla Twojego konta:
Description-pt.utf-8: Nome de utilizador para a sua conta:
Description-pt_br.utf-8: Nome de usuário para sua conta:
Description-ro.utf-8: Numele de utilizator pentru contul dumneavoastră:
Description-ru.utf-8: Имя вашей учётной записи:
Description-se.utf-8: Du konttu geavaheaddjinama:
Description-si.utf-8: ඔබගේ ගිණුම සඳහා භාවිතා කරන්නාගේ නම:
Description-sk.utf-8: Používateľské meno pre nový účet:
Description-sl.utf-8: Uporabniško ime za vaš račun:
Description-sq.utf-8: Emri i përdoruesit për llogarinë tënde:
Description-sr.utf-8: Корисничко име за ваш налог:
Description-sv.utf-8: Användarnamn för ditt konto:
Description-ta.utf-8: கணக்குக்கு பயனீட்டாளர் பெயர்:
Description-te.utf-8: ఖాతాకి వాడుకరి పేరు:
Description-tg.utf-8: Номи корбар барои ҳисоби шумо:
Description-th.utf-8: ชื่อผู้ใช้สำหรับบัญชีของคุณ:
Description-tl.utf-8: Magbigay ang pangalan ng inyong account:
Description-tr.utf-8: Hesabınız için kullanıcı adı:
Description-ug.utf-8: ھېساباتىڭىزنىڭ ئىشلەتكۈچى ئاتى:
Description-uk.utf-8: Назва облікового запису:
Description-vi.utf-8: Tên người dùng cho tài khoản của bạn:
Description-zh_cn.utf-8: 您的账户的用户名：
Description-zh_tw.utf-8: 您的帳號的使用者名稱:
Extended_description: Select a username for the new account. Your first name is a reasonable choice. The username should start with a lower-case letter, which can be followed by any combination of numbers and more lower-case letters.
Extended_description-am.utf-8: የተጠቃሚ ስም ለአዲሱ መዝገብ ይምረጡ። ለምሳሌ ስምዎ ጥሩ ምርጫ ነው። የተጠቃሚ ስም በትንሾቹ የእንግሊዘኛ ፊደል ጀምሮ ቁጥሮችንና ሌሎች ትንሽ ፊደሎችን ሊያካትት ይችላል።
Extended_description-ar.utf-8: اختر اسم مستخدمٍ لحسابك الجديد. اسمك الأوّل اختيارٌ معقول. يفترض أن يبدأ اسم المستخدم بحرفٍ صغير متبوعاً بأيّ خليطٍ من الأرقام و المزيد من الأحرف الصّغيرة.
Extended_description-ast.utf-8: Seleiciona un nome d'usuariu pa la nueva cuenta. El to primer nome ye una bona eleición. El nome d'usuariu pue entamar con lletres minúscules, que pueden siguise de cualesquier entemzu de númberos y más lletres minúscules.
Extended_description-be.utf-8: Пазначце імя карыстальніка для новага рахунку (лацінкай). Вашае імя або псеўданім будуць нармалёвым варыянтам. Імя карыстальніка мусіць пачынацца з маленькай літары, далей можа ісці любая камбінацыя лічбаў і маленькіх літар.
Extended_description-bg.utf-8: Изберете потребителско име за новия акаунт. Вашето първо (лично) име е разумен избор. Потребителското име трябва да започва с малка латинска буква, последвана от цифри и малки латински букви.
Extended_description-bn.utf-8: নতুন অ্যাকাউন্টের জন্য একটি ব্যবহারকারীর-নাম নির্বাচন করুন। এজন্য আপনার নামের প্রথমাংশ ব্যবহার করতে পারেন। ব্যবহারকারীর-নাম এর প্রথম অক্ষরটি ছোট ছাঁদের হওয়া বাঞ্ছনীয়। প্রথম অক্ষরটির পর যে কোন সংখ্যক অংক ও আরো ছোট ছাঁদের অক্ষর থাকতে পারে।
Extended_description-bo.utf-8: ཐོ་ཁོངས་གསར་བ་ལ་སྤྱོད་མཁན་མིང་ཞིག་འཇུག་དགོས ཁྱོད་ཀྱི་མིང་ཁོ་ན་འཇུག་ན་བཟང་། སྤྱོད་མཁན་མིང་ལ་ཆུང་བྲིས་ཡི་གེས་འགོ་འཛུགས་ནས་ཨང་ཀི་དང་ཆུང་བྲིས་སྤེལ་མ་དེའི་འཚམས་སུ་འབྲི་ཆོག
Extended_description-bs.utf-8: Izaberite korisničko ime za novi račun. Vaše ime je razuman izbor. Korisničko ime treba počinjati malim slovom koje može pratiti bilo kakva kombinacija brojeva i još malih slova.
Extended_description-ca.utf-8: Seleccioneu un nom d'usuari pel nou compte. El vostre primer nom és una bona opció. El nom d'usuari ha de començar amb una lletra en minúscula, seguida de qualsevol combinació de nombres o més lletres en minúscula.
Extended_description-cs.utf-8: Zadejte uživatelské jméno pro nový účet. Rozumnou volbou bývá křestní jméno uživatele. Uživatelské jméno musí začínat malým písmenem, za kterým může následovat libovolná kombinace čísel a malých písmen.
Extended_description-cy.utf-8: Dewiswch enw defnyddiwr ar gyfer y cyfrif newydd. Mae eich enw cyntaf yn ddewis rhesymol. Dylai'r enw cyfrif gychwyn gyda llythyren fechan, wedi ei ddilyn gan unrhyw gyfuniad o rhifau a mwy o lythrennau bychan.
Extended_description-da.utf-8: Vælg et brugernavn til den nye konto. Dit fornavn kan være et fornuftigt valg. Brugernavnet skal starte med et lille bogstav, hvilket kan suppleres med en hvilken som helst kombination af numre og små bogstaver.
Extended_description-de.utf-8: Wählen Sie einen Benutzernamen für das neue Benutzerkonto. Der Vorname ist meist eine gute Wahl. Der Benutzername sollte mit einem kleinen Buchstaben beginnen, gefolgt von weiteren kleinen Buchstaben oder auch Zahlen.
Extended_description-dz.utf-8: རྩིས་ཐོ་གསརཔ་ཀྱི་དོན་ལུ་ལག་ལེན་པའི་མིང་སེལ་འཐུ་འབད། ཁྱོད་ཀྱི་མིང་དང་པ་འདི་ཁུངས་ལྡན་གྱི་གདམ་ཁ་ཨིན། ལག་ལེན་པའི་མིང་འདི་ཡིག་ཆུང་ཡི་གེ་ནང་འགོ་བཙུགས་དགོ་ འདི་གིས་ཡིག་ཆུང་ཡི་གེ་ཚུ་ལེ་ཤ་དང་ཨང་ཚུ་གི་མཉམ་མཐུད་གང་རུང་གིས་རྗེས་སུ་འབྲང་ནི་ཨིན།
Extended_description-el.utf-8: Επιλέξτε ένα ονομα χρήστη για το νέο λογαριασμό. Το μικρό σας όνομα είναι μια λογική επιλογή. Το όνομα χρήστη θα πρέπει να ξεκινά με ένα πεζό γράμμα και να ακολουθείται απο οποιονδήποτε συνδυασμό αριθμών και πεζών γραμμάτων.
Extended_description-eo.utf-8: Elektu salutnomon por via konto. Via persona nomo estas bona elekto. La salutnomo nepre komenciĝu per minusklaj literoj, sekvota de ajna kombino de ciferoj kaj pliaj minusklaj literoj.
Extended_description-es.utf-8: Seleccione un nombre de usuario para la nueva cuenta. Su nombre, sin apellidos ni espacios, es una elección razonable. El nombre de usuario debe empezar con una letra minúscula, seguida de cualquier combinación de números y más letras minúsculas.
Extended_description-et.utf-8: Vali oma kontole kasutajanimi. Mõistlik valik on näiteks sinu eesnimi. Kasutajanimi peaks algama väiketähega, millele järgneb kombinatsioon väiketähtedest ja soovi korral ka numbritest.
Extended_description-eu.utf-8: Hautatu kontu berriaren erabiltzaile-izena. Zure izena aukera egokia da. Erabiltzaile-izena letra minuskularekin hasi behar du eta zenbakiren eta letra maiuskula/minuskulen konbinazioarekin jarraitu.
Extended_description-fa.utf-8: یک نام کاربری برای حساب جدید انتخاب کنید. اسم کوچک شما می‌تواند یک انتخاب مناسب باشد. نام کاربری باید با یک حرف کوچک آغاز شود و می‌تواند در ادامه هر ترکیبی از اعداد و حروف کوچک دیگر باشد.
Extended_description-fi.utf-8: Valitse uusi käyttäjätunnus. Etunimesi on mielekäs vaihtoehto. Käyttäjätunnuksen täytyy alkaa pienaakkosella, ja se voi sisältää vapaavalintaisen yhdistelmän numeroita ja pienaakkosia. Älä käytä kirjaimia å, ä tai ö.
Extended_description-fr.utf-8: Veuillez choisir un identifiant (« login ») pour le nouveau compte. Votre prénom est un choix possible. Les identifiants doivent commencer par une lettre minuscule, suivie d'un nombre quelconque de chiffres et de lettres minuscules.
Extended_description-ga.utf-8: Roghnaigh ainm úsáideora don chuntas nua.  Is rogha réasúnta é d'ainm gan sloinne. Ba chóir litir bheag a bheith ar dtús, agus aon teaghrán d'uimhreacha agus litreacha beaga tar éis sin.
Extended_description-gl.utf-8: Escolla un nome de usuario para a nova conta. O seu nome é unha elección razoábel. O nome de usuario debería comezar por unha letra minúscula, que pode ir seguida por calquera combinación de números e letras minúsculas.
Extended_description-gu.utf-8: નવા ખાતાં માટે વપરાશકર્તાનામ પસંદ કરો. તમારુ પ્રથમ નામ એ યોગ્ય પસંદગી છે. વપરાશકર્તાનામ એ નાના-અંગ્રેજી અક્ષરોમાં, આંકડાઓ અથવા વધુ નાનાં અક્ષરોનું મિશ્રણ હોઇ શકે છે.
Extended_description-he.utf-8: נא לבחור את שם המשתמש לחשבון החדש. שמך הפרטי היא בחירה סבירה. שם המשתמש צריך להתחיל באות לטינית קטנה ואחריה יכול לבוא צירוף כלשהו של מספרים ואותיות לטיניות קטנות.
Extended_description-hi.utf-8: नये खाते के लिए उपयोक्ता का नाम चुनें. आपका नाम एक अच्छा विकल्प है. उपयोक्ता का नाम अंग्रेजी के छोटे अक्षर से प्रारंभ होना चाहिए, जिसके बाद अंकों या अन्य छोटे अक्षरों का प्रयोग किसी भी क्रम में किया जा सकता है.
Extended_description-hr.utf-8: Odaberite ime za novi korisnički račun. Vaše ime je prihvatljiv izbor. Korisničko ime treba počinjati malim slovom, a može se sastojati od bilo koje kombinacije brojaka i malih slova.
Extended_description-hu.utf-8: Adjon felhasználónevet a hozzáféréshez. A keresztnév általában meg szokott felelni a célra. A lényeg, hogy a felhasználónév kisbetűvel kezdődjön, azután számok és további kisbetűk tetszőleges kombinációja állhat.
Extended_description-id.utf-8: Pilih nama pengguna untuk akun baru. Nama depan Anda merupakan pilihan yang baik. Nama pengguna sebaiknya dimulai dengan huruf kecil, yang dapat diikuti dengan kombinasi angka dan huruf kecil.
Extended_description-is.utf-8: Veldu notendanafn fyrir nýja reikninginn. Skírnarnafnið þitt er ágætis kostur. Þetta notendanafn ætti að byrja á lágstaf, sem má fylgja eftir með einhverri blöndu af tölum og lágstöfum.
Extended_description-it.utf-8: Scegliere il nome utente per il nuovo account, per esempio il nome di battesimo. Il nome dell'utente dovrebbe iniziare con una lettera minuscola, che può essere seguita da una qualsiasi combinazione di numeri e lettere minuscole.
Extended_description-ja.utf-8: 新しいアカウントのユーザ名を選んでください。あなたのファーストネームを使うのは妥当な選択です。ユーザ名の先頭は小文字アルファベットでなければならず、数字・小文字アルファベットの任意の組合わせで構成されます。
Extended_description-ka.utf-8: მიუთითეთ სახელი ახალი ანგარიშისათვის. შეგიძლიათ ჩაწეროთ თქვენი სახელი. ის პატარა ლათინური ასოთი უნდა იწყებოდეს და გრძელდებოდეს ციფრებისა და პატარა ლათინური ასოების ნებისმიერი სიგრძის კომბინაციით.
Extended_description-kab.utf-8: Fren isem n useqdac i umiḍan amaynut. Isem-inek·inem amezwaru d lxetyaṛ n ṣṣwab. Ẓer belli ismawen n useqdac ilaq ad bdun s usekkil ameẓẓyan, i izemren ad d-ttuḍefren s yal tuddsa n yimḍanen d yisekkilen, daɣen ur ilaq ara ad iɛeddi nnig n 32 yisekkilen.
Extended_description-kk.utf-8: Жүйеңізде тіркелетін пайдаланушы атын (тіркелгі) таңдаңыз. Ол ретінде сіздің шын атыңызды қолдануға болады. Пайдаланушы аты кіші латын әрпінен басталуы керек, одан кейін сандар мен кіші латын әріптерінің кез-келген саны болуы мүмкін.
Extended_description-km.utf-8: ជ្រើសឈ្មោះ​អ្នក​ប្រើ​សម្រាប់​គណនី​ថ្មី ។ ឈ្មោះ​អ្នក​ប្រើ​គួរ​តែ​ចាប់ផ្ដើម​ដោយ​អក្សរ​តូច ហើយ​អាច​បន្ត​ដោយ​បន្សំ​រវាង​លេខ និង អក្សរ​តូច​ជាច្រើន​ទៀត ។
Extended_description-kn.utf-8: ಹೊಸ ಖಾತೆಗೆ ಬಳಕೆದಾರ ನಾಮವೊಂದನ್ನು ಆಯ್ಕೆ ಮಾಡಿ. ನಿಮ್ಮ ಹೆಸರು ಕೂಡ ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಬಹುದು. ಬಳಕೆದಾರರ ಹೆಸರು ಯಾವುದಾದರೂ ಅಕ್ಷರದಿಂದ ಶುರುವಾಗಿ ನಂತರ ಅಂಕಿ ಹಾಗು ಅಕ್ಷರಗಳ ಯಾವುದೇ ಸಂಯೋಜನೆಯೊಂದಿಗೆ ಮುಂದುವರೆಯಬಹುದು.
Extended_description-ko.utf-8: 새로 만들 계정의 사용자 이름을 지정하십시오. 이름을 쓰는 것도 좋습니다. 사용자 이름은 영문 소문자로 시작해야 하고, 그 뒤에는 숫자나 영문 소문자를 몇 개든지 쓸 수 있습니다.
Extended_description-ku.utf-8: Ji bo hesabê nû navekî bikarhêneriyê hilbijêre. Nav bi awayekî baş hatiye hilbijartin. Divê navê bikarhêneriyê ji tîp an jî reqeman pêk bê.
Extended_description-lo.utf-8: ກະລຸນາຕັ້ງຊື່ຜູ້ໃຊ້ສຳຫລັບບັນຊີໃໝ່ ໂດຍປົກກະຕິ ຊື່ຕົ້ນຂອງທ່ານແມ່ນຄຳຕອບທີ່ສົມເຫດສົມຜົນ ຊື່ຜູ້ໃຊ້ຄວນຂື້ນຕົ້ນແມ່ນໂຕອັກສອນພິມນ້ອຍ ແລະສາມາດຕໍ່ດ້ວຍໂຕເລກຫລືໂຕພິມນ້ອຍຫລາຍໂຕໄດ້.
Extended_description-lt.utf-8: Pasirinkite naudotojo vardą naujajai paskyrai. Jūsų vardas yra tinkamas pasirinkimas. Naudotojo vardas turėtų prasidėti iš mažosios raidės, po kurios gali būti mažųjų raidžių ir skaitmenų kombinacija.
Extended_description-lv.utf-8: Izvēlieties konta lietotājvārdu. Laba izvēle ir jūsu vārds (bez uzvārda). Lietotāja vārdam jāsākas ar mazo latīņu alfabēta burtu aiz kura var sekot jebkāda mazo latīņu alfabēta burtu un ciparu kombinācija.
Extended_description-mk.utf-8: Одбери корисничко име за новата сметка. Твоето име е добар избор. Корисничкото име треба да почне со мала буква по која може да има било каква комбинација на бројки или мали букви.
Extended_description-ml.utf-8: പുതിയ അക്കൌണ്ടിനു വേണ്ട ഉപയോക്താവിന്റെ പേരു് തെരഞ്ഞെടുക്കുക. നിങ്ങളുടെ പേരു് ഉത്തമമായൊന്നാണു്. ഉപയോക്താവിന്റെ പേരു് ഒരു ചെറിയക്ഷരം വച്ച് തുടങ്ങണം, അതിന് ശേഷം അക്കങ്ങളുടേയോ കൂടുതല്‍ ചെറിയക്ഷരങ്ങളുടേയോ എത്ര സമ്മിശ്രണം വേണമെങ്കിലുമാകാം.
Extended_description-mr.utf-8: नवीन खात्याकरिता वापरदारनाव ठरवा. आपले पहिले नाव यासाठी निवडणे उचित ठरेल. वापरदारनाव (इंग्रजीसाठी लहान अक्षराने सुरू होणे आवश्यक) अंक व अक्षरे कशीही एकत्रित करून बनवता येईल.
Extended_description-nb.utf-8: Velg et brukernavn for den nye kontoen. Fornavnet ditt er et rimelig valg. Merk at brukernavn må starte med liten bokstav, deretter kan du bruke en hvilken som helst kombinasjon av tall og små bokstaver.
Extended_description-ne.utf-8: नयाँ खाताका लागि प्रयोगकर्ता नाम चयन गर्नुहोस् । तपाईँको पहिलो नाम उचित छनौट हो । प्रयोगकर्ता नामहरू सानो अक्षरबाट सुरू हुन्छ, जसलाई कुनै पनि संख्याहरुको संयोजन र धेरै सानो अक्षरहरूले पछ्याउँन सक्ने छन् ।
Extended_description-nl.utf-8: Wat is de gebruikersnaam voor het nieuwe account? Uw voornaam is een redelijke keuze. Merk op dat een gebruikersnaam dient te beginnen met een kleine letter, eventueel gevolgd door een combinatie van kleine letters en cijfers.
Extended_description-nn.utf-8: Vel eit brukarnamn for den nye kontoen. Førenamnet ditt er eit godt val. Brukarnamnet må starte med ein liten bokstav, resten av brukarnamnet kan vera ein kombinasjon av tal og fleire små bokstavar.
Extended_description-no.utf-8: Velg et brukernavn for den nye kontoen. Fornavnet ditt er et rimelig valg. Merk at brukernavn må starte med liten bokstav, deretter kan du bruke en hvilken som helst kombinasjon av tall og små bokstaver.
Extended_description-oc.utf-8: Causissètz un identificant (« login ») pel compte novèl. Lo vòstre pichon nom es un causida possibla. Los identificants devon començar per una letra minuscula, seguida d'un nombre quin que siá de chifras e de letras minusculas.
Extended_description-pa.utf-8: ਨਵੇਂ ਖਾਤੇ ਲਈ ਯੂਜ਼ਰ ਨਾਂ ਦੀ ਚੋਣ ਕਰੋ। ਤੁਹਾਡਾ ਪਹਿਲਾਂ ਨਾਂ ਸਭ ਤੋਂ ਵਧੀਆ ਚੋਣ ਹੈ। ਯੂਜ਼ਰ ਨਾਂ ਛੋਟੇ ਅੱਖਰਾਂ ਨਾਲ ਹੀ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਹੋਰ ਕੋਈ ਅੰਕ ਜਾਂ ਛੋਟੇ ਅੱਖਰ ਸ਼ਾਮਿਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।
Extended_description-pl.utf-8: Wybierz nazwę dla nowego konta. Twoje imię wydaje się być rozsądnym wyborem. Nazwa użytkownika powinna zaczynać się od małej litery, po której mogą następować cyfry i inne małe litery.
Extended_description-pt.utf-8: Escolha um nome de utilizador para a nova conta. O primeiro nome é uma escolha razoável. O nome de utilizador deve começar com uma letra minúscula, que pode ser seguida de qualquer combinação de números e mais letras minúsculas.
Extended_description-pt_br.utf-8: Informe um nome de usuário para a nova conta. Seu primeiro nome é uma escolha razoável. O nome de usuário deverá ser iniciado com uma letra minúscula, que pode ser seguida de qualquer combinação de números e mais letras minúsculas.
Extended_description-ro.utf-8: Selectați un nume pentru noul cont. Prenumele dumneavoastră este o alegere rezonabilă. Numele de utilizator ar trebui să înceapă cu literă mică, care poate fi urmată de orice combinație de numere și litere mici.
Extended_description-ru.utf-8: Выберите имя пользователя (учётную запись), под которым вы будете известны в системе. В качестве учётной записи может быть использовано ваше реальное имя. Учётная запись должна начинаться со строчной латинской буквы, за которой может следовать любое количество строчных латинских букв или цифр.
Extended_description-se.utf-8: Vállje geavaheaddjinama dan ođđa kontui. Geavat áinnas iežat nama, gaskkaid haga. Geavaheaddjinama ferte álgit smávva bustávain, muđuid geavaheaddjinamas sáhttá leat sihke logut ja eará smávva bustávaid (muhto eai sáhte leat gaskamearkkat).
Extended_description-si.utf-8: නව ගිණුම සඳහා භාවිතා කරන්නාගේ නමක් තොරන්න. ඔබගේ පලමු නම සාධාරණ තේරීමකි. භාවිතා කරන්නාගේ නම කුඩා අකුරකින් පටන් ගත යුතු අතර පසුව ඉලක්කම් සහ කුඩා අකුරු වල ඕනෑම සංකලනයක් භාවිතා කළ හැක.
Extended_description-sk.utf-8: Zvoľte si používateľské meno pre nový účet. Rozumnou voľbou by mohlo byť vaše krstné meno. Používateľské mená by mali začínať malým písmenom, za ktorým môže nasledovať ľubovoľná kombinácia čísel a malých písmen.
Extended_description-sl.utf-8: Izberite ime za vaš uporabniški račun. Vaše ime je primerna izbira. Uporabniško ime naj bi se začelo z malo začetnico, ki ji lahko sledi kakršnakoli kombinacija številk in malih črk.
Extended_description-sq.utf-8: Zgjidh një emër përdoruesi për llogarinë e re. Emri yt është një zgjedhje e arsyeshme. Emri i përdoruesit duhet të fillojë me një gërmë të vogël, e cila mund të ndiqet nga një kombinim çfarëdo numrash dhe akoma më shumë gërma të vogla.
Extended_description-sr.utf-8: Изаберите корисничко име за нови налог. Ваше име је разуман избор. Корисничко име мора почети са малим словом, које може бити праћено било каквом комбинацијом цифара и малих слова.
Extended_description-sv.utf-8: Välj ett användarnamn för det nya kontot. Ditt förnamn är ofta ett bra val. Användarnamnet bör inledas med liten bokstav och kan sedan följas av en godtycklig kombination av siffror och små bokstäver.
Extended_description-ta.utf-8: இந்த புதிய கணக்குக்கு பயனரின் உண்மை பெயரை உள்ளிடவும். உங்கள் முதல் உண்மைப் பெயர் இதற்கு ஒரு நல்ல தேர்வாகும். பயனரின் பெயர் ஆங்கிலம் போன்ற இரு நிலை உள்ளீடுகளில் இருப்பின் கீழ் நிலையில் துவங்க வேண்டும். அதற்குப் பின் எந்த எண் எந்த கீழ் நிலை எழுத்துறுக்களின் கலவையாகவும் இருக்கலாம்.
Extended_description-te.utf-8: కొత్త ఖాతా కి వాడుకరి పేరుని ఎంచుకో. మీ పూర్తి పేరు మీ  ఇష్టానుసారంగా ఎంచుకోవచ్చు.వాడుకరి పేరు ఆంగ్ల చిన్న అక్షరాలతో మొదలు పెట్టి, ఇంకొన్ని  అంకెలు, ఏక్కువ చిన్ని అక్షరాల మిళితమై వుండవచ్చు.
Extended_description-tg.utf-8: Номи корбарро барои ҳисоби нав интихоб намоед. Номи шумо интихоби беҳтарин аст. Номи корбар бояд бо ҳарфи хурд оғоз ёбад, ки метавонад бо ягон маҷмӯи рақамҳо ва ҳарфҳои дигари хурд идома ёбад.
Extended_description-th.utf-8: กรุณาตั้งชื่อผู้ใช้สำหรับบัญชีใหม่ โดยปกติ ชื่อต้นของคุณคือคำตอบที่สมเหตุสมผล ชื่อผู้ใช้ควรขึ้นต้นด้วยอักษรตัวพิมพ์เล็ก และสามารถตามด้วยตัวเลขหรือตัวพิมพ์เล็กหลายตัวได้
Extended_description-tl.utf-8: Pumili ng pangalan para sa bagong account. Ang inyong unang pangalan ay rasonable. Kinakailangang mag-umpisa sa maliit na titik ang pangalan, na maaaring sundan ng kahit anong kumbinasyon ng numero at mga maliit na titik.
Extended_description-tr.utf-8: Yeni kullanıcı hesabı için bir kullanıcı adı seçin. İlk adınız makul bir seçimdir. Kullanıcı adları küçük harfle başlamak zorundadır. Daha sonra rakam ve başka küçük harflerin kombinasyonu ile devam edebilir.
Extended_description-ug.utf-8: يېڭى ئىشلەتكۈچىگە ئىشلەتكۈچى ئاتى تاللاڭ. مەسىلەن، ئاتىڭىز ناھايىتى مۇۋاپىق تاللاش بولالايدۇ. ئىشلەتكۈچى ئاتى چوقۇم بىر ھەرپتىن باشلىنىپ، ئاخىرىغا ھەر قانداق سان ۋە باشقا كىچىك يېزىلىشتىكى ھەرپلەر ئەگىشىپ كەلسە بولىدۇ.
Extended_description-uk.utf-8: Виберіть ім'я користувача для нового облікового запису. Ваше ім'я - це гарний вибір. Ім'я користувача повинно починатися із малої латинської літери, за якою може слідувати довільна комбінація цифр та малих латинських літер.
Extended_description-vi.utf-8: Hãy chọn tên người dùng cho tải khoản mới này. Tên của bạn là sự chọn hữu ích. Tên người dùng nên bắt đầu với chữ thường, với bất cứ phối hợp con số và chữ thường nào theo sau.
Extended_description-zh_cn.utf-8: 请为新的账户选择一个用户名。比如，您的名字就是一个合适的选择。用户名必须以一个小写字母开头，接着是任意数字和小写字母的组合。
Extended_description-zh_tw.utf-8: 請替新的帳號輸入使用者名稱。例如，您的名字就是一個不錯的選擇。使用者名稱必須以小寫字母開頭，接著的則可以是任意數字或其它的小寫字母之組合。
Type: string

Name: shared/packages-ispell
Description: Do not translate, for internal use.
Extended_description: Intended to get a list of owners of this shared template.
Type: text
Owners: shared/packages-ispell

Name: shared/packages-wordlist
Description: 
Type: text
Owners: shared/packages-wordlist

Name: tasksel/desktop
Choices: gnome, kde, xfce, lxde, gnome-flashback, cinnamon, mate, lxqt
Description: This can be preseeded to override the default desktop.
Description-be.utf-8: Каб замяніць стандартны працоўны стол, можна выкарыстаць preseed.
Description-bg.utf-8: Графичната среда по подразбиране може да бъде предварително указана с preseed.
Description-ca.utf-8: Això es pot preestablir per canviar l'escriptori per defecte.
Description-cs.utf-8: Tímto je možno přebít volbu výchozího desktopového prostředí.
Description-da.utf-8: Dette kan forhåndskonfigureres for at overskrive standardskrivebordet.
Description-de.utf-8: Die Standardauswahl kann per Voreinstellung geändert werden, um eine andere Desktopumgebung auszuwählen.
Description-es.utf-8: Esto puede ser preconfigurado para anular el escritorio por omisión.
Description-fr.utf-8: Cela peut être préconfiguré pour sélectionner le bureau par défaut.
Description-hr.utf-8: Pretpostavljeno radno okruženje možete promijeniti putem preeseed postavke.
Description-id.utf-8: Ini dapat diprabibitkan untuk menimpa desktop baku.
Description-kk.utf-8: Мұны үнсіз келісім бойынша жұмыс үстелін алмастыру үшін қолдануға болады.
Description-ko.utf-8: 이 설정에 대해 미리 설정 기능을 이용해 기본 데스크톱을 바꿀 수 있습니다.
Description-nb.utf-8: Dette kan forhåndsutfulles for å overstyre forvalgt skrivebordsomgivelse.
Description-nl.utf-8: Dit kan via een antwoordbestand voorgeconfigureerd worden om de standaard werkomgeving te vervangen.
Description-no.utf-8: Dette kan forhåndsutfulles for å overstyre forvalgt skrivebordsomgivelse.
Description-pt.utf-8: Pode ser feito preseed para ultrapassar o desktop predefinido.
Description-pt_br.utf-8: Isso pode ser pré configurado para sobrepor a área de trabalho padrão.
Description-ro.utf-8: Acest pas se poate preconfigura pentru a schimba interfața grafică implicită.
Description-ru.utf-8: Это можно автоматизировать для замены рабочего стола по умолчанию.
Description-tg.utf-8: Ин метавонад барои рӯиҳамнависии мизи кории пешфарз ба таври худкор татбиқ карда шавад.
Description-tr.utf-8: Ön tanımlı masaüstünden farklı bir seçim için aşağıdakiler kullanılabilir.
Type: multiselect

Name: tasksel/first
Choices: ${CHOICES}
Choices-c: ${CHOICES_C}
Description: Choose software to install:
Description-ar.utf-8: اختيار البرامج التي ستثبّت:
Description-ast.utf-8: Escueye software a instalar:
Description-be.utf-8: Абярыце праграмы, якія трэба ўсталяваць:
Description-bg.utf-8: Изберете софтуер за инсталиране:
Description-bn.utf-8: ইনস্টল করার জন্য সফটওয়্যার বেছে নিন:
Description-bs.utf-8: Odaberite software za instalaciju:
Description-ca.utf-8: Seleccioneu el programari a instal·lar:
Description-cs.utf-8: Zvolte programy k instalaci:
Description-cy.utf-8: Dewis meddalwedd i'w sefydlu:
Description-da.utf-8: Vælg programmer at installere:
Description-de.utf-8: Welche Software soll installiert werden?
Description-dz.utf-8: གཞི་བཙུགས་འབད་ནི་ལུ་ མཉན་ཆས་གདམ།
Description-el.utf-8: Επιλογή του λογισμικού προς εγκατάσταση:
Description-eo.utf-8: Elektu instalotajn programojn:
Description-es.utf-8: Elegir los programas a instalar:
Description-et.utf-8: Vali paigaldatav tarkvara:
Description-eu.utf-8: Instalatu nahi duzun softwarea aukeratu:
Description-fa.utf-8: نرم‌افزار های مورد نیاز برای نصب را انتخاب کنید:
Description-fi.utf-8: Valitse asennettavat ohjelmat:
Description-fr.utf-8: Logiciels à installer :
Description-ga.utf-8: Roghnaigh bogearraí le suiteáil:
Description-gl.utf-8: Escolla o software que quere instalar:
Description-gu.utf-8: સ્થાપન કરવા માટે સોફ્ટવેર પસંદ કરો:
Description-he.utf-8: בחר תוכנה להתקנה:
Description-hi.utf-8: संस्थापित करने के लिए सॉफ्टवेयर चुनें:
Description-hr.utf-8: Odaberite programe za instalaciju:
Description-hu.utf-8: Telepíthető szoftverek:
Description-id.utf-8: Pilih perangkat lunak yang ingin diinstal:
Description-is.utf-8: Veldu hugbúnað til uppsetningar:
Description-it.utf-8: Scegliere il software da installare:
Description-ja.utf-8: インストールするソフトウェアの選択:
Description-ka.utf-8: ამოირჩიეთ დასაყენებელი პროგრამები:
Description-kk.utf-8: Орнатылатын БҚ таңдау:
Description-km.utf-8: ជ្រើស​កម្មវិធី​​​ត្រូវ​ដំឡើង ៖
Description-kn.utf-8: ಅನುಸ್ಥಾಪಿಸಲು ತಂತ್ರಾಂಶ ಆಯ್ಕೆ ಮಾಡಿ
Description-ko.utf-8: 설치할 소프트웨어 선택:
Description-ku.utf-8: Nivîsbariya were sazkirin hilbijêre:
Description-lt.utf-8: Pasirinkite įdiegtinas programas:
Description-lv.utf-8: Izvēlieties instalējamo programmatūru:
Description-mg.utf-8: Fidio ny rindrankajy izay hapetraka :
Description-mk.utf-8: Одбери софтвер кој ќе се инсталира:
Description-ml.utf-8: ഇന്‍സ്റ്റാള്‍ ചെയ്യേണ്ട സോഫ്റ്റ്‌വെയര്‍ തെരഞ്ഞെടുക്കുക:
Description-mr.utf-8: स्थापनेसाठी सॉफ्टवेअर निवडा:
Description-nb.utf-8: Velg hvilke programmer du vil installere:
Description-ne.utf-8: स्थापना गर्न सफ्टवेयर रोज्नुहोस्:
Description-nl.utf-8: Welke software wilt u installeren?
Description-nn.utf-8: Vel programvare som skal installerast:
Description-no.utf-8: Velg hvilke programmer du vil installere:
Description-pa.utf-8: ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਸਾਫਟਵੇਅਰ ਚੋਣ:
Description-pl.utf-8: Wybierz oprogramowanie do instalacji:
Description-pt.utf-8: Escolha o software a instalar:
Description-pt_br.utf-8: Escolha o software a ser instalado:
Description-ro.utf-8: Alegeți programele de instalat:
Description-ru.utf-8: Выберите устанавливаемое программное обеспечение:
Description-si.utf-8: ස්ථාපනයට මෘදුකාංගය තෝරන්න:
Description-sk.utf-8: Zvoľte programy, ktoré sa nainštalujú:
Description-sl.utf-8: Izberite programsko opremo, ki jo želite namestiti:
Description-sq.utf-8: Zgjidh software për t'u instaluar:
Description-sr.utf-8: Изаберите софтвер за инсталирање:
Description-sr@latin.utf-8: Izaberite softver za instaliranje:
Description-sv.utf-8: Välj programvara att installera:
Description-ta.utf-8: நிறுவ வேண்டிய மென்பொருளை தேர்வு செய்க:
Description-te.utf-8: ప్రతిష్టాపించుటకు సాఫ్ట్ వేర్ (software) ఎన్నుకోండి:
Description-tg.utf-8: Интихоби нармафзор барои насб:
Description-th.utf-8: เลือกซอฟต์แวร์ที่จะติดตั้ง:
Description-tl.utf-8: Pumili ng software na iluluklok:
Description-tr.utf-8: Kurulacak yazılımları seçin:
Description-ug.utf-8: ئورنىتىدىغان يۇمشاق دېتالنى تاللاڭ:
Description-uk.utf-8: Виберіть програмне забезпечення для встановлення:
Description-vi.utf-8: Chọn phần mềm cần cài đặt:
Description-wo.utf-8: Tannal prograam yi ngay istale:
Description-zh_cn.utf-8: 请选择要安装的软件：
Description-zh_tw.utf-8: 選擇所要安裝的軟體：
Extended_description: At the moment, only the core of the system is installed. To tune the system to your needs, you can choose to install one or more of the following predefined collections of software.
Extended_description-ar.utf-8: لا شيء مثبّت حالياً سوى صميم النظام. لضبط التثبيت لاحتياجاتك يمكنك تثبيتواحد أو أكثر من مجموعات البرامج المعرّفة مسبقاً التّالية.
Extended_description-ast.utf-8: Pel momentu, namái el núcleu del sistema ta instaláu. P'axustar el sistema a les sos necesidaes, pue escoyer instalar una o más de les siguientes colleiciones de software predefiníes.
Extended_description-be.utf-8: Зараз усталявана толькі ядро сістэмы. Каб удасканаліць сістэму адпаведна Вашым патрэбам, можна абраць адзін ці некалькі прадвызначаных набораў праграм.
Extended_description-bg.utf-8: В момента са инсталирани само жизненоважните програми на Дебиан. За да настроите системата към Вашите нужди, можете да изберете измежду един или повече от следните предварително зададени набори от софтуер.
Extended_description-bn.utf-8: এই মুহূর্তে, ডেবিয়ানের মূল অংশটুকুই কেবল ইনস্টল করা আছে। সিস্টেমকে আপনার পছন্দমত সাজানোর জন্য পূর্বনির্ধারিত এই সফটওয়্যার সংগ্রহগুলো থেকে আপনি এক বা একাধিক সংগ্রহ ইনস্টল করতে পারেন।
Extended_description-bs.utf-8: Do sada je instaliran samo najosnovniji sistem. Da biste prilagodili sistem vašim potrebama, možete odabrati instalaciju jedne ili više sljedećih predefinisanih kolekcija software-a.
Extended_description-ca.utf-8: Ara mateix, només s'ha instal·lat la base del sistema. Per a adequar la instal·lació a les vostres necessitats, podeu seleccionar instal·lar una o més de les següents col·leccions de programari.
Extended_description-cs.utf-8: Momentálně je nainstalován pouze nutný základ operačního systému. Abyste si vyladili systém dle svých potřeb, můžete nyní nainstalovat jednu nebo více úloh. Úlohy jsou připravené kolekce souvisejícího softwaru.
Extended_description-cy.utf-8: Ar hyn o bryd, dim ond craidd y system sydd wedi ei sefydlu. Er mwyn addasu'r system i'ch anghenion, gallwch ddewis sefydlu un neu fwy o'r casgliadau canlynol o feddalwedd.
Extended_description-da.utf-8: For øjeblikket er kun systemets kerne installeret. For at tilpasse systemet til dine behov, kan du vælge at installere en eller flere af følgende foruddefinerede programsamlinger.
Extended_description-de.utf-8: Momentan ist nur das Wichtigste des Systems installiert. Um das System an Ihre Bedürfnisse anzupassen, können Sie eine oder mehrere der folgenden vordefinierten Software-Sammlungen installieren.
Extended_description-dz.utf-8: ད་ལྟོའི་དུས་སྐབས་འདི་ནང་  ནང་སྙིང་ རྐྱངམ་ཅིག་གཞི་བཙུགས་འབད་ཡི། རིམས་ལུགས་འདི་ ཁྱོད་རའི་མཁོ་འདོད་དང་བསྟུན་  འོག་ལུ་འཁོད་མི་ སྔ་གོང་ངེས་འཛིན་འབད་དེ་་ཡོད་མི་ མཉན་ཆས་བསྡུ་གསོག་གཅིག་ ཡང་ན་དེ་བ་ལྷགཔ་དེ་ཚུ་ གདམ་སྟེ་ གཞི་བཙུགས་འབད་བཏུབ།
Extended_description-el.utf-8: Αυτή τη στιγμή  έχουν εγκατασταθεί μόνο τα βασικά πακέτα του Debian. Για να ολοκληρώσετε την εγκατάσταση σύμφωνα με τις ανάγκες σας, μπορείτε να επιλέξετε την εγκατάσταση μιας ή και περισσοτέρων από τις ακόλουθες προκαθορισμένες συλλογές λογισμικού.
Extended_description-eo.utf-8: Nuntempe, nur la baza sistemo estas instalita. Por agordi la sistemon al via bezono, vi povas instali iun aŭ plurajn sekvantajn antaŭelektitajn programarojn.
Extended_description-es.utf-8: De momento sólo está instalado el sistema básico. Puede escoger la instalación de las siguientes colecciones predefinidas de programas para adaptar más la instalación a sus necesidades.
Extended_description-et.utf-8: Hetkel on paigaldatud vaid Debiani tuumik. Et paigaldus oma vajadustele häälestada, võid valida mõned järgnevaist eeldefineeritud tarkvara kogumitest.
Extended_description-eu.utf-8: Momentu honetan, Sistema muina bakarrik duzu instalaturik. Instalakuntza zure beharretara egokitzeko, aurreaukeratutako pakete bilduma hauetako bat edo gehiago instalatu ditzakezu.
Extended_description-fa.utf-8: در حال حاضر تنها هسته‌ی اولیه‌ی دبیان نصب شده است. برای تنظیم سیستم نصب شده با آنچه میخواهید، شما میتوانید از مجموعه های مقابل یک یا چند مجموعه ازپیش تعریف شده را برای نصب انتخاب کنید.
Extended_description-fi.utf-8: Tällä hetkellä vain Debianin peruskokoonpano on asennettuna. Voit muokata asennusta tarpeittesi mukaan valitsemalla asennettavaksi yhden tai useamman seuraavista ennalta määritellyistä ohjelmakokoelmista.
Extended_description-fr.utf-8: Actuellement, seul le système de base est installé. Pour adapter l'installation à vos besoins, vous pouvez choisir d'installer un ou plusieurs ensembles prédéfinis de logiciels.
Extended_description-ga.utf-8: Níl ach an bunchóras suiteáilte faoi láthair.  Chun an córas a chur in oiriúint duitse féin, is féidir leat ceann amháin nó níos mó de na bailiúcháin réamhshainithe bhogearraí seo a shuiteáil.
Extended_description-gl.utf-8: Neste momento só está instalado o núcleo do sistema. Para axustar o sistema ás súas necesidades pode instalar unha ou varias das seguintes coleccións predefinidas de software.
Extended_description-gu.utf-8: આ પરિસ્થિતિમાં, ફક્ત સિસ્ટમનો મુખ્ય ભાગ જ સ્થાપિત થશે. તમારી જરૂરિયાત મુજબ સિસ્ટમને ગોઠવવા માટે, તમે નીચેનાં એક અથવા વધુ પહેલેથી નક્કી કરેલ સોફ્ટવેરનાં ભાગો સ્થાપિત કરી શકો છો.
Extended_description-he.utf-8: ברגע זה, רק הליבה של המערכת מותקנת. כדי לכוונן את המערכת לצרכים שלך, תוכל לבחור להתקין אחד או יותר מאוספי התוכנה שהוגדרו מראש.
Extended_description-hi.utf-8: इस समय तंत्र का केवल क्रोड़ ही संस्थापित है. सिस्टम को अपनी आवश्यकतानुसार बनाने के लिए आप निम्नलिखित पूर्व परिभाषित सॉफ्टवेयर संकलनों में से एक या अधिक को संस्थापित करने के लिए चुन सकते हैं.
Extended_description-hr.utf-8: Trenutno je instaliran samo osnovni sustav. Kako bi prilagodili instalaciju svojim potrebama, možete odabrati instalaciju sljedećih predodređenih skupina programa.
Extended_description-hu.utf-8: A Debian alaprendszer telepítés kész. Most jön az egyéni igényeknek megfelelő kialakítás. Ez az alábbi nagy szoftver összeállítások telepítésével is elkezdhető.
Extended_description-id.utf-8: Saat ini hanya inti dari sistem yang terpasang. Untuk menyesuaikannya dengan kebutuhan Anda, Anda dapat memilih satu atau lebih kumpulan perangkat lunak yang telah didefinisikan berikut ini.
Extended_description-is.utf-8: Í augnablikinu er einungis búið að setja upp grunnbúnað kerfisins. Til að útbúa kerfið þannig að það henti þörfum þínum, geturðu valið uppsetningu á einum eða fleiri flokkum af samanvöldum hugbúnaði.
Extended_description-it.utf-8: Al momento, solo la parte principale di Debian è installata. Per adattare l'installazione alle proprie esigenze, è possibile installare una o più delle seguenti collezioni predefinite di software.
Extended_description-ja.utf-8: 現時点では、システムのコアのみがインストールされている状態です。あなたのニーズに合うようにシステムを調整するために、以下の定義済みソフトウェアコレクションから 1 つ以上をインストールできます。
Extended_description-ka.utf-8: ამჟამად გამიზნულია მხოლოდ ძირითადი სისტემის ინსტალაცია. სისტემის თქვენს საჭიროებებზე მოსარგებად, შეგიძლიათ დააყენოთ პროგრამული უზრუნველყოფის ერთი ან მეტი წინასწარ განსაზღვრული ნაკრები.
Extended_description-kk.utf-8: Қазір сізде жүйе ядросы ғана орнатылған. Жүйеңізді өзіңіз қалайтындай баптау үшін, сіз осында көрсетілген бір немесе бірнеше бағдарламалық қамтама жинақтарын орната аласыз.
Extended_description-km.utf-8: នៅ​ពេលនេះ មាន​តែ​ផ្នែក​សំខាន់​របស់​ប្រព័ន្ធ​ត្រូវ​បាន​ដំឡើង ។ ដើម្បី​ត្រឡប់​ប្រព័ន្ធ​តាម​តម្រូវការ​របស់​អ្នក អ្នក​អាច​ជ្រើស​ដើម្បី​ដំឡើង​ការ​ប្រមូលផ្ដុំ​កម្មវិធី​ដែល​បាន​កំណត់​ជា​មុន​ដូច​ខាង​ក្រោម ។are.
Extended_description-kn.utf-8: ಈಗ ವ್ಯವಸ್ಥೆಯ ತಿರುಳುಭಾಗವನ್ನು ಮಾತ್ರ ಅನುಸ್ಥಾಪಿಸಲಾಗಿದೆ. ನಿಮ್ಮ ಅಗತ್ಯಗಳಿಗನುಸಾರ ವ್ಯವಸ್ಥೆಯನ್ನು ಬದಲಿಸಲು ಈ ಕೆಳಗಿನ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಪೂರ್ವನಿರ್ಧಾರಿತ ತಂತ್ರಾಂಶ-ಸಂಗ್ರಹಗಳನ್ನು ಆಯ್ದುಕೊಳ್ಳಬಹುದು.
Extended_description-ko.utf-8: 현재 시스템의 핵심적인 부분만 설치되어 있습니다. 필요에 맞게 시스템을 조정하려면, 다음 소프트웨어 모음 중 설치하고자 하는 소프트웨어 모음을 선택하십시오.
Extended_description-ku.utf-8: Niha, tenê bingehê pergalê hatiye sazkirin. Niha dikarî pergalê li gorî pêwendiyên xwe mîheng bikî. Ji bo wê yek an çend ji koleksiyonên nivîsbariyê hilbijêre.
Extended_description-lt.utf-8: Kol kas įdiegta tik pagrindinė sistemos dalis. Kad sistema labiau atitiktų Jūsų poreikius, galima parinkti ir įdiegti norimus žemiau apibrėžtus programinės įrangos rinkinius.
Extended_description-lv.utf-8: Pašreizējā brīdī instalēta ir tikai bāzes sistēma. Lai viegli pielāgotu sistēmu jūsu vajadzībām, var instalēt vienu vai vairākas programmu grupas no sekojošā saraksta.
Extended_description-mg.utf-8: Hatramin'izao dia mbola ny fototry ny system ihany no mipetraka ao anatin'ny milinao. Mba hanamboarana azy hifanaraka amin'ny izay ilainao azy dia afaka mametraka ny sasantsasany amin'ireto fikanbanan-drindrakajy ireto ianao.
Extended_description-mk.utf-8: Во моментов е инсталиран само основниот систем. За да ја прилагодите инсталацијата по Вашите потреби, можете да одберете да се инсталираат една или повеќе од следните стандардни колекции на софтвер.
Extended_description-ml.utf-8: ഇപ്പോള്‍ സിസ്റ്റത്തിന്റെ കേന്ദ്ര ഭാഗങ്ങള്‍ മാത്രമേ ഇന്‍സ്റ്റാള്‍ ചെയ്തിട്ടുള്ളൂ. നിങ്ങളുടെ ആവശ്യത്തിനായി സിസ്റ്റം മാറ്റിയെടുക്കുന്നതിനു് നിങ്ങള്‍ക്കു് ഒന്നോ അതിലധികമോ നേരത്തെ തയ്യാറാക്കിയ സോഫ്റ്റ്‌വെയര്‍ ശേഖരങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യാന്‍ തെരഞ്ഞെടുക്കാം.
Extended_description-mr.utf-8: आतापर्यन्त, फक्त सिस्टीमचा गाभा अधिष्ठापित केलेला आहे. तुमच्या गरजांनुसार प्रणाली ट्युन करावयाची असल्यास, तुम्ही खाली दिलेल्या पूर्वनिर्धारित सॉफ्टवेअर संचांपैकी एक किंवा एकापेक्षा अधिकांची अधिष्ठापनेकरिता निवड करु शकता.
Extended_description-nb.utf-8: Nå er det bare grunnsystemet som er installert. For å tilpasse systemet til dine behov, så kan du velge å installere en eller flere av de følgende forhåndsvalgte gruppene av programvare.
Extended_description-ne.utf-8: त्यो समयमा, डेवियनको कोर मात्र स्थापना भयो । तपाईँको आवश्यकता अनुसार प्रणालीलाई मिलान गर्न, तपाईँले निम्न पूर्व परिभाषित सफ्टवेयरको संकलनबाट एउटा वा धेरै स्थापना गर्न रोज्न सक्नुहुन्छ ।
Extended_description-nl.utf-8: Momenteel is enkel het kernsysteem geïnstalleerd. Om de installatie aan uw behoeften aan te passen kunt u een of meer van de voorgedefinieerde software-collecties installeren.
Extended_description-nn.utf-8: På dette punktet er det berre hovudkomponentane i systemet som er installert. For å tilpasse systemet til det du treng, kan du installere ein eller fleire av desse førehandsdefinerte samlingar med programvare.
Extended_description-no.utf-8: Nå er det bare grunnsystemet som er installert. For å tilpasse systemet til dine behov, så kan du velge å installere en eller flere av de følgende forhåndsvalgte gruppene av programvare.
Extended_description-pa.utf-8: ਇਸ ਮੌਕੇ ਉੱਤੇ ਸਿਰਫ਼ ਮੁੱਢਲਾ ਡੇਬੀਅਨ ਹੀ ਇੰਸਟਾਲ ਹੈ। ਸਿਸਟਮ ਨੂੰ ਆਪਣੀ ਲੋੜ ਮੁਤਾਬਕ ਤਿਆਰ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਹੇਠ ਦਿੱਤੇ ਸਾਫਟਵੇਅਰ ਭੰਡਾਰ ਵਿੱਚ ਇੱਕ ਜਾਂ ਵੱਧ ਦੀ ਚੋਣ ਕਰ ਸਕਦੇ ਹੋ।
Extended_description-pl.utf-8: W tym momencie tylko podstawowy system jest zainstalowany. By dostosować instalację do Twoich potrzeb możesz wybrać instalację jednego lub więcej z poniższych predefiniowanych zestawów oprogramowania.
Extended_description-pt.utf-8: Neste momento, apenas está instalado o coração do sistema. Para afinar o sistema de acordo com as suas necessidades, pode escolher instalar uma ou mais das seguintes colecções de software pré-definidas.
Extended_description-pt_br.utf-8: No momento, somente o básico do sistema está instalado. Para refinar seu sistema e deixá-lo de acordo com suas necessidades, você pode optar por instalar uma ou mais das coleções de software pré-definidas a seguir.
Extended_description-ro.utf-8: Momentan, numai partea esențială a sistemului este instalată. Pentru a configura sistemul pentru propriile necesități, puteți alege să instalați una sau mai multe din următoarele colecții predefinite de programe.
Extended_description-ru.utf-8: В данный момент, установлена только основа системы. Исходя из ваших потребностей, вы можете выбрать один и более из уже готовых наборов программного обеспечения.
Extended_description-si.utf-8: මේ අවස්ථාවේ පද්ධතියේ මූලය පමණක් ස්ථාපනය වේ. ඔබේ අවශ්‍යතා සඳහා පද්ධතිය සීරුමාරු කිරීමට, ඔබට පහත පෙරනිවේශිත මෘදුකාංග එකතු වලින් එකක් හෝ කිහිපයක් ස්ථාපනය කල හැක.
Extended_description-sk.utf-8: Momentálne je nainštalovaný iba základ systému. Aby ste si vyladili systém podľa svojich potrieb, môžete teraz nainštalovať jednu alebo viac pripravených kolekcií súvisiaceho softvéru.
Extended_description-sl.utf-8: Trenutno je nameščeno samo jedro sistema. Sistem si lahko prilagodite, tako da namestite eno ali več vnaprej pripravljenih zbirk programske opreme.
Extended_description-sq.utf-8: Momentalisht, vetëm baza e sistemit është instaluar. Për të sintonizuar sistemin sipas nevojave të tua, mund të zgjidhësh të instalosh një koleksion të parapërcaktuar programesh nga lista e mëposhtme.
Extended_description-sr.utf-8: Тренутно је само срж система инсталиран. Можете изабрати једну или више предефинисаних колекција софтвера за инсталирање.
Extended_description-sr@latin.utf-8: Trenutno je samo srž sistema instaliran. Možete izabrati jednu ili više predefinisanih kolekcija softvera za instaliranje.
Extended_description-sv.utf-8: För närvarande är endast grunden av systemet installerat. För att anpassa systemet efter dina behov kan du välja att installera en eller flera av följande fördefinierade programvarusamlingar.
Extended_description-ta.utf-8: தற்போது இயங்குதளத்தின் அத்தியாவசிய பாகங்கள் மட்டுமே நிறுவப்பட்டுள்ளன. இதை உங்கள் விருப்பத்திற்கேற்றவாறு சீர்படுத்த நீங்கள் பின்வரும் முன்வரையறுக்கப்பட்ட மென்பொருள் திரட்டல்களில் ஒன்றோ அல்லது ஒன்றுக்கு மேற்பட்டவற்றையோ நிறுவ தேர்வு செய்யலாம்.
Extended_description-te.utf-8: ప్రస్తుతం వ్యవస్థ (సిస్టం [system]) పునాది (కోర్ [core]) మాత్రం ప్రతిష్టింపబడినది. వ్యవస్థను మీకు అనుగుణంగా మార్చుకొనుటకు మీరు ఈ క్రింది సాఫ్ట్ వేర్ (software) ప్యాకేజీల (packages) సంగ్రహము (collection) లో ఒకటి లేదా మరిన్ని ఎన్నుకొని ప్రతిష్టాపించుకొవచ్చు.
Extended_description-tg.utf-8: Дар айни ҳол, танҳо низоми асосӣ насб карда шудааст. Барои мувофиқат кардани низом ба ниёзҳои худ, шумо метавонед як ё якчанд маҷмӯаи нармафзори пешмуайяншударо интихоб карда, насб намоед.
Extended_description-th.utf-8: ขณะนี้ โปรแกรมได้ติดตั้งเฉพาะแกนของระบบเท่านั้น เพื่อที่จะปรับแต่งระบบให้เข้ากับความต้องการของคุณ คุณสามารถเลือกติดตั้งชุดซอฟต์แวร์ที่ได้รวบรวมเตรียมไว้ดังต่อไปนี้ตั้งแต่หนึ่งชุดขึ้นไป
Extended_description-tl.utf-8: Sa ngayon, ang pinaka-payak na sistema ng Debian ay nakaluklok. Upang maangkop ang pagkaluklok sa inyong mga pangangailangan, maaari kayong pumili na magluklok ng isa o ilan sa mga sumusunod na mga koleksyon ng software.
Extended_description-tr.utf-8: Şu anda sisteminizin yalnızca temel kısmı kurulmuştur. Sistemizi amacınıza daha uygun duruma getirmek için, aşağıda size önerilen yazılımlardan bir ya da daha fazlasını seçip, kurabilirsiniz.
Extended_description-ug.utf-8: نۆۋەتتە سىستېمىنىڭ يادرولۇق بۆلەكلىرىلا ئورنىتىلدى. سىستېمىنى تەڭشەپ تەلىپىڭىزگە لايىقلاشتۇرۇشتا، تۆۋەندىكى بىر ياكى كۆپ ئالدىن بەلگىلەنگەن يۇمشاق دېتاللار توپلىمىنى تاللاپ ئورناتسىڭىز بولىدۇ.
Extended_description-uk.utf-8: На даний момент, встановлена тільки основна частина системи. Для того, щоб підлаштувати інсталяцію під ваші потреби, ви можете вибрати встановлення одного або кількох наступних наборів програмного забезпечення.
Extended_description-vi.utf-8: Hiện thời chỉ lõi của hệ thống đã được cài đặt. Để điều chỉnh hệ thống thích hợp với nhu cầu của mình, bạn có khả năng chọn cài đặt một hoặc một vài những nhóm chương trình xác định sẵn sau.
Extended_description-wo.utf-8: Fimune nii xulu sistem bi rekk lañu istaleegun. Ngir nga dëppale sistem bi ak say soxla, man ngaa tann yinga bëgg ci  prograam yii ñu dajale ba noppi defleen ay gurup.
Extended_description-zh_cn.utf-8: 目前您仅安装了系统的核心部分。要想调整系统以使之符合您的需求，可以选择安装以下一个或多个预定义的软件集。
Extended_description-zh_tw.utf-8: 目前為止所安裝的只有系統的核心。您可以在下列預先準備的組合套件中再選擇一些軟體來進行安裝，以使得系統能更符合您的需求。
Type: multiselect

Name: tasksel/tasks
Choices: ${CHOICES}
Choices-c: ${CHOICES_C}
Description: Choose software to install:
Description-ar.utf-8: اختيار البرامج التي ستثبّت:
Description-ast.utf-8: Escueye software a instalar:
Description-be.utf-8: Абярыце праграмы, якія трэба ўсталяваць:
Description-bg.utf-8: Изберете софтуер за инсталиране:
Description-bn.utf-8: ইনস্টল করার জন্য সফটওয়্যার বেছে নিন:
Description-bs.utf-8: Odaberite software za instalaciju:
Description-ca.utf-8: Seleccioneu el programari a instal·lar:
Description-cs.utf-8: Zvolte programy k instalaci:
Description-cy.utf-8: Dewis meddalwedd i'w sefydlu:
Description-da.utf-8: Vælg programmer at installere:
Description-de.utf-8: Welche Software soll installiert werden?
Description-dz.utf-8: གཞི་བཙུགས་འབད་ནི་ལུ་ མཉན་ཆས་གདམ།
Description-el.utf-8: Επιλογή του λογισμικού προς εγκατάσταση:
Description-eo.utf-8: Elektu instalotajn programojn:
Description-es.utf-8: Elegir los programas a instalar:
Description-et.utf-8: Vali paigaldatav tarkvara:
Description-eu.utf-8: Instalatu nahi duzun softwarea aukeratu:
Description-fa.utf-8: نرم‌افزار های مورد نیاز برای نصب را انتخاب کنید:
Description-fi.utf-8: Valitse asennettavat ohjelmat:
Description-fr.utf-8: Logiciels à installer :
Description-ga.utf-8: Roghnaigh bogearraí le suiteáil:
Description-gl.utf-8: Escolla o software que quere instalar:
Description-gu.utf-8: સ્થાપન કરવા માટે સોફ્ટવેર પસંદ કરો:
Description-he.utf-8: בחר תוכנה להתקנה:
Description-hi.utf-8: संस्थापित करने के लिए सॉफ्टवेयर चुनें:
Description-hr.utf-8: Odaberite programe za instalaciju:
Description-hu.utf-8: Telepíthető szoftverek:
Description-id.utf-8: Pilih perangkat lunak yang ingin diinstal:
Description-is.utf-8: Veldu hugbúnað til uppsetningar:
Description-it.utf-8: Scegliere il software da installare:
Description-ja.utf-8: インストールするソフトウェアの選択:
Description-ka.utf-8: ამოირჩიეთ დასაყენებელი პროგრამები:
Description-kk.utf-8: Орнатылатын БҚ таңдау:
Description-km.utf-8: ជ្រើស​កម្មវិធី​​​ត្រូវ​ដំឡើង ៖
Description-kn.utf-8: ಅನುಸ್ಥಾಪಿಸಲು ತಂತ್ರಾಂಶ ಆಯ್ಕೆ ಮಾಡಿ
Description-ko.utf-8: 설치할 소프트웨어 선택:
Description-ku.utf-8: Nivîsbariya were sazkirin hilbijêre:
Description-lt.utf-8: Pasirinkite įdiegtinas programas:
Description-lv.utf-8: Izvēlieties instalējamo programmatūru:
Description-mg.utf-8: Fidio ny rindrankajy izay hapetraka :
Description-mk.utf-8: Одбери софтвер кој ќе се инсталира:
Description-ml.utf-8: ഇന്‍സ്റ്റാള്‍ ചെയ്യേണ്ട സോഫ്റ്റ്‌വെയര്‍ തെരഞ്ഞെടുക്കുക:
Description-mr.utf-8: स्थापनेसाठी सॉफ्टवेअर निवडा:
Description-nb.utf-8: Velg hvilke programmer du vil installere:
Description-ne.utf-8: स्थापना गर्न सफ्टवेयर रोज्नुहोस्:
Description-nl.utf-8: Welke software wilt u installeren?
Description-nn.utf-8: Vel programvare som skal installerast:
Description-no.utf-8: Velg hvilke programmer du vil installere:
Description-pa.utf-8: ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਸਾਫਟਵੇਅਰ ਚੋਣ:
Description-pl.utf-8: Wybierz oprogramowanie do instalacji:
Description-pt.utf-8: Escolha o software a instalar:
Description-pt_br.utf-8: Escolha o software a ser instalado:
Description-ro.utf-8: Alegeți programele de instalat:
Description-ru.utf-8: Выберите устанавливаемое программное обеспечение:
Description-si.utf-8: ස්ථාපනයට මෘදුකාංගය තෝරන්න:
Description-sk.utf-8: Zvoľte programy, ktoré sa nainštalujú:
Description-sl.utf-8: Izberite programsko opremo, ki jo želite namestiti:
Description-sq.utf-8: Zgjidh software për t'u instaluar:
Description-sr.utf-8: Изаберите софтвер за инсталирање:
Description-sr@latin.utf-8: Izaberite softver za instaliranje:
Description-sv.utf-8: Välj programvara att installera:
Description-ta.utf-8: நிறுவ வேண்டிய மென்பொருளை தேர்வு செய்க:
Description-te.utf-8: ప్రతిష్టాపించుటకు సాఫ్ట్ వేర్ (software) ఎన్నుకోండి:
Description-tg.utf-8: Интихоби нармафзор барои насб:
Description-th.utf-8: เลือกซอฟต์แวร์ที่จะติดตั้ง:
Description-tl.utf-8: Pumili ng software na iluluklok:
Description-tr.utf-8: Kurulacak yazılımları seçin:
Description-ug.utf-8: ئورنىتىدىغان يۇمشاق دېتالنى تاللاڭ:
Description-uk.utf-8: Виберіть програмне забезпечення для встановлення:
Description-vi.utf-8: Chọn phần mềm cần cài đặt:
Description-wo.utf-8: Tannal prograam yi ngay istale:
Description-zh_cn.utf-8: 请选择要安装的软件：
Description-zh_tw.utf-8: 選擇所要安裝的軟體：
Extended_description: You can choose to install one or more of the following predefined collections of software.
Extended_description-ar.utf-8: يمكنك تثبيت واحد أو أكثر من مجموعات البرامج المعرّفة مسبقاً التّالية.
Extended_description-ast.utf-8: Pues escoyer instalar una o más de les siguiestes colleiciones de software predefiníes.
Extended_description-be.utf-8: Вы можаце ўсталяваць адзін ці некалькі наступных набораў праграм.
Extended_description-bg.utf-8: Можете да изберете един или повече от предварително зададените набори от софтуер.
Extended_description-bn.utf-8: আপনি এই পূর্বনির্ধারিত সফটওয়্যার সংগ্রহগুলো থেকে এক বা একাধিক সংগ্রহ ইনস্টল করতে পারেন।
Extended_description-bs.utf-8: Možete odabrati jednu ili više sljedećih predefinisanih kolekcija software-a.
Extended_description-ca.utf-8: Podeu seleccionar instal·lar una o més de les següents col·leccions de programari.
Extended_description-cs.utf-8: Nyní můžete nainstalovat jednu nebo více předpřipravených úloh.
Extended_description-cy.utf-8: Gallwch ddewis sefydlu un neu fwy o'r casgliadau canlynol o feddalwedd.
Extended_description-da.utf-8: Du kan vælge at installere en eller flere af følgende foruddefinerede programsamlinger.
Extended_description-de.utf-8: Sie können eine oder mehrere der folgenden vordefinierten Software-Sammlungen zur Installation auswählen.
Extended_description-dz.utf-8: ཁྱོད་ཀྱི་ འོག་གི་སྔ་གོང་ངོས་འཛིན་འབད་མི་ མཉན་ཆས་བསྡུ་གསོག་ གཅིག་ཡང་ན་ དེ་ལས་ལྷགཔ་གདམ་སྟེ་གཞི་བཙུགས་འབད་བཏུབ།
Extended_description-el.utf-8: Μπορείτε να εγκαταστήσετε μία ή και περισσότερες από τις ακόλουθες προκαθορισμένες συλλογές λογισμικού.
Extended_description-eo.utf-8: Vi povas instali unu aŭ plurajn el la sekvaj antaŭelektitaj programaroj.
Extended_description-es.utf-8: Puede elegir instalar una o más de las siguientes colecciones de programas predefinidas.
Extended_description-et.utf-8: Võid paigaldada mõned järgnevaist eeldefineeritud tarkvara kogumitest.
Extended_description-eu.utf-8: Aurrez definitutako software bilduma bat edo gehiago instalatzea aukera dezakezu.
Extended_description-fa.utf-8: شما میتوانید از مجموعه های مقابل یک یا چند مجموعه ازپیش تعریف شده را برای نصب انتخاب کنید.
Extended_description-fi.utf-8: Voit valita asennettavaksi yhden tai useamman seuraavista ennalta määritellyistä ohjelmakokoelmista.
Extended_description-fr.utf-8: Vous pouvez choisir d'installer un ou plusieurs des ensembles suivants de logiciels.
Extended_description-ga.utf-8: Is féidir leat ceann amháin nó níos mó de na bailiúcháin réamhshainithe bhogearraí seo a shuiteáil.
Extended_description-gl.utf-8: Pode instalar unha ou máis de entre as seguintes coleccións de software:
Extended_description-gu.utf-8: તમે નીચેનાં એક અથવા વધુ પહેલેથી નક્કી કરેલ સોફ્ટવેરનાં ભાગો સ્થાપિત કરી શકો છો.
Extended_description-he.utf-8: תוכל לבחור להתקין אחד או יותר מאוספי התוכנה שהוגדרו מראש.
Extended_description-hi.utf-8: आप पूर्व परिभाषित निम्नलिखित सॉफ्टवेयर संकलनों में से एक या अधिक को संस्थापित करने के लिए चुन सकते हैं.
Extended_description-hr.utf-8: Možete odabrati jednu ili više sljedećih predodređenih skupina programa.
Extended_description-hu.utf-8: A következő, előre összeválogatott szoftver gyűjtemények telepíthetők.
Extended_description-id.utf-8: Anda dapat memilih untuk memasang satu atau lebih kelompok perangkat lunak yang telah didefinisikan berikut ini.
Extended_description-is.utf-8: Þú getur valið að setja upp einn eða fleiri flokka af samanvöldum hugbúnaði.
Extended_description-it.utf-8: È possibile installare una o più delle seguenti collezioni predefinite di software.
Extended_description-ja.utf-8: 以下の定義済みソフトウェアコレクションからインストールするものを 1 つ以上選択できます。
Extended_description-ka.utf-8: შეგიძლიათ დააყენოთ პროგრამული უზრუნველყოფის ერთი ან მეტი წინასწარ განსაზღვრული ნაკრები.
Extended_description-kk.utf-8: Сіз осында көрсетілген бір немесе бірнеше бағдарламалық қамтама жинақтарын орната аласыз.
Extended_description-km.utf-8: អ្នក​អាច​ជ្រើស​ដើម្បី​ដំឡើង​កម្មវិធី​មួយ ឬ​ច្រើន​ក្នុង​ចំណោម​កម្មវិធី​ដែល​បាន​ប្រមូលផ្ដុំ​ជាមុន​ដូច​​​ខាង​ក្រោម ៖
Extended_description-kn.utf-8: ಈ ಕೆಳಗಿನ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಪೂರ್ವನಿರ್ಧಾರಿತ ತಂತ್ರಾಂಶ-ಸಂಗ್ರಹಗಳನ್ನು ಆಯ್ದುಕೊಳ್ಳಬಹುದು.
Extended_description-ko.utf-8: 다음 미리 정의해 둔 소프트웨어 모음 중 설치하고자 하는 소프트웨어 모음을 선택하십시오.
Extended_description-ku.utf-8: Dikarî yek an çend ji koleksiyonên nivîsbariyê hilbijêrî.
Extended_description-lt.utf-8: Jūs galite pasirinkti vieną ar kelis iš žemiau apibrėžtų programinės įrangos rinkinių.
Extended_description-lv.utf-8: Jūs varat instalēt vienu vai vairākas programmu grupas no sekojošā saraksta.
Extended_description-mg.utf-8: Afaka mametraka ny iray na maromaro amin'ireto fikambanan-drindrankajy ireto ianao.
Extended_description-mk.utf-8: Можете да одберете да инсталирате еден или повеќе од следните стандардниколекции на софтвер.
Extended_description-ml.utf-8: നിങ്ങള്‍ക്കു് ഒന്നോ അതിലധികമോ നേരത്തെ തയ്യാറാക്കിയ സോഫ്റ്റ്‌വെയര്‍ ശേഖരങ്ങള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യാന്‍ തെരഞ്ഞെടുക്കാം.
Extended_description-mr.utf-8: तुम्ही खाली दिलेल्या पूर्वनिर्धारित सॉफ्टवेअर संचांपैकी एक किंवा एकापेक्षा अधिकांची अधिष्ठापनेकरिता निवड करु शकता.
Extended_description-nb.utf-8: Du kan velge å installere en eller flere av de forhåndsvalgte samlingene med programvare.
Extended_description-ne.utf-8: तपाईँले निम्न पूर्व परिभाषित सफ्टवेयरको संकलनबाट एउटा वा धेरै स्थापना गर्न रोज्न सक्नुहुन्छ ।
Extended_description-nl.utf-8: U heeft de mogelijkheid om een of meer van de volgende voorgedefinieerde softwarecollecties te gebruiken.
Extended_description-nn.utf-8: Du kan velje å installere ein eller fleire av desse førehandsdefinerte samlingane med programvare.
Extended_description-no.utf-8: Du kan velge å installere en eller flere av de forhåndsvalgte samlingene med programvare.
Extended_description-pa.utf-8: ਤੁਸੀਂ ਹੇਠਾਂ ਦੇ ਸਾਫਟਵੇਅਰ ਭੰਡਾਰ ਵਿੱਚੋਂ ਇੱਕ ਜਾਂ ਵੱਧ ਭਾਗਾਂ ਨੂੰ ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਚੋਣ ਕਰ ਸਕਦੇ ਹੋ।
Extended_description-pl.utf-8: Możesz wybrać jeden lub więcej z poniższych predefiniowanych zestawów oprogramowania.
Extended_description-pt.utf-8: Pode escolher instalar uma ou mais das seguintes colecções de software pré-definidas.
Extended_description-pt_br.utf-8: Você pode optar por instalar uma ou mais das coleções de software pré-definidas a seguir.
Extended_description-ro.utf-8: Puteți alege să instalați una sau mai multe din următoarele colecții predefinite de programe.
Extended_description-ru.utf-8: Вы можете выбрать для установки один и более заранее подобранный набор программного обеспечения.
Extended_description-si.utf-8: ඔබට පහත සඳහන් පෙරනිවේශිත මෘදුකාංග එකතු එකක් හෝ කිහිපයක් ස්ථාපනයට තෝරාගත හැක.
Extended_description-sk.utf-8: Teraz môžete nainštalovať jednu alebo viac pripravených kolekcií softvéru.
Extended_description-sl.utf-8: Izberete lahko eno ali več naslednjih zbirk vnaprej pripravljene programske opreme.
Extended_description-sq.utf-8: Mund të zgjedhësh të instalosh një koleksion software-i të parapërcaktuar nga lista e mëtejshme.
Extended_description-sr.utf-8: Можете изабрати једну или више предефинисаних колекција софтвера за инсталирање.
Extended_description-sr@latin.utf-8: Možete izabrati jednu ili više predefinisanih kolekcija softvera za instaliranje.
Extended_description-sv.utf-8: Du kan välja att installera en eller flera av följande fördefinierade programvarusamlingar.
Extended_description-ta.utf-8: நீங்கள் பின்வரும் முன்வரையறுக்கப்பட்ட மென்பொருள் திரட்டல்களில் ஒன்றோ அல்லது ஒன்றுக்கு மேற்பட்டவற்றையோ நிறுவ தேர்வு செய்யலாம்.
Extended_description-te.utf-8: ప్రతిష్టాపనకు మీరు ఈ క్రింది సాఫ్ట్ వేర్ (software) ప్యాకేజీల సంగ్రహము (కలెక్షన్ [collection]) లో ఒకటి లేదా మరిన్ని ఎన్నుకోవచ్చు
Extended_description-tg.utf-8: Шумо метавонед як ё якчанд маҷмӯаи нармафзори пешмуайяншударо интихоб карда, насб намоед.
Extended_description-th.utf-8: คุณสามารถเลือกติดตั้งชุดซอฟต์แวร์ที่ได้รวมรวมเตรียมไว้ดังต่อไปนี้ตั้งแต่หนึ่งชุดขึ้นไป
Extended_description-tl.utf-8: Maaaring pumili na iluklok ang isa o ilan sa mga sumusunod na mga koleksyon ng software.
Extended_description-tr.utf-8: Aşağıda size önerilen yazılımlardan bir ya da daha fazlasını seçip, kurabilirsiniz.
Extended_description-ug.utf-8: تۆۋەندىكى بىر ياكى كۆپ ئالدىن بەلگىلەنگەن يۇمشاق دېتاللار توپلىمىنى تاللاپ ئورناتسىڭىز بولىدۇ.
Extended_description-uk.utf-8: Ви можете встановити один або декілька наступних наборів програмного забезпечення.
Extended_description-vi.utf-8: Có khả năng chọn cài đặt một hoặc một vài những nhóm chương trình xác định sẵn sau.
Extended_description-wo.utf-8: Man ngaa istale yi nga soxla ci prograam yii ñu dajale ba noppi ci ay gurup.
Extended_description-zh_cn.utf-8: 您可以选择安装以下一个或多个预定义的软件集。
Extended_description-zh_tw.utf-8: 您可以在下列預先準備的組合套件中，選擇一些軟體來進行安裝。
Type: multiselect

Name: tasksel/title
Description: Software selection
Description-ar.utf-8: انتقاء برامج
Description-ast.utf-8: Seleición de Software
Description-be.utf-8: Выбар праграм
Description-bg.utf-8: Избор на софтуер
Description-bn.utf-8: সফটওয়্যার নির্বাচন
Description-bs.utf-8: Izbor software-a
Description-ca.utf-8: Selecció del programari
Description-cs.utf-8: Výběr programů
Description-cy.utf-8: Dewis meddalwedd
Description-da.utf-8: Valg af programmer
Description-de.utf-8: Softwareauswahl
Description-dz.utf-8: མཉན་ཆས་ སེལ་འཐུ།
Description-el.utf-8: Επιλογή λογισμικού
Description-eo.utf-8: Programara selekto
Description-es.utf-8: Selección de programas
Description-et.utf-8: Tarkvara valik
Description-eu.utf-8: Software aukeraketa
Description-fa.utf-8: انتخاب نرم‌افزار
Description-fi.utf-8: Ohjelmavalikoima
Description-fr.utf-8: Sélection des logiciels
Description-ga.utf-8: Roghnú bogearraí
Description-gl.utf-8: Selección de software
Description-gu.utf-8: સોફ્ટવેર પસંદગી
Description-he.utf-8: בחירת תוכנה
Description-hi.utf-8: सॉफ्टवेयर संकलन
Description-hr.utf-8: Odabir programa
Description-hu.utf-8: Szoftver választás
Description-id.utf-8: Pemilihan perangkat lunak
Description-is.utf-8: Val hugbúnaðar
Description-it.utf-8: Selezione del software
Description-ja.utf-8: ソフトウェアの選択
Description-ka.utf-8: პროგრამათა ნაკრები
Description-kk.utf-8: Бағдарламалық қамтаманы таңдау
Description-km.utf-8: ជម្រើស​កម្មវិធី​
Description-kn.utf-8: ತಂತ್ರಾಂಶ ಆಯ್ಕೆ
Description-ko.utf-8: 소프트웨어 선택
Description-ku.utf-8: Hilbijartina nivîsbariyê
Description-lt.utf-8: Programinės įrangos pasirinkimas
Description-lv.utf-8: Programmatūras izvēle
Description-mg.utf-8: Fifidianana ny rindrankajy
Description-mk.utf-8: Избор на софтвер
Description-ml.utf-8: സോഫ്റ്റ്‌വെയര്‍ തെരഞ്ഞെടുക്കല്‍
Description-mr.utf-8: सॉफ्टवेअर निवड
Description-nb.utf-8: Programvareutvalg
Description-ne.utf-8: डेवियन सफ्टवेयर छनौट
Description-nl.utf-8: Software-selectie
Description-nn.utf-8: Programvareutval
Description-no.utf-8: Programvareutvalg
Description-pa.utf-8: ਸਾਫਟਵੇਅਰ ਚੋਣ
Description-pl.utf-8: Wybór oprogramowania
Description-pt.utf-8: Selecção de software
Description-pt_br.utf-8: Seleção de software
Description-ro.utf-8: Selecția de programe
Description-ru.utf-8: Выбор программного обеспечения
Description-si.utf-8: මෘදුකාංග තෝරාගැනීම
Description-sk.utf-8: Voľba softvéru
Description-sl.utf-8: Izbira programske opreme
Description-sq.utf-8: Zgjedhja e software-it
Description-sr.utf-8: Избор софтвера
Description-sr@latin.utf-8: Izbor softvera
Description-sv.utf-8: Programvaruväljare
Description-ta.utf-8: மென்பொருள் தேர்வு
Description-te.utf-8: సాఫ్ట్ వేర్ (software) ఎంపిక
Description-tg.utf-8: Интихоби нармафзор
Description-th.utf-8: ชุดซอฟต์แวร์
Description-tl.utf-8: Pagpili ng software
Description-tr.utf-8: Yazılım seçimi
Description-ug.utf-8: يۇمشاق دېتال تاللاش
Description-uk.utf-8: Вибір програмного забезпечення
Description-vi.utf-8: Lựa chọn phần mềm
Description-wo.utf-8: Tann ay prograam
Description-zh_cn.utf-8: 软件选择
Description-zh_tw.utf-8: 選擇軟體
Type: title

Name: tzdata/Areas
Choices: Africa, America, Antarctica, Arctic, Asia, Atlantic, Australia, Europe, Indian, Pacific, US, Etc
Choices-ca.utf-8: Àfrica, Amèrica, Antàrtida, Àrtic, Àsia, Atlàntic, Austràlia, Europa, Índic, Pacífic, US, Etc
Choices-cs.utf-8: Afrika, Amerika, Antarktida, Arktida, Asie, Atlantik, Austrálie, Evropa, Indický oceán, Pacifik, US, Jiná
Choices-da.utf-8: Afrika, Amerika, Antarktis, Arktis, Asien, Atlanterhavstid, Australien, Europa, Indisk, Stillehavstid, US, Etc
Choices-de.utf-8: Afrika, Amerika, Antarktis, Arktis, Asien, Atlantik, Australien, Europa, Indischer Ozean, Pazifik, US, Usw.
Choices-en.utf-8: Africa, Americas, Antarctica, Arctic Ocean, Asia, Atlantic Ocean, Australia, Europe, Indian Ocean, Pacific Ocean, US, None of the above
Choices-es.utf-8: África, América, Antártida, Ártico, Asia, Atlántico, Australia, Europa, India, Pacífico, EEUU, Etc
Choices-eu.utf-8: Afrika, Amerika, Antartikoa, Artikoa, Asia, Atlantikoa, Australia, Europa, India, Pazifikoa, AEB, Etab
Choices-fr.utf-8: Afrique, Amérique, Antarctique, Arctique, Asie, Atlantique, Australie, Europe, Océan Indien, Pacifique, US, Autre
Choices-gl.utf-8: África, América, Antártida, Ártico, Asia, Atlántico, Australia, Europa, Índico, Pacífico, EEUU, Etc
Choices-gu.utf-8: આફ્રિકા, અમેરિકા, એન્ટાર્ટિકા, આર્કટિક, એશિયા, એટલાન્ટિક, ઓસ્ટ્રેલિયા, યુરોપ, ભારતીય, પેસેફિક, યુ.એસ., વગેરે
Choices-he.utf-8: אפריקה, אמריקה, אנטרקטיקה, החוג הארקטי, אסיה, אטלנטי, אוסטרליה, אירופה, הודי, פסיפיק (האוקיינוס השקט), ארה"ב, עוד
Choices-hr.utf-8: Afrika, Amerika, Antarktika, Arktik, Azija, Atlantski ocean, Australija, Europa, Indijski ocean, Tihi ocean, SAD, Ostalo
Choices-hu.utf-8: Afrika, Amerika, Déli-sark, Északi-sark, Ázsia, Atlanti, Ausztrália, Európa, Indiai, Csendes-óceáni, Egyesült Államok, Egyebek
Choices-id.utf-8: Afrika, Amerika, Antartika, Arktik, Asia, Atlantik, Australia, Eropa, India, Pasifik, US, ETC
Choices-it.utf-8: Africa, America, Antartide, Artide, Asia, Atlantico, Austrialia, Europa, Indiano, Pacifico, Stati Uniti, Altre
Choices-ja.utf-8: アフリカ, アメリカ, 南極大陸, 北極, アジア, 大西洋側, オーストラリア, ヨーロッパ, インド地方, 太平洋側, US, その他
Choices-ko.utf-8: 아프리카, 아메리카, 남극, 북극, 아시아, 대서양, 오스트레일리아, 유럽, 인도양, 태평양, 미국, 기타
Choices-nl.utf-8: Afrika, Amerika, Antarctica, Noordpoolgebied, Azië, Atlantische Oceaan, Australië, Europa, Indische Oceaan, Grote Oceaan, VS, Anders
Choices-pl.utf-8: Afryka, Ameryka, Antarktyda, Arktyka, Azja, Atlantyk, Australia, Europa, Ocean Indyjski, Pacyfik, USA, (wg stref GMT)
Choices-pt.utf-8: África, América, Antárctida, Árctico, Ásia, Atlântico, Austrália, Europa, Índico, Pacífico, US, Etc
Choices-pt_br.utf-8: África, América, Antártica, Ártico, Ásia, Atlântico, Austrália, Europa, Índia, Pacífico, EUA, etc
Choices-ro.utf-8: Africa, America, Antarctica, Arctic, Asia, Atlantic, Australia, Europa, Indian, Pacific, SUA, Etc.
Choices-ru.utf-8: Африка, Америка, Антарктида, Арктика, Азия, Атлантика, Австралия, Европа, Индийский регион, Тихоокеанский регион, США, Другой
Choices-sk.utf-8: Afrika, Amerika, Antarktída, Arktída, Ázia, Atlantický oceán, Austrália, Európa, Indický oceán, Tichomorie, USA, ďalšie
Choices-sv.utf-8: Afrika, Amerika, Antarktis, Norra Ishavet, Asien, Atlanten, Australien, Europa, Indiska Oceanen, Stilla Havet, US, Etc
Choices-th.utf-8: แอฟริกา, อเมริกา, แอนตาร์กติกา, อาร์กติก, เอเชีย, แอตแลนติก, ออสเตรเลีย, ยุโรป, มหาสมุทรอินเดีย, แปซิฟิก, US, อื่นๆ
Choices-tr.utf-8: Afrika, Amerika, Antarktika, Kuzey Kutbu, Asya, Atlantik, Avustralya, Avrupa, Hindistan, Pasifik, ABD, Diğer
Description: Geographic area:
Description-ca.utf-8: Àrea geogràfica:
Description-cs.utf-8: Geografická oblast:
Description-da.utf-8: Geografisk område:
Description-de.utf-8: Geographisches Gebiet:
Description-en.utf-8: Geographic area:
Description-es.utf-8: Área geográfica:
Description-eu.utf-8: Eremu geografikoa
Description-fr.utf-8: Lieu géographique :
Description-gl.utf-8: Área xeográfica:
Description-gu.utf-8: ભૌગોલિક વિસ્તાર:
Description-he.utf-8: אזור גיאוגרפי:
Description-hr.utf-8: Geografsko područje:
Description-hu.utf-8: Földrajzi terület:
Description-id.utf-8: Area Geografis:
Description-it.utf-8: Area geografica:
Description-ja.utf-8: 地理的領域:
Description-ko.utf-8: 지리적 지역:
Description-nl.utf-8: Geografisch gebied:
Description-pl.utf-8: Obszar geograficzny:
Description-pt.utf-8: Área geográfica:
Description-pt_br.utf-8: Área geográfica:
Description-ro.utf-8: Zona geografică:
Description-ru.utf-8: Географический район:
Description-sk.utf-8: Geografická oblasť:
Description-sv.utf-8: Geografiskt område:
Description-th.utf-8: พื้นที่ภูมิศาสตร์
Description-tr.utf-8: Coğrafi bölge:
Extended_description: Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located.
Extended_description-ca.utf-8: Si us plau, seleccioneu l'àrea geogràfica de residència. Les següents preguntes de configuració permetran aproximar encara més la selecció tot i mostrant una llista de ciutats que representen les zones horàries en les que es troben.
Extended_description-cs.utf-8: Vyberte prosím geografickou oblast, ve které se nacházíte. Následující otázky zobrazí seznam měst, která reprezentují časová pásma, ve kterých jsou města umístěna.
Extended_description-da.utf-8: Vælg venligst det geografiske område du lever i. En række konfigurationsspørgsmål vil afgrænse dette ved at præsentere en række byer, der repræsenterer tidszonerne hvori de er placeret.
Extended_description-de.utf-8: Bitte wählen Sie das geographische Gebiet aus, in dem Sie leben. Die folgenden Fragen werden dies durch eine Auswahl von Städten, die die Zeitzonen repräsentieren, in denen sie liegen, weiter einschränken.
Extended_description-en.utf-8: Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located.
Extended_description-es.utf-8: Por favor elija el área geográfica donde reside. Las siguientes preguntas de la configuración se ajustarán a ésta presentando una lista de ciudades, representando las zonas horarias en las que están localizadas.
Extended_description-eu.utf-8: Hautatu bizi zaren area geografikoa. Konfigurazioko hurrengo galderek aukera hau zehaztuko dute kokaturik zauden eremuko hirien zerrenda aurkeztuz.
Extended_description-fr.utf-8: Veuillez choisir le lieu géographique où vous êtes situé(e). Les questions suivantes affineront ce choix en affichant une liste de villes qui représentent les fuseaux horaires où elles sont situées.
Extended_description-gl.utf-8: Escolla a área xeográfica na que reside. As seguintes preguntas de configuración han afinar máis a selección amosando unha lista de cidades que representan os fusos horarios nos que están situadas.
Extended_description-gu.utf-8: મહેરબાની કરી તમે જ્યાં રહેતા હોવ તે ભૌગોલિક વિસ્તાર પસંદ કરો. આગળનાં રુપરેખાંકન પ્રશ્નો શહેરોની યાદી બતાવીને, તમે જે જગ્યાએ છો તેનો સમય વિસ્તાર બતાવીને ટૂંકું બનાવશે.
Extended_description-he.utf-8: בחר בבקשה את האזור הגיאוגרפי שאתה חי בו. שאלות המשך יצמצמו את האפשרויות ע"י הצגת רשימת ערים המייצגות את אזורי הזמן שבהם הן נמצאות.
Extended_description-hr.utf-8: Molim odaberite geografsko područje gdje živite. Daljnja pitanja će suziti odabir tako što ćete dobiti popis gradova koji predstavljaju vremenske zone u kojima se oni nalaze.
Extended_description-hu.utf-8: Válaszd ki a földrajzi területet, ahol élsz. Ezt követően kiválaszthatod a várost és a városhoz tartozó időzónát.
Extended_description-id.utf-8: Silakan pilih wilayah geografis tempat Anda berada. Beberapa pertanyaan selanjutnya akan mempersempit pilihan dengan menampilkan daftar kota, yang menggambarkan daerah waktu tempat kota tersebut berada.
Extended_description-it.utf-8: Scegliere l'area geografica in cui si vive. Successive domande restringeranno la lista presentando un elenco di città, che rappresentano i fusi orari nelle quali si trovano.
Extended_description-ja.utf-8: あなたの居住する地理的領域を選んでください。続く設定質問で、位置する時間帯を表現する都市名のリストが表示されるので、これをより狭めていくことができます。
Extended_description-ko.utf-8: 거주하고 있는 지리적 지역을 선택하십시오. 이후의 설정 질문에서는 지역을 특정하려고 도시의 목록을 표시합니다. 표시하는 도시는 도시 위치의 표준 시간대를 나타냅니다.
Extended_description-nl.utf-8: Wat is het geografisch gebied waarin u leeft? In de volgende vragen krijgt u een lijst van steden te zien die de verschillende tijdzones in dit gebied representeren.
Extended_description-pl.utf-8: Proszę wybrać swój obszar geograficzny. Kolejne pytania konfiguracyjne zawężą go, prezentując listę miast reprezentujących strefy czasowe w których są położone.
Extended_description-pt.utf-8: Por favor escolha a área geográfica onde vive. Seguidamente haverão mais perguntas de configuração que irão diminuir isto até uma lista de cidades que representam o fuso horário em que estão localizadas.
Extended_description-pt_br.utf-8: Por favor, selecione a área geográfica na qual você vive. Perguntas de configuração subsequentes serão limitadas pela área geográfica selecionada, apresentando uma lista de cidades que representam os fusos horários nos quais elas estão localizadas.
Extended_description-ro.utf-8: Vă rugăm să selectați zona geografică în care locuiți. Întrebările ulterioare de configurare vor restrânge acest lucru prin prezentarea unei liste de orașe, reprezentând fusurile orare în care sunt situate.
Extended_description-ru.utf-8: Выберите географический район, в котором вы живёте. Далее вам предложат подробный список городов, которые расположены в часовых поясах того региона, в котором вы находитесь.
Extended_description-sk.utf-8: Prosím, vyberte geografickú oblasť, kde žijete. Následné konfiguračné otázky zúžia výber a zobrazia vám iba zoznam miest reprezentujúcich časové pásma v ktorých sa nachádzajú.
Extended_description-sv.utf-8: Välj det geografiska område du bor i. Följande konfigurationsfrågor kommer att begränsa detta genom att presentera en lista med städer, som representerar de tidszoner i vilka de är placerade.
Extended_description-th.utf-8: โปรดระบุพื้นที่ภูมิศาสตร์ที่คุณอยู่ คำถามถัดไปจะลดขอบเขตลงอีก โดยแสดงรายการชื่อเมืองที่เป็นตัวแทนเขตเวลาต่างๆ
Extended_description-tr.utf-8: Yaşadığınız coğrafi bölgeyi seçin. Sonraki yapılandırma soruları konumlandıkları saat dilimlerini temsil eden şehirlerin listesini sunarak bu seçiminizi daraltacak.
Type: select

Name: tzdata/Zones/Africa
Choices: Abidjan, Accra, Addis_Ababa, Algiers, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar_es_Salaam, Djibouti, Douala, El_Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao_Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-be.utf-8: Абіджан, Акра, Адыс-Абэба, Алжыр, Асмара, Бамака, Бангуі, Банджул, Бісаў, Блантыр, Бразавіль, Бужумбура, Каір, Касабланка, Кеута, Канакры, Дакар, Дар-эс-Салаам, Джыбуці, Дуала, Эль-Эўн, Фрытаўн, Габаронэ, Харарэ, Яганэсбург, Juba, Кампала, Хартум, Кігалі, Кіншаса, Лагос, Лібрэвіль, Лом, Луанда, Лубумбаші, Лусака, Малаба, Мапута, Масэру, Мбабанэ, Магадышу, Манровія, Найробі, Нджамэна, Ніямэй, Нуакшот, Уагадугу, Порта-Нова, Сан-Томэ, Тымбукту, Трыпалі, Туніс, Віндхоўк
Choices-bg.utf-8: Абиджан, Акра, Адис Абеба, Алжир, Асмара, Бамако, Банги, Банджул, Бисау, Блантир, Бразавил, Бужумбура, Кайро, Казабланка, Селта, Конакри, Дакар, Дар ес Салаам, Джибути, Дуала, Ел Ааюн, Фрийтаун, Габороне, Хараре, Йоханесбург, Juba, Кампала, Хартум, Кигали, Киншаса, Лагос, Либревил, Ломе, Луанда, Любумбаши, Лусака, Малабо, Мапуто, Масеру, Мбабане, Могадишу, Монровия, Найроби, Нджамена, Ниамей, Нуакшот, Уагадугу, Порто-Ново, Сао Томе, Тимбукту, Триполи, Тунис, Виндхук
Choices-ca.utf-8: Abidjan, Accra, Addis Abeba, Alger, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, El Caire, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuktu, Trípoli, Tunis, Windhoek
Choices-cs.utf-8: Abidžan, Akkra, Addis Abeba, Alžír, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Káhira, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Džibuti, Douala, El Aaiún, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Chartům, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadišu, Monrovia, Nairobi, N'Djamena, Niamey, Nouakchott, Ouagadougou, Porto Novo, Sao Tome, Timbuktu, Tripolis, Tunis, Windhoek
Choices-da.utf-8: Abidjan, Accra, Addis Ababa, Algier, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, Laayoune, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-de.utf-8: Abidjan, Accra, Addis Abeba, Algier, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salam, Dschibuti, Duala, El Ajun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadischu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuktu, Tripolis, Tunis, Windhoek
Choices-en.utf-8: Abidjan, Accra, Addis Ababa, Algiers, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El-Aaiún, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-es.utf-8: Abiyán, Accra, Addis Ababa, Argel, Asmara, Bamako, Bangui, Banjul, Bissáu, Blantyre, Brazzaville, Bujumbura, El Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Yibuti, Duala, El Aaiun, Freetown, Gaborone, Harare, Johannesburgo, Yuba, Kampala, Jartum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadiscio, Monrovia, Nairobi, Ndjamena, Niamey, Nuakchott, Uagadugú, Puerto Nuevo, Santo Tomé, Tombuctú, Trípoli, Túnez, Windhoek
Choices-eu.utf-8: Abidjan, Accra, Addis Abeba, Alger, Asmara, Bamako, Bangi, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairo, Casablanca, Ceuta, Konakry, Dakar, Dar es Salaam, Djibuti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamei, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-fi.utf-8: Abidjan, Accra, Addis Abeba, Alger, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiún, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuktu, Tripoli, Tunis, Windhoek
Choices-fr.utf-8: Abidjan, Accra, Addis Abeba, Alger, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Le Caire, Casablanca, Ceuta et Melilla, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesbourg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadiscio, Monrovia, Nairobi, N'Djamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao-Tomé, Tombouctou, Tripoli, Tunis, Windhoek
Choices-gl.utf-8: Abidjan, Acra, Addis Abeba, Alxer, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, O Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salám, Djibouti, Duala, El Aaiún, Freetown, Gaborone, Harare, Johannesburgo, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadiscio, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuktu, Tripoli, Tunes, Windhoek
Choices-gu.utf-8: અબિદજાન, અક્કારા, એડિસ અબાબા, અલ્જીઅર્સ, અસ્મેરા, બામાકો, બાન્ગુઇ, બાન્જુલ, બિસ્સાઉ, બ્લાન્ટાયર, બ્રાઝ્ઝવિલ્લે, બુજુમ્બુરા, કૈરો, કાસાબ્લાન્કા, સેયુટા, કોનાર્કી, ડકાર, દાર ઇ સલામ, જીબુટી, ડોઉલા, અલ આઇયુન, ફ્રીટાઉન, ગાબારોન, હરારે, જોહન્નિસબર્ગ, જુબા, કમ્પાલા, ખાર્ટુમ, કિગાલિ, કિન્સાસા, લાગોસ, લિબ્રેવિલ્લે, લોમ, લાઉન્ડા, લુબુમ્બાશી, લુકાસા, માલાબો, માપુટો, માસેરુ, મબાબાને, મોગાદિશુ, મોન્રોવિઆ, નૈરોબી, નડજામેના, નૈઆમે, નોઉક્ચોટ, ઓગાડોઉગોઉ, પોર્ટો-નોવો, સાઓ ટોમ, ટીમ્બકટુ, ટ્રીપોલી, ટ્યુનિસ, વિન્ડહોક
Choices-he.utf-8: אביג'אן, אקרה, אדיס אבבה, אלג'יר, אסמרה, במקו, בנגואי, בנג'ול, ביסאו, בלנטייר, ברזוויל, בוג'ומבורה, קהיר, קזבלנקה, סאוטה, קונאקרי, דקר, דאר א-סלאם, דג'יבוטי, דואואלה, אל-עיון, פריטאון, גאבורון, הארארה, יוהנסבורג, ג'ובה, קמפלה, חרטום, קיגאלי, קינשסה, לאגוס, ליברוויל, לומה, לואנדה, לובומבאשי, לוסקה, מלאבו, מפוטו, מסרו, מבבנה, מוגדישו, מונרוביה, ניירובי, נג'מנה, ניאמיי, נואקשוט, ואגאדוגו, פורטו נובו, סאו טומה, טימבוקטו, טריפולי, תוניס, וינדהוק
Choices-hr.utf-8: Abidjan, Accra, Addis Ababa, Alžir, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ougadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-hu.utf-8: Abidjan, Accra, Addis Ababa, Algiers, Aszmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairó, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Dzsibuti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Gyúba‎ (Dzsúba), Kampala, Khartoum, Kigali, Kinsasza, Lagos, Libreville, Lome, Luanda, Lubumbasi, Lusaka, Malabo, Maputo, Maszeru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Kagadugu, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunisz, Windhoek
Choices-id.utf-8: Abidjan, Akra, Addis Ababa, Algeria, Asmara, Barnako, Bangui, Banjul, Bisau, Blantyre, Brazzavila, Bujumbura, Kairo, Casablanca, Ceuta, Conakry, Dakar, Darus Salam, Djibouti, Douala, Al-Aaiun, Freetown, Gaborona, Harare, Johannerburg, Juba, Kampala, Khartum, Kigali, Kinshasa, Lagos, Libravila, Loma, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchot, Ouagadougou, Porto-Novo, Sao Toma, Timbuktu, Tripoli, Tunisia, Windhoek
Choices-it.utf-8: Abidjan, Accra, Addis Abeba, Algeri, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Il Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Gibuti, Douala, El Ayun, Freetown, Gaborone, Harare, Johannesburg, Giuba, Kampala, Khartum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadiscio, Monrovia, Nairobi, N'Djamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuctu, Tripoli, Tunisi, Windhoek
Choices-ja.utf-8: アビジャン, アクラ, アディスアベバ, アルジェー, アスマラ, バマコ, バンギ, バンジュル, ビサウ, ブランタイア, ブラザヴィル, ブジュンブラ, カイロ, カサブランカ, セウタ, コナクリ, ダカール, ダルエスサラーム, ジブチ, ドゥアーラ, エルアイウン, フリータウン, ハボローネ, ハラレ, ヨハネスバーグ, ジューバ, カンパラ, ハルツーム, キガリ, キンシャサ, ラゴス, リーブルヴィル, ロメ, ルアンダ, ルブンバシ, ルサカ, マラボ, マプート, マセル, ムババネ, モガディシュ, モンロヴィア, ナイロビ, ウンジャメナ, ニアメ, ヌアクショット, ワガドゥーグ, ポルトノヴォ, サントメ, ティンブクトゥ, トリポリ, チュニス, ウィントフック
Choices-ko.utf-8: 아비장, 아크라, 아디스아바바, 알제, 아스마라, 바마코, 방기, 반줄, 비사우, 블랜타이어, 브라자빌, 부줌부라, 카이로, 카사블랑카, 세우타, 코나크리, 다카르, 다르에스살람, 지부티, 두알라, 엘아이운, 프리타운, 가보로네, 하라레, 요하네스버그, 주바, 캄팔라, 카르툼, 키갈리, 킨샤샤, 라고스, 리브르빌, 로메, 루안다, 루붐바시, 루사카, 말라보, 마푸투, 마세루, 음바바네, 모가디슈, 몬로비아, 나이로비, 은자메나, 니아메, 누악쇼트, 와가두구, 포르토노보, 상투메, 팀북투, 트리폴리, 튀니스, 빈트후크
Choices-ku.utf-8: Abîcan, Akra, Addis Ababa, Algiers, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kahîre, Kazablanka, Ceuta, Konakry, Dakar, Dar-ul Selam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nayrobî, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-lt.utf-8: Abidžanas, Akra, Adis Abeba, Alžyras, Asmara, Bamakas, Bangis, Bandžulis, Bisau, Blantairas, Brazavilis, Bužumbūra, Kairas, Kasablanka, Ceuta, Konakris, Dakaras, Dar es Salamas, Džibutis, Duala, Ajunas, Fritaunas, Gaboronas, Hararė, Johanesburgas, Juba, Kampala, Chartumas, Kigalis, Kinshasa, Lagosas, Librevilis, Lomė, Luanda, Lubumbashi, Lusaka, Malabas, Maputu, Maseru, Mbabanė, Mogadišas, Monrovija, Nairobis, Ndžamena, Niamėjus, Nuakšotas, Uagadugu, Porto Novas, San Tomė, Timbuktu, Tripolis, Tunisas, Vindhukas
Choices-ml.utf-8: ആബിജാന്‍, ആക്ര, അഡിസ് അബാബ, അള്‍ജിയേഴ്സ്, അസ്മാറ, ബമാകോ, ബാങ്ക്വി, ബാന്‍ജുള്‍, ബിസ്സോവു, ബ്ലാന്‍ടൈര്‍, ബ്രസ്സാവില്ലെ, ബുജുംബുറ, കെയ്റോ, കാസാബ്ലാങ്ക, സ്യൂട, കൊനാക്രി, ഡക്കാര്‍, ദാര്‍ എസ് സലാം, ജിബൂട്ടി, ദൌള, എല്‍ ആയുന്‍, ഫ്രീടൌണ്‍, ഗാബറോണ്‍, ഹരാരെ, ജൊഹന്നാസ്ബര്‍ഗ്, Juba, കംപാല, ഖാര്‍ടോം, കിഗാലി, കിന്‍ഷാസ, ലാഗോസ്, ലിബര്‍വില്ല, ലോം, ലുവാണ്ട, ലുബുമ്പഷി, ലുസാക്ക, മലാബോ, മപൂട്ടോ, മസേരു, മംബാബേന്‍, മൊഗാദിഷു, മൊണ്‍റോവിയ, നെയ്റോബി, ജമേന, നിയാമി, നൌക്ഷോട്ട്, ഔഗാദഔഗൌ, പോര്‍ട്ടോ-നോവോ, സാവോ ടോം, ടിമ്പുക്തു, ട്രിപ്പോളി, ടുണീസ്, വിീന്‍ഡോയക്ക്
Choices-nl.utf-8: Abidjan, Accra, Addis Abeba, Algiers, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Caïro, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, Al-Ajoen, Freetown, Gaborone, Harare, Johannesburg, Djoeba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tomé, Timboektoe, Tripoli, Tunis, Windhoek
Choices-pl.utf-8: Abidżan, Akra, Addis Abeba, Algier, Asmara, Bamako, Bangi, Bandżul, Bissau, Blantyre, Brazzaville, Bużumbura, Kair, Casablanca, Ceuta, Konakry, Dakar, Dar es Salaam, Dżibuti, Duala, Al-Ujun, Freetown, Gaborone, Harare, Johannesburg, Dżuba, Kampala, Chartum, Kigali, Kinszasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadiszu, Monrovia, Nairobi, Ndżamena, Niamey, Nawakszut, Wagadugu, Porto-Novo, Sao Tome, Timbuktu, Trypolis, Tunis, Windhuk
Choices-pt.utf-8: Abijan, Acra, Adis Abeba, Argel, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Cairo, Casablanca, Ceuta, Conacri, Dacar, Dar es Salaam, Djibouti, Douala, El Aaiún, Freetown, Gaborone, Harare, Joanesburgo, Juba, Campala, Cartum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaca, Malabo, Maputo, Maseru, Mbabane, Mogadíscio, Monróvia, Nairobi, N'Djamena, Niamey, Nouakchott, Uagadugo, Porto-Novo, São Tomé, Timbuktu, Trípoli, Tunis, Windhoek
Choices-pt_br.utf-8: Abidjan, Accra, Addis Ababa, Algiers, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuktu, Trípoli, Túnis, Windhoek
Choices-ro.utf-8: Abidjan, Accra, Addis Abeba, Alger, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadiscio, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao-Tome, Tombuctu, Tripoli, Tunis, Windhoek
Choices-ru.utf-8: Абиджан, Аккра, Аддис-Абеба, Алжир, Асмэра, Бамако, Банги, Банжул, Бисау, Блантайр, Браззавиль, Бужумбура, Каир, Касабланка, Сеута, Конакри, Дакар, Дар-эс-Салам, Джибути, Дуала, Эль-Айюн, Фритаун, Габороне, Хараре, Йоханнесбург, Джуба, Кампала, Хартум, Кигали, Киншаса, Лагос, Либревиль, Ломе, Луанда, Лубумбаши, Лусака, Малабо, Мапуту, Масеру, Мбабане, Могадишу, Монровия, Найроби, Нджамена, Ниамей, Нуакшот, Уагадугу, Порто-Ново, Сан-Томе, Томбукту, Триполи, Тунис, Виндхук
Choices-sk.utf-8: Abidjan, Akkra, Addis Abeba, Alžír, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Káhira, Casablanca, Ceuta, Konakry, Dakar, Dar es Salám, Džibuti, Douala, El-Aaiún, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Chartúm, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadišo, Monrovia, Nairobi, N'Djamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Svätý Tomáš, Timbuktu, Tripolis, Tunis, Windhoek
Choices-sq.utf-8: Abidjan, Accra, Addis Ababa, Algjer, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Cairo, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-sv.utf-8: Abidjan, Accra, Addis Abeba, Alger, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Kairo, Casablanca, Ceuta, Conakry, Dakar, Dar es-Salaam, Djibouti, Douala, Al-Ayun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lomé, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, N'Djamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, São Tomé, Timbuktu, Tripoli, Tunis, Windhoek
Choices-th.utf-8: อาบิดจัน, อักกรา, แอดดิสอาบาบา, แอลเจียร์, แอสมารา, บามาโก, บังกี, บันจูล, บิสเซา, Blantyre, บราซซาวิล, บูจุมบูรา, ไคโร, คาซาบลังกา, เซวตา, โกนากรี, ดาการ์, ดาร์-เอส-ซาลาม, จิบูตี, Douala, El_Aaiun, ฟรีทาวน์, กาโบโรเน, ฮาราเร, โจฮันเนสเบิร์ก, Juba, กัมปาลา, คาร์ทูม, คิกาลี, กินชาซา, ลากอส, ลีเบรอวิล, โลเม, ลูอันดา, ลูบูมบาชี, ลูซากา, มาลาโบ, มาปูโต, มาเซรู, อัมบาบาเน, โมกาดิชู, มันโรเวีย, ไนโรบี, เอ็นจาเมนา, นีอาเม, นูแอกชอต, วากาดูกู, ปอร์โต-โนโว, เซาตูเม, Timbuktu, ตริโปลี, ตูนิส, วินด์ฮุก
Choices-tr.utf-8: Abidjan, Akra, Addis Ababa, Cezayir, Asmara, Bamako, Bangui, Banjul, Bissau, Blantyre, Brazavil, Bujumbura, Kahire, Kazablanka, Septe, Konakri, Dakar, Darüsselam, Cibuti, Duala, El Aaiun, Freetown, Gabaron, Harare, Johannesburg, Juba, Kampala, Hartum, Kigali, Kinşasa, Lagos, Libreville, Lome, Luanda, Lubumbasi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadişu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Trablusgarp, Tunus, Windhoek
Choices-vi.utf-8: Abidjan, Accra, Addis Ababa, An-giê-ri, Asmara, Bamako, Bangui, Banjul, Bi-xau, Blantyre, Brazzaville, Bujumbura, Cai-rô, Casablanca, Ceuta, Conakry, Dakar, Dar es Salaam, Djibouti, Douala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Khartoum, Kigali, Kinshasa, Lagos, Libreville, Lome, Luanda, Lubumbashi, Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Ndjamena, Niamey, Nouakchott, Ouagadougou, Porto-Novo, Sao Tome, Timbuktu, Tripoli, Tunis, Windhoek
Choices-wo.utf-8: Abijaan, Akra, Addis Ababa, Aljer, Asmara, Bamako, Baŋgi, Banjul, Bissau, Blantyre, Brazzaville, Bujumbura, Keer, Kaasablaŋka, Ceuta et Melilla, Konaakiri, Dakaar, Dar es Salaam, Jibuti, Duwaala, El Aaiun, Freetown, Gaborone, Harare, Johannesburg, Juba, Kampala, Xartuum, Kigali, Kinshasa (Sowwu), Lagos, Libreville, Lome, Luanda, Lubumbashi (Peeŋku), Lusaka, Malabo, Maputo, Maseru, Mbabane, Mogadishu, Monrovia, Nairobi, Njamena, Ñaame, Nuwaksoot, Wagadugu, Porto-Novo, Sao Tome, Tumbuktu, Tripoli, Toonus, Windhoek
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/America
Choices: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos_Aires, Argentina/Catamarca, Argentina/Cordoba, Argentina/Jujuy, Argentina/La_Rioja, Argentina/Mendoza, Argentina/Rio_Gallegos, Argentina/Salta, Argentina/San_Juan, Argentina/San_Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa_Vista, Bogota, Boise, Cambridge_Bay, Campo_Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral_Harbour, Costa_Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson_Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El_Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace_Bay, Godthab, Goose_Bay, Grand_Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell_City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La_Paz, Lima, Los_Angeles, Lower_Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico_City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New_York, Nipigon, Nome, Noronha, North_Dakota/Beulah, North_Dakota/Center, North_Dakota/New_Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port_of_Spain, Porto_Acre, Porto_Velho, Puerto_Rico, Punta_Arenas, Rainy_River, Rankin_Inlet, Recife, Regina, Resolute, Rio_Branco, Santa_Isabel, Santarem, Santiago, Santo_Domingo, Sao_Paulo, Scoresbysund, Shiprock, Sitka, St_Barthelemy, St_Johns, St_Kitts, St_Lucia, St_Thomas, St_Vincent, Swift_Current, Tegucigalpa, Thule, Thunder_Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-be.utf-8: Адак, Анхорадж, Ангілья, Антыгуа, Арагвайна, Аргенціна/Буэнас-Айрас, Аргенціна/Катамарка, Аргенціна/Кардоба, Аргенціна/Хухуй, Аргенціна/Ла Рыёха, Аргенціна/Мендоза, Аргенціна/Рыё Галегос, Аргенціна/Сальта, Аргенціна/Сан Хуан, Аргенціна/Сан Луіс, Аргенціна/Тукуман, Аргенціна/Ушуайя, Аруба, Асунсьён, Атыкакан, Атка, Багія, Bahia_Banderas, Барбадос, Бэлем, Беліз, Бланк-Саблон, Бона-Віста, Багота, Буас, Кэмбрыдж-Бэй, Кампа-Гранда, Канкун, Каракас, Каен, Кайман, Чыкага, Чыхуахуа, Ciudad_Juarez, Корал-Харбар, Коста-Рыка, Coyhaique, Creston, Куяба, Куракаа, Данмаркшван, Доўсан, Доўсан-Крык, Дэнвер, Дэтройт, Дамініка, Эдмантан, Эйрунэп, Эль-Сальвадор, Энсенада, Fort_Nelson, Фарталеза, Глэйс-Бэй, Готаб, Гус-Бэй, Гранд-Турк, Гранада, Гвадалупа, Гватамала, Гваякіль, Гаяна, Халіфакс, Гавана, Гермосіла, Індыяна/Індыянапаліс, Індыяна/Кнокс, Індыяна/Марэнга, Індыяна/Пітсбург, Індыяна/Тэл Сіці, Індыяна/Вівэй, Індыяна/Вінсэнс, Індыяна/Вінамак, Інувік, Ікалют, Ямайка, Жунё, Кентукі/Луізвіль, Кентукі/Монцісэль, Kralendijk, Ла-Пас, Ліма, Лос-Анджалес, Lower_Princes, Макеё, Манагуа, Манаўс, Марыгот, Мартынік, Matamoros, Мазатлан, Мэнамінэ, Мэрыда, Metlakatla, Мэхіка, Мікелён, Монктан, Мантарэй, Мантэвідэа, Манрэаль, Мансэрат, Насаў, Нью-Ёрк, Ніпігон, Ном, Наронга, North_Dakota/Beulah, Паўночная Дакота/Цэнтр, Паўночная Дакота/Нью Салем, Nuuk, Ojinaga, Панама, Пангніртунг, Парамарыба, Фенікс, Порт-а-Прынс, Порт-а-Спэйн, Порт-Акрэ, Порта-Вэльга, Пуэрта-Рыка, Punta_Arenas, Рэйні-Рывар, Ранкін-Інлет, Рэсіф, Рэгіна, Рэзалют, Рыё-Бранка, Santa_Isabel, Сантарэм, Санцьяга, Санта-Дамінга, Сан-Паўла, Скорзбізунд, Шыпрок, Sitka, Св Барталамей, Сэнт-Джонс, Сэнт-Кітц, Сэнт-Люсія, Сэнт-Томас, Сэнт-Вінсэнт, Свіфт-Карант, Тэгусыгальпа, Туль, Зандар-Бэй, Тыджвана, Таронта, Тартола, Ванкувэр, Вірджын, Уайтхорс, Вініпэг, Якутат, Елаўнайф
Choices-bg.utf-8: Адак, Анкъридж, Ангила, Антигуа, Арагуейна, Аржентина/Буенос Айрес, Аржентина/Катамарка, Аржентина/Кордоба, Аржентина/Хухуй, Аржентина/Ла Риоха, Аржентина/Мендоса, Аржентина/Рио Галегос, Аржентина/Салта, Аржентина/Сан Хуан, Аржентина/Сан Луис, Аржентина/Тукуман, Аржентина/Ушуая, Аруба, Асунсион, Атикокан, Атка, Баия, Bahia_Banderas, Барбадос, Белем, Белиз, Блан-Саблон, Боа Виста, Богота, Боис, Кембридж Бей, Кампо Гранде, Канкун, Каракас, Шайен, Каймани, Чикаго, Чихуахуа, Ciudad_Juarez, Корал Харбър, Коста Рика, Coyhaique, Creston, Куяба, Кюрасао, Данмарксхафен, Досън, Досън Крийк, Денвър, Детройт, Доминика, Едмънтън, Ейрунепе, Ел Салвадор, Енсенада, Fort_Nelson, Форталеза, Глейс Бей, Готаб, Гуус Бей, Гранд Тюрк, Гренада, Гваделупа, Гватемала, Гуаякил, Гайана, Халифакс, Хавана, Ермосильо, Индиана/Индианаполис, Индиана/Нокс, Индиана/Маренго, Индиана/Питърсбърг, Индиана/Тел сити, Индиана/Вивей, Индиана/Винсенес, Индиана/Уинамак, Инувик, Икалуит, Ямайка, Жуно, Кентъки/Луисвил, Кентъки/Монтичело, Kralendijk, Ла Пас, Лима, Лос Анжелис, Lower_Princes, Масейо, Манагуа, Манаус, Маригот, Мартиника, Matamoros, Масатлан, Меномини, Мерида, Metlakatla, Мексико сити, Микелон, Монктън, Монтерей, Монтевидео, Монреал, Монсерат, Насау, Ню Йорк, Нипигън, Ном, Нороня, North_Dakota/Beulah, Северна Дакота/Център, Северна Дакота/Ню Сейлем, Nuuk, Ojinaga, Панама, Пангниртунг, Парамарибо, Финикс, Порт-о-Пренс, Порт-ъф-Спейн, Порту Акри, Порту Велю, Пуерто Рико, Punta_Arenas, Рейни Ривър, Ранкин Инлет, Ресифи, Реджайна, Резолют, Рио Бранко, Santa_Isabel, Сантарем, Сантяго, Санто Доминго, Сао Паоло, Скоресбисунд, Шипрок, Sitka, Св. Вартоломей, Св. Джон, Сейнт Китс, Сейнт Лусия, Сейнт Томас, Сейнт Винсент, Суифт Кърънт, Тегусигалпа, Туле, Тъндър Бей, Тихуана, Торонто, Тортола, Ванкувър, Вирджински о-ви, Уайтхорс, Уинипег, Якутат, Йелоунайф
Choices-ca.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Córdoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogotà, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadalupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinica, Matamoros, Mazatlan, Menominee, Mèrida, Metlakatla, Ciutat de Mèxic, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, Nova York, Nipigon, Nome, Noronha, Dakota del Nord/Beulah, Dakota del Nord/Centre, Dakota del Nord/New Salem, Nuuk, Ojinaga, Panamà, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port-of-Spain, Porto Acre, Porto Velho, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, Saint Barthélemy, Saint Johns, Saint Kitts, Saint Lucia, Saint Thomas, Saint Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virginia, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-cs.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Córdoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucumán, Argentina/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Kajmanské ostrovy, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Kostarika, Coyhaique, Creston, Cuiabá, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamajka, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinik, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexiko, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Severní Dakota/Beulah, Severní Dakota/Střed, Severní Dakota/New Salem, Nuuk, Ojinaga, Panamá, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Portoriko, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Svatý Bartoloměj, St John's, Svatý Krištof, Svatá Lucie, Svatý Tomáš, Svatý Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-da.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Cordoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthåb, Goose Bay, Gran Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North Dakota/Beulah, North Dakota/Center, North Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Sankt Barthelemy, Sankt Johns, Sankt Kitts, Sankt Lucia, Sankt Thomas, Sankt Vincent, Swift Current, Tegucigalpa, Thule, Tordenbugten, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-de.utf-8: Adak, Anchorage, Anguilla, Antigua, Aracaju, Argentinien/Buenos Aires, Argentinien/Catamarca, Argentinien/Córdoba, Argentinien/Jujuy, Argentinien/La Rioja, Argentinien/Mendoza, Argentinien/Río Gallegos, Argentinien/Salta, Argentinien/San Juan, Argentinien/San Luis, Argentinien/Tucumán, Argentinien/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Kaiman, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthåb, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaika, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceió, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlán, Menominee, Mérida, Metlakatla, Mexiko-Stadt, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North Dakota/Beulah, North Dakota/Zentral, North Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Pôrto Velho, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, Saint-Barthélemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-en.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Buenos Aires (Argentina), Catamarca (Argentina), Cordoba (Argentina), Jujuy (Argentina), La Rioja (Argentina), Mendoza (Argentina), Rio Gallegos (Argentina), Salta (Argentina), San Juan (Argentina), San Luis (Argentina), Tucuman (Argentina), Ushuaia (Argentina), Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indianapolis (Indiana), Knox (Indiana), Marengo (Indiana), Petersburg (Indiana), Tell City (Indiana), Vevay (Indiana), Vincennes (Indiana), Winamac (Indiana), Inuvik, Iqaluit, Jamaica, Juneau, Louisville (Kentucky), Monticello (Kentucky), Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Fernando de Noronha, Beulah (North Dakota), Center (North Dakota), New Salem (North Dakota), Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-es.utf-8: Adak, Anchorage, Anguila, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Córdoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucumán, Argentina/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahía, Bahía de Banderas, Barbados, Belén, Belice, Blanc-Sablon, Buena Vista, Bogotá, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayena, Caimán, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curazao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Granada, Guadalupe, Guatemala, Guayaquil, Guyana, Halifax, Habana, Hermosillo, Indiana/Indianápolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Ángeles, Lower Princes, Maceió, Managua, Manaos, Marigot, Martinica, Matamoros, Mazatlan, Menominee, Mérida, Metlakatla, Ciudad de México, Miquelón, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, Nueva York, Nipigon, Nome, Noronha, Dakota del Norte/Beulah, Dakota del Norte/Centro, Dakota del Norte/Nuevo Salem, Nuuk, Ojinaga, Panamá, Pangnirtung, Paramaribo, Fénix, Puerto Príncipe, Puerto España, Puerto Acre, Puerto Bello, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Río Blanco, Santa Isabel, Santarém, Santiago, Santo Domingo, San Pablo, Ittoqqortoormiit, Shiprock, Sitka, San Bartolomé, San Juan, San Cristóbal, Santa Lucía, Santo Tomás, San Vicente, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tórtola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-eu.utf-8: Adak, Anchorage, Anguila, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Cordoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Lui, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Kaiman, Chicago, Chihuahua, Ciudad_Juarez, Salliit, Costa Rica, Coyhaique, Creston, Kuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Granada, Guadalupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manao, Marigot, Martinika, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico Hiria, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Ipar Dakota/Beulah, Ipar Dakota/Erdia, Ipar Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-fi.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentiina/Buenos Aires, Argentiina/Catamarca, Argentiina/Córdoba, Argentiina/Jujuy, Argentiina/La Rioja, Argentiina/Mendoza, Argentiina/Rio Gallegos, Argentiina/Salta, Argentiina/San Juan, Argentiina/San Luis, Argentiina/Tucuman, Argentiina/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Nuuk, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaika, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower_Princes, Maceió, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Mérida, Metlakatla, México, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North_Dakota/Beulah, Pohjois-Dakota/Keskusta, Pohjois-Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa_Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Ittoqqortoormiit, Shiprock, Sitka, Saint Barthélemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Qaanaaq, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-fr.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Buenos Aires, Catamarca, Córdoba, Jujuy, La Rioja, Mendoza, Rio Gallegos, Salta, San Juan, San Luis, Tucuman, Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, La Barbade, Belém, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Îles Caïman, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Détroit, Dominique, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenade, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, La Havane, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaïque, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceió, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montréal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Dakota du Nord/Beulah, Dakota du Nord/Centre, Dakota du Nord/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port d'Espagne, Porto Acre, Porto Velho, Porto-Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Saint-Domingue, São Paulo, Scoresbysund, Shiprock, Sitka, Saint Barthélemy, Saint-Johns, Saint-Kitts, Sainte-Lucie, Saint-Thomas, Saint-Vincent, Swift Current, Tegucigalpa, Thulé, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Vierges (îles), Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-gl.utf-8: Adak, Anchorage, Anguila, Antigua, Araguaina, Arxentina/Buenos Aires, Arxentina/Catamarca, Arxentina/Córdoba, Arxentina/Jujuy, Arxentina/La Rioja, Arxentina/Mendoza, Arxentina/Río Gallegos, Arxentina/Salta, Arxentina/San Juan, Arxentina/San Luis, Arxentina/Tucumán, Arxentina/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahia de Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Porto Coral, Costa Rica, Coyhaique, Crestón, Cuiaba, Curação, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Gran Turk, Granada, Guadalupe, Guatemala, Guayaquil, Güiana, Halifax, A Habana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Xamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Prince's, Maceió, Managua, Manaus, Marigot, Martinica, Matamoros, Mazatlán, Menominee, Mérida, Metlakatla, Cidade de México, Miquelon, Moncton, Monterrei, Montevideo, Montreal, Montserrat, Nassau, Nova York, Nipigon, Nome, Noronha, Dakota do norte/Beulah, Dakota do norte/Centro, Dakota do norte/New Salem, Nuuk, Ojinaga, Panamá, Pangnirtung, Paramaribo, Phoenix, Porto Príncipe, Porto España, Porto Acre, Porto Velho, Porto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, San Bartolomé, St. Johns, St. Kitts, St. Lucía, St. Thomas, St. Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-gu.utf-8: અડાક, એન્ચોરાગે, એનગુલ્લા, એન્ટિગુઆ, આરાગુએના, આર્જેન્ટિના/બુએનાસ એરિસ, આર્જેન્ટિના/કાટામાર્કા, આર્જેન્ટિના/કોર્ડોબા, આર્જેન્ટિના/જુજુય, આર્જેન્ટિના/લા રીઓજા, આર્જેન્ટિના/મેન્ડોઝા, આર્જેન્ટિના/રીઓ ગાલેગોસ, આર્જેન્ટિના/સાલ્ટા, આર્જેન્ટિના/સાન જુઆન, આર્જેન્ટિના/સાન લુઇસ, આર્જેન્ટિના/તુકુમાન, આર્જેન્ટિના/ઉસ્હુઇઆ, અરુબા, અસુન્કિઓન, અટિકોકાન, અટ્કા, બાહીઆ, બાહીઆ બાન્ડેરાસ, બાર્બાડોસ, બેલેમ, બેલિઝે, બ્લાન્ક-સેબ્લોન, બોઆ વિસ્ટા, બોગોટા, બોઇસે, કેન્બ્રિજ બે, કામ્પો ગ્રાન્ડે, કાન્કુન, કારાકાસ, સાયેને, કેયમેન, શિકાગો, ચિહુઆહુઆ, Ciudad_Juarez, કોરલ હાર્બર, કોસ્ટા રીકા, Coyhaique, Creston, ક્યુબા, કુરાકાઓ, ડેન્માર્કશોન, ડાઉસન, ડાઉસન ખાડી, ડેન્વર, ડેટ્રોઇટ, ડોમિનિકા, એડમોન્ટોન, ઇરુનેપે, અલ સાલ્વાડોર, એન્સેનાડા, Fort_Nelson, ફોર્ટાલેઝા, ગ્લેસ બે, ગોડથાબ, ગૂસ અખાત, ગ્રાન્ડ તુર્ક, ગ્રેનેડા, ગ્યુડેલોપ, ગ્વાટેમાલા, ગ્યુઆકીલ, ગુઆના, હાલિફેક્સ, હવાના, હેર્મોસિલ્લો, ઇન્ડિયાના/ઇન્ડિયાનાપોલિસ, ઇન્ડિયાના/નોક્સ, ઇન્ડિયાના/મારેન્ગો, ઇન્ડિયાના/પીટ્સબર્ગ, ઇન્ડિયાના/ટેલ સીટી, ઇન્ડિયાના/વેવાય, ઇન્ડિયાના/વિન્સેન્નેસ, ઇન્ડિયાના/વિનમેક, ઇનુવિક, ઇકાલુઇટ, જમૈકા, જુનેયુ, કેનટુકી/લુઇસવિલે, કેનટુકી/મોન્ટિસેલો, ક્રાલેન્ડિઝક, લા પાઝ, લિમા, લોસ એન્જેલસ, લોઅર પ્રિન્સેસ, મેસીઓ, માનાગુઆ, માનુસ, મારીગોટ, માર્ટિનિક, માતામોરોસ, મઝાટલાન, મેનોમિની, મેરિડા, મેટલાકાટલા, મેક્સિકો શહેર, મિક્લોન, મોન્કટોન, મોન્ટેર્રે, મોન્ટવિડીઓ, મોન્ટ્રિઅલ, મોન્ટસેર્રાટ, નાસાઉ, ન્યુ યોર્ક, નિપિગોન, નોમ, નોરોન્હા, નોર્થ ડાકોટા/બેઉલાહ, નોર્થ ડાકોટા/મધ્ય, નોર્થ ડાકોટા/ન્યુ સાલેમ, Nuuk, ઓજીનાગા, પનામા, પાન્ગનિર્તુગ, પારામારિબો, ફિનિક્સ, પોર્ટ-ઓફ-પ્રિન્સ, પોર્ટ ઓફ સ્પેન, પોર્ટો એકર, પોર્ટો વેલ્હો, પુએર્તો રિકો, Punta_Arenas, રેઇની નદી, રાન્કિન ઇન્લેટ, રેસિફે, રેગિના, રેસોલુટ, રીઓ બ્રાન્કો, સાન્ટા ઈઝાબેલ, સાન્ટારેમ, સાન્તિઆગો, સાન્ટો ડોમિન્ગો, સાઓ પાઉલો, સ્કોરબાયસન્ડ, શિપરોક, સિટ્કા, સેન્ટ બાર્થેલેમી, સેન્ટ જોહ્ન્સ, સેન્ટ કિટ્ટસ, સેન્ટ લુસિઆ, સેન્ટ થોમસ, સેન્ટ વિન્સેન્ટ, સ્વિફ્ટ પ્રવાહ, ટેગુસિગાલ્પા, થુલે, થન્ડર અખાત, ટિજુઆના, ટોર્નેડો, ટોર્ટોલા, વાનકુવર, વર્જીન, વ્હાઇટહોર્સ, વિનિપેગ, યાકુટાક, યેલોનાઇફ
Choices-he.utf-8: אדאק, אנקורג', אנגווילה, אנטיגואה, אראגואינה, ארגנטינה/בואנוס איירס, ארגנטינה/קטמרקה, ארגנטינה/קורדובה, ארגנטינה/חוחוי, ארגנטינה/לה ריוחה, ארגנטינה/מנדוסה, ארגנטינה/ריו גז'גוס, ארגנטינה/סלטה, ארגנטינה/סן חואן, ארגנטינה/סן לואיס, ארגנטינה/טוקומאן, ארגנטינה/אושואיה, ארובה, אסונסיון, אטיקוקן, אטקה, באהיה, באהיה באנדרס, ברבדוס, בלם, בליז, בלאנק-סאבלון, בואה ויסטה, בוגוטה, בויסי, מפרץ קמברידג', קאמפו קראנדה, קנקון, קראקס, קאיין, איי קיימן, שיקגו, צ'יהואהואה, סיודאד חוארס, קוראל הרבור, קוסטה ריקה, Coyhaique, קרסטון, קויאבה, קוראסאו, דנמרקשייבן, דוסון, דוסון קריק, דנבר, דטרויט, דומיניקה, אדמונטון, Eirunepe, אל סלוודור, אנסנדה, מבצר נלסון, פורטלזה, גלייס באי, נאוק, גוז באי, גרנד טורק, גרנדה, גוואדלופ, גואטמלה, גוויאקיל, גיאנה, הליפקס, הוואנה, ארמוסיו, אינדיאנה/אינדיאנפוליס, אינדיאנה/נוקס, אינדיאנה/מרנגו, אינדיאנה/פטרבורג, אינדיאנה/טל סיטי, אינדיאנה/ויוי, אינדיאנה/ונסן, אינדיאנה/וינמק, אינוביק, איקאלואיט, ג'מייקה, ג'ונו, קנטקי/לואיוויל, קנטקי/מונטיצ'לו, Kralendijk, לה פאס, לימה, לוס אנג'לס, Lower Princes, מסיו, מנגואה, מנאוס, מריגו, מרטיניק, מטמורוס, מזטיאן, מנומיני, מרידה, Metiakatia, מקסיקו סיטי, מיקול, מונקטון, מונטרי, מונטווידאו, מונטריאול, מונטסראט, נסאו, ניו יורק, ניפיגון, נום, נורוניה, דקוטה הצפונית/באולה, דקוטה הצפונית/סנטר, דקוטה הצפונית/ניו סאלם, נוק, Ojinaga, פנמה, פנגנירטונג, פרמריבו, פניקס, פורט-או-פרנס, פורט אוף ספיין, פורטו אקרי, פורטו ולאהו, פורטו ריקו, פונטה ארנס, Rainy River, Rankin Inlet, רסיפה, רג'ינה, רזולוט, ריו ברנקו, סנטה איזבל, סנטרם, סניאגו, סנטו דומינגו, סאו פאולו, Scoresbysund, שיפרוק, סיטקה, סנט ברתלמי, סנט ג'ונס, סנט קיטס, סנט לוסיה, סנט תומאס, סנט וינסנט, סויפט קורנט, טגוסיגלפה, תולה, Thunder Bay, טיחואנה, טורונטו, טורטולה, ונקובר, וירג'ין, Whitehorse, ויניפג, Yakutat, ילונייף
Choices-hr.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Cordoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad Juarez, Coral Harbour, Kostarika, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Gvatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamajka, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North Dakota/Beulah, North Dakota/Center, North Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Portoriko, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-hu.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentína/Buenos Aires, Argentína/Catamarca, Argentína/Cordoba, Argentína/Jujuy, Argentína/La Rioja, Argentína/Mendoza, Argentína/Rio Gallegos, Argentína/Salta, Argentina/San Juan, Argentína/San Luis, Argentina/Tucuman, Argentína/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahía de Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boáz, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Csihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havanna, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manausz, Marigot, Martinique, Matamoros, Mazatlán, Menominee, Merida, Metlakatla, Mexikóváros, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Észak-Dakota/Beulah, Észak-Dakota/Közép, Észak-Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Szent Bertalan, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-id.utf-8: Adak, Anchoraga, Anguila, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Katamarka, Argentina/Kordoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Pantai Cambridge, Campo Grande, Cancun, Karakas, Cayenne, Cayman, Chicago, Cihuahua, Ciudad_Juarez, Karang Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Savador, Ensenada, Fort_Nelson, Fortaleza, Pantai Glace, Godthab, Pantai Goose, Grand Turk, Grenada, Guadaloupa, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermisilo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell CIty, Indiana/Vevay, Indiana/Vincennes, Argentina/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinik, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Noma, Noronha, Dakota Utara/Beulah, Dakota Utara/Pusat, Dakota Utara/Salem Baru, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Pelabuhan Spanyol, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Sungai Rainy, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Saint Barthelemy, Saint John, Saint Kitt, Saint Lucia, Saint Thomas, Saint Vincent, Swift Current, Tegucigalpa, Thule, Pantai Thunder, Tijuana, Toronto, Tortoka, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-it.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Córdoba, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallego, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucumán, Argentina/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahía de Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Cambrige Bay, Campo Grande, Cancún, Caracas, Caienna, Isole Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curaçao, Danmarks Havn, Dawson, Dawson Creek, Denver, Detroit, Dominìca, Edmonton, Eirunepé, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Nuuk, Goose Bay, Grand Turk, Grenada, Guadalupa, Guatemala, Guayaquil, Guyana, Halifax, L'Avana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Giamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceió, Managua, Manaus, Marigot, Martinica, Matamoros, Mazatlán, Menominee, Mérida, Metlakatla, Città del Messico, Miquelon, Moncton, Monterrey, Montevideo, Montréal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Nord Dakota/Beulah, Nord Dakota/Center, Nord Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Porto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, San Paolo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-ja.utf-8: エイダック, アンカレジ, アングイラ, アンティグア, アラグアイナ, アルゼンチン/ブエノスアイレス, アルゼンチン/カタマルカ, アルゼンチン/コルドバ, アルゼンチン/フフイ, アルゼンチン/ラリオハ, アルゼンチン/メンドサ, アルゼンチン/リオガエゴス, アルゼンチン/サルタ, アルゼンチン/サンファン, アルゼンチン/サンルイス, アルゼンチン/トゥクマン, アルゼンチン/ウシュアイア, アルバ, アスンシオン, アティコカン, アトカ, バイア, バイアバンデラス, バルバドス, ベレン, ベリーズ, ブランサブロン, ボアヴィスタ, ボゴタ, ボイシ, ケンブリッジ湾, カンポグランデ, カンクン, カラカス, カイエンヌ, ケイマン, シカゴ, チワワ, Ciudad_Juarez, コーラルハーバー, コスタリカ, Coyhaique, クレストン, クヤバ, キュラソー, デンマークシャウン, ドーソン, ドーソン運河, デンヴァー, デトロイト, ドミニカ, エドモントン, エイルネペ, エルサルバドル, エンセナダ, フォートネルソン, フォルタレザ, グラッセ湾, ゴッドホープ, グース湾, グランドターク, グレナダ, グアドループ, グアテマラ, グアヤキル, ガイアナ, ハリファックス, ハバナ, エルモシヨ, インディアナ/インディアナポリス, インディアナ/ノックス, インディアナ/マレンゴ, インディアナ/ピーターズバーグ, インディアナ/テルシティ, インディアナ/ビベー, インディアナ/ヴィンセンズ, インディアナ/ウィナマック, イヌヴィック, イカルイット, ジャマイカ, ジュノー, ケンタッキー/ルーイヴィル, ケンタッキー/モンティセロ, クラレンディーク, ラパス, リマ, ロサンゼルス, ロワプリンセス, マセイオ, マナグア, マナウス, マリゴット, マルティニク, マタモロス, マサトラン, メノミニー, メリダ, メトラカトラ, メキシコシティ, ミクロン, マンクトン, モンテレー, モンテビデオ, モントリオール, モントセラト, ナッソー, ニューヨーク, ニピゴン, ノーム, ノロニャ, 北ダコタ/ベウラ, 北ダコタ/中央, 北ダコタ/ニューセイラム, ヌーク, オヒナガ, パナマ, パンナータング, パラマリボ, フェニックス, ポルトープランス, ポートオブスペイン, ポルトアクレ, ポルトヴェリエ, プエルトリコ, プンタアレナス, レイニーリバー, ランキン湾, レシフェ, レジャイナ, レソリュート, リオブランコ, サンタイサベル, サンタレン, サンチアゴ, セントドミニゴ, サンパウロ, スコレスビスン, シップロック, シトカ, セントバルテルミ, セントジョーンズ, セントキッツ, セントルチア, セントトーマス, セントビンセント, スイフトカレント, テグシガルパ, テューレ, サンダー湾, ティフアナ, トロント, トルトラ, バンクーバー, バージン, ホワイトホース, ウィニペグ, ヤクタト, イエローナイフ
Choices-ko.utf-8: 아닥, 앵커러지, 앵귈라, 앤티가 섬, 아라구아이나, 아르헨티나/부에노스아이레스, 아르헨티나/카타마르카, 아르헨티나/코르도바, 아르헨티나/후후이, 아르헨티나/라리오하, 아르헨티나/멘도사, 아르헨티나/리오가예고스, 아르헨티나/살타, 아르헨티나/산후안, 아르헨티나/산루이스, 아르헨티나/투쿠만, 아르헨티나/우수아이아, 아루바, 아순시온, 아티코칸, 애트카, 바이아, 바이아 데 반데라스, 바베이도스, 벨렘, 벨리즈, 블렁싸블롱, 보아비스타 섬, 보고타, 보이시, 캠브리지 베이, 캄푸그란데, 칸쿤, 카라카스, 카옌, 케이맨 제도, 시카고, 치와와, 시우다드 후아레스, 코랄 하버, 코스타리카, Coyhaique, 크레스턴, 쿠이아바, 퀴라소, 덴마크샤븐, 도슨, 도슨크릭, 덴버, 디트로이트, 도미니카, 에드먼턴, 에이루네페, 엘살바도르, 엔세나다, 포트 넬슨, 포르탈레자, 글레이스 베이, 고트호프, 구스 베이, 그랑 터크, 그레나다, 과들루프, 과테말라, 과야킬, 가이아나, 핼리팩스, 아바나, 에르모시요, 인디애나/인디애나폴리스, 인디애나/녹스, 인디애나/마렝고, 인디애나/페테스부르크, 인디애나/텔시티, 인디애나/베베이, 인디애나/빈센느, 인디애나/위나막, 이누빅, 이칼루이트, 자메이카, 주노, 켄터키/루이스빌, 켄터키/몬티첼로, 크랄렌데이크, 라파스, 리마, 로스앤젤레스, 로워 프린스, 마세이오, 마나과, 마나우스, 마리고, 마르티니크, 마타모로스, 마사틀란, 매노미니, 메리다, 메틀라카틀라, 멕시코시티, 미클롱, 멍크턴, 몬테레이, 몬테비데오, 몬트리올, 몬세라트, 나사우, 뉴욕, 니피곤, 놈, 노로냐, 노스다코타/뷰러, 노스다코타/중부, 노스다코타/뉴 살렘, 누크, 오지나가, 파나마, 팽니텅, 파라마리보, 피닉스, 포르토프랭스, 포트오브스페인, 포르투아크리, 포르투벨류, 푸에르토리코, 푼타아레나스, 레이니 리버, 랭킨 인라잇, 레시페, 리자이나, 레졸루트, 리우블랑코, 산타이사벨, 산타렘, 산티아고, 산토도밍고, 상파울로, 스코스비선드, 쉽록, 시트카, 생바르텔레미, 세인트존스, 세인트키츠, 세인트루시아, 세인트토마스, 세인트빈센트, 스위프트커런트, 테구시갈파, 툴레, 썬더베이, 티후아나, 토론토, 토르톨라 섬, 밴쿠버, 버진 제도, 화이트호스, 위니펙, 야쿠타트, 옐로나이프
Choices-ku.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Arjantîn/Buenos Aîres, Arjantîn/Katamarca, Arjantîn/Kordoba, Arjantîn/Jujuy, Arjantîn/La Rîoja, Arjantîn/Mendoza, Arjantîn/Rîo Gallegos, Arjantîn/Salta, Arjantîn/San Juan, Argentina/San_Luis, Arjantşn/Tucuman, Arjantîn/Ûşûîa, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominîk, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Hindistan/Îndianapolîs, Hindistan/Knoks, Hindistan/Marengo, Hindistan/Petersburg, Hindistan/Tell City, Hindistan/Vevay, Indianapolis/Vincennes, Hindistan/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentakî/Louisville, Kentakî/Montîcello, Kralendijk, La Paz, Lima, Los Angeles, Lower_Princes, Maceio, Managua, Manaus, Marîgot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North_Dakota/Beulah, Dakotaya Bakur/Navend, Dakotaya Bakur/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa_Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-lt.utf-8: Adakas, Ankoridžas, Angilija, Antigva, Araguaina, Argentina/Buenos Airės, Argentina/Katamarka, Argentina/Kordoba, Argentina/Žužujus, Argentina/La Riocha, Argentina/Mendosa, Argentina/Rio Galjegosas, Argentina/Salta, Argentina/San Chuanas, Argentina/San Luis, Argentina/Tukumanas, Argentina/Ušuaja, Aruba, Asunsjonas, Atikokanas, Atka, Bahia, Bahia_Banderas, Barbadosas, Belenas, Belizas, Blank-Sablonas, Boa Vista, Bogota, Boizis, Kembridž Bėjus, Campo Grande, Kankunas, Karakasas, Kajenas, Kaimanų salos, Čikaga, Čiuaua, Ciudad_Juarez, Koralinis Harboras, Kosta Rika, Coyhaique, Creston, Cuiaba, Kiurasao, Danmarkshavn, Dausonas, Dauson Krykas, Denveris, Detroitas, Dominika, Edmontonas, Eirunepe, Salvadoras, Ensenada, Fort_Nelson, Fortaleza, Gleis Bėjus, Godthab, Gūs Bėjus, Grand Terko sala, Grenada, Gvadelupa, Gvatemala, Gvajakilis, Gviana, Halifaksas, Havana, Hermosiljas, Indiana/Indianapolis, Indiana/Noksas, Indiana/Marengas, Indiana/Petersburgas, Indiana/Tel Sitis, Indiana/Vevėjus, Indiana/Vincenesas, Indiana/Vinmakas, Inuvikas, Ikaluitas, Jamaika, Džunas, Kentukis/Luizvilis, Kentukis/Montičelas, Kralendijk, La Pasas, Lima, Los Andželas, Lower_Princes, Masejo, Managva, Manausas, Marigot, Martinika, Matamoros, Masatlanas, Menominis, Merida, Metlakatla, Meksikas, Mikelonas, Monktonas, Monterėjus, Montevidėjas, Monrealis, Montseratas, Nasau, Niujorkas, Nipigonas, Numea, Noronha, North_Dakota/Beulah, Šiaurės Dakota/Centras, Šiaurės Dakota/Niusalemas, Nuuk, Ojinaga, Panama, Pangnirtungas, Paramaribas, Finiksas, Port o Prensas, Port of Speinas, Porto Akrė, Porto Veljas, Puerto Rikas, Punta_Arenas, Rein Riveras, Rankin Inletas, Resifė, Redžaina, Rezoliutas, Riu Brankas, Santa_Isabel, Santaremas, Santjago, Santo Domingas, San Paulas, Skoresbiusūnas, Šiprokas, Sitka, Sent Bartelmis, Sent Džonsas, Sent Kitsas, Sent Luisas, Sent Tomas, Sent Vinsentas, Svift Karentas, Tegusigalpa, Tulė, Tander Bėjus, Tichuana, Torontas, Tortola, Vankuveris, Virdžinija, Vaithorsas, Vinipegas, Kautatas, Jelounaifas
Choices-ml.utf-8: അഡാക്, ആങ്കറേജ്, ആങ്ക്വില്ല, ആന്റിഗ്വ, അരാഗ്വിയാന, അര്‍ജ്ജന്റീന/ബ്യൂനസ് അയേര്‍സ്, അര്‍ജ്ജന്റീന/കടാമാര്‍ക, അര്‍ജ്ജന്റീന/കോര്‍ഡോബ, അര്‍ജ്ജന്റീന/ജുജുയ്, അര്‍ജ്ജന്റീന/ല റിയോജ, അര്‍ജ്ജന്റീന/മെന്‍ഡോസ, അര്‍ജ്ജന്റീന/റിയോ ഗലേഗോസ്, Argentina/Salta, അര്‍ജ്ജന്റീന/സാന്‍ യുവാന്‍, അര്‍ജ്ജന്റീന/സാന്‍ ലൂയിസ്, അര്‍ജ്ജന്റീന/ടാകുമാന്‍, അര്‍ജ്ജന്റീന/ഉഷ്വൈയ, അറൂബ, അസന്‍സിയോണ്‍, ആറ്റികൊക്കാന്‍, അറ്റ്ക, ബഹിയ, Bahia_Banderas, ബാര്‍ബഡോസ്, ബെലം, ബെലീസ്, ബ്ലാങ്ക്-സബ്ലോന്‍, ബോയ വിസ്റ്റ, ബൊഗോട്ട, ബോയിസ്, കേംബ്രിഡ്ജ് ഉള്‍ക്കടല്‍, കാമ്പോ ഗ്രണ്ടേ, കാന്‍കൂണ്‍, കരാകസ്, കയേന്‍, കയ്മാന്‍, ചിക്കാഗോ, ചിഹ്വാഹ്വ, Ciudad_Juarez, കോറല്‍ തുറമുഖം, കോസ്റ്റ റിക, Coyhaique, Creston, ക്യുയിബ, ക്യുരാകവോ, ഡന്മാര്‍ക്ഷാവന്‍, ഡാസണ്‍, ഡാസണ്‍ ക്രീക്ക്, ഡെന്‍വര്‍, ഡെട്രോയിറ്റ്, ഡൊമിനിക, എഡ്മോണ്ടന്‍, യിരുനേപേ, എല്‍ സാല്‍വഡോര്‍, എന്‍സേനഡ, Fort_Nelson, ഫോര്‍ട്ടലേസ, ഗ്ലേസ് ഉള്‍ക്കടല്‍, ഗോഡ്താബ്, ഗൂസ് ഉള്‍ക്കടല്‍, ഗ്രാന്‍ഡ് ടര്‍ക്ക്, ഗ്രെനഡ, ഗ്വാഡെലോപ്, ഗ്വാട്ടിമല, ഗുവായക്വില്‍, ഗയാന, ഹാലിഫാക്സ്, ഹവാന, ഹെര്‍മോസില്ലോ, ഇന്ത്യാന/ഇന്ത്യാനപോളിസ്, ഇന്ത്യാന/നോക്സ്, ഇന്ത്യാന/മരെങ്കോ, ഇന്ത്യാന/പീറ്റേര്‍സ്ബര്‍ഗ്, ഇന്ത്യാന/ടെല്‍ സിറ്റി, ഇന്ത്യാന/വെവായ്, ഇന്ത്യാന/വിന്‍സെന്നിസ്, ഇന്ത്യാന/വിനാമാക്, ഇനുവിക്, ഇഖ്വാല്വിറ്റ്, ജമൈക, ജുന്യൂ, കെന്റക്കി/ലൂയിവില്ല, കെന്റക്കി/മോണ്ടിസെല്ലോ, Kralendijk, ലാ പാസ്, ലിമ, ലോസ് ഏഞ്ചലസ്, Lower_Princes, മസീയോ, മനാഗ്വ, മാനസ്, മാരിഗോട്ട്, മാര്‍‌ടിനിക്, Matamoros, മസറ്റ്‌ലാന്‍, മെനോമിനീ, മെരിഡ, Metlakatla, മെക്സികോ നഗരം, മിക്വലോണ്‍, മോങ്ടന്‍, മോണ്ടറി, മോണ്ടിവിഡിയോ, മോണ്ട്രിയല്‍, മോണ്ട്സെറാത്, നാസ്സു, ന്യൂ യോര്‍ക്ക്, നിപിഗോണ്‍, നോം, നൊരോഞ്ഞ, North_Dakota/Beulah, നോര്‍ത്ത് ഡക്കോട്ട/സെന്റര്‍, നോര്‍ത്ത് ഡക്കോട്ട/ന്യൂ സലേം, Nuuk, Ojinaga, പനാമ, പാങ്നിര്‍ടങ്ങ്, പാരാമരിബോ, ഫീനിക്സ്, പോര്‍ട്ട്-ഓ-പ്രിന്‍സ്, പോര്‍ട്ട് ഓഫ് സ്പെയിന്‍, പോര്‍ട്ടോ ആക്രേ, പോര്‍ട്ടോ വെല്ഹോ, പ്യെര്‍‌ട്ടോ റികോ, Punta_Arenas, റെയ്നി നദി, റാങ്കിന്‍ ഇന്‍ലെറ്റ്, റെസിഫെ, റെജീന, റെസൊല്യൂട്ട്, റിയോ ബ്രാങ്കോ, Santa_Isabel, സാന്റാറെം, സാന്റിയാഗോ, സാന്റോ ഡൊമിങ്കോ, സാവോ പോളോ, സ്കോര്‍സ്‌ബൈസണ്ട്, ഷിപ്റോക്ക്, Sitka, സെയിന്റ് ബര്‍ത്തലേമി, സെയിന്റ് ജോണ്‍സ്, സെയിന്റ് കിറ്റ്സ്, സെയിന്റ് ലൂസിയ, സെയിന്റ് തോമസ്, സെയിന്റ് വിന്‍സന്റ്, സ്വിഫ്റ്റ് കറന്റ്, ടെഗുസിഗല്‍പ, തുലെ, തുണ്ടര്‍ ഉള്‍ക്കടല്‍, ടിജുവാന, ടൊറണ്ടോ, ടോര്‍ട്ടോല, വാന്‍കോവര്‍, വിര്‍ജിന്‍, വൈറ്റ്ഹോര്‍സ്, വിന്നിപെഗ്, യാകുടാറ്റ്, യെല്ലോനൈഫ്
Choices-nl.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentinië/Buenos Aires, Argentinië/Catamarca, Argentinië/Cordoba, Argentinië/Jujuy, Argentinië/La Rioja, Argentinië/Mendoza, Argentinië/Rio Gallegos, Argentinië/Salta, Argentinië/San Juan, Argentinië/San Luis, Argentinië/Tucuman, Argentinië/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia de Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Caymaneilanden, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Beneden Prinsen Kwartier, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico Stad, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Noord Dakota/Beulah, Noord Dakota/Center, Noord Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, Sint-Bartholomeus, St. Johns, St. Kitts, St. Lucia, St. Thomas, St. Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-pl.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentyna/Buenos Aires, Argentyna/Catamarca, Argentyna/Cordoba, Argentyna/Jujuy, Argentyna/La Rioja, Argentyna/Mendoza, Argentyna/Rio Gallegos, Argentyna/Salta, Argentyna/San Juan, Argentyna/San Luis, Argentyna/Tucuman, Argentyna/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Kajenna, Kajmany, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Kostaryka, Coyhaique, Creston (Kanada), Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominika, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Nuuk (duń. Godthåb), Goose Bay, Grand Turk, Grenada, Gwadelupa, Gwatemala, Guayaquil, Gujana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamajka, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martynika, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Meksyk (miasto), Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, Nowy Jork, Nipigon, Nome, Noronha, Dakota Północna/Beulah, Dakota Północna/Center, Dakota Północna/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port-of-Spain, Porto Acre, Porto Velho, Portoryko, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Saint-Barthelemy, St. Johns, Saint Kitts, Saint Lucia, Saint Thomas, Saint Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-pt.utf-8: Adak, Anchorage, Ilhas Anguillas, Antígua, Araguaína, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Córdova, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Assunção, Atikokan, Atka, Baía, Bahia de Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Baía de Cambridge, Campo Grande, Cancún, Caracas, Caiena, Caimão, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepé, El Salvador, Ensenada, Fort Nelson, Fortaleza, Baía Glace, Godthab, Baía de Goose, Grand Turk, Granada, Guadalupe, Guatemala, Guaiaquil, Guiana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Prince's, Maceió, Manágua, Manaus, Marigot, Martinica, Matamoros, Mazátlan, Menominee, Merida, Metlakatla, Cidade do México, Miquelon, Moncton, Monterrei, Montevideo, Montreal, Montserrat, Nassau, Nova Iorque, Nipigon, Nome, Noronha, Dacota do Norte/Beulah, Dacota do Norte/Centro, Dacota do Norte/New Salem, Nuuk, Ojinaga, Panamá, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Porto da Espanha, Porto Acre, Porto Velho, Porto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, São Bartolomeu, St Johns, St Kitts, Santa Lúcia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-pt_br.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argentina/Buenos Aires, Argentina/Catamarca, Argentina/Córdova, Argentina/Jujuy, Argentina/La Rioja, Argentina/Mendoza, Argentina/Rio Gallegos, Argentina/Salta, Argentina/San Juan, Argentina/San Luis, Argentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curaçau, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Granada, Guadalupe, Guatemala, Guayaquil, Guiana, Halifax, Havana, Hermosillo, Indiana/Indianápolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Príncipe Menor, Maceió, Manágua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Cidade do México, Miquelon, Moncton, Monterrey, Montevidéu, Montreal, Montserrat, Nassau, Nova York, Nipigon, Nome, Noronha, Dakota do Norte/Beulah, Dakota do Norte/Centro, Dakota do Norte/New Salem, Nuuk, Ojinaga, Panamá, Pangnirtung, Paramaribo, Phoenix, Porto Príncipe, Porto de Espanha, Porto Acre, Porto Velho, Porto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, São Domingos, São Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-ro.utf-8: Adak, Anchorage, Anguila, Antigua, Araguaina, Argentina / Buenos Aires, Argentina / Catamarca, Argentina / Cordoba, Argentina / Jujuy, Argentina / La Rioja, Argentina / Mendoza, Argentina / Rio Gallegos, Argentina / Salta, Argentina / San Juan, Argentina / San Luis, Argentina / Tucuman, Argentina / Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana / Knox, Indiana / Marengo, Indiana / Petersburg, Indiana / Tell City, Indiana / Vevay, Indiana / Vincennes, Indiana / Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky / Louisville, Kentucky / Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinica, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New_York, Nipigon, Nome, Noronha, Dakota de Nord / Beulah, Dakota de Nord / Center, Dakota de Nord / New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port au Prince, Port of Spain, Porto Acre, Porto Velho, Porto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Saint Barthelemy, Saint Johns, Saint Kitts, Saint Lucia, Saint Thomas, Saint Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-ru.utf-8: Адак, Анкоридж, Ангилья, Антигуа, Арагуаина, Аргентина/Буэнос-Айрес, Аргентина/Катамарка, Аргентина/Кордова, Аргентина/Жужуй, Аргентина/Ла-Риоха, Аргентина/Мендоса, Аргентина/Рио-Гальегос, Аргентина/Сальта, Аргентина/Сан-Хуан, Аргентина/Сан-Луис, Аргентина/Сан-Мигель-де-Тукуман, Аргентина/Ушуайя, Аруба, Асунсьон, Атикокан, Атка, Баия, Баия-де-Бандерас, Барбадос, Белен, Белиз, Бланк-Саблон, Боа-Виста, Богота, Бойсе, Кеймбридж-Бей, Кампу-Гранди, Канкун, Каракас, Кайенна, Кайман, Чикаго, Чиуауа, Ciudad_Juarez, Корал-Харбор, Коста-Рика, Coyhaique, Крестон, Куяба, Кюрасао, Данмарксхавн, Доусон, Доусон-Крик, Денвер, Детройт, Доминика, Эдмонтон, Эйрунепе, Эль-Сальвадор, Энсенада, Форт-Нельсон, Форталеза, Глейс-Бей, Готхоб, Гус-Бей, Гранд-Турк, Гренада, Гваделупа, Гватемала, Гуаякиль, Гайана, Галифакс, Гавана, Эрмосильо, Индиана/Индианаполис, Индиана/Нокс, Индиана/Маренго, Индиана/Петербург, Индиана/Телль-Сити, Индиана/Вивей, Индиана/Винсенс, Индиана/Винамак, Инувик, Икалуит, Ямайка, Джуно, Кентукки/Луисвилл, Кентукки/Монтичелло, Кралендейк, Ла-Пас, Лима, Лос-Анджелес, Лоуэр-Принцес, Масейо, Манагуа, Манаус, Маригот, Мартиника, Матаморос, Масатлан, Меномини, Мерида, Метлакатла, Мехико, Микелон, Монктон, Монтеррей, Монтевидео, Монреаль, Монтсеррат, Нассау, Нью-Йорк, Нипигон, Ном, Норона, Северная Дакота/Бойла, Северная Дакота/Центр, Северная Дакота/Нью-Салем, Nuuk, Охинага, Панама, Пангниртанг, Парамарибо, Феникс, Порт-о-Пренс, Порт-оф-Спейн, Порту-Акре, Порту-Велью, Пуэрто-Рико, Пунта-Аренас, Рейни-Ривер, Рэнкин-Инлет, Ресифи, Регина, Резолют, Риу-Бранку, Санта-Исабель, Сантарем, Сантьяго, Санто-Доминго, Сан-Паулу, Скорсбисунн, Шипрок, Ситка, Сент-Бартелеми, Сент-Джонс, Сент-Китс, Сент-Люсия, Сент-Томас, Сент-Винсент, Свифт-Карент, Тегусигальпа, Туле, Тандер-Бей, Тихуана, Торонто, Тортола, Ванкувер, Вирджиния, Уайтхорс, Виннипег, Якутат, Еллоунайф
Choices-sk.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaína, Argentína/Buenos Aires, Argentína/Catamarca, Argentína/Córdoba, Argentína/Jujuy, Argentína/La Rioja, Argentína/Mendoza, Argentína/Río Gallegos, Argentína/Salta, Argentína/San Juan, Argentína/San Luis, Argentína/Tucumán, Argentína/Ushuaia, Aruba, Asunción, Atikokan, Atka, Bahia, Bahía de Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Kajmanie ostrovy, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Kostarika, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, Salvádor, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamajka, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower Prince's, Maceió, Managua, Manaus, Marigot, Martinik, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexiko, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, Severná Dakota/Beulah, Severná Dakota/Center, Severná Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Pôrto Velho, Portoriko, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarem, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, Saint-Barthélemy, St. John, Svätý Krištof, Svätá Lucia, St. Thomas, Svätý Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-sq.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Argjentina/Buenos Aires, Argjentina/Catamarca, Argjentina/Cordoba, Argjentina/Jujuy, Argjentina/La Rioja, Argjentina/Mendoza, Argjentina/Rio Gallegos, Argentina/Salta, Argjentina/San Juan, Argjentina/San Luis, Argjentina/Tucuman, Argentina/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaica, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower_Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North_Dakota/Beulah, North Dakota/Center, North Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa_Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-sv.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaína, Buenos Aires (Argentina), Catamarca (Argentina), Córdoba (Argentina), Jujuy (Argentina), La Rioja (Argentina), Mendoza (Argentina), Río Gallegos (Argentina), Salta (Argentina), San Juan (Argentina), San Luis (Argentina), Tucumán (Argentina), Ushuaia (Argentina), Aruba, Asunción, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogotá, Boise, Cambridge Bay, Campo Grande, Cancún, Caracas, Cayenne, Caymanöarna, Chicago, Chihuahua, Ciudad Juárez, Coral Harbour, Costa Rica, Coyhaique, Kreston, Cuiabá, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthåb, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havanna, Hermosillo, Indianapolis (Indiana), Knox (Indiana), Marengo (Indiana), Petersburg (Indiana), Tell City (Indiana), Vevay (Indiana), Vincennes (Indiana), Winamac (Indiana), Inuvik, Iqaluit, Jamaica, Juneau, Louisville (Kentucky), Monticello (Kentucky), Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceió, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlán, Menominee, Mérida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Fernando de Noronha, Beulah (North Dakota), Central (North Dakota), New Salem (North Dakota), Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa Isabel, Santarém, Santiago, Santo Domingo, São Paulo, Scoresbysund, Shiprock, Sitka, Saint-Barthélemy, Saint John's, Saint Kitts, Saint Lucia, Saint Thomas, Saint Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Jungfruöarna, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-th.utf-8: Adak, แองเคอเรจ, แองกวิลลา, แอนติกา, Araguaina, อาร์เจนตินา/บัวโนสไอเรส, อาร์เจนตินา/Catamarca, อาร์เจนตินา/Cordoba, อาร์เจนตินา/Jujuy, อาร์เจนตินา/La Rioja, อาร์เจนตินา/Mendoza, อาร์เจนตินา/Rio Gallegos, อาร์เจนตินา/Salta, อาร์เจนตินา/ซานฮวน, อาร์เจนตินา/ซานลุยส์, อาร์เจนตินา/Tucuman, อาร์เจนตินา/Ushuaia, อารูบา, อะซุนซิออง, Atikokan, แอตกา, บาเยีย, Bahia_Banderas, บาร์เบโดส, เบเลง, เบลีซ, Blanc-Sablon, บัววีชตา, โบโกตา, บอยซี, อ่าวเคมบริดจ์, กัมปูกรันดี, Cancun, การากัส, กาแยน, เคย์แมน, ชิคาโก, ชีวาวา, Ciudad_Juarez, คอรัลฮาร์เบอร์, คอสตาริกา, Coyhaique, Creston, กุยาบา, คิวราเซา, Danmarkshavn, ดอว์สัน, ดอว์สันครีก, เดนเวอร์, ดีทรอยต์, โดมินิกา, เอดมันตัน, Eirunepe, เอลซัลวาดอร์, Ensenada, Fort_Nelson, ฟอร์ตาเลซา, Glace_Bay, กอตฮอบ, กูสเบย์, แกรนด์เติร์ก, เกรเนดา, กวาเดอลูป, กัวเตมาลา, Guayaquil, กายอานา, แฮลิแฟกซ์, ฮาวานา, เอร์โมซีโย, อินดีแอนา/อินเดียแนโพลิส, อินดีแอนา/Knox, อินดีแอนา/Marengo, อินดีแอนา/Petersburg, อินดีแอนา/เทลล์ซิตี, อินดีแอนา/Vevay, อินดีแอนา/Vincennes, อินดีแอนา/Winamac, Inuvik, อีกวาลิต, จาเมกา, จูโน, เคนทักกี/ลุยส์วิลล์, เคนทักกี/Monticello, Kralendijk, ลาปาซ, ลิมา, ลอสแองเจลีส, Lower_Princes, มาเซโอ, มานากัว, มาเนาส์, Marigot, มาร์ตินีก, Matamoros, Mazatlan, มีนอมินี, เมรีดา, Metlakatla, เม็กซิโกซิตี, มีเกอลง, Moncton, มอนเตร์เรย์, มอนเตวิเดโอ, มอนทรีออล, มอนต์เซอร์รัต, แนสซอ, นิวยอร์ก, Nipigon, โนม, Noronha, นอร์ทดาโคตา/Beulah, นอร์ทดาโคตา/เซนเตอร์, นอร์ทดาโคตา/นิวเซเลม, Nuuk, Ojinaga, ปานามา, Pangnirtung, ปารามาริโบ, ฟินิกซ์, ปอร์โตแปรงซ์, พอร์ต-ออฟ-สเปน, ปอร์ตูอาเกร, ปอร์ตูเวลโย, เปอร์โตริโก, Punta_Arenas, Rainy_River, Rankin_Inlet, เรซีเฟ, ริไจนา, Resolute, รีโอบรังโก, Santa_Isabel, Santarem, ซันติอาโก, ซันโตโดมิงโก, เซาเปาลู, Scoresbysund, Shiprock, Sitka, St_Barthelemy, เซนต์จอห์นส์, เซนต์คิตส์, เซนต์ลูเซีย, เซนต์โทมัส, เซนต์วินเซนต์, สวิฟต์เคอร์เรนต์, เตกูซิกัลปา, Thule, ธันเดอร์เบย์, Tijuana, โทรอนโต, Tortola, แวนคูเวอร์, เวอร์จิน, ไวต์ฮอร์ส, วินนิเพก, แยคุแทต, เยลโลว์ไนฟ์
Choices-tr.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Arjantin/Buenos Aires, Arjantin/Katamarka, Arjantin/Kordoba, Arjantin/Jujuy, Arjantin/La Rioja, Arjantin/Mendoza, Arjantin/Rio Gallegos, Arjantin/Salta, Arjantin/San Juan, Arjantin/San Luis, Arjantin/Tucuman, Arjantin/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Koyu, Campo Grande, Cancun, Karakas, Cayenne, Cayman, Şikago, Chihuahua, Ciudad Juarez, Coral Limanı, Kosta Rika, Coyhaique, Kreston, Cuiaba, Curaçao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominika, Edmonton, Eirunepe, El Salvador, Ensenada, Fort Nelson, Fortaleza, Glace Bay, Godthab, Goose Koyu, Grand Turk, Grenada, Guadelup, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamaika, Juneau, Kentucky/Louisville, Kentucky/Montiselo, Kralendijk, La Paz, Lima, Los Angeles, Lower Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Mikuelon, Moncton, Monterrey, Montevideo, Montreal, Monserat, Nassau, New York, Nipigon, Nome, Noronha, Kuzey Dakota/Beulah, Kuzey Dakota/Merkez, Kuzey Dakota/Yeni Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Akre, Porto Velho, Porto Riko, Punta Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa İsabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, Sen Barthelemy, Sen Johns, Sen Kitts, Sen Lusia, Sen Thomas, Sen Vinsent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-vi.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Ă-gienh-ti-nạ/Buenos Aires, Ă-gienh-ti-nạ/Catamarca, Ă-gienh-ti-nạ/Cordoba, Ă-gienh-ti-nạ/Jujuy, Ă-gienh-ti-nạ/La Rioja, Ă-gienh-ti-nạ/Mendoza, Ă-gienh-ti-nạ/Rio Gallegos, Argentina/Salta, Ă-gienh-ti-nạ/San Juan, Ă-gienh-ti-nạ/San Luis, Ă-gienh-ti-nạ/Tucuman, Ă-gienh-ti-nạ/Ushuala, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belem, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Cancun, Caracas, Cayenne, Cayman, Chicago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab, Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indiana/Indianapolis, Indiana/Knox, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Gia-mê-ca, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower_Princes, Maceio, Managua, Manaus, Marigot, Martinique, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha, North_Dakota/Beulah, North Dakota/Center, North Dakota/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa_Isabel, Santarem, Santiago, Santo Domingo, Sao Paulo, Scoresbysund, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Choices-wo.utf-8: Adak, Anchorage, Anguilla, Antigua, Araguaina, Arsantiin/Buenos Aires, Arsantiin/Catamarca, Arsantiin/Kordoba, Arsantiin/Jujuy, Arsantiin/La Rioja, Arsantiin/Mendoza, Arsantiin/Rio Gallegos, Arsantiin/Salta, Arsantiin/San Juan, Arsantiin/San Luis, Arsantiin/Tucuman, Arsantiin/Ushuaia, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belém, Belize, Blanc-Sablon, Boa Vista, Bogota, Boise, Cambridge Bay, Campo Grande, Kankun, Karakas, Cayenne, Kayman, Cikaago, Chihuahua, Ciudad_Juarez, Coral Harbour, Costa Rica, Coyhaique, Creston, Cuiabá, Curacao, Danmarkshavn (côte Est - Nord de Scoresbysund), Dawson, Dawson Creek, Denver, Detroit, Dominika, Edmonton, Eirunepe, El Salvador, Ensenada, Fort_Nelson, Fortaleza, Glace Bay, Godthab (cas général), Goose Bay, Grand Turk, Grenada, Guadeloupe, Guatemala, Guyaquil (cas général), Guyana, Halifax, Habaana, Hermosillo, Indiana/Indianapolis, Indiana/Knoks, Indiana/Marengo, Indiana/Petersburg, Indiana/Tell City, Indiana/Vevay, Indiana/Vincennes, Indiana/Winamac, Inuvik, Iqaluit, Jamayka, Juneau, Kentucky/Louisville, Kentucky/Monticello, Kralendijk, La Paz, Lima, Los Angeles, Lower_Princes, Maceió, Managua, Manaus, Marigot, Martinik, Matamoros, Mazatlan, Menominee, Merida, Metlakatla, Mexico City, Miquelon, Moncton, Monterrey, Montevideo, Montreal, Montserrat, Nassau, New York, Nipigon, Nome, Noronha (îles de l'Atlantique), North_Dakota/Beulah, Dakota Noor/Digg, Dakota Noor/New Salem, Nuuk, Ojinaga, Panama, Pangnirtung, Paramaribo, Phoenix, Port-au-Prince, Port of Spain, Porto Acre, Porto Velho, Puerto Rico, Punta_Arenas, Rainy River, Rankin Inlet, Recife, Regina, Resolute, Rio Branco, Santa_Isabel, Santarem, Santiago (cas général), Santo Domingo, São Paulo, Scoresbysund - Ittoqqortoormiit, Shiprock, Sitka, St Barthelemy, St Johns, St Kitts, St Lucia, St Thomas, St Vincent, Swift Current, Tegucigalpa, Thule - Pituffik, Thunder Bay, Tijuana, Toronto, Tortola, Vancouver, Virgin, Whitehorse, Winnipeg, Yakutat, Yellowknife
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Antarctica
Choices: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-be.utf-8: Кэйсі, Дэвіс, Дзюмонт-д-Урвіль, Macquarie, Моўсан, Мак-Мурда, Палмэр, Ратэра, Сыёва, Troll, Васток
Choices-bg.utf-8: Кейси, Дейвис, Дюмон Дюрвил, Macquarie, Моусън, МакМърдо, Палмър, Ротера, Сьова, Troll, Восток
Choices-ca.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-cs.utf-8: stanice Casey, stanice Davis, stanice Dumont-d'Urville, Macquarie, stanice Mawson, stanice McMurdo, stanice Palmer, stanice Rothera, stanice Syowa, Troll, stanice Vostok
Choices-da.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-de.utf-8: Casey, Davis, DumontDUrville, Macquarieinsel, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-en.utf-8: Casey, Davis, Dumont d'Urville, Macquarie, Mawson, McMurdo (South Pole), Palmer, Rothera, Syowa, Troll, Vostok
Choices-es.utf-8: Casey, Davis, Dumont d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-eu.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-fi.utf-8: Casey, Davis, Dumont-d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-fr.utf-8: Base Casey, Base Davis, Base Dumont-d'Urville, Macquarie, Base Mawson, Base McMurdo, Base Palmer, Base Rothera, Base Syowa, Troll, Base Vostok
Choices-gl.utf-8: Casey, Davis, Dumont-d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-gu.utf-8: કેસે, ડેવીસ, ડુમોન્ટડુર્વિલે, મેક્વારિન, માઉસેન, મેકમુરડો, પાલ્મેર, રોથેરા, સયોવા, Troll, વોસ્તોક
Choices-he.utf-8: Casey, דייוויס, DumontDUrville, מקוארי, Mawson, McMurdo, Palmer, Rothera, Syowa, טרול, ווסטוק
Choices-hr.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-hu.utf-8: Casey, Davis, Dumont-d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vosztok
Choices-id.utf-8: Casey, Davis, Dumont-d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-it.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-ja.utf-8: ケーシー, デーヴィス, デュモンデュルヴィル, マッコーリー, モーソン, マクムード, パーマー, ロデラ, 昭和基地, トロル, ヴォストーク
Choices-ko.utf-8: 케세이, 데이비스, 뒤몽 뒤르빌, 맥쿼리, 모슨, 맥머도, 팔머, 로데라, 쇼와, 트롤, 보스토크
Choices-ku.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-lt.utf-8: Casey, Davis, DumontDUrvilis, Macquarie, Mavsonas, Mak-Mardas, Palmeris, Rothera, Seva, Troll, Vostokas
Choices-ml.utf-8: കാസീ, ഡാവിസ്, ഡുമൊണ്ട്-ഡി'ഉര്‍വില്ലെ, Macquarie, മാസണ്‍, മക്മര്‍ഡോ, പാമര്‍, റൊതേര, സിയോവ, Troll, വോസ്ടോക്
Choices-nl.utf-8: Casey, Davis, Dumont d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-pl.utf-8: Casey, Davis, Dumont d' Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Wostok
Choices-pt.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-pt_br.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-ro.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-ru.utf-8: Кейси, Дейвис, Дюмон-д'Юрвиль, Маккуори, Моусон, Мак-Мердо, Палмер, Ротера, Сёва, Тролль, Восток
Choices-sk.utf-8: Casey, Davis, Dumont d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-sq.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-sv.utf-8: Casey, Davis, Dumount d'Urville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-th.utf-8: เคซีย์, เดวิส, DumontDUrville, Macquarie, Mawson, McMurdo, พาล์เมอร์, Rothera, Syowa, Troll, วอสต็อก
Choices-tr.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-vi.utf-8: Casey, Davis, DumontDUrville, Macquarie, Mawson, McMurdo, Palmer, Rothera, Syowa, Troll, Vostok
Choices-wo.utf-8: Baas Casey, Baas Davis, BaasDumont-d'Urville, Macquarie, Baas Mawson, Baas McMurdo, Baas Palmer, Baas Rothera, Baas Syowa, Troll, Baas Vostok
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Arctic
Choices: Longyearbyen
Choices-be.utf-8: Лонг'ерб'ен
Choices-bg.utf-8: Лонгиърбйен
Choices-ca.utf-8: Longyearbyen
Choices-cs.utf-8: Longyearbyen
Choices-da.utf-8: Longyearbyen
Choices-de.utf-8: Longyearbyen
Choices-en.utf-8: Longyearbyen
Choices-es.utf-8: Longyearbyen
Choices-eu.utf-8: Longyearbyen
Choices-fi.utf-8: Longyearbyen
Choices-fr.utf-8: Longyearbyen
Choices-gl.utf-8: Longyearbyen
Choices-gu.utf-8: લોન્ગયરબયેન
Choices-he.utf-8: לונגיירביאן
Choices-hr.utf-8: Longyearbyen
Choices-hu.utf-8: Longyearbyen
Choices-id.utf-8: Longyearbyen
Choices-it.utf-8: Longyearbyen
Choices-ja.utf-8: ロングイールビュアン
Choices-ko.utf-8: 롱위에아르비엔
Choices-ku.utf-8: Longyearbyen
Choices-lt.utf-8: Longjyras
Choices-ml.utf-8: ലോങിയര്‍ബയന്‍
Choices-nl.utf-8: Longyearbyen
Choices-pl.utf-8: Longyearbyen
Choices-pt.utf-8: Longyearbyen
Choices-pt_br.utf-8: Longyearbyen
Choices-ro.utf-8: Longyearbyen
Choices-ru.utf-8: Лонгийир
Choices-sk.utf-8: Longyearbyen
Choices-sq.utf-8: Longyearbyen
Choices-sv.utf-8: Longyearbyen
Choices-th.utf-8: ลองเยียร์เบียน
Choices-tr.utf-8: Longyearbyen
Choices-vi.utf-8: Longyearbyen
Choices-wo.utf-8: Longyearbyen
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Asia
Choices: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho_Chi_Minh, Hong_Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Kathmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala_Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom_Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seoul, Shanghai, Singapore, Srednekolymsk, Taipei, Tashkent, Tbilisi, Tehran, Tel_Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Yekaterinburg, Yerevan
Choices-be.utf-8: Адан, Алматы, Аман, Анадыр, Актаў, Актоб, Ашгабат, Atyrau, Багдад, Бахрэйн, Баку, Банкок, Barnaul, Бэйрут, Бішкек, Бруней, Chita, Чойбалсан, Чонкінг, Каломба, Дамаск, Дака, Дылі, Дубай, Душанбэ, Famagusta, Газа, Харбін, Hebron, Хо Шы Мін, Ганконг, Хоўд, Іркуцк, Стамбул, Джакарта, Джаяпура, Ерусалім, Кабул, Камчатка, Карачы, Кашгар, Катманду, Khandyga, Кальката, Краснаярск, Куала-Лумпур, Кучынг, Кувэйт, Макаў, Магадан, Макасар, Маніла, Мускат, Нікосія, Novokuznetsk, Новасібірск, Омск, Арал, Пном-Пэнь, Пантыянак, Пхеньян, Катар, Qostanay, Кызыларда, Рыяд, Сахалін, Самарканд, Сеул, Шанхай, Сінгапур, Srednekolymsk, Тайпэй, Ташкент, Тбілісі, Тэгеран, Тэль-Авіў, Тымпху, Токіё, Tomsk, Улан-Батар, Урумкі, Ust-Nera, В'ент'ян, Уладзівасток, Якуцк, Рангун, Екацерынбург, Ераван
Choices-bg.utf-8: Аден, Алмати, Аман, Анадир, Актау, Актобе, Ашхабад, Atyrau, Багдад, Бахрейн, Баку, Банкок, Barnaul, Бейрут, Бишкек, Бруней, Chita, Чойбалсан, Чонгкинг, Коломбо, Дамаск, Дака, Дили, Дубай, Душанбе, Famagusta, Газа, Харбин, Hebron, Хо Ши Мин, Хонг Конг, Ховд, Иркутск, Истанбул, Джакарта, Джаяпура, Йерусалим, Кабул, Камчатка, Карачи, Кашгар, Катманду, Khandyga, Калкута, Красноярск, Куала Лумпур, Кучинг, Кувейт, Макао, Магадан, Макасар, Манила, Мускат, Никозия, Novokuznetsk, Новосибирск, Омск, Орал, Пном Пен, Понтианак, Пйонгянг, Катар, Qostanay, Кизилорда, Рияд, Сахалин, Самарканд, Сеул, Шанхай, Сингапур, Srednekolymsk, Тайпе, Ташкент, Тбилиси, Техеран, Тел Авив, Тимбу, Токио, Tomsk, Улан Батор, Урумчи, Ust-Nera, Виентян, Владивосток, Якутск, Рангун, Екатеринбург, Ереван
Choices-ca.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaül, Beirut, Bishkek, Brunei, Txità, Choibalsan, Chongqing, Colombo, Damasc, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ciutat Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Katmandú, Khandyga, Calcuta, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Kustanaj, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seül, Xangai, Singapur, Srednekolimsk, Taipei, Tashkent, Tbilisi, Tehran, Tel Aviv, Thimphu, Tòquio, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Rangun, Yekaterinburg, Yerevan
Choices-cs.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ašchabad, Atyrau, Bagdád, Bahrajn, Baku, Bangkok, Barnaul, Bejrůt, Biškek, Brunej, Čita, Choibalsan, Čchung-čching, Kolombo, Damašek, Dháka, Dili, Dubaj, Dušanbe, Famagusta, Gaza, Harbin, Hebron, Ho Či Minovo město, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jeruzalém, Kábul, Kamčatka, Karáčí, Kašgar, Katmandu, Khandyga, Kalkata, Krasnojarsk, Kuala Lumpur, Kučing, Kuvajt, Macao, Magadan, Makassar, Manila, Maskat, Nikósie, Novokuzněck, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pchongjang, Katar, Kostanaj, Qyzylorda, Rijád, Sachalin, Samarkand, Soul, Šanghaj, Singapur, Sredněkolymsk, Tchaj-pej, Taškent, Tbilisi, Teherán, Tel Aviv, Thimphu, Tokio, Tomsk, Ulaanbaatar, Urumči, Ust-Nera, Vientiane, Vladivostok, Jakutsk, Rangún, Jekatěrinburg, Jerevan
Choices-da.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Kathmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seoul, Shanghai, Singapore, Srednekolymsk, Taipei, Tashkent, Tbilisi, Tehran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Jakutsk, Yangon, Yekaterinburg, Yerevan
Choices-de.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtöbe, Asgabat, Atyrau, Bagdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bischkek, Brunei, Chita, Tschoibalsan, Chongqing, Colombo, Damaskus, Dhaka, Dili, Dubai, Duschanbe, Famagusta, Gasa, Harbin, Hebron, Ho-Chi-Minh-Stadt, Hong Kong, Chovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamtschatka, Karatschi, Kaschgar, Katmandu, Khandyga, Kolkata, Krasnojarsk, Kuala Lumpur, Kuching, Kuwait, Macao, Magadan, Ujung Pandang (Makassar), Manila, Maskat, Nicosia, Nowokusnezk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pjöngjang, Katar, Qostanay, Ksyl-Orda, Riad, Sachalin, Samarkand, Seoul, Shanghai, Singapur, Srednekolymsk, Taipeh, Taschkent, Tiflis, Teheran, Tel Aviv, Thimphu, Tokio, Tomsk, Ulan-Bator (Ulaanbaatar), Ürümqi, Ust-Nera, Vientiane, Wladiwostok, Jakutsk, Rangun, Jekaterinburg, Eriwan
Choices-en.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh City, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seoul, Shanghai, Singapore, Srednekolymsk, Taipei, Tashkent, Tbilisi, Tehran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Yekaterinburg, Yerevan
Choices-es.utf-8: Aden, Almaty, Ammán, Anadyr, Aktau, Aqtobe, Asjabad, Atirau, Bagdad, Bahréin, Bakú, Bangkok, Barnaúl, Beirut, Bishkek, Brunéi, Chitá, Choibalsan, Chongqing, Colombo, Damasco, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebrón, Ciudad Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Estambul, Yakarta, Jayapura, Jerusalén, Kabul, Kamchatka, Karachi, Kashgar, Katmandú, Khandyga, Calcuta, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macao, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Kostanái, Qyzylorda, Riad, Sajalín, Samarcanda, Seúl, Shangai, Singapur, Srednekolymsk, Taipei, Taskent, Tiflis, Teherán, Tel Aviv, Timbu, Tokio, Tomsk, Ulán Bator, Ürümqi, Ust-Nera, Vientián, Vladivostok, Yakutsk, Rangún, Ekaterimburgo, Ereván
Choices-eu.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damasco, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macao, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seul, Shanghai, Singapur, Srednekolymsk, Taipei, Tashkent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokio, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Yekaterinburg, Yerevan
Choices-fi.utf-8: Aden, Almaty, Amman, Anadyr, Aktau, Aqtöbe, Ašgabat, Atyrau, Bagdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Biškek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damaskos, Dhaka, Dili, Dubai, Dušanbe, Famagusta, Gaza, Harbin, Hebron, Hồ Chí Minh, Hongkong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamtšatka, Karachi, Kashgar, Katmandu, Khandyga, Kalkutta, Krasnojarsk, Kuala Lumpur, Kuching, Kuwait, Macao, Magadan, Makassar, Manila, Masqat, Nikosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pjongjang, Qatar, Qostanay, Qyzylorda, Riad, Sahalin, Samarkand, Soul, Shanghai, Singapore, Srednekolymsk, Taipei, Taškent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokio, Tomsk, Ulaanbaatar, Ürümqi, Ust-Nera, Vientiane, Vladivostok, Jakutsk, Yangôn, Jekaterinburg, Jerevan
Choices-fr.utf-8: Aden, Alma-Ata, Amman, Anadyr, Aqtau, Aqtobe, Ashkhabad, Atyraou, Bagdad, Bahreïn, Bakou, Bangkok, Barnaul, Beyrouth, Bishkek, Bruneï, Tchita, Choibalsan, Chongqing, Colombo, Damas, Dhaka, Dili, Dubaï, Douchanbé, Famagouste, Gaza, Harbin, Hébron, Hô-Chi-Minh-Ville , Hong-Kong, Hovd, Irkoutsk, Istanbul, Djakarta, Jayapura, Jérusalem, Kaboul, Kamtchatka, Karachi, Kashgar, Katmandou, Khandyga, Calcutta, Krasnoïarsk, Kuala Lumpur, Kuching, Koweït, Macao, Magadan, Macasar, Manille, Muscat, Nicosie, Novokouznetsk, Novosibirsk, Omsk, Oural, Phnom Penh, Pontianak, Pyongyang, Qatar, Kostanaï, Kzyl-Orda, Riyad, Sakhaline, Samarcande, Séoul, Shanghaï, Singapour, Srednekolymsk, Taipei, Tachkent, Tbilissi, Téhéran, Tel-Aviv, Timphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakoutsk, Rangoun, Ekaterinenbourg, Erevan
Choices-gl.utf-8: Adén, Almati, Amán, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Bagdad, Bahrein, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damasco, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebrón, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Estambul, Xacarta, Xaiapura, Xerusalén, Kabul, Kamchatka, Karachi, Kashgar, Katmandú, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, O Riad, Sakhalin, Samarcanda, Seul, Shanghai, Singapur, Srednekolimsk, Taipei, Tashkent, Tiflis, Teherán, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Yekaterinburg, Yerevan
Choices-gu.utf-8: એડન, અલ્માતી, અમ્માન, એનાડીર, એક્ટાવુ, એક્ટોબે, અશ્ગાબાત, Atyrau, બગદાદ, બાહેરિન, બાકુ, બેંગકોક, Barnaul, બૈરુત, બિશ્કેક, બ્રુનેઇ, Chita, ચોઇબાલ્સાન, ચોંગકિંગ, કોલંબો, દમાસ્કસ, ઢાકા, દિલ્હી, દુબઇ, દુશાન્બે, Famagusta, ગાઝા, હાર્બિન, હેબ્રોન, હો ચી મીન્હ, હોંગ કોંગ, હોવડ, ઈર્કુત્સક, ઇન્તંબુલ, જાકાર્તા, જયાપુરા, જેરુસલેમ, કાબુલ, કામચાટ્કા, કરાચી, કાશ્ગર, કાટમંડુ, Khandyga, કોલકાતા, ક્રાસનોયાર્સ્ક, કુઆલા લુમ્પુર, કુચિંગ, કુવૈત, મકાઉ, મગાદાન, માકાસ્સાર, મનિલા, મસ્કત, નિકોસિઆ, નોવોકુઝનેટ્સ્ક, નોવોસીબિર્સ્ક, ઓમસ્ક, ઓરલ, ફનોમ પેન્હ, પોન્તીઆનાક, ફનોન્ગયાંગ, કતાર, Qostanay, કવીઝીલોર્ડા, રીયાધ, સખાલિન, સમરકંદ, સિઓલ, શાન્ઘાઇ, સિંગાપોર, Srednekolymsk, તાઇપેઇ, તાશ્કંદ, ત્બિલિસિ, તેહરાન, તેલ અવિવ, થિમ્ફુ, ટોક્યો, Tomsk, ઉલનબટોર, ઉરુમ્કી, Ust-Nera, વિયેતિન, વ્લાડીવોસ્ટોક, યાકુત્સક, રંગૂન, યેકાતીરાનબર્ગ, યેરેવાન
Choices-he.utf-8: עדן, אלמטי, עמאן, אנדיר, Aqtau, Aqtobe, אשגאבט, אטיראו, בגדד, בחריין, באקו, בנגקוק, ברנאול, ביירות, בישקק, ברוניי, צ'יטה, צ'ויבלסאן, צ'ונגצ'ינג, קולומבו, דמשק, דאקה, דילי, דובאי, דושנבה, פמגוסטה, עזה, חרבין, חברון, הו צ'י מין, הונג קונג, חובד, אירקוטסק, איסטנבול, ג'קרטה, Jayapura, ירושלים, קאבול, חצי האי קמצ'טקה, קראצ'י, קאשגאר, קטמנדו, חאנדיגה, קולקטה, קרסנויארסק, קואלה לומפור, קוצ'ינג, כווית, מקאו, מגדן, מקאסאר, מנילה, מאסקט, ניקוסיה, Novokuznetsk, נובוסיבירסק, אומסק, אורל, פנום פן, Pontianak, פיונגיאנג, קאטר, קוסטנאי, Qyzylorda, ריאד, סחלין, סמרקנד, סיאול, שנגחאי, סינגפור, Srednekolymsk, טאיפיי, טשקנט, טביליסי, טהרן, תל אביב, טהימפהו, טוקיו, טומסק, אולן בטור, אורומצ'י, אוסט-נארה, ויינטיאן, ולדיווסטוק, יקוצק, יאנגון, יקטרינבורג, ירוואן
Choices-hr.utf-8: Aden, Almaty, Aman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Bagdad, Bahrein, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damask, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jeruzalem, Kabul, Kamčatka, Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Krasnojarsk, Kuala Lumpur, Kuching, Kuvajt, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Katar, Qostanay, Qyzylorda, Rijad, Sahalin, Samarkand, Seul, Šangaj, Singapur, Srednekolymsk, Taipei, Tashkent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokio, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Jakutsk, Rangoon, Ekaterinburg, Erevan
Choices-hu.utf-8: Aden, Almati, Amman, Moszkva+10 - Bering-tenger, Akutau, Akutobe, Asgabat, Atyrau, Bagdad, Bahrain, Baku, Bangkok, Barnaul, Bejrút, Bishkek, Brunei, Chita, Csoibalszán, Csongqing, Colombo, Damaszkusz, Daka, Dili, Dubai, Dusanbe, Famagusta, Gáza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Moszkva+05 - Bajkál, Isztambul, Dzsakarta, Dzsajapura, Jeruzsálem, Kabul, Moszkva+09 - Kamcsatka, Karacsi, Kashgar, Katmandu, Khandyga, Kolkata, Moszkva+04 - Jenyiszej, Kuala Lumpur, Kuching, Kuwait, Makaó, Moszkva+08 - Magadán, Makasszár, Manila, Muscat, Nicosia, Novokuznyeck, Moszkva+03 - Novoszibirszk, Moszkva+03 - nyugat-Szibéria, Oral, Phnom Penh, Pontianak, Pyongyang, Katar, Qostanay, Kizilorda, Rijád, Moszkva+07 - Szahalin, Szamarkand, Szöul, Sanghaj, Szingapúr, Srednekolymsk, Tajpej, Taskent, Tbiliszi, Teherán, Tel Aviv, Thimphu, Tokió, Tomsk, Ulánbátor, Urumki, Ust-Nera, Vientiane, Moszkva+07 - Amur, Moszkva+06 - Léna, Rangoon, Moszkva+02 - Urál, Jereván
Choices-id.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damaskus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hongkong, Hovd, Irkutsk, Istambul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Makau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk-Siberia Barat, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Kep. Sakhalin, Samarkandi, Seoul, Shanghai, Singapura, Srednekolymsk, Taipei, Tashkent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Rangoon, Yekaterinburg, Yerevan
Choices-it.utf-8: Aden, Almaty, Amman, Anadyr', Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damasco, Dacca, Dili, Dubai, Dušanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Giacarta, Jayapura, Gerusalemme, Kabul, Kamčatka, Karachi, Kashgar, Katmandu, Khandyga, Calcutta, Krasnojarsk, Kuala Lumpur, Kuching, Kuwait, Macao, Magadan, Makassar, Manila, Mascate, Nicosia, Novokuzneck, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyad, Sachalin, Samarcanda, Seul, Shanghai, Singapore, Srednekolymsk, Taipei, Tashkent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulan Bator, Ürümqi, Ust-Nera, Vientiane, Vladivostok, Jakutsk, Yangon, Ekaterinburg, Yerevan
Choices-ja.utf-8: アデン, アルマトゥイ, アンマン, アナディル, アクタウ, アクトベ, アシガバード, アティラウ, バグダード, バーレーン, バクー, バンコク, バルナウル, ベイルート, ビシュケク, ブルネイ, チタ, チョイバルサン, 重慶, コロンボ, ダマスカス, ダッカ, ディリ, ドバイ, ドゥシャンベ, ファマグスタ, ガザ, ハルビン, ヘブロン, ホーチミン, 香港, ホブド, イルクーツク, イスタンブール, ジャカルタ, ジャヤプラ, エルサレム, カブール, カムチャッカ, カラチ, カシュガル, カトマンズ, ハンドゥイガ, コルコタ, クラスノヤルスク, クアラルンプール, クチン, クウェート, マカオ, マガダン, マカッサル, マニラ, マスカット, ニコシア, ノヴォクズネツク, ノヴォシビルスク, オムスク, ウラル, ブノンペン, ポンティアナク, 平壌, カタール, コスタナイ, キジルオルダ, リヤド, サハリン, サマルカンド, ソウル, 上海, シンガポール, スレドネコリムスク, 台北, タシケント, トビリシ, テヘラン, テルアビブ, ティンプー, 東京, トムスク, ウランバートル, ウルムチ, ウスチ=ネラ, ヴィエンチャン, ウラジオストック, ヤクーツク, ヤンゴン, エカテリンブルグ, エレヴァン
Choices-ko.utf-8: 아덴, 알마티, 암만, 아나디르, 악타우, 아크토베, 아슈하바트, 아티라우, 바그다드, 바레인, 바쿠, 방콕, 바르나울, 베이루트, 비슈케크, 브루나이, 치타, 처이발상, 충칭, 콜롬보, 다마스커스, 다카, 딜리, 두바이, 두산베, 파마구스타, 가자, 하얼빈, 히브론, 호찌민, 홍콩, 허브드, 이르쿠츠크, 이스탄불, 자카르타, 자야푸라, 예루살렘, 카불, 캄차카, 카라치, 카슈가르, 카트만두, 한디가, 캘커타, 크라스노야르스크, 쿠알라룸푸르, 쿠칭, 쿠웨이트, 마카오, 마가단, 마카사르, 마닐라, 무스카트, 니코시아, 노보크즈네크, 노보시비르스크, 옴스크, 오랄, 프놈펜, 폰티아낙, 평양, 카타르, 코스타나이, 크즐로르다, 리야드, 사할린, 사마르칸트, 서울, 상하이, 싱가포르, 스레드네콜림스크, 타이페이, 타슈켄트, 트빌리시, 테헤란, 텔아비브, 팀부, 도쿄, 톰스크, 울란바토르, 우루무치, 우스네라, 비엔티안, 블라디보스토크, 야쿠츠크, 양곤, 예카테린부르크, 예레반
Choices-ku.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Bexda, Behreyn, Baku, Bangkok, Barnaul, Beyrût, Bîşkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Şam, Dhaka, Dili, Dubai, Dûşanbe, Famagusta, Xaza, Harbin, Hebron, Ho Şî Mîn, Hong Kong, Hovd, Irkutsk, Stenbol, Jakarta, Jayapura, Darûselam, Kabîl, Kamchatka, Karaçî, Kaşgar, Katmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuçîng, Kuweyt, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyad, Sakhalin, Semerqand, Seûl, Şangay, Sîngapûr, Srednekolymsk, Taipei, Taşkent, Tiblîs, Tehran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Rangoon, Yekaterinburg, Êrîvan
Choices-lt.utf-8: Adenas, Almata, Amanas, Anadyrė, Aktau, Aktiubinskas, Ašchabadas, Atyrau, Bagdadas, Bahreinas, Baku, Bankokas, Barnaul, Beirutas, Biškekas, Brunėjus, Chita, Čoibalsanas, Čongčingas, Kolombas, Damaskas, Daka, Dilis, Dubajus, Dušanbė, Famagusta, Gaza, Harbinas, Hebron, Hošiminas, Honkongas, Houdas, Irkutskas, Stambulas, Džakarta, Džapura, Jeruzalė, Kabulas, Kamčatka, Karačis, Kašgaras, Katmandu, Khandyga, Kolkata, Krasnojarskas, Kuala Lumpūras, Kučingas, Kuveitas, Makao, Magadanas, Makasaras, Manila, Maskatas, Nikosija, Novokuznetsk, Novosibirskas, Omskas, Uralskas, Pnompenis, Pontianakas, Pchenjanas, Kataras, Qostanay, Kyzylorda, Rijadas, Sachalinas, Samarkandas, Seulas, Šanchajus, Singapūras, Srednekolymsk, Taipėjus, Taškentas, Tbilisis, Teheranas, Tel Avivas, Timpu, Tokijas, Tomsk, Ulanbatoras, Urumčis, Ust-Nera, Vientianas, Vladivostokas, Jakutskas, Rangūnas, Jakaterinburgas, Jerevanas
Choices-ml.utf-8: ഏദന്‍, അല്മാട്ടി, അമ്മാന്‍, അനാഡിര്‍, അക്ടവു, അക്ടൊബെ, അഷ്കാര്ഡബത്, Atyrau, ബഗ്ദാദ്, ബഹറൈന്‍, ബാകു, ബാങ്കോക്ക്, Barnaul, ബെയ്റൂട്ട്, ബിഷ്കെക്ക്, ബ്രൂണൈ, Chita, ചൊയിബല്‍സാന്‍, ചോങ്ക്വിങ്, കൊളംബോ, ഡമാസ്കസ്, ദാക്ക, ദിലി, ദുബായ്, ദുഷാന്‍ബേ, Famagusta, ഗാസ, ഹാര്‍ബിന്‍, Hebron, ഹോ ചി മിന്‍, ഹോങ് കോങ്, ഹോവ്ഡ്, ഇര്‍കുത്സ്ക്, ഇസ്താംബുള്‍, ജക്കാര്‍ത്ത, ജയപുര, ജറുസലേം, കാബൂള്‍, കംചത്കാ, കറാച്ചി, കാഷ്ഗാര്‍, കാഠ്മണ്ടു, Khandyga, കൊല്‍ക്കത്ത, ക്രസ്നോയര്‍സ്ക്, ക്വാല ലംമ്പൂര്‍, കുച്ചിങ്, കുവൈത്ത്, മകാവോ, മഗദാന്‍, മകസ്സര്‍, മനില, മസ്കറ്റ്, നികോഷ്യ, Novokuznetsk, നൊവോസിബിര്‍സ്ക്, ഒമ്സ്ക്, ഒരള്‍, നോം പെന്‍, പോണ്ടിയാനക്, പ്യോങ്യാങ്, ഖത്തര്‍, Qostanay, ക്വിസിലോര്‍ഡ, റിയാദ്, സഖാലിന്‍, സമര്‍ഖണ്ട്, സിയോള്‍, ഷാങ്ഹായ്, സിഗപ്പൂര്‍, Srednekolymsk, തായ്പേയ്, താഷ്കെന്റ്, തിബിലിസി, ടെഹ്റാന്‍, ടെല്‍ അവീവ്, തിംഫു, ടോക്കിയോ, Tomsk, ഉലാന്‍ബാത്തര്‍, ഉറുംക്വി, Ust-Nera, വിയെന്റിയാന്‍, വ്ലാഡിവോസ്ടോക്, യാകുട്സ്ക്, റംഗൂണ്‍, യെകാറ്റെറിന്‍ബര്‍ഗ്, യെരെവന്‍
Choices-nl.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atıraw, Bagdad, Bahrein, Bakoe, Bangkok, Barnaoel, Beiroet, Bishkek, Brunei, Tsjita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minhstad, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Kathmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Koeweit, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokoeznetsk, Novosibirsk, Omsk, Oral, Phnom-Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seoul, Shanghai, Singapore, Srednekolymsk, Taipei, Tashkent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokio, Tomsk, Ulaanbaatar, Urumqi, Oest-Nera, Vientiane, Vladivostok, Jakoeten, Yangon, Jekaterinenburg, Yerevan
Choices-pl.utf-8: Aden, Ałma-Ata, Amman, Anadyr, Aktau, Aktobe, Aszchabad, Atyrau, Bagdad, Bahrajn, Baku, Bangkok, Barnauł, Bejrut, Biszkek, Brunei, Czyta, Czojbalsan, Chongqing, Kolombo, Damaszek, Dhaka, Dili, Dubaj, Duszanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hongkong, Hovd, Irkuck, Stambuł, Dżakarta, Jayapura, Jerozolima, Kabul, Kamczatka, Karaczi, Kaszgar, Katmandu, Chandyga, Kalkuta, Krasnojarsk, Kuala Lumpur, Kuching, Kuwejt, Makau, Magadan, Makasar, Manila, Maskat, Nikozja, Nowokuźnieck, Nowosybirsk, Omsk, Uralsk, Phnom Penh, Pontianak, Pjongjang, Katar, Kustanaj, Kyzyłorda, Rijad, Sachalin, Samarkanda, Seul, Szanghaj, Singapur, Sriedniekołymsk, Tajpej, Taszkent, Tbilisi, Teheran, Tel Awiw-Jafa, Thimphu, Tokio, Tomsk, Ułan Bator, Urumczi, Ust´-Niera, Wientian, Władywostok, Jakuck, Rangun (bir. Yangon), Jekaterynburg, Erywań
Choices-pt.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtöbe, Ashgabat, Atyrau, Bagdade, Barein, Baku, Banguecoque, Barnaul, Beirute, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damasco, Dhaka, Díli, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istambul, Jacarta, Jayapura, Jerusalém, Cabul, Kamchatka, Carachi, Kashgar, Catmandu, Khandyga, Calcutá, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Macassar, Manila, Muscate, Nicósia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Quatar, Qostanay, Qyzylorda, Riade, Sacalina, Samarcanda, Seul, Xangai, Singapura, Srednekolymsk, Taipé, Tashkent, Tbilisi, Teerão, Tel Aviv, Thimphu, Tóquio, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vienciana, Vladivostok, Yakutsk, Rangum, Ecaterimburgo, Erevan
Choices-pt_br.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Bagdá, Barém, Baku, Bangkok, Barnaul, Beirute, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istambul, Jacarta, Jayapura, Jerusalém, Cabul, Kamchatka, Karachi, Kashgar, Catmandu, Khandyga, Calcutá, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seul, Xangai, Cingapura, Srednekolymsk, Taipei, Tashkent, Tbilisi, Teerã, Tel Aviv, Thimphu, Tóquio, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Yekaterinburg, Yerevan
Choices-ro.utf-8: Aden, Almata, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Bagdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damasc, Dhaka, Dili, Dubai, Dușanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Ierusalim, Kabul, Kamchatka, Karachi, Kashgar, Katmandu, Khandiga, Calcutta, Krasnoiarsk, Kuala Lumpur, Kuching, Kuweit, Macao, Magadan, Makasar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Phenian, Qatar, Kostanay, Qyzylorda, Riad, Sahalin, Samarkand, Seul, Shanghai, Singapur, Srednekolymsk, Taipei, Taşkent, Tbilisi, Teheran, Tel Aviv, Timbu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Ekaterinburg, Erevan
Choices-ru.utf-8: Аден, Алма-Ата, Амман, Анадырь, Актау, Актюбинск, Ашхабад, Атырау, Багдад, Бахрейн, Баку, Бангкок, Барнаул, Бейрут, Бишкек, Бруней, Чита, Чойбалсан, Чунцин, Коломбо, Дамаск, Дакка, Дили, Дубай, Душанбе, Фамагуста, Газа, Харбин, Хеврон, Хошимин, Гонконг, Ховд, Иркутск, Стамбул, Джакарта, Джаяпура, Иерусалим, Кабул, Камчатка, Карачи, Кашгар, Катманду, Хандыга, Калькутта, Красноярск, Куала-Лумпур, Кучинг, Кувейт, Аомынь (Макао), Магадан, Макассар, Манила, Маскат, Никосия, Новокузнецк, Новосибирск, Омск, Уральск, Пномпень, Понтианак, Пхеньян, Катар, Костанай, Кзыл-Орда, Эр-Рияд, Сахалин, Самарканд, Сеул, Шанхай, Сингапур, Среднеколымск, Тайбэй, Ташкент, Тбилиси, Тегеран, Тель-Авив, Тхимпху, Токио, Томск, Улан-Батор, Урумчи, Усть-Нера, Вьентьян, Владивосток, Якутск, Янгон, Екатеринбург, Ереван
Choices-sk.utf-8: Aden, Almaty, Ammán, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Bagdad, Bahrajn, Baku, Bangkok, Barnaul, Bejrút, Biškek, Brunej, Chita, Choibalsan, Čunking, Kolombo, Damask, Dháka, Dili, Dubaj, Dušanbe, Famagusta, Gaza, Charbin, Hebron, Hočiminovo Mesto, Hongkong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jeruzalem, Kábul, Kamčatka, Karáči, Kašgar, Káthmandu, Khandyga, Kalkata, Krasnojarsk, Kuala Lumpur, Kuching, Kuvajt, Macao, Magadan, Makassar, Manila, Maskat, Nikózia, Novokuzneck, Novosibirsk, Omsk, Oral, Phnom Pénh, Pontianak, Pchjongjang, Katar, Qostanay, Qyzylorda, Rijád, Sachalin, Samarkand, Soul, Šanghaj, Singapur, Srednekolymsk, Tchaj-pej, Taškent, Tbilisi, Teherán, Tel Aviv, Thimphu, Tokio, Tomsk, Ulanbátar, Urumči, Ust-Nera, Vientian, Vladivostok, Jakutsk, Rangún, Jekaterinburg, Jerevan
Choices-sq.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seoul, Shanghai, Singapore, Srednekolymsk, Taipei, Tashkent, Tbilisi, Tehran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Rangoon, Yekaterinburg, Yerevan
Choices-sv.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtöbe, Asjchabad, Atyraw, Bagdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bisjkek, Brunei, Tjita, Tjojbalsan, Chongqing, Colombo, Damaskus, Dacca, Dili, Dubai, Dusjanbe, Famagusta, Gaza, Harbin, Hebron, Ho Chi Minh-staden, Hongkong, Chovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamtjatka, Karachi, Kashgar, Katmandu, Khandyga, Calcutta, Krasnojarsk, Kuala Lumpur, Kuching, Kuwait, Macao, Magadan, Makassar, Manila, Muskat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Ural, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanaj, Qyzylorda, Riyadh, Sachalin, Samarkand, Seoul, Shanghai, Singapore, Srednekolymsk, Taipei, Tasjkent, Tbilisi, Teheran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulan Bator, Ürümqi, Ust-Nera, Vientiane, Vladivostok, Jakutsk, Rangoon, Jekaterinburg, Jerevan
Choices-th.utf-8: Aden, อัลมาตี, อัมมาน, อะนาดีร์, Aqtau, Aqtobe, อาชกาบัต, Atyrau, แบกแดด, บาห์เรน, บากู, กรุงเทพฯ, Barnaul, เบรุต, บิชเคก, บรูไน, Chita, Choibalsan, ฉงชิ่ง, โคลัมโบ, ดามัสกัส, ธากา, ดิลี, ดูไบ, ดูชานเบ, Famagusta, กาซา, ฮาร์บิน, Hebron, โฮจิมินห์, ฮ่องกง, Hovd, Irkutsk, อิสตันบูล, จาการ์ตา, Jayapura, เยรูซาเลม, คาบูล, Kamchatka, การาจี, Kashgar, กาฐมาณฑุ, Khandyga, โกลกาตา, Krasnoyarsk, กัวลาลัมเปอร์, กูชิง, คูเวต, มาเก๊า, มากาดาน, มะกัสซาร์, มะนิลา, มัสกัต, นิโคเซีย, Novokuznetsk, โนโวสิเบียรสก์, Omsk, Oral, พนมเปญ, Pontianak, เปียงยาง, กาตาร์, Qostanay, Qyzylorda, ริยาด, Sakhalin, Samarkand, โซล, ช่างไห่ (เซี่ยงไฮ้), สิงคโปร์, Srednekolymsk, ไทเป, ทาชเคนต์, ทบิลิซี, เตหะราน, เทลอาวีฟ, ทิมพู, โตเกียว, Tomsk, อูลานบาตอร์, อุรุมชี, Ust-Nera, เวียงจันทน์, วลาดิวอสต็อก, ยาคุตสค์, ย่างกุ้ง, Yekaterinburg, เยเรวาน
Choices-tr.utf-8: Aden, Almatı, Amman, Anadyr, Aqtau, Aktobe, Aşkabat, Atyrau, Bağdat, Bahreyn, Bakü, Bangkok, Barnaul, Beyrut, Bişkek, Bruney, Çita, Choibalsan, Chongqing, Kolombo, Şam, Dakka, Dili, Dubai, Duşanbe, Gazimağusa, Gazze, Harbin, El Halil, Ho Şi Minh, Hong Kong, Hovd, Irkutsk, İstanbul, Cakarta, Jayapura, Kudüs, Kabil, Kamçatka, Karaçi, Kaşgar, Katmandu, Kandiga, Kalküta, Krasnoyarsk, Kuala Lumpur, Kuching, Kuveyt, Makao, Magadan, Makassar, Manila, Maskat, Lefkoşa, Novokuznetsk, Novosibirsk, Omsk, Ural, Phnom Penh, Pontianak, Pyongyang, Katar, Kostanay, Kızılorda, Riyad, Sakhalin, Semerkant, Seul, Şangay, Singapur, Srednekolymsk, Taipei, Taşkent, Tiflis, Tahran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulan Batur, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Yangon, Yekaterinburg, Erivan
Choices-vi.utf-8: Aden, Almaty, Amman, Anadyr, Aqtau, Aqtobe, Ashgabat, Atyrau, Baghdad, Bahrain, Baku, Bangkok, Barnaul, Beirut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Colombo, Damascus, Dhaka, Dili, Dubai, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Hồ Chí Minh, Hong Kong, Hovd, Irkutsk, Istanbul, Jakarta, Jayapura, Jerusalem, Kabul, Kamchatka, Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Krasnoyarsk, Kuala Lumpur, Kuching, Kuwait, Macau, Magadan, Makassar, Manila, Muscat, Nicosia, Novokuznetsk, Novosibirsk, Omsk, Oral, Phnom Penh, Pontianak, Pyongyang, Qatar, Qostanay, Qyzylorda, Riyadh, Sakhalin, Samarkand, Seoul, Shanghai, Xin-ga-po, Srednekolymsk, Tai-pei, Tashkent, Tbilisi, Tehran, Tel Aviv, Thimphu, Tokyo, Tomsk, Ulaanbaatar, Urumqi, Ust-Nera, Vientiane, Vladivostok, Yakutsk, Rangoon, Yekaterinburg, Yerevan
Choices-wo.utf-8: Aden, Almaty (cas général), Amman, Moscou +10 (Mer de Béring), Aqtau, Aqtobe, Ashgabat, Atyrau, Baxdaad, Bahrain, Baku, Baŋkok, Barnaul, Bayruut, Bishkek, Brunei, Chita, Choibalsan, Chongqing, Kolombo, Damasq, Dhaka, Dili, Dubay, Dushanbe, Famagusta, Gaza, Harbin, Hebron, Ho Ci Min, Hoŋ Koŋ, Hovd, Moscou +05 (Lac Baïkal), Istambul, Jakarta (Java ak Sumatra), Jayapura (Irian Jaya ak Moluques), Yerusalem, Kabul, Moscou +09 (Kamtchatka), Karachi, Kashgar, Katmandu, Khandyga, Kolkata, Moscou +04 (Fleuve Ienisseï), Kuala Lumpur, Kuching, Kuwet, Makaaw, Moscou +08 (Magadan), Macasar (Borneo E/S - Célèbes - Bali - Nusa Tengarra - Timor ouest), Manila, Masqat, Nikoosi, Novokuznetsk, Moscou +03 (Novosibirsk), Moscou +03 (Sibérie de l'Ouest), Oural (Kazakhstan Sowwu), Penoom Pen, Pontianak (Bornéo Sowwu ak diggba), Pyoŋyaŋ, Qatar, Qostanay, Qyzylorda (Kyzylorda - Kzyl-Orda), Riyaad, Moscou +07 (Île Sakhaline), Samarkand, Sewul, Shaŋhaay, Siŋgapoor, Srednekolymsk, Taaypeey, Tashkent, Tbilisi, Tehraan, Tel Aviv, Thimphu, Tookyoo, Tomsk, Oulan-Bator (cas général), Urumqi, Ust-Nera, Vientiane, Moscou +07 (Fleuve Amour), Moscou +06 (Fleuve Lena), Raŋguun, Moscou +02 (Oural), Yerevan
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Atlantic
Choices: Azores, Bermuda, Canary, Cape_Verde, Faroe, Jan_Mayen, Madeira, Reykjavik, South_Georgia, St_Helena, Stanley
Choices-be.utf-8: Азоры, Бермуды, Канары, Капа-Вэрда, Фароэ, Ян-Маен, Мадэра, Рэйк'явік, Паўднёвая Джорджыя, Востраў Св. Алены, Стэнлі
Choices-bg.utf-8: Азорски о-ви, Бермуди, Канарски о-ви, Кабо Верде, Фарьорски о-ви, Ян Майен, Мадейра, Рейкявик, Южна Джорджия, Сейнт Хелена, Стенли
Choices-ca.utf-8: Açores, Bermudes, Canàries, Cap Verd, Fèroe, Jan Mayen, Madeira, Reykjavík, Georgia del Sud, St Helena, Stanley
Choices-cs.utf-8: Azory, Bermudy, Kanárské ostrovy, Kapverdy, Faerské ostrovy, Jan Mayen, Madeira, Rejkjavík, Jižní Georgie, Svatá Helena, Stanley
Choices-da.utf-8: Azores, Bermuda, Canary, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, South Georgia, Sankt Helena, Stanley
Choices-de.utf-8: Azoren, Bermuda, Kanaren, Kap Verde, Farör, Jan Mayen, Madeira, Reykjavík, South Georgia, St Helena, Stanley
Choices-en.utf-8: Azores, Bermuda, Canary, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, South Georgia, St. Helena, Stanley
Choices-es.utf-8: Azores, Bermudas, Canarias, Cabo Verde, Feroe, Jan Mayen, Madeira, Reikiavik, Georgia del Sur, Santa Elena, Stanley
Choices-eu.utf-8: Azores, Bermuda, Kanariak, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, Hego Georgia, St Helena, Stanley
Choices-fi.utf-8: Azorit, Bermuda, Kanariansaaret, Kap Verde, Färsaaret, Jan Mayen, Madeira, Reykjavík, Etelä-Georgia, St Helena, Stanley
Choices-fr.utf-8: Açores, Bermudes, Canaries, Cap-Vert, Faroe, Jan Mayen, Madère, Reykjavik, Géorgie du Sud, Sainte-Hélène, Stanley
Choices-gl.utf-8: Illas Azores, Illas Bermudas, Illas Canarias, Cabo Verde, Illas Faroes, Jan Mayen, Madeira, Reykjavik, Xeorxia do Sul, Santa Helena, Stanley
Choices-gu.utf-8: અઝોરેસ, બર્મુડા, કેનેરી, કેપ વર્દે, ફેરો, જાન માયેન, મેડેઇરા, રીકજાવિક, દક્ષિણ જર્યોજીઆ, સેન્ટ હેલેના, સ્ટેન્લી
Choices-he.utf-8: האיים האזוריים, ברמודה, האיים הקנריים, כף ורדה, איי פארו, יאן מאיין, מדיירה, רייקיאוויק, ג'ורג'יה הדרומית, סנט הלנה, סטנלי
Choices-hr.utf-8: Azori, Bermuda, Kanarski otoci, Zelenortski otoci, Farski otoci, Jan Mayen, Madeira, Reykjavik, South Georgia, St Helena, Stanley
Choices-hu.utf-8: Azori-szigetek, Bermuda, Canary, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, Dél Georgia, St Helena, Stanley
Choices-id.utf-8: Azores, Bermuda, Kanari, Teluk Verde, Faroe, Jan Mayen, Madeira, Reykjavik, Georgia Selatan, Saint Helena, Stanley
Choices-it.utf-8: Azzorre, Bermuda, Canarie, Capo Verde, Fær Øer, Jan Mayen, Madera, Reykjavik, Georgia del Sud, Sant'Elena, Stanley
Choices-ja.utf-8: アゾレス, バーミューダ, カナリヤ, ケープヴェルデ, フェロー諸島, ヤンマイエン, マデイラ, レイキャヴィク, サウスジョージア, セントヘレナ, スタンリー
Choices-ko.utf-8: 아조레스 제도, 버뮤다, 카나리 제도, 카보베르데, 페로 제도, 얀마옌 섬, 마데이라, 레이캬비크, 사우스조지아, 세인트헬레나, 스탠리
Choices-ku.utf-8: Azores, Bermuda, Canary, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, South Georgia, St Helena, Stanley
Choices-lt.utf-8: Azorų salos, Bermudai, Kanarai, Žaliasis Kyšulys, Farerų salos, Jan Maienas, Maderas, Reikjavikas, Pietų Džordžija, Šventos Elenos sala, Stenlis
Choices-ml.utf-8: അസോറെസ്, ബെര്‍മുഡ, കാനറി, കേപ് വിര്‍ഡേ, ഫറവോ, ജന്‍ മായെന്‍, മഡെയ്‌ര, റെയ്ക്ജാവിക്, തെക്കന്‍ ജോര്‍ജിയ, സെയിന്റ് ഹെലെന, സ്റ്റാന്‍ലി
Choices-nl.utf-8: Azoren, Bermuda, Canaria, Kaapverdië, Faroe, Jan Mayen, Madeira, Reykjavik, Zuid Georgia, St. Helena, Stanley
Choices-pl.utf-8: Azory, Bermudy, Wyspy Kanaryjskie, W. Zielonego Przylądka, Wyspy Owcze, Jan Mayen, Madera, Reykjavík, Georgia Południowa, W. Świętej Heleny, Stanley
Choices-pt.utf-8: Açores, Bermudas, Canárias, Cabo Verde, Faroe, Jan Mayen, Madeira, Reiquejavique, Geórgia do Sul, Santa Helena, Stanley
Choices-pt_br.utf-8: Açores, Bermuda, Canárias, Cabo Verde, Faroe, Jan Mayen, Madeira, Reykjavik, Geórgia do Sul, St Helena, Stanley
Choices-ro.utf-8: Insulele Azore, Bermude, Canare, Capul Verde, Insulele Feroe, Jan Mayen, Madeira, Reykjavik, Georgia de Sud, Sf Elena, Stanley
Choices-ru.utf-8: Азорские острова, Бермуды, Канары, Кабо-Верде, Фарерские острова, Ян-Майен, Мадейра, Рейкьявик, Южная Георгия, Остров Святой Елены, Стенли
Choices-sk.utf-8: Azory, Bermudy, Kanárske ostrovy, Kapverdy, Faerské ostrovy, Jan Mayen, Madeira, Reykjavík, Južná Georgia, Svätá Helena, Stanley
Choices-sq.utf-8: Azores, Bermuda, Canary, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, South Georgia, St Helena, Stanley
Choices-sv.utf-8: Azorerna, Bermuda, Kanarieöarna, Kap Verde, Färöarna, Jan Mayen, Madeira, Reykjavik, Sydgeorgien, Sankta Helena, Stanley
Choices-th.utf-8: Azores, เบอร์มิวดา, คะเนรี, เคปเวิร์ด, แฟโร, ยานไมเอน, มาเดรา, เรคยาวิก, เซาท์จอร์เจีย, เซนต์เฮเลนา, สแตนลีย์
Choices-tr.utf-8: Azorlar, Bermuda, Kanarya, Yeşilburun, Faroe, Jan Mayen, Madeyra, Reykavik, Güney Gürcistan, Sen Helen, Stanley
Choices-vi.utf-8: Azores, Be-mu-đa, Canary, Cape Verde, Faroe, Jan Mayen, Madeira, Reykjavik, South Georgia, St Helena, Stanley
Choices-wo.utf-8: Asoor, Bermuuda, Kanari, Kap Weer, Faroe, Jan Mayen, Madeira, Rekyaavik, South Georgia, St Helena, Stanley
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Australia
Choices: Adelaide, Brisbane, Broken_Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord_Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-be.utf-8: Адэлаіда, Брызбан, Броўкэн-Хіл, Канберра, Кур'е, Дарвін, Эўкла, Хобарт, Ліндаман, Лорд-Хоў, Мэльбурн, Пэрт, Сіднэй, Янкавіна
Choices-bg.utf-8: Аделаида, Бризбейн, Броукън Хил, Канбера, Кюри, Дарвин, Еукла, Хобарт, Линдеман, о-в Лорд Хоу, Мелбърн, Пърт, Сидни, Янковина
Choices-ca.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-cs.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Ostrov lorda Howea, Melbourne, Perth, Sydney, Yancowinna
Choices-da.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-de.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-en.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-es.utf-8: Adelaida, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sídney, Yancowinna
Choices-eu.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-fi.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-fr.utf-8: Adelaïde, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Île Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-gl.utf-8: Adelaide, Brisbane, Broken Hill, Camberra, Currie, Darwin, Eucla, Hobart, Lindeman, Illa de Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-gu.utf-8: એડેલેઇડ, બ્રિસબેન, બ્રોકન હિલ, કેનબેરા, કુરી, ડાર્વિન, ઇયુક્લા, હોબાર્ટ, લિન્ડેમેન, લોર્ડ હોવે, મેલબોર્ન, પર્થ, સિડની, યાન્કોવિન્ના
Choices-he.utf-8: אדלייד, בריזביין, Broken Hill, קנברה, קורי, דרווין, Eucla, הובארט, Lindeman, אי הלורד האו, מלבורן, פרת', סידני, Yancowinna
Choices-hr.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-hu.utf-8: Adelaide, Brisbane, Törött Domb, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe-sziget, Melbourne, Perth, Sydney, Yancowinna
Choices-id.utf-8: Adelaide, Brisbane, Broken Hill, Canbera, Currie, Darwin, Eucla, Hobart, Lindeman, Pulau Lord Howe, Melbourne, Perth, Sydney, Yancowina
Choices-it.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-ja.utf-8: アデレード, ブリスベーン, ブロークンヒル, キャンベラ, カリー, ダーウィン, ユークラ, ホーバート, リンデマン, ロードハウ島, メルボルン, パース, シドニー, Yancowinna
Choices-ko.utf-8: 애들레이드, 브리스베인, 브로큰힐, 캔버라, 커리, 다윈, 유클라, 호바트, 린드먼, 로드 하우, 멜버른, 퍼스, 시드니, 얀코위나
Choices-ku.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-lt.utf-8: Adelaidė, Brisbenas, Broken Hilas, Kanbera, Keris, Darvinas, Jukla, Hobartas, Lindemanas, Lordo Houvo sala, Melburnas, Pertas, Sidnis, Jankovina
Choices-ml.utf-8: അഡലൈഡ്, ബ്രിസ്ബേന്‍, ബ്രോക്കണ്‍ ഹില്‍, കാന്‍ബറ, ക്യൂറി, ഡാര്‍വിന്‍, യൂക്‍ള, ഹോബാര്‍ട്ട്, ലിന്‍ഡെമാന്‍, ലോര്‍ഡ് ഹോവ്, മെല്ബണ്‍, പെര്‍ത്ത്, സിഡ്നി, യാങ്കോവിന്ന
Choices-nl.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-pl.utf-8: Adelajda, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-pt.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-pt_br.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-ro.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-ru.utf-8: Аделаида, Брисбен, Брокен-Хилл, Канберра, Керри, Дарвин, Юкла, Хобарт, Линдеман, Лорд-Хау, Мельбурн, Перт, Сидней, Янковинна
Choices-sk.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Ostrov lorda Howa, Melbourne, Perth, Sydney, Yancowinna
Choices-sq.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sydney, Yancowinna
Choices-sv.utf-8: Adelaide, Brisbane, Broken Hill, Canberra, Currie, Darwin, Eucla, Hobart, Lindeman, Lord Howeön, Melbourne, Perth, Sydney, Yancowinna
Choices-th.utf-8: แอดิเลด, บริสเบน, โบรเคนฮิลล์, แคนเบอร์รา, Currie, ดาร์วิน, Eucla, โฮบาร์ต, Lindeman, Lord_Howe, เมลเบิร์น, เพิร์ท, ซิดนีย์, Yancowinna
Choices-tr.utf-8: Adelaide, Brisbane, Broken Hill, Kanbera, Currie, Darwin, Eukla, Hobart, Lindeman, Lord Howe, Melbourne, Perth, Sidney, Yankovina
Choices-vi.utf-8: Adelaide (Nam), Brisbane (Bắc Đông), Broken Hill (ở sâu trong), Canberra (thủ đô), Currie, Darwin (Bắc), Eucla, Hobart (Đảo hướng Nam Đông), Lindeman (Các đảo nghỉ Bắc Đông), Lord Howe Island (Đảo hướng Đông), Melbourne (Nam Đông), Perth (Tây), Sydney (Đông), Yancowinna
Choices-wo.utf-8: Adelaide (Australie du Sud), Brisbane (Queensland - cas général), Broken Hill (Nouvelles-Galles du Sud - Yancowinna), Canberra, Currie, Darwin (territoire du Nord), Eucla, Hobart (Tasmanie), Lindeman (Queensland - îles Holiday), Île Lord Howe, Melbourne (Victoria), Perth (Australie de l'Ouest), Sydney (Nouvelles-Galles du Sud - cas général), Yancowinna
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Etc
Choices: GMT, GMT0, GMT+0, GMT+1, GMT+2, GMT+3, GMT+4, GMT+5, GMT+6, GMT+7, GMT+8, GMT+9, GMT+10, GMT+11, GMT+12, GMT-0, GMT-1, GMT-2, GMT-3, GMT-4, GMT-5, GMT-6, GMT-7, GMT-8, GMT-9, GMT-10, GMT-11, GMT-12, GMT-13, GMT-14, Greenwich, UCT, UTC, Universal, Zulu
Description: Time zone:
Description-be.utf-8: Часавы пояс:
Description-bg.utf-8: Часови пояс:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fi.utf-8: Aikavyöhyke:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-ku.utf-8: Herêma saetê:
Description-lt.utf-8: Lako zona:
Description-ml.utf-8: സമയ മേഘല:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sq.utf-8: Zona kohore:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Description-vi.utf-8: Múi giờ :
Description-wo.utf-8: Goxu waxtu:
Extended_description: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-be.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-bg.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ca.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-cs.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-da.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-de.utf-8: Bitte wählen Sie Ihre Zeitzone. Entgegen den Gepflogenheiten verwenden diese POSIX-kompatiblen Zeitzonen positive Werte für Zonen westlichen von Greenwich und negative Werte für diese östlich von Greenwich (z.B. bezieht sich »Etc/GMT+6« auf 6 Studen westlich von Greenwich, was normalerweise »UTC-6« genannt wird).
Extended_description-en.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-es.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-eu.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-fi.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-fr.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-gl.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-gu.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-he.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-hr.utf-8: Molim odaberite vremensku zonu. Suprotno modernim konvencijama, ove POSIX-kompatibilne zone koriste pozitivne vrijednosti za zone zapadno od Greenwicha, a negativne vrijednosti za one istočno od Greenwicha (npr., 'Ostalo/GMT+6' se odnosi na zonu 6 sati zapadno od Greenwicha, uobičajenog naziva 'UTC-6').
Extended_description-hu.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-id.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-it.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ja.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ko.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ku.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-lt.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ml.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-nl.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-pl.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-pt.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-pt_br.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ro.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-ru.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-sk.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-sq.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-sv.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-th.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-tr.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-vi.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Extended_description-wo.utf-8: Please select your time zone. Contrary to modern conventions, these POSIX-compatible zones use positive values to refer to zones west of Greenwich and negative values for those east of Greenwich (e.g., 'Etc/GMT+6' refers to 6 hours west of Greenwich, commonly called 'UTC-6').
Type: select

Name: tzdata/Zones/Europe
Choices: Amsterdam, Andorra, Astrakhan, Athens, Belfast, Belgrade, Berlin, Bratislava, Brussels, Bucharest, Budapest, Busingen, Chisinau, Copenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle_of_Man, Istanbul, Jersey, Kaliningrad, Kirov, Kyiv, Lisbon, Ljubljana, London, Luxembourg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moscow, Nicosia, Oslo, Paris, Podgorica, Prague, Riga, Rome, Samara, San_Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Vienna, Vilnius, Volgograd, Warsaw, Zagreb, Zurich
Choices-be.utf-8: Амстэрдам, Андора, Astrakhan, Афіны, Белфаст, Белград, Берлін, Братыслава, Брусель, Бухарэст, Будапешт, Busingen, Чысінаў, Капенгаген, Дублін, Гібралтар, Джэрнсі, Хельсінкі, Востраў Мэн, Стамбул, Джэрсі, Калінінград, Kirov, Кіеў, Лісабон, Любляна, Лондан, Люксембург, Мадрыд, Мальта, Мэрыхамн, Мінск, Манака, Масква, Нікосія, Осла, Парыж, Падгорыца, Прага, Рыга, Рым, Самара, Сан-Марына, Сараева, Saratov, Сімферопаль, Скоп'е, Сафія, Стакгольм, Талін, Тырана, Тыраспаль, Ulyanovsk, Вадуц, Ватыкан, Вена, Вільня, Валгаград, Варшава, Заграб, Цюрых
Choices-bg.utf-8: Амстердам, Андора, Astrakhan, Атина, Белфаст, Белград, Берлин, Братислава, Брюксел, Букурещ, Будапеща, Busingen, Кишинев, Копенхаген, Дъблин, Гибралтар, Джърнси, Хелзинки, Айл ъф Ман, Истанбул, Джърси, Калининград, Kirov, Киев, Лисабон, Любляна, Лондон, Люксембург, Мадрид, Малта, Мариехамн, Минск, Монако, Москва, Никозия, Осло, Париж, Подгорица, Прага, Рига, Рим, Самара, Сан Марино, Сараево, Saratov, Симферопол, Скопие, София, Стокхолм, Талин, Тирана, Тираспол, Ulyanovsk, Вадуц, Ватикана, Виена, Вилнюс, Волгоград, Варшава, Загреб, Цюрих
Choices-ca.utf-8: Amsterdam, Andorra, Astracan, Atenes, Belfast, Belgrad, Berlín, Bratislava, Brussel·les, Bucarest, Budapest, Büsingen am Hochrhein, Chisinau, Copenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Illa de Man, Istanbul, Jersey, Kaliningrad, Kírov, Kíev, Lisboa, Ljubljana, Londres, Luxemburg, Madrid, Malta, Mariehamn, Minsk, Mònaco, Moscow, Nicosia, Oslo, París, Podgorica, Praga, Riga, Roma, Samara, San Marino, Sarajevo, Saràtov, Simferopol, Skopje, Sofia, Estocolm, Tallinn, Tirane, Tiraspol, Uliànovsk, Vaduz, Vaticà, Viena, Vilnius, Volgograd, Varsòvia, Zagreb, Zuric
Choices-cs.utf-8: Amsterodam, Andorra, Astrachaň, Athény, Belfast, Bělehrad, Berlín, Bratislava, Brusel, Bukurešť, Budapešť, Büsingen, Kišiněv, Kodaň, Dublin, Gibraltar, Guernsey, Helsinky, Ostrov Man, Istanbul, Jersey, Kaliningrad, Kirov, Kijev, Lisabon, Lublaň, Londýn, Lucemburk, Madrid, Malta, Mariehamn, Minsk, Monako, Moskva, Nikósie, Oslo, Paříž, Podgorica, Praha, Riga, Řím, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofie, Stockholm, Talin, Tirana, Tiraspol, Uljanovsk, Vaduz, Vatikán, Vídeň, Vilnius, Volgograd, Varšava, Záhřeb, Curych
Choices-da.utf-8: Amsterdam, Andorra, Astrakhan, Athen, Belfast, Beograd, Berlin, Bratislava, Bruxelles, Bukarest, Budapest, Busingen, Chisinau, København, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lissabon, Ljubljana, London, Luxembourg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moskva, Nicosia, Oslo, Paris, Podgorica, Prag, Riga, Rom, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikanet, Wien, Vilnius, Volgograd, Warszawa, Zagreb, Zurich
Choices-de.utf-8: Amsterdam, Andorra, Astrachan, Athen, Belfast, Belgrad, Berlin, Bratislava, Brüssel, Bukarest, Budapest, Büsingen, Chisinau, Kopenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirow, Kiew, Lissabon, Ljubljana, London, Luxemburg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moskau, Nicosia, Oslo, Paris, Podgorica, Prag, Riga, Rom, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirana, Tiraspol, Uljanowsk, Vaduz, Vatikan, Wien, Vilnius, Wolgograd, Warschau, Zagreb, Zürich
Choices-en.utf-8: Amsterdam, Andorra, Astrakhan, Athens, Belfast, Belgrade, Berlin, Bratislava, Brussels, Bucharest, Budapest, Büsingen, Chisinau, Copenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirov, Kyiv, Lisbon, Ljubljana, London, Luxembourg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moscow, Nicosia, Oslo, Paris, Podgorica, Prague, Riga, Rome, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Vienna, Vilnius, Volgograd, Warsaw, Zagreb, Zurich
Choices-es.utf-8: Ámsterdam, Andorra, Astracán, Atenas, Belfast, Belgrado, Berlín, Bratislava, Bruselas, Bucarest, Budapest, Büsingen, Chisinau, Copenhague, Dublín, Gibraltar, Guernsey, Helsinki, Isla de Man, Estambul, Jersey, Kaliningrado, Kírov, Kiev, Lisboa, Liubliana, Londres, Luxemburgo, Madrid, Malta, Mariehamn, Minsk, Mónaco, Moscú, Nicosia, Oslo, París, Podgorica, Praga, Riga, Roma, Samara, San Marino, Sarajevo, Sarátov, Simferopol, Skopie, Sofía, Estocolmo, Tallin, Tirana, Tiraspol, Uliánovsk, Vaduz, Vaticano, Viena, Vilna, Volgogrado, Varsovia, Zagreb, Zúrich
Choices-eu.utf-8: Amsterdam, Andorra, Astrakhan, Atenas, Belfast, Belgrad, Berlin, Bratislava, Brusela, Bukarest, Budapest, Busingen, Chisinau, Kopenhage, Dublin, Gibraltar, Guernsey, Helsinki, Man Uhartea, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lisboa, Ljubljana, Londres, Luxemburgo, Madril, Malta, Mariehamn, Minsk, Monako, Mosku, Nicosia, Oslo, Paris, Podgorica, Praga, Riga, Erroma, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikanoa, Viena, Vilnius, Volgograd, Warsaw, Zagreb, Zurich
Choices-fi.utf-8: Amsterdam, Andorra, Astrakhan, Ateena, Belfast, Belgrad, Berliini, Bratislava, Brysseli, Bukarest, Budapest, Busingen, Chişinǎu, Kööpenhamina, Dublin, Gibraltar, Guernsey, Helsinki, Mansaari, Istanbul, Jersey, Kaliningrad, Kirov, Kiova, Lissabon, Ljubljana, Lontoo, Luxemburg, Madrid, Malta, Maarianhamina, Minsk, Monaco, Moskova, Nikosia, Oslo, Pariisi, Podgorica, Praha, Eiika, Rooma, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Tukholma, Tallinna, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikaani, Wien, Vilna, Volgograd, Varsova, Zagreb, Zürich
Choices-fr.utf-8: Amsterdam, Andorre, Astrakhan, Athènes, Belfast, Belgrade, Berlin, Bratislava, Bruxelles, Bucarest, Budapest, Büsingen, Chisinau, Copenhague, Dublin, Gibraltar, Guernesey, Helsinki, Île de Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lisbonne, Ljubljana, Londres, Luxembourg, Madrid, Malte, Mariehamn, Minsk, Monaco, Moscou, Nicosie, Oslo, Paris, Podgorica, Prague, Riga, Rome, Samara, Saint-Marin, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallin, Tirana, Tiraspol, Oulianovsk, Vaduz, Vatican, Vienne, Vilnius, Volgograd, Varsovie, Zagreb, Zurich
Choices-gl.utf-8: Amsterdam, Andorra, Astracán, Atenas, Belfast, Belgrado, Berlín, Bratislava, Bruxelas, Bucarest, Budapest, Büsingen, Chisinau, Copenhague, Dublín, Xibraltar, Guernsey, Helsinki, Illa de Man, Estambul, Jersey, Kaliningrad, Kirov, Kiev, Lisboa, Ljubljana, Londres, Luxemburgo, Madrid, Malta, Mariehamn, Minsk, Mónaco, Moscova, Nicosia, Oslo, París, Podgorica, Praga, Riga, Roma, Samara, San Marino, Saraxevo, Saratov, Simferopol, Skopje, Sofía, Estocolmo, Tallín, Tirana, Tiraspol, Ulianovsk, Vaduz, Cidade do Vaticano, Viena, Vilna, Volgogrado, Varsovia, Zagreb, Zurich
Choices-gu.utf-8: આમસ્ટરડેમ, એન્ડોરા, Astrakhan, એથેન્સ, બેલફાસ્ટ, બેલગ્રેડ, બર્લિન, બ્રાટિસ્લાવા, બ્રસેલ્સ, બુખારેસ્ટ, બુડાપેસ્ટ, Busingen, ચિસિનાઉ, કોપનહેગન, ડબ્લિન, જીબ્રાલ્ટર, ગુર્નસે, હેલસિન્કી, આઇસ્લે ઓફ મેન, ઇન્તંબુલ, જર્સી, કાલિનિનગ્રાડ, Kirov, કિવ, લિસ્બન, લજુબ્લજાના, લંડન, લક્ઝમબર્ગ, મેડ્રીડ, માલ્ટા, મેરીહામ્ન, મિન્સ્ક, મોનેકો, મોસ્કો, નિકોસિઆ, ઓસ્લો, પેરિસ, પોડગોરિકા, પ્રાગ, રિગા, રોમ, સમારા, સાન મરિનો, સારાજેવો, Saratov, સિમફેરોપોલ, સ્કોપ્જે, સોફિઆ, સ્ટોકહોમ, તાલિન, તિરાને, તિરાસ્પોલ, Ulyanovsk, વાડુઝ, વેટિકન, વિએના, વિલ્નિઅસ, વોલ્ગોગ્રાડ, વોર્સો, ઝાગ્રેબ, ઝ્યુરિચ
Choices-he.utf-8: אמסטרדם, אנדורה, אסטרחן, אתונה, בלפסט, בלגרד, ברלין, ברטיסלבה, בריסל, בוקרשט, בודפשט, ביזינגן, קישינב, קופנהגן, דבלין, גיברלטר, גרנזי, הלסינקי, האי מאן, איסטנבול, ג'רזי, קלינינגרד, קירוב, קייב, ליסבון, ליובליאנה, לונדון, לוקסמבורג, מדריד, מלטה, מרייהאמן, מינסק, מונקו, מוסקבה, ניקוסיה, אוסלו, פריז, פודגוריצה, פראג, ריגה, רומא, סמרה, סאן מרינו, סרייבו, סראטוב, סימפרופול, סקופיה, סופיה, שטוקהולם, טאלין, טירנה, טירספול, אוליאנובסק, ואדוץ, וותיקן, וינה, וילנה, וולגוגרד, ורשה, זגרב, ציריך
Choices-hr.utf-8: Amsterdam, Andora, Astrakhan, Atena, Belfast, Beograd, Berlin, Bratislava, Bruxelles, Bukurešt, Budimpešta, Busingen, Kišinjev, Kopenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istanbul, Jersey, Kalinjingrad, Kirov, Kijev, Lisabon, Ljubljana, London, Luksemburg, Madrid, Malta, Mariehamn, Minsk, Monako, Moskva, Nicosia, Oslo, Pariz, Podgorica, Prag, Riga, Rim, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofija, Stockholm, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikan, Beč, Vilnius, Volgograd, Varšava, Zagreb, Zürich
Choices-hu.utf-8: Amszterdam, Andorra, Astrakhan, Athén, Belfast, Belgrád, Berlin, Pozsony, Brüsszel, Bukarest, Budapest, Büsingen, Kisinyov, Koppenhága, Dublin, Gibraltár, Guernsey, Helsinki, Man-sziget, Isztambul, Jersey, Moszkva-01 - Kalinyingrád, Kirov, Kijev, Lisszabon, Ljubljana, London, Luxemburg, Madrid, Málta, Mariehamn, Minszk, Monaco, Moszkva+00 - nyugat-Oroszország, Nicosia, Oslo, Párizs, Podgorica, Prága, Riga, Róma, Moszkva+01 - Kaszpi-tenger, San Marino, Szarajevó, Saratov, Szimferopol, Szkopje, Szófia, Stockholm, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikán, Bécs, Vilnius, Volgográd, Varsó, Zágráb, Zürich
Choices-id.utf-8: Amsterdam, Andora, Astrakhan, Athena, Belfas, Belgrade, Berlin, Bratislava, Brussel, Buchares, Budapes, Busingen, Chisinau, Copenhagen, Dublin, Jabaltar, Guernsey, Helsinki, Isle of Man, Istambul, Jersey, Kaliningrad, Kirov, Kiev, Lisbon, Ljubljana, London, Luxemburg, Madrid, Malta, Marieham, Minsk, Monaco, Moscow, Nicosia, Oslo, Paris, Podgorica, Praha, Riga, Roma, Samara, San Marino, Sarajevo, Saratov, Simferepol, Skopje, Sofia, Stockholm, Talin, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Viena, Vilnius, Volgograd, Warsawa, Zagreb, Zurich
Choices-it.utf-8: Amsterdam, Andorra, Astrakhan, Atene, Belfast, Belgrado, Berlino, Bratislava, Bruxelles, Bucarest, Budapest, Busingen, Chișinău, Copenhagen, Dublino, Gibilterra, Guernsey, Helsinki, Isola di Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lisbona, Lubiana, Londra, Lussemburgo, Madrid, Malta, Mariehamn, Minsk, Monaco, Mosca, Nicosia, Oslo, Parigi, Podgorica, Praga, Riga, Roma, Samara, San Marino, Sarajevo, Saratov, Sinferopoli, Skopje, Sofia, Stoccolma, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vaticano, Vienna, Vilnius, Volgograd, Varsavia, Zagabria, Zurigo
Choices-ja.utf-8: アムステルダム, アンドラ, アストラハン, アセンズ, ベルファスト, ベオグラード, ベルリン, ブラチスラヴァ, ブリュッセル, ブカレスト, ブダペスト, ビュージンゲン, キシニョフ, コペンハーゲン, ダブリン, ジブラルタル, ガーンジー, ヘルシンキ, マン島, イスタンブール, ジャージー, カリーニングラード, キーロフ, キエフ, リスボン, リュブリャーナ, ロンドン, ルクセンブルグ, マドリード, マルタ, マリーハムン, ミンスク, モナコ, モスクワ, ニコシア, オスロ, パリ, ポドゴリツァ, プラハ, リガ, ローマ, サマーラ, サンマリノ, サラエヴォ, サラトフ, シムフェロポリ, スコピエ, ソフィア, ストックホルム, タリン, ティラナ, ティラスポリ, ウリヤノフスク, ファドーツ, バチカン, ヴィエナ, ヴィリニュス, ヴォルゴグラード, ワルシャワ, ザグレブ, チューリヒ
Choices-ko.utf-8: 암스테르담, 안도라, 아스트라한, 아테네, 벨파스트, 베오그라드, 베를린, 브라티슬라바, 브뤼셀, 부쿠레슈티, 부다페스트, 뷔징겐, 키시나우, 코펜하겐, 더블린, 지브롤터, 건지, 헬싱키, 맨 섬, 이스탄불, 저지, 칼리닌그라드, 키로프, 키예프, 리스본, 류블랴나, 런던, 룩셈부르크, 마드리드, 몰타, 마리에하먼, 민스크, 모나코, 모스크바, 니코시아, 오슬로, 파리, 포드고리차, 프라하, 리가, 로마, 사마라, 산마리노, 사라예보, 사라토프, 심페로폴, 스코페, 소피아, 스톡홀름, 탈린, 티라나, 티라스폴, 울랴노브스크, 바두츠, 바티칸, 빈, 빌니우스, 볼고그라드, 바르샤바, 자그레브, 취리히
Choices-ku.utf-8: Amsterdam, Andorra, Astrakhan, Atena, Belfast, Belgrade, Berlin, Bratislava, Brussels, Bucharest, Budapeşte, Busingen, Chisinau, Kopengahen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Stenbol, Jersey, Kaliningrad, Kirov, Kiyev, Lisbon, Ljubljana, London, Luksembûrg, Madrid, Malta, Mariehamn, Minsk, Monako, Moskow, Nicosia, Oslo, Parîs, Podgorica, Prague, Riga, Roma, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofya, Stockholm, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Viyena, Vilnius, Volgograd, Warsaw, Zagreb, Zurîx
Choices-lt.utf-8: Amsterdamas, Andora, Astrakhan, Atėnai, Belfastas, Belgradas, Berlynas, Bratislava, Briuselis, Bukareštas, Budapeštas, Busingen, Kišiniovas, Kopenhaga, Dublinas, Gibraltaras, Gernsi sala, Helsinkis, Meno sala, Stambulas, Džersi Sitis, Kaliningradas, Kirov, Kijevas, Lisabona, Liubliana, Londonas, Liuksemburgas, Madridas, Malta, Mariehamnas, Minskas, Monakas, Maskva, Nikosija, Oslas, Paryžius, Podgorica, Praha, Ryga, Roma, Samara, San Marinas, Sarajevas, Saratov, Simferopolis, Skopjė, Sofija, Stokholmas, Talinas, Tirana, Tiraspolis, Ulyanovsk, Vaducas, Vatikanas, Viena, Vilnius, Volgogradas, Varšuva, Zagrebas, Ciūrichas
Choices-ml.utf-8: ആസ്റ്റര്‍ഡാം, അണ്ടോറ, Astrakhan, ഏഥന്‍സ്, ബെല്‍ഫാസ്റ്റ്, ബെല്‍ഗ്രേഡ്, ബെര്‍ലിന്‍, ബ്രാട്ടിസ്ലാവ, ബ്രസ്സല്‍സ്, ബുക്കാറസ്റ്റ്, ബുഡാപെസ്റ്റ്, Busingen, ചിസിനാവു, കോപ്പന്‍ഹേഗന്‍, ഡബ്ലിന്‍, ജിബ്രാള്‍ട്ടര്‍, ഗുവണ്‍സി, ഹെല്‍സിങ്കി, ഐസില്‍ ഓഫ് മാന്‍, ഇസ്താംബുള്‍, ജെര്‍സി, കലിനിന്‍ഗ്രാഡ്, Kirov, കീവ്, ലിസ്ബണ്‍, ലജുബ്ല്യാന, ലണ്ടന്‍, ലക്സംബര്‍ഗ്, മാഡ്രിഡ്, മാള്‍ട്ട, മരിയേഹാന്‍, മിന്‍സ്ക്, മൊണാക്കോ, മോസ്കോ, നികോഷ്യ, ഓസ്ലോ, പാരീസ്, പോഡ്ഗൊറിക്ക, പ്രാഗ്, റിഗ, റോം, സമാറ, സാന്‍ മരീനോ, സരജാവോ, Saratov, സിംഫെറോപോള്‍, സ്കോപ്യേ, സോഫിയ, സ്റ്റോക്ഹോം, ടാളിന്‍, ടിരാന്‍, ടിരാസ്പോള്‍, Ulyanovsk, വാഡുസ്, വത്തിക്കാന്‍, വിയന്ന, വില്‍നിയസ്, വോള്‍ഗോഗ്രാഡ്, വാഴ്സോ, സഗ്രേബ്, സൂറിച്ച്
Choices-nl.utf-8: Amsterdam, Andorra, Astrachan, Athene, Belfast, Belgrado, Berlijn, Bratislava, Brussel, Boekarest, Boedapest, Büsingen, Chisinau, Kopenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Eiland Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lissabon, Ljubljana, Londen, Luxemburg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moskou, Nicosia, Oslo, Parijs, Podgorica, Praag, Riga, Rome, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirana, Tiraspol, Oeljanovsk, Vaduz, Vaticaanstad, Wenen, Vilnius, Volgograd, Warschau, Zagreb, Zurich
Choices-pl.utf-8: Amsterdam, Andora, Astrachań, Ateny, Belfast, Belgrad, Berlin, Bratysława, Bruksela, Bukareszt, Budapeszt, Büsingen am Hochrhein, Kiszyniów, Kopenhaga, Dublin, Gibraltar, Guernsey, Helsinki, Wyspa Man, Stambuł, Jersey, Kaliningrad, Kirow, Kijów, Lizbona, Lublana, Londyn, Luksemburg, Madryt, Malta, Maarianhamina, Mińsk, Monako, Moskwa, Nikozja, Oslo, Paryż, Podgorica, Praga, Ryga, Rzym, Samara, San Marino, Sarajewo, Saratów, Symferopol, Skopje, Sofia, Sztokholm, Tallinn, Tirana, Tyraspol, Uljanowsk, Vaduz, Watykan, Wiedeń, Wilno, Wołgograd, Warszawa, Zagrzeb, Zurych
Choices-pt.utf-8: Amsterdão, Andorra, Astracã, Atenas, Belfast, Belgrado, Berlim, Bratislávia, Bruxelas, Bucareste, Budapeste, Busingen, Chisinau, Copenhaga, Dublin, Gibraltar, Guernsey, Helsínquia, Ilha de Man, Istambul, Jersey, Kaliningrado, Kirov, Kiev, Lisboa, Ljubljana, Londres, Luxemburgo, Madrid, Malta, Mariehamn, Minsk, Mónaco, Moscovo, Nicósia, Oslo, Paris, Podgorica, Praga, Riga, Roma, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Estocolmo, Tallinn, Tirane, Tiraspol, Ulianovsk, Vaduz, Vaticano, Viena, Vilnius, Volgograd, Varsóvia, Zagreb, Zurique
Choices-pt_br.utf-8: Amsterdam, Andorra, Astracã, Atenas, Belfast, Belgrado, Berlin, Bratislava, Bruxelas, Bucareste, Budapeste, Busingen, Chisinau, Copenhague, Dublin, Gibraltar, Guernsey, Helsinque, Ilha de Man, Istambul, Jersey, Kaliningrado, Kirov, Kiev, Lisboa, Ljubljana, Londres, Luxemburgo, Madrid, Malta, Mariehamn, Minsk, Mônaco, Moscou, Nicosia, Oslo, Paris, Podgorica, Praga, Riga, Rome, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Estocolmo, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vaticano, Viena, Vilnius, Volgogrado, Warsaw, Zagreb, Zurique
Choices-ro.utf-8: Amsterdam, Andora, Astrahan, Atena, Belfast, Belgrad, Berlin, Bratislava, Bruxelles, Bucureşti, Budapesta, Busingen, Chişinău, Copenhaga, Dublin, Gibraltar, Guernesey, Helsinki, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lisabona, Liubliana, Londra, Luxemburg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moscova, Nicosia, Oslo, Paris, Podgorica, Praga, Riga, Roma, Samara, San Marino, Saraievo, Saratov, Simferopol, Skopie, Sofia, Stockholm, Tallin, Tirana, Tiraspol, Ulianovsk, Vaduz, Vatican, Viena, Vilnius, Volgograd, Varşovia, Zagreb, Zurich
Choices-ru.utf-8: Амстердам, Андорра, Астрахань, Афины, Белфаст, Белград, Берлин, Братислава, Брюссель, Бухарест, Будапешт, Бюзинген, Кишинёв, Копенгаген, Дублин, Гибралтар, Гернси, Хельсинки, Остров Мэн, Стамбул, Джерси, Калининград, Киров, Киев, Лиссабон, Любляна, Лондон, Люксембург, Мадрид, Мальта, Мариехамн, Минск, Монако, Москва, Никосия, Осло, Париж, Подгорица, Прага, Рига, Рим, Самара, Сан-Марино, Сараево, Саратов, Симферополь, Скопье, София, Стокгольм, Таллин, Тирана, Тирасполь, Ульяновск, Вадуц, Ватикан, Вена, Вильнюс, Волгоград, Варшава, Загреб, Цюрих
Choices-sk.utf-8: Amsterdam, Andorra, Astrakhan, Atény, Belfast, Belehrad, Berlín, Bratislava, Brusel, Bukurešť, Budapešť, Busingen, Kišiňov, Kodaň, Dublin, Gibraltár, Guernsey, Helsinki, Man, Istanbul, Jersey, Kaliningrad, Kirov, Kyjev, Lisabon, Ľubľana, Londýn, Luxemburg, Madrid, Malta, Mariehamn, Minsk, Monako, Moskva, Nikózia, Oslo, Paríž, Podgorica, Praha, Riga, Rím, Samara, San Maríno, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Štokholm, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikán, Viedeň, Vilnius, Volgograd, Varšava, Záhreb, Zürich
Choices-sq.utf-8: Amsterdam, Andorra, Astrakhan, Athens, Belfast, Belgrade, Berlin, Bratislava, Brussels, Bucharest, Budapest, Busingen, Chisinau, Copenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lisbonë, Ljubljana, London, Luxembourg, Madrid, Malta, Mariehamn, Minsk, Monako, Moskë, Nicosia, Oslo, Paris, Podgorica, Prague, Riga, Rome, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Vienna, Vilnius, Volgograd, Warsaw, Zagreb, Zurich
Choices-sv.utf-8: Amsterdam, Andorra, Astrachan, Aten, Belfast, Belgrad, Berlin, Bratislava, Bryssel, Bukarest, Budapest, Büsingen, Chisinau, Köpenhamn, Dublin, Gibraltar, Guernsey, Helsingfors, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lissabon, Ljubljana, London, Luxemburg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moskva, Nicosia, Oslo, Paris, Podgorica, Prag, Riga, Rom, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirana, Tiraspol, Ulyanovsk, Vaduz, Vatikanstaten, Wien, Vilnius, Volgograd, Warszawa, Zagreb, Zürich
Choices-th.utf-8: อัมสเตอร์ดัม, อันดอร์รา, Astrakhan, เอเธนส์, เบลฟัสต์, เบลเกรด, เบอร์ลิน, บราติสลาวา, บรัสเซลส์, บูคาเรสต์, บูดาเปสต์, Busingen, คีชีเนา, โคเปนเฮเกน, ดับลิน, ยิบรอลตาร์, เกิร์นซีย์, เฮลซิงกิ, เกาะแมน, อิสตันบูล, เจอร์ซีย์, Kaliningrad, Kirov, เคียฟ, ลิสบอน, ลูบลิยานา, ลอนดอน, ลักเซมเบิร์ก, มาดริด, มอลตา, Mariehamn, มินสก์, โมนาโก, มอสโก, นิโคเซีย, ออสโล, ปารีส, พอดกอรีตซา, ปราก, รีกา, โรม, Samara, ซานมารีโน, ซาราเยโว, Saratov, Simferopol, สโกเปีย, โซเฟีย, สตอกโฮล์ม, ทาลลินน์, Tirane, Tiraspol, Ulyanovsk, วาดุซ, วาติกัน, เวียนนา, วิลนีอุส, Volgograd, วอร์ซอ, ซาเกร็บ, ซูริก
Choices-tr.utf-8: Amsterdam, Andora, Astrahan, Atina, Belfast, Belgrad, Berlin, Bratislava, Brüksel, Bükreş, Budapeşte, Büsingen, Kişinev, Kopenhag, Dublin, Cebelitarık, Guernsey, Helsinki, Man Adası, İstanbul, Jersey, Kaliningrad, Kirov, Kiev, Lizbon, Ljubljana, Londra, Lüksemburg, Madrid, Malta, Mariehamn, Minsk, Monako, Moskova, Lefkoşa, Oslo, Paris, Podgorica, Prag, Riga, Roma, Samara, San Marino, Saraybosna, Saratov, Akmescit, Üsküp, Sofya, Stockholm, Tallinn, Tiran, Tiraspol, Ulyanovsk, Vaduz, Vatikan, Viyana, Vilnius, Volgograd, Varşova, Zagreb, Zürih
Choices-vi.utf-8: Amsterdam, Andorra, Astrakhan, Athens, Belfast, Belgrade, Berlin, Bratislava, Brussels, Bucharest, Budapest, Busingen, Chisinau, Copenhagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istanbul, Jersey, Kaliningrad, Kirov, Kiev, Lisbon, Ljubljana, London, Luxembourg, Madrid, Malta, Mariehamn, Minsk, Monaco, Moscow, Nicosia, Oslo, Paris, Podgorica, Prague, Riga, Roma, Samara, San Marino, Sarajevo, Saratov, Simferopol, Skopje, Sofia, Stockholm, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Vienna, Vilnius, Volgograd, Warsaw, Zagreb, Zurich
Choices-wo.utf-8: Amsterdaam, Andorra, Astrakhan, Ateen, Belfast, Belgraad, Berliin, Bratislava, Bruuksel, Bukarest, Budapest, Busingen, Chisinau, Kopenhaagen, Dublin, Gibraltar, Guernsey, Helsinki, Isle of Man, Istambul, Jersey, Moscou -01 (Kaliningrad), Kirov, Kiyeef, Lisbonne (cas général), Liyubliyaana, London, Luksembuur, Madrid (cas général), Malt, Mariehamn, Minsk, Monaako, Moscou (Russie de l'Ouest), Nikoosi, Oslo, Pari, Podgoritsa, Praag, Riga, Room, Moscou +01 (Mer Caspienne), San Marino, Sarayeefo, Saratov, Simferopol, Skopiye, Sofia, Stokholm, Tallinn, Tirane, Tiraspol, Ulyanovsk, Vaduz, Vatican, Vieen, Vilnius, Volgograd, Warsowi, Zagreb, Zurik
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Indian
Choices: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-be.utf-8: Антананарыву, Чагас, Востраў Раства, Какосавыя астравы, Каморы, Кэргелен, Магэ, Мальдывы, Маўрыцы, Маёт, Рэюньён
Choices-bg.utf-8: Антананариво, Чагос, о-в Рождество, о-ви Кокос, Коморски о-ви, Кергуелен, Махе, Малдивски о-ви, Мавриций, Майоте, Реюнион
Choices-ca.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-cs.utf-8: Antananarivo, Čagoské ostrovy, Vánoční ostrov, Kokosové ostrovy, Komory, Kergueleny, Mahé, Maledivy, Mauricius, Mayotte, Réunion
Choices-da.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldiverne, Mauritius, Mayotte, Reunion
Choices-de.utf-8: Antananarivo, Chagos, Weihnachtsinsel, Kokos, Comoro, Kerguelen, Mahe, Malidiven, Mauritius, Mayotte, Réunion
Choices-en.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-es.utf-8: Antananarivo, Chagos, Isla de Navidad, Cocos, Comoro, Kerguelen, Mahe, Maldivas, Mauricio, Mayotte, Reunión
Choices-eu.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldivak, Maurizio, Mayotte, Reunion
Choices-fi.utf-8: Antananarivo, Chagos, Joulusaari, Kookossaaret, Comoro, Kerguelen, Mahé, Malediivit, Mauritius, Mayotte, Réunion
Choices-fr.utf-8: Tananarive, Chagos, Christmas (île), Cocos (îles), Comores, Kerguelen, Mahé, Maldives, Île Maurice, Mayotte, Réunion
Choices-gl.utf-8: Antananarivo, Chagos, Illa de Nadal, Illas Cocos, Illas Comores, Kerguelen, Mahe, Illas Maldivas, Mauricio, Mayotte, Illa de Reunión
Choices-gu.utf-8: એન્ટાનાનારીવો, ચાગોસ, ક્રિસમસ, કોકોસ, કોમોરો, કેર્ગુએલેન, માહે, માલદિવ, મોરિશિઅસ, માયોટ્ટે, રીયુનિયન
Choices-he.utf-8: אנטננריבו, צ'גוס, אי חג המולד, איי קוקוס, קומורו, קרגלן, מאהה, האיים המלדיביים, מאוריציוס, מיוט, ראוניון
Choices-hr.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldivi, Mauricijus, Mayotte, Reunion
Choices-hu.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldív-szigetek, Mauritius, Mayotte, Reunion
Choices-id.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-it.utf-8: Antananarivo, Isole Chagos, Isola di Natale, Cocos, Comore, Isole Kerguelen, Mahé, Maldive, Mauritius, Mayotte, Riunione
Choices-ja.utf-8: アンタナナリヴォ, チャゴス, クリスマス, ココス, コモロ, ケルゲレン, マエ, モルジヴ, モーリシャス, マヨット, レユニオン
Choices-ko.utf-8: 안타나나리보, 차고스 제도, 크리스마스섬, 코코 섬, 코모로, 케르겔렌 제도, 마에, 몰디브, 모리셔스, 마요트, 레위니옹
Choices-ku.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-lt.utf-8: Antananaryvas, Čagoso archipelagas, Kalėdų sala, Kokoso salos, Komoro salos, Ketgeleno sala, Mahė, Maldyvai, Mauricijus, Mayoteas, Reunionas
Choices-ml.utf-8: അന്റനാനാറിവോ, ചാഗോസ്, ക്രിസ്തുമസ്, കൊകോസ്, കൊമോറോ, കെര്‍ഗുവേലന്‍, മാഹി, മാലിദ്വീപ്, മൌറീഷ്യസ്, മയോട്ടേ, റീയൂണിയന്‍
Choices-nl.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldiven, Mauritius, Mayotte, Reunion
Choices-pl.utf-8: Antananarywa, Czagos, W. Bożego Narodzenia, Wyspa Kokosowa, Komory, Wyspy Kerguelena, Mahe, Malediwy, Mauritius, Majotta, Reunion
Choices-pt.utf-8: Antananarivo, Chagos, Ilha Natal, Cocos, Comoro, Kerguelen, Mahe, Maldivas, Maurício, Mayotte, Ilha Reunião
Choices-pt_br.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldivas, Maurício, Mayotte, Reunion
Choices-ro.utf-8: Antananarivo, Chagos, Insula Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldive, Mauritius, Mayotte, Reunion
Choices-ru.utf-8: Антананариву, Чагос, Остров Рождества, Кокосовые острова, Коморские острова, Кергелен, Маэ, Мальдивы, Маврикий, Майотта, Реюньон
Choices-sk.utf-8: Antananarivo, Čagoské ostrovy, Vianočný ostrov, Kokosové ostrovy, Komorské ostrovy, Kergueleny, Mahé, Maldivy, Maurícius, Mayotte, Réunion
Choices-sq.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-sv.utf-8: Antananarivo, Chagosöarna, Christmas Island, Cocosöarna, Komorerna, Kerguelenöarna, Mahé, Maldiverna, Mauritius, Mayotte, Réunion
Choices-th.utf-8: อันตานานาริโว, Chagos, คริสต์มาส, โคโคส, คอโมโรส, Kerguelen, Mahe, มัลดีฟส์, มอริเชียส, มายอต, เรอูนียง
Choices-tr.utf-8: Antananarivo, Chagos, Christmas, Cocos, Komoro, Kerguelen, Mahe, Maldivler, Mauritius, Mayotte, Reunion
Choices-vi.utf-8: Antananarivo, Chagos, Christmas, Cocos, Comoro, Kerguelen, Mahe, Maldives, Mauritius, Mayotte, Reunion
Choices-wo.utf-8: Antananarivo, Chagos, Christmas, Cocos, Komoor, Kerguelen, Mahe, Maldiif, Mooris, Mayot, Reunion
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/Pacific
Choices: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago_Pago, Palau, Pitcairn, Pohnpei, Port_Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-be.utf-8: Апія, Оўклэнд, Bougainville, Чатам, Chuuk, Востраў Пасхі, Эфат, Факаёфа, Фіджы, Фунафуці, Галапагос, Гамбер, Гуядалканал, Гуям, Ганалулу, Джонстан, Kanton, Кірытымаці, Косра, Кваялэйн, Маджура, Маркізы, Мідвэй, Наўру, Ніў, Норфалк, Нумэя, Пага-Пага, Палаў, Піткэрн, Pohnpei, Порт-Морзбі, Раратонга, Сайпан, Samoa, Таіці, Тарава, Тангатапу, Ўэйк, Ўэліс, Яп
Choices-bg.utf-8: Апия, Окланд, Bougainville, о-ви Чатам, Chuuk, Великденски остров, Ефат, Факаофо, Фиджи, Фунафути, Галапагоски о-ви, о-ви Гамбир, Гуадалканал, Гуам, Хонолулу, Джонстън, Kanton, Киритимати, Косрае, Куаджалейн, Маджуро, Маркизки о-ви, Мидуей, Науру, Ниуе, Норфолк, Нумеа, Паго Паго, Палау, Питкейрн, Pohnpei, Порт Морзби, Раротонга, Сейпан, Самоа, Таити (Дружествени о-ви), Тарава (Гилбертски о-ви), Тонгатапу, Уейк, Уелис, Яп
Choices-ca.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Canton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Naurà, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahití, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-cs.utf-8: Apia, Auckland, Bougainville, Chathamské ostrovy, Chuuk, Velikonoční ostrov, Efate, Fakaofo, Fidži, Funafuti, Galapágy, Gambierovy ostrovy, Guadalcanal, Guam, Honolulu, Atol Johnston, Kanton, Kiritimati (Vánoční ostrov), Kosrae, Atol Kwajalein, Majuro, Markézy, Midwayské ostrovy, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Pitcairnovy ostrovy, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa (Gilbertovy ostrovy), Tongatapu, Ostrov Wake, Ostrov Walis, Yap
Choices-da.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-de.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Osterinsel, Éfaté, Fakaofo, Fidschi, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-en.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-es.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Isla de Pascua, Efate, Fakaofo, Fiyi, Funafuti, Galápagos, Gambier, Guadalcanal, Guam, Honolulú, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Numea, Pago Pago, Palau, Pitcairn, Pohnpei, Puerto Moresby, Rarotonga, Saipán, Samoa, Tahití, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-eu.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Pazko uhartea, Efate, Fakaofo, Fiji, Funafuti, Galapagoak, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-fi.utf-8: Apia, Auckland, Bougainville, Chathamsaaret, Chuuk, Pääsiäissaari, Efate, Fakaofo, Fidži, Funafuti, Galápagossaaret, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midwaysaaret, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wakensaari, Wallis, Yap
Choices-fr.utf-8: Apia, Auckland, Bougainville, îles Chatham, Chuuk, Île de Pâques, Efate, Fakaofo, Fidji, Funafuti, Îles Galapagos, Îles Gambier, Guadalcanal, Guam, Honolulu, Johnston, Canton (Kiribati), Kiritimati (îles Line), Kosrae, Kwajalein, Majuro, Îles Marquises, îles Midway, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Pitcairn, Pohnpei, Port-Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa (îles Gilbert), Tongatapu, Wake (île), Wallis, Yap
Choices-gl.utf-8: Apia, Auckland, Bougainville, Illas Chatham, Chuuk, Illa de Pascua, Efate, Fakaofo, Fixi, Funafuti, Galápagos, Illas Gambier, Guadalcanal, Guam, Honolulú, Atol de Johnston, Kanton, Kiritimati (Illas Line), Kosrae, Kwajalein, Majuro, Illas Marquesas, Illas Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipán, Samoa, Tahití, Tarawa (Illas Gilbert), Tongatapu, Illa de Wake, Wallis, Yap
Choices-gu.utf-8: અપિઆ, ઓકલેન્ડ, Bougainville, ચેથામ, ચુઉક, ઇસ્ટર, ઇફાટે, ફાકાઓફો, ફિજી, ફુનાફુટી, ગાલાપાગોસ, ગામ્બેઇર, ગુઆડાલ્કેનાલ, ગુઆમ, હોનોલુલુ, જોહ્નસ્ટન, Kanton, કીરીમાતી, કોસ્રે, ક્વાજાલેઇન, માજુરો, માર્કેસસ, મિડવે, નાઉરુ, નિયુ, નોર્ફોક, નાઉમે, પાગો પાગો, પાલુઆ, પિટકેર્ન, પોહ્નપેઈ, પોર્ટ મોર્સબે, રારોટોન્ગા, સાઇપાન, સમોઆ, તાહિતિ, તારાવા, ટોન્ગાટાપુ, વેક, વાલ્લિસ, યેપ
Choices-he.utf-8: אפיה, אוקלנד, בוגנוויל, Chatham, צ'וק, Easter, אפטה, קפאופו, פיג'י, פנאפוטי, איי גלפאגוס, Gambier Islands, גוודלקנל, גואם, הונולולו, אטול ג'ונסטון, קנטון, קיריטימטי (Line Islands), קוסראה, קווג'לין, מאג'ורו, איי מרקיז, אטול מידוויי, נאורו, ניואה, נורפוק, Noumea, פאגו פאגו, פלאו, פיטקרן, אי פונפיי, פורט מורסבי, ררוטונגה, אי סאיפאן, סמואה, טהיטי, Tarawa (איי גילברט), טונגטפו, אי וייק, ואליס, יאפ
Choices-hr.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-hu.utf-8: Apia, Auckland, Bougainville, Chatham-szigetek, Chuuk, Húsvét-szigetek, Efate, Fakaofo, Fidzsi, Funafuti, Galápagos-szigetek, Gambier-szigetek, Guadalcanal, Guam, Honolulu, Johnston Atoll, Kanton, Kiritimati (Line-szigetek), Kosrae, Kwajalein, Majuro, Marquesas-szigetek, Midway-szigetek, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Szamoa, Tahiti, Tarawa (Gilbert-szigetek), Tongatapu, Wake sziget, Wallis, Yap
Choices-id.utf-8: Apia, Auckland, Bougainville, Kepulauan Chatham, Chuuk, Pulau Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Kep Gambier, Guadalcanal, Guam, Honolulu, Atol Johnston, Kanton, Kiritimati (Kep Line), Kosrae, Kwajalein, Majuro, Kep Marquesas, Kep Midway-Islands, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti (Kep Society), Tarawa (Kep Gilbert), Tongatapu, Pulau Wake, Wallis, Yap
Choices-it.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Isola di Pasqua, Éfaté, Fakaofo, Figi, Funafuti, Galapagos, Isole Gambier, Guadalcanal, Guam, Honolulu, Atollo Johnston, Kanton, Isola Christmas, Kosrae, Kwajalein, Majuro, Isole Marchesi, Atollo di Midway, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Isole Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Isola di Wake, Isole di Wallis, Yap
Choices-ja.utf-8: アピア, オークランド, ブーゲンヴィル, チャタム島, チューク諸島, イースター島, エファーテ, ファカオフォ, フィジー, フナフティ, ガラパゴス, ガンビア, ガダルカナル, グアム, ホノルル, ジョンストン, カントン, キリティマティ, コスラエ, クアジャリン, マジュロ, マルケサス, ミッドウェー, ナウル, ニウエ, ノーフォーク, ヌーメア, パゴパゴ, パラオ, ピトケアン島, ポンペイ島, ポルトモーズビー, ラロトンガ, サイパン, サモア, タヒチ, タラワ, トンガタプ, ウェーク, ヴァリス, ヤップ
Choices-ko.utf-8: 아피아, 오클랜드, 부건빌, 채텀, 추크, 이스터섬, 에파테, 파카오포, 피지, 푸나푸티, 갈라파고스, 갬비어, 과달카날, 괌, 호놀루루, 존스턴, 칸톤 섬, 키리티마티 섬, 코스라에 섬, 콰잘레인 환초, 마주로, 마르키즈 제도, 미드웨이 제도, 나우루, 니우에, 노퍽, 누메아, 파고파고, 팔라우, 핏케언, 폰페이 섬, 포트모르즈비, 라로통가 섬, 사이판, 사모아, 타히티, 타라와, 통가타푸 섬, 웨이크 섬, 발레, 야프
Choices-ku.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fîjî, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-lt.utf-8: Apija, Oklandas, Bougainville, Chatham salos, Chuuk, Velykų sala, Efate sala, Fakaofo sala, Fidžis, Funafutis, Galapagos, Gambier salos, Gvadalkanalio sala, Guamas, Honolulu, Džonstono atolas, Kanton, Kiritimati, Kosrae, Kvadželeino atolas, Madžūras, Markizo salos, Midvėjaus salos, Nauru, Niuė, Norfolkas, Nomea, Pago Pago, Palau, Pikterno salos, Pohnpei, Port Morsbis, Rarotonga, Saipanas, Samoa, Taitis, Tarava, Tongatapu, Veiko sala, Valis, Japas
Choices-ml.utf-8: അപിയ, ഓക്‍ലണ്ട് ‍ , Bougainville, ചാതം, Chuuk, ഈസ്റ്റര്‍, ഇഫേറ്റ്, ഫകവോഫോ, ഫിജി, ഫുനാഫുട്ടി, ഗാലപ്പഗോസ്, ഗാമ്പിയര്‍, ഗ്വാഡല്‍കനാല്‍, ഗുാവാം, ഹോണോലുലു, ജോണ്‍സണ്‍, Kanton, ക്രിതിമാതി, കൊസ്രേ, ക്വജാലൈന്‍, മജൂറോ, മാര്‍‌ക്വേസാസ്, മിഡ്‌വേ, നൌറു, നിയു, നോര്‍ഫോക്ക്, നൌമിയ, പാഗോ പാഗോ, പലാവു, പിറ്റ്കയേണ്‍, Pohnpei, മോര്‍സ്ബി തുറമുഖം, രരോടോങ്ക, സായിപാന്‍, സമോവ, താഹിതി, തരാവ, ടോങ്കടാപു, വേയ്ക്ക്, വാളിസ്, യാപ്
Choices-nl.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-pl.utf-8: Apia, Auckland, Bougainville, Wyspa Chatham, Chuuk, Wyspa Wielkanocna, Efate, Fakaofo, Fidżi, Funafuti, Galapagos, Wyspy Gambiera, Guadalcanal, Guam, Honolulu, Johnston, Wyspa Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Markizy, Midway, Nauru, Niue, Norfolk, Numea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-pt.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Ilha da Páscoa, Efate, Fakaofo, Fiji, Funafuti, Galápagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Pitcairn, Pohnpei, Porto Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-pt_br.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galápagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Taiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-ro.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Insula Paștelui, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-ru.utf-8: Апиа, Окленд, Бугенвиль, Чатем, Чуук, Остров Пасхи, Эфате, Факаофо, Фиджи, Фунафути, Галапагосские острова, Остров Гамбье, Гуадалканал, Гуам, Гонолулу, Джонстон, Kanton, Киритимати, Кусаие, Кваджалейн, Маджуро, Маркизские острова, Мидуэй, Науру, Ниуэ, Норфолк, Нумеа, Паго-Паго, Палау, Питкэрн, Понпеи, Порт-Морсби, Раротонга, Сайпан, Самоа, Таити, Тарава, Тонгатапу, Уэйк, Уоллис, Яп
Choices-sk.utf-8: Apia, Auckland, Bougainville, Chathamské ostrovy, Chuuk, Veľkonočný ostrov, Éfaté, Fakaofo, Fidži, Funafuti, Galapágy, Gambierove ostrovy, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kusaie, Kwajalein, Majuro, Markézy, Midway, Nauru, Niue, Norfolk, Nouméa, Pago Pago, Palau, Pitcairnove ostrovy, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-sq.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Easter, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Wallis, Yap
Choices-sv.utf-8: Apia, Auckland, Bougainville, Chathamöarna, Chuuk, Påskön, Éfaté, Fakaofo, Fiji, Funafuti, Galapagosöarna, Gambieröarna, Guadalcanal, Guam, Honolulu, Johnston Island, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesasöarna, Midwayöarna, Nauru, Niue Island, Norfolk Island, Nouméa, Pago Pago, Palau, Pitcairnöarna, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wakeöarna, Wallisön, Yap
Choices-th.utf-8: อาปีอา, โอ๊คแลนด์, Bougainville, แชตแธม, ชุก, อีสเทอร์, Efate, Fakaofo, ฟิจิ, ฟูนะฟูตี, กาลาปากอส, Gambier, Guadalcanal, กวม, โฮโนลูลู, จอห์นสตัน, Kanton, Kiritimati, คอสไร, Kwajalein, มาจูโร, Marquesas, มิดเวย์, นาอูรู, นีอูเอ, นอร์ฟอล์ก, นูเมอา, ปาโกปาโก, ปาเลา, พิตแคร์น, โปนเป, พอร์ตมอร์สบี, Rarotonga, ไซปัน, ซามัว, ตาฮิติ, ตาระวา, Tongatapu, เวก, วาลลิส, ยาป
Choices-tr.utf-8: Apia, Auckland, Bougainville, Chatham, Chuuk, Paskalya, Efate, Fakaofo, Fiji, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Marquesas, Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti, Tarawa, Tongatapu, Wake, Valais, Yap
Choices-vi.utf-8: Apia, Auckland, Bougainville, Chatham Islands, Chuuk, Easter Island, Efate, Fakaofo, Phi-gi, Funafuti, Galapagos, Gambier, Guadalcanal, Guam, Honolulu, Johnston, Kanton, Kiritimati, Kosrae, Kwajalein, Majuro, Quần đảo Marquesas, Quần Đảo Midway, Nauru, Niue, Norfolk, Noumea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa (Quần đảo trong Thái Bình Dương), Tahiti (Quần đảo Society), Tarawa (Quần đảo Gilbert), Tongatapu, Đảo Wake, Wallis, Yap
Choices-wo.utf-8: Apia, Auckland (cas général), Bougainville, îles Chatham, Chuuk, Île de Pâques, Efate, Fakaofo, Fiji, Funafuti, Îles Galapagos, Îles Gambier, Guadalcanal, Guam, Honolulu, Atoll Johnston, Kanton, Kiritimati (îles Line), Kosrae, Kwajalein, Majuro, Îles Marquises, îles Midway, Nauru, Niue, Norfolk, Numea, Pago Pago, Palau, Pitcairn, Pohnpei, Port Moresby, Rarotonga, Saipan, Samoa, Tahiti (îles de la Société), Tarawa (îles Gilbert), Tongatapu, île Wake, Wallis, Yap
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: tzdata/Zones/US
Choices: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Pacific, Samoa
Choices-be.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Ціхі акіян, Samoa
Choices-bg.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Тихи океан, Самоа
Choices-ca.utf-8: Alaska, Illes Aleutianes, Arizona, Central, Oriental, Hawaii, Indiana-Starke, Michigan, Muntanya, Pacífic, Samoa
Choices-cs.utf-8: Aljaška, Aleuty, Arizona, Centrální, Východní, Havaj, Indiana-Starke, Michigan, Horské, Pacifik, Samoa
Choices-da.utf-8: Alaska, Aleutian, Arizona, Central, Østlig, Hawaii, Indiana-Starke, Michigan, Mountain, Stillehavstid, Samoa
Choices-de.utf-8: Alaska, Aleuten, Arizona, Zentral, Osten (Eastern), Hawaii, Indiana/Starke, Michigan, Gebirge (Mountain), Pazifik, Samoa
Choices-en.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Starke County (Indiana), Michigan, Mountain, Pacific Ocean, Samoa
Choices-es.utf-8: Alaska, Aleutiana, Arizona, Central, Oriental, Hawaii, Indiana/Starke, Michigan, Montaña, Pacífico, Samoa
Choices-eu.utf-8: Alaska, Aleutia, Arizona, Erdialdea, Ekialdea, Hawaii, Indiana-Starke, Michigan, Mendia, Pazifikoa, Samoa
Choices-fi.utf-8: Alaska, Aleutian, Arizona, Keskinen, Itäinen, Hawaii, Indiana-Starke, Michigan, Vuori, Tyyni valtameri, Samoa
Choices-fr.utf-8: Alaska, Îles aléoutiennes, Arizona, Centre (Central), Est (Eastern), Hawaii, Indiana/Starke, Michigan, Rocheuses (Mountain), Pacifique, Samoa
Choices-gl.utf-8: Alasca, Aleutianas, Arizona, Central, Oriental, Hawai, Indiana-Starke, Michigan, Montañas, Pacífico, Samoa
Choices-gu.utf-8: અલાસ્કા, અલેટુઅન, એરિઝોના, મધ્ય, પૂર્વીય, હવાઈ, ઇન્ડિયાના-સ્ટારકે, મિશિગન, માઉન્ટેન, પેસેફિક, સમોઆ
Choices-he.utf-8: אלסקה, האיים האלאוטיים, אריזונה, סנטרל, מזרח, הוואי, אינדיאנה/סטארקה, מישיגן, אזור ההרים, פסיפיק (האוקיינוס השקט), סמואה
Choices-hr.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Tihi ocean, Samoa
Choices-hu.utf-8: Alaszka, Aleutian, Arizona, Közép, Keleti, Hawaii, Indiana-Starke, Michigan, Mountain, Csendes-óceáni, Szamoa
Choices-id.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Pasifik, Samoa
Choices-it.utf-8: Alaska, Isole Aleutine, Arizona, Centrale, Orientale, Hawaii, Indiana-Starke, Michigan, Mountain, Pacifico, Samoa
Choices-ja.utf-8: アラスカ, アリューシャン, アリゾナ, 中央, 東部, ハワイ, インディアナスターク, ミシガン, マウンテン, 太平洋側, サモア
Choices-ko.utf-8: 알래스카, 알루샨 제도, 애리조나, 중부, 동부, 하와이, 인디애나-스타크, 미시건, 산악 지역, 태평양, 사모아
Choices-ku.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Pasîfîk, Samoa
Choices-lt.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Ramiojo vandenyno, Samoa
Choices-ml.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, പസഫിക്, സമോവ
Choices-nl.utf-8: Alaska, Aleoeten, Arizona, Central, Eastern, Hawaï, Indiana-Starke, Michigan, Mountain, Grote Oceaan, Samoa
Choices-pl.utf-8: Alaskański, Aleucki, Arizoński, Centralny, Wschodni, Hawajski, Indiana-Starke, Michigan, Czas górski, Pacyfik, Samoa
Choices-pt.utf-8: Alaska, Aleutian, Arizona, Central, Este, Hawaii, Indiana-Starke, Michigan, Montanha, Pacífico, Samoa
Choices-pt_br.utf-8: Alasca, Aleutian, Arizona, Central, Oriental, Havaí, Indiana-Starke, Michigan, Moutain, Pacífico, Samoa
Choices-ro.utf-8: Alaska, Aleutiană, Arizona, Central, Estică, Hawaii, Indiana-Starke, Michigan, Munte, Pacific, Samoa
Choices-ru.utf-8: Аляска, Алеутские, Аризона, Центральное, Восточное, Гавайи, Индиана-Старк, Мичиган, Горное, Тихоокеанский регион, Самоа
Choices-sk.utf-8: Aljaška, Aleuty, Arizona, Stredoamerické, Americké východné, Havaj, Indiana/Starke, Michigan, Americké horské, Tichomorie, Samoa
Choices-sq.utf-8: Alaska, Aleutian, Arizona, Qëndror, Lindor, Hawaii, Indiana-Starke, Michigan, Mal, Paqësor, Samoa
Choices-sv.utf-8: Alaska, Aleuterna, Arizona, Central, Eastern, Hawaii, Starke (Indiana), Michigan, Mountain, Stilla Havet, Samoa
Choices-th.utf-8: อะแลสกา, Aleutian, แอริโซนา, ภาคกลาง, ภาคตะวันออก, ฮาวาย, อินดีแอนา/Starke, มิชิแกน, ภูเขา, แปซิฟิก, ซามัว
Choices-tr.utf-8: Alaska, Aleut, Arizona, Merkez, Doğu, Hawaii, Indiana-Starke, Michigan, Mountain, Pasifik, Samoa
Choices-vi.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Thái Bình Dương, Samoa (Quần đảo trong Thái Bình Dương)
Choices-wo.utf-8: Alaska, Aleutian, Arizona, Central, Eastern, Hawaii, Indiana-Starke, Michigan, Mountain, Pasifik, Samoa
Description: Time zone:
Description-ca.utf-8: Fus horari:
Description-cs.utf-8: Časové pásmo:
Description-da.utf-8: Tidszone:
Description-de.utf-8: Zeitzone:
Description-en.utf-8: Time zone:
Description-es.utf-8: Zona horaria:
Description-eu.utf-8: Ordu zonaldea:
Description-fr.utf-8: Fuseau horaire :
Description-gl.utf-8: Fuso horario:
Description-gu.utf-8: સમય વિસ્તાર:
Description-he.utf-8: אזור זמן:
Description-hr.utf-8: Vremenska zona:
Description-hu.utf-8: Időzóna:
Description-id.utf-8: Daerah Waktu:
Description-it.utf-8: Fuso orario:
Description-ja.utf-8: 時間帯:
Description-ko.utf-8: 표준 시간대:
Description-nl.utf-8: Tijdzone:
Description-pl.utf-8: Strefa czasowa:
Description-pt.utf-8: Fuso horário:
Description-pt_br.utf-8: Fuso horário:
Description-ro.utf-8: Fus orar:
Description-ru.utf-8: Часовой пояс:
Description-sk.utf-8: Časové pásmo:
Description-sv.utf-8: Tidszon:
Description-th.utf-8: เขตเวลา:
Description-tr.utf-8: Saat dilimi:
Extended_description: Please select the city or region corresponding to your time zone.
Extended_description-ca.utf-8: Si us plau, seleccioneu la ciutat o regió corresponent al vostre fus horari.
Extended_description-cs.utf-8: Zvolte prosím město nebo oblast odpovídající vašemu časovému pásmu.
Extended_description-da.utf-8: Vælg venligst den by eller region der svarer til din tidszone.
Extended_description-de.utf-8: Bitte wählen Sie die Stadt oder Region aus, die zu Ihrer Zeitzone passt.
Extended_description-en.utf-8: Please select the city or region corresponding to your time zone.
Extended_description-es.utf-8: Por favor, elija la ciudad o región correspondiente a su zona horaria.
Extended_description-eu.utf-8: Hautatu zure ordu-zonari dagokion herri edo estatua.
Extended_description-fr.utf-8: Veuillez choisir la ville ou la région correspondant à votre fuseau horaire.
Extended_description-gl.utf-8: Escolla a cidade ou rexión que corresoponda ao seu fuso horario.
Extended_description-gu.utf-8: મહેરબાની કરી તમારા સમય વિસ્તારને અનુરુપ શહેર અથવા વિસ્તાર પસંદ કરો.
Extended_description-he.utf-8: בחר בבקשה את העיר או האזור שמתאימים לאזור הזמן שלך.
Extended_description-hr.utf-8: Molim odaberite grad ili regiju koja odgovara vašoj vremenskoj zoni.
Extended_description-hu.utf-8: Kérlek, válaszd ki a városnak/régiónak megfelelő időzónát:
Extended_description-id.utf-8: Silakan pilih kota atau daerah waktu yang bersesuaian dengan daerah waktu Anda.
Extended_description-it.utf-8: Selezionare la città o la regione corrispondente al proprio fuso orario.
Extended_description-ja.utf-8: あなたの時間帯に一致する都市または地域を選択してください。
Extended_description-ko.utf-8: 자기 표준 시간대에 해당하는 도시 또는 지역을 선택하십시오.
Extended_description-nl.utf-8: Wat is de stad of regio die overeenkomt met uw tijdzone?
Extended_description-pl.utf-8: Proszę wybrać miasto lub region odpowiadający właściwej strefie czasowej.
Extended_description-pt.utf-8: Por favor escolha a cidade ou região correspondente ao seu fuso horário.
Extended_description-pt_br.utf-8: Por favor, selecione a cidade ou região correspondente ao seu fuso horário.
Extended_description-ro.utf-8: Vă rugăm să selectați orașul sau regiunea care corespunde fusului dvs. orar.
Extended_description-ru.utf-8: Выберите город или область, соответствующие вашему часовому поясу.
Extended_description-sk.utf-8: Prosím, vyberte mesto alebo oblasť zodpovedajúce vášmu časovému pásmu.
Extended_description-sv.utf-8: Välj den stad eller region som motsvarar din tidszon.
Extended_description-th.utf-8: โปรดระบุเมืองหรือภูมิภาคที่ตรงกับเขตเวลาของคุณ
Extended_description-tr.utf-8: Saat diliminize karşılık gelen şehir ya da bölgeyi seçin.
Type: select

Name: ucf/changeprompt
Choices: install the package maintainer's version, keep the local version currently installed, show the differences between the versions, show a side-by-side difference between the versions, start a new shell to examine the situation
Choices-c: install_new, keep_current, diff, sdiff, shell
Choices-ca.utf-8: instal·la la versió del mantenidor del paquet, mantín la versió instal·lada actualment, mostra les diferències entre les versions, mostra les diferències en paral·lel entre les versions, inicia un nou intèrpret d'ordres per examinar la situació
Choices-cs.utf-8: instalovat verzi od správce balíku, ponechat aktuálně instalovanou lokální verzi, zobrazit rozdíly mezi verzemi, zobrazit rozdíly mezi verzemi vedle sebe, spustit nový shell a prozkoumat situaci
Choices-da.utf-8: installer pakkevedligeholderens udgave, bevar din aktuelt installerede udgave, vis forskellene mellem udgaverne, vis forskellene mellem versionerne overfor hinanden, start en ny skal for at undersøge situationen
Choices-de.utf-8: Version des Paketbetreuers installieren, aktuell lokal installierte Version beibehalten, Unterschiede zwischen den Versionen anzeigen, Unterschiede zwischen den Versionen nebeneinander anzeigen, die Angelegenheit in einer neu gestarteten Shell untersuchen
Choices-es.utf-8: instalar la versión del responsable del paquete, conservar la versión local actualmente instalada, mostrar las diferencias entre las versiones, mostrar las diferencias entre las versiones lado a lado, ejecutar un nuevo intérprete para analizar la situación
Choices-eu.utf-8: instalatu mantentzailearen bertsioaren paketea, mantendu lokalean unean instalatutako bertsioa, erakutsi bertsioen arteko desberdintasunak, erakutsi bertsioen arteko desberdintasunak aldez-alde, abiarazi shell berri bat egoera aztertzeko
Choices-fi.utf-8: Asenna paketin ylläpitäjän versio, Säilytä tämän hetkinen paikallinen versio, Näytä versioiden väliset erot, Näytä versioiden väliset erot rinnakkain, Käynnistä uusi komentotulkki tilanteen tutkimiseksi
Choices-fr.utf-8: Installer la version du responsable du paquet, Garder la version actuellement installée, Montrer les différences entre les versions, Montrer côte à côte les différences entre les versions, Lancer un shell pour examiner la situation
Choices-gl.utf-8: instalar a versión do mantenedor do paquete, conservar a versión local instalada actualmente, mostrar as diferenzas entre as versións, mostrar unha comparación entre as versións, iniciar unha shell para examinar a situación
Choices-it.utf-8: installare la versione del manutentore del pacchetto, mantenere la propria versione attualmente installata, mostrare le differenze tra le versioni, mostrare affiancate le differenze tra le versioni, eseguire una nuova shell per esaminare la situazione
Choices-ja.utf-8: パッケージメンテナのバージョンをインストール, 現在インストールされているローカルバージョンを保持, バージョン間の差異を表示, バージョン間の差異を並行表示, 状況を検討するための新しいシェルを起動
Choices-nl.utf-8: installeer de versie van de pakketbeheerder, behoud de huidige versie\, welke lokaal geïnstalleerd is, toon de verschillen tussen de versies, toon zij-aan-zij de verschillen tussen de versies, start een nieuwe shell om de situatie te onderzoeken
Choices-pl.utf-8: zainstalowanie wersji przygotowanej przez opiekuna pakietu, zachowanie lokalnie zainstalowanej wersji, pokazanie różnic pomiędzy wersjami, pokazanie różnic - obok siebie - pomiędzy wersjami, uruchomienie powłoki w celu zbadania sytuacji
Choices-pt.utf-8: instalar a versão do criador do pacote, manter a versão actualmente instalada, mostrar a diferença entre as versões, mostrar uma diferença lado-a-lado entre as versões, iniciar uma nova consola para examinar a situação
Choices-pt_br.utf-8: instalar a versão do mantenedor do pacote, manter a versão local atualmente instalada, exibir as diferenças entre as versões, exibir as diferenças entre as versões lado-a-lado, iniciar um novo shell para examinar a situação
Choices-ru.utf-8: установить версию из пакета, сохранить установленную локальную версию, показать различия между версиями, показать различия между версиями параллельно, запустить новую оболочку для прояснения ситуации
Choices-sk.utf-8: nainštalovať verziu správcu balíka, zachovať aktuálne nainštalovanú lokálnu verziu, zobraziť rozdiely medzi verziami, zobraziť rozdiely medzi verziami vedľa seba, spustiť nový shell na preverenie situácie
Choices-sv.utf-8: installera paketansvariges version, behåll den lokalt installerade version, visa skillnaderna mellan versionerna, visa skillnaderna sida vid sida mellan versionerna, starta ett nytt skal för att undersöka situationen
Choices-vi.utf-8: cài đặt phiên bản của nhà duy trì gói, giữ phiên bản cục bộ được cài đặt hiện thời, hiển thị khác biệt giữa những phiên bản, hiển thị khác biệt cạnh nhau giữa những phiên bản, khởi chạy trình bao mới để khám xét trường hợp
Default: keep_current
Description: What do you want to do about modified configuration file ${BASENAME}?
Description-da.utf-8: Hvad vil du gøre med ændret opsætningsfil ${BASENAME}?
Description-de.utf-8: Wie wollen Sie mit der geänderten Konfigurationsdatei ${BASENAME} verfahren?
Description-es.utf-8: ¿Qué desea hacer con el archivo de configuración modificado «${BASENAME}»?
Description-fr.utf-8: Action souhaitée pour le fichier de configuration modifié ${BASENAME} :
Description-ja.utf-8: 変更された設定ファイル ${BASENAME} について何を行いたいですか?
Description-nl.utf-8: Wat wilt u met het aangepaste configuratiebestand ${BASENAME} doen?
Description-pt.utf-8: O que deseja fazer acerca do ficheiro de configuração modificado ${BASENAME}?
Description-pt_br.utf-8: O que você quer fazer sobre o arquivo de configuração modificado ${BASENAME}?
Description-ru.utf-8: Что нужно сделать с изменённым файлом настройки ${BASENAME}?
Extended_description: ${BASENAME}: A new version (${NEW}) of configuration file ${FILE} is available, but the version installed currently has been locally modified.
Extended_description-da.utf-8: ${BASENAME}: En ny version (${NEW}) af opsætningsfilen ${FILE} er tilgængelig, men den installerede version er blevet ændret lokalt.
Extended_description-de.utf-8: ${BASENAME}: Eine neue Version (${NEW}) der Konfigurationsdatei ${FILE} ist verfügbar, aber die derzeit installierte Version wurde verändert.
Extended_description-es.utf-8: ${BASENAME}: Hay una nueva versión («${NEW}») del archivo de configuración «${FILE}», pero la versión que está instalada ha sido modificada localmente.
Extended_description-fr.utf-8: ${BASENAME} : Une nouvelle version (${NEW}) du fichier de configuration ${FILE} est disponible mais la version actuellement utilisée a été modifiée localement.
Extended_description-ja.utf-8: ${BASENAME}: 設定ファイル ${FILE} の新しいバージョン  (${NEW}) が利用可能ですが、現在インストールされているバージョンは、ローカルで変更されています。
Extended_description-nl.utf-8: ${BASENAME}: Een nieuwe versie (${NEW}) van het configuratiebestand ${FILE} is beschikbaar, maar de momenteel geïnstalleerde versie is lokaal gewijzigd.
Extended_description-pt.utf-8: ${BASENAME}: Está disponível uma nova versão (${NEW}) do ficheiro de configuração ${FILE}, mas a versão actualmente instalada foi modificada localmente.
Extended_description-pt_br.utf-8: ${BASENAME}: Uma nova versão (${NEW}) do arquivo de configuração ${FILE} está disponível, mas a versão atualmente instalada foi modificada localmente.
Extended_description-ru.utf-8: ${BASENAME}: Доступна новая версия (${NEW}) файла настройки ${FILE}, но версия файла, находящаяся в системе, была изменёна локально.
Type: select
Owners: ucf/changeprompt

Name: ucf/changeprompt_threeway
Choices: install the package maintainer's version, keep the local version currently installed, show the differences between the versions, show a side-by-side difference between the versions, show a 3-way difference between available versions, do a 3-way merge between available versions, start a new shell to examine the situation
Choices-c: install_new, keep_current, diff, sdiff, diff_threeway, merge_threeway, shell
Choices-da.utf-8: installer pakkevedligeholderens udgave, bevar din aktuelt installerede udgave, vis forskellene mellem udgaverne, vis forskellene mellem versionerne overfor hinanden, vis 3-vejs forskelle mellem de tilgængelige udgaver af filen, lav 3-vejs forskelle mellem de tilgængelige udgaver af filen, start en ny skal for at undersøge situationen
Choices-de.utf-8: Version des Paketbetreuers installieren, aktuell lokal installierte Version beibehalten, Unterschiede zwischen den Versionen anzeigen, Unterschiede zwischen den Versionen nebeneinander anzeigen, 3-Wege-Unterschiede verfügbarer Versionen anzeigen, eine 3-Wege-Zusammenführung der verfügbaren Versionen durchführen, die Angelegenheit in einer neu gestarteten Shell untersuchen
Choices-es.utf-8: instalar la versión del responsable del paquete, conservar la versión local actualmente instalada, mostrar las diferencias entre las versiones, mostrar las diferencias entre las versiones lado a lado, comparar a tres bandas las versiones disponibles, hacer una fusión a tres bandas de las versiones disponibles, ejecutar un nuevo intérprete para analizar la situación
Choices-fr.utf-8: Installer la version du responsable du paquet, Garder la version actuellement installée, Montrer les différences entre les versions, Montrer côte à côte les différences entre les versions, Montrer les différences entre les trois versions du fichier, Fusionner les différences entre les trois versions du fichier, Lancer un shell pour examiner la situation
Choices-ja.utf-8: パッケージメンテナのバージョンをインストール, 現在インストールされているローカルバージョンを保持, バージョン間の差異を表示, バージョン間の差異を並行表示, 利用可能なバージョン間の 3 ウェイ差分を表示, 利用可能なバージョン間の 3 ウェイマージを実行, 状況を検討するための新しいシェルを起動
Choices-nl.utf-8: installeer de versie van de pakketbeheerder, behoud de huidige versie\, welke lokaal geïnstalleerd is, toon de verschillen tussen de versies, toon zij-aan-zij de verschillen tussen de versies, toon de verschillen via een 3-wegsvergelijking tussen beschikbare versies, maak een 3-wegssamenvoeging tussen beschikbare versies, start een nieuwe shell om de situatie te onderzoeken
Choices-pt.utf-8: instalar a versão do criador do pacote, manter a versão actualmente instalada, mostrar a diferença entre as versões, mostrar uma diferença lado-a-lado entre as versões, mostrar uma diferença em 3 vias entre as versões disponíveis, faz uma fusão de 3-vias entre as versões disponíveis, iniciar uma nova consola para examinar a situação
Choices-pt_br.utf-8: instalar a versão do mantenedor do pacote, manter a versão local atualmente instalada, exibir as diferenças entre as versões, exibir as diferenças entre as versões lado-a-lado, exibir as diferenças entre as 3 versões disponíveis, juntar as 3 versões disponíveis, iniciar um novo shell para examinar a situação
Choices-ru.utf-8: установить версию из пакета, сохранить установленную локальную версию, показать различия между версиями, показать различия между версиями параллельно, показать 3-x стороннее различие между доступными версиями, показать 3-x стороннее слияние между доступными версиями, запустить новую оболочку для прояснения ситуации
Default: keep_current
Description: What do you want to do about modified configuration file ${BASENAME}?
Description-cs.utf-8: Co chcete provést se změněným konfiguračním souborem ${BASENAME}?
Description-da.utf-8: Hvad vil du gøre med ændret opsætningsfil ${BASENAME}?
Description-de.utf-8: Wie wollen Sie mit der geänderten Konfigurationsdatei ${BASENAME} verfahren?
Description-es.utf-8: ¿Qué desea hacer con el archivo de configuración modificado «${BASENAME}»?
Description-eu.utf-8: Zer egitea nahi duzu aldatutako ${BASENAME} konfigurazioko fitxategiarekin?
Description-fi.utf-8: Miten muokattu asetustiedosto ${BASENAME} käsitellään?
Description-fr.utf-8: Action souhaitée pour le fichier de configuration modifié ${BASENAME} :
Description-ja.utf-8: 変更された設定ファイル ${BASENAME} について何を行いたいですか?
Description-nl.utf-8: Wat wilt u met het aangepaste configuratiebestand ${BASENAME} doen?
Description-pl.utf-8: Jakie działanie ma zostać wykonane w związku z modyfikacją pliku ${BASENAME}?
Description-pt.utf-8: O que deseja fazer acerca do ficheiro de configuração modificado ${BASENAME}?
Description-pt_br.utf-8: O que você quer fazer sobre o arquivo de configuração modificado ${BASENAME}?
Description-ru.utf-8: Что нужно сделать с изменённым файлом настройки ${BASENAME}?
Description-sk.utf-8: Čo chcete urobiť so zmeneným konfiguračným súborom ${BASENAME}?
Description-sv.utf-8: Vad vill du göra med den uppdaterade filen ${BASENAME}?
Extended_description: A new version (${NEW}) of configuration file ${FILE} is available, but the version installed currently has been locally modified.
Extended_description-cs.utf-8: K dispozici je novější verze (${NEW}) konfiguračního souboru ${FILE}, avšak nainstalovaná verze obsahuje lokální úpravy.
Extended_description-da.utf-8: En ny version (${NEW}) af opsætningsfilen ${FILE} er tilgængelig, men den installerede version er blevet ændret lokalt.
Extended_description-de.utf-8: Eine neue Version (${NEW}) der Konfigurationsdatei ${FILE} ist verfügbar, aber die derzeit installierte Version wurde verändert.
Extended_description-es.utf-8: Hay una nueva versión («${NEW}») del archivo de configuración «${FILE}» , pero la versión que está instalada ha sido modificada localmente.
Extended_description-eu.utf-8: ${FILE} konfigurazioko fitxategiaren bertsio berri bat (${NEW}) dago eskuragarri, baina instalatutako bertsioa lokalki aldatua izan da.
Extended_description-fi.utf-8: Asetustiedostosta ${FILE} on tarjolla uusi versio (${NEW}), mutta nykyistä versiota on muokattu paikallisesti.
Extended_description-fr.utf-8: Une nouvelle version (${NEW}) du fichier de configuration ${FILE} est disponible mais la version actuellement utilisée a été modifiée localement.
Extended_description-ja.utf-8: 設定ファイル ${FILE} の新しいバージョン  (${NEW}) が利用可能ですが、現在インストールされているバージョンは、ローカルで変更されています。
Extended_description-nl.utf-8: Een nieuwe versie (${NEW}) van het configuratiebestand ${FILE} is beschikbaar, maar de geïnstalleerde versie is lokaal gewijzigd.
Extended_description-pl.utf-8: Dostępna jest nowa wersja (${NEW}) pliku konfiguracyjnego ${FILE}, ale obecna wersja została lokalnie zmodyfikowana.
Extended_description-pt.utf-8: Está disponível nova versão (${NEW}) do ficheiro de configuração ${FILE}, mas a versão actualmente instalada foi modificada localmente.
Extended_description-pt_br.utf-8: Uma nova versão (${NEW}) do arquivo de configuração ${FILE} está disponível, mas a versão atualmente instalada foi modificada localmente.
Extended_description-ru.utf-8: Доступна новая версия (${NEW}) файла настройки ${FILE}, но версия файла, находящаяся в системе, была изменёна локально.
Extended_description-sk.utf-8: Je dostupná nová verzia (${NEW}) konfiguračného súboru ${FILE}, ale aktuálne nainštalovaná verzia bola lokálne upravená.
Extended_description-sv.utf-8: En ny version (${NEW}) av konfigurationsfilen ${FILE} finns tillgänglig, men versionen som är installerad har ändrats lokalt.
Type: select
Owners: ucf/changeprompt_threeway

Name: ucf/conflicts_found
Description: Conflicts found in three-way merge
Description-ca.utf-8: S'han trobat conflictes en la fusió a tres bandes
Description-cs.utf-8: Co chcete udělat s ${BASENAME}?
Description-da.utf-8: Konflikter fundet i trevejssammenføjning
Description-de.utf-8: Konflikte bei der 3-Wege-Zusammenführung
Description-es.utf-8: Se encontraron conflictos al intentar fusionar a tres bandas
Description-eu.utf-8: Gatazkak aurkitu dira 3-moduko baturan
Description-fi.utf-8: Kolmisuuntaisessa yhdistyksessä ilmeni ristiriitoja
Description-fr.utf-8: Conflits pendant la fusion des 3 versions
Description-gl.utf-8: Atopáronse conflitos na fusión a tres bandas
Description-it.utf-8: Conflitto nell'integrazione delle 3 versioni
Description-ja.utf-8: 3 ウェイマージ中に競合を発見しました
Description-nl.utf-8: Tegenstrijdigheden gevonden in de driewegssamenvoeging
Description-pl.utf-8: Znaleziono konflikt podczas scalania pomiędzy trzema wersjami
Description-pt.utf-8: Conflitos encontrados na fusão de três vias
Description-pt_br.utf-8: Conflitos encontrados na junção das três versões
Description-ru.utf-8: Проблемы при 3-x стороннем слиянии
Description-sk.utf-8: Zistené konflikty pri trojcestnom zlúčení
Description-sv.utf-8: Konflikter i trevägssammanslagning
Description-vi.utf-8: Xung đột được tìm trong sự hoà trộn ba hướng
Extended_description: Conflicts found during three-way merge! Please edit `${dest_file}' and sort them out manually.\n\nThe file `${dest_file}.${ERR_SUFFIX}' has a record of the failed merge of the configuration file.
Extended_description-ca.utf-8: S'han trobat conflictes durant la fusió a tres bandes! Editeu «${dest_file}» i solucioneu-los manualment.\n\nEl fitxer «${dest_file}.${ERR_SUFFIX}» té un registre de la fusió fallida del fitxer de configuració.
Extended_description-cs.utf-8: Během třícestného sloučení byly nalezeny konflikty! Upravte prosím soubor „${dest_file}“ a opravte je ručně.\n\nSoubor „${dest_file}.${ERR_SUFFIX}“ obsahuje záznam nepodařeného sloučení konfiguračního souboru.
Extended_description-da.utf-8: Konflikter fundet under trevejssammenføjning! Rediger venligst `${dest_file}' og ret dem manuelt.\n\nFilen `${dest_file}.${ERR_SUFFIX}' har en post over den mislykkede sammenføjning af opsætningsfilen.
Extended_description-de.utf-8: Es wurden Konflikte bei der 3-Wege-Zusammenführung festgestellt! Bitte passen Sie die Datei »${dest_file}« selbst an, um die Konflikte zu beseitigen.\n\nDie Datei »${dest_file}.${ERR_SUFFIX}« enthält eine Aufzeichnung der fehlgeschlagenen Zusammenführung der Konfigurationsdateien.
Extended_description-es.utf-8: ¡Se encontraron conflictos al intentar la fusionar a tres bandas! Edite «${dest_file}» y resuélvalos manualmente.\n\nEl archivo «${dest_file}.${ERR_SUFFIX}» tiene un registro del fallo de fusión del archivo de configuración.
Extended_description-eu.utf-8: Gatazkak aurkitu dira 3-moduko baturan. Editatu '${dest_file}' eta ordenatu eskuz.\n\n'${dest_file}.${ERR_SUFFIX}' fitxategiak erregistro bat du konfigurazioko fitxategiak batzean huts egin duten sarrerekin.
Extended_description-fi.utf-8: Kolmesta yhdistettävästä tiedostosta löytyi ristiriitoja. Muokkaa tiedostoa ”${dest_file}” ja ratkaise ne käsin.\n\nTiedostossa ”${dest_file}.${ERR_SUFFIX}” on tiedot asetustiedoston epäonnistuneesta yhdistämisestä.
Extended_description-fr.utf-8: Des conflits ont été trouvés pendant la fusion des trois versions (« 3-way merge »). Veuillez ouvrir « ${dest_file} » et les corriger vous-même.\n\nLe fichier « ${dest_file}.${ERR_SUFFIX} » contient une trace de la fusion qui a échoué.
Extended_description-gl.utf-8: Atopáronse conflitos durante a fusión a tres bandas! Edite «${dest_file}» e ordéneos manualmente.\n\nO ficheiro «${dest_file}.{ERR_SUFFIX}» contén un rexistro da fusión fracasada do ficheiro de configuración.
Extended_description-it.utf-8: Si sono verificati conflitti nell'integrazione delle 3 versioni! Modificare il file «${dest_file}» e risolvere manualmente la situazione.\n\nIl file «${dest_file}.${ERR_SUFFIX}» contiene il resoconto della tentata integrazione del file di configurazione.
Extended_description-ja.utf-8: 3 ウェイマージ中に競合を発見しました! `${dest_file}' を編集して手動でそれらを整理してください。\n\nファイル `${dest_file}.${ERR_SUFFIX}' に設定ファイルのマージに失敗した記録が保持されています。
Extended_description-nl.utf-8: Tegenstrijdigheden gevonden tijdens de driewegssamenvoeging! Wijzig alstublieft `${dest_file}` handmatig om dit op te lossen.\n\nHet bestand `${dest_file}.${ERR_SUFFIX}' bevat een verslag van de mislukte samenvoeging van het configuratiebestand.
Extended_description-pl.utf-8: Wystąpił konflikt podczas scalania pomiędzy trzema wersjami! Proszę dokonać edycji "${dest_file}" i rozwiązać problem samodzielnie.\n\nPlik "${dest_file}.${ERR_SUFFIX}" posiada wpis o niepoprawnym scalaniu pliku konfiguracyjnego.
Extended_description-pt.utf-8: Conflitos encontrados na fusão de três vias! Por favor edite '${dest_file}' e organize-os manualmente.\n\nO ficheiro '${dest_file}.${ERR_SUFFIX}' tem um registo da fusão falhada do ficheiro de configuração.
Extended_description-pt_br.utf-8: Foram encontrados conflitos durante a junção das três versões! Por favor edite "${dest_file}" e os corrija manualmente.\n\nO arquivo "${dest_file}.${ERR_SUFFIX}" contém um registro da falha na junção do arquivo de configuração.
Extended_description-ru.utf-8: Обнаружены конфликты при 3-x стороннем слиянии! Отредактируйте `${dest_file}' и сопоставьте их вручную.\n\nФайл `${dest_file}.${ERR_SUFFIX}' содержит элементы, которые не дают объединить файлы настройки.
Extended_description-sk.utf-8: Zistené konflikty pri trojcestnom zlúčení! Prosím upravte „${dest_file}” a opravte ich manuálne.\n\nSúbor „${dest_file}.${ERR_SUFFIX}” má záznam o neúspešnom zlúčení konfiguračného súboru.
Extended_description-sv.utf-8: En eller flera konflikter uppstod vid trevägssammanslagningen! Redigera "${dest_file}" och lös konflikterna manuellt.\n\nFilen "${dest_file}.${ERR_SUFFIX}"  innehåller en notering av den misslyckade sammanslagningen av inställningsfilerna.
Extended_description-vi.utf-8: Tìm thấy sự xung đột trong khi hoà trộn về ba hướng. Hãy sửa đổi tập tin đích « ${dest_file} » và giải quyết bằng tay.\n\nTập tin đích « ${dest_file}.${ERR_SUFFIX} » đã ghi lưu tiến trình hoà trộn bị lỗi của tập tin cấu hình.
Type: error
Owners: ucf/conflicts_found

Name: ucf/show_diff
Description: Line by line differences between versions
Description-ca.utf-8: Diferències línia a línia entre les versions
Description-cs.utf-8: Rozdíly mezi verzemi řádek po řádku
Description-da.utf-8: vis forskellene mellem udgaverne
Description-de.utf-8: Unterschiede zwischen den Versionen zeilenweise anzeigen
Description-es.utf-8: Mostrar las diferencias línea a línea entre las versiones
Description-eu.utf-8: Bertsioen arteko desberdintasunak lerroz lerro
Description-fi.utf-8: Versioiden väliset erot rivi riviltä
Description-fr.utf-8: Montrer, ligne par ligne, les différences entre les versions
Description-gl.utf-8: Diferenzas liña por liña entre as versións
Description-it.utf-8: Differenze riga per riga tra le versioni
Description-ja.utf-8: バージョン間の行ごとの差異
Description-nl.utf-8: De verschillen tussen de versies, regel per regel
Description-pl.utf-8: Różnice pomiędzy wersjami - wiersz po wierszu
Description-pt.utf-8: Diferenças entre as versões linha por linha
Description-pt_br.utf-8: Diferenças entre as versões linha por linha
Description-ru.utf-8: Различия между версиями построчно
Description-sk.utf-8: Rozdiely medzi verziami, riadok po riadku
Description-sv.utf-8: Visa skillnaderna rad för rad mellan versionerna
Description-vi.utf-8: Khác biệt từng dòng giữa những phiên bản
Extended_description: ${DIFF}
Extended_description-ca.utf-8: ${DIFF}
Extended_description-cs.utf-8: ${DIFF}
Extended_description-da.utf-8: ${DIFF}
Extended_description-de.utf-8: ${DIFF}
Extended_description-es.utf-8: ${DIFF}
Extended_description-eu.utf-8: ${DIFF}
Extended_description-fi.utf-8: ${DIFF}
Extended_description-fr.utf-8: ${DIFF}
Extended_description-gl.utf-8: ${DIFF}
Extended_description-it.utf-8: ${DIFF}
Extended_description-ja.utf-8: ${DIFF}
Extended_description-nl.utf-8: ${DIFF}
Extended_description-pl.utf-8: ${DIFF}
Extended_description-pt.utf-8: ${DIFF}
Extended_description-pt_br.utf-8: ${DIFF}
Extended_description-ru.utf-8: ${DIFF}
Extended_description-sk.utf-8: ${DIFF}
Extended_description-sv.utf-8: ${DIFF}
Extended_description-vi.utf-8: ${DIFF}
Type: note
Owners: ucf/show_diff

Name: ucf/title
Description: Modified configuration file
Description-ca.utf-8: Fitxer de configuració modificat
Description-cs.utf-8: Změněný konfigurační soubor
Description-da.utf-8: Ændret opsætningsfil
Description-de.utf-8: Geänderte Konfigurationsdatei
Description-es.utf-8: Archivo de configuración modificado
Description-eu.utf-8: Aldatutako konfigurazio-fitxategia
Description-fi.utf-8: Muokattu asetustiedosto
Description-fr.utf-8: Fichier de configuration modifié
Description-gl.utf-8: Ficheiro de configuración modificado
Description-it.utf-8: File di configurazione modificato
Description-ja.utf-8: 変更された設定ファイル
Description-nl.utf-8: Gewijzigd configuratiebestand
Description-pl.utf-8: Zmodyfikowany plik konfiguracyjny
Description-pt.utf-8: Ficheiro de configuração modificado
Description-pt_br.utf-8: Arquivo de configuração modificado
Description-ru.utf-8: Изменён файл настройки
Description-sk.utf-8: Zmenený konfiguračný súbor
Description-sv.utf-8: Ändrad konfigurationsfil
Description-vi.utf-8: Tập tin cấu hình đã sửa đổi
Type: title
Owners: ucf/title

Name: ufw/allow_custom_ports
Description: Additional authorized services:
Description-cs.utf-8: Další autorizované služby:
Description-da.utf-8: Yderligere autoriserede tjenester:
Description-de.utf-8: ZusÃ¤tzliche autorisierte Dienste:
Description-es.utf-8: Servicios autorizados adicionales:
Description-eu.utf-8: Autorizatutako zerbitzu gehigarriak:
Description-fi.utf-8: Muut sallitut palvelut:
Description-fr.utf-8: Services supplémentaires autorisés :
Description-gl.utf-8: Servizos adicionais autorizados:
Description-it.utf-8: Altri servizi autorizzati:
Description-ja.utf-8: 許可するサービスの追加:
Description-nl.utf-8: Aanvullende geautoriseerde diensten:
Description-pl.utf-8: Dodatkowe autoryzowane usługi:
Description-pt.utf-8: Serviços adicionais autorizados:
Description-pt_br.utf-8: Serviços adicionais autorizados:
Description-ro.utf-8: Servicii suplimentare autorizate:
Description-ru.utf-8: Дополнительные разрешённые службы:
Description-sk.utf-8: Ďalšie oprávnené služby:
Description-sv.utf-8: Ytterligare tillåtna tjänster:
Description-vi.utf-8: Dịch vụ bổ sung được phép:
Extended_description: Please enter a space separated list of any additional ports you would like to open. You may use a service name (as found in /etc/services), a port number, or a port number with protocol.\n\nExample: to allow a web server, port 53 and tcp port 22, you should enter "www 53 22/tcp".
Extended_description-cs.utf-8: Vložte prosím seznam dalších portů oddělený mezerami, které chcete otevřít.Můžete použít název služby (lze najít v /etc/services), číslo portu, nebo číslo portu s protokolem.\n\nPříklad: pro povolení webového serveru, portu 53 a tcp portu 22 vložte „www 53 22/tcp“.
Extended_description-da.utf-8: Indtast venligst en mellemrumsadskilt liste over yderligere porte du ønsker at åbne. Du kan bruge et tjenestenavn (som fundet i /etc/services), et portnummer eller et portnummer med protokol.\n\nEksempel: For at tillade en internetserver, port 53 og tcp port 22, skal du indtaste »www 53 22/tcp«.
Extended_description-de.utf-8: Bitte geben Sie die Liste der zusÃ¤tzlichen Ports, die geÃ¶ffnet werden sollen, durch Leerzeichen getrennt an. Sie kÃ¶nnen Dienstenamen (wie in /etc/services angegeben), Portnummern oder Portnummern mit Protokoll verwenden.\n\nBeispiel: um einem Webserver, Port 53 und TCP-Port 22 zu erlauben sollten Sie Â»www 53 22/tcpÂ« eingeben.
Extended_description-es.utf-8: Introduzca una lista de los puertos que querría abrir, separados por espacios. Debe utilizar un nombre de servicio (se puede encontrar en el archivo «/etc/services»), un número de puerto o un número de puerto con un protocolo.\n\nPor ejemplo: para permitir un servidor web, el puerto 53 y el puerto 22 de TCP, debería introducir «www 53 22/tcp».
Extended_description-eu.utf-8: Mesedez idatzi zuriunez bereizirik irekitzea nahi dituzun ataka gehigarrien zerrenda. Zerbitzu izen bat (/etc/services-en zehazturikoak), ataka zenbaki bat edo ataka zenbakia protokolo batez erabili ditzakezu.\n\nAdibidez: web zerbitzari bat, 53 ataka eta 22 atakako tcp onartzeko "www 53 22/tcp" idatzi beharko duzu.
Extended_description-fi.utf-8: Anna välilyönnein eroteltu lista porteista, jotka haluat avata. Voit käyttää palvelun nimeä (tiedostosta /etc/services löytyvässä muodossa), portin numeroa tai portin numeroa ja protokollaa.\n\nEsimerkki: Salliaksesi www-palvelimen, portin 53 ja TCP-portin 22, syötä ”www 53 22/tcp”.
Extended_description-fr.utf-8: Veuillez indiquer la liste des ports additionnels à ouvrir, séparés par des espaces. Vous pouvez utiliser un nom de service (comme ceux de /etc/services), un numéro de port, ou un numéro de port avec protocole.\n\nExemple : pour autoriser un serveur web, le port 53 et le port TCP 22, vous devriez saisir « www 53 22/tcp ».
Extended_description-gl.utf-8: Introduza unha lista delimitada por espazos cos portos adicionais que desexa abrir. Pode empregar o nome do servizo (tal como aparece en /etc/services), o nÃºmero de porto, ou un nÃºmero de porto xunto co protocolo.\n\nExemplo: para permitir un servidor web, o porto 53 e o porto tcp 22, deberÃ­a escribir: Â«www 53 22/tcpÂ».
Extended_description-it.utf-8: Inserire l'elenco di tutte le ulteriori porte che si vuole aprire usando uno spazio come separatore. Si può usare il nome di un servizio (come elencato in /etc/services), il numero di una porta oppure il numero e il protocollo di una porta.\n\nEsempio: per permettere su server web, la porta 53 e la porta tcp 22, si deve inserire "www 53 22/tcp".
Extended_description-ja.utf-8: 追加で開放したいポートを空白で区切ったリストで入力してください。(/etc/services に記述がある) サービス名、ポート番号、ポート番号とプロトコルが使えます。\n\n例: ウェブサーバと53番ポート、そして tcpの22番ポートを許可するには、「www 53 22/tcp」と入力してください。
Extended_description-nl.utf-8: Voer alstublieft een door spaties gescheiden lijst van extra poorten die u wilt openen. U kunt een dienstnaam (zoals in /etc/services), poortnummer of poortnummer met protocol gebruiken.\n\nVoorbeeld: Om een webserver, poort 53 en TCP-poort 22 toe te staan moet u "www 53 22/tcp" opgeven.
Extended_description-pl.utf-8: Proszę wpisać listę, oddzielonych spacją, dodatkowych portów, które mają być otwarte. Można użyć nazwy usługi (zgodnie z /etc/services), numeru portu lub numeru portu z protokołem.\n\nPrzykładowo: aby otworzyć serwerowi WWW port 53 i port tcp 22, proszę wpisać "www 53 22/tcp".
Extended_description-pt.utf-8: Por favor indique uma lista separada por espaços de quaisquer portos adicionais que deseja abrir. Você pode usar um nome de serviço (conforme  /etc/services), um número de porto, ou um número de porto com protocolo.\n\nExemplo: para permitir um servidor web, porto 53 e porto tcp 22, você deve indicar "www 53 22/tcp".
Extended_description-pt_br.utf-8: Por favor, informe uma lista separada por espaços de quaisquer portas adicionais que você gostaria de abrir. Você pode usar um nome de serviço (como encontrado em /etc/services), um número de porta ou um número de porta com protocolo.\n\nExemplo: para permitir um servidor web, a porta 53 e a porta tcp 22, você deveria informar "www 53 22/tcp".
Extended_description-ro.utf-8: Introduceți o listă separată de spații cu porturile suplimentare pe care doriți să le deschideți. Puteți utiliza un nume de serviciu (cum se găsește în „/etc/services”), un număr de port sau un număr de port cu protocol.\n\nExemplu: pentru a permite un server web, portul 53 și portul tcp 22, ar trebui să introduceți „www 53 22/tcp”.
Extended_description-ru.utf-8: Введите через пробел дополнительные порты, которые нужно открыть. Вы можете указывать имя службы (из /etc/services), номер порта или номер порта с протоколом.\n\nПример: чтобы разрешить доступ к веб-серверу, порту 53 и tcp порту 22, нужно ввести "www 53 22/tcp".
Extended_description-sk.utf-8: Zadajte prosím zoznam hodnôt oddelených medzerami ďalších portov, ktoré chcete otvoriť. Môžete použiť názov služby (podľa definície v /etc/services), číslo portu alebo číslo portu a protokol.\n\nPríklad: ak chcete povoliť webový server, port 53 a tcp port 22, mali by ste zadať „www 53 22/tcp“.
Extended_description-sv.utf-8: Ange en lista separerad med mellanslag över ytterligare portar som du vill ha öppna. Du kan ange tjänstenamn (enligt vad som specificeras i /etc/services), ett portnummer eller ett portnummer tillsammans med protokoll.\n\nExempel: för att tillåta en webbserver, port 53 och tcp-port 22 kan du ange "www 53 22/tcp".
Extended_description-vi.utf-8: Hãy nhập một danh sách định giới bằng dấu cách chứa những cổng bổ sung nào bạn muốn mở. Có thể dùng một tên dịch vụ (như được ghi trong « /etc/services »), một số thứ tự cộng, hay một số thứ tự cộng với giao thức.\n\nVí dụ, để cho phép một trình phục vụ Web, cổng 53 và cổng TCP 22, bạn nên gõ « www 53 22/tcp ».
Type: string
Owners: ufw/allow_custom_ports

Name: ufw/allow_known_ports
Choices: CUPS, DNS, IMAPS, POP3S, SSH, CIFS (Samba), SMTP, HTTP, HTTPS
Description: Authorized services:
Description-cs.utf-8: Autorizované služby:
Description-da.utf-8: Autoriserede tjenester:
Description-de.utf-8: Berechtigte Dienste:
Description-es.utf-8: Servicios autorizados:
Description-eu.utf-8: Autorizatutako zerbitzuak:
Description-fi.utf-8: Sallitut palvelut:
Description-fr.utf-8: Services autorisés :
Description-gl.utf-8: Servizos autorizados:
Description-it.utf-8: Servizi autorizzati:
Description-ja.utf-8: 許可するサービス:
Description-nl.utf-8: Geautoriseerde diensten:
Description-pl.utf-8: Autoryzowane usługi:
Description-pt.utf-8: Serviços autorizados:
Description-pt_br.utf-8: Serviços autorizados:
Description-ro.utf-8: Servicii autorizate:
Description-ru.utf-8: Разрешённые службы:
Description-sk.utf-8: Oprávnené služby:
Description-sv.utf-8: Tillåtna tjänster:
Description-vi.utf-8: Dịch vụ được phép:
Extended_description: Please choose the services that should be available for incoming connections.\n\nOther services may be specified in the next configuration step.
Extended_description-cs.utf-8: Zvolte prosím služby, které mají být povoleny pro příchozí spojení.\n\nDalší služby mohou být uvedeny v následujícím kroku konfigurace.
Extended_description-da.utf-8: Vælg venligst de tjenester som skal være tilgængelige for indgående forbindelser.\n\nAndre tjenester kan angives i det næste konfigurationstrin.
Extended_description-de.utf-8: Bitte wÃ¤hlen Sie die Dienste aus, die fÃ¼r eingehende Verbindungen verfÃ¼gbar sein sollen.\n\nAndere Dienste kÃ¶nnen im nÃ¤chsten Konfigurationsschritt festgelegt werden.
Extended_description-es.utf-8: Escoja los servicios que deberían estar disponibles para las conexiones entrantes.\n\nSe pueden especificar otros servicios en el siguiente paso de la configuración.
Extended_description-eu.utf-8: Mesedez hautatu zein zerbitzu baimendu behar dira kanpoaldetik konektatzeko.\n\nBeste zerbitzu batzuek hurrengo konfigurazio urratsean zehaztu daitezke.
Extended_description-fi.utf-8: Valitse palvelut, joihin voidaan ottaa yhteyksiä ulkopuolelta.\n\nVoit seuraavassa vaiheessa määritellä muita palveluita.
Extended_description-fr.utf-8: Veuillez choisir les services qui devraient rester disponibles pour les connections entrantes.\n\nD'autres services peuvent être indiqués dans la prochaine étape de configuration.
Extended_description-gl.utf-8: Escolla os servizos que deben estar dispoÃ±Ã­beis para as conexiÃ³ns entrantes.\n\nPoden especificarse outros servizos no seguinte paso da configuraciÃ³n.
Extended_description-it.utf-8: Scegliere quali servizi devono essere disponibili per le connessioni entranti.\n\nNel prossimo passo di configurazione è possibile specificare anche altri servizi.
Extended_description-ja.utf-8: 外部からの接続を可能にする必要があるサービスを選んでください。\n\n他のサービスについては次の設定項目で指定します。
Extended_description-nl.utf-8: Welke diensten moeten beschikbaar zijn voor binnenkomende verbindingen?\n\nU kunt bij de volgende configuratiestap andere diensten aangeven.
Extended_description-pl.utf-8: Proszę wybrać usługi, które powinny być dostępne dla połączeń przychodzących.\n\nInne usługi mogą być podane w kolejnym kroku konfiguracyjnym.
Extended_description-pt.utf-8: Por favor escolha os serviços que deverão estar disponíveis para ligações recebidas.\n\nOutros serviços podem ser especificados no próximo passo de configuração.
Extended_description-pt_br.utf-8: Por favor, escolha os serviços que deveriam estar disponíveis para conexões de entrada.\n\nOutros serviços podem ser especificados no próximo passo da configuração.
Extended_description-ro.utf-8: Alegeți serviciile care ar trebui să fie disponibile pentru conexiunile de intrare.\n\nAlte servicii pot fi specificate în următorul pas de configurare.
Extended_description-ru.utf-8: Выберите службы, которые должны быть доступны извне.\n\nОтсутствующие здесь необходимые вам службы можно будет указать далее.
Extended_description-sk.utf-8: Zvoľte prosím služby, ktoré budú dostupné pre prichádzajúce spojenia.\n\nĎalšie služby možno uviesť v nasledovnom kroku konfigurácie.
Extended_description-sv.utf-8: Ange vilka tjänster som ska vara tillgängliga för inkommande anslutningar.\n\nAndra tjänster kan anges i nästa inställningssteg.
Extended_description-vi.utf-8: Hãy chọn những dịch vụ nên sẵn sàng cho kết nối gửi đến.\n\nDịch vụ khác có thể được xác định trong bước cấu hình kế tiếp.
Type: multiselect
Owners: ufw/allow_known_ports

Name: ufw/enable
Default: false
Description: Start ufw automatically?
Description-cs.utf-8: Spustit ufw automaticky?
Description-da.utf-8: Start ufw automatisk?
Description-de.utf-8: Ufw automatisch starten?
Description-es.utf-8: ¿Desea iniciar ufw automáticamente?
Description-eu.utf-8: Abiarazi ufw automatikoki?
Description-fi.utf-8: Käynnistetäänkö ufw automaattisesti?
Description-fr.utf-8: Démarrer ufw automatiquement ?
Description-gl.utf-8: Desexa iniciar ufw automaticamente?
Description-it.utf-8: Avviare ufw automaticamente?
Description-ja.utf-8: ufw を自動的に開始しますか?
Description-nl.utf-8: Ufw automatisch opstarten?
Description-pl.utf-8: Uruchamiać ufw automatycznie?
Description-pt.utf-8: Arrancar o ufw automaticamente?
Description-pt_br.utf-8: Iniciar o ufw automaticamente?
Description-ro.utf-8: Doriți să porniți automat serviciul «ufw»?
Description-ru.utf-8: Запускать ufw автоматически?
Description-sk.utf-8: Spúšťať ufw automaticky?
Description-sv.utf-8: Starta ufw automatiskt?
Description-vi.utf-8: Tự động khởi chạy ufw ?
Extended_description: If you choose this option, the rules you are about to set will be enabled during system startup so that this host is protected as early as possible.\n\nTo protect this host immediately, you must start ufw manually.
Extended_description-cs.utf-8: Pokud zvolíte tuto možnost, pravidla, která nastavíte, budou povolena při startu systému, takže tento host je chráněn nejdříve, jak je to možné.\n\nPro okamžitou ochranu tohoto hosta musíte spustit ufw ručně.
Extended_description-da.utf-8: Hvis du vælger denne indstilling, så vil reglerne du er ved at angive blive aktiveret ved systemopstart, så at denne vært bliver beskyttet så tidlig som muligt.\n\nFor at beskytte denne vært øjeblikkelig, så skal du starte ufw manuelt.
Extended_description-de.utf-8: Falls Sie diese Option wÃ¤hlen, werden die in KÃ¼rze erstellten Regeln wÃ¤hrend des Systemstartes aktiviert, so dass dieser Rechner so frÃ¼h wie mÃ¶glich geschÃ¼tzt wird.\n\nUm diesen Rechner sofort zu schÃ¼tzen, mÃ¼ssen Sie Ufw manuell starten.
Extended_description-es.utf-8: Si escoge esta opción, las reglas que está a punto de configurar se activarán durante el inicio del sistema de modo que esta máquina este protegida lo antes posible.\n\nPara proteger esta máquina inmediatamente, debe iniciar ufw manualmente.
Extended_description-eu.utf-8: Aukera hau hautatzen baduzu ezartzen dituzun arauak sistema abioan gaituko dira, honela sistema hala bezain azkar babesteko.\n\nOstalari hau berehala babesteko ufw eskuz abiarazi beharko duzu.
Extended_description-fi.utf-8: Jos valitset tämän vaihtoehdon, asetettavat säännöt otetaan käyttöön järjestelmän käynnistyessä siten, että kone on suojattuna mahdollisimman aikaisin.\n\nJos haluat suojata tämän koneen heti, ufw täytyy käynnistää käsin.
Extended_description-fr.utf-8: Si vous choisissez cette option, les règles que vous allez définir seront activées au démarrage du système afin que cette machine soit protégée le plus tôt possible.\n\nPour protéger cette machine immédiatement, vous devrez démarrer ufw vous-même.
Extended_description-gl.utf-8: Se escolle esta opciÃ³n activaranse durante o arrinque do sistema as regras que estÃ¡ a piques de estabelecer, de tal xeito que este servidor estarÃ¡ protexido tan axiÃ±a como se poda.\n\nPara protexer esta mÃ¡quina inmediatamente debe iniciar manualmente ufw.
Extended_description-it.utf-8: Se si accetta, le regole che si stanno per impostare verranno attivate durante l'avvio del sistema, così facendo questo host sarà protetto il prima possibile.\n\nPer proteggere questo host immediatamente è necessario avviare ufw manualmente.
Extended_description-ja.utf-8: このオプションを選んだ場合、適用しようとしているルールはシステム起動時に有効になるので、可能な限り早くにこのホストは保護されることになります。\n\nこのホストを今すぐに保護するには、ufw を手動で開始する必要があります。
Extended_description-nl.utf-8: Als u voor deze optie kiest, dan worden de regels die u straks instelt ingeschakeld tijdens de systeemstart zodat deze computer zo snel mogelijk wordt beschermd.\n\nOm deze computer direct te beschermen moet u ufw handmatig starten.
Extended_description-pl.utf-8: Jeśli ta opcja zostanie wybrana, reguły, które zostaną za chwilę skonfigurowane, będą uruchamiane podczas rozruchu systemu, aby chronić komputer tak wcześnie, jak to tylko możliwe.\n\nAby zacząć chronić komputer w tej chwili, konieczne jest ręczne uruchomienie ufw.
Extended_description-pt.utf-8: Se você escolher esta opção, as regras que está prestes a definir irão ser activadas durante o arranque do sistema para que esta máquina fique protegida o mais cedo possível.\n\nPara proteger esta máquina imediatamente, você deve arrancar manualmente o ufw.
Extended_description-pt_br.utf-8: Se você escolher essa opção, as regras que você está prestes a configurar serão habilitadas durante a inicialização do sistema, assim essa máquina é protegida tão logo quanto possível.\n\nPara proteger essa máquina imediatamente, você deve iniciar o ufw manualmente.
Extended_description-ro.utf-8: Dacă alegeți această opțiune, regulile pe care urmează să le stabiliți vor fi activate în timpul pornirii sistemului, astfel încât această gazdă să fie protejată cât mai curând posibil.\n\nPentru a proteja această gazdă imediat, trebuie să porniți manual serviciul «ufw».
Extended_description-ru.utf-8: Если вы ответите утвердительно, то настроенные вами правила будут активированы при загрузке операционной системы, что позволит защитить компьютер уже на этой стадии.\n\nЧтобы защитить компьютер сразу после установки, вам нужно запустить ufw вручную.
Extended_description-sk.utf-8: Ak zvolíte túto možnosť, pravidlá, ktoré sa chystáte nastaviť budú zapnuté pri spustení systému aby bol tento počítač chránený čo najskôr.\n\nAk chcete tento počítač chrániť okamžite, musíte spustiť ufw ručne.
Extended_description-sv.utf-8: Om du väljer detta alternativ kommer reglerna du anger att aktiveras vid systemets uppstart för att försäkra att värden är så skyddad som möjligt.\n\nFör att skydda värden omedelbart måste du starta ufw manuellt.
Extended_description-vi.utf-8: Bật tùy chọn này thì những quy tắc sắp đặt sẽ được hiệu lực trong khi khởi chạy hệ thống, để bảo vệ máy này vào lúc sớm nhất có thể.\n\nĐể bảo vệ máy này ngay lập tức, bạn cần phải tự khởi chạy ufw.
Type: boolean
Owners: ufw/enable

Name: ufw/existing_configuration
Description: Existing configuration found
Description-cs.utf-8: Nalezena existující konfigurace
Description-da.utf-8: Eksisterende konfiguration fundet
Description-de.utf-8: Bestehende Konfiguration gefunden
Description-es.utf-8: Se ha encontrado la configuración existente
Description-eu.utf-8: Konfigurazioa aurkituta
Description-fi.utf-8: Asetustiedosto löytyi
Description-fr.utf-8: Configuration existante trouvée
Description-gl.utf-8: Achouse unha configuraciÃ³n xa existente
Description-it.utf-8: Trovata una configurazione già esistente
Description-ja.utf-8: 既存の設定が見つかりました
Description-nl.utf-8: Bestaande configuratie gevonden
Description-pl.utf-8: Znaleziono istniejącą konfigurację
Description-pt.utf-8: Foi encontrada configuração existente
Description-pt_br.utf-8: Configuração existente encontrada
Description-ro.utf-8: S-a găsit o configurație existentă
Description-ru.utf-8: Найдены предыдущие настройки программы
Description-sk.utf-8: Nájdená existujúca konfigurácia
Description-sv.utf-8: Äldre inställningar funna
Description-vi.utf-8: Tìm thấy cấu hình đã có
Extended_description: An existing configuration for ufw has been found. Existing rules must be managed manually.\n\nYou should read the ufw(8) manpage for details about ufw configuration.
Extended_description-cs.utf-8: Pro ufw byla nalezena existující konfigurace. Existující pravidla musí být spravována ručně.\n\nPro podrobnosti o konfiguraci ufw si přečtěte manuálovou stránku ufw(8).
Extended_description-da.utf-8: Der er fundet en eksisterende konfiguration for ufw. Eksisterende regler skal håndteres manuelt.\n\nDu bør læse manualsiden ufw(8) for detaljer om ufw-konfiguration.
Extended_description-de.utf-8: Eine existierende Konfiguration fÃ¼r Ufw wurde gefunden. Existierende Regeln mÃ¼ssen manuell verwaltet werden.\n\nSie sollten die Handbuchseite ufw(8) fÃ¼r weitere Hinweise zur Konfiguration von Ufw lesen.
Extended_description-es.utf-8: Se ha encontrado una configuración de ufw existente. Las reglas existentes se deberán gestionar manualmente.\n\nDebería leer la página del manual ufw(8) para los detalles sobre la configuración de ufw.
Extended_description-eu.utf-8: Aurreko ufw konfigurazio bat aurkitu da. Dauden arauak eskuz kudeatu behar dira.\n\nufw(8) manual orria irakurri beharko zenuke ufw konfigurazio xehetasunetarako.
Extended_description-fi.utf-8: Järjestelmästä löytyi ufw:n asetustiedosto. Olemassa olevia sääntöjä täytyy pitää yllä käsin.\n\nLisätietoja ufw:n asetuksista löytyy man-ohjesivulta ufw(8).
Extended_description-fr.utf-8: Une configuration existante a été trouvée pour ufw. Les règles qui y sont utilisées doivent être gérées manuellement.\n\nVous devriez lire la page de manuel ufw(8) pour plus de détails sur la configuration de ufw.
Extended_description-gl.utf-8: Atopouse unha configuraciÃ³n de ufw preexistente. As regras xa existentes deben xestionarse manualmente.\n\nDeberÃ­a ler a pÃ¡xina de manual de ufw(8) para coÃ±ecer mÃ¡is detalles acerca da configuraciÃ³n de ufw.
Extended_description-it.utf-8: È stata trovata una configurazione per ufw già esistente. Le regole esistenti devono essere gestite manualmente.\n\nSi veda la pagina man di ufw(8) per i dettagli sulla configurazione di ufw.
Extended_description-ja.utf-8: ufw の既存の設定が見つかりました。既存のルールは手動で管理する必要があります。\n\nufw の設定の詳細については、ufw(8) の man ページを読んでください。
Extended_description-nl.utf-8: Er is een bestaande configuratie voor ufw gevonden. De bestaande regels moeten handmatig beheerd worden.\n\nLees de man-pagina van ufw(8) voor details over de configuratie van ufw.
Extended_description-pl.utf-8: Znaleziono istniejącą konfigurację ufw. Konieczne jest ręczne zarządzanie istniejącymi regułami.\n\nProszę zapoznać się ze stroną man ufw(8), aby poznać szczegóły na temat konfiguracji ufw.
Extended_description-pt.utf-8: Foi encontrada uma configuração existente para o ufw. As regras existentes terão que ser geridas manualmente.\n\nVocê deverá ler o manual do ufw(8) para detalhes acerca da configuração do ufw.
Extended_description-pt_br.utf-8: Uma configuração existente para o ufw foi encontrada. Regras existentes devem ser gerenciadas manualmente.\n\nVocê deveria ler a página de manual ufw(8) para detalhes sobre a configuração do ufw.
Extended_description-ro.utf-8: O configurație existentă pentru «ufw» a fost găsită. Regulile existente trebuie gestionate manual.\n\nAr trebui să citiți pagina de manual ufw(8) pentru detalii despre configurarea „ufw”.
Extended_description-ru.utf-8: Найдены предыдущие настройки ufw. Существующие правила нужно изменять вручную.\n\nПодробней о настройке ufw можно прочитать в справочной странице ufw(8).
Extended_description-sk.utf-8: Našla sa existujúca konfigurácia ufw. Existujúce pravidlá je potrebné spravovať manuálne.\n\nMali by ste si prečítať podrobnosti o konfigurácii v manuálovej stránke ufw(8).
Extended_description-sv.utf-8: Inställningar för en tidigare version av ufw har hittats. Existerande regler måste hanteras manuellt.\n\nDu bör läsa manualsidan ufw(8) för detaljerad information om ufws inställningar.
Extended_description-vi.utf-8: Một cấu hình ufw đã tồn tại đã được tìm. Bạn cần tự thao tác những quy tắc đã có.\n\nHãy đọc trang hướng dẫn ufw(8) để tìm chi tiết về cấu hình ufw.
Type: error
Owners: ufw/existing_configuration

Name: unattended-upgrades/enable_auto_updates
Default: true
Description: Automatically download and install stable updates?
Description-ca.utf-8: Desitjau descarregar i instal·lar automàticament les actualitzacions de la versió estable?
Description-cs.utf-8: Automaticky stahovat a instalovat aktualizace ze stabilní verze?
Description-da.utf-8: Hent og installer automatisk stabile opdateringer?
Description-de.utf-8: Aktualisierungen für Stable automatisch herunterladen und installieren?
Description-eu.utf-8: Bertsio-berritze egonkorrak automatikoki deskargatu eta instalatu?
Description-it.utf-8: Scaricare e installare automaticamente gli aggiornamenti?
Description-ja.utf-8: 自動的に安定版の更新をダウンロードしてインストールしますか?
Description-nl.utf-8: Updates uit 'stable' automatisch ophalen en installeren?
Description-pt.utf-8: Transferir e instalar automaticamente actualizações estáveis?
Description-pt_br.utf-8: Baixar e instalar atualizações estáveis automaticamente?
Description-ru.utf-8: Скачивать и устанавливать обновления стабильного выпуска автоматически?
Description-sv.utf-8: Hämta och installera stabila uppdateringar automatiskt?
Extended_description: Applying updates on a frequent basis is an important part of keeping systems secure. By default, updates need to be applied manually using package management tools. Alternatively, you can choose to have this system automatically download and install important updates.
Extended_description-ca.utf-8: La instal·lació de les actualitzacions amb freqüència és un aspecte important per a mantenir la seguretat del sistema. Per defecte, les actualitzacions s'han de fer manualment utilitzant les eines de gestió de paquets. Si ho preferiu, podeu optar per fer que el sistema descarregui i instal·li automàticament les actualitzacions de seguretat.
Extended_description-cs.utf-8: Pravidelné nasazování aktualizací je důležitou součástí udržování zabezpečení systému. Normálně je nutné aktualizace nasazovat ručně za použití příslušných nástrojů pro správu balíčků. Můžete ovšem zvolit, aby tento systém automaticky sám stahoval a instaloval důležité aktualizace.
Extended_description-da.utf-8: Løbende installation af opdateringer er en vigtig del af at holde et system sikkert. Som standard skal opdateringer installeres manuelt med pakkehåndteringsværktøjer. Alternativt kan du automatisk vælge at lade dette system hente og installere vigtige opdateringer.
Extended_description-de.utf-8: Häufige Aktualisierungen sind wichtig, um Systeme sicher zu halten. Standardmäßig müssen Aktualisierungen manuell mittels Paketverwaltungswerkzeugen durchgeführt werden. Alternativ können Sie auswählen, dass dieses System wichtige Aktualisierungen automatisch herunterlädt und installiert.
Extended_description-eu.utf-8: Maiztasunean oinarritutako bertsio-berritze ezarpenak sistema seguru mantentzearen zati garrantzitsu bat da. Lehenetsi gisa, eguneraketek paketeak kudeatzeko tresnak eskuz erabiltzea eskatzen dute. Bestela, sistema honek automatikoki eguneraketa garrantzitsuak deskargatzea eta instalatzea aukera dezakezu.
Extended_description-it.utf-8: La regolare applicazione degli aggiornamenti è una pratica importante per mantenere in sicurezza il sistema. Normalmente gli aggiornamenti devono essere installati manualmente usando gli strumenti di gestione dei pacchetti; in alternativa è possibile su questo sistema scaricare e installare automaticamente gli aggiornamenti importanti.
Extended_description-ja.utf-8: 更新の適用を頻繁に実施するのは、システムを安全に保つために重要なことです。標準の状態では、更新の適用はパッケージ管理ツールを使って手動で行う必要があります。別のやり方として、セキュリティ更新を自動的にダウンロードしてインストールするよう、このシステムを設定するようにもできます。
Extended_description-nl.utf-8: Regelmatig updates installeren is een belangrijk onderdeel van de beveiliging van systemen. Standaard moeten updates handmatig worden toegepast met een van de hulpprogramma's voor pakketbeheer. U kunt er ook voor kiezen om op dit systeem belangrijke updates automatisch te laten ophalen en installeren.
Extended_description-pt.utf-8: Aplicar actualizações regularmente é uma parte importante para manter os sistemas seguros. Por regra, as actualizações precisam de ser aplicadas manualmente usando ferramentas de gestão de pacotes. Em alternativa, você pode escolher ter este sistema a descarregar e instalar automaticamente as actualizações importantes.
Extended_description-pt_br.utf-8: Aplicar atualizações com frequência é uma parte importante de manter os sistemas seguros. Por padrão, as atualizações precisam ser aplicadas manualmente usando ferramentas de gerenciamento de pacotes. Alternativamente, você pode escolher que esse sistema baixe e instale automaticamente as atualizações importantes.
Extended_description-ru.utf-8: Регулярная установка обновлений является важной частью обеспечения безопасности системы. По умолчанию, обновления нужно устанавливать вручную с помощью инструментов управления пакетами. Но сейчас можно указать, чтобы система скачивала и устанавливала важные обновления автоматически.
Extended_description-sv.utf-8: Att tillämpa uppdateringar ofta är en viktig del av att hålla system säkra. Som standard måste uppdateringar tillämpas manuellt med hjälp av pakethanteringsverktyg. Alternativt kan du välja att detta system automatiskt hämtar och installerar viktiga uppdateringar.
Type: boolean
Owners: unattended-upgrades/enable_auto_updates

Name: wamerican/languages
Default: american (American English)
Description: 
Type: text
Owners: wamerican/languages

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                )w)`) ))@))) &))`3) )@)@)M)) [TO)`h <)u)@))	) ))`) $))@1))>) )K)`)!!!V 8!>!e!!! !! )!0P!@w!P!`!p!!:!a!!!!!$! L!s! !0!@!P!`6!p]!!!!! !G!n!! !!  !02 !@Y !P !` !p ! !!!C!!j!!!!и!!!!"! ."!U"! |"!0"!@"!P"!`#!p?#!f#!#!#!#!$!)$!P$!w$! $!$! $!0%!@;%!Pb%!`%!p%!%!%!%&!L&!s&!К&!&!&! '!7'! ^'!0'!@'!P'!`'!p!(!H(!o(!(!(!(!)!2)!Y)! )!<)! )!0)!@*!<FLx	6<4PD*!`k*!p*!*!E)L1)1)H2)Ab2)2)4)<)2H)?H)X+H)=H) I &e /b 5Y>J / &m ?dK >/ Oi:9 7@m1 ?2o [qk1s  }^)Os1=7s1 1hk q1݉  <   " *F0 1\Am4 1.2v  , T  
qs15n    0  t   P         OV!9 7?>mV 8[N+k)2a)a)q)qt)u)t)|q)C~q)(o) )^u)u)hq)īy)t)[3u)t)u)$r)yr)s),s)s)v	s)s)
   " Z s)us)ҝt)It)s)rCs)04s) bs)n}  "! ;s))s) "   "J:     "?,  0   "_   "H  ( "I Xs)Ώ)s)=7 r)Ms)=t    )g!}!T!r)~q  wo)')O)5' {-);)nU9)M9)dH;  " u1):   *)P9)s;    ?)WE;)MK):I)z8e))z)d q>)*D ̆))))I)C)V:),)I " ))B')sS!
O!O!O!]!]!D^!^!` `!`!% />1 /27 ;/L= S/_G /L #/[R /vX k/B^ /c *i O{u1 7O@) bbHm)-     1Y *: 1Up 1f     1/z      1H  0        ?50 P 10$   ?@ 8OU21 ? {!F[![!]!
a!c!~;]!e  i!8k!Rj!IDj qFz!Hj g!g!=f!m6g!nh!~h!oh q h!Cg     Bg!h!xj!'i!@vh!<h!&	   $ Ng!Yjh!I   "7  d    S/g!t< &7
D   "=8  0 1xh, "M	  t "0    0  i!3]k!h!g 1g!h!" & 1F 1- of! i!h\J!Z    \LM!O!*N!N!2O$ yM!N 'M!܄N!0 \  ^!O!gl!Bm 1@QL  4 LN!!N!?W!V!JN!IM!9FW "	A 1VL  tE >24o#!,!2!=G+!+X!
n!7v#!T.*!Ko5!'#!f/+!- !$!H%!%#!#!h#!$!4Q$!!!#!g!!#!Z!!*$!=#!q"!#!5*$!["!u"!~"!#!#!	"!V"!!!i"!O !r"!*#!!!eG"!!(#!v!!y#!g!!b!!f-!!8g"!9#!G"!}#!#!!!w#! "!&"!"!#!Ų#!?#!HD)2!v"!$!j#! !$!#!$!!W!W#!X)/#!j#!UZ)d6#!k#! !Bt#!vZ)an#!>%! [$!Y)?#!s)x)X)#!t)#!{#! "!#!t#!!Mz"!s#!fc)ۈ#!E#!Z!!e#!
#!!
"!Y"!?#!g#!6#!Z!#!JB"!g"!? !f#!#!3"!;#!Cj$!`)Rdv)"!Ձ"!T)9 !#!*$!i!d#! ! !~$!n![#!)#!B׸)#!mhDOPX)hZqZF)Lr-t$هzf]y M~5td58ʾOǓ
Ndӻězql]Y2!C8	WUl!Ǻӛ< xׯ'Y!*yeaR    .P   ʑC)<)S)@)V)6D)$;7)>)9[)"X)                     :)б)?)W.1v-W)<N)RI)N:J)   Ta')98)9F)+)                                                                                                                                                                                                                                                                                                                                                                                                                                                         dZ1dN1×9   d1@j1+1         11[1   ݖ9P9<\1p19=18K1                                                                                                                                                                                                                                                   89            89         P9                        9                    ,  @ ~ZE?B"L   &B; UB;  Vi"MͥvL   &B; UB;  .xB%GJF|BE
L   &B; UB;  HMBߴPjd8L   &B; UB;  p:zUCbx
fVL   &B; UB;  h*B΍PLL   &B; UB;   MmFxAmL   &B; UB;  mRB趰qL   &B; UB;  RA.GnھL   &B; UB;  0O꥕bE8L   &B; UB;   BC)0L   &B; UB;  {C3(jdozϖL   &B; UB;  Ǎr<@Edͩ6L   &B; UB;  g.8O٦0ʛupL   &B; UB;  3&;bDoo-L   &B; UB;  W';J,-S^PL   &B; UB;  |'$HMgyuʳL   &B; UB;  ҶJyDoL   &B; UB;  +v@peeI_L   &B; UB;  2{T9oCծ<!L   &B; UB;  v0OFz) XQFL   &B; UB;  rH
AKÞ_WL   &B; UB;  qRtrFi:L   &B; UB;  kAApBͼL   &B; UB;  '*ϒ+KQL   &B; UB;  F	EAI(JL   &B; UB;  {fB>lL   &B; UB;  79?.NBVAL   &B; UB;  N֫(QL   &B; UB;  )$ȰJ
UL   &B; UB;  D|#raD0Y}VL   &B; UB;  B@OR[FIL   &B; UB;  ȉk
5u@3kzeL   &B; UB;  ֏5EG%L   &B; UB;  kɢl<MrL   &B; UB;  a{Ox{khL   &B; UB;  I>cnEDg20"L   &B; UB;  &^N*ba"L   &B; UB;  eIe@FǡpL   &B; UB;  !/
EXzTL   &B; UB;  ɵ(
LD^aL   &B; UB;  HHONg[BL   &B; UB;  BVGA&pnL   &B; UB;  GHNL   &B; UB;  uQE,CL   &B; UB;  1AGoL   &B; UB;  %QyMʱUL   &B; UB;  m44\@y3ҚL   &B; UB;  
kL"վ3LL   &B; UB;  {fN-m?#;L   &B; UB;  9V\F&j[pAL   &B; UB;  G%>Hه+׶L   &B; UB;  ynjB`Ԫixַ[L   &B; UB;  8({[HvMOL   &B; UB;  8EUFȤ0oL   &B; UB;  QfDݳu}=L   &B; UB;  %KI=AL   &B; UB;  XMԑ";L   &B; UB;  <D<ZTL   &B; UB;  Zj<[	F<ƁL   &B; UB;  eulF\L   &B; UB;  觇"JC#s5L   &B; UB;  {Dtz6}L   &B; UB;  vZJ"Q>?L   &B; UB; @    @×9   <9 91  2uL8f*!#uJ+6I9!<!7,[!Tr#}8qG/D	-1+w
24-1.η /ao,(-
..',K+	+,+++&.b55g1K3נ
+.,1,5c+z/5333,)0װ*).{/^{0/Fb2m451W*..[#&:bc$;Rh"1*q30)   $x61h,)M!Kr!') 1p8-(    E$e1dht)-181|1'1V)c+)(]*)֭+)@+)) ) b1h1ͷ1()')v)pħ1X1!)!)UO)n)1Ø11V3&)8V1^2),Y )`M)Ee')܆1;f18F1 ,>H1Y1}!J)L<)6)V`S)$1{Xر9d6)-10)[x1
  L  1T?,    ?)/?;>@ 
?l,x ?V=, x 
  u?)q9XL 899-1=L "<  k.1 ֜1 1x  =#	 =Ĝ  4 @@.!  5/H1  89L.1`$  !?8zPa+ !e"!e!ϑ!s-!!#$!d !b !C!!!"!wv"!b%!%!R#!"!M"!6"!"!#!~#!#!}#!A)#!Y#!#!J#!Y#!b#!3"!x}#!m$!#!#!S!m#!#!!#!=#!a#!#!i#!#!@o#!']#!"!#!q#!p#!^G#!|#!܊#!U)#!x{#!"!2#!g#!G#!#!h#!#!M,#!#!4#!q#!ֺ#!l#!:#!B#!#!#!#!
$!}#!e#!
$!*+%!#!ٷ#!ѯ#!"!s#!#!HJ#!"! "!{f&!P#!"!"!6"!!! !>X !A!!
y !P !Z !W!!^{!!!!O!!7"!!!W !N !ϡ!!!!!!&!!oj ! !j !r!!5!!d/%! !/V!!ja !u!!^ !< !"!!!'!y$!r#!#!K#!#!&!!3 !2"! !!m!!!!#%!!!!!څ"!!! !!n"! !S!!%!4 y,
9v]=w
.! .+ . # ." .& .(" .   .( P  .( .    P    < P q`9V52;2 7j&32	&32PJ2g`$30613263`#3u72B32\a,<8=/j6/R2*!7B3T l6	8 3҄U/!}QZ(ZQVY{Ye&)P` 3 . X  Q"0l Qd =a  !?j !4 91pdcz9Ns9o99ck9/q9t9}99k9le9j9j9t9#r9Rr9x99v9s9k9r9yw9kx9y9s9r90k9~x  ">l  s9+t9`s9~9hg9Lj  < "x 1 223Ze.M)!.O\"V`!ۍ)O)dw?X)R>^z"R9s-}>!B$!/*1ܳ+,V;!&e+!'7-,03ioi*QZSkJ\75ڭ"lxr{X@[MIv1Oa"H1[BO$`+.J)p%F3n;>51U (UfIx61@a=ÌDeen!rrnT  vC2Q^ EZ	  s	8M$1[?)So!1=1VD<1vJ1<}110111Y1+E10E1A1~ܬ11o1:?1`E1c1Σ1L19U[16G1mA1$E1$91EB1y1U1)*!
--pA=Ⱥv5	sDF1'1'!չ$)1$)11W1+NC!1
#)J!1Zub11k)k:c)101Nh1*)S!Ȼ1i'16J)̺Q)W1,)1k81C,)1G1(11 D1_1l1l1ZB1111H1N21 )1V1H1j4)1]1-v1[10N1)1c11A11T1l1p1191`1151I1w=p)11ʼ11])J1)1"1/W1P])711(11XE)111s11111J1Z@111r1OI1=1K.)a1 11<1a51$1=1H1!q11/}111tP1j111D1111111Ƶ1C11d1"K181\1|1+)-1o1p1%1$1A!!=X11ٿ1x1111,c11,)21-11151<1*11   < '1c@.0W .6] .b (  .0Z( ._ `<  <    .XP SP  .\(   '<    X  < D( qĺ>P9^.2!K%3!FW!
2!2!74!ޢ2!A3!?!Ϋ4!;X!2!?3!a2!`NA!B2!MW!#3!a2!j3!~\B!Z!})%W!2)2!&$!9!2!  w L	P1!؏)q$!/2!f2!2!3!0 u4!9O3!G3!,. X  E2-!VuG)!M:!G+ !2n!-)F!c0!58!?1!~|)Y!z&1y! !!O)$=!K!!!w!
^1;Q<1!9H!!9!bY!!ꂫ!?4JcIf9i4*-!n1=1!է1VC:!<YuXB`)]1|1.T&{4@!HO!	!g!eZB!\n"r!Y!Bt!@C7G 'Q1y-'o"k_5!@!'r*r_~$5[7
1?; 9TΈ  L  999:9N799 969PL Z 9;49|M6  P  |}39'39 39(h!!J|Kϩ3h+L	 D  9t49 09̈09g59 9+10( 16 8!0;618@   1q*=Ǡf
=1(= K@"P  " " X  1+
  1ɝ$ 1G   S?@L x?a=  H6 1@q_ %F/Z!jZ%C!!_!m!ލ00VOT4!+^N!k!D!F`!ѓ!.!Js3I/:o5+D  CΊ:"͢;XBK)  ( I&49@! P%!l!6C!Pz#n !t!.}!}&"7K'K!!d!m!mU{!1\ 55   q]5!r؜   9  I1Np
y,9+u x "q
  9p    ?w- u%)1X uьbn!H	u6)~B=,  X  -! < 	9z< b4
 p 8 	 =g =3 =H%I =ZO | , ?rŜ< $ ?	o#| N ( t1 iS/{!! !3!-q !({!!O !} !ݗ!!.!m!!74! !!!Z !,/! !J3!>!!IZ !!!/!4!{)3!
)4 !D)2?(!o !	0	0Z !)d )8f#!n#!E#!a1($`$!P!!XN 	 
LF)~1}).6)|1*O!Y!fD);!1+{1uV!'!!=1T<1U)I){)$O;
5
E|Th2!c!I!}=
ɓ!!Ox
?g
=
b_bDz
1<
9E
}-&Ӎ6
b6H!oK
*,!Eu!_7R fW1Wr'"~:`5L!!Zr*:j5D}!3)L?	87)y) 1U))6):,!I)cO))C)Ч)B)U)I))C)s)C)4C)~)l1)5)^y)h9I)a)v6C)l͘)UO)I))n)H]p+ut0	0)H!C)dO)f^\)"!ZI)xv)=1İ7))֝$!$) P)XO ?eR   O1 7?@KL 8O9  \	1M     1J  |	1 sU$ 1@KL 0  ( q`S)V@  ,        0  `       ! L 8 t   H       \                  A)2)) 	=    Y*) @,       D , Oا1 7?[ 8? c1x       $             @ 0  	 /j 8?@T ?  u@d) a    9g  j);f) Ii)`Vl         0   U1co           1 m 0 O)  0 8 - a        1j             X  8   $           P      /8l%z`       1 z        (  8        <               (   $  ,      8 $             @       h ! t    0  @       	 ![@ `     D          9 $  h f,P   ;y         "
9            !
9            !
9      `9V52;2 7j&32	&32PJ2g`$30613263`#3u72B32\a,<8=/j6/R2*!7B3            T"
9      l6	8 3҄U/!}QZ(ZQVY{Y   e&)P` 3 .                                                                                          09                                                                                                                                                                                                   a9                                                                                                                                                                        j9                                                                                                                                                                                                                                                                        p9   z9Ns9o99ck9/q9t9}99k9le9j9j9t9#r9Rr9x99v9s9k9r9yw9kx9y9s9r90k9~9                     >l9   s9+t9`s9~9hg9Lj9      x9   9   23Ze.M)!.O\"V`!ۍ)O)dw?X)R>^z"R9s-}>!B$!/*1ܳ+,V;!&e+!'7-,03ioi*QZSkJ\75ڭ"lxr{X@[MIv1Oa"H1[BO$`+.J)p%F3n;>51U (UfIx61@a=ÌDeen!rrn      vC2Q^   EZ	               s	8M$1[?)So!1=1VD<1vJ1<}110111Y1+E10E1A1~ܬ11o1:?1`E1c1Σ1L19U[16G1mA1$E1$91EB1y1U1)*!
--pA=Ⱥv5	sDF1'1'!չ$)1$)11W1+NC!1
#)J!1Zub11k)k:c)101Nh1*)S!Ȼ1i'16J)̺Q)W1,)1k81C,)1G1(11 D1_1l1l1ZB1111H1N21 )1V1H1j4)1]1-v1[10N1)1c11A11T1l1p1191`1151I1w=p)11ʼ11])J1)1"1/W1P])711(11XE)111s11111J1Z@111r1OI1=1K.)a1 11<1a51$1=1H1!q11/}111tP1j111D1111111Ƶ1C11d1"K181\1|1+)-1o1p1%1$1A!!=X11ٿ1x1111,c11,)21-11151<1*11                                                                                                                                                                                                                                                                                                                                                                                                                                                            c9            0W9            6]9            b9            ]9            0Z9            _9            `]9            Z9            Z9            X9            S]9            \9            \9            ']9            ]9            X]9            ']9            D]9      ĺ>P9^.2!K%3!FW!
2!2!74!ޢ2!A3!?!Ϋ4!;X!2!?3!a2!`NA!B2!MW!#3!a2!j3!~\B!Z!})%W!2)2!&$!9!2!  W  @ )80FqYFeL   &B; UB;  1BN%5\L   &B; UB;  AR-Ht'P|WL   &B; UB;  ə@o9u`$   &B;  ѻB;  
'Foҙz^$   &B;  ѻB;  {!dEɧS1a$   &B;  ѻB;  مuJZBD7$   &B;  ѻB;  R<EOX$   &B;  ѻB;  J	A $   &B;  ѻB;  BG\An$   &B;  ѻB;  LoGuB`$   &B;  ѻB;  A=v$   &B;  ѻB;  yiͪC[.У>$   &B;  ѻB;  P@H;1~$   &B;  ѻB;  vG!ɺo$   &B;  ѻB;  *Fj*$   &B;  ѻB;  RI07wD$   &B;  ѻB;  CM'UKӚ
eL$   &B;  ѻB;  &3-N@Bg9$   &B;  ѻB;  M$
I$,xE$   &B;  ѻB;  =UE6.M$   &B;  ѻB;  OhQ_O]*A3$   &B;  ѻB;  Wts$*Lt!$   &B;  ѻB;  KbAH,$   &B;  ѻB;  p-斁7C^dg2$   &B;  ѻB;  {࢜`E]߯y$   &B;  ѻB;  ,^K	?
in$   &B;  ѻB;  Kv&DֺӲzL   &B; UB;  )Aá`6j!aL   &B; UB;  :OkYC5:(L   &B; UB;  КOcڧNL   &B; UB;  )AeoDm&
L   &B; UB;  ~lDܙF{>L   &B; UB;  >	<6JHNPZ8L   &B; UB;  wD{qL   &B; UB;  ɍGVLJ\2QL   &B; UB;  8OWGL   &B; UB;  ʗhOݙPsL   &B; UB;  z0JK%#3L   &B; UB;  >'v2#E÷L   &B; UB;  1A痦c$L   &B; UB;  &`kN,"	uL   &B; UB;  b?F4(FL   &B; UB;  J$gA0iXT_D  EB; UB;  L5lD  EB; UB;  "jC%urD  EB; UB;  ;(IcIn:qD  EB; UB;  _xNQ`kVD  EB; UB;  H %LåJ/P%>!8D  EB; UB;  >C@zD  EB; UB;  U<]NAAWD  EB; UB;  ᔏAѡBo0D  EB; UB;  SBuބId(bD  EB; UB;  &!aVTI1Z[C<jD  EB; UB;  *d-C_a.8L{D  EB; UB;  :!Dћ	DD  EB; UB;  <L۽2BD  EB; UB;  
AH)D  EB; UB;  
 ND0D  EB; UB;  *E@]VD  EB; UB;  fpXD 
xD  EB; UB;  )wCoD  EB; UB;  0|옷@5w~ԖhD  EB; UB;  [ٖKdM=ޔD  EB; UB; O    p༏1B1pٰ1@?1141 1 1p1О1 1P11P{1x1p*e1c1p]1BP1pL1 G1@B1kYB1uA1P=1 :12:1@4;1@81":171) 8 p61`61.61б710819( d-1|11C1 I1H1D1 	=1 <171/18/1@,1`,1PD*1*1+1P11$}1101-1p!(17'1.+1_91W;1PE1`{Q1L1K`  ?1?1?1:1WF1@iG1`S1R1S1jY1\1a1PMg1e1 d1c1b1a1^1^1`]1P[1Z1PX1 W1V1`]V1:T1R1R1>R10Q1O10N1zN1M `K1?MK1J1vJ1@I  1JF   UJ10I1pG1G1~F@hC1PB1 A1@1P=@  z?1_?1>1E<   h1+^=(  A1hA1`d@$?1?1	9e11p] ī102 1!1P"1$1  $10%1@;%1`%1%1p%1%1%1%& "s bҀ&1 1 'b='1 ^ 0'1'1@'1P'1`'  (1(1 ) Y)1cS)12        4 b)1       0)1d*1p*X&| & m)y))
)H)ׇ))))Æ));)@)<)!=)S?)[b>)@)>I)A)w?).>)E,:)|=)E)X@)_>)	X>)@):)>)>)X9)<)o<)=)>)A)H)5;I)F)H|)i~;))_)P"<)C-)"4)51)!))&)))R0)
/)()4):2)57)>E)RB,)?6,)#)))t1)ptO)o)Oƅ)n)M)l1?)$+)>:)J=)7)tT4<)0=3)(,)_()x')+')7#) ))1 1011Pΐ14|1e1Fsc1P<H1@=1eA1zH10X?4  Ln111x  1<1c710H,)W+)')P*)))%)f#)T"))11 1х1m1Y1<10I11z210+61 @,1P$1`FEq c.1e4  F)\)1 1Q)b!)5)F4)2)H1)`1)b.1)30).)(-)+)0s*)X))[()()8&)$)h$)H#)!) )()X)K))))d)8%)>) 1111 1 @p%1 @10 |-)0)HL)T;))))3)1U101PA1@1@t111^^1P111@ղ1 ȯ11PV1Ť1`1Ў111w111 1r11`:  11`11 1Ę e1K1`11 1O11ջ1ĺ101ȸ1;ϸ < 1	1Oյ1Ѵ11N10=1`1+1P11+1l10[1I1ԩ1p,1Z1P޷d qkϻ1஻ 1Eڼx qd10, 1p1[11`171 1ݮ\1`Ы11Ҫ1 41 l1R  < 1L 1ÐC)"S)5)O"!"!U)2d)h))!)D)ۧ)U$)X))';)=.E)/)](B)<@)B1)C?))8)z)A)@L#)!")2111Z1[1W1e1J)e%)D)Ʃ)+>)=)Q&!0t!/kj!Gm);.!\/!\)!!2917f1;e9٧1+51V1K71lN&1S1n6)19)Ƙy)i)Mv1Q-)ߨ)kK'!@D!48!e29j0))$!#(3!7)8.)k()-$)@A$)#)(14P,@1p11P1co1eR1P1I1JC1Г<191321k2161 "11,Xp 1`9999 9 &9  0(1
()A')@G#)x$)#)0 )))()1m1P?1`x1pb1 P0g,1r,1`M/1  1)hqU#1, P11`}1014)82)X1)/)/)bV/)_.),)Y+)*)()')c')`&)N%)#)'")")`* )H4)U)pc)VE)))xJ)')`1F111111P1V1PO1`1d1T1xqi1 18 1Zw1^1Y1{1@1B 1~1ا1Z1pQ1P!1@1ɒ1C1=11Ɲ1H1@1XqF1`Xh1v i1@
1  qgܻ19x@1o1Х1 11Pq(ʱ1'p`A11/1p111An110y1p 11P塨 11 1q`1+d 1OЮ10̭1 PǦ11 1\ 01^1K11 1 11Ϣ1p31FT"1)G)ά)>!?!;)^)=)~z)I)V>)1ay)@)!1b)ٴ )%)
G:)F:)()q')")9L)L+)!)I3 )111Og1J1Y1)o$)x=)X)6)-)!&ck!^c! 0*)_m%!(!z)!4!29>1X1   gdx1F311-11 14))sf1-)\9S)RF)vQ1%1V>))1!t.!d29)).r$!      9    %M9 !  T       11 D   ,  8 0 (     ( 
  8  L   L $    T   !@ yj1@KL<\  $  0	=1  d  ,  p 2@Tt "	= P  $ < -@KL  jا $ -[ 	= , 1-T *	= | 8 "z   9  D    &T !	=    $  v@Tj( X    ,  T ,    $     -$ | @w   0FD  X !`#@ !z4 < H 0   8  \    
@   %[,( !$h D  T     > $  $ 1@]D  8  !$h`  01    4     P n@ 4 !@ 	 	l !4 x O  )@ ( - T -@  h
,  
 $,)0+6)[1 1)@, !  P   1G   1:4 13 q0))|+p10  (  $)!)  07H
) @,)4)`;)P=):) 	 6)б7) u81U"0 1p890 b>) l  `a0)E<$ q 0)P1   q*)g5  p  x     12)t 1@3 `M/)@@)@]1pP`  p   $   1.c0`S(
, 9 $p    T              1@'x 1%& @ $  X
 0  $ 1     @|+y u8*p-`͈ 0  q&%&01@<P  \      yp89`S  P 8 ( @>10)  	=: 	=   90+6 0 m  `M/  =o((  D      t =@@$ P1`; 50`B 1A,   1P=  PL  0P	  $ L-	   	 !$h 	x( b	= D  2@'|p	=@  P    X 13 h  T  	  8   A.c    d  + d@ $  d        P       A ` X        !\  D        	   	   D $       P 1z1 1	=1 "z@      D      H X   <  ,   H       X , P    ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
  @ =FA&+D  EB; UB;  kZ$*E=G'dD  EB; UB;  ¶$Ob+4D  EB; UB;  BK/ֿD  EB; UB;  L!yN9`D  EB; UB;  gɧ]MPԲGD  EB; UB;  ͌|Em-%4kD  EB; UB;  ^;BEHrVZD  EB; UB;  W.'PIԳ¿G2D  EB; UB;  P|N鈡s zD  EB; UB;  lf LBD  EB; UB;  H yGg#uD  EB; UB;  q(N|(D  EB; UB;  MbJ	QeVD  EB; UB;  nx@[U=&D  EB; UB;  ]-{`EŌ	eWD  EB; UB;  f=IfrF+aD  EB; UB;  U Oǉ̀'5D  EB; UB;  .fMh]D  EB; UB;  ]@'Gמn(D  EB; UB;   @1Jh20D  EB; UB;  TME:HRiD  EB; UB;  CǦK 'D  EB; UB;  dRRYIծ0;D  EB; UB;  a%(cK*q;@D  EB; UB;  ;/IeK.tD  EB; UB;  cPG&@D  EB; UB;  XOHhD  EB; UB;  r(#WJԫ3J D  EB; UB;  _G?9h[N=idx   JB;  ѻB;  %2c*A7h-3icx   JB;  ѻB;  
+(-I ǃx   JB;  ѻB;  <
@]Cذ&2!L4  B; UB;  6vJ^"@ʹ74  B; UB;  rE/@a㻆4  B; UB;  Fg=ŃO.4  B; UB;  lMCp46,4  B; UB;  w!]CM64  B; UB;  ʍFÍ+bIa4  B; UB;  jļHxKY4  B; UB;  }꧌6N76su"4  B; UB;  `Z]Ⱥ@Ԝ%L4  B; UB;  R{E0Xawc4  B; UB;  ~&hN٢`24  B; UB;  6	DVAyF4  B; UB;  )aB_Uld4  B; UB;  5Kum}B4  B; UB;  FE	'4  B; UB;  ^}Aǘ뗢q4  B; UB;  
N%Dmˢ4  B; UB;  9įJ54 5E   eB; UB;  `z0Fm?>   eB; UB;  \܏I6$N(E   eB; UB;  o9'HW{   eB; UB;  x}s@JqRt   eB; UB;  w{B%[}   eB; UB;  {0	
~E^0ay   eB; UB;  ")mp@׀_DVG   eB; UB;  OFҟo   eB; UB;  GK9H؋.P   eB; UB;  ,@D}OIS   eB; UB;  ;&FHϙ|   eB; UB;  3|<Cj+c   eB; UB;  ,NqgV   eB; UB; O    K3SL9MCL9)L9 mL9Xbv`L9
6   fSL9-    HD011q1@w111 [9@99)9@9`9j9`9 9஻99 9
9̳9  q`9 R  ˤ9y9@9׮4 9`x 1 z      1{ 5@} =~  999,   1` 9͇9- q\-9`M/ 5 0 9Z2 1@3 1g5 56 79 u899 q`;9 	= p)=9>,  P97)u9$ 
@C9 *8 " "`H  -.H H؆1$  nHL90 &Ȋ &P 8 " "x    .[ nh9xD 5 5 h .@w,  \ 1@ 0 &X8     @ј9h     .'l0 P8   "\  1`ו 1 4   "8     "
 & "po    0  49-*)XV` 4 
D 4, t$ 4     48 h     4    4    4 T  4  	4( 
h9T1h.l lh4 hD L( h@ h  h$ h  8   h	,  		hd h $ -1 	=1@KL  , 4 4 4	(41< p[1j1 z1@T11ا1 1@]111 $1)@w)))  )!)`#) $)%&)@')2))*) @,)-)`M/) 0)Z2)@3)g5)6) u8)9)`;) 	=)>)@@)A)#C) D)0F)`G) >I)J)@KL)M)XO) P)eR)`S) sU)V)@X)Z)[) ])^)`!`) a).c)@d);f)g) Ii)j)`Vl) m)co)@p)pr)s) ~u)w)`x) z){)@})~),) )9)`) G)͇)@T)ڊ)a) )n)`) |))@))) ))`*) )7)@)D)ˤ) R)ا)`_) )l)@)y) ) )
)`) ))@()஻)5) )B)`) P))@]))j) )w)`) )h	4*#1@&1p h.)/V.)Lk 4 
	 D&){o8mhL
4?`=.L  
4|d 1`!5f1Ӱ*1"K/1K/14/1)/1m.1/1h/1/1/1/1Q/1.1~+/1/1 /1 .1D//1_/1.1If*1&/1/11
/1/1/1A/1C'/1T/18/1'/1S/1%/1R/1;/1=/1=/1=/19/1_/1#A/1?/1?/1:)/1K{*1U/1
=/10/1I/1?/1:/1</14/1*/19/1ON/1G/148/1g>/1#/1X/19/1@/1>/1d/1e/1(*1?/1'*/1O>/13/1X/1!;/1E/1*/1$F/1@/11?/1/1=/1u/10/1B6/1O/1=/17/1@/1/13/1=/1č*1i/1F3/1/1f/1< :/1/:/1A/1!</1<>/1#:/1|./1B/1=/1;/1DI/1</19/1bf*15]/1,/1d2/1<\/1(/1=/1/1/1D5/1=/1i</1:/1:/1K/1v/1S./1yc/1*;/1"O/1}1/1</1:*1 P 9UF9 hH?HS-9+{1|h1-    , <  $ A1 dP T y! 9'v 
u;L9e  ;9e9L9% u9~  j_n9 uxj93 w99Zq917 u9  1D@B9 ?
 ? 5 ?`
 ?'	 ?  
? ? "?@
 :? b1D O 9 
?O B? : 5, )d 1 1 0 f91p 9L ] 
 
, M, a p9<
oڛf9!$ aP   kx	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  3SL9MCL9)L9 mL9   v`L9
6L9      SL9-L9                                                    @ b=L|F   eB; UB;  bL'
   eB; UB;  Zq1AbS

P   eB; UB;  7rHb}xf   eB; UB;  \d\GB   eB; UB;  zfB`B!V   eB; UB;  0GED.H}   eB; UB;  3
BO*E   eB; UB;  }@WOݖ/#<~w   eB; UB;  EHCZu1NS   eB; UB;  :yM۰Q   eB; UB;  *$@N5Jz׽w    eB; UB;  r+g|fBFNQIfڇ   eB; UB;  0c7\Fs5)   eB; UB;  PEcY;yCE<c^9   eB; UB;  gX M0+lr   eB; UB;  R{sF`УE   eB; UB;  
D8Sr   eB; UB;  Fh:H3Y4<)3   eB; UB;  qU)dOC"N:A   eB; UB;  z0Dԋ*i)   eB; UB;  MO@1oyy   eB; UB;   dOMx   eB; UB;  >*;Nrp;   eB; UB;  (iEj;`f   eB; UB;   7hAGvd   eB; UB;  9J g.<   eB; UB;  XL,   eB; UB;  odOWi   eB; UB;  8SMғp   eB; UB;  捑/2Ac*T/:   eB; UB;  
[{BYw   eB; UB;  dFgH]X   eB; UB;  #RܔNK/M2   eB; UB;  RbO   eB; UB;  !
C|0\<   eB; UB;  k3@
Ԡ0   B; UB;  HI!M3I   B; UB;  !F(\B߾O,y  @B; UB;  }}J3莓7OL  @B; UB;  eQE"ԺiF(  @B; UB;  NAuo)  @B; UB;  ם&I@{Ӥ7w  @B; UB;  ~C0<Ke  @B; UB;  YEZo^\  @B; UB;  dmHEڕ-ym?  @B; UB;  ®@Z3  @B; UB;  @(-_O<7  @B; UB;  pЮJXؾ  @B; UB;  $ĞhHيEPwU  @B; UB;  lo%E 2i  @B; UB;  /M#?
  @B; UB;  DHvC錍PI  @B; UB;  yZ*B?7)  @B; UB;  Ɵ>GUF  @B; UB;  =!/ItE  @B; UB;  }2-Oa}a%  @B; UB;  ,ء+Gkx1  @B; UB;  $kO6Ïi  @B; UB;  O	<˟nJBQ  @B; UB;  6U OuB  @B; UB;  K<JUC  @B; UB;  ̓vE?
i  @B; UB;  _D{BXxu  @B; UB; O    O9 -
-@ 1`5jf9'( ̷o9_69X _91	9L9LE\ u59ۺ	 0  9&  oU9K ;v9
99z
9+99a99"M99x ;  Uod9 GwH
9999)9$9r99P59W-+9ߨ-9-999P-9N(9@i-9|j:9ޚ,9j79.9K|$979u=09o*9a&9$9#9=#9'9*9J 9KJ&9k+9$9 (
9I&9n9j-!9gJ"9$9!9T&9;9R
99969|"\Uh f6 9
\DcP9U 9Dj 99X ?f 9?X!1B1QBP1V1ˍA1Y-1F1Zg>1
F1%R1&L1@K18PK1QJ1;O1M1rO1ZN1>M1L1ZL1L1XL1>K1;L1Je1X1@TM1O1%L1eN1QM1jK1K1L1¤K1L1L1L1OK1M1fO1*I1loH1I1QAI1]L1lL1 \L1K1"
J1O1(}M1|L1K1L12VN1]L1@1fC18N1VO1N1M1\J1`J1J1H18K1ZM1M181r'1"1NK21mF1Q1.P1dM1L1XL1%kU1: R1P15O1lH1WU1[X1M1"
L1I1L1hK1L<1n31Q+=17K1!N11L1I11G1D1C1H1|K1N1o_1Y1GM1#H1H1fN1<Q1QP1'S1S1 Q1
E1H1tMI1E1W>1NF1&M1!L1'H1ϮO1}8?1&51@1تK1NP1~B1uI1M1xL1Lt( o| 9\FL  oc 90| _oz9V}x _o\ 9,x 31X12#1
9h*1#P1,e01j;1R1?10 s59q9˦9999eY19wN'999Z!9} 9b9b9	929&99C	99O29BX(99t)999KC99w9o9{99gI:9h9	99
9
t9E9S9)c<  |W9k	9\P%9Di:o9<?l,9,\:e99+O9'X9ꨖ9!1I9.׸9	1dn o"9	Gs999u9zG
9}99
9	9f9S9
9	999B9K990	9.9]
94W99"9!99Qm9H9H<9-59&9Q990999[:9;29-93%9ʨ< z9<99Do91 9 1 9 1T OQ.?9 @&1 .26 ?- b1<    9z  T           b1F% 1C     ( /
S "4 *0  &Pb  $    X ?q/ ?N ?$ 7*4L&TC . =    5\ 
   ?C  3d) :e)^e)e):e)e)&f)4f)Re)e)Ce)f kf)f)x 	f)f)f8 f)Af) b>f)t@ g=f)f)Ff)H ""K If)Lf)O =Qf)WWf)R Bf)f)4f)\f)if)f)v #f)f)gf)f),9g)g)g)3g)@g)g)Ɨg)#g)	 g)g)By$ bg) Ĵg)0g)P( h)h)g)g) 0_h):g)%h)@Gh)Qh)ag)uSh).h)|g)h)g)g)[h)h)g)bh 1h$  (   <h)h)g).g)XD g)*h)!g)h)lh)>d@ |h)h) h)݈h)dh)I h)h)+h)yh)Th) " J5i)i)>mV9 faz$1[ "k   OGu9 >?
 O#1 6/ ex O9 *8 " "`H .H H؆1$  nHL90 &Ȋ &P 8 " "x    .[ nh9xD 5 5 h .@w,  \ 1@ 0 &X8     @ј9h     .'l0 P8   "\  1`ו 1 4   "8     "
 & "po    C    R&T X$    l  8 h              T    	( 0.P `0 0D ( 0@ 0  0$ 0      0	,  		0d 0O@KL1  H  1-1 	=8耍[1j1 z1@T11ا1 1@]111 $1)@w)))  )!)`#) $)%&)@')2))*) @,)-)`M/) 0)Z2)@3)g5)6) u8)9)`;) 	=)>)@@)A)#C) D)0F)`G) >I)J)@KL)M)XO) P)eR)`S) sU)V)@X)Z)[) ])^)`!`) a).c)@d);fD
 Ii)j)`Vl) m)co)@p)pr)s) ~u)w)`x) z){)@})~),) )9)`) G)͇)@T)ڊ)a) )n)`) |))@))) ))`*) )7)@)D)ˤ) R)ا)`_) )l)@)y) ) )
)`) ))@()஻)5) )B)`) P))@]))j) )w)   p1p1p1  0OLk)  
 .LӰ*1"K/1K/14/1)/1m.1/1h/1/1/1/1Q/1.1~+/1/1 /1 .1D//1_/1.1If*1&/1/11
/1/1/1A/1C'/1T/18/1'/1S/1%/1R/1;/1=/1=/1=/19/1_/1#A/1?/1?/1:)/1K{*1U/1
=/10/1I/1?/1:/1</14/1*/19/1ON/1G/148/1g>/1#/1X/19/1@/1>/1d/1e/1(*1?/1'*/1O>/13/1X/1!;/1E/1*/1$F/1@/11?/1/1=/1u/10/1B6/1O/1=/17/1@/1/13/1=/1č*1i/1F3/1/1f/1</1g>/1:/1/:/1A/1!</1<>/1#:/1|./1B/1=/1;/1DI/1</19/1bf*15]/1,/1d2/1<\/1(/1=/1/1/1D5/1=/1i</1:/1:/1K/1v/1S./1yc/1*;/1"O/1}1/1</1:*1`?  O-1      %P)Lk)h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       @ LkB7Ec"  @B; UB;  DWaLc  @B; UB;  YBՋLGF+hu  @B; UB;  KuGnV
  @B; UB;  ,I9wD  @B; UB;  6IQ>Er  @B; UB;  :<NĻ 6J  @B; UB;  D\ЛUD  @B; UB;  TgGog
5&  @B; UB;  ;Kө:U$n  @B; UB;  |sN1[&}!8   ,B;  ѻB;  b*PCW98   ,B;  ѻB;  $Jׇ$>VϞ-8   ,B;  ѻB;  )eLIa8   ,B;  ѻB;  PhKk1S+M  @fB; UB;  ;'?NF+N  @fB; UB;  vZR\Lӏi   VB; UB;  a-*sIDIܪE   VB; UB;  JOPۓN]   VB; UB;  DOD"s,   VB; UB;  |HJ]Y   VB; UB;  茫DDeX   VB; UB;  ozVH5jX&2B   VB; UB;  A<q)@Ϲ    VB; UB;  YtGF$Nn3   VB; UB;  eK
A5   VB; UB;  "]lE]@!|   VB; UB;  h #B5be%h   VB; UB;  íWJ?nBV{   VB; UB;  OǞ=	   VB; UB;  qkhB|0E ?(   VB; UB;  RIQkD}	K`l   VB; UB;  2_4MTR   VB; UB;  9p1LH<C)!   VB; UB;  ʒAkYT   VB; UB;  kWKйcd_   VB; UB;  ~J	i   VB; UB;  ZGl   VB; UB;  yCM:k   VB; UB;   M.|,x   VB; UB;  OI|bk   VB; UB;  ZFi|1BU.ZS   VB; UB;  R GN\/4K   VB; UB;  )!MI,N   VB; UB;  `gpdNR\xH   VB; UB;  7,*FI.T>   VB; UB;  PiyJ&   VB; UB;  4ЬkIҬ[D-)u   VB; UB;  4BeUi   VB; UB;  gI++ߪ    VB; UB;  p^I:۶   VB; UB;  ^GsmnnL   VB; UB;  K%G%LߧX   @B; UB;  Q4y;H/X!_X   @B; UB;  ;CwmX   @B; UB;  .LPCs7eX   @B; UB;  GAb pBP   jB; UB;  S;J#P   jB; UB;  s`
DW{.4P   jB; UB;  DV0AOz[ ^4P   jB; UB;  rFN).P   jB; UB;  8V'_E[ UIP   jB; UB;  TRNu"es@(   @QB; UB;  hÜBEWx(   @QB; UB;        "Ӱ*1"K/1K/14/1)/1m.1/1h/1/1/1/1Q/1.1~+/1/1 /1 .1D//1_/1.1If*1&/1/11
/1/1/1A/1C'/1T/18/1'/1S/1%/1R/1;/1=/1=/1=/19/1_/1#A/1?/1?/1:)/1K{*1U/1
=/10/1I/1?/1:/1</14/1*/19/1ON/1G/148/1g>/1#/1X/19/1@/1>/1d/1e/1(*1?/1'*/1O>/13/1X/1!;/1E/1*/1$F/1@/11?/1/1=/1u/10/1B6/1O/1=/17/1@/1/13/1=/1č*1i/1F3/1/1f/1</1g>/1:/1/:/1A/1!</1<>/1#:/1|./1B/1=/1;/1DI/1</19/1bf*15]/1,/1d2/1<\/1(/1=/1/1/1D5/1=/1i</1:/1:/1K/1v/1S./1yc/1*;/1"O/1}1/1</1:*1`?O9  O-1  ,) ])[9 B909R{#9l99B
9	9A9(999999/9-9t,9_j+9Ŝ)97*9b)9!()9(9<)9n/9i,92(9)9,94.9W-9K-9*9p+9-9R
'9UJ'9"y(9)9
+9-9 +9X*9/9؀+9(9N&9A'9*9-H*9'9(9B*9P*9)9)9B)9ݯ)9OS+9\*9&90
'9,*9St,96-9a,9)9(9(9')9A09<.9S#+9P)99p9"9f)9|*9(9g*9<*9d&9/)9?*9-9*9&9|-9/969819")9.919*9V+9*9f-9J/97*9)9a+9'9 (9-9A19+.9-9U/9hJ09Н-9,9_+9d.9'09f*9.9(9K&9b09J$9!9z$9?,9'&/9,+9N)99,9V09 29 /9|	+9*,919g09G09p.9   Ǉ1 1* / / T H      % L  <        4  (                4 $       䙁)ΰ{)Kw)8Cf)L[)  >m)lyo)jc)X)zL |1)z1xO1^141  ]p X !
 	=1@KL1[L?1fP1T1d1!d o1
11W1 , @ Cُ!5!MH8
+xXt{FYGF Ϭ)r})4)<!	0!   '&2!/Ѻ!w!
>  \	  d	  (| 0 ܀v9P%O9  xb:9    o9D  0  1q>L9WL bkL9*  \ f$L9\    o(L9m  ,  _iL9- L @ 1 1(d
  0 ( 1  1       ;14/1*/19/1ON/1G/148/1g>/1#/1X/19/1@/1>/1d/1e/1(*1?/1'*/1O>/13/1X/1!;/1E/1*/1$F/1@/11?/1/1=/1u/10/1B6/1O/1=/17/1@/1/13/1=/1č*1i/1F3/1/1f/1</1g>/1:/1/:/1A/1!</1<>/1#:/1|./1B/1=/1;/1DI/1</19/1bf*15]/1,/1d2/1<\/1(/1=/1/1/1D5/1=/1i</1:/1:/1K/1v/1S./1yc/1*;/1"O/1}1/1</1:*1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999   -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1   999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                                    [9 B909R{#9l99B
9	9A9(99999   9/9-9t,9_j+9Ŝ)97*9b)9!()9(9<)9n/9i,92(9)9,94.9W-9K-9*9p+9-9R
'9UJ'9"y(9)9
+9-9 +9X*9/9؀+9(9N&9A'9*9-H*9'9(9B*9P*9)9)9B)9ݯ)9OS+9\*9&90
'9,*9St,96-9a,9)9(9(9')9A   p~JK+9(   @QB; UB;  ~K߂1gM(   @QB; UB;  S̠`LmF(   @QB; UB;  p(@Bء&q(   @QB; UB;  F.{HN_oWy(   @QB; UB;  aqH޹>a ;(   @QB; UB;  &9A-7(   @QB; UB;  J/CKX(   @QB; UB;  DrAr	Y
&(   @QB; UB;  8COɩۦkl(   @QB; UB;  H5H0vpMH8(   @QB; UB;  :P@/rW(   @QB; UB;  :C4iFv_(   @QB; UB;  V/MBQ%(   @QB; UB;  RC1H<Ab(   @QB; UB;  rNB5|0(   @QB; UB;        P0E9 1    0  , P18     ( D   4  t   0<l ( 1Fts 1jht     5X @T%) "&v      P    ELP 12)P 5d, P 0V,@` 1lH 13| L     154 1HZ  (  < ,  1(H " $ 	x 	, P x 0 $ E- #@KL$	= P   s   2))   d,1                                          V,9      l1   3|1                     59   HZ 9                                                   (9   9                     9   1                           9            -1      @KL1    	=1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   /*
 * WARNING: do not edit!
 * Generated by Makefile from include/openssl/x509.h.in
 *
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_X509_H
# define OPENSSL_X509_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_X509_H
# endif

# include <openssl/e_os2.h>
# include <openssl/types.h>
# include <openssl/symhacks.h>
# include <openssl/buffer.h>
# include <openssl/evp.h>
# include <openssl/bio.h>
# include <openssl/asn1.h>
# include <openssl/safestack.h>
# include <openssl/ec.h>

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  include <openssl/rsa.h>
#  include <openssl/dsa.h>
#  include <openssl/dh.h>
# endif

# include <openssl/sha.h>
# include <openssl/x509err.h>

#ifdef  __cplusplus
extern "C" {
#endif

/* Needed stacks for types defined in other headers */
SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME)
#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk))
#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx)))
#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp)))
#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null())
#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n)))
#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n))
#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk))
#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk))
#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i)))
#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)))
#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))
#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))
#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk)))
#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk)))
#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc))
#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx))
#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr)))
#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))
#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))
#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum)
#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk))
#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk))
#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk)))
#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc)))
#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509)
#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk))
#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx)))
#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp)))
#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null())
#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n)))
#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n))
#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk))
#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk))
#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i)))
#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)))
#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))
#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))
#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk)))
#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk)))
#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc))
#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx))
#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr)))
#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))
#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))
#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum)
#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk))
#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk))
#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk)))
#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc)))
#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED)
#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk))
#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx)))
#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp)))
#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null())
#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n)))
#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n))
#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk))
#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk))
#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i)))
#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)))
#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))
#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))
#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk)))
#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk)))
#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc))
#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx))
#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr)))
#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))
#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))
#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum)
#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk))
#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk))
#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk)))
#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc)))
#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL)
#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk))
#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx)))
#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp)))
#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null())
#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n)))
#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n))
#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk))
#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk))
#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i)))
#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)))
#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))
#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))
#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk)))
#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk)))
#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc))
#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx))
#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr)))
#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))
#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))
#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum)
#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk))
#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk))
#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk)))
#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc)))
#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp)))


/* Flags for X509_get_signature_info() */
/* Signature info is valid */
# define X509_SIG_INFO_VALID     0x1
/* Signature is suitable for TLS use */
# define X509_SIG_INFO_TLS       0x2

# define X509_FILETYPE_PEM       1
# define X509_FILETYPE_ASN1      2
# define X509_FILETYPE_DEFAULT   3

# define X509v3_KU_DIGITAL_SIGNATURE     0x0080
# define X509v3_KU_NON_REPUDIATION       0x0040
# define X509v3_KU_KEY_ENCIPHERMENT      0x0020
# define X509v3_KU_DATA_ENCIPHERMENT     0x0010
# define X509v3_KU_KEY_AGREEMENT         0x0008
# define X509v3_KU_KEY_CERT_SIGN         0x0004
# define X509v3_KU_CRL_SIGN              0x0002
# define X509v3_KU_ENCIPHER_ONLY         0x0001
# define X509v3_KU_DECIPHER_ONLY         0x8000
# define X509v3_KU_UNDEF                 0xffff

struct X509_algor_st {
    ASN1_OBJECT *algorithm;
    ASN1_TYPE *parameter;
} /* X509_ALGOR */ ;

typedef STACK_OF(X509_ALGOR) X509_ALGORS;

typedef struct X509_val_st {
    ASN1_TIME *notBefore;
    ASN1_TIME *notAfter;
} X509_VAL;

typedef struct X509_sig_st X509_SIG;

typedef struct X509_name_entry_st X509_NAME_ENTRY;

SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY)
#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))
#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx)))
#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp)))
#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null())
#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n)))
#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n))
#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk))
#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk))
#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i)))
#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)))
#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))
#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))
#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk)))
#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk)))
#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))
#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx))
#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr)))
#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))
#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))
#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum)
#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk))
#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))
#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)))
#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)))
#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp)))


# define X509_EX_V_NETSCAPE_HACK         0x8000
# define X509_EX_V_INIT                  0x0001
typedef struct X509_extension_st X509_EXTENSION;
SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION)
#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk))
#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx)))
#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp)))
#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null())
#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n)))
#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n))
#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk))
#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk))
#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i)))
#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)))
#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))
#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))
#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk)))
#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk)))
#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc))
#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx))
#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr)))
#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))
#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))
#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum)
#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk))
#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk))
#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk)))
#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc)))
#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp)))

typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
typedef struct x509_attributes_st X509_ATTRIBUTE;
SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE)
#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))
#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx)))
#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp)))
#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null())
#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n)))
#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n))
#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk))
#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk))
#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i)))
#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)))
#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))
#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))
#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk)))
#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk)))
#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))
#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx))
#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr)))
#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))
#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))
#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum)
#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk))
#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))
#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)))
#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)))
#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp)))

typedef struct X509_req_info_st X509_REQ_INFO;
typedef struct X509_req_st X509_REQ;
typedef struct x509_cert_aux_st X509_CERT_AUX;
typedef struct x509_cinf_st X509_CINF;

/* Flags for X509_print_ex() */

# define X509_FLAG_COMPAT                0
# define X509_FLAG_NO_HEADER             1L
# define X509_FLAG_NO_VERSION            (1L << 1)
# define X509_FLAG_NO_SERIAL             (1L << 2)
# define X509_FLAG_NO_SIGNAME            (1L << 3)
# define X509_FLAG_NO_ISSUER             (1L << 4)
# define X509_FLAG_NO_VALIDITY           (1L << 5)
# define X509_FLAG_NO_SUBJECT            (1L << 6)
# define X509_FLAG_NO_PUBKEY             (1L << 7)
# define X509_FLAG_NO_EXTENSIONS         (1L << 8)
# define X509_FLAG_NO_SIGDUMP            (1L << 9)
# define X509_FLAG_NO_AUX                (1L << 10)
# define X509_FLAG_NO_ATTRIBUTES         (1L << 11)
# define X509_FLAG_NO_IDS                (1L << 12)
# define X509_FLAG_EXTENSIONS_ONLY_KID   (1L << 13)

/* Flags specific to X509_NAME_print_ex() */

/* The field separator information */

# define XN_FLAG_SEP_MASK        (0xf << 16)

# define XN_FLAG_COMPAT          0/* Traditional; use old X509_NAME_print */
# define XN_FLAG_SEP_COMMA_PLUS  (1 << 16)/* RFC2253 ,+ */
# define XN_FLAG_SEP_CPLUS_SPC   (2 << 16)/* ,+ spaced: more readable */
# define XN_FLAG_SEP_SPLUS_SPC   (3 << 16)/* ;+ spaced */
# define XN_FLAG_SEP_MULTILINE   (4 << 16)/* One line per field */

# define XN_FLAG_DN_REV          (1 << 20)/* Reverse DN order */

/* How the field name is shown */

# define XN_FLAG_FN_MASK         (0x3 << 21)

# define XN_FLAG_FN_SN           0/* Object short name */
# define XN_FLAG_FN_LN           (1 << 21)/* Object long name */
# define XN_FLAG_FN_OID          (2 << 21)/* Always use OIDs */
# define XN_FLAG_FN_NONE         (3 << 21)/* No field names */

# define XN_FLAG_SPC_EQ          (1 << 23)/* Put spaces round '=' */

/*
 * This determines if we dump fields we don't recognise: RFC2253 requires
 * this.
 */

# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)

# define XN_FLAG_FN_ALIGN        (1 << 25)/* Align field names to 20
                                           * characters */

/* Complete set of RFC2253 flags */

# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \
                        XN_FLAG_SEP_COMMA_PLUS | \
                        XN_FLAG_DN_REV | \
                        XN_FLAG_FN_SN | \
                        XN_FLAG_DUMP_UNKNOWN_FIELDS)

/* readable oneline form */

# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \
                        ASN1_STRFLGS_ESC_QUOTE | \
                        XN_FLAG_SEP_CPLUS_SPC | \
                        XN_FLAG_SPC_EQ | \
                        XN_FLAG_FN_SN)

/* readable multiline form */

# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \
                        ASN1_STRFLGS_ESC_MSB | \
                        XN_FLAG_SEP_MULTILINE | \
                        XN_FLAG_SPC_EQ | \
                        XN_FLAG_FN_LN | \
                        XN_FLAG_FN_ALIGN)

typedef struct X509_crl_info_st X509_CRL_INFO;

typedef struct private_key_st {
    int version;
    /* The PKCS#8 data types */
    X509_ALGOR *enc_algor;
    ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */
    /* When decrypted, the following will not be NULL */
    EVP_PKEY *dec_pkey;
    /* used to encrypt and decrypt */
    int key_length;
    char *key_data;
    int key_free;               /* true if we should auto free key_data */
    /* expanded version of 'enc_algor' */
    EVP_CIPHER_INFO cipher;
} X509_PKEY;

typedef struct X509_info_st {
    X509 *x509;
    X509_CRL *crl;
    X509_PKEY *x_pkey;
    EVP_CIPHER_INFO enc_cipher;
    int enc_len;
    char *enc_data;
} X509_INFO;
SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO)
#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk))
#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx)))
#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp)))
#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null())
#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n)))
#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n))
#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk))
#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk))
#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i)))
#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)))
#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))
#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))
#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk)))
#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk)))
#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc))
#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx))
#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr)))
#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))
#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))
#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum)
#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk))
#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk))
#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk)))
#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc)))
#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp)))


/*
 * The next 2 structures and their 8 routines are used to manipulate Netscape's
 * spki structures - useful if you are writing a CA web page
 */
typedef struct Netscape_spkac_st {
    X509_PUBKEY *pubkey;
    ASN1_IA5STRING *challenge;  /* challenge sent in atlas >= PR2 */
} NETSCAPE_SPKAC;

typedef struct Netscape_spki_st {
    NETSCAPE_SPKAC *spkac;      /* signed public key and challenge */
    X509_ALGOR sig_algor;
    ASN1_BIT_STRING *signature;
} NETSCAPE_SPKI;

/* Netscape certificate sequence structure */
typedef struct Netscape_certificate_sequence {
    ASN1_OBJECT *type;
    STACK_OF(X509) *certs;
} NETSCAPE_CERT_SEQUENCE;

/*- Unused (and iv length is wrong)
typedef struct CBCParameter_st
        {
        unsigned char iv[8];
        } CBC_PARAM;
*/

/* Password based encryption structure */

typedef struct PBEPARAM_st {
    ASN1_OCTET_STRING *salt;
    ASN1_INTEGER *iter;
} PBEPARAM;

/* Password based encryption V2 structures */

typedef struct PBE2PARAM_st {
    X509_ALGOR *keyfunc;
    X509_ALGOR *encryption;
} PBE2PARAM;

typedef struct PBKDF2PARAM_st {
/* Usually OCTET STRING but could be anything */
    ASN1_TYPE *salt;
    ASN1_INTEGER *iter;
    ASN1_INTEGER *keylength;
    X509_ALGOR *prf;
} PBKDF2PARAM;

#ifndef OPENSSL_NO_SCRYPT
typedef struct SCRYPT_PARAMS_st {
    ASN1_OCTET_STRING *salt;
    ASN1_INTEGER *costParameter;
    ASN1_INTEGER *blockSize;
    ASN1_INTEGER *parallelizationParameter;
    ASN1_INTEGER *keyLength;
} SCRYPT_PARAMS;
#endif

#ifdef  __cplusplus
}
#endif

# include <openssl/x509_vfy.h>
# include <openssl/pkcs7.h>

#ifdef  __cplusplus
extern "C" {
#endif

# define X509_EXT_PACK_UNKNOWN   1
# define X509_EXT_PACK_STRING    2

# define         X509_extract_key(x)     X509_get_pubkey(x)/*****/
# define         X509_REQ_extract_key(a) X509_REQ_get_pubkey(a)
# define         X509_name_cmp(a,b)      X509_NAME_cmp((a),(b))

void X509_CRL_set_default_method(const X509_CRL_METHOD *meth);
X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl),
                                     int (*crl_free) (X509_CRL *crl),
                                     int (*crl_lookup) (X509_CRL *crl,
                                                        X509_REVOKED **ret,
                                                        const
                                                        ASN1_INTEGER *serial,
                                                        const
                                                        X509_NAME *issuer),
                                     int (*crl_verify) (X509_CRL *crl,
                                                        EVP_PKEY *pk));
void X509_CRL_METHOD_free(X509_CRL_METHOD *m);

void X509_CRL_set_meth_data(X509_CRL *crl, void *dat);
void *X509_CRL_get_meth_data(X509_CRL *crl);

const char *X509_verify_cert_error_string(long n);

int X509_verify(X509 *a, EVP_PKEY *r);
int X509_self_signed(X509 *cert, int verify_signature);

int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx,
                       const char *propq);
int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r);
int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r);
int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r);

NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len);
char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x);
EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x);
int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);

int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);

int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent);
int X509_signature_print(BIO *bp, const X509_ALGOR *alg,
                         const ASN1_STRING *sig);

int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx);
int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx);
int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);
int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx);
int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);

int X509_pubkey_digest(const X509 *data, const EVP_MD *type,
                       unsigned char *md, unsigned int *len);
int X509_digest(const X509 *data, const EVP_MD *type,
                unsigned char *md, unsigned int *len);
ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert,
                                   EVP_MD **md_used, int *md_is_fallback);
int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type,
                    unsigned char *md, unsigned int *len);
int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type,
                    unsigned char *md, unsigned int *len);
int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type,
                     unsigned char *md, unsigned int *len);

X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  include <openssl/http.h> /* OSSL_HTTP_REQ_CTX_nbio_d2i */
#  define X509_http_nbio(rctx, pcert) \
      OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509))
#  define X509_CRL_http_nbio(rctx, pcrl) \
      OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL))
# endif

# ifndef OPENSSL_NO_STDIO
X509 *d2i_X509_fp(FILE *fp, X509 **x509);
int i2d_X509_fp(FILE *fp, const X509 *x509);
X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl);
X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req);
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa);
#  endif
#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   ifndef OPENSSL_NO_DSA
OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa);
OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa);
#   endif
#  endif
#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   ifndef OPENSSL_NO_EC
OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey);
OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey);
#   endif /* OPENSSL_NO_EC */
#  endif /* OPENSSL_NO_DEPRECATED_3_0 */
X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8);
int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8);
X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk);
int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk);
PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
                                                PKCS8_PRIV_KEY_INFO **p8inf);
int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf);
int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key);
int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey);
EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx,
                               const char *propq);
EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey);
EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
# endif

X509 *d2i_X509_bio(BIO *bp, X509 **x509);
int i2d_X509_bio(BIO *bp, const X509 *x509);
X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl);
X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req);
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa);
#  endif
#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   ifndef OPENSSL_NO_DSA
OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa);
OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa);
#   endif
#  endif

#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   ifndef OPENSSL_NO_EC
OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey);
OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey);
#   endif /* OPENSSL_NO_EC */
#  endif /* OPENSSL_NO_DEPRECATED_3_0 */

X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8);
int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8);
X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk);
int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk);
PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
                                                 PKCS8_PRIV_KEY_INFO **p8inf);
int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf);
int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key);
int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey);
EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx,
                                const char *propq);
EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey);
EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);

DECLARE_ASN1_DUP_FUNCTION(X509)
DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR)
DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE)
DECLARE_ASN1_DUP_FUNCTION(X509_CRL)
DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION)
DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY)
DECLARE_ASN1_DUP_FUNCTION(X509_REQ)
DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED)
int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype,
                    void *pval);
void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype,
                     const void **ppval, const X509_ALGOR *algor);
void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src);

DECLARE_ASN1_DUP_FUNCTION(X509_NAME)
DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY)

int X509_cmp_time(const ASN1_TIME *s, time_t *t);
int X509_cmp_current_time(const ASN1_TIME *s);
int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm,
                       const ASN1_TIME *start, const ASN1_TIME *end);
ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s,
                            int offset_day, long offset_sec, time_t *t);
ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);

const char *X509_get_default_cert_area(void);
const char *X509_get_default_cert_dir(void);
const char *X509_get_default_cert_file(void);
const char *X509_get_default_cert_dir_env(void);
const char *X509_get_default_cert_file_env(void);
const char *X509_get_default_private_dir(void);

X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey);

DECLARE_ASN1_FUNCTIONS(X509_ALGOR)
DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS)
DECLARE_ASN1_FUNCTIONS(X509_VAL)

DECLARE_ASN1_FUNCTIONS(X509_PUBKEY)

X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key);
EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key);
int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain);
long X509_get_pathlen(X509 *x);
DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY)
EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length,
                        OSSL_LIB_CTX *libctx, const char *propq);
# ifndef OPENSSL_NO_DEPRECATED_3_0
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,RSA, RSA_PUBKEY)
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  ifndef OPENSSL_NO_DSA
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,DSA, DSA_PUBKEY)
#  endif
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  ifndef OPENSSL_NO_EC
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY)
#  endif
# endif

DECLARE_ASN1_FUNCTIONS(X509_SIG)
void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg,
                   const ASN1_OCTET_STRING **pdigest);
void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg,
                   ASN1_OCTET_STRING **pdigest);

DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO)
DECLARE_ASN1_FUNCTIONS(X509_REQ)
X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq);

DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE)
X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value);

DECLARE_ASN1_FUNCTIONS(X509_EXTENSION)
DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS)

DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)

DECLARE_ASN1_FUNCTIONS(X509_NAME)

int X509_NAME_set(X509_NAME **xn, const X509_NAME *name);

DECLARE_ASN1_FUNCTIONS(X509_CINF)
DECLARE_ASN1_FUNCTIONS(X509)
X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)

#define X509_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef)
int X509_set_ex_data(X509 *r, int idx, void *arg);
void *X509_get_ex_data(const X509 *r, int idx);
DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509,X509_AUX)

int i2d_re_X509_tbs(X509 *x, unsigned char **pp);

int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid,
                      int *secbits, uint32_t *flags);
void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid,
                       int secbits, uint32_t flags);

int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits,
                            uint32_t *flags);

void X509_get0_signature(const ASN1_BIT_STRING **psig,
                         const X509_ALGOR **palg, const X509 *x);
int X509_get_signature_nid(const X509 *x);

void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id);
ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x);
void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id);
ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x);

int X509_alias_set1(X509 *x, const unsigned char *name, int len);
int X509_keyid_set1(X509 *x, const unsigned char *id, int len);
unsigned char *X509_alias_get0(X509 *x, int *len);
unsigned char *X509_keyid_get0(X509 *x, int *len);

DECLARE_ASN1_FUNCTIONS(X509_REVOKED)
DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
DECLARE_ASN1_FUNCTIONS(X509_CRL)
X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq);

int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
int X509_CRL_get0_by_serial(X509_CRL *crl,
                            X509_REVOKED **ret, const ASN1_INTEGER *serial);
int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);

X509_PKEY *X509_PKEY_new(void);
void X509_PKEY_free(X509_PKEY *a);

DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI)
DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC)
DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE)

X509_INFO *X509_INFO_new(void);
void X509_INFO_free(X509_INFO *a);
char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
                ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey);
OSSL_DEPRECATEDIN_3_0
int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
                unsigned char *md, unsigned int *len);
OSSL_DEPRECATEDIN_3_0
int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2,
              ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey,
              const EVP_MD *type);
#endif
int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data,
                     unsigned char *md, unsigned int *len);
int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg,
                     const ASN1_BIT_STRING *signature, const void *data,
                     EVP_PKEY *pkey);
int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg,
                         const ASN1_BIT_STRING *signature, const void *data,
                         EVP_MD_CTX *ctx);
int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
                   ASN1_BIT_STRING *signature, const void *data,
                   EVP_PKEY *pkey, const EVP_MD *md);
int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
                       X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
                       const void *data, EVP_MD_CTX *ctx);

#define X509_VERSION_1 0
#define X509_VERSION_2 1
#define X509_VERSION_3 2

long X509_get_version(const X509 *x);
int X509_set_version(X509 *x, long version);
int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
ASN1_INTEGER *X509_get_serialNumber(X509 *x);
const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x);
int X509_set_issuer_name(X509 *x, const X509_NAME *name);
X509_NAME *X509_get_issuer_name(const X509 *a);
int X509_set_subject_name(X509 *x, const X509_NAME *name);
X509_NAME *X509_get_subject_name(const X509 *a);
const ASN1_TIME * X509_get0_notBefore(const X509 *x);
ASN1_TIME *X509_getm_notBefore(const X509 *x);
int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm);
const ASN1_TIME *X509_get0_notAfter(const X509 *x);
ASN1_TIME *X509_getm_notAfter(const X509 *x);
int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm);
int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
int X509_up_ref(X509 *x);
int X509_get_signature_type(const X509 *x);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define X509_get_notBefore X509_getm_notBefore
#  define X509_get_notAfter X509_getm_notAfter
#  define X509_set_notBefore X509_set1_notBefore
#  define X509_set_notAfter X509_set1_notAfter
#endif


/*
 * This one is only used so that a binary form can output, as in
 * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf)
 */
X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x);
const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x);
void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid,
                    const ASN1_BIT_STRING **psuid);
const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x);

EVP_PKEY *X509_get0_pubkey(const X509 *x);
EVP_PKEY *X509_get_pubkey(X509 *x);
ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x);

#define X509_REQ_VERSION_1 0

long X509_REQ_get_version(const X509_REQ *req);
int X509_REQ_set_version(X509_REQ *x, long version);
X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req);
int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name);
void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig,
                             const X509_ALGOR **palg);
void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig);
int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg);
int X509_REQ_get_signature_nid(const X509_REQ *req);
int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp);
int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req);
X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req);
int X509_REQ_extension_nid(int nid);
int *X509_REQ_get_extension_nids(void);
void X509_REQ_set_extension_nids(int *nids);
STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
int X509_REQ_add_extensions_nid(X509_REQ *req,
                                const STACK_OF(X509_EXTENSION) *exts, int nid);
int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext);
int X509_REQ_get_attr_count(const X509_REQ *req);
int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos);
int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj,
                             int lastpos);
X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc);
X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc);
int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr);
int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
                              const ASN1_OBJECT *obj, int type,
                              const unsigned char *bytes, int len);
int X509_REQ_add1_attr_by_NID(X509_REQ *req,
                              int nid, int type,
                              const unsigned char *bytes, int len);
int X509_REQ_add1_attr_by_txt(X509_REQ *req,
                              const char *attrname, int type,
                              const unsigned char *bytes, int len);

#define X509_CRL_VERSION_1 0
#define X509_CRL_VERSION_2 1

int X509_CRL_set_version(X509_CRL *x, long version);
int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name);
int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
int X509_CRL_sort(X509_CRL *crl);
int X509_CRL_up_ref(X509_CRL *crl);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate
#  define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate
#endif

long X509_CRL_get_version(const X509_CRL *crl);
const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl);
const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl);
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl);
OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl);
#endif
X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl);
const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl);
STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl);
void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig,
                             const X509_ALGOR **palg);
int X509_CRL_get_signature_nid(const X509_CRL *crl);
int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp);

const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x);
int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x);
int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
const STACK_OF(X509_EXTENSION) *
X509_REVOKED_get0_extensions(const X509_REVOKED *r);

X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
                        EVP_PKEY *skey, const EVP_MD *md, unsigned int flags);

int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey);

int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey);
int X509_chain_check_suiteb(int *perror_depth,
                            X509 *x, STACK_OF(X509) *chain,
                            unsigned long flags);
int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags);
STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain);

int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
unsigned long X509_issuer_and_serial_hash(X509 *a);

int X509_issuer_name_cmp(const X509 *a, const X509 *b);
unsigned long X509_issuer_name_hash(X509 *a);

int X509_subject_name_cmp(const X509 *a, const X509 *b);
unsigned long X509_subject_name_hash(X509 *x);

# ifndef OPENSSL_NO_MD5
unsigned long X509_issuer_name_hash_old(X509 *a);
unsigned long X509_subject_name_hash_old(X509 *x);
# endif

# define X509_ADD_FLAG_DEFAULT  0
# define X509_ADD_FLAG_UP_REF   0x1
# define X509_ADD_FLAG_PREPEND  0x2
# define X509_ADD_FLAG_NO_DUP   0x4
# define X509_ADD_FLAG_NO_SS    0x8
int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags);
int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags);

int X509_cmp(const X509 *a, const X509 *b);
int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
#ifndef OPENSSL_NO_DEPRECATED_3_0
# define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL)
OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x,
                                                const EVP_PKEY *pubkey);
#endif
unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx,
                                const char *propq, int *ok);
unsigned long X509_NAME_hash_old(const X509_NAME *x);

int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
int X509_aux_print(BIO *out, X509 *x, int indent);
# ifndef OPENSSL_NO_STDIO
int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
                     unsigned long cflag);
int X509_print_fp(FILE *bp, X509 *x);
int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent,
                          unsigned long flags);
# endif

int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase);
int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
                       unsigned long flags);
int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag,
                  unsigned long cflag);
int X509_print(BIO *bp, X509 *x);
int X509_ocspid_print(BIO *bp, X509 *x);
int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag);
int X509_CRL_print(BIO *bp, X509_CRL *x);
int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag,
                      unsigned long cflag);
int X509_REQ_print(BIO *bp, X509_REQ *req);

int X509_NAME_entry_count(const X509_NAME *name);
int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid,
                              char *buf, int len);
int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj,
                              char *buf, int len);

/*
 * NOTE: you should be passing -1, not 0 as lastpos. The functions that use
 * lastpos, search after that position on.
 */
int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos);
int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj,
                               int lastpos);
X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc);
X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne,
                        int loc, int set);
int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type,
                               const unsigned char *bytes, int len, int loc,
                               int set);
int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
                               const unsigned char *bytes, int len, int loc,
                               int set);
X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
                                               const char *field, int type,
                                               const unsigned char *bytes,
                                               int len);
X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
                                               int type,
                                               const unsigned char *bytes,
                                               int len);
int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
                               const unsigned char *bytes, int len, int loc,
                               int set);
X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
                                               const ASN1_OBJECT *obj, int type,
                                               const unsigned char *bytes,
                                               int len);
int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj);
int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
                             const unsigned char *bytes, int len);
ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne);
ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne);
int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne);

int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder,
                       size_t *pderlen);

int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
                          int nid, int lastpos);
int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
                          const ASN1_OBJECT *obj, int lastpos);
int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
                               int crit, int lastpos);
X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc);
X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc);
STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x,
                                         X509_EXTENSION *ex, int loc);

int X509_get_ext_count(const X509 *x);
int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos);
int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos);
int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos);
X509_EXTENSION *X509_get_ext(const X509 *x, int loc);
X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx);
int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
                      unsigned long flags);

int X509_CRL_get_ext_count(const X509_CRL *x);
int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos);
int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj,
                            int lastpos);
int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos);
X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc);
X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx);
int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
                          unsigned long flags);

int X509_REVOKED_get_ext_count(const X509_REVOKED *x);
int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos);
int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj,
                                int lastpos);
int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit,
                                     int lastpos);
X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc);
X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit,
                               int *idx);
int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
                              unsigned long flags);

X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
                                             int nid, int crit,
                                             ASN1_OCTET_STRING *data);
X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
                                             const ASN1_OBJECT *obj, int crit,
                                             ASN1_OCTET_STRING *data);
int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj);
int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data);
ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
int X509_EXTENSION_get_critical(const X509_EXTENSION *ex);

int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
                           int lastpos);
int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
                           const ASN1_OBJECT *obj, int lastpos);
X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc);
X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc);
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
                                           X509_ATTRIBUTE *attr);
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE)
                                                  **x, const ASN1_OBJECT *obj,
                                                  int type,
                                                  const unsigned char *bytes,
                                                  int len);
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE)
                                                  **x, int nid, int type,
                                                  const unsigned char *bytes,
                                                  int len);
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE)
                                                  **x, const char *attrname,
                                                  int type,
                                                  const unsigned char *bytes,
                                                  int len);
void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x,
                              const ASN1_OBJECT *obj, int lastpos, int type);
X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
                                             int atrtype, const void *data,
                                             int len);
X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
                                             const ASN1_OBJECT *obj,
                                             int atrtype, const void *data,
                                             int len);
X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
                                             const char *atrname, int type,
                                             const unsigned char *bytes,
                                             int len);
int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj);
int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype,
                             const void *data, int len);
void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype,
                               void *data);
int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr);
ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);

int EVP_PKEY_get_attr_count(const EVP_PKEY *key);
int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos);
int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj,
                             int lastpos);
X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc);
X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc);
int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr);
int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key,
                              const ASN1_OBJECT *obj, int type,
                              const unsigned char *bytes, int len);
int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key,
                              int nid, int type,
                              const unsigned char *bytes, int len);
int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key,
                              const char *attrname, int type,
                              const unsigned char *bytes, int len);

/* lookup a cert from a X509 STACK */
X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name,
                                     const ASN1_INTEGER *serial);
X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name);

DECLARE_ASN1_FUNCTIONS(PBEPARAM)
DECLARE_ASN1_FUNCTIONS(PBE2PARAM)
DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM)
#ifndef OPENSSL_NO_SCRYPT
DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS)
#endif

int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter,
                         const unsigned char *salt, int saltlen);
int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter,
                            const unsigned char *salt, int saltlen,
                            OSSL_LIB_CTX *libctx);

X509_ALGOR *PKCS5_pbe_set(int alg, int iter,
                          const unsigned char *salt, int saltlen);
X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter,
                             const unsigned char *salt, int saltlen,
                             OSSL_LIB_CTX *libctx);

X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
                           unsigned char *salt, int saltlen);
X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter,
                              unsigned char *salt, int saltlen,
                              unsigned char *aiv, int prf_nid);
X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter,
                                 unsigned char *salt, int saltlen,
                                 unsigned char *aiv, int prf_nid,
                                 OSSL_LIB_CTX *libctx);

#ifndef OPENSSL_NO_SCRYPT
X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher,
                                  const unsigned char *salt, int saltlen,
                                  unsigned char *aiv, uint64_t N, uint64_t r,
                                  uint64_t p);
#endif

X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen,
                             int prf_nid, int keylen);
X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen,
                                int prf_nid, int keylen,
                                OSSL_LIB_CTX *libctx);

/* PKCS#8 utilities */

DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)

EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8);
EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx,
                            const char *propq);
PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey);

int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
                    int version, int ptype, void *pval,
                    unsigned char *penc, int penclen);
int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg,
                    const unsigned char **pk, int *ppklen,
                    const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8);

const STACK_OF(X509_ATTRIBUTE) *
PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8);
int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr);
int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type,
                                const unsigned char *bytes, int len);
int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj,
                                int type, const unsigned char *bytes, int len);


int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj,
                           int ptype, void *pval,
                           unsigned char *penc, int penclen);
int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
                           const unsigned char **pk, int *ppklen,
                           X509_ALGOR **pa, const X509_PUBKEY *pub);
int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b);

# ifdef  __cplusplus
}
# endif
#endif
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    = key;
	        this.computed = computed;
	        this.value = value;
	        this.kind = kind;
	        this.method = method;
	        this.shorthand = shorthand;
	    }
	    return Property;
	}());
	exports.Property = Property;
	var RegexLiteral = (function () {
	    function RegexLiteral(value, raw, pattern, flags) {
	        this.type = syntax_1.Syntax.Literal;
	        this.value = value;
	        this.raw = raw;
	        this.regex = { pattern: pattern, flags: flags };
	    }
	    return RegexLiteral;
	}());
	exports.RegexLiteral = RegexLiteral;
	var RestElement = (function () {
	    function RestElement(argument) {
	        this.type = syntax_1.Syntax.RestElement;
	        this.argument = argument;
	    }
	    return RestElement;
	}());
	exports.RestElement = RestElement;
	var ReturnStatement = (function () {
	    function ReturnStatement(argument) {
	        this.type = syntax_1.Syntax.ReturnStatement;
	        this.argument = argument;
	    }
	    return ReturnStatement;
	}());
	exports.ReturnStatement = ReturnStatement;
	var Script = (function () {
	    function Script(body) {
	        this.type = syntax_1.Syntax.Program;
	        this.body = body;
	        this.sourceType = 'script';
	    }
	    return Script;
	}());
	exports.Script = Script;
	var SequenceExpression = (function () {
	    function SequenceExpression(expressions) {
	        this.type = syntax_1.Syntax.SequenceExpression;
	        this.expressions = expressions;
	    }
	    return SequenceExpression;
	}());
	exports.SequenceExpression = SequenceExpression;
	var SpreadElement = (function () {
	    function SpreadElement(argument) {
	        this.type = syntax_1.Syntax.SpreadElement;
	        this.argument = argument;
	    }
	    return SpreadElement;
	}());
	exports.SpreadElement = SpreadElement;
	var StaticMemberExpression = (function () {
	    function StaticMemberExpression(object, property) {
	        this.type = syntax_1.Syntax.MemberExpression;
	        this.computed = false;
	        this.object = object;
	        this.property = property;
	    }
	    return StaticMemberExpression;
	}());
	exports.StaticMemberExpression = StaticMemberExpression;
	var Super = (function () {
	    function Super() {
	        this.type = syntax_1.Syntax.Super;
	    }
	    return Super;
	}());
	exports.Super = Super;
	var SwitchCase = (function () {
	    function SwitchCase(test, consequent) {
	        this.type = syntax_1.Syntax.SwitchCase;
	        this.test = test;
	        this.consequent = consequent;
	    }
	    return SwitchCase;
	}());
	exports.SwitchCase = SwitchCase;
	var SwitchStatement = (function () {
	    function SwitchStatement(discriminant, cases) {
	        this.type = syntax_1.Syntax.SwitchStatement;
	        this.discriminant = discriminant;
	        this.cases = cases;
	    }
	    return SwitchStatement;
	}());
	exports.SwitchStatement = SwitchStatement;
	var TaggedTemplateExpression = (function () {
	    function TaggedTemplateExpression(tag, quasi) {
	        this.type = syntax_1.Syntax.TaggedTemplateExpression;
	        this.tag = tag;
	        this.quasi = quasi;
	    }
	    return TaggedTemplateExpression;
	}());
	exports.TaggedTemplateExpression = TaggedTemplateExpression;
	var TemplateElement = (function () {
	    function TemplateElement(value, tail) {
	        this.type = syntax_1.Syntax.TemplateElement;
	        this.value = value;
	        this.tail = tail;
	    }
	    return TemplateElement;
	}());
	exports.TemplateElement = TemplateElement;
	var TemplateLiteral = (function () {
	    function TemplateLiteral(quasis, expressions) {
	        this.type = syntax_1.Syntax.TemplateLiteral;
	        this.quasis = quasis;
	        this.expressions = expressions;
	    }
	    return TemplateLiteral;
	}());
	exports.TemplateLiteral = TemplateLiteral;
	var ThisExpression = (function () {
	    function ThisExpression() {
	        this.type = syntax_1.Syntax.ThisExpression;
	    }
	    return ThisExpression;
	}());
	exports.ThisExpression = ThisExpression;
	var ThrowStatement = (function () {
	    function ThrowStatement(argument) {
	       /*
 * WARNING: do not edit!
 * Generated by Makefile from include/openssl/ssl.h.in
 *
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
 * Copyright 2005 Nokia. All rights reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_SSL_H
# define OPENSSL_SSL_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_SSL_H
# endif

# include <openssl/e_os2.h>
# include <openssl/opensslconf.h>
# include <openssl/comp.h>
# include <openssl/bio.h>
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  include <openssl/x509.h>
#  include <openssl/crypto.h>
#  include <openssl/buffer.h>
# endif
# include <openssl/lhash.h>
# include <openssl/pem.h>
# include <openssl/hmac.h>
# include <openssl/async.h>

# include <openssl/safestack.h>
# include <openssl/symhacks.h>
# include <openssl/ct.h>
# include <openssl/sslerr.h>
# include <openssl/prov_ssl.h>

#ifdef  __cplusplus
extern "C" {
#endif

/* OpenSSL version number for ASN.1 encoding of the session information */
/*-
 * Version 0 - initial version
 * Version 1 - added the optional peer certificate
 */
# define SSL_SESSION_ASN1_VERSION 0x0001

# define SSL_MAX_SSL_SESSION_ID_LENGTH           32
# define SSL_MAX_SID_CTX_LENGTH                  32

# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES     (512/8)
# define SSL_MAX_KEY_ARG_LENGTH                  8
/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */

/* The maximum number of encrypt/decrypt pipelines we can support */
# define SSL_MAX_PIPELINES  32

/* text strings for the ciphers */

/* These are used to specify which ciphers to use and not to use */

# define SSL_TXT_LOW             "LOW"
# define SSL_TXT_MEDIUM          "MEDIUM"
# define SSL_TXT_HIGH            "HIGH"
# define SSL_TXT_FIPS            "FIPS"

# define SSL_TXT_aNULL           "aNULL"
# define SSL_TXT_eNULL           "eNULL"
# define SSL_TXT_NULL            "NULL"

# define SSL_TXT_kRSA            "kRSA"
# define SSL_TXT_kDHr            "kDHr"/* this cipher class has been removed */
# define SSL_TXT_kDHd            "kDHd"/* this cipher class has been removed */
# define SSL_TXT_kDH             "kDH"/* this cipher class has been removed */
# define SSL_TXT_kEDH            "kEDH"/* alias for kDHE */
# define SSL_TXT_kDHE            "kDHE"
# define SSL_TXT_kECDHr          "kECDHr"/* this cipher class has been removed */
# define SSL_TXT_kECDHe          "kECDHe"/* this cipher class has been removed */
# define SSL_TXT_kECDH           "kECDH"/* this cipher class has been removed */
# define SSL_TXT_kEECDH          "kEECDH"/* alias for kECDHE */
# define SSL_TXT_kECDHE          "kECDHE"
# define SSL_TXT_kPSK            "kPSK"
# define SSL_TXT_kRSAPSK         "kRSAPSK"
# define SSL_TXT_kECDHEPSK       "kECDHEPSK"
# define SSL_TXT_kDHEPSK         "kDHEPSK"
# define SSL_TXT_kGOST           "kGOST"
# define SSL_TXT_kGOST18         "kGOST18"
# define SSL_TXT_kSRP            "kSRP"

# define SSL_TXT_aRSA            "aRSA"
# define SSL_TXT_aDSS            "aDSS"
# define SSL_TXT_aDH             "aDH"/* this cipher class has been removed */
# define SSL_TXT_aECDH           "aECDH"/* this cipher class has been removed */
# define SSL_TXT_aECDSA          "aECDSA"
# define SSL_TXT_aPSK            "aPSK"
# define SSL_TXT_aGOST94         "aGOST94"
# define SSL_TXT_aGOST01         "aGOST01"
# define SSL_TXT_aGOST12         "aGOST12"
# define SSL_TXT_aGOST           "aGOST"
# define SSL_TXT_aSRP            "aSRP"

# define SSL_TXT_DSS             "DSS"
# define SSL_TXT_DH              "DH"
# define SSL_TXT_DHE             "DHE"/* same as "kDHE:-ADH" */
# define SSL_TXT_EDH             "EDH"/* alias for DHE */
# define SSL_TXT_ADH             "ADH"
# define SSL_TXT_RSA             "RSA"
# define SSL_TXT_ECDH            "ECDH"
# define SSL_TXT_EECDH           "EECDH"/* alias for ECDHE" */
# define SSL_TXT_ECDHE           "ECDHE"/* same as "kECDHE:-AECDH" */
# define SSL_TXT_AECDH           "AECDH"
# define SSL_TXT_ECDSA           "ECDSA"
# define SSL_TXT_PSK             "PSK"
# define SSL_TXT_SRP             "SRP"

# define SSL_TXT_DES             "DES"
# define SSL_TXT_3DES            "3DES"
# define SSL_TXT_RC4             "RC4"
# define SSL_TXT_RC2             "RC2"
# define SSL_TXT_IDEA            "IDEA"
# define SSL_TXT_SEED            "SEED"
# define SSL_TXT_AES128          "AES128"
# define SSL_TXT_AES256          "AES256"
# define SSL_TXT_AES             "AES"
# define SSL_TXT_AES_GCM         "AESGCM"
# define SSL_TXT_AES_CCM         "AESCCM"
# define SSL_TXT_AES_CCM_8       "AESCCM8"
# define SSL_TXT_CAMELLIA128     "CAMELLIA128"
# define SSL_TXT_CAMELLIA256     "CAMELLIA256"
# define SSL_TXT_CAMELLIA        "CAMELLIA"
# define SSL_TXT_CHACHA20        "CHACHA20"
# define SSL_TXT_GOST            "GOST89"
# define SSL_TXT_ARIA            "ARIA"
# define SSL_TXT_ARIA_GCM        "ARIAGCM"
# define SSL_TXT_ARIA128         "ARIA128"
# define SSL_TXT_ARIA256         "ARIA256"
# define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912"
# define SSL_TXT_CBC             "CBC"

# define SSL_TXT_MD5             "MD5"
# define SSL_TXT_SHA1            "SHA1"
# define SSL_TXT_SHA             "SHA"/* same as "SHA1" */
# define SSL_TXT_GOST94          "GOST94"
# define SSL_TXT_GOST89MAC       "GOST89MAC"
# define SSL_TXT_GOST12          "GOST12"
# define SSL_TXT_GOST89MAC12     "GOST89MAC12"
# define SSL_TXT_SHA256          "SHA256"
# define SSL_TXT_SHA384          "SHA384"

# define SSL_TXT_SSLV3           "SSLv3"
# define SSL_TXT_TLSV1           "TLSv1"
# define SSL_TXT_TLSV1_1         "TLSv1.1"
# define SSL_TXT_TLSV1_2         "TLSv1.2"

# define SSL_TXT_ALL             "ALL"

/*-
 * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
 * ciphers normally not being used.
 * Example: "RC4" will activate all ciphers using RC4 including ciphers
 * without authentication, which would normally disabled by DEFAULT (due
 * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT"
 * will make sure that it is also disabled in the specific selection.
 * COMPLEMENTOF* identifiers are portable between version, as adjustments
 * to the default cipher setup will also be included here.
 *
 * COMPLEMENTOFDEFAULT does not experience the same special treatment that
 * DEFAULT gets, as only selection is being done and no sorting as needed
 * for DEFAULT.
 */
# define SSL_TXT_CMPALL          "COMPLEMENTOFALL"
# define SSL_TXT_CMPDEF          "COMPLEMENTOFDEFAULT"

/*
 * The following cipher list is used by default. It also is substituted when
 * an application-defined cipher list string starts with 'DEFAULT'.
 * This applies to ciphersuites for TLSv1.2 and below.
 * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list()
 * Update both macro and function simultaneously
 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL"
/*
 * This is the default set of TLSv1.3 ciphersuites
 * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites()
 * Update both macro and function simultaneously
 */
#  define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \
                                   "TLS_CHACHA20_POLY1305_SHA256:" \
                                   "TLS_AES_128_GCM_SHA256"
# endif
/*
 * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always
 * starts with a reasonable order, and all we have to do for DEFAULT is
 * throwing out anonymous and unencrypted ciphersuites! (The latter are not
 * actually enabled by ALL, but "ALL:RSA" would enable some of them.)
 */

/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
# define SSL_SENT_SHUTDOWN       1
# define SSL_RECEIVED_SHUTDOWN   2

#ifdef __cplusplus
}
#endif

#ifdef  __cplusplus
extern "C" {
#endif

# define SSL_FILETYPE_ASN1       X509_FILETYPE_ASN1
# define SSL_FILETYPE_PEM        X509_FILETYPE_PEM

/*
 * This is needed to stop compilers complaining about the 'struct ssl_st *'
 * function parameters used to prototype callbacks in SSL_CTX.
 */
typedef struct ssl_st *ssl_crock_st;
typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
typedef struct ssl_method_st SSL_METHOD;
typedef struct ssl_cipher_st SSL_CIPHER;
typedef struct ssl_session_st SSL_SESSION;
typedef struct tls_sigalgs_st TLS_SIGALGS;
typedef struct ssl_conf_ctx_st SSL_CONF_CTX;
typedef struct ssl_comp_st SSL_COMP;

STACK_OF(SSL_CIPHER);
STACK_OF(SSL_COMP);

/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/
typedef struct srtp_protection_profile_st {
    const char *name;
    unsigned long id;
} SRTP_PROTECTION_PROFILE;
SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE)
#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx)))
#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))
#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null())
#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n)))
#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n))
#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i)))
#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))
#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx))
#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum)
#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)))
#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))



typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data,
                                            int len, void *arg);
typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len,
                                        STACK_OF(SSL_CIPHER) *peer_ciphers,
                                        const SSL_CIPHER **cipher, void *arg);

/* Extension context codes */
/* This extension is only allowed in TLS */
#define SSL_EXT_TLS_ONLY                        0x0001
/* This extension is only allowed in DTLS */
#define SSL_EXT_DTLS_ONLY                       0x0002
/* Some extensions may be allowed in DTLS but we don't implement them for it */
#define SSL_EXT_TLS_IMPLEMENTATION_ONLY         0x0004
/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */
#define SSL_EXT_SSL3_ALLOWED                    0x0008
/* Extension is only defined for TLS1.2 and below */
#define SSL_EXT_TLS1_2_AND_BELOW_ONLY           0x0010
/* Extension is only defined for TLS1.3 and above */
#define SSL_EXT_TLS1_3_ONLY                     0x0020
/* Ignore this extension during parsing if we are resuming */
#define SSL_EXT_IGNORE_ON_RESUMPTION            0x0040
#define SSL_EXT_CLIENT_HELLO                    0x0080
/* Really means TLS1.2 or below */
#define SSL_EXT_TLS1_2_SERVER_HELLO             0x0100
#define SSL_EXT_TLS1_3_SERVER_HELLO             0x0200
#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS     0x0400
#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST      0x0800
#define SSL_EXT_TLS1_3_CERTIFICATE              0x1000
#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET       0x2000
#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST      0x4000

/* Typedefs for handling custom extensions */

typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
                                 const unsigned char **out, size_t *outlen,
                                 int *al, void *add_arg);

typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
                                   const unsigned char *out, void *add_arg);

typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
                                   const unsigned char *in, size_t inlen,
                                   int *al, void *parse_arg);


typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type,
                                        unsigned int context,
                                        const unsigned char **out,
                                        size_t *outlen, X509 *x,
                                        size_t chainidx,
                                        int *al, void *add_arg);

typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type,
                                          unsigned int context,
                                          const unsigned char *out,
                                          void *add_arg);

typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type,
                                          unsigned int context,
                                          const unsigned char *in,
                                          size_t inlen, X509 *x,
                                          size_t chainidx,
                                          int *al, void *parse_arg);

/* Typedef for verification callback */
typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx);

/* Typedef for SSL async callback */
typedef int (*SSL_async_callback_fn)(SSL *s, void *arg);

#define SSL_OP_BIT(n)  ((uint64_t)1 << (uint64_t)n)

/*
 * SSL/TLS connection options.
 */
    /* Disable Extended master secret */
# define SSL_OP_NO_EXTENDED_MASTER_SECRET                SSL_OP_BIT(0)
    /* Cleanse plaintext copies of data delivered to the application */
# define SSL_OP_CLEANSE_PLAINTEXT                        SSL_OP_BIT(1)
    /* Allow initial connection to servers that don't support RI */
# define SSL_OP_LEGACY_SERVER_CONNECT                    SSL_OP_BIT(2)
    /* Enable support for Kernel TLS */
# define SSL_OP_ENABLE_KTLS                              SSL_OP_BIT(3)
# define SSL_OP_TLSEXT_PADDING                           SSL_OP_BIT(4)
# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG                   SSL_OP_BIT(6)
# define SSL_OP_IGNORE_UNEXPECTED_EOF                    SSL_OP_BIT(7)
# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION               SSL_OP_BIT(8)
# define SSL_OP_DISABLE_TLSEXT_CA_NAMES                  SSL_OP_BIT(9)
    /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */
# define SSL_OP_ALLOW_NO_DHE_KEX                         SSL_OP_BIT(10)
    /*
     * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
     * in OpenSSL 0.9.6d.  Usually (depending on the application protocol)
     * the workaround is not needed.  Unfortunately some broken SSL/TLS
     * implementations cannot handle it at all, which is why we include it
     * in SSL_OP_ALL. Added in 0.9.6e
     */
# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS              SSL_OP_BIT(11)
    /* DTLS options */
# define SSL_OP_NO_QUERY_MTU                             SSL_OP_BIT(12)
    /* Turn on Cookie Exchange (on relevant for servers) */
# define SSL_OP_COOKIE_EXCHANGE                          SSL_OP_BIT(13)
    /* Don't use RFC4507 ticket extension */
# define SSL_OP_NO_TICKET                                SSL_OP_BIT(14)
# ifndef OPENSSL_NO_DTLS1_METHOD
    /*
     * Use Cisco's version identifier of DTLS_BAD_VER
     * (only with deprecated DTLSv1_client_method())
     */
#  define SSL_OP_CISCO_ANYCONNECT                        SSL_OP_BIT(15)
# endif
    /* As server, disallow session resumption on renegotiation */
# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION   SSL_OP_BIT(16)
    /* Don't use compression even if supported */
# define SSL_OP_NO_COMPRESSION                           SSL_OP_BIT(17)
    /* Permit unsafe legacy renegotiation */
# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION        SSL_OP_BIT(18)
    /* Disable encrypt-then-mac */
# define SSL_OP_NO_ENCRYPT_THEN_MAC                      SSL_OP_BIT(19)
    /*
     * Enable TLSv1.3 Compatibility mode. This is on by default. A future
     * version of OpenSSL may have this disabled by default.
     */
# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT                  SSL_OP_BIT(20)
    /*
     * Prioritize Chacha20Poly1305 when client does.
     * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE
     */
# define SSL_OP_PRIORITIZE_CHACHA                        SSL_OP_BIT(21)
    /*
     * Set on servers to choose the cipher according to server's preferences.
     */
# define SSL_OP_CIPHER_SERVER_PREFERENCE                 SSL_OP_BIT(22)
    /*
     * If set, a server will allow a client to issue a SSLv3.0 version
     * number as latest version supported in the premaster secret, even when
     * TLSv1.0 (version 3.1) was announced in the client hello. Normally
     * this is forbidden to prevent version rollback attacks.
     */
# define SSL_OP_TLS_ROLLBACK_BUG                         SSL_OP_BIT(23)
    /*
     * Switches off automatic TLSv1.3 anti-replay protection for early data.
     * This is a server-side option only (no effect on the client).
     */
# define SSL_OP_NO_ANTI_REPLAY                           SSL_OP_BIT(24)
# define SSL_OP_NO_SSLv3                                 SSL_OP_BIT(25)
# define SSL_OP_NO_TLSv1                                 SSL_OP_BIT(26)
# define SSL_OP_NO_TLSv1_2                               SSL_OP_BIT(27)
# define SSL_OP_NO_TLSv1_1                               SSL_OP_BIT(28)
# define SSL_OP_NO_TLSv1_3                               SSL_OP_BIT(29)
# define SSL_OP_NO_DTLSv1                                SSL_OP_BIT(26)
# define SSL_OP_NO_DTLSv1_2                              SSL_OP_BIT(27)
    /* Disallow all renegotiation */
# define SSL_OP_NO_RENEGOTIATION                         SSL_OP_BIT(30)
    /*
     * Make server add server-hello extension from early version of
     * cryptopro draft, when GOST ciphersuite is negotiated. Required for
     * interoperability with CryptoPro CSP 3.x
     */
# define SSL_OP_CRYPTOPRO_TLSEXT_BUG                     SSL_OP_BIT(31)

/*
 * Option "collections."
 */
# define SSL_OP_NO_SSL_MASK \
        ( SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \
          | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 )
# define SSL_OP_NO_DTLS_MASK \
        ( SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2 )

/* Various bug workarounds that should be rather harmless. */
# define SSL_OP_ALL \
        ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \
          | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG )

/*
 * OBSOLETE OPTIONS retained for compatibility
 */

# define SSL_OP_MICROSOFT_SESS_ID_BUG                    0x0
# define SSL_OP_NETSCAPE_CHALLENGE_BUG                   0x0
# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG         0x0
# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG              0x0
# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER               0x0
# define SSL_OP_MSIE_SSLV2_RSA_PADDING                   0x0
# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG                 0x0
# define SSL_OP_TLS_D5_BUG                               0x0
# define SSL_OP_TLS_BLOCK_PADDING_BUG                    0x0
# define SSL_OP_SINGLE_ECDH_USE                          0x0
# define SSL_OP_SINGLE_DH_USE                            0x0
# define SSL_OP_EPHEMERAL_RSA                            0x0
# define SSL_OP_NO_SSLv2                                 0x0
# define SSL_OP_PKCS1_CHECK_1                            0x0
# define SSL_OP_PKCS1_CHECK_2                            0x0
# define SSL_OP_NETSCAPE_CA_DN_BUG                       0x0
# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG          0x0

/*
 * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
 * when just a single record has been written):
 */
# define SSL_MODE_ENABLE_PARTIAL_WRITE       0x00000001U
/*
 * Make it possible to retry SSL_write() with changed buffer location (buffer
 * contents must stay the same!); this is not the default to avoid the
 * misconception that non-blocking SSL_write() behaves like non-blocking
 * write():
 */
# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U
/*
 * Never bother the application with retries if the transport is blocking:
 */
# define SSL_MODE_AUTO_RETRY 0x00000004U
/* Don't attempt to automatically build certificate chain */
# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U
/*
 * Save RAM by releasing read and write buffers when they're empty. (SSL3 and
 * TLS only.) Released buffers are freed.
 */
# define SSL_MODE_RELEASE_BUFFERS 0x00000010U
/*
 * Send the current time in the Random fields of the ClientHello and
 * ServerHello records for compatibility with hypothetical implementations
 * that require it.
 */
# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U
# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U
/*
 * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications
 * that reconnect with a downgraded protocol version; see
 * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your
 * application attempts a normal handshake. Only use this in explicit
 * fallback retries, following the guidance in
 * draft-ietf-tls-downgrade-scsv-00.
 */
# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U
/*
 * Support Asynchronous operation
 */
# define SSL_MODE_ASYNC 0x00000100U

/*
 * When using DTLS/SCTP, include the terminating zero in the label
 * used for computing the endpoint-pair shared secret. Required for
 * interoperability with implementations having this bug like these
 * older version of OpenSSL:
 * - OpenSSL 1.0.0 series
 * - OpenSSL 1.0.1 series
 * - OpenSSL 1.0.2 series
 * - OpenSSL 1.1.0 series
 * - OpenSSL 1.1.1 and 1.1.1a
 */
# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U

/* Cert related flags */
/*
 * Many implementations ignore some aspects of the TLS standards such as
 * enforcing certificate chain algorithms. When this is set we enforce them.
 */
# define SSL_CERT_FLAG_TLS_STRICT                0x00000001U

/* Suite B modes, takes same values as certificate verify flags */
# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY       0x10000
/* Suite B 192 bit only mode */
# define SSL_CERT_FLAG_SUITEB_192_LOS            0x20000
/* Suite B 128 bit mode allowing 192 bit algorithms */
# define SSL_CERT_FLAG_SUITEB_128_LOS            0x30000

/* Perform all sorts of protocol violations for testing purposes */
# define SSL_CERT_FLAG_BROKEN_PROTOCOL           0x10000000

/* Flags for building certificate chains */
/* Treat any existing certificates as untrusted CAs */
# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED          0x1
/* Don't include root CA in chain */
# define SSL_BUILD_CHAIN_FLAG_NO_ROOT            0x2
/* Just check certificates already there */
# define SSL_BUILD_CHAIN_FLAG_CHECK              0x4
/* Ignore verification errors */
# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR       0x8
/* Clear verification errors from queue */
# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR        0x10

/* Flags returned by SSL_check_chain */
/* Certificate can be used with this session */
# define CERT_PKEY_VALID         0x1
/* Certificate can also be used for signing */
# define CERT_PKEY_SIGN          0x2
/* EE certificate signing algorithm OK */
# define CERT_PKEY_EE_SIGNATURE  0x10
/* CA signature algorithms OK */
# define CERT_PKEY_CA_SIGNATURE  0x20
/* EE certificate parameters OK */
# define CERT_PKEY_EE_PARAM      0x40
/* CA certificate parameters OK */
# define CERT_PKEY_CA_PARAM      0x80
/* Signing explicitly allowed as opposed to SHA1 fallback */
# define CERT_PKEY_EXPLICIT_SIGN 0x100
/* Client CA issuer names match (always set for server cert) */
# define CERT_PKEY_ISSUER_NAME   0x200
/* Cert type matches client types (always set for server cert) */
# define CERT_PKEY_CERT_TYPE     0x400
/* Cert chain suitable to Suite B */
# define CERT_PKEY_SUITEB        0x800

# define SSL_CONF_FLAG_CMDLINE           0x1
# define SSL_CONF_FLAG_FILE              0x2
# define SSL_CONF_FLAG_CLIENT            0x4
# define SSL_CONF_FLAG_SERVER            0x8
# define SSL_CONF_FLAG_SHOW_ERRORS       0x10
# define SSL_CONF_FLAG_CERTIFICATE       0x20
# define SSL_CONF_FLAG_REQUIRE_PRIVATE   0x40
/* Configuration value types */
# define SSL_CONF_TYPE_UNKNOWN           0x0
# define SSL_CONF_TYPE_STRING            0x1
# define SSL_CONF_TYPE_FILE              0x2
# define SSL_CONF_TYPE_DIR               0x3
# define SSL_CONF_TYPE_NONE              0x4
# define SSL_CONF_TYPE_STORE             0x5

/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */
# define SSL_COOKIE_LENGTH                       4096

/*
 * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they
 * cannot be used to clear bits.
 */

uint64_t SSL_CTX_get_options(const SSL_CTX *ctx);
uint64_t SSL_get_options(const SSL *s);
uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op);
uint64_t SSL_clear_options(SSL *s, uint64_t op);
uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op);
uint64_t SSL_set_options(SSL *s, uint64_t op);

# define SSL_CTX_set_mode(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
# define SSL_CTX_clear_mode(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL)
# define SSL_CTX_get_mode(ctx) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)
# define SSL_clear_mode(ssl,op) \
        SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL)
# define SSL_set_mode(ssl,op) \
        SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)
# define SSL_get_mode(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)
# define SSL_set_mtu(ssl, mtu) \
        SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)
# define DTLS_set_link_mtu(ssl, mtu) \
        SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL)
# define DTLS_get_link_min_mtu(ssl) \
        SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL)

# define SSL_get_secure_renegotiation_support(ssl) \
        SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)

# define SSL_CTX_set_cert_flags(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL)
# define SSL_set_cert_flags(s,op) \
        SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL)
# define SSL_CTX_clear_cert_flags(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)
# define SSL_clear_cert_flags(s,op) \
        SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)

void SSL_CTX_set_msg_callback(SSL_CTX *ctx,
                              void (*cb) (int write_p, int version,
                                          int content_type, const void *buf,
                                          size_t len, SSL *ssl, void *arg));
void SSL_set_msg_callback(SSL *ssl,
                          void (*cb) (int write_p, int version,
                                      int content_type, const void *buf,
                                      size_t len, SSL *ssl, void *arg));
# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))

# define SSL_get_extms_support(s) \
        SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL)

# ifndef OPENSSL_NO_SRP
/* see tls_srp.c */
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s,
                                                                    int *ad);
OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s);
#  endif
# endif

/* 100k max cert list */
# define SSL_MAX_CERT_LIST_DEFAULT (1024*100)

# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT      (1024*20)

/*
 * This callback type is used inside SSL_CTX, SSL, and in the functions that
 * set them. It is used to override the generation of SSL/TLS session IDs in
 * a server. Return value should be zero on an error, non-zero to proceed.
 * Also, callbacks should themselves check if the id they generate is unique
 * otherwise the SSL handshake will fail with an error - callbacks can do
 * this using the 'ssl' value they're passed by;
 * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in
 * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32
 * bytes. The callback can alter this length to be less if desired. It is
 * also an error for the callback to set the size to zero.
 */
typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id,
                               unsigned int *id_len);

# define SSL_SESS_CACHE_OFF                      0x0000
# define SSL_SESS_CACHE_CLIENT                   0x0001
# define SSL_SESS_CACHE_SERVER                   0x0002
# define SSL_SESS_CACHE_BOTH     (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
# define SSL_SESS_CACHE_NO_AUTO_CLEAR            0x0080
/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */
# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP       0x0100
# define SSL_SESS_CACHE_NO_INTERNAL_STORE        0x0200
# define SSL_SESS_CACHE_NO_INTERNAL \
        (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)
# define SSL_SESS_CACHE_UPDATE_TIME              0x0400

LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx);
# define SSL_CTX_sess_number(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
# define SSL_CTX_sess_connect(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
# define SSL_CTX_sess_connect_good(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
# define SSL_CTX_sess_connect_renegotiate(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
# define SSL_CTX_sess_accept(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
# define SSL_CTX_sess_accept_renegotiate(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
# define SSL_CTX_sess_accept_good(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
# define SSL_CTX_sess_hits(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
# define SSL_CTX_sess_cb_hits(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
# define SSL_CTX_sess_misses(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
# define SSL_CTX_sess_timeouts(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
# define SSL_CTX_sess_cache_full(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)

void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx,
                             int (*new_session_cb) (struct ssl_st *ssl,
                                                    SSL_SESSION *sess));
int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
                                              SSL_SESSION *sess);
void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
                                void (*remove_session_cb) (struct ssl_ctx_st
                                                           *ctx,
                                                           SSL_SESSION *sess));
void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx,
                                                  SSL_SESSION *sess);
void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,
                             SSL_SESSION *(*get_session_cb) (struct ssl_st
                                                             *ssl,
                                                             const unsigned char
                                                             *data, int len,
                                                             int *copy));
SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
                                                       const unsigned char *data,
                                                       int len, int *copy);
void SSL_CTX_set_info_callback(SSL_CTX *ctx,
                               void (*cb) (const SSL *ssl, int type, int val));
void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type,
                                                 int val);
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
                                int (*client_cert_cb) (SSL *ssl, X509 **x509,
                                                       EVP_PKEY **pkey));
int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509,
                                                 EVP_PKEY **pkey);
# ifndef OPENSSL_NO_ENGINE
__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e);
# endif
void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx,
                                    int (*app_gen_cookie_cb) (SSL *ssl,
                                                              unsigned char
                                                              *cookie,
                                                              unsigned int
                                                              *cookie_len));
void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
                                  int (*app_verify_cookie_cb) (SSL *ssl,
                                                               const unsigned
                                                               char *cookie,
                                                               unsigned int
                                                               cookie_len));

void SSL_CTX_set_stateless_cookie_generate_cb(
    SSL_CTX *ctx,
    int (*gen_stateless_cookie_cb) (SSL *ssl,
                                    unsigned char *cookie,
                                    size_t *cookie_len));
void SSL_CTX_set_stateless_cookie_verify_cb(
    SSL_CTX *ctx,
    int (*verify_stateless_cookie_cb) (SSL *ssl,
                                       const unsigned char *cookie,
                                       size_t cookie_len));
# ifndef OPENSSL_NO_NEXTPROTONEG

typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl,
                                              const unsigned char **out,
                                              unsigned int *outlen,
                                              void *arg);
void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s,
                                           SSL_CTX_npn_advertised_cb_func cb,
                                           void *arg);
#  define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb

typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s,
                                          unsigned char **out,
                                          unsigned char *outlen,
                                          const unsigned char *in,
                                          unsigned int inlen,
                                          void *arg);
void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
                                      SSL_CTX_npn_select_cb_func cb,
                                      void *arg);
#  define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb

void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
                                    unsigned *len);
#  define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated
# endif

__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
                                 const unsigned char *in, unsigned int inlen,
                                 const unsigned char *client,
                                 unsigned int client_len);

# define OPENSSL_NPN_UNSUPPORTED 0
# define OPENSSL_NPN_NEGOTIATED  1
# define OPENSSL_NPN_NO_OVERLAP  2

__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos,
                                   unsigned int protos_len);
__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
                               unsigned int protos_len);
typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl,
                                           const unsigned char **out,
                                           unsigned char *outlen,
                                           const unsigned char *in,
                                           unsigned int inlen,
                                           void *arg);
void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
                                SSL_CTX_alpn_select_cb_func cb,
                                void *arg);
void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
                            unsigned int *len);

# ifndef OPENSSL_NO_PSK
/*
 * the maximum length of the buffer given to callbacks containing the
 * resulting identity/psk
 */
#  define PSK_MAX_IDENTITY_LEN 256
#  define PSK_MAX_PSK_LEN 512
typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl,
                                               const char *hint,
                                               char *identity,
                                               unsigned int max_identity_len,
                                               unsigned char *psk,
                                               unsigned int max_psk_len);
void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb);
void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb);

typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl,
                                               const char *identity,
                                               unsigned char *psk,
                                               unsigned int max_psk_len);
void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb);
void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb);

__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint);
__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint);
const char *SSL_get_psk_identity_hint(const SSL *s);
const char *SSL_get_psk_identity(const SSL *s);
# endif

typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl,
                                            const unsigned char *identity,
                                            size_t identity_len,
                                            SSL_SESSION **sess);
typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md,
                                           const unsigned char **id,
                                           size_t *idlen,
                                           SSL_SESSION **sess);

void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb);
void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx,
                                           SSL_psk_find_session_cb_func cb);
void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb);
void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx,
                                          SSL_psk_use_session_cb_func cb);

/* Register callbacks to handle custom TLS Extensions for client or server. */

__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx,
                                         unsigned int ext_type);

__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx,
                                         unsigned int ext_type,
                                         custom_ext_add_cb add_cb,
                                         custom_ext_free_cb free_cb,
                                         void *add_arg,
                                         custom_ext_parse_cb parse_cb,
                                         void *parse_arg);

__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx,
                                         unsigned int ext_type,
                                         custom_ext_add_cb add_cb,
                                         custom_ext_free_cb free_cb,
                                         void *add_arg,
                                         custom_ext_parse_cb parse_cb,
                                         void *parse_arg);

__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                                  unsigned int context,
                                  SSL_custom_ext_add_cb_ex add_cb,
                                  SSL_custom_ext_free_cb_ex free_cb,
                                  void *add_arg,
                                  SSL_custom_ext_parse_cb_ex parse_cb,
                                  void *parse_arg);

__owur int SSL_extension_supported(unsigned int ext_type);

# define SSL_NOTHING            1
# define SSL_WRITING            2
# define SSL_READING            3
# define SSL_X509_LOOKUP        4
# define SSL_ASYNC_PAUSED       5
# define SSL_ASYNC_NO_JOBS      6
# define SSL_CLIENT_HELLO_CB    7
# define SSL_RETRY_VERIFY       8

/* These will only be used when doing non-blocking IO */
# define SSL_want_nothing(s)         (SSL_want(s) == SSL_NOTHING)
# define SSL_want_read(s)            (SSL_want(s) == SSL_READING)
# define SSL_want_write(s)           (SSL_want(s) == SSL_WRITING)
# define SSL_want_x509_lookup(s)     (SSL_want(s) == SSL_X509_LOOKUP)
# define SSL_want_retry_verify(s)    (SSL_want(s) == SSL_RETRY_VERIFY)
# define SSL_want_async(s)           (SSL_want(s) == SSL_ASYNC_PAUSED)
# define SSL_want_async_job(s)       (SSL_want(s) == SSL_ASYNC_NO_JOBS)
# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB)

# define SSL_MAC_FLAG_READ_MAC_STREAM 1
# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2
# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4
# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8

/*
 * A callback for logging out TLS key material. This callback should log out
 * |line| followed by a newline.
 */
typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line);

/*
 * SSL_CTX_set_keylog_callback configures a callback to log key material. This
 * is intended for debugging use with tools like Wireshark. The cb function
 * should log line followed by a newline.
 */
void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb);

/*
 * SSL_CTX_get_keylog_callback returns the callback configured by
 * SSL_CTX_set_keylog_callback.
 */
SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx);

int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data);
uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx);
int SSL_set_max_early_data(SSL *s, uint32_t max_early_data);
uint32_t SSL_get_max_early_data(const SSL *s);
int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data);
uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx);
int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data);
uint32_t SSL_get_recv_max_early_data(const SSL *s);

#ifdef __cplusplus
}
#endif

# include <openssl/ssl2.h>
# include <openssl/ssl3.h>
# include <openssl/tls1.h>      /* This is mostly sslv3 with a few tweaks */
# include <openssl/dtls1.h>     /* Datagram TLS */
# include <openssl/srtp.h>      /* Support for the use_srtp extension */

#ifdef  __cplusplus
extern "C" {
#endif

/*
 * These need to be after the above set of includes due to a compiler bug
 * in VisualStudio 2015
 */
SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER)
#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx)))
#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp)))
#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null())
#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n)))
#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n))
#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i)))
#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)))
#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc))
#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx))
#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr)))
#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum)
#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc)))
#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP)
#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx)))
#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp)))
#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null())
#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n)))
#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n))
#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i)))
#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)))
#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc))
#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx))
#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr)))
#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum)
#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc)))
#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp)))


/* compatibility */
# define SSL_set_app_data(s,arg)         (SSL_set_ex_data(s,0,(char *)(arg)))
# define SSL_get_app_data(s)             (SSL_get_ex_data(s,0))
# define SSL_SESSION_set_app_data(s,a)   (SSL_SESSION_set_ex_data(s,0, \
                                                                  (char *)(a)))
# define SSL_SESSION_get_app_data(s)     (SSL_SESSION_get_ex_data(s,0))
# define SSL_CTX_get_app_data(ctx)       (SSL_CTX_get_ex_data(ctx,0))
# define SSL_CTX_set_app_data(ctx,arg)   (SSL_CTX_set_ex_data(ctx,0, \
                                                              (char *)(arg)))
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug);
# endif

/* TLSv1.3 KeyUpdate message types */
/* -1 used so that this is an invalid value for the on-the-wire protocol */
#define SSL_KEY_UPDATE_NONE             -1
/* Values as defined for the on-the-wire protocol */
#define SSL_KEY_UPDATE_NOT_REQUESTED     0
#define SSL_KEY_UPDATE_REQUESTED         1

/*
 * The valid handshake states (one for each type message sent and one for each
 * type of message received). There are also two "special" states:
 * TLS = TLS or DTLS state
 * DTLS = DTLS specific state
 * CR/SR = Client Read/Server Read
 * CW/SW = Client Write/Server Write
 *
 * The "special" states are:
 * TLS_ST_BEFORE = No handshake has been initiated yet
 * TLS_ST_OK = A handshake has been successfully completed
 */
typedef enum {
    TLS_ST_BEFORE,
    TLS_ST_OK,
    DTLS_ST_CR_HELLO_VERIFY_REQUEST,
    TLS_ST_CR_SRVR_HELLO,
    TLS_ST_CR_CERT,
    TLS_ST_CR_CERT_STATUS,
    TLS_ST_CR_KEY_EXCH,
    TLS_ST_CR_CERT_REQ,
    TLS_ST_CR_SRVR_DONE,
    TLS_ST_CR_SESSION_TICKET,
    TLS_ST_CR_CHANGE,
    TLS_ST_CR_FINISHED,
    TLS_ST_CW_CLNT_HELLO,
    TLS_ST_CW_CERT,
    TLS_ST_CW_KEY_EXCH,
    TLS_ST_CW_CERT_VRFY,
    TLS_ST_CW_CHANGE,
    TLS_ST_CW_NEXT_PROTO,
    TLS_ST_CW_FINISHED,
    TLS_ST_SW_HELLO_REQ,
    TLS_ST_SR_CLNT_HELLO,
    DTLS_ST_SW_HELLO_VERIFY_REQUEST,
    TLS_ST_SW_SRVR_HELLO,
    TLS_ST_SW_CERT,
    TLS_ST_SW_KEY_EXCH,
    TLS_ST_SW_CERT_REQ,
    TLS_ST_SW_SRVR_DONE,
    TLS_ST_SR_CERT,
    TLS_ST_SR_KEY_EXCH,
    TLS_ST_SR_CERT_VRFY,
    TLS_ST_SR_NEXT_PROTO,
    TLS_ST_SR_CHANGE,
    TLS_ST_SR_FINISHED,
    TLS_ST_SW_SESSION_TICKET,
    TLS_ST_SW_CERT_STATUS,
    TLS_ST_SW_CHANGE,
    TLS_ST_SW_FINISHED,
    TLS_ST_SW_ENCRYPTED_EXTENSIONS,
    TLS_ST_CR_ENCRYPTED_EXTENSIONS,
    TLS_ST_CR_CERT_VRFY,
    TLS_ST_SW_CERT_VRFY,
    TLS_ST_CR_HELLO_REQ,
    TLS_ST_SW_KEY_UPDATE,
    TLS_ST_CW_KEY_UPDATE,
    TLS_ST_SR_KEY_UPDATE,
    TLS_ST_CR_KEY_UPDATE,
    TLS_ST_EARLY_DATA,
    TLS_ST_PENDING_EARLY_DATA_END,
    TLS_ST_CW_END_OF_EARLY_DATA,
    TLS_ST_SR_END_OF_EARLY_DATA
} OSSL_HANDSHAKE_STATE;

/*
 * Most of the following state values are no longer used and are defined to be
 * the closest equivalent value in the current state machine code. Not all
 * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT
 * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP,
 * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT.
 */

# define SSL_ST_CONNECT                  0x1000
# define SSL_ST_ACCEPT                   0x2000

# define SSL_ST_MASK                     0x0FFF

# define SSL_CB_LOOP                     0x01
# define SSL_CB_EXIT                     0x02
# define SSL_CB_READ                     0x04
# define SSL_CB_WRITE                    0x08
# define SSL_CB_ALERT                    0x4000/* used in callback */
# define SSL_CB_READ_ALERT               (SSL_CB_ALERT|SSL_CB_READ)
# define SSL_CB_WRITE_ALERT              (SSL_CB_ALERT|SSL_CB_WRITE)
# define SSL_CB_ACCEPT_LOOP              (SSL_ST_ACCEPT|SSL_CB_LOOP)
# define SSL_CB_ACCEPT_EXIT              (SSL_ST_ACCEPT|SSL_CB_EXIT)
# define SSL_CB_CONNECT_LOOP             (SSL_ST_CONNECT|SSL_CB_LOOP)
# define SSL_CB_CONNECT_EXIT             (SSL_ST_CONNECT|SSL_CB_EXIT)
# define SSL_CB_HANDSHAKE_START          0x10
# define SSL_CB_HANDSHAKE_DONE           0x20

/* Is the SSL_connection established? */
# define SSL_in_connect_init(a)          (SSL_in_init(a) && !SSL_is_server(a))
# define SSL_in_accept_init(a)           (SSL_in_init(a) && SSL_is_server(a))
int SSL_in_init(const SSL *s);
int SSL_in_before(const SSL *s);
int SSL_is_init_finished(const SSL *s);

/*
 * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you
 * should not need these
 */
# define SSL_ST_READ_HEADER                      0xF0
# define SSL_ST_READ_BODY                        0xF1
# define SSL_ST_READ_DONE                        0xF2

/*-
 * Obtain latest Finished message
 *   -- that we sent (SSL_get_finished)
 *   -- that we expected from peer (SSL_get_peer_finished).
 * Returns length (0 == no Finished so far), copies up to 'count' bytes.
 */
size_t SSL_get_finished(const SSL *s, void *buf, size_t count);
size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);

/*
 * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are
 * 'ored' with SSL_VERIFY_PEER if they are desired
 */
# define SSL_VERIFY_NONE                 0x00
# define SSL_VERIFY_PEER                 0x01
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
# define SSL_VERIFY_CLIENT_ONCE          0x04
# define SSL_VERIFY_POST_HANDSHAKE       0x08

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define OpenSSL_add_ssl_algorithms()   SSL_library_init()
#  define SSLeay_add_ssl_algorithms()    SSL_library_init()
# endif

/* More backward compatibility */
# define SSL_get_cipher(s) \
                SSL_CIPHER_get_name(SSL_get_current_cipher(s))
# define SSL_get_cipher_bits(s,np) \
                SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
# define SSL_get_cipher_version(s) \
                SSL_CIPHER_get_version(SSL_get_current_cipher(s))
# define SSL_get_cipher_name(s) \
                SSL_CIPHER_get_name(SSL_get_current_cipher(s))
# define SSL_get_time(a)         SSL_SESSION_get_time(a)
# define SSL_set_time(a,b)       SSL_SESSION_set_time((a),(b))
# define SSL_get_timeout(a)      SSL_SESSION_get_timeout(a)
# define SSL_set_timeout(a,b)    SSL_SESSION_set_timeout((a),(b))

# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)
# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id)

DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
# define SSL_AD_REASON_OFFSET            1000/* offset to get SSL_R_... value
                                              * from SSL_AD_... */
/* These alert types are for SSLv3 and TLSv1 */
# define SSL_AD_CLOSE_NOTIFY             SSL3_AD_CLOSE_NOTIFY
/* fatal */
# define SSL_AD_UNEXPECTED_MESSAGE       SSL3_AD_UNEXPECTED_MESSAGE
/* fatal */
# define SSL_AD_BAD_RECORD_MAC           SSL3_AD_BAD_RECORD_MAC
# define SSL_AD_DECRYPTION_FAILED        TLS1_AD_DECRYPTION_FAILED
# define SSL_AD_RECORD_OVERFLOW          TLS1_AD_RECORD_OVERFLOW
/* fatal */
# define SSL_AD_DECOMPRESSION_FAILURE    SSL3_AD_DECOMPRESSION_FAILURE
/* fatal */
# define SSL_AD_HANDSHAKE_FAILURE        SSL3_AD_HANDSHAKE_FAILURE
/* Not for TLS */
# define SSL_AD_NO_CERTIFICATE           SSL3_AD_NO_CERTIFICATE
# define SSL_AD_BAD_CERTIFICATE          SSL3_AD_BAD_CERTIFICATE
# define SSL_AD_UNSUPPORTED_CERTIFICATE  SSL3_AD_UNSUPPORTED_CERTIFICATE
# define SSL_AD_CERTIFICATE_REVOKED      SSL3_AD_CERTIFICATE_REVOKED
# define SSL_AD_CERTIFICATE_EXPIRED      SSL3_AD_CERTIFICATE_EXPIRED
# define SSL_AD_CERTIFICATE_UNKNOWN      SSL3_AD_CERTIFICATE_UNKNOWN
/* fatal */
# define SSL_AD_ILLEGAL_PARAMETER        SSL3_AD_ILLEGAL_PARAMETER
/* fatal */
# define SSL_AD_UNKNOWN_CA               TLS1_AD_UNKNOWN_CA
/* fatal */
# define SSL_AD_ACCESS_DENIED            TLS1_AD_ACCESS_DENIED
/* fatal */
# define SSL_AD_DECODE_ERROR             TLS1_AD_DECODE_ERROR
# define SSL_AD_DECRYPT_ERROR            TLS1_AD_DECRYPT_ERROR
/* fatal */
# define SSL_AD_EXPORT_RESTRICTION       TLS1_AD_EXPORT_RESTRICTION
/* fatal */
# define SSL_AD_PROTOCOL_VERSION         TLS1_AD_PROTOCOL_VERSION
/* fatal */
# define SSL_AD_INSUFFICIENT_SECURITY    TLS1_AD_INSUFFICIENT_SECURITY
/* fatal */
# define SSL_AD_INTERNAL_ERROR           TLS1_AD_INTERNAL_ERROR
# define SSL_AD_USER_CANCELLED           TLS1_AD_USER_CANCELLED
# define SSL_AD_NO_RENEGOTIATION         TLS1_AD_NO_RENEGOTIATION
# define SSL_AD_MISSING_EXTENSION        TLS13_AD_MISSING_EXTENSION
# define SSL_AD_CERTIFICATE_REQUIRED     TLS13_AD_CERTIFICATE_REQUIRED
# define SSL_AD_UNSUPPORTED_EXTENSION    TLS1_AD_UNSUPPORTED_EXTENSION
# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE
# define SSL_AD_UNRECOGNIZED_NAME        TLS1_AD_UNRECOGNIZED_NAME
# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
/* fatal */
# define SSL_AD_UNKNOWN_PSK_IDENTITY     TLS1_AD_UNKNOWN_PSK_IDENTITY
/* fatal */
# define SSL_AD_INAPPROPRIATE_FALLBACK   TLS1_AD_INAPPROPRIATE_FALLBACK
# define SSL_AD_NO_APPLICATION_PROTOCOL  TLS1_AD_NO_APPLICATION_PROTOCOL
# define SSL_ERROR_NONE                  0
# define SSL_ERROR_SSL                   1
# define SSL_ERROR_WANT_READ             2
# define SSL_ERROR_WANT_WRITE            3
# define SSL_ERROR_WANT_X509_LOOKUP      4
# define SSL_ERROR_SYSCALL               5/* look at error stack/return
                                           * value/errno */
# define SSL_ERROR_ZERO_RETURN           6
# define SSL_ERROR_WANT_CONNECT          7
# define SSL_ERROR_WANT_ACCEPT           8
# define SSL_ERROR_WANT_ASYNC            9
# define SSL_ERROR_WANT_ASYNC_JOB       10
# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11
# define SSL_ERROR_WANT_RETRY_VERIFY    12

# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTRL_SET_TMP_DH                    3
#  define SSL_CTRL_SET_TMP_ECDH                  4
#  define SSL_CTRL_SET_TMP_DH_CB                 6
# endif

# define SSL_CTRL_GET_CLIENT_CERT_REQUEST        9
# define SSL_CTRL_GET_NUM_RENEGOTIATIONS         10
# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS       11
# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS       12
# define SSL_CTRL_GET_FLAGS                      13
# define SSL_CTRL_EXTRA_CHAIN_CERT               14
# define SSL_CTRL_SET_MSG_CALLBACK               15
# define SSL_CTRL_SET_MSG_CALLBACK_ARG           16
/* only applies to datagram connections */
# define SSL_CTRL_SET_MTU                17
/* Stats */
# define SSL_CTRL_SESS_NUMBER                    20
# define SSL_CTRL_SESS_CONNECT                   21
# define SSL_CTRL_SESS_CONNECT_GOOD              22
# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE       23
# define SSL_CTRL_SESS_ACCEPT                    24
# define SSL_CTRL_SESS_ACCEPT_GOOD               25
# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE        26
# define SSL_CTRL_SESS_HIT                       27
# define SSL_CTRL_SESS_CB_HIT                    28
# define SSL_CTRL_SESS_MISSES                    29
# define SSL_CTRL_SESS_TIMEOUTS                  30
# define SSL_CTRL_SESS_CACHE_FULL                31
# define SSL_CTRL_MODE                           33
# define SSL_CTRL_GET_READ_AHEAD                 40
# define SSL_CTRL_SET_READ_AHEAD                 41
# define SSL_CTRL_SET_SESS_CACHE_SIZE            42
# define SSL_CTRL_GET_SESS_CACHE_SIZE            43
# define SSL_CTRL_SET_SESS_CACHE_MODE            44
# define SSL_CTRL_GET_SESS_CACHE_MODE            45
# define SSL_CTRL_GET_MAX_CERT_LIST              50
# define SSL_CTRL_SET_MAX_CERT_LIST              51
# define SSL_CTRL_SET_MAX_SEND_FRAGMENT          52
/* see tls1.h for macros based on these */
# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB       53
# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG      54
# define SSL_CTRL_SET_TLSEXT_HOSTNAME            55
# define SSL_CTRL_SET_TLSEXT_DEBUG_CB            56
# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG           57
# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS         58
# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS         59
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT    60 */
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB       63
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG   64
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE     65
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS     66
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS     67
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS      68
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS      69
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP        70
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP        71
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB      72
# endif
# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB    75
# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB                76
# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB             77
# define SSL_CTRL_SET_SRP_ARG            78
# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME               79
# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH               80
# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD               81
# define DTLS_CTRL_GET_TIMEOUT           73
# define DTLS_CTRL_HANDLE_TIMEOUT        74
# define SSL_CTRL_GET_RI_SUPPORT                 76
# define SSL_CTRL_CLEAR_MODE                     78
# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB      79
# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS          82
# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS        83
# define SSL_CTRL_CHAIN                          88
# define SSL_CTRL_CHAIN_CERT                     89
# define SSL_CTRL_GET_GROUPS                     90
# define SSL_CTRL_SET_GROUPS                     91
# define SSL_CTRL_SET_GROUPS_LIST                92
# define SSL_CTRL_GET_SHARED_GROUP               93
# define SSL_CTRL_SET_SIGALGS                    97
# define SSL_CTRL_SET_SIGALGS_LIST               98
# define SSL_CTRL_CERT_FLAGS                     99
# define SSL_CTRL_CLEAR_CERT_FLAGS               100
# define SSL_CTRL_SET_CLIENT_SIGALGS             101
# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST        102
# define SSL_CTRL_GET_CLIENT_CERT_TYPES          103
# define SSL_CTRL_SET_CLIENT_CERT_TYPES          104
# define SSL_CTRL_BUILD_CERT_CHAIN               105
# define SSL_CTRL_SET_VERIFY_CERT_STORE          106
# define SSL_CTRL_SET_CHAIN_CERT_STORE           107
# define SSL_CTRL_GET_PEER_SIGNATURE_NID         108
# define SSL_CTRL_GET_PEER_TMP_KEY               109
# define SSL_CTRL_GET_RAW_CIPHERLIST             110
# define SSL_CTRL_GET_EC_POINT_FORMATS           111
# define SSL_CTRL_GET_CHAIN_CERTS                115
# define SSL_CTRL_SELECT_CURRENT_CERT            116
# define SSL_CTRL_SET_CURRENT_CERT               117
# define SSL_CTRL_SET_DH_AUTO                    118
# define DTLS_CTRL_SET_LINK_MTU                  120
# define DTLS_CTRL_GET_LINK_MIN_MTU              121
# define SSL_CTRL_GET_EXTMS_SUPPORT              122
# define SSL_CTRL_SET_MIN_PROTO_VERSION          123
# define SSL_CTRL_SET_MAX_PROTO_VERSION          124
# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT        125
# define SSL_CTRL_SET_MAX_PIPELINES              126
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE     127
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB       128
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG   129
# define SSL_CTRL_GET_MIN_PROTO_VERSION          130
# define SSL_CTRL_GET_MAX_PROTO_VERSION          131
# define SSL_CTRL_GET_SIGNATURE_NID              132
# define SSL_CTRL_GET_TMP_KEY                    133
# define SSL_CTRL_GET_NEGOTIATED_GROUP           134
# define SSL_CTRL_SET_RETRY_VERIFY               136
# define SSL_CTRL_GET_VERIFY_CERT_STORE          137
# define SSL_CTRL_GET_CHAIN_CERT_STORE           138
# define SSL_CERT_SET_FIRST                      1
# define SSL_CERT_SET_NEXT                       2
# define SSL_CERT_SET_SERVER                     3
# define DTLSv1_get_timeout(ssl, arg) \
        SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg))
# define DTLSv1_handle_timeout(ssl) \
        SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL)
# define SSL_num_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
# define SSL_clear_num_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
# define SSL_total_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTX_set_tmp_dh(ctx,dh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
# endif
# define SSL_CTX_set_dh_auto(ctx, onoff) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
# define SSL_set_dh_auto(s, onoff) \
        SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_set_tmp_dh(ssl,dh) \
        SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
#  define SSL_set_tmp_ecdh(ssl,ecdh) \
        SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
# endif
# define SSL_CTX_add_extra_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509))
# define SSL_CTX_get_extra_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509)
# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509)
# define SSL_CTX_clear_extra_chain_certs(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL)
# define SSL_CTX_set0_chain(ctx,sk) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk))
# define SSL_CTX_set1_chain(ctx,sk) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk))
# define SSL_CTX_add0_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
# define SSL_CTX_add1_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
# define SSL_CTX_get0_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
# define SSL_CTX_clear_chain_certs(ctx) \
        SSL_CTX_set0_chain(ctx,NULL)
# define SSL_CTX_build_cert_chain(ctx, flags) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
# define SSL_CTX_select_current_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
# define SSL_CTX_set_current_cert(ctx, op) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
# define SSL_CTX_set0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set1_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
# define SSL_CTX_get0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set0_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set1_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
# define SSL_CTX_get0_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_set0_chain(s,sk) \
        SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk))
# define SSL_set1_chain(s,sk) \
        SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk))
# define SSL_add0_chain_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
# define SSL_add1_chain_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
# define SSL_get0_chain_certs(s,px509) \
        SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
# define SSL_clear_chain_certs(s) \
        SSL_set0_chain(s,NULL)
# define SSL_build_cert_chain(s, flags) \
        SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
# define SSL_select_current_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
# define SSL_set_current_cert(s,op) \
        SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
# define SSL_set0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_set1_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
#define SSL_get0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_set0_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_set1_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
#define SSL_get0_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))

# define SSL_get1_groups(s, glist) \
        SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist))
# define SSL_CTX_set1_groups(ctx, glist, glistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist))
# define SSL_CTX_set1_groups_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s))
# define SSL_set1_groups(s, glist, glistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist))
# define SSL_set1_groups_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str))
# define SSL_get_shared_group(s, n) \
        SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL)
# define SSL_get_negotiated_group(s) \
        SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,NULL)
# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
# define SSL_CTX_set1_sigalgs_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s))
# define SSL_set1_sigalgs(s, slist, slistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
# define SSL_set1_sigalgs_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str))
# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s))
# define SSL_set1_client_sigalgs(s, slist, slistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
# define SSL_set1_client_sigalgs_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str))
# define SSL_get0_certificate_types(s, clist) \
        SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist))
# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \
                     (char *)(clist))
# define SSL_set1_client_certificate_types(s, clist, clistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist))
# define SSL_get_signature_nid(s, pn) \
        SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn)
# define SSL_get_peer_signature_nid(s, pn) \
        SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn)
# define SSL_get_peer_tmp_key(s, pk) \
        SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk)
# define SSL_get_tmp_key(s, pk) \
        SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk)
# define SSL_get0_raw_cipherlist(s, plst) \
        SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst)
# define SSL_get0_ec_point_formats(s, plst) \
        SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst)
# define SSL_CTX_set_min_proto_version(ctx, version) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
# define SSL_CTX_set_max_proto_version(ctx, version) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
# define SSL_CTX_get_min_proto_version(ctx) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
# define SSL_CTX_get_max_proto_version(ctx) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)
# define SSL_set_min_proto_version(s, version) \
        SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
# define SSL_set_max_proto_version(s, version) \
        SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
# define SSL_get_min_proto_version(s) \
        SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
# define SSL_get_max_proto_version(s) \
        SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)

const char *SSL_group_to_name(SSL *s, int id);

/* Backwards compatibility, original 1.1.0 names */
# define SSL_CTRL_GET_SERVER_TMP_KEY \
         SSL_CTRL_GET_PEER_TMP_KEY
# define SSL_get_server_tmp_key(s, pk) \
         SSL_get_peer_tmp_key(s, pk)

int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey);
int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey);

/*
 * The following symbol names are old and obsolete. They are kept
 * for compatibility reasons only and should not be used anymore.
 */
# define SSL_CTRL_GET_CURVES           SSL_CTRL_GET_GROUPS
# define SSL_CTRL_SET_CURVES           SSL_CTRL_SET_GROUPS
# define SSL_CTRL_SET_CURVES_LIST      SSL_CTRL_SET_GROUPS_LIST
# define SSL_CTRL_GET_SHARED_CURVE     SSL_CTRL_GET_SHARED_GROUP

# define SSL_get1_curves               SSL_get1_groups
# define SSL_CTX_set1_curves           SSL_CTX_set1_groups
# define SSL_CTX_set1_curves_list      SSL_CTX_set1_groups_list
# define SSL_set1_curves               SSL_set1_groups
# define SSL_set1_curves_list          SSL_set1_groups_list
# define SSL_get_shared_curve          SSL_get_shared_group


# ifndef OPENSSL_NO_DEPRECATED_1_1_0
/* Provide some compatibility macros for removed functionality. */
#  define SSL_CTX_need_tmp_RSA(ctx)                0
#  define SSL_CTX_set_tmp_rsa(ctx,rsa)             1
#  define SSL_need_tmp_RSA(ssl)                    0
#  define SSL_set_tmp_rsa(ssl,rsa)                 1
#  define SSL_CTX_set_ecdh_auto(dummy, onoff)      ((onoff) != 0)
#  define SSL_set_ecdh_auto(dummy, onoff)          ((onoff) != 0)
/*
 * We "pretend" to call the callback to avoid warnings about unused static
 * functions.
 */
#  define SSL_CTX_set_tmp_rsa_callback(ctx, cb)    while(0) (cb)(NULL, 0, 0)
#  define SSL_set_tmp_rsa_callback(ssl, cb)        while(0) (cb)(NULL, 0, 0)
# endif
__owur const BIO_METHOD *BIO_f_ssl(void);
__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client);
__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from);
void BIO_ssl_shutdown(BIO *ssl_bio);

__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str);
__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
                               const SSL_METHOD *meth);
int SSL_CTX_up_ref(SSL_CTX *ctx);
void SSL_CTX_free(SSL_CTX *);
__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t);
__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx);
__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *);
void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *);
void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *);
__owur int SSL_want(const SSL *s);
__owur int SSL_clear(SSL *s);

void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm);

__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s);
__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits);
__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c);
__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c);
__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
__owur const char *OPENSSL_cipher_name(const char *rfc_name);
__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c);
__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c);
__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c);
__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c);
__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c);
__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c);

__owur int SSL_get_fd(const SSL *s);
__owur int SSL_get_rfd(const SSL *s);
__owur int SSL_get_wfd(const SSL *s);
__owur const char *SSL_get_cipher_list(const SSL *s, int n);
__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size);
__owur int SSL_get_read_ahead(const SSL *s);
__owur int SSL_pending(const SSL *s);
__owur int SSL_has_pending(const SSL *s);
# ifndef OPENSSL_NO_SOCK
__owur int SSL_set_fd(SSL *s, int fd);
__owur int SSL_set_rfd(SSL *s, int fd);
__owur int SSL_set_wfd(SSL *s, int fd);
# endif
void SSL_set0_rbio(SSL *s, BIO *rbio);
void SSL_set0_wbio(SSL *s, BIO *wbio);
void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio);
__owur BIO *SSL_get_rbio(const SSL *s);
__owur BIO *SSL_get_wbio(const SSL *s);
__owur int SSL_set_cipher_list(SSL *s, const char *str);
__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
__owur int SSL_set_ciphersuites(SSL *s, const char *str);
void SSL_set_read_ahead(SSL *s, int yes);
__owur int SSL_get_verify_mode(const SSL *s);
__owur int SSL_get_verify_depth(const SSL *s);
__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s);
void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback);
void SSL_set_verify_depth(SSL *s, int depth);
void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl,
                                      const unsigned char *d, long len);
# endif
__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d,
                                   long len);
__owur int SSL_use_certificate(SSL *ssl, X509 *x);
__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);
__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey,
                                STACK_OF(X509) *chain, int override);


/* serverinfo file format versions */
# define SSL_SERVERINFOV1   1
# define SSL_SERVERINFOV2   2

/* Set serverinfo data for the current active cert. */
__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,
                                  size_t serverinfo_length);
__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version,
                                     const unsigned char *serverinfo,
                                     size_t serverinfo_length);
__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
#endif

__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file,
                                          int type);
#endif
__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file,
                                       int type);
__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,
                                        int type);
/* PEM type */
__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file);
__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
__owur STACK_OF(X509_NAME)
*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx,
                            const char *propq);
__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                               const char *file);
int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                       const char *dir);
int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                       const char *uri);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_load_error_strings() \
    OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
                     | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
# endif

__owur const char *SSL_state_string(const SSL *s);
__owur const char *SSL_rstate_string(const SSL *s);
__owur const char *SSL_state_string_long(const SSL *s);
__owur const char *SSL_rstate_string_long(const SSL *s);
__owur long SSL_SESSION_get_time(const SSL_SESSION *s);
__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t);
__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s);
__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s);
__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version);

__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s);
__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname);
void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s,
                                    const unsigned char **alpn,
                                    size_t *len);
__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s,
                                          const unsigned char *alpn,
                                          size_t len);
__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s);
__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher);
__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s);
__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);
void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick,
                             size_t *len);
__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s);
__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s,
                                          uint32_t max_early_data);
__owur int SSL_copy_session_id(SSL *to, const SSL *from);
__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);
__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s,
                                       const unsigned char *sid_ctx,
                                       unsigned int sid_ctx_len);
__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,
                               unsigned int sid_len);
__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s);

__owur SSL_SESSION *SSL_SESSION_new(void);
__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src);
const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
                                        unsigned int *len);
const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s,
                                                 unsigned int *len);
__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s);
# ifndef OPENSSL_NO_STDIO
int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses);
# endif
int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses);
int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x);
int SSL_SESSION_up_ref(SSL_SESSION *ses);
void SSL_SESSION_free(SSL_SESSION *ses);
__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp);
__owur int SSL_set_session(SSL *to, SSL_SESSION *session);
int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session);
int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session);
__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb);
__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb);
__owur int SSL_has_matching_session_id(const SSL *s,
                                       const unsigned char *id,
                                       unsigned int id_len);
SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
                             long length);

# ifdef OPENSSL_X509_H
__owur X509 *SSL_get0_peer_certificate(const SSL *s);
__owur X509 *SSL_get1_peer_certificate(const SSL *s);
/* Deprecated in 3.0.0 */
#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   define SSL_get_peer_certificate SSL_get1_peer_certificate
#  endif
# endif

__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s);

__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx);
__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx);
__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx);
void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback);
void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth);
void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
                                      int (*cb) (X509_STORE_CTX *, void *),
                                      void *arg);
void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg),
                         void *arg);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
                                          long len);
# endif
__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx,
                                       const unsigned char *d, long len);
__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len,
                                        const unsigned char *d);
__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey,
                                    STACK_OF(X509) *chain, int override);

void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);
void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx);
void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb);
void SSL_set_default_passwd_cb_userdata(SSL *s, void *u);
pem_password_cb *SSL_get_default_passwd_cb(SSL *s);
void *SSL_get_default_passwd_cb_userdata(SSL *s);

__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx);
__owur int SSL_check_private_key(const SSL *ctx);

__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx,
                                          const unsigned char *sid_ctx,
                                          unsigned int sid_ctx_len);

SSL *SSL_new(SSL_CTX *ctx);
int SSL_up_ref(SSL *s);
int SSL_is_dtls(const SSL *s);
__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx,
                                      unsigned int sid_ctx_len);

__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);
__owur int SSL_set_purpose(SSL *ssl, int purpose);
__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);
__owur int SSL_set_trust(SSL *ssl, int trust);

__owur int SSL_set1_host(SSL *s, const char *hostname);
__owur int SSL_add1_host(SSL *s, const char *hostname);
__owur const char *SSL_get0_peername(SSL *s);
void SSL_set_hostflags(SSL *s, unsigned int flags);

__owur int SSL_CTX_dane_enable(SSL_CTX *ctx);
__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md,
                                  uint8_t mtype, uint8_t ord);
__owur int SSL_dane_enable(SSL *s, const char *basedomain);
__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector,
                             uint8_t mtype, const unsigned char *data, size_t dlen);
__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki);
__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector,
                              uint8_t *mtype, const unsigned char **data,
                              size_t *dlen);
/*
 * Bridge opacity barrier between libcrypt and libssl, also needed to support
 * offline testing in test/danetest.c
 */
SSL_DANE *SSL_get0_dane(SSL *ssl);
/*
 * DANE flags
 */
unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags);
unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags);
unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags);
unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags);

__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);

__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);
__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);

# ifndef OPENSSL_NO_SRP
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength);
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx,
                                        char *(*cb) (SSL *, void *));
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx,
                                          int (*cb) (SSL *, void *));
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx,
                                      int (*cb) (SSL *, int *, void *));
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg);

OSSL_DEPRECATEDIN_3_0
int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g,
                             BIGNUM *sa, BIGNUM *v, char *info);
OSSL_DEPRECATEDIN_3_0
int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass,
                                const char *grp);

OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s);

OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s);
#  endif
# endif

/*
 * ClientHello callback and helpers.
 */

# define SSL_CLIENT_HELLO_SUCCESS 1
# define SSL_CLIENT_HELLO_ERROR   0
# define SSL_CLIENT_HELLO_RETRY   (-1)

typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg);
void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb,
                                 void *arg);
int SSL_client_hello_isv2(SSL *s);
unsigned int SSL_client_hello_get0_legacy_version(SSL *s);
size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_compression_methods(SSL *s,
                                                 const unsigned char **out);
int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen);
int SSL_client_hello_get0_ext(SSL *s, unsigned int type,
                              const unsigned char **out, size_t *outlen);

void SSL_certs_clear(SSL *s);
void SSL_free(SSL *ssl);
# ifdef OSSL_ASYNC_FD
/*
 * Windows application developer has to include windows.h to use these.
 */
__owur int SSL_waiting_for_async(SSL *s);
__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds);
__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd,
                                     size_t *numaddfds, OSSL_ASYNC_FD *delfd,
                                     size_t *numdelfds);
__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback);
__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg);
__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback);
__owur int SSL_set_async_callback_arg(SSL *s, void *arg);
__owur int SSL_get_async_status(SSL *s, int *status);

# endif
__owur int SSL_accept(SSL *ssl);
__owur int SSL_stateless(SSL *s);
__owur int SSL_connect(SSL *ssl);
__owur int SSL_read(SSL *ssl, void *buf, int num);
__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);

# define SSL_READ_EARLY_DATA_ERROR   0
# define SSL_READ_EARLY_DATA_SUCCESS 1
# define SSL_READ_EARLY_DATA_FINISH  2

__owur int SSL_read_early_data(SSL *s, void *buf, size_t num,
                               size_t *readbytes);
__owur int SSL_peek(SSL *ssl, void *buf, int num);
__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size,
                                 int flags);
__owur int SSL_write(SSL *ssl, const void *buf, int num);
__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written);
__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num,
                                size_t *written);
long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg);
long SSL_callback_ctrl(SSL *, int, void (*)(void));
long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void));

# define SSL_EARLY_DATA_NOT_SENT    0
# define SSL_EARLY_DATA_REJECTED    1
# define SSL_EARLY_DATA_ACCEPTED    2

__owur int SSL_get_early_data_status(const SSL *s);

__owur int SSL_get_error(const SSL *s, int ret_code);
__owur const char *SSL_get_version(const SSL *s);

/* This sets the 'default' SSL version that SSL_new() will create */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);
# endif

# ifndef OPENSSL_NO_SSL3_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void);
#  endif
# endif

#define SSLv23_method           TLS_method
#define SSLv23_server_method    TLS_server_method
#define SSLv23_client_method    TLS_client_method

/* Negotiate highest available SSL/TLS version */
__owur const SSL_METHOD *TLS_method(void);
__owur const SSL_METHOD *TLS_server_method(void);
__owur const SSL_METHOD *TLS_client_method(void);

# ifndef OPENSSL_NO_TLS1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_TLS1_1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_TLS1_2_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_DTLS1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_DTLS1_2_METHOD
/* DTLSv1.2 */
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void);
#  endif
# endif

__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */
__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */
__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */

__owur size_t DTLS_get_data_mtu(const SSL *s);

__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);
__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx);
__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s);
__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);

__owur int SSL_do_handshake(SSL *s);
int SSL_key_update(SSL *s, int updatetype);
int SSL_get_key_update_type(const SSL *s);
int SSL_renegotiate(SSL *s);
int SSL_renegotiate_abbreviated(SSL *s);
__owur int SSL_renegotiate_pending(const SSL *s);
int SSL_new_session_ticket(SSL *s);
int SSL_shutdown(SSL *s);
__owur int SSL_verify_client_post_handshake(SSL *s);
void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val);
void SSL_set_post_handshake_auth(SSL *s, int val);

__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);
__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s);
__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
__owur const char *SSL_alert_type_string_long(int value);
__owur const char *SSL_alert_type_string(int value);
__owur const char *SSL_alert_desc_string_long(int value);
__owur const char *SSL_alert_desc_string(int value);

void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s);
__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx);
__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x);
__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x);
__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s);

void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s);
__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s);
__owur int SSL_add_client_CA(SSL *ssl, X509 *x);
__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x);

void SSL_set_connect_state(SSL *s);
void SSL_set_accept_state(SSL *s);

__owur long SSL_get_default_timeout(const SSL *s);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_library_init() OPENSSL_init_ssl(0, NULL)
# endif

__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size);
__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk);

__owur SSL *SSL_dup(SSL *ssl);

__owur X509 *SSL_get_certificate(const SSL *ssl);
/*
 * EVP_PKEY
 */
struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl);

__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);

void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode);
__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);
void SSL_set_quiet_shutdown(SSL *ssl, int mode);
__owur int SSL_get_quiet_shutdown(const SSL *ssl);
void SSL_set_shutdown(SSL *ssl, int mode);
__owur int SSL_get_shutdown(const SSL *ssl);
__owur int SSL_version(const SSL *ssl);
__owur int SSL_client_version(const SSL *s);
__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx);
__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile);
__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath);
__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore);
__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx,
                                                        const char *CAfile,
                                                        const char *CApath);
# define SSL_get0_session SSL_get_session/* just peek at pointer */
__owur SSL_SESSION *SSL_get_session(const SSL *ssl);
__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */
__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);
SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx);
void SSL_set_info_callback(SSL *ssl,
                           void (*cb) (const SSL *ssl, int type, int val));
void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type,
                                               int val);
__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);

void SSL_set_verify_result(SSL *ssl, long v);
__owur long SSL_get_verify_result(const SSL *ssl);
__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s);

__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out,
                                    size_t outlen);
__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out,
                                    size_t outlen);
__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess,
                                         unsigned char *out, size_t outlen);
__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess,
                                       const unsigned char *in, size_t len);
uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess);

#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef)
__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data);
void *SSL_get_ex_data(const SSL *ssl, int idx);
#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef)
__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data);
void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx);
#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef)
__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data);
void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx);

__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void);

# define SSL_CTX_sess_set_cache_size(ctx,t) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
# define SSL_CTX_sess_get_cache_size(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
# define SSL_CTX_set_session_cache_mode(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
# define SSL_CTX_get_session_cache_mode(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)

# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
# define SSL_CTX_get_read_ahead(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)
# define SSL_CTX_set_read_ahead(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL)
# define SSL_CTX_get_max_cert_list(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
# define SSL_CTX_set_max_cert_list(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
# define SSL_get_max_cert_list(ssl) \
        SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
# define SSL_set_max_cert_list(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)

# define SSL_CTX_set_max_send_fragment(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_set_max_send_fragment(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_CTX_set_split_send_fragment(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
# define SSL_set_split_send_fragment(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
# define SSL_CTX_set_max_pipelines(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
# define SSL_set_max_pipelines(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
# define SSL_set_retry_verify(ssl) \
        (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0)

void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);
void SSL_set_default_read_buffer_len(SSL *s, size_t len);

# ifndef OPENSSL_NO_DH
#  ifndef OPENSSL_NO_DEPRECATED_3_0
/* NB: the |keylength| is only applicable when is_export is true */
OSSL_DEPRECATEDIN_3_0
void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
                                 DH *(*dh) (SSL *ssl, int is_export,
                                            int keylength));
OSSL_DEPRECATEDIN_3_0
void SSL_set_tmp_dh_callback(SSL *ssl,
                             DH *(*dh) (SSL *ssl, int is_export,
                                        int keylength));
#  endif
# endif

__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s);
__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s);
__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);
__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp);
__owur int SSL_COMP_get_id(const SSL_COMP *comp);
STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
                                                             *meths);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_COMP_free_compression_methods() while(0) continue
# endif
__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);

const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr);
int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c);
int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c);
int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len,
                             int isv2format, STACK_OF(SSL_CIPHER) **sk,
                             STACK_OF(SSL_CIPHER) **scsvs);

/* TLS extensions functions */
__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len);

__owur int SSL_set_session_ticket_ext_cb(SSL *s,
                                         tls_session_ticket_ext_cb_fn cb,
                                         void *arg);

/* Pre-shared secret session resumption functions */
__owur int SSL_set_session_secret_cb(SSL *s,
                                     tls_session_secret_cb_fn session_secret_cb,
                                     void *arg);

void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx,
                                                int (*cb) (SSL *ssl,
                                                           int
                                                           is_forward_secure));

void SSL_set_not_resumable_session_callback(SSL *ssl,
                                            int (*cb) (SSL *ssl,
                                                       int is_forward_secure));

void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx,
                                         size_t (*cb) (SSL *ssl, int type,
                                                       size_t len, void *arg));
void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg);
void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx);
int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size);

int SSL_set_record_padding_callback(SSL *ssl,
                                    size_t (*cb) (SSL *ssl, int type,
                                                  size_t len, void *arg));
void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg);
void *SSL_get_record_padding_callback_arg(const SSL *ssl);
int SSL_set_block_padding(SSL *ssl, size_t block_size);

int SSL_set_num_tickets(SSL *s, size_t num_tickets);
size_t SSL_get_num_tickets(const SSL *s);
int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_cache_hit(s) SSL_session_reused(s)
# endif

__owur int SSL_session_reused(const SSL *s);
__owur int SSL_is_server(const SSL *s);

__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);
int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);
void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);
unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);
__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx,
                                             unsigned int flags);
__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre);

void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl);
void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx);

__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv);
__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);

void SSL_add_ssl_module(void);
int SSL_config(SSL *s, const char *name);
int SSL_CTX_config(SSL_CTX *ctx, const char *name);

# ifndef OPENSSL_NO_SSL_TRACE
void SSL_trace(int write_p, int version, int content_type,
               const void *buf, size_t len, SSL *ssl, void *arg);
# endif

# ifndef OPENSSL_NO_SOCK
int DTLSv1_listen(SSL *s, BIO_ADDR *client);
# endif

# ifndef OPENSSL_NO_CT

/*
 * A callback for verifying that the received SCTs are sufficient.
 * Expected to return 1 if they are sufficient, otherwise 0.
 * May return a negative integer if an error occurs.
 * A connection should be aborted if the SCTs are deemed insufficient.
 */
typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx,
                                    const STACK_OF(SCT) *scts, void *arg);

/*
 * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate
 * the received SCTs.
 * If the callback returns a non-positive result, the connection is terminated.
 * Call this function before beginning a handshake.
 * If a NULL |callback| is provided, SCT validation is disabled.
 * |arg| is arbitrary userdata that will be passed to the callback whenever it
 * is invoked. Ownership of |arg| remains with the caller.
 *
 * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response
 *       will be requested.
 */
int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback,
                                   void *arg);
int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx,
                                       ssl_ct_validation_cb callback,
                                       void *arg);
#define SSL_disable_ct(s) \
        ((void) SSL_set_validation_callback((s), NULL, NULL))
#define SSL_CTX_disable_ct(ctx) \
        ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL))

/*
 * The validation type enumerates the available behaviours of the built-in SSL
 * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct().
 * The underlying callback is a static function in libssl.
 */
enum {
    SSL_CT_VALIDATION_PERMISSIVE = 0,
    SSL_CT_VALIDATION_STRICT
};

/*
 * Enable CT by setting up a callback that implements one of the built-in
 * validation variants.  The SSL_CT_VALIDATION_PERMISSIVE variant always
 * continues the handshake, the application can make appropriate decisions at
 * handshake completion.  The SSL_CT_VALIDATION_STRICT variant requires at
 * least one valid SCT, or else handshake termination will be requested.  The
 * handshake may continue anyway if SSL_VERIFY_NONE is in effect.
 */
int SSL_enable_ct(SSL *s, int validation_mode);
int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode);

/*
 * Report whether a non-NULL callback is enabled.
 */
int SSL_ct_is_enabled(const SSL *s);
int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx);

/* Gets the SCTs received from a connection */
const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s);

/*
 * Loads the CT log list from the default location.
 * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
 * the log information loaded from this file will be appended to the
 * CTLOG_STORE.
 * Returns 1 on success, 0 otherwise.
 */
int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx);

/*
 * Loads the CT log list from the specified file path.
 * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
 * the log information loaded from this file will be appended to the
 * CTLOG_STORE.
 * Returns 1 on success, 0 otherwise.
 */
int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path);

/*
 * Sets the CT log list used by all SSL connections created from this SSL_CTX.
 * Ownership of the CTLOG_STORE is transferred to the SSL_CTX.
 */
void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs);

/*
 * Gets the CT log list used by all SSL connections created from this SSL_CTX.
 * This will be NULL unless one of the following functions has been called:
 * - SSL_CTX_set_default_ctlog_list_file
 * - SSL_CTX_set_ctlog_list_file
 * - SSL_CTX_set_ctlog_store
 */
const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);

# endif /* OPENSSL_NO_CT */

/* What the "other" parameter contains in security callback */
/* Mask for type */
# define SSL_SECOP_OTHER_TYPE    0xffff0000
# define SSL_SECOP_OTHER_NONE    0
# define SSL_SECOP_OTHER_CIPHER  (1 << 16)
# define SSL_SECOP_OTHER_CURVE   (2 << 16)
# define SSL_SECOP_OTHER_DH      (3 << 16)
# define SSL_SECOP_OTHER_PKEY    (4 << 16)
# define SSL_SECOP_OTHER_SIGALG  (5 << 16)
# define SSL_SECOP_OTHER_CERT    (6 << 16)

/* Indicated operation refers to peer key or certificate */
# define SSL_SECOP_PEER          0x1000

/* Values for "op" parameter in security callback */

/* Called to filter ciphers */
/* Ciphers client supports */
# define SSL_SECOP_CIPHER_SUPPORTED      (1 | SSL_SECOP_OTHER_CIPHER)
/* Cipher shared by client/server */
# define SSL_SECOP_CIPHER_SHARED         (2 | SSL_SECOP_OTHER_CIPHER)
/* Sanity check of cipher server selects */
# define SSL_SECOP_CIPHER_CHECK          (3 | SSL_SECOP_OTHER_CIPHER)
/* Curves supported by client */
# define SSL_SECOP_CURVE_SUPPORTED       (4 | SSL_SECOP_OTHER_CURVE)
/* Curves shared by client/server */
# define SSL_SECOP_CURVE_SHARED          (5 | SSL_SECOP_OTHER_CURVE)
/* Sanity check of curve server selects */
# define SSL_SECOP_CURVE_CHECK           (6 | SSL_SECOP_OTHER_CURVE)
/* Temporary DH key */
# define SSL_SECOP_TMP_DH                (7 | SSL_SECOP_OTHER_PKEY)
/* SSL/TLS version */
# define SSL_SECOP_VERSION               (9 | SSL_SECOP_OTHER_NONE)
/* Session tickets */
# define SSL_SECOP_TICKET                (10 | SSL_SECOP_OTHER_NONE)
/* Supported signature algorithms sent to peer */
# define SSL_SECOP_SIGALG_SUPPORTED      (11 | SSL_SECOP_OTHER_SIGALG)
/* Shared signature algorithm */
# define SSL_SECOP_SIGALG_SHARED         (12 | SSL_SECOP_OTHER_SIGALG)
/* Sanity check signature algorithm allowed */
# define SSL_SECOP_SIGALG_CHECK          (13 | SSL_SECOP_OTHER_SIGALG)
/* Used to get mask of supported public key signature algorithms */
# define SSL_SECOP_SIGALG_MASK           (14 | SSL_SECOP_OTHER_SIGALG)
/* Use to see if compression is allowed */
# define SSL_SECOP_COMPRESSION           (15 | SSL_SECOP_OTHER_NONE)
/* EE key in certificate */
# define SSL_SECOP_EE_KEY                (16 | SSL_SECOP_OTHER_CERT)
/* CA key in certificate */
# define SSL_SECOP_CA_KEY                (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
# define SSL_SECOP_CA_MD                 (18 | SSL_SECOP_OTHER_CERT)
/* Peer EE key in certificate */
# define SSL_SECOP_PEER_EE_KEY           (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
/* Peer CA key in certificate */
# define SSL_SECOP_PEER_CA_KEY           (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
/* Peer CA digest algorithm in certificate */
# define SSL_SECOP_PEER_CA_MD            (SSL_SECOP_CA_MD | SSL_SECOP_PEER)

void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
void SSL_set_security_callback(SSL *s,
                               int (*cb) (const SSL *s, const SSL_CTX *ctx,
                                          int op, int bits, int nid,
                                          void *other, void *ex));
int (*SSL_get_security_callback(const SSL *s)) (const SSL *s,
                                                const SSL_CTX *ctx, int op,
                                                int bits, int nid, void *other,
                                                void *ex);
void SSL_set0_security_ex_data(SSL *s, void *ex);
__owur void *SSL_get0_security_ex_data(const SSL *s);

void SSL_CTX_set_security_level(SSL_CTX *ctx, int level);
__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx);
void SSL_CTX_set_security_callback(SSL_CTX *ctx,
                                   int (*cb) (const SSL *s, const SSL_CTX *ctx,
                                              int op, int bits, int nid,
                                              void *other, void *ex));
int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s,
                                                          const SSL_CTX *ctx,
                                                          int op, int bits,
                                                          int nid,
                                                          void *other,
                                                          void *ex);
void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex);
__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx);

/* OPENSSL_INIT flag 0x010000 reserved for internal use */
# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS    0x00100000L
# define OPENSSL_INIT_LOAD_SSL_STRINGS       0x00200000L

# define OPENSSL_INIT_SSL_DEFAULT \
        (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS)

int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);

# ifndef OPENSSL_NO_UNIT_TEST
__owur const struct openssl_ssl_test_functions *SSL_test_functions(void);
# endif

__owur int SSL_free_buffers(SSL *ssl);
__owur int SSL_alloc_buffers(SSL *ssl);

/* Status codes passed to the decrypt session ticket callback. Some of these
 * are for internal use only and are never passed to the callback. */
typedef int SSL_TICKET_STATUS;

/* Support for ticket appdata */
/* fatal error, malloc failure */
# define SSL_TICKET_FATAL_ERR_MALLOC 0
/* fatal error, either from parsing or decrypting the ticket */
# define SSL_TICKET_FATAL_ERR_OTHER  1
/* No ticket present */
# define SSL_TICKET_NONE             2
/* Empty ticket present */
# define SSL_TICKET_EMPTY            3
/* the ticket couldn't be decrypted */
# define SSL_TICKET_NO_DECRYPT       4
/* a ticket was successfully decrypted */
# define SSL_TICKET_SUCCESS          5
/* same as above but the ticket needs to be renewed */
# define SSL_TICKET_SUCCESS_RENEW    6

/* Return codes for the decrypt session ticket callback */
typedef int SSL_TICKET_RETURN;

/* An error occurred */
#define SSL_TICKET_RETURN_ABORT             0
/* Do not use the ticket, do not send a renewed ticket to the client */
#define SSL_TICKET_RETURN_IGNORE            1
/* Do not use the ticket, send a renewed ticket to the client */
#define SSL_TICKET_RETURN_IGNORE_RENEW      2
/* Use the ticket, do not send a renewed ticket to the client */
#define SSL_TICKET_RETURN_USE               3
/* Use the ticket, send a renewed ticket to the client */
#define SSL_TICKET_RETURN_USE_RENEW         4

typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg);
typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss,
                                                               const unsigned char *keyname,
                                                               size_t keyname_length,
                                                               SSL_TICKET_STATUS status,
                                                               void *arg);
int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx,
                                  SSL_CTX_generate_session_ticket_fn gen_cb,
                                  SSL_CTX_decrypt_session_ticket_fn dec_cb,
                                  void *arg);
int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len);
int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len);

typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us);

void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb);


typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg);
void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx,
                                     SSL_allow_early_data_cb_fn cb,
                                     void *arg);
void SSL_set_allow_early_data_cb(SSL *s,
                                 SSL_allow_early_data_cb_fn cb,
                                 void *arg);

/* store the default cipher strings inside the library */
const char *OSSL_default_cipher_list(void);
const char *OSSL_default_ciphersuites(void);

#  ifndef OPENSSL_NO_QUIC
/*
 * QUIC integration - The QUIC interface matches BoringSSL
 *
 * ssl_encryption_level_t represents a specific QUIC encryption level used to
 * transmit handshake messages. BoringSSL has this as an 'enum'.
 */
#include <openssl/quic.h>

/* Used by Chromium/QUIC - moved from evp.h to avoid breaking FIPS checksums */
# define X25519_PRIVATE_KEY_LEN          32
# define X25519_PUBLIC_VALUE_LEN         32

/* moved from types.h to avoid breaking FIPS checksums */
typedef struct ssl_quic_method_st SSL_QUIC_METHOD;

typedef enum ssl_encryption_level_t {
    ssl_encryption_initial = 0,
    ssl_encryption_early_data,
    ssl_encryption_handshake,
    ssl_encryption_application
} OSSL_ENCRYPTION_LEVEL;

struct ssl_quic_method_st {
    int (*set_encryption_secrets)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                                  const uint8_t *read_secret,
                                  const uint8_t *write_secret, size_t secret_len);
    int (*add_handshake_data)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                              const uint8_t *data, size_t len);
    int (*flush_flight)(SSL *ssl);
    int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert);
};

__owur int SSL_CTX_set_quic_method(SSL_CTX *ctx, const SSL_QUIC_METHOD *quic_method);
__owur int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method);
__owur int SSL_set_quic_transport_params(SSL *ssl,
                                         const uint8_t *params,
                                         size_t params_len);
void SSL_get_peer_quic_transport_params(const SSL *ssl,
                                        const uint8_t **out_params,
                                        size_t *out_params_len);
__owur size_t SSL_quic_max_handshake_flight_len(const SSL *ssl, OSSL_ENCRYPTION_LEVEL level);
__owur OSSL_ENCRYPTION_LEVEL SSL_quic_read_level(const SSL *ssl);
__owur OSSL_ENCRYPTION_LEVEL SSL_quic_write_level(const SSL *ssl);
__owur int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                                 const uint8_t *data, size_t len);
__owur int SSL_process_quic_post_handshake(SSL *ssl);

__owur int SSL_is_quic(SSL *ssl);

/* BoringSSL API */
void SSL_set_quic_use_legacy_codepoint(SSL *ssl, int use_legacy);

/*
 * Set an explicit value that you want to use
 * If 0 (default) the server will use the highest extenstion the client sent
 * If 0 (default) the client will send both extensions
 */
void SSL_set_quic_transport_version(SSL *ssl, int version);
__owur int SSL_get_quic_transport_version(const SSL *ssl);
/* Returns the negotiated version, or -1 on error */
__owur int SSL_get_peer_quic_transport_version(const SSL *ssl);

int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c);

void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled);

#  endif

# ifdef  __cplusplus
}
# endif
#endif
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
 * WARNING: do not edit!
 * Generated by makefile from include/openssl/ssl.h.in
 *
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
 * Copyright 2005 Nokia. All rights reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_SSL_H
# define OPENSSL_SSL_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_SSL_H
# endif

# include <openssl/e_os2.h>
# include <openssl/opensslconf.h>
# include <openssl/comp.h>
# include <openssl/bio.h>
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  include <openssl/x509.h>
#  include <openssl/crypto.h>
#  include <openssl/buffer.h>
# endif
# include <openssl/lhash.h>
# include <openssl/pem.h>
# include <openssl/hmac.h>
# include <openssl/async.h>

# include <openssl/safestack.h>
# include <openssl/symhacks.h>
# include <openssl/ct.h>
# include <openssl/sslerr.h>
# include <openssl/prov_ssl.h>

#ifdef  __cplusplus
extern "C" {
#endif

/* OpenSSL version number for ASN.1 encoding of the session information */
/*-
 * Version 0 - initial version
 * Version 1 - added the optional peer certificate
 */
# define SSL_SESSION_ASN1_VERSION 0x0001

# define SSL_MAX_SSL_SESSION_ID_LENGTH           32
# define SSL_MAX_SID_CTX_LENGTH                  32

# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES     (512/8)
# define SSL_MAX_KEY_ARG_LENGTH                  8
/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */

/* The maximum number of encrypt/decrypt pipelines we can support */
# define SSL_MAX_PIPELINES  32

/* text strings for the ciphers */

/* These are used to specify which ciphers to use and not to use */

# define SSL_TXT_LOW             "LOW"
# define SSL_TXT_MEDIUM          "MEDIUM"
# define SSL_TXT_HIGH            "HIGH"
# define SSL_TXT_FIPS            "FIPS"

# define SSL_TXT_aNULL           "aNULL"
# define SSL_TXT_eNULL           "eNULL"
# define SSL_TXT_NULL            "NULL"

# define SSL_TXT_kRSA            "kRSA"
# define SSL_TXT_kDHr            "kDHr"/* this cipher class has been removed */
# define SSL_TXT_kDHd            "kDHd"/* this cipher class has been removed */
# define SSL_TXT_kDH             "kDH"/* this cipher class has been removed */
# define SSL_TXT_kEDH            "kEDH"/* alias for kDHE */
# define SSL_TXT_kDHE            "kDHE"
# define SSL_TXT_kECDHr          "kECDHr"/* this cipher class has been removed */
# define SSL_TXT_kECDHe          "kECDHe"/* this cipher class has been removed */
# define SSL_TXT_kECDH           "kECDH"/* this cipher class has been removed */
# define SSL_TXT_kEECDH          "kEECDH"/* alias for kECDHE */
# define SSL_TXT_kECDHE          "kECDHE"
# define SSL_TXT_kPSK            "kPSK"
# define SSL_TXT_kRSAPSK         "kRSAPSK"
# define SSL_TXT_kECDHEPSK       "kECDHEPSK"
# define SSL_TXT_kDHEPSK         "kDHEPSK"
# define SSL_TXT_kGOST           "kGOST"
# define SSL_TXT_kGOST18         "kGOST18"
# define SSL_TXT_kSRP            "kSRP"

# define SSL_TXT_aRSA            "aRSA"
# define SSL_TXT_aDSS            "aDSS"
# define SSL_TXT_aDH             "aDH"/* this cipher class has been removed */
# define SSL_TXT_aECDH           "aECDH"/* this cipher class has been removed */
# define SSL_TXT_aECDSA          "aECDSA"
# define SSL_TXT_aPSK            "aPSK"
# define SSL_TXT_aGOST94         "aGOST94"
# define SSL_TXT_aGOST01         "aGOST01"
# define SSL_TXT_aGOST12         "aGOST12"
# define SSL_TXT_aGOST           "aGOST"
# define SSL_TXT_aSRP            "aSRP"

# define SSL_TXT_DSS             "DSS"
# define SSL_TXT_DH              "DH"
# define SSL_TXT_DHE             "DHE"/* same as "kDHE:-ADH" */
# define SSL_TXT_EDH             "EDH"/* alias for DHE */
# define SSL_TXT_ADH             "ADH"
# define SSL_TXT_RSA             "RSA"
# define SSL_TXT_ECDH            "ECDH"
# define SSL_TXT_EECDH           "EECDH"/* alias for ECDHE" */
# define SSL_TXT_ECDHE           "ECDHE"/* same as "kECDHE:-AECDH" */
# define SSL_TXT_AECDH           "AECDH"
# define SSL_TXT_ECDSA           "ECDSA"
# define SSL_TXT_PSK             "PSK"
# define SSL_TXT_SRP             "SRP"

# define SSL_TXT_DES             "DES"
# define SSL_TXT_3DES            "3DES"
# define SSL_TXT_RC4             "RC4"
# define SSL_TXT_RC2             "RC2"
# define SSL_TXT_IDEA            "IDEA"
# define SSL_TXT_SEED            "SEED"
# define SSL_TXT_AES128          "AES128"
# define SSL_TXT_AES256          "AES256"
# define SSL_TXT_AES             "AES"
# define SSL_TXT_AES_GCM         "AESGCM"
# define SSL_TXT_AES_CCM         "AESCCM"
# define SSL_TXT_AES_CCM_8       "AESCCM8"
# define SSL_TXT_CAMELLIA128     "CAMELLIA128"
# define SSL_TXT_CAMELLIA256     "CAMELLIA256"
# define SSL_TXT_CAMELLIA        "CAMELLIA"
# define SSL_TXT_CHACHA20        "CHACHA20"
# define SSL_TXT_GOST            "GOST89"
# define SSL_TXT_ARIA            "ARIA"
# define SSL_TXT_ARIA_GCM        "ARIAGCM"
# define SSL_TXT_ARIA128         "ARIA128"
# define SSL_TXT_ARIA256         "ARIA256"
# define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912"
# define SSL_TXT_CBC             "CBC"

# define SSL_TXT_MD5             "MD5"
# define SSL_TXT_SHA1            "SHA1"
# define SSL_TXT_SHA             "SHA"/* same as "SHA1" */
# define SSL_TXT_GOST94          "GOST94"
# define SSL_TXT_GOST89MAC       "GOST89MAC"
# define SSL_TXT_GOST12          "GOST12"
# define SSL_TXT_GOST89MAC12     "GOST89MAC12"
# define SSL_TXT_SHA256          "SHA256"
# define SSL_TXT_SHA384          "SHA384"

# define SSL_TXT_SSLV3           "SSLv3"
# define SSL_TXT_TLSV1           "TLSv1"
# define SSL_TXT_TLSV1_1         "TLSv1.1"
# define SSL_TXT_TLSV1_2         "TLSv1.2"

# define SSL_TXT_ALL             "ALL"

/*-
 * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
 * ciphers normally not being used.
 * Example: "RC4" will activate all ciphers using RC4 including ciphers
 * without authentication, which would normally disabled by DEFAULT (due
 * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT"
 * will make sure that it is also disabled in the specific selection.
 * COMPLEMENTOF* identifiers are portable between version, as adjustments
 * to the default cipher setup will also be included here.
 *
 * COMPLEMENTOFDEFAULT does not experience the same special treatment that
 * DEFAULT gets, as only selection is being done and no sorting as needed
 * for DEFAULT.
 */
# define SSL_TXT_CMPALL          "COMPLEMENTOFALL"
# define SSL_TXT_CMPDEF          "COMPLEMENTOFDEFAULT"

/*
 * The following cipher list is used by default. It also is substituted when
 * an application-defined cipher list string starts with 'DEFAULT'.
 * This applies to ciphersuites for TLSv1.2 and below.
 * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list()
 * Update both macro and function simultaneously
 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL"
/*
 * This is the default set of TLSv1.3 ciphersuites
 * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites()
 * Update both macro and function simultaneously
 */
#  define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \
                                   "TLS_CHACHA20_POLY1305_SHA256:" \
                                   "TLS_AES_128_GCM_SHA256"
# endif
/*
 * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always
 * starts with a reasonable order, and all we have to do for DEFAULT is
 * throwing out anonymous and unencrypted ciphersuites! (The latter are not
 * actually enabled by ALL, but "ALL:RSA" would enable some of them.)
 */

/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
# define SSL_SENT_SHUTDOWN       1
# define SSL_RECEIVED_SHUTDOWN   2

#ifdef __cplusplus
}
#endif

#ifdef  __cplusplus
extern "C" {
#endif

# define SSL_FILETYPE_ASN1       X509_FILETYPE_ASN1
# define SSL_FILETYPE_PEM        X509_FILETYPE_PEM

/*
 * This is needed to stop compilers complaining about the 'struct ssl_st *'
 * function parameters used to prototype callbacks in SSL_CTX.
 */
typedef struct ssl_st *ssl_crock_st;
typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
typedef struct ssl_method_st SSL_METHOD;
typedef struct ssl_cipher_st SSL_CIPHER;
typedef struct ssl_session_st SSL_SESSION;
typedef struct tls_sigalgs_st TLS_SIGALGS;
typedef struct ssl_conf_ctx_st SSL_CONF_CTX;
typedef struct ssl_comp_st SSL_COMP;

STACK_OF(SSL_CIPHER);
STACK_OF(SSL_COMP);

/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/
typedef struct srtp_protection_profile_st {
    const char *name;
    unsigned long id;
} SRTP_PROTECTION_PROFILE;
SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE)
#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx)))
#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))
#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null())
#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n)))
#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n))
#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i)))
#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))
#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx))
#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum)
#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)))
#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))



typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data,
                                            int len, void *arg);
typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len,
                                        STACK_OF(SSL_CIPHER) *peer_ciphers,
                                        const SSL_CIPHER **cipher, void *arg);

/* Extension context codes */
/* This extension is only allowed in TLS */
#define SSL_EXT_TLS_ONLY                        0x0001
/* This extension is only allowed in DTLS */
#define SSL_EXT_DTLS_ONLY                       0x0002
/* Some extensions may be allowed in DTLS but we don't implement them for it */
#define SSL_EXT_TLS_IMPLEMENTATION_ONLY         0x0004
/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */
#define SSL_EXT_SSL3_ALLOWED                    0x0008
/* Extension is only defined for TLS1.2 and below */
#define SSL_EXT_TLS1_2_AND_BELOW_ONLY           0x0010
/* Extension is only defined for TLS1.3 and above */
#define SSL_EXT_TLS1_3_ONLY                     0x0020
/* Ignore this extension during parsing if we are resuming */
#define SSL_EXT_IGNORE_ON_RESUMPTION            0x0040
#define SSL_EXT_CLIENT_HELLO                    0x0080
/* Really means TLS1.2 or below */
#define SSL_EXT_TLS1_2_SERVER_HELLO             0x0100
#define SSL_EXT_TLS1_3_SERVER_HELLO             0x0200
#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS     0x0400
#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST      0x0800
#define SSL_EXT_TLS1_3_CERTIFICATE              0x1000
#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET       0x2000
#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST      0x4000

/* Typedefs for handling custom extensions */

typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
                                 const unsigned char **out, size_t *outlen,
                                 int *al, void *add_arg);

typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
                                   const unsigned char *out, void *add_arg);

typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
                                   const unsigned char *in, size_t inlen,
                                   int *al, void *parse_arg);


typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type,
                                        unsigned int context,
                                        const unsigned char **out,
                                        size_t *outlen, X509 *x,
                                        size_t chainidx,
                                        int *al, void *add_arg);

typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type,
                                          unsigned int context,
                                          const unsigned char *out,
                                          void *add_arg);

typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type,
                                          unsigned int context,
                                          const unsigned char *in,
                                          size_t inlen, X509 *x,
                                          size_t chainidx,
                                          int *al, void *parse_arg);

/* Typedef for verification callback */
typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx);

/* Typedef for SSL async callback */
typedef int (*SSL_async_callback_fn)(SSL *s, void *arg);

#define SSL_OP_BIT(n)  ((uint64_t)1 << (uint64_t)n)

/*
 * SSL/TLS connection options.
 */
    /* Disable Extended master secret */
# define SSL_OP_NO_EXTENDED_MASTER_SECRET                SSL_OP_BIT(0)
    /* Cleanse plaintext copies of data delivered to the application */
# define SSL_OP_CLEANSE_PLAINTEXT                        SSL_OP_BIT(1)
    /* Allow initial connection to servers that don't support RI */
# define SSL_OP_LEGACY_SERVER_CONNECT                    SSL_OP_BIT(2)
    /* Enable support for Kernel TLS */
# define SSL_OP_ENABLE_KTLS                              SSL_OP_BIT(3)
# define SSL_OP_TLSEXT_PADDING                           SSL_OP_BIT(4)
# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG                   SSL_OP_BIT(6)
# define SSL_OP_IGNORE_UNEXPECTED_EOF                    SSL_OP_BIT(7)
# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION               SSL_OP_BIT(8)
# define SSL_OP_DISABLE_TLSEXT_CA_NAMES                  SSL_OP_BIT(9)
    /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */
# define SSL_OP_ALLOW_NO_DHE_KEX                         SSL_OP_BIT(10)
    /*
     * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
     * in OpenSSL 0.9.6d.  Usually (depending on the application protocol)
     * the workaround is not needed.  Unfortunately some broken SSL/TLS
     * implementations cannot handle it at all, which is why we include it
     * in SSL_OP_ALL. Added in 0.9.6e
     */
# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS              SSL_OP_BIT(11)
    /* DTLS options */
# define SSL_OP_NO_QUERY_MTU                             SSL_OP_BIT(12)
    /* Turn on Cookie Exchange (on relevant for servers) */
# define SSL_OP_COOKIE_EXCHANGE                          SSL_OP_BIT(13)
    /* Don't use RFC4507 ticket extension */
# define SSL_OP_NO_TICKET                                SSL_OP_BIT(14)
# ifndef OPENSSL_NO_DTLS1_METHOD
    /*
     * Use Cisco's version identifier of DTLS_BAD_VER
     * (only with deprecated DTLSv1_client_method())
     */
#  define SSL_OP_CISCO_ANYCONNECT                        SSL_OP_BIT(15)
# endif
    /* As server, disallow session resumption on renegotiation */
# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION   SSL_OP_BIT(16)
    /* Don't use compression even if supported */
# define SSL_OP_NO_COMPRESSION                           SSL_OP_BIT(17)
    /* Permit unsafe legacy renegotiation */
# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION        SSL_OP_BIT(18)
    /* Disable encrypt-then-mac */
# define SSL_OP_NO_ENCRYPT_THEN_MAC                      SSL_OP_BIT(19)
    /*
     * Enable TLSv1.3 Compatibility mode. This is on by default. A future
     * version of OpenSSL may have this disabled by default.
     */
# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT                  SSL_OP_BIT(20)
    /*
     * Prioritize Chacha20Poly1305 when client does.
     * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE
     */
# define SSL_OP_PRIORITIZE_CHACHA                        SSL_OP_BIT(21)
    /*
     * Set on servers to choose the cipher according to server's preferences.
     */
# define SSL_OP_CIPHER_SERVER_PREFERENCE                 SSL_OP_BIT(22)
    /*
     * If set, a server will allow a client to issue a SSLv3.0 version
     * number as latest version supported in the premaster secret, even when
     * TLSv1.0 (version 3.1) was announced in the client hello. Normally
     * this is forbidden to prevent version rollback attacks.
     */
# define SSL_OP_TLS_ROLLBACK_BUG                         SSL_OP_BIT(23)
    /*
     * Switches off automatic TLSv1.3 anti-replay protection for early data.
     * This is a server-side option only (no effect on the client).
     */
# define SSL_OP_NO_ANTI_REPLAY                           SSL_OP_BIT(24)
# define SSL_OP_NO_SSLv3                                 SSL_OP_BIT(25)
# define SSL_OP_NO_TLSv1                                 SSL_OP_BIT(26)
# define SSL_OP_NO_TLSv1_2                               SSL_OP_BIT(27)
# define SSL_OP_NO_TLSv1_1                               SSL_OP_BIT(28)
# define SSL_OP_NO_TLSv1_3                               SSL_OP_BIT(29)
# define SSL_OP_NO_DTLSv1                                SSL_OP_BIT(26)
# define SSL_OP_NO_DTLSv1_2                              SSL_OP_BIT(27)
    /* Disallow all renegotiation */
# define SSL_OP_NO_RENEGOTIATION                         SSL_OP_BIT(30)
    /*
     * Make server add server-hello extension from early version of
     * cryptopro draft, when GOST ciphersuite is negotiated. Required for
     * interoperability with CryptoPro CSP 3.x
     */
# define SSL_OP_CRYPTOPRO_TLSEXT_BUG                     SSL_OP_BIT(31)

/*
 * Option "collections."
 */
# define SSL_OP_NO_SSL_MASK \
        ( SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \
          | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 )
# define SSL_OP_NO_DTLS_MASK \
        ( SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2 )

/* Various bug workarounds that should be rather harmless. */
# define SSL_OP_ALL \
        ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \
          | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG )

/*
 * OBSOLETE OPTIONS retained for compatibility
 */

# define SSL_OP_MICROSOFT_SESS_ID_BUG                    0x0
# define SSL_OP_NETSCAPE_CHALLENGE_BUG                   0x0
# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG         0x0
# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG              0x0
# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER               0x0
# define SSL_OP_MSIE_SSLV2_RSA_PADDING                   0x0
# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG                 0x0
# define SSL_OP_TLS_D5_BUG                               0x0
# define SSL_OP_TLS_BLOCK_PADDING_BUG                    0x0
# define SSL_OP_SINGLE_ECDH_USE                          0x0
# define SSL_OP_SINGLE_DH_USE                            0x0
# define SSL_OP_EPHEMERAL_RSA                            0x0
# define SSL_OP_NO_SSLv2                                 0x0
# define SSL_OP_PKCS1_CHECK_1                            0x0
# define SSL_OP_PKCS1_CHECK_2                            0x0
# define SSL_OP_NETSCAPE_CA_DN_BUG                       0x0
# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG          0x0

/*
 * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
 * when just a single record has been written):
 */
# define SSL_MODE_ENABLE_PARTIAL_WRITE       0x00000001U
/*
 * Make it possible to retry SSL_write() with changed buffer location (buffer
 * contents must stay the same!); this is not the default to avoid the
 * misconception that non-blocking SSL_write() behaves like non-blocking
 * write():
 */
# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U
/*
 * Never bother the application with retries if the transport is blocking:
 */
# define SSL_MODE_AUTO_RETRY 0x00000004U
/* Don't attempt to automatically build certificate chain */
# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U
/*
 * Save RAM by releasing read and write buffers when they're empty. (SSL3 and
 * TLS only.) Released buffers are freed.
 */
# define SSL_MODE_RELEASE_BUFFERS 0x00000010U
/*
 * Send the current time in the Random fields of the ClientHello and
 * ServerHello records for compatibility with hypothetical implementations
 * that require it.
 */
# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U
# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U
/*
 * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications
 * that reconnect with a downgraded protocol version; see
 * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your
 * application attempts a normal handshake. Only use this in explicit
 * fallback retries, following the guidance in
 * draft-ietf-tls-downgrade-scsv-00.
 */
# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U
/*
 * Support Asynchronous operation
 */
# define SSL_MODE_ASYNC 0x00000100U

/*
 * When using DTLS/SCTP, include the terminating zero in the label
 * used for computing the endpoint-pair shared secret. Required for
 * interoperability with implementations having this bug like these
 * older version of OpenSSL:
 * - OpenSSL 1.0.0 series
 * - OpenSSL 1.0.1 series
 * - OpenSSL 1.0.2 series
 * - OpenSSL 1.1.0 series
 * - OpenSSL 1.1.1 and 1.1.1a
 */
# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U

/* Cert related flags */
/*
 * Many implementations ignore some aspects of the TLS standards such as
 * enforcing certificate chain algorithms. When this is set we enforce them.
 */
# define SSL_CERT_FLAG_TLS_STRICT                0x00000001U

/* Suite B modes, takes same values as certificate verify flags */
# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY       0x10000
/* Suite B 192 bit only mode */
# define SSL_CERT_FLAG_SUITEB_192_LOS            0x20000
/* Suite B 128 bit mode allowing 192 bit algorithms */
# define SSL_CERT_FLAG_SUITEB_128_LOS            0x30000

/* Perform all sorts of protocol violations for testing purposes */
# define SSL_CERT_FLAG_BROKEN_PROTOCOL           0x10000000

/* Flags for building certificate chains */
/* Treat any existing certificates as untrusted CAs */
# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED          0x1
/* Don't include root CA in chain */
# define SSL_BUILD_CHAIN_FLAG_NO_ROOT            0x2
/* Just check certificates already there */
# define SSL_BUILD_CHAIN_FLAG_CHECK              0x4
/* Ignore verification errors */
# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR       0x8
/* Clear verification errors from queue */
# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR        0x10

/* Flags returned by SSL_check_chain */
/* Certificate can be used with this session */
# define CERT_PKEY_VALID         0x1
/* Certificate can also be used for signing */
# define CERT_PKEY_SIGN          0x2
/* EE certificate signing algorithm OK */
# define CERT_PKEY_EE_SIGNATURE  0x10
/* CA signature algorithms OK */
# define CERT_PKEY_CA_SIGNATURE  0x20
/* EE certificate parameters OK */
# define CERT_PKEY_EE_PARAM      0x40
/* CA certificate parameters OK */
# define CERT_PKEY_CA_PARAM      0x80
/* Signing explicitly allowed as opposed to SHA1 fallback */
# define CERT_PKEY_EXPLICIT_SIGN 0x100
/* Client CA issuer names match (always set for server cert) */
# define CERT_PKEY_ISSUER_NAME   0x200
/* Cert type matches client types (always set for server cert) */
# define CERT_PKEY_CERT_TYPE     0x400
/* Cert chain suitable to Suite B */
# define CERT_PKEY_SUITEB        0x800

# define SSL_CONF_FLAG_CMDLINE           0x1
# define SSL_CONF_FLAG_FILE              0x2
# define SSL_CONF_FLAG_CLIENT            0x4
# define SSL_CONF_FLAG_SERVER            0x8
# define SSL_CONF_FLAG_SHOW_ERRORS       0x10
# define SSL_CONF_FLAG_CERTIFICATE       0x20
# define SSL_CONF_FLAG_REQUIRE_PRIVATE   0x40
/* Configuration value types */
# define SSL_CONF_TYPE_UNKNOWN           0x0
# define SSL_CONF_TYPE_STRING            0x1
# define SSL_CONF_TYPE_FILE              0x2
# define SSL_CONF_TYPE_DIR               0x3
# define SSL_CONF_TYPE_NONE              0x4
# define SSL_CONF_TYPE_STORE             0x5

/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */
# define SSL_COOKIE_LENGTH                       4096

/*
 * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they
 * cannot be used to clear bits.
 */

uint64_t SSL_CTX_get_options(const SSL_CTX *ctx);
uint64_t SSL_get_options(const SSL *s);
uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op);
uint64_t SSL_clear_options(SSL *s, uint64_t op);
uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op);
uint64_t SSL_set_options(SSL *s, uint64_t op);

# define SSL_CTX_set_mode(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
# define SSL_CTX_clear_mode(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL)
# define SSL_CTX_get_mode(ctx) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)
# define SSL_clear_mode(ssl,op) \
        SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL)
# define SSL_set_mode(ssl,op) \
        SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)
# define SSL_get_mode(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)
# define SSL_set_mtu(ssl, mtu) \
        SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)
# define DTLS_set_link_mtu(ssl, mtu) \
        SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL)
# define DTLS_get_link_min_mtu(ssl) \
        SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL)

# define SSL_get_secure_renegotiation_support(ssl) \
        SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)

# define SSL_CTX_set_cert_flags(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL)
# define SSL_set_cert_flags(s,op) \
        SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL)
# define SSL_CTX_clear_cert_flags(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)
# define SSL_clear_cert_flags(s,op) \
        SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)

void SSL_CTX_set_msg_callback(SSL_CTX *ctx,
                              void (*cb) (int write_p, int version,
                                          int content_type, const void *buf,
                                          size_t len, SSL *ssl, void *arg));
void SSL_set_msg_callback(SSL *ssl,
                          void (*cb) (int write_p, int version,
                                      int content_type, const void *buf,
                                      size_t len, SSL *ssl, void *arg));
# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))

# define SSL_get_extms_support(s) \
        SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL)

# ifndef OPENSSL_NO_SRP
/* see tls_srp.c */
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s,
                                                                    int *ad);
OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s);
#  endif
# endif

/* 100k max cert list */
# define SSL_MAX_CERT_LIST_DEFAULT (1024*100)

# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT      (1024*20)

/*
 * This callback type is used inside SSL_CTX, SSL, and in the functions that
 * set them. It is used to override the generation of SSL/TLS session IDs in
 * a server. Return value should be zero on an error, non-zero to proceed.
 * Also, callbacks should themselves check if the id they generate is unique
 * otherwise the SSL handshake will fail with an error - callbacks can do
 * this using the 'ssl' value they're passed by;
 * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in
 * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32
 * bytes. The callback can alter this length to be less if desired. It is
 * also an error for the callback to set the size to zero.
 */
typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id,
                               unsigned int *id_len);

# define SSL_SESS_CACHE_OFF                      0x0000
# define SSL_SESS_CACHE_CLIENT                   0x0001
# define SSL_SESS_CACHE_SERVER                   0x0002
# define SSL_SESS_CACHE_BOTH     (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
# define SSL_SESS_CACHE_NO_AUTO_CLEAR            0x0080
/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */
# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP       0x0100
# define SSL_SESS_CACHE_NO_INTERNAL_STORE        0x0200
# define SSL_SESS_CACHE_NO_INTERNAL \
        (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)
# define SSL_SESS_CACHE_UPDATE_TIME              0x0400

LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx);
# define SSL_CTX_sess_number(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
# define SSL_CTX_sess_connect(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
# define SSL_CTX_sess_connect_good(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
# define SSL_CTX_sess_connect_renegotiate(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
# define SSL_CTX_sess_accept(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
# define SSL_CTX_sess_accept_renegotiate(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
# define SSL_CTX_sess_accept_good(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
# define SSL_CTX_sess_hits(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
# define SSL_CTX_sess_cb_hits(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
# define SSL_CTX_sess_misses(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
# define SSL_CTX_sess_timeouts(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
# define SSL_CTX_sess_cache_full(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)

void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx,
                             int (*new_session_cb) (struct ssl_st *ssl,
                                                    SSL_SESSION *sess));
int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
                                              SSL_SESSION *sess);
void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
                                void (*remove_session_cb) (struct ssl_ctx_st
                                                           *ctx,
                                                           SSL_SESSION *sess));
void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx,
                                                  SSL_SESSION *sess);
void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,
                             SSL_SESSION *(*get_session_cb) (struct ssl_st
                                                             *ssl,
                                                             const unsigned char
                                                             *data, int len,
                                                             int *copy));
SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
                                                       const unsigned char *data,
                                                       int len, int *copy);
void SSL_CTX_set_info_callback(SSL_CTX *ctx,
                               void (*cb) (const SSL *ssl, int type, int val));
void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type,
                                                 int val);
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
                                int (*client_cert_cb) (SSL *ssl, X509 **x509,
                                                       EVP_PKEY **pkey));
int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509,
                                                 EVP_PKEY **pkey);
# ifndef OPENSSL_NO_ENGINE
__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e);
# endif
void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx,
                                    int (*app_gen_cookie_cb) (SSL *ssl,
                                                              unsigned char
                                                              *cookie,
                                                              unsigned int
                                                              *cookie_len));
void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
                                  int (*app_verify_cookie_cb) (SSL *ssl,
                                                               const unsigned
                                                               char *cookie,
                                                               unsigned int
                                                               cookie_len));

void SSL_CTX_set_stateless_cookie_generate_cb(
    SSL_CTX *ctx,
    int (*gen_stateless_cookie_cb) (SSL *ssl,
                                    unsigned char *cookie,
                                    size_t *cookie_len));
void SSL_CTX_set_stateless_cookie_verify_cb(
    SSL_CTX *ctx,
    int (*verify_stateless_cookie_cb) (SSL *ssl,
                                       const unsigned char *cookie,
                                       size_t cookie_len));
# ifndef OPENSSL_NO_NEXTPROTONEG

typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl,
                                              const unsigned char **out,
                                              unsigned int *outlen,
                                              void *arg);
void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s,
                                           SSL_CTX_npn_advertised_cb_func cb,
                                           void *arg);
#  define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb

typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s,
                                          unsigned char **out,
                                          unsigned char *outlen,
                                          const unsigned char *in,
                                          unsigned int inlen,
                                          void *arg);
void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
                                      SSL_CTX_npn_select_cb_func cb,
                                      void *arg);
#  define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb

void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
                                    unsigned *len);
#  define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated
# endif

__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
                                 const unsigned char *in, unsigned int inlen,
                                 const unsigned char *client,
                                 unsigned int client_len);

# define OPENSSL_NPN_UNSUPPORTED 0
# define OPENSSL_NPN_NEGOTIATED  1
# define OPENSSL_NPN_NO_OVERLAP  2

__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos,
                                   unsigned int protos_len);
__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
                               unsigned int protos_len);
typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl,
                                           const unsigned char **out,
                                           unsigned char *outlen,
                                           const unsigned char *in,
                                           unsigned int inlen,
                                           void *arg);
void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
                                SSL_CTX_alpn_select_cb_func cb,
                                void *arg);
void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
                            unsigned int *len);

# ifndef OPENSSL_NO_PSK
/*
 * the maximum length of the buffer given to callbacks containing the
 * resulting identity/psk
 */
#  define PSK_MAX_IDENTITY_LEN 256
#  define PSK_MAX_PSK_LEN 512
typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl,
                                               const char *hint,
                                               char *identity,
                                               unsigned int max_identity_len,
                                               unsigned char *psk,
                                               unsigned int max_psk_len);
void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb);
void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb);

typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl,
                                               const char *identity,
                                               unsigned char *psk,
                                               unsigned int max_psk_len);
void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb);
void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb);

__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint);
__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint);
const char *SSL_get_psk_identity_hint(const SSL *s);
const char *SSL_get_psk_identity(const SSL *s);
# endif

typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl,
                                            const unsigned char *identity,
                                            size_t identity_len,
                                            SSL_SESSION **sess);
typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md,
                                           const unsigned char **id,
                                           size_t *idlen,
                                           SSL_SESSION **sess);

void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb);
void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx,
                                           SSL_psk_find_session_cb_func cb);
void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb);
void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx,
                                          SSL_psk_use_session_cb_func cb);

/* Register callbacks to handle custom TLS Extensions for client or server. */

__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx,
                                         unsigned int ext_type);

__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx,
                                         unsigned int ext_type,
                                         custom_ext_add_cb add_cb,
                                         custom_ext_free_cb free_cb,
                                         void *add_arg,
                                         custom_ext_parse_cb parse_cb,
                                         void *parse_arg);

__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx,
                                         unsigned int ext_type,
                                         custom_ext_add_cb add_cb,
                                         custom_ext_free_cb free_cb,
                                         void *add_arg,
                                         custom_ext_parse_cb parse_cb,
                                         void *parse_arg);

__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                                  unsigned int context,
                                  SSL_custom_ext_add_cb_ex add_cb,
                                  SSL_custom_ext_free_cb_ex free_cb,
                                  void *add_arg,
                                  SSL_custom_ext_parse_cb_ex parse_cb,
                                  void *parse_arg);

__owur int SSL_extension_supported(unsigned int ext_type);

# define SSL_NOTHING            1
# define SSL_WRITING            2
# define SSL_READING            3
# define SSL_X509_LOOKUP        4
# define SSL_ASYNC_PAUSED       5
# define SSL_ASYNC_NO_JOBS      6
# define SSL_CLIENT_HELLO_CB    7
# define SSL_RETRY_VERIFY       8

/* These will only be used when doing non-blocking IO */
# define SSL_want_nothing(s)         (SSL_want(s) == SSL_NOTHING)
# define SSL_want_read(s)            (SSL_want(s) == SSL_READING)
# define SSL_want_write(s)           (SSL_want(s) == SSL_WRITING)
# define SSL_want_x509_lookup(s)     (SSL_want(s) == SSL_X509_LOOKUP)
# define SSL_want_retry_verify(s)    (SSL_want(s) == SSL_RETRY_VERIFY)
# define SSL_want_async(s)           (SSL_want(s) == SSL_ASYNC_PAUSED)
# define SSL_want_async_job(s)       (SSL_want(s) == SSL_ASYNC_NO_JOBS)
# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB)

# define SSL_MAC_FLAG_READ_MAC_STREAM 1
# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2
# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4
# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8

/*
 * A callback for logging out TLS key material. This callback should log out
 * |line| followed by a newline.
 */
typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line);

/*
 * SSL_CTX_set_keylog_callback configures a callback to log key material. This
 * is intended for debugging use with tools like Wireshark. The cb function
 * should log line followed by a newline.
 */
void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb);

/*
 * SSL_CTX_get_keylog_callback returns the callback configured by
 * SSL_CTX_set_keylog_callback.
 */
SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx);

int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data);
uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx);
int SSL_set_max_early_data(SSL *s, uint32_t max_early_data);
uint32_t SSL_get_max_early_data(const SSL *s);
int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data);
uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx);
int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data);
uint32_t SSL_get_recv_max_early_data(const SSL *s);

#ifdef __cplusplus
}
#endif

# include <openssl/ssl2.h>
# include <openssl/ssl3.h>
# include <openssl/tls1.h>      /* This is mostly sslv3 with a few tweaks */
# include <openssl/dtls1.h>     /* Datagram TLS */
# include <openssl/srtp.h>      /* Support for the use_srtp extension */

#ifdef  __cplusplus
extern "C" {
#endif

/*
 * These need to be after the above set of includes due to a compiler bug
 * in VisualStudio 2015
 */
SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER)
#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx)))
#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp)))
#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null())
#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n)))
#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n))
#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i)))
#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)))
#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc))
#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx))
#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr)))
#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum)
#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc)))
#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP)
#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx)))
#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp)))
#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null())
#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n)))
#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n))
#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i)))
#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)))
#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc))
#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx))
#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr)))
#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum)
#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc)))
#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp)))


/* compatibility */
# define SSL_set_app_data(s,arg)         (SSL_set_ex_data(s,0,(char *)(arg)))
# define SSL_get_app_data(s)             (SSL_get_ex_data(s,0))
# define SSL_SESSION_set_app_data(s,a)   (SSL_SESSION_set_ex_data(s,0, \
                                                                  (char *)(a)))
# define SSL_SESSION_get_app_data(s)     (SSL_SESSION_get_ex_data(s,0))
# define SSL_CTX_get_app_data(ctx)       (SSL_CTX_get_ex_data(ctx,0))
# define SSL_CTX_set_app_data(ctx,arg)   (SSL_CTX_set_ex_data(ctx,0, \
                                                              (char *)(arg)))
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug);
# endif

/* TLSv1.3 KeyUpdate message types */
/* -1 used so that this is an invalid value for the on-the-wire protocol */
#define SSL_KEY_UPDATE_NONE             -1
/* Values as defined for the on-the-wire protocol */
#define SSL_KEY_UPDATE_NOT_REQUESTED     0
#define SSL_KEY_UPDATE_REQUESTED         1

/*
 * The valid handshake states (one for each type message sent and one for each
 * type of message received). There are also two "special" states:
 * TLS = TLS or DTLS state
 * DTLS = DTLS specific state
 * CR/SR = Client Read/Server Read
 * CW/SW = Client Write/Server Write
 *
 * The "special" states are:
 * TLS_ST_BEFORE = No handshake has been initiated yet
 * TLS_ST_OK = A handshake has been successfully completed
 */
typedef enum {
    TLS_ST_BEFORE,
    TLS_ST_OK,
    DTLS_ST_CR_HELLO_VERIFY_REQUEST,
    TLS_ST_CR_SRVR_HELLO,
    TLS_ST_CR_CERT,
    TLS_ST_CR_CERT_STATUS,
    TLS_ST_CR_KEY_EXCH,
    TLS_ST_CR_CERT_REQ,
    TLS_ST_CR_SRVR_DONE,
    TLS_ST_CR_SESSION_TICKET,
    TLS_ST_CR_CHANGE,
    TLS_ST_CR_FINISHED,
    TLS_ST_CW_CLNT_HELLO,
    TLS_ST_CW_CERT,
    TLS_ST_CW_KEY_EXCH,
    TLS_ST_CW_CERT_VRFY,
    TLS_ST_CW_CHANGE,
    TLS_ST_CW_NEXT_PROTO,
    TLS_ST_CW_FINISHED,
    TLS_ST_SW_HELLO_REQ,
    TLS_ST_SR_CLNT_HELLO,
    DTLS_ST_SW_HELLO_VERIFY_REQUEST,
    TLS_ST_SW_SRVR_HELLO,
    TLS_ST_SW_CERT,
    TLS_ST_SW_KEY_EXCH,
    TLS_ST_SW_CERT_REQ,
    TLS_ST_SW_SRVR_DONE,
    TLS_ST_SR_CERT,
    TLS_ST_SR_KEY_EXCH,
    TLS_ST_SR_CERT_VRFY,
    TLS_ST_SR_NEXT_PROTO,
    TLS_ST_SR_CHANGE,
    TLS_ST_SR_FINISHED,
    TLS_ST_SW_SESSION_TICKET,
    TLS_ST_SW_CERT_STATUS,
    TLS_ST_SW_CHANGE,
    TLS_ST_SW_FINISHED,
    TLS_ST_SW_ENCRYPTED_EXTENSIONS,
    TLS_ST_CR_ENCRYPTED_EXTENSIONS,
    TLS_ST_CR_CERT_VRFY,
    TLS_ST_SW_CERT_VRFY,
    TLS_ST_CR_HELLO_REQ,
    TLS_ST_SW_KEY_UPDATE,
    TLS_ST_CW_KEY_UPDATE,
    TLS_ST_SR_KEY_UPDATE,
    TLS_ST_CR_KEY_UPDATE,
    TLS_ST_EARLY_DATA,
    TLS_ST_PENDING_EARLY_DATA_END,
    TLS_ST_CW_END_OF_EARLY_DATA,
    TLS_ST_SR_END_OF_EARLY_DATA
} OSSL_HANDSHAKE_STATE;

/*
 * Most of the following state values are no longer used and are defined to be
 * the closest equivalent value in the current state machine code. Not all
 * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT
 * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP,
 * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT.
 */

# define SSL_ST_CONNECT                  0x1000
# define SSL_ST_ACCEPT                   0x2000

# define SSL_ST_MASK                     0x0FFF

# define SSL_CB_LOOP                     0x01
# define SSL_CB_EXIT                     0x02
# define SSL_CB_READ                     0x04
# define SSL_CB_WRITE                    0x08
# define SSL_CB_ALERT                    0x4000/* used in callback */
# define SSL_CB_READ_ALERT               (SSL_CB_ALERT|SSL_CB_READ)
# define SSL_CB_WRITE_ALERT              (SSL_CB_ALERT|SSL_CB_WRITE)
# define SSL_CB_ACCEPT_LOOP              (SSL_ST_ACCEPT|SSL_CB_LOOP)
# define SSL_CB_ACCEPT_EXIT              (SSL_ST_ACCEPT|SSL_CB_EXIT)
# define SSL_CB_CONNECT_LOOP             (SSL_ST_CONNECT|SSL_CB_LOOP)
# define SSL_CB_CONNECT_EXIT             (SSL_ST_CONNECT|SSL_CB_EXIT)
# define SSL_CB_HANDSHAKE_START          0x10
# define SSL_CB_HANDSHAKE_DONE           0x20

/* Is the SSL_connection established? */
# define SSL_in_connect_init(a)          (SSL_in_init(a) && !SSL_is_server(a))
# define SSL_in_accept_init(a)           (SSL_in_init(a) && SSL_is_server(a))
int SSL_in_init(const SSL *s);
int SSL_in_before(const SSL *s);
int SSL_is_init_finished(const SSL *s);

/*
 * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you
 * should not need these
 */
# define SSL_ST_READ_HEADER                      0xF0
# define SSL_ST_READ_BODY                        0xF1
# define SSL_ST_READ_DONE                        0xF2

/*-
 * Obtain latest Finished message
 *   -- that we sent (SSL_get_finished)
 *   -- that we expected from peer (SSL_get_peer_finished).
 * Returns length (0 == no Finished so far), copies up to 'count' bytes.
 */
size_t SSL_get_finished(const SSL *s, void *buf, size_t count);
size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);

/*
 * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are
 * 'ored' with SSL_VERIFY_PEER if they are desired
 */
# define SSL_VERIFY_NONE                 0x00
# define SSL_VERIFY_PEER                 0x01
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
# define SSL_VERIFY_CLIENT_ONCE          0x04
# define SSL_VERIFY_POST_HANDSHAKE       0x08

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define OpenSSL_add_ssl_algorithms()   SSL_library_init()
#  define SSLeay_add_ssl_algorithms()    SSL_library_init()
# endif

/* More backward compatibility */
# define SSL_get_cipher(s) \
                SSL_CIPHER_get_name(SSL_get_current_cipher(s))
# define SSL_get_cipher_bits(s,np) \
                SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
# define SSL_get_cipher_version(s) \
                SSL_CIPHER_get_version(SSL_get_current_cipher(s))
# define SSL_get_cipher_name(s) \
                SSL_CIPHER_get_name(SSL_get_current_cipher(s))
# define SSL_get_time(a)         SSL_SESSION_get_time(a)
# define SSL_set_time(a,b)       SSL_SESSION_set_time((a),(b))
# define SSL_get_timeout(a)      SSL_SESSION_get_timeout(a)
# define SSL_set_timeout(a,b)    SSL_SESSION_set_timeout((a),(b))

# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)
# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id)

DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
# define SSL_AD_REASON_OFFSET            1000/* offset to get SSL_R_... value
                                              * from SSL_AD_... */
/* These alert types are for SSLv3 and TLSv1 */
# define SSL_AD_CLOSE_NOTIFY             SSL3_AD_CLOSE_NOTIFY
/* fatal */
# define SSL_AD_UNEXPECTED_MESSAGE       SSL3_AD_UNEXPECTED_MESSAGE
/* fatal */
# define SSL_AD_BAD_RECORD_MAC           SSL3_AD_BAD_RECORD_MAC
# define SSL_AD_DECRYPTION_FAILED        TLS1_AD_DECRYPTION_FAILED
# define SSL_AD_RECORD_OVERFLOW          TLS1_AD_RECORD_OVERFLOW
/* fatal */
# define SSL_AD_DECOMPRESSION_FAILURE    SSL3_AD_DECOMPRESSION_FAILURE
/* fatal */
# define SSL_AD_HANDSHAKE_FAILURE        SSL3_AD_HANDSHAKE_FAILURE
/* Not for TLS */
# define SSL_AD_NO_CERTIFICATE           SSL3_AD_NO_CERTIFICATE
# define SSL_AD_BAD_CERTIFICATE          SSL3_AD_BAD_CERTIFICATE
# define SSL_AD_UNSUPPORTED_CERTIFICATE  SSL3_AD_UNSUPPORTED_CERTIFICATE
# define SSL_AD_CERTIFICATE_REVOKED      SSL3_AD_CERTIFICATE_REVOKED
# define SSL_AD_CERTIFICATE_EXPIRED      SSL3_AD_CERTIFICATE_EXPIRED
# define SSL_AD_CERTIFICATE_UNKNOWN      SSL3_AD_CERTIFICATE_UNKNOWN
/* fatal */
# define SSL_AD_ILLEGAL_PARAMETER        SSL3_AD_ILLEGAL_PARAMETER
/* fatal */
# define SSL_AD_UNKNOWN_CA               TLS1_AD_UNKNOWN_CA
/* fatal */
# define SSL_AD_ACCESS_DENIED            TLS1_AD_ACCESS_DENIED
/* fatal */
# define SSL_AD_DECODE_ERROR             TLS1_AD_DECODE_ERROR
# define SSL_AD_DECRYPT_ERROR            TLS1_AD_DECRYPT_ERROR
/* fatal */
# define SSL_AD_EXPORT_RESTRICTION       TLS1_AD_EXPORT_RESTRICTION
/* fatal */
# define SSL_AD_PROTOCOL_VERSION         TLS1_AD_PROTOCOL_VERSION
/* fatal */
# define SSL_AD_INSUFFICIENT_SECURITY    TLS1_AD_INSUFFICIENT_SECURITY
/* fatal */
# define SSL_AD_INTERNAL_ERROR           TLS1_AD_INTERNAL_ERROR
# define SSL_AD_USER_CANCELLED           TLS1_AD_USER_CANCELLED
# define SSL_AD_NO_RENEGOTIATION         TLS1_AD_NO_RENEGOTIATION
# define SSL_AD_MISSING_EXTENSION        TLS13_AD_MISSING_EXTENSION
# define SSL_AD_CERTIFICATE_REQUIRED     TLS13_AD_CERTIFICATE_REQUIRED
# define SSL_AD_UNSUPPORTED_EXTENSION    TLS1_AD_UNSUPPORTED_EXTENSION
# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE
# define SSL_AD_UNRECOGNIZED_NAME        TLS1_AD_UNRECOGNIZED_NAME
# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
/* fatal */
# define SSL_AD_UNKNOWN_PSK_IDENTITY     TLS1_AD_UNKNOWN_PSK_IDENTITY
/* fatal */
# define SSL_AD_INAPPROPRIATE_FALLBACK   TLS1_AD_INAPPROPRIATE_FALLBACK
# define SSL_AD_NO_APPLICATION_PROTOCOL  TLS1_AD_NO_APPLICATION_PROTOCOL
# define SSL_ERROR_NONE                  0
# define SSL_ERROR_SSL                   1
# define SSL_ERROR_WANT_READ             2
# define SSL_ERROR_WANT_WRITE            3
# define SSL_ERROR_WANT_X509_LOOKUP      4
# define SSL_ERROR_SYSCALL               5/* look at error stack/return
                                           * value/errno */
# define SSL_ERROR_ZERO_RETURN           6
# define SSL_ERROR_WANT_CONNECT          7
# define SSL_ERROR_WANT_ACCEPT           8
# define SSL_ERROR_WANT_ASYNC            9
# define SSL_ERROR_WANT_ASYNC_JOB       10
# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11
# define SSL_ERROR_WANT_RETRY_VERIFY    12

# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTRL_SET_TMP_DH                    3
#  define SSL_CTRL_SET_TMP_ECDH                  4
#  define SSL_CTRL_SET_TMP_DH_CB                 6
# endif

# define SSL_CTRL_GET_CLIENT_CERT_REQUEST        9
# define SSL_CTRL_GET_NUM_RENEGOTIATIONS         10
# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS       11
# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS       12
# define SSL_CTRL_GET_FLAGS                      13
# define SSL_CTRL_EXTRA_CHAIN_CERT               14
# define SSL_CTRL_SET_MSG_CALLBACK               15
# define SSL_CTRL_SET_MSG_CALLBACK_ARG           16
/* only applies to datagram connections */
# define SSL_CTRL_SET_MTU                17
/* Stats */
# define SSL_CTRL_SESS_NUMBER                    20
# define SSL_CTRL_SESS_CONNECT                   21
# define SSL_CTRL_SESS_CONNECT_GOOD              22
# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE       23
# define SSL_CTRL_SESS_ACCEPT                    24
# define SSL_CTRL_SESS_ACCEPT_GOOD               25
# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE        26
# define SSL_CTRL_SESS_HIT                       27
# define SSL_CTRL_SESS_CB_HIT                    28
# define SSL_CTRL_SESS_MISSES                    29
# define SSL_CTRL_SESS_TIMEOUTS                  30
# define SSL_CTRL_SESS_CACHE_FULL                31
# define SSL_CTRL_MODE                           33
# define SSL_CTRL_GET_READ_AHEAD                 40
# define SSL_CTRL_SET_READ_AHEAD                 41
# define SSL_CTRL_SET_SESS_CACHE_SIZE            42
# define SSL_CTRL_GET_SESS_CACHE_SIZE            43
# define SSL_CTRL_SET_SESS_CACHE_MODE            44
# define SSL_CTRL_GET_SESS_CACHE_MODE            45
# define SSL_CTRL_GET_MAX_CERT_LIST              50
# define SSL_CTRL_SET_MAX_CERT_LIST              51
# define SSL_CTRL_SET_MAX_SEND_FRAGMENT          52
/* see tls1.h for macros based on these */
# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB       53
# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG      54
# define SSL_CTRL_SET_TLSEXT_HOSTNAME            55
# define SSL_CTRL_SET_TLSEXT_DEBUG_CB            56
# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG           57
# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS         58
# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS         59
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT    60 */
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB       63
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG   64
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE     65
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS     66
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS     67
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS      68
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS      69
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP        70
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP        71
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB      72
# endif
# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB    75
# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB                76
# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB             77
# define SSL_CTRL_SET_SRP_ARG            78
# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME               79
# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH               80
# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD               81
# define DTLS_CTRL_GET_TIMEOUT           73
# define DTLS_CTRL_HANDLE_TIMEOUT        74
# define SSL_CTRL_GET_RI_SUPPORT                 76
# define SSL_CTRL_CLEAR_MODE                     78
# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB      79
# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS          82
# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS        83
# define SSL_CTRL_CHAIN                          88
# define SSL_CTRL_CHAIN_CERT                     89
# define SSL_CTRL_GET_GROUPS                     90
# define SSL_CTRL_SET_GROUPS                     91
# define SSL_CTRL_SET_GROUPS_LIST                92
# define SSL_CTRL_GET_SHARED_GROUP               93
# define SSL_CTRL_SET_SIGALGS                    97
# define SSL_CTRL_SET_SIGALGS_LIST               98
# define SSL_CTRL_CERT_FLAGS                     99
# define SSL_CTRL_CLEAR_CERT_FLAGS               100
# define SSL_CTRL_SET_CLIENT_SIGALGS             101
# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST        102
# define SSL_CTRL_GET_CLIENT_CERT_TYPES          103
# define SSL_CTRL_SET_CLIENT_CERT_TYPES          104
# define SSL_CTRL_BUILD_CERT_CHAIN               105
# define SSL_CTRL_SET_VERIFY_CERT_STORE          106
# define SSL_CTRL_SET_CHAIN_CERT_STORE           107
# define SSL_CTRL_GET_PEER_SIGNATURE_NID         108
# define SSL_CTRL_GET_PEER_TMP_KEY               109
# define SSL_CTRL_GET_RAW_CIPHERLIST             110
# define SSL_CTRL_GET_EC_POINT_FORMATS           111
# define SSL_CTRL_GET_CHAIN_CERTS                115
# define SSL_CTRL_SELECT_CURRENT_CERT            116
# define SSL_CTRL_SET_CURRENT_CERT               117
# define SSL_CTRL_SET_DH_AUTO                    118
# define DTLS_CTRL_SET_LINK_MTU                  120
# define DTLS_CTRL_GET_LINK_MIN_MTU              121
# define SSL_CTRL_GET_EXTMS_SUPPORT              122
# define SSL_CTRL_SET_MIN_PROTO_VERSION          123
# define SSL_CTRL_SET_MAX_PROTO_VERSION          124
# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT        125
# define SSL_CTRL_SET_MAX_PIPELINES              126
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE     127
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB       128
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG   129
# define SSL_CTRL_GET_MIN_PROTO_VERSION          130
# define SSL_CTRL_GET_MAX_PROTO_VERSION          131
# define SSL_CTRL_GET_SIGNATURE_NID              132
# define SSL_CTRL_GET_TMP_KEY                    133
# define SSL_CTRL_GET_NEGOTIATED_GROUP           134
# define SSL_CTRL_SET_RETRY_VERIFY               136
# define SSL_CTRL_GET_VERIFY_CERT_STORE          137
# define SSL_CTRL_GET_CHAIN_CERT_STORE           138
# define SSL_CERT_SET_FIRST                      1
# define SSL_CERT_SET_NEXT                       2
# define SSL_CERT_SET_SERVER                     3
# define DTLSv1_get_timeout(ssl, arg) \
        SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg))
# define DTLSv1_handle_timeout(ssl) \
        SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL)
# define SSL_num_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
# define SSL_clear_num_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
# define SSL_total_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTX_set_tmp_dh(ctx,dh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
# endif
# define SSL_CTX_set_dh_auto(ctx, onoff) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
# define SSL_set_dh_auto(s, onoff) \
        SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_set_tmp_dh(ssl,dh) \
        SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
#  define SSL_set_tmp_ecdh(ssl,ecdh) \
        SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
# endif
# define SSL_CTX_add_extra_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509))
# define SSL_CTX_get_extra_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509)
# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509)
# define SSL_CTX_clear_extra_chain_certs(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL)
# define SSL_CTX_set0_chain(ctx,sk) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk))
# define SSL_CTX_set1_chain(ctx,sk) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk))
# define SSL_CTX_add0_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
# define SSL_CTX_add1_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
# define SSL_CTX_get0_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
# define SSL_CTX_clear_chain_certs(ctx) \
        SSL_CTX_set0_chain(ctx,NULL)
# define SSL_CTX_build_cert_chain(ctx, flags) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
# define SSL_CTX_select_current_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
# define SSL_CTX_set_current_cert(ctx, op) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
# define SSL_CTX_set0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set1_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
# define SSL_CTX_get0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set0_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set1_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
# define SSL_CTX_get0_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_set0_chain(s,sk) \
        SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk))
# define SSL_set1_chain(s,sk) \
        SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk))
# define SSL_add0_chain_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
# define SSL_add1_chain_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
# define SSL_get0_chain_certs(s,px509) \
        SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
# define SSL_clear_chain_certs(s) \
        SSL_set0_chain(s,NULL)
# define SSL_build_cert_chain(s, flags) \
        SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
# define SSL_select_current_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
# define SSL_set_current_cert(s,op) \
        SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
# define SSL_set0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_set1_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
#define SSL_get0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_set0_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_set1_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
#define SSL_get0_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))

# define SSL_get1_groups(s, glist) \
        SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist))
# define SSL_CTX_set1_groups(ctx, glist, glistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist))
# define SSL_CTX_set1_groups_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s))
# define SSL_set1_groups(s, glist, glistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist))
# define SSL_set1_groups_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str))
# define SSL_get_shared_group(s, n) \
        SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL)
# define SSL_get_negotiated_group(s) \
        SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,NULL)
# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
# define SSL_CTX_set1_sigalgs_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s))
# define SSL_set1_sigalgs(s, slist, slistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
# define SSL_set1_sigalgs_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str))
# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s))
# define SSL_set1_client_sigalgs(s, slist, slistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
# define SSL_set1_client_sigalgs_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str))
# define SSL_get0_certificate_types(s, clist) \
        SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist))
# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \
                     (char *)(clist))
# define SSL_set1_client_certificate_types(s, clist, clistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist))
# define SSL_get_signature_nid(s, pn) \
        SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn)
# define SSL_get_peer_signature_nid(s, pn) \
        SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn)
# define SSL_get_peer_tmp_key(s, pk) \
        SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk)
# define SSL_get_tmp_key(s, pk) \
        SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk)
# define SSL_get0_raw_cipherlist(s, plst) \
        SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst)
# define SSL_get0_ec_point_formats(s, plst) \
        SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst)
# define SSL_CTX_set_min_proto_version(ctx, version) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
# define SSL_CTX_set_max_proto_version(ctx, version) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
# define SSL_CTX_get_min_proto_version(ctx) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
# define SSL_CTX_get_max_proto_version(ctx) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)
# define SSL_set_min_proto_version(s, version) \
        SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
# define SSL_set_max_proto_version(s, version) \
        SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
# define SSL_get_min_proto_version(s) \
        SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
# define SSL_get_max_proto_version(s) \
        SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)

const char *SSL_group_to_name(SSL *s, int id);

/* Backwards compatibility, original 1.1.0 names */
# define SSL_CTRL_GET_SERVER_TMP_KEY \
         SSL_CTRL_GET_PEER_TMP_KEY
# define SSL_get_server_tmp_key(s, pk) \
         SSL_get_peer_tmp_key(s, pk)

int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey);
int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey);

/*
 * The following symbol names are old and obsolete. They are kept
 * for compatibility reasons only and should not be used anymore.
 */
# define SSL_CTRL_GET_CURVES           SSL_CTRL_GET_GROUPS
# define SSL_CTRL_SET_CURVES           SSL_CTRL_SET_GROUPS
# define SSL_CTRL_SET_CURVES_LIST      SSL_CTRL_SET_GROUPS_LIST
# define SSL_CTRL_GET_SHARED_CURVE     SSL_CTRL_GET_SHARED_GROUP

# define SSL_get1_curves               SSL_get1_groups
# define SSL_CTX_set1_curves           SSL_CTX_set1_groups
# define SSL_CTX_set1_curves_list      SSL_CTX_set1_groups_list
# define SSL_set1_curves               SSL_set1_groups
# define SSL_set1_curves_list          SSL_set1_groups_list
# define SSL_get_shared_curve          SSL_get_shared_group


# ifndef OPENSSL_NO_DEPRECATED_1_1_0
/* Provide some compatibility macros for removed functionality. */
#  define SSL_CTX_need_tmp_RSA(ctx)                0
#  define SSL_CTX_set_tmp_rsa(ctx,rsa)             1
#  define SSL_need_tmp_RSA(ssl)                    0
#  define SSL_set_tmp_rsa(ssl,rsa)                 1
#  define SSL_CTX_set_ecdh_auto(dummy, onoff)      ((onoff) != 0)
#  define SSL_set_ecdh_auto(dummy, onoff)          ((onoff) != 0)
/*
 * We "pretend" to call the callback to avoid warnings about unused static
 * functions.
 */
#  define SSL_CTX_set_tmp_rsa_callback(ctx, cb)    while(0) (cb)(NULL, 0, 0)
#  define SSL_set_tmp_rsa_callback(ssl, cb)        while(0) (cb)(NULL, 0, 0)
# endif
__owur const BIO_METHOD *BIO_f_ssl(void);
__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client);
__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from);
void BIO_ssl_shutdown(BIO *ssl_bio);

__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str);
__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
                               const SSL_METHOD *meth);
int SSL_CTX_up_ref(SSL_CTX *ctx);
void SSL_CTX_free(SSL_CTX *);
__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t);
__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx);
__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *);
void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *);
void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *);
__owur int SSL_want(const SSL *s);
__owur int SSL_clear(SSL *s);

void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm);

__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s);
__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits);
__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c);
__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c);
__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
__owur const char *OPENSSL_cipher_name(const char *rfc_name);
__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c);
__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c);
__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c);
__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c);
__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c);
__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c);

__owur int SSL_get_fd(const SSL *s);
__owur int SSL_get_rfd(const SSL *s);
__owur int SSL_get_wfd(const SSL *s);
__owur const char *SSL_get_cipher_list(const SSL *s, int n);
__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size);
__owur int SSL_get_read_ahead(const SSL *s);
__owur int SSL_pending(const SSL *s);
__owur int SSL_has_pending(const SSL *s);
# ifndef OPENSSL_NO_SOCK
__owur int SSL_set_fd(SSL *s, int fd);
__owur int SSL_set_rfd(SSL *s, int fd);
__owur int SSL_set_wfd(SSL *s, int fd);
# endif
void SSL_set0_rbio(SSL *s, BIO *rbio);
void SSL_set0_wbio(SSL *s, BIO *wbio);
void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio);
__owur BIO *SSL_get_rbio(const SSL *s);
__owur BIO *SSL_get_wbio(const SSL *s);
__owur int SSL_set_cipher_list(SSL *s, const char *str);
__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
__owur int SSL_set_ciphersuites(SSL *s, const char *str);
void SSL_set_read_ahead(SSL *s, int yes);
__owur int SSL_get_verify_mode(const SSL *s);
__owur int SSL_get_verify_depth(const SSL *s);
__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s);
void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback);
void SSL_set_verify_depth(SSL *s, int depth);
void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl,
                                      const unsigned char *d, long len);
# endif
__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d,
                                   long len);
__owur int SSL_use_certificate(SSL *ssl, X509 *x);
__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);
__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey,
                                STACK_OF(X509) *chain, int override);


/* serverinfo file format versions */
# define SSL_SERVERINFOV1   1
# define SSL_SERVERINFOV2   2

/* Set serverinfo data for the current active cert. */
__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,
                                  size_t serverinfo_length);
__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version,
                                     const unsigned char *serverinfo,
                                     size_t serverinfo_length);
__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
#endif

__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file,
                                          int type);
#endif
__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file,
                                       int type);
__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,
                                        int type);
/* PEM type */
__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file);
__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
__owur STACK_OF(X509_NAME)
*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx,
                            const char *propq);
__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                               const char *file);
int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                       const char *dir);
int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                       const char *uri);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_load_error_strings() \
    OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
                     | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
# endif

__owur const char *SSL_state_string(const SSL *s);
__owur const char *SSL_rstate_string(const SSL *s);
__owur const char *SSL_state_string_long(const SSL *s);
__owur const char *SSL_rstate_string_long(const SSL *s);
__owur long SSL_SESSION_get_time(const SSL_SESSION *s);
__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t);
__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s);
__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s);
__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version);

__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s);
__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname);
void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s,
                                    const unsigned char **alpn,
                                    size_t *len);
__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s,
                                          const unsigned char *alpn,
                                          size_t len);
__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s);
__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher);
__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s);
__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);
void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick,
                             size_t *len);
__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s);
__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s,
                                          uint32_t max_early_data);
__owur int SSL_copy_session_id(SSL *to, const SSL *from);
__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);
__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s,
                                       const unsigned char *sid_ctx,
                                       unsigned int sid_ctx_len);
__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,
                               unsigned int sid_len);
__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s);

__owur SSL_SESSION *SSL_SESSION_new(void);
__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src);
const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
                                        unsigned int *len);
const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s,
                                                 unsigned int *len);
__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s);
# ifndef OPENSSL_NO_STDIO
int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses);
# endif
int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses);
int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x);
int SSL_SESSION_up_ref(SSL_SESSION *ses);
void SSL_SESSION_free(SSL_SESSION *ses);
__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp);
__owur int SSL_set_session(SSL *to, SSL_SESSION *session);
int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session);
int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session);
__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb);
__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb);
__owur int SSL_has_matching_session_id(const SSL *s,
                                       const unsigned char *id,
                                       unsigned int id_len);
SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
                             long length);

# ifdef OPENSSL_X509_H
__owur X509 *SSL_get0_peer_certificate(const SSL *s);
__owur X509 *SSL_get1_peer_certificate(const SSL *s);
/* Deprecated in 3.0.0 */
#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   define SSL_get_peer_certificate SSL_get1_peer_certificate
#  endif
# endif

__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s);

__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx);
__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx);
__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx);
void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback);
void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth);
void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
                                      int (*cb) (X509_STORE_CTX *, void *),
                                      void *arg);
void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg),
                         void *arg);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
                                          long len);
# endif
__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx,
                                       const unsigned char *d, long len);
__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len,
                                        const unsigned char *d);
__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey,
                                    STACK_OF(X509) *chain, int override);

void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);
void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx);
void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb);
void SSL_set_default_passwd_cb_userdata(SSL *s, void *u);
pem_password_cb *SSL_get_default_passwd_cb(SSL *s);
void *SSL_get_default_passwd_cb_userdata(SSL *s);

__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx);
__owur int SSL_check_private_key(const SSL *ctx);

__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx,
                                          const unsigned char *sid_ctx,
                                          unsigned int sid_ctx_len);

SSL *SSL_new(SSL_CTX *ctx);
int SSL_up_ref(SSL *s);
int SSL_is_dtls(const SSL *s);
__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx,
                                      unsigned int sid_ctx_len);

__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);
__owur int SSL_set_purpose(SSL *ssl, int purpose);
__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);
__owur int SSL_set_trust(SSL *ssl, int trust);

__owur int SSL_set1_host(SSL *s, const char *hostname);
__owur int SSL_add1_host(SSL *s, const char *hostname);
__owur const char *SSL_get0_peername(SSL *s);
void SSL_set_hostflags(SSL *s, unsigned int flags);

__owur int SSL_CTX_dane_enable(SSL_CTX *ctx);
__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md,
                                  uint8_t mtype, uint8_t ord);
__owur int SSL_dane_enable(SSL *s, const char *basedomain);
__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector,
                             uint8_t mtype, const unsigned char *data, size_t dlen);
__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki);
__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector,
                              uint8_t *mtype, const unsigned char **data,
                              size_t *dlen);
/*
 * Bridge opacity barrier between libcrypt and libssl, also needed to support
 * offline testing in test/danetest.c
 */
SSL_DANE *SSL_get0_dane(SSL *ssl);
/*
 * DANE flags
 */
unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags);
unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags);
unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags);
unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags);

__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);

__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);
__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);

# ifndef OPENSSL_NO_SRP
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength);
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx,
                                        char *(*cb) (SSL *, void *));
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx,
                                          int (*cb) (SSL *, void *));
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx,
                                      int (*cb) (SSL *, int *, void *));
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg);

OSSL_DEPRECATEDIN_3_0
int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g,
                             BIGNUM *sa, BIGNUM *v, char *info);
OSSL_DEPRECATEDIN_3_0
int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass,
                                const char *grp);

OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s);

OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s);
#  endif
# endif

/*
 * ClientHello callback and helpers.
 */

# define SSL_CLIENT_HELLO_SUCCESS 1
# define SSL_CLIENT_HELLO_ERROR   0
# define SSL_CLIENT_HELLO_RETRY   (-1)

typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg);
void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb,
                                 void *arg);
int SSL_client_hello_isv2(SSL *s);
unsigned int SSL_client_hello_get0_legacy_version(SSL *s);
size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_compression_methods(SSL *s,
                                                 const unsigned char **out);
int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen);
int SSL_client_hello_get0_ext(SSL *s, unsigned int type,
                              const unsigned char **out, size_t *outlen);

void SSL_certs_clear(SSL *s);
void SSL_free(SSL *ssl);
# ifdef OSSL_ASYNC_FD
/*
 * Windows application developer has to include windows.h to use these.
 */
__owur int SSL_waiting_for_async(SSL *s);
__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds);
__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd,
                                     size_t *numaddfds, OSSL_ASYNC_FD *delfd,
                                     size_t *numdelfds);
__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback);
__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg);
__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback);
__owur int SSL_set_async_callback_arg(SSL *s, void *arg);
__owur int SSL_get_async_status(SSL *s, int *status);

# endif
__owur int SSL_accept(SSL *ssl);
__owur int SSL_stateless(SSL *s);
__owur int SSL_connect(SSL *ssl);
__owur int SSL_read(SSL *ssl, void *buf, int num);
__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);

# define SSL_READ_EARLY_DATA_ERROR   0
# define SSL_READ_EARLY_DATA_SUCCESS 1
# define SSL_READ_EARLY_DATA_FINISH  2

__owur int SSL_read_early_data(SSL *s, void *buf, size_t num,
                               size_t *readbytes);
__owur int SSL_peek(SSL *ssl, void *buf, int num);
__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size,
                                 int flags);
__owur int SSL_write(SSL *ssl, const void *buf, int num);
__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written);
__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num,
                                size_t *written);
long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg);
long SSL_callback_ctrl(SSL *, int, void (*)(void));
long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void));

# define SSL_EARLY_DATA_NOT_SENT    0
# define SSL_EARLY_DATA_REJECTED    1
# define SSL_EARLY_DATA_ACCEPTED    2

__owur int SSL_get_early_data_status(const SSL *s);

__owur int SSL_get_error(const SSL *s, int ret_code);
__owur const char *SSL_get_version(const SSL *s);

/* This sets the 'default' SSL version that SSL_new() will create */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);
# endif

# ifndef OPENSSL_NO_SSL3_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void);
#  endif
# endif

#define SSLv23_method           TLS_method
#define SSLv23_server_method    TLS_server_method
#define SSLv23_client_method    TLS_client_method

/* Negotiate highest available SSL/TLS version */
__owur const SSL_METHOD *TLS_method(void);
__owur const SSL_METHOD *TLS_server_method(void);
__owur const SSL_METHOD *TLS_client_method(void);

# ifndef OPENSSL_NO_TLS1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_TLS1_1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_TLS1_2_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_DTLS1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_DTLS1_2_METHOD
/* DTLSv1.2 */
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void);
#  endif
# endif

__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */
__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */
__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */

__owur size_t DTLS_get_data_mtu(const SSL *s);

__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);
__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx);
__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s);
__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);

__owur int SSL_do_handshake(SSL *s);
int SSL_key_update(SSL *s, int updatetype);
int SSL_get_key_update_type(const SSL *s);
int SSL_renegotiate(SSL *s);
int SSL_renegotiate_abbreviated(SSL *s);
__owur int SSL_renegotiate_pending(const SSL *s);
int SSL_new_session_ticket(SSL *s);
int SSL_shutdown(SSL *s);
__owur int SSL_verify_client_post_handshake(SSL *s);
void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val);
void SSL_set_post_handshake_auth(SSL *s, int val);

__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);
__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s);
__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
__owur const char *SSL_alert_type_string_long(int value);
__owur const char *SSL_alert_type_string(int value);
__owur const char *SSL_alert_desc_string_long(int value);
__owur const char *SSL_alert_desc_string(int value);

void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s);
__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx);
__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x);
__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x);
__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s);

void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s);
__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s);
__owur int SSL_add_client_CA(SSL *ssl, X509 *x);
__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x);

void SSL_set_connect_state(SSL *s);
void SSL_set_accept_state(SSL *s);

__owur long SSL_get_default_timeout(const SSL *s);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_library_init() OPENSSL_init_ssl(0, NULL)
# endif

__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size);
__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk);

__owur SSL *SSL_dup(SSL *ssl);

__owur X509 *SSL_get_certificate(const SSL *ssl);
/*
 * EVP_PKEY
 */
struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl);

__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);

void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode);
__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);
void SSL_set_quiet_shutdown(SSL *ssl, int mode);
__owur int SSL_get_quiet_shutdown(const SSL *ssl);
void SSL_set_shutdown(SSL *ssl, int mode);
__owur int SSL_get_shutdown(const SSL *ssl);
__owur int SSL_version(const SSL *ssl);
__owur int SSL_client_version(const SSL *s);
__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx);
__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile);
__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath);
__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore);
__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx,
                                                        const char *CAfile,
                                                        const char *CApath);
# define SSL_get0_session SSL_get_session/* just peek at pointer */
__owur SSL_SESSION *SSL_get_session(const SSL *ssl);
__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */
__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);
SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx);
void SSL_set_info_callback(SSL *ssl,
                           void (*cb) (const SSL *ssl, int type, int val));
void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type,
                                               int val);
__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);

void SSL_set_verify_result(SSL *ssl, long v);
__owur long SSL_get_verify_result(const SSL *ssl);
__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s);

__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out,
                                    size_t outlen);
__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out,
                                    size_t outlen);
__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess,
                                         unsigned char *out, size_t outlen);
__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess,
                                       const unsigned char *in, size_t len);
uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess);

#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef)
__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data);
void *SSL_get_ex_data(const SSL *ssl, int idx);
#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef)
__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data);
void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx);
#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef)
__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data);
void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx);

__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void);

# define SSL_CTX_sess_set_cache_size(ctx,t) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
# define SSL_CTX_sess_get_cache_size(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
# define SSL_CTX_set_session_cache_mode(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
# define SSL_CTX_get_session_cache_mode(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)

# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
# define SSL_CTX_get_read_ahead(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)
# define SSL_CTX_set_read_ahead(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL)
# define SSL_CTX_get_max_cert_list(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
# define SSL_CTX_set_max_cert_list(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
# define SSL_get_max_cert_list(ssl) \
        SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
# define SSL_set_max_cert_list(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)

# define SSL_CTX_set_max_send_fragment(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_set_max_send_fragment(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_CTX_set_split_send_fragment(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
# define SSL_set_split_send_fragment(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
# define SSL_CTX_set_max_pipelines(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
# define SSL_set_max_pipelines(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
# define SSL_set_retry_verify(ssl) \
        (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0)

void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);
void SSL_set_default_read_buffer_len(SSL *s, size_t len);

# ifndef OPENSSL_NO_DH
#  ifndef OPENSSL_NO_DEPRECATED_3_0
/* NB: the |keylength| is only applicable when is_export is true */
OSSL_DEPRECATEDIN_3_0
void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
                                 DH *(*dh) (SSL *ssl, int is_export,
                                            int keylength));
OSSL_DEPRECATEDIN_3_0
void SSL_set_tmp_dh_callback(SSL *ssl,
                             DH *(*dh) (SSL *ssl, int is_export,
                                        int keylength));
#  endif
# endif

__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s);
__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s);
__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);
__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp);
__owur int SSL_COMP_get_id(const SSL_COMP *comp);
STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
                                                             *meths);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_COMP_free_compression_methods() while(0) continue
# endif
__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);

const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr);
int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c);
int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c);
int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len,
                             int isv2format, STACK_OF(SSL_CIPHER) **sk,
                             STACK_OF(SSL_CIPHER) **scsvs);

/* TLS extensions functions */
__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len);

__owur int SSL_set_session_ticket_ext_cb(SSL *s,
                                         tls_session_ticket_ext_cb_fn cb,
                                         void *arg);

/* Pre-shared secret session resumption functions */
__owur int SSL_set_session_secret_cb(SSL *s,
                                     tls_session_secret_cb_fn session_secret_cb,
                                     void *arg);

void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx,
                                                int (*cb) (SSL *ssl,
                                                           int
                                                           is_forward_secure));

void SSL_set_not_resumable_session_callback(SSL *ssl,
                                            int (*cb) (SSL *ssl,
                                                       int is_forward_secure));

void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx,
                                         size_t (*cb) (SSL *ssl, int type,
                                                       size_t len, void *arg));
void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg);
void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx);
int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size);

int SSL_set_record_padding_callback(SSL *ssl,
                                    size_t (*cb) (SSL *ssl, int type,
                                                  size_t len, void *arg));
void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg);
void *SSL_get_record_padding_callback_arg(const SSL *ssl);
int SSL_set_block_padding(SSL *ssl, size_t block_size);

int SSL_set_num_tickets(SSL *s, size_t num_tickets);
size_t SSL_get_num_tickets(const SSL *s);
int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_cache_hit(s) SSL_session_reused(s)
# endif

__owur int SSL_session_reused(const SSL *s);
__owur int SSL_is_server(const SSL *s);

__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);
int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);
void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);
unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);
__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx,
                                             unsigned int flags);
__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre);

void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl);
void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx);

__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv);
__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);

void SSL_add_ssl_module(void);
int SSL_config(SSL *s, const char *name);
int SSL_CTX_config(SSL_CTX *ctx, const char *name);

# ifndef OPENSSL_NO_SSL_TRACE
void SSL_trace(int write_p, int version, int content_type,
               const void *buf, size_t len, SSL *ssl, void *arg);
# endif

# ifndef OPENSSL_NO_SOCK
int DTLSv1_listen(SSL *s, BIO_ADDR *client);
# endif

# ifndef OPENSSL_NO_CT

/*
 * A callback for verifying that the received SCTs are sufficient.
 * Expected to return 1 if they are sufficient, otherwise 0.
 * May return a negative integer if an error occurs.
 * A connection should be aborted if the SCTs are deemed insufficient.
 */
typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx,
                                    const STACK_OF(SCT) *scts, void *arg);

/*
 * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate
 * the received SCTs.
 * If the callback returns a non-positive result, the connection is terminated.
 * Call this function before beginning a handshake.
 * If a NULL |callback| is provided, SCT validation is disabled.
 * |arg| is arbitrary userdata that will be passed to the callback whenever it
 * is invoked. Ownership of |arg| remains with the caller.
 *
 * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response
 *       will be requested.
 */
int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback,
                                   void *arg);
int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx,
                                       ssl_ct_validation_cb callback,
                                       void *arg);
#define SSL_disable_ct(s) \
        ((void) SSL_set_validation_callback((s), NULL, NULL))
#define SSL_CTX_disable_ct(ctx) \
        ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL))

/*
 * The validation type enumerates the available behaviours of the built-in SSL
 * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct().
 * The underlying callback is a static function in libssl.
 */
enum {
    SSL_CT_VALIDATION_PERMISSIVE = 0,
    SSL_CT_VALIDATION_STRICT
};

/*
 * Enable CT by setting up a callback that implements one of the built-in
 * validation variants.  The SSL_CT_VALIDATION_PERMISSIVE variant always
 * continues the handshake, the application can make appropriate decisions at
 * handshake completion.  The SSL_CT_VALIDATION_STRICT variant requires at
 * least one valid SCT, or else handshake termination will be requested.  The
 * handshake may continue anyway if SSL_VERIFY_NONE is in effect.
 */
int SSL_enable_ct(SSL *s, int validation_mode);
int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode);

/*
 * Report whether a non-NULL callback is enabled.
 */
int SSL_ct_is_enabled(const SSL *s);
int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx);

/* Gets the SCTs received from a connection */
const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s);

/*
 * Loads the CT log list from the default location.
 * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
 * the log information loaded from this file will be appended to the
 * CTLOG_STORE.
 * Returns 1 on success, 0 otherwise.
 */
int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx);

/*
 * Loads the CT log list from the specified file path.
 * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
 * the log information loaded from this file will be appended to the
 * CTLOG_STORE.
 * Returns 1 on success, 0 otherwise.
 */
int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path);

/*
 * Sets the CT log list used by all SSL connections created from this SSL_CTX.
 * Ownership of the CTLOG_STORE is transferred to the SSL_CTX.
 */
void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs);

/*
 * Gets the CT log list used by all SSL connections created from this SSL_CTX.
 * This will be NULL unless one of the following functions has been called:
 * - SSL_CTX_set_default_ctlog_list_file
 * - SSL_CTX_set_ctlog_list_file
 * - SSL_CTX_set_ctlog_store
 */
const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);

# endif /* OPENSSL_NO_CT */

/* What the "other" parameter contains in security callback */
/* Mask for type */
# define SSL_SECOP_OTHER_TYPE    0xffff0000
# define SSL_SECOP_OTHER_NONE    0
# define SSL_SECOP_OTHER_CIPHER  (1 << 16)
# define SSL_SECOP_OTHER_CURVE   (2 << 16)
# define SSL_SECOP_OTHER_DH      (3 << 16)
# define SSL_SECOP_OTHER_PKEY    (4 << 16)
# define SSL_SECOP_OTHER_SIGALG  (5 << 16)
# define SSL_SECOP_OTHER_CERT    (6 << 16)

/* Indicated operation refers to peer key or certificate */
# define SSL_SECOP_PEER          0x1000

/* Values for "op" parameter in security callback */

/* Called to filter ciphers */
/* Ciphers client supports */
# define SSL_SECOP_CIPHER_SUPPORTED      (1 | SSL_SECOP_OTHER_CIPHER)
/* Cipher shared by client/server */
# define SSL_SECOP_CIPHER_SHARED         (2 | SSL_SECOP_OTHER_CIPHER)
/* Sanity check of cipher server selects */
# define SSL_SECOP_CIPHER_CHECK          (3 | SSL_SECOP_OTHER_CIPHER)
/* Curves supported by client */
# define SSL_SECOP_CURVE_SUPPORTED       (4 | SSL_SECOP_OTHER_CURVE)
/* Curves shared by client/server */
# define SSL_SECOP_CURVE_SHARED          (5 | SSL_SECOP_OTHER_CURVE)
/* Sanity check of curve server selects */
# define SSL_SECOP_CURVE_CHECK           (6 | SSL_SECOP_OTHER_CURVE)
/* Temporary DH key */
# define SSL_SECOP_TMP_DH                (7 | SSL_SECOP_OTHER_PKEY)
/* SSL/TLS version */
# define SSL_SECOP_VERSION               (9 | SSL_SECOP_OTHER_NONE)
/* Session tickets */
# define SSL_SECOP_TICKET                (10 | SSL_SECOP_OTHER_NONE)
/* Supported signature algorithms sent to peer */
# define SSL_SECOP_SIGALG_SUPPORTED      (11 | SSL_SECOP_OTHER_SIGALG)
/* Shared signature algorithm */
# define SSL_SECOP_SIGALG_SHARED         (12 | SSL_SECOP_OTHER_SIGALG)
/* Sanity check signature algorithm allowed */
# define SSL_SECOP_SIGALG_CHECK          (13 | SSL_SECOP_OTHER_SIGALG)
/* Used to get mask of supported public key signature algorithms */
# define SSL_SECOP_SIGALG_MASK           (14 | SSL_SECOP_OTHER_SIGALG)
/* Use to see if compression is allowed */
# define SSL_SECOP_COMPRESSION           (15 | SSL_SECOP_OTHER_NONE)
/* EE key in certificate */
# define SSL_SECOP_EE_KEY                (16 | SSL_SECOP_OTHER_CERT)
/* CA key in certificate */
# define SSL_SECOP_CA_KEY                (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
# define SSL_SECOP_CA_MD                 (18 | SSL_SECOP_OTHER_CERT)
/* Peer EE key in certificate */
# define SSL_SECOP_PEER_EE_KEY           (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
/* Peer CA key in certificate */
# define SSL_SECOP_PEER_CA_KEY           (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
/* Peer CA digest algorithm in certificate */
# define SSL_SECOP_PEER_CA_MD            (SSL_SECOP_CA_MD | SSL_SECOP_PEER)

void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
void SSL_set_security_callback(SSL *s,
                               int (*cb) (const SSL *s, const SSL_CTX *ctx,
                                          int op, int bits, int nid,
                                          void *other, void *ex));
int (*SSL_get_security_callback(const SSL *s)) (const SSL *s,
                                                const SSL_CTX *ctx, int op,
                                                int bits, int nid, void *other,
                                                void *ex);
void SSL_set0_security_ex_data(SSL *s, void *ex);
__owur void *SSL_get0_security_ex_data(const SSL *s);

void SSL_CTX_set_security_level(SSL_CTX *ctx, int level);
__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx);
void SSL_CTX_set_security_callback(SSL_CTX *ctx,
                                   int (*cb) (const SSL *s, const SSL_CTX *ctx,
                                              int op, int bits, int nid,
                                              void *other, void *ex));
int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s,
                                                          const SSL_CTX *ctx,
                                                          int op, int bits,
                                                          int nid,
                                                          void *other,
                                                          void *ex);
void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex);
__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx);

/* OPENSSL_INIT flag 0x010000 reserved for internal use */
# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS    0x00100000L
# define OPENSSL_INIT_LOAD_SSL_STRINGS       0x00200000L

# define OPENSSL_INIT_SSL_DEFAULT \
        (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS)

int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);

# ifndef OPENSSL_NO_UNIT_TEST
__owur const struct openssl_ssl_test_functions *SSL_test_functions(void);
# endif

__owur int SSL_free_buffers(SSL *ssl);
__owur int SSL_alloc_buffers(SSL *ssl);

/* Status codes passed to the decrypt session ticket callback. Some of these
 * are for internal use only and are never passed to the callback. */
typedef int SSL_TICKET_STATUS;

/* Support for ticket appdata */
/* fatal error, malloc failure */
# define SSL_TICKET_FATAL_ERR_MALLOC 0
/* fatal error, either from parsing or decrypting the ticket */
# define SSL_TICKET_FATAL_ERR_OTHER  1
/* No ticket present */
# define SSL_TICKET_NONE             2
/* Empty ticket present */
# define SSL_TICKET_EMPTY            3
/* the ticket couldn't be decrypted */
# define SSL_TICKET_NO_DECRYPT       4
/* a ticket was successfully decrypted */
# define SSL_TICKET_SUCCESS          5
/* same as above but the ticket needs to be renewed */
# define SSL_TICKET_SUCCESS_RENEW    6

/* Return codes for the decrypt session ticket callback */
typedef int SSL_TICKET_RETURN;

/* An error occurred */
#define SSL_TICKET_RETURN_ABORT             0
/* Do not use the ticket, do not send a renewed ticket to the client */
#define SSL_TICKET_RETURN_IGNORE            1
/* Do not use the ticket, send a renewed ticket to the client */
#define SSL_TICKET_RETURN_IGNORE_RENEW      2
/* Use the ticket, do not send a renewed ticket to the client */
#define SSL_TICKET_RETURN_USE               3
/* Use the ticket, send a renewed ticket to the client */
#define SSL_TICKET_RETURN_USE_RENEW         4

typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg);
typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss,
                                                               const unsigned char *keyname,
                                                               size_t keyname_length,
                                                               SSL_TICKET_STATUS status,
                                                               void *arg);
int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx,
                                  SSL_CTX_generate_session_ticket_fn gen_cb,
                                  SSL_CTX_decrypt_session_ticket_fn dec_cb,
                                  void *arg);
int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len);
int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len);

typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us);

void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb);


typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg);
void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx,
                                     SSL_allow_early_data_cb_fn cb,
                                     void *arg);
void SSL_set_allow_early_data_cb(SSL *s,
                                 SSL_allow_early_data_cb_fn cb,
                                 void *arg);

/* store the default cipher strings inside the library */
const char *OSSL_default_cipher_list(void);
const char *OSSL_default_ciphersuites(void);

#  ifndef OPENSSL_NO_QUIC
/*
 * QUIC integration - The QUIC interface matches BoringSSL
 *
 * ssl_encryption_level_t represents a specific QUIC encryption level used to
 * transmit handshake messages. BoringSSL has this as an 'enum'.
 */
#include <openssl/quic.h>

/* Used by Chromium/QUIC - moved from evp.h to avoid breaking FIPS checksums */
# define X25519_PRIVATE_KEY_LEN          32
# define X25519_PUBLIC_VALUE_LEN         32

/* moved from types.h to avoid breaking FIPS checksums */
typedef struct ssl_quic_method_st SSL_QUIC_METHOD;

typedef enum ssl_encryption_level_t {
    ssl_encryption_initial = 0,
    ssl_encryption_early_data,
    ssl_encryption_handshake,
    ssl_encryption_application
} OSSL_ENCRYPTION_LEVEL;

struct ssl_quic_method_st {
    int (*set_encryption_secrets)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                                  const uint8_t *read_secret,
                                  const uint8_t *write_secret, size_t secret_len);
    int (*add_handshake_data)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                              const uint8_t *data, size_t len);
    int (*flush_flight)(SSL *ssl);
    int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert);
};

__owur int SSL_CTX_set_quic_method(SSL_CTX *ctx, const SSL_QUIC_METHOD *quic_method);
__owur int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method);
__owur int SSL_set_quic_transport_params(SSL *ssl,
                                         const uint8_t *params,
                                         size_t params_len);
void SSL_get_peer_quic_transport_params(const SSL *ssl,
                                        const uint8_t **out_params,
                                        size_t *out_params_len);
__owur size_t SSL_quic_max_handshake_flight_len(const SSL *ssl, OSSL_ENCRYPTION_LEVEL level);
__owur OSSL_ENCRYPTION_LEVEL SSL_quic_read_level(const SSL *ssl);
__owur OSSL_ENCRYPTION_LEVEL SSL_quic_write_level(const SSL *ssl);
__owur int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                                 const uint8_t *data, size_t len);
__owur int SSL_process_quic_post_handshake(SSL *ssl);

__owur int SSL_is_quic(SSL *ssl);

/* BoringSSL API */
void SSL_set_quic_use_legacy_codepoint(SSL *ssl, int use_legacy);

/*
 * Set an explicit value that you want to use
 * If 0 (default) the server will use the highest extenstion the client sent
 * If 0 (default) the client will send both extensions
 */
void SSL_set_quic_transport_version(SSL *ssl, int version);
__owur int SSL_get_quic_transport_version(const SSL *ssl);
/* Returns the negotiated version, or -1 on error */
__owur int SSL_get_peer_quic_transport_version(const SSL *ssl);

int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c);

void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled);

#  endif

# ifdef  __cplusplus
}
# endif
#endif
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
 * WARNING: do not edit!
 * Generated by makefile from include/openssl/ssl.h.in
 *
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
 * Copyright 2005 Nokia. All rights reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_SSL_H
# define OPENSSL_SSL_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_SSL_H
# endif

# include <openssl/e_os2.h>
# include <openssl/opensslconf.h>
# include <openssl/comp.h>
# include <openssl/bio.h>
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  include <openssl/x509.h>
#  include <openssl/crypto.h>
#  include <openssl/buffer.h>
# endif
# include <openssl/lhash.h>
# include <openssl/pem.h>
# include <openssl/hmac.h>
# include <openssl/async.h>

# include <openssl/safestack.h>
# include <openssl/symhacks.h>
# include <openssl/ct.h>
# include <openssl/sslerr.h>
# include <openssl/prov_ssl.h>

#ifdef  __cplusplus
extern "C" {
#endif

/* OpenSSL version number for ASN.1 encoding of the session information */
/*-
 * Version 0 - initial version
 * Version 1 - added the optional peer certificate
 */
# define SSL_SESSION_ASN1_VERSION 0x0001

# define SSL_MAX_SSL_SESSION_ID_LENGTH           32
# define SSL_MAX_SID_CTX_LENGTH                  32

# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES     (512/8)
# define SSL_MAX_KEY_ARG_LENGTH                  8
/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */

/* The maximum number of encrypt/decrypt pipelines we can support */
# define SSL_MAX_PIPELINES  32

/* text strings for the ciphers */

/* These are used to specify which ciphers to use and not to use */

# define SSL_TXT_LOW             "LOW"
# define SSL_TXT_MEDIUM          "MEDIUM"
# define SSL_TXT_HIGH            "HIGH"
# define SSL_TXT_FIPS            "FIPS"

# define SSL_TXT_aNULL           "aNULL"
# define SSL_TXT_eNULL           "eNULL"
# define SSL_TXT_NULL            "NULL"

# define SSL_TXT_kRSA            "kRSA"
# define SSL_TXT_kDHr            "kDHr"/* this cipher class has been removed */
# define SSL_TXT_kDHd            "kDHd"/* this cipher class has been removed */
# define SSL_TXT_kDH             "kDH"/* this cipher class has been removed */
# define SSL_TXT_kEDH            "kEDH"/* alias for kDHE */
# define SSL_TXT_kDHE            "kDHE"
# define SSL_TXT_kECDHr          "kECDHr"/* this cipher class has been removed */
# define SSL_TXT_kECDHe          "kECDHe"/* this cipher class has been removed */
# define SSL_TXT_kECDH           "kECDH"/* this cipher class has been removed */
# define SSL_TXT_kEECDH          "kEECDH"/* alias for kECDHE */
# define SSL_TXT_kECDHE          "kECDHE"
# define SSL_TXT_kPSK            "kPSK"
# define SSL_TXT_kRSAPSK         "kRSAPSK"
# define SSL_TXT_kECDHEPSK       "kECDHEPSK"
# define SSL_TXT_kDHEPSK         "kDHEPSK"
# define SSL_TXT_kGOST           "kGOST"
# define SSL_TXT_kGOST18         "kGOST18"
# define SSL_TXT_kSRP            "kSRP"

# define SSL_TXT_aRSA            "aRSA"
# define SSL_TXT_aDSS            "aDSS"
# define SSL_TXT_aDH             "aDH"/* this cipher class has been removed */
# define SSL_TXT_aECDH           "aECDH"/* this cipher class has been removed */
# define SSL_TXT_aECDSA          "aECDSA"
# define SSL_TXT_aPSK            "aPSK"
# define SSL_TXT_aGOST94         "aGOST94"
# define SSL_TXT_aGOST01         "aGOST01"
# define SSL_TXT_aGOST12         "aGOST12"
# define SSL_TXT_aGOST           "aGOST"
# define SSL_TXT_aSRP            "aSRP"

# define SSL_TXT_DSS             "DSS"
# define SSL_TXT_DH              "DH"
# define SSL_TXT_DHE             "DHE"/* same as "kDHE:-ADH" */
# define SSL_TXT_EDH             "EDH"/* alias for DHE */
# define SSL_TXT_ADH             "ADH"
# define SSL_TXT_RSA             "RSA"
# define SSL_TXT_ECDH            "ECDH"
# define SSL_TXT_EECDH           "EECDH"/* alias for ECDHE" */
# define SSL_TXT_ECDHE           "ECDHE"/* same as "kECDHE:-AECDH" */
# define SSL_TXT_AECDH           "AECDH"
# define SSL_TXT_ECDSA           "ECDSA"
# define SSL_TXT_PSK             "PSK"
# define SSL_TXT_SRP             "SRP"

# define SSL_TXT_DES             "DES"
# define SSL_TXT_3DES            "3DES"
# define SSL_TXT_RC4             "RC4"
# define SSL_TXT_RC2             "RC2"
# define SSL_TXT_IDEA            "IDEA"
# define SSL_TXT_SEED            "SEED"
# define SSL_TXT_AES128          "AES128"
# define SSL_TXT_AES256          "AES256"
# define SSL_TXT_AES             "AES"
# define SSL_TXT_AES_GCM         "AESGCM"
# define SSL_TXT_AES_CCM         "AESCCM"
# define SSL_TXT_AES_CCM_8       "AESCCM8"
# define SSL_TXT_CAMELLIA128     "CAMELLIA128"
# define SSL_TXT_CAMELLIA256     "CAMELLIA256"
# define SSL_TXT_CAMELLIA        "CAMELLIA"
# define SSL_TXT_CHACHA20        "CHACHA20"
# define SSL_TXT_GOST            "GOST89"
# define SSL_TXT_ARIA            "ARIA"
# define SSL_TXT_ARIA_GCM        "ARIAGCM"
# define SSL_TXT_ARIA128         "ARIA128"
# define SSL_TXT_ARIA256         "ARIA256"
# define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912"
# define SSL_TXT_CBC             "CBC"

# define SSL_TXT_MD5             "MD5"
# define SSL_TXT_SHA1            "SHA1"
# define SSL_TXT_SHA             "SHA"/* same as "SHA1" */
# define SSL_TXT_GOST94          "GOST94"
# define SSL_TXT_GOST89MAC       "GOST89MAC"
# define SSL_TXT_GOST12          "GOST12"
# define SSL_TXT_GOST89MAC12     "GOST89MAC12"
# define SSL_TXT_SHA256          "SHA256"
# define SSL_TXT_SHA384          "SHA384"

# define SSL_TXT_SSLV3           "SSLv3"
# define SSL_TXT_TLSV1           "TLSv1"
# define SSL_TXT_TLSV1_1         "TLSv1.1"
# define SSL_TXT_TLSV1_2         "TLSv1.2"

# define SSL_TXT_ALL             "ALL"

/*-
 * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
 * ciphers normally not being used.
 * Example: "RC4" will activate all ciphers using RC4 including ciphers
 * without authentication, which would normally disabled by DEFAULT (due
 * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT"
 * will make sure that it is also disabled in the specific selection.
 * COMPLEMENTOF* identifiers are portable between version, as adjustments
 * to the default cipher setup will also be included here.
 *
 * COMPLEMENTOFDEFAULT does not experience the same special treatment that
 * DEFAULT gets, as only selection is being done and no sorting as needed
 * for DEFAULT.
 */
# define SSL_TXT_CMPALL          "COMPLEMENTOFALL"
# define SSL_TXT_CMPDEF          "COMPLEMENTOFDEFAULT"

/*
 * The following cipher list is used by default. It also is substituted when
 * an application-defined cipher list string starts with 'DEFAULT'.
 * This applies to ciphersuites for TLSv1.2 and below.
 * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list()
 * Update both macro and function simultaneously
 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL"
/*
 * This is the default set of TLSv1.3 ciphersuites
 * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites()
 * Update both macro and function simultaneously
 */
#  define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \
                                   "TLS_CHACHA20_POLY1305_SHA256:" \
                                   "TLS_AES_128_GCM_SHA256"
# endif
/*
 * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always
 * starts with a reasonable order, and all we have to do for DEFAULT is
 * throwing out anonymous and unencrypted ciphersuites! (The latter are not
 * actually enabled by ALL, but "ALL:RSA" would enable some of them.)
 */

/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
# define SSL_SENT_SHUTDOWN       1
# define SSL_RECEIVED_SHUTDOWN   2

#ifdef __cplusplus
}
#endif

#ifdef  __cplusplus
extern "C" {
#endif

# define SSL_FILETYPE_ASN1       X509_FILETYPE_ASN1
# define SSL_FILETYPE_PEM        X509_FILETYPE_PEM

/*
 * This is needed to stop compilers complaining about the 'struct ssl_st *'
 * function parameters used to prototype callbacks in SSL_CTX.
 */
typedef struct ssl_st *ssl_crock_st;
typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
typedef struct ssl_method_st SSL_METHOD;
typedef struct ssl_cipher_st SSL_CIPHER;
typedef struct ssl_session_st SSL_SESSION;
typedef struct tls_sigalgs_st TLS_SIGALGS;
typedef struct ssl_conf_ctx_st SSL_CONF_CTX;
typedef struct ssl_comp_st SSL_COMP;

STACK_OF(SSL_CIPHER);
STACK_OF(SSL_COMP);

/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/
typedef struct srtp_protection_profile_st {
    const char *name;
    unsigned long id;
} SRTP_PROTECTION_PROFILE;
SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE)
#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx)))
#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))
#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null())
#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n)))
#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n))
#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i)))
#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))
#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx))
#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))
#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))
#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum)
#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))
#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)))
#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)))
#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))



typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data,
                                            int len, void *arg);
typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len,
                                        STACK_OF(SSL_CIPHER) *peer_ciphers,
                                        const SSL_CIPHER **cipher, void *arg);

/* Extension context codes */
/* This extension is only allowed in TLS */
#define SSL_EXT_TLS_ONLY                        0x0001
/* This extension is only allowed in DTLS */
#define SSL_EXT_DTLS_ONLY                       0x0002
/* Some extensions may be allowed in DTLS but we don't implement them for it */
#define SSL_EXT_TLS_IMPLEMENTATION_ONLY         0x0004
/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */
#define SSL_EXT_SSL3_ALLOWED                    0x0008
/* Extension is only defined for TLS1.2 and below */
#define SSL_EXT_TLS1_2_AND_BELOW_ONLY           0x0010
/* Extension is only defined for TLS1.3 and above */
#define SSL_EXT_TLS1_3_ONLY                     0x0020
/* Ignore this extension during parsing if we are resuming */
#define SSL_EXT_IGNORE_ON_RESUMPTION            0x0040
#define SSL_EXT_CLIENT_HELLO                    0x0080
/* Really means TLS1.2 or below */
#define SSL_EXT_TLS1_2_SERVER_HELLO             0x0100
#define SSL_EXT_TLS1_3_SERVER_HELLO             0x0200
#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS     0x0400
#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST      0x0800
#define SSL_EXT_TLS1_3_CERTIFICATE              0x1000
#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET       0x2000
#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST      0x4000

/* Typedefs for handling custom extensions */

typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
                                 const unsigned char **out, size_t *outlen,
                                 int *al, void *add_arg);

typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
                                   const unsigned char *out, void *add_arg);

typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
                                   const unsigned char *in, size_t inlen,
                                   int *al, void *parse_arg);


typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type,
                                        unsigned int context,
                                        const unsigned char **out,
                                        size_t *outlen, X509 *x,
                                        size_t chainidx,
                                        int *al, void *add_arg);

typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type,
                                          unsigned int context,
                                          const unsigned char *out,
                                          void *add_arg);

typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type,
                                          unsigned int context,
                                          const unsigned char *in,
                                          size_t inlen, X509 *x,
                                          size_t chainidx,
                                          int *al, void *parse_arg);

/* Typedef for verification callback */
typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx);

/* Typedef for SSL async callback */
typedef int (*SSL_async_callback_fn)(SSL *s, void *arg);

#define SSL_OP_BIT(n)  ((uint64_t)1 << (uint64_t)n)

/*
 * SSL/TLS connection options.
 */
    /* Disable Extended master secret */
# define SSL_OP_NO_EXTENDED_MASTER_SECRET                SSL_OP_BIT(0)
    /* Cleanse plaintext copies of data delivered to the application */
# define SSL_OP_CLEANSE_PLAINTEXT                        SSL_OP_BIT(1)
    /* Allow initial connection to servers that don't support RI */
# define SSL_OP_LEGACY_SERVER_CONNECT                    SSL_OP_BIT(2)
    /* Enable support for Kernel TLS */
# define SSL_OP_ENABLE_KTLS                              SSL_OP_BIT(3)
# define SSL_OP_TLSEXT_PADDING                           SSL_OP_BIT(4)
# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG                   SSL_OP_BIT(6)
# define SSL_OP_IGNORE_UNEXPECTED_EOF                    SSL_OP_BIT(7)
# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION               SSL_OP_BIT(8)
# define SSL_OP_DISABLE_TLSEXT_CA_NAMES                  SSL_OP_BIT(9)
    /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */
# define SSL_OP_ALLOW_NO_DHE_KEX                         SSL_OP_BIT(10)
    /*
     * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
     * in OpenSSL 0.9.6d.  Usually (depending on the application protocol)
     * the workaround is not needed.  Unfortunately some broken SSL/TLS
     * implementations cannot handle it at all, which is why we include it
     * in SSL_OP_ALL. Added in 0.9.6e
     */
# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS              SSL_OP_BIT(11)
    /* DTLS options */
# define SSL_OP_NO_QUERY_MTU                             SSL_OP_BIT(12)
    /* Turn on Cookie Exchange (on relevant for servers) */
# define SSL_OP_COOKIE_EXCHANGE                          SSL_OP_BIT(13)
    /* Don't use RFC4507 ticket extension */
# define SSL_OP_NO_TICKET                                SSL_OP_BIT(14)
# ifndef OPENSSL_NO_DTLS1_METHOD
    /*
     * Use Cisco's version identifier of DTLS_BAD_VER
     * (only with deprecated DTLSv1_client_method())
     */
#  define SSL_OP_CISCO_ANYCONNECT                        SSL_OP_BIT(15)
# endif
    /* As server, disallow session resumption on renegotiation */
# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION   SSL_OP_BIT(16)
    /* Don't use compression even if supported */
# define SSL_OP_NO_COMPRESSION                           SSL_OP_BIT(17)
    /* Permit unsafe legacy renegotiation */
# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION        SSL_OP_BIT(18)
    /* Disable encrypt-then-mac */
# define SSL_OP_NO_ENCRYPT_THEN_MAC                      SSL_OP_BIT(19)
    /*
     * Enable TLSv1.3 Compatibility mode. This is on by default. A future
     * version of OpenSSL may have this disabled by default.
     */
# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT                  SSL_OP_BIT(20)
    /*
     * Prioritize Chacha20Poly1305 when client does.
     * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE
     */
# define SSL_OP_PRIORITIZE_CHACHA                        SSL_OP_BIT(21)
    /*
     * Set on servers to choose the cipher according to server's preferences.
     */
# define SSL_OP_CIPHER_SERVER_PREFERENCE                 SSL_OP_BIT(22)
    /*
     * If set, a server will allow a client to issue a SSLv3.0 version
     * number as latest version supported in the premaster secret, even when
     * TLSv1.0 (version 3.1) was announced in the client hello. Normally
     * this is forbidden to prevent version rollback attacks.
     */
# define SSL_OP_TLS_ROLLBACK_BUG                         SSL_OP_BIT(23)
    /*
     * Switches off automatic TLSv1.3 anti-replay protection for early data.
     * This is a server-side option only (no effect on the client).
     */
# define SSL_OP_NO_ANTI_REPLAY                           SSL_OP_BIT(24)
# define SSL_OP_NO_SSLv3                                 SSL_OP_BIT(25)
# define SSL_OP_NO_TLSv1                                 SSL_OP_BIT(26)
# define SSL_OP_NO_TLSv1_2                               SSL_OP_BIT(27)
# define SSL_OP_NO_TLSv1_1                               SSL_OP_BIT(28)
# define SSL_OP_NO_TLSv1_3                               SSL_OP_BIT(29)
# define SSL_OP_NO_DTLSv1                                SSL_OP_BIT(26)
# define SSL_OP_NO_DTLSv1_2                              SSL_OP_BIT(27)
    /* Disallow all renegotiation */
# define SSL_OP_NO_RENEGOTIATION                         SSL_OP_BIT(30)
    /*
     * Make server add server-hello extension from early version of
     * cryptopro draft, when GOST ciphersuite is negotiated. Required for
     * interoperability with CryptoPro CSP 3.x
     */
# define SSL_OP_CRYPTOPRO_TLSEXT_BUG                     SSL_OP_BIT(31)

/*
 * Option "collections."
 */
# define SSL_OP_NO_SSL_MASK \
        ( SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \
          | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 )
# define SSL_OP_NO_DTLS_MASK \
        ( SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2 )

/* Various bug workarounds that should be rather harmless. */
# define SSL_OP_ALL \
        ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \
          | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG )

/*
 * OBSOLETE OPTIONS retained for compatibility
 */

# define SSL_OP_MICROSOFT_SESS_ID_BUG                    0x0
# define SSL_OP_NETSCAPE_CHALLENGE_BUG                   0x0
# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG         0x0
# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG              0x0
# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER               0x0
# define SSL_OP_MSIE_SSLV2_RSA_PADDING                   0x0
# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG                 0x0
# define SSL_OP_TLS_D5_BUG                               0x0
# define SSL_OP_TLS_BLOCK_PADDING_BUG                    0x0
# define SSL_OP_SINGLE_ECDH_USE                          0x0
# define SSL_OP_SINGLE_DH_USE                            0x0
# define SSL_OP_EPHEMERAL_RSA                            0x0
# define SSL_OP_NO_SSLv2                                 0x0
# define SSL_OP_PKCS1_CHECK_1                            0x0
# define SSL_OP_PKCS1_CHECK_2                            0x0
# define SSL_OP_NETSCAPE_CA_DN_BUG                       0x0
# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG          0x0

/*
 * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
 * when just a single record has been written):
 */
# define SSL_MODE_ENABLE_PARTIAL_WRITE       0x00000001U
/*
 * Make it possible to retry SSL_write() with changed buffer location (buffer
 * contents must stay the same!); this is not the default to avoid the
 * misconception that non-blocking SSL_write() behaves like non-blocking
 * write():
 */
# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U
/*
 * Never bother the application with retries if the transport is blocking:
 */
# define SSL_MODE_AUTO_RETRY 0x00000004U
/* Don't attempt to automatically build certificate chain */
# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U
/*
 * Save RAM by releasing read and write buffers when they're empty. (SSL3 and
 * TLS only.) Released buffers are freed.
 */
# define SSL_MODE_RELEASE_BUFFERS 0x00000010U
/*
 * Send the current time in the Random fields of the ClientHello and
 * ServerHello records for compatibility with hypothetical implementations
 * that require it.
 */
# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U
# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U
/*
 * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications
 * that reconnect with a downgraded protocol version; see
 * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your
 * application attempts a normal handshake. Only use this in explicit
 * fallback retries, following the guidance in
 * draft-ietf-tls-downgrade-scsv-00.
 */
# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U
/*
 * Support Asynchronous operation
 */
# define SSL_MODE_ASYNC 0x00000100U

/*
 * When using DTLS/SCTP, include the terminating zero in the label
 * used for computing the endpoint-pair shared secret. Required for
 * interoperability with implementations having this bug like these
 * older version of OpenSSL:
 * - OpenSSL 1.0.0 series
 * - OpenSSL 1.0.1 series
 * - OpenSSL 1.0.2 series
 * - OpenSSL 1.1.0 series
 * - OpenSSL 1.1.1 and 1.1.1a
 */
# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U

/* Cert related flags */
/*
 * Many implementations ignore some aspects of the TLS standards such as
 * enforcing certificate chain algorithms. When this is set we enforce them.
 */
# define SSL_CERT_FLAG_TLS_STRICT                0x00000001U

/* Suite B modes, takes same values as certificate verify flags */
# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY       0x10000
/* Suite B 192 bit only mode */
# define SSL_CERT_FLAG_SUITEB_192_LOS            0x20000
/* Suite B 128 bit mode allowing 192 bit algorithms */
# define SSL_CERT_FLAG_SUITEB_128_LOS            0x30000

/* Perform all sorts of protocol violations for testing purposes */
# define SSL_CERT_FLAG_BROKEN_PROTOCOL           0x10000000

/* Flags for building certificate chains */
/* Treat any existing certificates as untrusted CAs */
# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED          0x1
/* Don't include root CA in chain */
# define SSL_BUILD_CHAIN_FLAG_NO_ROOT            0x2
/* Just check certificates already there */
# define SSL_BUILD_CHAIN_FLAG_CHECK              0x4
/* Ignore verification errors */
# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR       0x8
/* Clear verification errors from queue */
# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR        0x10

/* Flags returned by SSL_check_chain */
/* Certificate can be used with this session */
# define CERT_PKEY_VALID         0x1
/* Certificate can also be used for signing */
# define CERT_PKEY_SIGN          0x2
/* EE certificate signing algorithm OK */
# define CERT_PKEY_EE_SIGNATURE  0x10
/* CA signature algorithms OK */
# define CERT_PKEY_CA_SIGNATURE  0x20
/* EE certificate parameters OK */
# define CERT_PKEY_EE_PARAM      0x40
/* CA certificate parameters OK */
# define CERT_PKEY_CA_PARAM      0x80
/* Signing explicitly allowed as opposed to SHA1 fallback */
# define CERT_PKEY_EXPLICIT_SIGN 0x100
/* Client CA issuer names match (always set for server cert) */
# define CERT_PKEY_ISSUER_NAME   0x200
/* Cert type matches client types (always set for server cert) */
# define CERT_PKEY_CERT_TYPE     0x400
/* Cert chain suitable to Suite B */
# define CERT_PKEY_SUITEB        0x800

# define SSL_CONF_FLAG_CMDLINE           0x1
# define SSL_CONF_FLAG_FILE              0x2
# define SSL_CONF_FLAG_CLIENT            0x4
# define SSL_CONF_FLAG_SERVER            0x8
# define SSL_CONF_FLAG_SHOW_ERRORS       0x10
# define SSL_CONF_FLAG_CERTIFICATE       0x20
# define SSL_CONF_FLAG_REQUIRE_PRIVATE   0x40
/* Configuration value types */
# define SSL_CONF_TYPE_UNKNOWN           0x0
# define SSL_CONF_TYPE_STRING            0x1
# define SSL_CONF_TYPE_FILE              0x2
# define SSL_CONF_TYPE_DIR               0x3
# define SSL_CONF_TYPE_NONE              0x4
# define SSL_CONF_TYPE_STORE             0x5

/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */
# define SSL_COOKIE_LENGTH                       4096

/*
 * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they
 * cannot be used to clear bits.
 */

uint64_t SSL_CTX_get_options(const SSL_CTX *ctx);
uint64_t SSL_get_options(const SSL *s);
uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op);
uint64_t SSL_clear_options(SSL *s, uint64_t op);
uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op);
uint64_t SSL_set_options(SSL *s, uint64_t op);

# define SSL_CTX_set_mode(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
# define SSL_CTX_clear_mode(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL)
# define SSL_CTX_get_mode(ctx) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)
# define SSL_clear_mode(ssl,op) \
        SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL)
# define SSL_set_mode(ssl,op) \
        SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)
# define SSL_get_mode(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)
# define SSL_set_mtu(ssl, mtu) \
        SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)
# define DTLS_set_link_mtu(ssl, mtu) \
        SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL)
# define DTLS_get_link_min_mtu(ssl) \
        SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL)

# define SSL_get_secure_renegotiation_support(ssl) \
        SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)

# define SSL_CTX_set_cert_flags(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL)
# define SSL_set_cert_flags(s,op) \
        SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL)
# define SSL_CTX_clear_cert_flags(ctx,op) \
        SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)
# define SSL_clear_cert_flags(s,op) \
        SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)

void SSL_CTX_set_msg_callback(SSL_CTX *ctx,
                              void (*cb) (int write_p, int version,
                                          int content_type, const void *buf,
                                          size_t len, SSL *ssl, void *arg));
void SSL_set_msg_callback(SSL *ssl,
                          void (*cb) (int write_p, int version,
                                      int content_type, const void *buf,
                                      size_t len, SSL *ssl, void *arg));
# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))

# define SSL_get_extms_support(s) \
        SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL)

# ifndef OPENSSL_NO_SRP
/* see tls_srp.c */
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s,
                                                                    int *ad);
OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s);
#  endif
# endif

/* 100k max cert list */
# define SSL_MAX_CERT_LIST_DEFAULT (1024*100)

# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT      (1024*20)

/*
 * This callback type is used inside SSL_CTX, SSL, and in the functions that
 * set them. It is used to override the generation of SSL/TLS session IDs in
 * a server. Return value should be zero on an error, non-zero to proceed.
 * Also, callbacks should themselves check if the id they generate is unique
 * otherwise the SSL handshake will fail with an error - callbacks can do
 * this using the 'ssl' value they're passed by;
 * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in
 * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32
 * bytes. The callback can alter this length to be less if desired. It is
 * also an error for the callback to set the size to zero.
 */
typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id,
                               unsigned int *id_len);

# define SSL_SESS_CACHE_OFF                      0x0000
# define SSL_SESS_CACHE_CLIENT                   0x0001
# define SSL_SESS_CACHE_SERVER                   0x0002
# define SSL_SESS_CACHE_BOTH     (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
# define SSL_SESS_CACHE_NO_AUTO_CLEAR            0x0080
/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */
# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP       0x0100
# define SSL_SESS_CACHE_NO_INTERNAL_STORE        0x0200
# define SSL_SESS_CACHE_NO_INTERNAL \
        (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)
# define SSL_SESS_CACHE_UPDATE_TIME              0x0400

LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx);
# define SSL_CTX_sess_number(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
# define SSL_CTX_sess_connect(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
# define SSL_CTX_sess_connect_good(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
# define SSL_CTX_sess_connect_renegotiate(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
# define SSL_CTX_sess_accept(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
# define SSL_CTX_sess_accept_renegotiate(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
# define SSL_CTX_sess_accept_good(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
# define SSL_CTX_sess_hits(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
# define SSL_CTX_sess_cb_hits(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
# define SSL_CTX_sess_misses(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
# define SSL_CTX_sess_timeouts(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
# define SSL_CTX_sess_cache_full(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)

void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx,
                             int (*new_session_cb) (struct ssl_st *ssl,
                                                    SSL_SESSION *sess));
int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
                                              SSL_SESSION *sess);
void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
                                void (*remove_session_cb) (struct ssl_ctx_st
                                                           *ctx,
                                                           SSL_SESSION *sess));
void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx,
                                                  SSL_SESSION *sess);
void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,
                             SSL_SESSION *(*get_session_cb) (struct ssl_st
                                                             *ssl,
                                                             const unsigned char
                                                             *data, int len,
                                                             int *copy));
SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,
                                                       const unsigned char *data,
                                                       int len, int *copy);
void SSL_CTX_set_info_callback(SSL_CTX *ctx,
                               void (*cb) (const SSL *ssl, int type, int val));
void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type,
                                                 int val);
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,
                                int (*client_cert_cb) (SSL *ssl, X509 **x509,
                                                       EVP_PKEY **pkey));
int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509,
                                                 EVP_PKEY **pkey);
# ifndef OPENSSL_NO_ENGINE
__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e);
# endif
void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx,
                                    int (*app_gen_cookie_cb) (SSL *ssl,
                                                              unsigned char
                                                              *cookie,
                                                              unsigned int
                                                              *cookie_len));
void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
                                  int (*app_verify_cookie_cb) (SSL *ssl,
                                                               const unsigned
                                                               char *cookie,
                                                               unsigned int
                                                               cookie_len));

void SSL_CTX_set_stateless_cookie_generate_cb(
    SSL_CTX *ctx,
    int (*gen_stateless_cookie_cb) (SSL *ssl,
                                    unsigned char *cookie,
                                    size_t *cookie_len));
void SSL_CTX_set_stateless_cookie_verify_cb(
    SSL_CTX *ctx,
    int (*verify_stateless_cookie_cb) (SSL *ssl,
                                       const unsigned char *cookie,
                                       size_t cookie_len));
# ifndef OPENSSL_NO_NEXTPROTONEG

typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl,
                                              const unsigned char **out,
                                              unsigned int *outlen,
                                              void *arg);
void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s,
                                           SSL_CTX_npn_advertised_cb_func cb,
                                           void *arg);
#  define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb

typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s,
                                          unsigned char **out,
                                          unsigned char *outlen,
                                          const unsigned char *in,
                                          unsigned int inlen,
                                          void *arg);
void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
                                      SSL_CTX_npn_select_cb_func cb,
                                      void *arg);
#  define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb

void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
                                    unsigned *len);
#  define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated
# endif

__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
                                 const unsigned char *in, unsigned int inlen,
                                 const unsigned char *client,
                                 unsigned int client_len);

# define OPENSSL_NPN_UNSUPPORTED 0
# define OPENSSL_NPN_NEGOTIATED  1
# define OPENSSL_NPN_NO_OVERLAP  2

__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos,
                                   unsigned int protos_len);
__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
                               unsigned int protos_len);
typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl,
                                           const unsigned char **out,
                                           unsigned char *outlen,
                                           const unsigned char *in,
                                           unsigned int inlen,
                                           void *arg);
void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
                                SSL_CTX_alpn_select_cb_func cb,
                                void *arg);
void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
                            unsigned int *len);

# ifndef OPENSSL_NO_PSK
/*
 * the maximum length of the buffer given to callbacks containing the
 * resulting identity/psk
 */
#  define PSK_MAX_IDENTITY_LEN 256
#  define PSK_MAX_PSK_LEN 512
typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl,
                                               const char *hint,
                                               char *identity,
                                               unsigned int max_identity_len,
                                               unsigned char *psk,
                                               unsigned int max_psk_len);
void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb);
void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb);

typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl,
                                               const char *identity,
                                               unsigned char *psk,
                                               unsigned int max_psk_len);
void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb);
void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb);

__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint);
__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint);
const char *SSL_get_psk_identity_hint(const SSL *s);
const char *SSL_get_psk_identity(const SSL *s);
# endif

typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl,
                                            const unsigned char *identity,
                                            size_t identity_len,
                                            SSL_SESSION **sess);
typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md,
                                           const unsigned char **id,
                                           size_t *idlen,
                                           SSL_SESSION **sess);

void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb);
void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx,
                                           SSL_psk_find_session_cb_func cb);
void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb);
void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx,
                                          SSL_psk_use_session_cb_func cb);

/* Register callbacks to handle custom TLS Extensions for client or server. */

__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx,
                                         unsigned int ext_type);

__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx,
                                         unsigned int ext_type,
                                         custom_ext_add_cb add_cb,
                                         custom_ext_free_cb free_cb,
                                         void *add_arg,
                                         custom_ext_parse_cb parse_cb,
                                         void *parse_arg);

__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx,
                                         unsigned int ext_type,
                                         custom_ext_add_cb add_cb,
                                         custom_ext_free_cb free_cb,
                                         void *add_arg,
                                         custom_ext_parse_cb parse_cb,
                                         void *parse_arg);

__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                                  unsigned int context,
                                  SSL_custom_ext_add_cb_ex add_cb,
                                  SSL_custom_ext_free_cb_ex free_cb,
                                  void *add_arg,
                                  SSL_custom_ext_parse_cb_ex parse_cb,
                                  void *parse_arg);

__owur int SSL_extension_supported(unsigned int ext_type);

# define SSL_NOTHING            1
# define SSL_WRITING            2
# define SSL_READING            3
# define SSL_X509_LOOKUP        4
# define SSL_ASYNC_PAUSED       5
# define SSL_ASYNC_NO_JOBS      6
# define SSL_CLIENT_HELLO_CB    7
# define SSL_RETRY_VERIFY       8

/* These will only be used when doing non-blocking IO */
# define SSL_want_nothing(s)         (SSL_want(s) == SSL_NOTHING)
# define SSL_want_read(s)            (SSL_want(s) == SSL_READING)
# define SSL_want_write(s)           (SSL_want(s) == SSL_WRITING)
# define SSL_want_x509_lookup(s)     (SSL_want(s) == SSL_X509_LOOKUP)
# define SSL_want_retry_verify(s)    (SSL_want(s) == SSL_RETRY_VERIFY)
# define SSL_want_async(s)           (SSL_want(s) == SSL_ASYNC_PAUSED)
# define SSL_want_async_job(s)       (SSL_want(s) == SSL_ASYNC_NO_JOBS)
# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB)

# define SSL_MAC_FLAG_READ_MAC_STREAM 1
# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2
# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4
# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8

/*
 * A callback for logging out TLS key material. This callback should log out
 * |line| followed by a newline.
 */
typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line);

/*
 * SSL_CTX_set_keylog_callback configures a callback to log key material. This
 * is intended for debugging use with tools like Wireshark. The cb function
 * should log line followed by a newline.
 */
void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb);

/*
 * SSL_CTX_get_keylog_callback returns the callback configured by
 * SSL_CTX_set_keylog_callback.
 */
SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx);

int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data);
uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx);
int SSL_set_max_early_data(SSL *s, uint32_t max_early_data);
uint32_t SSL_get_max_early_data(const SSL *s);
int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data);
uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx);
int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data);
uint32_t SSL_get_recv_max_early_data(const SSL *s);

#ifdef __cplusplus
}
#endif

# include <openssl/ssl2.h>
# include <openssl/ssl3.h>
# include <openssl/tls1.h>      /* This is mostly sslv3 with a few tweaks */
# include <openssl/dtls1.h>     /* Datagram TLS */
# include <openssl/srtp.h>      /* Support for the use_srtp extension */

#ifdef  __cplusplus
extern "C" {
#endif

/*
 * These need to be after the above set of includes due to a compiler bug
 * in VisualStudio 2015
 */
SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER)
#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx)))
#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp)))
#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null())
#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n)))
#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n))
#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i)))
#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)))
#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc))
#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx))
#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr)))
#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))
#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum)
#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk))
#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk)))
#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc)))
#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP)
#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx)))
#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp)))
#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null())
#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n)))
#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n))
#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i)))
#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)))
#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc))
#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx))
#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr)))
#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))
#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum)
#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk))
#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk)))
#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc)))
#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp)))


/* compatibility */
# define SSL_set_app_data(s,arg)         (SSL_set_ex_data(s,0,(char *)(arg)))
# define SSL_get_app_data(s)             (SSL_get_ex_data(s,0))
# define SSL_SESSION_set_app_data(s,a)   (SSL_SESSION_set_ex_data(s,0, \
                                                                  (char *)(a)))
# define SSL_SESSION_get_app_data(s)     (SSL_SESSION_get_ex_data(s,0))
# define SSL_CTX_get_app_data(ctx)       (SSL_CTX_get_ex_data(ctx,0))
# define SSL_CTX_set_app_data(ctx,arg)   (SSL_CTX_set_ex_data(ctx,0, \
                                                              (char *)(arg)))
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug);
# endif

/* TLSv1.3 KeyUpdate message types */
/* -1 used so that this is an invalid value for the on-the-wire protocol */
#define SSL_KEY_UPDATE_NONE             -1
/* Values as defined for the on-the-wire protocol */
#define SSL_KEY_UPDATE_NOT_REQUESTED     0
#define SSL_KEY_UPDATE_REQUESTED         1

/*
 * The valid handshake states (one for each type message sent and one for each
 * type of message received). There are also two "special" states:
 * TLS = TLS or DTLS state
 * DTLS = DTLS specific state
 * CR/SR = Client Read/Server Read
 * CW/SW = Client Write/Server Write
 *
 * The "special" states are:
 * TLS_ST_BEFORE = No handshake has been initiated yet
 * TLS_ST_OK = A handshake has been successfully completed
 */
typedef enum {
    TLS_ST_BEFORE,
    TLS_ST_OK,
    DTLS_ST_CR_HELLO_VERIFY_REQUEST,
    TLS_ST_CR_SRVR_HELLO,
    TLS_ST_CR_CERT,
    TLS_ST_CR_CERT_STATUS,
    TLS_ST_CR_KEY_EXCH,
    TLS_ST_CR_CERT_REQ,
    TLS_ST_CR_SRVR_DONE,
    TLS_ST_CR_SESSION_TICKET,
    TLS_ST_CR_CHANGE,
    TLS_ST_CR_FINISHED,
    TLS_ST_CW_CLNT_HELLO,
    TLS_ST_CW_CERT,
    TLS_ST_CW_KEY_EXCH,
    TLS_ST_CW_CERT_VRFY,
    TLS_ST_CW_CHANGE,
    TLS_ST_CW_NEXT_PROTO,
    TLS_ST_CW_FINISHED,
    TLS_ST_SW_HELLO_REQ,
    TLS_ST_SR_CLNT_HELLO,
    DTLS_ST_SW_HELLO_VERIFY_REQUEST,
    TLS_ST_SW_SRVR_HELLO,
    TLS_ST_SW_CERT,
    TLS_ST_SW_KEY_EXCH,
    TLS_ST_SW_CERT_REQ,
    TLS_ST_SW_SRVR_DONE,
    TLS_ST_SR_CERT,
    TLS_ST_SR_KEY_EXCH,
    TLS_ST_SR_CERT_VRFY,
    TLS_ST_SR_NEXT_PROTO,
    TLS_ST_SR_CHANGE,
    TLS_ST_SR_FINISHED,
    TLS_ST_SW_SESSION_TICKET,
    TLS_ST_SW_CERT_STATUS,
    TLS_ST_SW_CHANGE,
    TLS_ST_SW_FINISHED,
    TLS_ST_SW_ENCRYPTED_EXTENSIONS,
    TLS_ST_CR_ENCRYPTED_EXTENSIONS,
    TLS_ST_CR_CERT_VRFY,
    TLS_ST_SW_CERT_VRFY,
    TLS_ST_CR_HELLO_REQ,
    TLS_ST_SW_KEY_UPDATE,
    TLS_ST_CW_KEY_UPDATE,
    TLS_ST_SR_KEY_UPDATE,
    TLS_ST_CR_KEY_UPDATE,
    TLS_ST_EARLY_DATA,
    TLS_ST_PENDING_EARLY_DATA_END,
    TLS_ST_CW_END_OF_EARLY_DATA,
    TLS_ST_SR_END_OF_EARLY_DATA
} OSSL_HANDSHAKE_STATE;

/*
 * Most of the following state values are no longer used and are defined to be
 * the closest equivalent value in the current state machine code. Not all
 * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT
 * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP,
 * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT.
 */

# define SSL_ST_CONNECT                  0x1000
# define SSL_ST_ACCEPT                   0x2000

# define SSL_ST_MASK                     0x0FFF

# define SSL_CB_LOOP                     0x01
# define SSL_CB_EXIT                     0x02
# define SSL_CB_READ                     0x04
# define SSL_CB_WRITE                    0x08
# define SSL_CB_ALERT                    0x4000/* used in callback */
# define SSL_CB_READ_ALERT               (SSL_CB_ALERT|SSL_CB_READ)
# define SSL_CB_WRITE_ALERT              (SSL_CB_ALERT|SSL_CB_WRITE)
# define SSL_CB_ACCEPT_LOOP              (SSL_ST_ACCEPT|SSL_CB_LOOP)
# define SSL_CB_ACCEPT_EXIT              (SSL_ST_ACCEPT|SSL_CB_EXIT)
# define SSL_CB_CONNECT_LOOP             (SSL_ST_CONNECT|SSL_CB_LOOP)
# define SSL_CB_CONNECT_EXIT             (SSL_ST_CONNECT|SSL_CB_EXIT)
# define SSL_CB_HANDSHAKE_START          0x10
# define SSL_CB_HANDSHAKE_DONE           0x20

/* Is the SSL_connection established? */
# define SSL_in_connect_init(a)          (SSL_in_init(a) && !SSL_is_server(a))
# define SSL_in_accept_init(a)           (SSL_in_init(a) && SSL_is_server(a))
int SSL_in_init(const SSL *s);
int SSL_in_before(const SSL *s);
int SSL_is_init_finished(const SSL *s);

/*
 * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you
 * should not need these
 */
# define SSL_ST_READ_HEADER                      0xF0
# define SSL_ST_READ_BODY                        0xF1
# define SSL_ST_READ_DONE                        0xF2

/*-
 * Obtain latest Finished message
 *   -- that we sent (SSL_get_finished)
 *   -- that we expected from peer (SSL_get_peer_finished).
 * Returns length (0 == no Finished so far), copies up to 'count' bytes.
 */
size_t SSL_get_finished(const SSL *s, void *buf, size_t count);
size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);

/*
 * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are
 * 'ored' with SSL_VERIFY_PEER if they are desired
 */
# define SSL_VERIFY_NONE                 0x00
# define SSL_VERIFY_PEER                 0x01
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
# define SSL_VERIFY_CLIENT_ONCE          0x04
# define SSL_VERIFY_POST_HANDSHAKE       0x08

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define OpenSSL_add_ssl_algorithms()   SSL_library_init()
#  define SSLeay_add_ssl_algorithms()    SSL_library_init()
# endif

/* More backward compatibility */
# define SSL_get_cipher(s) \
                SSL_CIPHER_get_name(SSL_get_current_cipher(s))
# define SSL_get_cipher_bits(s,np) \
                SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
# define SSL_get_cipher_version(s) \
                SSL_CIPHER_get_version(SSL_get_current_cipher(s))
# define SSL_get_cipher_name(s) \
                SSL_CIPHER_get_name(SSL_get_current_cipher(s))
# define SSL_get_time(a)         SSL_SESSION_get_time(a)
# define SSL_set_time(a,b)       SSL_SESSION_set_time((a),(b))
# define SSL_get_timeout(a)      SSL_SESSION_get_timeout(a)
# define SSL_set_timeout(a,b)    SSL_SESSION_set_timeout((a),(b))

# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)
# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id)

DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
# define SSL_AD_REASON_OFFSET            1000/* offset to get SSL_R_... value
                                              * from SSL_AD_... */
/* These alert types are for SSLv3 and TLSv1 */
# define SSL_AD_CLOSE_NOTIFY             SSL3_AD_CLOSE_NOTIFY
/* fatal */
# define SSL_AD_UNEXPECTED_MESSAGE       SSL3_AD_UNEXPECTED_MESSAGE
/* fatal */
# define SSL_AD_BAD_RECORD_MAC           SSL3_AD_BAD_RECORD_MAC
# define SSL_AD_DECRYPTION_FAILED        TLS1_AD_DECRYPTION_FAILED
# define SSL_AD_RECORD_OVERFLOW          TLS1_AD_RECORD_OVERFLOW
/* fatal */
# define SSL_AD_DECOMPRESSION_FAILURE    SSL3_AD_DECOMPRESSION_FAILURE
/* fatal */
# define SSL_AD_HANDSHAKE_FAILURE        SSL3_AD_HANDSHAKE_FAILURE
/* Not for TLS */
# define SSL_AD_NO_CERTIFICATE           SSL3_AD_NO_CERTIFICATE
# define SSL_AD_BAD_CERTIFICATE          SSL3_AD_BAD_CERTIFICATE
# define SSL_AD_UNSUPPORTED_CERTIFICATE  SSL3_AD_UNSUPPORTED_CERTIFICATE
# define SSL_AD_CERTIFICATE_REVOKED      SSL3_AD_CERTIFICATE_REVOKED
# define SSL_AD_CERTIFICATE_EXPIRED      SSL3_AD_CERTIFICATE_EXPIRED
# define SSL_AD_CERTIFICATE_UNKNOWN      SSL3_AD_CERTIFICATE_UNKNOWN
/* fatal */
# define SSL_AD_ILLEGAL_PARAMETER        SSL3_AD_ILLEGAL_PARAMETER
/* fatal */
# define SSL_AD_UNKNOWN_CA               TLS1_AD_UNKNOWN_CA
/* fatal */
# define SSL_AD_ACCESS_DENIED            TLS1_AD_ACCESS_DENIED
/* fatal */
# define SSL_AD_DECODE_ERROR             TLS1_AD_DECODE_ERROR
# define SSL_AD_DECRYPT_ERROR            TLS1_AD_DECRYPT_ERROR
/* fatal */
# define SSL_AD_EXPORT_RESTRICTION       TLS1_AD_EXPORT_RESTRICTION
/* fatal */
# define SSL_AD_PROTOCOL_VERSION         TLS1_AD_PROTOCOL_VERSION
/* fatal */
# define SSL_AD_INSUFFICIENT_SECURITY    TLS1_AD_INSUFFICIENT_SECURITY
/* fatal */
# define SSL_AD_INTERNAL_ERROR           TLS1_AD_INTERNAL_ERROR
# define SSL_AD_USER_CANCELLED           TLS1_AD_USER_CANCELLED
# define SSL_AD_NO_RENEGOTIATION         TLS1_AD_NO_RENEGOTIATION
# define SSL_AD_MISSING_EXTENSION        TLS13_AD_MISSING_EXTENSION
# define SSL_AD_CERTIFICATE_REQUIRED     TLS13_AD_CERTIFICATE_REQUIRED
# define SSL_AD_UNSUPPORTED_EXTENSION    TLS1_AD_UNSUPPORTED_EXTENSION
# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE
# define SSL_AD_UNRECOGNIZED_NAME        TLS1_AD_UNRECOGNIZED_NAME
# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
/* fatal */
# define SSL_AD_UNKNOWN_PSK_IDENTITY     TLS1_AD_UNKNOWN_PSK_IDENTITY
/* fatal */
# define SSL_AD_INAPPROPRIATE_FALLBACK   TLS1_AD_INAPPROPRIATE_FALLBACK
# define SSL_AD_NO_APPLICATION_PROTOCOL  TLS1_AD_NO_APPLICATION_PROTOCOL
# define SSL_ERROR_NONE                  0
# define SSL_ERROR_SSL                   1
# define SSL_ERROR_WANT_READ             2
# define SSL_ERROR_WANT_WRITE            3
# define SSL_ERROR_WANT_X509_LOOKUP      4
# define SSL_ERROR_SYSCALL               5/* look at error stack/return
                                           * value/errno */
# define SSL_ERROR_ZERO_RETURN           6
# define SSL_ERROR_WANT_CONNECT          7
# define SSL_ERROR_WANT_ACCEPT           8
# define SSL_ERROR_WANT_ASYNC            9
# define SSL_ERROR_WANT_ASYNC_JOB       10
# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11
# define SSL_ERROR_WANT_RETRY_VERIFY    12

# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTRL_SET_TMP_DH                    3
#  define SSL_CTRL_SET_TMP_ECDH                  4
#  define SSL_CTRL_SET_TMP_DH_CB                 6
# endif

# define SSL_CTRL_GET_CLIENT_CERT_REQUEST        9
# define SSL_CTRL_GET_NUM_RENEGOTIATIONS         10
# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS       11
# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS       12
# define SSL_CTRL_GET_FLAGS                      13
# define SSL_CTRL_EXTRA_CHAIN_CERT               14
# define SSL_CTRL_SET_MSG_CALLBACK               15
# define SSL_CTRL_SET_MSG_CALLBACK_ARG           16
/* only applies to datagram connections */
# define SSL_CTRL_SET_MTU                17
/* Stats */
# define SSL_CTRL_SESS_NUMBER                    20
# define SSL_CTRL_SESS_CONNECT                   21
# define SSL_CTRL_SESS_CONNECT_GOOD              22
# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE       23
# define SSL_CTRL_SESS_ACCEPT                    24
# define SSL_CTRL_SESS_ACCEPT_GOOD               25
# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE        26
# define SSL_CTRL_SESS_HIT                       27
# define SSL_CTRL_SESS_CB_HIT                    28
# define SSL_CTRL_SESS_MISSES                    29
# define SSL_CTRL_SESS_TIMEOUTS                  30
# define SSL_CTRL_SESS_CACHE_FULL                31
# define SSL_CTRL_MODE                           33
# define SSL_CTRL_GET_READ_AHEAD                 40
# define SSL_CTRL_SET_READ_AHEAD                 41
# define SSL_CTRL_SET_SESS_CACHE_SIZE            42
# define SSL_CTRL_GET_SESS_CACHE_SIZE            43
# define SSL_CTRL_SET_SESS_CACHE_MODE            44
# define SSL_CTRL_GET_SESS_CACHE_MODE            45
# define SSL_CTRL_GET_MAX_CERT_LIST              50
# define SSL_CTRL_SET_MAX_CERT_LIST              51
# define SSL_CTRL_SET_MAX_SEND_FRAGMENT          52
/* see tls1.h for macros based on these */
# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB       53
# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG      54
# define SSL_CTRL_SET_TLSEXT_HOSTNAME            55
# define SSL_CTRL_SET_TLSEXT_DEBUG_CB            56
# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG           57
# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS         58
# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS         59
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT    60 */
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */
/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB       63
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG   64
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE     65
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS     66
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS     67
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS      68
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS      69
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP        70
# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP        71
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB      72
# endif
# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB    75
# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB                76
# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB             77
# define SSL_CTRL_SET_SRP_ARG            78
# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME               79
# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH               80
# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD               81
# define DTLS_CTRL_GET_TIMEOUT           73
# define DTLS_CTRL_HANDLE_TIMEOUT        74
# define SSL_CTRL_GET_RI_SUPPORT                 76
# define SSL_CTRL_CLEAR_MODE                     78
# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB      79
# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS          82
# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS        83
# define SSL_CTRL_CHAIN                          88
# define SSL_CTRL_CHAIN_CERT                     89
# define SSL_CTRL_GET_GROUPS                     90
# define SSL_CTRL_SET_GROUPS                     91
# define SSL_CTRL_SET_GROUPS_LIST                92
# define SSL_CTRL_GET_SHARED_GROUP               93
# define SSL_CTRL_SET_SIGALGS                    97
# define SSL_CTRL_SET_SIGALGS_LIST               98
# define SSL_CTRL_CERT_FLAGS                     99
# define SSL_CTRL_CLEAR_CERT_FLAGS               100
# define SSL_CTRL_SET_CLIENT_SIGALGS             101
# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST        102
# define SSL_CTRL_GET_CLIENT_CERT_TYPES          103
# define SSL_CTRL_SET_CLIENT_CERT_TYPES          104
# define SSL_CTRL_BUILD_CERT_CHAIN               105
# define SSL_CTRL_SET_VERIFY_CERT_STORE          106
# define SSL_CTRL_SET_CHAIN_CERT_STORE           107
# define SSL_CTRL_GET_PEER_SIGNATURE_NID         108
# define SSL_CTRL_GET_PEER_TMP_KEY               109
# define SSL_CTRL_GET_RAW_CIPHERLIST             110
# define SSL_CTRL_GET_EC_POINT_FORMATS           111
# define SSL_CTRL_GET_CHAIN_CERTS                115
# define SSL_CTRL_SELECT_CURRENT_CERT            116
# define SSL_CTRL_SET_CURRENT_CERT               117
# define SSL_CTRL_SET_DH_AUTO                    118
# define DTLS_CTRL_SET_LINK_MTU                  120
# define DTLS_CTRL_GET_LINK_MIN_MTU              121
# define SSL_CTRL_GET_EXTMS_SUPPORT              122
# define SSL_CTRL_SET_MIN_PROTO_VERSION          123
# define SSL_CTRL_SET_MAX_PROTO_VERSION          124
# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT        125
# define SSL_CTRL_SET_MAX_PIPELINES              126
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE     127
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB       128
# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG   129
# define SSL_CTRL_GET_MIN_PROTO_VERSION          130
# define SSL_CTRL_GET_MAX_PROTO_VERSION          131
# define SSL_CTRL_GET_SIGNATURE_NID              132
# define SSL_CTRL_GET_TMP_KEY                    133
# define SSL_CTRL_GET_NEGOTIATED_GROUP           134
# define SSL_CTRL_SET_RETRY_VERIFY               136
# define SSL_CTRL_GET_VERIFY_CERT_STORE          137
# define SSL_CTRL_GET_CHAIN_CERT_STORE           138
# define SSL_CERT_SET_FIRST                      1
# define SSL_CERT_SET_NEXT                       2
# define SSL_CERT_SET_SERVER                     3
# define DTLSv1_get_timeout(ssl, arg) \
        SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg))
# define DTLSv1_handle_timeout(ssl) \
        SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL)
# define SSL_num_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
# define SSL_clear_num_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
# define SSL_total_renegotiations(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTX_set_tmp_dh(ctx,dh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
# endif
# define SSL_CTX_set_dh_auto(ctx, onoff) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
# define SSL_set_dh_auto(s, onoff) \
        SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL)
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_set_tmp_dh(ssl,dh) \
        SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
#  define SSL_set_tmp_ecdh(ssl,ecdh) \
        SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))
# endif
# define SSL_CTX_add_extra_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509))
# define SSL_CTX_get_extra_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509)
# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509)
# define SSL_CTX_clear_extra_chain_certs(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL)
# define SSL_CTX_set0_chain(ctx,sk) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk))
# define SSL_CTX_set1_chain(ctx,sk) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk))
# define SSL_CTX_add0_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
# define SSL_CTX_add1_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
# define SSL_CTX_get0_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
# define SSL_CTX_clear_chain_certs(ctx) \
        SSL_CTX_set0_chain(ctx,NULL)
# define SSL_CTX_build_cert_chain(ctx, flags) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
# define SSL_CTX_select_current_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
# define SSL_CTX_set_current_cert(ctx, op) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
# define SSL_CTX_set0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set1_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
# define SSL_CTX_get0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set0_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_CTX_set1_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
# define SSL_CTX_get0_chain_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_set0_chain(s,sk) \
        SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk))
# define SSL_set1_chain(s,sk) \
        SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk))
# define SSL_add0_chain_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
# define SSL_add1_chain_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))
# define SSL_get0_chain_certs(s,px509) \
        SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
# define SSL_clear_chain_certs(s) \
        SSL_set0_chain(s,NULL)
# define SSL_build_cert_chain(s, flags) \
        SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
# define SSL_select_current_cert(s,x509) \
        SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))
# define SSL_set_current_cert(s,op) \
        SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
# define SSL_set0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_set1_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
#define SSL_get0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
# define SSL_set0_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
# define SSL_set1_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
#define SSL_get0_chain_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))

# define SSL_get1_groups(s, glist) \
        SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist))
# define SSL_CTX_set1_groups(ctx, glist, glistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist))
# define SSL_CTX_set1_groups_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s))
# define SSL_set1_groups(s, glist, glistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist))
# define SSL_set1_groups_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str))
# define SSL_get_shared_group(s, n) \
        SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL)
# define SSL_get_negotiated_group(s) \
        SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,NULL)
# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
# define SSL_CTX_set1_sigalgs_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s))
# define SSL_set1_sigalgs(s, slist, slistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))
# define SSL_set1_sigalgs_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str))
# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s))
# define SSL_set1_client_sigalgs(s, slist, slistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))
# define SSL_set1_client_sigalgs_list(s, str) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str))
# define SSL_get0_certificate_types(s, clist) \
        SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist))
# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \
                     (char *)(clist))
# define SSL_set1_client_certificate_types(s, clist, clistlen) \
        SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist))
# define SSL_get_signature_nid(s, pn) \
        SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn)
# define SSL_get_peer_signature_nid(s, pn) \
        SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn)
# define SSL_get_peer_tmp_key(s, pk) \
        SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk)
# define SSL_get_tmp_key(s, pk) \
        SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk)
# define SSL_get0_raw_cipherlist(s, plst) \
        SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst)
# define SSL_get0_ec_point_formats(s, plst) \
        SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst)
# define SSL_CTX_set_min_proto_version(ctx, version) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
# define SSL_CTX_set_max_proto_version(ctx, version) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
# define SSL_CTX_get_min_proto_version(ctx) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
# define SSL_CTX_get_max_proto_version(ctx) \
        SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)
# define SSL_set_min_proto_version(s, version) \
        SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
# define SSL_set_max_proto_version(s, version) \
        SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
# define SSL_get_min_proto_version(s) \
        SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)
# define SSL_get_max_proto_version(s) \
        SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)

const char *SSL_group_to_name(SSL *s, int id);

/* Backwards compatibility, original 1.1.0 names */
# define SSL_CTRL_GET_SERVER_TMP_KEY \
         SSL_CTRL_GET_PEER_TMP_KEY
# define SSL_get_server_tmp_key(s, pk) \
         SSL_get_peer_tmp_key(s, pk)

int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey);
int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey);

/*
 * The following symbol names are old and obsolete. They are kept
 * for compatibility reasons only and should not be used anymore.
 */
# define SSL_CTRL_GET_CURVES           SSL_CTRL_GET_GROUPS
# define SSL_CTRL_SET_CURVES           SSL_CTRL_SET_GROUPS
# define SSL_CTRL_SET_CURVES_LIST      SSL_CTRL_SET_GROUPS_LIST
# define SSL_CTRL_GET_SHARED_CURVE     SSL_CTRL_GET_SHARED_GROUP

# define SSL_get1_curves               SSL_get1_groups
# define SSL_CTX_set1_curves           SSL_CTX_set1_groups
# define SSL_CTX_set1_curves_list      SSL_CTX_set1_groups_list
# define SSL_set1_curves               SSL_set1_groups
# define SSL_set1_curves_list          SSL_set1_groups_list
# define SSL_get_shared_curve          SSL_get_shared_group


# ifndef OPENSSL_NO_DEPRECATED_1_1_0
/* Provide some compatibility macros for removed functionality. */
#  define SSL_CTX_need_tmp_RSA(ctx)                0
#  define SSL_CTX_set_tmp_rsa(ctx,rsa)             1
#  define SSL_need_tmp_RSA(ssl)                    0
#  define SSL_set_tmp_rsa(ssl,rsa)                 1
#  define SSL_CTX_set_ecdh_auto(dummy, onoff)      ((onoff) != 0)
#  define SSL_set_ecdh_auto(dummy, onoff)          ((onoff) != 0)
/*
 * We "pretend" to call the callback to avoid warnings about unused static
 * functions.
 */
#  define SSL_CTX_set_tmp_rsa_callback(ctx, cb)    while(0) (cb)(NULL, 0, 0)
#  define SSL_set_tmp_rsa_callback(ssl, cb)        while(0) (cb)(NULL, 0, 0)
# endif
__owur const BIO_METHOD *BIO_f_ssl(void);
__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client);
__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from);
void BIO_ssl_shutdown(BIO *ssl_bio);

__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str);
__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq,
                               const SSL_METHOD *meth);
int SSL_CTX_up_ref(SSL_CTX *ctx);
void SSL_CTX_free(SSL_CTX *);
__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t);
__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx);
__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *);
void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *);
void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *);
__owur int SSL_want(const SSL *s);
__owur int SSL_clear(SSL *s);

void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm);

__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s);
__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits);
__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c);
__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c);
__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
__owur const char *OPENSSL_cipher_name(const char *rfc_name);
__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c);
__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c);
__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c);
__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c);
__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c);
__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c);

__owur int SSL_get_fd(const SSL *s);
__owur int SSL_get_rfd(const SSL *s);
__owur int SSL_get_wfd(const SSL *s);
__owur const char *SSL_get_cipher_list(const SSL *s, int n);
__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size);
__owur int SSL_get_read_ahead(const SSL *s);
__owur int SSL_pending(const SSL *s);
__owur int SSL_has_pending(const SSL *s);
# ifndef OPENSSL_NO_SOCK
__owur int SSL_set_fd(SSL *s, int fd);
__owur int SSL_set_rfd(SSL *s, int fd);
__owur int SSL_set_wfd(SSL *s, int fd);
# endif
void SSL_set0_rbio(SSL *s, BIO *rbio);
void SSL_set0_wbio(SSL *s, BIO *wbio);
void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio);
__owur BIO *SSL_get_rbio(const SSL *s);
__owur BIO *SSL_get_wbio(const SSL *s);
__owur int SSL_set_cipher_list(SSL *s, const char *str);
__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
__owur int SSL_set_ciphersuites(SSL *s, const char *str);
void SSL_set_read_ahead(SSL *s, int yes);
__owur int SSL_get_verify_mode(const SSL *s);
__owur int SSL_get_verify_depth(const SSL *s);
__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s);
void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback);
void SSL_set_verify_depth(SSL *s, int depth);
void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl,
                                      const unsigned char *d, long len);
# endif
__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d,
                                   long len);
__owur int SSL_use_certificate(SSL *ssl, X509 *x);
__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);
__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey,
                                STACK_OF(X509) *chain, int override);


/* serverinfo file format versions */
# define SSL_SERVERINFOV1   1
# define SSL_SERVERINFOV2   2

/* Set serverinfo data for the current active cert. */
__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,
                                  size_t serverinfo_length);
__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version,
                                     const unsigned char *serverinfo,
                                     size_t serverinfo_length);
__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
#endif

__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);

#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file,
                                          int type);
#endif
__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file,
                                       int type);
__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,
                                        int type);
/* PEM type */
__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file);
__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
__owur STACK_OF(X509_NAME)
*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx,
                            const char *propq);
__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                               const char *file);
int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                       const char *dir);
int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
                                       const char *uri);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_load_error_strings() \
    OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
                     | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
# endif

__owur const char *SSL_state_string(const SSL *s);
__owur const char *SSL_rstate_string(const SSL *s);
__owur const char *SSL_state_string_long(const SSL *s);
__owur const char *SSL_rstate_string_long(const SSL *s);
__owur long SSL_SESSION_get_time(const SSL_SESSION *s);
__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t);
__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s);
__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s);
__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version);

__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s);
__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname);
void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s,
                                    const unsigned char **alpn,
                                    size_t *len);
__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s,
                                          const unsigned char *alpn,
                                          size_t len);
__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s);
__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher);
__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s);
__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);
void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick,
                             size_t *len);
__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s);
__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s,
                                          uint32_t max_early_data);
__owur int SSL_copy_session_id(SSL *to, const SSL *from);
__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);
__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s,
                                       const unsigned char *sid_ctx,
                                       unsigned int sid_ctx_len);
__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,
                               unsigned int sid_len);
__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s);

__owur SSL_SESSION *SSL_SESSION_new(void);
__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src);
const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
                                        unsigned int *len);
const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s,
                                                 unsigned int *len);
__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s);
# ifndef OPENSSL_NO_STDIO
int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses);
# endif
int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses);
int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x);
int SSL_SESSION_up_ref(SSL_SESSION *ses);
void SSL_SESSION_free(SSL_SESSION *ses);
__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp);
__owur int SSL_set_session(SSL *to, SSL_SESSION *session);
int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session);
int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session);
__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb);
__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb);
__owur int SSL_has_matching_session_id(const SSL *s,
                                       const unsigned char *id,
                                       unsigned int id_len);
SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
                             long length);

# ifdef OPENSSL_X509_H
__owur X509 *SSL_get0_peer_certificate(const SSL *s);
__owur X509 *SSL_get1_peer_certificate(const SSL *s);
/* Deprecated in 3.0.0 */
#  ifndef OPENSSL_NO_DEPRECATED_3_0
#   define SSL_get_peer_certificate SSL_get1_peer_certificate
#  endif
# endif

__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s);

__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx);
__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx);
__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx);
void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback);
void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth);
void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
                                      int (*cb) (X509_STORE_CTX *, void *),
                                      void *arg);
void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg),
                         void *arg);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
                                          long len);
# endif
__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx,
                                       const unsigned char *d, long len);
__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len,
                                        const unsigned char *d);
__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey,
                                    STACK_OF(X509) *chain, int override);

void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);
void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx);
void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb);
void SSL_set_default_passwd_cb_userdata(SSL *s, void *u);
pem_password_cb *SSL_get_default_passwd_cb(SSL *s);
void *SSL_get_default_passwd_cb_userdata(SSL *s);

__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx);
__owur int SSL_check_private_key(const SSL *ctx);

__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx,
                                          const unsigned char *sid_ctx,
                                          unsigned int sid_ctx_len);

SSL *SSL_new(SSL_CTX *ctx);
int SSL_up_ref(SSL *s);
int SSL_is_dtls(const SSL *s);
__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx,
                                      unsigned int sid_ctx_len);

__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);
__owur int SSL_set_purpose(SSL *ssl, int purpose);
__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);
__owur int SSL_set_trust(SSL *ssl, int trust);

__owur int SSL_set1_host(SSL *s, const char *hostname);
__owur int SSL_add1_host(SSL *s, const char *hostname);
__owur const char *SSL_get0_peername(SSL *s);
void SSL_set_hostflags(SSL *s, unsigned int flags);

__owur int SSL_CTX_dane_enable(SSL_CTX *ctx);
__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md,
                                  uint8_t mtype, uint8_t ord);
__owur int SSL_dane_enable(SSL *s, const char *basedomain);
__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector,
                             uint8_t mtype, const unsigned char *data, size_t dlen);
__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki);
__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector,
                              uint8_t *mtype, const unsigned char **data,
                              size_t *dlen);
/*
 * Bridge opacity barrier between libcrypt and libssl, also needed to support
 * offline testing in test/danetest.c
 */
SSL_DANE *SSL_get0_dane(SSL *ssl);
/*
 * DANE flags
 */
unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags);
unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags);
unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags);
unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags);

__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);

__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);
__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);

# ifndef OPENSSL_NO_SRP
#  ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password);
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength);
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx,
                                        char *(*cb) (SSL *, void *));
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx,
                                          int (*cb) (SSL *, void *));
OSSL_DEPRECATEDIN_3_0
int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx,
                                      int (*cb) (SSL *, int *, void *));
OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg);

OSSL_DEPRECATEDIN_3_0
int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g,
                             BIGNUM *sa, BIGNUM *v, char *info);
OSSL_DEPRECATEDIN_3_0
int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass,
                                const char *grp);

OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s);

OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s);
OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s);
#  endif
# endif

/*
 * ClientHello callback and helpers.
 */

# define SSL_CLIENT_HELLO_SUCCESS 1
# define SSL_CLIENT_HELLO_ERROR   0
# define SSL_CLIENT_HELLO_RETRY   (-1)

typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg);
void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb,
                                 void *arg);
int SSL_client_hello_isv2(SSL *s);
unsigned int SSL_client_hello_get0_legacy_version(SSL *s);
size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out);
size_t SSL_client_hello_get0_compression_methods(SSL *s,
                                                 const unsigned char **out);
int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen);
int SSL_client_hello_get0_ext(SSL *s, unsigned int type,
                              const unsigned char **out, size_t *outlen);

void SSL_certs_clear(SSL *s);
void SSL_free(SSL *ssl);
# ifdef OSSL_ASYNC_FD
/*
 * Windows application developer has to include windows.h to use these.
 */
__owur int SSL_waiting_for_async(SSL *s);
__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds);
__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd,
                                     size_t *numaddfds, OSSL_ASYNC_FD *delfd,
                                     size_t *numdelfds);
__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback);
__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg);
__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback);
__owur int SSL_set_async_callback_arg(SSL *s, void *arg);
__owur int SSL_get_async_status(SSL *s, int *status);

# endif
__owur int SSL_accept(SSL *ssl);
__owur int SSL_stateless(SSL *s);
__owur int SSL_connect(SSL *ssl);
__owur int SSL_read(SSL *ssl, void *buf, int num);
__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);

# define SSL_READ_EARLY_DATA_ERROR   0
# define SSL_READ_EARLY_DATA_SUCCESS 1
# define SSL_READ_EARLY_DATA_FINISH  2

__owur int SSL_read_early_data(SSL *s, void *buf, size_t num,
                               size_t *readbytes);
__owur int SSL_peek(SSL *ssl, void *buf, int num);
__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size,
                                 int flags);
__owur int SSL_write(SSL *ssl, const void *buf, int num);
__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written);
__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num,
                                size_t *written);
long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg);
long SSL_callback_ctrl(SSL *, int, void (*)(void));
long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);
long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void));

# define SSL_EARLY_DATA_NOT_SENT    0
# define SSL_EARLY_DATA_REJECTED    1
# define SSL_EARLY_DATA_ACCEPTED    2

__owur int SSL_get_early_data_status(const SSL *s);

__owur int SSL_get_error(const SSL *s, int ret_code);
__owur const char *SSL_get_version(const SSL *s);

/* This sets the 'default' SSL version that SSL_new() will create */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);
# endif

# ifndef OPENSSL_NO_SSL3_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void);
#  endif
# endif

#define SSLv23_method           TLS_method
#define SSLv23_server_method    TLS_server_method
#define SSLv23_client_method    TLS_client_method

/* Negotiate highest available SSL/TLS version */
__owur const SSL_METHOD *TLS_method(void);
__owur const SSL_METHOD *TLS_server_method(void);
__owur const SSL_METHOD *TLS_client_method(void);

# ifndef OPENSSL_NO_TLS1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_TLS1_1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_TLS1_2_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_DTLS1_METHOD
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void);
#  endif
# endif

# ifndef OPENSSL_NO_DTLS1_2_METHOD
/* DTLSv1.2 */
#  ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void);
OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void);
#  endif
# endif

__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */
__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */
__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */

__owur size_t DTLS_get_data_mtu(const SSL *s);

__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);
__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx);
__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s);
__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);

__owur int SSL_do_handshake(SSL *s);
int SSL_key_update(SSL *s, int updatetype);
int SSL_get_key_update_type(const SSL *s);
int SSL_renegotiate(SSL *s);
int SSL_renegotiate_abbreviated(SSL *s);
__owur int SSL_renegotiate_pending(const SSL *s);
int SSL_new_session_ticket(SSL *s);
int SSL_shutdown(SSL *s);
__owur int SSL_verify_client_post_handshake(SSL *s);
void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val);
void SSL_set_post_handshake_auth(SSL *s, int val);

__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);
__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s);
__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
__owur const char *SSL_alert_type_string_long(int value);
__owur const char *SSL_alert_type_string(int value);
__owur const char *SSL_alert_desc_string_long(int value);
__owur const char *SSL_alert_desc_string(int value);

void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s);
__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx);
__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x);
__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x);
__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s);

void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s);
__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s);
__owur int SSL_add_client_CA(SSL *ssl, X509 *x);
__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x);

void SSL_set_connect_state(SSL *s);
void SSL_set_accept_state(SSL *s);

__owur long SSL_get_default_timeout(const SSL *s);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_library_init() OPENSSL_init_ssl(0, NULL)
# endif

__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size);
__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk);

__owur SSL *SSL_dup(SSL *ssl);

__owur X509 *SSL_get_certificate(const SSL *ssl);
/*
 * EVP_PKEY
 */
struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl);

__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);

void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode);
__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);
void SSL_set_quiet_shutdown(SSL *ssl, int mode);
__owur int SSL_get_quiet_shutdown(const SSL *ssl);
void SSL_set_shutdown(SSL *ssl, int mode);
__owur int SSL_get_shutdown(const SSL *ssl);
__owur int SSL_version(const SSL *ssl);
__owur int SSL_client_version(const SSL *s);
__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx);
__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx);
__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile);
__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath);
__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore);
__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx,
                                                        const char *CAfile,
                                                        const char *CApath);
# define SSL_get0_session SSL_get_session/* just peek at pointer */
__owur SSL_SESSION *SSL_get_session(const SSL *ssl);
__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */
__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);
SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx);
void SSL_set_info_callback(SSL *ssl,
                           void (*cb) (const SSL *ssl, int type, int val));
void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type,
                                               int val);
__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);

void SSL_set_verify_result(SSL *ssl, long v);
__owur long SSL_get_verify_result(const SSL *ssl);
__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s);

__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out,
                                    size_t outlen);
__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out,
                                    size_t outlen);
__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess,
                                         unsigned char *out, size_t outlen);
__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess,
                                       const unsigned char *in, size_t len);
uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess);

#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef)
__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data);
void *SSL_get_ex_data(const SSL *ssl, int idx);
#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef)
__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data);
void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx);
#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef)
__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data);
void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx);

__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void);

# define SSL_CTX_sess_set_cache_size(ctx,t) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
# define SSL_CTX_sess_get_cache_size(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
# define SSL_CTX_set_session_cache_mode(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
# define SSL_CTX_get_session_cache_mode(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)

# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
# define SSL_CTX_get_read_ahead(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)
# define SSL_CTX_set_read_ahead(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL)
# define SSL_CTX_get_max_cert_list(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
# define SSL_CTX_set_max_cert_list(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
# define SSL_get_max_cert_list(ssl) \
        SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
# define SSL_set_max_cert_list(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)

# define SSL_CTX_set_max_send_fragment(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_set_max_send_fragment(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_CTX_set_split_send_fragment(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
# define SSL_set_split_send_fragment(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
# define SSL_CTX_set_max_pipelines(ctx,m) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
# define SSL_set_max_pipelines(ssl,m) \
        SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
# define SSL_set_retry_verify(ssl) \
        (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0)

void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);
void SSL_set_default_read_buffer_len(SSL *s, size_t len);

# ifndef OPENSSL_NO_DH
#  ifndef OPENSSL_NO_DEPRECATED_3_0
/* NB: the |keylength| is only applicable when is_export is true */
OSSL_DEPRECATEDIN_3_0
void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
                                 DH *(*dh) (SSL *ssl, int is_export,
                                            int keylength));
OSSL_DEPRECATEDIN_3_0
void SSL_set_tmp_dh_callback(SSL *ssl,
                             DH *(*dh) (SSL *ssl, int is_export,
                                        int keylength));
#  endif
# endif

__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s);
__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s);
__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);
__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp);
__owur int SSL_COMP_get_id(const SSL_COMP *comp);
STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
                                                             *meths);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_COMP_free_compression_methods() while(0) continue
# endif
__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);

const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr);
int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c);
int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c);
int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len,
                             int isv2format, STACK_OF(SSL_CIPHER) **sk,
                             STACK_OF(SSL_CIPHER) **scsvs);

/* TLS extensions functions */
__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len);

__owur int SSL_set_session_ticket_ext_cb(SSL *s,
                                         tls_session_ticket_ext_cb_fn cb,
                                         void *arg);

/* Pre-shared secret session resumption functions */
__owur int SSL_set_session_secret_cb(SSL *s,
                                     tls_session_secret_cb_fn session_secret_cb,
                                     void *arg);

void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx,
                                                int (*cb) (SSL *ssl,
                                                           int
                                                           is_forward_secure));

void SSL_set_not_resumable_session_callback(SSL *ssl,
                                            int (*cb) (SSL *ssl,
                                                       int is_forward_secure));

void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx,
                                         size_t (*cb) (SSL *ssl, int type,
                                                       size_t len, void *arg));
void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg);
void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx);
int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size);

int SSL_set_record_padding_callback(SSL *ssl,
                                    size_t (*cb) (SSL *ssl, int type,
                                                  size_t len, void *arg));
void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg);
void *SSL_get_record_padding_callback_arg(const SSL *ssl);
int SSL_set_block_padding(SSL *ssl, size_t block_size);

int SSL_set_num_tickets(SSL *s, size_t num_tickets);
size_t SSL_get_num_tickets(const SSL *s);
int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);

# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define SSL_cache_hit(s) SSL_session_reused(s)
# endif

__owur int SSL_session_reused(const SSL *s);
__owur int SSL_is_server(const SSL *s);

__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);
int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);
void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);
unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);
__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx,
                                             unsigned int flags);
__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre);

void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl);
void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx);

__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv);
__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);

void SSL_add_ssl_module(void);
int SSL_config(SSL *s, const char *name);
int SSL_CTX_config(SSL_CTX *ctx, const char *name);

# ifndef OPENSSL_NO_SSL_TRACE
void SSL_trace(int write_p, int version, int content_type,
               const void *buf, size_t len, SSL *ssl, void *arg);
# endif

# ifndef OPENSSL_NO_SOCK
int DTLSv1_listen(SSL *s, BIO_ADDR *client);
# endif

# ifndef OPENSSL_NO_CT

/*
 * A callback for verifying that the received SCTs are sufficient.
 * Expected to return 1 if they are sufficient, otherwise 0.
 * May return a negative integer if an error occurs.
 * A connection should be aborted if the SCTs are deemed insufficient.
 */
typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx,
                                    const STACK_OF(SCT) *scts, void *arg);

/*
 * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate
 * the received SCTs.
 * If the callback returns a non-positive result, the connection is terminated.
 * Call this function before beginning a handshake.
 * If a NULL |callback| is provided, SCT validation is disabled.
 * |arg| is arbitrary userdata that will be passed to the callback whenever it
 * is invoked. Ownership of |arg| remains with the caller.
 *
 * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response
 *       will be requested.
 */
int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback,
                                   void *arg);
int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx,
                                       ssl_ct_validation_cb callback,
                                       void *arg);
#define SSL_disable_ct(s) \
        ((void) SSL_set_validation_callback((s), NULL, NULL))
#define SSL_CTX_disable_ct(ctx) \
        ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL))

/*
 * The validation type enumerates the available behaviours of the built-in SSL
 * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct().
 * The underlying callback is a static function in libssl.
 */
enum {
    SSL_CT_VALIDATION_PERMISSIVE = 0,
    SSL_CT_VALIDATION_STRICT
};

/*
 * Enable CT by setting up a callback that implements one of the built-in
 * validation variants.  The SSL_CT_VALIDATION_PERMISSIVE variant always
 * continues the handshake, the application can make appropriate decisions at
 * handshake completion.  The SSL_CT_VALIDATION_STRICT variant requires at
 * least one valid SCT, or else handshake termination will be requested.  The
 * handshake may continue anyway if SSL_VERIFY_NONE is in effect.
 */
int SSL_enable_ct(SSL *s, int validation_mode);
int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode);

/*
 * Report whether a non-NULL callback is enabled.
 */
int SSL_ct_is_enabled(const SSL *s);
int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx);

/* Gets the SCTs received from a connection */
const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s);

/*
 * Loads the CT log list from the default location.
 * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
 * the log information loaded from this file will be appended to the
 * CTLOG_STORE.
 * Returns 1 on success, 0 otherwise.
 */
int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx);

/*
 * Loads the CT log list from the specified file path.
 * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,
 * the log information loaded from this file will be appended to the
 * CTLOG_STORE.
 * Returns 1 on success, 0 otherwise.
 */
int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path);

/*
 * Sets the CT log list used by all SSL connections created from this SSL_CTX.
 * Ownership of the CTLOG_STORE is transferred to the SSL_CTX.
 */
void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs);

/*
 * Gets the CT log list used by all SSL connections created from this SSL_CTX.
 * This will be NULL unless one of the following functions has been called:
 * - SSL_CTX_set_default_ctlog_list_file
 * - SSL_CTX_set_ctlog_list_file
 * - SSL_CTX_set_ctlog_store
 */
const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);

# endif /* OPENSSL_NO_CT */

/* What the "other" parameter contains in security callback */
/* Mask for type */
# define SSL_SECOP_OTHER_TYPE    0xffff0000
# define SSL_SECOP_OTHER_NONE    0
# define SSL_SECOP_OTHER_CIPHER  (1 << 16)
# define SSL_SECOP_OTHER_CURVE   (2 << 16)
# define SSL_SECOP_OTHER_DH      (3 << 16)
# define SSL_SECOP_OTHER_PKEY    (4 << 16)
# define SSL_SECOP_OTHER_SIGALG  (5 << 16)
# define SSL_SECOP_OTHER_CERT    (6 << 16)

/* Indicated operation refers to peer key or certificate */
# define SSL_SECOP_PEER          0x1000

/* Values for "op" parameter in security callback */

/* Called to filter ciphers */
/* Ciphers client supports */
# define SSL_SECOP_CIPHER_SUPPORTED      (1 | SSL_SECOP_OTHER_CIPHER)
/* Cipher shared by client/server */
# define SSL_SECOP_CIPHER_SHARED         (2 | SSL_SECOP_OTHER_CIPHER)
/* Sanity check of cipher server selects */
# define SSL_SECOP_CIPHER_CHECK          (3 | SSL_SECOP_OTHER_CIPHER)
/* Curves supported by client */
# define SSL_SECOP_CURVE_SUPPORTED       (4 | SSL_SECOP_OTHER_CURVE)
/* Curves shared by client/server */
# define SSL_SECOP_CURVE_SHARED          (5 | SSL_SECOP_OTHER_CURVE)
/* Sanity check of curve server selects */
# define SSL_SECOP_CURVE_CHECK           (6 | SSL_SECOP_OTHER_CURVE)
/* Temporary DH key */
# define SSL_SECOP_TMP_DH                (7 | SSL_SECOP_OTHER_PKEY)
/* SSL/TLS version */
# define SSL_SECOP_VERSION               (9 | SSL_SECOP_OTHER_NONE)
/* Session tickets */
# define SSL_SECOP_TICKET                (10 | SSL_SECOP_OTHER_NONE)
/* Supported signature algorithms sent to peer */
# define SSL_SECOP_SIGALG_SUPPORTED      (11 | SSL_SECOP_OTHER_SIGALG)
/* Shared signature algorithm */
# define SSL_SECOP_SIGALG_SHARED         (12 | SSL_SECOP_OTHER_SIGALG)
/* Sanity check signature algorithm allowed */
# define SSL_SECOP_SIGALG_CHECK          (13 | SSL_SECOP_OTHER_SIGALG)
/* Used to get mask of supported public key signature algorithms */
# define SSL_SECOP_SIGALG_MASK           (14 | SSL_SECOP_OTHER_SIGALG)
/* Use to see if compression is allowed */
# define SSL_SECOP_COMPRESSION           (15 | SSL_SECOP_OTHER_NONE)
/* EE key in certificate */
# define SSL_SECOP_EE_KEY                (16 | SSL_SECOP_OTHER_CERT)
/* CA key in certificate */
# define SSL_SECOP_CA_KEY                (17 | SSL_SECOP_OTHER_CERT)
/* CA digest algorithm in certificate */
# define SSL_SECOP_CA_MD                 (18 | SSL_SECOP_OTHER_CERT)
/* Peer EE key in certificate */
# define SSL_SECOP_PEER_EE_KEY           (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)
/* Peer CA key in certificate */
# define SSL_SECOP_PEER_CA_KEY           (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)
/* Peer CA digest algorithm in certificate */
# define SSL_SECOP_PEER_CA_MD            (SSL_SECOP_CA_MD | SSL_SECOP_PEER)

void SSL_set_security_level(SSL *s, int level);
__owur int SSL_get_security_level(const SSL *s);
void SSL_set_security_callback(SSL *s,
                               int (*cb) (const SSL *s, const SSL_CTX *ctx,
                                          int op, int bits, int nid,
                                          void *other, void *ex));
int (*SSL_get_security_callback(const SSL *s)) (const SSL *s,
                                                const SSL_CTX *ctx, int op,
                                                int bits, int nid, void *other,
                                                void *ex);
void SSL_set0_security_ex_data(SSL *s, void *ex);
__owur void *SSL_get0_security_ex_data(const SSL *s);

void SSL_CTX_set_security_level(SSL_CTX *ctx, int level);
__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx);
void SSL_CTX_set_security_callback(SSL_CTX *ctx,
                                   int (*cb) (const SSL *s, const SSL_CTX *ctx,
                                              int op, int bits, int nid,
                                              void *other, void *ex));
int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s,
                                                          const SSL_CTX *ctx,
                                                          int op, int bits,
                                                          int nid,
                                                          void *other,
                                                          void *ex);
void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex);
__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx);

/* OPENSSL_INIT flag 0x010000 reserved for internal use */
# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS    0x00100000L
# define OPENSSL_INIT_LOAD_SSL_STRINGS       0x00200000L

# define OPENSSL_INIT_SSL_DEFAULT \
        (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS)

int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);

# ifndef OPENSSL_NO_UNIT_TEST
__owur const struct openssl_ssl_test_functions *SSL_test_functions(void);
# endif

__owur int SSL_free_buffers(SSL *ssl);
__owur int SSL_alloc_buffers(SSL *ssl);

/* Status codes passed to the decrypt session ticket callback. Some of these
 * are for internal use only and are never passed to the callback. */
typedef int SSL_TICKET_STATUS;

/* Support for ticket appdata */
/* fatal error, malloc failure */
# define SSL_TICKET_FATAL_ERR_MALLOC 0
/* fatal error, either from parsing or decrypting the ticket */
# define SSL_TICKET_FATAL_ERR_OTHER  1
/* No ticket present */
# define SSL_TICKET_NONE             2
/* Empty ticket present */
# define SSL_TICKET_EMPTY            3
/* the ticket couldn't be decrypted */
# define SSL_TICKET_NO_DECRYPT       4
/* a ticket was successfully decrypted */
# define SSL_TICKET_SUCCESS          5
/* same as above but the ticket needs to be renewed */
# define SSL_TICKET_SUCCESS_RENEW    6

/* Return codes for the decrypt session ticket callback */
typedef int SSL_TICKET_RETURN;

/* An error occurred */
#define SSL_TICKET_RETURN_ABORT             0
/* Do not use the ticket, do not send a renewed ticket to the client */
#define SSL_TICKET_RETURN_IGNORE            1
/* Do not use the ticket, send a renewed ticket to the client */
#define SSL_TICKET_RETURN_IGNORE_RENEW      2
/* Use the ticket, do not send a renewed ticket to the client */
#define SSL_TICKET_RETURN_USE               3
/* Use the ticket, send a renewed ticket to the client */
#define SSL_TICKET_RETURN_USE_RENEW         4

typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg);
typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss,
                                                               const unsigned char *keyname,
                                                               size_t keyname_length,
                                                               SSL_TICKET_STATUS status,
                                                               void *arg);
int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx,
                                  SSL_CTX_generate_session_ticket_fn gen_cb,
                                  SSL_CTX_decrypt_session_ticket_fn dec_cb,
                                  void *arg);
int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len);
int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len);

typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us);

void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb);


typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg);
void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx,
                                     SSL_allow_early_data_cb_fn cb,
                                     void *arg);
void SSL_set_allow_early_data_cb(SSL *s,
                                 SSL_allow_early_data_cb_fn cb,
                                 void *arg);

/* store the default cipher strings inside the library */
const char *OSSL_default_cipher_list(void);
const char *OSSL_default_ciphersuites(void);

#  ifndef OPENSSL_NO_QUIC
/*
 * QUIC integration - The QUIC interface matches BoringSSL
 *
 * ssl_encryption_level_t represents a specific QUIC encryption level used to
 * transmit handshake messages. BoringSSL has this as an 'enum'.
 */
#include <openssl/quic.h>

/* Used by Chromium/QUIC - moved from evp.h to avoid breaking FIPS checksums */
# define X25519_PRIVATE_KEY_LEN          32
# define X25519_PUBLIC_VALUE_LEN         32

/* moved from types.h to avoid breaking FIPS checksums */
typedef struct ssl_quic_method_st SSL_QUIC_METHOD;

typedef enum ssl_encryption_level_t {
    ssl_encryption_initial = 0,
    ssl_encryption_early_data,
    ssl_encryption_handshake,
    ssl_encryption_application
} OSSL_ENCRYPTION_LEVEL;

struct ssl_quic_method_st {
    int (*set_encryption_secrets)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                                  const uint8_t *read_secret,
                                  const uint8_t *write_secret, size_t secret_len);
    int (*add_handshake_data)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                              const uint8_t *data, size_t len);
    int (*flush_flight)(SSL *ssl);
    int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert);
};

__owur int SSL_CTX_set_quic_method(SSL_CTX *ctx, const SSL_QUIC_METHOD *quic_method);
__owur int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method);
__owur int SSL_set_quic_transport_params(SSL *ssl,
                                         const uint8_t *params,
                                         size_t params_len);
void SSL_get_peer_quic_transport_params(const SSL *ssl,
                                        const uint8_t **out_params,
                                        size_t *out_params_len);
__owur size_t SSL_quic_max_handshake_flight_len(const SSL *ssl, OSSL_ENCRYPTION_LEVEL level);
__owur OSSL_ENCRYPTION_LEVEL SSL_quic_read_level(const SSL *ssl);
__owur OSSL_ENCRYPTION_LEVEL SSL_quic_write_level(const SSL *ssl);
__owur int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
                                 const uint8_t *data, size_t len);
__owur int SSL_process_quic_post_handshake(SSL *ssl);

__owur int SSL_is_quic(SSL *ssl);

/* BoringSSL API */
void SSL_set_quic_use_legacy_codepoint(SSL *ssl, int use_legacy);

/*
 * Set an explicit value that you want to use
 * If 0 (default) the server will use the highest extenstion the client sent
 * If 0 (default) the client will send both extensions
 */
void SSL_set_quic_transport_version(SSL *ssl, int version);
__owur int SSL_get_quic_transport_version(const SSL *ssl);
/* Returns the negotiated version, or -1 on error */
__owur int SSL_get_peer_quic_transport_version(const SSL *ssl);

int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c);

void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled);

#  endif

# ifdef  __cplusplus
}
# endif
#endif
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     