description: 'Version of Ubuntu to install on'
required: false
default: '20'
+ cmake-args:
+ description: 'Additional options to hand to cmake'
+ required: false
+ default: ''
runs:
using: "composite"
steps:
+ - name: Clean out the disk
+ run: |
+ sudo rm -rf /opt/hostedtoolcache/go /opt/hostedtoolcache/CodeQL /usr/lib/jvm /usr/local/share/chromium /usr/local/lib/android
+ df -h
+ shell: bash
- name: Install prerequisites
run: |
sudo apt-get install -y -qq libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev libicu-dev
shell: bash
env:
UBUNTUVER: ${{ inputs.ubuntu }}
-
- - name: Download dependencies
- run: |
- if [ ! -f country_grid.sql.gz ]; then
- wget --no-verbose https://www.nominatim.org/data/country_grid.sql.gz
- fi
- cp country_grid.sql.gz Nominatim/data/country_osm_grid.sql.gz
- shell: bash
+ CMAKE_ARGS: ${{ inputs.cmake-args }}
- name: Configure
- run: mkdir build && cd build && cmake ../Nominatim
+ run: mkdir build && cd build && cmake $CMAKE_ARGS ../Nominatim
shell: bash
+ env:
+ CMAKE_ARGS: ${{ inputs.cmake-args }}
- name: Build
run: |
- name: Install PostgreSQL
run: |
- sudo apt-get install -y -qq --no-install-suggests --no-install-recommends postgresql-client-${PGVER} postgresql-${PGVER}-postgis-${POSTGISVER} postgresql-${PGVER}-postgis-${POSTGISVER}-scripts postgresql-contrib-${PGVER} postgresql-${PGVER} postgresql-server-dev-${PGVER}
+ sudo apt-get install -y -qq --no-install-suggests --no-install-recommends postgresql-client-${PGVER} postgresql-${PGVER}-postgis-${POSTGISVER} postgresql-${PGVER}-postgis-${POSTGISVER}-scripts postgresql-contrib-${PGVER} postgresql-${PGVER}
shell: bash
env:
PGVER: ${{ inputs.postgresql-version }}
needs: create-archive
strategy:
matrix:
- ubuntu: [18, 20]
+ ubuntu: [18, 20, 22]
include:
- ubuntu: 18
- postgresql: 9.5
+ postgresql: 9.6
postgis: 2.5
pytest: pytest
php: 7.2
postgis: 3
pytest: py.test-3
php: 7.4
+ - ubuntu: 22
+ postgresql: 14
+ postgis: 3
+ pytest: py.test-3
+ php: 8.1
runs-on: ubuntu-${{ matrix.ubuntu }}.04
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
- coverage: xdebug
tools: phpunit, phpcs, composer
+ ini-values: opcache.jit=disable
- uses: actions/setup-python@v2
with:
ubuntu: ${{ matrix.ubuntu }}
- name: Install test prerequsites
- run: sudo apt-get install -y -qq pylint python3-pytest python3-behave python3-pytest-cov php-codecoverage
+ run: sudo apt-get install -y -qq python3-pytest python3-behave
if: matrix.ubuntu == 20
- name: Install test prerequsites
- run: pip3 install pylint==2.6.0 pytest pytest-cov behave==1.2.6
- if: matrix.ubuntu == 18
+ run: pip3 install pylint pytest behave==1.2.6
+ if: ${{ (matrix.ubuntu == 18) || (matrix.ubuntu == 22) }}
+
+ - name: Install test prerequsites
+ run: sudo apt-get install -y -qq python3-pytest
+ if: matrix.ubuntu == 22
+
+ - name: Install latest pylint/mypy
+ run: pip3 install -U pylint mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil typing-extensions
- name: PHP linting
run: phpcs --report-width=120 .
run: pylint nominatim
working-directory: Nominatim
+ - name: Python static typechecking
+ run: mypy --strict nominatim
+ working-directory: Nominatim
+
+
- name: PHP unit tests
- run: phpunit --coverage-clover ../../coverage-php.xml ./
+ run: phpunit ./
working-directory: Nominatim/test/php
- if: matrix.ubuntu == 20
+ if: ${{ (matrix.ubuntu == 20) || (matrix.ubuntu == 22) }}
- name: Python unit tests
- run: $PYTEST --cov=nominatim --cov-report=xml test/python
+ run: $PYTEST test/python
working-directory: Nominatim
env:
PYTEST: ${{ matrix.pytest }}
- - name: BDD tests
- run: |
- mkdir cov
- behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 -DPHPCOV=./cov
- composer require phpunit/phpcov:7.0.2
- vendor/bin/phpcov merge --clover ../../coverage-bdd.xml ./cov
- working-directory: Nominatim/test/bdd
- if: matrix.ubuntu == 20
-
- name: BDD tests
run: |
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3
working-directory: Nominatim/test/bdd
- if: matrix.ubuntu == 18
-
- - name: Upload coverage to Codecov
- uses: codecov/codecov-action@v1
- with:
- files: ./Nominatim/coverage*.xml
- directory: ./
- name: codecov-umbrella
- fail_ci_if_error: false
- path_to_write_report: ./coverage/codecov_report.txt
- verbose: true
- if: matrix.ubuntu == 20
- icu-test:
+ legacy-test:
needs: create-archive
- strategy:
- matrix:
- ubuntu: [20]
- include:
- - ubuntu: 20
- postgresql: 13
- postgis: 3
- pytest: py.test-3
- php: 7.4
-
- runs-on: ubuntu-${{ matrix.ubuntu }}.04
+ runs-on: ubuntu-20.04
steps:
- uses: actions/download-artifact@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
- php-version: ${{ matrix.php }}
- coverage: xdebug
- tools: phpunit, phpcs, composer
-
- - uses: actions/setup-python@v2
- with:
- python-version: 3.6
- if: matrix.ubuntu == 18
+ php-version: 7.4
- uses: ./Nominatim/.github/actions/setup-postgresql
with:
- postgresql-version: ${{ matrix.postgresql }}
- postgis-version: ${{ matrix.postgis }}
+ postgresql-version: 13
+ postgis-version: 3
+
+ - name: Install Postgresql server dev
+ run: sudo apt-get install postgresql-server-dev-13
- uses: ./Nominatim/.github/actions/build-nominatim
with:
- ubuntu: ${{ matrix.ubuntu }}
+ ubuntu: 20
+ cmake-args: -DBUILD_MODULE=on
- name: Install test prerequsites
run: sudo apt-get install -y -qq python3-behave
- if: matrix.ubuntu == 20
- - name: Install test prerequsites
- run: pip3 install behave==1.2.6
- if: matrix.ubuntu == 18
-
- - name: BDD tests (icu tokenizer)
+ - name: BDD tests (legacy tokenizer)
run: |
- behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=icu --format=progress3
+ behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=legacy --format=progress3
working-directory: Nominatim/test/bdd
strategy:
matrix:
- name: [Ubuntu-18, Ubuntu-20, Centos-8]
+ name: [Ubuntu-18, Ubuntu-20, Ubuntu-22]
include:
- name: Ubuntu-18
flavour: ubuntu
image: "ubuntu:20.04"
ubuntu: 20
install_mode: install-apache
- - name: Centos-8
- flavour: centos
- image: "centos:8"
+ - name: Ubuntu-22
+ flavour: ubuntu
+ image: "ubuntu:22.04"
+ ubuntu: 22
+ install_mode: install-apache
container:
image: ${{ matrix.image }}
working-directory: /home/nominatim
if: matrix.flavour == 'centos'
+ - name: Print version
+ run: nominatim --version
+ working-directory: /home/nominatim/nominatim-project
+
- name: Import
run: nominatim import --osm-file ../test.pbf
working-directory: /home/nominatim/nominatim-project
NOMINATIM_REPLICATION_MAX_DIFF=1 nominatim replication --once
working-directory: /home/nominatim/nominatim-project
+ - name: Clean up database
+ run: nominatim refresh --postcodes --word-tokens
+ working-directory: /home/nominatim/nominatim-project
+
- name: Run reverse-only import
run : |
echo 'NOMINATIM_DATABASE_DSN="pgsql:dbname=reverse"' >> .env
nominatim import --osm-file ../test.pbf --reverse-only --no-updates
working-directory: /home/nominatim/data-env-reverse
- - name: Check reverse import
+ - name: Check reverse-only import
run: nominatim admin --check-database
working-directory: /home/nominatim/data-env-reverse
+
+ - name: Clean up database (reverse-only import)
+ run: nominatim refresh --postcodes --word-tokens
+ working-directory: /home/nominatim/nominatim-project
--- /dev/null
+[mypy]
+
+[mypy-icu.*]
+ignore_missing_imports = True
+
+[mypy-osmium.*]
+ignore_missing_imports = True
+
+[mypy-datrie.*]
+ignore_missing_imports = True
+
+[mypy-dotenv.*]
+ignore_missing_imports = True
# closing added here because it sometimes triggers a false positive with
# 'with' statements.
ignored-classes=NominatimArgs,closing
-disable=too-few-public-methods,duplicate-code
+# 'too-many-ancestors' is triggered already by deriving from UserDict
+# 'not-context-manager' disabled because it causes false positives once
+# typed Python is enabled. See also https://github.com/PyCQA/pylint/issues/5273
+disable=too-few-public-methods,duplicate-code,too-many-ancestors,bad-option-value,no-self-use,not-context-manager
-good-names=i,x,y,fd,db
+good-names=i,x,y,fd,db,cc
Nominatim was written by:
- Brian Quinion
- Sarah Hoffmann
- Marc Tobias Metten
+* Brian Quinion
+* Sarah Hoffmann
+* Marc Tobias Metten
- markigail
- gemo1011
- IrlJidel
- Frederik Ramm
+* markigail
+* AntoJvlt
+* gemo1011
+* darkshredder
and many more.
-For a full list of contributors see
+For a full list of contributors see the Git logs or visit
https://github.com/openstreetmap/Nominatim/graphs/contributors
project(nominatim)
set(NOMINATIM_VERSION_MAJOR 4)
-set(NOMINATIM_VERSION_MINOR 0)
+set(NOMINATIM_VERSION_MINOR 1)
set(NOMINATIM_VERSION_PATCH 0)
set(NOMINATIM_VERSION "${NOMINATIM_VERSION_MAJOR}.${NOMINATIM_VERSION_MINOR}.${NOMINATIM_VERSION_PATCH}")
add_definitions(-DNOMINATIM_VERSION="${NOMINATIM_VERSION}")
+# Setting GIT_HASH
+find_package(Git)
+if (GIT_FOUND)
+ execute_process(
+ COMMAND "${GIT_EXECUTABLE}" log -1 --format=%h
+ WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+ OUTPUT_VARIABLE GIT_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET
+ )
+endif()
#-----------------------------------------------------------------------------
# Configuration
set(BUILD_IMPORTER on CACHE BOOL "Build everything for importing/updating the database")
set(BUILD_API on CACHE BOOL "Build everything for the API server")
-set(BUILD_MODULE on CACHE BOOL "Build PostgreSQL module")
+set(BUILD_MODULE off CACHE BOOL "Build PostgreSQL module for legacy tokenizer")
set(BUILD_TESTS on CACHE BOOL "Build test suite")
set(BUILD_DOCS on CACHE BOOL "Build documentation")
set(BUILD_MANPAGE on CACHE BOOL "Build Manual Page")
PATTERN __pycache__ EXCLUDE)
install(DIRECTORY lib-sql DESTINATION ${NOMINATIM_LIBDIR})
- install(FILES data/country_name.sql
- ${COUNTRY_GRID_FILE}
+ install(FILES ${COUNTRY_GRID_FILE}
data/words.sql
DESTINATION ${NOMINATIM_DATADIR})
endif()
install(DIRECTORY settings/icu-rules
DESTINATION ${NOMINATIM_CONFIGDIR})
+install(DIRECTORY settings/country-names
+ DESTINATION ${NOMINATIM_CONFIGDIR})
if (INSTALL_MUNIN_PLUGINS)
install(FILES munin/nominatim_importlag
are in process of consolidating the style. The following rules apply:
* Python code uses the official Python style
- * indention
+ * indentation
* SQL use 2 spaces
* all other file types use 4 spaces
* [BSD style](https://en.wikipedia.org/wiki/Indent_style#Allman_style) for braces
+4.1.0
+
+ * switch to ICU tokenizer as default
+ * add housenumber normalization and support optional spaces during search
+ * add postcode format checking and support optional spaces during search
+ * add function for cleaning housenumbers in word table
+ * add updates/deletion of country names imported from OSM
+ * linked places no longer overwrite names from a place permanently
+ * move default country name configuration into yaml file (thanks @tareqpi)
+ * more compact layout for interpolation and TIGER tables
+ * introduce mutations to ICU tokenizer (used for German umlauts)
+ * support reinitializing a full project directory with refresh --website
+ * fix various issues with linked places on updates
+ * add support for external sanitizers and token analyzers
+ * add CLI commands for forced indexing
+ * add CLI command for version report
+ * add offline import mode
+ * change geocodejson to return a feature class in the 'type' field
+ * add ISO3166-2 to address output (thanks @I70l0teN4ik)
+ * improve parsing and matching of addr: tags
+ * support relations as street members of associatedStreet
+ * better ranking for address results from TIGER data
+ * adapt rank classification to changed tag usage in OSM
+ * update bundled osm2pgsql to 1.6.0
+ * add typing information to Python code
+ * improve unit test coverage
+ * reorganise and speed up code for BDD tests, drop support for scenes
+ * move PHP unit tests to PHP 9.5
+ * extensive typo fixes in documentation (thanks @woodpeck,@StephanGeorg,
+ @amandasaurus, @nslxndr, @stefkiourk, @Luflosi, @kianmeng)
+ * drop official support for installation on CentOS
+ * add installation instructions for Ubuntu 22.04
+ * add support for PHP8
+ * add setup instructions for updates and systemd
+ * drop support for PostgreSQL 9.5
+
+4.0.1
+
+ * fix initialisation error in replication script
+ * ICU tokenizer: avoid any special characters in word tokens
+ * better error message when API php script does not exist
+ * fix quoting of house numbers in SQL queries
+ * small fixes and improvements in search query parsing
+ * add documentation for moving the database to a different machine
+
4.0.0
* refactor name token computation and introduce ICU tokenizer
| Version | End of support for security updates |
| ------- | ----------------------------------- |
+| 4.0.x | 2023-11-02 |
| 3.7.x | 2023-04-05 |
| 3.6.x | 2022-12-12 |
| 3.5.x | 2022-06-05 |
-| 3.4.x | 2021-10-24 |
## Reporting a Vulnerability
```
# inside the virtual machine:
- cd build
- wget --no-verbose --output-document=/tmp/monaco.osm.pbf http://download.geofabrik.de/europe/monaco-latest.osm.pbf
- ./utils/setup.php --osm-file /tmp/monaco.osm.pbf --osm2pgsql-cache 1000 --all 2>&1 | tee monaco.$$.log
+ cd nominatim-project
+ wget --no-verbose --output-document=monaco.osm.pbf http://download.geofabrik.de/europe/monaco-latest.osm.pbf
+ nominatim import --osm-file monaco.osm.pbf 2>&1 | tee monaco.$$.log
```
To repeat an import you'd need to delete the database first
## Development
Vagrant maps the virtual machine's port 8089 to your host machine. Thus you can
-see Nominatim in action on [locahost:8089](http://localhost:8089/nominatim/).
+see Nominatim in action on [localhost:8089](http://localhost:8089/nominatim/).
You edit code on your host machine in any editor you like. There is no need to
restart any software: just refresh your browser window.
os.environ['NOMINATIM_NOMINATIM_TOOL'] = os.path.abspath(__file__)
from nominatim import cli
+from nominatim import version
+
+version.GIT_COMMIT_HASH = '@GIT_HASH@'
exit(cli.nominatim(module_dir='@NOMINATIM_LIBDIR@/module',
osm2pgsql_path='@NOMINATIM_LIBDIR@/osm2pgsql',
os.environ['NOMINATIM_NOMINATIM_TOOL'] = os.path.abspath(__file__)
from nominatim import cli
+from nominatim import version
+
+version.GIT_COMMIT_HASH = '@GIT_HASH@'
exit(cli.nominatim(module_dir='@CMAKE_BINARY_DIR@/module',
osm2pgsql_path='@CMAKE_BINARY_DIR@/osm2pgsql/osm2pgsql',
+++ /dev/null
---
--- PostgreSQL database dump
---
-
-CREATE TABLE public.country_name (
- country_code character varying(2),
- name public.hstore,
- country_default_language_code text,
- partition integer
-);
-
-
-COPY public.country_name (country_code, name) FROM stdin;
-an "name"=>"De Nederlandse Antillen", "name:af"=>"Nederlandse Antille", "name:an"=>"Antillas Neerlandesas", "name:ar"=>"جزر الأنتيل", "name:be"=>"Нідэрландскія Антылы", "name:bg"=>"Холандски Антили", "name:br"=>"Antilhez Nederlandat", "name:bs"=>"Holandski Antili", "name:ca"=>"Antilles Neerlandeses", "name:cs"=>"Nizozemské Antily", "name:cy"=>"Antilles yr Iseldiroedd", "name:da"=>"Nederlandske Antiller", "name:de"=>"Niederländische Antillen", "name:dv"=>"ނެދަލޭންޑު އެންޓިލޭ", "name:el"=>"Ολλανδικές Αντίλλες", "name:en"=>"Netherlands Antilles", "name:eo"=>"Nederlandaj Antiloj", "name:es"=>"Antillas Neerlandesas;Antillas Holandesas;Indias Occidentales Holandesas", "name:et"=>"Hollandi Antillid", "name:eu"=>"Holandarren Antillak", "name:fa"=>"آنتیل هلند", "name:fi"=>"Alankomaiden Antillit", "name:fo"=>"Niðurlendsku Antillurnar", "name:fr"=>"Antilles néerlandaises", "name:fy"=>"Nederlânske Antillen", "name:ga"=>"Aintillí na hÍsiltíre", "name:gl"=>"Antillas Neerlandesas", "name:he"=>"האנטילים ההולנדיים", "name:hi"=>"नीदरलैंड एंटीलीज़", "name:hr"=>"Nizozemski Antili", "name:hu"=>"Holland Antillák", "name:ia"=>"Antillas Nederlandese", "name:id"=>"Antillen Belanda", "name:io"=>"Nederlandana Antili", "name:is"=>"Hollensku Antillaeyjar", "name:it"=>"Antille Olandesi", "name:ja"=>"オランダ領アンティル", "name:jv"=>"Antillen Walanda", "name:ka"=>"ნიდერლანდის ანტილები", "name:kk"=>"Антийлер", "name:ko"=>"네덜란드령 안틸레스", "name:kw"=>"Antillys Iseldiryek", "name:la"=>"Antillae Nederlandiae", "name:lb"=>"Hollännesch Antillen", "name:li"=>"Nederlandse Antille", "name:ln"=>"Antiya ya Holanda", "name:lt"=>"Nyderlandų Antilai", "name:lv"=>"Antiļas", "name:mn"=>"Нидерландын Антиллийн Арлууд", "name:mr"=>"नेदरलँड्स अँटिल्स", "name:ms"=>"Antillen Belanda", "name:nn"=>"Dei nederlandske Antillane", "name:no"=>"De nederlandske Antillene", "name:pl"=>"Antyle Holenderskie", "name:pt"=>"Antilhas Holandesas", "name:ro"=>"Antilele Olandeze", "name:ru"=>"Нидерландские Антилы", "name:sh"=>"Nizozemski Antili", "name:sk"=>"Holandské Antily", "name:sl"=>"Nizozemski Antili", "name:sr"=>"Холандски Антили", "name:sv"=>"Nederländska Antillerna", "name:sw"=>"Antili za Kiholanzi", "name:ta"=>"நெதர்லாந்து அண்டிலிசு", "name:tg"=>"Антил Ҳоланд", "name:th"=>"เนเธอร์แลนด์แอนทิลลิส", "name:tr"=>"Hollanda Antilleri", "name:uk"=>"Нідерландські Антильські острови", "name:vi"=>"Antille thuộc Hà Lan", "name:zh"=>"荷属安的列斯"
-np "name"=>"Nepal", "name:ar"=>"نيبال", "name:be"=>"Непал", "name:br"=>"Nepal", "name:el"=>"Νεπάλ", "name:en"=>"Nepal", "name:eo"=>"Nepalo", "name:fa"=>"نپال", "name:fi"=>"Nepal", "name:fr"=>"Népal", "name:ga"=>"Neipeal", "name:gd"=>"Neapàl", "name:he"=>"נפאל", "name:hu"=>"Nepál", "name:is"=>"Nepal", "name:it"=>"Nepal", "name:ja"=>"ネパール", "name:la"=>"Nepalia", "name:lt"=>"Nepalas", "name:lv"=>"Nepāla", "name:mn"=>"Балба", "name:ne"=>"नेपाल", "name:pl"=>"Nepal", "name:ru"=>"Непал", "name:sv"=>"Nepal", "name:th"=>"ประเทศเนปาล", "name:uk"=>"Непал", "name:zh"=>"尼泊尔"
-gb "name"=>"United Kingdom", "name:ab"=>"Британиа Ду", "name:af"=>"Verenigde Koninkryk", "name:ak"=>"United Kingdom", "name:am"=>"ዩናይትድ ኪንግደም", "name:an"=>"Reino Unito", "name:ar"=>"المملكة المتحدة", "name:as"=>"যুক্তৰাজ্য", "name:av"=>"Кӏудабиритан", "name:az"=>"Böyük Britaniya", "name:ba"=>"Бөйөк Британия", "name:be"=>"Вялікабрытанія", "name:bg"=>"Обединено кралство Великобритания и Северна Ирландия", "name:bh"=>"यूनाइटेड किंगडम", "name:bi"=>"Unaeted Kingdom", "name:bn"=>"যুক্তরাজ্য", "name:bo"=>"དབྱིན་ཇི་མཉམ་འབྲེལ།", "name:br"=>"Rouantelezh-Unanet", "name:bs"=>"Ujedinjeno Kraljevstvo Velike Britanije i Sjeverne Irske", "name:ca"=>"Regne Unit", "name:ce"=>"Йоккха Британи", "name:ch"=>"Reinu Unidu", "name:co"=>"Regnu Unitu", "name:cs"=>"Spojené království", "name:cu"=>"Вєлика Британїꙗ", "name:cv"=>"Аслă Британи", "name:cy"=>"Deyrnas Unedig", "name:da"=>"Storbritannien", "name:de"=>"Vereinigtes Königreich", "name:dv"=>"ޔުނައިޓެޑް ކިންގްޑަމް", "name:dz"=>"ཡུ་ནའི་ཊེཊ་ཀིང་ཌམ", "name:ee"=>"United Kingdom", "name:el"=>"Ηνωμένο Βασίλειο", "name:en"=>"United Kingdom", "name:eo"=>"Unuiĝinta Reĝlando", "name:es"=>"Reino Unido", "name:et"=>"Suurbritannia", "name:eu"=>"Erresuma Batua", "name:fa"=>"بریتانیا", "name:ff"=>"Biritaani-Mawndi", "name:fi"=>"Yhdistynyt kuningaskunta", "name:fo"=>"Stóra Bretland", "name:fr"=>"Royaume-Uni", "name:fy"=>"Feriene Keninkryk", "name:ga"=>"An Ríocht Aontaithe", "name:gd"=>"An Rìoghachd Aonaichte", "name:gl"=>"Reino Unido", "name:gn"=>"Tavetã Joaju", "name:gu"=>"યુનાઇટેડ કિંગડમ", "name:gv"=>"Reeriaght Unnaneysit", "name:ha"=>"Birtaniya", "name:he"=>"הממלכה המאוחדת", "name:hi"=>"यूनाइटेड किंगडम", "name:hr"=>"Ujedinjeno Kraljevstvo", "name:ht"=>"Wayòm Ini", "name:hu"=>"Egyesült Királyság", "name:hy"=>"Միացյալ Թագավորություն", "name:ia"=>"Regno Unite", "name:id"=>"Britania Raya", "name:ie"=>"Reyatu Unit", "name:ig"=>"Obodoézè Nà Ofú", "name:io"=>"Unionita Rejio", "name:is"=>"Bretland", "name:it"=>"Regno Unito", "name:iu"=>"ᑐᓗᐃᑦ ᓄᓈᑦ", "name:ja"=>"イギリス", "name:jv"=>"Britania Raya", "name:ka"=>"გაერთიანებული სამეფო", "name:kg"=>"Royaume-Uni", "name:kk"=>"Ұлыбритания", "name:kl"=>"Tuluit Nunaat", "name:km"=>"រាជាណាចក្ររួម", "name:kn"=>"ಯುನೈಟೆಡ್ ಕಿಂಗ್ಡಂ", "name:ko"=>"영국", "name:ku"=>"Keyaniya Yekbûyî", "name:kv"=>"Ыджыд Британия", "name:kw"=>"Ruwvaneth Unys", "name:ky"=>"Улуу Британия жана Түндүк Ирландия", "name:la"=>"Britanniarum Regnum", "name:lb"=>"Groussbritannien an Nordirland", "name:li"=>"Vereineg Keuninkriek", "name:ln"=>"Ingɛlɛ́tɛlɛ", "name:lo"=>"ສະຫະຣາຊອານາຈັກ", "name:lt"=>"Jungtinė Karalystė", "name:lv"=>"Apvienotā Karaliste", "name:mg"=>"Fanjakana Mitambatra", "name:mi"=>"Kīngitanga Kotahi", "name:mk"=>"Обединето Кралство", "name:ml"=>"യുണൈറ്റഡ് കിങ്ഡം", "name:mn"=>"Их Британи", "name:mr"=>"युनायटेड किंग्डम", "name:ms"=>"United Kingdom", "name:mt"=>"Renju Unit", "name:my"=>"ယူနိုက်တက်ကင်းဒမ်းနိုင်ငံ", "name:na"=>"Ingerand", "name:ne"=>"संयुक्त अधिराज्य", "name:nl"=>"Verenigd Koninkrijk", "name:nn"=>"Storbritannia", "name:no"=>"Storbritannia", "name:nv"=>"Tótaʼ Dineʼé Bikéyah", "name:oc"=>"Reialme Unit", "name:om"=>"Yunaayitid Kingidem", "name:or"=>"ଯୁକ୍ତରାଜ୍ୟ", "name:os"=>"Стыр Британи", "name:pa"=>"ਸੰਯੁਕਤ ਬਾਦਸ਼ਾਹੀ", "name:pl"=>"Wielka Brytania", "name:ps"=>"بريتانيا", "name:pt"=>"Reino Unido", "name:qu"=>"Hukllachasqa Qhapaq Suyu", "name:rm"=>"Reginavel Unì", "name:ro"=>"Regatul Unit al Marii Britanii și al Irlandei de Nord", "name:ru"=>"Великобритания", "name:rw"=>"Ubwongereza", "name:sa"=>"संयुक्त अधिराज्य", "name:sc"=>"Rennu Auniadu", "name:sd"=>"گڏيل بادشاھت", "name:se"=>"Ovttastuvvan gonagasriika", "name:sh"=>"Ujedinjeno Kraljevstvo", "name:si"=>"එක්සත් රාජධානිය", "name:sk"=>"Spojené kráľovstvo", "name:sl"=>"Združeno kraljestvo Velike Britanije in Severne Irske", "name:sm"=>"Peretānia", "name:sn"=>"United Kingdom", "name:so"=>"Midowga boqortooyada Britan", "name:sq"=>"Mbretëria e Bashkuar e Britanisë dhe Irlandës së Veriut", "name:sr"=>"Уједињено Краљевство", "name:ss"=>"United Kingdom", "name:su"=>"Britania", "name:sv"=>"Storbritannien", "name:sw"=>"Ufalme wa Muungano", "name:ta"=>"ஐக்கிய இராச்சியம்", "name:te"=>"యునైటెడ్ కింగ్డమ్", "name:tg"=>"Подшоҳии Муттаҳида", "name:th"=>"สหราชอาณาจักร", "name:tk"=>"Birleşen Patyşalyk", "name:tl"=>"Nagkakaisang Kaharian", "name:to"=>"Pilitānia", "name:tr"=>"Birleşik Krallık", "name:tt"=>"Бөекбритания", "name:tw"=>"United Kingdom", "name:ty"=>"Paratāne", "name:ug"=>"بۈيۈك بېرىتانىيە", "name:uk"=>"Велика Британія", "name:ur"=>"برطانیہ", "name:uz"=>"Birlashgan Qirollik", "name:vi"=>"Vương quốc Anh", "name:vo"=>"Regän Pebalöl", "name:wa"=>"Rweyåme-Uni", "name:wo"=>"Nguur-Yu-Bennoo", "name:yi"=>"פאראייניגטע קעניגרייך", "name:yo"=>"Ilẹ̀ọba Aṣọ̀kan", "name:za"=>"Yinghgoz", "name:zh"=>"英国/英國", "name:zu"=>"Umbuso Ohlangeneyo"
-us "name"=>"United States", "name:ab"=>"Америка Еиду Аштатқәа", "name:af"=>"Verenigde State van Amerika", "name:am"=>"የተባበሩት የአሜሪካ ግዛቶች", "name:an"=>"Estatos Unitos d'America", "name:ar"=>"الولايات المتّحدة الأمريكيّة", "name:as"=>"মাৰ্কিন যুক্তৰাষ্ট্ৰ", "name:av"=>"Америкалъул Цолъарал Штатал", "name:ay"=>"Istadus Unidus", "name:az"=>"Amerika Birləşmiş Ştatları", "name:ba"=>"Америка Ҡушма Штаттары", "name:be"=>"Злучаныя Штаты Амерыкі", "name:bg"=>"Съединени американски щати", "name:bi"=>"Yunaeted Stet blong Amerika", "name:bm"=>"Amerika ka Kelenyalen Jamanaw", "name:bn"=>"মার্কিন যুক্তরাষ্ট্র", "name:bo"=>"ཨ་མེ་རི་ཁ་རྒྱལ་ཕྲན་མཉམ་འབྲེལ་རྒྱལ་ཁབ།", "name:br"=>"Stadoù-Unanet Amerika", "name:bs"=>"Sjedinjene Američke Države", "name:ca"=>"Estats Units d'Amèrica", "name:ce"=>"Iамерка пачхьалк", "name:co"=>"Stati Uniti d'America", "name:cs"=>"Spojené státy americké", "name:cu"=>"Амєрика́ньскꙑ Ѥдьнѥнꙑ́ Дрьжа́вꙑ", "name:cv"=>"Америкăри Пĕрлешӳллĕ Штатсем", "name:cy"=>"Unol Daleithiau America", "name:da"=>"Amerikas Forenede Stater", "name:de"=>"Vereinigte Staaten von Amerika", "name:dv"=>"އެމެރިކާ", "name:dz"=>"ཡུ་ནའིཊེཊ་སི་ཊེས", "name:ee"=>"United States", "name:el"=>"Ηνωμένες Πολιτείες της Αμερικής", "name:en"=>"United States", "name:eo"=>"Usono", "name:es"=>"Estados Unidos de América", "name:et"=>"Ameerika Ühendriigid", "name:eu"=>"Ameriketako Estatu Batuak", "name:fa"=>"ایالات متحده آمریکا", "name:ff"=>"Dowlaaji Dentuɗi", "name:fi"=>"Amerikan yhdysvallat", "name:fo"=>"Sambandsríkið Amerika", "name:fr"=>"États-Unis d'Amérique", "name:fy"=>"Feriene Steaten fan Amearika", "name:ga"=>"Stáit Aontaithe Mheiriceá", "name:gd"=>"Na Stàitean Aonaichte", "name:gl"=>"Estados Unidos de América", "name:gn"=>"Tetã peteĩ reko Amérikagua", "name:gu"=>"સંયુક્ત રાજ્ય અમેરિકા", "name:gv"=>"Steatyn Unnaneysit America", "name:ha"=>"kunkiyar taraiyar Amurika", "name:he"=>"ארצות הברית", "name:hi"=>"संयुक्त राज्य अमेरिका", "name:hr"=>"Sjedinjene Američke Države", "name:ht"=>"Etazini", "name:hu"=>"Amerikai Egyesült Államok", "name:hy"=>"Ամերիկայի Միացյալ Նահանգներ", "name:ia"=>"Statos Unite de America", "name:id"=>"Amerika Serikat", "name:ie"=>"Unit States de America", "name:ig"=>"Njikota Obodo Amerika", "name:ik"=>"United States of America", "name:io"=>"Unionita Stati di Amerika", "name:is"=>"Bandaríki Norður-Ameríku", "name:it"=>"Stati Uniti d'America", "name:iu"=>"ᐊᒥᐊᓕᑲ", "name:ja"=>"アメリカ合衆国", "name:jv"=>"Amérika Sarékat", "name:ka"=>"ამერიკის შეერთებული შტატები", "name:ki"=>"United States", "name:kk"=>"Америка Құрама Штаттары", "name:kl"=>"Naalagaaffeqatigiit", "name:km"=>"សហរដ្ឋអាមេរិក", "name:kn"=>"ಅಮೇರಿಕ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನ", "name:ko"=>"미국", "name:ks"=>"संयुक्त राज्य अमेरिका", "name:ku"=>"Dewletên Yekbûyî yên Amerîkayê", "name:kv"=>"Америкаса Ӧтувтӧм Штатъяс", "name:kw"=>"Statys Unys Amerika", "name:ky"=>"Америка Кошмо Штаттары", "name:la"=>"Civitates Foederatae Americae", "name:lb"=>"Vereenegt Staate vun Amerika", "name:lg"=>"Amereka", "name:li"=>"Vereinegde State van Amerika", "name:ln"=>"Lisangá lya Ameríka", "name:lo"=>"ສະຫະລັດອາເມລິກາ", "name:lt"=>"Jungtinės Amerikos Valstijos", "name:lv"=>"Amerikas Savienotās Valstis", "name:mg"=>"Etazonia", "name:mi"=>"Amerika", "name:mk"=>"Соединети Американски Држави", "name:ml"=>"അമേരിക്കന് ഐക്യനാടുകള്", "name:mn"=>"Америкийн Нэгдсэн Улс", "name:mo"=>"Стателе Уните але Америчий", "name:mr"=>"अमेरिकेची संयुक्त संस्थाने", "name:ms"=>"Amerika Syarikat", "name:mt"=>"Stati Uniti tal-Amerika", "name:my"=>"အမေရိကန်ပြည်ထောင်စု", "name:na"=>"Eben Merika", "name:nb"=>"USA", "name:ne"=>"संयुक्त राज्य अमेरिका", "name:nl"=>"Verenigde Staten", "name:nn"=>"USA", "name:no"=>"Amerikas forente stater", "name:nv"=>"Wááshindoon Bikéyah Ałhidadiidzooígíí", "name:oc"=>"Estats Units d'America", "name:om"=>"USA", "name:or"=>"ଯୁକ୍ତରାଷ୍ଟ୍ର ଆମେରିକା", "name:os"=>"Америкæйы Иугонд Штаттæ", "name:pa"=>"ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ", "name:pl"=>"Stany Zjednoczone", "name:ps"=>"د امريکا متحده ايالات", "name:pt"=>"Estados Unidos da América", "name:qu"=>"Hukllachasqa Amirika Suyukuna", "name:rm"=>"Stadis Unids da l'America", "name:rn"=>"Leta Zunze Ubumwe za Amerika", "name:ro"=>"Statele Unite ale Americii", "name:ru"=>"Соединённые Штаты Америки", "name:rw"=>"Leta Zunze Ubumwe z’Amerika", "name:sa"=>"संयुक्तानि राज्यानि", "name:sc"=>"Istados Unidos de America", "name:sd"=>"آمريڪا", "name:se"=>"Amerihká ovttastuvvan stáhtat", "name:sg"=>"ÂKödörö-ôko tî Amerîka", "name:sh"=>"Sjedinjene Američke Države", "name:si"=>"අ'මෙරිකාවේ එක්සත් රාජ්යයන්", "name:sk"=>"Spojené štáty americké", "name:sl"=>"Združene države Amerike", "name:sm"=>"Iunaite Sitete o Amerika", "name:sn"=>"United States of America", "name:so"=>"Mareykanka", "name:sq"=>"Shtetet e Bashkuara të Amerikës", "name:sr"=>"Сједињене Америчке Државе", "name:ss"=>"IMelika", "name:su"=>"Amérika Sarikat", "name:sv"=>"Amerikas Förenta Stater", "name:sw"=>"Muungano wa Madola ya Amerika", "name:ta"=>"அமெரிக்க ஐக்கிய நாடு", "name:te"=>"అమెరికా సంయుక్త రాష్ట్రాలు", "name:tg"=>"Иёлоти Муттаҳидаи Амрико", "name:th"=>"สหรัฐอเมริกา", "name:tk"=>"Amerikanyň Birleşen Ştatlary", "name:tl"=>"Estados Unidos", "name:tn"=>"USA", "name:to"=>"Puleʻanga Fakataha 'o 'Amelika", "name:tr"=>"Amerika Birleşik Devletleri", "name:ts"=>"United States", "name:tt"=>"Америка Кушма Штатлары", "name:tw"=>"USA", "name:ty"=>"Fenua Marite", "name:ug"=>"ئامېرىكا قوشما شتاتلىرى", "name:uk"=>"Сполучені Штати Америки", "name:ur"=>"ریاستہائے متحدہ امریکہ", "name:uz"=>"Amerika Qoʻshma Shtatlari", "name:vi"=>"Hoa Kỳ", "name:vo"=>"Lamerikän", "name:wa"=>"Estats Unis d' Amerike", "name:wo"=>"Diwaan-yu-Bennoo yu Aamerig", "name:xh"=>"IYunayithedi Steyitsi", "name:yi"=>"פאראייניקטע שטאטן פון אמעריקע", "name:yo"=>"Àwọn Ìpínlẹ̀ Aṣọ̀kan Amẹ́ríkà", "name:za"=>"Meijgoz", "name:zh"=>"美利坚合众国/美利堅合眾國", "name:zu"=>"IMelika"
-de "name"=>"Deutschland", "name:ab"=>"Алмантәыла", "name:af"=>"Duitsland", "name:ak"=>"Germany", "name:am"=>"ጀርመን", "name:an"=>"Alemanya", "name:ar"=>"ألمانيا", "name:av"=>"Алмания", "name:ay"=>"Alimaña", "name:az"=>"Almaniya", "name:ba"=>"Германия", "name:be"=>"Германія", "name:bg"=>"Германия", "name:bi"=>"Germany", "name:bm"=>"Jermani", "name:bn"=>"জার্মানি", "name:bo"=>"འཇར་མན།", "name:br"=>"Alamagn", "name:bs"=>"Njemačka", "name:ca"=>"Alemanya", "name:ce"=>"Германи", "name:co"=>"Germania", "name:cs"=>"Německo", "name:cu"=>"Нѣмьци", "name:cv"=>"Германи", "name:cy"=>"Yr Almaen", "name:da"=>"Tyskland", "name:de"=>"Deutschland", "name:dv"=>"ޖަރުމަނުވިލާތް", "name:dz"=>"ཇཱར་མ་ནི", "name:ee"=>"Germany", "name:el"=>"Γερμανία", "name:en"=>"Germany", "name:eo"=>"Germanio", "name:es"=>"Alemania", "name:et"=>"Saksamaa", "name:eu"=>"Alemania", "name:fa"=>"آلمان", "name:ff"=>"Almaanya", "name:fi"=>"Saksa", "name:fo"=>"Týskland", "name:fr"=>"Allemagne", "name:fy"=>"Dútslân", "name:ga"=>"An Ghearmáin", "name:gd"=>"A' Ghearmailt", "name:gl"=>"Alemaña", "name:gn"=>"Alemaña", "name:gu"=>"જર્મની", "name:gv"=>"Yn Ghermaan", "name:ha"=>"Jamus", "name:he"=>"גרמניה", "name:hi"=>"जर्मनी", "name:hr"=>"Njemačka", "name:ht"=>"Almay", "name:hu"=>"Németország", "name:hy"=>"Գերմանիա", "name:ia"=>"Germania", "name:id"=>"Jerman", "name:ie"=>"Germania", "name:ig"=>"Jémanị", "name:io"=>"Germania", "name:is"=>"Þýskaland", "name:it"=>"Germania", "name:iu"=>"ᔮᒪᓂ", "name:ja"=>"ドイツ", "name:jv"=>"Jerman", "name:ka"=>"გერმანია", "name:kg"=>"Alemanyi", "name:ki"=>"Germany", "name:kk"=>"Германия Федеративтік Республикасы", "name:kl"=>"Tyskit Nunaat", "name:km"=>"អាល្លឺម៉ង់", "name:kn"=>"ಜರ್ಮನಿ", "name:ko"=>"독일", "name:ks"=>"جرمٔنی", "name:ku"=>"Almanya", "name:kv"=>"Германия", "name:kw"=>"Almayn", "name:ky"=>"Германия", "name:la"=>"Germania", "name:lb"=>"Däitschland", "name:lg"=>"Girimane", "name:li"=>"Duutsjlandj", "name:ln"=>"Alémani", "name:lo"=>"ປະເທດເຢັຽລະມັນ", "name:lt"=>"Vokietija", "name:lv"=>"Vācija", "name:mg"=>"Alemaina", "name:mi"=>"Tiamani", "name:mk"=>"Германија", "name:ml"=>"ജർമ്മനി", "name:mn"=>"Герман", "name:mo"=>"Ӂермания", "name:mr"=>"जर्मनी", "name:ms"=>"Jerman", "name:mt"=>"Ġermanja", "name:my"=>"ဂျာမနီနိုင်ငံ", "name:na"=>"Djermani", "name:ne"=>"जर्मनी", "name:nl"=>"Duitsland", "name:nn"=>"Tyskland", "name:no"=>"Tyskland", "name:nv"=>"Béésh Bichʼahii Bikéyah", "name:oc"=>"Alemanha", "name:or"=>"ଜର୍ମାନୀ", "name:os"=>"Герман", "name:pa"=>"ਜਰਮਨੀ", "name:pl"=>"Niemcy", "name:ps"=>"آلمان", "name:pt"=>"Alemanha", "name:qu"=>"Alimanya", "name:rm"=>"Germania", "name:rn"=>"Ubudagi", "name:ro"=>"Germania", "name:ru"=>"Германия", "name:rw"=>"Ubudage", "name:sa"=>"जर्मनी", "name:sc"=>"Germània", "name:se"=>"Duiska", "name:sh"=>"Nemačka", "name:si"=>"ජර්මනිය", "name:sk"=>"Nemecko", "name:sl"=>"Nemčija", "name:sm"=>"Siamani", "name:so"=>"Jarmalka", "name:sq"=>"Gjermania", "name:sr"=>"Немачка", "name:ss"=>"IJalimane", "name:su"=>"Jérman", "name:sv"=>"Tyskland", "name:sw"=>"Ujerumani", "name:ta"=>"செருமனி", "name:te"=>"జర్మనీ", "name:tg"=>"Олмон", "name:th"=>"ประเทศเยอรมนี", "name:ti"=>"ጀርመን", "name:tk"=>"Germaniýa", "name:tl"=>"Alemanya", "name:tr"=>"Almanya", "name:ts"=>"Jarimani", "name:tt"=>"Алмания", "name:tw"=>"Gyaaman", "name:ty"=>"Heremani", "name:ug"=>"گېرمانىيە", "name:uk"=>"Німеччина", "name:ur"=>"جرمنی", "name:uz"=>"Olmoniya", "name:vi"=>"Đức", "name:vo"=>"Deutän", "name:wa"=>"Almagne", "name:wo"=>"Almaañ", "name:xh"=>"IJamani", "name:yi"=>"דייטשלאנד", "name:yo"=>"Jẹ́mánì", "name:za"=>"Dwzgoz", "name:zh"=>"德国", "name:zu"=>"IJalimani"
-fr "name"=>"France", "name:af"=>"Frankryk", "name:ak"=>"Frɛnkyeman", "name:am"=>"ፈረንሣይ", "name:an"=>"Francia", "name:ar"=>"فرنسا", "name:as"=>"ফ্ৰান্স", "name:ay"=>"Phransiya", "name:az"=>"Fransa", "name:ba"=>"Франция", "name:be"=>"Францыя", "name:bg"=>"Франция", "name:bi"=>"Franis", "name:bm"=>"France", "name:bn"=>"ফ্রান্স", "name:bo"=>"ཧྥ་རན་སི།", "name:br"=>"Bro-C'hall", "name:bs"=>"Francuska", "name:ca"=>"França", "name:ce"=>"Франци", "name:co"=>"Francia", "name:cs"=>"Francie", "name:cu"=>"Франкїꙗ", "name:cv"=>"Франци", "name:cy"=>"Ffrainc", "name:da"=>"Frankrig", "name:de"=>"Frankreich", "name:dv"=>"ފަރަންސޭސިވިލާތް", "name:dz"=>"ཕརཱནསི་", "name:ee"=>"France", "name:el"=>"Γαλλία", "name:en"=>"France", "name:eo"=>"Francio", "name:es"=>"Francia", "name:et"=>"Prantsusmaa", "name:eu"=>"Frantzia", "name:fa"=>"فرانسه", "name:ff"=>"Faransi", "name:fi"=>"Ranska", "name:fo"=>"Frakland", "name:fr"=>"France", "name:fy"=>"Frankryk", "name:ga"=>"An Fhrainc", "name:gd"=>"An Fhraing", "name:gl"=>"Francia", "name:gn"=>"Hyãsia", "name:gu"=>"ફ્રાન્સ", "name:gv"=>"Yn Rank", "name:ha"=>"Faransa", "name:he"=>"צרפת", "name:hi"=>"फ़्रान्स", "name:hr"=>"Francuska", "name:ht"=>"Frans", "name:hu"=>"Franciaország", "name:hy"=>"Ֆրանսիա", "name:ia"=>"Francia", "name:id"=>"Perancis", "name:ie"=>"Francia", "name:io"=>"Francia", "name:is"=>"Frakkland", "name:it"=>"Francia", "name:ja"=>"フランス", "name:jv"=>"Prancis", "name:ka"=>"საფრანგეთი", "name:kg"=>"Fwalansa", "name:ki"=>"Ubaranja", "name:kk"=>"Франция", "name:kl"=>"Frankrigi", "name:km"=>"បារាំង", "name:kn"=>"ಫ್ರಾನ್ಸ್", "name:ko"=>"프랑스", "name:ks"=>"فرٛانس", "name:ku"=>"Fransa", "name:kv"=>"Франция", "name:kw"=>"Pow Frynk", "name:ky"=>"Франция", "name:la"=>"Francia", "name:lb"=>"Frankräich", "name:lg"=>"Bufalansa", "name:li"=>"Frankriek", "name:ln"=>"Falansia", "name:lo"=>"ປະເທດຝະລັ່ງ", "name:lt"=>"Prancūzija", "name:lv"=>"Francija", "name:mg"=>"Frantsa", "name:mi"=>"Wīwī", "name:mk"=>"Франција", "name:ml"=>"ഫ്രാൻസ്", "name:mn"=>"Франц", "name:mo"=>"Франца", "name:mr"=>"फ्रान्स", "name:ms"=>"Perancis", "name:mt"=>"Franza", "name:my"=>"ပြင်သစ်နိုင်ငံ", "name:na"=>"Prant", "name:ne"=>"फ्रान्स", "name:nl"=>"Frankrijk", "name:nn"=>"Frankrike", "name:no"=>"Frankrike", "name:nv"=>"Dáághahii Dineʼé Bikéyah", "name:oc"=>"França", "name:or"=>"ଫ୍ରାନ୍ସ", "name:os"=>"Франц", "name:pa"=>"ਫ੍ਰਾਂਸ", "name:pl"=>"Francja", "name:ps"=>"فرانسه", "name:pt"=>"França", "name:qu"=>"Ransiya", "name:rm"=>"Frantscha", "name:rn"=>"Francia", "name:ro"=>"Franța", "name:ru"=>"Франция", "name:rw"=>"Ubufaransa", "name:sa"=>"फ्रान्सदेशः", "name:sc"=>"Frantza", "name:se"=>"Frankriika", "name:sg"=>"Farânzi", "name:sh"=>"Francuska", "name:si"=>"ප්රංශය", "name:sk"=>"Francúzsko", "name:sl"=>"Francija", "name:sm"=>"Farani", "name:so"=>"Faransiiska", "name:sq"=>"Franca", "name:sr"=>"Француска", "name:ss"=>"IFulansi", "name:st"=>"Fora", "name:su"=>"Perancis", "name:sv"=>"Frankrike", "name:sw"=>"Ufaransa", "name:ta"=>"பிரான்சு", "name:te"=>"ఫ్రాన్స్", "name:tg"=>"Фаронса", "name:th"=>"ประเทศฝรั่งเศส", "name:ti"=>"ፈረንሳይ", "name:tk"=>"Fransiýa", "name:tl"=>"Pransiya", "name:to"=>"Falanisē", "name:tr"=>"Fransa", "name:tt"=>"Франция", "name:ty"=>"Farāni", "name:ug"=>"فرانسىيە", "name:uk"=>"Франція", "name:ur"=>"فرانس", "name:uz"=>"Fransiya", "name:vi"=>"Pháp", "name:vo"=>"Fransän", "name:wa"=>"France", "name:wo"=>"Faraas", "name:yi"=>"פראנקרייך", "name:yo"=>"Fránsì", "name:za"=>"Fazgoz", "name:zh"=>"法國/法国", "name:zu"=>"IFulansi"
-ch "name"=>"Schweiz/Suisse/Svizzera/Svizra", "name:af"=>"Switserland", "name:am"=>"ስዊዘርላንድ", "name:an"=>"Suiza", "name:ar"=>"سويسرا", "name:az"=>"İsveçrə", "name:ba"=>"Швейцария", "name:be"=>"Швейцарыя", "name:bg"=>"Швейцария", "name:bi"=>"Switzerland", "name:bn"=>"Switzerland", "name:bo"=>"སུད་སི།", "name:br"=>"Suis", "name:bs"=>"Švicarska", "name:ca"=>"Suïssa", "name:ce"=>"Швейцари", "name:co"=>"Svizzera", "name:cs"=>"Švýcarsko", "name:cu"=>"Свицєра", "name:cv"=>"Швейцари", "name:cy"=>"Y Swistir", "name:da"=>"Schweiz", "name:de"=>"Schweiz", "name:dv"=>"ސުވިޒަލޭންޑު", "name:dz"=>"སུའིཊ་ཛར་ལེན་", "name:ee"=>"Switzerland", "name:el"=>"Ελβετία", "name:en"=>"Switzerland", "name:eo"=>"Svislando", "name:es"=>"Suiza", "name:et"=>"Šveits", "name:eu"=>"Suitza", "name:fa"=>"سوئیس", "name:fi"=>"Sveitsi", "name:fo"=>"Sveis", "name:fr"=>"Suisse", "name:fy"=>"Switserlân", "name:ga"=>"An Eilbhéis", "name:gd"=>"An Eilbheis", "name:gl"=>"Suíza", "name:gn"=>"Suisa", "name:gu"=>"સ્વિત્ઝરલેન્ડ", "name:gv"=>"Yn Elveeish", "name:he"=>"שוויץ", "name:hi"=>"स्विट्ज़रलैंड", "name:hr"=>"Švicarska", "name:ht"=>"Swis", "name:hu"=>"Svájc", "name:hy"=>"Շվեյցարիա", "name:ia"=>"Suissa", "name:id"=>"Swiss", "name:ie"=>"Svissia", "name:io"=>"Suisia", "name:is"=>"Sviss", "name:it"=>"Svizzera", "name:ja"=>"スイス", "name:jv"=>"Swiss", "name:ka"=>"შვეიცარია", "name:kg"=>"Suisi", "name:kk"=>"Швейцария", "name:kl"=>"Schweizi", "name:kn"=>"ಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್", "name:ko"=>"스위스", "name:ku"=>"Swîsre", "name:kv"=>"Швейцария", "name:kw"=>"Swistir", "name:ky"=>"Швейцария", "name:la"=>"Helvetia", "name:lb"=>"Schwäiz", "name:li"=>"Zweitserland", "name:ln"=>"Swisi", "name:lt"=>"Šveicarija", "name:lv"=>"Šveice", "name:mg"=>"Soisa", "name:mi"=>"Huiterangi", "name:mk"=>"Швајцарија", "name:ml"=>"സ്വിറ്റ്സര്ലാന്റ്", "name:mn"=>"Швейцари", "name:mr"=>"स्वित्झर्लंड", "name:ms"=>"Switzerland", "name:mt"=>"Żvizzera", "name:my"=>"ဆွစ်ဇာလန်နိုင်ငံ", "name:na"=>"Switzerland", "name:ne"=>"स्विजरल्याण्ड", "name:nl"=>"Zwitserland", "name:nn"=>"Sveits", "name:no"=>"Sveits", "name:nv"=>"Swis Bikéyah", "name:oc"=>"Soïssa", "name:or"=>"ସୁଇଜରଲ୍ୟାଣ୍ଡ", "name:os"=>"Швейцари", "name:pa"=>"ਸਵਿਟਜ਼ਰਲੈਂਡ", "name:pl"=>"Szwajcaria", "name:ps"=>"سويس", "name:pt"=>"Suíça", "name:qu"=>"Suwisa", "name:rm"=>"Svizra", "name:ro"=>"Elveţia", "name:ru"=>"Швейцария", "name:rw"=>"Ubusuwisi", "name:sa"=>"स्विटजरलैंड", "name:sc"=>"Isvìtzera", "name:se"=>"Šveica", "name:sh"=>"Švajcarska", "name:si"=>"ස්විට්සර්ලන්තය", "name:sk"=>"Švajčiarsko", "name:sl"=>"Švica", "name:so"=>"Iswiizerlaan", "name:sq"=>"Zvicra", "name:sr"=>"Швајцарска", "name:ss"=>"ISwizalandi", "name:su"=>"Suis", "name:sv"=>"Schweiz", "name:sw"=>"Uswisi", "name:ta"=>"சுவிட்சர்லாந்து", "name:te"=>"స్విట్జర్లాండ్", "name:tg"=>"Швейтсария", "name:th"=>"ประเทศสวิตเซอร์แลนด์", "name:tk"=>"Şweýsariýa", "name:tl"=>"Suwisa", "name:tr"=>"İsviçre", "name:tt"=>"Швейцария", "name:ug"=>"Shwétsariye", "name:uk"=>"Швейцарія", "name:ur"=>"سویٹزر لینڈ", "name:uz"=>"Shveysariya", "name:vi"=>"Thụy Sĩ", "name:vo"=>"Jveizän", "name:wo"=>"Suwis", "name:yi"=>"שווייץ", "name:yo"=>"Swítsàlandì", "name:za"=>"Nyeiqswq", "name:zh"=>"瑞士"
-ba "name"=>"Bosna i Hercegovina / Босна и Херцеговина", "name:af"=>"Bosnië en Herzegowina", "name:ak"=>"Bosnia and Herzegovina", "name:am"=>"ቦስኒያና ሄርጸጎቪና", "name:an"=>"Bosnia y Herzegovina", "name:ar"=>"البوسنة والهرسك", "name:av"=>"Бо́сния ва Герцегови́на", "name:az"=>"Bosniya və Herseqovina", "name:ba"=>"Босния һәм Герцеговина", "name:be"=>"Бо́снія і Герцагаві́на", "name:bg"=>"Босна и Херцеговина", "name:bh"=>"बोस्निया आ हर्जेगोविना", "name:bi"=>"Bosnia mo Herzegovina", "name:bm"=>"Bozni-Ɛrizigovini", "name:bn"=>"বসনিয়া ও হার্জেগোভিনা", "name:bo"=>"བྷོསུ་ནིཡ་དང་ཧར་ཛེ་གྷོ་ཝི་ན།", "name:br"=>"Bosnia-ha-Herzegovina", "name:bs"=>"Bosna i Hercegovina", "name:ca"=>"Bòsnia i Hercegovina", "name:ce"=>"Босни а Герцеговина а", "name:co"=>"Bosnia è Erzegovina", "name:cs"=>"Bosna a Hercegovina", "name:cu"=>"Босна́", "name:cv"=>"Босни тата Герцеговина", "name:cy"=>"Bosnia a Hercegovina", "name:da"=>"Bosnien og Hercegovina", "name:de"=>"Bosnien und Herzegowina", "name:dv"=>"ބޮސްނިޔާ އެންޑް ހެރްޒިގޮވީނާ", "name:ee"=>"Bosnia and Herzegovina", "name:el"=>"Βοσνία και Ερζεγοβίνη", "name:en"=>"Bosnia and Herzegovina", "name:eo"=>"Bosnio kaj Hercegovino", "name:es"=>"Bosnia y Herzegovina", "name:et"=>"Bosnia ja Hertsegoviina", "name:eu"=>"Bosnia eta Herzegovinako", "name:fa"=>"بوسنی و هرزگوین", "name:ff"=>"Bosniya e Herzegovina", "name:fi"=>"Bosnia ja Hertsegovina", "name:fo"=>"Bosnia og Hersegovina", "name:fr"=>"Bosnie-et-Herzégovine", "name:fy"=>"Bosnje-Hertsegovina", "name:ga"=>"an Bhoisnia-Heirseagaivéin", "name:gd"=>"Bosna agus Hearsagobhana", "name:gl"=>"Bosnia e Hercegovina", "name:gn"=>"Vonia ha Hesegovina", "name:gu"=>"બોસ્નિયા અને હર્ઝેગોવિના", "name:gv"=>"Bosnia as Herzegovina", "name:ha"=>"Bosnia da Herzegovina", "name:he"=>"בּוֹסְנִיָּה וְהֶרְצֶגוֹבִינָה", "name:hi"=>"बॉस्निया और हर्ज़ेगोविना", "name:hr"=>"Bosna i Hercegovina", "name:ht"=>"Bosni ak Erzegovin", "name:hu"=>"Bosznia-Hercegovina", "name:hy"=>"Բոսնիա և Հերցեգովինա", "name:ia"=>"Bosnia e Herzegovina", "name:id"=>"Bosnia dan Herzegovina", "name:ie"=>"Bosnia e Herzegovina", "name:ig"=>"Bosnia na Herzegovina", "name:io"=>"Bosnia e Herzegovina", "name:is"=>"Bosnía og Hersegóvína", "name:it"=>"Bosnia ed Erzegovina", "name:ja"=>"ボスニア・ヘルツェゴビナ", "name:jv"=>"Bosnia lan Hércegovina", "name:ka"=>"ბოსნია და ჰერცეგოვინა", "name:kg"=>"Bosna", "name:ki"=>"Mbocinia na Hecengobina", "name:kk"=>"Босния және Герцеговина", "name:kl"=>"Bosnia-Hercegovina", "name:km"=>"បូស្ន៉ី", "name:kn"=>"ಬೊಸ್ನಿಯ ಮತ್ತು ಹೆರ್ಜೆಗೊವಿನ", "name:ko"=>"보스니아 헤르체고비나", "name:ks"=>"बास्निया", "name:ku"=>"Bosniya û Herzegovîna", "name:kv"=>"Босния да Герцеговина", "name:kw"=>"Bosni–Hercegovina", "name:ky"=>"Босния жана Герцеговина", "name:la"=>"Bosnia et Herzegovina", "name:lb"=>"Bosnien an Herzegowina", "name:li"=>"Bosnië en Herzegovina", "name:ln"=>"Bosnia na Erzegovina", "name:lo"=>"ປະເທດບົດສະນີແຮກເຊໂກວີນ", "name:lt"=>"Bosnija ir Hercegovina", "name:lv"=>"Bosnija un Hercegovina", "name:mg"=>"Bosnia sy Herzegovina", "name:mi"=>"Pōngia-Herekōmina", "name:mk"=>"Босна и Херцеговина", "name:ml"=>"ബോസ്നിയ ആന്റ് ഹെർസെഗോവിന", "name:mn"=>"Босни ба Херцеговина", "name:mr"=>"बॉस्निया आणि हर्झगोव्हिना", "name:ms"=>"Bosnia dan Herzegovina", "name:mt"=>"Bożnija u Ħerżegovina", "name:my"=>"ဘော့စနီးယားနှင့် ဟာဇီဂိုးဗီးနားနိုင်ငံ", "name:na"=>"Boteniya me Erdegobina", "name:ne"=>"बोस्निया र हर्जगोभिना", "name:nl"=>"Bosnië en Herzegovina", "name:nn"=>"Bosnia-Hercegovina", "name:no"=>"Bosnia-Hercegovina", "name:nv"=>"Bosna dóó Hetsog Bikéyah", "name:oc"=>"Bòsnia e Ercegovina", "name:om"=>"Boosniyaa fi Herzegoviinaa", "name:or"=>"ବୋସନିଆ ଓ ହରଜଗୋଭିନା", "name:os"=>"Босни æмæ Герцеговинæ", "name:pa"=>"ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ", "name:pi"=>"बास्निया", "name:pl"=>"Bośnia i Hercegowina", "name:ps"=>"بوسنيا او هېرزګوينا", "name:pt"=>"Bósnia e Herzegovina", "name:qu"=>"Busna-Hirsiquwina", "name:rm"=>"Bosnia-Erzegovina", "name:rn"=>"Bosiniya na Herigozevine", "name:ro"=>"Bosnia și Herțegovina", "name:ru"=>"Босния и Герцеговина", "name:rw"=>"Bosiniya na Herizegovina", "name:sa"=>"बास्निया", "name:sc"=>"Bòsnia e Erzegòvina", "name:se"=>"Bosnia ja Hercegovina", "name:sg"=>"Bosnïi na Herzegovînni", "name:sh"=>"Bosna i Hercegovina", "name:si"=>"බොස්නියා සහ හර්සගෝවිනා", "name:sk"=>"Bosna a Hercegovina", "name:sl"=>"Bosna in Hercegovina", "name:sm"=>"Bosnia ma Herzegovina", "name:sn"=>"Bosnia and Herzegovina", "name:so"=>"Bosniya iyo Herzegovina", "name:sq"=>"Bosnja dhe Hercegovina", "name:sr"=>"Босна и Херцеговина", "name:ss"=>"iBhosinya ne Hezegovi", "name:su"=>"Bosnia jeung Hérzégovina", "name:sv"=>"Bosnien och Hercegovina", "name:sw"=>"Bosnia na Herzegovina", "name:ta"=>"பொசுனியாவும் எர்செகோவினாவும்", "name:te"=>"బోస్నియా మరియు హెర్జెగొవీనా", "name:tg"=>"Босния ва Ҳерсеговина", "name:th"=>"บอสเนียและเฮอร์เซโกวีนา", "name:ti"=>"ቦስኒያ እና ሄርዞጎቪኒያ", "name:tk"=>"Bosniýa we Gersegowina", "name:tl"=>"Bosnia at Herzegovina", "name:to"=>"Posinia mo Hesikōvinia", "name:tr"=>"Bosna-Hersek", "name:ts"=>"Bosnia and Herzegovina", "name:tt"=>"Бо́сния һәм Герцегови́на", "name:ty"=>"Pōtinia-Heretōvina", "name:ug"=>"بوسنىيە ۋە ھېرسېگوۋىنا", "name:uk"=>"Бо́снія і Герцеґови́на", "name:ur"=>"بوسنیا و ہرزیگووینا", "name:uz"=>"Bosniya va Gersegovina", "name:vi"=>"Bosnia và Herzegovina", "name:vo"=>"Bosnän e Härzegovän", "name:wa"=>"Bosneye", "name:wo"=>"Bosni Hersegowin", "name:yi"=>"באסניע און הערצעגאווינע", "name:yo"=>"Bósníà àti Hẹrjẹgòfínà", "name:zh"=>"波斯尼亞和黑塞哥維那", "name:zu"=>"IBhosniya neHerzegovina"
-fi "name"=>"Suomi", "name:ab"=>"Суоми", "name:af"=>"Finland", "name:am"=>"ፊንላንድ", "name:an"=>"Finlandia", "name:ar"=>"فنلندا", "name:ay"=>"Phini suyu", "name:az"=>"Finlandiya", "name:ba"=>"Финляндия", "name:be"=>"Фінляндыя", "name:bg"=>"Финландия", "name:bi"=>"Finland", "name:bm"=>"Finland", "name:bn"=>"ফিনল্যান্ড", "name:bo"=>"ཧྥིན་ལན", "name:br"=>"Finland", "name:bs"=>"Finska", "name:ca"=>"Finlàndia", "name:ce"=>"Финлянди", "name:co"=>"Finlandia", "name:cs"=>"Finsko", "name:cu"=>"Соумь", "name:cv"=>"Финлянди", "name:cy"=>"Y Ffindir", "name:da"=>"Finland", "name:de"=>"Finnland", "name:dv"=>"ފިންލޭންޑު", "name:dz"=>"ཕིན་ལེནཌ་", "name:ee"=>"Finland", "name:el"=>"Φινλανδία", "name:en"=>"Finland", "name:eo"=>"Finnlando", "name:es"=>"Finlandia", "name:et"=>"Soome", "name:eu"=>"Finlandia", "name:fa"=>"فنلاند", "name:fi"=>"Suomi", "name:fo"=>"Finnland", "name:fr"=>"Finlande", "name:fy"=>"Finlân", "name:ga"=>"An Fhionlainn", "name:gd"=>"Suòmaidh", "name:gl"=>"Finlandia", "name:gn"=>"Hĩlandia", "name:gu"=>"ફીનલેંડ", "name:gv"=>"Finnlynn", "name:he"=>"פינלנד", "name:hi"=>"फ़िनलैंड", "name:hr"=>"Finska", "name:ht"=>"Fenlann", "name:hu"=>"Finnország", "name:hy"=>"Ֆինլանդիա", "name:ia"=>"Finlandia", "name:id"=>"Finlandia", "name:ie"=>"Finland", "name:ig"=>"Finland", "name:io"=>"Finlando", "name:is"=>"Finnland", "name:it"=>"Finlandia", "name:iu"=>"ᐃᓐᓚᓐᑦ", "name:ja"=>"フィンランド", "name:jv"=>"Finlandia", "name:ka"=>"ფინეთი", "name:kg"=>"Finlandi", "name:ki"=>"Finland", "name:kk"=>"Финландия", "name:kl"=>"Finlandi", "name:kn"=>"ಫಿನ್ಲ್ಯಾಂಡ್", "name:ko"=>"핀란드", "name:ks"=>"فننش", "name:ku"=>"Fînland", "name:kv"=>"Финляндия", "name:kw"=>"Pow Finn", "name:ky"=>"Финляндия", "name:la"=>"Finnia", "name:lb"=>"Finnland", "name:lg"=>"Finilandi", "name:li"=>"Finland", "name:ln"=>"Finilanda", "name:lt"=>"Suomija", "name:lv"=>"Somija", "name:mg"=>"Finlandy", "name:mi"=>"Whinarana", "name:mk"=>"Финска", "name:ml"=>"ഫിൻലാന്റ്", "name:mn"=>"Финлянд", "name:mr"=>"फिनलंड", "name:ms"=>"Finland", "name:mt"=>"Finlandja", "name:my"=>"ဖင်လန်နိုင်ငံ", "name:na"=>"Finland", "name:ne"=>"फिनल्याण्ड", "name:nl"=>"Finland", "name:nn"=>"Finland", "name:no"=>"Finland", "name:nv"=>"Nahoditsʼǫʼłání", "name:oc"=>"Finlàndia", "name:or"=>"ଫିନଲ୍ୟାଣ୍ଡ", "name:os"=>"Финлянди", "name:pa"=>"ਫ਼ਿਨਲੈਂਡ", "name:pl"=>"Finlandia", "name:ps"=>"فېنلانډ", "name:pt"=>"Finlândia", "name:qu"=>"Phinsuyu", "name:rm"=>"Finlanda", "name:ro"=>"Finlanda", "name:ru"=>"Финляндия", "name:rw"=>"Finilande", "name:sa"=>"फिन्लैंड", "name:sc"=>"Finlandia", "name:se"=>"Suopma", "name:sh"=>"Finska", "name:si"=>"ෆින්ලන්තය", "name:sk"=>"Fínsko", "name:sl"=>"Finska", "name:sm"=>"Finalagi", "name:so"=>"Finland", "name:sq"=>"Finlanda", "name:sr"=>"Финска", "name:ss"=>"IFini", "name:st"=>"Finland", "name:su"=>"Finlandia", "name:sv"=>"Finland", "name:sw"=>"Ufini", "name:ta"=>"பின்லாந்து", "name:te"=>"ఫిన్లెండ్", "name:tg"=>"Финланд", "name:th"=>"ประเทศฟินแลนด์", "name:tk"=>"Finlýandiýa", "name:tl"=>"Pinlandiya", "name:tr"=>"Finlandiya", "name:tt"=>"Finlândiä", "name:ug"=>"فىنلاندىيە", "name:uk"=>"Фінляндія", "name:ur"=>"فن لینڈ", "name:uz"=>"Finlandiya", "name:vi"=>"Phần Lan", "name:vo"=>"Suomiyän", "name:wa"=>"Finlande", "name:wo"=>"Finlaand", "name:yi"=>"פינלאנד", "name:yo"=>"Finlandi", "name:za"=>"Finlan", "name:zh"=>"芬兰", "name:zu"=>"IFinlandi"
-ge "name"=>"საქართველო", "name:ab"=>"Қырҭтәыла", "name:af"=>"Georgië", "name:am"=>"ጂዮርጂያ", "name:an"=>"Cheorchia", "name:ar"=>"جورجيا", "name:av"=>"Гуржи", "name:az"=>"Gürcüstan", "name:be"=>"Грузія", "name:bg"=>"Грузия", "name:bn"=>"জর্জিয়া (রাষ্ট্র)", "name:bo"=>"འཇོར་ཇི་ཡ། (རྒྱལ་ཁབ།)", "name:br"=>"Jorjia (bro)", "name:bs"=>"Gruzija", "name:ca"=>"Geòrgia", "name:ce"=>"Гуьржийчоь", "name:cs"=>"Gruzie", "name:cu"=>"Гєѡргїꙗ", "name:cv"=>"Грузи", "name:cy"=>"Georgia", "name:da"=>"Georgien", "name:de"=>"Georgien", "name:dv"=>"ޖޯޖިޔާ (ޤައުމު)", "name:dz"=>"ཇཽ་ཇཱ", "name:ee"=>"Georgia", "name:el"=>"Γεωργία", "name:en"=>"Georgia", "name:eo"=>"Kartvelio", "name:es"=>"Georgia", "name:et"=>"Gruusia", "name:eu"=>"Georgia", "name:fa"=>"گرجستان", "name:fi"=>"Georgia", "name:fo"=>"Georgia (land)", "name:fr"=>"Géorgie", "name:fy"=>"Geörgje", "name:ga"=>"An tSeoirsia", "name:gd"=>"A' Chairtbheil", "name:gl"=>"Xeorxia - საქართველო", "name:gu"=>"જ્યોર્જીયા (દેશ)", "name:gv"=>"Yn Çhorshey", "name:he"=>"גאורגיה", "name:hi"=>"जॉर्जिया", "name:hr"=>"Gruzija", "name:ht"=>"Jeoji", "name:hu"=>"Grúzia", "name:hy"=>"Վրաստան", "name:ia"=>"Georgia", "name:id"=>"Georgia", "name:ie"=>"Georgia", "name:io"=>"Gruzia", "name:is"=>"Georgía", "name:it"=>"Georgia", "name:ja"=>"グルジア", "name:jv"=>"Georgia", "name:ka"=>"საქართველო", "name:kk"=>"Грузия", "name:kn"=>"ಜಾರ್ಜಿಯ", "name:ko"=>"조지아 (국가)", "name:ku"=>"Gurcistan", "name:kv"=>"Грузия", "name:kw"=>"Pow Grouzi", "name:ky"=>"Грузия", "name:la"=>"Georgia", "name:lb"=>"Georgien", "name:li"=>"Georgië", "name:lt"=>"Gruzija", "name:lv"=>"Gruzija", "name:mi"=>"Hōria", "name:mk"=>"Грузија", "name:ml"=>"ജോർജ്ജിയ", "name:mn"=>"Гүрж", "name:mr"=>"जॉर्जिया", "name:ms"=>"Georgia", "name:mt"=>"Ġeorġja", "name:my"=>"ဂျော်ဂျီယာနိုင်ငံ", "name:na"=>"Djiordjiya", "name:ne"=>"जर्जिया (देश)", "name:nl"=>"Georgië", "name:nn"=>"Georgia", "name:no"=>"Georgia", "name:nv"=>"Jóojah (Kéyah)", "name:oc"=>"Georgia (Caucàs)", "name:or"=>"ଜର୍ଜିଆ", "name:os"=>"Гуырдзыстон", "name:pl"=>"Gruzja", "name:ps"=>"ګرجستان", "name:pt"=>"Geórgia", "name:qu"=>"Kartulsuyu", "name:ro"=>"Georgia", "name:ru"=>"Грузия", "name:rw"=>"Geworugiya", "name:sc"=>"Georgia", "name:se"=>"Georgia", "name:sh"=>"Gruzija", "name:si"=>"ජෝර්ජියා (රට)", "name:sk"=>"Gruzínsko", "name:sl"=>"Gruzija", "name:so"=>"Joorjiya", "name:sq"=>"Gjeorgjia", "name:sr"=>"Грузија", "name:ss"=>"IJojiya", "name:su"=>"Géorgia", "name:sv"=>"Georgien", "name:sw"=>"Georgia (nchi)", "name:ta"=>"சியார்சியா (நாடு)", "name:te"=>"జార్జియా (దేశం)", "name:tg"=>"Гурҷистон", "name:th"=>"ประเทศจอร์เจีย", "name:tk"=>"Gruziýa", "name:tl"=>"Heorhiya", "name:tr"=>"Gürcistan", "name:tt"=>"Гөрҗистан", "name:ug"=>"گرۇزىيە", "name:uk"=>"Грузія", "name:ur"=>"جارجیا", "name:uz"=>"Gurjiston", "name:vi"=>"Gruzia", "name:vo"=>"Grusiyän", "name:wo"=>"Jeoorji", "name:yi"=>"גרוזיע", "name:yo"=>"Georgia", "name:zh"=>"格鲁吉亚"
-nc "name"=>"Nouvelle-Calédonie", "name:af"=>"Nieu-Caledonia", "name:ar"=>"كاليدونيا الجديدة", "name:be"=>"Новая Каледонія", "name:br"=>"Kaledonia Nevez", "name:ca"=>"Nova Caledònia", "name:cy"=>"Caledonia Newydd", "name:da"=>"Ny Kaledonien", "name:de"=>"Neukaledonien", "name:el"=>"Νέα Καληδονία", "name:en"=>"New Caledonia", "name:eo"=>"Nov-Kaledonio", "name:es"=>"Nueva Caledonia", "name:fa"=>"کالدونیای جدید", "name:fi"=>"Uusi-Kaledonia", "name:fr"=>"Nouvelle-Calédonie", "name:ga"=>"An Nua-Chaladóin", "name:he"=>"קלדוניה החדשה", "name:hr"=>"Nova Kaledonija", "name:hu"=>"Új-Kaledónia", "name:id"=>"Kaledonia Baru", "name:is"=>"Nýja-Kaledónía", "name:it"=>"Nuova Caledonia", "name:la"=>"Nova Caledonia", "name:lt"=>"Naujoji Kaledonija", "name:lv"=>"Jaunkaledonija", "name:mn"=>"Шинэ Каледони", "name:nl"=>"Nieuw-Caledonië", "name:pl"=>"Nowa Kaledonia", "name:ru"=>"Новая Каледония", "name:sl"=>"Nova Kaledonija", "name:sv"=>"Nya Kaledonien", "name:th"=>"นิวแคลิโดเนีย", "name:tr"=>"Yeni Kaledonya", "name:uk"=>"Нова Каледонія", "name:zh"=>"新喀里多尼亚"
-tm "name"=>"Türkmenistan", "name:af"=>"Turkmenistan", "name:am"=>"ቱርክመኒስታን", "name:an"=>"Turkmenistán", "name:ar"=>"تركمانستان", "name:av"=>"Туркменистан", "name:az"=>"Türkmənistan", "name:ba"=>"Төрөкмәнстан", "name:be"=>"Туркменістан", "name:bg"=>"Туркменистан", "name:bn"=>"তুর্কমেনিস্তান", "name:bo"=>"ཏུརཀ་མེ་ནི་སུཏན།", "name:br"=>"Turkmenistan", "name:bs"=>"Turkmenistan", "name:ca"=>"Turkmenistan", "name:co"=>"Turkmenistan", "name:cs"=>"Turkmenistán", "name:cv"=>"Туркменистан", "name:cy"=>"Turkmenistan", "name:da"=>"Turkmenistan", "name:de"=>"Turkmenistan", "name:dv"=>"ތުރުކުމެނިސްތާން", "name:ee"=>"Turkmenistan", "name:el"=>"Τουρκμενιστάν", "name:en"=>"Turkmenistan", "name:eo"=>"Turkmenio", "name:es"=>"Turkmenistán", "name:et"=>"Türkmenistan", "name:eu"=>"Turkmenistan", "name:fa"=>"ترکمنستان", "name:fi"=>"Turkmenistan", "name:fo"=>"Turkmenistan", "name:fr"=>"Turkménistan", "name:fy"=>"Turkmenistan", "name:ga"=>"An Tuircméanastáin", "name:gd"=>"Turcmanastàn", "name:gl"=>"Turcomenistán", "name:gu"=>"તુર્કમેનિસ્તાન", "name:gv"=>"Yn Turkmenistaan", "name:he"=>"טורקמניסטן", "name:hi"=>"तुर्कमेनिस्तान", "name:hr"=>"Turkmenistan", "name:ht"=>"Tirkmenistan", "name:hu"=>"Türkmenisztán", "name:hy"=>"Թուրքմենստան", "name:ia"=>"Turkmenistan", "name:id"=>"Turkmenistan", "name:ie"=>"Turkmenistan", "name:io"=>"Turkmenistan", "name:is"=>"Túrkmenistan", "name:it"=>"Turkmenistan", "name:ja"=>"トルクメニスタン", "name:jv"=>"Turkmenistan", "name:ka"=>"თურქმენეთი", "name:kk"=>"Түрікменстан", "name:km"=>"តួរមិនីស្ថាន", "name:kn"=>"ತುರ್ಕಮೆನಿಸ್ತಾನ್", "name:ko"=>"투르크메니스탄", "name:ku"=>"Tirkmenistan", "name:kv"=>"Туркменистан", "name:kw"=>"Pow Turkmen", "name:ky"=>"Түркмөнстан", "name:la"=>"Turcomannia", "name:li"=>"Turkmenistan", "name:ln"=>"Turkmenistáni", "name:lt"=>"Turkmėnija", "name:lv"=>"Turkmenistāna", "name:mk"=>"Туркменистан", "name:ml"=>"തുർക്മെനിസ്ഥാൻ", "name:mn"=>"Туркменистан", "name:mr"=>"तुर्कमेनिस्तान", "name:ms"=>"Turkmenistan", "name:my"=>"တာ့ခ်မင်နစ္စတန်နိုင်ငံ", "name:na"=>"Turkmenistan", "name:ne"=>"तुर्कमेनिस्तान", "name:nl"=>"Turkmenistan", "name:nn"=>"Turkmenistan", "name:no"=>"Turkmenistan", "name:nv"=>"Tʼóokmen Bikéyah", "name:oc"=>"Turcmenistan", "name:or"=>"ତୁର୍କମେନିସ୍ଥାନ", "name:os"=>"Туркмени", "name:pa"=>"ਤੁਰਕਮੇਨਸਤਾਨ", "name:pl"=>"Turkmenistan", "name:ps"=>"ترکمنستان", "name:pt"=>"Turquemenistão", "name:qu"=>"Turkminsuyu", "name:ro"=>"Turkmenistan", "name:ru"=>"Туркменистан", "name:rw"=>"Turukimenisitani", "name:sa"=>"तुर्कमिनिस्थान", "name:se"=>"Turkmenistan", "name:sh"=>"Turkmenistan", "name:sk"=>"Turkménsko", "name:sl"=>"Turkmenistan", "name:so"=>"Turkmenistan", "name:sq"=>"Turkmenistani", "name:sr"=>"Туркменистан", "name:ss"=>"IThumekhi", "name:su"=>"Turkménistan", "name:sv"=>"Turkmenistan", "name:sw"=>"Turkmenistan", "name:ta"=>"துருக்மெனிஸ்தான்", "name:te"=>"తుర్కమేనిస్తాన్", "name:tg"=>"Туркманистон", "name:th"=>"ประเทศเติร์กเมนิสถาน", "name:tk"=>"Türkmenistan", "name:tl"=>"Turkmenistan", "name:tr"=>"Türkmenistan", "name:tt"=>"Төрекмәнстан", "name:ug"=>"تۈركمەنىستان", "name:uk"=>"Туркменістан", "name:ur"=>"ترکمانستان", "name:uz"=>"Turkmaniston", "name:vi"=>"Turkmenistan", "name:vo"=>"Turkmenän", "name:wo"=>"Turkumenistaan", "name:yi"=>"טורקמעניסטאן", "name:yo"=>"Turkmẹ́nìstán", "name:zh"=>"土库曼斯坦"
-je "name"=>"Jersey", "name:af"=>"Jersey", "name:an"=>"Jèrri", "name:ar"=>"جيرزي", "name:az"=>"Cersi", "name:be"=>"Джэрсi", "name:bg"=>"Джърси", "name:br"=>"Jerzenez", "name:bs"=>"Jersey", "name:ca"=>"Jersey", "name:cs"=>"Jersey", "name:cy"=>"Jersey", "name:da"=>"Jersey", "name:de"=>"Jersey", "name:dv"=>"ޖާސޭ", "name:el"=>"Υερσέη", "name:en"=>"Jersey", "name:eo"=>"Ĵerzejo", "name:es"=>"Jersey", "name:et"=>"Jersey", "name:eu"=>"Jersey", "name:fa"=>"جرزی", "name:fi"=>"Jersey", "name:fr"=>"Jersey", "name:ga"=>"Geirsí", "name:gd"=>"Jersey", "name:gl"=>"Illa de Jersey", "name:gv"=>"Jersee", "name:he"=>"ג'רזי", "name:hr"=>"Jersey", "name:hu"=>"Jersey", "name:hy"=>"Ջերսի", "name:id"=>"Jersey", "name:io"=>"Jersey", "name:is"=>"Jersey", "name:it"=>"Isola di Jersey", "name:ja"=>"ジャージー", "name:jv"=>"Jersey", "name:ka"=>"ჯერზი", "name:kn"=>"ಜರ್ಸಿ", "name:ko"=>"저지 섬", "name:kw"=>"Jersi", "name:la"=>"Caesarea Insula", "name:li"=>"Jersey", "name:lt"=>"Džersis", "name:lv"=>"Džērsija", "name:mi"=>"Tōrehe", "name:mn"=>"Жерси", "name:mr"=>"जर्सी", "name:ms"=>"Jersey", "name:ne"=>"जर्सी", "name:nl"=>"Jersey", "name:nn"=>"Jersey", "name:no"=>"Jersey", "name:oc"=>"Jersei", "name:os"=>"Джерси", "name:pa"=>"ਜਰਸੀ", "name:pl"=>"Jersey", "name:pt"=>"Jersey", "name:ro"=>"Insula Jersey", "name:ru"=>"Джерси", "name:rw"=>"Jersey", "name:sh"=>"Jersey", "name:sk"=>"Jersey", "name:sl"=>"Jersey", "name:sq"=>"Jersey", "name:sr"=>"Џерзи", "name:su"=>"Jersey", "name:sv"=>"Jersey", "name:sw"=>"Jersey", "name:ta"=>"யேர்சி", "name:te"=>"జెర్సీ", "name:th"=>"เจอร์ซีย์", "name:tl"=>"Hersey", "name:tr"=>"Jersey", "name:tt"=>"Җерси", "name:uk"=>"Джерсі", "name:ur"=>"جرزی", "name:vi"=>"Jersey", "name:yo"=>"Jersey", "name:zh"=>"澤西島"
-re "name"=>"Réunion", "name:af"=>"Réunion", "name:ar"=>"ريونيون", "name:be"=>"Руньён", "name:br"=>"Ar Reunion", "name:ca"=>"Illa de la Reunió", "name:da"=>"Reunion", "name:el"=>"Ρεϊνιόν", "name:eo"=>"Reunio", "name:es"=>"La Reunión", "name:fa"=>"رئونیون", "name:fi"=>"Réunion", "name:fr"=>"La Réunion", "name:he"=>"ראוניון", "name:hu"=>"Réunion", "name:is"=>"Réunion", "name:it"=>"Riunione", "name:la"=>"Reunio", "name:lt"=>"Reunionas", "name:lv"=>"Reinjona", "name:mn"=>"Реюньон", "name:pl"=>"Reunion", "name:ru"=>"Реюньон", "name:sl"=>"Reunion", "name:sv"=>"Réunion", "name:th"=>"เรอูนียง", "name:uk"=>"Реюньйон", "name:zh"=>"留尼汪"
-pm "name"=>"Saint-Pierre-et-Miquelon", "name:af"=>"Saint-Pierre et Miquelon", "name:be"=>"Святы П’ер і Міквелон", "name:da"=>"Saint Pierre og Miquelon", "name:de"=>"Saint-Pierre und Miquelon", "name:en"=>"Saint Pierre and Miquelon", "name:eo"=>"Sankta-Piero kaj Mikelono", "name:es"=>"San Pedro y Miguelón", "name:fi"=>"Saint-Pierre ja Miquelon", "name:fr"=>"Saint-Pierre-et-Miquelon", "name:hr"=>"Sveti Petar i Mikelon", "name:hu"=>"Saint-Pierre és Miquelon", "name:lt"=>"Sen Pjeras ir Mikelonas", "name:lv"=>"Senpjēra un Mikelona", "name:mn"=>"Сент Пьер ба Микелон", "name:sv"=>"Saint-Pierre och Miquelon", "name:tr"=>"Saint-Pierre ve Miquelon", "name:uk"=>"Сен-П'єр і Мікелон"
-vc "name"=>"Saint Vincent and the Grenadines", "name:af"=>"Sint Vincent en die Grenadines", "name:ar"=>"سانت فنسنت وجزر غرينادين", "name:be"=>"Святы Вінцэнт і Грэнадзіны", "name:br"=>"Sant-Visant hag ar Grenadinez", "name:ca"=>"Saint Vincent i les Grenadines", "name:cs"=>"Svatý Vincent a Grenadiny", "name:cy"=>"Saint Vincent a'r Grenadines", "name:da"=>"Saint Vincent og Grenadinerne", "name:de"=>"St. Vincent und die Grenadinen", "name:el"=>"Άγιος Βικέντιος και Γρεναδίνες", "name:en"=>"Saint Vincent and the Grenadines", "name:eo"=>"Sankta Vincento kaj Grenadinoj", "name:es"=>"San Vicente y las Granadinas", "name:fa"=>"سنت وینسنت و گرنادین", "name:fi"=>"Saint Vincent ja Grenadiinit", "name:fr"=>"Saint-Vincent-et-les Grenadines", "name:fy"=>"Sint Finsint en de Grenadinen", "name:ga"=>"San Uinseann agus na Greanáidíní", "name:gd"=>"Naomh Bhionsant agus Eileanan Greanadach", "name:he"=>"סנט וינסנט והגרנדינים", "name:hr"=>"Sveti Vincent i Grenadini", "name:hu"=>"Saint Vincent és a Grenadine-szigetek", "name:id"=>"Saint Vincent dan Grenadines", "name:is"=>"Sankti Vinsent og Grenadíneyjar", "name:it"=>"Saint Vincent e Grenadine", "name:ja"=>"セントビンセント及びグレナディーン諸島", "name:lb"=>"Saint Vincent an d’Grenadinen", "name:li"=>"Saint-Vincent", "name:lt"=>"Sent Vinsentas ir Grenadinai", "name:mn"=>"Сент-Винсент ба Гренадин", "name:nl"=>"Saint Vincent en de Grenadines", "name:pl"=>"Saint Vincent i Grenadyny", "name:pt"=>"São Vicente e Granadinas", "name:ru"=>"Сент-Винсент и Гренадины", "name:se"=>"Saint Vincent ja Grenadiinnat", "name:sk"=>"Svätý Vincent a Grenadíny", "name:sl"=>"Sveti Vincencij in Grenadine", "name:sv"=>"Saint Vincent och Grenadinerna", "name:ta"=>"செயின்ட் வின்செண்டு மற்றும் கிரெனடீன்கள்", "name:th"=>"ประเทศเซนต์วินเซนต์และเกรนาดีนส์", "name:tr"=>"Saint Vincent ve Grenadinler", "name:uk"=>"Сент-Вінсент і Гренадини", "name:vi"=>"Saint Vincent và Grenadines", "name:vo"=>"Saluda-Vinsenteän e Grenadineäns", "name:zh"=>"圣文森特和格林纳丁斯"
-in "name"=>"India", "name:af"=>"Indië", "name:ar"=>"الهند", "name:be"=>"Індыя", "name:br"=>"India", "name:da"=>"Indien", "name:de"=>"Indien", "name:el"=>"Ινδία", "name:en"=>"India", "name:eo"=>"Barato", "name:fa"=>"هند", "name:fi"=>"Intia", "name:fr"=>"Inde", "name:fy"=>"Yndia", "name:ga"=>"An India", "name:gd"=>"Na h-Innseachan", "name:he"=>"הודו", "name:hi"=>"भारत", "name:hu"=>"India", "name:is"=>"Indland", "name:it"=>"India", "name:iu"=>"ᐃᓐᑎᐊ/intia", "name:ja"=>"インド", "name:lb"=>"Indien", "name:lt"=>"Indija", "name:lv"=>"Indija", "name:mn"=>"Энэтхэг", "name:pl"=>"Indie", "name:ru"=>"Индия", "name:sl"=>"Indija", "name:sv"=>"Indien", "name:th"=>"ประเทศอินเดีย", "name:tr"=>"Hindistan", "name:uk"=>"Індія", "name:vi"=>"Ấn Độ", "name:zh"=>"印度"
-tf "name"=>"Terres australes et antarctiques françaises", "name:af"=>"Franse Suidelike en Antarktiese Gebiede", "name:an"=>"Territorios Australs Franzeses", "name:ar"=>"الأراضي الجنوبية الفرنسية", "name:be"=>"Французскія Паўднёвыя тэрыторыі", "name:bg"=>"Френски южни и антарктически територии", "name:br"=>"Douaroù Aostral hag Antarktikel Frañs", "name:ca"=>"Terres Australs i Antàrtiques Franceses", "name:cs"=>"Francouzská jižní a antarktická území", "name:da"=>"Franske sydlige og Antarktiske territorier", "name:de"=>"Französische Süd- und Antarktisgebiete", "name:el"=>"Γαλλικά νότια και ανταρκτικά εδάφη", "name:en"=>"French Southern Lands", "name:eo"=>"Francaj Sudaj Teritorioj", "name:es"=>"Tierras Australes y Antárticas Francesas", "name:eu"=>"Frantziaren lurralde austral eta antartikoak", "name:fi"=>"Ranskan eteläiset ja antarktiset alueet", "name:fr"=>"Terres australes et antarctiques françaises", "name:fy"=>"Frânske Súdlike en Antarktyske Lannen", "name:gl"=>"Terras Austrais e Antárticas Francesas", "name:hr"=>"Francuski južni i antarktički teritoriji", "name:hu"=>"Francia déli és antarktiszi területek", "name:id"=>"Daratan Selatan dan Antarktika Perancis", "name:is"=>"Frönsku suðlægu landsvæðin", "name:it"=>"Terre Australi e Antartiche Francesi", "name:ja"=>"フランス領南方・南極地域", "name:ko"=>"프랑스령 남부와 남극 지역", "name:kw"=>"Tiryow Deghow hag Antarktik Frynkek", "name:lt"=>"Prancūzijos Pietų Sritys", "name:lv"=>"Francijas Dienvidjūru un Antarktikas Zemes", "name:nl"=>"Franse Zuidelijke en Antarctische Gebieden", "name:no"=>"De franske sørterritorier", "name:oc"=>"Tèrras Australas e Antarticas Francesas", "name:pl"=>"Francuskie Terytoria Południowe i Antarktyczne", "name:pt"=>"Terras Austrais e Antárticas Francesas", "name:ro"=>"Teritoriile australe şi antarctice franceze", "name:ru"=>"Французские Южные и Антарктические территории", "name:sh"=>"Francuske Južne Teritorije", "name:sk"=>"Francúzske južné a antarktické územia", "name:sl"=>"Francoske južne in antarktične dežele", "name:sr"=>"Француске јужне и антарктичке земље", "name:sv"=>"Franska sydterritorierna", "name:ta"=>"பிரெஞ்சு தென்னக நிலங்களும் அண்டாடிக் நிலமும்", "name:tr"=>"Fransız Güney ve Antarktika Toprakları", "name:uk"=>"Французькі Південні та Антарктичні території", "name:vi"=>"Vùng đất phía Nam và châu Nam Cực thuộc Pháp", "name:zh"=>"法属南部领地"
-ai "name"=>"Anguilla", "name:af"=>"Anguilla", "name:an"=>"Anguila", "name:ar"=>"أنجويلا", "name:az"=>"Angilya", "name:ba"=>"Ангилья", "name:be"=>"Ангілья", "name:bg"=>"Ангуила", "name:br"=>"Anguilla", "name:bs"=>"Angvila", "name:ca"=>"Anguilla", "name:cs"=>"Anguilla", "name:cy"=>"Anguilla", "name:da"=>"Anguilla", "name:de"=>"Anguilla", "name:dv"=>"އަންގީލާ", "name:el"=>"Ανγκουίλα", "name:en"=>"Anguilla", "name:eo"=>"Angvilo", "name:es"=>"Anguila", "name:et"=>"Anguilla", "name:eu"=>"Aingira", "name:fa"=>"آنگویلا", "name:fi"=>"Anguilla", "name:fr"=>"Anguilla", "name:ga"=>"Angaíle", "name:gl"=>"Anguila", "name:he"=>"אנגווילה", "name:hi"=>"अंगुइला", "name:hr"=>"Angvila", "name:hu"=>"Anguilla", "name:hy"=>"Անգիլիա", "name:id"=>"Anguilla", "name:io"=>"Anguila", "name:is"=>"Angvilla", "name:it"=>"Anguilla", "name:ja"=>"アンギラ", "name:jv"=>"Anguilla", "name:ka"=>"ანგილია", "name:ko"=>"앵귈라", "name:kw"=>"Angwilla", "name:lb"=>"Anguilla", "name:li"=>"Anguilla", "name:lt"=>"Angilija", "name:lv"=>"Angilja", "name:mk"=>"Ангвила", "name:mn"=>"Ангилья", "name:mr"=>"अँग्विला", "name:ms"=>"Anguilla", "name:ne"=>"एन्गुला", "name:nl"=>"Anguilla", "name:nn"=>"Anguilla", "name:no"=>"Anguilla", "name:oc"=>"Anguilla", "name:pa"=>"ਐਂਗੁਈਲਾ", "name:pl"=>"Anguilla", "name:pt"=>"Anguilla", "name:ro"=>"Anguilla", "name:ru"=>"Ангилья", "name:rw"=>"Angwiya", "name:sh"=>"Angvila", "name:sk"=>"Anguilla", "name:sl"=>"Angvila", "name:sq"=>"Anguilla", "name:sr"=>"Ангвила", "name:su"=>"Anguilla", "name:sv"=>"Anguilla", "name:sw"=>"Anguilla", "name:ta"=>"அங்கியுலா", "name:th"=>"แองกวิลลา", "name:tl"=>"Anggilya", "name:tr"=>"Anguilla", "name:ug"=>"ئانگۋىللا", "name:uk"=>"Ангілья", "name:ur"=>"اینگویلا", "name:uz"=>"Angilya", "name:vi"=>"Anguilla", "name:wo"=>"Angila", "name:yo"=>"Àngúíllà", "name:zh"=>"安圭拉"
-pn "name"=>"Pitcairn Islands", "name:ar"=>"بتكايرن", "name:be"=>"Піткерн", "name:br"=>"Inizi Pitcairn", "name:ca"=>"Illes Pitcairn", "name:cs"=>"Pitcairnovy ostrovy", "name:cy"=>"Ynysoedd Pitcairn", "name:da"=>"Pitcairn", "name:de"=>"Pitcairninseln", "name:el"=>"Νήσοι Πίτκαιρν", "name:en"=>"Pitcairn Islands", "name:eo"=>"Pitkarna Insularo", "name:es"=>"Islas Pitcairn", "name:fa"=>"پیتکرن", "name:fi"=>"Pitcairn", "name:fr"=>"Îles Pitcairn", "name:fy"=>"de Pitcairneilannen", "name:ga"=>"Oileán Pitcairn", "name:gd"=>"Eilean Pitcairn", "name:he"=>"פיטקרן", "name:hr"=>"Pitcairnovo Otočje", "name:hu"=>"Pitcairn-szigetek", "name:id"=>"Kepulauan Pitcairn", "name:is"=>"Pitcairn", "name:it"=>"Isole Pitcairn", "name:la"=>"Pitcairn Insulae", "name:lt"=>"Pitkerno salos", "name:lv"=>"Pitkērna", "name:mi"=>"Pitikeina", "name:mk"=>"Питкерн", "name:mn"=>"Питкэрн Арлууд", "name:nl"=>"Pitcairneilanden", "name:pl"=>"Wyspy Pitcairn", "name:ru"=>"Острова Питкэрн", "name:sl"=>"Pitcairnovi otoki", "name:sv"=>"Pitcairnöarna", "name:th"=>"หมู่เกาะพิตแคร์น", "name:tr"=>"Pitcairn Adaları", "name:uk"=>"Острови Піткерн", "name:vi"=>"Quần đảo Pitcairn", "name:zh"=>"皮特凯恩群岛"
-aq "name"=>"Antarctica"
-as "name"=>"American Samoa"
-aw "name"=>"Aruba"
-gu "name"=>"Guam"
-hk "name"=>"Hong Kong"
-mo "name"=>"Macao"
-pr "name"=>"Puerto Rico"
-ps "name"=>"Palestinian Territory"
-pf "name"=>"Polynésie française", "name:af"=>"Franse Polynesië", "name:an"=>"Polinesia Franzesa", "name:ar"=>"بولونيزيا الفرنسية", "name:az"=>"Fransa Polineziyası", "name:be"=>"Французская Палінезія", "name:bg"=>"Френска Полинезия", "name:br"=>"Polinezia Frañs", "name:bs"=>"Francuska Polinezija", "name:ca"=>"Polinèsia Francesa", "name:cs"=>"Francouzská Polynésie", "name:cy"=>"Polynesia Ffrengig", "name:da"=>"Fransk Polynesien", "name:de"=>"Französisch-Polynesien", "name:dv"=>"ފަރަންސޭސި ޕޮލިނޭޝިއާ", "name:el"=>"Γαλλική Πολυνησία", "name:en"=>"French Polynesia", "name:eo"=>"Franca Polinezio", "name:es"=>"Polinesia Francesa", "name:et"=>"Prantsuse Polüneesia", "name:eu"=>"Frantziar Polinesia", "name:fa"=>"پلینزی فرانسه", "name:fi"=>"Ranskan Polynesia", "name:fr"=>"Polynésie française", "name:fy"=>"Frânsk Polyneezje", "name:ga"=>"Polainéis na Fraince", "name:gd"=>"French Polynesia", "name:gl"=>"Polinesia francesa", "name:he"=>"פולינזיה הצרפתית", "name:hi"=>"फ्रेंच पोलीनेशिया", "name:hr"=>"Francuska Polinezija", "name:hu"=>"Francia Polinézia", "name:id"=>"Polinesia Perancis", "name:io"=>"Franca Polinezia", "name:is"=>"Franska Pólýnesía", "name:it"=>"Polinesia francese", "name:ja"=>"フランス領ポリネシア", "name:jv"=>"Polinesia Perancis", "name:kk"=>"Франция Полинезиясы", "name:ko"=>"프랑스령 폴리네시아", "name:kw"=>"Polynesi Frynkek", "name:la"=>"Polynesia Francica", "name:lb"=>"Franséisch-Polynesien", "name:lt"=>"Prancūzijos Polinezija", "name:lv"=>"Franču Polinēzija", "name:mi"=>"Porinīhia Wīwī", "name:mk"=>"Француска Полинезија", "name:mn"=>"Францын Полинез", "name:mr"=>"फ्रेंच पॉलिनेशिया", "name:ms"=>"Polinesia Perancis", "name:nl"=>"Frans-Polynesië", "name:nn"=>"Fransk Polynesia", "name:no"=>"Fransk Polynesia", "name:oc"=>"Polinesia Francesa", "name:os"=>"Францы Полинези", "name:pl"=>"Polinezja Francuska", "name:pt"=>"Polinésia Francesa", "name:qu"=>"Phransis Pulinisya", "name:ro"=>"Polinezia Franceză", "name:ru"=>"Французская Полинезия", "name:se"=>"Frankriikka Polynesia", "name:sh"=>"Francuska Polinezija", "name:sk"=>"Francúzska Polynézia", "name:sl"=>"Francoska Polinezija", "name:sr"=>"Француска Полинезија", "name:sv"=>"Franska Polynesien", "name:sw"=>"Polynesia ya Kifaransa", "name:ta"=>"பிரெஞ்சு பொலினீசியா", "name:th"=>"เฟรนช์โปลินีเซีย", "name:tr"=>"Fransız Polinezyası", "name:ty"=>"Pōrīnetia Farāni", "name:ug"=>"Fransiyige Qarashliq Polinéziye", "name:uk"=>"Французька Полінезія", "name:vi"=>"Polynésie thuộc Pháp", "name:wo"=>"Polineesi gu Faraas", "name:zh"=>"法属波利尼西亚"
-nr "name"=>"Naoero", "name:am"=>"ናውሩ", "name:ar"=>"ناورو", "name:be"=>"Наўру", "name:bg"=>"Науру", "name:bn"=>"নাউরু", "name:br"=>"Nauru", "name:cs"=>"Nauru", "name:da"=>"Nauru", "name:de"=>"Nauru", "name:dv"=>"ނައުރޫ", "name:el"=>"Ναουρού", "name:en"=>"Nauru", "name:eo"=>"Nauro", "name:fa"=>"نائورو", "name:fi"=>"Nauru", "name:fr"=>"Nauru", "name:fy"=>"Naurû", "name:ga"=>"Nárú", "name:he"=>"נאורו", "name:hi"=>"नाउरु", "name:hr"=>"Nauru", "name:hu"=>"Nauru", "name:is"=>"Nárú", "name:ja"=>"ナウル", "name:li"=>"Naoeroe", "name:lv"=>"Nauru", "name:ml"=>"നൗറു", "name:mn"=>"Науру", "name:mt"=>"Nawru", "name:pl"=>"Nauru", "name:ru"=>"Науру", "name:se"=>"Nauru", "name:sk"=>"Nauru", "name:sq"=>"Naurua", "name:sv"=>"Nauru", "name:ta"=>"நவூரு", "name:th"=>"ประเทศนาอูรู", "name:uk"=>"Науру", "name:ur"=>"ناورو", "name:vo"=>"Naureän", "name:zh"=>"諾魯"
-nf "name"=>"Norfolk Island", "name:af"=>"Norfolkeiland", "name:ar"=>"جزيرة نورفولك", "name:be"=>"Норфалк", "name:br"=>"Enez Norfolk", "name:ca"=>"Illa Norfolk", "name:cy"=>"Ynys Norfolk", "name:da"=>"Norfolk-øen", "name:de"=>"Norfolkinsel", "name:en"=>"Norfolk Island", "name:eo"=>"Norfolkinsulo", "name:es"=>"Isla Norfolk", "name:et"=>"Norfolki saar", "name:fi"=>"Norfolkinsaari", "name:fr"=>"Île Norfolk", "name:fy"=>"Norfolk", "name:ga"=>"Oileán Norfolk", "name:he"=>"האי נורפוק", "name:hr"=>"Otok Norfolk", "name:hu"=>"Norfolk-sziget", "name:id"=>"Pulau Norfolk", "name:is"=>"Norfolkeyja", "name:it"=>"Isola Norfolk", "name:la"=>"Insula Norfolcia", "name:lt"=>"Norfolko sala", "name:lv"=>"Norfolkas sala", "name:mn"=>"Норфолк Арал", "name:nl"=>"Norfolk", "name:pl"=>"Wyspa Norfolk", "name:ru"=>"Остров Норфолк", "name:sv"=>"Norfolkön", "name:tr"=>"Norfolk Adası", "name:uk"=>"Острів Норфолк", "name:vi"=>"Đảo Norfolk", "name:zh"=>"诺福克岛"
-xk "name"=>"Kosova / Kosovo", "name:af"=>"Kosovo", "name:am"=>"ኮሶቮ", "name:an"=>"Kosovo", "name:ar"=>"كوسوفو", "name:ay"=>"Kusuwu", "name:az"=>"Kosovo", "name:ba"=>"Косово", "name:be"=>"Косава", "name:bg"=>"Косово", "name:bn"=>"কসোভো", "name:bo"=>"ཁོ་སོ་ཝོ།", "name:br"=>"Kosovo", "name:bs"=>"Kosovo", "name:ca"=>"Kosovo", "name:ce"=>"Косово", "name:cs"=>"Kosovo", "name:cv"=>"Косово", "name:cy"=>"Cosofo", "name:da"=>"Kosovo", "name:de"=>"Kosovo", "name:el"=>"Κοσσυφοπέδιο", "name:en"=>"Kosovo", "name:eo"=>"Kosovo", "name:es"=>"Kosovo", "name:et"=>"Kosovo", "name:eu"=>"Kosovo", "name:fa"=>"کوزوو", "name:fi"=>"Kosovo", "name:fo"=>"Kosovo", "name:fr"=>"Kosovo", "name:fy"=>"Kosovo", "name:ga"=>"An Chosaiv", "name:gd"=>"Cosobho", "name:gl"=>"Kosovo", "name:gn"=>"Kosovo", "name:gv"=>"Kosovo", "name:he"=>"קוסובו", "name:hi"=>"कोसोवो गणराज्य", "name:hr"=>"Kosovo", "name:hu"=>"Koszovó", "name:hy"=>"Կոսովոն", "name:ia"=>"Kosovo", "name:id"=>"Kosovo", "name:ie"=>"Kosovo", "name:ig"=>"Kosovo", "name:io"=>"Kosovo", "name:is"=>"Kosóvó", "name:it"=>"Kosovo", "name:ja"=>"コソボ", "name:jv"=>"Kosovo", "name:ka"=>"კოსოვო", "name:kk"=>"Косово", "name:kl"=>"Kosovo", "name:kn"=>"ಕೊಸೊವೊ", "name:ko"=>"코소보", "name:ku"=>"Kosova", "name:kv"=>"Косово", "name:kw"=>"Kosova", "name:ky"=>"Косово", "name:la"=>"Kosovia", "name:lb"=>"Kosovo", "name:li"=>"Kosovo", "name:lo"=>"ປະເທດໂກໂຊໂວ", "name:lt"=>"Kosovas", "name:lv"=>"Kosova", "name:mk"=>"Косово", "name:ml"=>"കൊസോവോ", "name:mn"=>"Косово", "name:mr"=>"कोसोव्हो", "name:ms"=>"Kosovo", "name:mt"=>"Kosovo", "name:my"=>"ကိုဆိုဗို", "name:na"=>"Kosovo", "name:nl"=>"Kosovo", "name:nn"=>"Kosovo", "name:no"=>"Kosovo", "name:ny"=>"Kosovo", "name:oc"=>"Kosova", "name:os"=>"Косово", "name:pa"=>"ਕੋਸੋਵੋ ਗਣਰਾਜ", "name:pl"=>"Kosowo", "name:pt"=>"Kosovo", "name:qu"=>"Kusuwu", "name:rm"=>"Cosovo", "name:ro"=>"Kosovo", "name:ru"=>"Косово", "name:rw"=>"Kosovo", "name:sc"=>"Kòssovu", "name:sh"=>"Kosovo", "name:si"=>"කොසෝවො", "name:sk"=>"Kosovo", "name:sl"=>"Kosovo", "name:sm"=>"Kosovo", "name:sn"=>"Kosovo", "name:so"=>"Kosofo", "name:sq"=>"Kosovo", "name:sr"=>"Косово", "name:su"=>"Kosovo", "name:sv"=>"Kosovo", "name:sw"=>"Kosovo", "name:ta"=>"கொசோவோ", "name:te"=>"కొసావో", "name:th"=>"ประเทศคอซอวอ", "name:tl"=>"Kosovo", "name:tr"=>"Kosova", "name:ts"=>"Kosovo", "name:tt"=>"Косово Җөмһүрияте", "name:uk"=>"Косово", "name:ur"=>"کوسووہ", "name:uz"=>"Kosovo", "name:vi"=>"Kosovo", "name:vo"=>"Kosovän", "name:yo"=>"Kósófò", "name:zh"=>"科索沃"
-ec "name"=>"Ecuador", "name:am"=>"ኤኳዶር", "name:an"=>"Ecuador", "name:ar"=>"الإكوادور", "name:ay"=>"Ikwadur", "name:az"=>"Ekvador", "name:ba"=>"Эквадор", "name:be"=>"Эквадор", "name:bg"=>"Еквадор", "name:bn"=>"ইকুয়েডর", "name:bo"=>"ཨེ་ཁོའོ་ཌོར།", "name:br"=>"Ecuador", "name:bs"=>"Ekvador", "name:ca"=>"Equador", "name:ce"=>"Эквадор", "name:cs"=>"Ekvádor", "name:cv"=>"Эквадор", "name:cy"=>"Ecuador", "name:da"=>"Ecuador", "name:de"=>"Ecuador", "name:dv"=>"އިކުއެޑޯރު", "name:ee"=>"Ecuador", "name:el"=>"Ισημερινός (χώρα)", "name:en"=>"Ecuador", "name:eo"=>"Ekvadoro", "name:es"=>"Ecuador", "name:et"=>"Ecuador", "name:eu"=>"Ekuador", "name:fa"=>"اکوادور", "name:fi"=>"Ecuador", "name:fo"=>"Ekvador", "name:fr"=>"Équateur", "name:fy"=>"Ekwador", "name:ga"=>"Eacuadór", "name:gd"=>"Eacuador", "name:gl"=>"Ecuador", "name:gn"=>"Ekuator", "name:gu"=>"ઈક્વેડોર", "name:gv"=>"Ecuador", "name:he"=>"אקוודור", "name:hi"=>"ईक्वाडोर", "name:hr"=>"Ekvador", "name:ht"=>"Ekwatè", "name:hu"=>"Ecuador", "name:hy"=>"Էկվադոր", "name:ia"=>"Ecuador", "name:id"=>"Ekuador", "name:ie"=>"Ecuador", "name:io"=>"Equador", "name:is"=>"Ekvador", "name:it"=>"Ecuador", "name:ja"=>"エクアドル", "name:jv"=>"Ekuador", "name:ka"=>"ეკვადორი", "name:ki"=>"Ecuador", "name:kk"=>"Эквадор", "name:kl"=>"Ecuador", "name:kn"=>"ಎಕ್ವಡಾರ್", "name:ko"=>"에콰도르", "name:ku"=>"Ekuador", "name:kw"=>"Pow Ekwadorel", "name:la"=>"Aequatoria", "name:lb"=>"Ecuador", "name:li"=>"Ecuador", "name:ln"=>"Republíki ya Ekwatéli", "name:lt"=>"Ekvadoras", "name:lv"=>"Ekvadora", "name:mi"=>"Ekuatoa", "name:mk"=>"Еквадор", "name:ml"=>"ഇക്വഡോർ", "name:mn"=>"Эквадор", "name:mr"=>"इक्वेडोर", "name:ms"=>"Ecuador", "name:mt"=>"Ekwador", "name:my"=>"အီကွေဒေါနိုင်ငံ", "name:na"=>"Ekwador", "name:ne"=>"इक्वेडर", "name:nl"=>"Ecuador", "name:nn"=>"Ecuador", "name:no"=>"Ecuador", "name:nv"=>"Kéyah Nahasdzáán Ałníiʼgi Siʼánígíí", "name:oc"=>"Eqüator", "name:or"=>"ଏକ୍ଵାଡୋର", "name:os"=>"Эквадор", "name:pa"=>"ਏਕੁਆਦੋਰ", "name:pl"=>"Ekwador", "name:ps"=>"اېکوادور", "name:pt"=>"Equador", "name:qu"=>"Ikwadur", "name:rm"=>"Ecuador", "name:ro"=>"Ecuador", "name:ru"=>"Эквадор", "name:rw"=>"Ekwadoro", "name:sa"=>"एक्वाडोर", "name:se"=>"Ecuador", "name:sh"=>"Ekvador", "name:sk"=>"Ekvádor", "name:sl"=>"Ekvador", "name:so"=>"Ikwadoor", "name:sq"=>"Ekuadori", "name:sr"=>"Еквадор", "name:su"=>"Ékuador", "name:sv"=>"Ecuador", "name:sw"=>"Ekuador", "name:ta"=>"எக்குவடோர்", "name:te"=>"ఈక్వడార్", "name:tg"=>"Экуадор", "name:th"=>"ประเทศเอกวาดอร์", "name:tl"=>"Ecuador", "name:tr"=>"Ekvador", "name:tt"=>"Эквадор", "name:ug"=>"ئېكۋادور", "name:uk"=>"Еквадор", "name:ur"=>"ایکواڈور", "name:uz"=>"Ekvador", "name:vi"=>"Ecuador", "name:vo"=>"Lekvadorän", "name:wo"=>"Ekwadoor", "name:yi"=>"עקוואדאר", "name:yo"=>"Ẹ̀kùàdọ̀r", "name:zh"=>"厄瓜多尔"
-kg "name"=>"Кыргызстан", "name:ab"=>"Ҟырҕызсҭан", "name:af"=>"Kirgisië", "name:am"=>"ኪርጊዝስታን", "name:an"=>"Kirguizistán", "name:ar"=>"قرغيزستان", "name:az"=>"Qırğızıstan", "name:ba"=>"Ҡырғыҙстан", "name:be"=>"Кыргызстан", "name:bg"=>"Киргизстан", "name:bn"=>"কিরগিজিস্তান", "name:bo"=>"ཀེ་རེ་གེཛུ་སུཏེན།", "name:br"=>"Kirgizstan", "name:bs"=>"Kirgistan", "name:ca"=>"Kirguizistan", "name:ce"=>"Киргизи", "name:cs"=>"Kyrgyzstán", "name:cv"=>"Киргизи", "name:cy"=>"Kyrgyzstan", "name:da"=>"Kirgisistan", "name:de"=>"Kirgisistan", "name:dv"=>"ކިރިގިސްތާން", "name:ee"=>"Kyrgyzstan", "name:el"=>"Κιργιζία", "name:en"=>"Kyrgyzstan", "name:eo"=>"Kirgizio", "name:es"=>"Kirguistán", "name:et"=>"Kõrgõzstan", "name:eu"=>"Kirgizistan", "name:fa"=>"قرقیزستان", "name:fi"=>"Kirgisia", "name:fr"=>"Kirghizistan", "name:fy"=>"Kirgyzje", "name:ga"=>"An Chirgeastáin", "name:gd"=>"Cìorgastan", "name:gl"=>"Kirguizistán", "name:gu"=>"કિર્ગિસ્તાન", "name:gv"=>"Yn Chyrgistaan", "name:he"=>"קירגיזסטן", "name:hi"=>"किर्गिज़स्तान", "name:hr"=>"Kirgistan", "name:ht"=>"Kirgistan", "name:hu"=>"Kirgizisztán", "name:hy"=>"Ղրղզստան", "name:ia"=>"Kyrgyzistan", "name:id"=>"Kirgizstan", "name:ie"=>"Kirgizistan", "name:io"=>"Kirgizistan", "name:is"=>"Kirgisistan", "name:it"=>"Kirghizistan", "name:ja"=>"キルギス", "name:jv"=>"Kirgizstan", "name:ka"=>"ყირგიზეთი", "name:kk"=>"Қырғызстан", "name:km"=>"កៀហ៊្សីស៊ីស្ថាន", "name:kn"=>"ಕಿರ್ಗಿಸ್ಥಾನ್", "name:ko"=>"키르기스스탄", "name:ks"=>"کرغیزستان", "name:ku"=>"Qirgizistan", "name:kv"=>"Кыргызстан", "name:kw"=>"Pow Kyrgys", "name:ky"=>"Кыргызстан", "name:la"=>"Chirgisia", "name:lb"=>"Kirgisistan", "name:li"=>"Kirgizië", "name:ln"=>"Kirghizistáni", "name:lt"=>"Kirgizija", "name:lv"=>"Kirgizstāna", "name:mk"=>"Киргистан", "name:ml"=>"കിർഗ്ഗിസ്ഥാൻ", "name:mn"=>"Кыргызстан", "name:mr"=>"किर्गिझस्तान", "name:ms"=>"Kyrgyzstan", "name:my"=>"ကာဂျစ္စတန်နိုင်ငံ", "name:na"=>"Kirgitan", "name:nl"=>"Kirgizië", "name:nn"=>"Kirgisistan", "name:no"=>"Kirgisistan", "name:nv"=>"Kíígiz Bikéyah", "name:oc"=>"Quirguizstan", "name:or"=>"କିରଗିଜସ୍ତାନ", "name:os"=>"Хъиргъиз", "name:pa"=>"ਕਿਰਗਿਜ਼ਸਤਾਨ", "name:pl"=>"Kirgistan", "name:ps"=>"قرغزستان", "name:pt"=>"Quirguistão", "name:qu"=>"Kirkisuyu", "name:ro"=>"Kârgâzstan", "name:ru"=>"Киргизия", "name:rw"=>"Kirigizisitani", "name:sa"=>"किरगिस्थान", "name:sd"=>"ڪِرگزِستانُ", "name:se"=>"Kirgisistan", "name:sh"=>"Kirgistan", "name:sk"=>"Kirgizsko", "name:sl"=>"Kirgizistan", "name:so"=>"Qargistan", "name:sq"=>"Kirgistani", "name:sr"=>"Киргистан", "name:ss"=>"IKhirigi", "name:su"=>"Kirgistan", "name:sv"=>"Kirgizistan", "name:sw"=>"Kirgizia", "name:ta"=>"கிர்கிசுத்தான்", "name:te"=>"కిర్గిజిస్తాన్", "name:tg"=>"Қирғизистон", "name:th"=>"ประเทศคีร์กีซสถาน", "name:tk"=>"Gyrgyzystan", "name:tl"=>"Kirgistan", "name:tr"=>"Kırgızistan", "name:tt"=>"Кыргызстан", "name:ug"=>"قىرغىزىستان", "name:uk"=>"Киргизстан", "name:ur"=>"کرغیزستان", "name:uz"=>"Qirgʻiziston", "name:vi"=>"Kyrgyzstan", "name:vo"=>"Kirgistän", "name:wo"=>"Kirgistaan", "name:yi"=>"קירגיזסטאן", "name:yo"=>"Kirgistani", "name:zh"=>"吉尔吉斯斯坦"
-kz "name"=>"Қазақстан", "name:ab"=>"Ҟазаҟсҭан", "name:af"=>"Kasakstan", "name:am"=>"ካዛክስታን", "name:an"=>"Cazaquistán", "name:ar"=>"كازاخستان", "name:av"=>"Хъазахъистан", "name:az"=>"Qazaxıstan", "name:ba"=>"Ҡаҙағстан", "name:be"=>"Казахстан", "name:bg"=>"Казахстан", "name:bi"=>"Kazakhstan", "name:bn"=>"কাজাখস্তান", "name:bo"=>"ཀཛ་ཀིསུ་གཏན།", "name:br"=>"Kazakstan", "name:bs"=>"Kazahstan", "name:ca"=>"Kazakhstan", "name:ce"=>"Кхазакхстан", "name:cs"=>"Kazachstán", "name:cu"=>"Каꙁахстанъ", "name:cv"=>"Казахстан", "name:cy"=>"Kazakstan", "name:da"=>"Kasakhstan", "name:de"=>"Kasachstan", "name:dv"=>"ކަޒަކިސްތާން", "name:ee"=>"Kazakhstan", "name:el"=>"Καζακστάν", "name:en"=>"Kazakhstan", "name:eo"=>"Kazaĥio", "name:es"=>"Kazajistán", "name:et"=>"Kasahstan", "name:eu"=>"Kazakhstan", "name:fa"=>"قزاقستان", "name:fi"=>"Kazakstan", "name:fo"=>"Kasakstan", "name:fr"=>"Kazakhstan", "name:fy"=>"Kazakstan", "name:ga"=>"An Chasacstáin", "name:gd"=>"Casachstàn", "name:gl"=>"Casaquistán", "name:gn"=>"Kazajistán", "name:gu"=>"કઝાકિસ્તાન", "name:gv"=>"Yn Chassaghstaan", "name:he"=>"קזחסטן", "name:hi"=>"कज़ाख़िस्तान", "name:hr"=>"Kazahstan", "name:ht"=>"Kazakstan", "name:hu"=>"Kazahsztán", "name:hy"=>"Ղազախստան", "name:ia"=>"Kazakhstan", "name:id"=>"Kazakhstan", "name:ie"=>"Kazakstan", "name:io"=>"Kazakstan", "name:is"=>"Kasakstan", "name:it"=>"Kazakistan", "name:ja"=>"カザフスタン", "name:jv"=>"Kazakhstan", "name:ka"=>"ყაზახეთი", "name:kg"=>"Kazakhstan", "name:kk"=>"Қазақстан", "name:kl"=>"Kasakhstani", "name:km"=>"កាសាក់ស្ថាន", "name:kn"=>"ಕಜಾಕಸ್ಥಾನ್", "name:ko"=>"카자흐스탄", "name:ku"=>"Qazaxistan", "name:kv"=>"Казахстан", "name:kw"=>"Pow Kazagh", "name:ky"=>"Казакстан Республикасы", "name:la"=>"Kazachstania", "name:lb"=>"Kasachstan", "name:li"=>"Kazachstan", "name:ln"=>"Kazakstáni", "name:lt"=>"Kazachstanas", "name:lv"=>"Kazahstāna", "name:mg"=>"Kazakstàna", "name:mi"=>"Katatānga", "name:mk"=>"Казахстан", "name:ml"=>"ഖസാഖ്സ്ഥാൻ", "name:mn"=>"Казахстан", "name:mr"=>"कझाकस्तान", "name:ms"=>"Kazakhstan", "name:mt"=>"Każakistan", "name:my"=>"ကာဇက်စတန်နိုင်ငံ", "name:na"=>"Kadaketan", "name:nl"=>"Kazachstan", "name:nn"=>"Kasakhstan", "name:no"=>"Kasakhstan", "name:nv"=>"Kʼazah Bikéyah", "name:oc"=>"Cazacstan", "name:or"=>"କାଜାଖସ୍ତାନ", "name:os"=>"Хъазахстан", "name:pa"=>"ਕਜਾਖਸਤਾਨ", "name:pl"=>"Kazachstan", "name:ps"=>"قزاقستان", "name:pt"=>"Cazaquistão", "name:qu"=>"Qasaqsuyu", "name:rm"=>"Kasachstan", "name:ro"=>"Kazahstan", "name:ru"=>"Казахстан", "name:rw"=>"Kazakisitani", "name:sa"=>"कजाकस्थान", "name:se"=>"Kazakstan", "name:sh"=>"Kazahstan", "name:si"=>"කසක්ස්තානය", "name:sk"=>"Kazachstan", "name:sl"=>"Kazahstan", "name:so"=>"Kasakhstan", "name:sq"=>"Kazakistani", "name:sr"=>"Казахстан", "name:ss"=>"IKhazakhi", "name:su"=>"Kazastan", "name:sv"=>"Kazakhstan", "name:sw"=>"Kazakhstan", "name:ta"=>"கசக்ஸ்தான்", "name:te"=>"కజకస్తాన్", "name:tg"=>"Қазоқистон", "name:th"=>"ประเทศคาซัคสถาน", "name:tk"=>"Gazagystan", "name:tl"=>"Kazakhstan", "name:tr"=>"Kazakistan", "name:tt"=>"Казакъстан", "name:ug"=>"قازاقىستان", "name:uk"=>"Казахстан", "name:ur"=>"قازقستان", "name:uz"=>"Qozogʻiston", "name:vi"=>"Kazakhstan", "name:vo"=>"Kazakistän", "name:wo"=>"Kasakistaan", "name:yi"=>"קאזאכסטאן", "name:yo"=>"Kàsàkstán", "name:za"=>"Hahsazgwswhdanj", "name:zh"=>"哈萨克斯坦/哈薩克"
-lc "name"=>"Saint Lucia", "name:af"=>"Sint Lucia", "name:ar"=>"سانت لوسيا", "name:be"=>"Святая Лусія", "name:br"=>"Saint Lucia", "name:cs"=>"Svatá Lucie", "name:da"=>"Saint Lucia", "name:de"=>"St. Lucia", "name:el"=>"Αγία Λουκία", "name:en"=>"Saint Lucia", "name:eo"=>"Sankta Lucio", "name:es"=>"Santa Lucía", "name:fa"=>"سنت لوسیا", "name:fi"=>"Saint Lucia", "name:fr"=>"Sainte-Lucie", "name:fy"=>"Sint Lusia", "name:ga"=>"San Lucia", "name:gd"=>"Naomh Lùisia", "name:he"=>"סנט לוסיה", "name:hr"=>"Sveta Lucija", "name:hu"=>"Saint Lucia", "name:is"=>"Sankti Lúsía", "name:it"=>"Santa Lucia", "name:ja"=>"セントルシア", "name:la"=>"Sancta Lucia", "name:li"=>"Santa Lucia", "name:lt"=>"Sent Lusija", "name:lv"=>"Sentlūsija", "name:mn"=>"Сент Люсиа", "name:nl"=>"Saint Lucia", "name:pl"=>"Saint Lucia", "name:pt"=>"Santa Lúcia", "name:ru"=>"Сент-Люсия", "name:se"=>"Saint Lucia", "name:sk"=>"Svätá Lucia", "name:sl"=>"Sveta Lucija", "name:sv"=>"Saint Lucia", "name:ta"=>"செயிண்ட் லூசியா", "name:th"=>"ประเทศเซนต์ลูเซีย", "name:uk"=>"Сент-Люсія", "name:vo"=>"Sanlusiyän", "name:zh"=>"圣卢西亚岛"
-ht "name"=>"Ayiti", "name:af"=>"Haïti", "name:am"=>"ሃይቲ", "name:an"=>"Haití", "name:ar"=>"هايتي", "name:ay"=>"Ayti", "name:az"=>"Haiti Respublikası", "name:be"=>"Гаіці", "name:bg"=>"Хаити", "name:bm"=>"Ayiti", "name:bn"=>"হাইতি", "name:bo"=>"ཧའི་ཏི།", "name:br"=>"Republik Haiti", "name:bs"=>"Haiti", "name:ca"=>"Haití", "name:ce"=>"Гаити Пачхьалкх", "name:co"=>"Haiti", "name:cs"=>"Haiti", "name:cv"=>"Гаити", "name:cy"=>"Haiti", "name:da"=>"Haiti", "name:de"=>"Haiti", "name:dv"=>"ހެއިޓީ", "name:ee"=>"Haiti", "name:el"=>"Αϊτή", "name:en"=>"Haiti", "name:eo"=>"Haitio", "name:es"=>"Haití", "name:et"=>"Haiti", "name:eu"=>"Haiti", "name:fa"=>"هائیتی", "name:fi"=>"Haiti", "name:fo"=>"Haiti", "name:fr"=>"Haïti", "name:fy"=>"Haïty", "name:ga"=>"Háítí", "name:gd"=>"Haiti", "name:gl"=>"Haití - Haïti", "name:gu"=>"હૈતી", "name:gv"=>"Haiti", "name:he"=>"האיטי", "name:hi"=>"हैती", "name:hr"=>"Haiti", "name:ht"=>"Ayiti", "name:hu"=>"Haiti", "name:hy"=>"Հաիթի", "name:ia"=>"Haiti", "name:id"=>"Haiti", "name:io"=>"Haiti", "name:is"=>"Haítí", "name:it"=>"Haiti", "name:ja"=>"ハイチ", "name:jv"=>"Haiti", "name:ka"=>"ჰაიტი", "name:kg"=>"Ayiti", "name:ki"=>"Haiti", "name:kk"=>"Гаити", "name:ko"=>"아이티", "name:ku"=>"Haîtî", "name:kw"=>"Hayti", "name:la"=>"Haitia", "name:lb"=>"Haiti", "name:li"=>"Haïti", "name:ln"=>"Ayiti", "name:lt"=>"Haitis", "name:lv"=>"Haiti", "name:mg"=>"Haiti", "name:mk"=>"Хаити", "name:ml"=>"ഹെയ്റ്റി", "name:mn"=>"Гайти", "name:mr"=>"हैती", "name:ms"=>"Haiti", "name:mt"=>"Ħaiti", "name:my"=>"ဟေတီနိုင်ငံ", "name:na"=>"Aiti", "name:ne"=>"हाइटी", "name:nl"=>"Haïti", "name:nn"=>"Haiti", "name:no"=>"Haiti", "name:nv"=>"Héítii", "name:oc"=>"Haití (estat)", "name:or"=>"ହିଟି", "name:os"=>"Гаити", "name:pa"=>"ਹੈਤੀ", "name:pl"=>"Haiti", "name:ps"=>"هایتي", "name:pt"=>"Haiti", "name:qu"=>"Ayti (mama llaqta)", "name:ro"=>"Haiti", "name:ru"=>"Гаити", "name:rw"=>"Hayiti", "name:se"=>"Haiti", "name:sh"=>"Haiti", "name:si"=>"හෙයිටි", "name:sk"=>"Haiti", "name:sl"=>"Haiti", "name:so"=>"Haiti", "name:sq"=>"Haitia", "name:sr"=>"Хаити", "name:ss"=>"IHayithi", "name:su"=>"Haiti", "name:sv"=>"Haiti", "name:sw"=>"Haiti", "name:ta"=>"எயிட்டி", "name:th"=>"ประเทศเฮติ", "name:tl"=>"Hayti", "name:tr"=>"Haiti", "name:tt"=>"Гаити", "name:ug"=>"ھايتى", "name:uk"=>"Гаїті", "name:ur"=>"ہیٹی", "name:uz"=>"Gaiti", "name:vi"=>"Haiti", "name:vo"=>"Haitiyän", "name:wa"=>"Ayiti", "name:wo"=>"Ayiti", "name:yi"=>"האיטי", "name:yo"=>"Hàítì", "name:zh"=>"海地"
-af "name"=>"افغانستان", "name:af"=>"Afghanistan", "name:ak"=>"Afganistan", "name:am"=>"አፍጋኒስታን", "name:an"=>"Afganistán", "name:ar"=>"أفغانستان", "name:as"=>"আফগানিস্তান", "name:az"=>"Əfqanıstan", "name:ba"=>"Афғанстан", "name:be"=>"Афганістан", "name:bg"=>"Афганистан", "name:bh"=>"अफ़ग़ानिस्तान", "name:bm"=>"Afiganistaŋ", "name:bn"=>"আফগানিস্তান", "name:bo"=>"ཨ་ཧྥུའུ་རྒན་སི་ཐན།", "name:br"=>"Afghanistan", "name:bs"=>"Afganistan", "name:ca"=>"Afganistan", "name:ce"=>"АфгIанистан", "name:ch"=>"Afghanistan", "name:co"=>"Afghanistan", "name:cs"=>"Afghánistán", "name:cv"=>"Афганистан", "name:cy"=>"Affganistan", "name:da"=>"Afghanistan", "name:de"=>"Afghanistan", "name:dv"=>"އަފްޣާނިސްތާން", "name:dz"=>"ཨཕ་ག་ནིསི་ཏཱན་", "name:ee"=>"Afghanistan nutome", "name:el"=>"Αφγανιστάν", "name:en"=>"Afghanistan", "name:eo"=>"Afganio", "name:es"=>"Afganistán", "name:et"=>"Afganistan", "name:eu"=>"Afganistan", "name:fa"=>"افغانستان", "name:ff"=>"Afganistaan", "name:fi"=>"Afganistan", "name:fo"=>"Afghanistan", "name:fr"=>"Afghanistan", "name:fy"=>"Afganistan", "name:ga"=>"An Afganastáin", "name:gd"=>"Afganastan", "name:gl"=>"Afganistán - افغانستان", "name:gn"=>"Ahyganitã", "name:gu"=>"અફઘાનિસ્તાન", "name:gv"=>"Yn Afghanistaan", "name:ha"=>"Afghanistan", "name:he"=>"אפגניסטן", "name:hi"=>"अफ़्गानिस्तान", "name:hr"=>"Afganistan", "name:ht"=>"Afganistan", "name:hu"=>"Afganisztán", "name:hy"=>"Աֆղանստան", "name:ia"=>"Afghanistan", "name:id"=>"Afganistan", "name:ie"=>"Afghanistan", "name:io"=>"Afganistan", "name:is"=>"Afganistan", "name:it"=>"Afghanistan", "name:iu"=>"ᐊᑉᒐᓂᔅᑕᓐ", "name:ja"=>"アフガニスタン", "name:jv"=>"Afganistan", "name:ka"=>"ავღანეთი", "name:kg"=>"Afghanistan", "name:ki"=>"Afghanistan", "name:kk"=>"Ауғанстан", "name:kl"=>"Afghanistan", "name:km"=>"សាធារណរដ្ឋឥស្លាមអាហ្វហ្កានីស្ថាន", "name:kn"=>"ಅಫ್ಘಾನಿಸ್ತಾನ", "name:ko"=>"아프가니스탄", "name:ks"=>"اَفغانَستان", "name:ku"=>"Afxanistan", "name:kv"=>"Афганистан", "name:kw"=>"Afghanistan", "name:ky"=>"Ооганстан", "name:la"=>"Afgania", "name:lb"=>"Afghanistan", "name:lg"=>"Afaganisitani", "name:li"=>"Afghanistan", "name:ln"=>"Afganistáni", "name:lo"=>"ອັບການິສະຖານ", "name:lt"=>"Afganistanas", "name:lv"=>"Afganistāna", "name:mg"=>"Afganistana", "name:mi"=>"Āwhekenetāna", "name:mk"=>"Авганистан", "name:ml"=>"അഫ്ഗാനിസ്താൻ", "name:mn"=>"Афганистан", "name:mo"=>"Афганистан", "name:mr"=>"अफगाणिस्तान", "name:ms"=>"Afghanistan", "name:mt"=>"Afganistan", "name:my"=>"အာဖဂန်နစ္စတန်နိုင်ငံ", "name:na"=>"Apeganitan", "name:ne"=>"अफगानिस्तान", "name:nl"=>"Afghanistan", "name:nn"=>"Afghanistan", "name:no"=>"Afghanistan", "name:oc"=>"Afganistan", "name:om"=>"Afgaanistaan", "name:or"=>"ଆଫଗାନିସ୍ତାନ", "name:os"=>"Афгъанистан", "name:pa"=>"ਅਫ਼ਗ਼ਾਨਿਸਤਾਨ", "name:pi"=>"अफगानस्थान", "name:pl"=>"Afganistan", "name:ps"=>"افغانستان", "name:pt"=>"Afeganistão", "name:qu"=>"Afgansuyu", "name:rm"=>"Afganistan", "name:rn"=>"Afuganisitani", "name:ro"=>"Afganistan", "name:ru"=>"Афганистан", "name:rw"=>"Afuganisitani", "name:sa"=>"अफगानस्थान", "name:sc"=>"Afganistàn", "name:sd"=>"افغانستان", "name:se"=>"Afganistána", "name:sg"=>"Faganïta, Afganïstäan", "name:sh"=>"Afganistan", "name:si"=>"ඇෆ්ගනිස්ථානය", "name:sk"=>"Afganistan", "name:sl"=>"Afganistan", "name:sm"=>"Afakanisitana", "name:sn"=>"Afghanistan", "name:so"=>"Afgaanistan", "name:sq"=>"Afganistani", "name:sr"=>"Авганистан", "name:ss"=>"I-Afugani", "name:su"=>"Apganistan", "name:sv"=>"Afghanistan", "name:sw"=>"Afghanistan", "name:ta"=>"ஆப்கானித்தான்", "name:te"=>"ఆఫ్ఘనిస్తాన్", "name:tg"=>"Афғонистон", "name:th"=>"ประเทศอัฟกานิสถาน", "name:ti"=>"አፍጋኒስታን", "name:tk"=>"Owganystan", "name:tl"=>"Apganistan", "name:to"=>"ʻAfukanisitani", "name:tr"=>"Afganistan", "name:tt"=>"Әфганстан", "name:ug"=>"ئافغانىستان", "name:uk"=>"Афганістан", "name:ur"=>"افغانستان", "name:uz"=>"Afgʻoniston", "name:vi"=>"Afghanistan", "name:vo"=>"Lafganistän", "name:wo"=>"Afganistaan", "name:yi"=>"אפגאניסטאן", "name:yo"=>"Afghanístàn", "name:za"=>"Afghanistan", "name:zh"=>"阿富汗", "name:zu"=>"I-Afganistani"
-es "name"=>"España", "name:af"=>"Spanje", "name:am"=>"እስፓንያ", "name:an"=>"Espanya", "name:ar"=>"إسبانيا", "name:ay"=>"Ispaña", "name:az"=>"İspaniya", "name:ba"=>"Испания", "name:be"=>"Іспанія", "name:bg"=>"Испания", "name:bi"=>"Spain", "name:bn"=>"স্পেন", "name:bo"=>"ཞི་པན་ཡ།", "name:br"=>"Spagn", "name:bs"=>"Španija", "name:ca"=>"Espanya", "name:ce"=>"Испани", "name:ch"=>"España", "name:co"=>"Spagna", "name:cs"=>"Španělsko", "name:cu"=>"Їспанїꙗ", "name:cv"=>"Испани", "name:cy"=>"Sbaen", "name:da"=>"Spanien", "name:de"=>"Spanien", "name:dv"=>"އިސްޕެއިން", "name:dz"=>"སིཔཱེན་", "name:ee"=>"Spain", "name:el"=>"Ισπανία", "name:en"=>"Spain", "name:eo"=>"Hispanio", "name:es"=>"España", "name:et"=>"Hispaania", "name:eu"=>"Espainia", "name:fa"=>"اسپانیا", "name:fi"=>"Espanja", "name:fo"=>"Spania", "name:fr"=>"Espagne", "name:fy"=>"Spanje", "name:ga"=>"An Spáinn", "name:gd"=>"An Spàinn", "name:gl"=>"España", "name:gn"=>"España", "name:gu"=>"સ્પેન", "name:gv"=>"Yn Spaainey", "name:he"=>"ספרד", "name:hi"=>"स्पेन", "name:hr"=>"Španjolska", "name:ht"=>"Espay", "name:hu"=>"Spanyolország", "name:hy"=>"Իսպանիա", "name:ia"=>"Espania", "name:id"=>"Spanyol", "name:ie"=>"Hispania", "name:ig"=>"Spain", "name:ik"=>"Spaña", "name:io"=>"Hispania", "name:is"=>"Spánn", "name:it"=>"Spagna", "name:iu"=>"ᓯᐸᐃᓐ", "name:ja"=>"スペイン", "name:jv"=>"Spanyol", "name:ka"=>"ესპანეთი", "name:kg"=>"Espania", "name:kk"=>"Испания", "name:kl"=>"Spania", "name:km"=>"អេស្ប៉ាញ", "name:kn"=>"ಸ್ಪೇನ್", "name:ko"=>"스페인", "name:ku"=>"Spanya", "name:kv"=>"Испания", "name:kw"=>"Spayn", "name:ky"=>"Испания", "name:la"=>"Hispania", "name:lb"=>"Spuenien", "name:li"=>"Spanje", "name:ln"=>"Espania", "name:lt"=>"Ispanija", "name:lv"=>"Spānija", "name:mg"=>"Espaina", "name:mi"=>"Peina", "name:mk"=>"Шпанија", "name:ml"=>"സ്പെയിൻ", "name:mn"=>"Испани", "name:mr"=>"स्पेन", "name:ms"=>"Sepanyol", "name:mt"=>"Spanja", "name:my"=>"စပိန်နိုင်ငံ", "name:na"=>"Pain", "name:nb"=>"Spania", "name:ne"=>"स्पेन", "name:nl"=>"Spanje", "name:nn"=>"Spania", "name:no"=>"Spania", "name:nv"=>"Dibé Diníí Bikéyah", "name:oc"=>"Espanha", "name:or"=>"ସ୍ପେନ", "name:os"=>"Испани", "name:pa"=>"ਸਪੇਨ", "name:pl"=>"Hiszpania", "name:ps"=>"اسپانیا", "name:pt"=>"Espanha", "name:qu"=>"Ispaña", "name:rm"=>"Spagna", "name:rn"=>"Esipanye", "name:ro"=>"Spania", "name:ru"=>"Испания", "name:rw"=>"Esipanye", "name:sa"=>"स्पेन्", "name:sc"=>"Ispagna", "name:se"=>"Espánnja", "name:sh"=>"Španija", "name:sk"=>"Španielsko", "name:sl"=>"Španija", "name:sm"=>"Spania", "name:so"=>"Isbania", "name:sq"=>"Spanja", "name:sr"=>"Шпанија", "name:ss"=>"Sipeyini", "name:st"=>"Spain", "name:su"=>"Spanyol", "name:sv"=>"Spanien", "name:sw"=>"Hispania", "name:ta"=>"எசுப்பானியா", "name:te"=>"స్పెయిన్", "name:tg"=>"Испониё", "name:th"=>"ประเทศสเปน", "name:tk"=>"Ispaniýa", "name:tl"=>"Espanya", "name:to"=>"Sepeni", "name:tr"=>"İspanya", "name:ts"=>"Spaniya", "name:tt"=>"Испания", "name:ty"=>"Paniora", "name:ug"=>"ئىسپانىيە", "name:uk"=>"Іспанія", "name:ur"=>"ہسپانیہ", "name:uz"=>"Ispaniya", "name:vi"=>"Tây Ban Nha", "name:vo"=>"Spanyän", "name:wa"=>"Espagne", "name:wo"=>"Ispaañ", "name:yi"=>"שפאניע", "name:yo"=>"Spéìn", "name:za"=>"Sihbanhyaz", "name:zh"=>"西班牙", "name:zu"=>"ISpeyini"
-th "name"=>"ประเทศไทย", "name:af"=>"Thailand", "name:am"=>"ታይላንድ", "name:an"=>"Tailandia", "name:ar"=>"تايلاند", "name:as"=>"থাইলেণ্ড", "name:az"=>"Tailand", "name:ba"=>"Таиланд", "name:be"=>"Тайланд", "name:bg"=>"Тайланд", "name:bn"=>"থাইল্যান্ড", "name:bo"=>"ཐའི་ལེན།", "name:br"=>"Thailand", "name:bs"=>"Tajland", "name:ca"=>"Tailàndia", "name:ce"=>"Таиланд", "name:cs"=>"Thajsko", "name:cv"=>"Таиланд", "name:cy"=>"Gwlad Thai", "name:da"=>"Thailand", "name:de"=>"Thailand", "name:dv"=>"ސިޔާމު", "name:dz"=>"ཐཱའི་ལེནཌ", "name:el"=>"Ταϊλάνδη", "name:en"=>"Thailand", "name:eo"=>"Tajlando", "name:es"=>"Tailandia", "name:et"=>"Tai", "name:eu"=>"Thailandia", "name:fa"=>"تایلند", "name:fi"=>"Thaimaa", "name:fo"=>"Teiland", "name:fr"=>"Thaïlande", "name:fy"=>"Tailân", "name:ga"=>"An Téalainn", "name:gd"=>"Dùthaich nan Tàidh", "name:gl"=>"Tailandia", "name:gn"=>"Tailandia", "name:gu"=>"થાઇલેન્ડ", "name:gv"=>"Yn Çheer Thai", "name:he"=>"תאילנד", "name:hi"=>"थाईलैण्ड", "name:hr"=>"Tajland", "name:ht"=>"Tayilann", "name:hu"=>"Thaiföld", "name:hy"=>"Թաիլանդ", "name:ia"=>"Thailanda", "name:id"=>"Thailand", "name:ie"=>"Thailand", "name:io"=>"Tailando", "name:is"=>"Taíland", "name:it"=>"Thailandia", "name:ja"=>"タイ王国", "name:jv"=>"Thailand", "name:ka"=>"ტაილანდი", "name:ki"=>"Thailand", "name:kk"=>"Тайланд", "name:kl"=>"Thailandi", "name:km"=>"ថៃ", "name:kn"=>"ಥೈಲ್ಯಾಂಡ್", "name:ko"=>"태국", "name:ks"=>"تھائی لینڈ", "name:ku"=>"Taylenda", "name:kv"=>"Таиланд", "name:kw"=>"Pow Tay", "name:la"=>"Thailandia", "name:lb"=>"Thailand", "name:li"=>"Thailand", "name:lo"=>"ປະເທດໄທ", "name:lt"=>"Tailandas", "name:lv"=>"Taizeme", "name:mg"=>"Tailandy", "name:mi"=>"Tairana", "name:mk"=>"Тајланд", "name:ml"=>"തായ്ലാന്റ്", "name:mn"=>"Тайланд", "name:mr"=>"थायलंड", "name:ms"=>"Thailand", "name:my"=>"ထိုင်းနိုင်ငံ", "name:na"=>"Thailand", "name:ne"=>"थाइल्याण्ड", "name:nl"=>"Thailand", "name:nn"=>"Thailand", "name:no"=>"Thailand", "name:nv"=>"Tʼáí Bikéyah", "name:oc"=>"Tailàndia", "name:or"=>"ଥାଇଲାଣ୍ଡ", "name:os"=>"Таиланд", "name:pa"=>"ਥਾਈਲੈਂਡ", "name:pl"=>"Tajlandia", "name:ps"=>"تايلنډ", "name:pt"=>"Tailândia", "name:qu"=>"Thaysuyu", "name:ro"=>"Thailanda", "name:ru"=>"Таиланд", "name:rw"=>"Tayilande", "name:sa"=>"श्यामदेश", "name:sd"=>"ٿائيلينڊ", "name:se"=>"Thaieana", "name:sg"=>"Tailânde", "name:sh"=>"Tajland", "name:sk"=>"Thajsko", "name:sl"=>"Tajska", "name:so"=>"Tayland", "name:sq"=>"Tajlanda", "name:sr"=>"Тајланд", "name:ss"=>"IThayilandi", "name:su"=>"Thailand", "name:sv"=>"Thailand", "name:sw"=>"Uthai", "name:ta"=>"தாய்லாந்து", "name:te"=>"థాయిలాండ్", "name:tg"=>"Таиланд", "name:th"=>"Muang Thai", "name:tk"=>"Tailand", "name:tl"=>"Taylandiya", "name:tr"=>"Tayland", "name:tt"=>"Таиланд", "name:tw"=>"Thailand", "name:ug"=>"تايلاند", "name:uk"=>"Таїланд", "name:ur"=>"تھائی لینڈ", "name:uz"=>"Tailand", "name:vi"=>"Thái Lan", "name:vo"=>"Tayän", "name:wo"=>"Taaylaand", "name:yi"=>"טיילאנד", "name:yo"=>"Tháílàndì", "name:za"=>"Daigoz", "name:zh"=>"泰国"
-cu "name"=>"Cuba", "name:af"=>"Kuba", "name:am"=>"ኩባ", "name:an"=>"Cuba", "name:ar"=>"كوبا", "name:ay"=>"Kuba", "name:az"=>"Kuba", "name:ba"=>"Куба", "name:be"=>"Куба", "name:bg"=>"Куба", "name:bm"=>"Kuba", "name:bn"=>"কিউবা", "name:bo"=>"ཀུ་བ།", "name:br"=>"Kuba", "name:bs"=>"Kuba", "name:ca"=>"Cuba", "name:ce"=>"Куба", "name:cs"=>"Kuba", "name:cv"=>"Куба", "name:cy"=>"Cuba", "name:da"=>"Cuba", "name:de"=>"Kuba", "name:dv"=>"ކިއުބާ", "name:ee"=>"Cuba", "name:el"=>"Κούβα", "name:en"=>"Cuba", "name:eo"=>"Kubo", "name:es"=>"Cuba", "name:et"=>"Kuuba", "name:eu"=>"Kuba", "name:fa"=>"کوبا", "name:fi"=>"Kuuba", "name:fo"=>"Kuba", "name:fr"=>"Cuba", "name:fy"=>"Kuba", "name:ga"=>"Cúba", "name:gd"=>"Cùba", "name:gl"=>"Cuba", "name:gn"=>"Kuva", "name:gv"=>"Yn Choobey", "name:he"=>"קובה", "name:hi"=>"क्यूबा", "name:hr"=>"Kuba", "name:ht"=>"Kiba", "name:hu"=>"Kuba", "name:hy"=>"Կուբա", "name:ia"=>"Cuba", "name:id"=>"Kuba", "name:io"=>"Kuba", "name:is"=>"Kúba", "name:it"=>"Cuba", "name:iu"=>"ᖂᐹ", "name:ja"=>"キューバ", "name:jv"=>"Kuba", "name:ka"=>"კუბა", "name:kk"=>"Куба", "name:km"=>"គុយបា", "name:kn"=>"ಕ್ಯೂಬಾ", "name:ko"=>"쿠바", "name:ku"=>"Kûba", "name:kv"=>"Куба", "name:kw"=>"Kuba", "name:la"=>"Cuba", "name:lb"=>"Kuba", "name:li"=>"Cuba", "name:ln"=>"Kuba", "name:lt"=>"Kuba", "name:lv"=>"Kuba", "name:mi"=>"Kiupa", "name:mk"=>"Куба", "name:ml"=>"ക്യൂബ", "name:mn"=>"Куба", "name:mr"=>"क्युबा", "name:ms"=>"Cuba", "name:mt"=>"Kuba", "name:my"=>"ကျူးဘားနိုင်ငံ", "name:na"=>"Kiuba", "name:ne"=>"क्युबा", "name:nl"=>"Cuba", "name:nn"=>"Cuba", "name:no"=>"Cuba", "name:nv"=>"Kyóoba", "name:oc"=>"Cuba", "name:or"=>"କ୍ୟୁବା", "name:os"=>"Кубæ", "name:pa"=>"ਕਿਊਬਾ", "name:pl"=>"Kuba", "name:pt"=>"Cuba", "name:qu"=>"Kuba", "name:ro"=>"Cuba", "name:ru"=>"Куба", "name:rw"=>"Kiba", "name:sa"=>"क्यूबा", "name:sc"=>"Cuba", "name:se"=>"Cuba", "name:sh"=>"Kuba", "name:si"=>"කියුබාව", "name:sk"=>"Kuba", "name:sl"=>"Kuba", "name:so"=>"Kuuba", "name:sq"=>"Kuba", "name:sr"=>"Куба", "name:ss"=>"IKhuyubha", "name:su"=>"Kuba", "name:sv"=>"Kuba", "name:sw"=>"Kuba", "name:ta"=>"கூபா", "name:te"=>"క్యూబా", "name:tg"=>"Кубо", "name:th"=>"ประเทศคิวบา", "name:tk"=>"Kuba", "name:tl"=>"Kuba", "name:tr"=>"Küba", "name:tt"=>"Куба", "name:ug"=>"كۇبا", "name:uk"=>"Куба", "name:ur"=>"کیوبا", "name:uz"=>"Kuba", "name:vi"=>"Cuba", "name:vo"=>"Kubeän", "name:wa"=>"Couba", "name:wo"=>"Kubaa", "name:yi"=>"קובא", "name:yo"=>"Kúbà", "name:za"=>"Gujbah", "name:zh"=>"古巴"
-hn "name"=>"Honduras", "name:af"=>"Honduras", "name:am"=>"ሆንዱራስ", "name:an"=>"Honduras", "name:ar"=>"هندوراس", "name:ay"=>"Honduras", "name:az"=>"Honduras", "name:ba"=>"Гондурас", "name:be"=>"Гандурас", "name:bg"=>"Хондурас", "name:bm"=>"Honduras", "name:bn"=>"হন্ডুরাস", "name:bo"=>"ཧོང་དུ་ར་སི།", "name:br"=>"Honduras", "name:bs"=>"Honduras", "name:ca"=>"Hondures", "name:ce"=>"Гондурас", "name:cs"=>"Honduras", "name:cu"=>"Ондоурасъ", "name:cy"=>"Honduras", "name:da"=>"Honduras", "name:de"=>"Honduras", "name:dv"=>"ހޮންޑިއުރަސް", "name:el"=>"Ονδούρα", "name:en"=>"Honduras", "name:eo"=>"Honduro", "name:es"=>"Honduras", "name:et"=>"Honduras", "name:eu"=>"Honduras", "name:fa"=>"هندوراس", "name:fi"=>"Honduras", "name:fo"=>"Honduras", "name:fr"=>"Honduras", "name:fy"=>"Hondueras", "name:ga"=>"Hondúras", "name:gd"=>"Hondùras", "name:gl"=>"Honduras", "name:gn"=>"Honduras", "name:gu"=>"હોન્ડુરાસ", "name:gv"=>"Ny Hondooraghyn", "name:he"=>"הונדורס", "name:hi"=>"हौण्डुरस", "name:hr"=>"Honduras", "name:ht"=>"Ondiras", "name:hu"=>"Honduras", "name:hy"=>"Հոնդուրաս", "name:ia"=>"Honduras", "name:id"=>"Honduras", "name:ie"=>"Honduras", "name:io"=>"Honduras", "name:is"=>"Hondúras", "name:it"=>"Honduras", "name:ja"=>"ホンジュラス", "name:jv"=>"Honduras", "name:ka"=>"ჰონდურასი", "name:kk"=>"Гондурас", "name:ko"=>"온두라스", "name:ku"=>"Hondûras", "name:kw"=>"Hondouras", "name:ky"=>"Гондурас", "name:la"=>"Honduria", "name:lb"=>"Honduras", "name:li"=>"Honduras", "name:ln"=>"Honduras", "name:lt"=>"Hondūras", "name:lv"=>"Hondurasa", "name:mk"=>"Хондурас", "name:ml"=>"ഹോണ്ടുറാസ്", "name:mn"=>"Гондурас", "name:mr"=>"होन्डुरास", "name:ms"=>"Honduras", "name:mt"=>"Ħonduras", "name:my"=>"ဟွန်ဒူးရပ်စ်နိုင်ငံ", "name:na"=>"Ondurat", "name:ne"=>"होण्डुरस", "name:nl"=>"Honduras", "name:nn"=>"Honduras", "name:no"=>"Honduras", "name:oc"=>"Honduras", "name:or"=>"ହୋଣ୍ଡାରୁସ", "name:os"=>"Гондурас", "name:pa"=>"ਹਾਂਡੂਰਾਸ", "name:pl"=>"Honduras", "name:ps"=>"هندوراس", "name:pt"=>"Honduras", "name:qu"=>"Unduras", "name:rn"=>"Honduras", "name:ro"=>"Honduras", "name:ru"=>"Гондурас", "name:rw"=>"Hondurasi", "name:sa"=>"हांडूरस", "name:se"=>"Honduras", "name:sh"=>"Honduras", "name:sk"=>"Honduras", "name:sl"=>"Honduras", "name:sm"=>"Honilagi", "name:sq"=>"Hondurasi", "name:sr"=>"Хондурас", "name:ss"=>"IHondulasi", "name:su"=>"Honduras", "name:sv"=>"Honduras", "name:sw"=>"Honduras", "name:ta"=>"ஹொண்டுராஸ்", "name:te"=>"హోండురాస్", "name:tg"=>"Ҳондурас", "name:th"=>"ประเทศฮอนดูรัส", "name:tl"=>"Honduras", "name:tr"=>"Honduras", "name:tt"=>"Гондурас", "name:ug"=>"ھوندۇراس", "name:uk"=>"Гондурас", "name:ur"=>"ہونڈوراس", "name:uz"=>"Gonduras", "name:vi"=>"Honduras", "name:vo"=>"Hondurän", "name:wa"=>"Hondourasse", "name:wo"=>"Onduras", "name:yi"=>"האנדוראס", "name:yo"=>"Họ̀ndúràs", "name:zh"=>"洪都拉斯", "name:zu"=>"Honduras"
-nl "name"=>"Nederland", "name:af"=>"Nederland", "name:am"=>"ሆላንድ", "name:an"=>"Países Baixos", "name:ar"=>"هولندا", "name:ay"=>"Aynacha Jach'a Markanaka", "name:az"=>"Niderland", "name:ba"=>"Нидерландтар", "name:be"=>"Нідэрланды", "name:bg"=>"Нидерландия", "name:bh"=>"एम्सटर्डम", "name:bi"=>"Netherlands", "name:bn"=>"নেদারল্যান্ডস", "name:bo"=>"ཧོ་ལན།", "name:br"=>"Izelvroioù", "name:bs"=>"Holandija", "name:ca"=>"Països Baixos", "name:ce"=>"Нидерландаш", "name:co"=>"Paesi Bassi", "name:cs"=>"Nizozemsko", "name:cu"=>"Нидєрландꙑ", "name:cv"=>"Нидерландсем", "name:cy"=>"Yr Iseldiroedd", "name:da"=>"Holland", "name:de"=>"Niederlande", "name:dv"=>"ނެދަލޭންޑު", "name:dz"=>"ནེ་དར་ལེནཌསི་", "name:ee"=>"Netherlands", "name:el"=>"Κάτω Χώρες", "name:en"=>"Netherlands", "name:eo"=>"Nederlando", "name:es"=>"Países Bajos", "name:et"=>"Holland", "name:eu"=>"Herbehereak", "name:fa"=>"هلند", "name:ff"=>"Holannda", "name:fi"=>"Alankomaat", "name:fo"=>"Niðurlond", "name:fr"=>"Pays-Bas", "name:fy"=>"Nederlân", "name:ga"=>"An Ísiltír", "name:gd"=>"Na Tìrean Ìsle", "name:gl"=>"Países Baixos", "name:gn"=>"Tetãnguéra Yvýi", "name:gu"=>"નેધરલેંડ", "name:gv"=>"Yn Çheer Injil", "name:he"=>"הולנד", "name:hi"=>"नीदरलैण्ड", "name:hr"=>"Nizozemska", "name:ht"=>"Peyiba", "name:hu"=>"Hollandia", "name:hy"=>"Նիդերլանդներ", "name:ia"=>"Pais Basse", "name:id"=>"Belanda", "name:ie"=>"Nederland", "name:io"=>"Nederlando", "name:is"=>"Holland", "name:it"=>"Paesi Bassi", "name:ja"=>"オランダ", "name:jv"=>"Walanda", "name:ka"=>"ნიდერლანდი", "name:kg"=>"Pays-Bas", "name:kk"=>"Нидерланд", "name:kl"=>"Hollandi", "name:kn"=>"ನೆದರ್ಲ್ಯಾಂಡ್ಸ್", "name:ko"=>"네덜란드", "name:ks"=>"नेदरलैंड्स", "name:ku"=>"Holenda", "name:kv"=>"Нидерландъяс", "name:kw"=>"Iseldiryow", "name:ky"=>"Нидерландтар", "name:la"=>"Nederlandia", "name:lb"=>"Holland", "name:li"=>"Nederland", "name:ln"=>"Holanda", "name:lt"=>"Nyderlandai", "name:lv"=>"Nīderlande", "name:mi"=>"Hōrana", "name:mk"=>"Холандија", "name:ml"=>"നെതർലന്റ്സ്", "name:mn"=>"Нидерланд", "name:mr"=>"नेदरलँड्स", "name:ms"=>"Belanda", "name:mt"=>"Pajjiżi l-Baxxi", "name:my"=>"နယ်သာလန်နိုင်ငံ", "name:na"=>"Eben Eyong", "name:ne"=>"नेदरल्याण्ड्स", "name:nl"=>"Nederland", "name:nn"=>"Nederland", "name:no"=>"Nederland", "name:nv"=>"Tsin Bikeeʼ Dineʼé Bikéyah", "name:oc"=>"Païses Basses", "name:os"=>"Нидерландтæ", "name:pa"=>"ਨੀਦਰਲੈਂਡ", "name:pl"=>"Królestwo Niderlandów", "name:ps"=>"هالنډ", "name:pt"=>"Países Baixos", "name:qu"=>"Urasuyu", "name:rm"=>"Pajais Bass", "name:ro"=>"Țările de Jos", "name:ru"=>"Нидерланды", "name:rw"=>"Ubuholandi", "name:sa"=>"नेदरलैंड्स", "name:sc"=>"Logos Bascios", "name:se"=>"Vuolleeatnamat", "name:sh"=>"Holandija", "name:si"=>"නෙදර්ලන්තය", "name:sk"=>"Holandsko", "name:sl"=>"Nizozemska", "name:so"=>"Holland", "name:sq"=>"Holanda", "name:sr"=>"Холандија", "name:ss"=>"IDashi", "name:st"=>"Hôlanê", "name:su"=>"Walanda", "name:sv"=>"Nederländerna", "name:sw"=>"Uholanzi", "name:ta"=>"நெதர்லாந்து", "name:te"=>"నెదర్లాండ్", "name:tg"=>"Нидерланд", "name:th"=>"ประเทศเนเธอร์แลนด์", "name:tk"=>"Niderlandlar", "name:tl"=>"Olanda", "name:to"=>"Holani", "name:tr"=>"Hollanda", "name:tt"=>"Нидерландлар", "name:ug"=>"گوللاندىيە", "name:uk"=>"Нідерланди", "name:ur"=>"ہالینڈ", "name:uz"=>"Niderlandlar", "name:vi"=>"Hà Lan", "name:vo"=>"Nedän", "name:wa"=>"Bas Payis", "name:wo"=>"Olaand", "name:xh"=>"ENetherlands", "name:yi"=>"האלאנד", "name:yo"=>"Nẹ́dálándì", "name:zh"=>"荷蘭", "name:zu"=>"Netherlands"
-ms "name"=>"Montserrat", "name:af"=>"Montserrat", "name:an"=>"Isla de Montserrat", "name:ar"=>"مونتسرات", "name:az"=>"Montserrat", "name:ba"=>"Монтсеррат", "name:be"=>"Мантсерат", "name:bg"=>"Монсерат", "name:br"=>"Enez Montserrat", "name:bs"=>"Monserat", "name:ca"=>"Illa de Montserrat", "name:cs"=>"Montserrat", "name:cy"=>"Montserrat", "name:da"=>"Montserrat", "name:de"=>"Montserrat", "name:dv"=>"މޮންސެރާޓު", "name:el"=>"Μοντσερράτ", "name:en"=>"Montserrat", "name:eo"=>"Moncerato", "name:es"=>"Montserrat", "name:et"=>"Montserrat", "name:eu"=>"Montserrat", "name:fa"=>"مونتسرات", "name:fi"=>"Montserrat", "name:fr"=>"Montserrat", "name:ga"=>"Montsarat", "name:gl"=>"Illa Montserrat", "name:he"=>"מונטסראט", "name:hi"=>"मॉण्टसेराट", "name:hr"=>"Montserrat", "name:ht"=>"Montserrat", "name:hu"=>"Montserrat", "name:hy"=>"Մոնտսերատ", "name:id"=>"Montserrat", "name:io"=>"Montserrat", "name:is"=>"Montserrat", "name:it"=>"Montserrat", "name:ja"=>"モントセラト", "name:jv"=>"Montserrat", "name:ka"=>"მონსერატი", "name:ko"=>"몬트세랫", "name:kw"=>"Montserrat", "name:la"=>"Montserrat", "name:lb"=>"Montserrat", "name:li"=>"Montserrat", "name:lt"=>"Montseratas", "name:lv"=>"Montserrata", "name:mk"=>"Монтсерат", "name:mn"=>"Монтсеррат", "name:mr"=>"माँटसेराट", "name:ms"=>"Montserrat", "name:nl"=>"Montserrat", "name:nn"=>"Montserrat", "name:no"=>"Montserrat", "name:oc"=>"Montserrat", "name:pa"=>"ਮਾਂਟਸਰਾਤ", "name:pl"=>"Montserrat", "name:pt"=>"Montserrat", "name:ro"=>"Montserrat", "name:ru"=>"Монтсеррат", "name:rw"=>"Monserati", "name:sh"=>"Montserrat", "name:sk"=>"Montserrat", "name:sl"=>"Montserrat", "name:sq"=>"Montserrati", "name:sr"=>"Монтсерат", "name:su"=>"Montserrat", "name:sv"=>"Montserrat", "name:ta"=>"மொன்செராட்", "name:th"=>"มอนต์เซอร์รัต", "name:tl"=>"Montserrat", "name:tr"=>"Montserrat", "name:ug"=>"مونتسەررات", "name:uk"=>"Монтсеррат", "name:ur"=>"مانٹسریٹ", "name:vi"=>"Montserrat", "name:wo"=>"Montserrat", "name:yo"=>"Montserrat", "name:zh"=>"蒙塞拉特島"
-tl "name"=>"Timór Lorosa'e", "name:af"=>"Oos-Timor", "name:ar"=>"جمهورية تيمور", "name:br"=>"Timor ar Reter", "name:ca"=>"Timor Oriental", "name:cs"=>"Východní Timor", "name:cy"=>"Dwyrain Timor", "name:da"=>"Østtimor", "name:de"=>"Osttimor", "name:el"=>"Ανατολικό Τιμόρ", "name:en"=>"East Timor", "name:eo"=>"Orienta Timoro", "name:es"=>"Timor Oriental", "name:et"=>"Ida-Timor", "name:fa"=>"تیمور شرقی", "name:fi"=>"Itä-Timor", "name:fr"=>"Timor oriental", "name:fy"=>"East-Timor", "name:ga"=>"An Tíomór Thoir", "name:gd"=>"Tiomor an Ear", "name:he"=>"מזרח טימור", "name:hr"=>"Istočni Timor", "name:hu"=>"Kelet-Timor", "name:id"=>"Timor Leste", "name:is"=>"Austur-Tímor", "name:it"=>"Timor Est", "name:la"=>"Timoria Orientalis", "name:li"=>"Oos-Timor", "name:lt"=>"Rytų Timoras", "name:mn"=>"Зүүн Тимор", "name:ms"=>"Timor Timur", "name:nl"=>"Oost-Timor", "name:no"=>"Øst-Timor", "name:pl"=>"Timor Wschodni", "name:pt"=>"Timor-Leste", "name:ru"=>"Восточный Тимор", "name:se"=>"Nuorta-Timor", "name:sk"=>"Východný Timor", "name:sl"=>"Vzhodni Timor", "name:sv"=>"Östtimor", "name:ta"=>"கிழக்குத் திமோர்", "name:th"=>"ประเทศติมอร์ตะวันออก", "name:tl"=>"Silangan Timor", "name:tr"=>"Doğu Timor", "name:tt"=>"Көнчыгыш Тимор", "name:uk"=>"Східний Тимор", "name:vi"=>"Đông Timor", "name:zh"=>"东帝汶 / 東帝汶"
-sh "name"=>"Saint Helena, Ascension and Tristan da Cunha", "name:ar"=>"سانت هيلينا، أسينسيون وتريستان دا كونها", "name:cs"=>"Svatá Helena, Ascension a Tristan da Cunha", "name:de"=>"St. Helena, Ascension und Tristan da Cunha", "name:el"=>"Αγία Ελένη, Ασενσιόν και Τριστάν ντα Κούνια", "name:en"=>"Saint Helena, Ascension and Tristan da Cunha", "name:eo"=>"Sankta Heleno, Ascension kaj Tristan da Cunha", "name:es"=>"Santa Elena, Ascensión y Tristán de Acuña", "name:fa"=>"سنت هلنا، اسنشن و تریستان دا کونا", "name:fr"=>"Sainte-Hélène, Ascension et Tristan da Cunha", "name:hr"=>"Sveta Helena", "name:hu"=>"Szent Ilona, Ascension és Tristan da Cunha", "name:it"=>"Sant'Elena, Ascensione e Tristan da Cunha", "name:lt"=>"Šventoji Elena, Dangun Žengimo ir Tristanas da Kunja", "name:mk"=>"Света Елена, Успение и Тристан да Куња", "name:nl"=>"Sint-Helena, Ascension en Tristan da Cunha", "name:pt"=>"Santa Helena, Ascensão e Tristão da Cunha", "name:ru"=>"Острова Святой Елены, Вознесения и Тристан-да-Кунья", "name:sk"=>"Svätá Helena, Ascension a Tristan da Cunha", "name:sr"=>"Света Хелена, Асенсион, и Тристан да Куња", "name:tr"=>"Saint Helena, Ascension ve Tristan da Cunha", "name:uk"=>"Острови Святої Єлени, Вознесіння і Тристан-да-Кунья", "name:vi"=>"Saint Helena, Ascension và Tristan da Cunha", "name:zh"=>"圣赫勒拿、阿森松和特里斯坦-达库尼亚"
-sv "name"=>"El Salvador", "name:af"=>"El Salvador", "name:am"=>"ኤል ሳልቫዶር", "name:an"=>"El Salvador", "name:ar"=>"السلفادور", "name:ay"=>"El Salvador", "name:az"=>"Salvador", "name:ba"=>"Сальвадор", "name:be"=>"Сальвадор", "name:bg"=>"Салвадор", "name:bm"=>"El Salvador", "name:bn"=>"এল সালভাদোর", "name:bo"=>"ཨིལ་སལ་ཝ་ཌོར།", "name:br"=>"El Salvador", "name:bs"=>"El Salvador", "name:ca"=>"El Salvador", "name:ce"=>"Сальвадор", "name:cs"=>"Salvador", "name:cy"=>"El Salvador", "name:da"=>"El Salvador", "name:de"=>"El Salvador", "name:dv"=>"އެލްސެލްވަޑޯރު", "name:ee"=>"El Salvador", "name:el"=>"Ελ Σαλβαδόρ", "name:en"=>"El Salvador", "name:eo"=>"Salvadoro", "name:es"=>"República de El Salvador", "name:et"=>"El Salvador", "name:eu"=>"El Salvador", "name:fa"=>"السالوادور", "name:fi"=>"El Salvador", "name:fo"=>"El Salvador", "name:fr"=>"Salvador", "name:fy"=>"El Salvador", "name:ga"=>"An tSalvadóir", "name:gd"=>"El Salbhador", "name:gl"=>"O Salvador", "name:gn"=>"Salvador", "name:gv"=>"Yn Salvador", "name:he"=>"אל סלוודור", "name:hi"=>"अल साल्वाडोर", "name:hr"=>"Salvador", "name:ht"=>"Salvadò", "name:hu"=>"Salvador", "name:hy"=>"Սալվադոր", "name:ia"=>"El Salvador", "name:id"=>"El Salvador", "name:io"=>"Salvadoria", "name:is"=>"El Salvador", "name:it"=>"El Salvador", "name:ja"=>"エルサルバドル", "name:jv"=>"El Salvador", "name:ka"=>"სალვადორი", "name:kk"=>"Эль-Сальвадор Республикасы", "name:kn"=>"ಎಲ್ ಸಾಲ್ವಡಾರ್", "name:ko"=>"엘살바도르", "name:ku"=>"El Salvador", "name:kw"=>"El Salvador", "name:la"=>"Salvatoria", "name:lb"=>"El Salvador", "name:li"=>"El Salvador", "name:ln"=>"El Salvador", "name:lt"=>"Salvadoras", "name:lv"=>"Salvadora", "name:mi"=>"Te Whakaora", "name:mk"=>"Ел Салвадор", "name:ml"=>"എൽ സാൽവദോർ", "name:mn"=>"Эль Сальвадор", "name:mr"=>"एल साल्व्हाडोर", "name:ms"=>"El Salvador", "name:mt"=>"El Salvador", "name:my"=>"အယ်ဆာဗေဒိုနိုင်ငံ", "name:na"=>"Ersarbador", "name:ne"=>"एल साल्भादोर", "name:nl"=>"El Salvador", "name:nn"=>"El Salvador", "name:no"=>"El Salvador", "name:oc"=>"Lo Salvador", "name:or"=>"ଏଲ ସାଲଭାଡୋର", "name:os"=>"Сальвадор", "name:pa"=>"ਸਾਲਵਾਦੋਰ", "name:pl"=>"Salwador", "name:ps"=>"اېلسلوادور", "name:pt"=>"El Salvador", "name:qu"=>"Salwadur", "name:ro"=>"El Salvador", "name:ru"=>"Сальвадор", "name:rw"=>"Saluvadoro", "name:sa"=>"एल-साल्वाडोर", "name:se"=>"El Salvador", "name:sh"=>"Salvador", "name:si"=>"එල් සැල්වඩෝ", "name:sk"=>"Salvádor", "name:sl"=>"Salvador", "name:so"=>"El Salfador", "name:sq"=>"Salvadori", "name:sr"=>"Салвадор", "name:ss"=>"ISalivado", "name:su"=>"Él Salvador", "name:sv"=>"El Salvador", "name:sw"=>"El Salvador", "name:ta"=>"எல் சால்வடோர்", "name:tg"=>"Салвадор", "name:th"=>"ประเทศเอลซัลวาดอร์", "name:tl"=>"El Salvador", "name:tr"=>"El Salvador", "name:tt"=>"Сальвадор", "name:ug"=>"ئەل سالۋادور", "name:uk"=>"Сальвадор", "name:ur"=>"ایل سیلواڈور", "name:uz"=>"El Salvador", "name:vi"=>"El Salvador", "name:vo"=>"Salvadorän", "name:wo"=>"Salbadoor", "name:yi"=>"על סאלוואדאר", "name:yo"=>"El Salfador", "name:zh"=>"萨尔瓦多", "name:zu"=>"El Salvador"
-tc "name"=>"Turks and Caicos Islands", "name:af"=>"Turks en Caicos Eilande", "name:an"=>"Islas Turcas e Caicos", "name:ar"=>"جزر تركس وكايكوس", "name:bg"=>"Търкс и Кайкос", "name:bn"=>"টার্কস্ ও কেইকোস দ্বীপপুঞ্জ", "name:br"=>"Inizi Turks ha Caicos", "name:bs"=>"Ostrva Turks i Caicos", "name:ca"=>"Illes Turks i Caicos", "name:cs"=>"Turks a Caicos", "name:cv"=>"Тĕркс тата Кайкос", "name:cy"=>"Ynysoedd Turks a Caicos", "name:da"=>"Turks- og Caicosøerne", "name:de"=>"Turks- und Caicosinseln", "name:dv"=>"ޓާކަސް އަދި ކައިކޯ ޖަޒީރާ", "name:el"=>"Τερκς και Κάικος", "name:en"=>"Turks and Caicos Islands", "name:eo"=>"Turkoj kaj Kajkoj", "name:es"=>"Islas Turcas y Caicos", "name:et"=>"Turks ja Caicos", "name:eu"=>"Turks eta Caicos uharteak", "name:fa"=>"جزایر تورکس و کایکوس", "name:fi"=>"Turks- ja Caicossaaret", "name:fr"=>"Îles Turques-et-Caïques", "name:fy"=>"Turks- en Kaikoseilannen", "name:ga"=>"Oileáin na dTurcach agus Caicos", "name:gd"=>"Oileáin na dTurcach agus Caicos", "name:gl"=>"Turks e Caicos", "name:he"=>"איי טרקס וקייקוס", "name:hi"=>"टर्क्स और केकोस द्वीप-समूह", "name:hr"=>"Otočje Turks i Caicos", "name:hu"=>"Turks- és Caicos-szigetek", "name:id"=>"Kepulauan Turks dan Caicos", "name:io"=>"Turks e Kaikos-Insuli", "name:is"=>"Turks- og Caicoseyjar", "name:it"=>"Turks e Caicos", "name:ja"=>"タークス・カイコス諸島", "name:jv"=>"Kapuloan Turks lan Caicos", "name:ko"=>"터크스 케이커스 제도", "name:kw"=>"Turks ha Kaykos", "name:lt"=>"Terksas ir Kaikosas", "name:lv"=>"Tērksas un Kaikosas", "name:mn"=>"Туркс ба Кайкосын Арлууд", "name:mr"=>"टर्क्स आणि कैकास द्वीपसमूह", "name:ms"=>"Kepulauan Turks dan Caicos", "name:nl"=>"Turks- en Caicoseilanden", "name:nn"=>"Turks- og Caicosøyane", "name:no"=>"Turks- og Caicosøyene", "name:pl"=>"Turks i Caicos", "name:pt"=>"Ilhas Turcas e Caicos", "name:ro"=>"Insulele Turks şi Caicos", "name:ru"=>"Тёркс и Кайкос", "name:sh"=>"Turks i Caicos Otoci", "name:sk"=>"Turks a Caicos", "name:sl"=>"Otoki Turks in Caicos", "name:sq"=>"Turks dhe Kaikos", "name:sr"=>"Туркс и Кајкос", "name:sv"=>"Turks- och Caicosöarna", "name:sw"=>"Visiwa vya Turks na Caicos", "name:ta"=>"துர்கசு கைகோசு தீவுகள்", "name:th"=>"หมู่เกาะเติร์กและไคคอส", "name:tr"=>"Turks ve Caicos Adaları", "name:ug"=>"Turks we Kaykos Taqim Aralliri", "name:uk"=>"Острови Теркс і Кайкос", "name:vi"=>"Quần đảo Turks và Caicos", "name:wo"=>"Turks and Caicos Islands", "name:zh"=>"特克斯和凱科斯群島"
-pt "name"=>"Portugal", "name:af"=>"Portugal", "name:am"=>"ፖርቱጋል", "name:an"=>"Portugal", "name:ar"=>"البرتغال", "name:ay"=>"Purtuwal", "name:az"=>"Portuqaliya", "name:ba"=>"Португалия", "name:be"=>"Партугалія", "name:bg"=>"Португалия", "name:bi"=>"Portugal", "name:bn"=>"পর্তুগাল", "name:bo"=>"པོ་ཅུ་གྷལ།", "name:br"=>"Portugal", "name:bs"=>"Portugal", "name:ca"=>"Portugal", "name:ce"=>"Португали", "name:co"=>"Portugallu", "name:cs"=>"Portugalsko", "name:cu"=>"Портогалїꙗ", "name:cv"=>"Португали", "name:cy"=>"Portiwgal", "name:da"=>"Portugal", "name:de"=>"Portugal", "name:dv"=>"ޕޯޗުގަލް", "name:dz"=>"པོར་ཅུ་གལ་", "name:ee"=>"Portugal", "name:el"=>"Πορτογαλία", "name:en"=>"Portugal", "name:eo"=>"Portugalio", "name:es"=>"Portugal", "name:et"=>"Portugal", "name:eu"=>"Portugal", "name:fa"=>"پرتغال", "name:fi"=>"Portugali", "name:fo"=>"Portugal", "name:fr"=>"Portugal", "name:fy"=>"Portegal", "name:ga"=>"An Phortaingéil", "name:gd"=>"A' Phortagail", "name:gl"=>"Portugal", "name:gn"=>"Poytuga", "name:gu"=>"પોર્ટુગલ", "name:gv"=>"Yn Phortiugal", "name:he"=>"פורטוגל", "name:hi"=>"पुर्तगाल", "name:hr"=>"Portugal", "name:ht"=>"Pòtigal", "name:hu"=>"Portugália", "name:hy"=>"Պորտուգալիա", "name:ia"=>"Portugal", "name:id"=>"Portugal", "name:ie"=>"Portugal", "name:io"=>"Portugal", "name:is"=>"Portúgal", "name:it"=>"Portogallo", "name:ja"=>"ポルトガル", "name:jv"=>"Portugal", "name:ka"=>"პორტუგალია", "name:kg"=>"Mputulukesi", "name:kk"=>"Португалия", "name:kl"=>"Portugal", "name:km"=>"ប្រទេស ព័រទុយហ្គាល់", "name:kn"=>"ಪೋರ್ಚುಗಲ್", "name:ko"=>"포르투갈", "name:ku"=>"Portûgal", "name:kv"=>"Португалия", "name:kw"=>"Portyngal", "name:ky"=>"Португалия", "name:la"=>"Portugallia", "name:lb"=>"Portugal", "name:li"=>"Portugal", "name:ln"=>"Pulutugal", "name:lt"=>"Portugalija", "name:lv"=>"Portugāle", "name:mg"=>"Pôrtogaly", "name:mi"=>"Potukara", "name:mk"=>"Португалија", "name:ml"=>"പോർച്ചുഗൽ", "name:mn"=>"Португал", "name:mr"=>"पोर्तुगाल", "name:ms"=>"Portugal", "name:mt"=>"Portugall", "name:my"=>"ပေါ်တူဂီနိုင်ငံ", "name:na"=>"Portsiugar", "name:ne"=>"पोर्चुगल", "name:nl"=>"Portugal", "name:nn"=>"Portugal", "name:no"=>"Portugal", "name:oc"=>"Portugal", "name:or"=>"ପର୍ତ୍ତୁଗାଲ", "name:os"=>"Португали", "name:pl"=>"Portugalia", "name:ps"=>"پرتګال", "name:pt"=>"Portugal", "name:qu"=>"Purtugal", "name:rm"=>"Portugal", "name:rn"=>"Portugal", "name:ro"=>"Portugalia", "name:ru"=>"Португалия", "name:rw"=>"Porutigali", "name:sa"=>"पुर्तगाल", "name:sc"=>"Portogallo", "name:se"=>"Portugal", "name:sh"=>"Portugal", "name:si"=>"පෘතුගාලය", "name:sk"=>"Portugalsko", "name:sl"=>"Portugalska", "name:sm"=>"Portugal", "name:so"=>"Bortuqaal", "name:sq"=>"Portugalia", "name:sr"=>"Португалија", "name:ss"=>"IPhuthukezi", "name:st"=>"Portugal", "name:su"=>"Portugal", "name:sv"=>"Portugal", "name:sw"=>"Ureno", "name:ta"=>"போர்த்துகல்", "name:te"=>"పోర్చుగల్", "name:tg"=>"Португалия", "name:th"=>"ประเทศโปรตุเกส", "name:tk"=>"Portugaliýa", "name:tl"=>"Portugal", "name:tr"=>"Portekiz", "name:tt"=>"Португалия", "name:ty"=>"Pōtītī", "name:ug"=>"Portugaliye", "name:uk"=>"Португалія", "name:ur"=>"پرتگال", "name:uz"=>"Portugaliya", "name:vi"=>"Bồ Đào Nha", "name:vo"=>"Portugän", "name:wa"=>"Portugal", "name:wo"=>"Portugaal", "name:yi"=>"פארטוגאל", "name:yo"=>"Pọ́rtúgàl", "name:zh"=>"葡萄牙", "name:zu"=>"IPhothugali"
-si "name"=>"Slovenija", "name:af"=>"Slowenië", "name:am"=>"ስሎቬኒያ", "name:an"=>"Eslovenia", "name:ar"=>"سلوفينيا", "name:az"=>"Sloveniya", "name:ba"=>"Словения", "name:be"=>"Славенія", "name:bg"=>"Словения", "name:bi"=>"Slovenia", "name:bn"=>"স্লোভেনিয়া", "name:bo"=>"སི་ལོ་ཝེ་ནི་ཡ།", "name:br"=>"Slovenia", "name:bs"=>"Slovenija", "name:ca"=>"Eslovènia", "name:ce"=>"Словени", "name:co"=>"Sluvenia", "name:cs"=>"Slovinsko", "name:cu"=>"Їллѷрїиска Словѣнїꙗ", "name:cv"=>"Словени", "name:cy"=>"Slofenia", "name:da"=>"Slovenien", "name:de"=>"Slowenien", "name:dv"=>"ސުލޮވީނިއާ", "name:ee"=>"Slovenia", "name:el"=>"Σλοβενία", "name:en"=>"Slovenia", "name:eo"=>"Slovenio", "name:es"=>"Eslovenia", "name:et"=>"Sloveenia", "name:eu"=>"Eslovenia", "name:fa"=>"اسلوونی", "name:fi"=>"Slovenia", "name:fo"=>"Slovenia", "name:fr"=>"Slovénie", "name:fy"=>"Sloveenje", "name:ga"=>"An tSlóivéin", "name:gd"=>"Sloibhìnia", "name:gl"=>"Eslovenia", "name:gn"=>"Eloveña", "name:gu"=>"સ્લોવેનિયા", "name:gv"=>"Yn Clovean", "name:he"=>"סלובניה", "name:hi"=>"स्लोवेनिया", "name:hr"=>"Slovenija", "name:ht"=>"Sloveni", "name:hu"=>"Szlovénia", "name:hy"=>"Սլովենիա", "name:ia"=>"Slovenia", "name:id"=>"Slovenia", "name:ie"=>"Slovenia", "name:io"=>"Slovenia", "name:is"=>"Slóvenía", "name:it"=>"Slovenia", "name:ja"=>"スロベニア", "name:jv"=>"Slovénia", "name:ka"=>"სლოვენია", "name:kg"=>"Slovenia", "name:kk"=>"Словения", "name:kl"=>"Slovenia", "name:ko"=>"슬로베니아", "name:ku"=>"Slovenya", "name:kv"=>"Словения", "name:kw"=>"Sloveni", "name:la"=>"Slovenia", "name:lb"=>"Slowenien", "name:li"=>"Slovenië", "name:ln"=>"Slovenia", "name:lt"=>"Slovėnija", "name:lv"=>"Slovēnija", "name:mi"=>"Horowinia", "name:mk"=>"Словенија", "name:ml"=>"സ്ലൊവീന്യ", "name:mn"=>"Словен", "name:mr"=>"स्लोव्हेनिया", "name:ms"=>"Slovenia", "name:mt"=>"Slovenja", "name:my"=>"ဆလိုဗေးနီးယားနိုင်ငံ", "name:na"=>"Tsirobeniya", "name:ne"=>"स्लोभेनिया", "name:nl"=>"Slovenië", "name:nn"=>"Slovenia", "name:no"=>"Slovenia", "name:nv"=>"Słobíín Bikéyah", "name:oc"=>"Eslovènia", "name:or"=>"ସ୍ଲୋଭେନିଆ", "name:os"=>"Словени", "name:pl"=>"Słowenia", "name:ps"=>"سلووانیا", "name:pt"=>"Eslovénia", "name:qu"=>"Isluwinya", "name:rm"=>"Slovenia", "name:ro"=>"Slovenia", "name:ru"=>"Словения", "name:rw"=>"Siloveniya", "name:sa"=>"स्लोवीनिया", "name:sc"=>"Islovènia", "name:se"=>"Slovenia", "name:sh"=>"Slovenija", "name:sk"=>"Slovinsko", "name:sl"=>"Slovenija", "name:sm"=>"Slovenia", "name:so"=>"Isloveeniya", "name:sq"=>"Sllovenia", "name:sr"=>"Словенија", "name:ss"=>"Siloveni", "name:st"=>"Slovenia", "name:su"=>"Slovénia", "name:sv"=>"Slovenien", "name:sw"=>"Slovenia", "name:ta"=>"சுலோவீனியா", "name:te"=>"స్లోవేనియా", "name:tg"=>"Словения", "name:th"=>"ประเทศสโลวีเนีย", "name:tk"=>"Sloweniýa", "name:tl"=>"Eslobenya", "name:tr"=>"Slovenya", "name:tt"=>"Словения", "name:ug"=>"Slowéniye", "name:uk"=>"Словенія", "name:ur"=>"سلووینیا", "name:uz"=>"Sloveniya", "name:vi"=>"Slovenia", "name:vo"=>"Sloveniyän", "name:wo"=>"Esloweeni", "name:yi"=>"סלאוועניע", "name:yo"=>"Sloféníà", "name:zh"=>"斯洛文尼亞"
-ky "name"=>"Cayman Islands", "name:af"=>"Kaaimanseilande", "name:ak"=>"Kemanfo Islands", "name:am"=>"ካይማን ደሴቶች", "name:ar"=>"جزر الكايمان", "name:az"=>"Kayman Adaları", "name:be"=>"Кайманавы астравы", "name:bg"=>"Кайманови острови", "name:bm"=>"Bama Gun", "name:bn"=>"কেম্যান দ্বীপপুঞ্জ", "name:bo"=>"ཁེ་མེན་གླིང་ཕྲན།", "name:br"=>"Inizi Cayman", "name:bs"=>"Kajmanska Ostrva", "name:ca"=>"Illes Caiman", "name:cs"=>"Kajmanské ostrovy", "name:cy"=>"Ynysoedd Cayman", "name:da"=>"Caymanøerne", "name:de"=>"Kaimaninseln", "name:dz"=>"ཁེ་མེན་གླིང་ཚོམ", "name:ee"=>"Kayman ƒudomekpowo nutome", "name:el"=>"Νήσοι Κέιμαν", "name:en"=>"Cayman Islands", "name:eo"=>"Kajmana Insularo", "name:es"=>"Islas Caimán", "name:et"=>"Kaimanisaared", "name:eu"=>"Kaiman Uharteak", "name:fa"=>"جزایر کایمان", "name:ff"=>"Duuɗe Kaymaa", "name:fi"=>"Caymansaaret", "name:fo"=>"Caymanoyggjarnar", "name:fr"=>"Îles Caïmans", "name:fy"=>"de Kaaimaneilannen", "name:ga"=>"Oileáin Cayman", "name:gd"=>"Na h-Eileanan Caimean", "name:gl"=>"Illas Caimán", "name:gu"=>"કેયમેન આઇલૅંડ્સ", "name:gv"=>"Ellanyn Cayman", "name:ha"=>"Tsibiran Kaiman", "name:he"=>"איי קיימן", "name:hi"=>"केमैन द्वीपसमूह", "name:hr"=>"Kajmanski Otoci", "name:hu"=>"Kajmán-szigetek", "name:ia"=>"Insulas de Caiman", "name:id"=>"Kepulauan Cayman", "name:io"=>"Insuli Kaiman", "name:is"=>"Caymaneyjar", "name:it"=>"Isole Cayman", "name:ja"=>"ケイマン諸島", "name:ka"=>"კაიმანის კუნძულები", "name:ki"=>"Visiwa vya Kayman", "name:km"=>"កោះកៃម៉ង់", "name:kn"=>"ಕೇಮನ್ ದ್ವೀಪಗಳು", "name:ko"=>"케이맨제도", "name:ks"=>"کیمَن جٔزیٖرٕ", "name:ku"=>"Giravên Caymanê", "name:lb"=>"Kaimaninselen", "name:lg"=>"Bizinga ebya Kayimaani", "name:ln"=>"Bisanga bya Kayíma", "name:lo"=>"ຄາຍແມນ ອິດແລນ", "name:lt"=>"Kaimanų salos", "name:lv"=>"Kaimanu salas", "name:mg"=>"Nosy Kayman", "name:mk"=>"Кајмански Острови", "name:ml"=>"കേയ്മാൻ ദ്വീപുകൾ", "name:mn"=>"Кайманы Арлууд", "name:mr"=>"केमन बेटे", "name:mt"=>"Gżejjer Kajmani", "name:my"=>"ကေမန် ကျွန်းစု", "name:ne"=>"केयमान टापु", "name:nl"=>"Kaaimaneilanden", "name:nn"=>"Caymanøyane", "name:no"=>"Caymanøyene", "name:or"=>"କେମ୍ୟାନ୍ ଦ୍ବୀପପୁଞ୍ଜ", "name:pl"=>"Kajmany", "name:pt"=>"Ilhas Cayman", "name:rm"=>"Inslas Cayman", "name:rn"=>"Ibirwa bya Keyimani", "name:ro"=>"Insulele Cayman", "name:ru"=>"Острова Кайман", "name:se"=>"Cayman-sullot", "name:sg"=>"Âzûâ Ngundë, Kaimäni", "name:si"=>"කේමන් දූපත්", "name:sk"=>"Kajmanie ostrovy", "name:sl"=>"Kajmanski otoki", "name:sn"=>"Zvitsuwa zveCayman", "name:sr"=>"Кајманска Острва", "name:sv"=>"Caymanöarna", "name:sw"=>"Visiwa vya Kayman", "name:ta"=>"கேமென் தீவுகள்", "name:te"=>"కేమాన్ దీవులు", "name:th"=>"หมู่เกาะเคย์แมน", "name:ti"=>"ካይማን ደሴቶች", "name:to"=>"ʻOtumotu Keimeni", "name:tr"=>"Kayman Adaları", "name:uk"=>"Кайманові острови", "name:ur"=>"کیمین آئلینڈز", "name:vi"=>"Quần đảo Cayman", "name:yo"=>"Orílẹ́ède Etíokun Kámánì", "name:zh"=>"开曼群岛", "name:zu"=>"i-Cayman Islands"
-dj "name"=>"Djibouti جيبوتي", "name:af"=>"Djiboeti", "name:am"=>"ጅቡቲ", "name:an"=>"Chibuti", "name:ar"=>"جيبوتي", "name:az"=>"Cibuti", "name:ba"=>"Джибути", "name:be"=>"Джыбуці", "name:bg"=>"Джибути", "name:bn"=>"জিবুতি", "name:bo"=>"ཇི་བའོ་ཊི།", "name:br"=>"Djibouti", "name:bs"=>"Džibuti", "name:ca"=>"Djibouti", "name:ce"=>"Джибути", "name:cs"=>"Džibutsko", "name:cv"=>"Джибути", "name:cy"=>"Djibouti", "name:da"=>"Djibouti", "name:de"=>"Dschibuti", "name:dv"=>"ޖިބުތީ", "name:ee"=>"Djibouti", "name:el"=>"Τζιμπουτί", "name:en"=>"Djibouti", "name:eo"=>"Ĝibutio", "name:es"=>"Yibuti", "name:et"=>"Djibouti", "name:eu"=>"Djibuti", "name:fa"=>"جیبوتی", "name:fi"=>"Djibouti", "name:fr"=>"Djibouti", "name:fy"=>"Dzjibûty", "name:ga"=>"Diobúití", "name:gd"=>"Diobùtaidh", "name:gl"=>"Xibutí", "name:gv"=>"Djibouti", "name:he"=>"ג'יבוטי", "name:hi"=>"जिबूती", "name:hr"=>"Džibuti", "name:ht"=>"Djibouti", "name:hu"=>"Dzsibuti", "name:hy"=>"Ջիբութի", "name:ia"=>"Djibouti", "name:id"=>"Djibouti", "name:ie"=>"Djibouti", "name:io"=>"Djibuti", "name:is"=>"Djíbútí", "name:it"=>"Gibuti", "name:ja"=>"ジブチ", "name:jv"=>"Djibouti", "name:ka"=>"ჯიბუტი", "name:kg"=>"Djibuti", "name:ki"=>"Djibouti", "name:kk"=>"Джибути", "name:ko"=>"지부티", "name:ku"=>"Cîbûtî", "name:kw"=>"Jibouti", "name:la"=>"Gibutum", "name:lb"=>"Dschibuti", "name:li"=>"Djibouti", "name:ln"=>"Djibuti", "name:lt"=>"Džibutis", "name:lv"=>"Džibutija", "name:mg"=>"Jibotia", "name:mi"=>"Tipūti", "name:mk"=>"Џибути", "name:ml"=>"ജിബൂട്ടി", "name:mn"=>"Джибути", "name:mr"=>"जिबूती", "name:ms"=>"Djibouti", "name:mt"=>"Ġibuti", "name:my"=>"ဂျီဘူတီနိုင်ငံ", "name:na"=>"Djibuti", "name:ne"=>"जिबुटी", "name:nl"=>"Djibouti", "name:nn"=>"Djibouti", "name:no"=>"Djibouti", "name:nv"=>"Jibótii", "name:oc"=>"Jiboti", "name:om"=>"Jibuutii", "name:or"=>"ଡିଜିବୋଇଟି", "name:os"=>"Джибути", "name:pa"=>"ਜਿਬੂਤੀ", "name:pl"=>"Dżibuti", "name:ps"=>"جېبوتي", "name:pt"=>"Djibouti", "name:qu"=>"Yiwuti", "name:ro"=>"Djibouti", "name:ru"=>"Джибути", "name:rw"=>"Jibuti", "name:sa"=>"जिबूटी", "name:sc"=>"Gibuti", "name:se"=>"Djibouti", "name:sg"=>"Dibutùii", "name:sh"=>"Džibuti", "name:sk"=>"Džibutsko", "name:sl"=>"Džibuti", "name:sn"=>"Djibouti", "name:so"=>"Jabuuti", "name:sq"=>"Xhibuti", "name:sr"=>"Џибути", "name:ss"=>"IJibhuthi", "name:su"=>"Djibouti", "name:sv"=>"Djibouti", "name:sw"=>"Jibuti", "name:ta"=>"சீபூத்தீ", "name:te"=>"జిబౌటి", "name:tg"=>"Ҷибути", "name:th"=>"ประเทศจิบูตี", "name:ti"=>"ጂቡቲ", "name:tk"=>"Jibuti", "name:tl"=>"Hiboti", "name:tr"=>"Cibuti", "name:ts"=>"Djibouti", "name:tt"=>"Җибути", "name:ug"=>"جىبۇتى", "name:uk"=>"Джибуті", "name:ur"=>"جبوتی", "name:uz"=>"Jibuti", "name:vi"=>"Djibouti", "name:vo"=>"Cibutän", "name:wo"=>"Jibuti", "name:yi"=>"דזשיבוטי", "name:yo"=>"Djìbútì", "name:zh"=>"吉布提", "name:zu"=>"IJibuthi"
-cv "name"=>"Cabo Verde", "name:af"=>"Kaap Verde", "name:ar"=>"الرأس الأخضر", "name:be"=>"Каба-Вердэ", "name:br"=>"Kab Glas", "name:ca"=>"Cap Verd", "name:cs"=>"Kapverdy", "name:cy"=>"Cabo Verde", "name:da"=>"Kap Verde", "name:de"=>"Kap Verde", "name:el"=>"Πράσινο Ακρωτήριο", "name:en"=>"Cape Verde", "name:eo"=>"Kaboverdo", "name:es"=>"Cabo Verde", "name:et"=>"Roheneemesaared", "name:fa"=>"کیپ ورد", "name:fi"=>"Kap Verde", "name:fr"=>"Cap-Vert", "name:fy"=>"Kaapverdje", "name:ga"=>"Rinn Verde", "name:gd"=>"Cape Verde", "name:he"=>"כף ורדה", "name:hr"=>"Zelenortski Otoci", "name:hu"=>"Zöld-foki Köztársaság", "name:id"=>"Tanjung Verde", "name:io"=>"Kabo Verda", "name:is"=>"Grænhöfðaeyjar", "name:it"=>"Capo Verde", "name:la"=>"Promontorium Viride", "name:lb"=>"Kap Verde", "name:li"=>"Kaapverdië", "name:lt"=>"Žaliasis Kyšulys", "name:lv"=>"Kaboverde", "name:mi"=>"Te Kūrae Matomato", "name:mk"=>"Зелен ’Рт", "name:mn"=>"Кабо-Верде", "name:nl"=>"Kaapverdië", "name:pl"=>"Republika Zielonego Przylądka", "name:pt"=>"Cabo Verde", "name:ru"=>"Кабо-Верде", "name:se"=>"Kap Verde", "name:sl"=>"Zelenortski otoki", "name:sr"=>"Зеленортска Острва", "name:sv"=>"Kap Verde", "name:ta"=>"கேப் வர்டி", "name:th"=>"ประเทศเคปเวิร์ด", "name:tr"=>"Yeşil Burun Adaları", "name:uk"=>"Кабо-Верде", "name:uz"=>"Kabo-Verde", "name:vo"=>"Kabovärduäns", "name:zh"=>"佛得角"
-mf "name"=>"Saint Martin"
-bl "name"=>"Saint Barthélemy"
-ax "name"=>"Aland Islands"
-bv "name"=>"Bouvet Island"
-cx "name"=>"Christmas Island", "name:af"=>"Christmas-eiland", "name:ar"=>"جزيرة الميلاد", "name:bg"=>"Рождество", "name:br"=>"Enez Nedeleg", "name:bs"=>"Božićno ostrvo", "name:ca"=>"Illa Christmas", "name:cs"=>"Vánoční ostrov", "name:cy"=>"Ynys y Nadolig", "name:da"=>"Juleøen", "name:de"=>"Weihnachtsinsel", "name:el"=>"Νήσος των Χριστουγέννων", "name:eo"=>"Kristnaskinsulo", "name:es"=>"Isla de Navidad", "name:et"=>"Jõulusaar", "name:eu"=>"Christmas uhartea", "name:fa"=>"جزیره کریسمس", "name:fi"=>"Joulusaari", "name:fr"=>"Île Christmas", "name:fy"=>"Krysteilân", "name:ga"=>"Oileán na Nollag", "name:gl"=>"Illa de Nadal", "name:he"=>"טריטוריית האי חג המולד", "name:hi"=>"क्रिसमस आईलैंड", "name:hr"=>"Božićni otok", "name:hu"=>"Karácsony-sziget", "name:id"=>"Pulau Natal", "name:is"=>"Jólaeyja", "name:it"=>"Isola del Natale", "name:ja"=>"クリスマス島", "name:ka"=>"შობის კუნძული", "name:kk"=>"Кристмас аралы", "name:ko"=>"크리스마스 섬", "name:kw"=>"Ynys Nadelik", "name:lb"=>"Chrëschtdagsinsel", "name:lt"=>"Kalėdų sala", "name:lv"=>"Ziemsvētku sala", "name:mn"=>"Зул Сарын Арал", "name:mr"=>"क्रिसमस द्वीप", "name:ms"=>"Pulau Krismas", "name:nl"=>"Christmaseiland", "name:nn"=>"Christmasøya", "name:no"=>"Christmasøya", "name:pl"=>"Wyspa Bożego Narodzenia", "name:pt"=>"Ilha Christmas", "name:ro"=>"Insula Crăciunului", "name:ru"=>"Остров Рождества", "name:sh"=>"Božićni otok", "name:sk"=>"Vianočný ostrov", "name:sl"=>"Božični otoki", "name:sr"=>"Божићно Острво", "name:sv"=>"Julön", "name:sw"=>"Kisiwa cha Krismasi", "name:ta"=>"கிறிஸ்துமசு தீவு", "name:th"=>"เกาะคริสต์มาส", "name:tr"=>"Christmas Adası", "name:uk"=>"Острів Різдва", "name:vi"=>"Đảo Christmas", "name:wo"=>"Dunu Christmas", "name:zh"=>"圣诞岛"
-hm "name"=>"Heard Island and MaxDonald Islands"
-mp "name"=>"Northern Mariana Islands"
-sj "name"=>"Svalbard and Jan Mayen"
-no "name"=>"Norge", "name:af"=>"Noorweë", "name:am"=>"ኖርዌይ", "name:an"=>"Noruega", "name:ar"=>"النرويج", "name:ay"=>"Nurweka", "name:az"=>"Norveç", "name:ba"=>"Норвегия", "name:be"=>"Нарвегія", "name:bg"=>"Норвегия", "name:bi"=>"Norway", "name:bm"=>"Norwij", "name:bn"=>"নরওয়ে", "name:bo"=>"ནོར་ཝེ།", "name:br"=>"Norvegia", "name:bs"=>"Norveška", "name:ca"=>"Noruega", "name:ce"=>"Норвеги", "name:co"=>"Nurvegia", "name:cs"=>"Norsko", "name:cu"=>"Норєгъ", "name:cv"=>"Норвеги", "name:cy"=>"Norwy", "name:da"=>"Norge", "name:de"=>"Norwegen", "name:dv"=>"ނޯވޭ", "name:dz"=>"ནོ་ཝེ་", "name:ee"=>"Norway", "name:el"=>"Νορβηγία", "name:en"=>"Norway", "name:eo"=>"Norvegio", "name:es"=>"Noruega", "name:et"=>"Norra", "name:eu"=>"Norvegia", "name:fa"=>"نروژ", "name:fi"=>"Norja", "name:fo"=>"Noregur", "name:fr"=>"Norvège", "name:fy"=>"Noarwegen", "name:ga"=>"An Iorua", "name:gd"=>"Nirribhidh", "name:gl"=>"Noruega", "name:gn"=>"Noruega", "name:gu"=>"નોર્વે", "name:gv"=>"Norlynn", "name:he"=>"נורבגיה", "name:hi"=>"नॉर्वे", "name:hr"=>"Norveška", "name:ht"=>"Nòvèj", "name:hu"=>"Norvégia", "name:hy"=>"Նորվեգիա", "name:ia"=>"Norvegia", "name:id"=>"Norwegia", "name:ie"=>"Norvegia", "name:io"=>"Norvegia", "name:is"=>"Noregur", "name:it"=>"Norvegia", "name:iu"=>"ᓄᕐᒋ", "name:ja"=>"ノルウェー", "name:jv"=>"Norwégia", "name:ka"=>"ნორვეგია", "name:kg"=>"Norge", "name:kk"=>"Норвегия", "name:kl"=>"Norge", "name:kn"=>"ನಾರ್ವೇ", "name:ko"=>"노르웨이", "name:ku"=>"Norwêc", "name:kv"=>"Норвегия", "name:kw"=>"Norgagh", "name:ky"=>"Норвегия", "name:la"=>"Norvegia", "name:lb"=>"Norwegen", "name:li"=>"Noorwege", "name:ln"=>"Norvej", "name:lt"=>"Norvegija", "name:lv"=>"Norvēģija", "name:mg"=>"Norvezy", "name:mi"=>"Nōwei", "name:mk"=>"Норвешка", "name:ml"=>"നോർവെ", "name:mn"=>"Норвеги", "name:mr"=>"नॉर्वे", "name:ms"=>"Norway", "name:mt"=>"Norveġja", "name:my"=>"နော်ဝေနိုင်ငံ", "name:na"=>"Norwei", "name:nb"=>"Norge", "name:ne"=>"नर्वे", "name:nl"=>"Noorwegen", "name:nn"=>"Noreg", "name:no"=>"Norge", "name:oc"=>"Norvègia", "name:om"=>"Norway", "name:or"=>"ନରୱେ", "name:os"=>"Норвеги", "name:pa"=>"ਨਾਰਵੇ", "name:pl"=>"Norwegia", "name:ps"=>"ناروې", "name:pt"=>"Noruega", "name:qu"=>"Nurwiga", "name:rm"=>"Norvegia", "name:rn"=>"Noruega", "name:ro"=>"Norvegia", "name:ru"=>"Норвегия", "name:rw"=>"Noruveje", "name:sa"=>"नार्वे", "name:sc"=>"Norvegia", "name:se"=>"Norga", "name:sh"=>"Norveška", "name:sk"=>"Nórsko", "name:sl"=>"Norveška", "name:so"=>"Norway", "name:sq"=>"Norvegjia", "name:sr"=>"Норвешка", "name:ss"=>"INoweyi", "name:su"=>"Norwégia", "name:sv"=>"Norge", "name:sw"=>"Norwei", "name:ta"=>"நோர்வே", "name:te"=>"నార్వే", "name:tg"=>"Норвегия", "name:th"=>"ประเทศนอร์เวย์", "name:tk"=>"Norwegiýa", "name:tl"=>"Noruwega", "name:tr"=>"Norveç", "name:ts"=>"Norge", "name:tt"=>"Норвегия", "name:ug"=>"نورۋېگىيە", "name:uk"=>"Норвегія", "name:ur"=>"ناروے", "name:uz"=>"Norvegiya", "name:vi"=>"Na Uy", "name:vo"=>"Norgän", "name:wa"=>"Norvedje", "name:wo"=>"Noorwees", "name:yi"=>"נארוועגיע", "name:yo"=>"Nọ́rwèy", "name:za"=>"Nozveih", "name:zh"=>"挪威", "name:zu"=>"INoki"
-vu "name"=>"Vanuatu", "name:ab"=>"Вануату", "name:ar"=>"فانواتو", "name:be"=>"Вануату", "name:bg"=>"Вануату", "name:bn"=>"ভানুয়াটু", "name:bo"=>"ཝ་ནུའ་ཏུ།", "name:br"=>"Vanuatu", "name:ce"=>"Вануату", "name:cs"=>"Vanuatu", "name:da"=>"Vanuatu", "name:de"=>"Vanuatu", "name:dv"=>"ވަނުއާޓޫ", "name:el"=>"Βανουάτου", "name:en"=>"Vanuatu", "name:eo"=>"Vanuatuo", "name:es"=>"Vanuatu", "name:fa"=>"وانواتو", "name:fi"=>"Vanuatu", "name:fr"=>"Vanuatu", "name:fy"=>"Fanuatû", "name:ga"=>"Vanuatú", "name:gd"=>"Bhanuatu", "name:he"=>"ונואטו", "name:hi"=>"वानूअतु", "name:hr"=>"Vanuatu", "name:ht"=>"Vanwatou", "name:hu"=>"Vanuatu", "name:hy"=>"Վանուատու", "name:is"=>"Vanúatú", "name:ja"=>"バヌアツ", "name:ka"=>"ვანუატუ", "name:kk"=>"Вануату", "name:kn"=>"ವನುವಾಟು", "name:ko"=>"바누아투", "name:ku"=>"Vanûatû", "name:ky"=>"Вануату", "name:lt"=>"Vanuatu", "name:mk"=>"Вануату", "name:ml"=>"വാനുവാടു", "name:mn"=>"Вануату", "name:mr"=>"व्हानुआतू", "name:mt"=>"Vanwatu", "name:my"=>"ဗနွားတူနိုင်ငံ", "name:na"=>"Banuatu", "name:ne"=>"भानुअटु", "name:nv"=>"Banoʼáátʼoo", "name:oc"=>"Vanuatu", "name:or"=>"ଭାନୁଆଟୁ", "name:os"=>"Вануату", "name:pa"=>"ਵਨੁਆਤੂ", "name:pl"=>"Vanuatu", "name:pt"=>"Vanuatu", "name:qu"=>"Wanwatu", "name:ru"=>"Вануату", "name:rw"=>"Vanuwatu", "name:se"=>"Vanuatu", "name:sk"=>"Vanuatu", "name:sr"=>"Вануату", "name:sv"=>"Vanuatu", "name:ta"=>"வனுவாட்டு", "name:te"=>"వనాటు", "name:tg"=>"Вануату", "name:th"=>"ประเทศวานูอาตู", "name:tt"=>"Вануату", "name:ug"=>"ۋانۇئاتۇ", "name:uk"=>"Вануату", "name:ur"=>"وانواتو", "name:vo"=>"Vanuatuäns", "name:wo"=>"Wanuatu", "name:yo"=>"Fanuatu", "name:zh"=>"瓦努阿图"
-um "name"=>"United States Minor Outlying Islands"
-vi "name"=>"United States Virgin Islands"
-yt "name"=>"Mayotte"
-al "name"=>"Shqipëria", "name:ab"=>"Арнауыҭтәыла", "name:af"=>"Albanië", "name:ak"=>"Albania", "name:am"=>"አልባኒያ", "name:an"=>"Albania", "name:ar"=>"ألبانيا", "name:as"=>"আলবেনিয়া", "name:av"=>"Алба́ния", "name:ay"=>"Alwaña", "name:az"=>"Albaniya", "name:ba"=>"Алба́ния", "name:be"=>"Алба́нія", "name:bg"=>"Албания", "name:bh"=>"अल्बानिया", "name:bi"=>"Albania", "name:bm"=>"Alibani", "name:bn"=>"আলবেনিয়া", "name:bo"=>"ཨལ་པ་ཉི་ཡ།", "name:br"=>"Albania", "name:bs"=>"Albanija", "name:ca"=>"Albània", "name:ce"=>"Алба́ни", "name:ch"=>"Albania", "name:co"=>"Albania", "name:cs"=>"Albánie", "name:cu"=>"Алванїꙗ", "name:cv"=>"Албани", "name:cy"=>"Albania", "name:da"=>"Albanien", "name:de"=>"Albanien", "name:dv"=>"އަލްބޭނިއާ", "name:dz"=>"ཨཱལ་བེ་ནི་ཡ", "name:ee"=>"Albania", "name:el"=>"Αλβανία", "name:en"=>"Albania", "name:eo"=>"Albanio", "name:es"=>"Albania", "name:et"=>"Albaania", "name:eu"=>"Albania", "name:fa"=>"آلبانی", "name:ff"=>"Albaniya", "name:fi"=>"Albania", "name:fo"=>"Albania", "name:fr"=>"Albanie", "name:fy"=>"Albaanje", "name:ga"=>"An Albáin", "name:gd"=>"Albàinia", "name:gl"=>"Albania", "name:gn"=>"Avaña", "name:gu"=>"આલ્બેનિયા", "name:gv"=>"Yn Albaan", "name:ha"=>"Albaniya", "name:he"=>"אַלְבַּנְיָה", "name:hi"=>"अल्बानिया", "name:hr"=>"Albanija", "name:ht"=>"Albani", "name:hu"=>"Albánia", "name:hy"=>"Ալբանիա", "name:ia"=>"Albania", "name:id"=>"Albania", "name:ie"=>"Albania", "name:ig"=>"Albania", "name:io"=>"Albania", "name:is"=>"Albanía", "name:it"=>"Albania", "name:iu"=>"ᐊᓪᐹᓂᐊ", "name:ja"=>"アルバニア", "name:jv"=>"Albania", "name:ka"=>"ალბანეთი", "name:kg"=>"Albania", "name:ki"=>"Arũmbĩnia", "name:kk"=>"Албания", "name:kl"=>"Albania", "name:km"=>"អាល់បានី", "name:kn"=>"ಅಲ್ಬೇನಿಯ", "name:ko"=>"알바니아", "name:ks"=>"اٮ۪لبانِیا", "name:ku"=>"Albanya", "name:kv"=>"Албания", "name:kw"=>"Albani", "name:ky"=>"Албания", "name:la"=>"Albania", "name:lb"=>"Albanien", "name:lg"=>"Alibaniya", "name:li"=>"Albanië", "name:ln"=>"Albania", "name:lo"=>"ແອລເບເນຍ", "name:lt"=>"Albanija", "name:lv"=>"Albānija", "name:mg"=>"Albania", "name:mi"=>"Arapeinia", "name:mk"=>"Албанија", "name:ml"=>"അൽബേനിയ", "name:mn"=>"Албани", "name:mr"=>"आल्बेनिया", "name:ms"=>"Albania", "name:mt"=>"Albanija", "name:my"=>"အယ်လ်ဘေးနီးယား၏", "name:na"=>"Arbainiya", "name:ne"=>"अल्बानिया", "name:nl"=>"Albanië", "name:nn"=>"Albania", "name:no"=>"Albania", "name:nv"=>"Dziłigaii Bikéyah", "name:oc"=>"Albania", "name:om"=>"Albeeniyaa", "name:or"=>"ଆଲବାନିଆ", "name:os"=>"Албани", "name:pa"=>"ਅਲਬਾਨੀਆ", "name:pi"=>"अल्बानिया", "name:pl"=>"Albania", "name:ps"=>"البانیا", "name:pt"=>"Albânia", "name:qu"=>"Albanya", "name:rm"=>"Albania", "name:rn"=>"Alubaniya", "name:ro"=>"Albania", "name:ru"=>"Албания", "name:rw"=>"Alubaniya", "name:sa"=>"अल्बेनिया", "name:sc"=>"Albania", "name:sd"=>"البانيا", "name:se"=>"Albánia", "name:sg"=>"Albanïi", "name:sh"=>"Albanija", "name:si"=>"ඇල්බේනියාව", "name:sk"=>"Albánsko", "name:sl"=>"Albanija", "name:sm"=>"Albania", "name:sn"=>"Albania", "name:so"=>"Albania", "name:sq"=>"Shqipëria", "name:sr"=>"Албанија", "name:ss"=>"I-Alibheniya", "name:st"=>"Albania", "name:su"=>"Albania", "name:sv"=>"Albanien", "name:sw"=>"Albania", "name:ta"=>"அல்பேனியா", "name:te"=>"అల్బేనియా", "name:tg"=>"Албания", "name:th"=>"ประเทศแอลเบเนีย", "name:ti"=>"አልባኒያ", "name:tk"=>"Albaniýa", "name:tl"=>"Albanya", "name:to"=>"ʻAlipania", "name:tr"=>"Arnavutluk", "name:ts"=>"Albania", "name:tt"=>"Албания", "name:tw"=>"Albania", "name:ty"=>"Arapania", "name:ug"=>"ئالبانىيە", "name:uk"=>"Алба́нія", "name:ur"=>"البانیا", "name:uz"=>"Albaniya", "name:vi"=>"Albania", "name:vo"=>"Lalbanän", "name:wa"=>"Albaneye", "name:wo"=>"Albaani", "name:yi"=>"אלבאניע", "name:yo"=>"Albáníà", "name:za"=>"Albania", "name:zh"=>"阿爾巴尼亞", "name:zu"=>"I-Albaniya"
-fo "name"=>"Føroyar", "name:af"=>"Faroëreilande", "name:am"=>"ፋሮ ደሴቶች", "name:an"=>"Islas Feroe", "name:ar"=>"جزر فارو", "name:az"=>"Farer adaları", "name:be"=>"Фарэрскія астравы", "name:bg"=>"Ферьорски острови", "name:bi"=>"Faroe aelan", "name:br"=>"Faero", "name:bs"=>"Farska ostrva", "name:ca"=>"Illes Fèroe", "name:ce"=>"Фарерийн гІайренаш", "name:cs"=>"Faerské ostrovy", "name:cy"=>"Føroyar", "name:da"=>"Færøerne", "name:de"=>"Färöer", "name:dv"=>"ފަރޮއޭ ޖަޒީރާ", "name:ee"=>"Faroe Islands", "name:el"=>"Νήσοι Φερόες", "name:en"=>"Faroe Islands", "name:eo"=>"Ferooj", "name:es"=>"Islas Feroe", "name:et"=>"Fääri saared", "name:eu"=>"Faroeak", "name:fa"=>"جزایر فارو", "name:fi"=>"Färsaaret", "name:fo"=>"Føroyar", "name:fr"=>"Îles Féroé", "name:fy"=>"Faeröer", "name:ga"=>"Oileáin Fharó", "name:gd"=>"Na h-Eileanan Fàro", "name:gl"=>"Illas Feroe", "name:gu"=>"ફરો દ્વિપસમૂહ", "name:gv"=>"Ellanyn ny Geyrragh", "name:he"=>"איי פארו", "name:hi"=>"फ़रो द्वीपसमूह", "name:hr"=>"Ferojski Otoci", "name:hu"=>"Feröer", "name:hy"=>"Ֆարերյան կղզիներ", "name:ia"=>"Insulas Feroe", "name:id"=>"Kepulauan Faroe", "name:io"=>"Faero", "name:is"=>"Færeyjar", "name:it"=>"Fær Øer", "name:ja"=>"フェロー諸島", "name:jv"=>"Kapuloan Faroe", "name:ka"=>"ფარერის კუნძულები", "name:kk"=>"Фарер аралдары", "name:kl"=>"Savalimmiut", "name:ko"=>"페로 제도", "name:ku"=>"Giravên Feroe", "name:kv"=>"Фарер діяс", "name:kw"=>"Ynysow Faroe", "name:la"=>"Faeroae insulae", "name:li"=>"Faeröer", "name:lt"=>"Farerai", "name:lv"=>"Fēru Salas", "name:mi"=>"Moutere Faroe", "name:mk"=>"Фарски Острови", "name:mn"=>"Фарерын арлууд", "name:mr"=>"फेरो द्वीपसमूह", "name:ms"=>"Kepulauan Faroe", "name:mt"=>"Gżejjer Faroe", "name:ne"=>"फरोइ टापु", "name:nl"=>"Faeröer", "name:nn"=>"Færøyane", "name:no"=>"Færøyene", "name:oc"=>"Illas Feròe", "name:os"=>"Фареры сакъадæхтæ", "name:pl"=>"Wyspy Owcze", "name:pt"=>"Ilhas Feroe", "name:qu"=>"Pharuy", "name:rm"=>"Inslas Feroe", "name:ro"=>"Insulele Feroe", "name:ru"=>"Фарерские острова", "name:rw"=>"Ibirwa bya Farowe", "name:se"=>"Fearsullot", "name:sh"=>"Farski Otoci", "name:si"=>"ෆාරෝ දිවයින්", "name:sk"=>"Faerské ostrovy", "name:sl"=>"Ferski otoki", "name:so"=>"Jasiiradaha Feroe", "name:sq"=>"Ishujt Faroe", "name:sr"=>"Фарска Острва", "name:su"=>"Kapuloan Faroe", "name:sv"=>"Färöarna", "name:sw"=>"Visiwa vya Faroe", "name:ta"=>"பரோயே தீவுகள்", "name:tg"=>"Ҷазираҳои Фаро", "name:th"=>"หมู่เกาะแฟโร", "name:tl"=>"Kapuluang Peroe", "name:tr"=>"Faroe Adaları", "name:tt"=>"Фарер утраулары", "name:uk"=>"Фарерські острови", "name:ur"=>"جزائرفارو", "name:vi"=>"Quần đảo Faroe", "name:wo"=>"Duni Faarow", "name:yo"=>"Àwọn Erékùṣù Fàróè", "name:zh"=>"法罗群岛"
-jp "name"=>"日本", "name:ab"=>"Иапониа", "name:af"=>"Japan", "name:am"=>"ጃፓን", "name:an"=>"Chapón", "name:ar"=>"اليابان", "name:as"=>"জাপান", "name:ay"=>"Nihun", "name:az"=>"Yaponiya", "name:ba"=>"Япония", "name:be"=>"Японія", "name:bg"=>"Япония", "name:bn"=>"জাপান", "name:bo"=>"རི་པིན།", "name:br"=>"Japan", "name:bs"=>"Japan", "name:ca"=>"Japó", "name:ce"=>"Япони", "name:ch"=>"Chapan", "name:cs"=>"Japonsko", "name:cu"=>"Ꙗпѡнїꙗ", "name:cv"=>"Япони", "name:cy"=>"Japan", "name:da"=>"Japan", "name:de"=>"Japan", "name:dv"=>"ޖަޕާނު", "name:dz"=>"ཇཱ་པཱན།", "name:ee"=>"Japan", "name:el"=>"Ιαπωνία", "name:en"=>"Japan", "name:eo"=>"Japanio", "name:es"=>"Japón", "name:et"=>"Jaapan", "name:eu"=>"Japonia", "name:fa"=>"ژاپن", "name:fi"=>"Japani", "name:fo"=>"Japan", "name:fr"=>"Japon", "name:fy"=>"Japan", "name:ga"=>"An tSeapáin", "name:gd"=>"An t-Seapan", "name:gl"=>"Xapón", "name:gn"=>"Hapõ", "name:gu"=>"જાપાન", "name:gv"=>"Yn Çhapaan", "name:ha"=>"Japan", "name:he"=>"יפן", "name:hi"=>"जापान", "name:hr"=>"Japan", "name:ht"=>"Japon", "name:hu"=>"Japán", "name:hy"=>"Ճապոնիա", "name:ia"=>"Japon", "name:id"=>"Jepang", "name:ie"=>"Japan", "name:io"=>"Japonia", "name:is"=>"Japan", "name:it"=>"Giappone", "name:iu"=>"ᓃᑉᐊᓐ", "name:ja"=>"日本", "name:jv"=>"Jepang", "name:ka"=>"იაპონია", "name:ki"=>"Japan", "name:kk"=>"Жапония", "name:kl"=>"Japani", "name:km"=>"ជប៉ុន", "name:kn"=>"ಜಪಾನ್", "name:ko"=>"일본", "name:ks"=>"जापान", "name:ku"=>"Japon", "name:kv"=>"Япония", "name:kw"=>"Nihon", "name:ky"=>"Жапония", "name:la"=>"Iaponia", "name:lb"=>"Japan", "name:li"=>"Japan", "name:ln"=>"Zapɔ́", "name:lo"=>"ປະເທດຍີ່ປຸ່ນ", "name:lt"=>"Japonija", "name:lv"=>"Japāna", "name:mg"=>"Japana", "name:mi"=>"Hapani", "name:mk"=>"Јапонија", "name:ml"=>"ജപ്പാൻ", "name:mn"=>"Япон", "name:mo"=>"Жапония", "name:mr"=>"जपान", "name:ms"=>"Jepun", "name:mt"=>"Ġappun", "name:my"=>"ဂျပန်နိုင်ငံ", "name:na"=>"Djapan", "name:ne"=>"जापान", "name:nl"=>"Japan", "name:nn"=>"Japan", "name:no"=>"Japan", "name:nv"=>"Binaʼadaałtzózí Dinéʼiʼ Bikéyah", "name:oc"=>"Japon", "name:om"=>"Jaappaan", "name:or"=>"ଜାପାନ", "name:os"=>"Япон", "name:pa"=>"ਜਪਾਨ", "name:pl"=>"Japonia", "name:ps"=>"جاپان", "name:pt"=>"Japão", "name:qu"=>"Nihun", "name:rm"=>"Giapun", "name:ro"=>"Japonia", "name:ru"=>"Япония", "name:rw"=>"Ubuyapani", "name:sa"=>"सूर्यमूल", "name:sc"=>"Giapone", "name:sd"=>"جاپان", "name:se"=>"Japána", "name:sh"=>"Japan", "name:si"=>"ජපානය", "name:sk"=>"Japonsko", "name:sl"=>"Japonska", "name:sm"=>"Iapani", "name:so"=>"Jabaan", "name:sq"=>"Japonia", "name:sr"=>"Јапан", "name:ss"=>"IJaphani", "name:su"=>"Jepang", "name:sv"=>"Japan", "name:sw"=>"Japani", "name:ta"=>"ஜப்பான்", "name:te"=>"జపాన్", "name:tg"=>"Жопун", "name:th"=>"ประเทศญี่ปุ่น", "name:ti"=>"ጃፓን", "name:tk"=>"Ýaponiýa", "name:tl"=>"Hapon", "name:tr"=>"Japonya", "name:tt"=>"Япония", "name:tw"=>"Yapan", "name:ty"=>"Tāpōnē", "name:ug"=>"ياپونىيە", "name:uk"=>"Японія", "name:ur"=>"جاپان", "name:uz"=>"Yaponiya", "name:vi"=>"Nhật Bản", "name:vo"=>"Yapän", "name:wo"=>"Sapoŋ", "name:yi"=>"יאפאן", "name:yo"=>"Japan", "name:za"=>"Nditbonj", "name:zh"=>"日本", "name:zu"=>"IJapani"
-io "name"=>"British Indian Ocean Territory", "name:af"=>"Britse Indiese Oseaan Gebied", "name:ak"=>"Britenfo Hɔn Man Wɔ India Po No Mu", "name:am"=>"የብሪታኒያ ህንድ ውቂያኖስ ግዛት", "name:an"=>"Territorio Britanico de l'Ozián Indico", "name:ar"=>"إقليم المحيط الهندي البريطاني", "name:az"=>"Britaniya-Hindistan Okeanik territoriyası", "name:be"=>"Брытанскія Індыйска-акіянскія тэрыторыі", "name:bg"=>"Британска индоокеанска територия", "name:bm"=>"Angilɛ ka ɛndu dugukolo", "name:bn"=>"ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল", "name:br"=>"Tiriad Meurvor Indez Breizh-Veur", "name:bs"=>"Britanski teritorij Indijskog okeana", "name:ca"=>"Territori Britànic de l'Oceà Índic", "name:cs"=>"Britské indickooceánské území", "name:cy"=>"Tiriogaeth Prydain yng Nghefnfor India", "name:da"=>"Britiske Indiske Ocean", "name:de"=>"Britisches Territorium im Indischen Ozean", "name:dz"=>"བྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངས", "name:ee"=>"Britaintɔwo ƒe india ƒudome nutome", "name:el"=>"Βρετανικό Έδαφος Ινδικού Ωκεανού", "name:en"=>"British Indian Ocean Territory", "name:eo"=>"Brita Hindoceana Teritorio", "name:es"=>"Territorio Británico del Océano Índico", "name:et"=>"Briti India ookeani ala", "name:eu"=>"Indiako Ozeanoko Britainiar Lurraldea", "name:fa"=>"مستعمرههای بریتانیا در اقیانوس هند", "name:ff"=>"Keeriindi britaani to maayo enndo", "name:fi"=>"Brittiläinen Intian valtameren alue", "name:fo"=>"Bretsku Indiahavsoyggjarnar", "name:fr"=>"Territoire britannique de l'Océan Indien", "name:fy"=>"Britske Yndyske-Oseaanterritoarium", "name:ga"=>"Críoch Aigéan Indiach na Breataine", "name:gd"=>"Ranntair Breatannach Cuan nan Innseachan", "name:gl"=>"Territorio Británico do Océano Índico", "name:gu"=>"બ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરી", "name:ha"=>"Yankin Birtaniya Na Tekun Indiya", "name:he"=>"טריטוריה בריטית באוקיאנוס ההודי", "name:hi"=>"ब्रिटिश हिंद महासागर क्षेत्र", "name:hr"=>"Britanski Indijskooceanski Teritoriji", "name:hu"=>"Brit Indiai-óceáni Terület", "name:ia"=>"Territorio oceanic britanno-indian", "name:id"=>"Teritorial Britania di Samudra Hindia", "name:io"=>"Britaniana teritorio en Indiana Oceano", "name:is"=>"Breska Indlandshafseyjar", "name:it"=>"Territorio britannico dell'oceano Indiano", "name:ja"=>"イギリス領インド洋地域", "name:ka"=>"ბრიტანეთის ინდოეთის ოკეანის ტერიტორია", "name:ki"=>"Eneo la Uingereza katika Bahari Hindi", "name:km"=>"ដែនមហាសមុទ្រឥណ្ឌា ចក្រភពអង់គ្លេស", "name:kn"=>"ಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾಸಾಗರ ಪ್ರದೇಶ", "name:ko"=>"영국령 인도양 지역", "name:ks"=>"برطانوی بحرِ ہِنٛدۍ علاقہٕ", "name:ku"=>"Xakên Brîtanyayê yên Okyanûsa Hindî", "name:lg"=>"Bizinga by'eCago", "name:ln"=>"Mabelé ya Angɛlɛtɛ́lɛ na mbú ya Indiya", "name:lo"=>"ບຣິດທິສອິນດ່ຽນໂອຊ່ຽນເທີຣິທໍຣີ", "name:lt"=>"Indijos vandenyno Britų sritis", "name:lv"=>"Indijas okeāna Britu teritorija", "name:mg"=>"Faridranomasina indiana britanika", "name:mk"=>"Британска Индоокеанска Територија", "name:ml"=>"ബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശം", "name:mn"=>"Британийн Энэтхэгийн Далайн Нутаг дэвсгэр", "name:mr"=>"ब्रिटीश हिंदी महासागर क्षेत्र", "name:ms"=>"Wilayah Lautan Hindi British", "name:my"=>"ဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်", "name:ne"=>"बेलायती हिन्द महासागर क्षेत्र", "name:nl"=>"Brits Territorium in de Indische Oceaan", "name:nn"=>"Britiske område i Det indiske hav", "name:no"=>"Det britiske territoriet i Indiahavet", "name:or"=>"ବ୍ରିଟିଶ୍ ଭାରତୀୟ ସାମୁଦ୍ରିକ କ୍ଷେତ୍ର", "name:pl"=>"Brytyjskie Terytorium Oceanu Indyjskiego", "name:pt"=>"Território Britânico do Oceano Índico", "name:rm"=>"Territori Britannic en l'Ocean Indic", "name:rn"=>"Intara y'Ubwongereza yo mu birwa by'Abahindi", "name:ro"=>"Teritoriul Britanic din Oceanul Indian", "name:ru"=>"Британская Территория в Индийском Океане", "name:sg"=>"Sêse tî Anglëe na Ngûyämä tî Ênnde", "name:sh"=>"Britanski teritorij Indijskog oceana", "name:si"=>"බ්රිතාන්ය ඉන්දීය සාගර ප්රාන්තය", "name:sk"=>"Britské indickooceánske územie", "name:sl"=>"Britanski teritorij v Indijskem oceanu", "name:sr"=>"Британска територија Индијског океана", "name:sv"=>"Brittiska territoriet i Indiska oceanen", "name:sw"=>"Eneo la Uingereza katika Bahari Hindi", "name:ta"=>"பிரித்தானிய இந்தியப் பெருங்கடல் மண்டலம்", "name:te"=>"బ్రిటిష్ భారతీయ ఓషన్ ప్రాంతం", "name:th"=>"บริติชอินเดียนโอเชียนเทร์ริทอรี", "name:ti"=>"የብሪታኒያ ህንድ ውቂያኖስ ግዛት", "name:to"=>"Potu fonua moana ʻInitia fakapilitānia", "name:tr"=>"Britanya Hint Okyanusu Toprakları", "name:uk"=>"Британська територія в Індійському океані", "name:ur"=>"برطانوی ہندوستانی سمندری خطہ", "name:vi"=>"Lãnh thổ Ấn Độ Dương thuộc Anh", "name:yo"=>"Orílẹ́ède Etíkun Índíánì ti Ìlú Bírítísì", "name:zh"=>"英属印度洋领地", "name:zu"=>"i-British Indian Ocean Territory"
-gq "name"=>"Guinea Ecuatorial", "name:af"=>"Ekwatoriaal-Guinee", "name:ak"=>"Gini Ikuweta", "name:am"=>"ኢኳቶሪያል ጊኔ", "name:an"=>"Guinea Equatorial", "name:ar"=>"غينيا الاستوائية", "name:az"=>"Ekvatorial Qvineya", "name:ba"=>"Экватор Гвинеяһы", "name:be"=>"Экватарыяльная Гвінея", "name:bg"=>"Екваториална Гвинея", "name:bh"=>"भूमध्यरेखीय गिनी", "name:bm"=>"Cɛmajan Gine", "name:bn"=>"বিষুবীয় গিনি", "name:bo"=>"ཨི་ཁུའ་ཊོ་རལ་གི་ནེ།", "name:br"=>"Ginea ar C'heheder", "name:bs"=>"Ekvatorijalna Gvineja", "name:ca"=>"Guinea Equatorial", "name:ce"=>"Дуьнена асанан Гвине", "name:co"=>"Guinea Equatoriale", "name:cs"=>"Rovníková Guinea", "name:cv"=>"Экваториаллă Гвиней", "name:cy"=>"Gini Gyhydeddol", "name:da"=>"Ækvatorialguinea", "name:de"=>"Äquatorialguinea", "name:dv"=>"އިކުއެޓޯރިއަލް ގިނީ", "name:dz"=>"ཨེ་ཀུ་ཊོ་རེལ་ གི་ནི", "name:ee"=>"Gini Ekwatoria", "name:el"=>"Ισημερινή Γουινέα", "name:en"=>"Equatorial Guinea", "name:eo"=>"Ekvatora Gvineo", "name:es"=>"Guinea Ecuatorial", "name:et"=>"Ekvatoriaal-Guinea", "name:eu"=>"Ekuatore Ginea", "name:fa"=>"گینه استوایی", "name:ff"=>"Gine Ekwatoriyal", "name:fi"=>"Päiväntasaajan Guinea", "name:fo"=>"Ekvatorguinea", "name:fr"=>"Guinée équatoriale", "name:fy"=>"Ekwatoriaal-Guinee", "name:ga"=>"an Ghuine Mheánchriosach", "name:gd"=>"Gini Mheadhan-Chriosach", "name:gl"=>"Guinea Ecuatorial", "name:gu"=>"ઇક્વેટોરિયલ ગિની", "name:gv"=>"Guinea Chryss ny Cruinney", "name:ha"=>"Gini Ikwatoriya", "name:he"=>"גינאה המשוונית", "name:hi"=>"भूमध्यरेखीय गिनी", "name:hr"=>"Ekvatorska Gvineja", "name:ht"=>"Gine ekwateryal", "name:hu"=>"Egyenlítői-Guinea", "name:hy"=>"Հասարակածային Գվինեա", "name:ia"=>"Guinea Equatorial", "name:id"=>"Guinea Khatulistiwa", "name:ie"=>"Equatorial Guinéa", "name:ig"=>"Equatorial Guinea", "name:io"=>"Equatorala Guinea", "name:is"=>"Miðbaugs-Gínea", "name:it"=>"Guinea Equatoriale", "name:ja"=>"赤道ギニア", "name:jv"=>"Guinea Khatulistiwa", "name:ka"=>"ეკვატორული გვინეა", "name:kg"=>"Ginea ya Ekwatelo", "name:ki"=>"Ginekweta", "name:kk"=>"Экваторлық Гвинея", "name:km"=>"ហ្គីណេអេក្វាទ័រ", "name:kn"=>"ವಿಷುವದ್ರೇಖೆಯ ಗಿನಿ", "name:ko"=>"적도 기니", "name:ks"=>"اِکوِٹورِیَل گِنی", "name:ku"=>"Gîneya Rojbendî", "name:kw"=>"Gyni Ekwadoriel", "name:la"=>"Guinea Aequatorensis", "name:lb"=>"Equatorialguinea", "name:lg"=>"Equatorial Guinea", "name:li"=>"Equatoriaal Guinee", "name:ln"=>"Gine-Ekwatorial", "name:lo"=>"ອີຄົວໂທເລຍກີເນຍ", "name:lt"=>"Pusiaujo Gvinėja", "name:lv"=>"Ekvatoriālā Gvineja", "name:mg"=>"Ginea Ekoatorialy", "name:mi"=>"Kini Ekuatoria", "name:mk"=>"Екваторска Гвинеја", "name:ml"=>"ഇക്വറ്റോറിയൽ ഗിനി", "name:mn"=>"Экваторын Гвиней", "name:mr"=>"इक्वेटोरीयल गिनी", "name:ms"=>"Guinea Khatulistiwa", "name:mt"=>"Gwinea Ekwatorjali", "name:my"=>"အီကွေတာဂီနီနိုင်ငံ", "name:na"=>"Gini t Ekwador", "name:nb"=>"Ekvatorial-Guinea", "name:ne"=>"इक्वेटोरियल गिनी", "name:nl"=>"Equatoriaal Guinee", "name:nn"=>"Ekvatorial-Guinea", "name:no"=>"Ekvatorial-Guinea", "name:nv"=>"Gíní Nahasdzáán Ałníiʼgi Siʼánígíí", "name:oc"=>"Guinèa Eqüatoriala", "name:om"=>"Iqu’aatoriyaal Giinii", "name:or"=>"ବିଷୁବରେଖୀୟ ଗିନି", "name:os"=>"Экваториалон Гвиней", "name:pa"=>"ਭੂ-ਮੱਧ ਰੇਖਾਈ ਗਿਨੀ", "name:pl"=>"Gwinea Równikowa", "name:ps"=>"اېکواټوريال ګوينا", "name:pt"=>"Guiné Equatorial", "name:qu"=>"Chawpipacha Khiniya", "name:rm"=>"Guinea Equatoriala", "name:ro"=>"Guineea Ecuatorială", "name:ru"=>"Экваториальная Гвинея", "name:rw"=>"Gineya Ekwatoriyale", "name:sc"=>"Guinea Ecuadoriale", "name:se"=>"Ekvatoriála Guinea", "name:sg"=>"Ginëe tî Ekuatëre", "name:sh"=>"Ekvatorijalna Gvineja", "name:si"=>"සමක ගිනියාව", "name:sk"=>"Rovníková Guinea", "name:sl"=>"Ekvatorialna Gvineja", "name:sm"=>"Kini Ekuatoria", "name:sn"=>"Equatorial Guinea", "name:so"=>"Ikweetiga Guinea", "name:sq"=>"Guinea Ekuatoriale", "name:sr"=>"Екваторијална Гвинеја", "name:st"=>"Equatorial Guinea", "name:su"=>"Guinéa Khatulistiwa", "name:sv"=>"Ekvatorialguinea", "name:sw"=>"Guinea ya Ikweta", "name:ta"=>"எக்குவடோரியல் கினி", "name:te"=>"ఎక్వేటోరియాల్ గినియా", "name:tg"=>"Гвинеяи Истивоӣ", "name:th"=>"อิเควทอเรียลกินี", "name:ti"=>"ኢኳቶሪያል ጊኒ", "name:tk"=>"Ekwatorial Gwineýa", "name:tl"=>"Gineang Ekwatoriyal", "name:to"=>"ʻEkueta Kini", "name:tr"=>"Ekvator Ginesi", "name:ts"=>"Gineya ya le Nkaveni", "name:tt"=>"Экваториа́ль Гвине́я", "name:ug"=>"ئېكۋاتور گۋىنېيىسى", "name:uk"=>"Екваторіа́льна Ґвіне́я", "name:ur"=>"استوائی گنی", "name:uz"=>"Ekvatorli Gvineya", "name:vi"=>"Guinea Xích Đạo", "name:vo"=>"Kveatora-Gineyän", "name:wo"=>"Gineg yamoo", "name:yi"=>"עקוואטארישע גינע", "name:yo"=>"Guinea Alágedeméjì", "name:zh"=>"赤道几内亚", "name:zu"=>"iGini Enkabazwe"
-pk "name"=>"پاکستان", "name:af"=>"Pakistan", "name:am"=>"ፓኪስታን", "name:an"=>"Pakistán", "name:ar"=>"باكستان", "name:as"=>"পাকিস্তান", "name:az"=>"Pakistan", "name:ba"=>"Пакистан", "name:be"=>"Пакістан", "name:bg"=>"Пакистан", "name:bh"=>"पाकिस्तान", "name:bn"=>"পাকিস্তান", "name:bo"=>"པ་ཀི་སི་ཐན", "name:br"=>"Pakistan", "name:bs"=>"Pakistan", "name:ca"=>"Pakistan", "name:ce"=>"Пакистан", "name:cs"=>"Pákistán", "name:cv"=>"Пакистан", "name:cy"=>"Pakistan", "name:da"=>"Pakistan", "name:de"=>"Pakistan", "name:dv"=>"ޕާކިސްތާން", "name:el"=>"Πακιστάν", "name:en"=>"Pakistan", "name:eo"=>"Pakistano", "name:es"=>"Pakistán", "name:et"=>"Pakistan", "name:eu"=>"Pakistan", "name:fa"=>"پاکستان", "name:fi"=>"Pakistan", "name:fo"=>"Pakistan", "name:fr"=>"Pakistan", "name:fy"=>"Pakistan", "name:ga"=>"An Phacastáin", "name:gd"=>"Pagastàn", "name:gl"=>"Paquistán", "name:gn"=>"Pakistán", "name:gu"=>"પાકિસ્તાન", "name:gv"=>"Yn Phakistaan", "name:ha"=>"Pakistan", "name:he"=>"פקיסטן", "name:hi"=>"पाकिस्तान", "name:hr"=>"Pakistan", "name:ht"=>"Pakistan", "name:hu"=>"Pakisztán", "name:hy"=>"Պակիստան", "name:ia"=>"Pakistan", "name:id"=>"Pakistan", "name:ie"=>"Pakistan", "name:io"=>"Pakistan", "name:is"=>"Pakistan", "name:it"=>"Pakistan", "name:iu"=>"ᐸᑭᔅᑕᓐ", "name:ja"=>"パキスタン", "name:jv"=>"Pakistan", "name:ka"=>"პაკისტანი", "name:ki"=>"Pakistan", "name:kk"=>"Пәкістан", "name:kl"=>"Pakistan", "name:km"=>"ប៉ាគីស្ថាន", "name:kn"=>"ಪಾಕಿಸ್ತಾನ", "name:ko"=>"파키스탄", "name:ks"=>"پاکِستان", "name:ku"=>"Pakistan", "name:kv"=>"Пакистан", "name:kw"=>"Pakistan", "name:ky"=>"Пакистан", "name:la"=>"Pakistania", "name:lb"=>"Pakistan", "name:li"=>"Pakistan", "name:ln"=>"Pakistáni", "name:lt"=>"Pakistanas", "name:lv"=>"Pakistāna", "name:mi"=>"Pakitāne", "name:mk"=>"Пакистан", "name:ml"=>"പാകിസ്താൻ", "name:mn"=>"Пакистан", "name:mr"=>"पाकिस्तान", "name:ms"=>"Pakistan", "name:mt"=>"Pakistan", "name:my"=>"ပါကစ္စတန်နိုင်ငံ", "name:na"=>"Pakistan", "name:nb"=>"Pakistan", "name:ne"=>"पाकिस्तान", "name:nl"=>"Pakistan", "name:nn"=>"Pakistan", "name:no"=>"Pakistan", "name:nv"=>"Eʼeʼaahjí Naakaii Dootłʼizhí Bikéyah", "name:oc"=>"Paquistan", "name:or"=>"ପାକିସ୍ଥାନ", "name:os"=>"Пакистан", "name:pa"=>"ਪਾਕਿਸਤਾਨ", "name:pl"=>"Pakistan", "name:ps"=>"پاکستان", "name:pt"=>"Paquistão", "name:qu"=>"Pakistan", "name:ro"=>"Pakistan", "name:ru"=>"Пакистан", "name:rw"=>"Pakisitani", "name:sa"=>"पाकिस्तानम्", "name:sd"=>"پاڪستان", "name:se"=>"Pakistan", "name:sh"=>"Pakistan", "name:si"=>"පාකිස්ථානය", "name:sk"=>"Pakistan", "name:sl"=>"Pakistan", "name:so"=>"Bakistaan", "name:sq"=>"Pakistani", "name:sr"=>"Пакистан", "name:ss"=>"IPhakhistani", "name:su"=>"Pakistan", "name:sv"=>"Pakistan", "name:sw"=>"Pakistan", "name:ta"=>"பாக்கித்தான்", "name:te"=>"పాకిస్తాన్", "name:tg"=>"Покистон", "name:th"=>"ประเทศปากีสถาน", "name:tk"=>"Päkistan", "name:tl"=>"Pakistan", "name:tr"=>"Pakistan", "name:tt"=>"Пакъстан", "name:ug"=>"پاكىستان", "name:uk"=>"Пакистан", "name:ur"=>"پاکستان", "name:uz"=>"Pokiston", "name:vi"=>"Pakistan", "name:vo"=>"Pakistän", "name:wa"=>"Pakistan", "name:wo"=>"Pakistaan", "name:yi"=>"פאקיסטאן", "name:yo"=>"Pakístàn", "name:zh"=>"巴基斯坦", "name:zu"=>"IPakistani"
-be "name"=>"België / Belgique / Belgien", "name:af"=>"België", "name:ak"=>"Belgium", "name:am"=>"ቤልጅግ", "name:an"=>"Belchica", "name:ar"=>"بلجيكا", "name:av"=>"Бе́льгия", "name:ay"=>"Bilkiya", "name:az"=>"Belçika", "name:ba"=>"Бе́льгия", "name:be"=>"Бeльгія", "name:bg"=>"Белгия", "name:bh"=>"बेल्जियम", "name:bi"=>"Beljiom", "name:bm"=>"Bɛliziki", "name:bn"=>"বেলজিয়াম", "name:bo"=>"པེར་ཅིན།", "name:br"=>"Belgia", "name:bs"=>"Belgija", "name:ca"=>"Bèlgica", "name:ce"=>"Бельги", "name:co"=>"Belgica", "name:cs"=>"Belgie", "name:cu"=>"Бє́лгїѥ", "name:cv"=>"Бельги", "name:cy"=>"Gwlad Belg", "name:da"=>"Belgien", "name:de"=>"Belgien", "name:dv"=>"ބެލްޖިއަމް", "name:dz"=>"བེལ་ཇིཡམ", "name:ee"=>"Belgium", "name:el"=>"Βέλγιο", "name:en"=>"Belgium", "name:eo"=>"Belgio", "name:es"=>"Bélgica", "name:et"=>"Belgia", "name:eu"=>"Belgika", "name:fa"=>"بلژیک", "name:ff"=>"Beljik", "name:fi"=>"Belgia", "name:fo"=>"Belgia", "name:fr"=>"Belgique", "name:fy"=>"Belgje", "name:ga"=>"an Bheilg", "name:gd"=>"a' Bheilg", "name:gl"=>"Bélxica", "name:gn"=>"Véyhika", "name:gu"=>"બેલ્જિયમ", "name:gv"=>"Velg", "name:ha"=>"Beljik", "name:he"=>"בֶּלְגְיָה", "name:hi"=>"बेल्जियम", "name:hr"=>"Belgija", "name:ht"=>"Bèljik", "name:hu"=>"Belgium", "name:hy"=>"Բելգիա", "name:ia"=>"Belgica", "name:id"=>"Belgia", "name:ie"=>"Belgia", "name:ig"=>"Belgium", "name:io"=>"Belgia", "name:is"=>"Belgía", "name:it"=>"Belgio", "name:ja"=>"ベルギー", "name:jv"=>"Bèlgia", "name:ka"=>"ბელგია", "name:kg"=>"Belezi", "name:ki"=>"Ubelgiji", "name:kk"=>"Бельгия", "name:kl"=>"Belgia", "name:km"=>"បែលហ្ស៉ិក", "name:kn"=>"ಬೆಲ್ಜಿಯಂ", "name:ko"=>"벨기에", "name:ks"=>"बेल्जियम", "name:ku"=>"Belçîka", "name:kv"=>"Бельгия", "name:kw"=>"Pow Belg", "name:ky"=>"Бельгия", "name:la"=>"Belgica", "name:lb"=>"Belsch", "name:lg"=>"Bubirigi", "name:li"=>"Belsj", "name:ln"=>"Bɛ́ljika", "name:lo"=>"ປະເທດແບນຊິກ", "name:lt"=>"Belgija", "name:lv"=>"Beļģija", "name:mg"=>"Belzika", "name:mi"=>"Pehiamu", "name:mk"=>"Белгија", "name:ml"=>"ബെൽജിയം", "name:mn"=>"Бельги", "name:mr"=>"बेल्जियम", "name:ms"=>"Belgium", "name:mt"=>"Belġju", "name:my"=>"ဘယ်လ်ဂျီယမ်နိုင်ငံ", "name:na"=>"Berdjiyum", "name:nb"=>"Belgia", "name:ne"=>"बेल्जियम", "name:nl"=>"België", "name:nn"=>"Belgia", "name:no"=>"Belgia", "name:oc"=>"Belgica", "name:om"=>"Beeljiyeem", "name:or"=>"ବେଲଜିଅମ", "name:os"=>"Бельги", "name:pa"=>"ਬੈਲਜੀਅਮ", "name:pi"=>"बेल्जियम", "name:pl"=>"Belgia", "name:ps"=>"بلجیم", "name:pt"=>"Bélgica", "name:qu"=>"Bilhika", "name:rm"=>"Belgia", "name:rn"=>"Ububirigi", "name:ro"=>"Belgia", "name:ru"=>"Бельгия", "name:rw"=>"Ububiligi", "name:sa"=>"बेल्जियम", "name:sc"=>"Bèlgiu", "name:sd"=>"بيلجيم", "name:se"=>"Belgia", "name:sg"=>"Bêleze", "name:sh"=>"Belgija", "name:si"=>"බෙල්ජියම්", "name:sk"=>"Belgicko", "name:sl"=>"Bélgija", "name:sm"=>"Peleseuma", "name:sn"=>"Belgium", "name:so"=>"Beljim", "name:sq"=>"Belgjika", "name:sr"=>"Белгија", "name:ss"=>"iBhelijiyamu", "name:su"=>"Bélgia", "name:sv"=>"Belgien", "name:sw"=>"Ubelgiji", "name:ta"=>"பெல்ஜியம்", "name:te"=>"బెల్జియం", "name:tg"=>"Белгия", "name:th"=>"เบลเยียม", "name:ti"=>"ቤልጄም", "name:tk"=>"Belgiýa", "name:tl"=>"Belhika", "name:to"=>"Pelesiume", "name:tr"=>"Belçika", "name:ts"=>"Belgium", "name:tt"=>"Бе́льгия", "name:tw"=>"Belgium", "name:ug"=>"بېلگىيە", "name:uk"=>"Бе́льгія", "name:ur"=>"بلجئیم", "name:uz"=>"Belgiya", "name:vi"=>"Bỉ", "name:vo"=>"Belgän", "name:wa"=>"Beldjike", "name:wo"=>"Belsik", "name:yi"=>"בעלגיע", "name:yo"=>"Bẹ́ljíọ̀m", "name:zh"=>"比利時", "name:zu"=>"i-Belgium"
-eg "name"=>"مصر", "name:ab"=>"Мы́сры", "name:af"=>"Egipte", "name:ak"=>"Igyipt", "name:am"=>"ግብፅ", "name:an"=>"Echipto", "name:ar"=>"مصر", "name:as"=>"ইজিপ্ত", "name:av"=>"Еги́пет", "name:ay"=>"Iqiqtu", "name:az"=>"Misir", "name:ba"=>"Мысыр", "name:be"=>"Егі́пет", "name:bg"=>"Египет", "name:bh"=>"मिस्र", "name:bm"=>"Misra", "name:bn"=>"মিশর", "name:bo"=>"ཨའི་ཅི།", "name:br"=>"Egipt", "name:bs"=>"Egipat", "name:ca"=>"Egipte", "name:ce"=>"Мисар", "name:ch"=>"Ehiptu", "name:cs"=>"Egypt", "name:cu"=>"Єгѷптъ", "name:cy"=>"Yr Aifft", "name:da"=>"Egypten", "name:de"=>"Ägypten", "name:dv"=>"މިޞްރު", "name:ee"=>"Edzipti", "name:el"=>"Αίγυπτος", "name:en"=>"Egypt", "name:eo"=>"Egiptio", "name:es"=>"Egipto", "name:et"=>"Egiptus", "name:eu"=>"Egipto", "name:fa"=>"مصر", "name:ff"=>"Ejipt", "name:fi"=>"Egypti", "name:fj"=>"Ijipta", "name:fo"=>"Egyptaland", "name:fr"=>"Égypte", "name:fy"=>"Egypte", "name:ga"=>"An Éigipt", "name:gd"=>"An Èipheit", "name:gl"=>"Exipto", "name:gn"=>"Ehipto", "name:gu"=>"ઇજિપ્ત", "name:gv"=>"Yn Egypt", "name:ha"=>"Misra", "name:he"=>"מצרים", "name:hi"=>"मिस्र", "name:hr"=>"Egipat", "name:ht"=>"Ejip", "name:hu"=>"Egyiptom", "name:hy"=>"Եգիպտոս", "name:ia"=>"Egypto", "name:id"=>"Mesir", "name:ie"=>"Egiptia", "name:ig"=>"Egypt", "name:io"=>"Egiptia", "name:is"=>"Egyptaland", "name:it"=>"Egitto", "name:ja"=>"エジプト", "name:jv"=>"Mesir", "name:ka"=>"ეგვიპტე", "name:kg"=>"Misiri", "name:ki"=>"Egypt", "name:kk"=>"Мысыр", "name:kl"=>"Egypt", "name:km"=>"អេហ៊្សីប", "name:kn"=>"ಈಜಿಪ್ಟ್", "name:ko"=>"이집트", "name:ks"=>"مِسر", "name:ku"=>"Misir", "name:kv"=>"Египет", "name:kw"=>"Ejyp", "name:ky"=>"Египет", "name:la"=>"Aegyptus", "name:lb"=>"Egypten", "name:lg"=>"Egypt", "name:li"=>"Egypte", "name:ln"=>"Ejipte", "name:lo"=>"ອີຢິບ", "name:lt"=>"Egiptas", "name:lv"=>"Ēģipte", "name:mg"=>"Ejipta", "name:mi"=>"Īhipa", "name:mk"=>"Египет", "name:ml"=>"ഈജിപ്ത്", "name:mn"=>"Египет", "name:mr"=>"इजिप्त", "name:ms"=>"Mesir", "name:mt"=>"Eġittu", "name:my"=>"အီဂျစ်နိုင်ငံ", "name:na"=>"Idjipt", "name:ne"=>"मिश्र", "name:nl"=>"Egypte", "name:nn"=>"Egypt", "name:no"=>"Egypt", "name:nv"=>"Ííjip", "name:oc"=>"Egipte", "name:om"=>"Ijiipti", "name:or"=>"ଇଜିପ୍ଟ", "name:os"=>"Мысыр", "name:pa"=>"ਮਿਸਰ", "name:pi"=>"ईजिप्ट", "name:pl"=>"Egipt", "name:ps"=>"مصر", "name:pt"=>"Egito", "name:qu"=>"Ihiptu", "name:rm"=>"Egipta", "name:rn"=>"Egipto", "name:ro"=>"Egipt", "name:ru"=>"Египет", "name:sa"=>"ईजिप्तदेशः", "name:sc"=>"Egittu", "name:sd"=>"مصر", "name:se"=>"Egypta", "name:sg"=>"Kâmitâ", "name:sh"=>"Egipat", "name:si"=>"ඊජීප්තුව", "name:sk"=>"Egypt", "name:sl"=>"Egipt", "name:sm"=>"Aikupito", "name:sn"=>"Egypt", "name:so"=>"Masar", "name:sq"=>"Egjipti", "name:sr"=>"Египат", "name:ss"=>"iGibhithe", "name:st"=>"Egepeta", "name:su"=>"Mesir", "name:sv"=>"Egypten", "name:sw"=>"Misri", "name:ta"=>"எகிப்து", "name:te"=>"ఈజిప్టు", "name:tg"=>"Миср", "name:th"=>"ประเทศอียิปต์", "name:ti"=>"ግብጽ", "name:tk"=>"Müsür", "name:tl"=>"Ehipto", "name:to"=>"ʻIsipite", "name:tr"=>"Mısır", "name:ts"=>"Gibita", "name:tt"=>"Мисы́р", "name:tw"=>"Egypt", "name:ty"=>"’Aifiti", "name:ug"=>"مىسىر", "name:uk"=>"Єги́пет", "name:ur"=>"مصر", "name:uz"=>"Misr", "name:vi"=>"Ai Cập", "name:vo"=>"Lägüptän", "name:wa"=>"Edjipe", "name:wo"=>"Isipt", "name:yi"=>"עגיפטן", "name:yo"=>"Ẹ́gíptì", "name:za"=>"Aehciz", "name:zh"=>"埃及", "name:zu"=>"iGibhithe"
-jo "name"=>"الأردن", "name:af"=>"Jordanië", "name:am"=>"ጆርዳን", "name:an"=>"Chordania", "name:ar"=>"الأردن", "name:az"=>"İordaniya", "name:ba"=>"Иордания", "name:be"=>"Іарданія", "name:bg"=>"Йордания", "name:bm"=>"Ordon", "name:bn"=>"জর্দান", "name:bo"=>"རྗོར་ཌན།", "name:br"=>"Jordania", "name:bs"=>"Jordan", "name:ca"=>"Jordània", "name:cs"=>"Jordánsko", "name:cv"=>"Иордани", "name:cy"=>"Gwlad Iorddonen", "name:da"=>"Jordan", "name:de"=>"Jordanien", "name:dv"=>"އުރުދުން", "name:el"=>"Ιορδανία", "name:en"=>"Jordan", "name:eo"=>"Jordanio", "name:es"=>"Jordania", "name:et"=>"Jordaania", "name:eu"=>"Jordania", "name:fa"=>"اردن", "name:fi"=>"Jordania", "name:fo"=>"Jordan", "name:fr"=>"Jordanie", "name:fy"=>"Jordaanje", "name:ga"=>"An Iordáin", "name:gd"=>"Iòrdan", "name:gl"=>"Xordania", "name:gu"=>"જૉર્ડન", "name:gv"=>"Yn Jordaan", "name:he"=>"ירדן", "name:hi"=>"जॉर्डन", "name:hr"=>"Jordan", "name:ht"=>"Jòdani", "name:hu"=>"Jordánia", "name:hy"=>"Հորդանան", "name:ia"=>"Jordania", "name:id"=>"Yordania", "name:ie"=>"Jordania", "name:io"=>"Jordania", "name:is"=>"Jórdanía", "name:it"=>"Giordania", "name:ja"=>"ヨルダン", "name:jv"=>"Yordania", "name:ka"=>"იორდანია", "name:kk"=>"Иордания", "name:kl"=>"Jordan", "name:km"=>"ហ្សកដង់", "name:ko"=>"요르단", "name:ks"=>"اردن", "name:ku"=>"Urdun", "name:kv"=>"Иордания", "name:kw"=>"Jordan", "name:la"=>"Iordania", "name:lb"=>"Jordanien", "name:li"=>"Jordanië", "name:ln"=>"Zordaní", "name:lt"=>"Jordanija", "name:lv"=>"Jordānija", "name:mi"=>"Hōrano", "name:mk"=>"Јордан", "name:ml"=>"ജോർദാൻ", "name:mn"=>"Йордан", "name:mr"=>"जॉर्डन", "name:ms"=>"Jordan", "name:mt"=>"Ġordan", "name:my"=>"ဂျော်ဒန်နိုင်ငံ", "name:na"=>"Djordan", "name:nl"=>"Jordanië", "name:nn"=>"Jordan", "name:no"=>"Jordan", "name:nv"=>"Jóoʼdan", "name:oc"=>"Jordania", "name:or"=>"ଜୋର୍ଡାନ", "name:os"=>"Иордани", "name:pa"=>"ਜਾਰਡਨ", "name:pl"=>"Jordania", "name:ps"=>"اردن", "name:pt"=>"Jordânia", "name:qu"=>"Hurdanya", "name:ro"=>"Iordania", "name:ru"=>"Иордания", "name:rw"=>"Yorudani", "name:sa"=>"जार्डन", "name:se"=>"Jordania", "name:sh"=>"Jordan", "name:sk"=>"Jordánsko", "name:sl"=>"Jordanija", "name:so"=>"Urdun", "name:sq"=>"Jordania", "name:sr"=>"Јордан", "name:ss"=>"IJoridane", "name:su"=>"Yordania", "name:sv"=>"Jordanien", "name:sw"=>"Yordani", "name:ta"=>"ஜோர்தான்", "name:te"=>"జోర్డాన్", "name:th"=>"ประเทศจอร์แดน", "name:tk"=>"Iordaniýa", "name:tl"=>"Hordan", "name:tr"=>"Ürdün", "name:tt"=>"Үрдүн", "name:ug"=>"ئىئوردانىيە", "name:uk"=>"Йорданія", "name:ur"=>"اردن", "name:uz"=>"Iordaniya", "name:vi"=>"Jordan", "name:vo"=>"Yordän", "name:wo"=>"Jordaani", "name:yi"=>"יארדאניע", "name:yo"=>"Jọ́rdánì", "name:zh"=>"约旦/約旦"
-tn "name"=>"تونس", "name:af"=>"Tunisië", "name:am"=>"ቱኒዚያ", "name:an"=>"Tunicia", "name:ar"=>"تونس", "name:az"=>"Tunis", "name:ba"=>"Тунис", "name:be"=>"Туніс", "name:bg"=>"Тунис", "name:bm"=>"Tunizi", "name:bn"=>"তিউনিসিয়া", "name:bo"=>"ཏུ་ནི་ཤི་ཡ།", "name:br"=>"Tunizia", "name:bs"=>"Tunis", "name:ca"=>"Tunísia", "name:ce"=>"Тунис", "name:cs"=>"Tunisko", "name:cv"=>"Тунис", "name:cy"=>"Tunisia", "name:da"=>"Tunesien", "name:de"=>"Tunesien", "name:dv"=>"ތޫނިސް", "name:ee"=>"Tunisia", "name:el"=>"Τυνησία", "name:en"=>"Tunisia", "name:eo"=>"Tunizio", "name:es"=>"Túnez", "name:et"=>"Tuneesia", "name:eu"=>"Tunisia", "name:fa"=>"تونس", "name:fi"=>"Tunisia", "name:fo"=>"Tunesia", "name:fr"=>"Tunisie", "name:fy"=>"Tuneezje", "name:ga"=>"An Túinéis", "name:gd"=>"Tuinisia", "name:gl"=>"Tunisia", "name:gu"=>"ટ્યુનિશિયા", "name:gv"=>"Yn Tooneesh", "name:he"=>"תוניסיה", "name:hi"=>"ट्यूनिशिया", "name:hr"=>"Tunis", "name:ht"=>"Tinizi", "name:hu"=>"Tunézia", "name:hy"=>"Թունիս", "name:id"=>"Tunisia", "name:ie"=>"Tunisia", "name:io"=>"Tunizia", "name:is"=>"Túnis", "name:it"=>"Tunisia", "name:ja"=>"チュニジア", "name:jv"=>"Tunisia", "name:ka"=>"ტუნისი", "name:kg"=>"Tunisia", "name:kk"=>"Тунис", "name:kn"=>"ಟುನೀಶಿಯ", "name:ko"=>"튀니지", "name:ks"=>"تونس", "name:ku"=>"Tûnis", "name:kw"=>"Tunisi", "name:ky"=>"Тунис", "name:la"=>"Tunesia", "name:lb"=>"Tunesien", "name:li"=>"Tunesië", "name:ln"=>"Tunisia", "name:lt"=>"Tunisas", "name:lv"=>"Tunisija", "name:mg"=>"Tonizia", "name:mi"=>"Tūnihia", "name:mk"=>"Тунис", "name:ml"=>"ടുണീഷ്യ", "name:mn"=>"Тунис", "name:mr"=>"ट्युनिसिया", "name:ms"=>"Tunisia", "name:mt"=>"Tuneżija", "name:my"=>"တူနီးရှားနိုင်ငံ", "name:nl"=>"Tunesië", "name:nn"=>"Tunisia", "name:no"=>"Tunisia", "name:oc"=>"Tunisia", "name:or"=>"ଟ୍ୟୁନିସିଆ", "name:os"=>"Тунис", "name:pa"=>"ਤੁਨੀਸੀਆ", "name:pl"=>"Tunezja", "name:ps"=>"تونس", "name:pt"=>"Tunísia", "name:qu"=>"Tunisya", "name:rm"=>"Tunesia", "name:ro"=>"Tunisia", "name:ru"=>"Тунис", "name:rw"=>"Tunisiya", "name:sa"=>"टुनिशिया", "name:sc"=>"Tunisia", "name:se"=>"Tunisia", "name:sg"=>"Tunizïi", "name:sh"=>"Tunis", "name:sk"=>"Tunisko", "name:sl"=>"Tunizija", "name:sn"=>"Tunisia", "name:so"=>"Tunisiya", "name:sq"=>"Tunizia", "name:sr"=>"Тунис", "name:ss"=>"IThunisiya", "name:su"=>"Tunisia", "name:sv"=>"Tunisien", "name:sw"=>"Tunisia", "name:ta"=>"துனீசியா", "name:te"=>"ట్యునీషియా", "name:tg"=>"Тунис", "name:th"=>"ประเทศตูนิเซีย", "name:ti"=>"ቱኒዢያ", "name:tk"=>"Tunis", "name:tl"=>"Tunisya", "name:tr"=>"Tunus", "name:ts"=>"Tunisia", "name:tt"=>"Тунис", "name:ug"=>"تۇنىس", "name:uk"=>"Туніс", "name:ur"=>"تونس", "name:uz"=>"Tunis", "name:vi"=>"Tunisia", "name:vo"=>"Tünisän", "name:wa"=>"Tunizeye", "name:wo"=>"Tiniisi", "name:yi"=>"טוניסיע", "name:yo"=>"Tùnísíà", "name:zh"=>"突尼西亞", "name:zu"=>"ITunisia"
-dz "name"=>"Algérie / ⵍⵣⵣⴰⵢⴻⵔ / الجزائر", "name:af"=>"Algerië", "name:ak"=>"Algeria", "name:am"=>"አልጄሪያ", "name:an"=>"Alcheria", "name:ar"=>"الجزائر", "name:as"=>"আলজেৰিয়া", "name:ay"=>"Alhirya", "name:az"=>"Əlcəzair", "name:ba"=>"Алжи́р", "name:be"=>"Алжы́р", "name:bg"=>"Алжѝр", "name:bh"=>"अल्जीरिया", "name:bm"=>"Algeri", "name:bn"=>"আলজেরিয়া", "name:bo"=>"ཨཱལ་ཇི་རི་ཡ།", "name:br"=>"Aljeria", "name:bs"=>"Alžir", "name:ca"=>"Algèria", "name:ce"=>"Алжи́р", "name:cs"=>"Alžírsko", "name:cv"=>"Алжир", "name:cy"=>"Algeria", "name:da"=>"Algeriet", "name:de"=>"Algerien", "name:dv"=>"ޖަޒާއިރު", "name:dz"=>"ཨཱལ་ཇི་རི་ཡ", "name:ee"=>"Ɔldzeria", "name:el"=>"Αλγερία", "name:en"=>"Algeria", "name:eo"=>"Alĝerio", "name:es"=>"Argelia", "name:et"=>"Alžeeria", "name:eu"=>"Aljeria", "name:fa"=>"الجزایر", "name:ff"=>"Aljeri", "name:fi"=>"Algeria", "name:fo"=>"Algeria", "name:fr"=>"Algérie", "name:fy"=>"Algerije", "name:ga"=>"An Ailgéir", "name:gd"=>"Aildiria", "name:gl"=>"Alxeria", "name:gn"=>"Ayhelia", "name:gu"=>"અલ્જીરિયા", "name:gv"=>"Yn Algear", "name:ha"=>"Aljeriya", "name:he"=>"אלג'יריה", "name:hi"=>"अल्जीरिया", "name:hr"=>"Alžir", "name:ht"=>"Aljeri", "name:hu"=>"Algéria", "name:hy"=>"Ալժիր", "name:ia"=>"Algeria", "name:id"=>"Aljazair", "name:ie"=>"Algeria", "name:ig"=>"Algeria", "name:io"=>"Aljeria", "name:is"=>"Alsír", "name:it"=>"Algeria", "name:ja"=>"アルジェリア", "name:jv"=>"Aljazair", "name:ka"=>"ალჟირი", "name:kg"=>"Algeria", "name:ki"=>"Algeria", "name:kk"=>"Алжир", "name:kl"=>"Algeriet", "name:km"=>"ប្រទេសអាល់ហ្សេរី", "name:kn"=>"ಅಲ್ಜೀರಿಯ", "name:ko"=>"알제리", "name:ks"=>"اٮ۪لجیرِیا", "name:ku"=>"Cezayir", "name:kw"=>"Aljeri", "name:ky"=>"Алжир", "name:la"=>"Algerium", "name:lb"=>"Algerien", "name:lg"=>"Algeria", "name:li"=>"Algerieë", "name:ln"=>"Aljeria", "name:lo"=>"ແອລຈິເລຍ", "name:lt"=>"Alžyras", "name:lv"=>"Alžīrija", "name:mg"=>"Aljeria", "name:mi"=>"Aratiria", "name:mk"=>"Алжир", "name:ml"=>"അൾജീറിയ", "name:mn"=>"Алжир", "name:mr"=>"अल्जीरिया", "name:ms"=>"Algeria", "name:mt"=>"Alġerija", "name:my"=>"အယ်လ်ဂျီးရီးယားနိုင်ငံ", "name:na"=>"Ardjiriya", "name:ne"=>"अल्जेरिया", "name:nl"=>"Algerije", "name:nn"=>"Algerie", "name:no"=>"Algerie", "name:nv"=>"Aljííya", "name:ny"=>"Algeria", "name:oc"=>"Argeria", "name:om"=>"Aljeeriyaa", "name:or"=>"ଆଲଜେରିଆ", "name:os"=>"Алжир", "name:pa"=>"ਅਲਜੀਰੀਆ", "name:pi"=>"अल्जीरिया", "name:pl"=>"Algieria", "name:ps"=>"الجزاير", "name:pt"=>"Argélia", "name:qu"=>"Alhirya", "name:rm"=>"Algeria", "name:rn"=>"Alijeriya", "name:ro"=>"Algeria", "name:ru"=>"Алжир", "name:rw"=>"Aligeriya", "name:sa"=>"अल्जीरिया", "name:sc"=>"Algerìa", "name:sd"=>"الجزائر", "name:se"=>"Algeria", "name:sg"=>"Alazëri", "name:sh"=>"Alžir", "name:si"=>"ඇල්ජීරියාව", "name:sk"=>"Alžírsko", "name:sl"=>"Alžirija", "name:sm"=>"Algeria", "name:sn"=>"Algeria", "name:so"=>"Aljeeriya", "name:sq"=>"Algjeria", "name:sr"=>"Алжир", "name:ss"=>"i-Alijeriya", "name:st"=>"Algeria", "name:su"=>"Aljazair", "name:sv"=>"Algeriet", "name:sw"=>"Algeria", "name:ta"=>"அல்சீரியா", "name:te"=>"అల్జీరియా", "name:tg"=>"Алҷазоир", "name:th"=>"ประเทศแอลจีเรีย", "name:ti"=>"አልጀሪያ", "name:tk"=>"Alžir", "name:tl"=>"Arhelya", "name:to"=>"ʻAisilia", "name:tr"=>"Cezayir", "name:ts"=>"Algeriya", "name:tt"=>"Әлҗәзаи́р", "name:tw"=>"Algeria", "name:ug"=>"ئالجىرىيە", "name:uk"=>"Алжир", "name:ur"=>"الجزائر", "name:uz"=>"Jazoir", "name:vi"=>"Algérie", "name:vo"=>"Laljerän", "name:wa"=>"Aldjereye", "name:wo"=>"Alseeri", "name:xh"=>"I-Algeria", "name:yi"=>"אַלזשיר", "name:yo"=>"Àlgéríà", "name:za"=>"Algeria", "name:zh"=>"阿尔及利亚", "name:zu"=>"iAljiriya"
-az "name"=>"Azərbaycan", "name:ab"=>"Азербаиџьан", "name:af"=>"Azerbeidjan", "name:ak"=>"Azerbaijan", "name:am"=>"አዘርባይጃን", "name:an"=>"Azerbaichán", "name:ar"=>"أذربيجان", "name:as"=>"আজেৰবাইজান", "name:av"=>"Азарбижан", "name:az"=>"Azərbaycan", "name:ba"=>"Әзербайжан", "name:be"=>"Азербайджа́н", "name:bg"=>"Азербайджан", "name:bh"=>"अज़रबैजान", "name:bi"=>"Azerbaijan", "name:bm"=>"Azɛrbayjaŋ", "name:bn"=>"আজারবাইজান", "name:bo"=>"ཨ་ཛར་བཡི་ཇན།", "name:br"=>"Azerbaidjan", "name:bs"=>"Azerbejdžan", "name:ca"=>"Azerbaidjan", "name:ce"=>"Азербайджа́н", "name:co"=>"Azerbaighjan", "name:cs"=>"Ázerbájdžán", "name:cu"=>"Аꙁѣрбаича́нъ", "name:cv"=>"Азербайджан", "name:cy"=>"Aserbaijan", "name:da"=>"Aserbajdsjan", "name:de"=>"Aserbaidschan", "name:dv"=>"އަޒަރުބައިޖާން", "name:dz"=>"ཨཛར་བཡེ་ཇན།", "name:ee"=>"Azerbaijan", "name:el"=>"Αζερμπαϊτζάν", "name:en"=>"Azerbaijan", "name:eo"=>"Azerbajĝano", "name:es"=>"Azerbaiyán", "name:et"=>"Aserbaidžaan", "name:eu"=>"Azerbaijan", "name:fa"=>"آذربایجان", "name:ff"=>"Aserbayjan", "name:fi"=>"Azerbaidžan", "name:fo"=>"Aserbadsjan", "name:fr"=>"Azerbaïdjan", "name:fy"=>"Azerbeidzjan", "name:ga"=>"an Asarbaiseáin", "name:gd"=>"Asarbaideàn", "name:gl"=>"Acerbaixán", "name:gn"=>"Aservaijã", "name:gu"=>"અઝેરબીજાન", "name:gv"=>"yn Asserbajaan", "name:ha"=>"Azerbaijan", "name:he"=>"אָזַרְבַּיְיגָ'ן", "name:hi"=>"अज़रबैजान", "name:hr"=>"Azerbajdžan", "name:ht"=>"Azerbaydjan", "name:hu"=>"Azerbajdzsán", "name:hy"=>"Ադրբեջան", "name:ia"=>"Azerbaidzhan", "name:id"=>"Azerbaijan", "name:ie"=>"Azerbaidjan", "name:io"=>"Azerbaijan", "name:is"=>"Aserbaísjan", "name:it"=>"Azerbaigian", "name:ja"=>"アゼルバイジャン", "name:jv"=>"Azerbaijan", "name:ka"=>"აზერბაიჯანი", "name:kg"=>"Azerbaidjan", "name:ki"=>"Azerbaijan", "name:kk"=>"Әзірбайжан", "name:kl"=>"Aserbajdsjan", "name:km"=>"អាស៊ែបៃហ្សង់", "name:kn"=>"ಅಜೆರ್ಬೈಜಾನ್", "name:ko"=>"아제르바이잔", "name:ks"=>"آزَرباجان", "name:ku"=>"Azerbaycan", "name:kv"=>"Азербайджа́н", "name:kw"=>"Azerbayjan", "name:ky"=>"Азербайжан", "name:la"=>"Atropatene", "name:lb"=>"Aserbaidschan", "name:lg"=>"Azerebayijaani", "name:li"=>"Azerbaidzjan", "name:ln"=>"Azɛrbayzáni", "name:lo"=>"ປະເທດອາແຊກບາຍຊັງ", "name:lt"=>"Azerbaidžanas", "name:lv"=>"Azerbaidžāna", "name:mg"=>"Azerbaijana", "name:mi"=>"Atepaihānia", "name:mk"=>"Азербејџан", "name:ml"=>"അസർബെയ്ജാൻ", "name:mn"=>"Азербайжан", "name:mo"=>"Азербаиӂан", "name:mr"=>"अझरबैजान", "name:ms"=>"Azerbaijan", "name:mt"=>"Ażerbajġan", "name:my"=>"အဇာဘိုင်ဂျန်နိုင်ငံ", "name:na"=>"Aderbaidjan", "name:nb"=>"Aserbajdsjan", "name:ne"=>"अजरबैजान", "name:nl"=>"Azerbeidzjan", "name:nn"=>"Aserbajdsjan", "name:no"=>"Aserbajdsjan", "name:nv"=>"Azééwii Bikéyah", "name:ny"=>"Azerbaijan", "name:oc"=>"Azerbaitjan", "name:om"=>"Azarbaajan", "name:or"=>"ଆଜରବାଇଜାନ", "name:os"=>"Азербайджан", "name:pa"=>"ਅਜ਼ਰਬਾਈਜਾਨ", "name:pi"=>"अजर्बैजान", "name:pl"=>"Azerbejdżan", "name:ps"=>"آزربایجان", "name:pt"=>"Azerbaijão", "name:qu"=>"Asarsuyu", "name:rm"=>"Aserbeidschan", "name:ro"=>"Azerbaidjan", "name:ru"=>"Азербайджан", "name:rw"=>"Azeribayijani", "name:sa"=>"अजर्बैजान", "name:sc"=>"Azerbaigián", "name:se"=>"Azerbaižan", "name:sg"=>"Zerebaidyäan", "name:sh"=>"Azerbejdžan", "name:si"=>"අසර්බයිජානය", "name:sk"=>"Azerbajdžan", "name:sl"=>"Azerbajdžan", "name:sm"=>"Azerbaijin", "name:sn"=>"Azerbaijan", "name:so"=>"Aserbiijaan", "name:sq"=>"Azerbajxhani", "name:sr"=>"Азербејџан", "name:ss"=>"iZebajani", "name:su"=>"Azerbaijan", "name:sv"=>"Azerbajdzjan", "name:sw"=>"Azerbaijan", "name:ta"=>"அசர்பைஜான்", "name:te"=>"అజర్బైజాన్", "name:tg"=>"Озарбойҷон", "name:th"=>"อาเซอร์ไบจาน", "name:ti"=>"አዘርባጃን", "name:tk"=>"Azerbaýjan", "name:tl"=>"Aserbayan", "name:to"=>"ʻAsapaisani", "name:tr"=>"Azerbaycan", "name:ts"=>"Azerbaijan", "name:tt"=>"Азәрбайҗан", "name:tw"=>"Azerbaijan", "name:ty"=>"Atepaihānia", "name:ug"=>"ئەزەربەيجان", "name:uk"=>"Азербайджа́н", "name:ur"=>"آذربائیجان", "name:uz"=>"Ozarbayjon", "name:vi"=>"Azerbaijan", "name:vo"=>"Lasärbäcän", "name:wo"=>"Aserbayjaan", "name:yi"=>"אַזערבײַדזשאַן", "name:yo"=>"Azerbaijan", "name:za"=>"Ahsehbaiqgyangh", "name:zh"=>"阿塞拜疆", "name:zu"=>"Azerbaijan"
-br "name"=>"Brasil", "name:af"=>"Brasilië", "name:ak"=>"Brazil", "name:am"=>"ብራዚል", "name:an"=>"Brasil", "name:ar"=>"البَرَازِيل", "name:as"=>"ব্ৰাজিল", "name:ay"=>"Wrasil", "name:az"=>"Braziliya", "name:ba"=>"Брази́лия", "name:be"=>"Бразі́лія", "name:bg"=>"Бразилия", "name:bh"=>"ब्राज़ील", "name:bi"=>"Brazil", "name:bm"=>"Brazil", "name:bn"=>"ব্রাজিল", "name:bo"=>"པུ་རུ་ཟིལ།", "name:br"=>"Brazil", "name:bs"=>"Brazil", "name:ca"=>"Brasil", "name:ce"=>"Брази́ли", "name:ch"=>"Brazil", "name:co"=>"Brasile", "name:cs"=>"Brazílie", "name:cu"=>"Браꙁїлі́ꙗ", "name:cv"=>"Бразили", "name:cy"=>"Brasil", "name:da"=>"Brasilien", "name:de"=>"Brasilien", "name:dv"=>"ބުރެޒިލް", "name:dz"=>"བཱརཱ་ཛིལ་", "name:ee"=>"Brazil", "name:el"=>"Βραζιλία", "name:en"=>"Brazil", "name:eo"=>"Brazilo", "name:es"=>"Brasil", "name:et"=>"Brasiilia", "name:eu"=>"Brasil", "name:fa"=>"برزیل", "name:ff"=>"Barazil", "name:fi"=>"Brasilia", "name:fj"=>"Brazil", "name:fo"=>"Brasilia", "name:fr"=>"Brésil", "name:fy"=>"Brazylje", "name:ga"=>"an Bhrasaíl", "name:gd"=>"Braisil", "name:gl"=>"Brasil", "name:gn"=>"Pindoráma", "name:gu"=>"બ્રાઝિલ", "name:gv"=>"yn Vrasseel", "name:ha"=>"Brazil", "name:he"=>"ברזיל", "name:hi"=>"ब्रास़ील", "name:hr"=>"Brazil", "name:ht"=>"Brezil", "name:hu"=>"Brazília", "name:hy"=>"Բրազիլիա", "name:ia"=>"Brasil", "name:id"=>"Brasil", "name:ie"=>"Brasil", "name:ig"=>"Brazil", "name:io"=>"Brazilia", "name:is"=>"Brasilía", "name:it"=>"Brasile", "name:ja"=>"ブラジル", "name:jv"=>"Brasil", "name:ka"=>"ბრაზილია", "name:kg"=>"Brazilia", "name:ki"=>"Brazil", "name:kk"=>"Бразилия", "name:kl"=>"Brazil", "name:km"=>"ប្រេស៊ីល", "name:kn"=>"ಬ್ರೆಜಿಲ್", "name:ko"=>"브라질", "name:ks"=>"برٛازِل", "name:ku"=>"Brazîl", "name:kv"=>"Бразилия", "name:kw"=>"Brasil", "name:ky"=>"Бразилия", "name:la"=>"Brasilia", "name:lb"=>"Brasilien", "name:lg"=>"Buraziiri", "name:li"=>"Braziel", "name:ln"=>"Brazil", "name:lo"=>"ບະເຣຊິນ", "name:lt"=>"Brazilija", "name:lv"=>"Brazīlija", "name:mg"=>"Brazila", "name:mi"=>"Parīhi", "name:mk"=>"Бразил", "name:ml"=>"ബ്രസീൽ", "name:mn"=>"Бразил", "name:mr"=>"ब्राझील", "name:ms"=>"Brazil", "name:mt"=>"Brażil", "name:my"=>"ဘရာဇီးနိုင်ငံ", "name:na"=>"Bradir", "name:ne"=>"ब्राजिल", "name:nl"=>"Brazilië", "name:nn"=>"Brasil", "name:no"=>"Brasil", "name:nv"=>"Bwazííl", "name:oc"=>"Brasil", "name:om"=>"Biraazil", "name:or"=>"ବ୍ରାଜିଲ", "name:os"=>"Бразили", "name:pa"=>"ਬ੍ਰਾਜ਼ੀਲ", "name:pi"=>"ब्रासील", "name:pl"=>"Brazylia", "name:ps"=>"برازیل", "name:pt"=>"Brasil", "name:qu"=>"Prasil", "name:rm"=>"Brasilia", "name:rn"=>"Brazil", "name:ro"=>"Brazilia", "name:ru"=>"Бразилия", "name:rw"=>"Burezile", "name:sa"=>"ब्रासील", "name:sc"=>"Brasile", "name:sd"=>"برازيل", "name:se"=>"Brasilia", "name:sh"=>"Brazil", "name:si"=>"බ්රසීලය", "name:sk"=>"Brazília", "name:sl"=>"Brazilija", "name:sm"=>"Pasila", "name:sn"=>"Brazil", "name:so"=>"Barasiil", "name:sq"=>"Brazili", "name:sr"=>"Бразил", "name:st"=>"Brazil", "name:su"=>"Brasil", "name:sv"=>"Brasilien", "name:sw"=>"Brazil", "name:ta"=>"பிரேசில்", "name:te"=>"బ్రెజిల్", "name:tg"=>"Бразилия", "name:th"=>"บราซิล", "name:ti"=>"ብራዚል", "name:tk"=>"Braziliýa", "name:tl"=>"Brasil", "name:to"=>"Palāsili", "name:tr"=>"Brezilya", "name:tt"=>"Брази́лия", "name:tw"=>"Brazil", "name:ty"=>"Parīihi", "name:ug"=>"برازىلىيە", "name:uk"=>"Брази́лія", "name:ur"=>"برازیل", "name:uz"=>"Braziliya", "name:ve"=>"Brazil", "name:vi"=>"Brasil", "name:vo"=>"Brasilän", "name:wa"=>"Braezi", "name:wo"=>"Breesil", "name:xh"=>"Brasil", "name:yi"=>"בראַזיל", "name:yo"=>"Brasil", "name:za"=>"Bahsih", "name:zh"=>"巴西", "name:zu"=>"IBrazili"
-co "name"=>"Colombia", "name:af"=>"Colombia", "name:am"=>"ኮሎምቢያ", "name:an"=>"Colombia", "name:ar"=>"كولومبيا", "name:ay"=>"Kuluwya", "name:az"=>"Kolumbiya", "name:ba"=>"Колумбия", "name:be"=>"Калумбія", "name:bg"=>"Колумбия", "name:bi"=>"Colombia", "name:bn"=>"কলম্বিয়া", "name:bo"=>"ཁོ་ལོམ་བི་ཡ།", "name:br"=>"Kolombia", "name:bs"=>"Kolumbija", "name:ca"=>"Colòmbia", "name:ce"=>"Колумби", "name:co"=>"Colombia", "name:cs"=>"Kolumbie", "name:cv"=>"Колумби", "name:cy"=>"Colombia", "name:da"=>"Colombia", "name:de"=>"Kolumbien", "name:dv"=>"ކޮލަންބިއާ", "name:dz"=>"ཀོ་ལོམ་བི་ཡ", "name:ee"=>"Colombia", "name:el"=>"Κολομβία", "name:en"=>"Colombia", "name:eo"=>"Kolombio", "name:es"=>"Colombia", "name:et"=>"Colombia", "name:eu"=>"Kolonbia", "name:fa"=>"کلمبیا", "name:fi"=>"Kolumbia", "name:fo"=>"Kolumbia", "name:fr"=>"Colombie", "name:fy"=>"Kolombia", "name:ga"=>"An Cholóim", "name:gd"=>"Coloimbia", "name:gl"=>"Colombia", "name:gn"=>"Kolómbia", "name:gu"=>"કોલમ્બિયા", "name:gv"=>"Yn Cholombey", "name:he"=>"קולומביה", "name:hi"=>"कोलम्बिया", "name:hr"=>"Kolumbija", "name:ht"=>"Kolonbi", "name:hu"=>"Kolumbia", "name:hy"=>"Կոլումբիա", "name:ia"=>"Colombia", "name:id"=>"Kolombia", "name:ie"=>"Columbia", "name:io"=>"Kolumbia", "name:is"=>"Kólumbía", "name:it"=>"Colombia", "name:ja"=>"コロンビア", "name:jv"=>"Kolombia", "name:ka"=>"კოლუმბია", "name:kk"=>"Колумбия Республикасы", "name:kl"=>"Colombia", "name:km"=>"កូឡុំប៊ី", "name:kn"=>"ಕೊಲೊಂಬಿಯ", "name:ko"=>"콜롬비아", "name:ku"=>"Kolombiya", "name:kw"=>"Kolombi", "name:la"=>"Columbia", "name:lb"=>"Kolumbien", "name:li"=>"Colombia", "name:ln"=>"Kolombi", "name:lt"=>"Kolumbija", "name:lv"=>"Kolumbija", "name:mg"=>"Kolombia", "name:mi"=>"Koromōpia", "name:mk"=>"Колумбија", "name:ml"=>"കൊളംബിയ", "name:mn"=>"Колумб", "name:mr"=>"कोलंबिया", "name:ms"=>"Colombia", "name:mt"=>"Kolombja", "name:my"=>"ကိုလံဘီယာနိုင်ငံ", "name:na"=>"Korombiya", "name:ne"=>"कोलम्बिया", "name:nl"=>"Colombia", "name:nn"=>"Colombia", "name:no"=>"Colombia", "name:nv"=>"Kolámbiya", "name:oc"=>"Colómbia", "name:om"=>"Colombia", "name:or"=>"କଲୋମ୍ବିଆ", "name:os"=>"Колумби", "name:pa"=>"ਕੋਲੰਬੀਆ", "name:pl"=>"Kolumbia", "name:pt"=>"Colômbia", "name:qu"=>"Kulumbya", "name:rm"=>"Columbia", "name:ro"=>"Columbia", "name:ru"=>"Колумбия", "name:rw"=>"Kolombiya", "name:sa"=>"कोलोम्बिया", "name:se"=>"Colombia", "name:sh"=>"Kolumbija", "name:sk"=>"Kolumbia", "name:sl"=>"Kolumbija", "name:so"=>"Kolombiya", "name:sq"=>"Kolumbia", "name:sr"=>"Колумбија", "name:su"=>"Kolombia", "name:sv"=>"Colombia", "name:sw"=>"Kolombia", "name:ta"=>"கொலொம்பியா", "name:te"=>"కొలంబియా", "name:tg"=>"Кулумбия", "name:th"=>"ประเทศโคลอมเบีย", "name:tl"=>"Colombia", "name:tr"=>"Kolombiya", "name:ts"=>"Colombia", "name:tt"=>"Колумбия", "name:ug"=>"كولومبىيە", "name:uk"=>"Колумбія", "name:ur"=>"کولمبیا", "name:uz"=>"Kolumbiya", "name:vi"=>"Colombia", "name:vo"=>"Kolumbän", "name:wo"=>"Koloombi", "name:xh"=>"IsiColombia", "name:yi"=>"קאלאמביע", "name:yo"=>"Kòlómbìà", "name:zh"=>"哥伦比亚", "name:zu"=>"IKolombiya"
-om "name"=>"عمان", "name:af"=>"Oman", "name:am"=>"ኦማን", "name:an"=>"Omán", "name:ar"=>"عمان", "name:az"=>"Oman", "name:ba"=>"Оман", "name:be"=>"Аман", "name:bg"=>"Оман", "name:bn"=>"ওমান", "name:bo"=>"ཨོ་མན།", "name:br"=>"Oman", "name:bs"=>"Oman", "name:ca"=>"Oman", "name:ce"=>"Оман", "name:cs"=>"Omán", "name:cv"=>"Оман", "name:cy"=>"Oman", "name:da"=>"Oman", "name:de"=>"Oman", "name:dv"=>"ޢުމާން", "name:el"=>"Ομάν", "name:en"=>"Oman", "name:eo"=>"Omano", "name:es"=>"Omán", "name:et"=>"Omaan", "name:eu"=>"Oman", "name:fa"=>"عمان", "name:fi"=>"Oman", "name:fr"=>"Oman", "name:fy"=>"Oman", "name:ga"=>"Óman", "name:gd"=>"Omàn", "name:gl"=>"Omán", "name:gn"=>"Omã", "name:gu"=>"ઓમાન", "name:gv"=>"Yn Omaan", "name:he"=>"עומאן", "name:hi"=>"ओमान", "name:hr"=>"Oman", "name:ht"=>"Omàn", "name:hu"=>"Omán", "name:hy"=>"Օման", "name:ia"=>"Oman", "name:id"=>"Oman", "name:ie"=>"Oman", "name:io"=>"Oman", "name:is"=>"Óman", "name:it"=>"Oman", "name:ja"=>"オマーン", "name:jv"=>"Oman", "name:ka"=>"ომანი", "name:kk"=>"Оман", "name:kl"=>"Oman", "name:kn"=>"ಒಮಾನ್", "name:ko"=>"오만", "name:ku"=>"Oman", "name:kv"=>"Оман", "name:kw"=>"Oman", "name:la"=>"Omania", "name:lb"=>"Oman", "name:li"=>"Omaan", "name:ln"=>"Oman", "name:lt"=>"Omanas", "name:lv"=>"Omāna", "name:mi"=>"Omāna", "name:mk"=>"Оман", "name:ml"=>"ഒമാൻ", "name:mn"=>"Оман", "name:mr"=>"ओमान", "name:ms"=>"Oman", "name:my"=>"အိုမန်နိုင်ငံ", "name:na"=>"Oman", "name:nl"=>"Oman", "name:nn"=>"Oman", "name:no"=>"Oman", "name:nv"=>"Omą́ą́", "name:oc"=>"Oman", "name:or"=>"ଓମାନ", "name:os"=>"Оман", "name:pa"=>"ਓਮਾਨ", "name:pl"=>"Oman", "name:ps"=>"عمان", "name:pt"=>"Omã", "name:qu"=>"Uman", "name:ro"=>"Oman", "name:ru"=>"Оман", "name:rw"=>"Omani", "name:sa"=>"ओमान", "name:se"=>"Oman", "name:sh"=>"Oman", "name:si"=>"ඕමානය", "name:sk"=>"Omán", "name:sl"=>"Oman", "name:so"=>"Cumaan", "name:sq"=>"Omani", "name:sr"=>"Оман", "name:ss"=>"IMani", "name:su"=>"Oman", "name:sv"=>"Oman", "name:sw"=>"Omani", "name:ta"=>"ஓமான்", "name:te"=>"ఒమన్", "name:tg"=>"Оман", "name:th"=>"ประเทศโอมาน", "name:tk"=>"Oman", "name:tl"=>"Oman", "name:tr"=>"Umman", "name:tt"=>"Оман", "name:ug"=>"ئومان", "name:uk"=>"Оман", "name:ur"=>"سلطنت عمان", "name:uz"=>"Oman", "name:vi"=>"Oman", "name:vo"=>"Lomän", "name:wo"=>"Omaan", "name:yi"=>"אמאן", "name:yo"=>"Oman", "name:zh"=>"阿曼"
-cm "name"=>"Cameroun", "name:af"=>"Kameroen", "name:am"=>"ካሜሩን", "name:an"=>"Camerún", "name:ar"=>"الكاميرون", "name:az"=>"Kamerun", "name:ba"=>"Камерун", "name:be"=>"Камерун", "name:bg"=>"Камерун", "name:bm"=>"Kamerun", "name:bn"=>"ক্যামেরুন", "name:bo"=>"ཁམ་མུ་རོན།", "name:br"=>"Kameroun", "name:bs"=>"Kamerun", "name:ca"=>"Camerun", "name:cs"=>"Kamerun", "name:cv"=>"Камерун", "name:cy"=>"Camerŵn", "name:da"=>"Cameroun", "name:de"=>"Kamerun", "name:dv"=>"ކެމަރޫން", "name:ee"=>"Cameroon", "name:el"=>"Καμερούν", "name:en"=>"Cameroon", "name:eo"=>"Kameruno", "name:es"=>"Camerún", "name:et"=>"Kamerun", "name:eu"=>"Kamerun", "name:fa"=>"کامرون", "name:ff"=>"Kamerun", "name:fi"=>"Kamerun", "name:fo"=>"Kamerun", "name:fr"=>"Cameroun", "name:fy"=>"Kameroen", "name:ga"=>"Camarún", "name:gd"=>"Camarun", "name:gl"=>"Camerún", "name:gv"=>"Cameroon", "name:ha"=>"Kameru", "name:he"=>"קמרון", "name:hi"=>"कैमरुन", "name:hr"=>"Kamerun", "name:ht"=>"Kamewoun", "name:hu"=>"Kamerun", "name:hy"=>"Կամերուն", "name:ia"=>"Camerun", "name:id"=>"Kamerun", "name:ie"=>"Cameroon", "name:ig"=>"Kameroon", "name:io"=>"Kamerun", "name:is"=>"Kamerún", "name:it"=>"Camerun", "name:ja"=>"カメルーン", "name:jv"=>"Kamerun", "name:ka"=>"კამერუნი", "name:kg"=>"Kamerun", "name:ki"=>"Cameroon", "name:kk"=>"Камерун", "name:kn"=>"ಕ್ಯಾಮರೂನ್", "name:ko"=>"카메룬", "name:ks"=>"کیٚمِروٗن", "name:ku"=>"Kamerûn", "name:kw"=>"Kameroun", "name:la"=>"Cameronia", "name:lb"=>"Kamerun", "name:li"=>"Kameroen", "name:ln"=>"Kamerun", "name:lt"=>"Kamerūnas", "name:lv"=>"Kamerūna", "name:mi"=>"Kamarūna", "name:mk"=>"Камерун", "name:ml"=>"കാമറൂൺ", "name:mn"=>"Камерун", "name:mr"=>"कामेरून", "name:ms"=>"Cameroon", "name:mt"=>"Kamerun", "name:my"=>"ကင်မရွန်းနိုင်ငံ", "name:na"=>"Kamerun", "name:ne"=>"क्यामेरून", "name:nl"=>"Kameroen", "name:nn"=>"Kamerun", "name:no"=>"Kamerun", "name:nv"=>"Táłtłʼááh Chʼosh Daadánígíí Bitooh", "name:oc"=>"Cameron", "name:or"=>"କାମେରୁନ", "name:os"=>"Камерун", "name:pa"=>"ਕੈਮਰੂਨ", "name:pl"=>"Kamerun", "name:ps"=>"کامرون", "name:pt"=>"Camarões", "name:qu"=>"Kamirun", "name:rm"=>"Camerun", "name:ro"=>"Camerun", "name:ru"=>"Камерун", "name:rw"=>"Kameruni", "name:sa"=>"केमेरून", "name:sc"=>"Camerùn", "name:se"=>"Kamerun", "name:sg"=>"Kamerün", "name:sh"=>"Kamerun", "name:sk"=>"Kamerun", "name:sl"=>"Kamerun", "name:sn"=>"Cameroon", "name:so"=>"Kamiruun", "name:sq"=>"Kameruni", "name:sr"=>"Камерун", "name:ss"=>"IKhameruni", "name:su"=>"Kamerun", "name:sv"=>"Kamerun", "name:sw"=>"Kamerun", "name:ta"=>"கமரூன்", "name:te"=>"కామెరూన్", "name:tg"=>"Камерун", "name:th"=>"ประเทศแคเมอรูน", "name:tk"=>"Kamerun", "name:tl"=>"Kamerun", "name:tr"=>"Kamerun", "name:ts"=>"Cameroon", "name:tt"=>"Камерун", "name:ug"=>"كامېرۇن", "name:uk"=>"Камерун", "name:ur"=>"کیمرون", "name:uz"=>"Kamerun", "name:vi"=>"Cameroon", "name:vo"=>"Kamerunän", "name:wo"=>"Kamerun", "name:yi"=>"קאמערון", "name:yo"=>"Kamẹrúùn", "name:zh"=>"喀麦隆", "name:zu"=>"IKamerooni"
-er "name"=>"ኤርትራ Eritrea إرتريا", "name:af"=>"Eritrea", "name:am"=>"ኤርትራ", "name:an"=>"Eritrea", "name:ar"=>"إرتريا", "name:az"=>"Eritreya", "name:ba"=>"Эритрея", "name:be"=>"Эрытрэя", "name:bg"=>"Еритрея", "name:bm"=>"Eritrea", "name:bn"=>"ইরিত্রিয়া", "name:bo"=>"ཨི་རི་ཏྲའ།", "name:br"=>"Eritrea", "name:bs"=>"Eritreja", "name:ca"=>"Eritrea", "name:ce"=>"Эритре", "name:cs"=>"Eritrea", "name:cu"=>"Єрѷѳрїꙗ", "name:cy"=>"Eritrea", "name:da"=>"Eritrea", "name:de"=>"Eritrea", "name:dv"=>"އެރިތުރިއާ", "name:ee"=>"Eritrea", "name:el"=>"Ερυθραία", "name:en"=>"Eritrea", "name:eo"=>"Eritreo", "name:es"=>"Eritrea", "name:et"=>"Eritrea", "name:eu"=>"Eritrea", "name:fa"=>"اریتره", "name:fi"=>"Eritrea", "name:fo"=>"Eritrea", "name:fr"=>"Érythrée", "name:fy"=>"Eritreä", "name:ga"=>"An Eiritré", "name:gd"=>"Eartra", "name:gl"=>"Eritrea", "name:gn"=>"Erityrea", "name:gv"=>"Eritrea", "name:he"=>"אריתריאה", "name:hi"=>"इरित्रिया", "name:hr"=>"Eritreja", "name:ht"=>"Eritre", "name:hu"=>"Eritrea", "name:hy"=>"Էրիթրեա", "name:ia"=>"Eritrea", "name:id"=>"Eritrea", "name:ie"=>"Eritréa", "name:io"=>"Eritrea", "name:is"=>"Erítrea", "name:it"=>"Eritrea", "name:ja"=>"エリトリア", "name:jv"=>"Eritrea", "name:ka"=>"ერიტრეა", "name:kg"=>"Eritrea", "name:kk"=>"Эритрея", "name:kn"=>"ಎರಿಟ್ರಿಯ", "name:ko"=>"에리트레아", "name:ku"=>"Erîtrea", "name:kw"=>"Eritrea", "name:ky"=>"Эритрея", "name:la"=>"Erythraea", "name:lb"=>"Eritrea", "name:li"=>"Eritrea", "name:ln"=>"Elitré", "name:lt"=>"Eritrėja", "name:lv"=>"Eritreja", "name:mi"=>"Eritēria", "name:mk"=>"Еритреја", "name:ml"=>"എരിട്രിയ", "name:mn"=>"Эритрей", "name:mr"=>"इरिट्रिया", "name:ms"=>"Eritrea", "name:mt"=>"Eritrea", "name:my"=>"အီရီထရီးယားနိုင်ငံ", "name:na"=>"Eritrea", "name:ne"=>"एरिट्रिया", "name:nl"=>"Eritrea", "name:nn"=>"Eritrea", "name:no"=>"Eritrea", "name:oc"=>"Eritrèa", "name:om"=>"Eritrea", "name:or"=>"ଇରିଟ୍ରିଆ", "name:os"=>"Эритрей", "name:pa"=>"ਇਰੀਤਰੀਆ", "name:pl"=>"Erytrea", "name:ps"=>"اریتره", "name:pt"=>"Eritreia", "name:qu"=>"Iritriya", "name:ro"=>"Eritreea", "name:ru"=>"Эритрея", "name:rw"=>"Eritereya", "name:sa"=>"इरीट्रिया", "name:sc"=>"Eritrea", "name:se"=>"Eritrea", "name:sg"=>"Eritrëe", "name:sh"=>"Eritreja", "name:sk"=>"Eritrea", "name:sl"=>"Eritreja", "name:sn"=>"Eritrea", "name:so"=>"Eratareya", "name:sq"=>"Eritrea", "name:sr"=>"Еритреја", "name:ss"=>"IRitheya", "name:st"=>"Eritrea", "name:su"=>"Éritréa", "name:sv"=>"Eritrea", "name:sw"=>"Eritrea", "name:ta"=>"எரித்திரியா", "name:te"=>"ఎరిత్రియా", "name:tg"=>"Эритрея", "name:th"=>"ประเทศเอริเทรีย", "name:ti"=>"ኤርትራ", "name:tk"=>"Eritreýa", "name:tl"=>"Eritrea", "name:tr"=>"Eritre", "name:ts"=>"Eritreya", "name:tt"=>"Эритрея", "name:ug"=>"ئېرىترېيە", "name:uk"=>"Еритрея", "name:ur"=>"اریتریا", "name:uz"=>"Eritriya", "name:vi"=>"Eritrea", "name:vo"=>"Lerüträn", "name:wo"=>"Eritere", "name:yi"=>"עריטרעא", "name:yo"=>"Ẹritrẹ́à", "name:zh"=>"厄立特里亚", "name:zu"=>"I-Eritrea"
-ro "name"=>"România", "name:af"=>"Roemenië", "name:am"=>"ሮማንያ", "name:an"=>"Rumanía", "name:ar"=>"رومانيا", "name:ay"=>"Rumanya", "name:az"=>"Rumıniya", "name:ba"=>"Румыния", "name:be"=>"Румынія", "name:bg"=>"Румъния", "name:bi"=>"Romania", "name:bn"=>"রোমানিয়া", "name:bo"=>"རོ་མ་ནི་ཡ།", "name:br"=>"Roumania", "name:bs"=>"Rumunija", "name:ca"=>"Romania", "name:ce"=>"Румыни", "name:co"=>"Romania", "name:cs"=>"Rumunsko", "name:cu"=>"Роумꙑнїꙗ", "name:cv"=>"Румыни", "name:cy"=>"Rwmania", "name:da"=>"Rumænien", "name:de"=>"Rumänien", "name:dv"=>"ރުމޭނިއާ", "name:ee"=>"Romania", "name:el"=>"Ρουμανία", "name:en"=>"Romania", "name:eo"=>"Rumanio", "name:es"=>"Rumanía", "name:et"=>"Rumeenia", "name:eu"=>"Errumania", "name:fa"=>"رومانی", "name:fi"=>"Romania", "name:fo"=>"Rumenia", "name:fr"=>"Roumanie", "name:fy"=>"Roemeenje", "name:ga"=>"An Rómáin", "name:gd"=>"Romàinia", "name:gl"=>"Romanía", "name:gn"=>"Rrumaña", "name:gu"=>"રોમાનિયા", "name:gv"=>"Yn Romaan", "name:he"=>"רומניה", "name:hi"=>"रोमानिया", "name:hr"=>"Rumunjska", "name:ht"=>"Woumani", "name:hu"=>"Románia", "name:hy"=>"Ռումինիա", "name:ia"=>"Romania", "name:id"=>"Rumania", "name:ie"=>"Rumania", "name:io"=>"Rumania", "name:is"=>"Rúmenía", "name:it"=>"Romania", "name:ja"=>"ルーマニア", "name:jv"=>"Rumania", "name:ka"=>"რუმინეთი", "name:kg"=>"Romania", "name:kk"=>"Румыния", "name:kl"=>"Rumænia", "name:kn"=>"ರೊಮಾನಿಯ", "name:ko"=>"루마니아", "name:ku"=>"Romanya", "name:kv"=>"Румыния", "name:kw"=>"Roumani", "name:ky"=>"Румыния", "name:la"=>"Romania", "name:lb"=>"Rumänien", "name:li"=>"Roemenië", "name:ln"=>"Rumania", "name:lt"=>"Rumunija", "name:lv"=>"Rumānija", "name:mi"=>"Romeinia", "name:mk"=>"Романија", "name:ml"=>"റൊമാനിയ", "name:mn"=>"Румын", "name:mr"=>"रोमेनिया", "name:ms"=>"Romania", "name:mt"=>"Rumanija", "name:my"=>"ရိုမေးနီးယားနိုင်ငံ", "name:na"=>"Romania", "name:ne"=>"रोमानिया", "name:nl"=>"Roemenië", "name:nn"=>"Romania", "name:no"=>"Romania", "name:nv"=>"Wooméiniya", "name:oc"=>"Romania", "name:or"=>"ରୋମାନିଆ", "name:os"=>"Румыни", "name:pa"=>"ਰੋਮਾਨੀਆ", "name:pl"=>"Rumunia", "name:ps"=>"رومانیا", "name:pt"=>"Roménia", "name:qu"=>"Rumanya", "name:rm"=>"Rumenia", "name:ro"=>"România", "name:ru"=>"Румыния", "name:rw"=>"Romaniya", "name:sc"=>"Romania", "name:se"=>"Romania", "name:sh"=>"Rumunija", "name:si"=>"රුමේනියාව", "name:sk"=>"Rumunsko", "name:sl"=>"Romunija", "name:sm"=>"Romania", "name:so"=>"Romania", "name:sq"=>"Rumania", "name:sr"=>"Румунија", "name:ss"=>"IRomaniya", "name:su"=>"Romania", "name:sv"=>"Rumänien", "name:sw"=>"Romania", "name:ta"=>"உருமேனியா", "name:te"=>"రొమేనియా", "name:tg"=>"Руминия", "name:th"=>"ประเทศโรมาเนีย", "name:tk"=>"Rumyniýa", "name:tl"=>"Rumanya", "name:tr"=>"Romanya", "name:tt"=>"Румыния", "name:ug"=>"Ruminiye", "name:uk"=>"Румунія", "name:ur"=>"رومانیہ", "name:uz"=>"Ruminiya", "name:vi"=>"Romania", "name:vo"=>"Rumän", "name:wa"=>"Roumaneye", "name:wo"=>"Romaani", "name:yi"=>"רומעניע", "name:yo"=>"Románíà", "name:zh"=>"羅馬尼亞"
-mk "name"=>"Северна Македонија", "name:af"=>"Masedonië", "name:ak"=>"Masedonia", "name:am"=>"ማሴዶንያ", "name:an"=>"Republica de Macedonia", "name:ar"=>"شمال مقدونيا", "name:az"=>"Masedoniya", "name:ba"=>"Македония Республикаһы", "name:be"=>"Македонія", "name:bg"=>"Северна Македония", "name:bi"=>"Macedonia", "name:bm"=>"Macedɔni", "name:bn"=>"মেসিডোনিয়া[FYROM]", "name:bo"=>"མ་སེ་ཌོ་ནིཡ། (རྒྱལ་ཁབ།)", "name:br"=>"Makedonia", "name:bs"=>"Sjeverna Makedonija", "name:ca"=>"Macedònia del Nord", "name:ce"=>"Македони", "name:cs"=>"Severní Makedonie", "name:cu"=>"Макєдонїꙗ", "name:cv"=>"Македони Республики", "name:cy"=>"Gogledd Macedonia", "name:da"=>"Nordmakedonien", "name:de"=>"Nordmazedonien", "name:dv"=>"މެސެޑޯނިއާ", "name:dz"=>"མ་སེ་ཌོ་ནི་ཡ་ [ཡུ་གོ་སླཱ་བི་ཡ]", "name:ee"=>"Makedonia", "name:el"=>"Βόρεια Μακεδονία", "name:en"=>"North Macedonia", "name:eo"=>"Nord-Makedonio", "name:es"=>"Macedonia del Norte", "name:et"=>"Põhja-Makedoonia", "name:eu"=>"Ipar Mazedonia", "name:fa"=>"مقدونیه شمالی", "name:ff"=>"Meceduwaan", "name:fi"=>"Makedonia", "name:fo"=>"Makedónia", "name:fr"=>"Macédoine du Nord", "name:fy"=>"Noard-Masedoanje", "name:ga"=>"An Mhacadóin", "name:gd"=>"Masadoinia a Tuath", "name:gl"=>"Macedonia do Norte", "name:gn"=>"Masendoña", "name:gu"=>"મેસેડોનિયા", "name:gv"=>"Massadoan Hwoaie", "name:ha"=>"Masedoniya", "name:he"=>"מקדוניה הצפונית", "name:hi"=>"उत्तर मेसीडोनिया", "name:hr"=>"Sjeverna Makedonija", "name:ht"=>"Repiblik d Masedoni", "name:hu"=>"Észak-Macedónia", "name:hy"=>"Մակեդոնիայի Հանրապետություն", "name:ia"=>"Macedonia", "name:id"=>"Republik Makedonia", "name:ie"=>"Macedonia", "name:io"=>"Republiko Macedonia", "name:is"=>"Makedónía", "name:it"=>"Macedonia del Nord", "name:ja"=>"北マケドニア", "name:jv"=>"Républik Makedonia", "name:ka"=>"მაკედონია", "name:kg"=>"Makedonia", "name:ki"=>"Masedonia", "name:kk"=>"Македония Республикасы", "name:kl"=>"Makedonia", "name:km"=>"ម៉ាសេដ្វាន", "name:kn"=>"ಮ್ಯಾಸಿಡೋನಿಯ", "name:ko"=>"북마케도니아", "name:ks"=>"مٮ۪سوڑونِیا", "name:ku"=>"Komara Makedonyayê", "name:kv"=>"Македония Республика", "name:kw"=>"Repoblek Makedoni", "name:la"=>"Macedonia Septentrionalis", "name:lb"=>"Nordmazedonien", "name:lg"=>"Masedoniya", "name:li"=>"Noord-Macedonië", "name:ln"=>"Masedoni", "name:lo"=>"ມາຊີໂດເນຍ", "name:lt"=>"Šiaurės Makedonija", "name:lv"=>"Ziemeļmaķedonija", "name:mg"=>"Makedonia", "name:mi"=>"Makerōnia", "name:mk"=>"Северна Македонија", "name:ml"=>"റിപ്പബ്ലിക് ഓഫ് മാസിഡോണിയ", "name:mn"=>"Бүгд Найрамдах Македон Улс", "name:mr"=>"मॅसिडोनिया", "name:ms"=>"Republik Macedonia", "name:mt"=>"Repubblika tal-Maċedonja", "name:my"=>"မက်စီဒိုးနီးယားနိုင်ငံ", "name:na"=>"Matedoniya", "name:ne"=>"म्यासेडोनिया", "name:nl"=>"Noord-Macedonië", "name:nn"=>"Nord-Makedonia", "name:no"=>"Nord-Makedonia", "name:oc"=>"Republica de Macedònia", "name:or"=>"ମାସିଡୋନିଆ", "name:os"=>"Республикæ Македони", "name:pa"=>"ਮਕਦੂਨੀਆ ਗਣਰਾਜ", "name:pl"=>"Macedonia Północna", "name:ps"=>"د مقدونيې ولسمشريزه", "name:pt"=>"Macedónia do Norte", "name:qu"=>"Makidunya", "name:rm"=>"Macedonia", "name:rn"=>"Masedoniya", "name:ro"=>"Macedonia de Nord", "name:ru"=>"Северная Македония", "name:rw"=>"Masedoniya", "name:sa"=>"मेसेडोनिया", "name:sc"=>"Matzedònia", "name:se"=>"Davvi-Makedonia", "name:sg"=>"Maseduäni", "name:sh"=>"Severna Makedonija", "name:si"=>"මැසිඩෝනියාන [FYROM]", "name:sk"=>"Severné Macedónsko", "name:sl"=>"Makedonija", "name:sn"=>"Macedonia", "name:so"=>"Makedonia", "name:sq"=>"Maqedonia e Veriut", "name:sr"=>"Северна Македонија", "name:ss"=>"IMakhedoniya", "name:su"=>"Makédonia", "name:sv"=>"Nordmakedonien", "name:sw"=>"Jamhuri ya Masedonia", "name:ta"=>"மாக்கடோனியக் குடியரசு", "name:te"=>"మేసిడోనియా", "name:tg"=>"Ҷумҳурии Мақдуния", "name:th"=>"ประเทศมาซิโดเนีย", "name:ti"=>"ማከዶኒያ", "name:tk"=>"Makedoniýa Respublikasy", "name:tl"=>"Republika ng Masedonya", "name:to"=>"Masitōnia [FYROM]", "name:tr"=>"Kuzey Makedonya", "name:tt"=>"Македония Җөмһүрияте", "name:ug"=>"ماكېدونىيە", "name:uk"=>"Північна Македонія", "name:ur"=>"شمالی مقدونیہ", "name:uz"=>"Makedoniya Respublikasi", "name:vi"=>"Bắc Macedonia", "name:vo"=>"Nolüda-Makedoniyän", "name:wo"=>"Réewum Maseduwaan", "name:yi"=>"רעפובליק פון מאקעדאניע", "name:yo"=>"Orílẹ̀-èdè Olómìnira ilẹ̀ Makẹdóníà", "name:zh"=>"北马其顿共和国", "name:zu"=>"isi-Macedonia [FYROM]"
-fk "name"=>"Falkland Islands", "name:af"=>"Falklandeilande", "name:ak"=>"Fɔlkman Aeland", "name:am"=>"ፎክላንድ ደሴቶች (ኢስላስ ማልቪናስ)", "name:ar"=>"جزر الفولكلاند", "name:az"=>"Folkland Adaları", "name:be"=>"Фалклендскія астравы", "name:bg"=>"Фолкландски острови (Малвини)", "name:bm"=>"Maluwini Gun", "name:bn"=>"ফকল্যান্ড আইল্যান্ড (ইসল্যাস মাসভেনিস)", "name:bo"=>"ཕལྐ་ལནྜ་གླིང་ཕྲན།", "name:br"=>"Inizi Falkland (Inizi Maloù)", "name:bs"=>"Folklandska ostrva (Malvinska ostrva)", "name:ca"=>"Illes Malvines", "name:cs"=>"Falklandy", "name:cy"=>"Ynysoedd y Falklands", "name:da"=>"Falklandsøerne", "name:de"=>"Falklandinseln", "name:dz"=>"ཕལྐ་ལནྜ་གླིང་ཚོམ (ཨིས་ལཱས་མལ་བི་ཎཱས)", "name:ee"=>"Falkland ƒudomekpowo (Islas Malvinas) nutome", "name:el"=>"Νήσοι Φώκλαντ", "name:en"=>"Falkland Islands", "name:eo"=>"Falklandoj", "name:es"=>"Islas Malvinas", "name:et"=>"Falklandi saared", "name:eu"=>"Falkland uharteak (Malvina uharteak)", "name:fa"=>"جزایر فالکلند", "name:ff"=>"Duuɗe Falkland", "name:fi"=>"Falklandinsaaret", "name:fo"=>"Falklandsoyggjarnar", "name:fr"=>"Îles Malouines (Îles Falkland)", "name:fy"=>"Falklâneilannen", "name:ga"=>"Oileáin Fháclainne", "name:gd"=>"Na h-Eileanan Fàclainn", "name:gl"=>"Illas Malvinas", "name:gu"=>"ફૉકલેન્ડ આઇલેન્ડ્સ", "name:gv"=>"Ny Malveenaghyn", "name:ha"=>"Tsibiran Falkilan", "name:he"=>"איי פוקלנד (מלווינס)", "name:hi"=>"फ़ॉकलैंड आइलैंड (इज्लास माल्विनास)", "name:hr"=>"Falklandski Otoci", "name:hu"=>"Falkland-szigetek", "name:id"=>"Kepulauan Falkland", "name:is"=>"Falklandseyjar", "name:it"=>"Isole Falkland", "name:ja"=>"フォークランド諸島 (マルビナス諸島)", "name:ka"=>"ფალკლენდის კუნძულები", "name:ki"=>"Visiwa vya Falkland", "name:kl"=>"Falklandi qeqertaq", "name:km"=>"កោះហ្វក់ឡែន (Islas Malvinas)", "name:kn"=>"ಫಾಲ್ಕ್ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು (ಇಸ್ಲಾಸ್ ಮಾಲ್ವಿನಸ್)", "name:ko"=>"포클랜드 제도 (말비나스 군도)", "name:ks"=>"فٕلاکلینٛڑ جٔزیٖرٕ", "name:ku"=>"Giravên Malvîn", "name:la"=>"Insulae Malvinae", "name:lb"=>"Falkland Inselen", "name:lg"=>"Bizinga by'eFalikalandi", "name:ln"=>"Bisanga bya Falkland", "name:lo"=>"ຫມູ່ເກາະຟອກແລນ (ອິສລາສ ມາວິລນາສ)", "name:lt"=>"Folklando (Malvinų) Salos", "name:lv"=>"Folklenda salas", "name:mg"=>"Nosy Falkand", "name:mk"=>"Фолкландски Острови", "name:ml"=>"ഫോക്ൿലൻഡ് ദ്വീപുകൾ (മൽവിനാസ്)", "name:mn"=>"Фолклендийн Арлууд", "name:mr"=>"फॉकलंड बेटे (इस्लास मालविनास)", "name:ms"=>"Kepulauan Falkland (Islas Malvinas)", "name:mt"=>"Falkland Islands", "name:my"=>"ဖောက်ကလန် ကျွန်းစု", "name:ne"=>"फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास)", "name:nl"=>"Falklandeilanden", "name:nn"=>"Falklandsøyane", "name:no"=>"Falklandsøyene", "name:or"=>"ଫଲ୍କଲ୍ୟାଣ୍ଡ ଦ୍ବୀପପୁଞ୍ଜ", "name:pl"=>"Falklandy", "name:pt"=>"Ilhas Malvinas", "name:rm"=>"Inslas dal Falkland", "name:rn"=>"Izinga rya Filikilandi", "name:ro"=>"Insulele Falkland", "name:ru"=>"Фолклендские острова", "name:se"=>"Falklandsullot", "name:sg"=>"Âzûâ tî Mälüîni", "name:si"=>"ෆෝක්ලන්ත දූපත් (අයිලස් මල්වියනාස්)", "name:sk"=>"Falklandy", "name:sl"=>"Falklandi", "name:sn"=>"Zvitsuwa zveFalklands", "name:so"=>"Jaziiradaha Fooklaan", "name:sr"=>"Фокландска (Малвинска) Острва", "name:sv"=>"Falklandsöarna", "name:sw"=>"Visiwa vya Falklandi (Islas Malvinas)", "name:ta"=>"ஃபாக்லாந்து தீவுகள் (இஸ்லாஸ் மால்வினஸ்)", "name:te"=>"ఫాక్ లేండ్ దీవులు (ఇస్లాస్ మాల్వినాస్)", "name:th"=>"หมู่เกาะฟอล์กแลนด์", "name:ti"=>"የፎልክላንድ ደሴቶች", "name:tl"=>"Kapuluang Falkland (Kapuluang Malvinas)", "name:to"=>"ʻOtumotu Fokuleni", "name:tr"=>"Falkland Adaları", "name:tt"=>"Фолкленд утраулары", "name:uk"=>"Фолклендські острови", "name:ur"=>"فاکلینڈ آئلینڈز (ازلاس مالوینس)", "name:vi"=>"Quần đảo Falkland", "name:yo"=>"Orílẹ́ède Etikun Fakalandi", "name:zh"=>"福克兰群岛", "name:zu"=>"i-Falkland Islands (i-Islas Malvinas)"
-mw "name"=>"Malawi", "name:af"=>"Malawi", "name:am"=>"ማላዊ", "name:an"=>"Malawi", "name:ar"=>"مالاوي", "name:az"=>"Malavi", "name:ba"=>"Малави", "name:be"=>"Малаві", "name:bg"=>"Малави", "name:bm"=>"Malawi", "name:bn"=>"মালাউই", "name:bo"=>"མ་ལ་ཝི།", "name:br"=>"Malawi", "name:bs"=>"Malavi", "name:ca"=>"Malawi", "name:ce"=>"Малави", "name:cs"=>"Malawi", "name:cv"=>"Малави", "name:cy"=>"Malawi", "name:da"=>"Malawi", "name:de"=>"Malawi", "name:dv"=>"މަލާވީ", "name:ee"=>"Malawi", "name:el"=>"Μαλάουι", "name:en"=>"Malawi", "name:eo"=>"Malavio", "name:es"=>"Malaui", "name:et"=>"Malawi", "name:eu"=>"Malawi", "name:fa"=>"مالاوی", "name:fi"=>"Malawi", "name:fo"=>"Malavi", "name:fr"=>"Malawi", "name:fy"=>"Malawy", "name:ga"=>"An Mhaláiv", "name:gd"=>"Malabhaidh", "name:gl"=>"Malaui - Malawi", "name:gv"=>"Malawi", "name:he"=>"מלאווי", "name:hi"=>"मलावी", "name:hr"=>"Malavi", "name:ht"=>"Malawi", "name:hu"=>"Malawi", "name:hy"=>"Մալավի", "name:ia"=>"Malawi", "name:id"=>"Malawi", "name:ie"=>"Malawi", "name:io"=>"Malawi", "name:is"=>"Malaví", "name:it"=>"Malawi", "name:ja"=>"マラウイ", "name:jv"=>"Malawi", "name:ka"=>"მალავი", "name:kg"=>"Malawi", "name:ki"=>"Malawi", "name:kk"=>"Малави", "name:kn"=>"ಮಲಾವಿ", "name:ko"=>"말라위", "name:ku"=>"Malavî", "name:kw"=>"Malawi", "name:la"=>"Malavium", "name:lb"=>"Malawi", "name:li"=>"Malawi", "name:ln"=>"Malawi", "name:lt"=>"Malavis", "name:lv"=>"Malāvija", "name:mg"=>"Malawi", "name:mi"=>"Marāwi", "name:mk"=>"Малави", "name:ml"=>"മലാവി", "name:mn"=>"Малави", "name:mr"=>"मलावी", "name:ms"=>"Malawi", "name:mt"=>"Malawi", "name:my"=>"မာလဝီနိုင်ငံ", "name:nl"=>"Malawi", "name:nn"=>"Malawi", "name:no"=>"Malawi", "name:nv"=>"Malááwii", "name:ny"=>"Malaŵi", "name:oc"=>"Malawi", "name:os"=>"Малави", "name:pa"=>"ਮਲਾਵੀ", "name:pl"=>"Malawi", "name:ps"=>"مالاوي", "name:pt"=>"Malawi", "name:qu"=>"Malawi", "name:ro"=>"Malawi", "name:ru"=>"Малави", "name:rw"=>"Malawi", "name:sa"=>"मलावी", "name:sc"=>"Malawi", "name:se"=>"Malawi", "name:sg"=>"Malawïi", "name:sh"=>"Malavi", "name:sk"=>"Malawi", "name:sl"=>"Malavi", "name:sn"=>"Malawi", "name:so"=>"Malaawi", "name:sq"=>"Malavi", "name:sr"=>"Малави", "name:ss"=>"IMalawi", "name:su"=>"Malawi", "name:sv"=>"Malawi", "name:sw"=>"Malawi", "name:ta"=>"மலாவி", "name:tg"=>"Малави", "name:th"=>"ประเทศมาลาวี", "name:ti"=>"ማላዊ", "name:tk"=>"Malawi", "name:tl"=>"Malawi", "name:tr"=>"Malavi", "name:ts"=>"Malawi", "name:ug"=>"مالاۋى", "name:uk"=>"Малаві", "name:ur"=>"ملاوی", "name:uz"=>"Malavi", "name:vi"=>"Malawi", "name:vo"=>"Malaviyän", "name:wo"=>"Malawi", "name:yi"=>"מאלאווי", "name:yo"=>"Màláwì", "name:zh"=>"马拉维", "name:zu"=>"IMalawi"
-uz "name"=>"Oʻzbekiston", "name:af"=>"Oesbekistan", "name:am"=>"ኡዝቤኪስታን", "name:an"=>"Uzbekistán", "name:ar"=>"أوزبكستان", "name:az"=>"Özbəkistan", "name:ba"=>"Үзбәкстан", "name:be"=>"Узбекістан", "name:bg"=>"Узбекистан", "name:bn"=>"উজবেকিস্তান", "name:bo"=>"ཨུ་ཟ་བྷེ་ཁི་སི་ཐན།", "name:br"=>"Ouzbekistan", "name:bs"=>"Uzbekistan", "name:ca"=>"Uzbekistan", "name:ce"=>"Узбекистан", "name:cs"=>"Uzbekistán", "name:cv"=>"Ӳспекстан", "name:cy"=>"Uzbekistan", "name:da"=>"Usbekistan", "name:de"=>"Usbekistan", "name:dv"=>"އުޒްބެކިސްތާން", "name:dz"=>"ཨུཛ་བེ་ཀིསི་ཏཱན་", "name:ee"=>"Uzbekistan", "name:el"=>"Ουζμπεκιστάν", "name:en"=>"Uzbekistan", "name:eo"=>"Uzbekio", "name:es"=>"Uzbekistán", "name:et"=>"Usbekistan", "name:eu"=>"Uzbekistan", "name:fa"=>"ازبکستان", "name:fi"=>"Uzbekistan", "name:fo"=>"Usbekistan", "name:fr"=>"Ouzbékistan", "name:fy"=>"Oezbekistan", "name:ga"=>"An Úisbéiceastáin", "name:gd"=>"Usbagastàn", "name:gl"=>"Uzbequistán", "name:gu"=>"ઉઝબેકિસ્તાન", "name:gv"=>"Yn Oosbeckistaan", "name:he"=>"אוזבקיסטן", "name:hi"=>"उज़्बेकिस्तान", "name:hr"=>"Uzbekistan", "name:ht"=>"Ouzbekistan", "name:hu"=>"Üzbegisztán", "name:hy"=>"Ուզբեկստան", "name:ia"=>"Uzbekistan", "name:id"=>"Uzbekistan", "name:ie"=>"Uzbekistan", "name:io"=>"Uzbekistan", "name:is"=>"Úsbekistan", "name:it"=>"Uzbekistan", "name:ja"=>"ウズベキスタン", "name:jv"=>"Uzbekistan", "name:ka"=>"უზბეკეთი", "name:kk"=>"Өзбекстан", "name:kn"=>"ಉಜ್ಬೇಕಿಸ್ಥಾನ್", "name:ko"=>"우즈베키스탄", "name:ku"=>"Ûzbêkistan", "name:kv"=>"Узбекистан", "name:kw"=>"Pow Ousbek", "name:ky"=>"Өзбекстан", "name:la"=>"Uzbecia", "name:lb"=>"Usbekistan", "name:li"=>"Oesbekistan", "name:ln"=>"Uzbekistáni", "name:lt"=>"Uzbekija", "name:lv"=>"Uzbekistāna", "name:mk"=>"Узбекистан", "name:ml"=>"ഉസ്ബെക്കിസ്ഥാൻ", "name:mn"=>"Узбекистан", "name:mr"=>"उझबेकिस्तान", "name:ms"=>"Uzbekistan", "name:my"=>"ဥဇဘက်ကစ္စတန်နိုင်ငံ", "name:na"=>"Uzbekistan", "name:nl"=>"Oezbekistan", "name:nn"=>"Usbekistan", "name:no"=>"Usbekistan", "name:nv"=>"Ózbeʼ Bikéyah", "name:oc"=>"Ozbequistan", "name:or"=>"ଉଜବେକିସ୍ଥାନ", "name:os"=>"Узбекистан", "name:pa"=>"ਉਜ਼ਬੇਕਿਸਤਾਨ", "name:pl"=>"Uzbekistan", "name:ps"=>"اوزبکستان", "name:pt"=>"Uzbequistão", "name:qu"=>"Usbiksuyu", "name:ro"=>"Uzbekistan", "name:ru"=>"Узбекистан", "name:rw"=>"Uzubekisitani", "name:sa"=>"उजबेकिस्थान", "name:sd"=>"ازبڪستان", "name:se"=>"Uzbekistan", "name:sh"=>"Uzbekistan", "name:sk"=>"Uzbekistan", "name:sl"=>"Uzbekistan", "name:so"=>"Usbekistan", "name:sq"=>"Uzbekistani", "name:sr"=>"Узбекистан", "name:ss"=>"IZubekhi", "name:su"=>"Uzbékistan", "name:sv"=>"Uzbekistan", "name:sw"=>"Uzbekistan", "name:ta"=>"உசுபெக்கிசுத்தான்", "name:te"=>"ఉజ్బెకిస్తాన్", "name:tg"=>"Ӯзбакистон", "name:th"=>"ประเทศอุซเบกิสถาน", "name:tk"=>"Özbegistan", "name:tl"=>"Uzbekistan", "name:tr"=>"Özbekistan", "name:tt"=>"Үзбәкстан", "name:ug"=>"ئۆزبېكىستان", "name:uk"=>"Узбекистан", "name:ur"=>"ازبکستان", "name:uz"=>"Oʻzbekiston", "name:vi"=>"Uzbekistan", "name:vo"=>"Lusbekän", "name:wo"=>"Usbekistaan", "name:yi"=>"אוזבעקיסטאן", "name:yo"=>"Ùsbẹ̀kìstán", "name:zh"=>"乌兹别克斯坦"
-ly "name"=>"ليبيا", "name:af"=>"Libië", "name:am"=>"ሊቢያ", "name:an"=>"Libia", "name:ar"=>"ليبيا", "name:az"=>"Liviya", "name:ba"=>"Ливия", "name:be"=>"Лівія", "name:bg"=>"Либия", "name:bm"=>"Libya", "name:bn"=>"লিবিয়া", "name:bo"=>"ལི་པི་ཡ།", "name:br"=>"Libia", "name:bs"=>"Libija", "name:ca"=>"Líbia", "name:ce"=>"Ливи", "name:cs"=>"Libye", "name:cv"=>"Ливи", "name:cy"=>"Libya", "name:da"=>"Libyen", "name:de"=>"Libyen", "name:dv"=>"ލީބިޔާ", "name:ee"=>"Libya", "name:el"=>"Λιβύη", "name:en"=>"Libya", "name:eo"=>"Libio", "name:es"=>"Libia", "name:et"=>"Liibüa", "name:eu"=>"Libia", "name:fa"=>"لیبی", "name:fi"=>"Libya", "name:fo"=>"Libya", "name:fr"=>"Libye", "name:fy"=>"Lybje", "name:ga"=>"An Libia", "name:gd"=>"Libia", "name:gl"=>"Libia", "name:gn"=>"Livia", "name:gv"=>"Yn Leeb", "name:ha"=>"Libya", "name:he"=>"לוב", "name:hi"=>"लीबिया", "name:hr"=>"Libija", "name:ht"=>"Libi", "name:hu"=>"Líbia", "name:hy"=>"Լիբիա", "name:ia"=>"Libya", "name:id"=>"Libya", "name:ie"=>"Libya", "name:io"=>"Libia", "name:is"=>"Líbýa", "name:it"=>"Libia", "name:ja"=>"リビア", "name:jv"=>"Libya", "name:ka"=>"ლიბია", "name:kg"=>"Libia", "name:kk"=>"Ливия", "name:kl"=>"Libya", "name:kn"=>"ಲಿಬಿಯಾ", "name:ko"=>"리비아", "name:ks"=>"لِبیا", "name:ku"=>"Lîbya", "name:kw"=>"Libi", "name:ky"=>"Ливия", "name:la"=>"Libya", "name:lb"=>"Libyen", "name:li"=>"Libië", "name:ln"=>"Libîya", "name:lt"=>"Libija", "name:lv"=>"Lībija", "name:mg"=>"Libia", "name:mi"=>"Rīpia", "name:mk"=>"Либија", "name:ml"=>"ലിബിയ", "name:mn"=>"Ливи", "name:mr"=>"लीबिया", "name:ms"=>"Libya", "name:mt"=>"Libja", "name:my"=>"လစ်ဗျားနိုင်ငံ", "name:ne"=>"लिबिया", "name:nl"=>"Libië", "name:nn"=>"Libya", "name:no"=>"Libya", "name:nv"=>"Łíbya", "name:oc"=>"Libia", "name:or"=>"ଲିବିଆ", "name:os"=>"Ливи", "name:pa"=>"ਲੀਬੀਆ", "name:pl"=>"Libia", "name:ps"=>"لېبيا", "name:pt"=>"Líbia", "name:qu"=>"Libya", "name:ro"=>"Libia", "name:ru"=>"Ливия", "name:rw"=>"Libiya", "name:sa"=>"लिबिया", "name:sc"=>"Lìbia", "name:se"=>"Libya", "name:sg"=>"Libïi", "name:sh"=>"Libija", "name:si"=>"ලිබියාව", "name:sk"=>"Líbya", "name:sl"=>"Libija", "name:sm"=>"Libya", "name:sn"=>"Libya", "name:so"=>"Libiya", "name:sq"=>"Libia", "name:sr"=>"Либија", "name:ss"=>"ILibhiya", "name:su"=>"Libya", "name:sv"=>"Libyen", "name:sw"=>"Libya", "name:ta"=>"லிபியா", "name:te"=>"లిబియా", "name:tg"=>"Либия", "name:th"=>"ประเทศลิเบีย", "name:ti"=>"ሊቢያ", "name:tk"=>"Liwiýa", "name:tl"=>"Libya", "name:tr"=>"Libya", "name:ts"=>"Libiya", "name:tt"=>"Ливия", "name:ug"=>"لىۋىيە", "name:uk"=>"Лівія", "name:ur"=>"لیبیا", "name:uz"=>"Liviya", "name:vi"=>"Libya", "name:vo"=>"Lübän", "name:wa"=>"Libeye", "name:wo"=>"Libi", "name:yi"=>"ליביע", "name:yo"=>"Líbyà", "name:zh"=>"利比亚", "name:zu"=>"ILibiya"
-qa "name"=>"قطر", "name:af"=>"Katar", "name:am"=>"ቃጣር", "name:an"=>"Qatar", "name:ar"=>"قطر", "name:as"=>"কাটাৰ", "name:az"=>"Qətər", "name:be"=>"Катар", "name:bg"=>"Катар", "name:bn"=>"কাতার", "name:bo"=>"ཁ་ཏར།", "name:br"=>"Katar", "name:bs"=>"Katar", "name:ca"=>"Qatar", "name:ce"=>"Катар", "name:cs"=>"Katar", "name:cv"=>"Катар", "name:cy"=>"Qatar", "name:da"=>"Qatar", "name:de"=>"Katar", "name:dv"=>"ޤަޠަރު", "name:dz"=>"ཀ་ཏར་", "name:ee"=>"Qatar", "name:el"=>"Κατάρ", "name:en"=>"Qatar", "name:eo"=>"Kataro", "name:es"=>"Catar", "name:et"=>"Katar", "name:eu"=>"Qatar", "name:fa"=>"قطر", "name:fi"=>"Qatar", "name:fo"=>"Katar", "name:fr"=>"Qatar", "name:fy"=>"Katar", "name:ga"=>"Catar", "name:gd"=>"Catar", "name:gl"=>"Qatar - قطر", "name:gu"=>"કતાર (અરબસ્તાન)", "name:gv"=>"Yn Chatar", "name:he"=>"קטאר", "name:hi"=>"क़तर", "name:hr"=>"Katar", "name:ht"=>"Katar", "name:hu"=>"Katar", "name:hy"=>"Քաթար", "name:id"=>"Qatar", "name:ie"=>"Katar", "name:io"=>"Katar", "name:is"=>"Katar", "name:it"=>"Qatar", "name:ja"=>"カタール", "name:jv"=>"Qatar", "name:ka"=>"კატარი", "name:kk"=>"Катар", "name:kl"=>"Qatar", "name:kn"=>"ಕಟಾರ್", "name:ko"=>"카타르", "name:ku"=>"Qeter", "name:kv"=>"Катар", "name:kw"=>"Katar", "name:la"=>"Quataria", "name:lb"=>"Katar", "name:li"=>"Katar", "name:ln"=>"Katar", "name:lt"=>"Kataras", "name:lv"=>"Katara", "name:mi"=>"Katā", "name:mk"=>"Катар", "name:ml"=>"ഖത്തർ", "name:mn"=>"Катар", "name:mr"=>"कतार", "name:ms"=>"Qatar", "name:mt"=>"Qatar", "name:my"=>"ကာတာနိုင်ငံ", "name:na"=>"Qatar", "name:nl"=>"Qatar", "name:nn"=>"Qatar", "name:no"=>"Qatar", "name:nv"=>"Kʼatár", "name:oc"=>"Qatar", "name:or"=>"କତର", "name:os"=>"Катар", "name:pa"=>"ਕਤਰ", "name:pl"=>"Katar", "name:ps"=>"قطر", "name:pt"=>"Catar", "name:qu"=>"Qatar", "name:ro"=>"Qatar", "name:ru"=>"Катар", "name:rw"=>"Katari", "name:sa"=>"कतार", "name:se"=>"Qatar", "name:sk"=>"Katar (štát)", "name:sl"=>"Katar", "name:so"=>"Qatar", "name:sq"=>"Katari", "name:sr"=>"Катар", "name:ss"=>"IKhathari", "name:su"=>"Qatar", "name:sv"=>"Qatar", "name:sw"=>"Qatar", "name:ta"=>"கத்தார்", "name:te"=>"కతర్", "name:tg"=>"Қатар", "name:th"=>"ประเทศกาตาร์", "name:tk"=>"Katar", "name:tl"=>"Katar", "name:tr"=>"Katar", "name:tt"=>"Катар", "name:ug"=>"قاتار", "name:uk"=>"Катар", "name:ur"=>"قطر", "name:uz"=>"Qatar", "name:vi"=>"Qatar", "name:vo"=>"Katarän", "name:wo"=>"Kataar", "name:yi"=>"קאטאר", "name:yo"=>"Katar", "name:zh"=>"卡塔尔"
-me "name"=>"Crna Gora / Црна Гора", "name:af"=>"Montenegro", "name:am"=>"ሞንቴኔግሮ", "name:an"=>"Montenegro", "name:ar"=>"الجبل الأسود", "name:av"=>"Чеэраб Меэр", "name:az"=>"Monteneqro", "name:ba"=>"Черногория", "name:be"=>"Чарнагорыя", "name:bg"=>"Черна гора", "name:bi"=>"Montenegro", "name:bn"=>"মন্টিনিগ্রো", "name:bo"=>"མོན་ཊེནིག་རོ།", "name:br"=>"Montenegro", "name:bs"=>"Crna Gora", "name:ca"=>"Montenegro", "name:ce"=>"Iаьржалаьмни", "name:cs"=>"Černá Hora", "name:cu"=>"Чрьна Гора", "name:cv"=>"Черногори", "name:cy"=>"Montenegro", "name:da"=>"Montenegro", "name:de"=>"Montenegro", "name:dv"=>"މޮންޓެނީގުރޯ", "name:ee"=>"Montenegro", "name:el"=>"Μαυροβούνιο", "name:en"=>"Montenegro", "name:eo"=>"Montenegro", "name:es"=>"Montenegro", "name:et"=>"Montenegro", "name:eu"=>"Montenegro", "name:fa"=>"مونتهنگرو", "name:fi"=>"Montenegro", "name:fo"=>"Montenegro", "name:fr"=>"Monténégro", "name:fy"=>"Montenegro", "name:ga"=>"Montainéagró", "name:gd"=>"Am Monadh Neagrach", "name:gl"=>"Montenegro", "name:gu"=>"મોન્ટેનીગ્રો", "name:gv"=>"Montenegro", "name:he"=>"מונטנגרו", "name:hr"=>"Crna Gora", "name:ht"=>"Montenegwo", "name:hu"=>"Montenegró", "name:hy"=>"Չեռնոգորիա", "name:ia"=>"Montenegro", "name:id"=>"Montenegro", "name:ie"=>"Montenegro", "name:io"=>"Montenegro", "name:is"=>"Svartfjallaland", "name:it"=>"Montenegro", "name:ja"=>"モンテネグロ", "name:jv"=>"Montenégro", "name:ka"=>"ჩერნოგორია", "name:kg"=>"Monte Negro", "name:kk"=>"Черногория", "name:kl"=>"Montenegro", "name:kn"=>"ಮಾಂಟೆನೆಗ್ರೊ", "name:ko"=>"몬테네그로", "name:ku"=>"Montenegro", "name:kv"=>"Черногория", "name:kw"=>"Montenegro", "name:ky"=>"Монтенегро", "name:la"=>"Mons Niger", "name:lb"=>"Montenegro", "name:li"=>"Montenegro", "name:ln"=>"Montenegro", "name:lt"=>"Juodkalnija", "name:lv"=>"Melnkalne", "name:mi"=>"Monotenīkoro", "name:mk"=>"Црна Гора", "name:ml"=>"മോണ്ടെനെഗ്രൊ", "name:mn"=>"Монтенегро", "name:mr"=>"माँटेनिग्रो", "name:ms"=>"Montenegro", "name:mt"=>"Montenegro", "name:my"=>"မွန်တီနီဂရိုးနိုင်ငံ", "name:na"=>"Montenegro", "name:ne"=>"मोन्टेनेग्रो", "name:nl"=>"Montenegro", "name:nn"=>"Montenegro", "name:no"=>"Montenegro", "name:nv"=>"Dziłizhin Bikéyah", "name:oc"=>"Montenegro", "name:or"=>"ମୋଣ୍ଟେନେଗ୍ରୋ", "name:os"=>"Черногори", "name:pa"=>"ਮੋਂਟੇਨੇਗਰੋ", "name:pl"=>"Czarnogóra", "name:ps"=>"مانتېنېګرو", "name:pt"=>"Montenegro", "name:qu"=>"Yanaurqu", "name:ro"=>"Muntenegru", "name:ru"=>"Черногория", "name:rw"=>"Montenegoro", "name:sc"=>"Montenegro", "name:se"=>"Montenegro", "name:sh"=>"Crna Gora", "name:sk"=>"Čierna Hora", "name:sl"=>"Črna gora", "name:sm"=>"Montenegro", "name:so"=>"Montenegro", "name:sq"=>"Mali i Zi", "name:sr"=>"Црна Гора", "name:ss"=>"IMonthenekho", "name:su"=>"Monténégro", "name:sv"=>"Montenegro", "name:sw"=>"Montenegro", "name:ta"=>"மொண்டெனேகுரோ", "name:tg"=>"Монтенегро", "name:th"=>"ประเทศมอนเตเนโกร", "name:tk"=>"Çernogoriýa", "name:tl"=>"Montenegro", "name:tr"=>"Karadağ", "name:tt"=>"Монтенегро", "name:ug"=>"چېرنوگورىيە", "name:uk"=>"Чорногорія", "name:ur"=>"مونٹینیگرو", "name:uz"=>"Chernogoriya", "name:vi"=>"Montenegro", "name:vo"=>"Montenegrän", "name:wo"=>"Montenegro", "name:yi"=>"מאנטענעגרא", "name:yo"=>"Montenẹ́grò", "name:zh"=>"蒙特內哥羅"
-im "name"=>"Isle of Man", "name:af"=>"Eiland Man", "name:an"=>"Isla de Man", "name:ar"=>"جزيرة مان", "name:az"=>"Men adası", "name:be"=>"Востраў Мэн", "name:bg"=>"Ман", "name:bn"=>"আইল অফ ম্যান", "name:br"=>"Manav", "name:bs"=>"Ostrvo Man", "name:ca"=>"Illa de Man", "name:cs"=>"Man", "name:cv"=>"Мэн утравĕ", "name:cy"=>"Ynys Manaw", "name:da"=>"Isle of Man", "name:de"=>"Insel Man", "name:dv"=>"އައިޒަލް އޮފް މޭން", "name:el"=>"Νήσος του Μαν", "name:en"=>"Isle of Man", "name:eo"=>"Manksinsulo", "name:es"=>"Isla de Man", "name:et"=>"Man", "name:eu"=>"Man", "name:fa"=>"جزیره من", "name:fi"=>"Mansaari", "name:fo"=>"Mann", "name:fr"=>"Île de Man", "name:fy"=>"Man", "name:ga"=>"Oileán Mhanann", "name:gd"=>"Eilean Mhanainn", "name:gl"=>"Illa de Man", "name:gv"=>"Ellan Vannin", "name:he"=>"האי מאן", "name:hi"=>"आइल ऑफ़ मैन", "name:hr"=>"Otok Man", "name:hu"=>"Man", "name:hy"=>"Մեն կղզի", "name:ia"=>"Insula de Man", "name:id"=>"Pulau Man", "name:io"=>"Man-Insulo", "name:is"=>"Mön", "name:it"=>"Isola di Man", "name:ja"=>"マン島", "name:jv"=>"Pulo Man", "name:ka"=>"მენი", "name:ko"=>"맨 섬", "name:kw"=>"Ynys Manow", "name:la"=>"Monapia", "name:li"=>"Man", "name:lt"=>"Meno Sala", "name:lv"=>"Menas Sala", "name:mi"=>"Motu o Man", "name:mk"=>"Ман", "name:ml"=>"ഐൽ ഒഫ് മാൻ", "name:mr"=>"आईल ऑफ मान", "name:ms"=>"Isle of Man", "name:nl"=>"Eiland Man", "name:nn"=>"Isle of Man", "name:no"=>"Man", "name:oc"=>"Illa de Man", "name:os"=>"Мэн", "name:pa"=>"ਮੈਨ ਟਾਪੂ", "name:pl"=>"Wyspa Man", "name:pt"=>"Ilha de Man", "name:qu"=>"Man wat'a", "name:ro"=>"Insula Man", "name:ru"=>"Остров Мэн", "name:rw"=>"Ikirwa cya Man", "name:sh"=>"Otok Man", "name:sk"=>"Ostrov Man", "name:sl"=>"Otok Man", "name:sq"=>"Ishulli i Njeriut", "name:sr"=>"Острво Ман", "name:su"=>"Pulo Man", "name:sv"=>"Isle of Man", "name:sw"=>"Isle of Man", "name:ta"=>"மாண் தீவு", "name:th"=>"เกาะแมน", "name:tl"=>"Pulo ng Man", "name:tr"=>"Man Adası", "name:tt"=>"Мэн утравы", "name:uk"=>"Острів Мен", "name:ur"=>"آئل آف مین", "name:vi"=>"Đảo Man", "name:vo"=>"Mäneän", "name:yo"=>"Erékùṣù ilẹ̀ Man", "name:zh"=>"马恩岛"
-gd "name"=>"Grenada", "name:ar"=>"غرينادا", "name:be"=>"Грэнада", "name:br"=>"Grenada", "name:cs"=>"Grenada", "name:da"=>"Grenada", "name:de"=>"Grenada", "name:el"=>"Γρενάδα", "name:en"=>"Grenada", "name:eo"=>"Grenado", "name:es"=>"Granada", "name:fa"=>"گرنادا", "name:fi"=>"Grenada", "name:fr"=>"Grenade", "name:fy"=>"Grenada", "name:ga"=>"Greanáda", "name:gd"=>"Greanada", "name:he"=>"גרנדה", "name:hr"=>"Grenada", "name:hu"=>"Grenada", "name:is"=>"Grenada", "name:it"=>"Grenada", "name:ja"=>"グレナダ", "name:la"=>"Granata", "name:lb"=>"Granada", "name:lv"=>"Grenāda", "name:mn"=>"Гренада", "name:nl"=>"Grenada", "name:pl"=>"Granada", "name:pt"=>"Granada", "name:ru"=>"Гренада", "name:se"=>"Grenada", "name:sl"=>"Grenada", "name:sv"=>"Grenada", "name:ta"=>"கிரெனடா", "name:th"=>"ประเทศเกรเนดา", "name:uk"=>"Гренада", "name:vo"=>"Grenadeän", "name:zh"=>"格林纳达"
-sm "name"=>"San Marino", "name:ar"=>"سان مارينو", "name:be"=>"Сан-Марына", "name:bg"=>"Сан Марино", "name:br"=>"San Marino", "name:cs"=>"San Marino", "name:da"=>"San Marino", "name:de"=>"San Marino", "name:el"=>"Άγιος Μαρίνος", "name:en"=>"San Marino", "name:eo"=>"San-Marino", "name:fa"=>"سان مارینو", "name:fi"=>"San Marino", "name:fr"=>"Saint-Marin", "name:fy"=>"San Marino", "name:ga"=>"San Mairíne", "name:he"=>"סן מרינו", "name:hr"=>"San Marino", "name:hu"=>"San Marino", "name:ia"=>"San Marino", "name:io"=>"San Marino", "name:is"=>"San Marínó", "name:it"=>"San Marino", "name:la"=>"Sancti Marini", "name:lt"=>"San Marinas", "name:mi"=>"Hato Marino", "name:mn"=>"Сан-Марино", "name:nl"=>"San Marino", "name:pl"=>"San Marino", "name:pt"=>"San Marino", "name:ru"=>"Сан-Марино", "name:se"=>"San Marino", "name:sk"=>"San Maríno", "name:sv"=>"San Marino", "name:ta"=>"சான் மரீனோ", "name:th"=>"ประเทศซานมารีโน", "name:uk"=>"Сан-Маріно", "name:vo"=>"Sanmarinän", "name:zh"=>"圣马力诺"
-tk "name"=>"Tokelau", "name:am"=>"ቶክላው", "name:ar"=>"توكلو", "name:be"=>"Такелаў", "name:bg"=>"Токелау", "name:bm"=>"Tokelo", "name:bn"=>"টোকেলাউ", "name:br"=>"Tokelau", "name:ca"=>"Tokelau", "name:cs"=>"Tokelau", "name:da"=>"Tokelau", "name:de"=>"Tokelau", "name:dz"=>"ཏོ་ཀེ་ལའུ་ མཚོ་གླིང", "name:ee"=>"Tokelau nutome", "name:el"=>"Τοκελάου", "name:en"=>"Tokelau", "name:eo"=>"Tokelao", "name:es"=>"Tokelau", "name:fa"=>"توکلائو", "name:ff"=>"Tokelaaw", "name:fi"=>"Tokelau", "name:fr"=>"Tokelau", "name:fy"=>"Tokelaû", "name:ga"=>"Oileáin Tócalá", "name:gu"=>"ટોકેલાઉ", "name:ha"=>"Takelau", "name:he"=>"טוקלאו", "name:hi"=>"तोकेलाउ", "name:hr"=>"Tokelau", "name:hu"=>"Tokelau-szigetek", "name:is"=>"Tókelá", "name:ja"=>"トケラウ", "name:km"=>"តូខេឡៅ", "name:kn"=>"ಟೊಕೆಲಾವ್", "name:ko"=>"토켈라우", "name:ks"=>"توکیلاو", "name:ku"=>"Tokelau", "name:lg"=>"Tokelawu", "name:lo"=>"ໂຕເກເລົາ", "name:lt"=>"Tokelau", "name:lv"=>"Tokelau", "name:mg"=>"Tokelao", "name:mk"=>"Токелау", "name:ml"=>"ടൊകെലാവു", "name:mn"=>"Токелау", "name:mr"=>"तोकेलाउ", "name:mt"=>"Tokelaw", "name:ne"=>"तोगो", "name:no"=>"Tokelau", "name:or"=>"ଟୋକେଲାଉ", "name:pl"=>"Tokelau", "name:pt"=>"Toquelau", "name:rn"=>"Tokelawu", "name:ru"=>"Токелау", "name:si"=>"ටොකලාවු", "name:sk"=>"Tokelau", "name:sr"=>"Токелау", "name:sv"=>"Tokelauöarna", "name:ta"=>"டோகேலோ", "name:te"=>"టోకేలావ్", "name:th"=>"โตเกเลา", "name:ti"=>"ቶክላው", "name:uk"=>"Токелау", "name:ur"=>"ٹوکیلاؤ", "name:vi"=>"Tokelau", "name:yo"=>"Orílẹ́ède Tokelau", "name:zh"=>"托克劳", "name:zu"=>"i-Tokelau"
-td "name"=>"Tchad تشاد", "name:af"=>"Tsjad", "name:am"=>"ቻድ", "name:an"=>"Chad", "name:ar"=>"تشاد", "name:az"=>"Çad", "name:ba"=>"Чад", "name:be"=>"Чад", "name:bg"=>"Чад", "name:bm"=>"Cad", "name:bn"=>"চাদ", "name:bo"=>"ཆཱ་ཌ།", "name:br"=>"Tchad", "name:bs"=>"Čad", "name:ca"=>"Txad", "name:ce"=>"Чад", "name:cs"=>"Čad", "name:cv"=>"Чад", "name:cy"=>"Tchad", "name:da"=>"Tchad", "name:de"=>"Tschad", "name:dv"=>"ޝާދު", "name:ee"=>"Chad", "name:el"=>"Τσαντ", "name:en"=>"Chad", "name:eo"=>"Ĉado", "name:es"=>"Chad", "name:et"=>"Tšaad", "name:eu"=>"Txad", "name:fa"=>"چاد", "name:fi"=>"Tšad", "name:fo"=>"Kjad", "name:fr"=>"Tchad", "name:fy"=>"Tsjaad", "name:ga"=>"Sead", "name:gd"=>"An t-Siad", "name:gl"=>"Chad - Tchad", "name:gu"=>"ચૅડ", "name:gv"=>"Shad", "name:ha"=>"Cadi", "name:he"=>"צ'אד", "name:hi"=>"चाड", "name:hr"=>"Čad", "name:ht"=>"Tchad", "name:hu"=>"Csád", "name:hy"=>"Չադ", "name:ia"=>"Tchad", "name:id"=>"Chad", "name:ie"=>"Chad", "name:ig"=>"Chad", "name:io"=>"Chad", "name:is"=>"Tsjad", "name:it"=>"Ciad", "name:ja"=>"チャド", "name:jv"=>"Chad", "name:ka"=>"ჩადი", "name:kg"=>"Tasadi", "name:kk"=>"Чад", "name:ko"=>"차드", "name:ku"=>"Çad", "name:kw"=>"Chad", "name:la"=>"Tzadia", "name:lb"=>"Tschad", "name:li"=>"Tsjaad", "name:ln"=>"Tshadi", "name:lt"=>"Čadas", "name:lv"=>"Čada", "name:mi"=>"Kāta", "name:mk"=>"Чад", "name:ml"=>"ഛാഡ്", "name:mn"=>"Чад", "name:mr"=>"चाड", "name:ms"=>"Chad", "name:mt"=>"Ċad", "name:my"=>"ချဒ်သမ္မတနိုင်ငံ", "name:na"=>"Tsiad", "name:nl"=>"Tsjaad", "name:nn"=>"Tsjad", "name:no"=>"Tsjad", "name:oc"=>"Chad", "name:or"=>"ଚାଡ", "name:os"=>"Чад", "name:pa"=>"ਚਾਡ", "name:pl"=>"Czad", "name:ps"=>"چاډ", "name:pt"=>"Chade", "name:qu"=>"Chad", "name:rm"=>"Tschad", "name:ro"=>"Ciad", "name:ru"=>"Чад", "name:rw"=>"Cade", "name:sa"=>"चाड", "name:sc"=>"Chad", "name:se"=>"Chad", "name:sg"=>"Sâde", "name:sh"=>"Čad", "name:si"=>"චෑඩ්", "name:sk"=>"Čad", "name:sl"=>"Čad", "name:sn"=>"Chad", "name:so"=>"Jad", "name:sq"=>"Çadi", "name:sr"=>"Чад", "name:ss"=>"IShedi", "name:su"=>"Chad", "name:sv"=>"Tchad", "name:sw"=>"Chad", "name:ta"=>"சாட்", "name:te"=>"చాద్", "name:tg"=>"Чад", "name:th"=>"ประเทศชาด", "name:ti"=>"ቻድ", "name:tk"=>"Çad", "name:tl"=>"Tsad", "name:tr"=>"Çad", "name:ts"=>"Chad", "name:tt"=>"Чад", "name:ug"=>"چاد", "name:uk"=>"Чад", "name:ur"=>"چاڈ", "name:uz"=>"Chad", "name:vi"=>"Tchad", "name:vo"=>"Tjadän", "name:wa"=>"Tchad", "name:wo"=>"Cadd", "name:yi"=>"טשאד", "name:yo"=>"Tsad", "name:zh"=>"乍得", "name:zu"=>"ITshedi"
-fm "name"=>"Micronesia", "name:af"=>"Mikronesië", "name:ar"=>"ميكرونيسيا", "name:be"=>"Мікранэзія", "name:br"=>"Mikronezia", "name:ca"=>"Micronèsia", "name:cs"=>"Mikronésie", "name:da"=>"Mikronesien", "name:de"=>"Föderierte Staaten von Mikronesien", "name:en"=>"Federated States of Micronesia", "name:eo"=>"Mikronezio", "name:es"=>"Estados Federados de Micronesia", "name:et"=>"Mikroneesia", "name:fa"=>"میکرونزی", "name:fi"=>"Mikronesia", "name:fr"=>"États fédérés de Micronésie", "name:fy"=>"Mikroneezje", "name:ga"=>"An Mhicrinéis", "name:gd"=>"Na Meanbh Eileanan", "name:he"=>"מיקרונזיה", "name:hr"=>"Mikronezija", "name:hu"=>"Mikronézia", "name:ia"=>"Micronesia", "name:id"=>"Mikronesia", "name:io"=>"Mikronezia", "name:is"=>"Míkrónesía", "name:lb"=>"Mikronesien", "name:li"=>"Micronesië", "name:lt"=>"Mikronezija", "name:lv"=>"Mikronēzija", "name:mn"=>"Микронези", "name:nl"=>"Micronesia", "name:no"=>"Mikronesia", "name:oc"=>"Estats Federats de Micronesia", "name:pl"=>"Mikronezja", "name:ru"=>"Федеративные Штаты Микронезии", "name:se"=>"Mikronesia", "name:sk"=>"Mikronézia", "name:sl"=>"Mikronezija", "name:sr"=>"Микронезија", "name:sv"=>"Mikronesiens federerade stater", "name:ta"=>"மைக்குரோனீசியக் கூட்டு நாடுகள்", "name:th"=>"ประเทศไมโครนีเซีย", "name:tr"=>"Mikronezya", "name:uk"=>"Федеративні Штати Мікронезії", "name:vi"=>"Liên bang Micronesia", "name:vo"=>"Smala-Seanuäns", "name:zh"=>"密克罗尼西亚 / 密克羅尼西亞"
-li "name"=>"Liechtenstein", "name:ar"=>"ليختنشتاين", "name:be"=>"Лiхтэнштэйн", "name:br"=>"Liechtenstein", "name:bs"=>"Lihtenštajn", "name:cs"=>"Lichtenštejnsko", "name:de"=>"Liechtenstein", "name:el"=>"Λίχτενσταϊν", "name:en"=>"Liechtenstein", "name:eo"=>"Liĥtenŝtejno", "name:fa"=>"لیختناشتاین", "name:fi"=>"Liechtenstein", "name:fo"=>"Liktinstein", "name:fr"=>"Liechtenstein", "name:fy"=>"Lychtenstein", "name:ga"=>"Lichtinstéin", "name:he"=>"ליכטנשטיין", "name:hr"=>"Lihtenštajn", "name:hu"=>"Liechtenstein", "name:ia"=>"Liechtenstein", "name:io"=>"Liechtenstein", "name:is"=>"Liechtenstein", "name:it"=>"Liechtenstein", "name:ja"=>"リヒテンシュタイン", "name:ku"=>"Lînxiniştayn", "name:la"=>"Lichtenstenum", "name:lt"=>"Lichtenšteinas", "name:lv"=>"Lihtenšteina", "name:mi"=>"Rīkeneteina", "name:mk"=>"Лихтенштајн", "name:mn"=>"Лихтенштейн", "name:nl"=>"Liechtenstein", "name:pl"=>"Liechtenstein", "name:ru"=>"Лихтенштейн", "name:se"=>"Liechtenstein", "name:sk"=>"Lichtenštajnsko", "name:sl"=>"Lihtenštajn", "name:sr"=>"Лихтенштајн", "name:sv"=>"Liechtenstein", "name:ta"=>"லீக்கின்ஸ்டைன்", "name:th"=>"ประเทศลิกเตนสไตน์", "name:tr"=>"Lihtenştayn", "name:uk"=>"Ліхтенштейн", "name:vo"=>"Ligtänstän", "name:zh"=>"列支敦士登"
-sc "name"=>"Sesel", "name:af"=>"Seychelle", "name:am"=>"ሲሸልስ", "name:an"=>"Seychelles", "name:ar"=>"سيشيل", "name:az"=>"Seyşel adaları", "name:be"=>"Сейшэльскія Астравы", "name:bg"=>"Сейшели", "name:bm"=>"Seshel", "name:bn"=>"সেশেল", "name:bo"=>"སེ་ཞེལ།", "name:br"=>"Sechelez", "name:bs"=>"Sejšeli", "name:ca"=>"Seychelles", "name:ce"=>"Сейшелан гlайреш", "name:cs"=>"Seychely", "name:cv"=>"Сейшел утравĕсем", "name:cy"=>"Seychelles", "name:da"=>"Seychellerne", "name:de"=>"Seychellen", "name:dv"=>"ތޭންގަދީބު", "name:el"=>"Σεϋχέλλες", "name:en"=>"Seychelles", "name:eo"=>"Sejŝeloj", "name:es"=>"Seychelles", "name:et"=>"Seišellid", "name:eu"=>"Seychelleak", "name:fa"=>"سیشل", "name:fi"=>"Seychellit", "name:fo"=>"Seyskelloyggjar", "name:fr"=>"Seychelles", "name:fy"=>"Seysjellen", "name:ga"=>"Na Séiséil", "name:gd"=>"Na h-Eileanan Sheiseall", "name:gl"=>"Seixeles - Seychelles", "name:gv"=>"Ny h-Ellanyn Heshell", "name:he"=>"סיישל", "name:hi"=>"सेशेल्स", "name:hr"=>"Sejšeli", "name:ht"=>"Sechèl", "name:hu"=>"Seychelle-szigetek", "name:ia"=>"Seychelles", "name:id"=>"Seychelles", "name:ie"=>"Seychelles", "name:io"=>"Seycheli", "name:is"=>"Seychelles-eyjar", "name:it"=>"Seychelles", "name:ja"=>"セーシェル", "name:jv"=>"Seychelles", "name:ka"=>"სეიშელის კუნძულები", "name:kg"=>"Seychell", "name:kk"=>"Сейшель Аралдары", "name:kn"=>"ಸೆಶೆಲ್ಸ್", "name:ko"=>"세이셸", "name:ku"=>"Seyşel", "name:kw"=>"Seychellys", "name:la"=>"Insulae Seisellenses", "name:lb"=>"Seychellen", "name:li"=>"Seychelle", "name:ln"=>"Seyshel", "name:lt"=>"Seišeliai", "name:lv"=>"Seišelas", "name:mg"=>"Seychelles", "name:mk"=>"Сејшели", "name:ml"=>"സെയ്ഷെൽസ്", "name:mn"=>"Сейшелийн арлууд", "name:mr"=>"सेशेल्स", "name:ms"=>"Seychelles", "name:mt"=>"Seychelles", "name:my"=>"ဆေးရှဲနိုင်ငံ", "name:nl"=>"Seychellen", "name:nn"=>"Seychellane", "name:no"=>"Seychellene", "name:nv"=>"Seishel", "name:oc"=>"Seichèlas", "name:or"=>"ସେସେଲଜ", "name:os"=>"Сейшелтæ", "name:pa"=>"ਸੇਸ਼ੈਲ", "name:pl"=>"Seszele", "name:ps"=>"سیشل", "name:pt"=>"Seychelles", "name:qu"=>"Sichillakuna", "name:rm"=>"Seychellas", "name:ro"=>"Seychelles", "name:ru"=>"Сейшелы", "name:rw"=>"Seyishele", "name:sa"=>"सेशेल", "name:sc"=>"Seychelles", "name:se"=>"Seychellat", "name:sg"=>"Sëyshêle", "name:sk"=>"Seychely", "name:sl"=>"Sejšeli", "name:sn"=>"Seychelles", "name:so"=>"Seyshelles", "name:sq"=>"Sejshellet", "name:sr"=>"Сејшели", "name:ss"=>"ISeyishelesi", "name:su"=>"Seychéll", "name:sv"=>"Seychellerna", "name:sw"=>"Shelisheli", "name:ta"=>"சீசெல்சு", "name:tg"=>"Ҷазираҳои Сейшел", "name:th"=>"ประเทศเซเชลส์", "name:tk"=>"Seýşel Adalary", "name:tl"=>"Seyshels", "name:tr"=>"Seyşeller", "name:ts"=>"Seychelles", "name:tt"=>"Сейшел утраулары", "name:ug"=>"سېيشېل ئاراللىرى", "name:uk"=>"Сейшельські Острови", "name:ur"=>"سیچیلیس", "name:uz"=>"Seyshell orollari", "name:vi"=>"Seychelles", "name:vo"=>"Säceluäns", "name:wo"=>"Seysel", "name:yo"=>"Ṣèíhẹ́lẹ́sì", "name:zh"=>"塞舌尔", "name:zu"=>"IsiSeyisheli"
-rs "name"=>"Србија", "name:af"=>"Serwië", "name:am"=>"ሰርቢያ", "name:an"=>"Serbia", "name:ar"=>"صربيا", "name:ay"=>"Sirwiya", "name:az"=>"Serbiya", "name:ba"=>"Сербия", "name:be"=>"Сербія", "name:bg"=>"Сърбия", "name:bi"=>"Serbia", "name:bn"=>"সার্বিয়া", "name:bo"=>"སེར་བྷི་ཡ།", "name:br"=>"Serbia", "name:bs"=>"Srbija", "name:ca"=>"Sèrbia", "name:ce"=>"Серби", "name:co"=>"Serbia", "name:cs"=>"Srbsko", "name:cu"=>"Срьбїꙗ", "name:cv"=>"Серби", "name:cy"=>"Serbia", "name:da"=>"Serbien", "name:de"=>"Serbien", "name:dv"=>"ސާބިއާ", "name:ee"=>"Serbia", "name:el"=>"Σερβία", "name:en"=>"Serbia", "name:eo"=>"Serbio", "name:es"=>"Serbia", "name:et"=>"Serbia", "name:eu"=>"Serbia", "name:fa"=>"صربستان", "name:fi"=>"Serbia", "name:fo"=>"Serbia", "name:fr"=>"Serbie", "name:fy"=>"Servje", "name:ga"=>"An tSeirbia", "name:gd"=>"An t-Sèirb", "name:gl"=>"Serbia", "name:gn"=>"Sevia", "name:gv"=>"Yn Serb", "name:he"=>"סרביה", "name:hi"=>"सर्बिया", "name:hr"=>"Srbija", "name:ht"=>"Sèbi", "name:hu"=>"Szerbia", "name:hy"=>"Սերբիա", "name:ia"=>"Serbia", "name:id"=>"Serbia", "name:ie"=>"Serbia", "name:io"=>"Serbia", "name:is"=>"Serbía", "name:it"=>"Serbia", "name:ja"=>"セルビア", "name:jv"=>"Serbia", "name:ka"=>"სერბეთი", "name:kg"=>"Serbie", "name:kk"=>"Сербия", "name:kl"=>"Serbia", "name:ko"=>"세르비아", "name:ku"=>"Serbistan", "name:kv"=>"Сербия", "name:kw"=>"Serbi", "name:ky"=>"Сербия", "name:la"=>"Serbia", "name:lb"=>"Serbien", "name:li"=>"Servië", "name:ln"=>"Serbia", "name:lt"=>"Serbija", "name:lv"=>"Serbija", "name:mg"=>"Serbia", "name:mi"=>"Serbia", "name:mk"=>"Србија", "name:ml"=>"സെർബിയ", "name:mn"=>"Серби", "name:mr"=>"सर्बिया", "name:ms"=>"Serbia", "name:mt"=>"Serbja", "name:my"=>"ဆားဘီးယားနိုင်ငံ", "name:na"=>"Terbiya", "name:nb"=>"Serbia", "name:ne"=>"सर्बिया", "name:nl"=>"Servië", "name:nn"=>"Serbia", "name:no"=>"Serbia", "name:oc"=>"Serbia", "name:or"=>"ସର୍ବିଆ", "name:os"=>"Серби", "name:pa"=>"ਸਰਬੀਆ", "name:pl"=>"Serbia", "name:ps"=>"سربيا", "name:pt"=>"Sérvia", "name:qu"=>"Sirbya", "name:rm"=>"Serbia", "name:ro"=>"Serbia", "name:ru"=>"Сербия", "name:rw"=>"Seribiya", "name:sa"=>"सर्बिया", "name:sc"=>"Sèrbia", "name:se"=>"Serbia", "name:sh"=>"Srbija", "name:sk"=>"Srbsko", "name:sl"=>"Srbija", "name:sm"=>"Serbia", "name:so"=>"Serbia", "name:sq"=>"Serbia", "name:sr"=>"Србија", "name:ss"=>"ISebhiya", "name:st"=>"Serbia", "name:su"=>"Sérbia", "name:sv"=>"Serbien", "name:sw"=>"Serbia", "name:ta"=>"செர்பியா", "name:te"=>"సెర్బియా", "name:tg"=>"Сербия", "name:th"=>"ประเทศเซอร์เบีย", "name:tk"=>"Serbiýa", "name:tl"=>"Serbiya", "name:tr"=>"Sırbistan", "name:tt"=>"Сербия", "name:tw"=>"Serbia", "name:ty"=>"Terepia", "name:ug"=>"Sérbiye", "name:uk"=>"Сербія", "name:ur"=>"سربیا", "name:uz"=>"Serbiya", "name:vi"=>"Serbia", "name:vo"=>"Särbän", "name:wo"=>"Seerbi", "name:yi"=>"סערביע", "name:yo"=>"Sérbíà", "name:zh"=>"塞爾維亞", "name:zu"=>"ISerbiya"
-lb "name"=>"لبنان", "name:af"=>"Libanon", "name:am"=>"ሊባኖስ", "name:an"=>"Liban", "name:ar"=>"لبنان", "name:az"=>"Livan", "name:ba"=>"Ливан", "name:be"=>"Ліван", "name:bg"=>"Ливан", "name:bm"=>"Lubenan", "name:bn"=>"লেবানন", "name:bo"=>"ལེ་པ་ནོན།", "name:br"=>"Liban", "name:bs"=>"Liban", "name:ca"=>"Líban", "name:ce"=>"Ливан", "name:cs"=>"Libanon", "name:cv"=>"Ливан", "name:cy"=>"Libanus", "name:da"=>"Libanon", "name:de"=>"Libanon", "name:dv"=>"ލުބުނާން", "name:dz"=>"ལེ་བཱ་ནཱོན་", "name:el"=>"Λίβανος", "name:en"=>"Lebanon", "name:eo"=>"Libano", "name:es"=>"Líbano", "name:et"=>"Liibanon", "name:eu"=>"Libano", "name:fa"=>"لبنان", "name:fi"=>"Libanon", "name:fo"=>"Libanon", "name:fr"=>"Liban", "name:fy"=>"Libanon", "name:ga"=>"An Liobáin", "name:gd"=>"Leabanon", "name:gl"=>"Líbano", "name:gn"=>"Lívano", "name:gu"=>"લેબેનાન", "name:gv"=>"Yn Livaan", "name:he"=>"לבנון", "name:hi"=>"लेबनान", "name:hr"=>"Libanon", "name:ht"=>"Liban", "name:hu"=>"Libanon", "name:hy"=>"Լիբանան", "name:ia"=>"Libano", "name:id"=>"Lebanon", "name:ie"=>"Libano", "name:io"=>"Libano", "name:is"=>"Líbanon", "name:it"=>"Libano", "name:ja"=>"レバノン", "name:jv"=>"Libanon", "name:ka"=>"ლიბანი", "name:kk"=>"Ливан", "name:kl"=>"Lebanon", "name:km"=>"លីបង់", "name:ko"=>"레바논", "name:ku"=>"Libnan", "name:kv"=>"Ливан", "name:kw"=>"Lebnon", "name:ky"=>"Ливан", "name:la"=>"Libanus", "name:lb"=>"Libanon", "name:li"=>"Libanon", "name:lt"=>"Libanas", "name:lv"=>"Libāna", "name:mi"=>"Repanona", "name:mk"=>"Либан", "name:ml"=>"ലെബനാൻ", "name:mn"=>"Ливан", "name:mr"=>"लेबेनॉन", "name:ms"=>"Lubnan", "name:mt"=>"Libanu", "name:my"=>"လက်ဘနွန်နိုင်ငံ", "name:na"=>"Ribanon", "name:nb"=>"Libanon", "name:nl"=>"Libanon", "name:nn"=>"Libanon", "name:no"=>"Libanon", "name:nv"=>"Łíbanoo", "name:oc"=>"Liban", "name:or"=>"ଲେବନାନ", "name:os"=>"Ливан", "name:pa"=>"ਲਿਬਨਾਨ", "name:pl"=>"Liban", "name:ps"=>"لېبنان", "name:pt"=>"Líbano", "name:qu"=>"Libanu", "name:ro"=>"Liban", "name:ru"=>"Ливан", "name:rw"=>"Libani", "name:sa"=>"लेबनान", "name:se"=>"Libanon", "name:sh"=>"Libanon", "name:sk"=>"Libanon", "name:sl"=>"Libanon", "name:so"=>"Lubnaan", "name:sq"=>"Libani", "name:sr"=>"Либан", "name:ss"=>"ILibhanoni", "name:su"=>"Libanon", "name:sv"=>"Libanon", "name:sw"=>"Lebanoni", "name:ta"=>"லெபனான்", "name:te"=>"లెబనాన్", "name:tg"=>"Лубнон", "name:th"=>"ประเทศเลบานอน", "name:tk"=>"Liwan", "name:tl"=>"Libano", "name:tr"=>"Lübnan", "name:tt"=>"Ливан", "name:ug"=>"لىۋان", "name:uk"=>"Ліван", "name:ur"=>"لبنان", "name:uz"=>"Livan", "name:vi"=>"Liban", "name:vo"=>"Libanän", "name:wo"=>"Libaa", "name:yi"=>"לבנון", "name:yo"=>"Lẹ́bánọ́nì", "name:zh"=>"黎巴嫩"
-gg "name"=>"Guernsey", "name:af"=>"Guernsey", "name:an"=>"Guernési", "name:ar"=>"غيرنزي", "name:az"=>"Gernsi", "name:be"=>"Гернсi", "name:bg"=>"Гърнси", "name:br"=>"Gwernenez", "name:bs"=>"Guernsey", "name:ca"=>"Guernsey", "name:cs"=>"Guernsey", "name:cy"=>"Ynys y Garn", "name:da"=>"Guernsey", "name:de"=>"Guernsey", "name:dv"=>"ގުއާންސޭ", "name:el"=>"Γουερνισία", "name:en"=>"Guernsey", "name:eo"=>"Gernezejo", "name:es"=>"Guernsey", "name:et"=>"Guernsey", "name:eu"=>"Guernesey", "name:fa"=>"گرنزی", "name:fi"=>"Guernsey", "name:fr"=>"Guernesey", "name:fy"=>"Guernsey", "name:ga"=>"Geansaí", "name:gd"=>"Guernsey", "name:gl"=>"Guernsey", "name:gv"=>"Guernsey", "name:he"=>"גרנזי", "name:hi"=>"ग्वेर्नसे", "name:hr"=>"Guernsey", "name:hu"=>"Guernsey", "name:hy"=>"Գերնսի", "name:id"=>"Guernsey", "name:io"=>"Guernsey", "name:is"=>"Guernsey", "name:it"=>"Guernsey", "name:ja"=>"ガーンジー", "name:jv"=>"Guernsey", "name:ka"=>"გერნზი", "name:kn"=>"ಗುರ್ನ್ಸಿ", "name:ko"=>"건지 섬", "name:kw"=>"Gwernenys", "name:la"=>"Lisia", "name:lb"=>"Guernsey", "name:li"=>"Guernsey", "name:lt"=>"Gernsis", "name:lv"=>"Gērnsija", "name:mi"=>"Kōnihi", "name:mk"=>"Гернзи", "name:mn"=>"Гернси", "name:mr"=>"गर्न्सी", "name:ms"=>"Guernsey", "name:ne"=>"गुर्न्जी", "name:nl"=>"Guernsey", "name:nn"=>"Guernsey", "name:no"=>"Guernsey", "name:oc"=>"Guernesey", "name:os"=>"Гернси", "name:pa"=>"ਗਰਨਜ਼ੇ", "name:pl"=>"Guernsey", "name:pt"=>"Guernsey", "name:ro"=>"Guernsey", "name:ru"=>"Гернси", "name:rw"=>"Gwasi", "name:sh"=>"Guernsey", "name:sk"=>"Guernsey", "name:sl"=>"Guernsey", "name:sq"=>"Guernsey", "name:sr"=>"Гернзи", "name:su"=>"Guernsey", "name:sv"=>"Guernsey", "name:sw"=>"Guernsey", "name:ta"=>"குயெர்ன்சி", "name:tg"=>"Гернси", "name:th"=>"เกิร์นซีย์", "name:tl"=>"Gernesey", "name:tr"=>"Guernsey", "name:tt"=>"Гернси", "name:uk"=>"Гернсі", "name:ur"=>"گرنزی", "name:vi"=>"Guernsey", "name:yo"=>"Guernsey", "name:zh"=>"根西島"
-mh "name"=>"Ṃajeḷ", "name:af"=>"Marshalleilande", "name:ar"=>"جزر مارشال", "name:be"=>"Маршалавы астравы", "name:br"=>"Inizi Marshall", "name:ca"=>"Illes Marshall", "name:cy"=>"Ynysoedd Marshall", "name:da"=>"Marshalløerne", "name:de"=>"Marshallinseln", "name:en"=>"Marshall Islands", "name:eo"=>"Marŝaloj", "name:es"=>"Islas Marshall", "name:et"=>"Marshalli Saared", "name:fa"=>"جزایر مارشال", "name:fi"=>"Marshallinsaaret", "name:fr"=>"Îles Marshall", "name:fy"=>"de Marshalleilannen", "name:ga"=>"Oileáin Marshall", "name:gd"=>"Na h-Eileanan Mharshall", "name:he"=>"איי מרשל", "name:hr"=>"Maršalovi Otoci", "name:hu"=>"Marshall-szigetek", "name:ia"=>"Insulas Marshall", "name:id"=>"Kepulauan Marshall", "name:io"=>"Insuli Marshall", "name:is"=>"Marshalleyjar", "name:it"=>"Isole Marshall", "name:la"=>"Insulae Marsalienses", "name:lb"=>"Marshallinselen", "name:li"=>"Marshall-eilen", "name:lt"=>"Maršalo salos", "name:lv"=>"Māršala salas", "name:mk"=>"Маршалски Острови", "name:mn"=>"Маршаллын арлууд", "name:nl"=>"Marshalleilanden", "name:oc"=>"Illas Marshall", "name:pl"=>"Wyspy Marshalla", "name:pt"=>"Ilhas Marshall", "name:ru"=>"Маршалловы Острова", "name:se"=>"Marshallsullot", "name:sk"=>"Mashallove ostrovy", "name:sl"=>"Marshallovi otoki", "name:sv"=>"Marshallöarna", "name:ta"=>"மார்சல் தீவுகள்", "name:th"=>"สาธารณรัฐหมู่เกาะมาร์แชลล์", "name:tr"=>"Marshall Adaları", "name:uk"=>"Маршаллові Острови", "name:vi"=>"Quần đảo Marshall", "name:vo"=>"Marjaluäns", "name:zh"=>"马绍尔群岛"
-bm "name"=>"Bermuda", "name:ar"=>"برمودا", "name:be"=>"Бярмуды", "name:br"=>"Bermudez", "name:ca"=>"Bermudes", "name:cs"=>"Bermudy", "name:da"=>"Bermuda", "name:de"=>"Bermuda", "name:el"=>"Βερμούδες", "name:en"=>"Bermuda", "name:eo"=>"Bermudoj", "name:fa"=>"برمودا", "name:fi"=>"Bermuda", "name:fr"=>"Bermudes", "name:ga"=>"Beirmiúda", "name:gl"=>"Bermudas", "name:he"=>"ברמודה", "name:hr"=>"Bermudski Otoci", "name:hu"=>"Bermuda", "name:id"=>"Bermuda", "name:is"=>"Bermúda", "name:it"=>"Bermuda", "name:lt"=>"Bermuda", "name:lv"=>"Bermudu salas", "name:mk"=>"Бермуда", "name:mn"=>"Бермудын Арал", "name:oc"=>"Bermudas", "name:pl"=>"Bermudy", "name:pt"=>"Bermudas", "name:ru"=>"Бермудские острова", "name:sl"=>"Bermudi", "name:sr"=>"Бермуди", "name:sv"=>"Bermuda", "name:th"=>"เบอร์มิวดา", "name:tr"=>"Bermuda", "name:uk"=>"Бермудські острови", "name:uz"=>"Bermud orollari", "name:zh"=>"百慕大"
-sd "name"=>"السودان", "name:af"=>"Soedan", "name:ak"=>"Sudan", "name:am"=>"ሱዳን", "name:an"=>"Sudán", "name:ar"=>"السودان", "name:az"=>"Sudan", "name:ba"=>"Судан", "name:be"=>"Судан", "name:bg"=>"Судан", "name:bm"=>"Sudan", "name:bn"=>"সুদান", "name:bo"=>"སུའུ་ཏན།", "name:br"=>"Soudan", "name:bs"=>"Sudan", "name:ca"=>"Sudan", "name:ce"=>"Судан", "name:cs"=>"Súdán", "name:cv"=>"Судан", "name:cy"=>"Sudan", "name:da"=>"Sudan", "name:de"=>"Sudan", "name:dv"=>"ސޫދާން", "name:ee"=>"Sudan", "name:el"=>"Σουδάν", "name:en"=>"Sudan", "name:eo"=>"Sudano", "name:es"=>"Sudán", "name:et"=>"Sudaan", "name:eu"=>"Sudan", "name:fa"=>"سودان", "name:fi"=>"Sudan", "name:fo"=>"Sudan", "name:fr"=>"Soudan", "name:fy"=>"Sûdan", "name:ga"=>"An tSúdáin", "name:gd"=>"Sudan", "name:gl"=>"Sudán", "name:gn"=>"Sudano", "name:gu"=>"સુદાન", "name:gv"=>"Yn Toodaan", "name:ha"=>"Sudan", "name:he"=>"סודאן", "name:hi"=>"सूडान", "name:hr"=>"Sudan", "name:ht"=>"Soudan", "name:hu"=>"Szudán", "name:hy"=>"Սուդան", "name:ia"=>"Sudan", "name:id"=>"Sudan", "name:ie"=>"Sudan", "name:ig"=>"Sudan", "name:io"=>"Sudan", "name:is"=>"Súdan", "name:it"=>"Sudan", "name:ja"=>"スーダン", "name:jv"=>"Sudan", "name:ka"=>"სუდანი", "name:kg"=>"Sudan", "name:ki"=>"Sũdana", "name:kk"=>"Судан", "name:kn"=>"ಸುಡಾನ್", "name:ko"=>"수단", "name:ku"=>"Sûdan", "name:kw"=>"Soudan", "name:ky"=>"Судан", "name:la"=>"Sudania", "name:lb"=>"Sudan", "name:li"=>"Soedan", "name:ln"=>"Sudani", "name:lt"=>"Sudanas", "name:lv"=>"Sudāna", "name:mi"=>"Hūtāne", "name:mk"=>"Судан", "name:ml"=>"സുഡാൻ", "name:mn"=>"Судан", "name:mr"=>"सुदान", "name:ms"=>"Sudan", "name:mt"=>"Sudan", "name:my"=>"ဆူဒန်နိုင်ငံ", "name:na"=>"Tudan", "name:nl"=>"Soedan", "name:nn"=>"Sudan", "name:no"=>"Sudan", "name:nv"=>"Soodą́ą", "name:ny"=>"Sudan", "name:oc"=>"Sodan", "name:om"=>"Sudaan", "name:or"=>"ସୁଦାନ", "name:os"=>"Судан", "name:pa"=>"ਸੁਡਾਨ", "name:pl"=>"Sudan", "name:ps"=>"سوډان", "name:pt"=>"Sudão", "name:qu"=>"Sudan", "name:rm"=>"Sudan", "name:ro"=>"Sudan", "name:ru"=>"Судан", "name:rw"=>"Sudani", "name:sa"=>"सूडान", "name:sc"=>"Sudan", "name:sd"=>"سوڊان", "name:se"=>"Sudan", "name:sg"=>"Sudäan", "name:sh"=>"Sudan", "name:sk"=>"Sudán", "name:sl"=>"Sudan", "name:sm"=>"Sudan", "name:sn"=>"Sudan", "name:so"=>"Suudaan", "name:sq"=>"Sudani", "name:sr"=>"Судан", "name:ss"=>"ISudani", "name:su"=>"Sudan", "name:sv"=>"Sudan", "name:sw"=>"Sudan", "name:ta"=>"சூடான்", "name:te"=>"సూడాన్", "name:tg"=>"Судон", "name:th"=>"ประเทศซูดาน", "name:ti"=>"ሱዳን", "name:tk"=>"Sudan", "name:tl"=>"Sudan", "name:tr"=>"Sudan", "name:ts"=>"Sudan", "name:tt"=>"Судан", "name:ug"=>"سۇدان", "name:uk"=>"Судан", "name:ur"=>"سوڈان", "name:uz"=>"Sudan", "name:vi"=>"Sudan", "name:vo"=>"Sudän", "name:wo"=>"Sudaan", "name:yi"=>"סודאן", "name:yo"=>"Sudan", "name:zh"=>"苏丹共和国"
-za "name"=>"South Africa", "name:af"=>"Suid-Afrika", "name:ak"=>"Afrika Anaafo", "name:am"=>"ደቡብ አፍሪካ", "name:an"=>"Sudafrica", "name:ar"=>"جنوب أفريقيا", "name:az"=>"Cənub Afrika", "name:be"=>"Паўднёва-Афрыканская Рэспубліка", "name:bg"=>"Южна Африка", "name:bm"=>"Worodugu Afriki", "name:bn"=>"দক্ষিণ আফ্রিকা", "name:bo"=>"ལྷོ་ ཨཕྲི་ཀ།", "name:br"=>"Suafrika", "name:bs"=>"Južna Afrika", "name:ca"=>"Sud-àfrica", "name:ce"=>"Къилба-Африкин Республика", "name:cs"=>"Jižní Afrika", "name:cv"=>"Кăнтăр Африка", "name:cy"=>"De Affrica", "name:da"=>"Sydafrika", "name:de"=>"Südafrika", "name:dv"=>"ދެކުނު އެފްރިކާ", "name:dz"=>"སཱའུཐ་ ཨཕ་རི་ཀ", "name:ee"=>"Anyiehe Afrika nutome", "name:el"=>"Νότια Αφρική", "name:en"=>"South Africa", "name:eo"=>"Sud-Afriko", "name:es"=>"Sudáfrica", "name:et"=>"Lõuna-Aafrika Vabariik", "name:eu"=>"Hegoafrika", "name:fa"=>"آفریقای جنوبی", "name:ff"=>"Afrik bŋ Worgo", "name:fi"=>"Etelä-Afrikka", "name:fo"=>"Suðurafrika", "name:fr"=>"Afrique du Sud", "name:fy"=>"Súd-Afrika", "name:ga"=>"An Afraic Theas", "name:gd"=>"Afraga a Deas", "name:gl"=>"Suráfrica", "name:gn"=>"Yvyafrika", "name:gu"=>"દક્ષિણ આફ્રિકા", "name:gv"=>"Yn Affrick Yiass", "name:ha"=>"Afirka ta Kudu", "name:he"=>"דרום אפריקה", "name:hi"=>"दक्षिण अफ़्रीका", "name:hr"=>"Južna Afrika", "name:ht"=>"Afrik disid", "name:hu"=>"Dél-Afrika", "name:hy"=>"Հարավային Աֆրիկա", "name:ia"=>"Africa del Sud", "name:id"=>"Afrika Selatan", "name:ie"=>"Sudafrica", "name:io"=>"Sud-Afrika", "name:is"=>"Suður-Afríka", "name:it"=>"Sudafrica", "name:ja"=>"南アフリカ", "name:jv"=>"Afrika Kidul", "name:ka"=>"სამხრეთ აფრიკა", "name:kg"=>"Afelika ya Sudi", "name:ki"=>"Abĩrika Kusini", "name:kk"=>"Оңтүстік Африка", "name:km"=>"អាព្រិកភាគខាងត្បូង", "name:kn"=>"ದಕ್ಷಿಣ ಆಫ್ರಿಕಾ", "name:ko"=>"남아프리카", "name:ks"=>"جَنوٗبی اَفریٖکا", "name:ku"=>"Afrîkaya Başûr", "name:kv"=>"Лунвыв Африкаса Республика", "name:kw"=>"Afrika Dhyhow", "name:ky"=>"Африкаанс тили", "name:la"=>"Africa Australis", "name:lb"=>"Südafrika", "name:lg"=>"Sawusafirika", "name:li"=>"Zuud-Afrika", "name:ln"=>"Sidafríka", "name:lo"=>"ອາຟະລິກາໃຕ້", "name:lt"=>"Pietų Afrika", "name:lv"=>"Dienvidāfrika", "name:mg"=>"Afrika Atsimo", "name:mi"=>"Awherika ki te Tonga", "name:mk"=>"Јужна Африка", "name:ml"=>"ദക്ഷിണാഫ്രിക്ക", "name:mn"=>"Өмнөд Африк", "name:mr"=>"दक्षिण अफ्रिका", "name:ms"=>"Afrika Selatan", "name:mt"=>"Afrika t’Isfel", "name:my"=>"တောင်အာဖရိက", "name:ne"=>"दक्षिण अफ्रिका", "name:nl"=>"Zuid-Afrika", "name:nn"=>"Sør-Afrika", "name:no"=>"Sør-Afrika", "name:nv"=>"Kéyah Naakai Łizhinii Bikéyah Shádiʼááhjí Siʼánígíí", "name:ny"=>"South Africa", "name:oc"=>"Sud d'Africa", "name:or"=>"ଦକ୍ଷିଣ ଆଫ୍ରିକା", "name:os"=>"Хуссар Африкæйы", "name:pa"=>"ਦੱਖਣੀ ਅਫ਼ਰੀਕਾ", "name:pl"=>"Republika Południowej Afryki", "name:ps"=>"سویلي افریقا", "name:pt"=>"África do Sul", "name:qu"=>"Urin Aphrika", "name:rm"=>"Africa dal Sid", "name:rn"=>"Afurika y'Epfo", "name:ro"=>"Africa de Sud", "name:ru"=>"Южная Африка", "name:rw"=>"Afurika y’Epfo", "name:sa"=>"दक्षिण-आफ्रिका", "name:sc"=>"Sudàfrica", "name:se"=>"Lulli-Afrihká", "name:sg"=>"Afrîka-Mbongo", "name:sh"=>"Južna Afrika", "name:si"=>"දකුණු අප්රිකාව", "name:sk"=>"Južná Afrika", "name:sl"=>"Južna Afrika", "name:sn"=>"South Africa", "name:so"=>"Koonfur Afrika", "name:sq"=>"Afrika e Jugut", "name:sr"=>"Јужна Африка", "name:ss"=>"INingizimu Afrika", "name:st"=>"Afrika Borwa", "name:su"=>"Afrika Kidul", "name:sv"=>"Sydafrika", "name:sw"=>"Afrika Kusini", "name:ta"=>"தென் ஆப்பிரிக்கா", "name:te"=>"దక్షిణ ఆఫ్రికా రాజ్యం", "name:tg"=>"Африқои Ҷанубӣ", "name:th"=>"แอฟริกาใต้", "name:ti"=>"ደቡብ አፍሪካ", "name:tk"=>"Günorta Afrika", "name:tl"=>"Timog Aprika", "name:tn"=>"Aferika Borwa", "name:to"=>"ʻAfilika tonga", "name:tr"=>"Güney Afrika", "name:ts"=>"Afrika-Dzonga", "name:tt"=>"Көньяк Африка", "name:ug"=>"جەنۇبىي ئافرىقا", "name:uk"=>"Південна Африка", "name:ur"=>"جنوبی افریقہ", "name:uz"=>"Janubiy Afrika", "name:ve"=>"Afurika Tshipembe", "name:vi"=>"Nam Phi", "name:vo"=>"Sulüdafrikän", "name:wa"=>"Nonne-Afrike", "name:wo"=>"Afrig gu Bëj-saalum", "name:xh"=>"uMzantsi Afrika", "name:yi"=>"דרום אפריקע", "name:yo"=>"Gúúsù Áfríkà", "name:zh"=>"南非", "name:zu"=>"iNingizimu Afrika"
-kn "name"=>"Saint Kitts and Nevis", "name:af"=>"Sint Kitts en Nevis", "name:ar"=>"سانت كيتس ونيفس", "name:be"=>"Святы Кітс і Невіс", "name:br"=>"Saint Kitts-ha-Nevis", "name:ca"=>"Saint Kitts i Nevis", "name:cs"=>"Svatý Kryštof a Nevis", "name:cy"=>"Saint Kitts a Nevis", "name:da"=>"Saint Kitts og Nevis", "name:de"=>"St. Kitts und Nevis", "name:el"=>"Άγιος Χριστόφορος και Νέβις", "name:en"=>"Saint Kitts and Nevis", "name:eo"=>"Sankta Kristoforo kaj Neviso", "name:es"=>"San Cristóbal y Nieves", "name:et"=>"Saint Kitts ja Nevis", "name:fa"=>"سنت کیتس و نویس", "name:fi"=>"Saint Kitts ja Nevis", "name:fr"=>"Saint-Christophe-et-Niévès", "name:fy"=>"Sint Kitts en Nevis", "name:ga"=>"San Críostóir-Nimheas", "name:gd"=>"Naomh Crìstean agus Nibheis", "name:he"=>"סנט קיטס ונוויס", "name:hr"=>"Sveti Kristofor i Nevis", "name:hu"=>"Saint Kitts és Nevis", "name:ia"=>"Sancte Christophoro e Nevis", "name:id"=>"Saint Kitts dan Nevis", "name:io"=>"Santa Kitts e Nevis", "name:is"=>"Sankti Kristófer og Nevis", "name:it"=>"Saint Kitts e Nevis", "name:lb"=>"Saint Kitts a Nevis", "name:li"=>"Saint-Kitts", "name:lt"=>"Sent Kitsas ir Nevis", "name:mk"=>"Свети Кристифер и Невис", "name:mn"=>"Сент-Киттс ба Невис", "name:nl"=>"Saint Kitts en Nevis", "name:pl"=>"Saint Kitts i Nevis", "name:pt"=>"São Cristóvão e Nevis", "name:ru"=>"Сент-Китс и Невис", "name:se"=>"Saint Kitts ja Nevis", "name:sl"=>"Sveti Krištof in Nevis", "name:sv"=>"Saint Kitts och Nevis", "name:ta"=>"செயிண்ட் கிட்சும் நெவிசும்", "name:th"=>"ประเทศเซนต์คิตส์และเนวิส", "name:tr"=>"Saint Kitts ve Nevis", "name:uk"=>"Сент-Кіттс і Невіс", "name:vi"=>"Saint Kitts và Nevis", "name:vo"=>"Sankiteän e Neviseän", "name:zh"=>"圣基茨和尼维斯"
-jm "name"=>"Jamaica", "name:af"=>"Jamaika", "name:ar"=>"جامايكا", "name:be"=>"Ямайка", "name:br"=>"Jamaika", "name:cs"=>"Jamajka", "name:de"=>"Jamaika", "name:el"=>"Ιαμαϊκή", "name:en"=>"Jamaica", "name:eo"=>"Jamajko", "name:fa"=>"جامائیکا", "name:fi"=>"Jamaika", "name:fr"=>"Jamaïque", "name:fy"=>"Jamaika", "name:ga"=>"Iamáice", "name:gd"=>"Iaimeuca", "name:he"=>"ג'מייקה", "name:hr"=>"Jamajka", "name:hu"=>"Jamaica", "name:id"=>"Jamaika", "name:io"=>"Jamaika", "name:is"=>"Jamaíka", "name:it"=>"Giamaica", "name:ja"=>"ジャマイカ", "name:ku"=>"Camayka", "name:la"=>"Iamaica", "name:lb"=>"Jamaika", "name:lt"=>"Jamaika", "name:lv"=>"Jamaika", "name:mn"=>"Ямайка", "name:nl"=>"Jamaica", "name:oc"=>"Jamaica", "name:pl"=>"Jamajka", "name:pt"=>"Jamaica", "name:ru"=>"Ямайка", "name:se"=>"Jamaica", "name:sk"=>"Jamajka", "name:sl"=>"Jamajka", "name:sv"=>"Jamaica", "name:ta"=>"ஜமேக்கா", "name:th"=>"ประเทศจาเมกา", "name:tr"=>"Jamaika", "name:uk"=>"Ямайка", "name:vo"=>"Camekeän", "name:zh"=>"牙买加"
-cl "name"=>"Chile", "name:ab"=>"Чили", "name:af"=>"Chili", "name:ak"=>"Chile", "name:am"=>"ቺሌ", "name:an"=>"Chile", "name:ar"=>"تشيلي", "name:as"=>"চিলি", "name:av"=>"Чили", "name:ay"=>"Chili", "name:az"=>"Çili", "name:ba"=>"Чи́ли", "name:be"=>"Чылі", "name:bg"=>"Чили", "name:bh"=>"चिली", "name:bi"=>"Chile", "name:bm"=>"Chile", "name:bn"=>"চিলি", "name:bo"=>"ཅི་ལི།", "name:br"=>"Chile", "name:bs"=>"Čile", "name:ca"=>"Xile", "name:ce"=>"Чили", "name:ch"=>"Chile", "name:co"=>"Cile", "name:cs"=>"Chile", "name:cu"=>"Чилє", "name:cv"=>"Чили", "name:cy"=>"Chile", "name:da"=>"Chile", "name:de"=>"Chile", "name:dv"=>"ޗިލީ", "name:dz"=>"ཅི་ལེ", "name:ee"=>"Chile", "name:el"=>"Χιλή", "name:en"=>"Chile", "name:eo"=>"Ĉilio", "name:es"=>"Chile", "name:et"=>"Tšiili", "name:eu"=>"Txile", "name:fa"=>"شیلی", "name:ff"=>"Ciile", "name:fi"=>"Chile", "name:fj"=>"Chile", "name:fo"=>"Kili", "name:fr"=>"Chili", "name:fy"=>"Sily", "name:ga"=>"an tSile", "name:gd"=>"an t-Sile", "name:gl"=>"Chile", "name:gn"=>"Chile", "name:gu"=>"ચીલી", "name:gv"=>"yn Çhillee", "name:ha"=>"Chile", "name:he"=>"צ'ילה", "name:hi"=>"चिली", "name:hr"=>"Čile", "name:ht"=>"Chili", "name:hu"=>"Chile", "name:hy"=>"Չիլի", "name:ia"=>"Chile", "name:id"=>"Chili", "name:ie"=>"Chile", "name:ig"=>"Chile", "name:ik"=>"Cili", "name:io"=>"Chili", "name:is"=>"Síle", "name:it"=>"Cile", "name:iu"=>"ᓯᓕ", "name:ja"=>"チリ", "name:jv"=>"Chili", "name:ka"=>"ჩილე", "name:kg"=>"Chile", "name:ki"=>"Chile", "name:kk"=>"Чили", "name:kl"=>"Chile", "name:km"=>"ឈីលី", "name:kn"=>"ಚಿಲಿ", "name:ko"=>"칠레", "name:ks"=>"چِلی", "name:ku"=>"Şîle", "name:kv"=>"Чили", "name:kw"=>"Chile", "name:ky"=>"Чили", "name:la"=>"Chilia", "name:lb"=>"Chile", "name:lg"=>"Chile", "name:li"=>"Chili", "name:ln"=>"Shili", "name:lo"=>"ປະເທດຈີເລ", "name:lt"=>"Čilė", "name:lv"=>"Čīle", "name:mg"=>"Silia", "name:mi"=>"Hiri", "name:mk"=>"Чиле", "name:ml"=>"ചിലി", "name:mn"=>"Чили", "name:mr"=>"चिली", "name:ms"=>"Chile", "name:mt"=>"Ċili", "name:my"=>"ချီလီနိုင်ငံ", "name:na"=>"Tsire", "name:ne"=>"चिली", "name:nl"=>"Chili", "name:nn"=>"Chile", "name:no"=>"Chile", "name:nv"=>"Chíilii", "name:ny"=>"Chile", "name:oc"=>"Chile", "name:om"=>"Chiilii", "name:or"=>"ଚିଲି", "name:os"=>"Чили", "name:pa"=>"ਚਿਲੀ", "name:pi"=>"चिले", "name:pl"=>"Chile", "name:ps"=>"چېلي", "name:pt"=>"Chile", "name:qu"=>"Chili", "name:rm"=>"Chile", "name:rn"=>"Chile", "name:ro"=>"Chile", "name:ru"=>"Чили", "name:rw"=>"Shili", "name:sa"=>"चिले", "name:sc"=>"Cile", "name:sd"=>"چلي", "name:se"=>"Chile", "name:sg"=>"Shilïi", "name:sh"=>"Čile", "name:si"=>"චිලි", "name:sk"=>"Čile", "name:sl"=>"Čile", "name:sm"=>"Shili", "name:sn"=>"Chile", "name:so"=>"Jili", "name:sq"=>"Kilia", "name:sr"=>"Чиле", "name:ss"=>"iShile", "name:st"=>"Chile", "name:su"=>"Cilé", "name:sv"=>"Chile", "name:sw"=>"Chile", "name:ta"=>"சிலி", "name:te"=>"చిలీ", "name:tg"=>"Чиле", "name:th"=>"ชิลี", "name:ti"=>"ቺሌ", "name:tk"=>"Çili", "name:tl"=>"Chile", "name:tn"=>"Chile", "name:to"=>"Sile", "name:tr"=>"Şili", "name:ts"=>"Chile", "name:tt"=>"Чи́ли", "name:tw"=>"Kyili", "name:ty"=>"Tīri", "name:ug"=>"چىلى", "name:uk"=>"Чи́лі", "name:ur"=>"چلی", "name:uz"=>"Chili", "name:ve"=>"Shile", "name:vi"=>"Chi-lê", "name:vo"=>"Cilän", "name:wa"=>"Tchili", "name:wo"=>"Ciili", "name:xh"=>"iChile", "name:yi"=>"טשילע", "name:yo"=>"Tsílè", "name:za"=>"Chile", "name:zh"=>"智利", "name:zu"=>"ITshile"
-et "name"=>"ኢትዮጵያ", "name:af"=>"Ethiopië", "name:ak"=>"Ithiopia", "name:am"=>"ኢትዮጵያ", "name:an"=>"Etiopia", "name:ar"=>"إثيوبيا", "name:av"=>"Хабашистан", "name:az"=>"Efiopiya", "name:ba"=>"Эфио́пия", "name:be"=>"Эфіопія", "name:bg"=>"Етиопия", "name:bh"=>"इथियोपिया", "name:bm"=>"Etiopia", "name:bn"=>"ইথিওপিয়া", "name:bo"=>"ཨི་ཐི་ཨོ་པི་ཡ།", "name:br"=>"Etiopia", "name:bs"=>"Etiopija", "name:ca"=>"Etiòpia", "name:ce"=>"Эфио́пи", "name:cs"=>"Etiopie", "name:cu"=>"Єѳїопі́ꙗ", "name:cv"=>"Эфиопи", "name:cy"=>"Ethiopia", "name:da"=>"Etiopien", "name:de"=>"Äthiopien", "name:dv"=>"ޙަބުޝްކަރަ", "name:dz"=>"ཨི་ཐི་ཡོ་པི་ཡ", "name:ee"=>"Etiopia", "name:el"=>"Αιθιοπία", "name:en"=>"Ethiopia", "name:eo"=>"Etiopio", "name:es"=>"Etiopía", "name:et"=>"Etioopia", "name:eu"=>"Etiopia", "name:fa"=>"اتیوپی", "name:fi"=>"Etiopia", "name:fo"=>"Etiopia", "name:fr"=>"Éthiopie", "name:fy"=>"Etioopje", "name:ga"=>"an Aetóip", "name:gd"=>"An Aetiòp", "name:gl"=>"Etiopía - Ityop'iya", "name:gn"=>"Etiopia", "name:gu"=>"ઇથિયોપિયા", "name:gv"=>"yn Eetoip", "name:ha"=>"Ethiopia", "name:he"=>"אתיופיה", "name:hi"=>"इथियोपिया", "name:hr"=>"Etiopija", "name:ht"=>"Etyopi", "name:hu"=>"Etiópia", "name:hy"=>"Եթովպիա", "name:ia"=>"Ethiopia", "name:id"=>"Ethiopia", "name:ie"=>"Etiopia", "name:ig"=>"Ethiopia", "name:io"=>"Etiopia", "name:is"=>"Eþíópía", "name:it"=>"Etiopia", "name:ja"=>"エチオピア", "name:jv"=>"Étiopia", "name:ka"=>"ეთიოპია", "name:kg"=>"Itiopia", "name:ki"=>"Ethiopia", "name:kk"=>"Ефиопия", "name:km"=>"អេត្យូពី", "name:kn"=>"ಇತಿಯೋಪಿಯ", "name:ko"=>"에티오피아", "name:ks"=>"اِتھوپِیا", "name:ku"=>"Etiyopya", "name:kv"=>"Эфиопия", "name:kw"=>"Ethiopi", "name:ky"=>"Эфиопия", "name:la"=>"Aethiopia", "name:lb"=>"Ethiopien", "name:lg"=>"Ethiopia", "name:li"=>"Ethiopië", "name:ln"=>"Etiopi", "name:lo"=>"ເອທີໂອເປຍ", "name:lt"=>"Etiopija", "name:lv"=>"Etiopija", "name:mg"=>"Etiopia", "name:mi"=>"Etiopia", "name:mk"=>"Етиопија", "name:ml"=>"എത്യോപ്യ", "name:mn"=>"Этиоп", "name:mr"=>"इथियोपिया", "name:ms"=>"Habsyah", "name:mt"=>"Etjopja", "name:my"=>"အီသီယိုးပီးယားနိုင်ငံ", "name:na"=>"Itiyopiya", "name:ne"=>"इथियोपिया", "name:nl"=>"Ethiopië", "name:nn"=>"Etiopia", "name:no"=>"Etiopia", "name:nv"=>"Iithiyópya", "name:oc"=>"Etiopia", "name:om"=>"Itoophiyaa", "name:or"=>"ଇଥିଓପିଆ", "name:os"=>"Эфио́пи", "name:pa"=>"ਇਥੋਪੀਆ", "name:pi"=>"ईथ्योपिया", "name:pl"=>"Etiopia", "name:ps"=>"اېتوپیا", "name:pt"=>"Etiópia", "name:qu"=>"Ithiyupya", "name:rm"=>"Etiopia", "name:ro"=>"Etiopia", "name:ru"=>"Эфиопия", "name:rw"=>"Etiyopiya", "name:sa"=>"ईथ्योपिया", "name:sc"=>"Etiòpia", "name:se"=>"Etiopia", "name:sg"=>"Etiopïi", "name:sh"=>"Etiopija", "name:si"=>"ඉතියෝපියාව", "name:sk"=>"Etiópia", "name:sl"=>"Etiópija", "name:sm"=>"Ethiopia", "name:sn"=>"Ethiopia", "name:so"=>"Itoobiya", "name:sq"=>"Etiopia", "name:sr"=>"Етиопија", "name:ss"=>"iTopiya", "name:st"=>"Ethiopia", "name:su"=>"Étiopia", "name:sv"=>"Etiopien", "name:sw"=>"Ethiopia", "name:ta"=>"எத்தியோப்பியா", "name:te"=>"ఇథియోపియా", "name:tg"=>"Эфиопия", "name:th"=>"เอธิโอเปีย", "name:ti"=>"ኢትዮጵያ", "name:tk"=>"Efiopiýa", "name:tl"=>"Etiyopiya", "name:to"=>"ʻItiōpea", "name:tr"=>"Etiyopya", "name:ts"=>"Topiya", "name:tt"=>"Хәбәшстан", "name:ug"=>"ئېفىئوپىيە", "name:uk"=>"Ефіо́пія", "name:ur"=>"ایتھوپیا", "name:uz"=>"Efiopiya", "name:vi"=>"Ethiopia", "name:vo"=>"Lätiopän", "name:wa"=>"Etiopeye", "name:wo"=>"Ecoopi", "name:xh"=>"iTopiya", "name:yi"=>"עטיאָפּיע", "name:yo"=>"Ethiópíà", "name:za"=>"Ethiopia", "name:zh"=>"埃塞俄比亚", "name:zu"=>"i-Ithiopia"
-lk "name"=>"ශ්රී ලංකාව இலங்கை", "name:af"=>"Sri Lanka", "name:am"=>"ሽሪ ላንካ", "name:an"=>"Sri Lanka", "name:ar"=>"سريلانكا", "name:az"=>"Şri-Lanka", "name:ba"=>"Шри-Ланка", "name:be"=>"Шры-Ланка", "name:bg"=>"Шри Ланка", "name:bn"=>"শ্রীলঙ্কা", "name:bo"=>"སེང་ག་གླིང་།", "name:br"=>"Sri Lanka", "name:bs"=>"Šri Lanka", "name:ca"=>"Sri Lanka", "name:cs"=>"Šrí Lanka", "name:cv"=>"Шри-Ланка", "name:cy"=>"Sri Lanka", "name:da"=>"Sri Lanka", "name:de"=>"Sri Lanka", "name:dv"=>"އޮޅުދޫކަރަ", "name:dz"=>"ཤྲཱྀ་ལངཀ་", "name:el"=>"Σρι Λάνκα", "name:en"=>"Sri Lanka", "name:eo"=>"Sri-Lanko", "name:es"=>"Sri Lanka", "name:et"=>"Sri Lanka", "name:eu"=>"Sri Lanka", "name:fa"=>"سریلانکا", "name:fi"=>"Sri Lanka", "name:fo"=>"Sri Lanka", "name:fr"=>"Sri Lanka", "name:fy"=>"Sry Lanka", "name:ga"=>"Srí Lanca", "name:gd"=>"Sri Lanca", "name:gl"=>"Sri Lanka - Sri Lankā", "name:gu"=>"શ્રીલંકા", "name:gv"=>"Sri Lanka", "name:he"=>"סרי לנקה", "name:hi"=>"श्रीलंका", "name:hr"=>"Šri Lanka", "name:ht"=>"Srilanka", "name:hu"=>"Srí Lanka", "name:hy"=>"Շրի Լանկա", "name:ia"=>"Sri Lanka", "name:id"=>"Sri Lanka", "name:ie"=>"Sri Lanka", "name:io"=>"Sri Lanka", "name:is"=>"Srí Lanka", "name:it"=>"Sri Lanka", "name:ja"=>"スリランカ", "name:jv"=>"Sri Lanka", "name:ka"=>"შრი-ლანკა", "name:ki"=>"Sri Lanka", "name:kk"=>"Шри-Ланка", "name:km"=>"ស្រីលង្កា", "name:kn"=>"ಶ್ರೀಲಂಕಾ", "name:ko"=>"스리랑카", "name:ku"=>"Srî Lanka", "name:kv"=>"Шри-Ланка", "name:kw"=>"Shri Lanka", "name:la"=>"Taprobane", "name:lb"=>"Sri Lanka", "name:li"=>"Sri Lanka", "name:ln"=>"Sri Lanka", "name:lt"=>"Šri Lanka", "name:lv"=>"Šrilanka", "name:mg"=>"Sri Lanka", "name:mi"=>"Hīraka", "name:mk"=>"Шри Ланка", "name:ml"=>"ശ്രീലങ്ക", "name:mn"=>"Шри Ланка", "name:mr"=>"श्रीलंका", "name:ms"=>"Sri Lanka", "name:mt"=>"Sri Lanka", "name:my"=>"သီရိလင်္ကာနိုင်ငံ", "name:na"=>"Sri Lanka", "name:ne"=>"श्रीलंका", "name:nl"=>"Sri Lanka", "name:nn"=>"Sri Lanka", "name:no"=>"Sri Lanka", "name:nv"=>"Swii Lankʼa", "name:oc"=>"Sri Lanka", "name:om"=>"Sirilaankaa", "name:or"=>"ଶ୍ରୀଲଙ୍କା", "name:os"=>"Шри-Ланка", "name:pa"=>"ਸ੍ਰੀਲੰਕਾ", "name:pl"=>"Sri Lanka", "name:ps"=>"سریلانکا", "name:pt"=>"Seri-Lanca", "name:qu"=>"Sri Lanka", "name:ro"=>"Sri Lanka", "name:ru"=>"Шри-Ланка", "name:rw"=>"Siri Lanka", "name:sa"=>"श्रीलङ्का", "name:se"=>"Sri Lanka", "name:sh"=>"Šri Lanka", "name:si"=>"ශ්රී ලංකාව", "name:sk"=>"Srí Lanka", "name:sl"=>"Šrilanka", "name:sm"=>"Sri Lanka", "name:so"=>"Siri Lanka", "name:sq"=>"Sri Lanka", "name:sr"=>"Шри Ланка", "name:ss"=>"Siri Lanka", "name:su"=>"Sri Langka", "name:sv"=>"Sri Lanka", "name:sw"=>"Sri Lanka", "name:ta"=>"இலங்கை", "name:te"=>"శ్రీలంక", "name:tg"=>"Шри-Ланка", "name:th"=>"ประเทศศรีลังกา", "name:tk"=>"Şri-Lanka", "name:tl"=>"Sri Lanka", "name:tr"=>"Sri Lanka", "name:tt"=>"Шри-Ланка", "name:ug"=>"سرىلانكا", "name:uk"=>"Шрі-Ланка", "name:ur"=>"سری لنکا", "name:uz"=>"Shri-Lanka", "name:vi"=>"Sri Lanka", "name:vo"=>"Sri-Lankän", "name:wo"=>"Siri Laanka", "name:yi"=>"סרי לאנקא", "name:yo"=>"Sri Lanka", "name:zh"=>"斯里蘭卡"
-mz "name"=>"Moçambique", "name:af"=>"Mosambiek", "name:am"=>"ሞዛምቢክ", "name:an"=>"Mozambique", "name:ar"=>"موزمبيق", "name:az"=>"Mozambik", "name:ba"=>"Мозамбик", "name:be"=>"Мазамбік", "name:bg"=>"Мозамбик", "name:bm"=>"Mozanbik", "name:bn"=>"মোজাম্বিক", "name:bo"=>"མོ་ཛམ་བིཀ།", "name:br"=>"Mozambik", "name:bs"=>"Mozambik", "name:ca"=>"Moçambic", "name:ce"=>"Мозамбик", "name:co"=>"Mozambicu", "name:cs"=>"Mosambik", "name:cv"=>"Мозамбик", "name:cy"=>"Mosambic", "name:da"=>"Mozambique", "name:de"=>"Mosambik", "name:dv"=>"މުސިންބީ", "name:el"=>"Μοζαμβίκη", "name:en"=>"Mozambique", "name:eo"=>"Mozambiko", "name:es"=>"Mozambique", "name:et"=>"Mosambiik", "name:eu"=>"Mozambike", "name:fa"=>"موزامبیک", "name:fi"=>"Mosambik", "name:fo"=>"Mosambik", "name:fr"=>"Mozambique", "name:fy"=>"Mozambyk", "name:ga"=>"Poblacht Mhósaimbíc", "name:gd"=>"Mòsaimbic", "name:gl"=>"Mozambique", "name:gn"=>"Mosambike", "name:gv"=>"Yn Vosambeeck", "name:he"=>"מוזמביק", "name:hi"=>"मोज़ाम्बीक", "name:hr"=>"Mozambik", "name:ht"=>"Mozanbik", "name:hu"=>"Mozambik", "name:hy"=>"Մոզամբիկ", "name:ia"=>"Mozambique", "name:id"=>"Mozambik", "name:ie"=>"Mozambique", "name:io"=>"Mozambik", "name:is"=>"Mósambík", "name:it"=>"Mozambico", "name:ja"=>"モザンビーク", "name:jv"=>"Mozambik", "name:ka"=>"მოზამბიკი", "name:kg"=>"Musambiki", "name:kk"=>"Мозамбик", "name:kn"=>"ಮೊಜಾಂಬಿಕ್", "name:ko"=>"모잠비크", "name:ku"=>"Mozambîk", "name:kw"=>"Mosambik", "name:la"=>"Mozambicum", "name:lb"=>"Mosambik", "name:li"=>"Mozambique", "name:ln"=>"Mozambíki", "name:lt"=>"Mozambikas", "name:lv"=>"Mozambika", "name:mg"=>"Mozambika", "name:mi"=>"Mohapiki", "name:mk"=>"Мозамбик", "name:ml"=>"മൊസാംബിക്ക്", "name:mn"=>"Мозамбик", "name:mr"=>"मोझांबिक", "name:ms"=>"Mozambique", "name:mt"=>"Możambik", "name:my"=>"မိုဇမ်ဘစ်နိုင်ငံ", "name:nl"=>"Mozambique", "name:nn"=>"Mosambik", "name:no"=>"Mosambik", "name:ny"=>"Mozambique", "name:oc"=>"Moçambic", "name:or"=>"ମୋଜାମ୍ବିକ", "name:os"=>"Мозамбик", "name:pa"=>"ਮੋਜ਼ੈਂਬੀਕ", "name:pl"=>"Mozambik", "name:ps"=>"موزمبيق", "name:pt"=>"Moçambique", "name:qu"=>"Musambik", "name:ro"=>"Mozambic", "name:ru"=>"Мозамбик", "name:rw"=>"Mozambike", "name:sa"=>"मोजम्बीक", "name:sc"=>"Mozambico", "name:se"=>"Mosambik", "name:sg"=>"Mözämbîka", "name:sh"=>"Mozambik", "name:sk"=>"Mozambik", "name:sl"=>"Mozambik", "name:sn"=>"Mozambique", "name:so"=>"Musanbiig", "name:sq"=>"Mozambiku", "name:sr"=>"Мозамбик", "name:ss"=>"IMozambikhi", "name:su"=>"Mosambik", "name:sv"=>"Moçambique", "name:sw"=>"Msumbiji", "name:ta"=>"மொசாம்பிக்", "name:tg"=>"Мозамбик", "name:th"=>"ประเทศโมซัมบิก", "name:ti"=>"ሞዛምቢክ", "name:tk"=>"Mozambik", "name:tl"=>"Musambik", "name:tr"=>"Mozambik", "name:ts"=>"Mozambique", "name:ug"=>"موزامبىك", "name:uk"=>"Мозамбік", "name:ur"=>"موزمبیق", "name:uz"=>"Mozambik", "name:ve"=>"Mozambikwi", "name:vi"=>"Mozambique", "name:vo"=>"Mozambikän", "name:wo"=>"Mosambik", "name:yi"=>"מאזאמביק", "name:yo"=>"Mòsámbìk", "name:zh"=>"莫桑比克", "name:zu"=>"IMozambiki"
-py "name"=>"Paraguay", "name:af"=>"Paraguay", "name:am"=>"ፓራጓይ", "name:an"=>"Paraguai", "name:ar"=>"باراغواي", "name:ay"=>"Parawayi", "name:az"=>"Paraqvay", "name:ba"=>"Парагвай", "name:be"=>"Парагвай", "name:bg"=>"Парагвай", "name:bi"=>"Paraguay", "name:bn"=>"প্যারাগুয়ে", "name:bo"=>"པ་ར་གུ་ཡེ།", "name:br"=>"Paraguay", "name:bs"=>"Paragvaj", "name:ca"=>"Paraguai", "name:ce"=>"Парагвай", "name:co"=>"Paraguay", "name:cs"=>"Paraguay", "name:cv"=>"Парагвай", "name:cy"=>"Paraguay", "name:da"=>"Paraguay", "name:de"=>"Paraguay", "name:dv"=>"ޕެރަގުއޭ", "name:ee"=>"Paraguay", "name:el"=>"Παραγουάη", "name:en"=>"Paraguay", "name:eo"=>"Paragvajo", "name:es"=>"Paraguay", "name:et"=>"Paraguay", "name:eu"=>"Paraguai", "name:fa"=>"پاراگوئه", "name:fi"=>"Paraguay", "name:fo"=>"Paraguei", "name:fr"=>"Paraguay", "name:fy"=>"Paraguay", "name:ga"=>"Paragua", "name:gd"=>"Paraguaidh", "name:gl"=>"Paraguai", "name:gn"=>"Paraguái", "name:gv"=>"Yn Pharaguay", "name:he"=>"פרגוואי", "name:hi"=>"पैराग्वे", "name:hr"=>"Paragvaj", "name:ht"=>"Paragwe", "name:hu"=>"Paraguay", "name:hy"=>"Պարագվայ", "name:ia"=>"Paraguay", "name:id"=>"Paraguay", "name:ie"=>"Paraguay", "name:io"=>"Paraguay", "name:is"=>"Paragvæ", "name:it"=>"Paraguay", "name:ja"=>"パラグアイ", "name:jv"=>"Paraguay", "name:ka"=>"პარაგვაი", "name:kk"=>"Парагвай", "name:kl"=>"Paraguay", "name:kn"=>"ಪೆರಗ್ವೆ", "name:ko"=>"파라과이", "name:ku"=>"Paraguay", "name:kw"=>"Paragway", "name:la"=>"Paraquaria", "name:lb"=>"Paraguay", "name:li"=>"Paraguay", "name:ln"=>"Palagway", "name:lt"=>"Paragvajus", "name:lv"=>"Paragvaja", "name:mk"=>"Парагвај", "name:ml"=>"പരഗ്വെ", "name:mn"=>"Парагвай", "name:mr"=>"पेराग्वे", "name:ms"=>"Paraguay", "name:mt"=>"Paragwaj", "name:my"=>"ပါရာဂွေးနိုင်ငံ", "name:ne"=>"पाराग्वे", "name:nl"=>"Paraguay", "name:nn"=>"Paraguay", "name:no"=>"Paraguay", "name:oc"=>"Paraguai", "name:or"=>"ପାରାଗୁଏ", "name:os"=>"Парагвай", "name:pa"=>"ਪੈਰਾਗੁਏ", "name:pl"=>"Paragwaj", "name:pt"=>"Paraguai", "name:qu"=>"Parawayi", "name:rm"=>"Paraguay", "name:ro"=>"Paraguay", "name:ru"=>"Парагвай", "name:rw"=>"Paragwe", "name:sa"=>"पेरेग्वाय", "name:se"=>"Paraguay", "name:sh"=>"Paragvaj", "name:sk"=>"Paraguaj", "name:sl"=>"Paragvaj", "name:so"=>"Paraguay", "name:sq"=>"Paraguaji", "name:sr"=>"Парагвај", "name:su"=>"Paraguay", "name:sv"=>"Paraguay", "name:sw"=>"Paraguay", "name:ta"=>"பரகுவை", "name:tg"=>"Парагвай", "name:th"=>"ประเทศปารากวัย", "name:tl"=>"Paraguay", "name:tr"=>"Paraguay", "name:tt"=>"Парагвай", "name:ug"=>"پاراگۋاي", "name:uk"=>"Парагвай", "name:ur"=>"پیراگوئے", "name:uz"=>"Paragvay", "name:vi"=>"Paraguay", "name:vo"=>"Paragvän", "name:wo"=>"Paraguwaay", "name:yi"=>"פאראגוויי", "name:yo"=>"Paragúáì", "name:zh"=>"巴拉圭"
-st "name"=>"São Tomé e Príncipe", "name:af"=>"São Tomé en Principe", "name:ar"=>"سان تومي وبرينسيبي", "name:br"=>"São Tomé ha Príncipe", "name:ca"=>"São Tomé i Príncipe", "name:cs"=>"Svatý Tomáš a Princův ostrov", "name:cy"=>"São Tomé a Príncipe", "name:da"=>"São Tomé og Príncipe", "name:de"=>"São Tomé und Príncipe", "name:el"=>"Σάο Τομέ και Πρίνσιπε", "name:en"=>"São Tomé and Príncipe", "name:eo"=>"Sao-Tomeo kaj Principeo", "name:es"=>"Santo Tomé y Príncipe", "name:et"=>"São Tomé ja Príncipe", "name:fa"=>"سائوتومه و پرینسیپ", "name:fi"=>"São Tomé ja Príncipe", "name:fr"=>"Sao Tomé-et-Principe", "name:fy"=>"Sao Tomee en Prinsipe", "name:ga"=>"São Tomé agus Príncipe", "name:gd"=>"São Tomé agus Príncipe", "name:he"=>"סאו טומה ופרינסיפה", "name:hr"=>"Sveti Toma i Princip", "name:hu"=>"São Tomé és Príncipe", "name:id"=>"Sao Tome dan Principe", "name:io"=>"San-Tome e Principe", "name:is"=>"Saó Tóme og Prinsípe", "name:la"=>"Insulae Sancti Thomae et Principis", "name:lb"=>"São Tomé a Príncipe", "name:li"=>"São Tomé en Príncipe", "name:lt"=>"Sao Tomė ir Prinsipė", "name:mn"=>"Сан-Томе ба Принсипи", "name:nl"=>"Sao Tomé en Principe", "name:pl"=>"Wyspy Świętego Tomasza i Książęca", "name:pt"=>"São Tomé e Príncipe", "name:ru"=>"Сан-Томе и Принсипи", "name:se"=>"São Tomé ja Príncipe", "name:sk"=>"Svätý Tomáš a Princov ostrov", "name:sl"=>"Sveti Tomaž in Princ", "name:sr"=>"Сао Томе и Принсипе", "name:sv"=>"São Tomé och Príncipe", "name:ta"=>"சாவோ தொமே மற்றும் பிரின்சிப்பி", "name:th"=>"ประเทศเซาตูเมและปรินซิปี", "name:tr"=>"São Tomé ve Príncipe", "name:uk"=>"Сан-Томе і Принсіпі", "name:vi"=>"São Tomé và Príncipe", "name:vo"=>"Saluda-Tomeän e Prinsipeän", "name:zh"=>"圣多美和普林西比"
-mv "name"=>"ދިވެހިރާއްޖެ", "name:af"=>"Maldive", "name:am"=>"ማልዲቭስ", "name:ar"=>"ملديف", "name:az"=>"Maldiv", "name:be"=>"Мальдывы", "name:bg"=>"Малдиви", "name:bm"=>"Maldivi", "name:bn"=>"মালদ্বীপ", "name:bo"=>"མལ་དྭིབ།", "name:br"=>"Maldivez", "name:bs"=>"Maldivi", "name:ca"=>"Maldives", "name:cs"=>"Maledivy", "name:da"=>"Maldiverne", "name:de"=>"Malediven", "name:dv"=>"ދިވެހިރާއްޖެ", "name:dz"=>"མཱལ་དིབས", "name:ee"=>"maldivesdukɔ", "name:el"=>"Μαλδίβες", "name:en"=>"Maldives", "name:eo"=>"Maldivoj", "name:es"=>"Maldivas", "name:et"=>"Maldiivid", "name:eu"=>"Maldivak", "name:fa"=>"مالدیو", "name:ff"=>"Maldiiwe", "name:fi"=>"Malediivit", "name:fo"=>"Maldivuoyggjarnar", "name:fr"=>"Maldives", "name:fy"=>"de Maldiven", "name:ga"=>"Oileáin Mhaildíve", "name:gd"=>"Na h-Eileanan Mhaladaibh", "name:gl"=>"Maldivas", "name:gu"=>"માલદિવ્સ", "name:gv"=>"Ny Maldeevaghyn", "name:ha"=>"Maldibi", "name:he"=>"מלדיבים", "name:hi"=>"मालदीव", "name:hr"=>"Maldivi", "name:hu"=>"Maldív-szigetek", "name:hy"=>"Մալդիվներ", "name:id"=>"Maladewa", "name:ig"=>"Maldivesa", "name:io"=>"Maldivi", "name:is"=>"Maldíveyjar", "name:it"=>"Maldive", "name:ka"=>"მალდივის კუნძულები", "name:ki"=>"Modivu", "name:km"=>"ម៉ាល់ឌីវ", "name:kn"=>"ಮಾಲ್ಡಿವ್ಸ್", "name:ks"=>"مالدیٖو", "name:ku"=>"Maldîv", "name:la"=>"Insulae Maldivae", "name:lb"=>"Malediven", "name:lg"=>"Bizinga by'eMalidive", "name:ln"=>"Madívɛ", "name:lo"=>"ມັນດິຟ", "name:lt"=>"Maldyvai", "name:lv"=>"Maldīvija", "name:mg"=>"Maldiva", "name:mk"=>"Малдиви", "name:ml"=>"മാലിദ്വീപ്", "name:mn"=>"Мальдив", "name:mr"=>"मालदीव्ज", "name:ms"=>"Maldiv", "name:my"=>"မော်လဒိုက်", "name:ne"=>"माल्दिभ्स", "name:nl"=>"Malediven", "name:nn"=>"Maldivane", "name:no"=>"Maldivene", "name:or"=>"ମାଳଦ୍ବୀପ", "name:pl"=>"Malediwy", "name:pt"=>"Maldivas", "name:rm"=>"Maldivas", "name:rn"=>"Moludave", "name:ro"=>"Maldive", "name:ru"=>"Мальдивы", "name:se"=>"Malediivvat", "name:sg"=>"Maldîva", "name:si"=>"මාල දිවයින", "name:sk"=>"Maledivy", "name:sl"=>"Maldivi", "name:so"=>"Maaldiqeen", "name:sq"=>"Maldivit", "name:sr"=>"Малдиви", "name:sv"=>"Maldiverna", "name:sw"=>"Modivu", "name:ta"=>"மாலத்தீவு", "name:te"=>"మాల్దీవులు", "name:th"=>"ประเทศมัลดีฟส์", "name:ti"=>"ማልዲቭስ", "name:to"=>"Malativisi", "name:tr"=>"Maldivler", "name:tt"=>"Мальдивлар", "name:uk"=>"Мальдіви", "name:ur"=>"مالدیو", "name:vo"=>"Maldivuäns", "name:yo"=>"Orílẹ́ède Maladifi", "name:zh"=>"马尔代夫/馬爾地夫", "name:zu"=>"i-Maldives"
-na "name"=>"Namibia", "name:af"=>"Namibië", "name:am"=>"ናሚቢያ", "name:an"=>"Namibia", "name:ar"=>"ناميبيا", "name:az"=>"Namibiya", "name:ba"=>"Намибия", "name:be"=>"Намібія", "name:bg"=>"Намибия", "name:bm"=>"Namibia", "name:bn"=>"নামিবিয়া", "name:bo"=>"ན་མི་བྷི་ཡ།", "name:br"=>"Namibia", "name:bs"=>"Namibija", "name:ca"=>"Namíbia", "name:ce"=>"Намиби", "name:cs"=>"Namibie", "name:cv"=>"Намиби", "name:cy"=>"Namibia", "name:da"=>"Namibia", "name:de"=>"Namibia", "name:el"=>"Ναμίμπια", "name:en"=>"Namibia", "name:eo"=>"Namibio", "name:es"=>"Namibia", "name:et"=>"Namiibia", "name:eu"=>"Namibia", "name:fa"=>"نامیبیا", "name:fi"=>"Namibia", "name:fo"=>"Namibia", "name:fr"=>"Namibie", "name:fy"=>"Namybje", "name:ga"=>"An Namaib", "name:gd"=>"Naimibia", "name:gl"=>"Namibia", "name:gv"=>"Yn Nameeb", "name:he"=>"נמיביה", "name:hi"=>"नामीबिया", "name:hr"=>"Namibija", "name:ht"=>"Namibi", "name:hu"=>"Namíbia", "name:hy"=>"Նամիբիա", "name:ia"=>"Namibia", "name:id"=>"Namibia", "name:ie"=>"Namibia", "name:io"=>"Namibia", "name:is"=>"Namibía", "name:it"=>"Namibia", "name:ja"=>"ナミビア", "name:jv"=>"Namibia", "name:ka"=>"ნამიბია", "name:kg"=>"Namibia", "name:ki"=>"Namibia", "name:kk"=>"Намибия", "name:kn"=>"ನಮೀಬಿಯ", "name:ko"=>"나미비아", "name:ku"=>"Namîbya", "name:kw"=>"Namibi", "name:la"=>"Namibia", "name:lb"=>"Namibien", "name:li"=>"Namibië", "name:ln"=>"Namibia", "name:lt"=>"Namibija", "name:lv"=>"Namībija", "name:mg"=>"Namibia", "name:mi"=>"Namīpia", "name:mk"=>"Намибија", "name:ml"=>"നമീബിയ", "name:mn"=>"Намиби", "name:mr"=>"नामिबिया", "name:ms"=>"Namibia", "name:mt"=>"Namibja", "name:my"=>"နမီးဘီးယားနိုင်ငံ", "name:nl"=>"Namibië", "name:nn"=>"Namibia", "name:no"=>"Namibia", "name:nv"=>"Namííbya", "name:oc"=>"Namibia", "name:or"=>"ନାମିବିଆ", "name:os"=>"Намиби", "name:pa"=>"ਨਮੀਬੀਆ", "name:pl"=>"Namibia", "name:ps"=>"نېمبیا", "name:pt"=>"Namíbia", "name:qu"=>"Namiwya", "name:rm"=>"Namibia", "name:ro"=>"Namibia", "name:ru"=>"Намибия", "name:rw"=>"Namibiya", "name:sa"=>"नमीबिया", "name:sc"=>"Namìbia", "name:se"=>"Namibia", "name:sg"=>"Namibùii", "name:sh"=>"Namibija", "name:sk"=>"Namíbia", "name:sl"=>"Namibija", "name:sn"=>"Namibia", "name:so"=>"Nambiya", "name:sq"=>"Namibia", "name:sr"=>"Намибија", "name:ss"=>"INamibiya", "name:st"=>"Namibia", "name:su"=>"Namibia", "name:sv"=>"Namibia", "name:sw"=>"Namibia", "name:ta"=>"நமீபியா", "name:te"=>"నమీబియా", "name:tg"=>"Намибия", "name:th"=>"ประเทศนามิเบีย", "name:ti"=>"ናሚቢያ", "name:tk"=>"Namibiýa", "name:tl"=>"Namibya", "name:tn"=>"Namibia", "name:tr"=>"Namibya", "name:ts"=>"Namibia", "name:tt"=>"Намибия", "name:ug"=>"نامىبىيە", "name:uk"=>"Намібія", "name:ur"=>"نمیبیا", "name:uz"=>"Namibiya", "name:ve"=>"Namibia", "name:vi"=>"Namibia", "name:vo"=>"Namibiyän", "name:wo"=>"Namibi", "name:yi"=>"נאמיביע", "name:yo"=>"Nàmíbíà", "name:zh"=>"纳米比亚", "name:zu"=>"INamibhiya"
-rw "name"=>"Rwanda", "name:af"=>"Rwanda", "name:am"=>"ሩዋንዳ", "name:an"=>"Ruanda", "name:ar"=>"رواندا", "name:az"=>"Ruanda", "name:ba"=>"Руанда", "name:be"=>"Руанда", "name:bg"=>"Руанда", "name:bm"=>"Rwanda", "name:bn"=>"রুয়ান্ডা", "name:bo"=>"རུ་ཝན་ཌ།", "name:br"=>"Rwanda", "name:bs"=>"Ruanda", "name:ca"=>"Rwanda", "name:ce"=>"Руанда", "name:cs"=>"Rwanda", "name:cv"=>"Руанда", "name:cy"=>"Rwanda", "name:da"=>"Rwanda", "name:de"=>"Ruanda", "name:dv"=>"ރުވާންޑާ", "name:ee"=>"Rwanda", "name:el"=>"Ρουάντα", "name:en"=>"Rwanda", "name:eo"=>"Ruando", "name:es"=>"Ruanda", "name:et"=>"Rwanda", "name:eu"=>"Ruanda", "name:fa"=>"رواندا", "name:fi"=>"Ruanda", "name:fo"=>"Ruanda", "name:fr"=>"Rwanda", "name:fy"=>"Rûanda", "name:ga"=>"Ruanda", "name:gd"=>"Rubhanda", "name:gl"=>"Ruanda", "name:gv"=>"Rooandey", "name:he"=>"רואנדה", "name:hi"=>"रवाण्डा", "name:hr"=>"Ruanda", "name:ht"=>"Rwanda", "name:hu"=>"Ruanda", "name:hy"=>"Ռուանդա", "name:ia"=>"Ruanda", "name:id"=>"Rwanda", "name:ie"=>"Rwanda", "name:io"=>"Ruanda", "name:is"=>"Rúanda", "name:it"=>"Ruanda", "name:ja"=>"ルワンダ", "name:jv"=>"Rwanda", "name:ka"=>"რუანდა", "name:kg"=>"Rwanda", "name:ki"=>"Rwanda", "name:kk"=>"Руанда", "name:kn"=>"ರ್ವಾಂಡ", "name:ko"=>"르완다", "name:ku"=>"Rwanda", "name:kw"=>"Rwanda", "name:la"=>"Ruanda", "name:lb"=>"Ruanda", "name:li"=>"Rwanda", "name:ln"=>"Rwanda", "name:lt"=>"Ruanda", "name:lv"=>"Ruanda", "name:mk"=>"Руанда", "name:ml"=>"റുവാണ്ട", "name:mn"=>"Руанда", "name:mr"=>"ऱ्वान्डा", "name:ms"=>"Rwanda", "name:mt"=>"Rwanda", "name:my"=>"ရဝမ်ဒါနိုင်ငံ", "name:ne"=>"रुवाण्डा", "name:nl"=>"Rwanda", "name:nn"=>"Rwanda", "name:no"=>"Rwanda", "name:nv"=>"Wánda Dineʼé Bikéyah", "name:oc"=>"Rwanda", "name:or"=>"ରଵାଣ୍ଡା", "name:os"=>"Руандæ", "name:pa"=>"ਰਵਾਂਡਾ", "name:pl"=>"Rwanda", "name:ps"=>"راونډا", "name:pt"=>"Ruanda", "name:qu"=>"Rwanda", "name:rn"=>"Rwanda", "name:ro"=>"Rwanda", "name:ru"=>"Руанда", "name:rw"=>"Rwanda", "name:sa"=>"रवाण्डा", "name:sc"=>"Ruanda", "name:se"=>"Rwanda", "name:sg"=>"Ruandäa", "name:sh"=>"Ruanda", "name:si"=>"රුවන්ඩා ජනරජය", "name:sk"=>"Rwanda", "name:sl"=>"Ruanda", "name:sn"=>"Rwanda", "name:so"=>"Ruwanda", "name:sq"=>"Ruanda", "name:sr"=>"Руанда", "name:ss"=>"IRuwanda", "name:su"=>"Rwanda", "name:sv"=>"Rwanda", "name:sw"=>"Rwanda", "name:ta"=>"ருவாண்டா", "name:te"=>"రువాండా", "name:tg"=>"Руанда", "name:th"=>"ประเทศรวันดา", "name:ti"=>"ሩዋንዳ", "name:tk"=>"Ruanda", "name:tl"=>"Ruwanda", "name:tr"=>"Ruanda", "name:ts"=>"Rwanda", "name:tt"=>"Руанда", "name:ug"=>"رۋاندا", "name:uk"=>"Руанда", "name:ur"=>"روانڈا", "name:uz"=>"Ruanda", "name:vi"=>"Rwanda", "name:vo"=>"Ruandän", "name:wo"=>"Ruwandaa", "name:yi"=>"רוואנדע", "name:yo"=>"Rùwándà", "name:zh"=>"卢旺达", "name:zu"=>"IRuwanda"
-va "name"=>"Civitas Vaticana", "name:af"=>"Vatikaanstad", "name:am"=>"ቫቲካን ከተማ", "name:an"=>"Ciudat d'o Vaticano", "name:ar"=>"الفاتيكان", "name:az"=>"Vatikan", "name:ba"=>"Ватикан", "name:be"=>"Ватыкан", "name:bg"=>"Ватикан", "name:bi"=>"Vatican Siti", "name:bn"=>"ভ্যাটিকান সিটি", "name:bo"=>"ཝ་ཏི་ཀན་གྲོང་ཁྱོར།", "name:br"=>"Keoded ar Vatikan", "name:bs"=>"Vatikan", "name:ca"=>"Ciutat del Vaticà", "name:ce"=>"Ватикан", "name:co"=>"Cità di u Vaticanu", "name:cs"=>"Vatikán", "name:cu"=>"Ватиканъ", "name:cv"=>"Ватикан", "name:cy"=>"Y Fatican", "name:da"=>"Vatikanstaten", "name:de"=>"Staat Vatikanstadt", "name:dv"=>"ވެޓިކަން ސިޓީ", "name:dz"=>"བ་ཊི་ཀཱན།", "name:ee"=>"Vatican City", "name:el"=>"Βατικανό", "name:en"=>"Vatican City", "name:eo"=>"Vatikano", "name:es"=>"Ciudad del Vaticano", "name:et"=>"Vatikan", "name:eu"=>"Vatikano Hiria", "name:fa"=>"واتیکان", "name:fi"=>"Vatikaanivaltio", "name:fo"=>"Vatikanið", "name:fr"=>"Cité du Vatican", "name:fy"=>"Fatikaanstêd", "name:ga"=>"Cathair na Vatacáine", "name:gd"=>"Cathair na Bhatacain", "name:gl"=>"Cidade do Vaticano", "name:gn"=>"Táva Vatikano", "name:gv"=>"Ard-valley yn Phaab", "name:he"=>"קריית הוותיקן", "name:hi"=>"वैटिकन सिटी", "name:hr"=>"Vatikan", "name:ht"=>"Vatikan", "name:hu"=>"Vatikán", "name:hy"=>"Վատիկան", "name:ia"=>"Citate Vatican", "name:id"=>"Vatikan", "name:ie"=>"Vaticano", "name:io"=>"Vatikano", "name:is"=>"Vatíkanið", "name:it"=>"Città del Vaticano", "name:ja"=>"バチカン", "name:jv"=>"Vatikan", "name:ka"=>"ვატიკანი", "name:kg"=>"Vatican", "name:kk"=>"Ватикан", "name:kl"=>"Vatikani", "name:km"=>"បុរីវ៉ាទីកង់", "name:kn"=>"ವ್ಯಾಟಿಕನ್ ನಗರ", "name:ko"=>"바티칸 시국", "name:ku"=>"Vatîkan", "name:kv"=>"Ватикан", "name:kw"=>"Cita Vatikan", "name:ky"=>"Ватикан", "name:la"=>"Status Civitatis Vaticanæ", "name:lb"=>"Vatikanstad", "name:li"=>"Vaticaanstad", "name:ln"=>"Vatikáni", "name:lt"=>"Vatikanas", "name:lv"=>"Vatikāns", "name:mi"=>"Poho o Pita", "name:mk"=>"Ватикан", "name:ml"=>"വത്തിക്കാൻ നഗരം", "name:mn"=>"Ватикан", "name:mr"=>"व्हॅटिकन सिटी", "name:ms"=>"Kota Vatican", "name:mt"=>"Belt tal-Vatikan", "name:my"=>"ဗာတီကန်စီးတီး", "name:na"=>"Batikan", "name:ne"=>"भ्याटिकन सिटी", "name:nl"=>"Vaticaanstad", "name:nn"=>"Vatikanstaten", "name:no"=>"Vatikanstaten", "name:nv"=>"Bádikin Sídii", "name:oc"=>"Vatican", "name:or"=>"ଭାଟିକାନ ସିଟି", "name:os"=>"Ватикан", "name:pa"=>"ਵੈਟੀਕਨ ਸ਼ਹਿਰ", "name:pl"=>"Watykan", "name:ps"=>"واټيکان ښار", "name:pt"=>"Vaticano", "name:qu"=>"Watikanu llaqta", "name:rm"=>"Citad dal Vatican", "name:ro"=>"Vatican", "name:ru"=>"Ватикан", "name:rw"=>"Vatikani", "name:sa"=>"वैटिकन", "name:sc"=>"Tzitade de su Vaticanu", "name:se"=>"Vatikána", "name:sh"=>"Vatikan", "name:si"=>"වතිකානුව", "name:sk"=>"Vatikán", "name:sl"=>"Vatikan", "name:so"=>"Faatikan", "name:sq"=>"Vatikani", "name:sr"=>"Ватикан", "name:ss"=>"IVathikhi", "name:su"=>"Vatikan", "name:sv"=>"Vatikanstaten", "name:sw"=>"Vatikani", "name:ta"=>"வத்திக்கான் நகர்", "name:te"=>"వాటికన్ నగరం", "name:tg"=>"Вотикон", "name:th"=>"นครรัฐวาติกัน", "name:tk"=>"Watikan", "name:tl"=>"Lungsod ng Vaticano", "name:tr"=>"Vatikan", "name:tt"=>"Ватикан", "name:ug"=>"Watikan Shehiri", "name:uk"=>"Ватикан", "name:ur"=>"ویٹیکن سٹی", "name:uz"=>"Vatikan shahri", "name:vi"=>"Thành Vatican", "name:vo"=>"Vatikän", "name:wo"=>"Watikaa", "name:yi"=>"וואטיקאן", "name:yo"=>"Ìlú Fatikan", "name:zh"=>"梵蒂冈", "name:zu"=>"Indolobha yaseVathikhani"
-ve "name"=>"Venezuela", "name:af"=>"Venezuela", "name:am"=>"ቬኔዝዌላ", "name:an"=>"Venezuela", "name:ar"=>"فنزويلا", "name:av"=>"Венесуэла", "name:ay"=>"Winïxwila", "name:az"=>"Venesuela", "name:ba"=>"Венесуэла", "name:be"=>"Венесуэла", "name:bg"=>"Венецуела", "name:bi"=>"Venezuela", "name:bm"=>"Venezuela", "name:bn"=>"ভেনেজুয়েলা", "name:bo"=>"ཝེ་ནེ་ཟུའེ་ལ།", "name:br"=>"Venezuela", "name:bs"=>"Venecuela", "name:ca"=>"Veneçuela", "name:ce"=>"Венесуэла", "name:co"=>"Venezuela", "name:cs"=>"Venezuela", "name:cv"=>"Венесуэла", "name:cy"=>"Venezuela", "name:da"=>"Venezuela", "name:de"=>"Venezuela", "name:dv"=>"ވެނެޒުއޭލާ", "name:ee"=>"Venezuela", "name:el"=>"Βενεζουέλα", "name:en"=>"Venezuela", "name:eo"=>"Venezuelo", "name:es"=>"Venezuela", "name:et"=>"Venezuela", "name:eu"=>"Venezuela", "name:fa"=>"ونزوئلا", "name:fi"=>"Venezuela", "name:fo"=>"Venesuela", "name:fr"=>"Venezuela", "name:fy"=>"Fenezuëla", "name:ga"=>"Veiniséala", "name:gd"=>"A' Bheiniseala", "name:gl"=>"Venezuela", "name:gn"=>"Venesuéla", "name:gu"=>"વેનેઝુએલા", "name:gv"=>"Yn Veneswaaley", "name:he"=>"ונצואלה", "name:hi"=>"वेनेज़ुएला", "name:hr"=>"Venezuela", "name:ht"=>"Venezwela", "name:hu"=>"Venezuela", "name:hy"=>"Վենեսուելա", "name:ia"=>"Venezuela", "name:id"=>"Venezuela", "name:ie"=>"Venezuela", "name:io"=>"Venezuela", "name:is"=>"Venesúela", "name:it"=>"Venezuela", "name:ja"=>"ベネズエラ", "name:jv"=>"Venezuela", "name:ka"=>"ვენესუელა", "name:kk"=>"Венесуэла", "name:kn"=>"ವೆನೆಜುವೆಲಾ", "name:ko"=>"베네수엘라", "name:ku"=>"Venezuela", "name:kw"=>"Veneswela", "name:la"=>"Venetiola", "name:lb"=>"Venezuela", "name:li"=>"Venezuela", "name:ln"=>"Venezwela", "name:lt"=>"Venesuela", "name:lv"=>"Venecuēla", "name:mg"=>"Venezoela", "name:mi"=>"Wenehūera", "name:mk"=>"Венецуела", "name:ml"=>"വെനിസ്വേല", "name:mn"=>"Венесуэл", "name:mr"=>"व्हेनेझुएला", "name:ms"=>"Venezuela", "name:mt"=>"Veneżwela", "name:my"=>"ဗင်နီဇွဲလားနိုင်ငံ", "name:ne"=>"भेनेजुएला", "name:nl"=>"Venezuela", "name:nn"=>"Venezuela", "name:no"=>"Venezuela", "name:nv"=>"Táłkááʼ Bighan Dineʼé Bikéyah", "name:oc"=>"Veneçuèla", "name:or"=>"ଭେନେଜୁଏଲା", "name:os"=>"Венесуэлæ", "name:pa"=>"ਵੈਨੇਜ਼ੁਏਲਾ", "name:pl"=>"Wenezuela", "name:pt"=>"Venezuela", "name:qu"=>"Winisuyla", "name:rm"=>"Venezuela", "name:rn"=>"Venezuela", "name:ro"=>"Venezuela", "name:ru"=>"Венесуэла", "name:rw"=>"Venezuwela", "name:sa"=>"वेनेज्वेला", "name:se"=>"Venezuela", "name:sh"=>"Venezuela", "name:sk"=>"Venezuela", "name:sl"=>"Venezuela", "name:sm"=>"Venesuela", "name:so"=>"Fanansuwela", "name:sq"=>"Venezuela", "name:sr"=>"Венецуела", "name:su"=>"Vénézuéla", "name:sv"=>"Venezuela", "name:sw"=>"Venezuela", "name:ta"=>"வெனிசுவேலா", "name:tg"=>"Венесуэла", "name:th"=>"ประเทศเวเนซุเอลา", "name:tk"=>"Wenesuela", "name:tl"=>"Venezuela", "name:tr"=>"Venezuela", "name:tt"=>"Венесуэла", "name:ug"=>"ۋېنېسۇئېلا", "name:uk"=>"Венесуела", "name:ur"=>"وینیزویلا", "name:uz"=>"Venesuela", "name:ve"=>"Venezuela", "name:vi"=>"Venezuela", "name:vo"=>"Venesolän", "name:wa"=>"Venezwela", "name:wo"=>"Benesuwela", "name:yi"=>"ווענעזועלע", "name:yo"=>"Fenesuela", "name:zh"=>"委內瑞拉", "name:zu"=>"Venezuela"
-cc "name"=>"Cocos (Keeling) Islands", "name:af"=>"Cocos (Keeling) Eilande", "name:ar"=>"جزر كوكوس (كيلينغ)", "name:be"=>"Какосавыя (Кілінг) астравы", "name:br"=>"Inizi Kokoz", "name:ca"=>"Illes Cocos", "name:da"=>"Cocosøerne", "name:de"=>"Kokosinseln", "name:el"=>"Νησιά Κόκος", "name:en"=>"Cocos (Keeling) Islands", "name:eo"=>"Kokosinsuloj", "name:es"=>"Islas Cocos (Keeling)", "name:et"=>"Kookossaared", "name:eu"=>"Cocos (Keeling) uharteak", "name:fa"=>"جزایر کوکوس", "name:fi"=>"Kookossaaret", "name:fr"=>"Îles Cocos", "name:fy"=>"de Kokoseilannen", "name:he"=>"איי קוקוס (קילינג)", "name:hr"=>"Kokosovi otoci", "name:hu"=>"Kókusz (Keeling)-szigetek", "name:id"=>"Kepulauan Cocos (Keeling)", "name:is"=>"Kókoseyjar", "name:it"=>"Isole Cocos e Keeling", "name:lt"=>"Kokoso (Keelingo) salos", "name:lv"=>"Kokosu (Kīlinga) salas", "name:mn"=>"Кокосын (Кийлингийн) Арлууд", "name:nl"=>"Cocoseilanden", "name:pl"=>"Wyspy Kokosowe", "name:ru"=>"Кокосовые острова", "name:sl"=>"Kokosovi otoki", "name:sv"=>"Kokosöarna", "name:tr"=>"Cocos (Keeling) Adaları", "name:uk"=>"Кокосові острови", "name:vi"=>"Quần đảo Cocos (Keeling)", "name:zh"=>"科科斯(基林)群島"
-sg "name"=>"Singapore", "name:af"=>"Singapoer", "name:am"=>"ሲንጋፖር", "name:an"=>"Singapur", "name:ar"=>"سنغافورة", "name:az"=>"Sinqapur", "name:ba"=>"Сингапур", "name:be"=>"Сінгапур", "name:bg"=>"Сингапур", "name:bi"=>"Singapore", "name:bn"=>"সিঙ্গাপুর", "name:bo"=>"སེང་ག་ཕོར།", "name:br"=>"Singapour", "name:bs"=>"Singapur", "name:ca"=>"Singapur", "name:ce"=>"Сингапур", "name:cs"=>"Singapur", "name:cv"=>"Сингапур", "name:cy"=>"Singapore", "name:da"=>"Singapore", "name:de"=>"Singapur", "name:dv"=>"ސިންގަޕޫރު", "name:el"=>"Σιγκαπούρη", "name:en"=>"Singapore", "name:eo"=>"Singapuro", "name:es"=>"Singapur", "name:et"=>"Singapur", "name:eu"=>"Singapur", "name:fa"=>"سنگاپور", "name:ff"=>"Sinngapuur", "name:fi"=>"Singapore", "name:fo"=>"Singapor", "name:fr"=>"Singapour", "name:fy"=>"Singapoer", "name:ga"=>"Singeapór", "name:gd"=>"Singeapòr", "name:gl"=>"Singapur", "name:gu"=>"સિંગાપુર", "name:gv"=>"Singapore", "name:ha"=>"Singapore", "name:he"=>"סינגפור", "name:hi"=>"सिंगापुर", "name:hr"=>"Singapur", "name:ht"=>"Sengapou", "name:hu"=>"Szingapúr", "name:hy"=>"Սինգապուրի Հանրապետություն", "name:ia"=>"Singapur", "name:id"=>"Singapura", "name:ie"=>"Singapor", "name:io"=>"Singapur", "name:is"=>"Singapúr", "name:it"=>"Singapore", "name:ja"=>"シンガポール", "name:jv"=>"Singapura", "name:ka"=>"სინგაპური", "name:ki"=>"Singapore", "name:kk"=>"Сингапур", "name:kl"=>"Singapore", "name:km"=>"សិង្ហបុរី", "name:kn"=>"ಸಿಂಗಾಪುರ್", "name:ko"=>"싱가포르", "name:ku"=>"Singapûr", "name:kv"=>"Сингапур", "name:kw"=>"Singapour", "name:ky"=>"Сингапур", "name:la"=>"Singapura", "name:lb"=>"Singapur", "name:li"=>"Singapore", "name:ln"=>"Singapur", "name:lt"=>"Singapūras", "name:lv"=>"Singapūra", "name:mg"=>"Singapaoro", "name:mi"=>"Hingapoa", "name:mk"=>"Сингапур", "name:ml"=>"സിംഗപ്പൂർ", "name:mn"=>"Сингапур", "name:mr"=>"सिंगापूर", "name:ms"=>"Singapura", "name:mt"=>"Singapor", "name:my"=>"စင်ကာပူနိုင်ငံ", "name:na"=>"Tsingapoar", "name:ne"=>"सिंगापुर", "name:nl"=>"Singapore", "name:nn"=>"Singapore", "name:no"=>"Singapore", "name:nv"=>"Sį́ʼgaboo", "name:oc"=>"Singapor", "name:or"=>"ସିଙ୍ଗାପୁର", "name:os"=>"Сингапур", "name:pa"=>"ਸਿੰਘਾਪੁਰ", "name:pl"=>"Singapur", "name:ps"=>"سينګاپور", "name:pt"=>"Singapura", "name:qu"=>"Singapur", "name:ro"=>"Singapore", "name:ru"=>"Сингапур", "name:rw"=>"Singapore", "name:sa"=>"सिङ्गापुरम्", "name:se"=>"Singapore", "name:sg"=>"Sïngäpûru", "name:sh"=>"Singapur", "name:sk"=>"Singapur", "name:sl"=>"Singapur", "name:sm"=>"Sigapoa", "name:so"=>"Singabuur", "name:sq"=>"Singapori", "name:sr"=>"Сингапур", "name:ss"=>"ISingapholo", "name:su"=>"Singapura", "name:sv"=>"Singapore", "name:sw"=>"Singapuri", "name:ta"=>"சிங்கப்பூர்", "name:te"=>"సింగపూరు", "name:tg"=>"Сингапур", "name:th"=>"ประเทศสิงคโปร์", "name:tk"=>"Singapur", "name:tl"=>"Singapore", "name:tr"=>"Singapur", "name:tt"=>"Сингапур", "name:ug"=>"سىنگاپور", "name:uk"=>"Сінгапур", "name:ur"=>"سنگاپور", "name:uz"=>"Singapur", "name:vi"=>"Singapore", "name:vo"=>"Singapurän", "name:wo"=>"Singapoor", "name:yi"=>"סינגאפור", "name:yo"=>"Singapore", "name:zh"=>"新加坡"
-bo "name"=>"Bolivia", "name:ab"=>"Боли́виа", "name:af"=>"Bolivië", "name:am"=>"ቦሊቪያ", "name:an"=>"Bolivia", "name:ar"=>"بوليفيا", "name:ay"=>"Wuliwya", "name:az"=>"Boliviya", "name:ba"=>"Боливия", "name:be"=>"Балі́вія", "name:bg"=>"Боливия", "name:bh"=>"बोलीविया", "name:bi"=>"Bolivia", "name:bm"=>"Bolivia", "name:bn"=>"বলিভিয়া", "name:bo"=>"བྷོ་ལི་ཝི་ཡ།", "name:br"=>"Bolivia", "name:bs"=>"Bolivija", "name:ca"=>"Bolívia", "name:ce"=>"Боливи", "name:co"=>"Bolivia", "name:cs"=>"Bolívie", "name:cv"=>"Боливи", "name:cy"=>"Bolifia", "name:da"=>"Bolivia", "name:de"=>"Bolivien", "name:dv"=>"ބޮލީވިއާ", "name:dz"=>"བོ་ལི་ཝིཡ", "name:ee"=>"Bolivia", "name:el"=>"Βολιβία", "name:en"=>"Bolivia", "name:eo"=>"Bolivio", "name:es"=>"Bolivia", "name:et"=>"Boliivia", "name:eu"=>"Bolivia", "name:fa"=>"بولیوی", "name:ff"=>"Boliwii", "name:fi"=>"Bolivia", "name:fo"=>"Bolivia", "name:fr"=>"Bolivie", "name:fy"=>"Bolivia", "name:ga"=>"an Bholaiv", "name:gd"=>"Boilibhia", "name:gl"=>"Bolivia", "name:gn"=>"Volívia", "name:gu"=>"બોલીવિયા", "name:gv"=>"yn Volivia", "name:ha"=>"Bolibiya", "name:he"=>"בוליביה", "name:hi"=>"बोलिविया", "name:hr"=>"Bolivija", "name:ht"=>"Bolivi", "name:hu"=>"Bolívia", "name:hy"=>"Բոլիվիան", "name:ia"=>"Bolivia", "name:id"=>"Bolivia", "name:ie"=>"Bolivia", "name:ig"=>"Bolivia", "name:io"=>"Bolivia", "name:is"=>"Bólivía", "name:it"=>"Bolivia", "name:ja"=>"ボリビア", "name:jv"=>"Bolivia", "name:ka"=>"ბოლივია", "name:kg"=>"Bolivia", "name:ki"=>"Bolivia", "name:kk"=>"Боли́вия", "name:kl"=>"Bolivia", "name:km"=>"បូលីវី", "name:kn"=>"ಬೊಲಿವಿಯ", "name:ko"=>"볼리비아", "name:ks"=>"بولِوِیا", "name:ku"=>"Bolîvya", "name:kw"=>"Bolivi", "name:ky"=>"Боливия", "name:la"=>"Bolivia", "name:lb"=>"Bolivien", "name:lg"=>"Boliviya", "name:li"=>"Bolivia", "name:ln"=>"Bolivia", "name:lo"=>"ໂບລີວີ", "name:lt"=>"Bolivija", "name:lv"=>"Bolīvija", "name:mg"=>"Bolivia", "name:mi"=>"Poriwia", "name:mk"=>"Боливија", "name:ml"=>"ബൊളീവിയ", "name:mn"=>"Боливи", "name:mr"=>"बोलिव्हिया", "name:ms"=>"Bolivia", "name:mt"=>"Bolivja", "name:my"=>"ဘိုလီးဗီးယားနိုင်ငံ", "name:na"=>"Boribiya", "name:ne"=>"बोलिभिया", "name:nl"=>"Bolivia", "name:nn"=>"Bolivia", "name:no"=>"Bolivia", "name:nv"=>"Bolíbiya", "name:oc"=>"Bolívia", "name:om"=>"Boliiviyaa", "name:or"=>"ବୋଲିଭିଆ", "name:os"=>"Боливи", "name:pa"=>"ਬੋਲੀਵੀਆ", "name:pi"=>"बोलिविया", "name:pl"=>"Boliwia", "name:ps"=>"بولېویا", "name:pt"=>"Bolívia", "name:qu"=>"Wuliwiya", "name:rm"=>"Bolivia", "name:rn"=>"Boliviya", "name:ro"=>"Bolivia", "name:ru"=>"Боливия", "name:rw"=>"Boliviya", "name:sa"=>"बोलिविया", "name:sc"=>"Bolìvia", "name:se"=>"Bolivia", "name:sg"=>"Bolivïi", "name:sh"=>"Bolivija", "name:si"=>"බොලීවියාව", "name:sk"=>"Bolívia", "name:sl"=>"Bolivija", "name:sm"=>"Polevia", "name:sn"=>"Bolivia", "name:so"=>"Boliifia", "name:sq"=>"Bolivia", "name:sr"=>"Боливија", "name:ss"=>"IBholiviya", "name:su"=>"Bolivia", "name:sv"=>"Bolivia", "name:sw"=>"Bolivia", "name:ta"=>"பொலிவியா", "name:te"=>"బొలీవియా", "name:tg"=>"Боливия", "name:th"=>"โบลิเวีย", "name:ti"=>"ቦሊቪያ", "name:tk"=>"Boliwiýa", "name:tl"=>"Bolivia", "name:to"=>"Polīvia", "name:tr"=>"Bolivya", "name:tt"=>"Боли́вия", "name:ug"=>"بولىۋىيە", "name:uk"=>"Болі́вія", "name:ur"=>"بولیویا", "name:uz"=>"Boliviya", "name:vi"=>"Bolivia", "name:vo"=>"Bolivän", "name:wa"=>"Boliveye", "name:wo"=>"Boliibi", "name:yi"=>"באליוויע", "name:yo"=>"Bòlífíà", "name:za"=>"Bolivia", "name:zh"=>"玻利维亚", "name:zu"=>"i-Bolivia"
-bw "name"=>"Botswana", "name:af"=>"Botswana", "name:ak"=>"Bɔtswana", "name:am"=>"ቦትስዋና", "name:an"=>"Botswana", "name:ar"=>"بوتسوانا", "name:az"=>"Botsvana", "name:ba"=>"Ботсвана", "name:be"=>"Батсва́на", "name:bg"=>"Ботсвана", "name:bh"=>"बोत्सवाना", "name:bm"=>"Botswana", "name:bn"=>"বতসোয়ানা", "name:bo"=>"བྷོ་ཙི་ཝ་ན།", "name:br"=>"Botswana", "name:bs"=>"Bocvana", "name:ca"=>"Botswana", "name:ce"=>"Ботсвана", "name:cs"=>"Botswana", "name:cv"=>"Ботсвана", "name:cy"=>"Botswana", "name:da"=>"Botswana", "name:de"=>"Botsuana", "name:dv"=>"ބޮޓުސްވާނާ", "name:dz"=>"བྷོཙ་ཝ་ན", "name:ee"=>"Botswana", "name:el"=>"Μποτσουάνα", "name:en"=>"Botswana", "name:eo"=>"Bocvano", "name:es"=>"Botsuana", "name:et"=>"Botswana", "name:eu"=>"Botswana", "name:fa"=>"بوتسوانا", "name:ff"=>"Botswana", "name:fi"=>"Botswana", "name:fo"=>"Botsvana", "name:fr"=>"Botswana", "name:fy"=>"Botswana", "name:ga"=>"an Bhotsuáin", "name:gd"=>"Botsuana", "name:gl"=>"Botswana", "name:gn"=>"Votusuana", "name:gu"=>"બોત્સ્વાના", "name:gv"=>"yn Votswaan", "name:ha"=>"Botswana", "name:he"=>"בּוֹטְסְוָאנָה", "name:hi"=>"बोत्सवाना", "name:hr"=>"Bocvana", "name:ht"=>"Botswana", "name:hu"=>"Botswana", "name:hy"=>"Բոտսվանա", "name:ia"=>"Botswana", "name:id"=>"Botswana", "name:ie"=>"Botswana", "name:ig"=>"Botswana", "name:io"=>"Botswana", "name:is"=>"Botsvana", "name:it"=>"Botswana", "name:ja"=>"ボツワナ", "name:jv"=>"Botswana", "name:ka"=>"ბოტსვანა", "name:kg"=>"Botswana", "name:ki"=>"Botswana", "name:kk"=>"Ботсвана", "name:km"=>"បុតស្វាណា", "name:kn"=>"ಬೋಟ್ಸ್ವಾನ", "name:ko"=>"보츠와나", "name:ks"=>"بوتَسوانا", "name:ku"=>"Botswana", "name:kw"=>"Botswana", "name:ky"=>"Ботсвана", "name:la"=>"Botsuana", "name:lb"=>"Botswana", "name:lg"=>"Botswana", "name:li"=>"Botswana", "name:ln"=>"Botswana", "name:lo"=>"ບອດສະວານາ", "name:lt"=>"Botsvana", "name:lv"=>"Botsvana", "name:mg"=>"Bôtsoàna", "name:mi"=>"Poriwana", "name:mk"=>"Боцвана", "name:ml"=>"ബോട്സ്വാന", "name:mn"=>"Ботсвана", "name:mr"=>"बोत्स्वाना", "name:ms"=>"Botswana", "name:mt"=>"Botswana", "name:my"=>"ဘော့ဆွာနာ သမ္မတနိုင်ငံ", "name:na"=>"Botwana", "name:ne"=>"बोत्स्वाना", "name:nl"=>"Botswana", "name:nn"=>"Botswana", "name:no"=>"Botswana", "name:nv"=>"Tswana Dineʼé Bikéyah", "name:oc"=>"Botswana", "name:om"=>"Bootiswaanaa", "name:or"=>"ବୋସଚୱାନା", "name:os"=>"Ботсванæ", "name:pa"=>"ਬੋਤਸਵਾਨਾ", "name:pi"=>"बोत्सवाना", "name:pl"=>"Botswana", "name:ps"=>"بوتسوانا", "name:pt"=>"Botsuana", "name:qu"=>"Butswana", "name:rm"=>"Botswana", "name:ro"=>"Botswana", "name:ru"=>"Ботсвана", "name:rw"=>"Botswana", "name:sa"=>"बोत्सवाना", "name:sc"=>"Botzuana", "name:se"=>"Botswana", "name:sg"=>"Botswana", "name:sh"=>"Bocvana", "name:si"=>"බොට්ස්වානා", "name:sk"=>"Botswana", "name:sl"=>"Bocvána", "name:sn"=>"Botswana", "name:so"=>"Botswana", "name:sq"=>"Bocvana", "name:sr"=>"Боцвана", "name:ss"=>"ÉButjwána", "name:st"=>"Botswana", "name:su"=>"Botswana", "name:sv"=>"Botswana", "name:sw"=>"Botswana", "name:ta"=>"போட்சுவானா", "name:te"=>"బోత్సువానా", "name:tg"=>"Ботсвана", "name:th"=>"บอตสวานา", "name:ti"=>"ቦትስዋና", "name:tk"=>"Botswana", "name:tl"=>"Botswana", "name:tn"=>"Botswana", "name:to"=>"Potisiuana", "name:tr"=>"Botsvana", "name:ts"=>"Botswana", "name:tt"=>"Ботсва́на", "name:ug"=>"بوتسۋانا", "name:uk"=>"Ботсва́на", "name:ur"=>"بوٹسوانا", "name:uz"=>"Botsvana", "name:ve"=>"Vhu-Tswana", "name:vi"=>"Bốt-xoa-na", "name:vo"=>"Zvanän", "name:wa"=>"Boswana", "name:wo"=>"Botswana", "name:yi"=>"באצוואַנע", "name:yo"=>"Bòtswánà", "name:zh"=>"波札那", "name:zu"=>"i-Botswana"
-ke "name"=>"Kenya", "name:af"=>"Kenia", "name:am"=>"ኬንያ", "name:an"=>"Kenia", "name:ar"=>"كينيا", "name:az"=>"Keniya", "name:ba"=>"Кения", "name:be"=>"Кенія", "name:bg"=>"Кения", "name:bm"=>"Kenya", "name:bn"=>"কেনিয়া", "name:bo"=>"ཁེ་ནི་ཡ།", "name:br"=>"Kenya", "name:bs"=>"Kenija", "name:ca"=>"Kenya", "name:ce"=>"Кени", "name:cs"=>"Keňa", "name:cv"=>"Кени", "name:cy"=>"Kenya", "name:da"=>"Kenya", "name:de"=>"Kenia", "name:dv"=>"ކެންޔާ", "name:dz"=>"ཀེ་ནི་ཡ་", "name:el"=>"Κένυα", "name:en"=>"Kenya", "name:eo"=>"Kenjo", "name:es"=>"Kenia", "name:et"=>"Keenia", "name:eu"=>"Kenya", "name:fa"=>"کنیا", "name:ff"=>"Kenya", "name:fi"=>"Kenia", "name:fo"=>"Kenja", "name:fr"=>"Kenya", "name:fy"=>"Kenya", "name:ga"=>"An Chéinia", "name:gd"=>"A' Cheinia", "name:gl"=>"Quenia - Kenya", "name:gu"=>"કેન્યા", "name:gv"=>"Yn Cheinney", "name:ha"=>"Kenya", "name:he"=>"קניה", "name:hi"=>"कीनिया", "name:hr"=>"Kenija", "name:ht"=>"Kenya", "name:hu"=>"Kenya", "name:hy"=>"Քենիա", "name:ia"=>"Kenya", "name:id"=>"Kenya", "name:ie"=>"Kenia", "name:io"=>"Kenia", "name:is"=>"Kenía", "name:it"=>"Kenya", "name:ja"=>"ケニア", "name:jv"=>"Kénya", "name:ka"=>"კენია", "name:kg"=>"Kenya", "name:ki"=>"Kenya", "name:kk"=>"Кения", "name:kl"=>"Kenya", "name:kn"=>"ಕೀನ್ಯಾ", "name:ko"=>"케냐", "name:ku"=>"Kenya", "name:kw"=>"Kenya", "name:la"=>"Kenia", "name:lb"=>"Kenia", "name:lg"=>"Kenya", "name:li"=>"Kenia", "name:ln"=>"Kénya", "name:lt"=>"Kenija", "name:lv"=>"Kenija", "name:mg"=>"Kenia", "name:mi"=>"Kēnia", "name:mk"=>"Кенија", "name:ml"=>"കെനിയ", "name:mn"=>"Кени", "name:mr"=>"केनिया", "name:ms"=>"Kenya", "name:mt"=>"Kenja", "name:my"=>"ကင်ညာနိုင်ငံ", "name:na"=>"Keniya", "name:nl"=>"Kenia", "name:nn"=>"Kenya", "name:no"=>"Kenya", "name:nv"=>"Kénya", "name:oc"=>"Kenya", "name:om"=>"Keeniyaa", "name:or"=>"କେନିଆ", "name:os"=>"Кени", "name:pa"=>"ਕੀਨੀਆ", "name:pl"=>"Kenia", "name:ps"=>"کېنيا", "name:pt"=>"Quénia", "name:qu"=>"Kinya", "name:ro"=>"Kenya", "name:ru"=>"Кения", "name:rw"=>"Kenya", "name:sa"=>"केन्या", "name:sc"=>"Kènya", "name:se"=>"Kenia", "name:sg"=>"Kenyäa", "name:sh"=>"Kenija", "name:sk"=>"Keňa", "name:sl"=>"Kenija", "name:sn"=>"Kenya", "name:so"=>"Kiinya", "name:sq"=>"Kenia", "name:sr"=>"Кенија", "name:ss"=>"IKheniya", "name:su"=>"Kénya", "name:sv"=>"Kenya", "name:sw"=>"Kenya", "name:ta"=>"கென்யா", "name:te"=>"కెన్యా", "name:tg"=>"Кения", "name:th"=>"ประเทศเคนยา", "name:ti"=>"ኬንያ", "name:tk"=>"Keniýa", "name:tl"=>"Kenya", "name:tr"=>"Kenya", "name:ts"=>"Kenya", "name:tt"=>"Кения", "name:ug"=>"كېنىيە", "name:uk"=>"Кенія", "name:ur"=>"کینیا", "name:uz"=>"Keniya", "name:vi"=>"Kenya", "name:vo"=>"Kenyän", "name:wo"=>"Keeñaa", "name:yi"=>"קעניע", "name:yo"=>"Kẹ́nyà", "name:zh"=>"肯尼亚", "name:zu"=>"IKenya"
-tj "name"=>"Тоҷикистон", "name:af"=>"Tadjikistan", "name:am"=>"ታጂኪስታን", "name:an"=>"Tachiquistán", "name:ar"=>"طاجيكستان", "name:ay"=>"Tayiksuyu", "name:az"=>"Tacikistan", "name:ba"=>"Тажикстан", "name:be"=>"Таджыкістан", "name:bg"=>"Таджикистан", "name:bn"=>"তাজিকিস্তান", "name:bo"=>"ཐ་ཇི་ཁེ་སི་ཏན།", "name:br"=>"Tadjikistan", "name:bs"=>"Tadžikistan", "name:ca"=>"Tadjikistan", "name:ce"=>"Таджикистан", "name:cs"=>"Tádžikistán", "name:cu"=>"Таджикистанъ", "name:cv"=>"Таджикистан", "name:cy"=>"Tajikistan", "name:da"=>"Tadsjikistan", "name:de"=>"Tadschikistan", "name:dv"=>"ތަޖިކިސްތާން", "name:dz"=>"ཏ་ཇག་ཀིསི་ཏཱན་", "name:ee"=>"Tajikistan", "name:el"=>"Τατζικιστάν", "name:en"=>"Tajikistan", "name:eo"=>"Taĝikio", "name:es"=>"Tayikistán", "name:et"=>"Tadžikistan", "name:eu"=>"Tajikistan", "name:fa"=>"تاجیکستان", "name:fi"=>"Tadžikistan", "name:fo"=>"Tadsjikistan", "name:fr"=>"Tadjikistan", "name:fy"=>"Tadzjikistan", "name:ga"=>"An Táidsíceastáin", "name:gd"=>"Taidigeastàn", "name:gl"=>"Taxiquistán", "name:gu"=>"તાજિકિસ્તાન", "name:gv"=>"Yn Tajikistaan", "name:he"=>"טג'יקיסטן", "name:hi"=>"ताजिकिस्तान", "name:hr"=>"Tadžikistan", "name:ht"=>"Tadjikistan", "name:hu"=>"Tádzsikisztán", "name:hy"=>"Տաջիկստան", "name:ia"=>"Tajikistan", "name:id"=>"Tajikistan", "name:ie"=>"Tadjikistan", "name:io"=>"Tajikistan", "name:is"=>"Tadsjikistan", "name:it"=>"Tagikistan", "name:ja"=>"タジキスタン", "name:jv"=>"Tajikistan", "name:ka"=>"ტაჯიკეთი", "name:kk"=>"Тәжікстан", "name:km"=>"តាជីគីស្ថាន", "name:kn"=>"ತಜಿಕಿಸ್ತಾನ್", "name:ko"=>"타지키스탄", "name:ku"=>"Tacîkistan", "name:kv"=>"Таджикистан", "name:kw"=>"Pow Tajik", "name:ky"=>"Тажикстан", "name:la"=>"Tadzikistania", "name:lb"=>"Tadjikistan", "name:li"=>"Tadzjikistan", "name:lt"=>"Tadžikija", "name:lv"=>"Tadžikistāna", "name:mk"=>"Таџикистан", "name:ml"=>"താജിക്കിസ്ഥാൻ", "name:mn"=>"Тажикистан", "name:mr"=>"ताजिकिस्तान", "name:ms"=>"Tajikistan", "name:my"=>"တာဂျစ်ကစ္စတန်နိုင်ငံ", "name:na"=>"Tadjikitan", "name:nl"=>"Tadzjikistan", "name:nn"=>"Tadsjikistan", "name:no"=>"Tadsjikistan", "name:nv"=>"Tʼajiʼ Bikéyah", "name:oc"=>"Tatgiquistan", "name:or"=>"ତାଜିକିସ୍ତାନ", "name:os"=>"Таджикистан", "name:pl"=>"Tadżykistan", "name:ps"=>"تاجيکستان", "name:pt"=>"Tajiquistão", "name:qu"=>"Tayiksuyu", "name:ro"=>"Tadjikistan", "name:ru"=>"Таджикистан", "name:rw"=>"Tajikisitani", "name:sa"=>"ताजिकिस्थान", "name:se"=>"Tažikistan", "name:sh"=>"Tadžikistan", "name:si"=>"ටජිකිස්ථාන්", "name:sk"=>"Tadžikistan", "name:sl"=>"Tadžikistan", "name:so"=>"Tadsjikistan", "name:sq"=>"Taxhikistani", "name:sr"=>"Таџикистан", "name:ss"=>"IThajiki", "name:su"=>"Tajikistan", "name:sv"=>"Tadzjikistan", "name:sw"=>"Tajikistan", "name:ta"=>"தஜிகிஸ்தான்", "name:te"=>"తజికిస్తాన్", "name:tg"=>"Тоҷикистон", "name:th"=>"ประเทศทาจิกิสถาน", "name:tk"=>"Täjigistan", "name:tl"=>"Tayikistan", "name:tr"=>"Tacikistan", "name:tt"=>"Таҗикстан", "name:ug"=>"تاجىكىستان", "name:uk"=>"Таджикистан", "name:ur"=>"تاجکستان", "name:uz"=>"Tojikiston", "name:vi"=>"Tajikistan", "name:vo"=>"Tacikistän", "name:wo"=>"Tajikistaan", "name:yi"=>"טאדזשיקיסטאן", "name:yo"=>"Tajikistan", "name:zh"=>"塔吉克斯坦"
-tz "name"=>"Tanzania", "name:af"=>"Tanzanië", "name:ak"=>"Tanzania", "name:am"=>"ታንዛኒያ", "name:an"=>"Tanzania", "name:ar"=>"تنزانيا", "name:az"=>"Tanzaniya", "name:ba"=>"Танзания", "name:be"=>"Танзанія", "name:bg"=>"Танзания", "name:bm"=>"Tanzania", "name:bn"=>"তানজানিয়া", "name:bo"=>"ཏན་ཛ་ནི་ཡ།", "name:br"=>"Tanzania", "name:bs"=>"Tanzanija", "name:ca"=>"Tanzània", "name:ce"=>"Танзани", "name:cs"=>"Tanzanie", "name:cv"=>"Танзани", "name:cy"=>"Tanzania", "name:da"=>"Tanzania", "name:de"=>"Tansania", "name:dv"=>"ޓެންޒޭނިއާ", "name:ee"=>"Tanzania", "name:el"=>"Τανζανία", "name:en"=>"Tanzania", "name:eo"=>"Tanzanio", "name:es"=>"Tanzania", "name:et"=>"Tansaania", "name:eu"=>"Tanzania", "name:fa"=>"تانزانیا", "name:fi"=>"Tansania", "name:fo"=>"Tansania", "name:fr"=>"Tanzanie", "name:fy"=>"Tanzania", "name:ga"=>"An Tansáin", "name:gd"=>"Tansainìa", "name:gl"=>"Tanzania", "name:gu"=>"ટાન્ઝાનિયા", "name:gv"=>"Tanzania", "name:he"=>"טנזניה", "name:hi"=>"तंज़ानिया", "name:hr"=>"Tanzanija", "name:ht"=>"Tanzani", "name:hu"=>"Tanzánia", "name:hy"=>"Տանզանիա", "name:ia"=>"Tanzania", "name:id"=>"Tanzania", "name:ie"=>"Tanzania", "name:io"=>"Tanzania", "name:is"=>"Tansanía", "name:it"=>"Tanzania", "name:ja"=>"タンザニア", "name:jv"=>"Tanzania", "name:ka"=>"ტანზანია", "name:kg"=>"Tanzania", "name:ki"=>"Tanzania", "name:kk"=>"Танзания", "name:kl"=>"Tanzania", "name:kn"=>"ಟಾಂಜಾನಿಯ", "name:ko"=>"탄자니아", "name:ku"=>"Tanzanya", "name:kw"=>"Tanzania", "name:la"=>"Tanzania", "name:lb"=>"Tansania", "name:li"=>"Tanzania", "name:ln"=>"Tanzania", "name:lt"=>"Tanzanija", "name:lv"=>"Tanzānija", "name:mg"=>"Tanzania", "name:mi"=>"Tānahia", "name:mk"=>"Танзанија", "name:ml"=>"ടാൻസാനിയ", "name:mn"=>"Танзани", "name:mr"=>"टांझानिया", "name:ms"=>"Tanzania", "name:mt"=>"Tanżanija", "name:my"=>"တန်ဇေးနီးယားနိုင်ငံ", "name:ne"=>"तन्जानिया", "name:nl"=>"Tanzania", "name:nn"=>"Tanzania", "name:no"=>"Tanzania", "name:nv"=>"Tʼanzanííya", "name:ny"=>"Tanzania", "name:oc"=>"Tanzania", "name:om"=>"Tanzania", "name:or"=>"ତାଞ୍ଜାନିଆ", "name:os"=>"Танзани", "name:pa"=>"ਤਨਜ਼ਾਨੀਆ", "name:pl"=>"Tanzania", "name:pt"=>"Tanzânia", "name:qu"=>"Tansanya", "name:rm"=>"Tansania", "name:rn"=>"Tanzaniya", "name:ro"=>"Tanzania", "name:ru"=>"Танзания", "name:rw"=>"Tanzaniya", "name:sa"=>"टंजानिया", "name:sc"=>"Tanzània", "name:se"=>"Tanzania", "name:sg"=>"Tanzanïi", "name:sh"=>"Tanzanija", "name:sk"=>"Tanzánia", "name:sl"=>"Tanzanija", "name:sn"=>"Tanzania", "name:so"=>"Tansaaniya", "name:sq"=>"Tanzania", "name:sr"=>"Танзанија", "name:ss"=>"IThanzaniya", "name:st"=>"Tanzania", "name:su"=>"Tanzania", "name:sv"=>"Tanzania", "name:sw"=>"Tanzania", "name:ta"=>"தன்சானியா", "name:te"=>"టాంజానియా", "name:tg"=>"Танзания", "name:th"=>"ประเทศแทนซาเนีย", "name:ti"=>"ታንዛኒያ", "name:tk"=>"Tanzaniýa", "name:tl"=>"Tanzania", "name:tr"=>"Tanzanya", "name:ts"=>"Tanzania", "name:tt"=>"Танзания", "name:tw"=>"Tanzania", "name:ug"=>"تانزانىيە", "name:uk"=>"Танзанія", "name:ur"=>"تنزانیہ", "name:uz"=>"Tanzaniya", "name:vi"=>"Tanzania", "name:vo"=>"Tansanän", "name:wo"=>"Tansani", "name:yi"=>"טאנזאניע", "name:yo"=>"Tànsáníà", "name:zh"=>"坦桑尼亚", "name:zu"=>"ITanzania"
-ws "name"=>"Sāmoa", "name:am"=>"ሳሞአ", "name:ar"=>"ساموا", "name:be"=>"Самоа", "name:bg"=>"Самоа", "name:bm"=>"Samowa", "name:bn"=>"সামোয়া", "name:bo"=>"ནུ་བ་ས་མོ་འ།", "name:br"=>"Samoa", "name:ca"=>"Samoa", "name:cs"=>"Samoa", "name:da"=>"Samoa", "name:de"=>"Samoa", "name:dz"=>"ས་མོ་ཨ", "name:ee"=>"Samoa nutome", "name:el"=>"Σαμόα", "name:en"=>"Samoa", "name:eo"=>"Samoo", "name:es"=>"Samoa", "name:et"=>"Samoa", "name:fa"=>"ساموآ", "name:ff"=>"Samowaa", "name:fi"=>"Samoa", "name:fo"=>"Sámoa", "name:fr"=>"Samoa", "name:fy"=>"Samoä", "name:ga"=>"Samó", "name:gd"=>"Samotha", "name:gu"=>"સમોઆ", "name:gv"=>"Samoa", "name:ha"=>"Samowa", "name:he"=>"סמואה", "name:hi"=>"समोआ", "name:hr"=>"Samoa", "name:hu"=>"Szamoa", "name:hy"=>"Սամոա", "name:ia"=>"Samoa", "name:io"=>"Samoa", "name:is"=>"Samóa", "name:it"=>"Samoa", "name:ja"=>"サモア", "name:ka"=>"სამოა", "name:km"=>"សាមូអា", "name:kn"=>"ಸಮೋವಾ", "name:ko"=>"사모아", "name:ks"=>"سیمووا", "name:ku"=>"Samoa", "name:lg"=>"Samowa", "name:li"=>"Samoa", "name:lo"=>"ຊາມົວ", "name:lv"=>"Samoa", "name:mi"=>"Hāmoa", "name:mk"=>"Самоа", "name:ml"=>"സാമോവ", "name:mn"=>"Самоа", "name:mr"=>"सामोआ", "name:ne"=>"सामोआ", "name:nl"=>"Samoa", "name:no"=>"Samoa", "name:or"=>"ସାମୋଆ", "name:pl"=>"Samoa", "name:rn"=>"Samowa", "name:ru"=>"Самоа", "name:se"=>"Samoa", "name:sg"=>"Samoäa", "name:si"=>"සැමෝවා", "name:sk"=>"Samoa", "name:sl"=>"Samoa", "name:sr"=>"Самоа", "name:sv"=>"Samoa", "name:ta"=>"சமோவா", "name:te"=>"సమోవా", "name:th"=>"ประเทศซามัว", "name:ti"=>"ሳሞአ", "name:to"=>"Haʻamoa", "name:uk"=>"Самоа", "name:ur"=>"ساموآ", "name:vo"=>"Samovuäns", "name:yo"=>"Orílẹ́ède Samọ", "name:zh"=>"萨摩亚", "name:zu"=>"i-Samoa"
-la "name"=>"ປະເທດລາວ", "name:af"=>"Laos", "name:am"=>"ላዎስ", "name:an"=>"Laos", "name:ar"=>"لاوس", "name:az"=>"Laos", "name:ba"=>"Лаос", "name:be"=>"Лаос", "name:bg"=>"Лаос", "name:bi"=>"Laos", "name:bn"=>"লাওস", "name:bo"=>"ལའོ་སུ།", "name:br"=>"Laos", "name:bs"=>"Laos", "name:ca"=>"Laos", "name:ce"=>"Лаос", "name:cs"=>"Laos", "name:cv"=>"Лаос", "name:cy"=>"Laos", "name:da"=>"Laos", "name:de"=>"Laos", "name:dv"=>"ލާއޯސް", "name:el"=>"Λάος", "name:en"=>"Laos", "name:eo"=>"Laoso", "name:es"=>"Laos", "name:et"=>"Laos", "name:eu"=>"Laos", "name:fa"=>"لائوس", "name:fi"=>"Laos", "name:fo"=>"Laos", "name:fr"=>"Laos", "name:fy"=>"Laos", "name:ga"=>"Laos", "name:gd"=>"Làthos", "name:gl"=>"Laos", "name:gu"=>"લાઓસ", "name:gv"=>"Yn Laos", "name:he"=>"לאוס", "name:hi"=>"लाओस", "name:hr"=>"Laos", "name:ht"=>"Laos", "name:hu"=>"Laosz", "name:hy"=>"Լաոս", "name:ia"=>"Laos", "name:id"=>"Laos", "name:ie"=>"Laos", "name:io"=>"Laos", "name:is"=>"Laos", "name:it"=>"Laos", "name:ja"=>"ラオス", "name:jv"=>"Laos", "name:ka"=>"ლაოსი", "name:ki"=>"Laos", "name:kk"=>"Лаос", "name:km"=>"ឡាវ", "name:kn"=>"ಲಾವೋಸ್", "name:ko"=>"라오스", "name:ku"=>"Laos", "name:kv"=>"Лаос", "name:kw"=>"Pow Lao", "name:la"=>"Laotia", "name:lb"=>"Laos", "name:li"=>"Laos", "name:ln"=>"Laos", "name:lo"=>"ປະເທດລາວ", "name:lt"=>"Laosas", "name:lv"=>"Laosa", "name:mi"=>"Rāoho", "name:mk"=>"Лаос", "name:ml"=>"ലാവോസ്", "name:mn"=>"Лаос", "name:mr"=>"लाओस", "name:ms"=>"Laos", "name:my"=>"လာအိုနိုင်ငံ", "name:na"=>"Raot", "name:nl"=>"Laos", "name:nn"=>"Laos", "name:no"=>"Laos", "name:nv"=>"Lááʼos", "name:oc"=>"Laos", "name:or"=>"ଲାଓସ", "name:os"=>"Лаос", "name:pa"=>"ਲਾਓਸ", "name:pl"=>"Laos", "name:ps"=>"لاووس", "name:pt"=>"Laos", "name:qu"=>"Law suyu", "name:ro"=>"Laos", "name:ru"=>"Лаос", "name:rw"=>"Lawosi", "name:sa"=>"लाओस", "name:se"=>"Laos", "name:sh"=>"Laos", "name:si"=>"ලාඕසය", "name:sk"=>"Laos", "name:sl"=>"Laos", "name:so"=>"Laos", "name:sq"=>"Laosi", "name:sr"=>"Лаос", "name:ss"=>"ILawoso", "name:su"=>"Laos", "name:sv"=>"Laos", "name:sw"=>"Laos", "name:ta"=>"லாவோஸ்", "name:te"=>"లావోస్", "name:tg"=>"Лаос", "name:th"=>"ประเทศลาว", "name:tk"=>"Laos", "name:tl"=>"Laos", "name:tr"=>"Laos", "name:tt"=>"Лаос", "name:ug"=>"لائوس", "name:uk"=>"Лаос", "name:ur"=>"لاؤس", "name:uz"=>"Laos", "name:vi"=>"Lào", "name:vo"=>"Laosän", "name:wo"=>"Réewum Lawos", "name:yo"=>"Láọ̀s", "name:za"=>"Lao", "name:zh"=>"老挝/寮國"
-ru "name"=>"Россия", "name:ab"=>"Урыстәыла", "name:af"=>"Rusland", "name:ak"=>"Russia", "name:am"=>"ሩሲያ", "name:an"=>"Rusia", "name:ar"=>"روسيا", "name:as"=>"ৰুশিযা", "name:av"=>"Россиялъул Федерация", "name:ay"=>"Rusiya", "name:az"=>"Rusiya", "name:ba"=>"Рәсәй", "name:be"=>"Расія", "name:bg"=>"Русия", "name:bi"=>"Rusia", "name:bm"=>"Risila", "name:bn"=>"রাশিয়া", "name:bo"=>"ཨུ་རུ་སུ།", "name:br"=>"Rusia", "name:bs"=>"Rusija", "name:ca"=>"Rússia", "name:ce"=>"Росси", "name:ch"=>"Russia", "name:co"=>"Russia", "name:cs"=>"Rusko", "name:cu"=>"Рѡсїꙗ", "name:cv"=>"Раççей Патшалăхĕ", "name:cy"=>"Rwsia", "name:da"=>"Rusland", "name:de"=>"Russland", "name:dv"=>"ރޫސީވިލާތް", "name:dz"=>"ར་ཤི་ཡཱན་ཕེ་ཌི་རེ་ཤཱན", "name:ee"=>"Russia", "name:el"=>"Ρωσία", "name:en"=>"Russia", "name:eo"=>"Rusio", "name:es"=>"Rusia", "name:et"=>"Venemaa", "name:eu"=>"Errusia", "name:fa"=>"روسیه", "name:ff"=>"Roosiya", "name:fi"=>"Venäjä", "name:fo"=>"Russland", "name:fr"=>"Russie", "name:fy"=>"Ruslân", "name:ga"=>"An Rúis", "name:gd"=>"An Ruis", "name:gl"=>"Rusia", "name:gn"=>"Rrúsia", "name:gu"=>"રશિયા", "name:gv"=>"Yn Roosh", "name:ha"=>"Rasha", "name:he"=>"רוסיה", "name:hi"=>"रूस", "name:hr"=>"Ruska Federacija", "name:ht"=>"Risi", "name:hu"=>"Oroszország", "name:hy"=>"Ռուսաստան", "name:ia"=>"Russia", "name:id"=>"Rusia", "name:ie"=>"Russia", "name:ig"=>"Mpaghara Russia", "name:ik"=>"Russia", "name:io"=>"Rusia", "name:is"=>"Rússland", "name:it"=>"Russia", "name:iu"=>"ᐅᓛᓴ", "name:ja"=>"ロシア", "name:jv"=>"Rusia", "name:ka"=>"რუსეთი", "name:kg"=>"Rusia", "name:ki"=>"Russia", "name:kk"=>"Ресей", "name:kl"=>"Ruslandi", "name:km"=>"រុស្ស៊ី", "name:kn"=>"ರಷ್ಯಾ", "name:ko"=>"러시아", "name:ks"=>"روٗس", "name:ku"=>"Rûsya", "name:kv"=>"Рочму", "name:kw"=>"Russi", "name:ky"=>"Орусия", "name:la"=>"Russia", "name:lb"=>"Russland", "name:lg"=>"Rwasha", "name:li"=>"Rusland", "name:ln"=>"Rusí", "name:lo"=>"ລັດເຊັຽ", "name:lt"=>"Rusija", "name:lv"=>"Krievija", "name:mg"=>"Rosia", "name:mi"=>"Ruhia", "name:mk"=>"Русија", "name:ml"=>"റഷ്യ", "name:mn"=>"Оросын Холбооны Улс", "name:mo"=>"Русия", "name:mr"=>"रशिया", "name:ms"=>"Rusia", "name:mt"=>"Russja", "name:my"=>"ရုရှားနိုင်ငံ", "name:na"=>"Ratsiya", "name:ne"=>"रुस", "name:nl"=>"Rusland", "name:nn"=>"Russland", "name:no"=>"Russland", "name:nv"=>"Biʼééʼ Łichííʼí Bikéyah", "name:ny"=>"Russia", "name:oc"=>"Russia", "name:om"=>"Raashiyaa", "name:or"=>"ଋଷିଆ", "name:os"=>"Уæрæсе", "name:pa"=>"ਰੂਸ", "name:pl"=>"Rosja", "name:ps"=>"روسیه", "name:pt"=>"Rússia", "name:qu"=>"Rusiya", "name:rm"=>"Russia", "name:rn"=>"Uburusiya", "name:ro"=>"Rusia", "name:ru"=>"Россия", "name:rw"=>"Uburusiya", "name:sc"=>"Rùssia", "name:sd"=>"روس", "name:se"=>"Ruošša", "name:sg"=>"Rusïi", "name:sh"=>"Rusija", "name:si"=>"රුසියාව", "name:sk"=>"Rusko", "name:sl"=>"Rusija", "name:sm"=>"Lusia", "name:sn"=>"Russia", "name:so"=>"Ruushka", "name:sq"=>"Rusia", "name:sr"=>"Русија", "name:ss"=>"IRashiya", "name:st"=>"Russia", "name:su"=>"Rusia", "name:sv"=>"Ryssland", "name:sw"=>"Shirikisho la Urusi", "name:ta"=>"உருசியா", "name:te"=>"రష్యా", "name:tg"=>"Русия", "name:th"=>"ประเทศรัสเซีย", "name:ti"=>"ራሻ", "name:tk"=>"Russiýa", "name:tl"=>"Pederasyong Ruso", "name:to"=>"Lūsia", "name:tr"=>"Rusya Federasyonu", "name:ts"=>"Russia", "name:tt"=>"Русия", "name:tw"=>"Russia", "name:ty"=>"Rūtia", "name:ug"=>"روسىيە", "name:uk"=>"Росія", "name:ur"=>"روس", "name:uz"=>"Rossiya Federatsiyasi", "name:ve"=>"Rashia", "name:vi"=>"Liên bang Nga", "name:vo"=>"Rusän", "name:wa"=>"Federåcion d' Rûsseye", "name:wo"=>"Federaasioŋ bu Riisi", "name:xh"=>"IRashiya", "name:yi"=>"רוסלאנד", "name:yo"=>"Rọ́síà", "name:za"=>"Ezlozswh Lienzbangh", "name:zh"=>"俄罗斯/俄羅斯", "name:zu"=>"IRashiya"
-bg "name"=>"Бългaрия", "name:ab"=>"Болга́риа", "name:af"=>"Bulgarye", "name:ak"=>"Bulgaria", "name:am"=>"ቡልጋሪያ", "name:an"=>"Bulgaria", "name:ar"=>"بلغاريا", "name:av"=>"Болга́рия", "name:ay"=>"Bulkariya", "name:az"=>"Bolqarıstan", "name:ba"=>"Болга́рия", "name:be"=>"Балга́рыя", "name:bg"=>"България", "name:bh"=>"बुल्गारिया", "name:bi"=>"Bulgaria", "name:bn"=>"বুলগেরিয়া", "name:bo"=>"པུ་ར་ག་རི་ཡ།", "name:br"=>"Bulgaria", "name:bs"=>"Bugarska", "name:ca"=>"Bulgària", "name:ce"=>"Болга́ри", "name:ch"=>"Bulgaria", "name:co"=>"Bulgaria", "name:cs"=>"Bulharsko", "name:cu"=>"Блъгарїꙗ", "name:cv"=>"Пăлхарĕ", "name:cy"=>"Bwlgaria", "name:da"=>"Bulgarien", "name:de"=>"Bulgarien", "name:dv"=>"ބަލްގޭރިއާ", "name:ee"=>"Bulgaria", "name:el"=>"Βουλγαρία", "name:en"=>"Bulgaria", "name:eo"=>"Bulgario", "name:es"=>"Bulgaria", "name:et"=>"Bulgaaria", "name:eu"=>"Bulgaria", "name:fa"=>"بلغارستان", "name:ff"=>"Bulgariya", "name:fi"=>"Bulgaria", "name:fo"=>"Bulgaria", "name:fr"=>"Bulgarie", "name:fy"=>"Bulgarije", "name:ga"=>"an Bhulgáir", "name:gd"=>"Bulgàiria", "name:gl"=>"Bulgaria", "name:gn"=>"Vugaria", "name:gu"=>"બલ્ગેરિયા", "name:gv"=>"yn Vulgeyr", "name:ha"=>"Bulgairiya", "name:he"=>"בּוּלְגַרְיָה", "name:hi"=>"बुल्गारिया", "name:hr"=>"Bugarska", "name:ht"=>"Bilgari", "name:hu"=>"Bulgária", "name:hy"=>"Բուլղարիա", "name:ia"=>"Bulgaria", "name:id"=>"Bulgaria", "name:ie"=>"Bulgaria", "name:ig"=>"Bulgaria", "name:io"=>"Bulgaria", "name:is"=>"Búlgaría", "name:it"=>"Bulgaria", "name:ja"=>"ブルガリア", "name:jv"=>"Bulgaria", "name:ka"=>"ბულგარეთი", "name:kg"=>"Balgaria", "name:kk"=>"Болгария", "name:kl"=>"Bulgaria", "name:kn"=>"ಬಲ್ಗೇರಿಯ", "name:ko"=>"불가리아", "name:ku"=>"Bulgaristan", "name:kv"=>"Болгария", "name:kw"=>"Bulgari", "name:ky"=>"Болгария", "name:la"=>"Bulgaria", "name:lb"=>"Bulgarien", "name:li"=>"Bölgarije", "name:ln"=>"Bulgaria", "name:lo"=>"ປະເທດບູນກາລີ", "name:lt"=>"Bulgarija", "name:lv"=>"Bulgārija", "name:mg"=>"Biolgaria", "name:mi"=>"Purukāria", "name:mk"=>"Бугарија", "name:ml"=>"ബൾഗേറിയ", "name:mn"=>"Болгар", "name:mr"=>"बल्गेरिया", "name:ms"=>"Bulgaria", "name:mt"=>"Bulgarija", "name:my"=>"ဘူလ်ဂေးရီးယားနိုင်ငံ", "name:na"=>"Borgeriya", "name:ne"=>"बुल्गेरिया", "name:nl"=>"Bulgarije", "name:nn"=>"Bulgaria", "name:no"=>"Bulgaria", "name:nv"=>"Bálgaa Bikéyah", "name:oc"=>"Bulgaria", "name:om"=>"Bulgeeriyaa", "name:or"=>"ବୁଲଗାରିଆ", "name:os"=>"Болгари", "name:pa"=>"ਬੁਲਗਾਰੀਆ", "name:pi"=>"बुल्गारिया", "name:pl"=>"Bułgaria", "name:ps"=>"بلغاریا", "name:pt"=>"Bulgária", "name:qu"=>"Bulgarya", "name:rm"=>"Bulgaria", "name:rn"=>"Bulgaria", "name:ro"=>"Bulgaria", "name:ru"=>"Болгария", "name:rw"=>"Bulugariya", "name:sa"=>"बुल्गारिया", "name:sc"=>"Bulgaria", "name:sd"=>"بلغاريه", "name:se"=>"Bulgária", "name:sg"=>"Bulugarïi", "name:sh"=>"Bugarska", "name:si"=>"බල්ගේරියාව", "name:sk"=>"Bulharsko", "name:sl"=>"Bolgarija", "name:sm"=>"Bultalia", "name:sn"=>"Bulgaria", "name:so"=>"Bulgaria", "name:sq"=>"Bullgaria", "name:sr"=>"Бугарска", "name:ss"=>"iBhulgariya", "name:su"=>"Bulgaria", "name:sv"=>"Bulgarien", "name:sw"=>"Bulgaria", "name:ta"=>"பல்கேரியா", "name:te"=>"బల్గేరియా", "name:tg"=>"Булғористон", "name:th"=>"บัลแกเรีย", "name:tk"=>"Bolgariýa", "name:tl"=>"Bulgarya", "name:tr"=>"Bulgaristan", "name:ts"=>"Bulgaria", "name:tt"=>"Болгария", "name:tw"=>"Bulgaria", "name:ug"=>"بۇلغارىيە", "name:uk"=>"Болга́рія", "name:ur"=>"بلغاریہ", "name:uz"=>"Bolgariya", "name:vi"=>"Bulgaria", "name:vo"=>"Bulgarän", "name:wa"=>"Bulgåreye", "name:wo"=>"Bulgaari", "name:yi"=>"בולגאַריע", "name:yo"=>"Bùlgáríà", "name:zh"=>"保加利亚", "name:zu"=>"IBulgariya"
-iq "name"=>"العراق", "name:af"=>"Irak", "name:am"=>"ኢራቅ", "name:an"=>"Iraq", "name:ar"=>"العراق", "name:av"=>"ГӀиракъ", "name:az"=>"İraq", "name:be"=>"Ірак", "name:bg"=>"Ирак", "name:bn"=>"ইরাক", "name:bo"=>"ཡི་ལའ་ཁོ།", "name:br"=>"Irak", "name:bs"=>"Irak", "name:ca"=>"Iraq", "name:ce"=>"Ӏиракъ", "name:cs"=>"Irák", "name:cv"=>"Ирак", "name:cy"=>"Irac", "name:da"=>"Irak", "name:de"=>"Irak", "name:dv"=>"ޢިރާޤު", "name:el"=>"Ιράκ", "name:en"=>"Iraq", "name:eo"=>"Irako", "name:es"=>"Irak", "name:et"=>"Iraak", "name:eu"=>"Irak", "name:fa"=>"عراق", "name:fi"=>"Irak", "name:fo"=>"Irak", "name:fr"=>"Irak", "name:fy"=>"Irak", "name:ga"=>"An Iaráic", "name:gd"=>"Ioràc", "name:gl"=>"Iraq - العراق", "name:gu"=>"ઈરાક", "name:gv"=>"Yn Earack", "name:he"=>"עיראק", "name:hi"=>"इराक़", "name:hr"=>"Irak", "name:ht"=>"Irak", "name:hu"=>"Irak", "name:hy"=>"Իրաք", "name:ia"=>"Irak", "name:id"=>"Irak", "name:ie"=>"Irak", "name:io"=>"Irak", "name:is"=>"Írak", "name:it"=>"Iraq", "name:iu"=>"ᐃᕉᒃ", "name:ja"=>"イラク", "name:jv"=>"Irak", "name:ka"=>"ერაყი", "name:ki"=>"Iraq", "name:kk"=>"Ирак", "name:kl"=>"Iraq", "name:kn"=>"ಇರಾಕ್", "name:ko"=>"이라크", "name:ku"=>"Iraq", "name:kv"=>"Ирак", "name:kw"=>"Irak", "name:ky"=>"Ирак", "name:la"=>"Iracum", "name:lb"=>"Irak", "name:li"=>"Irak", "name:ln"=>"Irak", "name:lt"=>"Irakas", "name:lv"=>"Irāka", "name:mi"=>"Irāki", "name:mk"=>"Ирак", "name:ml"=>"ഇറാഖ്", "name:mn"=>"Ирак", "name:mr"=>"इराक", "name:ms"=>"Iraq", "name:mt"=>"Iraq", "name:my"=>"အီရတ်နိုင်ငံ", "name:na"=>"Irak", "name:nb"=>"Irak", "name:ne"=>"ईराक", "name:nl"=>"Irak", "name:nn"=>"Irak", "name:no"=>"Irak", "name:nv"=>"Iiwááʼ", "name:oc"=>"Iraq", "name:or"=>"ଇରାକ", "name:os"=>"Ирак", "name:pa"=>"ਇਰਾਕ", "name:pl"=>"Irak", "name:ps"=>"عراق", "name:pt"=>"Iraque", "name:qu"=>"Iraq", "name:ro"=>"Irak", "name:ru"=>"Ирак", "name:rw"=>"Irake", "name:sa"=>"ईराक", "name:se"=>"Irak", "name:sh"=>"Irak", "name:si"=>"ඉරාක ජනරජය", "name:sk"=>"Irak", "name:sl"=>"Irak", "name:so"=>"Ciraaq", "name:sq"=>"Iraku", "name:sr"=>"Ирак", "name:ss"=>"I-Irakhi", "name:su"=>"Irak", "name:sv"=>"Irak", "name:sw"=>"Iraq", "name:ta"=>"ஈராக்", "name:te"=>"ఇరాక్", "name:tg"=>"Ироқ", "name:th"=>"ประเทศอิรัก", "name:tk"=>"Yrak", "name:tl"=>"Irak", "name:tr"=>"Irak", "name:tt"=>"Гыйрак", "name:tw"=>"Irak", "name:ug"=>"ئىراق", "name:uk"=>"Ірак", "name:ur"=>"عراق", "name:uz"=>"Iroq", "name:vi"=>"Iraq", "name:vo"=>"Lirakän", "name:wa"=>"Irak", "name:wo"=>"Iraak", "name:yi"=>"איראק", "name:yo"=>"Irak", "name:zh"=>"伊拉克", "name:zu"=>"I-Iraki"
-mu "name"=>"Mauritius", "name:af"=>"Mauritius", "name:am"=>"ሞሪሸስ", "name:an"=>"Mauricio", "name:ar"=>"موريشيوس", "name:az"=>"Mavriki", "name:be"=>"Маўрыкій", "name:bg"=>"Мавриций", "name:bn"=>"মরিশাস", "name:bo"=>"མའུ་རི་ཊིའུ་སུ།", "name:br"=>"Maoris", "name:bs"=>"Mauricijus", "name:ca"=>"Maurici", "name:cs"=>"Mauricius", "name:cv"=>"Маврики", "name:da"=>"Mauritius", "name:de"=>"Mauritius", "name:dv"=>"މޮރިޝަސް", "name:el"=>"Μαυρίκιος", "name:en"=>"Mauritius", "name:eo"=>"Maŭricio", "name:es"=>"Mauricio", "name:eu"=>"Maurizio", "name:fa"=>"موریس", "name:fi"=>"Mauritius", "name:fo"=>"Móritius", "name:fr"=>"Maurice", "name:fy"=>"Mauritsius", "name:ga"=>"Oileán Mhuirís", "name:gd"=>"Na h-Eileanan Mhoiriseas", "name:gl"=>"Mauricio - Maurice", "name:gv"=>"Ellan Wirrish", "name:he"=>"מאוריציוס", "name:hi"=>"मॉरिशस", "name:hr"=>"Mauricijus", "name:ht"=>"Moris", "name:hu"=>"Mauritius", "name:hy"=>"Մավրիկիոս", "name:ia"=>"Mauritio", "name:io"=>"Maurico", "name:is"=>"Máritíus", "name:ja"=>"モーリシャス", "name:ka"=>"მავრიკი", "name:kk"=>"Маврикий", "name:kn"=>"ಮಾರಿಷಸ್", "name:ko"=>"모리셔스", "name:ku"=>"Maurîtius", "name:kw"=>"Ynys Morrys", "name:la"=>"Mauritia", "name:ln"=>"Morisi", "name:lt"=>"Mauricijus", "name:lv"=>"Maurīcija", "name:mg"=>"Maorisy", "name:mk"=>"Маврициус", "name:ml"=>"മൗറീഷ്യസ്", "name:mn"=>"Маврикий", "name:mr"=>"मॉरिशस", "name:mt"=>"Mawrizji", "name:my"=>"မောရစ်ရှနိုင်ငံ", "name:ne"=>"मौरिसस", "name:nl"=>"Mauritius", "name:oc"=>"Maurici", "name:or"=>"ମରିସସ", "name:os"=>"Маврикий", "name:pa"=>"ਮਾਰੀਸ਼ਸ", "name:pl"=>"Mauritius", "name:ps"=>"ماوریتوس", "name:pt"=>"Maurícia", "name:qu"=>"Mawrisyu", "name:ru"=>"Маврикий", "name:rw"=>"Morise", "name:sa"=>"मारिषस्", "name:sc"=>"Mauritzius", "name:se"=>"Mauritius", "name:sg"=>"Mörîsi", "name:si"=>"මුරුසි සමුහාණ්ඩුව", "name:sk"=>"Maurícius", "name:sl"=>"Mavricij", "name:sq"=>"Mauritiusi", "name:sr"=>"Маурицијус", "name:ss"=>"IMorishiyasi", "name:sv"=>"Mauritius", "name:sw"=>"Morisi", "name:ta"=>"மொரிசியசு", "name:te"=>"మారిషస్", "name:tg"=>"Маврикия", "name:th"=>"ประเทศมอริเชียส", "name:tk"=>"Mawrikiý", "name:tl"=>"Maurisyo", "name:tt"=>"Маврикий", "name:ug"=>"ماۋرىتىئۇس", "name:uk"=>"Маврикій", "name:ur"=>"موریشس", "name:uz"=>"Mavritsiya", "name:vo"=>"Moriseän", "name:wo"=>"Móoris", "name:yo"=>"Mọ́rísì", "name:zh"=>"毛里求斯", "name:zu"=>"IMorishisi"
-ni "name"=>"Nicaragua", "name:af"=>"Nicaragua", "name:am"=>"ኒካራጓ", "name:an"=>"Nicaragua", "name:ar"=>"نيكاراجوا", "name:ay"=>"Nikarwa", "name:az"=>"Nikaraqua", "name:ba"=>"Никарагуа", "name:be"=>"Нікарагуа", "name:bg"=>"Никарагуа", "name:bm"=>"Nikaragwa", "name:bn"=>"নিকারাগুয়া", "name:bo"=>"ནི་ཀ་ར་གུ་ཝ།", "name:br"=>"Nicaragua", "name:bs"=>"Nikaragva", "name:ca"=>"Nicaragua", "name:ce"=>"Никарагуа", "name:cs"=>"Nikaragua", "name:cy"=>"Nicaragua", "name:da"=>"Nicaragua", "name:de"=>"Nicaragua", "name:dv"=>"ނިކަރާގުއާ", "name:ee"=>"Nicaragua", "name:el"=>"Νικαράγουα", "name:en"=>"Nicaragua", "name:eo"=>"Nikaragvo", "name:es"=>"Nicaragua", "name:et"=>"Nicaragua", "name:eu"=>"Nikaragua", "name:fa"=>"نیکاراگوئه", "name:fi"=>"Nicaragua", "name:fo"=>"Nikaragua", "name:fr"=>"Nicaragua", "name:fy"=>"Nikaragûa", "name:ga"=>"Nicearagua", "name:gd"=>"Niocaragua", "name:gl"=>"Nicaragua", "name:gn"=>"Nikaragua", "name:gv"=>"Yn Nickeraag", "name:he"=>"ניקרגואה", "name:hi"=>"निकारागुआ", "name:hr"=>"Nikaragva", "name:ht"=>"Nikaragwa", "name:hu"=>"Nicaragua", "name:hy"=>"Նիկարագուա", "name:ia"=>"Nicaragua", "name:id"=>"Nikaragua", "name:ie"=>"Nicaragua", "name:io"=>"Nikaragua", "name:is"=>"Níkaragva", "name:it"=>"Nicaragua", "name:ja"=>"ニカラグア", "name:jv"=>"Nikaragua", "name:ka"=>"ნიკარაგუა", "name:kk"=>"Никарагуа", "name:ko"=>"니카라과", "name:ku"=>"Nîkaragua", "name:kv"=>"Никарагуа", "name:kw"=>"Nikaragwa", "name:la"=>"Nicaragua", "name:lb"=>"Nicaragua", "name:li"=>"Nicaragua", "name:ln"=>"Nikalagwa", "name:lt"=>"Nikaragva", "name:lv"=>"Nikaragva", "name:mg"=>"Nicaragua", "name:mi"=>"Nikarāhua", "name:mk"=>"Никарагва", "name:ml"=>"നിക്കരാഗ്വ", "name:mn"=>"Никарагуа", "name:mr"=>"निकाराग्वा", "name:ms"=>"Nicaragua", "name:mt"=>"Nikaragwa", "name:my"=>"နီကာရာဂွါနိုင်ငံ", "name:ne"=>"निकाराग्वा", "name:nl"=>"Nicaragua", "name:nn"=>"Nicaragua", "name:no"=>"Nicaragua", "name:oc"=>"Nicaragua", "name:or"=>"ନିକାରାଗୁଆ", "name:os"=>"Никарагуæ", "name:pa"=>"ਨਿਕਾਰਾਗੁਆ", "name:pl"=>"Nikaragua", "name:ps"=>"نیکاراګوا", "name:pt"=>"Nicarágua", "name:qu"=>"Nikarawa", "name:ro"=>"Nicaragua", "name:ru"=>"Никарагуа", "name:rw"=>"Nikaragwa", "name:sa"=>"निकारगुवा", "name:se"=>"Nicaragua", "name:sh"=>"Nikaragva", "name:sk"=>"Nikaragua", "name:sl"=>"Nikaragva", "name:so"=>"Nikaragua", "name:sq"=>"Nikaraguaja", "name:sr"=>"Никарагва", "name:ss"=>"INikhalaga", "name:su"=>"Nikaragua", "name:sv"=>"Nicaragua", "name:sw"=>"Nikaragua", "name:ta"=>"நிக்கராகுவா", "name:tg"=>"Никарагуа", "name:th"=>"ประเทศนิการากัว", "name:tl"=>"Nicaragua", "name:tr"=>"Nikaragua", "name:tt"=>"Никарагуа", "name:ug"=>"نىكاراگۇئا", "name:uk"=>"Нікарагуа", "name:ur"=>"نکاراگوا", "name:uz"=>"Nikaragua", "name:vi"=>"Nicaragua", "name:vo"=>"Nikaraguvän", "name:wo"=>"Nikaraaguwa", "name:yi"=>"ניקאראגוא", "name:yo"=>"Nikarágúà", "name:zh"=>"尼加拉瓜", "name:zu"=>"Nicaragua"
-pa "name"=>"Panamá", "name:af"=>"Panama", "name:am"=>"ፓናማ", "name:an"=>"Panamá", "name:ar"=>"بنما", "name:ay"=>"Panama", "name:az"=>"Panama", "name:ba"=>"Панама", "name:be"=>"Панама", "name:bg"=>"Панама", "name:bm"=>"Panama", "name:bn"=>"পানামা", "name:bo"=>"པ་ན་མ།", "name:br"=>"Panamá", "name:bs"=>"Panama", "name:ca"=>"Panamà", "name:ce"=>"Панама", "name:cs"=>"Panama", "name:cv"=>"Панама", "name:cy"=>"Panama", "name:da"=>"Panama", "name:de"=>"Panama", "name:dv"=>"ޕެނަމާ", "name:ee"=>"Panama", "name:el"=>"Παναμάς", "name:en"=>"Panama", "name:eo"=>"Panamo", "name:es"=>"Panamá", "name:et"=>"Panama", "name:eu"=>"Panama", "name:fa"=>"پاناما", "name:fi"=>"Panama", "name:fo"=>"Panama", "name:fr"=>"Panamá", "name:fy"=>"Panama", "name:ga"=>"Panama", "name:gd"=>"Panama", "name:gl"=>"Panamá", "name:gn"=>"Panama", "name:gu"=>"પનામા", "name:gv"=>"Yn Phanamaa", "name:he"=>"פנמה", "name:hi"=>"पनामा", "name:hr"=>"Panama", "name:ht"=>"Panama", "name:hu"=>"Panama", "name:hy"=>"Պանամա", "name:ia"=>"Panama", "name:id"=>"Panama", "name:ie"=>"Panamá", "name:io"=>"Panama", "name:is"=>"Panama", "name:it"=>"Panamá", "name:ja"=>"パナマ", "name:jv"=>"Panama", "name:ka"=>"პანამა", "name:ki"=>"Panama", "name:kk"=>"Панама", "name:kn"=>"ಪನಾಮಾ", "name:ko"=>"파나마", "name:ku"=>"Panama", "name:kw"=>"Panama", "name:la"=>"Panama", "name:lb"=>"Panama", "name:li"=>"Panama", "name:ln"=>"Panama", "name:lt"=>"Panama", "name:lv"=>"Panama", "name:mg"=>"Panama", "name:mi"=>"Panama", "name:mk"=>"Панама", "name:ml"=>"പനാമ", "name:mn"=>"Панам", "name:mr"=>"पनामा", "name:ms"=>"Panama", "name:mt"=>"Panama", "name:my"=>"ပနားမားနိုင်ငံ", "name:ne"=>"पानामा", "name:nl"=>"Panama", "name:nn"=>"Panama", "name:no"=>"Panama", "name:oc"=>"Panamà", "name:or"=>"ପାନାମା", "name:os"=>"Панамæ", "name:pa"=>"ਪਨਾਮਾ", "name:pl"=>"Panama", "name:ps"=>"پاناما", "name:pt"=>"Panamá", "name:qu"=>"Panama", "name:ro"=>"Panama", "name:ru"=>"Панама", "name:rw"=>"Panama", "name:sa"=>"पानामा", "name:se"=>"Panama", "name:sh"=>"Panama", "name:sk"=>"Panama", "name:sl"=>"Panama", "name:so"=>"Banama", "name:sq"=>"Panamaja", "name:sr"=>"Панама", "name:ss"=>"IPhanama", "name:su"=>"Panama", "name:sv"=>"Panama", "name:sw"=>"Panama", "name:ta"=>"பனாமா", "name:te"=>"పనామా", "name:tg"=>"Панама", "name:th"=>"ประเทศปานามา", "name:tl"=>"Panama", "name:tr"=>"Panama", "name:tt"=>"Панама", "name:ug"=>"پاناما", "name:uk"=>"Панама", "name:ur"=>"پاناما", "name:uz"=>"Panama", "name:vi"=>"Panama", "name:vo"=>"Panamän", "name:wo"=>"Panamaa", "name:yi"=>"פאנאמא", "name:yo"=>"Panamá", "name:zh"=>"巴拿马", "name:zu"=>"Panama"
-so "name"=>"Soomaaliya الصومال", "name:af"=>"Somalië", "name:am"=>"ሶማሊያ", "name:an"=>"Somalia", "name:ar"=>"الصومال", "name:az"=>"Somali", "name:ba"=>"Сомали", "name:be"=>"Самалі", "name:bg"=>"Сомалия", "name:bn"=>"সোমালিয়া", "name:bo"=>"སོ་མ་ལི།", "name:br"=>"Somalia", "name:bs"=>"Somalija", "name:ca"=>"Somàlia", "name:ce"=>"Сомали", "name:cs"=>"Somálsko", "name:cy"=>"Somalia", "name:da"=>"Somalia", "name:de"=>"Somalia", "name:dv"=>"ސޯމާލިއާ", "name:ee"=>"Somalia", "name:el"=>"Σομαλία", "name:en"=>"Somalia", "name:eo"=>"Somalio", "name:es"=>"Somalia", "name:et"=>"Somaalia", "name:eu"=>"Somalia", "name:fa"=>"سومالی", "name:fi"=>"Somalia", "name:fo"=>"Somalia", "name:fr"=>"Somalie", "name:fy"=>"Somaalje", "name:ga"=>"An tSomáil", "name:gd"=>"Somàilia", "name:gl"=>"Somalia", "name:gv"=>"Yn Tomaal", "name:he"=>"סומליה", "name:hi"=>"सोमालिया", "name:hr"=>"Somalija", "name:ht"=>"Somali", "name:hu"=>"Szomália", "name:hy"=>"Սոմալի", "name:ia"=>"Somalia", "name:id"=>"Somalia", "name:ie"=>"Somalia", "name:io"=>"Somalia", "name:is"=>"Sómalía", "name:it"=>"Somalia", "name:ja"=>"ソマリア", "name:jv"=>"Somalia", "name:ka"=>"სომალი", "name:kg"=>"Sômâlia", "name:ki"=>"Somalia", "name:kk"=>"Сомали", "name:kn"=>"ಸೊಮಾಲಿಯ", "name:ko"=>"소말리아", "name:ku"=>"Somalya", "name:kw"=>"Somali", "name:la"=>"Somalia", "name:lb"=>"Somalia", "name:li"=>"Somalië", "name:ln"=>"Somalia", "name:lt"=>"Somalis", "name:lv"=>"Somālija", "name:mg"=>"Somalia", "name:mi"=>"Hūmārie", "name:mk"=>"Сомалија", "name:ml"=>"സൊമാലിയ", "name:mn"=>"Сомали", "name:mr"=>"सोमालिया प्रजासत्ताक", "name:ms"=>"Somalia", "name:mt"=>"Somalja", "name:my"=>"ဆိုမာလီယာနိုင်ငံ", "name:na"=>"Tomariya", "name:nl"=>"Somalië", "name:nn"=>"Somalia", "name:no"=>"Somalia", "name:nv"=>"Soomáálii Bikéyah", "name:oc"=>"Somalia", "name:om"=>"Somaaliyaa", "name:or"=>"ସୋମାଲିଆ", "name:os"=>"Сомали", "name:pa"=>"ਸੋਮਾਲੀਆ", "name:pl"=>"Somalia", "name:ps"=>"سومالیا", "name:pt"=>"Somália", "name:qu"=>"Sumalya", "name:rm"=>"Somalia", "name:ro"=>"Somalia", "name:ru"=>"Сомали", "name:rw"=>"Somaliya", "name:sa"=>"सोमालिया", "name:sc"=>"Somàlia", "name:se"=>"Somália", "name:sg"=>"Somalïi", "name:sh"=>"Somalija", "name:si"=>"සෝමාලියාව", "name:sk"=>"Somálsko", "name:sl"=>"Somalija", "name:sm"=>"Somalia", "name:sn"=>"Somalia", "name:so"=>"Soomaaliya", "name:sq"=>"Somalia", "name:sr"=>"Сомалија", "name:ss"=>"ISomaliya", "name:st"=>"Somalia", "name:su"=>"Somalia", "name:sv"=>"Somalia", "name:sw"=>"Somalia", "name:ta"=>"சோமாலியா", "name:te"=>"సొమాలియా", "name:tg"=>"Сумолӣ", "name:th"=>"ประเทศโซมาเลีย", "name:ti"=>"ሶማሊያ", "name:tk"=>"Somali", "name:tl"=>"Somalya", "name:tr"=>"Somali", "name:ts"=>"Somalia", "name:tt"=>"Сомали", "name:ug"=>"سومالى", "name:uk"=>"Сомалі", "name:ur"=>"صومالیہ", "name:uz"=>"Somali", "name:vi"=>"Somalia", "name:vo"=>"Somalän", "name:wo"=>"Somali", "name:yi"=>"סאמאליע", "name:yo"=>"Sòmálíà", "name:zh"=>"索马里", "name:zu"=>"ISomalia"
-ug "name"=>"Uganda", "name:af"=>"Uganda", "name:am"=>"ዩጋንዳ", "name:an"=>"Uganda", "name:ar"=>"أوغندا", "name:az"=>"Uqanda", "name:ba"=>"Уганда", "name:be"=>"Уганда", "name:bg"=>"Уганда", "name:bm"=>"Uganda", "name:bn"=>"উগান্ডা", "name:bo"=>"ཨུ་གན་ད།", "name:br"=>"Ouganda", "name:bs"=>"Uganda", "name:ca"=>"Uganda", "name:ce"=>"Уганда", "name:cs"=>"Uganda", "name:cv"=>"Уганда", "name:cy"=>"Uganda", "name:da"=>"Uganda", "name:de"=>"Uganda", "name:dv"=>"ޔުގެންޑާ", "name:ee"=>"Uganda", "name:el"=>"Ουγκάντα", "name:en"=>"Uganda", "name:eo"=>"Ugando", "name:es"=>"Uganda", "name:et"=>"Uganda", "name:eu"=>"Uganda", "name:fa"=>"اوگاندا", "name:fi"=>"Uganda", "name:fo"=>"Uganda", "name:fr"=>"Ouganda", "name:fy"=>"Uganda", "name:ga"=>"Uganda", "name:gd"=>"Uganda", "name:gl"=>"Uganda", "name:gv"=>"Ooganda", "name:ha"=>"Uganda", "name:he"=>"אוגנדה", "name:hi"=>"युगाण्डा", "name:hr"=>"Uganda", "name:ht"=>"Ouganda", "name:hu"=>"Uganda", "name:hy"=>"Ուգանդա", "name:ia"=>"Uganda", "name:id"=>"Uganda", "name:ie"=>"Uganda", "name:io"=>"Uganda", "name:is"=>"Úganda", "name:it"=>"Uganda", "name:ja"=>"ウガンダ", "name:jv"=>"Uganda", "name:ka"=>"უგანდა", "name:kg"=>"Uganda", "name:ki"=>"Uganda", "name:kk"=>"Уганда", "name:kl"=>"Uganda", "name:kn"=>"ಉಗಾಂಡ", "name:ko"=>"우간다", "name:ku"=>"Ûganda", "name:kw"=>"Ouganda", "name:la"=>"Uganda", "name:lb"=>"Uganda", "name:lg"=>"Yuganda", "name:li"=>"Oeganda", "name:ln"=>"Uganda", "name:lt"=>"Uganda", "name:lv"=>"Uganda", "name:mi"=>"Ukānga", "name:mk"=>"Уганда", "name:ml"=>"ഉഗാണ്ട", "name:mn"=>"Уганда", "name:mr"=>"युगांडा", "name:ms"=>"Uganda", "name:mt"=>"Uganda", "name:my"=>"ယူဂန်းဒါးနိုင်ငံ", "name:nl"=>"Oeganda", "name:nn"=>"Uganda", "name:no"=>"Uganda", "name:nv"=>"Yogénda", "name:oc"=>"Oganda", "name:or"=>"ଉଗାଣ୍ଡା", "name:os"=>"Угандæ", "name:pa"=>"ਯੁਗਾਂਡਾ", "name:pl"=>"Uganda", "name:pt"=>"Uganda", "name:qu"=>"Uganda", "name:rm"=>"Uganda", "name:ro"=>"Uganda", "name:ru"=>"Уганда", "name:rw"=>"Ubugande", "name:sc"=>"Uganda", "name:se"=>"Uganda", "name:sg"=>"Ugandäa", "name:sh"=>"Uganda", "name:sk"=>"Uganda", "name:sl"=>"Uganda", "name:sn"=>"Uganda", "name:so"=>"Yugandha", "name:sq"=>"Uganda", "name:sr"=>"Уганда", "name:ss"=>"IBuganda", "name:su"=>"Uganda", "name:sv"=>"Uganda", "name:sw"=>"Uganda", "name:ta"=>"உகாண்டா", "name:te"=>"ఉగాండా", "name:tg"=>"Уганда", "name:th"=>"ประเทศยูกันดา", "name:tk"=>"Uganda", "name:tl"=>"Uganda", "name:tr"=>"Uganda", "name:ts"=>"Uganda", "name:tt"=>"Уганда", "name:ug"=>"ئۇگاندا", "name:uk"=>"Уганда", "name:ur"=>"یوگنڈا", "name:uz"=>"Uganda", "name:vi"=>"Uganda", "name:vo"=>"Lugandayän", "name:wo"=>"Ugandaa", "name:yi"=>"אוגאנדע", "name:yo"=>"Ùgándà", "name:zh"=>"乌干达", "name:zu"=>"IYuganda"
-kh "name"=>"ព្រះរាជាណាចក្រកម្ពុជា", "name:af"=>"Kambodja", "name:am"=>"ካምቦዲያ", "name:an"=>"Cambocha", "name:ar"=>"كمبوديا", "name:az"=>"Kamboca", "name:ba"=>"Камбоджа", "name:be"=>"Камбоджа", "name:bg"=>"Камбоджа", "name:bn"=>"কম্বোডিয়া", "name:bo"=>"ཁམ་པོ་ཛ།", "name:br"=>"Kambodja", "name:bs"=>"Kambodža", "name:ca"=>"Cambodja", "name:ce"=>"Камбоджа", "name:cs"=>"Kambodža", "name:cv"=>"Камбоджа", "name:cy"=>"Cambodia", "name:da"=>"Cambodja", "name:de"=>"Kambodscha", "name:dv"=>"ކެންބޯޑިއާ", "name:dz"=>"ཀམ་བོ་ཌི་ཡ་", "name:el"=>"Καμπότζη", "name:en"=>"Cambodia", "name:eo"=>"Kamboĝo", "name:es"=>"Camboya", "name:et"=>"Kambodža", "name:eu"=>"Kanbodia", "name:fa"=>"کامبوج", "name:fi"=>"Kambodža", "name:fo"=>"Kambodja", "name:fr"=>"Cambodge", "name:fy"=>"Kambodja", "name:ga"=>"An Chambóid", "name:gd"=>"Cambuidea", "name:gl"=>"Camboxa", "name:gn"=>"Kamboja", "name:gu"=>"કમ્બોડીયા", "name:gv"=>"Yn Chamboyd", "name:ha"=>"Kambodiya", "name:he"=>"קמבודיה", "name:hi"=>"कम्बोडिया", "name:hr"=>"Kambodža", "name:ht"=>"Kanbòdj", "name:hu"=>"Kambodzsa", "name:hy"=>"Կամբոջա", "name:ia"=>"Cambodgia", "name:id"=>"Kamboja", "name:ie"=>"Cambodja", "name:io"=>"Kambodja", "name:is"=>"Kambódía", "name:it"=>"Cambogia", "name:ja"=>"カンボジア", "name:jv"=>"Kamboja", "name:ka"=>"კამბოჯა", "name:kk"=>"Камбоджа", "name:km"=>"ព្រះរាជាណាចក្រកម្ពុជា", "name:kn"=>"ಕಾಂಬೋಡಿಯ", "name:ko"=>"캄보디아", "name:ku"=>"Kamboca", "name:kv"=>"Камбоджа", "name:kw"=>"Kamboji", "name:la"=>"Cambosia", "name:lb"=>"Kambodscha", "name:li"=>"Cambodja", "name:ln"=>"Kamboji", "name:lo"=>"ປະເທດກຳປູເຈຍ", "name:lt"=>"Kambodža", "name:lv"=>"Kambodža", "name:mg"=>"Kambodia", "name:mi"=>"Kamapōtia", "name:mk"=>"Камбоџа", "name:ml"=>"കംബോഡിയ", "name:mn"=>"Камбож", "name:mr"=>"कंबोडिया", "name:ms"=>"Kemboja", "name:mt"=>"Kambodja", "name:my"=>"ကမ္ဘောဒီးယားနိုင်ငံ", "name:na"=>"Kambodja", "name:nl"=>"Cambodja", "name:nn"=>"Kambodsja", "name:no"=>"Kambodsja", "name:oc"=>"Cambòtja", "name:or"=>"କମ୍ବୋଡ଼ିଆ", "name:os"=>"Камбоджæ", "name:pa"=>"ਕੰਬੋਡੀਆ", "name:pl"=>"Kambodża", "name:ps"=>"کمبودیا", "name:pt"=>"Camboja", "name:qu"=>"Kambuya", "name:rm"=>"Cambodscha", "name:ro"=>"Cambodgia", "name:ru"=>"Камбоджа", "name:rw"=>"Kambodiya", "name:se"=>"Kambodja", "name:sh"=>"Kambodža", "name:si"=>"කාම්බෝජය", "name:sk"=>"Kambodža", "name:sl"=>"Kambodža", "name:so"=>"Kambodiya", "name:sq"=>"Kamboxhia", "name:sr"=>"Камбоџа", "name:ss"=>"IKhambodiya", "name:su"=>"Kamboja", "name:sv"=>"Kambodja", "name:sw"=>"Kamboja", "name:ta"=>"கம்போடியா", "name:te"=>"కంబోడియా", "name:tg"=>"Камбоҷа", "name:th"=>"ประเทศกัมพูชา", "name:tk"=>"Kamboçiýa", "name:tl"=>"Kamboya", "name:tr"=>"Kamboçya", "name:tt"=>"Камбоҗа", "name:ug"=>"كامبوجا", "name:uk"=>"Камбоджа", "name:ur"=>"کمبوڈیا", "name:uz"=>"Kambodja", "name:vi"=>"Campuchia", "name:vo"=>"Kambocän", "name:wo"=>"Kamboodi", "name:yi"=>"קאמבאדיע", "name:yo"=>"Kàmbódíà", "name:zh"=>"柬埔寨"
-mg "name"=>"Madagasikara", "name:af"=>"Madagaskar", "name:am"=>"ማዳጋስካር", "name:an"=>"Madagascar", "name:ar"=>"مدغشقر", "name:az"=>"Madaqaskar", "name:ba"=>"Мадагаскар", "name:be"=>"Мадагаскар", "name:bg"=>"Мадагаскар", "name:bm"=>"Madagaskar", "name:bn"=>"মাদাগাস্কার", "name:bo"=>"མ་ད་གཱ་སི་ཀར།", "name:br"=>"Madagaskar", "name:bs"=>"Madagaskar", "name:ca"=>"Madagascar", "name:ce"=>"Мадагаскар", "name:cs"=>"Madagaskar", "name:cv"=>"Мадагаскар", "name:cy"=>"Madagascar", "name:da"=>"Madagaskar", "name:de"=>"Madagaskar", "name:dv"=>"މަޑަގަސްކަރަ", "name:ee"=>"Madagascar", "name:el"=>"Μαδαγασκάρη", "name:en"=>"Madagascar", "name:eo"=>"Madagaskaro", "name:es"=>"Madagascar", "name:et"=>"Madagaskar", "name:eu"=>"Madagaskar", "name:fa"=>"ماداگاسکار", "name:fi"=>"Madagaskar", "name:fj"=>"Madagasikar", "name:fo"=>"Madagaskar", "name:fr"=>"Madagascar", "name:fy"=>"Madagaskar", "name:ga"=>"Madagascar", "name:gd"=>"Madagascar", "name:gl"=>"Madagascar", "name:gn"=>"Madagaka", "name:gu"=>"મડાગાસ્કર", "name:gv"=>"Madagascar", "name:he"=>"מדגסקר", "name:hi"=>"मेडागास्कर", "name:hr"=>"Madagaskar", "name:ht"=>"Madagaskar", "name:hu"=>"Madagaszkár", "name:hy"=>"Մադագասկար", "name:ia"=>"Madagascar", "name:id"=>"Madagaskar", "name:ie"=>"Madagascar", "name:io"=>"Madagaskar", "name:is"=>"Madagaskar", "name:it"=>"Madagascar", "name:ja"=>"マダガスカル", "name:jv"=>"Madagaskar", "name:ka"=>"მადაგასკარი", "name:kg"=>"Malagasi", "name:ki"=>"Madagascar", "name:kk"=>"Мадагаскар", "name:kl"=>"Madagascar", "name:kn"=>"ಮಡಾಗಾಸಿಕರ", "name:ko"=>"마다가스카르", "name:ku"=>"Madagaskar", "name:kw"=>"Madagaskar", "name:ky"=>"Мадагаскар", "name:la"=>"Madagascaria", "name:lb"=>"Madagaskar", "name:li"=>"Madagaskar", "name:ln"=>"Madagasikari", "name:lt"=>"Madagaskaras", "name:lv"=>"Madagaskara", "name:mg"=>"Madagasikara", "name:mi"=>"Marakāhia", "name:mk"=>"Мадагаскар", "name:ml"=>"മഡഗാസ്കർ", "name:mn"=>"Мадагаскар", "name:mr"=>"मादागास्कर", "name:ms"=>"Madagaskar", "name:mt"=>"Madagaskar", "name:my"=>"မဒါဂတ်စကားနိုင်ငံ", "name:nl"=>"Madagaskar", "name:nn"=>"Madagaskar", "name:no"=>"Madagaskar", "name:nv"=>"Madaʼgéésgáá", "name:oc"=>"Madagascar", "name:om"=>"Madagascar", "name:or"=>"ମେଡାଗାସ୍କର", "name:os"=>"Мадагаскар", "name:pa"=>"ਮਾਦਾਗਾਸਕਰ", "name:pl"=>"Madagaskar", "name:ps"=>"مادغاسکر", "name:pt"=>"Madagáscar", "name:qu"=>"Madagaskar", "name:ro"=>"Madagascar", "name:ru"=>"Мадагаскар", "name:rw"=>"Madagasikari", "name:sa"=>"मडगास्कर", "name:sc"=>"Madagascàr", "name:se"=>"Madagaskar", "name:sg"=>"Madagaskära", "name:sh"=>"Madagaskar", "name:si"=>"මැඩගස්කරය", "name:sk"=>"Madagaskar", "name:sl"=>"Madagaskar", "name:sm"=>"Madagascar", "name:sn"=>"Madagascar", "name:so"=>"Madagaskar", "name:sq"=>"Madagaskari", "name:sr"=>"Мадагаскар", "name:ss"=>"IMadagasikha", "name:su"=>"Madagaskar", "name:sv"=>"Madagaskar", "name:sw"=>"Madagaska", "name:ta"=>"மடகாசுகர்", "name:te"=>"మడగాస్కర్", "name:tg"=>"Мадагаскар", "name:th"=>"ประเทศมาดากัสการ์", "name:ti"=>"ማዳጋስካር", "name:tk"=>"Madagaskar", "name:tl"=>"Madagaskar", "name:tr"=>"Madagaskar", "name:ts"=>"Madagascar", "name:tt"=>"Мадагаскар", "name:ty"=>"Madagascar", "name:ug"=>"ماداگاسكار", "name:uk"=>"Мадагаскар", "name:ur"=>"مڈغاسکر", "name:uz"=>"Madagaskar", "name:vi"=>"Madagascar", "name:vo"=>"Malagaseän", "name:wo"=>"Madagaskaar", "name:yi"=>"מאדאגאסקאר", "name:yo"=>"Madagáskàr", "name:zh"=>"马达加斯加", "name:zu"=>"IMadagasika"
-mt "name"=>"Malta", "name:ak"=>"Mɔlta", "name:am"=>"ማልታ", "name:ar"=>"مالطا", "name:be"=>"Мальта", "name:bg"=>"Малта", "name:bm"=>"Malti", "name:bn"=>"মাল্টা", "name:bo"=>"མལ་ཊ།", "name:br"=>"Malta", "name:ca"=>"Malta", "name:cs"=>"Malta", "name:de"=>"Malta", "name:dz"=>"མཱལ་ཊ", "name:ee"=>"Malta nutome", "name:el"=>"Μάλτα", "name:en"=>"Malta", "name:eo"=>"Malto", "name:es"=>"Malta", "name:fa"=>"مالت", "name:ff"=>"Malte", "name:fi"=>"Malta", "name:fr"=>"Malte", "name:ga"=>"Málta", "name:gu"=>"માલ્ટા", "name:gv"=>"Yn Valta", "name:he"=>"מלטה", "name:hi"=>"माल्टा", "name:hr"=>"Malta", "name:hu"=>"Málta", "name:hy"=>"Մալթա", "name:ia"=>"Malta", "name:io"=>"Malta", "name:is"=>"Malta", "name:it"=>"Malta", "name:ja"=>"マルタ", "name:ka"=>"მალტა", "name:km"=>"ម៉ាល់តា", "name:kn"=>"ಮಾಲ್ಟಾ", "name:ko"=>"몰타", "name:ks"=>"مالٹا", "name:ku"=>"Malta", "name:la"=>"Melita", "name:lg"=>"Malita", "name:ln"=>"Malitɛ", "name:lo"=>"ມັນຕາ", "name:lv"=>"Malta", "name:mk"=>"Малта", "name:ml"=>"മാൾട്ട", "name:mn"=>"Мальта", "name:mr"=>"माल्टा", "name:ne"=>"माल्टा", "name:no"=>"Malta", "name:or"=>"ମାଲ୍ଟା", "name:pl"=>"Malta", "name:rn"=>"Malita", "name:ru"=>"Мальта", "name:se"=>"Malta", "name:sg"=>"Mâlta", "name:si"=>"මෝල්ටාව", "name:sk"=>"Malta", "name:so"=>"Maalda", "name:sq"=>"Maltë", "name:sr"=>"Малта", "name:sv"=>"Malta", "name:ta"=>"மால்டா", "name:te"=>"మాల్టా", "name:tg"=>"Малта", "name:th"=>"ประเทศมอลตา", "name:ti"=>"ማልታ", "name:to"=>"Malita", "name:uk"=>"Мальта", "name:ur"=>"مالٹا", "name:vi"=>"Malta", "name:vo"=>"Malteän", "name:yo"=>"Orílẹ́ède Malata", "name:zh"=>"马尔他", "name:zu"=>"i-Malta"
-mn "name"=>"Монгол улс ᠮᠤᠩᠭᠤᠯ ᠤᠯᠤᠰ", "name:af"=>"Mongolië", "name:am"=>"ሞንጎልያ", "name:an"=>"Mongolia", "name:ar"=>"منغوليا", "name:as"=>"মঙ্গোলিয়া", "name:az"=>"Monqolustan", "name:ba"=>"Монголия", "name:be"=>"Манголія", "name:bg"=>"Монголия", "name:bn"=>"মঙ্গোলিয়া", "name:bo"=>"མོང་གོལ།", "name:br"=>"Mongolia", "name:bs"=>"Mongolija", "name:ca"=>"Mongòlia", "name:ce"=>"Монголи", "name:cs"=>"Mongolsko", "name:cu"=>"Мѫголи", "name:cv"=>"Монголи", "name:cy"=>"Mongolia", "name:da"=>"Mongoliet", "name:de"=>"Mongolei", "name:dv"=>"މޮންގޯލިއާ", "name:dz"=>"སོག་པོ་", "name:ee"=>"Mongolia", "name:el"=>"Μογγολία", "name:en"=>"Mongolia", "name:eo"=>"Mongolio", "name:es"=>"Mongolia", "name:et"=>"Mongoolia", "name:eu"=>"Mongolia", "name:fa"=>"مغولستان", "name:fi"=>"Mongolia", "name:fo"=>"Mongolia", "name:fr"=>"Mongolie", "name:fy"=>"Mongoalje", "name:ga"=>"An Mhongóil", "name:gd"=>"Mongòilia", "name:gl"=>"Mongolia", "name:gn"=>"Mongolia", "name:gu"=>"મંગોલિયા", "name:gv"=>"Yn Vongoil", "name:he"=>"מונגוליה", "name:hi"=>"मंगोलिया", "name:hr"=>"Mongolija", "name:ht"=>"Mongoli", "name:hu"=>"Mongólia", "name:hy"=>"Մոնղոլիա", "name:ia"=>"Mongolia", "name:id"=>"Mongolia", "name:ie"=>"Mongolia", "name:io"=>"Mongolia", "name:is"=>"Mongólía", "name:it"=>"Mongolia", "name:ja"=>"モンゴル国", "name:jv"=>"Mongolia", "name:ka"=>"მონღოლეთი", "name:kk"=>"Моңғолия", "name:kl"=>"Mongolia", "name:km"=>"ម៉ុងហ្គោលី", "name:kn"=>"ಮಂಗೋಲಿಯ", "name:ko"=>"몽골", "name:ku"=>"Mongolya", "name:kv"=>"Монголия", "name:kw"=>"Mongoli", "name:ky"=>"Моңголстан", "name:la"=>"Mongolia", "name:lb"=>"Mongolei", "name:li"=>"Mongolië", "name:ln"=>"Mongolí", "name:lt"=>"Mongolija", "name:lv"=>"Mongolija", "name:mi"=>"Mongōria", "name:mk"=>"Монголија", "name:ml"=>"മംഗോളിയ", "name:mn"=>"Монгол улс ᠮᠤᠩᠭᠤᠯ ᠤᠯᠤᠰ", "name:mo"=>"Монголия", "name:mr"=>"मंगोलिया", "name:ms"=>"Mongolia", "name:my"=>"မွန်ဂိုးလီးယားနိုင်ငံ", "name:na"=>"Mongoriya", "name:ne"=>"मङ्गोलिया", "name:nl"=>"Mongolië", "name:nn"=>"Mongolia", "name:no"=>"Mongolia", "name:nv"=>"Chʼah Diʼilii Bikéyah", "name:oc"=>"Mongolia", "name:or"=>"ମଙ୍ଗୋଲିଆ", "name:os"=>"Мангол", "name:pa"=>"ਮੰਗੋਲੀਆ", "name:pl"=>"Mongolia", "name:ps"=>"مغولستان", "name:pt"=>"Mongólia", "name:qu"=>"Mungul suyu", "name:ro"=>"Mongolia", "name:ru"=>"Монголия", "name:rw"=>"Mongoliya", "name:sa"=>"मंगोलिया", "name:se"=>"Mongolia", "name:sh"=>"Mongolija", "name:si"=>"මොංගෝලියාව", "name:sk"=>"Mongolsko", "name:sl"=>"Mongolija", "name:sm"=>"Mogitolia", "name:so"=>"Mongolia", "name:sq"=>"Mongolia", "name:sr"=>"Монголија", "name:ss"=>"IMongoliya", "name:su"=>"Mongolia", "name:sv"=>"Mongoliet", "name:sw"=>"Mongolia", "name:ta"=>"மங்கோலியா", "name:te"=>"మంగోలియా", "name:tg"=>"Муғулистон", "name:th"=>"ประเทศมองโกเลีย", "name:tk"=>"Mongoliýa", "name:tl"=>"Monggolya", "name:tr"=>"Moğolistan", "name:tt"=>"Монголия", "name:ug"=>"موڭغۇلىيە", "name:uk"=>"Монголія", "name:ur"=>"منگولیا", "name:uz"=>"Moʻgʻuliston", "name:vi"=>"Mông Cổ", "name:vo"=>"Mongolän", "name:wo"=>"Mongoli", "name:yi"=>"מאנגאליי", "name:yo"=>"Mòngólíà", "name:za"=>"Mungzguj", "name:zh"=>"蒙古国"
-ua "name"=>"Україна", "name:ab"=>"Украина", "name:af"=>"Oekraïne", "name:am"=>"ዩክሬን", "name:an"=>"Ucraína", "name:ar"=>"أوكرانيا", "name:az"=>"Ukrayna", "name:ba"=>"Украина", "name:be"=>"Украіна", "name:bg"=>"Украйна", "name:bi"=>"Ukraine", "name:bn"=>"ইউক্রেন", "name:bo"=>"ཨུཀ་རཡི་ནི།", "name:br"=>"Ukraina", "name:bs"=>"Ukrajina", "name:ca"=>"Ucraïna", "name:ce"=>"Украина", "name:cs"=>"Ukrajina", "name:cu"=>"Оукраина", "name:cv"=>"Украина", "name:cy"=>"Wcráin", "name:da"=>"Ukraine", "name:de"=>"Ukraine", "name:dv"=>"ޔުކްރެއިން", "name:ee"=>"Ukraine", "name:el"=>"Ουκρανία", "name:en"=>"Ukraine", "name:eo"=>"Ukrainio", "name:es"=>"Ucrania", "name:et"=>"Ukraina", "name:eu"=>"Ukraina", "name:fa"=>"اوکراین", "name:fi"=>"Ukraina", "name:fo"=>"Ukraina", "name:fr"=>"Ukraine", "name:fy"=>"Oekraïne", "name:ga"=>"An Úcráin", "name:gd"=>"An Ucràin", "name:gl"=>"Ucraína", "name:gn"=>"Ukyaña", "name:gu"=>"યુક્રેન", "name:gv"=>"Yn Ookraan", "name:he"=>"אוקראינה", "name:hi"=>"युक्रेन", "name:hr"=>"Ukrajina", "name:ht"=>"Ikrèn", "name:hu"=>"Ukrajna", "name:hy"=>"Ուկրաինա", "name:ia"=>"Ukraina", "name:id"=>"Ukraina", "name:ie"=>"Ucraina", "name:ig"=>"Yukrain", "name:io"=>"Ukrainia", "name:is"=>"Úkraína", "name:it"=>"Ucraina", "name:ja"=>"ウクライナ", "name:jv"=>"Ukraina", "name:ka"=>"უკრაინა", "name:kg"=>"Ukrayina", "name:kk"=>"Украина", "name:kl"=>"Ukraine", "name:km"=>"អ៊ុយក្រែន", "name:kn"=>"ಯುಕ್ರೇನ್", "name:ko"=>"우크라이나", "name:ku"=>"Ûkrayna", "name:kv"=>"Украина", "name:kw"=>"Ukrayn", "name:ky"=>"Украина", "name:la"=>"Ucraina", "name:lb"=>"Ukrain", "name:li"=>"Oekraïne", "name:ln"=>"Ukraine", "name:lt"=>"Ukraina", "name:lv"=>"Ukraina", "name:mg"=>"Okraina", "name:mi"=>"Ūkareinga", "name:mk"=>"Украина", "name:ml"=>"ഉക്രൈൻ", "name:mn"=>"Украйн", "name:mr"=>"युक्रेन", "name:ms"=>"Ukraine", "name:mt"=>"Ukrajna", "name:my"=>"ယူကရိန်းနိုင်ငံ", "name:na"=>"Ukraine", "name:ne"=>"युक्रेन", "name:nl"=>"Oekraïne", "name:nn"=>"Ukraina", "name:no"=>"Ukraina", "name:nv"=>"Yóókwein", "name:oc"=>"Ucraïna", "name:or"=>"ୟୁକ୍ରେନ", "name:os"=>"Украинæ", "name:pa"=>"ਯੂਕ੍ਰੇਨ", "name:pl"=>"Ukraina", "name:ps"=>"اوکراین", "name:pt"=>"Ucrânia", "name:qu"=>"Ukranya", "name:rm"=>"Ucraina", "name:ro"=>"Ucraina", "name:ru"=>"Украина", "name:rw"=>"Ikerene", "name:sc"=>"Ucraina", "name:se"=>"Ukraina", "name:sh"=>"Ukrajina", "name:sk"=>"Ukrajina", "name:sl"=>"Ukrajina", "name:sm"=>"Ukraine", "name:sn"=>"Ukraine", "name:so"=>"Ukrain", "name:sq"=>"Ukraina", "name:sr"=>"Украјина", "name:ss"=>"IYukhureni", "name:su"=>"Ukraina", "name:sv"=>"Ukraina", "name:sw"=>"Ukraine", "name:ta"=>"உக்ரைன்", "name:te"=>"ఉక్రెయిన్", "name:tg"=>"Украйина", "name:th"=>"ประเทศยูเครน", "name:tk"=>"Ukraina", "name:tl"=>"Ukranya", "name:tr"=>"Ukrayna", "name:ts"=>"Ukraine", "name:tt"=>"Украина", "name:tw"=>"Ukraine", "name:ug"=>"ئۇكرائىنا", "name:uk"=>"Україна", "name:ur"=>"یوکرین", "name:uz"=>"Ukraina", "name:vi"=>"Ukraina", "name:vo"=>"Lukrayän", "name:wa"=>"Oucrinne", "name:wo"=>"Ukreen", "name:yi"=>"אוקראינע", "name:yo"=>"Ukréìn", "name:zh"=>"乌克兰/烏克蘭"
-uy "name"=>"Uruguay", "name:af"=>"Uruguay", "name:ak"=>"Yurugwae", "name:am"=>"ኡራጓይ", "name:an"=>"Uruguai", "name:ar"=>"أوروغواي", "name:ay"=>"Uruwayi", "name:az"=>"Uruqvay", "name:ba"=>"Уругвай", "name:be"=>"Уругвай", "name:bg"=>"Уругвай", "name:bi"=>"Uruguay", "name:bm"=>"Urugwayi", "name:bn"=>"উরুগুয়ে", "name:bo"=>"ཨུ་རུ་གུ་ཡེ།", "name:br"=>"Uruguay", "name:bs"=>"Urugvaj", "name:ca"=>"Uruguai", "name:ce"=>"Уругвай", "name:co"=>"Uruguay", "name:cs"=>"Uruguay", "name:cu"=>"Оуроугваи", "name:cv"=>"Уругвай", "name:cy"=>"Uruguay", "name:da"=>"Uruguay", "name:de"=>"Uruguay", "name:dv"=>"އުރުގުއޭ", "name:dz"=>"ཡུ་རུ་གུ་ཝའི", "name:ee"=>"uruguaydukɔ", "name:el"=>"Ουρουγουάη", "name:en"=>"Uruguay", "name:eo"=>"Urugvajo", "name:es"=>"Uruguay", "name:et"=>"Uruguay", "name:eu"=>"Uruguai", "name:fa"=>"اروگوئه", "name:ff"=>"Uruguwaay", "name:fi"=>"Uruguay", "name:fo"=>"Uruguei", "name:fr"=>"Uruguay", "name:fy"=>"Urûguay", "name:ga"=>"Uragua", "name:gd"=>"Uruguaidh", "name:gl"=>"Uruguai", "name:gn"=>"Uruguái", "name:gu"=>"ઉરુગ્વે", "name:gv"=>"Yn Ooraguay", "name:ha"=>"Yurugai", "name:he"=>"אורוגוואי", "name:hi"=>"उरुग्वे", "name:hr"=>"Urugvaj", "name:ht"=>"Irigwe", "name:hu"=>"Uruguay", "name:hy"=>"Ուրուգվայ", "name:ia"=>"Uruguay", "name:id"=>"Uruguay", "name:ie"=>"Uruguay", "name:io"=>"Uruguay", "name:is"=>"Úrúgvæ", "name:it"=>"Uruguay", "name:ja"=>"ウルグアイ", "name:jv"=>"Uruguay", "name:ka"=>"ურუგვაი", "name:ki"=>"Urugwai", "name:kk"=>"Уругвай", "name:kl"=>"Uruguay", "name:km"=>"អ៊ុយរុយហ្គាយ", "name:kn"=>"ಉರುಗ್ವೆ", "name:ko"=>"우루과이", "name:ks"=>"یوٗروگے", "name:ku"=>"Ûrûguay", "name:kw"=>"Urugway", "name:la"=>"Uraquaria", "name:lb"=>"Uruguay", "name:lg"=>"Wurugwayi", "name:li"=>"Urugay", "name:ln"=>"Ulugwai", "name:lo"=>"ອຸລຸກວຍ", "name:lt"=>"Urugvajus", "name:lv"=>"Urugvaja", "name:mg"=>"Orogoay", "name:mi"=>"Urukoi", "name:mk"=>"Уругвај", "name:ml"=>"ഉറുഗ്വേ", "name:mn"=>"Уругвай", "name:mr"=>"उरुग्वे", "name:ms"=>"Uruguay", "name:mt"=>"Urugwaj", "name:my"=>"ဥရုဂွေးနိုင်ငံ", "name:ne"=>"उरुग्वाइ", "name:nl"=>"Uruguay", "name:nn"=>"Uruguay", "name:no"=>"Uruguay", "name:nv"=>"Táłtłʼááh Chʼosh Bitooh (Kéyah Dah Siʼánígíí)", "name:oc"=>"Uruguai", "name:or"=>"ଉରୁଗୁଏ", "name:os"=>"Уругвай", "name:pa"=>"ਉਰੂਗੁਏ", "name:pl"=>"Urugwaj", "name:ps"=>"یوروګوای", "name:pt"=>"Uruguai", "name:qu"=>"Uruwayi", "name:rm"=>"Uruguay", "name:rn"=>"Irigwe", "name:ro"=>"Uruguay", "name:ru"=>"Уругвай", "name:rw"=>"Irigwe", "name:sa"=>"उरुग्वाय", "name:sc"=>"Uruguay", "name:se"=>"Uruguay", "name:sg"=>"Uruguëe", "name:sh"=>"Urugvaj", "name:si"=>"උරුගුවායි", "name:sk"=>"Uruguaj", "name:sl"=>"Urugvaj", "name:so"=>"Uruguwaay", "name:sq"=>"Uruguaji", "name:sr"=>"Уругвај", "name:su"=>"Uruguay", "name:sv"=>"Uruguay", "name:sw"=>"Urugwai", "name:ta"=>"உருகுவை", "name:te"=>"ఉరుగువే", "name:tg"=>"Уругуай", "name:th"=>"ประเทศอุรุกวัย", "name:ti"=>"ኡራጓይ", "name:tl"=>"Urugway", "name:to"=>"ʻUlukuei", "name:tr"=>"Uruguay", "name:tt"=>"Уругвай", "name:ug"=>"ئۇرۇگۋاي", "name:uk"=>"Уругвай", "name:ur"=>"یوراگوئے", "name:uz"=>"Urugvay", "name:vi"=>"Uruguay", "name:vo"=>"Luruguyän", "name:wa"=>"Ourougway", "name:wo"=>"Uruguwaay", "name:yi"=>"אורוגוויי", "name:yo"=>"Urugúáì", "name:zh"=>"乌拉圭", "name:zu"=>"i-Uruguay"
-ki "name"=>"Kiribati", "name:ar"=>"كيريباس", "name:be"=>"Кірыбаці", "name:br"=>"Kiribati", "name:da"=>"Kiribati", "name:el"=>"Κιριμπάτι", "name:en"=>"Kiribati", "name:eo"=>"Kiribato", "name:fa"=>"کیریباتی", "name:fi"=>"Kiribati", "name:fr"=>"Kiribati", "name:fy"=>"Kiribaty", "name:ga"=>"Cireabaití", "name:he"=>"קיריבטי", "name:hu"=>"Kiribati", "name:is"=>"Kíribatí", "name:li"=>"Kiribati-eilen", "name:lt"=>"Kiribatis", "name:lv"=>"Kiribati", "name:mn"=>"Кирибати", "name:pl"=>"Kiribati", "name:ru"=>"Кирибати", "name:sv"=>"Kiribati", "name:th"=>"ประเทศคิริบาส", "name:uk"=>"Кірибаті", "name:zh"=>"基里巴斯"
-fj "name"=>"Viti", "name:af"=>"Fidji", "name:am"=>"ፊጂ", "name:an"=>"Fichi", "name:ar"=>"فيجي", "name:az"=>"Fici", "name:ba"=>"Фиджи", "name:be"=>"Фіджы", "name:bg"=>"Фиджи", "name:bh"=>"फिजी", "name:bn"=>"ফিজি", "name:bo"=>"ཧྥི་ཇི།", "name:br"=>"Fidji", "name:bs"=>"Fidži", "name:ca"=>"Fiji", "name:ce"=>"Фиджи", "name:cs"=>"Fidži", "name:cv"=>"Фиджи", "name:cy"=>"Fiji", "name:da"=>"Fiji", "name:de"=>"Fidschi", "name:dv"=>"ފިޖީ", "name:el"=>"Φίτζι", "name:en"=>"Fiji", "name:eo"=>"Fiĝioj", "name:es"=>"Fiyi", "name:et"=>"Fidži", "name:eu"=>"Fiji", "name:fa"=>"فیجی", "name:ff"=>"Fiiji", "name:fi"=>"Fidži", "name:fj"=>"Viti", "name:fo"=>"Fiji", "name:fr"=>"Fidji", "name:fy"=>"Fidzjy", "name:ga"=>"Fidsí", "name:gd"=>"Fìdi", "name:gl"=>"Fidxi - Viti", "name:gv"=>"Fiji", "name:he"=>"פיג'י", "name:hi"=>"फ़िजी", "name:hr"=>"Fidži", "name:ht"=>"Fidji", "name:hu"=>"Fidzsi-szigetek", "name:hy"=>"Ֆիջի", "name:ia"=>"Fiji", "name:id"=>"Fiji", "name:io"=>"Fidji", "name:is"=>"Fídjieyjar", "name:it"=>"Figi", "name:ja"=>"フィジー", "name:jv"=>"Fiji", "name:ka"=>"ფიჯი", "name:kk"=>"Фиджи", "name:kn"=>"ಫಿಜಿ", "name:ko"=>"피지", "name:ku"=>"Fîjî", "name:kw"=>"Fiji", "name:la"=>"Viti", "name:lb"=>"Fidschi", "name:li"=>"Fiji", "name:lt"=>"Fidžis", "name:lv"=>"Fidži", "name:mi"=>"Whītī", "name:mk"=>"Фиџи", "name:ml"=>"ഫിജി", "name:mn"=>"Фижи", "name:mr"=>"फिजी", "name:ms"=>"Fiji", "name:mt"=>"Fiġi", "name:my"=>"ဖီဂျီနိုင်ငံ", "name:na"=>"Bidji", "name:ne"=>"फिजी", "name:nl"=>"Fiji", "name:nn"=>"Fiji", "name:no"=>"Fiji", "name:nv"=>"Fííjii", "name:oc"=>"Fiji", "name:or"=>"ଫିଜି", "name:os"=>"Фиджи", "name:pa"=>"ਫ਼ਿਜੀ", "name:pl"=>"Fidżi", "name:pt"=>"Fiji", "name:qu"=>"Phiyi", "name:ro"=>"Fiji", "name:ru"=>"Фиджи", "name:rw"=>"Fiji", "name:sa"=>"फिजी", "name:se"=>"Fiži", "name:sg"=>"Fidyïi", "name:sh"=>"Fidži", "name:si"=>"ෆීජි", "name:sk"=>"Fidži", "name:sl"=>"Fidži", "name:sm"=>"Fiti", "name:so"=>"Fiji", "name:sq"=>"Fixhi", "name:sr"=>"Фиџи", "name:su"=>"Fiji", "name:sv"=>"Fiji", "name:sw"=>"Fiji", "name:ta"=>"பிஜி", "name:te"=>"ఫిజీ", "name:tg"=>"Фиҷи", "name:th"=>"ประเทศฟิจิ", "name:tl"=>"Piyi", "name:to"=>"Fisi", "name:tr"=>"Fiji", "name:tt"=>"Fiji", "name:ug"=>"فىجى", "name:uk"=>"Фіджі", "name:ur"=>"فجی", "name:uz"=>"Fiji", "name:vi"=>"Fiji", "name:vo"=>"Ficiyuäns", "name:wo"=>"Fiiji", "name:yi"=>"פידזשי", "name:yo"=>"Fíjì", "name:zh"=>"斐濟", "name:zu"=>"IFiji"
-gm "name"=>"Gambia", "name:af"=>"Gambië", "name:am"=>"ጋምቢያ", "name:an"=>"Gambia", "name:ar"=>"غامبيا", "name:az"=>"Qambiya", "name:ba"=>"Гамбия", "name:be"=>"Гамбія", "name:bg"=>"Гамбия", "name:bm"=>"Gambia", "name:bn"=>"গাম্বিয়া", "name:bo"=>"གེམ་བྷི་ཡ།", "name:br"=>"Gambia", "name:bs"=>"Gambija", "name:ca"=>"Gàmbia", "name:ce"=>"Гамби", "name:cs"=>"Gambie", "name:cv"=>"Гамби", "name:cy"=>"Y Gambia", "name:da"=>"Gambia", "name:de"=>"Gambia", "name:dv"=>"ގެމްބިއާ", "name:dz"=>"གྷེམ་བི་ཡ", "name:ee"=>"Gambia", "name:el"=>"Γκάμπια", "name:en"=>"The Gambia", "name:eo"=>"Gambio", "name:es"=>"Gambia", "name:et"=>"Gambia", "name:eu"=>"Gambia", "name:fa"=>"گامبیا", "name:ff"=>"Gammbi", "name:fi"=>"Gambia", "name:fo"=>"Gambia", "name:fr"=>"Gambie", "name:fy"=>"Gambia", "name:ga"=>"An Ghaimbia", "name:gd"=>"A' Ghaimbia", "name:gl"=>"Gambia", "name:gv"=>"Yn Ghambia", "name:he"=>"גמביה", "name:hi"=>"गाम्बिया", "name:hr"=>"Gambija", "name:ht"=>"Ganbi", "name:hu"=>"Gambia", "name:hy"=>"Գամբիա", "name:ia"=>"Gambia", "name:id"=>"Gambia", "name:ie"=>"The Gambia", "name:io"=>"Gambia", "name:is"=>"Gambía", "name:it"=>"Gambia", "name:ja"=>"ガンビア", "name:jv"=>"Gambia", "name:ka"=>"გამბია", "name:kg"=>"Gambia", "name:ki"=>"Gambia", "name:kk"=>"Гамбия", "name:ko"=>"감비아", "name:ku"=>"Gambiya", "name:kw"=>"Gambi", "name:ky"=>"Гамбия", "name:la"=>"Gambia", "name:lb"=>"Gambia", "name:li"=>"Gambia", "name:ln"=>"Gambi", "name:lt"=>"Gambija", "name:lv"=>"Gambija", "name:mk"=>"Гамбија", "name:ml"=>"ഗാംബിയ", "name:mn"=>"Гамби", "name:mr"=>"गांबिया", "name:ms"=>"Gambia", "name:mt"=>"Gambja", "name:my"=>"ဂမ်ဘီယာနိုင်ငံ", "name:na"=>"Gambiya", "name:nb"=>"Gambia", "name:ne"=>"गाम्बिया", "name:nl"=>"Gambia", "name:nn"=>"Gambia", "name:no"=>"Gambia", "name:nv"=>"Géémbiya", "name:oc"=>"Gàmbia", "name:or"=>"ଗାମ୍ବିଆ", "name:os"=>"Гамби", "name:pa"=>"ਗਾਂਬੀਆ", "name:pl"=>"Gambia", "name:ps"=>"ګامبيا", "name:pt"=>"Gâmbia", "name:qu"=>"Gambya", "name:rm"=>"Gambia", "name:ro"=>"Gambia", "name:ru"=>"Гамбия", "name:rw"=>"Gambiya", "name:sa"=>"गाम्बिया", "name:sc"=>"Gàmbia", "name:sd"=>"گيمبيا", "name:se"=>"Gambia", "name:sg"=>"Gambïi", "name:sh"=>"Gambija", "name:sk"=>"Gambia", "name:sl"=>"Gambija", "name:sn"=>"Gambia", "name:so"=>"Gambia", "name:sq"=>"Gambia", "name:sr"=>"Гамбија", "name:ss"=>"IGambiya", "name:st"=>"Gambia", "name:su"=>"Gambia", "name:sv"=>"Gambia", "name:sw"=>"Gambia", "name:ta"=>"காம்பியா", "name:te"=>"గాంబియా", "name:tg"=>"Гамбия", "name:th"=>"ประเทศแกมเบีย", "name:tk"=>"Gambiýa", "name:tl"=>"Ang Gambiya", "name:tr"=>"Gambiya", "name:ts"=>"Gambiya", "name:tt"=>"Гамбия", "name:ug"=>"گامبىيە", "name:uk"=>"Гамбія", "name:ur"=>"گیمبیا", "name:uz"=>"Gambia", "name:vi"=>"Gambia", "name:vo"=>"Gambiyän", "name:wo"=>"Gàmbi", "name:yi"=>"די גאמביע", "name:yo"=>"Gámbíà", "name:zh"=>"冈比亚", "name:zu"=>"IGambia"
-gy "name"=>"Guyana", "name:af"=>"Guyana", "name:am"=>"ጋያና", "name:an"=>"Guyana", "name:ar"=>"غويانا", "name:ay"=>"Wayana", "name:az"=>"Qayana", "name:ba"=>"Гайана", "name:be"=>"Гаяна", "name:bg"=>"Гвиана", "name:bn"=>"গায়ানা", "name:bo"=>"གུ་ཡ་ན།", "name:br"=>"Guyana", "name:bs"=>"Gvajana", "name:ca"=>"Guyana", "name:ce"=>"Гайана", "name:cs"=>"Guyana", "name:cv"=>"Гайана", "name:cy"=>"Guyana", "name:da"=>"Guyana", "name:de"=>"Guyana", "name:dv"=>"ގުޔާނާ", "name:ee"=>"Guyana", "name:el"=>"Γουιάνα", "name:en"=>"Guyana", "name:eo"=>"Gujano", "name:es"=>"Guyana", "name:et"=>"Guyana", "name:eu"=>"Guyana", "name:fa"=>"گویان", "name:fi"=>"Guyana", "name:fo"=>"Gujana", "name:fr"=>"Guyana", "name:fy"=>"Guyana", "name:ga"=>"An Ghuáin", "name:gd"=>"Guiana", "name:gl"=>"Güiana", "name:gn"=>"Gujána", "name:gu"=>"ગુયાના", "name:gv"=>"Geeaaney", "name:he"=>"גיאנה", "name:hi"=>"गयाना", "name:hr"=>"Gvajana", "name:ht"=>"Giyàn", "name:hu"=>"Guyana", "name:hy"=>"Գայանա", "name:ia"=>"Guyana", "name:id"=>"Guyana", "name:ie"=>"Guyana", "name:io"=>"Guyana", "name:is"=>"Gvæjana", "name:it"=>"Guyana", "name:ja"=>"ガイアナ", "name:jv"=>"Guyana", "name:ka"=>"გაიანა", "name:kk"=>"Гайана", "name:kl"=>"Guyana", "name:kn"=>"ಗಯಾನ", "name:ko"=>"가이아나", "name:ku"=>"Guyana", "name:kw"=>"Gwayana", "name:la"=>"Guiana", "name:lb"=>"Guyana", "name:li"=>"Guyana", "name:ln"=>"Gwiana", "name:lt"=>"Gajana", "name:lv"=>"Gajāna", "name:mi"=>"Kaiana", "name:mk"=>"Гвајана", "name:ml"=>"ഗയാന", "name:mn"=>"Гайана", "name:mr"=>"गयाना", "name:ms"=>"Guyana", "name:mt"=>"Gujana", "name:my"=>"ဂိုင်ယာနာနိုင်ငံ", "name:na"=>"Guyana", "name:ne"=>"गुयना", "name:nl"=>"Guyana", "name:nn"=>"Guyana", "name:no"=>"Guyana", "name:oc"=>"Guyana", "name:or"=>"ଗାଇଓନା", "name:os"=>"Гайанæ", "name:pa"=>"ਗੁਇਆਨਾ", "name:pl"=>"Gujana", "name:ps"=>"ګويانا", "name:pt"=>"Guiana", "name:qu"=>"Wayana", "name:ro"=>"Guyana", "name:ru"=>"Гайана", "name:rw"=>"Giyana", "name:sa"=>"गयाना", "name:sc"=>"Guyana", "name:se"=>"Guyana", "name:sh"=>"Gvajana", "name:sk"=>"Guyana", "name:sl"=>"Gvajana", "name:so"=>"Guyana", "name:sq"=>"Guajana", "name:sr"=>"Гвајана", "name:su"=>"Guyana", "name:sv"=>"Guyana", "name:sw"=>"Guyana", "name:ta"=>"கயானா", "name:te"=>"గయానా", "name:th"=>"ประเทศกายอานา", "name:tl"=>"Guyana", "name:tr"=>"Guyana", "name:tt"=>"Гайана", "name:ug"=>"گايانا", "name:uk"=>"Гаяна", "name:ur"=>"گیانا", "name:uz"=>"Gayana", "name:vi"=>"Guyana", "name:vo"=>"Gvayän", "name:wo"=>"Guyaana", "name:yi"=>"גויאנע", "name:yo"=>"Gùyánà", "name:zh"=>"圭亚那"
-zm "name"=>"Zambia", "name:af"=>"Zambië", "name:am"=>"ዛምቢያ", "name:an"=>"Zambia", "name:ar"=>"زامبيا", "name:az"=>"Zambiya", "name:ba"=>"Замбия", "name:be"=>"Замбія", "name:bg"=>"Замбия", "name:bm"=>"Zanbia", "name:bn"=>"জাম্বিয়া", "name:bo"=>"ཛམ་བི་ཡ།", "name:br"=>"Zambia", "name:bs"=>"Zambija", "name:ca"=>"Zàmbia", "name:ce"=>"Замби", "name:cs"=>"Zambie", "name:cv"=>"Замби", "name:cy"=>"Zambia", "name:da"=>"Zambia", "name:de"=>"Sambia", "name:dv"=>"ޒެމްބިއާ", "name:ee"=>"Zambia", "name:el"=>"Ζάμπια", "name:en"=>"Zambia", "name:eo"=>"Zambio", "name:es"=>"Zambia", "name:et"=>"Sambia", "name:eu"=>"Zambia", "name:fa"=>"زامبیا", "name:fi"=>"Sambia", "name:fo"=>"Sambia", "name:fr"=>"Zambie", "name:fy"=>"Sambia", "name:ga"=>"An tSaimbia", "name:gd"=>"Saimbia", "name:gl"=>"Zambia", "name:gv"=>"Yn Tambia", "name:he"=>"זמביה", "name:hi"=>"ज़ाम्बिया", "name:hr"=>"Zambija", "name:ht"=>"Zanbi", "name:hu"=>"Zambia", "name:hy"=>"Զամբիա", "name:id"=>"Zambia", "name:ie"=>"Zambia", "name:io"=>"Zambia", "name:is"=>"Sambía", "name:it"=>"Zambia", "name:ja"=>"ザンビア", "name:jv"=>"Zambia", "name:ka"=>"ზამბია", "name:kg"=>"Zambia", "name:kk"=>"Замбия", "name:km"=>"ប្រទេសហ្សំប៊ី", "name:ko"=>"잠비아", "name:ku"=>"Zambiya", "name:kw"=>"Zambi", "name:la"=>"Zambia", "name:lb"=>"Sambia", "name:li"=>"Zambia", "name:ln"=>"Zambia", "name:lt"=>"Zambija", "name:lv"=>"Zambija", "name:mi"=>"Tāmipia", "name:mk"=>"Замбија", "name:ml"=>"സാംബിയ", "name:mn"=>"Замби", "name:mr"=>"झांबिया", "name:ms"=>"Zambia", "name:mt"=>"Żambja", "name:my"=>"ဇမ်ဘီယာနိုင်ငံ", "name:nl"=>"Zambia", "name:nn"=>"Zambia", "name:no"=>"Zambia", "name:ny"=>"Zambia", "name:oc"=>"Zambia", "name:or"=>"ଜାମ୍ବିଆ", "name:os"=>"Замби", "name:pa"=>"ਜ਼ਾਂਬੀਆ", "name:pl"=>"Zambia", "name:ps"=>"زېمبيا", "name:pt"=>"Zâmbia", "name:qu"=>"Sambya", "name:ro"=>"Zambia", "name:ru"=>"Замбия", "name:rw"=>"Zambiya", "name:sa"=>"जाम्बिया", "name:sc"=>"Zàmbia", "name:se"=>"Zambia", "name:sg"=>"Zambïi", "name:sh"=>"Zambija", "name:sk"=>"Zambia", "name:sl"=>"Zambija", "name:sn"=>"Zambia", "name:so"=>"Saambiya", "name:sq"=>"Zambia", "name:sr"=>"Замбија", "name:ss"=>"IZambiya", "name:su"=>"Zambia", "name:sv"=>"Zambia", "name:sw"=>"Zambia", "name:ta"=>"சாம்பியா", "name:te"=>"జాంబియా", "name:tg"=>"Замбия", "name:th"=>"ประเทศแซมเบีย", "name:ti"=>"ዛምቢያ", "name:tk"=>"Zambiýa", "name:tl"=>"Sambya", "name:tn"=>"Zambia", "name:tr"=>"Zambiya", "name:ts"=>"Zambia", "name:tt"=>"Замбия", "name:ug"=>"زامبىيە", "name:uk"=>"Замбія", "name:ur"=>"زیمبیا", "name:uz"=>"Zambiya", "name:vi"=>"Zambia", "name:vo"=>"Zambiyän", "name:wo"=>"Saambi", "name:yi"=>"זאמביע", "name:yo"=>"Sámbíà", "name:zh"=>"赞比亚", "name:zu"=>"IZambiya"
-lr "name"=>"Liberia", "name:af"=>"Liberië", "name:am"=>"ላይቤሪያ", "name:an"=>"Liberia", "name:ar"=>"ليبيريا", "name:az"=>"Liberiya", "name:ba"=>"Либерия", "name:be"=>"Ліберыя", "name:bg"=>"Либерия", "name:bm"=>"Liberia", "name:bn"=>"লাইবেরিয়া", "name:bo"=>"ལི་བེ་རི་ཡ།", "name:br"=>"Liberia", "name:bs"=>"Liberija", "name:ca"=>"Libèria", "name:ce"=>"Либери", "name:cs"=>"Libérie", "name:cv"=>"Либери", "name:cy"=>"Liberia", "name:da"=>"Liberia", "name:de"=>"Liberia", "name:dv"=>"ލައިބީރިއާ", "name:ee"=>"Liberia", "name:el"=>"Λιβερία", "name:en"=>"Liberia", "name:eo"=>"Liberio", "name:es"=>"Liberia", "name:et"=>"Libeeria", "name:eu"=>"Liberia", "name:fa"=>"لیبریا", "name:ff"=>"Labiriyaa", "name:fi"=>"Liberia", "name:fo"=>"Liberia", "name:fr"=>"Liberia", "name:fy"=>"Libearia", "name:ga"=>"An Libéir", "name:gd"=>"Libèiria", "name:gl"=>"Liberia", "name:gv"=>"Yn Laibeer", "name:he"=>"ליבריה", "name:hi"=>"लाइबेरिया", "name:hr"=>"Liberija", "name:ht"=>"Liberya", "name:hu"=>"Libéria", "name:hy"=>"Լիբերիա", "name:ia"=>"Liberia", "name:id"=>"Liberia", "name:ie"=>"Liberia", "name:io"=>"Liberia", "name:is"=>"Líbería", "name:it"=>"Liberia", "name:ja"=>"リベリア", "name:jv"=>"Liberia", "name:ka"=>"ლიბერია", "name:kg"=>"Liberia", "name:kk"=>"Либерия", "name:kn"=>"ಲೈಬೀರಿಯ", "name:ko"=>"라이베리아", "name:ku"=>"Lîberya", "name:kw"=>"Liberi", "name:la"=>"Liberia", "name:lb"=>"Liberia", "name:li"=>"Liberia", "name:ln"=>"Liberia", "name:lt"=>"Liberija", "name:lv"=>"Libērija", "name:mi"=>"Raipiri", "name:mk"=>"Либерија", "name:ml"=>"ലൈബീരിയ", "name:mn"=>"Либери", "name:mr"=>"लायबेरिया", "name:ms"=>"Liberia", "name:mt"=>"Liberja", "name:my"=>"လိုက်ဘေးရီးယားနိုင်ငံ", "name:nl"=>"Liberia", "name:nn"=>"Liberia", "name:no"=>"Liberia", "name:oc"=>"Libèria", "name:or"=>"ଲାଇବେରିଆ", "name:os"=>"Либери", "name:pl"=>"Liberia", "name:ps"=>"لايبېريا", "name:pt"=>"Libéria", "name:qu"=>"Libirya", "name:rm"=>"Liberia", "name:ro"=>"Liberia", "name:ru"=>"Либерия", "name:rw"=>"Liberiya", "name:sa"=>"लायबीरिया", "name:sc"=>"Libèria", "name:se"=>"Liberia", "name:sg"=>"Liberïa", "name:sh"=>"Liberija", "name:sk"=>"Libéria", "name:sl"=>"Liberija", "name:sn"=>"Liberia", "name:so"=>"Liberia", "name:sq"=>"Liberia", "name:sr"=>"Либерија", "name:ss"=>"ILibheriya", "name:st"=>"Liberia", "name:su"=>"Liberia", "name:sv"=>"Liberia", "name:sw"=>"Liberia", "name:ta"=>"லைபீரியா", "name:tg"=>"Либерия", "name:th"=>"ประเทศไลบีเรีย", "name:tk"=>"Liberiýa", "name:tl"=>"Liberia", "name:tr"=>"Liberya", "name:ts"=>"Layiberiya", "name:tt"=>"Либерия", "name:ug"=>"لىبېرىيە", "name:uk"=>"Ліберія", "name:ur"=>"لائبیریا", "name:uz"=>"Liberiya", "name:vi"=>"Liberia", "name:vo"=>"Liberän", "name:wo"=>"Libeeria", "name:yi"=>"ליבעריע", "name:yo"=>"Làìbéríà", "name:zh"=>"利比里亚", "name:zu"=>"ILiberia"
-ng "name"=>"Nigeria", "name:af"=>"Nigerië", "name:ak"=>"Nigeria", "name:am"=>"ናይጄሪያ", "name:an"=>"Nicheria", "name:ar"=>"نيجيريا", "name:az"=>"Nigeriya", "name:ba"=>"Нигерия", "name:be"=>"Нігерыя", "name:bg"=>"Нигерия", "name:bm"=>"Nijeria", "name:bn"=>"নাইজেরিয়া", "name:bo"=>"ནི་ཇི་རི་ཡ།", "name:br"=>"Nigeria", "name:bs"=>"Nigerija", "name:ca"=>"Nigèria", "name:ce"=>"Нигери", "name:cs"=>"Nigérie", "name:cv"=>"Нигери", "name:cy"=>"Nigeria", "name:da"=>"Nigeria", "name:de"=>"Nigeria", "name:dv"=>"ނައިޖީރިއާ", "name:ee"=>"Nigeria", "name:el"=>"Νιγηρία", "name:en"=>"Nigeria", "name:eo"=>"Niĝerio", "name:es"=>"Nigeria", "name:et"=>"Nigeeria", "name:eu"=>"Nigeria", "name:fa"=>"نیجریه", "name:ff"=>"Niiseriya", "name:fi"=>"Nigeria", "name:fo"=>"Nigeria", "name:fr"=>"Nigéria", "name:fy"=>"Nigearia", "name:ga"=>"An Nigéir", "name:gd"=>"Nìgeiria", "name:gl"=>"Nixeria", "name:gn"=>"Niheria", "name:gu"=>"નાઈજેરિયા", "name:gv"=>"Yn Naigeer", "name:ha"=>"Nijeriya", "name:he"=>"ניגריה", "name:hi"=>"नाईजीरिया", "name:hr"=>"Nigerija", "name:ht"=>"Nijerya", "name:hu"=>"Nigéria", "name:hy"=>"Նիգերիա", "name:ia"=>"Nigeria", "name:id"=>"Nigeria", "name:ie"=>"Nigeria", "name:ig"=>"Naigeria", "name:io"=>"Nigeria", "name:is"=>"Nígería", "name:it"=>"Nigeria", "name:ja"=>"ナイジェリア", "name:jv"=>"Nigeria", "name:ka"=>"ნიგერია", "name:kg"=>"Nizeria", "name:kk"=>"Нигерия", "name:kn"=>"ನೈಜೀರಿಯ", "name:ko"=>"나이지리아", "name:ks"=>"نایجیرِیا", "name:ku"=>"Nîjerya", "name:kw"=>"Nijeri", "name:la"=>"Nigeria", "name:lb"=>"Nigeria", "name:li"=>"Nigeria", "name:ln"=>"Nizeria", "name:lt"=>"Nigerija", "name:lv"=>"Nigērija", "name:mg"=>"Nizeria", "name:mi"=>"Ngāitiria", "name:mk"=>"Нигерија", "name:ml"=>"നൈജീരിയ", "name:mn"=>"Нигери", "name:mr"=>"नायजेरिया", "name:ms"=>"Nigeria", "name:mt"=>"Niġerja", "name:my"=>"နိုင်ဂျီးရီးယားနိုင်ငံ", "name:ne"=>"नाइजेरिया", "name:nl"=>"Nigeria", "name:nn"=>"Nigeria", "name:no"=>"Nigeria", "name:oc"=>"Nigèria", "name:or"=>"ନାଇଜେରିଆ", "name:os"=>"Нигери", "name:pa"=>"ਨਾਈਜੀਰੀਆ", "name:pl"=>"Nigeria", "name:ps"=>"نايجېريا", "name:pt"=>"Nigéria", "name:qu"=>"Niqirya", "name:ro"=>"Nigeria", "name:ru"=>"Нигерия", "name:rw"=>"Nijeriya", "name:sa"=>"नैजीरिया", "name:sc"=>"Nigéria", "name:se"=>"Nigeria", "name:sg"=>"Nizerïa", "name:sh"=>"Nigerija", "name:sk"=>"Nigéria", "name:sl"=>"Nigerija", "name:sn"=>"Nigeria", "name:so"=>"Nayjeeriya", "name:sq"=>"Nigeria", "name:sr"=>"Нигерија", "name:ss"=>"INayijeriya", "name:su"=>"Nigeria", "name:sv"=>"Nigeria", "name:sw"=>"Nigeria", "name:ta"=>"நைஜீரியா", "name:te"=>"నైజీరియా", "name:tg"=>"Ниҷерия", "name:th"=>"ประเทศไนจีเรีย", "name:ti"=>"ናይጂሪያ", "name:tk"=>"Nigeriýa", "name:tl"=>"Nigerya", "name:tr"=>"Nijerya", "name:ts"=>"Nigeria", "name:tt"=>"Нигерия", "name:ug"=>"نىگېرىيە", "name:uk"=>"Нігерія", "name:ur"=>"نائجیریا", "name:uz"=>"Nigeriya", "name:vi"=>"Nigeria", "name:vo"=>"Nigeriyän", "name:wa"=>"Nidjeria", "name:xh"=>"INigeria", "name:yi"=>"ניגעריע", "name:yo"=>"Nàìjíríà", "name:za"=>"Nizywlihya", "name:zh"=>"奈及利亞", "name:zu"=>"INigeria"
-sl "name"=>"Sierra Leone", "name:af"=>"Sierra Leone", "name:ak"=>"Sierra Leone", "name:am"=>"ሴየራ ሌዎን", "name:an"=>"Sierra Leone", "name:ar"=>"سيراليون", "name:az"=>"Syerra-Leone", "name:ba"=>"Сьерра-Леоне", "name:be"=>"Сьера-Леонэ", "name:bg"=>"Сиера Леоне", "name:bm"=>"Sera Leon", "name:bn"=>"সিয়েরা লিওন", "name:bo"=>"སི་ར་ལེ་ཨོན།", "name:br"=>"Sierra Leone", "name:bs"=>"Sijera Leone", "name:ca"=>"Sierra Leone", "name:ce"=>"Сьерра-Леоне", "name:cs"=>"Sierra Leone", "name:cy"=>"Sierra Leone", "name:da"=>"Sierra Leone", "name:de"=>"Sierra Leone", "name:dv"=>"ސެރެލިއޯން", "name:ee"=>"Sierra Leone", "name:el"=>"Σιέρα Λεόνε", "name:en"=>"Sierra Leone", "name:eo"=>"Siera-Leono", "name:es"=>"Sierra Leona", "name:et"=>"Sierra Leone", "name:eu"=>"Sierra Leona", "name:fa"=>"سیرالئون", "name:ff"=>"Sarliyon", "name:fi"=>"Sierra Leone", "name:fo"=>"Sierra Leona", "name:fr"=>"Sierra Leone", "name:fy"=>"Sierra Leöane", "name:ga"=>"Siarra Leon", "name:gd"=>"Siarra Leòmhann", "name:gl"=>"Serra Leoa", "name:gv"=>"Sierra Leone", "name:he"=>"סיירה לאונה", "name:hi"=>"सिएरा लियोन", "name:hr"=>"Sijera Leone", "name:ht"=>"Syera Leòn", "name:hu"=>"Sierra Leone", "name:hy"=>"Սիերա Լեոնե", "name:id"=>"Sierra Leone", "name:ie"=>"Sierra Leone", "name:io"=>"Sierra Leone", "name:is"=>"Síerra Leóne", "name:it"=>"Sierra Leone", "name:ja"=>"シエラレオネ", "name:jv"=>"Sierra Leone", "name:ka"=>"სიერა-ლეონე", "name:kg"=>"Siera Leone", "name:kk"=>"Сиерра-Леоне", "name:kn"=>"ಸಿಯೆರ್ರಾ ಲಿಯೋನ್", "name:ko"=>"시에라리온", "name:ku"=>"Sierra Leone", "name:kw"=>"Sierra Leon", "name:la"=>"Mons Leoninus", "name:lb"=>"Sierra Leone", "name:li"=>"Sierra Leone", "name:ln"=>"Sierra Leone", "name:lt"=>"Siera Leonė", "name:lv"=>"Sjerraleone", "name:mi"=>"Te Araone", "name:mk"=>"Сиера Леоне", "name:ml"=>"സീറാ ലിയോൺ", "name:mn"=>"Сьерра-Леоне", "name:mr"=>"सियेरा लिओन", "name:ms"=>"Sierra Leone", "name:mt"=>"Sierra Leone", "name:my"=>"ဆီရာလီယွန်နိုင်ငံ", "name:nl"=>"Sierra Leone", "name:nn"=>"Sierra Leone", "name:no"=>"Sierra Leone", "name:nv"=>"Náshdóítsoh Bitsiijįʼ Daditłʼooʼígíí Bidził", "name:oc"=>"Sierra Leone", "name:or"=>"ସିଏରା ଲିଓନ", "name:os"=>"Сьеррæ-Леоне", "name:pa"=>"ਸਿਏਰਾ ਲਿਓਨ", "name:pl"=>"Sierra Leone", "name:ps"=>"سېرالیون", "name:pt"=>"Serra Leoa", "name:qu"=>"Liyun Urqu", "name:ro"=>"Sierra Leone", "name:ru"=>"Сьерра-Леоне", "name:rw"=>"Siyera Lewone", "name:sa"=>"सियारा-लियोन", "name:sc"=>"Sierra Leone", "name:se"=>"Sierra Leone", "name:sg"=>"Sierä-Leône", "name:sh"=>"Sijera Leone", "name:si"=>"සියෙරා ලියෝන්", "name:sk"=>"Sierra Leone", "name:sl"=>"Sierra Leone", "name:sn"=>"Sierra Leone", "name:so"=>"Sierra Leone", "name:sq"=>"Siera Leone", "name:sr"=>"Сијера Леоне", "name:ss"=>"ISiriya-Liyoni", "name:su"=>"Sierra Leone", "name:sv"=>"Sierra Leone", "name:sw"=>"Sierra Leone", "name:ta"=>"சியேரா லியோனி", "name:tg"=>"Сиерра Леоне", "name:th"=>"ประเทศเซียร์ราลีโอน", "name:tk"=>"Sýerra-Leone", "name:tl"=>"Bulubunduking Leona", "name:tr"=>"Sierra Leone", "name:ts"=>"Siyera Liyona", "name:tw"=>"Sierra Leone", "name:ug"=>"سيېررا لېئونې", "name:uk"=>"Сьєрра-Леоне", "name:ur"=>"سیرالیون", "name:uz"=>"Syerra Leone", "name:vi"=>"Sierra Leone", "name:vo"=>"Sieraleonän", "name:wo"=>"Siraa Leyoon", "name:yi"=>"סיערע לעאנע", "name:yo"=>"Siẹrra Léònè", "name:zh"=>"塞拉利昂", "name:zu"=>"ISiera Liyoni"
-to "name"=>"Tonga", "name:af"=>"Tonga", "name:am"=>"ቶንጋ", "name:an"=>"Tonga", "name:ar"=>"تونجا", "name:az"=>"Tonqa", "name:ba"=>"Тонга", "name:be"=>"Тонга", "name:bg"=>"Тонга", "name:bn"=>"টোঙ্গা", "name:bo"=>"ཊོང་ག", "name:br"=>"Tonga", "name:bs"=>"Tonga", "name:ca"=>"Tonga", "name:ce"=>"Тонга", "name:cs"=>"Tonga", "name:cu"=>"Тонга", "name:cy"=>"Tonga", "name:da"=>"Tonga", "name:de"=>"Tonga", "name:dv"=>"ޓޮންގާ", "name:el"=>"Τόνγκα", "name:en"=>"Tonga", "name:eo"=>"Tongo", "name:es"=>"Tonga", "name:et"=>"Tonga", "name:eu"=>"Tonga", "name:fa"=>"تونگا", "name:fi"=>"Tonga", "name:fo"=>"Tonga", "name:fr"=>"Tonga", "name:fy"=>"Tonga", "name:ga"=>"Tonga", "name:gd"=>"Tonga", "name:gl"=>"Tonga", "name:gv"=>"Yn Tongey", "name:he"=>"טונגה", "name:hi"=>"टोंगा", "name:hr"=>"Tonga", "name:ht"=>"Tonga", "name:hu"=>"Tonga", "name:hy"=>"Տոնգա", "name:ia"=>"Tonga", "name:id"=>"Tonga", "name:io"=>"Tonga", "name:is"=>"Tonga", "name:it"=>"Tonga", "name:ja"=>"トンガ", "name:jv"=>"Tonga", "name:ka"=>"ტონგა", "name:kk"=>"Тонга", "name:kn"=>"ಟೋಂಗಾ", "name:ko"=>"통가", "name:ku"=>"Tonga", "name:kw"=>"Tonga", "name:la"=>"Tonga", "name:lb"=>"Tonga", "name:li"=>"Tonga", "name:lt"=>"Tonga", "name:lv"=>"Tonga", "name:mk"=>"Тонга", "name:ml"=>"ടോങ്ക", "name:mn"=>"Тонга", "name:mr"=>"टोंगा", "name:ms"=>"Tonga", "name:mt"=>"Tonga", "name:my"=>"တုံဂါနိုင်ငံ", "name:nl"=>"Tonga", "name:nn"=>"Tonga", "name:no"=>"Tonga", "name:nv"=>"Tʼónga", "name:oc"=>"Tònga", "name:or"=>"ଟୋଙ୍ଗା", "name:os"=>"Тонгæ", "name:pa"=>"ਟੋਂਗਾ", "name:pl"=>"Tonga", "name:pt"=>"Tonga", "name:qu"=>"Tunqa", "name:rm"=>"Tonga", "name:ro"=>"Tonga", "name:ru"=>"Тонга", "name:rw"=>"Tonga", "name:sa"=>"टोंगा", "name:se"=>"Tonga", "name:sh"=>"Tonga", "name:sk"=>"Tonga", "name:sl"=>"Tonga", "name:sm"=>"Toga", "name:sq"=>"Tonga", "name:sr"=>"Тонга", "name:su"=>"Tonga", "name:sv"=>"Tonga", "name:sw"=>"Tonga", "name:ta"=>"தொங்கா", "name:tg"=>"Тонга", "name:th"=>"ประเทศตองกา", "name:tl"=>"Tonga", "name:to"=>"Tonga", "name:tr"=>"Tonga", "name:ts"=>"Tonga", "name:tw"=>"Tonga", "name:ty"=>"To’a", "name:ug"=>"Ton’ga", "name:uk"=>"Тонга", "name:ur"=>"ٹونگا", "name:uz"=>"Tonga", "name:vi"=>"Tonga", "name:vo"=>"Tonguäns", "name:wo"=>"Tonga", "name:yo"=>"Tóngà", "name:zh"=>"東加"
-mq "name"=>"Martinique", "name:ar"=>"مارتينيك", "name:be"=>"Марцініка", "name:br"=>"Martinik", "name:ca"=>"Martinica", "name:da"=>"Martinique", "name:el"=>"Μαρτινίκα", "name:en"=>"Martinique", "name:eo"=>"Martiniko", "name:es"=>"Martinica", "name:fa"=>"مارتینیک", "name:fi"=>"Martinique", "name:fr"=>"Martinique", "name:fy"=>"Martinyk", "name:he"=>"מרטיניק", "name:hr"=>"Martinik", "name:hu"=>"Martinique", "name:id"=>"Martinik", "name:is"=>"Martinique", "name:it"=>"Martinica", "name:la"=>"Martinica", "name:lt"=>"Martinika", "name:lv"=>"Martinika", "name:mn"=>"Мартиник", "name:pl"=>"Martynika", "name:ru"=>"Мартиника", "name:sv"=>"Martinique", "name:uk"=>"Мартиніка", "name:zh"=>"馬提尼克"
-zw "name"=>"Zimbabwe", "name:af"=>"Zimbabwe", "name:am"=>"ዚምባብዌ", "name:an"=>"Zimbabwe", "name:ar"=>"زيمبابوي", "name:az"=>"Zimbabve", "name:ba"=>"Зимбабве", "name:be"=>"Зімбабвэ", "name:bg"=>"Зимбабве", "name:bm"=>"Zimbabwe", "name:bn"=>"জিম্বাবুয়ে", "name:bo"=>"ཛིམ་བབ་ཝི།", "name:br"=>"Zimbabwe", "name:bs"=>"Zimbabve", "name:ca"=>"Zimbabwe", "name:ce"=>"Зимбабве", "name:cs"=>"Zimbabwe", "name:cv"=>"Зимбабве", "name:cy"=>"Zimbabwe", "name:da"=>"Zimbabwe", "name:de"=>"Simbabwe", "name:dv"=>"ޒިމްބާބުވޭ", "name:dz"=>"ཛིམ་བབ་ཝེ་", "name:ee"=>"Zimbabwe", "name:el"=>"Ζιμπάμπουε", "name:en"=>"Zimbabwe", "name:eo"=>"Zimbabvo", "name:es"=>"Zimbabue", "name:et"=>"Zimbabwe", "name:eu"=>"Zimbabwe", "name:fa"=>"زیمبابوه", "name:fi"=>"Zimbabwe", "name:fo"=>"Simbabvi", "name:fr"=>"Zimbabwe", "name:fy"=>"Simbabwe", "name:ga"=>"An tSiombáib", "name:gd"=>"Siombabue", "name:gl"=>"Cimbabue", "name:gv"=>"Yn Çhimbabwe", "name:he"=>"זימבבואה", "name:hi"=>"ज़िम्बाब्वे", "name:hr"=>"Zimbabve", "name:ht"=>"Zimbabwe", "name:hu"=>"Zimbabwe", "name:hy"=>"Զիմբաբվե", "name:id"=>"Zimbabwe", "name:ie"=>"Zimbabwe", "name:io"=>"Zimbabwe", "name:is"=>"Simbabve", "name:it"=>"Zimbabwe", "name:ja"=>"ジンバブエ", "name:jv"=>"Zimbabwe", "name:ka"=>"ზიმბაბვე", "name:kg"=>"Zimbabwe", "name:ki"=>"Zimbabwe", "name:kk"=>"Зимбабве", "name:kn"=>"ಜಿಂಬಾಬ್ವೆ", "name:ko"=>"짐바브웨", "name:ku"=>"Zîmbabwe", "name:kw"=>"Zimbabwe", "name:la"=>"Zimbabua", "name:lb"=>"Simbabwe", "name:li"=>"Zimbabwe", "name:ln"=>"Zimbabwe", "name:lt"=>"Zimbabvė", "name:lv"=>"Zimbabve", "name:mi"=>"Timuwawe", "name:mk"=>"Зимбабве", "name:ml"=>"സിംബാബ്വെ", "name:mn"=>"Зимбабве", "name:mr"=>"झिंबाब्वे", "name:ms"=>"Zimbabwe", "name:mt"=>"Żimbabwe", "name:my"=>"ဇင်ဘာဘွေနိုင်ငံ", "name:ne"=>"जिम्बाब्वे", "name:nl"=>"Zimbabwe", "name:nn"=>"Zimbabwe", "name:no"=>"Zimbabwe", "name:nv"=>"Hooghan Tsé Bee Ádaalyaaí Bikéyah", "name:ny"=>"Zimbabwe", "name:oc"=>"Zimbabwe", "name:or"=>"ଜିମ୍ବାୱେ", "name:os"=>"Зимбабве", "name:pa"=>"ਜ਼ਿੰਬਾਬਵੇ", "name:pl"=>"Zimbabwe", "name:ps"=>"زېمبابوې", "name:pt"=>"Zimbabué", "name:qu"=>"Simbabwi", "name:ro"=>"Zimbabwe", "name:ru"=>"Зимбабве", "name:rw"=>"Zimbabwe", "name:sa"=>"जिम्बाबवे", "name:sc"=>"Zimbabwe", "name:se"=>"Zimbabwe", "name:sg"=>"Zimbäbwe", "name:sh"=>"Zimbabve", "name:si"=>"සිම්බාබ්වේ", "name:sk"=>"Zimbabwe", "name:sl"=>"Zimbabve", "name:sn"=>"Zimbabwe", "name:so"=>"Simbaabwi", "name:sq"=>"Zimbabveja", "name:sr"=>"Зимбабве", "name:ss"=>"IZimbabhwe", "name:su"=>"Zimbabwé", "name:sv"=>"Zimbabwe", "name:sw"=>"Zimbabwe", "name:ta"=>"சிம்பாப்வே", "name:te"=>"జింబాబ్వే", "name:tg"=>"Зимбабве", "name:th"=>"ประเทศซิมบับเว", "name:ti"=>"ዚምባብዌ", "name:tk"=>"Zimbabwe", "name:tl"=>"Simbabwe", "name:tn"=>"Zimbabwe", "name:tr"=>"Zimbabve", "name:ts"=>"Zimbabwe", "name:tt"=>"Зимбабве", "name:ug"=>"زىمبابۋې", "name:uk"=>"Зімбабве", "name:ur"=>"زمبابوے", "name:uz"=>"Zimbabve", "name:ve"=>"Zimbagwe", "name:vi"=>"Zimbabwe", "name:vo"=>"Zimbabiyän", "name:wo"=>"Simbaawee", "name:yi"=>"זימבאבווע", "name:yo"=>"Sìmbábúè", "name:zh"=>"辛巴威", "name:zu"=>"IZimbabwe"
-bj "name"=>"Bénin", "name:af"=>"Benin", "name:ak"=>"Bɛnin", "name:am"=>"ቤኒን", "name:an"=>"Benín", "name:ar"=>"بنين", "name:az"=>"Benin", "name:ba"=>"Бенин", "name:be"=>"Бені́н", "name:bg"=>"Бенин", "name:bh"=>"बेनिन", "name:bm"=>"Benɛn", "name:bn"=>"বেনিন", "name:bo"=>"བེ་ནིན།", "name:br"=>"Benin", "name:bs"=>"Benin", "name:ca"=>"Benín", "name:ce"=>"Бени́н", "name:cs"=>"Benin", "name:cv"=>"Бенин", "name:cy"=>"Benin", "name:da"=>"Benin", "name:de"=>"Benin", "name:dv"=>"ބެނީން", "name:dz"=>"བཱེ་ནིན།", "name:ee"=>"Benɛ̃", "name:el"=>"Μπενίν", "name:en"=>"Benin", "name:eo"=>"Benino", "name:es"=>"Benín", "name:et"=>"Benin", "name:eu"=>"Benin", "name:fa"=>"بنین", "name:ff"=>"Benen", "name:fi"=>"Benin", "name:fo"=>"Benin", "name:fr"=>"Bénin", "name:fy"=>"Benyn", "name:ga"=>"Beinin", "name:gd"=>"Beinin", "name:gl"=>"Benin", "name:gn"=>"Mbenĩ", "name:gu"=>"બેનિન", "name:gv"=>"Benin", "name:ha"=>"Benin", "name:he"=>"בנין", "name:hi"=>"बेनिन", "name:hr"=>"Benin", "name:ht"=>"Benen", "name:hu"=>"Benin", "name:hy"=>"Բենին", "name:ia"=>"Benin", "name:id"=>"Benin", "name:ie"=>"Benin", "name:ig"=>"Benin", "name:io"=>"Benin", "name:is"=>"Benín", "name:it"=>"Benin", "name:ja"=>"ベナン", "name:jv"=>"Bénin", "name:ka"=>"ბენინი", "name:kg"=>"Benin", "name:ki"=>"Benin", "name:kk"=>"Бени́н", "name:kl"=>"Benin", "name:km"=>"បេណាំង", "name:kn"=>"ಬೆನಿನ್", "name:ko"=>"베냉", "name:ks"=>"بِنِن", "name:ku"=>"Bênîn", "name:kw"=>"Benin", "name:ky"=>"Бени́н", "name:la"=>"Beninum", "name:lb"=>"Benin", "name:lg"=>"Benin", "name:li"=>"Benin", "name:ln"=>"Benin", "name:lo"=>"ເບນິນ", "name:lt"=>"Beninas", "name:lv"=>"Benina", "name:mg"=>"Benina", "name:mi"=>"Pēnina", "name:mk"=>"Бенин", "name:ml"=>"ബെനിൻ", "name:mn"=>"Бенин", "name:mr"=>"बेनिन", "name:ms"=>"Benin", "name:mt"=>"Benin", "name:my"=>"ဘီနင်နိုင်ငံ", "name:na"=>"Benin", "name:ne"=>"बेनिन", "name:nl"=>"Benin", "name:nn"=>"Benin", "name:no"=>"Benin", "name:oc"=>"Benin", "name:om"=>"Beeniin", "name:or"=>"ବେନିନ", "name:os"=>"Бенин", "name:pa"=>"ਬੇਨਿਨ", "name:pi"=>"बेनिन", "name:pl"=>"Benin", "name:ps"=>"بېنين", "name:pt"=>"Benim", "name:qu"=>"Binin", "name:rm"=>"Benin", "name:rn"=>"Bene", "name:ro"=>"Benin", "name:ru"=>"Бенин", "name:rw"=>"Bene", "name:sa"=>"बेनिन्", "name:sc"=>"Benin", "name:sd"=>"بينن", "name:se"=>"Benin", "name:sg"=>"Benëen", "name:sh"=>"Benin", "name:si"=>"බෙනින්", "name:sk"=>"Benin", "name:sl"=>"Benin", "name:sn"=>"Benin", "name:so"=>"Benin", "name:sq"=>"Benini", "name:sr"=>"Бенин", "name:ss"=>"iBhenini", "name:st"=>"Benin", "name:su"=>"Bénin", "name:sv"=>"Benin", "name:sw"=>"Benin", "name:ta"=>"பெனின்", "name:te"=>"బెనిన్", "name:tg"=>"Бенѝн", "name:th"=>"เบนิน", "name:ti"=>"ቤኒን", "name:tk"=>"Benin", "name:tl"=>"Benin", "name:to"=>"Penini", "name:tr"=>"Benin", "name:ts"=>"Benin", "name:tt"=>"Бени́н", "name:ug"=>"بېنىن", "name:uk"=>"Бені́н", "name:ur"=>"بینن", "name:uz"=>"Benin", "name:vi"=>"Bénin", "name:vo"=>"Beninän", "name:wo"=>"Bene", "name:yi"=>"בענין", "name:yo"=>"Benin", "name:zh"=>"贝宁", "name:zu"=>"IBenini"
-bf "name"=>"Burkina Faso", "name:af"=>"Burkina Faso", "name:ak"=>"Burkina Faso", "name:am"=>"ቡርኪና ፋሶ", "name:an"=>"Burkina Faso", "name:ar"=>"بوركينا فاسو", "name:az"=>"Burkina-Faso", "name:ba"=>"Буркина́-Фасо́", "name:be"=>"Буркіна́-Фасо́", "name:bg"=>"Буркина Фасо", "name:bh"=>"बुर्किना फासो", "name:bm"=>"Burukina Faso", "name:bn"=>"বুর্কিনা ফাসো", "name:bo"=>"བུར་ཀི་ན་ཕ་སོ།", "name:br"=>"Burkina Faso", "name:bs"=>"Burkina Faso", "name:ca"=>"Burkina Faso", "name:ce"=>"Буркина-Фасо", "name:cs"=>"Burkina Faso", "name:cv"=>"Буркина Фасо", "name:cy"=>"Bwrcina Ffaso", "name:da"=>"Burkina Faso", "name:de"=>"Burkina Faso", "name:dv"=>"ބުރުކީނާ ފާސޯ", "name:dz"=>"བྷར་ཀི་ན་ ཕེ་སོ", "name:ee"=>"Burkina Faso", "name:el"=>"Μπουρκίνα Φάσο", "name:en"=>"Burkina Faso", "name:eo"=>"Burkina Faso", "name:es"=>"Burkina Faso", "name:et"=>"Burkina Faso", "name:eu"=>"Burkina Faso", "name:fa"=>"بورکینافاسو", "name:ff"=>"Burkina Faso", "name:fi"=>"Burkina Faso", "name:fo"=>"Burkina Faso", "name:fr"=>"Burkina Faso", "name:fy"=>"Boerkina Faso", "name:ga"=>"Buircíne Fasó", "name:gd"=>"Buirciona Faso", "name:gl"=>"Burquina Faso", "name:gu"=>"બુર્કિના ફાસો", "name:gv"=>"Burkina Faso", "name:ha"=>"Burkina faso", "name:he"=>"בורקינה פאסו", "name:hi"=>"बुर्किना फासो", "name:hr"=>"Burkina Faso", "name:ht"=>"Boukinafaso", "name:hu"=>"Burkina Faso", "name:hy"=>"Բուրկինա Ֆասո", "name:ia"=>"Burkina Faso", "name:id"=>"Burkina Faso", "name:ie"=>"Burkina Faso", "name:ig"=>"Burkina Faso", "name:io"=>"Burkina Faso", "name:is"=>"Búrkína Fasó", "name:it"=>"Burkina Faso", "name:ja"=>"ブルキナファソ", "name:jv"=>"Burkina Faso", "name:ka"=>"ბურკინა-ფასო", "name:kg"=>"Burkina Faso", "name:ki"=>"Burkina Faso", "name:kk"=>"Буркина Фасо", "name:km"=>"ប៊ូរគីណាហ្វាសូ", "name:kn"=>"ಬುರ್ಕೀನ ಫಾಸೊ", "name:ko"=>"부르키나파소", "name:ks"=>"بُرکِنا فیسو", "name:ku"=>"Burkîna Faso", "name:kw"=>"Burkina Faso", "name:ky"=>"Буркина-Фасо", "name:la"=>"Burkina Faso", "name:lb"=>"Burkina Faso", "name:lg"=>"Burkina Faso", "name:li"=>"Burkina Faso", "name:ln"=>"Burkina Faso", "name:lo"=>"ເບີກິນາຟາໂຊ", "name:lt"=>"Burkina Fasas", "name:lv"=>"Burkinafaso", "name:mg"=>"Borkina Faso", "name:mk"=>"Буркина Фасо", "name:ml"=>"ബർക്കിനാ ഫാസോ", "name:mn"=>"Буркина Фасо", "name:mr"=>"बर्किना फासो", "name:ms"=>"Burkina Faso", "name:mt"=>"Burkina Faso", "name:my"=>"ဘာကီးနားဖားဆိုနိုင်ငံ", "name:na"=>"Burkinabato", "name:ne"=>"बुर्किना फासो", "name:nl"=>"Burkina Faso", "name:nn"=>"Burkina Faso", "name:no"=>"Burkina Faso", "name:oc"=>"Burkina Faso", "name:om"=>"Burkinaa Faasoo", "name:or"=>"ବୁରକିନା ଫାସୋ", "name:os"=>"Буркина́-Фасо́", "name:pa"=>"ਬੁਰਕੀਨਾ ਫ਼ਾਸੋ", "name:pi"=>"बुर्कीना-फासो", "name:pl"=>"Burkina Faso", "name:ps"=>"بورکینا فاسو", "name:pt"=>"Burquina Faso", "name:qu"=>"Burkina Phasu", "name:rm"=>"Burkina Faso", "name:rn"=>"Burukina Faso", "name:ro"=>"Burkina Faso", "name:ru"=>"Буркина-Фасо", "name:rw"=>"Burukina Faso", "name:sa"=>"बुर्कीना-फासो", "name:sc"=>"Burkina Faso", "name:se"=>"Burkina Faso", "name:sg"=>"Burkina Faso", "name:sh"=>"Burkina Faso", "name:si"=>"බර්කිනා ෆාසෝ", "name:sk"=>"Burkina Faso", "name:sl"=>"Burkina Faso", "name:sm"=>"Burkina Faso", "name:sn"=>"Burkina Faso", "name:so"=>"Burkina Faso", "name:sq"=>"Burkina Faso", "name:sr"=>"Буркина Фасо", "name:ss"=>"iBhukhina-Faso", "name:st"=>"Burkina Faso", "name:su"=>"Burkina Faso", "name:sv"=>"Burkina Faso", "name:sw"=>"Burkina Faso", "name:ta"=>"புர்க்கினா பாசோ", "name:te"=>"బర్కీనా ఫాసో", "name:tg"=>"Буркина Фасо", "name:th"=>"บูร์กินาฟาโซ", "name:ti"=>"ቡርኪና ፋሶ", "name:tk"=>"Burkina-Faso", "name:tl"=>"Burkina Faso", "name:to"=>"Pekano Faso", "name:tr"=>"Burkina Faso", "name:ts"=>"Burkina Faso", "name:tt"=>"Буркина́ Фасо́", "name:ug"=>"بۇركىنا فاسو", "name:uk"=>"Буркіна́-Фасо́", "name:ur"=>"برکینا فاسو", "name:uz"=>"Burkina Faso", "name:vi"=>"Buốc-ki-na Pha-xô", "name:vo"=>"Burkinän", "name:wo"=>"Burkinaa Faaso", "name:yi"=>"בורקינע פֿאַסא", "name:yo"=>"Bùrkínà Fasò", "name:zh"=>"布基纳法索", "name:zu"=>"iBukhina Faso"
-ne "name"=>"Niger", "name:af"=>"Niger", "name:am"=>"ኒጄር", "name:an"=>"Nícher", "name:ar"=>"النيجر", "name:az"=>"Niger", "name:ba"=>"Нигер", "name:be"=>"Нігер", "name:bg"=>"Нигер", "name:bm"=>"Nijer", "name:bn"=>"নাইজার", "name:bo"=>"ནི་ཇར།", "name:br"=>"Niger", "name:bs"=>"Niger", "name:ca"=>"Níger", "name:ce"=>"Нигер", "name:cs"=>"Niger", "name:cy"=>"Niger", "name:da"=>"Niger", "name:de"=>"Niger", "name:dv"=>"ނީޖަރު", "name:ee"=>"Niger", "name:el"=>"Νίγηρας", "name:en"=>"Niger", "name:eo"=>"Niĝero", "name:es"=>"Níger", "name:et"=>"Niger", "name:eu"=>"Niger", "name:fa"=>"نیجر", "name:fi"=>"Niger", "name:fo"=>"Niger", "name:fr"=>"Niger", "name:fy"=>"Niger", "name:ga"=>"An Nígir", "name:gd"=>"Nìgeir", "name:gl"=>"Níxer", "name:gu"=>"નાઈજર", "name:gv"=>"Yn Neegeyr", "name:ha"=>"Nijar", "name:he"=>"ניז'ר", "name:hi"=>"नाइजर", "name:hr"=>"Niger", "name:ht"=>"Nijè", "name:hu"=>"Niger", "name:hy"=>"Նիգեր", "name:ia"=>"Niger", "name:id"=>"Niger", "name:ie"=>"Niger", "name:ig"=>"Niger", "name:io"=>"Nijer", "name:is"=>"Níger", "name:it"=>"Niger", "name:ja"=>"ニジェール", "name:jv"=>"Niger", "name:ka"=>"ნიგერი", "name:kg"=>"Nijer", "name:kk"=>"Нигер", "name:ko"=>"니제르", "name:ku"=>"Nîjer", "name:kw"=>"Pow Nijer", "name:la"=>"Niger", "name:lb"=>"Niger", "name:li"=>"Niger", "name:ln"=>"Nizer", "name:lt"=>"Nigeris", "name:lv"=>"Nigēra", "name:mi"=>"Ngāika", "name:mk"=>"Нигер", "name:ml"=>"നീഷർ", "name:mn"=>"Нигер", "name:mr"=>"नायजर", "name:ms"=>"Niger", "name:mt"=>"Niġer", "name:my"=>"နိုင်ဂျာနိုင်ငံ", "name:nl"=>"Niger", "name:nn"=>"Niger", "name:no"=>"Niger", "name:oc"=>"Nigèr", "name:or"=>"ନାଇଜର", "name:os"=>"Нигер", "name:pa"=>"ਨਾਈਜਰ", "name:pl"=>"Niger", "name:ps"=>"نایجېر", "name:pt"=>"Níger", "name:qu"=>"Niqir", "name:ro"=>"Niger", "name:ru"=>"Нигер", "name:rw"=>"Nigeri", "name:sa"=>"नीजे", "name:sc"=>"Nixèr", "name:se"=>"Niger", "name:sg"=>"Nizëre", "name:sh"=>"Niger", "name:si"=>"නයිජර්", "name:sk"=>"Niger", "name:sl"=>"Niger", "name:sn"=>"Niger", "name:so"=>"Nayjar", "name:sq"=>"Nigeri", "name:sr"=>"Нигер", "name:ss"=>"INayijari", "name:su"=>"Niger", "name:sv"=>"Niger", "name:sw"=>"Niger", "name:ta"=>"நைஜர்", "name:te"=>"నైజర్", "name:tg"=>"Ниҷер", "name:th"=>"ประเทศไนเจอร์", "name:ti"=>"ናይጀር", "name:tk"=>"Niger", "name:tl"=>"Niyer", "name:tr"=>"Nijer", "name:ts"=>"Niger", "name:ug"=>"نىگېر", "name:uk"=>"Нігер", "name:ur"=>"نائجر", "name:uz"=>"Niger", "name:vi"=>"Niger", "name:vo"=>"Nigerän", "name:wo"=>"Niseer", "name:yi"=>"ניזשער", "name:yo"=>"Nìjẹ̀r", "name:zh"=>"尼日尔", "name:zu"=>"INayighe"
-cf "name"=>"Ködörösêse tî Bêafrîka - République Centrafricaine", "name:af"=>"Sentraal-Afrikaanse Republiek", "name:am"=>"የመካከለኛው አፍሪካ ሪፐብሊክ", "name:an"=>"Republica Centroafricana", "name:ar"=>"جمهورية أفريقيا الوسطى", "name:az"=>"Mərkəzi Afrika Respublikası", "name:be"=>"Цэнтральна-Афрыканская Рэспубліка", "name:bg"=>"Централноафриканска република", "name:bm"=>"Cema Afrika Fasojamana", "name:bn"=>"মধ্য আফ্রিকান প্রজাতন্ত্র", "name:bo"=>"དབུས་ཨ་ཧྥེ་རི་ཁན་རི་པཔ་ལིཀ།", "name:br"=>"Republik Kreizafrikan", "name:bs"=>"Centralnoafrička Republika", "name:ca"=>"República Centreafricana", "name:ce"=>"Юккъерчу Африкин Республика", "name:cs"=>"Středoafrická republika", "name:cy"=>"Gweriniaeth Canolbarth Affrica", "name:da"=>"Centralafrikanske Republik", "name:de"=>"Zentralafrikanische Republik", "name:dv"=>"މެދުތެރޭ އެފްރިކާގެ ޖުމްހޫރިއްޔާ", "name:ee"=>"Central African Republic", "name:el"=>"Κεντροαφρικανική Δημοκρατία", "name:en"=>"Central African Republic", "name:eo"=>"Centr-Afriko", "name:es"=>"República Centroafricana", "name:et"=>"Kesk-Aafrika Vabariik", "name:eu"=>"Afrika Erdiko Errepublika", "name:fa"=>"جمهوری آفریقای مرکزی", "name:fi"=>"Keski-Afrikan tasavalta", "name:fo"=>"Miðafrikalýðveldið", "name:fr"=>"République Centrafricaine", "name:fy"=>"Sintraal-Afrikaanske Republyk", "name:ga"=>"Poblacht na hAfraice Láir", "name:gd"=>"Poblachd Meadhan Afraga", "name:gl"=>"República Centroafricana", "name:gv"=>"Pobblaght yn Affrick Veanagh", "name:he"=>"הרפובליקה המרכז-אפריקאית", "name:hi"=>"मध्य अफ़्रीकी गणराज्य", "name:hr"=>"Srednjoafrička Republika", "name:ht"=>"Repiblik santafrik", "name:hu"=>"Közép-afrikai Köztársaság", "name:hy"=>"Կենտրոնաաֆրիկյան Հանրապետություն", "name:ia"=>"Republica Centroafrican", "name:id"=>"Republik Afrika Tengah", "name:ie"=>"Central African Republic", "name:io"=>"Centrafrika", "name:is"=>"Mið-Afríkulýðveldið", "name:it"=>"Repubblica Centrafricana", "name:ja"=>"中央アフリカ共和国", "name:jv"=>"Republik Afrika Tengah", "name:ka"=>"ცენტრალური აფრიკის რესპუბლიკა", "name:kg"=>"Repubilika ya Afelika ya Kati", "name:kk"=>"Орталық Африка Республикасы", "name:kn"=>"ಮಧ್ಯ ಆಫ್ರಿಕಾದ ಗಣರಾಜ್ಯ", "name:ko"=>"중앙아프리카 공화국", "name:ks"=>"مرکٔزی اَفریٖکی جموٗریَت", "name:ku"=>"Komara Afrîkaya Navend", "name:kw"=>"Centrafrika", "name:la"=>"Respublica Africae Mediae", "name:lb"=>"Zentralafrikanesch Republik", "name:li"=>"Centraal Afrika", "name:ln"=>"Santrafríka", "name:lt"=>"Centrinės Afrikos Respublika", "name:lv"=>"Centrālāfrikas Republika", "name:mi"=>"Te Puku o Āwherika", "name:mk"=>"Централноафриканска Република", "name:ml"=>"മദ്ധ്യ ആഫ്രിക്കൻ റിപ്പബ്ലിക്ക്", "name:mn"=>"Төв Африкийн Бүгд Найрамдах Улс", "name:mr"=>"मध्य आफ्रिकेचे प्रजासत्ताक", "name:ms"=>"Republik Afrika Tengah", "name:mt"=>"Repubblika Ċentru-Afrikana", "name:my"=>"ဗဟိုအာဖရိကသမ္မတနိုင်ငံ", "name:na"=>"Ripubrikin Aprika Yugaga", "name:ne"=>"मध्य अफ्रिकी गणतन्त्र", "name:nl"=>"Centraal-Afrikaanse Republiek", "name:nn"=>"Den sentralafrikanske republikken", "name:no"=>"Den sentralafrikanske republikk", "name:nv"=>"Naakaii Łizhinii Bikéyah Beʼałnííʼ", "name:oc"=>"Centreafrica", "name:or"=>"ସେଣ୍ଟରାଲ ଆଫ୍ରିକାନ ରିପବ୍ଲିକ", "name:os"=>"Централон Африкæйы Республикæ", "name:pa"=>"ਮੱਧ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜ", "name:pl"=>"Republika Środkowoafrykańska", "name:ps"=>"د منځنی افريقا ولسمشريزه", "name:pt"=>"República da África Central", "name:qu"=>"Chawpi Aphrika Republika", "name:ro"=>"Republica Centrafricană", "name:ru"=>"Центральноафриканская Республика", "name:rw"=>"Repubulika ya Santara Afurika", "name:sa"=>"केन्द्रीय अफ्रीका गणराज्यम्", "name:sc"=>"Tzentràfrica", "name:se"=>"Gaska-Afrihká dásseváldi", "name:sg"=>"Ködörösêse tî Bêafrîka", "name:sh"=>"Srednjoafrička Republika", "name:sk"=>"Stredoafrická republika", "name:sl"=>"Srednjeafriška republika", "name:sn"=>"Central African Republic", "name:so"=>"Jamhuuriyadda Bartamaha Afrika", "name:sq"=>"Republika e Afrikës Qendrore", "name:sr"=>"Централноафричка Република", "name:ss"=>"Umkhatsi we-Afrikha", "name:su"=>"Républik Afrika Tengah", "name:sv"=>"Centralafrikanska republiken", "name:sw"=>"Jamhuri ya Afrika ya Kati", "name:ta"=>"மத்திய ஆப்பிரிக்கக் குடியரசு", "name:te"=>"సెంట్రల్ ఆఫ్రికన్ రిపబ్లిక్", "name:tg"=>"Ҷумҳурии Африқои Марказӣ", "name:th"=>"สาธารณรัฐแอฟริกากลาง", "name:tk"=>"Merkezi Afrika Respublikasy", "name:tl"=>"Republika ng Gitnang Aprika", "name:tr"=>"Orta Afrika Cumhuriyeti", "name:ts"=>"Afrika Wale Xikarhi", "name:tt"=>"Үзәк Африка Җөмһүрияте", "name:ug"=>"ئوتتۇرا ئافرىقا جۇمھۇرىيىتى", "name:uk"=>"Центральноафриканська Республіка", "name:ur"=>"وسطی افریقی جمہوریہ", "name:uz"=>"Markaziy Afrika Respublikasi", "name:vi"=>"Cộng hòa Trung Phi", "name:vo"=>"Zänoda-Frikop", "name:wo"=>"Réewum Diggu Afrig", "name:yo"=>"Orílẹ̀-èdè Olómìnira Àrin Áfríkà", "name:zh"=>"中非共和國", "name:zu"=>"Central African Republic"
-ci "name"=>"Côte d’Ivoire", "name:af"=>"Ivoorkus", "name:am"=>"ኮት ዲቯር", "name:an"=>"Costa de Vori", "name:ar"=>"ساحل العاج", "name:az"=>"Fil Dişi Sahili", "name:be"=>"Кот-д'Івуар", "name:bg"=>"Кот д'Ивоар", "name:bm"=>"Côte d'Ivoire", "name:bn"=>"কোত দিভোয়ার", "name:bo"=>"ཀོ་ཊི་ཌི་ཨའི་བོ་རི།", "name:br"=>"Aod an Olifant", "name:bs"=>"Obala Slonovače", "name:ca"=>"Costa d'Ivori", "name:ce"=>"Кот-д’Ивуар", "name:cs"=>"Pobřeží slonoviny", "name:cv"=>"Кот-д'Ивуар", "name:cy"=>"Côte d'Ivoire", "name:da"=>"Elfenbenskysten", "name:de"=>"Elfenbeinküste", "name:dv"=>"އައިވަރީ ކޯސްޓު", "name:ee"=>"Côte d'Ivoire", "name:el"=>"Ακτή Ελεφαντοστού", "name:en"=>"Côte d'Ivoire", "name:eo"=>"Ebur-Bordo", "name:es"=>"Costa de Marfil", "name:et"=>"Elevandiluurannik", "name:eu"=>"Boli Kosta", "name:fa"=>"ساحل عاج", "name:ff"=>"Kodduwaar", "name:fi"=>"Norsunluurannikko", "name:fo"=>"Fílabeinsstrondin", "name:fr"=>"Côte d’Ivoire", "name:fy"=>"Ivoarkust", "name:ga"=>"An Cósta Eabhair", "name:gd"=>"Costa Ìbhri", "name:gl"=>"Costa do Marfil", "name:gv"=>"Yn Clyst Iuaagagh", "name:he"=>"חוף השנהב", "name:hi"=>"कोत द'ईवोआर", "name:hr"=>"Obala Bjelokosti", "name:ht"=>"Kòt divwa", "name:hu"=>"Elefántcsontpart", "name:hy"=>"Կոտ դ'Իվուար", "name:ia"=>"Costa de Ebore", "name:id"=>"Pantai Gading", "name:ie"=>"Costa de Ivor", "name:io"=>"Ivora Rivo", "name:is"=>"Fílabeinsströndin", "name:it"=>"Costa d'Avorio", "name:ja"=>"コートジボワール", "name:jv"=>"Panté Gadhing", "name:ka"=>"კოტ-დ’ივუარი", "name:kg"=>"Côte d'Ivoire", "name:ki"=>"Côte d'Ivoire", "name:kk"=>"Кот-д-Ивуар", "name:kn"=>"ಕೋತ್ ದ್'ಇವಾರ್", "name:ko"=>"코트디부아르", "name:ku"=>"Peravê Diranfîl", "name:kw"=>"Côte d'Ivoire", "name:la"=>"Litus Eburneum", "name:lb"=>"Elfebeeküst", "name:li"=>"Ivoorkös", "name:ln"=>"Kotdivuar", "name:lt"=>"Dramblio Kaulo Krantas", "name:lv"=>"Kotdivuāra", "name:mg"=>"Côte d'Ivoire", "name:mi"=>"Te Tai Rei", "name:mk"=>"Брег на Слоновата Коска", "name:ml"=>"ഐവറി കോസ്റ്റ്", "name:mn"=>"Кот д'Ивуар", "name:mr"=>"कोत द'ईवोआर", "name:ms"=>"Ivory Coast", "name:mt"=>"Kosta tal-Avorju", "name:my"=>"အိုင်ဗရီကို့စ်နိုင်ငံ", "name:na"=>"Aibori Kot", "name:ne"=>"आइभरी कोस्ट", "name:nl"=>"Ivoorkust", "name:nn"=>"Elfenbeinskysten", "name:no"=>"Elfenbenskysten", "name:nv"=>"Chį́į́h Yee Adilohii Bideeʼ Tónteel Bibąąh", "name:oc"=>"Còsta d'Evòri", "name:or"=>"ଆଇଭେରି କୋଷ୍ଟ", "name:os"=>"Кот-д’Ивуар", "name:pa"=>"ਦੰਦ ਖੰਡ ਤਟ", "name:pl"=>"Wybrzeże Kości Słoniowej", "name:ps"=>"عاج ساحل", "name:pt"=>"Costa do Marfim", "name:qu"=>"Marphil Chala", "name:rm"=>"Costa d'Ivur", "name:ro"=>"Coasta de Fildeș", "name:ru"=>"Кот-д’Ивуар", "name:rw"=>"Kote Divuwari", "name:sa"=>"कोट ऐवरी", "name:sc"=>"Costa de Avòriu", "name:se"=>"Elefántačalánriddu", "name:sg"=>"Kôdivüära", "name:sh"=>"Obala Slonovače", "name:si"=>"අයිවරි කෝස්ට්", "name:sk"=>"Pobrežie Slonoviny", "name:sl"=>"Slonokoščena obala", "name:sn"=>"Côte d'Ivoire", "name:so"=>"Xeebta Foolmaroodi", "name:sq"=>"Bregu i Fildishtë", "name:sr"=>"Обала Слоноваче", "name:ss"=>"Lugu Lwempondvondlovu", "name:su"=>"Basisir Gading", "name:sv"=>"Elfenbenskusten", "name:sw"=>"Cote d'Ivoire", "name:ta"=>"கோட் டிவார்", "name:te"=>"కోటె డి ఐవొరి", "name:tg"=>"Кот-д'Ивуар", "name:th"=>"ประเทศโกตดิวัวร์", "name:tk"=>"Kot-d’Iwuar", "name:tl"=>"Baybaying Garing", "name:tr"=>"Fildişi Sahili", "name:ts"=>"Côte d'Ivoire", "name:tt"=>"Кот-д’Ивуар", "name:ug"=>"پىل چىشى قىرغىغى", "name:uk"=>"Кот-д'Івуар", "name:ur"=>"کوت داوواغ", "name:uz"=>"Kot-d‘ivuar", "name:vi"=>"Bờ Biển Ngà", "name:vo"=>"Viorajolän", "name:wo"=>"Kodiwaar", "name:yi"=>"בארטן פון העלפאנדביין", "name:yo"=>"Côte d'Ivoire", "name:zh"=>"科特迪瓦", "name:zu"=>"Ugu Emhlophe"
-cd "name"=>"République démocratique du Congo", "name:af"=>"Demokratiese Republiek van die Kongo", "name:am"=>"ኮንጎ ዲሞክራሲያዊ ሪፐብሊክ", "name:an"=>"Republica Democratica d'o Congo", "name:ar"=>"جمهورية الكونغو الديمقراطية", "name:az"=>"Konqo Demokratik Respublikası", "name:be"=>"Дэмакратычная Рэспубліка Конга", "name:bg"=>"Демократична република Конго", "name:bm"=>"Kongo ka Bɛjɛfanga Fasojamana", "name:bn"=>"গণতান্ত্রিক কঙ্গো প্রজাতন্ত্র", "name:bo"=>"ཀོང་གོ་མི་དམངས་དམངས་གཙོ།", "name:br"=>"Republik Demokratel Kongo", "name:bs"=>"Demokratska Republika Kongo", "name:ca"=>"República Democràtica del Congo", "name:ce"=>"Халкъа куьйгаллийца йолу Пачхьалкх Конго", "name:cs"=>"Demokratická republika Kongo", "name:cv"=>"Конго Демократиллĕ Республики", "name:cy"=>"Gweriniaeth Ddemocrataidd Congo", "name:da"=>"Demokratiske Republik Congo", "name:de"=>"Demokratische Republik Kongo", "name:dv"=>"ކޮންގޯ (ދިމިޤްރާޠީ ޖުމްހޫރިއްޔާ)", "name:el"=>"Λαϊκή Δημοκρατία του Κονγκό", "name:en"=>"Democratic Republic of the Congo", "name:eo"=>"Demokratia Respubliko Kongo", "name:es"=>"República Democrática del Congo", "name:et"=>"Kongo Demokraatlik Vabariik", "name:eu"=>"Kongoko Errepublika Demokratikoa", "name:fa"=>"جمهوری دموکراتیک کنگو", "name:fi"=>"Kongon demokraattinen tasavalta", "name:fo"=>"Fólkaræðiliga Lýðveldið Kongo", "name:fr"=>"République démocratique du Congo", "name:fy"=>"Demokratyske Republyk Kongo", "name:ga"=>"Poblacht Dhaonlathach an Chongó", "name:gd"=>"Poblachd Dheamocrach na Congo", "name:gl"=>"República Democrática do Congo", "name:gn"=>"Tetã Jekopytyjoja Kongo", "name:gv"=>"Pobblaght Gheynlagh ny Congo", "name:ha"=>"Jamhuriyar dimokuradiyya Kwango", "name:he"=>"הרפובליקה הדמוקרטית של קונגו", "name:hi"=>"कांगो लोकतान्त्रिक गणराज्य", "name:hr"=>"Demokratska Republika Kongo", "name:hu"=>"Kongói Demokratikus Köztársaság", "name:hy"=>"Կոնգոյի Դեմոկրատական Հանրապետություն", "name:ia"=>"Republica Democratic del Congo", "name:id"=>"Republik Demokratik Kongo", "name:ie"=>"Democratic Republic de Congo", "name:io"=>"Demokratial Republiko Kongo", "name:is"=>"Lýðræðislega Lýðveldið Kongó", "name:it"=>"Repubblica Democratica del Congo", "name:ja"=>"コンゴ民主共和国", "name:jv"=>"Republik Dhémokratis Kongo", "name:ka"=>"კონგოს დემოკრატიული რესპუბლიკა", "name:kg"=>"Repubilika ya Kongo ya Dimokalasi", "name:kk"=>"Конго Демократиялық Республикасы", "name:kn"=>"ಕಾಂಗೋ ಪ್ರಜಾಸತ್ತಾತ್ಮಕ ಗಣರಾಜ್ಯ", "name:ko"=>"콩고 민주 공화국", "name:ku"=>"Kongoya Demokratîk", "name:kw"=>"Repoblek Werinel Kongo", "name:la"=>"Respublica Democratica Congensis", "name:lb"=>"Demokratesch Republik Kongo", "name:li"=>"Democratische Rippebliek vaan de Kongo", "name:ln"=>"Republiki ya Kongó Demokratiki", "name:lt"=>"Kongo Demokratinė Respublika", "name:lv"=>"Kongo Demokrātiskā Republika", "name:mg"=>"Repoblika Demokratikan'i Kongo", "name:mi"=>"Te Whenua o Kōngo", "name:mk"=>"Демократска Република Конго", "name:ml"=>"ഡെമോക്രാറ്റിക് റിപബ്ലിക്ക് ഓഫ് കോംഗോ", "name:mn"=>"Бүгд Найрамдах Ардчилсан Конго Улс", "name:mr"=>"काँगोचे लोकशाही प्रजासत्ताक", "name:ms"=>"Republik Demokratik Congo", "name:my"=>"ကွန်ဂိုဒီမိုကရက်တစ်သမ္မတနိုင်ငံ", "name:na"=>"Ripubrikit Engame Kongo", "name:ne"=>"प्रजातान्त्रिक गणतन्त्र कंगो", "name:nl"=>"Democratische Republiek Congo", "name:nn"=>"Den demokratiske republikken Kongo", "name:no"=>"Den demokratiske republikken Kongo", "name:nv"=>"Kéyah Káango Shádiʼááhjí Siʼánígíí", "name:oc"=>"Republica Democratica de Còngo", "name:or"=>"କଙ୍ଗୋ", "name:os"=>"Конгойы Демократон Республикæ", "name:pa"=>"ਕਾਂਗੋ ਲੋਕਤੰਤਰੀ ਗਣਰਾਜ", "name:pl"=>"Demokratyczna Republika Konga", "name:pt"=>"República Democrática do Congo", "name:qu"=>"Kungu Runakamaq Republika", "name:ro"=>"Republica Democrată Congo", "name:ru"=>"Демократическая Республика Конго", "name:rw"=>"Repubulika Iharanira Demokarasi ya Kongo", "name:sc"=>"Repùbrica Democràtiga de su Congo", "name:se"=>"Kongo demokráhtalaš dásseváldi", "name:sg"=>"Kùodùorùosêse tî Ngunuhalëzo tî Kongö", "name:sh"=>"Demokratska Republika Kongo", "name:si"=>"කොංගෝ ප්රජාතන්ත්රවාදී ජනරජය", "name:sk"=>"Kongo (býv. Zair)", "name:sl"=>"Demokratična republika Kongo", "name:sn"=>"Democratic Republic of the Congo", "name:so"=>"Jamhuuriyada Dimuqaraadiga Kongo", "name:sq"=>"Republika Demokratike e Kongos", "name:sr"=>"Демократска Република Конго", "name:ss"=>"IKhongo", "name:su"=>"Républik Démokratik Kongo", "name:sv"=>"Demokratiska Republiken Kongo", "name:sw"=>"Jamhuri ya Kidemokrasia ya Kongo", "name:ta"=>"காங்கோ மக்களாட்சிக் குடியரசு", "name:th"=>"สาธารณรัฐประชาธิปไตยคองโก", "name:tk"=>"Kongo Demokratik Respublikasy", "name:tl"=>"Demokratikong Republika ng Konggo", "name:tr"=>"Demokratik Kongo Cumhuriyeti", "name:ts"=>"Democratic Republic of the Congo", "name:tt"=>"Конго Демократик Җөмһүрияте", "name:ug"=>"كونگو دېموكراتىك جۇمھۇرىيىتى", "name:uk"=>"Демократична Республіка Конго", "name:ur"=>"جمہوری جمہوریہ کانگو", "name:uz"=>"Kongo DR", "name:vi"=>"Cộng hòa Dân chủ Congo", "name:vo"=>"Kongoän (Repüblikän Demokratik)", "name:wa"=>"Republike democratike do Congo", "name:wo"=>"Republik Demokaraatik bu Kongóo", "name:yi"=>"דעמאקראטישע רעפובליק פון קאנגא", "name:yo"=>"Orílẹ̀-èdè Olómìnira Olóṣèlú ilẹ̀ Kóngò", "name:za"=>"Ganggoj Minzcuj Gunghozgoz", "name:zh"=>"刚果民主共和国", "name:zu"=>"IRiphabliki Labantu weKongo"
-ga "name"=>"Gabon", "name:af"=>"Gaboen", "name:am"=>"ጋቦን", "name:an"=>"Gabón", "name:ar"=>"الغابون", "name:az"=>"Qabon", "name:ba"=>"Габон", "name:be"=>"Габон", "name:bg"=>"Габон", "name:bm"=>"Gabon", "name:bn"=>"গাবন", "name:bo"=>"གེ་བོན།", "name:br"=>"Gabon", "name:bs"=>"Gabon", "name:ca"=>"Gabon", "name:ce"=>"Габон", "name:cs"=>"Gabon", "name:cv"=>"Габон", "name:cy"=>"Gabon", "name:da"=>"Gabon", "name:de"=>"Gabun", "name:dv"=>"ގެބޯން", "name:dz"=>"གྷེ་བྷོན", "name:el"=>"Γκαμπόν", "name:en"=>"Gabon", "name:eo"=>"Gabono", "name:es"=>"Gabón", "name:et"=>"Gabon", "name:eu"=>"Gabon", "name:fa"=>"گابن", "name:ff"=>"Gabon", "name:fi"=>"Gabon", "name:fr"=>"Gabon", "name:fy"=>"Gabon", "name:ga"=>"An Ghabúin", "name:gd"=>"Gabon", "name:gl"=>"Gabón", "name:gv"=>"Gabon", "name:he"=>"גבון", "name:hi"=>"गबॉन", "name:hr"=>"Gabon", "name:ht"=>"Gabon", "name:hu"=>"Gabon", "name:hy"=>"Գաբոն", "name:ia"=>"Gabon", "name:id"=>"Gabon", "name:ie"=>"Gabon", "name:io"=>"Gabon", "name:is"=>"Gabon", "name:it"=>"Gabon", "name:ja"=>"ガボン", "name:jv"=>"Gabon", "name:ka"=>"გაბონი", "name:kg"=>"Ngabu", "name:ki"=>"Gabon", "name:kk"=>"Габон", "name:kn"=>"ಗಬೊನ್", "name:ko"=>"가봉", "name:ks"=>"گیبان", "name:ku"=>"Gabon", "name:kw"=>"Gabon", "name:la"=>"Gabonia", "name:lb"=>"Gabun", "name:li"=>"Gabon", "name:ln"=>"Gabɔ́", "name:lt"=>"Gabonas", "name:lv"=>"Gabona", "name:mi"=>"Kāpona", "name:mk"=>"Габон", "name:ml"=>"ഗാബോൺ", "name:mn"=>"Габон", "name:mr"=>"गॅबन", "name:ms"=>"Gabon", "name:mt"=>"Gabon", "name:my"=>"ဂါဘွန်နိုင်ငံ", "name:na"=>"Gabun", "name:ne"=>"गाबोन", "name:nl"=>"Gabon", "name:nn"=>"Gabon", "name:no"=>"Gabon", "name:nv"=>"Gabǫ́ǫ́", "name:oc"=>"Gabon", "name:or"=>"ଗାବୋନ", "name:os"=>"Габон", "name:pa"=>"ਗਬਾਨ", "name:pl"=>"Gabon", "name:ps"=>"ګابن", "name:pt"=>"Gabão", "name:qu"=>"Gabun", "name:rm"=>"Gabun", "name:ro"=>"Gabon", "name:ru"=>"Габон", "name:rw"=>"Gabon", "name:sa"=>"गाबोन", "name:sc"=>"Gabòn", "name:se"=>"Gabon", "name:sg"=>"Gaböon", "name:sh"=>"Gabon", "name:si"=>"ගැබොන්", "name:sk"=>"Gabon", "name:sl"=>"Gabon", "name:sn"=>"Gabon", "name:so"=>"Gabon", "name:sq"=>"Gaboni", "name:sr"=>"Габон", "name:ss"=>"IGabhoni", "name:st"=>"Gabon", "name:su"=>"Gabon", "name:sv"=>"Gabon", "name:sw"=>"Gabon", "name:ta"=>"காபோன்", "name:te"=>"గబాన్", "name:tg"=>"Габон", "name:th"=>"ประเทศกาบอง", "name:tk"=>"Gabon", "name:tl"=>"Gabon", "name:tr"=>"Gabon", "name:ts"=>"Gaboni", "name:tt"=>"Габон", "name:ug"=>"گابون", "name:uk"=>"Габон", "name:ur"=>"گیبون", "name:uz"=>"Gabon", "name:vi"=>"Gabon", "name:vo"=>"Gabunän", "name:wo"=>"Gaboŋ", "name:yi"=>"גאבאן", "name:yo"=>"Gàbọ̀n", "name:zh"=>"加蓬", "name:zu"=>"IGaboni"
-tg "name"=>"Togo", "name:af"=>"Togo", "name:ak"=>"Togo", "name:am"=>"ቶጎ", "name:an"=>"Togo", "name:ar"=>"توغو", "name:az"=>"Toqo", "name:ba"=>"Того", "name:be"=>"Тога", "name:bg"=>"Того", "name:bm"=>"Togo", "name:bn"=>"টোগো", "name:bo"=>"ཊོ་གོ", "name:br"=>"Togo", "name:bs"=>"Togo", "name:ca"=>"Togo", "name:ce"=>"Того", "name:cs"=>"Togo", "name:cv"=>"Того", "name:cy"=>"Togo", "name:da"=>"Togo", "name:de"=>"Togo", "name:dv"=>"ޓޯގޯ", "name:ee"=>"Togo", "name:el"=>"Τόγκο", "name:en"=>"Togo", "name:eo"=>"Togolando", "name:es"=>"Togo", "name:et"=>"Togo", "name:eu"=>"Togo", "name:fa"=>"توگو", "name:fi"=>"Togo", "name:fr"=>"Togo", "name:fy"=>"Togo", "name:ga"=>"Tóga", "name:gd"=>"Tògo", "name:gl"=>"Togo", "name:gu"=>"ટોગો", "name:gv"=>"Yn Togo", "name:ha"=>"Togo", "name:he"=>"טוגו", "name:hi"=>"टोगो", "name:hr"=>"Togo", "name:ht"=>"Togo", "name:hu"=>"Togo", "name:hy"=>"Տոգո", "name:id"=>"Togo", "name:ie"=>"Togo", "name:ig"=>"Togo", "name:io"=>"Togo", "name:is"=>"Tógó", "name:it"=>"Togo", "name:ja"=>"トーゴ", "name:jv"=>"Togo", "name:ka"=>"ტოგო", "name:kk"=>"Того", "name:kn"=>"ಟೊಗೊ", "name:ko"=>"토고", "name:ku"=>"Togo", "name:kw"=>"Togo", "name:la"=>"Togum", "name:lb"=>"Togo", "name:li"=>"Togo", "name:ln"=>"Togo", "name:lt"=>"Togas", "name:lv"=>"Togo", "name:mi"=>"Toko", "name:mk"=>"Того", "name:ml"=>"ടോഗോ", "name:mn"=>"Того", "name:mr"=>"टोगो", "name:ms"=>"Togo", "name:mt"=>"Togo", "name:my"=>"တိုဂိုနိုင်ငံ", "name:na"=>"Togo", "name:nl"=>"Togo", "name:nn"=>"Togo", "name:no"=>"Togo", "name:nv"=>"Tʼóogo", "name:oc"=>"Tògo", "name:or"=>"ଟୋଗୋ", "name:os"=>"Того", "name:pa"=>"ਟੋਗੋ", "name:pl"=>"Togo", "name:pt"=>"Togo", "name:qu"=>"Tugu", "name:rm"=>"Togo", "name:ro"=>"Togo", "name:ru"=>"Того", "name:rw"=>"Togo", "name:sa"=>"टोगो", "name:sc"=>"Togo", "name:se"=>"Togo", "name:sg"=>"Togö", "name:sh"=>"Togo", "name:si"=>"ටෝගෝ", "name:sk"=>"Togo", "name:sl"=>"Togo", "name:sn"=>"Togo", "name:so"=>"Togo", "name:sq"=>"Togo", "name:sr"=>"Того", "name:ss"=>"IThogo", "name:st"=>"Togo", "name:su"=>"Togo", "name:sv"=>"Togo", "name:sw"=>"Togo", "name:ta"=>"டோகோ", "name:tg"=>"Того", "name:th"=>"ประเทศโตโก", "name:ti"=>"ቶጎ", "name:tk"=>"Togo", "name:tl"=>"Togo", "name:tr"=>"Togo", "name:ts"=>"Togo", "name:tw"=>"Togo", "name:ug"=>"توگو", "name:uk"=>"Того", "name:ur"=>"ٹوگو", "name:uz"=>"Togo", "name:vi"=>"Togo", "name:vo"=>"Togoän", "name:wo"=>"Togóo", "name:yi"=>"טאגא", "name:yo"=>"Tógò", "name:zh"=>"多哥", "name:zu"=>"ITogo"
-gf "name"=>"Guyane Française", "name:af"=>"Frans-Guyana", "name:ar"=>"غيانا", "name:br"=>"Gwiana c’hall", "name:ca"=>"Guaiana Francesa", "name:cy"=>"Guyane", "name:da"=>"Fransk Guyana", "name:de"=>"Französisch-Guayana", "name:el"=>"Γαλλική Γουιάνα", "name:en"=>"French Guiana", "name:eo"=>"Gujano", "name:es"=>"Guayana Francesa", "name:et"=>"Prantsuse Guajaana", "name:fa"=>"گویان فرانسه", "name:fi"=>"Ranskan Guayana", "name:fr"=>"Guyane française", "name:fy"=>"Frânsk Guyana", "name:ga"=>"Guáin na Fraince", "name:gd"=>"Guiana Fhrangach", "name:he"=>"גיאנה הצרפתית", "name:hr"=>"Francuska Gvajana", "name:hu"=>"Francia Guyana", "name:id"=>"Guyana Perancis", "name:is"=>"Franska Gvæjana", "name:it"=>"Guyana francese", "name:la"=>"Guiana Francica", "name:li"=>"Frans Guyana", "name:lt"=>"Prancūzijos Gviana", "name:lv"=>"Franču Gviāna", "name:mn"=>"Франц Гвиана", "name:nl"=>"Frans-Guyana", "name:pl"=>"Gujana Francuska", "name:ru"=>"Французская Гвиана", "name:sl"=>"Francoska Gvajana", "name:sv"=>"Franska Guyana", "name:th"=>"เฟรนช์เกียนา", "name:tr"=>"Fransız Guyanası", "name:uk"=>"Французька Гвіана", "name:vi"=>"Guyane thuộc Pháp", "name:zh"=>"法属圭亚那"
-gp "name"=>"Guadeloupe", "name:ar"=>"غوادلوب", "name:be"=>"Гвадэлупа", "name:br"=>"Gwadeloup", "name:ca"=>"Illa de Guadalupe", "name:da"=>"Guadeloupe", "name:el"=>"Γουαδελούπη", "name:en"=>"Guadeloupe", "name:eo"=>"Gvadelupo", "name:es"=>"Guadalupe", "name:fa"=>"گوادلوپ", "name:fi"=>"Guadeloupe", "name:fr"=>"Guadeloupe", "name:fy"=>"Guadelûp", "name:ga"=>"Guadalúip", "name:he"=>"גוואדלופ", "name:hr"=>"Gvadalupa", "name:hu"=>"Guadeloupe", "name:is"=>"Gvadelúpeyjar", "name:it"=>"Guadalupa", "name:la"=>"Guadalupa", "name:lt"=>"Gvadelupa", "name:lv"=>"Gvadelupa", "name:mn"=>"Гуаделупе", "name:pl"=>"Gwadelupa", "name:ru"=>"Гваделупа", "name:sv"=>"Guadeloupe", "name:th"=>"กวาเดอลูป", "name:uk"=>"Гваделупа", "name:zh"=>"瓜德罗普"
-cg "name"=>"Congo", "name:af"=>"Republiek van die Kongo", "name:am"=>"ኮንጎ ሪፐብሊክ", "name:an"=>"Republica d'o Congo", "name:ar"=>"جمهورية الكونغو", "name:az"=>"Konqo Respublikası", "name:ba"=>"Республика Конго", "name:be"=>"Рэспубліка Конга", "name:bg"=>"Република Конго", "name:bm"=>"Kongo-Brazaville", "name:bn"=>"কঙ্গো প্রজাতন্ত্র", "name:bo"=>"ཀོང་གོ་སྤྱི་མཐུན་རྒྱལ་ཁབ།", "name:br"=>"Republik Kongo", "name:bs"=>"Republika Kongo", "name:ca"=>"República del Congo", "name:ce"=>"Республика Конго", "name:cs"=>"Republika Kongo", "name:cv"=>"Конго Республики", "name:cy"=>"Gweriniaeth y Congo", "name:da"=>"Republikken Congo", "name:de"=>"Republik Kongo", "name:dv"=>"ކޮންގޯ (ޖުމްހޫރިއްޔާ)", "name:el"=>"Δημοκρατία του Κονγκό", "name:en"=>"Congo-Brazzaville", "name:eo"=>"Respubliko Kongo", "name:es"=>"República del Congo", "name:et"=>"Kongo Vabariik", "name:eu"=>"Kongoko Errepublika", "name:fa"=>"جمهوری کنگو", "name:fi"=>"Kongon tasavalta", "name:fr"=>"Congo-Brazzaville", "name:fy"=>"Republyk Kongo", "name:ga"=>"Poblacht an Chongó", "name:gd"=>"A' Chongo", "name:gl"=>"Congo", "name:gv"=>"Pobblaght ny Congo", "name:he"=>"הרפובליקה של קונגו", "name:hi"=>"कांगो गणराज्य", "name:hr"=>"Republika Kongo", "name:ht"=>"Kongo (Brazavil)", "name:hu"=>"Kongói Köztársaság", "name:hy"=>"Կոնգոյի Հանրապետություն", "name:ia"=>"Republica del Congo", "name:id"=>"Republik Kongo", "name:ie"=>"Republic de Congo", "name:io"=>"Republiko Kongo", "name:is"=>"Vestur-Kongó", "name:it"=>"Repubblica del Congo", "name:ja"=>"コンゴ共和国", "name:jv"=>"Republik Kongo", "name:ka"=>"კონგოს რესპუბლიკა", "name:kg"=>"Repubilika ya Kôngo", "name:kk"=>"Конго Республикасы", "name:ko"=>"콩고 공화국", "name:ku"=>"Komara Kongoyê", "name:kw"=>"Repoblek Kongo", "name:la"=>"Respublica Congensis", "name:lb"=>"Republik Kongo", "name:li"=>"Kongo-Brazzaville", "name:ln"=>"Kongó-Brazzaville", "name:lt"=>"Kongo Respublika", "name:lv"=>"Kongo Republika", "name:mk"=>"Република Конго", "name:ml"=>"റിപ്പബ്ലിക്ക് ഓഫ് കോംഗോ", "name:mn"=>"Бүгд Найрамдах Конго Улс", "name:mr"=>"काँगोचे प्रजासत्ताक", "name:ms"=>"Republik Congo", "name:my"=>"ကွန်ဂိုသမ္မတနိုင်ငံ", "name:na"=>"Ripubrikin Kongo", "name:ne"=>"कङ्गो", "name:nl"=>"Congo-Brazzaville", "name:nn"=>"Kongo-Brazzaville", "name:no"=>"Republikken Kongo", "name:nv"=>"Kéyah Káango Náhookǫsjí Siʼánígíí", "name:oc"=>"Republica de Còngo", "name:os"=>"Конгойы Республикæ", "name:pa"=>"ਕਾਂਗੋ ਗਣਰਾਜ", "name:pl"=>"Kongo", "name:ps"=>"د کانګو جمهوريت", "name:pt"=>"República do Congo", "name:qu"=>"Kungu Republika", "name:ro"=>"Republica Congo", "name:ru"=>"Республика Конго", "name:rw"=>"Kongo", "name:sc"=>"Repùbrica de su Congo", "name:se"=>"Kongo dásseváldi", "name:sg"=>"Ködörösêse tî Kongöo", "name:sh"=>"Republika Kongo", "name:si"=>"කොංගෝ ජනරජය", "name:sk"=>"Kongo (Brazzaville)", "name:sl"=>"Republika Kongo", "name:sn"=>"Republic of the Congo", "name:so"=>"Jamhuuriyadda Kongo", "name:sq"=>"Republika e Kongos", "name:sr"=>"Република Конго", "name:ss"=>"Tibuse weKhongo", "name:su"=>"Républik Kongo", "name:sv"=>"Republiken Kongo", "name:sw"=>"Jamhuri ya Kongo", "name:ta"=>"கொங்கோ குடியரசு", "name:te"=>"కాంగో రిపబ్లిక్", "name:tg"=>"Ҷумҳӯрии Конго", "name:th"=>"สาธารณรัฐคองโก", "name:tk"=>"Kongo Respublikasy", "name:tl"=>"Republika ng Konggo", "name:tr"=>"Kongo Cumhuriyeti", "name:ts"=>"Riphabliki ya Congo", "name:tt"=>"Конго Җөмһүрияте", "name:ug"=>"كونگو جۇمھۇرىيىتى", "name:uk"=>"Республіка Конго", "name:ur"=>"جمہوریہ کانگو", "name:uz"=>"Kongo Respublikasi", "name:vi"=>"Cộng hòa Congo", "name:vo"=>"Kongoän (Repüblikän)", "name:wo"=>"Kongóo-Brasaawiil", "name:yi"=>"רעפובליק פון קאנגא", "name:yo"=>"Orílẹ̀-èdè Olómìnira ilẹ̀ Kóngò", "name:zh"=>"刚果共和国", "name:zu"=>"IKongo"
-wf "name"=>"Wallis-et-Futuna", "name:af"=>"Wallis-en-Futuna", "name:an"=>"Wallis e Futuna", "name:ar"=>"جزر واليس وفوتونا", "name:be"=>"Уоліс і Футуна", "name:bg"=>"Уолис и Футуна", "name:br"=>"Wallis ha Futuna", "name:ca"=>"Wallis i Futuna", "name:cs"=>"Wallis a Futuna", "name:cy"=>"Wallis a Futuna", "name:da"=>"Wallis og Futuna", "name:de"=>"Wallis und Futuna", "name:dv"=>"ވާލީ އަދި ފުތޫނާ", "name:el"=>"Ουώλλις και Φουτούνα", "name:en"=>"Wallis and Futuna Islands", "name:eo"=>"Valiso kaj Futuno", "name:es"=>"Wallis y Futuna", "name:et"=>"Wallis ja Futuna", "name:eu"=>"Wallis eta Futuna", "name:fa"=>"والیس و فوتونا", "name:fi"=>"Wallis- ja Futunasaaret", "name:fr"=>"Wallis-et-Futuna", "name:fy"=>"Wallis en Fûtûna", "name:ga"=>"Vailís agus Futúna", "name:gl"=>"Wallis e Futuna", "name:he"=>"ואליס ופוטונה", "name:hr"=>"Wallis i Futuna", "name:hu"=>"Wallis és Futuna", "name:id"=>"Wallis dan Futuna", "name:io"=>"Wallis e Futuna Insuli", "name:is"=>"Wallis- og Fútúnaeyjar", "name:it"=>"Wallis e Futuna", "name:ja"=>"ウォリス・フツナ", "name:jv"=>"Wallis lan Futuna", "name:ko"=>"왈리스 퓌튀나", "name:kw"=>"Wallis ha Futuna", "name:la"=>"Vallis et Futuna", "name:lb"=>"Wallis a Futuna", "name:lt"=>"Walliso ir Futuna salos", "name:lv"=>"Volisa un Futuna", "name:mn"=>"Уоллис ба Футуна", "name:mr"=>"वालिस व फुतुना", "name:ms"=>"Wallis dan Futuna", "name:nl"=>"Wallis en Futuna", "name:nn"=>"Wallis- og Futunaøyane", "name:no"=>"Wallis- og Futunaøyene", "name:oc"=>"Wallis e Futuna", "name:pl"=>"Wallis i Futuna", "name:pt"=>"Wallis e Futuna", "name:ro"=>"Wallis şi Futuna", "name:ru"=>"Уоллис и Футуна", "name:se"=>"Wallis ja Futuna", "name:sh"=>"Wallis i Futuna", "name:sk"=>"Wallis a Futuna", "name:sl"=>"Wallis in Futuna", "name:sm"=>"Wallis and Futuna", "name:sr"=>"Валис и Футуна", "name:sv"=>"Wallis- och Futunaöarna", "name:sw"=>"Wallis na Futuna", "name:ta"=>"வலிசும் புட்டூனாவும்", "name:th"=>"หมู่เกาะวาลลิสและหมู่เกาะฟุตูนา", "name:tr"=>"Wallis ve Futuna Adaları", "name:ug"=>"Wallis we Futuna Taqim Aralliri", "name:uk"=>"Волліс і Футуна", "name:vi"=>"Wallis và Futuna", "name:wo"=>"Wallis ak Futuna", "name:zh"=>"瓦利斯和富图纳群岛"
-sn "name"=>"Sénégal", "name:af"=>"Senegal", "name:am"=>"ሴኔጋል", "name:an"=>"Senegal", "name:ar"=>"السنغال", "name:az"=>"Seneqal", "name:ba"=>"Сенегал", "name:be"=>"Сенегал", "name:bg"=>"Сенегал", "name:bm"=>"Senegal", "name:bn"=>"সেনেগাল", "name:bo"=>"སི་ནི་གཱལ།", "name:br"=>"Senegal", "name:bs"=>"Senegal", "name:ca"=>"Senegal", "name:ce"=>"Сенегал", "name:cs"=>"Senegal", "name:cv"=>"Сенегал", "name:cy"=>"Sénégal", "name:da"=>"Senegal", "name:de"=>"Senegal", "name:dv"=>"ސެނެގާލް", "name:ee"=>"Senegal", "name:el"=>"Σενεγάλη", "name:en"=>"Senegal", "name:eo"=>"Senegalo", "name:es"=>"Senegal", "name:et"=>"Senegal", "name:eu"=>"Senegal", "name:fa"=>"سنگال", "name:ff"=>"Senegaal", "name:fi"=>"Senegal", "name:fo"=>"Senegal", "name:fr"=>"Sénégal", "name:fy"=>"Senegal", "name:ga"=>"An tSeineagáil", "name:gd"=>"Seanagal", "name:gl"=>"Senegal", "name:gv"=>"Yn Tenegaal", "name:ha"=>"Senegal", "name:he"=>"סנגל", "name:hi"=>"सेनेगल", "name:hr"=>"Senegal", "name:ht"=>"Senegal", "name:hu"=>"Szenegál", "name:hy"=>"Սենեգալ", "name:ia"=>"Senegal", "name:id"=>"Senegal", "name:ie"=>"Senegal", "name:io"=>"Senegal", "name:is"=>"Senegal", "name:it"=>"Senegal", "name:ja"=>"セネガル", "name:jv"=>"Senegal", "name:ka"=>"სენეგალი", "name:kg"=>"Senangale", "name:kk"=>"Сенегал", "name:kn"=>"ಸೆನೆಗಲ್", "name:ko"=>"세네갈", "name:ku"=>"Senegal", "name:kw"=>"Senegal", "name:ky"=>"Сенегал", "name:la"=>"Senegalia", "name:lb"=>"Senegal", "name:li"=>"Senegal", "name:ln"=>"Senegale", "name:lt"=>"Senegalas", "name:lv"=>"Senegāla", "name:mi"=>"Henekara", "name:mk"=>"Сенегал", "name:ml"=>"സെനെഗൽ", "name:mn"=>"Сенегал", "name:mr"=>"सेनेगाल", "name:ms"=>"Senegal", "name:mt"=>"Senegal", "name:my"=>"ဆီနီဂေါနိုင်ငံ", "name:na"=>"Senegal", "name:nl"=>"Senegal", "name:nn"=>"Senegal", "name:no"=>"Senegal", "name:oc"=>"Senegal", "name:or"=>"ସେନେଗାଲ", "name:os"=>"Сенегал", "name:pa"=>"ਸੇਨੇਗਲ", "name:pl"=>"Senegal", "name:ps"=>"سېنېګال", "name:pt"=>"Senegal", "name:qu"=>"Sinigal", "name:ro"=>"Senegal", "name:ru"=>"Сенегал", "name:rw"=>"Senegali", "name:sa"=>"सेनेगल", "name:sc"=>"Senegàl", "name:sd"=>"سينيگال", "name:se"=>"Senegal", "name:sg"=>"Senegäle", "name:sh"=>"Senegal", "name:sk"=>"Senegal", "name:sl"=>"Senegal", "name:sn"=>"Senegal", "name:so"=>"Sinigaal", "name:sq"=>"Senegali", "name:sr"=>"Сенегал", "name:st"=>"Senegal", "name:su"=>"Sénégal", "name:sv"=>"Senegal", "name:sw"=>"Senegal", "name:ta"=>"செனிகல்", "name:te"=>"సెనెగల్", "name:tg"=>"Сенегал", "name:th"=>"ประเทศเซเนกัล", "name:ti"=>"ሴኔጋል", "name:tk"=>"Senegal", "name:tl"=>"Senegal", "name:tr"=>"Senegal", "name:ts"=>"Senegal", "name:tt"=>"Сенегал", "name:ug"=>"سېنېگال", "name:uk"=>"Сенегал", "name:ur"=>"سینیگال", "name:uz"=>"Senegal", "name:vi"=>"Sénégal", "name:vo"=>"Senegalän", "name:wa"=>"Senegal", "name:wo"=>"Senegaal", "name:yi"=>"סענעגאל", "name:yo"=>"Sẹ̀nẹ̀gàl", "name:zh"=>"塞内加尔", "name:zu"=>"ISenegal"
-gn "name"=>"Guinée", "name:af"=>"Guinee", "name:am"=>"ጊኔ", "name:an"=>"Guinea", "name:ar"=>"غينيا", "name:az"=>"Qvineya", "name:ba"=>"Гвинея", "name:be"=>"Гвінея", "name:bg"=>"Гвинея", "name:bm"=>"Gine", "name:bn"=>"গিনি", "name:bo"=>"གི་ནེ།", "name:br"=>"Ginea", "name:bs"=>"Gvineja", "name:ca"=>"República de Guinea", "name:ce"=>"Гвине", "name:cs"=>"Guinea", "name:cv"=>"Гвиней", "name:cy"=>"Guinée", "name:da"=>"Guinea", "name:de"=>"Guinea", "name:dv"=>"ގީނިއާ", "name:ee"=>"Guinea", "name:el"=>"Γουινέα", "name:en"=>"Guinea", "name:eo"=>"Gvineo", "name:es"=>"Guinea", "name:et"=>"Guinea", "name:eu"=>"Ginea", "name:fa"=>"گینه", "name:ff"=>"Gine", "name:fi"=>"Guinea", "name:fo"=>"Guinea", "name:fr"=>"Guinée", "name:fy"=>"Guinee", "name:ga"=>"An Ghuine", "name:gd"=>"Gini", "name:gl"=>"Guinea", "name:gv"=>"Yn Ghuinea", "name:ha"=>"Gine", "name:he"=>"גינאה", "name:hi"=>"गिनी", "name:hr"=>"Gvineja", "name:ht"=>"Gine", "name:hu"=>"Guinea", "name:hy"=>"Գվինեա", "name:ia"=>"Guinea", "name:id"=>"Guinea", "name:ie"=>"Guinea", "name:io"=>"Guinea", "name:is"=>"Gínea", "name:it"=>"Guinea", "name:ja"=>"ギニア", "name:jv"=>"Guinea", "name:ka"=>"გვინეა", "name:kg"=>"Ginea", "name:kk"=>"Гвинея", "name:ko"=>"기니", "name:ku"=>"Gîne", "name:kw"=>"Gyni", "name:ky"=>"Гвинея", "name:la"=>"Guinea", "name:lb"=>"Guinea", "name:li"=>"Guinee", "name:ln"=>"Gine-Konakry", "name:lt"=>"Gvinėja", "name:lv"=>"Gvineja", "name:mi"=>"Kini", "name:mk"=>"Гвинеја", "name:ml"=>"ഗിനി", "name:mn"=>"Гвиней", "name:mr"=>"गिनी", "name:ms"=>"Guinea", "name:my"=>"ဂီနီနိုင်ငံ", "name:na"=>"Gini", "name:ne"=>"गिनी", "name:nl"=>"Guinee", "name:nn"=>"Guinea", "name:no"=>"Guinea", "name:nv"=>"Gíní", "name:oc"=>"Guinèa", "name:or"=>"ଗିନି", "name:os"=>"Гвиней", "name:pa"=>"ਗਿਨੀ", "name:pl"=>"Gwinea", "name:pt"=>"Guiné", "name:qu"=>"Khiniya", "name:ro"=>"Guineea", "name:ru"=>"Гвинея", "name:rw"=>"Gineya", "name:sa"=>"गिनी", "name:sc"=>"Guinea", "name:se"=>"Guinea", "name:sg"=>"Ginëe", "name:sh"=>"Gvineja", "name:sk"=>"Guinea", "name:sl"=>"Gvineja", "name:sm"=>"Guinea", "name:sn"=>"Guinea", "name:so"=>"Guinea", "name:sq"=>"Guinea", "name:sr"=>"Гвинеја", "name:ss"=>"IGiniya", "name:st"=>"Guinea", "name:su"=>"Guinéa", "name:sv"=>"Guinea", "name:sw"=>"Guinea", "name:ta"=>"கினி", "name:tg"=>"Гвинея", "name:th"=>"ประเทศกินี", "name:tk"=>"Gwineýa", "name:tl"=>"Ginea", "name:tr"=>"Gine", "name:ts"=>"Gineya", "name:tt"=>"Гвинея", "name:ug"=>"ۋىنېيە", "name:uk"=>"Ґвінея", "name:ur"=>"جمہوریہ گنی", "name:uz"=>"Gvineya", "name:vi"=>"Guinée", "name:vo"=>"Gineyän", "name:wo"=>"Gine", "name:yi"=>"גינע", "name:yo"=>"Guinea", "name:zh"=>"几内亚", "name:zu"=>"IGini"
-cw "name"=>"Curaçao", "name:en"=>"Curaçao", "name:es"=>"Curazao", "name:fr"=>"Curaçao", "name:ru"=>"Кюрасао", "name:sv"=>"Curaçao"
-sx "name"=>"Sint Maarten"
-am "name"=>"Հայաստան", "name:ab"=>"Ермантәыла", "name:af"=>"Armenië", "name:ak"=>"Armenia", "name:am"=>"አርመኒያ", "name:an"=>"Armenia", "name:ar"=>"أرمينيا", "name:as"=>"আৰ্মেনিয়া", "name:av"=>"ЦIамухъ", "name:az"=>"Ermənistan", "name:ba"=>"Әрмәнстан", "name:be"=>"Арме́нія", "name:bg"=>"Армения", "name:bh"=>"आर्मीनिया", "name:bi"=>"Armenia", "name:bm"=>"Arimeni", "name:bn"=>"আর্মেনিয়া", "name:bo"=>"ཨར་མེ་ནི་ཡ།", "name:br"=>"Armenia", "name:bs"=>"Ermenija", "name:ca"=>"Armènia", "name:ce"=>"Эрмалойчоь", "name:ch"=>"Armenia", "name:co"=>"Armenia", "name:cs"=>"Arménie", "name:cu"=>"Армєні́ꙗ", "name:cv"=>"Эрмени", "name:cy"=>"Armenia", "name:da"=>"Armenien", "name:de"=>"Armenien", "name:dv"=>"އަރުމީނިއާ", "name:dz"=>"ཨར་མི་ནི་ཡ", "name:ee"=>"Armenia", "name:el"=>"Αρμενία", "name:en"=>"Armenia", "name:eo"=>"Armenio", "name:es"=>"Armenia", "name:et"=>"Armeenia", "name:eu"=>"Armenia", "name:fa"=>"ارمنستان", "name:ff"=>"Armaaniya", "name:fi"=>"Armenia", "name:fo"=>"Armenia", "name:fr"=>"Arménie", "name:fy"=>"Armeenje", "name:ga"=>"An Airméin", "name:gd"=>"Airmeinia", "name:gl"=>"Armenia", "name:gn"=>"Aymenia", "name:gu"=>"આર્મેનિયા", "name:gv"=>"Armeain", "name:ha"=>"Armeniya", "name:he"=>"אַרְמֶנְיָה", "name:hi"=>"आर्मीनिया", "name:hr"=>"Armenija", "name:ht"=>"Ameni", "name:hu"=>"Örményország", "name:hy"=>"Հայաստան", "name:ia"=>"Armenia", "name:id"=>"Armenia", "name:ie"=>"Armenia", "name:io"=>"Armenia", "name:is"=>"Armenía", "name:it"=>"Armenia", "name:ja"=>"アルメニア", "name:jv"=>"Armènia", "name:ka"=>"სომხეთი", "name:kg"=>"Armenia", "name:ki"=>"Armenia", "name:kk"=>"Армения", "name:kl"=>"Armenia", "name:km"=>"អាមេនី", "name:kn"=>"ಆರ್ಮೇನಿಯ", "name:ko"=>"아르메니아", "name:ks"=>"اَرمانِیا", "name:ku"=>"Ermenistan", "name:kv"=>"Армения", "name:kw"=>"Armeni", "name:ky"=>"Армения", "name:la"=>"Armenia", "name:lb"=>"Armenien", "name:lg"=>"Arameniya", "name:li"=>"Armenië", "name:ln"=>"Armeni", "name:lo"=>"ປະເທດອາກເມນີ", "name:lt"=>"Armėnija", "name:lv"=>"Armēnija", "name:mg"=>"Armenia", "name:mi"=>"Āmenia", "name:mk"=>"Ерменија", "name:ml"=>"അർമേനിയ", "name:mn"=>"Армен", "name:mo"=>"Армения", "name:mr"=>"आर्मेनिया", "name:ms"=>"Armenia", "name:mt"=>"Armenja", "name:my"=>"အာမေးနီးယားနိုင်ငံ", "name:na"=>"Arminiya", "name:ne"=>"आर्मेनिया", "name:nl"=>"Armenië", "name:nn"=>"Armenia", "name:no"=>"Armenia", "name:nv"=>"Aooméénii Bikéyah", "name:oc"=>"Armenia", "name:om"=>"Armeeniyaa", "name:or"=>"ଆର୍ମେନିଆ", "name:os"=>"Сомихыстон", "name:pa"=>"ਅਰਮੀਨੀਆ", "name:pi"=>"आर्मीनिया", "name:pl"=>"Armenia", "name:ps"=>"ارمنستان", "name:pt"=>"Arménia", "name:qu"=>"Arminya", "name:rm"=>"Armenia", "name:rn"=>"Arumeniya", "name:ro"=>"Armenia", "name:ru"=>"Армения", "name:rw"=>"Arumeniya", "name:sa"=>"आर्मीनिया", "name:sc"=>"Armènia", "name:sd"=>"آرمينيا", "name:se"=>"Armenia", "name:sg"=>"Armenïi", "name:sh"=>"Jermenija", "name:si"=>"ආර්මේනියාව", "name:sk"=>"Arménsko", "name:sl"=>"Armenija", "name:sm"=>"Amenia", "name:sn"=>"Armenia", "name:so"=>"Armania", "name:sq"=>"Armenia", "name:sr"=>"Јерменија", "name:ss"=>"iArimeniya", "name:su"=>"Arménia", "name:sv"=>"Armenien", "name:sw"=>"Armenia", "name:ta"=>"ஆர்மீனியா", "name:te"=>"ఆర్మేనియా", "name:tg"=>"Арманистон", "name:th"=>"อาร์มีเนีย", "name:ti"=>"አርሜኒያ", "name:tk"=>"Ermenistan", "name:tl"=>"Armenya", "name:to"=>"ʻĀminia", "name:tr"=>"Ermenistan", "name:ts"=>"Armenia", "name:tt"=>"Әрмәнстан", "name:tw"=>"Aminia", "name:ty"=>"Āmenia", "name:ug"=>"ئەرمېنىيە", "name:uk"=>"Вірме́нія", "name:ur"=>"آرمینیا", "name:uz"=>"Armaniston", "name:vi"=>"Armenia", "name:vo"=>"Larmeniyän", "name:wo"=>"Armeeni", "name:yi"=>"אַרמעניע", "name:yo"=>"Arméníà", "name:za"=>"Armenia", "name:zh"=>"亞美尼亞", "name:zu"=>"i-Armenia"
-ad "name"=>"Andorra", "name:ab"=>"Андора", "name:af"=>"Andorra", "name:ak"=>"Andora", "name:am"=>"አንዶራ", "name:an"=>"Andorra", "name:ar"=>"أندورا", "name:av"=>"Андо́рра", "name:az"=>"Andorra", "name:ba"=>"Андо́рра", "name:be"=>"Андо́ра", "name:bg"=>"Андора", "name:bh"=>"अंडोरा", "name:bi"=>"Andorra", "name:bm"=>"Andɔr", "name:bn"=>"অ্যান্ডোরা", "name:bo"=>"ཨན་ཌོར་ར།", "name:br"=>"Andorra", "name:bs"=>"Andora", "name:ca"=>"Andorra", "name:ce"=>"Андо́рра", "name:co"=>"Andorra", "name:cs"=>"Andorra", "name:cu"=>"Андо́ра", "name:cv"=>"Андорра", "name:cy"=>"Andorra", "name:da"=>"Andorra", "name:de"=>"Andorra", "name:dv"=>"އެންޑޯރާ", "name:dz"=>"ཨཱན་དོ་ར", "name:ee"=>"Andorra", "name:el"=>"Ανδόρρα", "name:en"=>"Andorra", "name:eo"=>"Andoro", "name:es"=>"Andorra", "name:et"=>"Andorra", "name:eu"=>"Andorra", "name:fa"=>"آندورا", "name:ff"=>"Anndoora", "name:fi"=>"Andorra", "name:fo"=>"Andorra", "name:fr"=>"Andorre", "name:fy"=>"Andorra", "name:ga"=>"Andóra", "name:gd"=>"Andorra", "name:gl"=>"Andorra", "name:gn"=>"Andorra", "name:gu"=>"એન્ડોરા", "name:gv"=>"Andorra", "name:ha"=>"Andorra", "name:he"=>"אַנְדּוֹרָה", "name:hi"=>"अण्डोरा", "name:hr"=>"Andora", "name:ht"=>"Andora", "name:hu"=>"Andorra", "name:hy"=>"Անդորրա", "name:ia"=>"Andorra", "name:id"=>"Andorra", "name:ie"=>"Andorra", "name:ig"=>"Andorra", "name:io"=>"Andora", "name:is"=>"Andorra", "name:it"=>"Andorra", "name:ja"=>"アンドラ", "name:jv"=>"Andorra", "name:ka"=>"ანდორა", "name:kg"=>"Andora", "name:ki"=>"Andora", "name:kk"=>"Андорра", "name:kl"=>"Andorra", "name:km"=>"អង់ដូរ៉ា", "name:kn"=>"ಅಂಡೋರ", "name:ko"=>"안도라", "name:ks"=>"اٮ۪نڑورا", "name:ku"=>"Andorra", "name:kv"=>"Андорра", "name:kw"=>"Andorra", "name:ky"=>"Андорра", "name:la"=>"Andorra", "name:lb"=>"Andorra", "name:lg"=>"Andora", "name:li"=>"Andorra", "name:ln"=>"Andora", "name:lo"=>"ອັງດອກ", "name:lt"=>"Andora", "name:lv"=>"Andora", "name:mg"=>"Andora", "name:mi"=>"Andorra", "name:mk"=>"Андора", "name:ml"=>"അൻഡോറ", "name:mn"=>"Андорра", "name:mr"=>"आंदोरा", "name:ms"=>"Andorra", "name:mt"=>"Andorra", "name:my"=>"အင်ဒိုရာနိုင်ငံ", "name:na"=>"Andorra", "name:ne"=>"एण्डोरा", "name:nl"=>"Andorra", "name:nn"=>"Andorra", "name:no"=>"Andorra", "name:nv"=>"Andówa", "name:oc"=>"Andòrra", "name:om"=>"Andooraa", "name:or"=>"ଆଣ୍ଡୋରା", "name:os"=>"Андоррæ", "name:pa"=>"ਅੰਡੋਰਾ", "name:pi"=>"अंडोरा", "name:pl"=>"Andora", "name:ps"=>"اندورا", "name:pt"=>"Andorra", "name:qu"=>"Andurra", "name:rm"=>"Andorra", "name:rn"=>"Andora", "name:ro"=>"Andorra", "name:ru"=>"Андорра", "name:rw"=>"Andora", "name:sa"=>"अण्डोरा", "name:sc"=>"Andorra", "name:sd"=>"انڊورا", "name:se"=>"Andorra", "name:sg"=>"Andôro", "name:sh"=>"Andora", "name:si"=>"ඇන්ඩෝරා", "name:sk"=>"Andorra", "name:sl"=>"Andora", "name:sm"=>"Andora", "name:sn"=>"Andorra", "name:so"=>"Andorra", "name:sq"=>"Andorra", "name:sr"=>"Андора", "name:ss"=>"iYandola", "name:su"=>"Andorra", "name:sv"=>"Andorra", "name:sw"=>"Andorra", "name:ta"=>"அண்டோரா", "name:te"=>"అండొర్రా", "name:tg"=>"Андорра", "name:th"=>"อันดอร์รา", "name:ti"=>"አንዶራ", "name:tk"=>"Andorra", "name:tl"=>"Andorra", "name:to"=>"ʻEnitola", "name:tr"=>"Andorra", "name:ts"=>"Andorra", "name:tt"=>"Андорра", "name:tw"=>"Andorra", "name:ug"=>"ئاندوررا", "name:uk"=>"Андо́рра", "name:ur"=>"انڈورا", "name:uz"=>"Andorra", "name:vi"=>"Andorra", "name:vo"=>"Landorän", "name:wo"=>"Andoor", "name:yi"=>"אַנדאָרע", "name:yo"=>"Àndórà", "name:zh"=>"安道爾", "name:zu"=>"I-Andora"
-at "name"=>"Österreich", "name:ab"=>"Австриа", "name:af"=>"Oostenryk", "name:ak"=>"Austria", "name:am"=>"ኦስትሪያ", "name:an"=>"Austria", "name:ar"=>"النمسا", "name:as"=>"অষ্ট্ৰিয়া", "name:av"=>"Авустур", "name:ay"=>"Austriya", "name:az"=>"Avstriya", "name:ba"=>"Австрия", "name:be"=>"Аўстрыя", "name:bg"=>"Австрия", "name:bh"=>"ऑस्ट्रिया", "name:bi"=>"Austria", "name:bn"=>"অস্ট্রিয়া", "name:bo"=>"ཨོ་སི་ཐྲི་ཡ།", "name:br"=>"Aostria", "name:bs"=>"Austrija", "name:ca"=>"Àustria", "name:ce"=>"Австри", "name:ch"=>"Austria", "name:co"=>"Austria", "name:cs"=>"Rakousko", "name:cu"=>"Аѵстрїꙗ", "name:cv"=>"Австри", "name:cy"=>"Awstria", "name:da"=>"Østrig", "name:de"=>"Österreich", "name:dv"=>"އޮސްޓްރިއާ", "name:dz"=>"ཨས་ཊི་ཡ", "name:ee"=>"Austria", "name:el"=>"Αυστρία", "name:en"=>"Austria", "name:eo"=>"Aŭstrio", "name:es"=>"Austria", "name:et"=>"Austria", "name:eu"=>"Austria", "name:fa"=>"اتریش", "name:ff"=>"Otiris", "name:fi"=>"Itävalta", "name:fo"=>"Eysturríki", "name:fr"=>"Autriche", "name:fy"=>"Eastenryk", "name:ga"=>"An Ostair", "name:gd"=>"An Ostair", "name:gl"=>"Austria", "name:gn"=>"Auteria", "name:gu"=>"ઑસ્ટ્રિયા", "name:gv"=>"Yn Austeyr", "name:ha"=>"Austriya", "name:he"=>"אוסטריה", "name:hi"=>"ऑस्ट्रिया", "name:hr"=>"Austrija", "name:ht"=>"Otrich", "name:hu"=>"Ausztria", "name:hy"=>"Ավստրիա", "name:ia"=>"Austria", "name:id"=>"Austria", "name:ie"=>"Austria", "name:ig"=>"Austria", "name:io"=>"Austria", "name:is"=>"Austurríki", "name:it"=>"Austria", "name:ja"=>"オーストリア", "name:jv"=>"Austria", "name:ka"=>"ავსტრია", "name:kg"=>"Autriche", "name:kk"=>"Аустрия Республикасы", "name:kl"=>"Østrigi", "name:kn"=>"ಆಸ್ಟ್ರಿಯ", "name:ko"=>"오스트리아", "name:ku"=>"Awistriya", "name:kv"=>"Австрия", "name:kw"=>"Estrych", "name:ky"=>"Австрия", "name:la"=>"Austria", "name:lb"=>"Éisträich", "name:li"=>"Oosteriek", "name:ln"=>"Otrish", "name:lo"=>"ປະເທດໂອຕະລິດ", "name:lt"=>"Austrija", "name:lv"=>"Austrija", "name:mg"=>"Aotrisy", "name:mi"=>"Ateria", "name:mk"=>"Австрија", "name:ml"=>"ഓസ്ട്രിയ", "name:mn"=>"Австри", "name:mr"=>"ऑस्ट्रिया", "name:ms"=>"Austria", "name:mt"=>"Awstrija", "name:my"=>"သြစတြီးယားနိုင်ငံ", "name:na"=>"Oteriya", "name:ne"=>"अष्ट्रीया", "name:nl"=>"Oostenrijk", "name:nn"=>"Austerrike", "name:no"=>"Østerrike", "name:nv"=>"Óóswiya", "name:oc"=>"Àustria", "name:om"=>"Oostiriyaa", "name:or"=>"ଅଷ୍ଟ୍ରିଆ", "name:os"=>"Австри", "name:pa"=>"ਆਸਟਰੀਆ", "name:pi"=>"आस्ट्रिया", "name:pl"=>"Austria", "name:ps"=>"اتريش", "name:pt"=>"Áustria", "name:qu"=>"Awstiriya", "name:rm"=>"Austria", "name:ro"=>"Austria", "name:ru"=>"Австрия", "name:rw"=>"Ositiriya", "name:sa"=>"आस्ट्रिया", "name:sc"=>"Àustria", "name:sd"=>"آسٽريا", "name:se"=>"Nuortariika", "name:sh"=>"Austrija", "name:si"=>"ඔස්ට්රියාව", "name:sk"=>"Rakúsko", "name:sl"=>"Avstrija", "name:sm"=>"Austilia", "name:sn"=>"Austria", "name:so"=>"Austriya", "name:sq"=>"Austria", "name:sr"=>"Аустрија", "name:ss"=>"IYosithiya", "name:st"=>"Austria", "name:su"=>"Austria", "name:sv"=>"Österrike", "name:sw"=>"Austria", "name:ta"=>"ஆஸ்திரியா", "name:te"=>"ఆస్ట్రియా", "name:tg"=>"Утриш", "name:th"=>"ประเทศออสเตรีย", "name:tk"=>"Awstriýa", "name:tl"=>"Austria", "name:tr"=>"Avusturya", "name:ts"=>"Austria", "name:tt"=>"Австрия", "name:tw"=>"Austria", "name:ug"=>"ئاۋستىرىيە", "name:uk"=>"Австрія", "name:ur"=>"آسٹریا", "name:uz"=>"Avstriya", "name:vi"=>"Áo", "name:vo"=>"Lösterän", "name:wa"=>"Otriche", "name:wo"=>"Otris", "name:yi"=>"עסטרייך", "name:yo"=>"Austríà", "name:za"=>"Audeihleih", "name:zh"=>"奧地利", "name:zu"=>"I-Ostriya"
-bq \N
-bd "name"=>"Bangladesh", "name:af"=>"Bangladesj", "name:ar"=>"بنغلاديش", "name:az"=>"Banqladeş", "name:be"=>"Бангладэш", "name:br"=>"Bangladesh", "name:ca"=>"Bangla Desh", "name:da"=>"Bangladesh", "name:de"=>"Bangladesch", "name:el"=>"Μπανγκλαντές", "name:en"=>"Bangladesh", "name:eo"=>"Bangladeŝo", "name:fa"=>"بنگلادش", "name:fi"=>"Bangladesh", "name:fr"=>"Bangladesh", "name:fy"=>"Banglades", "name:ga"=>"An Bhangladéis", "name:gd"=>"Bangladais", "name:he"=>"בנגלדש", "name:hr"=>"Bangladeš", "name:hu"=>"Banglades", "name:is"=>"Bangladess", "name:it"=>"Bangladesh", "name:ja"=>"バングラデシュ", "name:la"=>"Bangladesha", "name:lb"=>"Bangladesch", "name:li"=>"Bangladesj", "name:lt"=>"Bangladešas", "name:lv"=>"Bangladeša", "name:mn"=>"Бангладеш", "name:pl"=>"Bangladesz", "name:pt"=>"Bangladesh", "name:ru"=>"Бангладеш", "name:sl"=>"Bangladeš", "name:sv"=>"Bangladesh", "name:th"=>"ประเทศบังกลาเทศ", "name:tr"=>"Bangladeş", "name:uk"=>"Бангладеш", "name:zh"=>"孟加拉国"
-my "name"=>"Malaysia", "name:af"=>"Maleisië", "name:am"=>"ማሌዢያ", "name:an"=>"Malaisia", "name:ar"=>"ماليزيا", "name:az"=>"Malayziya", "name:ba"=>"Малайзия", "name:be"=>"Малайзія", "name:bg"=>"Малайзия", "name:bn"=>"মালয়েশিয়া", "name:bo"=>"མ་ལ་ཤི་ཡ།", "name:br"=>"Malaysia", "name:bs"=>"Malezija", "name:ca"=>"Malàisia", "name:ce"=>"Малайзи", "name:cs"=>"Malajsie", "name:cv"=>"Малайзи", "name:cy"=>"Malaysia", "name:da"=>"Malaysia", "name:de"=>"Malaysia", "name:dv"=>"މެލޭޝިޔާ", "name:dz"=>"མ་ལེ་ཤི་ཡ་", "name:el"=>"Μαλαισία", "name:en"=>"Malaysia", "name:eo"=>"Malajzio", "name:es"=>"Malasia", "name:et"=>"Malaisia", "name:eu"=>"Malaysia", "name:fa"=>"مالزی", "name:fi"=>"Malesia", "name:fo"=>"Maleisia", "name:fr"=>"Malaisie", "name:fy"=>"Maleizje", "name:ga"=>"An Mhalaeisia", "name:gd"=>"Malaidhsia", "name:gl"=>"Malaisia", "name:gu"=>"મલેશિયા", "name:gv"=>"Yn Valaysia", "name:he"=>"מלזיה", "name:hi"=>"मलेशिया", "name:hr"=>"Malezija", "name:ht"=>"Malezi", "name:hu"=>"Malajzia", "name:hy"=>"Մալազիա", "name:ia"=>"Malaysia", "name:id"=>"Malaysia", "name:ie"=>"Malaysia", "name:io"=>"Malaizia", "name:is"=>"Malasía", "name:it"=>"Malesia", "name:ja"=>"マレーシア", "name:jv"=>"Malaysia", "name:ka"=>"მალაიზია", "name:ki"=>"Malaysia", "name:kk"=>"Малайзия", "name:km"=>"ម៉ាឡេស៊ី", "name:kn"=>"ಮಲೇಶಿಯ", "name:ko"=>"말레이시아", "name:ku"=>"Malezya", "name:kv"=>"Малайзия", "name:kw"=>"Malaysi", "name:ky"=>"Малайзия", "name:la"=>"Malaesia", "name:lb"=>"Malaysia", "name:li"=>"Maleisië", "name:lo"=>"ປະເທດມາເລເຊຍ", "name:lt"=>"Malaizija", "name:lv"=>"Malaizija", "name:mi"=>"Marēhia", "name:mk"=>"Малезија", "name:ml"=>"മലേഷ്യ", "name:mn"=>"Малайз", "name:mr"=>"मलेशिया", "name:ms"=>"Maleisië", "name:mt"=>"Malażja", "name:my"=>"မလေးရှားနိုင်ငံ", "name:na"=>"Maraidja", "name:ne"=>"मलेशिया", "name:nl"=>"Maleisië", "name:nn"=>"Malaysia", "name:no"=>"Malaysia", "name:nv"=>"Maléízha", "name:oc"=>"Malàisia", "name:or"=>"ମାଲେସିଆ", "name:os"=>"Малайзи", "name:pa"=>"ਮਲੇਸ਼ੀਆ", "name:pl"=>"Malezja", "name:pt"=>"Malásia", "name:qu"=>"Malasya", "name:ro"=>"Malaezia", "name:ru"=>"Малайзия", "name:rw"=>"Malesiya", "name:sa"=>"मलयेशिया", "name:se"=>"Malesia", "name:sg"=>"Malezïi", "name:sh"=>"Malezija", "name:sk"=>"Malajzia", "name:sl"=>"Malezija", "name:so"=>"Malaysiya", "name:sq"=>"Malajzia", "name:sr"=>"Малезија", "name:ss"=>"IMaleshiya", "name:su"=>"Malaysia", "name:sv"=>"Malaysia", "name:sw"=>"Malaysia", "name:ta"=>"மலேசியா", "name:te"=>"మలేషియా", "name:tg"=>"Малайзия", "name:th"=>"ประเทศมาเลเซีย", "name:tk"=>"Malaýziýa", "name:tl"=>"Malasya", "name:tr"=>"Malezya", "name:tt"=>"Малайзия", "name:tw"=>"Malaysia", "name:ug"=>"مالايسىيا", "name:uk"=>"Малайзія", "name:ur"=>"ملائیشیا", "name:uz"=>"Malayziya", "name:vi"=>"Malaysia", "name:vo"=>"Malaysiyän", "name:wo"=>"Maleesi", "name:yi"=>"מאלייזיע", "name:yo"=>"Malaysia", "name:za"=>"Majlaizsihya", "name:zh"=>"马来西亚"
-bi "name"=>"Burundi", "name:af"=>"Burundi", "name:am"=>"ቡሩንዲ", "name:an"=>"Burundi", "name:ar"=>"بوروندي", "name:az"=>"Burundi", "name:ba"=>"Буру́нди", "name:be"=>"Буру́ндзі", "name:bg"=>"Бурунди", "name:bh"=>"बुरुंडी", "name:bm"=>"Burundi", "name:bn"=>"বুরুন্ডি", "name:bo"=>"བུ་རུན་ཌི།", "name:br"=>"Burundi", "name:bs"=>"Burundi", "name:ca"=>"Burundi", "name:ce"=>"Бурунди", "name:cs"=>"Burundi", "name:cv"=>"Бурунди", "name:cy"=>"Bwrwndi", "name:da"=>"Burundi", "name:de"=>"Burundi", "name:dv"=>"ބުރުންޑީ", "name:dz"=>"བྷུ་རུན་ཌི", "name:ee"=>"Burundi", "name:el"=>"Μπουρούντι", "name:en"=>"Burundi", "name:eo"=>"Burundo", "name:es"=>"Burundí", "name:et"=>"Burundi", "name:eu"=>"Burundi", "name:fa"=>"بوروندی", "name:ff"=>"Burunndi", "name:fi"=>"Burundi", "name:fo"=>"Burundi", "name:fr"=>"Burundi", "name:fy"=>"Boerûndy", "name:ga"=>"an Bhurúin", "name:gd"=>"Burundaidh", "name:gl"=>"Burundi", "name:gn"=>"Vurundi", "name:gu"=>"બુરુંડી", "name:gv"=>"Burundee", "name:ha"=>"Burundi", "name:he"=>"בורונדי", "name:hi"=>"बुरुण्डी", "name:hr"=>"Burundi", "name:ht"=>"Bouroundi", "name:hu"=>"Burundi", "name:hy"=>"Բուրունդի", "name:ia"=>"Burundi", "name:id"=>"Burundi", "name:ie"=>"Burundi", "name:ig"=>"Burundi", "name:io"=>"Burundi", "name:is"=>"Búrúndí", "name:it"=>"Burundi", "name:ja"=>"ブルンジ", "name:jv"=>"Burundi", "name:ka"=>"ბურუნდი", "name:kg"=>"Burundi", "name:ki"=>"Burundi", "name:kk"=>"Бурунди", "name:km"=>"ប៊ូរុនឌី", "name:kn"=>"ಬುರುಂಡಿ", "name:ko"=>"부룬디", "name:ks"=>"بورَنڈِ", "name:ku"=>"Burundî", "name:kw"=>"Burundi", "name:ky"=>"Бурунди", "name:la"=>"Burundia", "name:lb"=>"Burundi", "name:lg"=>"Burundi", "name:li"=>"Boeroendi", "name:ln"=>"Burundi", "name:lo"=>"ບູລັນດີ", "name:lt"=>"Burundis", "name:lv"=>"Burundi", "name:mg"=>"Borondy", "name:mk"=>"Бурунди", "name:ml"=>"ബറുണ്ടി", "name:mn"=>"Бурунди", "name:mr"=>"बुरुंडी", "name:ms"=>"Burundi", "name:mt"=>"Burundi", "name:my"=>"ဘူရွန်ဒီနိုင်ငံ", "name:na"=>"Burundi", "name:ne"=>"बुरूण्डी", "name:nl"=>"Burundi", "name:nn"=>"Burundi", "name:no"=>"Burundi", "name:oc"=>"Burundi", "name:om"=>"Buruundii", "name:or"=>"ବୁରୁଣ୍ଡି", "name:os"=>"Буру́нди", "name:pa"=>"ਬੁਰੂੰਡੀ", "name:pi"=>"बुरुंडी", "name:pl"=>"Burundi", "name:ps"=>"برونډي", "name:pt"=>"Burundi", "name:qu"=>"Burundi", "name:rm"=>"Burundi", "name:rn"=>"Uburundi", "name:ro"=>"Burundi", "name:ru"=>"Бурунди", "name:rw"=>"Uburundi", "name:sa"=>"बुरुंडी", "name:sc"=>"Burundi", "name:se"=>"Burundi", "name:sg"=>"Burundïi", "name:sh"=>"Burundi", "name:si"=>"බුරුන්ඩි", "name:sk"=>"Burundi", "name:sl"=>"Burundi", "name:sn"=>"Burundi", "name:so"=>"Burundi", "name:sq"=>"Burundi", "name:sr"=>"Бурунди", "name:ss"=>"iBurundi", "name:st"=>"Burundi", "name:su"=>"Burundi", "name:sv"=>"Burundi", "name:sw"=>"Burundi", "name:ta"=>"புருண்டி", "name:te"=>"బురుండి", "name:tg"=>"Бурунди", "name:th"=>"บุรุนดี", "name:ti"=>"ብሩንዲ", "name:tk"=>"Burundi", "name:tl"=>"Burundi", "name:to"=>"Pelaniti", "name:tr"=>"Burundi", "name:ts"=>"Burundi", "name:tt"=>"Буру́нди", "name:ug"=>"بۇرۇندى", "name:uk"=>"Буру́нді", "name:ur"=>"برونڈی", "name:uz"=>"Burundi", "name:vi"=>"Burundi", "name:vo"=>"Rundiyän", "name:wa"=>"Bouroundi", "name:wo"=>"Buruundi", "name:yi"=>"בורונדי", "name:yo"=>"Bùrúndì", "name:zh"=>"布隆迪", "name:zu"=>"iBurundi"
-bh "name"=>"البحرين", "name:af"=>"Bahrein", "name:ak"=>"Baren", "name:am"=>"ባሕሬን", "name:an"=>"Bahrein", "name:ar"=>"البحرين", "name:as"=>"বাহৰেইন", "name:az"=>"Bəhreyn", "name:ba"=>"Бахре́йн", "name:be"=>"Бахрэ́йн", "name:bg"=>"Бахрейн", "name:bh"=>"बहरीन", "name:bm"=>"Bareyini", "name:bn"=>"বাহরাইন", "name:bo"=>"བྷཧ་རཡིན།", "name:br"=>"Bahrein", "name:bs"=>"Bahrein", "name:ca"=>"Bahrain", "name:ce"=>"Бахьрайн", "name:cs"=>"Bahrajn", "name:cv"=>"Бахрейн", "name:cy"=>"Bahrein", "name:da"=>"Bahrain", "name:de"=>"Bahrain", "name:dv"=>"ބަޙްރައިން", "name:dz"=>"བཧ་རེན་", "name:ee"=>"Bahrain nutome", "name:el"=>"Μπαχρέιν", "name:en"=>"Bahrain", "name:eo"=>"Barejno", "name:es"=>"Baréin", "name:et"=>"Bahrein", "name:eu"=>"Bahrain", "name:fa"=>"بحرین", "name:ff"=>"Bahreyn", "name:fi"=>"Bahrain", "name:fo"=>"Barein", "name:fr"=>"Bahreïn", "name:fy"=>"Bachrein", "name:ga"=>"Bairéin", "name:gd"=>"Bachrain", "name:gl"=>"Bahrein", "name:gn"=>"Varéĩ", "name:gu"=>"બહેરીન", "name:gv"=>"Bahrain", "name:ha"=>"Baharain", "name:he"=>"בחריין", "name:hi"=>"बहरीन", "name:hr"=>"Bahrein", "name:ht"=>"Barayn", "name:hu"=>"Bahrein", "name:hy"=>"Բահրեյն", "name:ia"=>"Bahrain", "name:id"=>"Bahrain", "name:ie"=>"Bahrain", "name:io"=>"Bahrain", "name:is"=>"Barein", "name:it"=>"Bahrein", "name:ja"=>"バーレーン", "name:jv"=>"Bahrain", "name:ka"=>"ბაჰრეინი", "name:kg"=>"Bahrain", "name:ki"=>"Bahrain", "name:kk"=>"Бахрейн", "name:kl"=>"Bahrain", "name:km"=>"បារ៉ែន", "name:kn"=>"ಬಹರೇನ್", "name:ko"=>"바레인", "name:ks"=>"بحریٖن", "name:ku"=>"Behreyn", "name:kv"=>"Бахрейн", "name:kw"=>"Bahreyn", "name:ky"=>"Бахре́йн", "name:la"=>"Baharina", "name:lb"=>"Bahrain", "name:lg"=>"Baareeni", "name:li"=>"Bahrein", "name:ln"=>"Bahrein", "name:lo"=>"ບາເລນ", "name:lt"=>"Bahreinas", "name:lv"=>"Bahreina", "name:mg"=>"Baharainy", "name:mk"=>"Бахреин", "name:ml"=>"ബഹ്റൈൻ", "name:mn"=>"Бахрейн", "name:mr"=>"बहरैन", "name:ms"=>"Bahrain", "name:mt"=>"Baħrejn", "name:my"=>"ဘာရိန်းနိုင်ငံ", "name:na"=>"Bahrain", "name:ne"=>"बहराइन", "name:nl"=>"Bahrein", "name:nn"=>"Bahrain", "name:no"=>"Bahrain", "name:oc"=>"Bahrayn", "name:om"=>"Baahireen", "name:or"=>"ବାହାରିନ୍", "name:os"=>"Бахрейн", "name:pa"=>"ਬਹਿਰੀਨ", "name:pi"=>"बहरैन", "name:pl"=>"Bahrajn", "name:ps"=>"بحرین", "name:pt"=>"Bahrein", "name:qu"=>"Bahrayn", "name:rm"=>"Bahrain", "name:rn"=>"Bahareyini", "name:ro"=>"Bahrain", "name:ru"=>"Бахрейн", "name:rw"=>"Bahirayini", "name:sa"=>"बहरैन", "name:sd"=>"بحرين", "name:se"=>"Bahrain", "name:sg"=>"Bahrâina", "name:sh"=>"Bahrein", "name:si"=>"බහරේන්", "name:sk"=>"Bahrajn", "name:sl"=>"Bahrájn", "name:sm"=>"Bahrain", "name:sn"=>"Bahrain", "name:so"=>"Baxrayn", "name:sq"=>"Bahraini", "name:sr"=>"Бахреин", "name:ss"=>"iBhaharayi", "name:su"=>"Bahrain", "name:sv"=>"Bahrain", "name:sw"=>"Bahrain", "name:ta"=>"பகுரைன்", "name:te"=>"బహ్రయిన్", "name:tg"=>"Баҳрайн", "name:th"=>"บาห์เรน", "name:ti"=>"ባህሬን", "name:tk"=>"Bahreýn", "name:tl"=>"Bahrain", "name:to"=>"Paleini", "name:tr"=>"Bahreyn", "name:tt"=>"Бәхрәйн", "name:ug"=>"بەھرېيىن", "name:uk"=>"Бахре́йн", "name:ur"=>"بحرین", "name:uz"=>"Baxreyn", "name:vi"=>"Bahrain", "name:vo"=>"Bahruäns", "name:wo"=>"Bahrayni", "name:yi"=>"באכריין", "name:yo"=>"Báháráìnì", "name:zh"=>"巴林", "name:zu"=>"i-Bahrain"
-bn "name"=>"Brunei", "name:af"=>"Broenei", "name:ak"=>"Brunae", "name:am"=>"ብሩናይ", "name:an"=>"Brunei", "name:ar"=>"بروناي", "name:as"=>"ব্ৰুণেই", "name:az"=>"Bruney", "name:ba"=>"Бруней", "name:be"=>"Бруне́й", "name:bg"=>"Бруней", "name:bh"=>"ब्रूनेई", "name:bm"=>"Burinɛyi", "name:bn"=>"ব্রুনাই", "name:bo"=>"བྷི་རུ་ནི།", "name:br"=>"Brunei", "name:bs"=>"Brunej", "name:ca"=>"Brunei", "name:ce"=>"Бруней", "name:cs"=>"Brunej", "name:cv"=>"Бруней", "name:cy"=>"Brwnei", "name:da"=>"Brunei", "name:de"=>"Brunei", "name:dv"=>"ބުރުނައީ", "name:dz"=>"བྷྲུ་ནའི", "name:el"=>"Μπρουνέι", "name:en"=>"Brunei", "name:eo"=>"Brunejo", "name:es"=>"Brunéi", "name:et"=>"Brunei", "name:eu"=>"Brunei", "name:fa"=>"برونئی", "name:ff"=>"Burnaay", "name:fi"=>"Brunei", "name:fo"=>"Brunei", "name:fr"=>"Brunei", "name:fy"=>"Brûnei", "name:ga"=>"Brúiné", "name:gd"=>"Brùnaigh", "name:gl"=>"Brunei", "name:gn"=>"Mburunéi", "name:gu"=>"બ્રુનેઈ", "name:gv"=>"Brunei", "name:ha"=>"Brunei", "name:he"=>"ברוניי", "name:hi"=>"ब्रुनेई", "name:hr"=>"Brunej", "name:ht"=>"Brouney", "name:hu"=>"Brunei", "name:hy"=>"Բրունեյ", "name:ia"=>"Brunei", "name:id"=>"Brunei", "name:ie"=>"Brunei", "name:ik"=>"Brunei", "name:io"=>"Brunei", "name:is"=>"Brúnei", "name:it"=>"Brunei", "name:ja"=>"ブルネイ", "name:jv"=>"Brunéi", "name:ka"=>"ბრუნეი", "name:kg"=>"Brunei", "name:ki"=>"Brunei", "name:kk"=>"Бруней", "name:kl"=>"Brunei", "name:km"=>"ប្រទេសប៊្រុយណេ", "name:kn"=>"ಬ್ರುನೈ", "name:ko"=>"브루나이", "name:ks"=>"بُرنٔے", "name:ku"=>"Brûney", "name:kv"=>"Бруней", "name:kw"=>"Bruney", "name:ky"=>"Бруней", "name:la"=>"Bruneium", "name:lb"=>"Brunei", "name:li"=>"Brunei", "name:ln"=>"Brunei", "name:lo"=>"ບູໄນ", "name:lt"=>"Brunėjus", "name:lv"=>"Bruneja", "name:mg"=>"Boroney", "name:mi"=>"Poronai", "name:mk"=>"Брунеј", "name:ml"=>"ബ്രൂണൈ", "name:mn"=>"Бруней", "name:mr"=>"ब्रुनेई", "name:ms"=>"Brunei", "name:mt"=>"Brunej", "name:my"=>"ဘရူနိုင်းနိုင်ငံ", "name:na"=>"Brunei", "name:ne"=>"ब्रुनेई", "name:nl"=>"Brunei", "name:nn"=>"Brunei", "name:no"=>"Brunei", "name:ny"=>"Brunei", "name:oc"=>"Brunei", "name:om"=>"Birunaay", "name:or"=>"ବ୍ରୁନେଇ", "name:os"=>"Бруней", "name:pa"=>"ਬਰੂਨਾਈ", "name:pi"=>"ब्रूनै", "name:pl"=>"Brunei", "name:ps"=>"برونای", "name:pt"=>"Brunei", "name:qu"=>"Bruniy", "name:rm"=>"Brunei", "name:ro"=>"Brunei", "name:ru"=>"Бруней", "name:rw"=>"Buruneyi", "name:sa"=>"ब्रूनै", "name:sd"=>"برونئي", "name:se"=>"Brunei", "name:sg"=>"Brunêi", "name:sh"=>"Brunej", "name:si"=>"බෲනායි", "name:sk"=>"Brunej", "name:sl"=>"Brunej", "name:sn"=>"Brunei", "name:so"=>"Barunay", "name:sq"=>"Brunei", "name:sr"=>"Брунеј", "name:ss"=>"iBhruneyi", "name:su"=>"Brunéi", "name:sv"=>"Brunei", "name:sw"=>"Brunei", "name:ta"=>"புரூணை", "name:te"=>"బ్రూనై", "name:tg"=>"Бруней", "name:th"=>"บรูไน", "name:ti"=>"ብሩኒ", "name:tk"=>"Bruneý", "name:tl"=>"Brunei", "name:to"=>"Pulunei", "name:tr"=>"Brunei", "name:tt"=>"Бруне́й", "name:ug"=>"برۇنېي", "name:uk"=>"Бруне́й", "name:ur"=>"برونائی", "name:uz"=>"Bruney", "name:vi"=>"Brunei", "name:vo"=>"Brunän", "name:yi"=>"ברוניי", "name:yo"=>"Brunei", "name:za"=>"Vwnzlaiz", "name:zh"=>"文莱", "name:zu"=>"i-Brunei"
-cr "name"=>"Costa Rica", "name:ab"=>"Коста-Рика", "name:af"=>"Costa Rica", "name:am"=>"ኮስታ ሪካ", "name:an"=>"Costa Rica", "name:ar"=>"كوستاريكا", "name:ay"=>"Kustarika", "name:az"=>"Kosta-Rika", "name:ba"=>"Коста-Рика", "name:be"=>"Коста-Рыка", "name:bg"=>"Коста Рика", "name:bh"=>"कोस्टा रिका", "name:bm"=>"Kosta Rika", "name:bn"=>"কোস্টা রিকা", "name:bo"=>"ཁོ་ས་ཏ་རི་ཁ", "name:br"=>"Costa Rica", "name:bs"=>"Kostarika", "name:ca"=>"Costa Rica", "name:ce"=>"Коста-Рика", "name:cs"=>"Kostarika", "name:cy"=>"Costa Rica", "name:da"=>"Costa Rica", "name:de"=>"Costa Rica", "name:dv"=>"ކޮސްޓަރީކާ", "name:ee"=>"Costa Rica", "name:el"=>"Κόστα Ρίκα", "name:en"=>"Costa Rica", "name:eo"=>"Kostariko", "name:es"=>"Costa Rica", "name:et"=>"Costa Rica", "name:eu"=>"Costa Rica", "name:fa"=>"کاستاریکا", "name:fi"=>"Costa Rica", "name:fo"=>"Kosta Rika", "name:fr"=>"Costa Rica", "name:fy"=>"Kosta Rika", "name:ga"=>"Cósta Ríce", "name:gd"=>"Costa Rica", "name:gl"=>"Costa Rica", "name:gn"=>"Kosta Rrika", "name:gv"=>"Yn Coose Berçhagh", "name:he"=>"קוסטה ריקה", "name:hi"=>"कोस्टा रीका", "name:hr"=>"Kostarika", "name:ht"=>"Kostarika", "name:hu"=>"Costa Rica", "name:hy"=>"Կոստա Ռիկա", "name:ia"=>"Costa Rica", "name:id"=>"Kosta Rika", "name:ie"=>"Costa Rica", "name:io"=>"Kosta Rika", "name:is"=>"Kosta Ríka", "name:it"=>"Costa Rica", "name:ja"=>"コスタリカ", "name:jv"=>"Kosta Rika", "name:ka"=>"კოსტა-რიკა", "name:kk"=>"Коста-Рика", "name:kn"=>"ಕೋಸ್ಟಾ ರಿಕ", "name:ko"=>"코스타리카", "name:ku"=>"Kosta Rîka", "name:kv"=>"Коста-Рика", "name:kw"=>"Kosta Rika", "name:ky"=>"Коста-Рика", "name:la"=>"Ora Opulenta", "name:lb"=>"Costa Rica", "name:li"=>"Costa Rica", "name:ln"=>"Kosta Rika", "name:lo"=>"ປະເທດກົດສະຕາລິກາ", "name:lt"=>"Kosta Rika", "name:lv"=>"Kostarika", "name:mg"=>"Costa Rica", "name:mi"=>"Koto Rika", "name:mk"=>"Костарика", "name:ml"=>"കോസ്റ്റ റീക്ക", "name:mn"=>"Коста-Рика", "name:mr"=>"कोस्टा रिका", "name:ms"=>"Costa Rica", "name:mt"=>"Kosta Rika", "name:my"=>"ကော့စတာရီကာနိုင်ငံ", "name:na"=>"Kosta Rika", "name:ne"=>"कोस्टारिका", "name:nl"=>"Costa Rica", "name:nn"=>"Costa Rica", "name:no"=>"Costa Rica", "name:oc"=>"Còsta Rica", "name:om"=>"Kostaa Rikaa", "name:or"=>"କୋଷ୍ଟାରିକା", "name:os"=>"Коста-Рикæ", "name:pa"=>"ਕੋਸਤਾ ਰੀਕਾ", "name:pi"=>"कोस्टा रीका", "name:pl"=>"Kostaryka", "name:ps"=>"کوسټاریکا", "name:pt"=>"Costa Rica", "name:qu"=>"Kustarika", "name:ro"=>"Costa Rica", "name:ru"=>"Коста-Рика", "name:rw"=>"Kosita Rika", "name:sa"=>"कोस्टा रीका", "name:se"=>"Costa Rica", "name:sh"=>"Kostarika", "name:si"=>"කෝස්ට රිකා", "name:sk"=>"Kostarika", "name:sl"=>"Kostarika", "name:sm"=>"Kosta Rika", "name:so"=>"Kosta Rika", "name:sq"=>"Kosta Rika", "name:sr"=>"Костарика", "name:ss"=>"IKhosta-Likha", "name:su"=>"Kosta Rika", "name:sv"=>"Costa Rica", "name:sw"=>"Kosta Rika", "name:ta"=>"கோஸ்ட்டா ரிக்கா", "name:te"=>"కోస్టారీకా", "name:tg"=>"Коста Рика", "name:th"=>"ประเทศคอสตาริกา", "name:tk"=>"Kosta-Rika", "name:tl"=>"Costa Rica", "name:tr"=>"Kosta Rika", "name:tt"=>"Коста-Рика", "name:ug"=>"كوستارىكا", "name:uk"=>"Коста-Рика", "name:ur"=>"کوسٹاریکا", "name:uz"=>"Kosta Rika", "name:vi"=>"Costa Rica", "name:vo"=>"Kostarikän", "name:wa"=>"Costa Rica", "name:wo"=>"Kosta Riika", "name:yi"=>"קאסטא ריקא", "name:yo"=>"Kóstá Rikà", "name:zh"=>"哥斯达黎加", "name:zu"=>"Costa Rica"
-do "name"=>"República Dominicana", "name:af"=>"Dominikaanse Republiek", "name:am"=>"ዶሚኒካን ሪፐብሊክ", "name:an"=>"Republica Dominicana", "name:ar"=>"جمهورية الدومينيكان", "name:ay"=>"Republika Duminikana", "name:az"=>"Dominikan Respublikası", "name:be"=>"Дамініканская Рэспубліка", "name:bg"=>"Доминиканска република", "name:bn"=>"ডোমিনিকান প্রজাতন্ত্র", "name:bo"=>"ཌོ་མི་ནི་ཀན་སྤྱི་མཐུན་རྒྱལ་ཁབ།", "name:br"=>"Republik Dominikan", "name:bs"=>"Dominikanska Republika", "name:ca"=>"República Dominicana", "name:ce"=>"Доминикан Пачхьалкх", "name:cs"=>"Dominikánská republika", "name:cy"=>"Gweriniaeth Dominica", "name:da"=>"Dominikanske Republik", "name:de"=>"Dominikanische Republik", "name:dv"=>"ޑޮމިނިކަން ޖުމްހޫރިއްޔާ", "name:ee"=>"Dominican Republic", "name:el"=>"Δομινικανή Δημοκρατία", "name:en"=>"Dominican Republic", "name:eo"=>"Domingo", "name:es"=>"República Dominicana", "name:et"=>"Dominikaani Vabariik", "name:eu"=>"Dominikar Errepublika", "name:fa"=>"جمهوری دومینیکن", "name:fi"=>"Dominikaaninen tasavalta", "name:fo"=>"Dominikanalýðveldið", "name:fr"=>"République dominicaine", "name:fy"=>"Dominikaanske Republyk", "name:ga"=>"An Phoblacht Dhoiminiceach", "name:gd"=>"Poblachd Dhoiminicia", "name:gl"=>"República Dominicana", "name:gv"=>"Yn Phobblaght Ghominicagh", "name:he"=>"הרפובליקה הדומיניקנית", "name:hi"=>"डोमिनिकन गणराज्य", "name:hr"=>"Dominikanska Republika", "name:ht"=>"Dominikani", "name:hu"=>"Dominikai Köztársaság", "name:hy"=>"Դոմինիկյան Հանրապետություն", "name:ia"=>"Republica Dominican", "name:id"=>"Republik Dominika", "name:io"=>"Dominikana Republiko", "name:is"=>"Dóminíska lýðveldið", "name:it"=>"Repubblica Dominicana", "name:ja"=>"ドミニカ共和国", "name:jv"=>"Republik Dominika", "name:ka"=>"დომინიკელთა რესპუბლიკა", "name:kk"=>"Доминикан Республикасы", "name:kn"=>"ಡೊಮಿನಿಕ ಗಣರಾಜ್ಯ", "name:ko"=>"도미니카 공화국", "name:ku"=>"Komara Domînîk", "name:kw"=>"Repoblek Dhominikanek", "name:la"=>"Respublica Dominicana", "name:lb"=>"Dominikanesch Republik", "name:li"=>"Dominicaanse Rippubliek", "name:ln"=>"Republiki Dominikani", "name:lt"=>"Dominikos Respublika", "name:lv"=>"Dominikāna", "name:mi"=>"Te Whenua Tominika", "name:mk"=>"Доминиканска Република", "name:ml"=>"ഡൊമനിക്കൻ റിപ്പബ്ലിക്", "name:mn"=>"Доминиканы Бүгд Найрамдах Улс", "name:mr"=>"डॉमिनिकन प्रजासत्ताक", "name:ms"=>"Republik Dominika", "name:mt"=>"Repubblika Dominikana", "name:my"=>"ဒိုမီနီကန်သမ္မတနိုင်ငံ", "name:na"=>"Ripubrikin Dominika", "name:ne"=>"डोमिनिकन गणतन्त्र", "name:nl"=>"Dominicaanse Republiek", "name:nn"=>"Den dominikanske republikken", "name:no"=>"Den dominikanske republikk", "name:nv"=>"Domingo Bikéyah", "name:oc"=>"Republica Dominicana", "name:or"=>"ଡୋମେନିକାନ ରିପବ୍ଲିକ", "name:os"=>"Доминиканæйы Республикæ", "name:pa"=>"ਡੋਮਿਨਿਕਾਈ ਗਣਰਾਜ", "name:pl"=>"Dominikana", "name:ps"=>"ډومنيکان جمهوريت", "name:pt"=>"República Dominicana", "name:qu"=>"Duminikana", "name:ro"=>"Republica Dominicană", "name:ru"=>"Доминиканская Республика", "name:rw"=>"Repubulika ya Dominikani", "name:sa"=>"डोमोनिकन रिपब्लिक", "name:se"=>"Dominikána dásseváldi", "name:sh"=>"Dominikanska Republika", "name:sk"=>"Dominikánska republika", "name:sl"=>"Dominikanska republika", "name:sq"=>"Republika Dominikane", "name:sr"=>"Доминиканска Република", "name:ss"=>"Tibuse weDomonokha", "name:su"=>"Républik Dominika", "name:sv"=>"Dominikanska Republiken", "name:sw"=>"Jamhuri ya Dominika", "name:ta"=>"டொமினிக்கன் குடியரசு", "name:te"=>"డొమెనికన్ రిపబ్లిక్", "name:tg"=>"Ҷумҳурии Доминикана", "name:th"=>"สาธารณรัฐโดมินิกัน", "name:tl"=>"Republikang Dominikano", "name:tr"=>"Dominik Cumhuriyeti", "name:tt"=>"Доминикан Җөмһүрияте", "name:ug"=>"دومىنىكان جۇمھۇرىيەتى", "name:uk"=>"Домініканська Республіка", "name:ur"=>"جمہوریہ ڈومینیکن", "name:uz"=>"Dominika Respublikasi", "name:vi"=>"Cộng hòa Dominica", "name:vo"=>"Sandominän", "name:wo"=>"Réewum Dominik", "name:yi"=>"דאמיניקאנישע רעפובליק", "name:yo"=>"Orílẹ̀òmìnira Dómíníkì", "name:zh"=>"多明尼加共和國"
-cz "name"=>"Česko", "name:ab"=>"Чехиа", "name:af"=>"Tsjeggië", "name:am"=>"ቼክ ሪፐብሊክ", "name:an"=>"Republica Checa", "name:ar"=>"التشيك", "name:av"=>"Чехия", "name:ay"=>"Chexya Ripublika", "name:az"=>"Çexiya", "name:ba"=>"Чехия", "name:be"=>"Чэхія", "name:bg"=>"Чешка република", "name:bh"=>"चेक रिपब्लिक", "name:bi"=>"Czech Republic", "name:bn"=>"চেক প্রজাতন্ত্র", "name:bo"=>"ཅེ་ཁེ།", "name:br"=>"Tchekia", "name:bs"=>"Češka", "name:ca"=>"Txèquia", "name:ce"=>"Чехи", "name:ch"=>"Chekia", "name:co"=>"Cechia", "name:cs"=>"Česko", "name:cu"=>"Чєшьско", "name:cv"=>"Чех Республики", "name:cy"=>"Gweriniaeth Tsiec", "name:da"=>"Tjekkiet", "name:de"=>"Tschechien", "name:dv"=>"ޗެކް ޖުމްހޫރިއްޔާ", "name:dz"=>"ཅེཀ་རི་པབ་ལིཀ་", "name:ee"=>"Czech Republic", "name:el"=>"Τσεχία", "name:en"=>"Czechia", "name:eo"=>"Ĉeĥio", "name:es"=>"Chequia", "name:et"=>"Tšehhi", "name:eu"=>"Txekia", "name:fa"=>"جمهوری چک", "name:ff"=>"Cekiya", "name:fi"=>"Tšekki", "name:fo"=>"Kekkia", "name:fr"=>"Tchéquie", "name:fy"=>"Tsjechje", "name:ga"=>"An tSeic", "name:gd"=>"An t-Seic", "name:gl"=>"República Checa", "name:gn"=>"Cheko", "name:gv"=>"Yn Phobblaght Çheck", "name:ha"=>"Kazech", "name:he"=>"צכיה", "name:hi"=>"चेक गणराज्य", "name:hr"=>"Češka", "name:ht"=>"Repiblik tchèk", "name:hu"=>"Csehország", "name:hy"=>"Չեխիա", "name:ia"=>"Republica Chec", "name:id"=>"Republik Ceko", "name:ie"=>"Tchechia", "name:ig"=>"Chekia", "name:ik"=>"Czech Republic", "name:io"=>"Chekia", "name:is"=>"Tékkland", "name:it"=>"Repubblica Ceca", "name:ja"=>"チェコ", "name:jv"=>"Céko", "name:ka"=>"ჩეხეთი", "name:kg"=>"République tchèque", "name:kk"=>"Чехия", "name:kl"=>"Tjekkia", "name:kn"=>"ಜೆಕ್ ಗಣರಾಜ್ಯ", "name:ko"=>"체코", "name:ku"=>"Komara Çekî", "name:kv"=>"Чехия", "name:kw"=>"Pow Chek", "name:ky"=>"Чехия", "name:la"=>"Cechia", "name:lb"=>"Tschechien", "name:li"=>"Tsjechië", "name:ln"=>"Republíki Sheki", "name:lo"=>"ສາທາລະນະລັດແຊັກ", "name:lt"=>"Čekija", "name:lv"=>"Čehija", "name:mg"=>"Tsekia", "name:mi"=>"Tīekia", "name:mk"=>"Чешка", "name:ml"=>"ചെക്ക് റിപ്പബ്ലിക്ക്", "name:mn"=>"Бүгд Найрамдах Чех Улс", "name:mr"=>"चेक प्रजासत्ताक", "name:ms"=>"Republik Czech", "name:mt"=>"Repubblika Ċeka", "name:my"=>"ချက်သမ္မတနိုင်ငံ", "name:na"=>"Ripubrikin Tsiek", "name:ne"=>"चेक गणतन्त्र", "name:nl"=>"Tsjechië", "name:nn"=>"Tsjekkia", "name:no"=>"Tsjekkia", "name:nv"=>"Chek Bikéyah", "name:oc"=>"Republica Chèca", "name:om"=>"Cheekiyaa", "name:or"=>"ଚେକ ରିପବ୍ଲିକ", "name:os"=>"Чехи", "name:pa"=>"ਚੈੱਕ ਗਣਰਾਜ", "name:pi"=>"चेक रिपब्लिक", "name:pl"=>"Czechy", "name:ps"=>"چېک جمهوريت", "name:pt"=>"Tcheca", "name:qu"=>"Chiksuyu", "name:rm"=>"Tschechia", "name:ro"=>"Cehia", "name:ru"=>"Чехия", "name:rw"=>"Cekiya", "name:sa"=>"ज़ेक् रिपब्लिक", "name:sc"=>"Repùblica Ceca", "name:sd"=>"جمهوريه چيڪ", "name:se"=>"Čeahkka", "name:sh"=>"Češka Republika", "name:si"=>"චෙක් ජනරජය", "name:sk"=>"Česko", "name:sl"=>"Češka", "name:sm"=>"Czechs Republic", "name:sn"=>"Czechia", "name:so"=>"Jamhuuriyadda Tashik", "name:sq"=>"Republika Çeke", "name:sr"=>"Чешка", "name:ss"=>"Shekhi", "name:su"=>"Céko", "name:sv"=>"Tjeckien", "name:sw"=>"Ucheki", "name:ta"=>"செக் குடியரசு", "name:te"=>"చెక్ రిపబ్లిక్", "name:tg"=>"Чехия", "name:th"=>"สาธารณรัฐเช็ก", "name:tk"=>"Çehiýa", "name:tl"=>"Republikang Tseko", "name:tr"=>"Çek Cumhuriyeti", "name:ts"=>"Czech Republic", "name:tt"=>"Чехия", "name:ty"=>"Czech Republic", "name:ug"=>"چېخ جۇمھۇرىيەتى", "name:uk"=>"Чехія", "name:ur"=>"چیک جمہوریہ", "name:uz"=>"Chexiya", "name:vi"=>"Cộng hòa Séc", "name:vo"=>"Tsyegän", "name:wa"=>"Tchekeye", "name:wo"=>"Réewum Cek", "name:yi"=>"טשעכיי", "name:yo"=>"Tsẹ́kì Olómìnira", "name:za"=>"Ciethaek", "name:zh"=>"捷克", "name:zu"=>"ITsheki"
-ee "name"=>"Eesti", "name:af"=>"Estland", "name:am"=>"ኤስቶኒያ", "name:an"=>"Estonia", "name:ar"=>"إستونيا", "name:az"=>"Estoniya", "name:ba"=>"Эстония", "name:be"=>"Эстонія", "name:bg"=>"Естония", "name:bi"=>"Estonia", "name:bm"=>"Estonia", "name:bn"=>"ইস্তোনিয়া", "name:bo"=>"ཨིསུ་ཊོ་ནིཡ།", "name:br"=>"Estonia", "name:bs"=>"Estonija", "name:ca"=>"Estònia", "name:ce"=>"Эстони", "name:co"=>"Estonia", "name:cs"=>"Estonsko", "name:cu"=>"Єсть", "name:cv"=>"Эстони", "name:cy"=>"Estonia", "name:da"=>"Estland", "name:de"=>"Estland", "name:dz"=>"ཨིསི་ཊོ་ནི་ཡ།", "name:ee"=>"Estonia", "name:el"=>"Εσθονία", "name:en"=>"Estonia", "name:eo"=>"Estonio", "name:es"=>"Estonia", "name:et"=>"Eesti", "name:eu"=>"Estonia", "name:fa"=>"استونی", "name:ff"=>"Estoniya", "name:fi"=>"Viro", "name:fo"=>"Estland", "name:fr"=>"Estonie", "name:fy"=>"Estlân", "name:ga"=>"An Eastóin", "name:gd"=>"Eastòinia", "name:gl"=>"Estonia", "name:gn"=>"Etoña", "name:gu"=>"ઈસ્ટોનિયા", "name:gv"=>"Yn Estaan", "name:he"=>"אסטוניה", "name:hi"=>"एस्टोनिया", "name:hr"=>"Estonija", "name:ht"=>"Estoni", "name:hu"=>"Észtország", "name:hy"=>"Էստոնիա", "name:ia"=>"Estonia", "name:id"=>"Estonia", "name:ie"=>"Estonia", "name:io"=>"Estonia", "name:is"=>"Eistland", "name:it"=>"Estonia", "name:ja"=>"エストニア", "name:jv"=>"Estonia", "name:ka"=>"ესტონეთი", "name:kg"=>"Estonia", "name:kk"=>"Эстония", "name:kl"=>"Estlandi", "name:kn"=>"ಎಸ್ಟೊನಿಯ", "name:ko"=>"에스토니아", "name:ku"=>"Estonya", "name:kv"=>"Эстония", "name:kw"=>"Estoni", "name:ky"=>"Эстония", "name:la"=>"Estonia", "name:lb"=>"Estland", "name:li"=>"Esland", "name:ln"=>"Estonia", "name:lt"=>"Estija", "name:lv"=>"Igaunija", "name:mg"=>"Estonia", "name:mi"=>"Etonia", "name:mk"=>"Естонија", "name:ml"=>"എസ്റ്റോണിയ", "name:mn"=>"Эстон", "name:mr"=>"एस्टोनिया", "name:ms"=>"Estonia", "name:mt"=>"Estonja", "name:my"=>"အက်စ်တိုးနီးယားနိုင်ငံ", "name:na"=>"Etoniya", "name:ne"=>"इस्टोनिया", "name:nl"=>"Estland", "name:nn"=>"Estland", "name:no"=>"Estland", "name:nv"=>"Ééstii Bikéyah", "name:oc"=>"Estònia", "name:or"=>"ଏଷ୍ଟୋନିଆ", "name:os"=>"Эстони", "name:pa"=>"ਇਸਤੋਨੀਆ", "name:pl"=>"Estonia", "name:ps"=>"اېسټونيا", "name:pt"=>"Estónia", "name:qu"=>"Istunya", "name:ro"=>"Estonia", "name:ru"=>"Эстония", "name:rw"=>"Esitoniya", "name:sa"=>"एस्टोनिया", "name:sc"=>"Estònia", "name:se"=>"Estteeana", "name:sh"=>"Estonija", "name:si"=>"එස්ටෝනියා", "name:sk"=>"Estónsko", "name:sl"=>"Estonija", "name:so"=>"Estoniya", "name:sq"=>"Estonia", "name:sr"=>"Естонија", "name:ss"=>"IWestoniya", "name:st"=>"Estonia", "name:su"=>"Éstonia", "name:sv"=>"Estland", "name:sw"=>"Estonia", "name:ta"=>"எசுத்தோனியா", "name:te"=>"ఎస్టోనియా", "name:tg"=>"Эстония", "name:th"=>"ประเทศเอสโตเนีย", "name:tk"=>"Estoniýa", "name:tl"=>"Estonia", "name:tr"=>"Estonya", "name:tt"=>"Эстония", "name:ug"=>"ئېستونىيە", "name:uk"=>"Естонія", "name:ur"=>"استونیا", "name:uz"=>"Estoniya", "name:ve"=>"Estonia", "name:vi"=>"Estonia", "name:vo"=>"Lestiyän", "name:wo"=>"Estooni", "name:yi"=>"עסטלאנד", "name:yo"=>"Estóníà", "name:zh"=>"爱沙尼亚", "name:zu"=>"I-Estoniya"
-dk "name"=>"Danmark", "name:af"=>"Denemarke", "name:am"=>"ዴንማርክ", "name:an"=>"Dinamarca", "name:ar"=>"الدنمارك", "name:az"=>"Danimarka", "name:ba"=>"Дания", "name:be"=>"Данія", "name:bg"=>"Дания", "name:bi"=>"Denmark", "name:bn"=>"ডেনমার্ক", "name:bo"=>"དན་མྲག", "name:br"=>"Danmark", "name:bs"=>"Danska", "name:ca"=>"Dinamarca", "name:ce"=>"Дани", "name:co"=>"Danimarca", "name:cs"=>"Dánsko", "name:cu"=>"Данїꙗ", "name:cv"=>"Дани", "name:cy"=>"Denmarc", "name:da"=>"Danmark", "name:de"=>"Dänemark", "name:dv"=>"ޑެންމާކު", "name:dz"=>"ཌེན་མཱཀ་", "name:ee"=>"Denmark", "name:el"=>"Δανία", "name:en"=>"Denmark", "name:eo"=>"Danio", "name:es"=>"Dinamarca", "name:et"=>"Taani", "name:eu"=>"Danimarka", "name:fa"=>"دانمارک", "name:fi"=>"Tanska", "name:fo"=>"Danmark", "name:fr"=>"Danemark", "name:fy"=>"Denemark", "name:ga"=>"An Danmhairg", "name:gd"=>"An Danmhairg", "name:gl"=>"Dinamarca", "name:gn"=>"Ndinamayka", "name:gv"=>"Yn Danvarg", "name:he"=>"דנמרק", "name:hi"=>"डेनमार्क", "name:hr"=>"Danska", "name:ht"=>"Danmak", "name:hu"=>"Dánia", "name:hy"=>"Դանիա", "name:ia"=>"Danmark", "name:id"=>"Denmark", "name:ie"=>"Dania", "name:io"=>"Dania", "name:is"=>"Danmörk", "name:it"=>"Danimarca", "name:ja"=>"デンマーク", "name:jv"=>"Denmark", "name:ka"=>"დანია", "name:kg"=>"Danemark", "name:ki"=>"Denmark", "name:kk"=>"Дания", "name:kl"=>"Danmarki", "name:kn"=>"ಡೆನ್ಮಾರ್ಕ್", "name:ko"=>"덴마크", "name:ku"=>"Danîmarka", "name:kv"=>"Дания", "name:kw"=>"Danmark", "name:ky"=>"Дания", "name:la"=>"Dania", "name:lb"=>"Dänemark", "name:lg"=>"Denimaaka", "name:li"=>"Denemarke", "name:ln"=>"Danemark", "name:lt"=>"Danija", "name:lv"=>"Dānija", "name:mg"=>"Danmarka", "name:mi"=>"Tenemāka", "name:mk"=>"Данска", "name:ml"=>"ഡെന്മാർക്ക്", "name:mn"=>"Дани", "name:mr"=>"डेन्मार्क", "name:ms"=>"Denmark", "name:mt"=>"Danimarka", "name:my"=>"ဒိန်းမတ်နိုင်ငံ", "name:na"=>"Denemark", "name:ne"=>"डेनमार्क", "name:nl"=>"Denemarken", "name:nn"=>"Danmark", "name:no"=>"Danmark", "name:nv"=>"Déinish Dineʼé Bikéyah", "name:oc"=>"Danemarc", "name:or"=>"ଡେନମାର୍କ", "name:os"=>"Дани", "name:pl"=>"Dania", "name:ps"=>"ډېنمارک", "name:pt"=>"Dinamarca", "name:qu"=>"Dansuyu", "name:rm"=>"Danemarc", "name:rn"=>"Danemarke", "name:ro"=>"Danemarca", "name:ru"=>"Дания", "name:rw"=>"Danimarike", "name:sa"=>"डेनमार्क", "name:sc"=>"Danimarca", "name:se"=>"Dánmárku", "name:sh"=>"Danska", "name:si"=>"ඩෙන්මාර්කය", "name:sk"=>"Dánsko", "name:sl"=>"Danska", "name:so"=>"Denmark", "name:sq"=>"Danimarka", "name:sr"=>"Данска", "name:ss"=>"IDenimakhi", "name:st"=>"Denmark", "name:su"=>"Dénmark", "name:sv"=>"Danmark", "name:sw"=>"Denmark", "name:ta"=>"டென்மார்க்", "name:te"=>"డెన్మార్క్", "name:tg"=>"Дания", "name:th"=>"ประเทศเดนมาร์ก", "name:tk"=>"Daniýa", "name:tl"=>"Dinamarka", "name:tr"=>"Danimarka", "name:tt"=>"Дания", "name:ug"=>"دانىيە", "name:uk"=>"Данія", "name:ur"=>"ڈنمارک", "name:uz"=>"Daniya", "name:vi"=>"Đan Mạch", "name:vo"=>"Danän", "name:wo"=>"Danmaark", "name:yi"=>"דענמארק", "name:yo"=>"Dẹ́nmárkì", "name:zh"=>"丹麦", "name:zu"=>"IDenimaki"
-gw "name"=>"Guiné-Bissau", "name:af"=>"Guinee-Bissau", "name:am"=>"ጊኔ-ቢሳው", "name:an"=>"Guinea-Bissau", "name:ar"=>"غينيا بيساو", "name:az"=>"Qvineya-Bisau", "name:ba"=>"Гвинея-Бисау", "name:be"=>"Гвінея-Бісау", "name:bg"=>"Гвинея-Бисау", "name:bm"=>"Gine Bisau", "name:bn"=>"গিনি-বিসাউ", "name:bo"=>"གི་ནེ་-བི་སའོ།", "name:br"=>"Ginea-Bissau", "name:bs"=>"Gvineja-Bisau", "name:ca"=>"Guinea Bissau", "name:ce"=>"Гвине-Бисау", "name:co"=>"Guinea-Bissau", "name:cs"=>"Guinea-Bissau", "name:cv"=>"Гвиней-Бисау", "name:cy"=>"Guiné-Bissau", "name:da"=>"Guinea-Bissau", "name:de"=>"Guinea-Bissau", "name:dv"=>"ގީނީ-ބިސާއޫ", "name:ee"=>"Guinea-Bissau", "name:el"=>"Γουινέα-Μπισσάου", "name:en"=>"Guinea-Bissau", "name:eo"=>"Gvineo Bisaŭa", "name:es"=>"Guinea-Bisáu", "name:et"=>"Guinea-Bissau", "name:eu"=>"Ginea-Bissau", "name:fa"=>"گینه بیسائو", "name:ff"=>"Gine-Bisaawo", "name:fi"=>"Guinea-Bissau", "name:fo"=>"Guinea-Bissau", "name:fr"=>"Guinée-Bissau", "name:fy"=>"Guinee-Bissau", "name:ga"=>"Guine-Bissau", "name:gd"=>"Gini-Bissau", "name:gl"=>"Guinea-Bisau", "name:gv"=>"Yn Ghuinea-Bissau", "name:he"=>"גינאה ביסאו", "name:hi"=>"गिनी-बिसाऊ", "name:hr"=>"Gvineja Bisau", "name:ht"=>"Gine-Bisao", "name:hu"=>"Bissau-Guinea", "name:hy"=>"Գվինեա Բիսաու", "name:ia"=>"Guinea-Bissau", "name:id"=>"Guinea-Bissau", "name:ie"=>"Guinea-Bissau", "name:io"=>"Guinea Bisau", "name:is"=>"Gínea-Bissá", "name:it"=>"Guinea-Bissau", "name:ja"=>"ギニアビサウ", "name:jv"=>"Guinea-Bissau", "name:ka"=>"გვინეა-ბისაუ", "name:kg"=>"Ginea-Bisau", "name:kk"=>"Гвинея-Бисау", "name:ko"=>"기니비사우", "name:ku"=>"Gîne-Bissau", "name:kw"=>"Gyni-Bissaw", "name:ky"=>"Гвинея-Бисау", "name:la"=>"Guinea Bissaviensis", "name:lb"=>"Guinea-Bissau", "name:li"=>"Guinee-Bissau", "name:ln"=>"Gine-Bisau", "name:lt"=>"Bisau Gvinėja", "name:lv"=>"Gvineja-Bisava", "name:mi"=>"Kini Pihō", "name:mk"=>"Гвинеја-Бисау", "name:ml"=>"ഗിനി-ബിസൗ", "name:mn"=>"Гвиней-Бисау", "name:mr"=>"गिनी-बिसाउ", "name:ms"=>"Guinea-Bissau", "name:my"=>"ဂင်းနီဗစ်ဆောနိုင်ငံ", "name:na"=>"Gini-Bitau", "name:ne"=>"गिनी-बिसाउ", "name:nl"=>"Guinee-Bissau", "name:nn"=>"Guinea-Bissau", "name:no"=>"Guinea-Bissau", "name:nv"=>"Gíní Bisó", "name:oc"=>"Guinèa Bissau", "name:os"=>"Гвиней-Бисау", "name:pa"=>"ਗਿਨੀ-ਬਿਸਾਊ", "name:pl"=>"Gwinea Bissau", "name:pt"=>"Guiné-Bissau", "name:qu"=>"Khiniya-Wisaw", "name:ro"=>"Guineea-Bissau", "name:ru"=>"Гвинея-Бисау", "name:rw"=>"Gineya-Biso", "name:sc"=>"Guinea-Bissau", "name:se"=>"Guinea-Bissau", "name:sg"=>"Ginëe-Bisau", "name:sh"=>"Gvineja Bisau", "name:sk"=>"Guinea-Bissau", "name:sl"=>"Gvineja Bissau", "name:sn"=>"Guinea-Bissau", "name:so"=>"Guinea-Bissau", "name:sq"=>"Guinea Bisau", "name:sr"=>"Гвинеја Бисао", "name:ss"=>"IGiniya-Bhasawu", "name:st"=>"Guinea-Bissau", "name:su"=>"Guinéa-Bissau", "name:sv"=>"Guinea-Bissau", "name:sw"=>"Guinea Bisau", "name:ta"=>"கினி-பிசாவு", "name:tg"=>"Гвинея Бисау", "name:th"=>"ประเทศกินี-บิสเซา", "name:tk"=>"Gwineýa-Bisau", "name:tl"=>"Ginea-Bissau", "name:tr"=>"Gine-Bissau", "name:ts"=>"Guinea-Bissau", "name:tt"=>"Гвинея-Бисау", "name:ug"=>"گۋىنېيە بىسسائۇ", "name:uk"=>"Гвінея-Бісау", "name:ur"=>"گنی بساؤ", "name:uz"=>"Gvineya-Bissau", "name:vi"=>"Guiné-Bissau", "name:vo"=>"Gineyän-Bisauän", "name:wo"=>"Gine Bisaawóo", "name:yi"=>"גינע-ביסאו", "name:yo"=>"Guinea-Bissau", "name:zh"=>"幾內亞比索", "name:zu"=>"IGini Bisawu"
-hu "name"=>"Magyarország", "name:ab"=>"Мадиартәыла", "name:af"=>"Hongarye", "name:am"=>"ሀንጋሪ", "name:an"=>"Hongría", "name:ar"=>"المجر", "name:ay"=>"Hunkariya", "name:az"=>"Macarıstan", "name:ba"=>"Венгрия", "name:be"=>"Венгрыя", "name:bg"=>"Унгария", "name:bi"=>"Hungary", "name:bn"=>"হাঙ্গেরি", "name:bo"=>"ཧུང་གྷ་རི།", "name:br"=>"Hungaria", "name:bs"=>"Mađarska", "name:ca"=>"Hongria", "name:ce"=>"Венгри", "name:co"=>"Ungheria", "name:cs"=>"Maďarsko", "name:cu"=>"Ѫгри", "name:cv"=>"Венгри", "name:cy"=>"Hwngari", "name:da"=>"Ungarn", "name:de"=>"Ungarn", "name:dv"=>"ހަންގޭރީ", "name:ee"=>"Hungary", "name:el"=>"Ουγγαρία", "name:en"=>"Hungary", "name:eo"=>"Hungario", "name:es"=>"Hungría", "name:et"=>"Ungari", "name:eu"=>"Hungaria", "name:fa"=>"مجارستان", "name:ff"=>"Hunngariya", "name:fi"=>"Unkari", "name:fo"=>"Ungarn", "name:fr"=>"Hongrie", "name:fy"=>"Hongarije", "name:ga"=>"An Ungáir", "name:gd"=>"An Ungair", "name:gl"=>"Hungría", "name:gn"=>"Hungyria", "name:gu"=>"હંગેરી", "name:gv"=>"Yn Ungaar", "name:he"=>"הונגריה", "name:hi"=>"हंगरी", "name:hr"=>"Mađarska", "name:ht"=>"Ongri", "name:hu"=>"Magyarország", "name:hy"=>"Հունգարիա", "name:ia"=>"Hungaria", "name:id"=>"Hongaria", "name:ie"=>"Hungaria", "name:io"=>"Hungaria", "name:is"=>"Ungverjaland", "name:it"=>"Ungheria", "name:ja"=>"ハンガリー", "name:jv"=>"Hongaria", "name:ka"=>"უნგრეთი", "name:kg"=>"Hongrie", "name:ki"=>"Macartsa", "name:kk"=>"Мажарстан", "name:kl"=>"Ungarni", "name:km"=>"ប្រទេសហុងគ្រី", "name:ko"=>"헝가리", "name:ku"=>"Macaristan", "name:kv"=>"Мадьяр Му", "name:kw"=>"Hungari", "name:ky"=>"Мажарстан", "name:la"=>"Hungaria", "name:lb"=>"Ungarn", "name:li"=>"Hongarieë", "name:ln"=>"Ungri", "name:lt"=>"Vengrija", "name:lv"=>"Ungārija", "name:mi"=>"Hanekari", "name:mk"=>"Унгарија", "name:ml"=>"ഹംഗറി", "name:mn"=>"Унгар", "name:mr"=>"हंगेरी", "name:ms"=>"Hungary", "name:mt"=>"Ungerija", "name:my"=>"ဟန်ဂေရီနိုင်ငံ", "name:na"=>"Ungari", "name:ne"=>"हंगेरी", "name:nl"=>"Hongarije", "name:nn"=>"Ungarn", "name:no"=>"Ungern", "name:nv"=>"Hángewii", "name:oc"=>"Ongria", "name:or"=>"ହଙ୍ଗେରୀ", "name:os"=>"Венгри", "name:pa"=>"ਹੰਗਰੀ", "name:pl"=>"Węgry", "name:ps"=>"هنګري", "name:pt"=>"Hungria", "name:qu"=>"Unriya", "name:rm"=>"Ungaria", "name:ro"=>"Ungaria", "name:ru"=>"Венгрия", "name:rw"=>"Hongiriya", "name:sa"=>"हंगरी", "name:se"=>"Ungára", "name:sh"=>"Mađarska", "name:si"=>"හන්ගේරියානු සමුහාණ්ඩුව", "name:sk"=>"Maďarsko", "name:sl"=>"Madžarska", "name:sm"=>"Hungary", "name:sn"=>"Hungary", "name:so"=>"Hungaria", "name:sq"=>"Hungaria", "name:sr"=>"Мађарска", "name:ss"=>"IHangareyi", "name:st"=>"Hungary", "name:su"=>"Hungaria", "name:sv"=>"Ungern", "name:sw"=>"Hungaria", "name:ta"=>"அங்கேரி", "name:te"=>"హంగేరి", "name:tg"=>"Маҷористон", "name:th"=>"ประเทศฮังการี", "name:tk"=>"Wengriýa", "name:tl"=>"Unggarya", "name:tr"=>"Macaristan", "name:ts"=>"Hungary", "name:tt"=>"Маҗарстан", "name:ug"=>"ۋېنگرىيە", "name:uk"=>"Угорщина", "name:ur"=>"مجارستان", "name:uz"=>"Mojariston", "name:vi"=>"Hungary", "name:vo"=>"Macarän", "name:wo"=>"Ongiri", "name:yi"=>"אונגארן", "name:yo"=>"Húngárì", "name:zh"=>"匈牙利"
-hr "name"=>"Hrvatska", "name:ab"=>"Хорватиа", "name:af"=>"Kroasië", "name:am"=>"ክሮኤሽያ", "name:an"=>"Croacia", "name:ar"=>"كرواتيا", "name:az"=>"Xorvatiya", "name:ba"=>"Хорватия", "name:be"=>"Харватыя", "name:bg"=>"Хърватия", "name:bi"=>"Croatia", "name:bn"=>"ক্রোয়েশিয়া", "name:bo"=>"ཁུརོ་ཤི་ཡ།", "name:br"=>"Kroatia", "name:bs"=>"Hrvatska", "name:ca"=>"Cròacia", "name:ce"=>"Хорвати", "name:cs"=>"Chorvatsko", "name:cu"=>"Хръватьска", "name:cy"=>"Croatia", "name:da"=>"Kroatien", "name:de"=>"Kroatien", "name:dv"=>"ކުރޮއޭޝިއާ", "name:ee"=>"Croatia", "name:el"=>"Κροατία", "name:en"=>"Croatia", "name:eo"=>"Kroatio", "name:es"=>"Croacia", "name:et"=>"Horvaatia", "name:eu"=>"Kroazia", "name:fa"=>"کرواسی", "name:fi"=>"Kroatia", "name:fo"=>"Kroatia", "name:fr"=>"Croatie", "name:fy"=>"Kroaasje", "name:ga"=>"An Chróit", "name:gd"=>"Croàisia", "name:gl"=>"Croacia", "name:gn"=>"Kyoasia", "name:gu"=>"ક્રોએશિયા", "name:gv"=>"Yn Chroit", "name:he"=>"קרואטיה", "name:hi"=>"क्रोएशिया", "name:hr"=>"Hrvatska", "name:ht"=>"Kroasi", "name:hu"=>"Horvátország", "name:hy"=>"Խորվաթիա", "name:ia"=>"Croatia", "name:id"=>"Kroasia", "name:ie"=>"Croatia", "name:io"=>"Kroatia", "name:is"=>"Króatía", "name:it"=>"Croazia", "name:ja"=>"クロアチア", "name:jv"=>"Kroasia", "name:ka"=>"ხორვატია", "name:kg"=>"Kroatia", "name:kk"=>"Хорватия", "name:kl"=>"Kroatia", "name:kn"=>"ಕ್ರೊಯೆಶಿಯ", "name:ko"=>"크로아티아", "name:ku"=>"Kroatya", "name:kv"=>"Хорватия", "name:kw"=>"Kroati", "name:ky"=>"Хорватия", "name:la"=>"Croatia", "name:lb"=>"Kroatien", "name:li"=>"Kroatië", "name:ln"=>"Kroasia", "name:lt"=>"Kroatija", "name:lv"=>"Horvātija", "name:mi"=>"Koroātia", "name:mk"=>"Хрватска", "name:ml"=>"ക്രൊയേഷ്യ", "name:mn"=>"Хорват", "name:mr"=>"क्रोएशिया", "name:ms"=>"Croatia", "name:mt"=>"Kroazja", "name:my"=>"ခရိုအေးရှားနိုင်ငံ", "name:na"=>"Kroaitsiya", "name:ne"=>"क्रोएशिया", "name:nl"=>"Kroatië", "name:nn"=>"Kroatia", "name:no"=>"Kroatia", "name:nv"=>"Kwóóʼad Bikéyah", "name:oc"=>"Croàcia", "name:or"=>"କ୍ରୋଏସିଆ", "name:os"=>"Хорвати", "name:pa"=>"ਕ੍ਰੋਏਸ਼ੀਆ", "name:pl"=>"Chorwacja", "name:ps"=>"کروواسيا", "name:pt"=>"Croácia", "name:qu"=>"Hurwatsuyu", "name:rn"=>"Croacia", "name:ro"=>"Croația", "name:ru"=>"Хорватия", "name:rw"=>"Korowatiya", "name:sa"=>"क्रोएशिया", "name:sc"=>"Croatzia", "name:se"=>"Kroatia", "name:sg"=>"Kroasïi", "name:sh"=>"Hrvatska", "name:sk"=>"Chorvátsko", "name:sl"=>"Hrvaška", "name:sm"=>"Croatia", "name:so"=>"Kroatia", "name:sq"=>"Kroacia", "name:sr"=>"Хрватска", "name:ss"=>"IKhuroshiya", "name:st"=>"Kroatia", "name:su"=>"Kroasia", "name:sv"=>"Kroatien", "name:sw"=>"Kroatia", "name:ta"=>"குரோவாசியா", "name:te"=>"క్రొయేషియా", "name:tg"=>"Хорватия", "name:th"=>"ประเทศโครเอเชีย", "name:tk"=>"Horwatiýa", "name:tl"=>"Kroasya", "name:tr"=>"Hırvatistan", "name:tt"=>"Хорватия", "name:ug"=>"كرودىيە", "name:uk"=>"Хорватія", "name:ur"=>"کروشیا", "name:uz"=>"Xorvatiya", "name:vi"=>"Croatia", "name:vo"=>"Kroasän", "name:wa"=>"Crowaceye", "name:wo"=>"Korwaasi", "name:yi"=>"קראאטיע", "name:yo"=>"Kroatíà", "name:za"=>"Gwzlozdiya", "name:zh"=>"克羅地亞"
-id "name"=>"Indonesia", "name:af"=>"Indonesië", "name:ak"=>"Indonesia", "name:am"=>"ኢንዶኔዥያ", "name:an"=>"Indonesia", "name:ar"=>"إندونيسيا", "name:ay"=>"Indunisya", "name:az"=>"İndoneziya", "name:ba"=>"Индонезия", "name:be"=>"Інданезія", "name:bg"=>"Индонезия", "name:bi"=>"Indonesia", "name:bn"=>"ইন্দোনেশিয়া", "name:bo"=>"ཨིན་རྡུ་ནི་ཤིས་ཡ།", "name:br"=>"Indonezia", "name:bs"=>"Indonezija", "name:ca"=>"Indonèsia", "name:ce"=>"Индонези", "name:ch"=>"Indonesia", "name:co"=>"Indunesia", "name:cs"=>"Indonésie", "name:cu"=>"Їндонисїꙗ", "name:cv"=>"Индонези", "name:cy"=>"Indonesia", "name:da"=>"Indonesien", "name:de"=>"Indonesien", "name:dv"=>"އިންޑޮނޭޝިޔާ", "name:el"=>"Ινδονησία", "name:en"=>"Indonesia", "name:eo"=>"Indonezio", "name:es"=>"Indonesia", "name:et"=>"Indoneesia", "name:eu"=>"Indonesia", "name:fa"=>"اندونزی", "name:fi"=>"Indonesia", "name:fo"=>"Indonesia", "name:fr"=>"Indonésie", "name:fy"=>"Yndoneezje", "name:ga"=>"An Indinéis", "name:gd"=>"An Innd-Innse", "name:gl"=>"Indonesia", "name:gn"=>"Indonesia", "name:gu"=>"ઈંડોનેશિયા", "name:gv"=>"Yn Indoneesh", "name:he"=>"אינדונזיה", "name:hi"=>"इंडोनेशिया", "name:hr"=>"Indonezija", "name:ht"=>"Endonezi", "name:hu"=>"Indonézia", "name:hy"=>"Ինդոնեզիա", "name:ia"=>"Indonesia", "name:id"=>"Indonesia", "name:ie"=>"Indonesia", "name:io"=>"Indonezia", "name:is"=>"Indónesía", "name:it"=>"Indonesia", "name:iu"=>"ᐄᓅᓯᐊ", "name:ja"=>"インドネシア", "name:jv"=>"Indonésia", "name:ka"=>"ინდონეზია", "name:ki"=>"Indonesia", "name:kk"=>"Индонезия", "name:kl"=>"Indonesia", "name:km"=>"ឥណ្ឌូនេស៊ី", "name:kn"=>"ಇಂಡೋನೇಷ್ಯಾ", "name:ko"=>"인도네시아", "name:ku"=>"Îndonezya", "name:kv"=>"Индонезия", "name:kw"=>"Indonesi", "name:ky"=>"Индонезия", "name:la"=>"Indonesia", "name:lb"=>"Indonesien", "name:li"=>"Indonesië", "name:ln"=>"Indonezí", "name:lt"=>"Indonezija", "name:lv"=>"Indonēzija", "name:mg"=>"Indonezia", "name:mi"=>"Initonīhia", "name:mk"=>"Индонезија", "name:ml"=>"ഇന്തോനേഷ്യ", "name:mn"=>"Индонез", "name:mr"=>"इंडोनेशिया", "name:ms"=>"Indonesia", "name:mt"=>"Indoneżja", "name:my"=>"အင်ဒိုနီးရှားနိုင်ငံ", "name:na"=>"Indonitsiya", "name:ne"=>"इण्डोनेशिया", "name:nl"=>"Indonesië", "name:nn"=>"Indonesia", "name:no"=>"Indonesia", "name:nv"=>"Indoníízha", "name:oc"=>"Indonesia", "name:om"=>"Indoneeshiyaa", "name:or"=>"ଇଣ୍ଡୋନେସିଆ", "name:os"=>"Индонези", "name:pa"=>"ਇੰਡੋਨੇਸ਼ੀਆ", "name:pl"=>"Indonezja", "name:ps"=>"اندونيزيا", "name:pt"=>"Indonésia", "name:qu"=>"Indunisya", "name:rm"=>"Indonesia", "name:ro"=>"Indonezia", "name:ru"=>"Индонезия", "name:rw"=>"Indonesiya", "name:sa"=>"इण्डोनेशिया", "name:se"=>"Indonesia", "name:sg"=>"Ênndonezïi", "name:sh"=>"Indonezija", "name:si"=>"ඉන්දුනීසියාව", "name:sk"=>"Indonézia", "name:sl"=>"Indonezija", "name:sm"=>"Indyunisia", "name:so"=>"Indunisiya", "name:sq"=>"Indonezia", "name:sr"=>"Индонезија", "name:ss"=>"INdonesiya", "name:su"=>"Indonésia", "name:sv"=>"Indonesien", "name:sw"=>"Indonesia", "name:ta"=>"இந்தோனேசியா", "name:te"=>"ఇండోనేషియా", "name:tg"=>"Индонезия", "name:th"=>"ประเทศอินโดนีเซีย", "name:tk"=>"Indoneziýa", "name:tl"=>"Indonesya", "name:tr"=>"Endonezya", "name:tt"=>"Индонезия", "name:ug"=>"ھىندونېزىيە", "name:uk"=>"Індонезія", "name:ur"=>"انڈونیشیا", "name:uz"=>"Indoneziya", "name:vi"=>"Indonesia", "name:vo"=>"Lindäna-Seänuäns", "name:wa"=>"Indonezeye", "name:wo"=>"Endoneesi", "name:yi"=>"אינדאנעזיע", "name:yo"=>"Indonésíà", "name:za"=>"Yindunizsihya", "name:zh"=>"印度尼西亚 / 印度尼西亞"
-il "name"=>"ישראל", "name:af"=>"Israel", "name:am"=>"እስራኤል", "name:an"=>"Israel", "name:ar"=>"إسرائيل", "name:av"=>"Гlизраил", "name:az"=>"İsrail", "name:ba"=>"Израиль", "name:be"=>"Ізраіль", "name:bg"=>"Израел", "name:bm"=>"Israil", "name:bn"=>"ইসরায়েল", "name:bo"=>"ཨི་སི་ར་ཨེལ།", "name:br"=>"Israel", "name:bs"=>"Izrael", "name:ca"=>"Israel", "name:ce"=>"Израиль", "name:co"=>"Israele", "name:cs"=>"Izrael", "name:cu"=>"Їꙁдраил҄ь", "name:cv"=>"Израиль", "name:cy"=>"Israel", "name:da"=>"Israel", "name:de"=>"Israel", "name:dv"=>"އިސްރާއީލު", "name:dz"=>"ཨིཛ་རཱེལ་", "name:el"=>"Ισραήλ", "name:en"=>"Israel", "name:eo"=>"Israelo", "name:es"=>"Israel", "name:et"=>"Iisrael", "name:eu"=>"Israel", "name:fa"=>"اسرائیل", "name:fi"=>"Israel", "name:fj"=>"Isireli", "name:fo"=>"Ísrael", "name:fr"=>"Israël", "name:fy"=>"Israel", "name:ga"=>"Iosrael", "name:gd"=>"Iosrael", "name:gl"=>"Israel", "name:gn"=>"Israel", "name:gu"=>"ઈઝરાયલ", "name:gv"=>"Israel", "name:ha"=>"Isra'ila", "name:he"=>"ישראל", "name:hi"=>"इज़राइल", "name:hr"=>"Izrael", "name:ht"=>"Izrayèl", "name:hu"=>"Izrael", "name:hy"=>"Իսրայել", "name:ia"=>"Israel", "name:id"=>"Israel", "name:ie"=>"Israel", "name:ig"=>"Israel", "name:io"=>"Israel", "name:is"=>"Ísrael", "name:it"=>"Israele", "name:ja"=>"イスラエル", "name:jv"=>"Israèl", "name:ka"=>"ისრაელი", "name:kg"=>"Israel", "name:kk"=>"Израиль", "name:kl"=>"Israel", "name:kn"=>"ಇಸ್ರೇಲ್", "name:ko"=>"이스라엘", "name:ku"=>"Îsraêl", "name:kv"=>"Израиль", "name:kw"=>"Ysrael", "name:ky"=>"Израиль", "name:la"=>"Israel", "name:lb"=>"Israel", "name:li"=>"Israël", "name:ln"=>"Israel", "name:lt"=>"Izraelis", "name:lv"=>"Izraēla", "name:mi"=>"Iharaira", "name:mk"=>"Израел", "name:ml"=>"ഇസ്രയേൽ", "name:mn"=>"Израйль", "name:mr"=>"इस्रायल", "name:ms"=>"Israel", "name:mt"=>"Iżrael", "name:my"=>"အစ္စရေးနိုင်ငံ", "name:na"=>"Iteraer", "name:ne"=>"इजरायल", "name:nl"=>"Israël", "name:nn"=>"Israel", "name:no"=>"Israel", "name:nv"=>"Ízrel Bikéyah", "name:oc"=>"Israèl", "name:or"=>"ଇସ୍ରାଏଲ", "name:os"=>"Израиль", "name:pa"=>"ਇਜ਼ਰਾਇਲ", "name:pl"=>"Izrael", "name:ps"=>"اسرائيل", "name:pt"=>"Israel", "name:qu"=>"Israyil", "name:ro"=>"Israel", "name:ru"=>"Израиль", "name:rw"=>"Isirayeli", "name:sa"=>"इस्रेल", "name:sc"=>"Israele", "name:se"=>"Israel", "name:sh"=>"Izrael", "name:si"=>"ඊශ්රායලය", "name:sk"=>"Izrael", "name:sl"=>"Izrael", "name:sm"=>"Israel", "name:so"=>"Israaiil", "name:sq"=>"Izraeli", "name:sr"=>"Израел", "name:ss"=>"Ka-Israyeli", "name:sv"=>"Israel", "name:sw"=>"Israel", "name:ta"=>"இசுரேல்", "name:te"=>"ఇజ్రాయిల్", "name:tg"=>"Исроил", "name:th"=>"ประเทศอิสราเอล", "name:tk"=>"Ysraýyl", "name:tl"=>"Israel", "name:tr"=>"İsrail", "name:tt"=>"Исраил", "name:ug"=>"ئىسرائىلىيە", "name:uk"=>"Ізраїль", "name:ur"=>"اسرائیل", "name:uz"=>"Isroil", "name:vi"=>"Israel", "name:vo"=>"Yisraelän", "name:wa"=>"Israyel", "name:wo"=>"Israayil", "name:yi"=>"ישראל", "name:yo"=>"Ísráẹ́lì", "name:zh"=>"以色列", "name:zu"=>"Isreyili"
-lt "name"=>"Lietuva", "name:ab"=>"Литва", "name:af"=>"Litaue", "name:ak"=>"Lituania", "name:am"=>"ሊትዌኒያ", "name:an"=>"Lituania", "name:ar"=>"ليتوانيا", "name:ay"=>"Lituaña", "name:az"=>"Litva", "name:ba"=>"Литва", "name:be"=>"Літва", "name:bg"=>"Литва", "name:bi"=>"Litwania", "name:bn"=>"লিথুয়ানিয়া", "name:bo"=>"ལི་ཐུ་ཨེ་ནི་ཡ།", "name:br"=>"Lituania", "name:bs"=>"Litvanija", "name:ca"=>"Lituània", "name:ce"=>"Литва", "name:ch"=>"Lituania", "name:co"=>"Lituania", "name:cs"=>"Litva", "name:cu"=>"Литъва", "name:cv"=>"Литва", "name:cy"=>"Lithwania", "name:da"=>"Litauen", "name:de"=>"Litauen", "name:dv"=>"ލިތުއޭނިއާ", "name:dz"=>"ལི་ཐུ་ནི་ཡ།", "name:ee"=>"Lithuania", "name:el"=>"Λιθουανία", "name:en"=>"Lithuania", "name:eo"=>"Litovio", "name:es"=>"Lituania", "name:et"=>"Leedu", "name:eu"=>"Lituania", "name:fa"=>"لیتوانی", "name:ff"=>"Lituwaniya", "name:fi"=>"Liettua", "name:fj"=>"Lituani", "name:fo"=>"Litava", "name:fr"=>"Lituanie", "name:fy"=>"Litouwen", "name:ga"=>"An Liotuáin", "name:gd"=>"Liotuàinia", "name:gl"=>"Lituania - Lietuva", "name:gn"=>"Lituaña", "name:gu"=>"લિથુઆનિયા", "name:gv"=>"Yn Litaan", "name:he"=>"ליטא", "name:hi"=>"लिथुआनिया", "name:hr"=>"Litva", "name:ht"=>"Lityani", "name:hu"=>"Litvánia", "name:hy"=>"Լիտվա", "name:ia"=>"Lituania", "name:id"=>"Lituania", "name:ie"=>"Lituania", "name:io"=>"Lituania", "name:is"=>"Litháen", "name:it"=>"Lituania", "name:iu"=>"ᓕᐋᑐᕙ", "name:ja"=>"リトアニア", "name:jv"=>"Lituania", "name:ka"=>"ლიტვა", "name:kg"=>"Lietuva", "name:ki"=>"Lithuania", "name:kk"=>"Литва", "name:kl"=>"Litaueni", "name:ko"=>"리투아니아", "name:ku"=>"Lîtvanya", "name:kv"=>"Литва", "name:kw"=>"Lithouani", "name:ky"=>"Литва", "name:la"=>"Lituania", "name:lb"=>"Litauen", "name:lg"=>"Lithueenia", "name:li"=>"Litauwe", "name:ln"=>"Litwani", "name:lt"=>"Lietuva", "name:lv"=>"Lietuva", "name:mg"=>"Litoania", "name:mi"=>"Rituānia", "name:mk"=>"Литванија", "name:ml"=>"ലിത്വാനിയ", "name:mn"=>"Литва", "name:mr"=>"लिथुएनिया", "name:ms"=>"Lithuania", "name:mt"=>"Litwanja", "name:my"=>"လစ်သူယေးနီးယားနိုင်ငံ", "name:na"=>"Rituainiya", "name:ne"=>"लिथुआनिया", "name:nl"=>"Litouwen", "name:nn"=>"Litauen", "name:no"=>"Litauen", "name:nv"=>"Łitʼoowę́ęya", "name:ny"=>"Lithuania", "name:oc"=>"Lituània", "name:or"=>"ଲିଥୁଆନିଆ", "name:os"=>"Литва", "name:pl"=>"Litwa", "name:ps"=>"لېتوانيا", "name:pt"=>"Lituânia", "name:qu"=>"Lituwa", "name:rm"=>"Lituania", "name:rn"=>"Lituania", "name:ro"=>"Lituania", "name:ru"=>"Литва", "name:rw"=>"Lituwaniya", "name:sa"=>"लेतुवा", "name:sc"=>"Lituània", "name:se"=>"Lietuva", "name:sg"=>"Lituanïi", "name:sh"=>"Litvanija", "name:sk"=>"Litva", "name:sl"=>"Litva", "name:so"=>"Lithuaniya", "name:sq"=>"Lituania", "name:sr"=>"Литванија", "name:ss"=>"Lithuwani", "name:st"=>"Lituania", "name:su"=>"Lituania", "name:sv"=>"Litauen", "name:sw"=>"Lituanya", "name:ta"=>"லித்துவேனியா", "name:te"=>"లిథువేనియా", "name:tg"=>"Литва", "name:th"=>"ประเทศลิทัวเนีย", "name:tk"=>"Litwa", "name:tl"=>"Litwaniya", "name:tr"=>"Litvanya", "name:ts"=>"Lithuania", "name:tt"=>"Литва", "name:ug"=>"لىتۋا", "name:uk"=>"Литва", "name:ur"=>"لتھووینیا", "name:uz"=>"Litva", "name:ve"=>"Lituania", "name:vi"=>"Litva", "name:vo"=>"Lietuvän", "name:wa"=>"Litwaneye", "name:wo"=>"Lituwaani", "name:yi"=>"ליטע", "name:yo"=>"Lituéníà", "name:zh"=>"立陶宛", "name:zu"=>"ILithuwaniya"
-ir "name"=>"ایران", "name:af"=>"Iran", "name:am"=>"ፋርስ", "name:an"=>"Irán", "name:ar"=>"إیران", "name:az"=>"İran", "name:ba"=>"Иран", "name:be"=>"Іран", "name:bg"=>"Иран", "name:bn"=>"ইরান", "name:bo"=>"ཡི་ལང་།", "name:br"=>"Iran", "name:bs"=>"Iran", "name:ca"=>"Iran", "name:ce"=>"Иран", "name:co"=>"Iranu", "name:cs"=>"Írán", "name:cy"=>"Iran", "name:da"=>"Iran", "name:de"=>"Iran", "name:dv"=>"އީރާން", "name:dz"=>"ཨི་རཱན་", "name:el"=>"Ιράν", "name:en"=>"Iran", "name:eo"=>"Irano", "name:es"=>"Irán", "name:et"=>"Iraan", "name:eu"=>"Iran", "name:fa"=>"ایران", "name:fi"=>"Iran", "name:fo"=>"Iran", "name:fr"=>"Iran", "name:fy"=>"Iran", "name:ga"=>"An Iaráin", "name:gd"=>"Ioràn", "name:gl"=>"Irán - ایران", "name:gn"=>"Irán", "name:gu"=>"ઈરાન", "name:gv"=>"Yn Eeraan", "name:ha"=>"Iran", "name:he"=>"איראן", "name:hi"=>"ईरान", "name:hr"=>"Iran", "name:ht"=>"Iran", "name:hu"=>"Irán", "name:hy"=>"Իրան", "name:ia"=>"Iran", "name:id"=>"Iran", "name:ie"=>"Iran", "name:io"=>"Iran", "name:is"=>"Íran", "name:it"=>"Iran", "name:ja"=>"イラン", "name:jv"=>"Iran", "name:ka"=>"ირანი", "name:kk"=>"Иран", "name:kl"=>"Iran", "name:km"=>"អ៊ីរ៉ង់", "name:kn"=>"ಇರಾನ್", "name:ko"=>"이란", "name:ks"=>"ایٖران", "name:ku"=>"Îran", "name:kv"=>"Иран", "name:kw"=>"Iran", "name:ky"=>"Иран", "name:la"=>"Irania", "name:lb"=>"Iran", "name:li"=>"Iran", "name:ln"=>"Iran", "name:lt"=>"Iranas", "name:lv"=>"Irāna", "name:mg"=>"Iran", "name:mi"=>"Irāna", "name:mk"=>"Иран", "name:ml"=>"ഇറാൻ", "name:mn"=>"Иран", "name:mr"=>"इराण", "name:ms"=>"Iran", "name:mt"=>"Iran", "name:my"=>"အီရန်နိုင်ငံ", "name:na"=>"Iran", "name:ne"=>"इरान", "name:nl"=>"Iran", "name:nn"=>"Iran", "name:no"=>"Iran", "name:nv"=>"Iiwą́ą́", "name:oc"=>"Iran", "name:or"=>"ଇରାନ", "name:os"=>"Иран", "name:pa"=>"ਇਰਾਨ", "name:pl"=>"Iran", "name:ps"=>"ایران", "name:pt"=>"Irão", "name:qu"=>"Iran", "name:rm"=>"Iran", "name:ro"=>"Iran", "name:ru"=>"Иран", "name:rw"=>"Irani", "name:sa"=>"ईरान", "name:sc"=>"Iran", "name:se"=>"Iran", "name:sh"=>"Iran", "name:si"=>"ඉරානය", "name:sk"=>"Irán", "name:sl"=>"Iran", "name:so"=>"Iiraan", "name:sq"=>"Irani", "name:sr"=>"Иран", "name:ss"=>"I-Irani", "name:su"=>"Iran", "name:sv"=>"Iran", "name:sw"=>"Uajemi", "name:ta"=>"ஈரான்", "name:te"=>"ఇరాన్", "name:tg"=>"Эрон", "name:th"=>"ประเทศอิหร่าน", "name:tk"=>"Eýran", "name:tl"=>"Iran", "name:tr"=>"İran", "name:tt"=>"Иран", "name:tw"=>"Iran", "name:ug"=>"ئىران", "name:uk"=>"Іран", "name:ur"=>"ایران", "name:uz"=>"Eron", "name:vi"=>"Iran", "name:vo"=>"Lirän", "name:wa"=>"Iran", "name:wo"=>"Iraan", "name:yi"=>"איראן", "name:yo"=>"Ìránì", "name:za"=>"Iran", "name:zh"=>"伊朗", "name:zu"=>"I-Irani"
-is "name"=>"Ísland", "name:af"=>"Ysland", "name:am"=>"አይስላንድ", "name:an"=>"Islandia", "name:ar"=>"آيسلندا", "name:az"=>"İslandiya", "name:ba"=>"Исландия", "name:be"=>"Ісландыя", "name:bg"=>"Исландия", "name:bi"=>"Iceland", "name:bm"=>"Aisland", "name:bn"=>"আইসল্যান্ড", "name:bo"=>"ཨཡིསུ་ལེན་ཌ།", "name:br"=>"Island", "name:bs"=>"Island", "name:ca"=>"Islàndia", "name:ce"=>"Исланди", "name:co"=>"Islanda", "name:cs"=>"Island", "name:cu"=>"Исландъ", "name:cv"=>"Исланди", "name:cy"=>"Gwlad yr Iâ", "name:da"=>"Island", "name:de"=>"Island", "name:dv"=>"އައިސްލަންޑަން", "name:dz"=>"ཨའིསི་ལེནཌ་", "name:ee"=>"Iceland", "name:el"=>"Ισλανδία", "name:en"=>"Iceland", "name:eo"=>"Islando", "name:es"=>"Islandia", "name:et"=>"Island", "name:eu"=>"Islandia", "name:fa"=>"ایسلند", "name:ff"=>"Islannda", "name:fi"=>"Islanti", "name:fo"=>"Ísland", "name:fr"=>"Islande", "name:fy"=>"Yslân", "name:ga"=>"An Íoslainn", "name:gd"=>"Innis Tìle", "name:gl"=>"Islandia", "name:gn"=>"Iylanda", "name:gu"=>"આઈસલેંડ", "name:gv"=>"Yn Eeslynn", "name:he"=>"איסלנד", "name:hi"=>"आइसलैण्ड", "name:hr"=>"Island", "name:ht"=>"Islann", "name:hu"=>"Izland", "name:hy"=>"Իսլանդիա", "name:ia"=>"Islanda", "name:id"=>"Islandia", "name:ie"=>"Island", "name:io"=>"Islando", "name:is"=>"Ísland", "name:it"=>"Islanda", "name:ja"=>"アイスランド", "name:jv"=>"Islandia", "name:ka"=>"ისლანდია", "name:kg"=>"Islande", "name:kk"=>"Исландия", "name:kl"=>"Islandi", "name:km"=>"ប្រទេសអាយឡែន", "name:kn"=>"ಐಸ್ಲ್ಯಾಂಡ್", "name:ko"=>"아이슬란드", "name:ku"=>"Îslenda", "name:kv"=>"Исландия", "name:kw"=>"Island", "name:ky"=>"Исландия", "name:la"=>"Islandia", "name:lb"=>"Island", "name:lg"=>"Isilandi", "name:li"=>"Iesland", "name:ln"=>"Islandi", "name:lo"=>"ອິດສະລັງ", "name:lt"=>"Islandija", "name:lv"=>"Islande", "name:mi"=>"Tiorangi", "name:mk"=>"Исланд", "name:ml"=>"ഐസ്ലാന്റ്", "name:mn"=>"Исланд", "name:mr"=>"आइसलँड", "name:ms"=>"Iceland", "name:mt"=>"Iżlanda", "name:my"=>"အိုက်စလန်နိုင်ငံ", "name:na"=>"Aiterand", "name:nb"=>"Island", "name:ne"=>"आइसल्याण्ड", "name:nl"=>"IJsland", "name:nn"=>"Island", "name:no"=>"Island", "name:nv"=>"Tin Bikéyah", "name:oc"=>"Islàndia", "name:or"=>"ଆଇସଲ୍ୟାଣ୍ଡ", "name:os"=>"Исланди", "name:pa"=>"ਆਈਸਲੈਂਡ", "name:pl"=>"Islandia", "name:ps"=>"آيسلېنډ", "name:pt"=>"Islândia", "name:qu"=>"Islandya", "name:rm"=>"Islanda", "name:ro"=>"Islanda", "name:ru"=>"Исландия", "name:rw"=>"Isilande", "name:sa"=>"आइसलैंड", "name:sc"=>"Islanda", "name:se"=>"Islánda", "name:sg"=>"Islânde", "name:sh"=>"Island", "name:si"=>"අයිස්ලන්තය", "name:sk"=>"Island", "name:sl"=>"Islandija", "name:sm"=>"Aiselani", "name:so"=>"Island", "name:sq"=>"Islanda", "name:sr"=>"Исланд", "name:ss"=>"Echweni", "name:st"=>"Iceland", "name:su"=>"Islandia", "name:sv"=>"Island", "name:sw"=>"Iceland", "name:ta"=>"ஐசுலாந்து", "name:te"=>"ఐస్లాండ్", "name:tg"=>"Исландия", "name:th"=>"ประเทศไอซ์แลนด์", "name:tk"=>"Islandiýa", "name:tl"=>"Lupangyelo", "name:tr"=>"İzlanda", "name:tt"=>"Исландия", "name:ug"=>"ئىسلاندىيە", "name:uk"=>"Ісландія", "name:ur"=>"آئس لینڈ", "name:uz"=>"Islandiya", "name:vi"=>"Iceland", "name:vo"=>"Lisladeän", "name:wa"=>"Izlande", "name:wo"=>"Islaand", "name:yi"=>"איסלאנד", "name:yo"=>"Íslándì", "name:zh"=>"冰岛", "name:zu"=>"I-Ayisilandi"
-mm "name"=>"မြန်မာ", "name:af"=>"Mianmar", "name:am"=>"ምየንማ", "name:an"=>"Myanmar", "name:ar"=>"بورما", "name:az"=>"Myanma", "name:ba"=>"Мьянма", "name:be"=>"М'янма", "name:bg"=>"Мианмар", "name:bi"=>"Burma", "name:bn"=>"মায়ানমার", "name:bo"=>"བྷར་མ།", "name:br"=>"Myanmar", "name:bs"=>"Mijanmar", "name:ca"=>"Myanmar", "name:ce"=>"Мьянма", "name:cs"=>"Myanmar", "name:cv"=>"Мьянма", "name:cy"=>"Myanmar", "name:da"=>"Myanmar", "name:de"=>"Myanmar", "name:dv"=>"ބަރުމާ", "name:dz"=>"མེ་མར་", "name:el"=>"Μιανμάρ", "name:en"=>"Myanmar", "name:eo"=>"Birmo / Mjanmao", "name:es"=>"Myanmar", "name:et"=>"Birma", "name:eu"=>"Myanmar", "name:fa"=>"میانمار", "name:fi"=>"Myanmar", "name:fo"=>"Burma", "name:fr"=>"Birmanie", "name:fy"=>"Birma", "name:ga"=>"Maenmar", "name:gd"=>"Mianmar", "name:gl"=>"Myanmar", "name:gu"=>"બર્મા", "name:gv"=>"Myanmar", "name:he"=>"מיאנמר", "name:hi"=>"म्यान्मार", "name:hr"=>"Mijanmar", "name:ht"=>"Bimani", "name:hu"=>"Mianmar", "name:hy"=>"Մյանմա", "name:ia"=>"Birmania", "name:id"=>"Myanmar", "name:ie"=>"Myanmar", "name:io"=>"Myanmar", "name:is"=>"Búrma", "name:it"=>"Birmania", "name:ja"=>"ミャンマー", "name:jv"=>"Myanmar", "name:ka"=>"მიანმარი", "name:ki"=>"Myanmar", "name:kk"=>"Мианма", "name:km"=>"មីយ៉ាន់ម៉ា", "name:kn"=>"ಮಯನ್ಮಾರ್", "name:ko"=>"미얀마", "name:ku"=>"Myanmar", "name:kv"=>"Мьянма", "name:kw"=>"Byrmani", "name:ky"=>"Мьянма", "name:la"=>"Birmania", "name:lb"=>"Myanmar", "name:li"=>"Myanmar", "name:lo"=>"ປະເທດມຽນມາ", "name:lt"=>"Mianmaras", "name:lv"=>"Mjanma", "name:mg"=>"Myanmara", "name:mi"=>"Pēma", "name:mk"=>"Мјанмар", "name:ml"=>"മ്യാന്മാർ", "name:mn"=>"Мьянмар", "name:mr"=>"म्यानमार", "name:ms"=>"Myanmar", "name:mt"=>"Myanmar", "name:my"=>"မြန်မာ", "name:na"=>"Miyanmar", "name:ne"=>"म्यानमार", "name:nl"=>"Myanmar", "name:nn"=>"Myanmar", "name:no"=>"Myanmar", "name:oc"=>"Birmania", "name:or"=>"ବର୍ମା", "name:os"=>"Мьянмæ", "name:pa"=>"ਮਿਆਂਮਾਰ", "name:pl"=>"Mjanma", "name:ps"=>"ميانمار", "name:pt"=>"Birmânia", "name:qu"=>"Myanmar", "name:ro"=>"Birmania", "name:ru"=>"Мьянма", "name:rw"=>"Mayanimari", "name:sa"=>"म्यान्मार", "name:sc"=>"Birmania", "name:se"=>"Myanmar", "name:sh"=>"Mianmar", "name:si"=>"බුරුමය", "name:sk"=>"Mjanmarsko", "name:sl"=>"Mjanmar", "name:so"=>"Myanmar", "name:sq"=>"Birmania", "name:sr"=>"Мјанмар", "name:ss"=>"IMayanima", "name:su"=>"Myanmar", "name:sv"=>"Myanmar", "name:sw"=>"Myanmar", "name:ta"=>"மியான்மர்", "name:te"=>"మయన్మార్", "name:tg"=>"Мянма", "name:th"=>"ประเทศพม่า", "name:tk"=>"Mýanma", "name:tl"=>"Myanmar", "name:tr"=>"Myanmar", "name:tt"=>"Мьянма", "name:ug"=>"بىرما", "name:uk"=>"М'янма", "name:ur"=>"میانمار", "name:uz"=>"Birma", "name:vi"=>"Myanma", "name:vo"=>"Mianmarän", "name:wo"=>"Miyanmaar", "name:yi"=>"מיאנמאר", "name:yo"=>"Myanmar", "name:za"=>"Mienjdien", "name:zh"=>"缅甸"
-mr "name"=>"موريتانيا", "name:af"=>"Mauritanië", "name:am"=>"ሞሪታኒያ", "name:an"=>"Mauritania", "name:ar"=>"موريتانيا", "name:az"=>"Mavritaniya", "name:be"=>"Маўрытанія", "name:bg"=>"Мавритания", "name:bm"=>"Moritani", "name:bn"=>"মৌরিতানিয়া", "name:bo"=>"མའུ་རི་ཏ་ནི་ཡ།", "name:br"=>"Maouritania", "name:bs"=>"Mauritanija", "name:ca"=>"Mauritània", "name:ce"=>"Мавритани", "name:cs"=>"Mauritánie", "name:cv"=>"Мавритани", "name:cy"=>"Mauritania", "name:da"=>"Mauretanien", "name:de"=>"Mauretanien", "name:dv"=>"މޮރިޓާނިއާ", "name:ee"=>"Mauritania", "name:el"=>"Μαυριτανία", "name:en"=>"Mauritania", "name:eo"=>"Maŭritanio", "name:es"=>"Mauritania", "name:et"=>"Mauritaania", "name:eu"=>"Mauritania", "name:fa"=>"موریتانی", "name:ff"=>"Muritani", "name:fi"=>"Mauritania", "name:fo"=>"Móritania", "name:fr"=>"Mauritanie", "name:fy"=>"Mauritaanje", "name:ga"=>"An Mháratáin", "name:gd"=>"Moratainia", "name:gl"=>"Mauritania", "name:gv"=>"Yn Varitaan", "name:ha"=>"Muritaniya", "name:he"=>"מאוריטניה", "name:hi"=>"मॉरीतानिया", "name:hr"=>"Mauretanija", "name:ht"=>"Moritani", "name:hu"=>"Mauritánia", "name:hy"=>"Մավրիտանիա", "name:ia"=>"Mauritania", "name:id"=>"Mauritania", "name:ie"=>"Mauritania", "name:io"=>"Mauritania", "name:is"=>"Máritanía", "name:it"=>"Mauritania", "name:ja"=>"モーリタニア", "name:jv"=>"Mauritania", "name:ka"=>"მავრიტანია", "name:kg"=>"Muritania", "name:kk"=>"Мавритания", "name:kn"=>"ಮಾರಿಟಾನಿಯ", "name:ko"=>"모리타니", "name:ku"=>"Morîtanya", "name:kw"=>"Moritani", "name:la"=>"Mauritania", "name:lb"=>"Mauretanien", "name:li"=>"Mauritanië", "name:ln"=>"Moritani", "name:lt"=>"Mauritanija", "name:lv"=>"Mauritānija", "name:mg"=>"Maoritania", "name:mi"=>"Mauritānia", "name:mk"=>"Мавританија", "name:ml"=>"മൗറിത്താനിയ", "name:mn"=>"Мавритан", "name:mr"=>"मॉरिटानिया", "name:ms"=>"Mauritania", "name:mt"=>"Mawritanja", "name:my"=>"မော်ရီတေးနီးယားနိုင်ငံ", "name:nl"=>"Mauritanië", "name:nn"=>"Mauritania", "name:no"=>"Mauritania", "name:nv"=>"Moowitéínya", "name:oc"=>"Mauritània", "name:or"=>"ମୋରିତାନିଆ", "name:os"=>"Мавритани", "name:pa"=>"ਮੌਰੀਤਾਨੀਆ", "name:pl"=>"Mauretania", "name:ps"=>"موریتاني", "name:pt"=>"Mauritânia", "name:qu"=>"Muritanya", "name:ro"=>"Mauritania", "name:ru"=>"Мавритания", "name:rw"=>"Moritaniya", "name:sa"=>"मारिटेनिया", "name:sc"=>"Mauritània", "name:se"=>"Mauritánia", "name:sg"=>"Moritanïi", "name:sk"=>"Mauritánia", "name:sl"=>"Mavretanija", "name:sn"=>"Mauritania", "name:so"=>"Mauritania", "name:sq"=>"Mauritania", "name:sr"=>"Мауританија", "name:ss"=>"IMolithaniya", "name:st"=>"Mauritania", "name:su"=>"Mauritania", "name:sv"=>"Mauretanien", "name:sw"=>"Mauritania", "name:ta"=>"மூரித்தானியா", "name:te"=>"మౌరిటానియ", "name:tg"=>"Мавритания", "name:th"=>"ประเทศมอริเตเนีย", "name:ti"=>"ሞሪታኒያ", "name:tk"=>"Mawritaniýa", "name:tl"=>"Mauritania", "name:tr"=>"Moritanya", "name:ts"=>"Maritana", "name:tt"=>"Мавритания", "name:ug"=>"ماۋرىتانىيە", "name:uk"=>"Мавританія", "name:ur"=>"موریتانیہ", "name:uz"=>"Mavritaniya", "name:vi"=>"Mauritanie", "name:vo"=>"Moritän", "name:wa"=>"Moritanreye", "name:wo"=>"Gànnaar", "name:xh"=>"Mauritania", "name:yi"=>"מאריטאניע", "name:yo"=>"Mauritáníà", "name:zh"=>"毛里塔尼亚", "name:zu"=>"IMoritaniya"
-lv "name"=>"Latvija", "name:ab"=>"Латвиа", "name:af"=>"Letland", "name:ak"=>"Latvia", "name:am"=>"ላትቪያ", "name:an"=>"Letonia", "name:ar"=>"لاتفيا", "name:av"=>"Латвия", "name:az"=>"Latviya", "name:ba"=>"Латвия", "name:be"=>"Латвія", "name:bg"=>"Латвия", "name:bh"=>"लैटविया", "name:bi"=>"Latvia", "name:bn"=>"লাতভিয়া", "name:bo"=>"ལ་ཊ་ཝིཡ།", "name:br"=>"Latvia", "name:bs"=>"Latvija", "name:ca"=>"Letònia", "name:ce"=>"Латви", "name:ch"=>"Letonia", "name:co"=>"Lettonia", "name:cs"=>"Lotyšsko", "name:cu"=>"Латвїꙗ", "name:cv"=>"Латви", "name:cy"=>"Latfia", "name:da"=>"Letland", "name:de"=>"Lettland", "name:dv"=>"ލެޓުވިއާ", "name:dz"=>"ལེཊི་བི་ཡ།", "name:ee"=>"Latvia", "name:el"=>"Λετονία", "name:en"=>"Latvia", "name:eo"=>"Latvio", "name:es"=>"Letonia", "name:et"=>"Läti", "name:eu"=>"Letonia", "name:fa"=>"لتونی", "name:ff"=>"Latvia", "name:fi"=>"Latvia", "name:fo"=>"Lettland", "name:fr"=>"Lettonie", "name:fy"=>"Letlân", "name:ga"=>"An Laitvia", "name:gd"=>"An Laitbhe", "name:gl"=>"Letonia", "name:gn"=>"Letoña", "name:gu"=>"લાટવિયા", "name:gv"=>"Yn Latvey", "name:ha"=>"Laitfiya", "name:he"=>"לטביה", "name:hi"=>"लातविया", "name:hr"=>"Latvija", "name:ht"=>"Letoni", "name:hu"=>"Lettország", "name:hy"=>"Լատվիա", "name:ia"=>"Latvia", "name:id"=>"Latvia", "name:ie"=>"Latvia", "name:ig"=>"Latvia", "name:io"=>"Latvia", "name:is"=>"Lettland", "name:it"=>"Lettonia", "name:ja"=>"ラトビア", "name:jv"=>"Latvia", "name:ka"=>"ლატვია", "name:kg"=>"Latvia", "name:kk"=>"Латвия", "name:kl"=>"Letlandi", "name:kn"=>"ಲಾಟ್ವಿಯ", "name:ko"=>"라트비아", "name:ku"=>"Letonya", "name:kv"=>"Латвия", "name:kw"=>"Latvi", "name:ky"=>"Латвия", "name:la"=>"Lettonia", "name:lb"=>"Lettland", "name:lg"=>"Latvia", "name:li"=>"Letland", "name:ln"=>"Letoni", "name:lo"=>"ປະເທດລັດເວຍ", "name:lt"=>"Latvija", "name:lv"=>"Latvija", "name:mg"=>"Latvia", "name:mi"=>"Rāwhia", "name:mk"=>"Летонија", "name:ml"=>"ലാത്വിയ", "name:mn"=>"Латви", "name:mr"=>"लात्व्हिया", "name:ms"=>"Latvia", "name:mt"=>"Latvja", "name:my"=>"လတ်ဗီယာနိုင်ငံ", "name:na"=>"Ratebiya", "name:ne"=>"लात्भिया", "name:nl"=>"Letland", "name:nn"=>"Latvia", "name:no"=>"Latvia", "name:nv"=>"Létbiiya", "name:oc"=>"Letònia", "name:om"=>"Laativiyaa", "name:or"=>"ଲାଟଭିଆ", "name:os"=>"Латви", "name:pa"=>"ਲਾਤਵੀਆ", "name:pi"=>"लाट्विया", "name:pl"=>"Łotwa", "name:pt"=>"Letónia", "name:qu"=>"Litunya", "name:rm"=>"Lettonia", "name:ro"=>"Letonia", "name:ru"=>"Латвия", "name:rw"=>"Lativiya", "name:sa"=>"लाट्विया", "name:sc"=>"Lettonia", "name:se"=>"Latvia", "name:sh"=>"Letonija", "name:si"=>"ලැට්වියාව", "name:sk"=>"Lotyšsko", "name:sl"=>"Latvija", "name:sm"=>"Lativia", "name:sn"=>"Latvia", "name:so"=>"Latfiya", "name:sq"=>"Letonia", "name:sr"=>"Летонија", "name:ss"=>"ILathiviya", "name:st"=>"Latvia", "name:su"=>"Latvia", "name:sv"=>"Lettland", "name:sw"=>"Latvia", "name:ta"=>"லாத்வியா", "name:te"=>"లాట్వియా", "name:tg"=>"Латвия", "name:th"=>"ประเทศลัตเวีย", "name:tk"=>"Latwiýa", "name:tl"=>"Latbiya", "name:tr"=>"Letonya", "name:ts"=>"Latvia", "name:tt"=>"Латвия", "name:tw"=>"Latvia", "name:ug"=>"لاتۋىيە", "name:uk"=>"Латвія", "name:ur"=>"لٹویا", "name:uz"=>"Latviya", "name:vi"=>"Latvia", "name:vo"=>"Latviyän", "name:wa"=>"Letoneye", "name:wo"=>"Letóoni", "name:yi"=>"לעטלאנד", "name:yo"=>"Látfíà", "name:za"=>"Latvia", "name:zh"=>"拉脫維亞", "name:zu"=>"ILatviya"
-mx "name"=>"México", "name:af"=>"Meksiko", "name:am"=>"ሜክሲኮ", "name:an"=>"Mexico", "name:ar"=>"المكسيك", "name:ay"=>"Mïxiku", "name:az"=>"Meksika", "name:ba"=>"Мексика", "name:be"=>"Мексіка", "name:bg"=>"Мексико", "name:bi"=>"Mexico", "name:bm"=>"Mɛkisiki", "name:bn"=>"মেক্সিকো", "name:bo"=>"མེག་སི་ཀོ།", "name:br"=>"Mec'hiko", "name:bs"=>"Meksiko", "name:ca"=>"Mèxic", "name:ce"=>"Мексика", "name:co"=>"Messicu", "name:cs"=>"Mexiko", "name:cv"=>"Мексика", "name:cy"=>"Mexico", "name:da"=>"Mexico", "name:de"=>"Mexiko", "name:dv"=>"މެކްސިކޯ", "name:dz"=>"མེཀ་སི་ཀོ", "name:ee"=>"Mexico", "name:el"=>"Μεξικό", "name:en"=>"Mexico", "name:eo"=>"Meksiko", "name:es"=>"México", "name:et"=>"Mehhiko", "name:eu"=>"Mexiko", "name:fa"=>"مکزیک", "name:fi"=>"Meksiko", "name:fo"=>"Meksiko", "name:fr"=>"Mexique", "name:fy"=>"Meksiko", "name:ga"=>"Meicsiceo", "name:gd"=>"Meagsago", "name:gl"=>"México", "name:gn"=>"Méjiko", "name:gu"=>"મેક્સિકો", "name:gv"=>"Meksico", "name:he"=>"מקסיקו", "name:hi"=>"मेक्सिको", "name:hr"=>"Meksiko", "name:ht"=>"Meksik", "name:hu"=>"Mexikó", "name:hy"=>"Մեքսիկա", "name:ia"=>"Mexico", "name:id"=>"Meksiko", "name:ik"=>"Mexiqo", "name:io"=>"Mexikia", "name:is"=>"Mexíkó", "name:it"=>"Messico", "name:iu"=>"ᒦᒃᓰᖂ", "name:ja"=>"メキシコ", "name:jv"=>"Mèksiko", "name:ka"=>"მექსიკა", "name:kk"=>"Мексика", "name:kl"=>"Mexico", "name:km"=>"ម៉ិកស៊ិក", "name:kn"=>"ಮೆಕ್ಸಿಕೋ", "name:ko"=>"멕시코", "name:ku"=>"Meksîk", "name:kv"=>"Мексика", "name:kw"=>"Meksiko", "name:ky"=>"Мексика", "name:la"=>"Mexicum", "name:lb"=>"Mexiko", "name:li"=>"Mexico", "name:ln"=>"Mexiko", "name:lt"=>"Meksika", "name:lv"=>"Meksika", "name:mg"=>"Meksika", "name:mi"=>"Mēhiko", "name:mk"=>"Мексико", "name:ml"=>"മെക്സിക്കോ", "name:mn"=>"Мексик", "name:mr"=>"मेक्सिको", "name:ms"=>"Mexico", "name:mt"=>"Messiku", "name:my"=>"မက္ကဆီကိုနိုင်ငံ", "name:na"=>"Meketiko", "name:ne"=>"मेक्सिको", "name:nl"=>"Mexico", "name:nn"=>"Mexico", "name:no"=>"Mexico", "name:nv"=>"Méhigo", "name:oc"=>"Mexic", "name:or"=>"ମେକ୍ସିକୋ", "name:os"=>"Мексикæ", "name:pa"=>"ਮੈਕਸੀਕੋ", "name:pl"=>"Meksyk", "name:pt"=>"México", "name:qu"=>"Mishiku", "name:rm"=>"Mexico", "name:ro"=>"Mexic", "name:ru"=>"Мексика", "name:rw"=>"Megizike", "name:sc"=>"Mèssico", "name:se"=>"Meksiko", "name:sh"=>"Meksiko", "name:sk"=>"Mexiko", "name:sl"=>"Mehika", "name:sm"=>"Mexico", "name:sn"=>"Mexico", "name:so"=>"Meksiko", "name:sq"=>"Meksika", "name:sr"=>"Мексико", "name:ss"=>"IMekisikho", "name:su"=>"Méksiko", "name:sv"=>"Mexico", "name:sw"=>"Mexiko", "name:ta"=>"மெக்சிக்கோ", "name:te"=>"మెక్సికో", "name:tg"=>"Мексика", "name:th"=>"ประเทศเม็กซิโก", "name:tk"=>"Meksika", "name:tl"=>"Mehiko", "name:tr"=>"Meksika", "name:tt"=>"Мексика", "name:tw"=>"Mexico", "name:ug"=>"مېكسىكا", "name:uk"=>"Мексика", "name:ur"=>"میکسیکو", "name:uz"=>"Meksika", "name:vi"=>"México", "name:vo"=>"Mäxikän", "name:wo"=>"Meksik", "name:yi"=>"מעקסיקא", "name:yo"=>"Mẹ́ksíkò", "name:zh"=>"墨西哥", "name:zu"=>"IMekisiko"
-sr "name"=>"Suriname", "name:af"=>"Suriname", "name:am"=>"ሱሪናም", "name:an"=>"Surinam", "name:ar"=>"سورينام", "name:ay"=>"Suriname", "name:az"=>"Surinam", "name:ba"=>"Суринам", "name:be"=>"Сурынам", "name:bg"=>"Суринам", "name:bn"=>"সুরিনাম", "name:bo"=>"སུ་རི་ནེམ།", "name:br"=>"Surinam", "name:bs"=>"Surinam", "name:ca"=>"Surinam", "name:ce"=>"Суринам", "name:cs"=>"Surinam", "name:cv"=>"Суринам", "name:cy"=>"Suriname", "name:da"=>"Surinam", "name:de"=>"Suriname", "name:dv"=>"ސުރިނާމް", "name:ee"=>"Suriname", "name:el"=>"Σουρινάμ", "name:en"=>"Suriname", "name:eo"=>"Surinamo", "name:es"=>"Surinam", "name:et"=>"Suriname", "name:eu"=>"Surinam", "name:fa"=>"سورینام", "name:fi"=>"Suriname", "name:fo"=>"Surinam", "name:fr"=>"Suriname", "name:fy"=>"Suriname", "name:ga"=>"Suranam", "name:gd"=>"Suranam", "name:gl"=>"Suriname", "name:gn"=>"Surinam", "name:gu"=>"સુરીનામ", "name:gv"=>"Yn Toorinam", "name:he"=>"סורינאם", "name:hi"=>"सूरीनाम", "name:hr"=>"Surinam", "name:ht"=>"Sirinam", "name:hu"=>"Suriname", "name:hy"=>"Սուրինամ", "name:id"=>"Suriname", "name:ie"=>"Surinam", "name:io"=>"Surinam", "name:is"=>"Súrínam", "name:it"=>"Suriname", "name:ja"=>"スリナム", "name:jv"=>"Suriname", "name:ka"=>"სურინამი", "name:kk"=>"Суринам", "name:kl"=>"Suriname", "name:kn"=>"ಸುರಿನಾಮ್", "name:ko"=>"수리남", "name:ku"=>"Sûrînam", "name:kw"=>"Surinam", "name:la"=>"Surinamia", "name:lb"=>"Surinam", "name:li"=>"Suriname", "name:ln"=>"Suriname", "name:lt"=>"Surinamas", "name:lv"=>"Surinama", "name:mi"=>"Hurināme", "name:mk"=>"Суринам", "name:ml"=>"സുരിനാം", "name:mn"=>"Суринам", "name:mr"=>"सुरिनाम", "name:ms"=>"Suriname", "name:mt"=>"Surinam", "name:my"=>"ဆူရာနမ်နိုင်ငံ", "name:nl"=>"Suriname", "name:nn"=>"Surinam", "name:no"=>"Surinam", "name:nv"=>"Sówinam", "name:oc"=>"Surinam", "name:or"=>"ସରିନମ", "name:os"=>"Суринам", "name:pa"=>"ਸੂਰੀਨਾਮ", "name:pl"=>"Surinam", "name:ps"=>"سورينام", "name:pt"=>"Suriname", "name:qu"=>"Surinam", "name:rm"=>"Suriname", "name:ro"=>"Surinam", "name:ru"=>"Суринам", "name:rw"=>"Surinamu", "name:se"=>"Suriname", "name:sh"=>"Surinam", "name:sk"=>"Surinam", "name:sl"=>"Surinam", "name:so"=>"Surinam", "name:sq"=>"Surinami", "name:sr"=>"Суринам", "name:su"=>"Suriname", "name:sv"=>"Surinam", "name:sw"=>"Surinam", "name:ta"=>"சுரிநாம்", "name:te"=>"సురినామ్", "name:th"=>"ประเทศซูรินาเม", "name:tl"=>"Surinam", "name:tr"=>"Surinam", "name:tt"=>"Суринам", "name:ug"=>"سۇرىنام", "name:uk"=>"Суринам", "name:ur"=>"سرینام", "name:uz"=>"Surinam", "name:vi"=>"Suriname", "name:vo"=>"Surinän", "name:wo"=>"Surinaam", "name:yi"=>"סורינאם", "name:yo"=>"Sùrìnámù", "name:zh"=>"蘇利南"
-pe "name"=>"Perú", "name:ab"=>"Перу", "name:af"=>"Peru", "name:ak"=>"Peru", "name:am"=>"ፔሩ", "name:an"=>"Perú", "name:ar"=>"بيرو", "name:ay"=>"Piruw", "name:az"=>"Peru", "name:ba"=>"Перу", "name:be"=>"Перу", "name:bg"=>"Перу", "name:bi"=>"Peru", "name:bm"=>"Peru", "name:bn"=>"পেরু", "name:bo"=>"པེ་རུ།", "name:br"=>"Perou", "name:bs"=>"Peru", "name:ca"=>"Perú", "name:ce"=>"Перу", "name:ch"=>"Perú", "name:co"=>"Perù", "name:cs"=>"Peru", "name:cv"=>"Перу", "name:cy"=>"Periw", "name:da"=>"Peru", "name:de"=>"Peru", "name:dv"=>"ޕެރޫ", "name:ee"=>"Peru", "name:el"=>"Περού", "name:en"=>"Peru", "name:eo"=>"Peruo", "name:es"=>"Perú", "name:et"=>"Peruu", "name:eu"=>"Peru", "name:fa"=>"پرو", "name:ff"=>"Peru", "name:fi"=>"Peru", "name:fo"=>"Peru", "name:fr"=>"Pérou", "name:fy"=>"Perû", "name:ga"=>"Peiriú", "name:gd"=>"Pearù", "name:gl"=>"Perú", "name:gn"=>"Perũ", "name:gu"=>"પેરુ", "name:gv"=>"Yn Pheroo", "name:he"=>"פרו", "name:hi"=>"पेरू", "name:hr"=>"Peru", "name:ht"=>"Pewou", "name:hu"=>"Peru", "name:hy"=>"Պերու", "name:ia"=>"Peru", "name:id"=>"Peru", "name:ie"=>"Perú", "name:io"=>"Peru", "name:is"=>"Perú", "name:it"=>"Perù", "name:iu"=>"ᐱᕉ", "name:ja"=>"ペルー", "name:jv"=>"Peru", "name:ka"=>"პერუ", "name:ki"=>"Peru", "name:kk"=>"Перу", "name:kl"=>"Peru", "name:kn"=>"ಪೆರು", "name:ko"=>"페루", "name:ku"=>"Perû", "name:kv"=>"Перу", "name:kw"=>"Perou", "name:ky"=>"Перу", "name:la"=>"Peruvia", "name:lb"=>"Peru", "name:li"=>"Peru", "name:ln"=>"Peru", "name:lt"=>"Peru", "name:lv"=>"Peru", "name:mi"=>"Perū", "name:mk"=>"Перу", "name:ml"=>"പെറു", "name:mn"=>"Перу", "name:mr"=>"पेरू", "name:ms"=>"Peru", "name:mt"=>"Perù", "name:my"=>"ပီရူးနိုင်ငံ", "name:na"=>"Peru", "name:ne"=>"पेरू", "name:nl"=>"Peru", "name:nn"=>"Peru", "name:no"=>"Peru", "name:oc"=>"Peró", "name:or"=>"ପେରୁ", "name:os"=>"Перу", "name:pa"=>"ਪੇਰੂ", "name:pl"=>"Peru", "name:ps"=>"پيرو", "name:pt"=>"Peru", "name:qu"=>"Piruw", "name:rm"=>"Peru", "name:ro"=>"Peru", "name:ru"=>"Перу", "name:rw"=>"Peru", "name:sa"=>"पेरु", "name:se"=>"Peru", "name:sh"=>"Peru", "name:si"=>"පේරූ", "name:sk"=>"Peru", "name:sl"=>"Peru", "name:sn"=>"Peru", "name:so"=>"Peru", "name:sq"=>"Peruja", "name:sr"=>"Перу", "name:ss"=>"IPheru", "name:su"=>"Péru", "name:sv"=>"Peru", "name:sw"=>"Peru", "name:ta"=>"பெரு", "name:te"=>"పెరూ", "name:tg"=>"Перу", "name:th"=>"ประเทศเปรู", "name:tk"=>"Peru", "name:tl"=>"Peru", "name:tr"=>"Peru", "name:tt"=>"Перу", "name:ug"=>"پېرۇ", "name:uk"=>"Перу", "name:ur"=>"پیرو", "name:uz"=>"Peru", "name:vi"=>"Peru", "name:vo"=>"Peruvän", "name:wo"=>"Peru", "name:yi"=>"פערו", "name:yo"=>"Perú", "name:zh"=>"秘鲁", "name:zu"=>"Peru"
-sa "name"=>"السعودية", "name:af"=>"Saoedi-Arabië", "name:am"=>"ሳዑዲ አረቢያ", "name:an"=>"Arabia Saudí", "name:ar"=>"السعودية", "name:av"=>"СагIудиязул ГIарабия", "name:az"=>"Səudiyyə Ərəbistanı", "name:ba"=>"Сәғүд Ғәрәбстаны", "name:be"=>"Саудаўская Аравія", "name:bg"=>"Саудитска Арабия", "name:bm"=>"Saudia Arabu ka Faamamara", "name:bn"=>"সৌদি আরব", "name:bo"=>"སའུ་དི་ཨ་ར་པི་ཡ།", "name:br"=>"Arabia Saoudat", "name:bs"=>"Saudijska Arabija", "name:ca"=>"Aràbia Saudita", "name:ce"=>"СаӀудийн Ӏаьрбийчоь", "name:cs"=>"Saúdská Arábie", "name:cv"=>"Сауд Аравийĕ", "name:cy"=>"Saudi Arabia", "name:da"=>"Saudi-Arabien", "name:de"=>"Saudi-Arabien", "name:dv"=>"ސައޫދީ އަރަބިއްޔާ", "name:dz"=>"སའུ་དི་ཨེ་ར་སྦི་ཡ་", "name:el"=>"Σαουδική Αραβία", "name:en"=>"Saudi Arabia", "name:eo"=>"Sauda Arabio", "name:es"=>"Arabia Saudita", "name:et"=>"Saudi Araabia", "name:eu"=>"Saudi Arabia", "name:fa"=>"عربستان سعودی", "name:fi"=>"Saudi-Arabia", "name:fo"=>"Saudi-Arabia", "name:fr"=>"Arabie saoudite", "name:fy"=>"Saûdy-Araabje", "name:ga"=>"An Araib Shádach", "name:gd"=>"Aràibia nan Sabhd", "name:gl"=>"Arabia Saudí", "name:gn"=>"Aravia Saudíta", "name:gu"=>"સાઉદી અરેબિયા", "name:gv"=>"Yn Araab Saudi", "name:he"=>"ערב הסעודית", "name:hi"=>"सउदी अरब", "name:hr"=>"Saudijska Arabija", "name:ht"=>"Arabi Sawoudit", "name:hu"=>"Szaúd-Arábia", "name:hy"=>"Սաուդյան Արաբիա", "name:ia"=>"Arabia Saudita", "name:id"=>"Arab Saudi", "name:ie"=>"Saudi Arabia", "name:io"=>"Saudia Arabia", "name:is"=>"Sádí-Arabía", "name:it"=>"Arabia Saudita", "name:ja"=>"サウジアラビア", "name:jv"=>"Arab Saudi", "name:ka"=>"საუდის არაბეთი", "name:kk"=>"Сауд Арабиясы", "name:kl"=>"Saudi Arabia", "name:km"=>"អារ៉ាប៊ីសាអូឌីត", "name:kn"=>"ಸೌದಿ ಅರೆಬಿಯ", "name:ko"=>"사우디아라비아", "name:ku"=>"Erebistana Siyûdî", "name:kv"=>"Саудса Аравия", "name:kw"=>"Arabi Saoudek", "name:ky"=>"Сауд Арабия Падышалыгы", "name:la"=>"Arabia Saudiana", "name:lb"=>"Saudi-Arabien", "name:li"=>"Saoedi-Arabië", "name:ln"=>"Saudi Arabia", "name:lt"=>"Saudo Arabija", "name:lv"=>"Saūda Arābija", "name:mk"=>"Саудиска Арабија", "name:ml"=>"സൗദി അറേബ്യ", "name:mn"=>"Саудын Араб", "name:mr"=>"सौदी अरेबिया", "name:ms"=>"Arab Saudi", "name:mt"=>"Arabja Sawdija", "name:my"=>"ဆော်ဒီအာရေဗျနိုင်ငံ", "name:na"=>"Taudiarabiya", "name:ne"=>"साउदी अरब", "name:nl"=>"Saoedi-Arabië", "name:nn"=>"Saudi-Arabia", "name:no"=>"Saudi-Arabia", "name:nv"=>"Ásáí Bikéyah Saʼoodí", "name:oc"=>"Arabia Saudita", "name:or"=>"ସାଉଦି ଆରବ", "name:os"=>"Сауды Арави", "name:pa"=>"ਸਉਦੀ ਅਰਬ", "name:pl"=>"Arabia Saudyjska", "name:ps"=>"سعودي عربستان", "name:pt"=>"Arábia Saudita", "name:qu"=>"Sawud Arabya", "name:rm"=>"Arabia Saudita", "name:ro"=>"Arabia Saudită", "name:ru"=>"Саудовская Аравия", "name:rw"=>"Arabiya Sawudite", "name:sa"=>"सऊदी अरब", "name:se"=>"Saudi-Arábia", "name:sh"=>"Saudijska Arabija", "name:si"=>"සවුදි අරාබියාව", "name:sk"=>"Saudská Arábia", "name:sl"=>"Saudova Arabija", "name:so"=>"Sacuudi Carabiya", "name:sq"=>"Arabia Saudite", "name:sr"=>"Саудијска Арабија", "name:ss"=>"I-Arabhiya", "name:su"=>"Saudi Arabia", "name:sv"=>"Saudiarabien", "name:sw"=>"Saudia", "name:ta"=>"சவூதி அரேபியா", "name:te"=>"సౌదీ అరేబియా", "name:tg"=>"Арабистони Саудӣ", "name:th"=>"ประเทศซาอุดีอาระเบีย", "name:tk"=>"Saud Arabystany", "name:tl"=>"Arabyang Saudi", "name:tr"=>"Suudi Arabistan", "name:tt"=>"Согуд Гарәбстаны", "name:ug"=>"سەئۇدى ئەرەبىستان", "name:uk"=>"Саудівська Аравія", "name:ur"=>"سعودی عرب", "name:uz"=>"Saudiya Arabistoni", "name:vi"=>"Ả Rập Saudi", "name:vo"=>"Sauda-Larabän", "name:wo"=>"Araabi Sawdit", "name:yi"=>"סאודי אראביע", "name:yo"=>"Sáúdí Arábíà", "name:zh"=>"沙特阿拉伯"
-pl "name"=>"Polska", "name:ab"=>"Полша", "name:af"=>"Pole", "name:ak"=>"Poland", "name:am"=>"ፖላንድ", "name:an"=>"Polonia", "name:ar"=>"بولندا", "name:ay"=>"Puluña", "name:az"=>"Polşa", "name:ba"=>"Польша", "name:be"=>"Польшча", "name:bg"=>"Полша", "name:bi"=>"Poland", "name:bn"=>"পোল্যান্ড", "name:bo"=>"ཕོ་ལན།", "name:br"=>"Polonia", "name:bs"=>"Poljska", "name:ca"=>"Polònia", "name:ce"=>"Польша", "name:co"=>"Polonia", "name:cs"=>"Polsko", "name:cu"=>"Пол҄ьска", "name:cv"=>"Польша", "name:cy"=>"Gwlad Pwyl", "name:da"=>"Polen", "name:de"=>"Polen", "name:dv"=>"ޕޮލެންޑު", "name:ee"=>"Poland", "name:el"=>"Πολωνία", "name:en"=>"Poland", "name:eo"=>"Pollando", "name:es"=>"Polonia", "name:et"=>"Poola", "name:eu"=>"Polonia", "name:fa"=>"لهستان", "name:ff"=>"Poloonya", "name:fi"=>"Puola", "name:fo"=>"Pólland", "name:fr"=>"Pologne", "name:fy"=>"Poalen", "name:ga"=>"An Pholainn", "name:gd"=>"A' Phòlainn", "name:gl"=>"Polonia", "name:gn"=>"Poloña", "name:gu"=>"પોલેંડ", "name:gv"=>"Yn Pholynn", "name:ha"=>"Poland", "name:he"=>"פולין", "name:hi"=>"पोलैंड", "name:hr"=>"Poljska", "name:ht"=>"Polòy", "name:hu"=>"Lengyelország", "name:hy"=>"Լեհաստան", "name:ia"=>"Polonia", "name:id"=>"Polandia", "name:ie"=>"Polonia", "name:ig"=>"Poland", "name:io"=>"Polonia", "name:is"=>"Pólland", "name:it"=>"Polonia", "name:iu"=>"ᐳᓚᓐᑦ", "name:ja"=>"ポーランド", "name:jv"=>"Polandia", "name:ka"=>"პოლონეთი", "name:kg"=>"Pologne", "name:kk"=>"Польша", "name:kl"=>"Poleni", "name:km"=>"ប្រទេសប៉ូឡូញ", "name:kn"=>"ಪೋಲೆಂಡ್", "name:ko"=>"폴란드", "name:ku"=>"Polonya", "name:kv"=>"Польша", "name:kw"=>"Poloni", "name:ky"=>"Польша", "name:la"=>"Polonia", "name:lb"=>"Polen", "name:lg"=>"Bupoolo", "name:li"=>"Pole", "name:ln"=>"Poloni", "name:lt"=>"Lenkija", "name:lv"=>"Polija", "name:mg"=>"Polonia", "name:mi"=>"Pōrana", "name:mk"=>"Полска", "name:ml"=>"പോളണ്ട്", "name:mn"=>"Польш", "name:mr"=>"पोलंड", "name:ms"=>"Poland", "name:mt"=>"Polonja", "name:my"=>"ပိုလန်နိုင်ငံ", "name:na"=>"Poran", "name:ne"=>"पोल्याण्ड", "name:nl"=>"Polen", "name:nn"=>"Polen", "name:no"=>"Polen", "name:nv"=>"Póolish Dineʼé Bikéyah", "name:oc"=>"Polonha", "name:or"=>"ପୋଲାଣ୍ଡ", "name:os"=>"Польшæ", "name:pa"=>"ਪੋਲੈਂਡ", "name:pl"=>"Polska", "name:ps"=>"پولنډ", "name:pt"=>"Polónia", "name:qu"=>"Pulunya", "name:rm"=>"Pologna", "name:rn"=>"Polonia", "name:ro"=>"Polonia", "name:ru"=>"Польша", "name:rw"=>"Polonye", "name:sa"=>"पोलैंड", "name:sc"=>"Polonia", "name:se"=>"Polska", "name:sg"=>"Pölôni", "name:sh"=>"Poljska", "name:si"=>"පෝලන්තය", "name:sk"=>"Poľsko", "name:sl"=>"Poljska", "name:sm"=>"Polagi", "name:so"=>"Boland", "name:sq"=>"Polonia", "name:sr"=>"Пољска", "name:ss"=>"IPholandi", "name:st"=>"Poland", "name:su"=>"Polandia", "name:sv"=>"Polen", "name:sw"=>"Poland", "name:ta"=>"போலந்து", "name:te"=>"పోలాండ్", "name:tg"=>"Лаҳистон", "name:th"=>"ประเทศโปแลนด์", "name:tk"=>"Polşa", "name:tl"=>"Polonya", "name:tr"=>"Polonya", "name:tt"=>"Польша", "name:ug"=>"پولشا", "name:uk"=>"Польща", "name:ur"=>"پولینڈ", "name:uz"=>"Polsha", "name:vi"=>"Ba Lan", "name:vo"=>"Polän", "name:wa"=>"Pologne", "name:wo"=>"Poloñ", "name:yi"=>"פוילן", "name:yo"=>"Polandi", "name:zh"=>"波兰", "name:zu"=>"IPolandi"
-ss "name"=>"South Sudan", "name:af"=>"Suid-Soedan", "name:am"=>"ደቡብ ሱዳን", "name:an"=>"Sudán d'o Sud", "name:ar"=>"جنوب السودان", "name:av"=>"Югалъулаб Судан", "name:az"=>"Cənubi Sudan", "name:be"=>"Паўднёвы Судан", "name:bg"=>"Южен Судан", "name:bn"=>"দক্ষিণ সুদান", "name:br"=>"Soudan ar Su", "name:bs"=>"Južni Sudan", "name:ca"=>"Sudan del Sud", "name:cs"=>"Jižní Súdán", "name:cv"=>"Кăнтăр Судан", "name:cy"=>"De Sudan", "name:da"=>"Sydsudan", "name:de"=>"Südsudan", "name:el"=>"Νότιο Σουδάν", "name:en"=>"South Sudan", "name:eo"=>"Suda Sudano", "name:es"=>"Sudán del Sur", "name:et"=>"Lõuna-Sudaan", "name:eu"=>"Hego Sudan", "name:fa"=>"سودان جنوبی", "name:fi"=>"Etelä-Sudan", "name:fo"=>"Suðursudan", "name:fr"=>"Sud-Soudan", "name:fy"=>"Súd-Sûdan", "name:ga"=>"An tSúdáin Theas", "name:gd"=>"Sudàn a Deas", "name:gl"=>"Sudán do Sur", "name:gv"=>"Yn Toodaan Yiass", "name:he"=>"דרום סודאן", "name:hi"=>"दक्षिण सूडान", "name:hr"=>"Južni Sudan", "name:hu"=>"Dél-Szudán", "name:hy"=>"Հարավային Սուդան", "name:ia"=>"Sudan del Sud", "name:id"=>"Sudan Selatan", "name:ie"=>"Sud-Sudan", "name:io"=>"Sud-Sudan", "name:is"=>"Suður-Súdan", "name:it"=>"Sudan del Sud", "name:ja"=>"南部スーダン", "name:jv"=>"Sudan Kidul", "name:ka"=>"სამხრეთი სუდანი", "name:kk"=>"Оңтүстік Судан", "name:ko"=>"남수단", "name:ku"=>"Sûdana Başûr", "name:kv"=>"Лунвыв Судан", "name:kw"=>"Soudan Soth", "name:ky"=>"Түштүк Судан", "name:la"=>"Sudania Australis", "name:lb"=>"Südsudan", "name:li"=>"Zuid-Soedan", "name:lt"=>"Pietų Sudanas", "name:lv"=>"Dienvidsudāna", "name:mk"=>"Јужен Судан", "name:ml"=>"ദക്ഷിണ സുഡാൻ", "name:mr"=>"दक्षिण सुदान", "name:ms"=>"Sudan Selatan", "name:my"=>"တောင်ဆူဒန်နိုင်ငံ", "name:na"=>"South Sudan", "name:nl"=>"Zuid-Soedan", "name:nn"=>"Sør-Sudan", "name:no"=>"Sør-Sudan", "name:nv"=>"Shádiʼááhjí Soodą́ą", "name:oc"=>"Sodan del Sud", "name:or"=>"ଦକ୍ଷିନ ସୁଦାନ", "name:pa"=>"ਦੱਖਣੀ ਸੁਡਾਨ", "name:pl"=>"Sudan Południowy", "name:ps"=>"سوېلي سوډان", "name:pt"=>"Sudão do Sul", "name:qu"=>"Urin Sudan", "name:rm"=>"Sudan dal Sid", "name:ro"=>"Sudanul de Sud", "name:ru"=>"Южный Судан", "name:sc"=>"Sudan Meridionali", "name:se"=>"Lulli-Sudan", "name:sg"=>"Sudäan-Mbongo", "name:sh"=>"Južni Sudan", "name:sk"=>"Južný Sudán", "name:sl"=>"Južni Sudan", "name:sn"=>"South Sudan", "name:so"=>"Koonfur Suudaan", "name:sq"=>"Sudani i Jugut", "name:sr"=>"Јужни Судан", "name:su"=>"Sudan Kidul", "name:sv"=>"Sydsudan", "name:sw"=>"Sudan Kusini", "name:ta"=>"தெற்கு சூடான்", "name:te"=>"దక్షిణ సూడాన్", "name:th"=>"ประเทศเซาท์ซูดาน", "name:tk"=>"Günorta Sudan", "name:tl"=>"Timog Sudan", "name:tr"=>"Güney Sudan", "name:tt"=>"Көньяк Судан", "name:uk"=>"Південний Судан", "name:ur"=>"جنوبی سوڈان", "name:uz"=>"Janubiy Sudan", "name:vi"=>"Nam Sudan", "name:vo"=>"Sulüda-Sudän", "name:yi"=>"דרום סודאן", "name:yo"=>"Gúúsù Sudan", "name:zh"=>"南蘇丹", "name:zu"=>"ISudan yaseNingizimu"
-gr "name"=>"Ελλάς", "name:ab"=>"Барзентәыла", "name:af"=>"Griekeland", "name:am"=>"ግሪክ", "name:an"=>"Grecia", "name:ar"=>"اليونان", "name:ay"=>"Grisya", "name:az"=>"Yunanıstan", "name:ba"=>"Греция", "name:be"=>"Грэцыя", "name:bg"=>"Гърция", "name:bi"=>"Greece", "name:bn"=>"গ্রিস", "name:bo"=>"ཀེ་རི་སི།", "name:br"=>"Gres", "name:bs"=>"Grčka", "name:ca"=>"Grècia", "name:ce"=>"Греци", "name:co"=>"Grecia", "name:cs"=>"Řecko", "name:cu"=>"Грьци", "name:cv"=>"Греци", "name:cy"=>"Gwlad Groeg", "name:da"=>"Grækenland", "name:de"=>"Griechenland", "name:dv"=>"ޔޫނާން", "name:dz"=>"གྲྀས", "name:ee"=>"Greece", "name:el"=>"Ελλάς", "name:en"=>"Greece", "name:eo"=>"Grekio", "name:es"=>"Grecia", "name:et"=>"Kreeka", "name:eu"=>"Grezia", "name:fa"=>"یونان", "name:fi"=>"Kreikka", "name:fo"=>"Grikkaland", "name:fr"=>"Grèce", "name:fy"=>"Grikelân", "name:ga"=>"An Ghréig", "name:gd"=>"A' Ghrèig", "name:gl"=>"Grecia", "name:gn"=>"Gyresia", "name:gu"=>"ગ્રીસ", "name:gv"=>"Yn Ghreag", "name:he"=>"יוון", "name:hi"=>"यूनान", "name:hr"=>"Grčka", "name:ht"=>"Grès", "name:hu"=>"Görögország", "name:hy"=>"Հունաստան", "name:ia"=>"Grecia", "name:id"=>"Yunani", "name:ie"=>"Grecia", "name:io"=>"Grekia", "name:is"=>"Grikkland", "name:it"=>"Grecia", "name:ja"=>"ギリシャ", "name:jv"=>"Yunani", "name:ka"=>"საბერძნეთი", "name:kg"=>"Gelesi", "name:ki"=>"Ngiriki", "name:kk"=>"Грекия", "name:kl"=>"Grækerit Nunaat", "name:kn"=>"ಗ್ರೀಸ್", "name:ko"=>"그리스", "name:ku"=>"Yewnanistan", "name:kv"=>"Эллада", "name:kw"=>"Pow Grek", "name:ky"=>"Греция", "name:la"=>"Graecia", "name:lb"=>"Griicheland", "name:lg"=>"Buyonaani", "name:li"=>"Griekeland", "name:ln"=>"Gresi", "name:lt"=>"Graikija", "name:lv"=>"Grieķija", "name:mg"=>"Grisy", "name:mi"=>"Kirihi", "name:mk"=>"Грција", "name:ml"=>"ഗ്രീസ്", "name:mn"=>"Грек", "name:mr"=>"ग्रीस", "name:ms"=>"Greece", "name:mt"=>"Greċja", "name:my"=>"ဂရိနိုင်ငံ", "name:na"=>"Grit", "name:ne"=>"ग्रीस", "name:nl"=>"Griekenland", "name:nn"=>"Hellas", "name:no"=>"Hellas", "name:nv"=>"Gwíík Dineʼé Bikéyah", "name:oc"=>"Grècia", "name:or"=>"ଗ୍ରୀସ", "name:os"=>"Грекъ", "name:pa"=>"ਯੂਨਾਨ", "name:pl"=>"Grecja", "name:ps"=>"يونان", "name:pt"=>"Grécia", "name:qu"=>"Grisya", "name:rm"=>"Grezia", "name:rn"=>"Grecia", "name:ro"=>"Grecia", "name:ru"=>"Греция", "name:rw"=>"Ubugereki", "name:sa"=>"यवनदेशः", "name:sc"=>"Grèghia", "name:se"=>"Greika", "name:sh"=>"Grčka", "name:si"=>"ග්රීසිය", "name:sk"=>"Grécko", "name:sl"=>"Grčija", "name:sm"=>"Kuliti", "name:so"=>"Giriig", "name:sq"=>"Greqia", "name:sr"=>"Грчка", "name:ss"=>"IGrikhi", "name:su"=>"Yunani", "name:sv"=>"Grekland", "name:sw"=>"Ugiriki", "name:ta"=>"கிரேக்க நாடு", "name:te"=>"గ్రీస్", "name:tg"=>"Юнон", "name:th"=>"ประเทศกรีซ", "name:tk"=>"Gresiýa", "name:tl"=>"Gresya", "name:tr"=>"Yunanistan", "name:tt"=>"Греция", "name:ug"=>"Grétsiye", "name:uk"=>"Греція", "name:ur"=>"یونان", "name:uz"=>"Yunoniston", "name:vi"=>"Hy Lạp", "name:vo"=>"Grikän", "name:wo"=>"Girees", "name:yi"=>"גריכנלאנד", "name:yo"=>"Gríìsì", "name:zh"=>"希腊", "name:zu"=>"IGreki"
-ma "name"=>"Maroc ⵍⵎⵖⵔⵉⴱ المغرب", "name:af"=>"Marokko", "name:am"=>"ሞሮኮ", "name:an"=>"Marruecos", "name:ar"=>"المغرب", "name:az"=>"Mərakeş", "name:ba"=>"Марокко", "name:be"=>"Марока", "name:bg"=>"Мароко", "name:bm"=>"Maroko", "name:bn"=>"মরোক্কো", "name:bo"=>"མོ་རོ་ཁོ།", "name:br"=>"Maroko", "name:bs"=>"Maroko", "name:ca"=>"Marroc", "name:ce"=>"Марокко", "name:cs"=>"Maroko", "name:cv"=>"Марокко", "name:cy"=>"Moroco", "name:da"=>"Marokko", "name:de"=>"Marokko", "name:dv"=>"މައުރިބު", "name:el"=>"Μαρόκο", "name:en"=>"Morocco", "name:eo"=>"Maroko", "name:es"=>"Marruecos", "name:et"=>"Maroko", "name:eu"=>"Maroko", "name:fa"=>"مراکش", "name:fi"=>"Marokko", "name:fo"=>"Marokko", "name:fr"=>"Maroc", "name:fy"=>"Marokko", "name:ga"=>"Maracó", "name:gd"=>"Maroco", "name:gl"=>"Marrocos", "name:gv"=>"Yn Varoc", "name:he"=>"מרוקו", "name:hi"=>"मोरक्को", "name:hr"=>"Maroko", "name:ht"=>"Mawòk", "name:hu"=>"Marokkó", "name:hy"=>"Մարոկկո", "name:ia"=>"Marocco", "name:id"=>"Maroko", "name:ie"=>"Morocco", "name:io"=>"Maroko", "name:is"=>"Marokkó", "name:it"=>"Marocco", "name:ja"=>"モロッコ", "name:jv"=>"Maroko", "name:ka"=>"მაროკო", "name:kg"=>"Maroko", "name:kk"=>"Мағрибия", "name:kn"=>"ಮೊರಾಕೊ", "name:ko"=>"모로코", "name:ks"=>"मोराको", "name:ku"=>"Maroko", "name:kw"=>"Marokk", "name:ky"=>"Марокко", "name:la"=>"Marocum", "name:lb"=>"Marokko", "name:li"=>"Marokko", "name:ln"=>"Marɔkɛ", "name:lt"=>"Marokas", "name:lv"=>"Maroka", "name:mg"=>"Marôka", "name:mi"=>"Marako", "name:mk"=>"Мароко", "name:ml"=>"മൊറോക്കൊ", "name:mn"=>"Марокко", "name:mr"=>"मोरोक्को", "name:ms"=>"Maghribi", "name:mt"=>"Marokk", "name:my"=>"မော်ရိုကိုနိုင်ငံ", "name:nl"=>"Marokko", "name:nn"=>"Marokko", "name:no"=>"Marokko", "name:nv"=>"Moroko", "name:oc"=>"Marròc", "name:or"=>"ମୋରୋକୋ", "name:os"=>"Марокко", "name:pa"=>"ਮੋਰਾਕੋ", "name:pl"=>"Maroko", "name:ps"=>"مراکش", "name:pt"=>"Marrocos", "name:qu"=>"Maruku", "name:ro"=>"Maroc", "name:ru"=>"Марокко", "name:rw"=>"Maroke", "name:sa"=>"मोराको", "name:sc"=>"Marocco", "name:se"=>"Marokko", "name:sg"=>"Marôko", "name:sh"=>"Maroko", "name:sk"=>"Maroko", "name:sl"=>"Maroko", "name:sn"=>"Morocco", "name:so"=>"Marooko", "name:sq"=>"Maroku", "name:sr"=>"Мароко", "name:ss"=>"IMorokho", "name:su"=>"Maroko", "name:sv"=>"Marocko", "name:sw"=>"Moroko", "name:ta"=>"மொரோக்கோ", "name:te"=>"మొరాకో", "name:tg"=>"Марокаш", "name:th"=>"ประเทศโมร็อกโก", "name:ti"=>"ሞሮኮ", "name:tk"=>"Marokko", "name:tl"=>"Maruekos", "name:tr"=>"Fas", "name:ts"=>"Morocco", "name:tt"=>"Марокко", "name:ug"=>"ماراكەش", "name:uk"=>"Марокко", "name:ur"=>"مراکش", "name:uz"=>"Marokash", "name:vi"=>"Maroc", "name:vo"=>"Marokän", "name:wa"=>"Marok", "name:wo"=>"Marok", "name:yi"=>"מאראקא", "name:yo"=>"Mòrókò", "name:zh"=>"摩洛哥", "name:zu"=>"IMorokho"
-tw "name"=>"臺灣", "name:af"=>"Taiwan", "name:ak"=>"Taiwan", "name:am"=>"ታይዋን", "name:an"=>"Taiwán", "name:ar"=>"تايوان", "name:as"=>"টাইৱান", "name:az"=>"Tayvan", "name:be"=>"Тайв́ань", "name:bg"=>"Тайван", "name:bh"=>"ताइवान", "name:bm"=>"Tayiwani", "name:bn"=>"তাইওয়ান", "name:bo"=>"ཐེ་ཝན", "name:br"=>"Taiwan", "name:bs"=>"Tajvan", "name:ca"=>"Taiwan", "name:ce"=>"Тайвань", "name:cs"=>"Tchaj-wan", "name:cv"=>"Тайва́нь", "name:cy"=>"Taiwan", "name:da"=>"Taiwan", "name:de"=>"Taiwan", "name:dv"=>"ޖުމްހޫރީ ޗައިނާ", "name:dz"=>"ཏའི་ཝཱན་", "name:ee"=>"Taiwan", "name:el"=>"Ταϊβάν", "name:en"=>"Taiwan", "name:eo"=>"Tajvano", "name:es"=>"Taiwán", "name:et"=>"Taiwan", "name:eu"=>"Taiwan", "name:fa"=>"تایوان", "name:ff"=>"Taywaan", "name:fi"=>"Taiwan", "name:fo"=>"Teivan", "name:fr"=>"Taïwan", "name:fy"=>"Taiwan", "name:ga"=>"an Téaváin", "name:gd"=>"Taidh-Bhàn", "name:gl"=>"Taiwán", "name:gu"=>"તાઇવાન", "name:gv"=>"yn Taiwaan", "name:he"=>"טאיוואן", "name:hi"=>"ताइवान", "name:hr"=>"Tajvan", "name:ht"=>"Taywann", "name:hu"=>"Tajvan", "name:hy"=>"Թայվան", "name:ia"=>"Taiwan", "name:id"=>"Taiwan", "name:ie"=>"Taiwan", "name:io"=>"Taiwan", "name:is"=>"Taívan", "name:it"=>"Taiwan", "name:ja"=>"台湾", "name:jv"=>"Taiwan", "name:ka"=>"ტაივანი", "name:ki"=>"Taiwani", "name:kk"=>"Тайвань", "name:kl"=>"Taiwan", "name:km"=>"តៃវ៉ាន់", "name:kn"=>"ಟೈವಾನ್", "name:ko"=>"타이완", "name:ku"=>"Taywan", "name:kw"=>"Taywan", "name:ky"=>"Тайвань", "name:la"=>"Taivania", "name:lb"=>"Taiwan", "name:lg"=>"Tayiwani", "name:li"=>"Taiwan", "name:ln"=>"Taiwan", "name:lo"=>"ໄຕ້ຫວັນ", "name:lt"=>"Taivanas", "name:lv"=>"Taivāna", "name:mg"=>"Taiwan", "name:mi"=>"Taiwana", "name:mk"=>"Тајван", "name:ml"=>"തായ്വാൻ", "name:mn"=>"Тайвань", "name:mr"=>"तैवान", "name:ms"=>"Taiwan", "name:mt"=>"Tajwan", "name:my"=>"ထိုင်ဝမ်", "name:ne"=>"ताइवान", "name:nl"=>"Taiwan", "name:nn"=>"Taiwan", "name:no"=>"Taiwan", "name:oc"=>"Taiwan", "name:or"=>"ତାଇୱାନ", "name:os"=>"Тайван", "name:pa"=>"ਤਾਈਵਾਨ", "name:pi"=>"तैवान", "name:pl"=>"Tajwan", "name:ps"=>"تایوان", "name:pt"=>"Taiwan", "name:qu"=>"Taiwán", "name:rm"=>"Taiwan", "name:rn"=>"Tayiwani", "name:ro"=>"Taiwan", "name:ru"=>"Тайвань", "name:rw"=>"Tayiwani", "name:sa"=>"तैवान", "name:se"=>"Taiwan", "name:sg"=>"Tâiwâni", "name:sh"=>"Tajvan", "name:si"=>"තායිවානය", "name:sk"=>"Taiwan", "name:sl"=>"Tajvan", "name:sn"=>"Taiwan", "name:so"=>"Taywan", "name:sq"=>"Tajvani", "name:sr"=>"Тајван", "name:ss"=>"iThayiwani", "name:su"=>"Tiongkok", "name:sv"=>"Taiwan", "name:sw"=>"Taiwan", "name:te"=>"తైవాన్", "name:tg"=>"Тайва́н", "name:th"=>"ไต้หวัน", "name:tk"=>"Taýwan", "name:tl"=>"Taiwan", "name:to"=>"Taiuani", "name:tr"=>"Tayvan", "name:tt"=>"Тайва́нь", "name:ug"=>"تەيۋەن", "name:uk"=>"Тайва́нь", "name:ur"=>"تائیوان", "name:uz"=>"Tayvan", "name:vi"=>"Đài Loan", "name:vo"=>"Tayvän", "name:wo"=>"Taaywaan", "name:yi"=>"טייוואַן", "name:yo"=>"Taiwan", "name:za"=>"Daizvanh", "name:zh"=>"臺灣", "name:zu"=>"i-Taiwan"
-ph "name"=>"Philippines", "name:af"=>"Filippyne", "name:am"=>"ፊሊፒንስ", "name:an"=>"Filipinas", "name:ar"=>"الفلبين", "name:az"=>"Filippin", "name:be"=>"Філіпіны", "name:bg"=>"Филипини", "name:bn"=>"ফিলিপাইন", "name:bo"=>"ཧྥི་ལི་པིན།", "name:br"=>"Filipinez", "name:bs"=>"Filipini", "name:ca"=>"Filipines", "name:ce"=>"Филиппин", "name:cs"=>"Filipíny", "name:cv"=>"Филиппин", "name:cy"=>"Pilipinas", "name:da"=>"Filippinerne", "name:de"=>"Philippinen", "name:dv"=>"ފިލިޕީންސް", "name:el"=>"Φιλιππίνες", "name:en"=>"Philippines", "name:eo"=>"Filipinoj", "name:es"=>"Filipinas", "name:et"=>"Filipiinid", "name:eu"=>"Filipinak", "name:fa"=>"فیلیپین", "name:fi"=>"Filippiinit", "name:fo"=>"Filipsoyggjar", "name:fr"=>"Philippines", "name:fy"=>"Filipinen", "name:ga"=>"Na hOileáin Fhilipíneacha", "name:gd"=>"Na h-Eileanan Filipineach", "name:gl"=>"Filipinas", "name:gn"=>"Filipina", "name:gu"=>"ફીલીપાઈન્સ", "name:gv"=>"Ny h-Ellanyn Philippeenagh", "name:he"=>"הפיליפינים", "name:hi"=>"फ़िलीपीन्स", "name:hr"=>"Filipini", "name:ht"=>"Filipin", "name:hu"=>"Fülöp-szigetek", "name:hy"=>"Ֆիլիպիններ", "name:ia"=>"Philippinas", "name:id"=>"Filipina", "name:ie"=>"Filipines", "name:io"=>"Filipini", "name:is"=>"Filippseyjar", "name:it"=>"Filippine", "name:ja"=>"フィリピン", "name:jv"=>"Filipina", "name:ka"=>"ფილიპინები", "name:kk"=>"Филиппиндер", "name:kl"=>"Philippines", "name:km"=>"ហ្វីលីពីន", "name:kn"=>"ಫಿಲಿಪ್ಪೀನ್ಸ್", "name:ko"=>"필리핀", "name:ku"=>"Filîpîn", "name:kv"=>"Филиппинъяс", "name:kw"=>"Filipinys", "name:la"=>"Philippinae", "name:lb"=>"Philippinen", "name:li"=>"Filipiene", "name:lt"=>"Filipinai", "name:lv"=>"Filipīnas", "name:mg"=>"Filipina", "name:mi"=>"Piripīni", "name:mk"=>"Филипини", "name:ml"=>"ഫിലിപ്പീൻസ്", "name:mn"=>"Филиппин", "name:mr"=>"फिलिपाईन्स", "name:ms"=>"Filipina", "name:my"=>"ဖိလစ်ပိုင်နိုင်ငံ", "name:na"=>"Eben Piripin", "name:ne"=>"फिलिपिन्स", "name:nl"=>"Filipijnen", "name:nn"=>"Filippinane", "name:no"=>"Filippinene", "name:nv"=>"Kéyah Dańlíinii", "name:oc"=>"Filipinas", "name:or"=>"ଫିଲିପାଇନ୍ସ", "name:os"=>"Филиппинтæ", "name:pa"=>"ਫ਼ਿਲਪੀਨਜ਼", "name:pl"=>"Filipiny", "name:ps"=>"فلېپين", "name:pt"=>"Filipinas", "name:qu"=>"Philipinakuna", "name:ro"=>"Filipine", "name:ru"=>"Филиппины", "name:rw"=>"Filipine", "name:sa"=>"कलिंगद्वीप", "name:se"=>"Filippiinnat", "name:sg"=>"Filipîni", "name:sh"=>"Filipini", "name:si"=>"පිලිපීනය", "name:sk"=>"Filipíny", "name:sl"=>"Filipini", "name:sm"=>"Filipaina", "name:so"=>"Filibiin", "name:sq"=>"Filipinet", "name:sr"=>"Филипини", "name:ss"=>"IFiliphayi", "name:su"=>"Pilipina", "name:sv"=>"Filippinerna", "name:sw"=>"Ufilipino", "name:ta"=>"பிலிப்பீன்சு", "name:te"=>"ఫిలిప్పీన్స్", "name:tg"=>"Филиппин", "name:th"=>"ประเทศฟิลิปปินส์", "name:tk"=>"Filippinler", "name:tl"=>"Pilipinas", "name:tr"=>"Filipinler", "name:tt"=>"Филиппиннар", "name:ug"=>"فىلىپپىن", "name:uk"=>"Філіппіни", "name:ur"=>"فلپائن", "name:uz"=>"Filippin", "name:vi"=>"Philippines", "name:vo"=>"Filipuäns", "name:wa"=>"Filipenes", "name:wo"=>"Filipiin", "name:yi"=>"פיליפינען", "name:yo"=>"Filipínì", "name:za"=>"Feihlizbinh", "name:zh"=>"菲律宾 / 菲律賓"
-nz "name"=>"New Zealand / Aotearoa", "name:af"=>"Nieu-Seeland", "name:am"=>"ኒው ዚላንድ", "name:an"=>"Nueva Zelanda", "name:ar"=>"نيوزيلندا", "name:az"=>"Yeni Zelandiya", "name:ba"=>"Яңы Зеландия", "name:be"=>"Новая Зеландыя", "name:bg"=>"Нова Зеландия", "name:bi"=>"Niu Zilan", "name:bm"=>"New Zealand", "name:bn"=>"নিউজিল্যান্ড", "name:bo"=>"ནིའུ་ཛི་ལེན་ཌི།", "name:br"=>"Zeland-Nevez", "name:bs"=>"Novi Zeland", "name:ca"=>"Nova Zelanda", "name:cs"=>"Nový Zéland", "name:cv"=>"Çĕнĕ Зеланди", "name:cy"=>"Seland Newydd", "name:da"=>"New Zealand", "name:de"=>"Neuseeland", "name:dv"=>"ނިއުޒިލޭންޑު", "name:dz"=>"ནིའུ་ཛི་ལེནཌ་", "name:el"=>"Νέα Ζηλανδία", "name:en"=>"New Zealand", "name:eo"=>"Nov-Zelando", "name:es"=>"Nueva Zelanda", "name:et"=>"Uus-Meremaa", "name:eu"=>"Zeelanda Berria", "name:fa"=>"نیوزیلند", "name:fi"=>"Uusi-Seelanti", "name:fo"=>"Nýsæland", "name:fr"=>"Nouvelle-Zélande", "name:fy"=>"Nij-Seelân", "name:ga"=>"An Nua-Shéalainn", "name:gd"=>"Sealainn Nuadh", "name:gl"=>"Nova Zelandia", "name:gv"=>"Yn Teelynn Noa", "name:he"=>"ניו זילנד", "name:hi"=>"न्यूज़ीलैण्ड", "name:hr"=>"Novi Zeland", "name:ht"=>"Nouvèl Zelann", "name:hu"=>"Új-Zéland", "name:hy"=>"Նոր Զելանդիա", "name:ia"=>"Nove Zelanda", "name:id"=>"Selandia Baru", "name:ie"=>"Nov-Zeland", "name:io"=>"Nova-Zelando", "name:is"=>"Nýja-Sjáland", "name:it"=>"Nuova Zelanda", "name:ja"=>"ニュージーランド", "name:jv"=>"Sélandia Anyar", "name:ka"=>"ახალი ზელანდია", "name:kk"=>"Жаңа Зеландия", "name:kl"=>"New Zealand", "name:km"=>"នូវែលសេឡង់", "name:kn"=>"ನ್ಯೂ ಜೀಲ್ಯಾಂಡ್", "name:ko"=>"뉴질랜드", "name:ku"=>"Nû Zelenda", "name:kv"=>"Выль Зеландия", "name:kw"=>"Mordir Nowydh", "name:la"=>"Nova Zelandia", "name:lb"=>"Neiséiland", "name:li"=>"Nui-Zieland", "name:lo"=>"ປະເທດນູແວນ ເຊລັງ", "name:lt"=>"Naujoji Zelandija", "name:lv"=>"Jaunzēlande", "name:mi"=>"Aotearoa", "name:mk"=>"Нов Зеланд", "name:ml"=>"ന്യൂസീലൻഡ്", "name:mn"=>"Шинэ Зеланд", "name:mr"=>"न्यू झीलँड", "name:ms"=>"New Zealand", "name:mt"=>"New Zealand", "name:my"=>"နယူးဇီလန်နိုင်ငံ", "name:na"=>"Niu Djiran", "name:ne"=>"न्यू जील्याण्ड", "name:nl"=>"Nieuw-Zeeland", "name:nn"=>"New Zealand", "name:no"=>"New Zealand", "name:oc"=>"Nòva Zelanda", "name:or"=>"ନିଉଜିଲ୍ୟାଣ୍ଡ", "name:os"=>"Ног Зеланди", "name:pa"=>"ਨਿਊਜ਼ੀਲੈਂਡ", "name:pl"=>"Nowa Zelandia", "name:pt"=>"Nova Zelândia", "name:qu"=>"Musuq Silanda", "name:rm"=>"Nova Zelanda", "name:ro"=>"Noua Zeelandă", "name:ru"=>"Новая Зеландия", "name:rw"=>"Nuveli Zelande", "name:sa"=>"न्यू-जीलैंड", "name:se"=>"Aotearoa", "name:sh"=>"Novi Zeland", "name:sk"=>"Nový Zéland", "name:sl"=>"Nova Zelandija", "name:sm"=>"Niu Sila", "name:so"=>"New Zealand", "name:sq"=>"Zelanda e Re", "name:sr"=>"Нови Зеланд", "name:su"=>"Selandia Anyar", "name:sv"=>"Nya Zeeland", "name:sw"=>"New Zealand", "name:ta"=>"நியூசிலாந்து", "name:te"=>"న్యూజీలాండ్", "name:tg"=>"Зеландияи Нав", "name:th"=>"ประเทศนิวซีแลนด์", "name:tk"=>"Täze Zelandiýa", "name:tl"=>"New Zealand", "name:tr"=>"Yeni Zelanda", "name:tt"=>"Яңа Зеландия", "name:ty"=>"Aotearoa", "name:ug"=>"يېڭى زېلاندىيە", "name:uk"=>"Нова Зеландія", "name:ur"=>"نیوزی لینڈ", "name:uz"=>"Yangi Zelandiya", "name:vi"=>"New Zealand", "name:vo"=>"Nula-Seleäns", "name:wa"=>"Nouve Zelande", "name:wo"=>"Seland-Gu-Bees", "name:yi"=>"ניו זילאנד", "name:yo"=>"New Zealand", "name:za"=>"Saen Saelanz", "name:zh"=>"新西兰", "name:zu"=>"INyuzilandi"
-it "name"=>"Italia", "name:ab"=>"Италиа", "name:af"=>"Italië", "name:ak"=>"Italy", "name:am"=>"ጣልያን", "name:an"=>"Italia", "name:ar"=>"إيطاليا", "name:as"=>"ইটালী", "name:ay"=>"Italiya", "name:az"=>"İtaliya", "name:ba"=>"Италия", "name:be"=>"Італія", "name:bg"=>"Италия", "name:bi"=>"Itali", "name:bn"=>"ইতালি", "name:bo"=>"ཨི་ཏ་ལི།", "name:br"=>"Italia", "name:bs"=>"Italija", "name:ca"=>"Itàlia", "name:ce"=>"Итали", "name:co"=>"Italia", "name:cs"=>"Itálie", "name:cu"=>"Италїꙗ", "name:cv"=>"Итали", "name:cy"=>"Yr Eidal", "name:da"=>"Italien", "name:de"=>"Italien", "name:dv"=>"އިޓަލީވިލާތް", "name:dz"=>"ཨྀཊ་ལི་", "name:ee"=>"Italy", "name:el"=>"Ιταλία", "name:en"=>"Italy", "name:eo"=>"Italio", "name:es"=>"Italia", "name:et"=>"Itaalia", "name:eu"=>"Italia", "name:fa"=>"ایتالیا", "name:ff"=>"Italiya", "name:fi"=>"Italia", "name:fo"=>"Italia", "name:fr"=>"Italie", "name:fy"=>"Itaalje", "name:ga"=>"An Iodáil", "name:gd"=>"An Eadailt", "name:gl"=>"Italia", "name:gn"=>"Itália", "name:gu"=>"ઈટલી", "name:gv"=>"Yn Iddaal", "name:he"=>"איטליה", "name:hi"=>"इटली", "name:hr"=>"Italija", "name:ht"=>"Itali", "name:hu"=>"Olaszország", "name:hy"=>"Իտալիա", "name:ia"=>"Italia", "name:id"=>"Italia", "name:ie"=>"Italia", "name:io"=>"Italia", "name:is"=>"Ítalía", "name:it"=>"Italia", "name:ja"=>"イタリア", "name:jv"=>"Italia", "name:ka"=>"იტალია", "name:kg"=>"Italia", "name:ki"=>"Italia", "name:kk"=>"Италия", "name:kl"=>"Italia", "name:km"=>"អ៊ីតាលី", "name:kn"=>"ಇಟಲಿ", "name:ko"=>"이탈리아", "name:ku"=>"Îtalya", "name:kv"=>"Италия", "name:kw"=>"Itali", "name:ky"=>"Италия", "name:la"=>"Italia", "name:lb"=>"Italien", "name:lg"=>"Yitale", "name:li"=>"Italië", "name:ln"=>"Italya", "name:lo"=>"ອິຕາລີ", "name:lt"=>"Italija", "name:lv"=>"Itālija", "name:mg"=>"Italia", "name:mi"=>"Itari", "name:mk"=>"Италија", "name:ml"=>"ഇറ്റലി", "name:mn"=>"Итали", "name:mr"=>"इटली", "name:ms"=>"Itali", "name:mt"=>"Italja", "name:my"=>"အီတလီနိုင်ငံ", "name:na"=>"Itari", "name:ne"=>"इटाली", "name:nl"=>"Italië", "name:nn"=>"Italia", "name:no"=>"Italia", "name:nv"=>"Ídelii", "name:oc"=>"Itàlia", "name:or"=>"ଇଟାଲୀ", "name:os"=>"Итали", "name:pa"=>"ਇਟਲੀ", "name:pl"=>"Włochy", "name:ps"=>"اېټاليا", "name:pt"=>"Itália", "name:qu"=>"Italya", "name:rm"=>"Italia", "name:ro"=>"Italia", "name:ru"=>"Италия", "name:rw"=>"Ubutaliyani", "name:sa"=>"इटली", "name:sc"=>"Itàlia", "name:se"=>"Itália", "name:sg"=>"Italùii", "name:sh"=>"Italija", "name:sk"=>"Taliansko", "name:sl"=>"Italija", "name:sm"=>"Italia", "name:so"=>"Talyaaniga", "name:sq"=>"Italia", "name:sr"=>"Италија", "name:ss"=>"INtaliyane", "name:su"=>"Italia", "name:sv"=>"Italien", "name:sw"=>"Italia", "name:ta"=>"இத்தாலி", "name:te"=>"ఇటలీ", "name:tg"=>"Итолиё", "name:th"=>"ประเทศอิตาลี", "name:tk"=>"Italiýa", "name:tl"=>"Italya", "name:tr"=>"İtalya", "name:tt"=>"Италия", "name:tw"=>"Italy", "name:ty"=>"’Itāria", "name:ug"=>"ئىتالىيە", "name:uk"=>"Італія", "name:ur"=>"اطالیہ", "name:uz"=>"Italiya", "name:ve"=>"Italy", "name:vi"=>"Ý", "name:vo"=>"Litaliyän", "name:wa"=>"Itåleye", "name:wo"=>"Itaali", "name:yi"=>"איטאליע", "name:yo"=>"Itálíà", "name:zh"=>"意大利", "name:zu"=>"ITaliya"
-ar "name"=>"Argentina", "name:af"=>"Argentinië", "name:ak"=>"Agyɛntina", "name:am"=>"አርጀንቲና", "name:an"=>"Archentina", "name:ar"=>"الأرجنتين", "name:as"=>"আৰ্জেণ্টিনা", "name:av"=>"Аргентина", "name:ay"=>"Arxintina", "name:az"=>"Argentina", "name:ba"=>"Аргенти́на", "name:be"=>"Аргенці́на", "name:bg"=>"Аржентѝна", "name:bh"=>"अर्जेन्टीना", "name:bi"=>"Argentina", "name:bm"=>"Argentina", "name:bn"=>"আর্জেন্টিনা", "name:bo"=>"ཨར་ཇེན་ཊི་ན།", "name:br"=>"Arc'hantina", "name:bs"=>"Argentina", "name:ca"=>"Argentina", "name:ce"=>"Аргенти́на", "name:ch"=>"Argentina", "name:co"=>"Argentina", "name:cs"=>"Argentina", "name:cv"=>"Аргентина", "name:cy"=>"Ariannin", "name:da"=>"Argentina", "name:de"=>"Argentinien", "name:dv"=>"އާޖެންޓީނާ", "name:dz"=>"ཨར་ཇེན་ཊི་ན", "name:ee"=>"Argentina", "name:el"=>"Αργεντινή", "name:en"=>"Argentina", "name:eo"=>"Argentino", "name:es"=>"Argentina", "name:et"=>"Argentina", "name:eu"=>"Argentina", "name:fa"=>"آرژانتین", "name:ff"=>"Arjantiin", "name:fi"=>"Argentiina", "name:fj"=>"Argentina", "name:fo"=>"Argentina", "name:fr"=>"Argentine", "name:fy"=>"Argentynje", "name:ga"=>"an Airgintín", "name:gd"=>"Argentina", "name:gl"=>"Arxentina", "name:gn"=>"Argentina", "name:gu"=>"આર્જેન્ટીના", "name:gv"=>"yn Argenteen", "name:ha"=>"Argentina", "name:he"=>"ארגנטינה", "name:hi"=>"अर्जेण्टीना", "name:hr"=>"Argentina", "name:ht"=>"Ajantin", "name:hu"=>"Argentína", "name:hy"=>"Արգենտինա", "name:ia"=>"Argentina", "name:id"=>"Argentina", "name:ie"=>"Argentina", "name:ig"=>"Argentina", "name:io"=>"Arjentinia", "name:is"=>"Argentína", "name:it"=>"Argentina", "name:ja"=>"アルゼンチン", "name:jv"=>"Argèntina", "name:ka"=>"არგენტინა", "name:kg"=>"Arhentina", "name:ki"=>"Argentina", "name:kk"=>"Аргентина", "name:kl"=>"Argentina", "name:km"=>"អាហ្សង់ទីន", "name:kn"=>"ಅರ್ಜೆಂಟೀನ", "name:ko"=>"아르헨티나", "name:ks"=>"أرجَنٹینا", "name:ku"=>"Arjentîn", "name:kv"=>"Аргентина", "name:kw"=>"Arghantina", "name:ky"=>"Аргентина", "name:la"=>"Argentina", "name:lb"=>"Argentinien", "name:lg"=>"Arigentina", "name:li"=>"Argentinië", "name:ln"=>"Argentina", "name:lo"=>"ອາກຊັງຕີນ", "name:lt"=>"Argentina", "name:lv"=>"Argentīna", "name:mg"=>"Arjentina", "name:mi"=>"Āketina", "name:mk"=>"Аргентина", "name:ml"=>"അർജന്റീന", "name:mn"=>"Аргентин", "name:mr"=>"आर्जेन्टिना", "name:ms"=>"Argentina", "name:mt"=>"Arġentina", "name:my"=>"အာဂျင်တီးနားနိုင်ငံ", "name:na"=>"Ardjentina", "name:ne"=>"अर्जेन्टिना", "name:nl"=>"Argentinië", "name:nn"=>"Argentina", "name:no"=>"Argentina", "name:nv"=>"Béésh Łigaii Bikéyah", "name:oc"=>"Argentina", "name:om"=>"Arjentiinaa", "name:or"=>"ଆର୍ଜେଣ୍ଟିନା", "name:os"=>"Аргентинæ", "name:pa"=>"ਅਰਜਨਟੀਨਾ", "name:pi"=>"अर्जन्टीना", "name:pl"=>"Argentyna", "name:ps"=>"ارجنټاین", "name:pt"=>"Argentina", "name:qu"=>"Arhintina", "name:rm"=>"Argentinia", "name:rn"=>"Argentine", "name:ro"=>"Argentina", "name:ru"=>"Аргентина", "name:rw"=>"Arijantine", "name:sa"=>"अर्जण्टिना", "name:sc"=>"Argentina", "name:se"=>"Argentiinná", "name:sg"=>"Arzantîna", "name:sh"=>"Argentina", "name:si"=>"ආජන්ටිනාව", "name:sk"=>"Argentína", "name:sl"=>"Argentina", "name:sm"=>"Atenitina", "name:sn"=>"Argentina", "name:so"=>"Arjantiina", "name:sq"=>"Argjentina", "name:sr"=>"Аргентина", "name:su"=>"Argéntina", "name:sv"=>"Argentina", "name:sw"=>"Argentina", "name:ta"=>"அர்கெந்தீனா", "name:te"=>"అర్జెంటీనా", "name:tg"=>"Аргенти́на", "name:th"=>"อาร์เจนตินา", "name:ti"=>"አርጀንቲና", "name:tk"=>"Argentina", "name:tl"=>"Arhentina", "name:to"=>"ʻAsenitina", "name:tr"=>"Arjantin", "name:ts"=>"Arjentina", "name:tt"=>"Аргенти́на", "name:tw"=>"Argentina", "name:ty"=>"’Atetina", "name:ug"=>"ئارگېنتىنا", "name:uk"=>"Аргенти́на", "name:ur"=>"ارجنٹائن", "name:uz"=>"Argentina", "name:vi"=>"Argentina", "name:vo"=>"Largäntän", "name:wa"=>"Årdjintene", "name:wo"=>"Arsantin", "name:yi"=>"אַרגענטינע", "name:yo"=>"Argẹntínà", "name:za"=>"Argentina", "name:zh"=>"阿根廷", "name:zu"=>"i-Argentina"
-by "name"=>"Беларусь", "name:af"=>"Wit-Rusland", "name:am"=>"ቤላሩስ", "name:an"=>"Belarrusia", "name:ar"=>"روسيا البيضاء", "name:az"=>"Belarus", "name:be"=>"Беларусь", "name:bg"=>"Беларус", "name:bi"=>"Belarus", "name:bn"=>"বেলারুশ", "name:bo"=>"བྷེ་ལ་རསུ།", "name:br"=>"Belarus", "name:bs"=>"Bjelorusija", "name:ca"=>"Bielorússia", "name:ce"=>"Белорусси", "name:co"=>"Bielorussia", "name:cs"=>"Bělorusko", "name:cu"=>"Бѣла Роусь", "name:cv"=>"Беларуç", "name:cy"=>"Belarws", "name:da"=>"Hviderusland", "name:de"=>"Belarus", "name:dv"=>"ބެލަރޫސް", "name:dz"=>"བེ་ལ་རུ་སུ།", "name:ee"=>"Belarus", "name:el"=>"Λευκορωσία", "name:en"=>"Belarus", "name:eo"=>"Belorusio", "name:es"=>"Bielorrusia", "name:et"=>"Valgevene", "name:eu"=>"Bielorrusia", "name:fa"=>"بلاروس", "name:ff"=>"Belaruusiya", "name:fi"=>"Valko-Venäjä", "name:fo"=>"Hvítarussland", "name:fr"=>"Biélorussie", "name:fy"=>"Wyt-Ruslân", "name:ga"=>"An Bhealarúis", "name:gd"=>"A' Bhealaruis", "name:gl"=>"Bielorrusia", "name:gn"=>"Vielorrusia", "name:gu"=>"બેલારુસ", "name:gv"=>"Yn Velaroosh", "name:he"=>"בלארוס", "name:hi"=>"बेलारूस", "name:hr"=>"Bjelorusija", "name:ht"=>"Byelorisi", "name:hu"=>"Fehéroroszország", "name:hy"=>"Բելառուս", "name:ia"=>"Bielorussia", "name:id"=>"Belarus", "name:ie"=>"Bielorussia", "name:io"=>"Bielorusia", "name:is"=>"Hvíta-Rússland", "name:it"=>"Bielorussia", "name:ja"=>"ベラルーシ", "name:jv"=>"Bélarus", "name:ka"=>"ბელარუსი", "name:kg"=>"Belarusia", "name:kk"=>"Беларусь", "name:kl"=>"Hvideruslandi", "name:kn"=>"ಬೆಲಾರುಸ್", "name:ko"=>"벨라루스", "name:ku"=>"Belarûs", "name:kv"=>"Беларусь", "name:kw"=>"Belarussi", "name:ky"=>"Беларусия", "name:la"=>"Ruthenia Alba", "name:lb"=>"Wäissrussland", "name:li"=>"Wit-Rusland", "name:ln"=>"Bielorusia", "name:lt"=>"Baltarusija", "name:lv"=>"Baltkrievija", "name:mi"=>"Pērara", "name:mk"=>"Белорусија", "name:ml"=>"ബെലാറുസ്", "name:mn"=>"Беларусь", "name:mr"=>"बेलारूस", "name:ms"=>"Belarus", "name:mt"=>"Belarus", "name:my"=>"ဘီလာရုဇ်နိုင်ငံ", "name:na"=>"Berarut", "name:ne"=>"बेलारुस", "name:nl"=>"Wit-Rusland", "name:nn"=>"Kviterussland", "name:no"=>"Hviterussland", "name:oc"=>"Bielorussia", "name:or"=>"ବେଲାଋଷ", "name:os"=>"Белорусси", "name:pl"=>"Białoruś", "name:ps"=>"بېلاروس", "name:pt"=>"Bielorrússia", "name:qu"=>"Bilarus", "name:rm"=>"Bielorussia", "name:ro"=>"Belarus", "name:ru"=>"Беларусь", "name:rw"=>"Belarusi", "name:sa"=>"बेलारूस", "name:se"=>"Vilges-Ruošša", "name:sh"=>"Belorusija", "name:si"=>"බෙලාරස්", "name:sk"=>"Bielorusko", "name:sl"=>"Belorusija", "name:so"=>"Belarus", "name:sq"=>"Bjellorusia", "name:sr"=>"Белорусија", "name:ss"=>"IBhelalasi", "name:su"=>"Bélarus", "name:sv"=>"Belarus", "name:sw"=>"Belarus", "name:ta"=>"பெலருஸ்", "name:te"=>"బెలారస్", "name:tg"=>"Беларус", "name:th"=>"ประเทศเบลารุส", "name:tk"=>"Belorussiýa", "name:tl"=>"Biyelorusya", "name:tr"=>"Beyaz Rusya", "name:ts"=>"Belarus", "name:tt"=>"Беларусия", "name:ty"=>"Belarus", "name:ug"=>"بېلورۇسسىيە", "name:uk"=>"Білорусь", "name:ur"=>"بیلاروس", "name:uz"=>"Belarus", "name:vi"=>"Belarus", "name:vo"=>"Belarusän", "name:wo"=>"Belaarus", "name:yi"=>"בעלארוס", "name:yo"=>"Bẹ̀lárùs", "name:zh"=>"白罗斯/白羅斯", "name:zu"=>"IBelarusi"
-ck "name"=>"Kūki 'Āirani", "name:af"=>"Cookeilande", "name:ak"=>"Kook Nsupɔw", "name:am"=>"ኩክ ደሴቶች", "name:an"=>"islas Cook", "name:ar"=>"جزر كوك", "name:az"=>"Kuk adaları", "name:ba"=>"Кук Утрауҙары", "name:be"=>"Астравы Кука", "name:bg"=>"Острови Кук", "name:bm"=>"Kuki Gun", "name:bn"=>"কুক দ্বীপপুঞ্জ", "name:bo"=>"ཀཱུག གླིང་ཕྲེན་རྒྱལ་ཁབ།", "name:br"=>"Inizi Cook", "name:bs"=>"Cookova Ostrva", "name:ca"=>"Illes Cook", "name:cs"=>"Cookovy ostrovy", "name:cy"=>"Ynysoedd Cook", "name:da"=>"Cook-øerne", "name:de"=>"Cookinseln", "name:dv"=>"ކުކް ޖަޒީރާ", "name:dz"=>"ཀུག་གླིང་ཚོམ", "name:ee"=>"Kook ƒudomekpo nutome", "name:el"=>"Νήσοι Κουκ", "name:en"=>"Cook Islands", "name:eo"=>"Kukinsuloj", "name:es"=>"Islas Cook", "name:et"=>"Cooki saared", "name:eu"=>"Cook uharteak", "name:fa"=>"جزایر کوک", "name:ff"=>"Duuɗe Kuuk", "name:fi"=>"Cookinsaaret", "name:fo"=>"Cooksoyggjarnar", "name:fr"=>"Îles Cook", "name:fy"=>"de Cookeilannen", "name:ga"=>"Oileáin Cook", "name:gd"=>"Eileanan Cook", "name:gl"=>"Illas Cook", "name:gu"=>"કુક આઇલેન્ડ્સ", "name:ha"=>"Tsibiran Kuku", "name:he"=>"איי קוּק", "name:hi"=>"कुक द्वीपसमूह", "name:hr"=>"Cookovo Otočje", "name:hu"=>"Cook-szigetek", "name:hy"=>"Կուկի կղզիներ", "name:ia"=>"Insulas Cook", "name:id"=>"Kepulauan Cook", "name:io"=>"Insuli Cook", "name:is"=>"Cooks-eyjar", "name:it"=>"Isole Cook", "name:ja"=>"クック諸島", "name:jv"=>"Kapuloan Cook", "name:ka"=>"კუკის კუნძულები", "name:ki"=>"Visiwa vya Cook", "name:kk"=>"Кук аралдары", "name:kl"=>"Cook qeqertaq", "name:km"=>"កោះខូក", "name:kn"=>"ಕುಕ್ ದ್ವೀಪಗಳು", "name:ko"=>"쿡 제도", "name:ks"=>"کُک جٔزیٖرٕ", "name:ku"=>"Giravên Cook", "name:kw"=>"Ynysow Cook", "name:ky"=>"Кук аралдары", "name:la"=>"Insulae de Cook", "name:lb"=>"Cookinseln", "name:lg"=>"Bizinga bya Kkuki", "name:li"=>"Cookeilenj", "name:ln"=>"Bisanga bya Kookɛ", "name:lo"=>"ຫມູ່ເກາະຄຸກ", "name:lt"=>"Kuko Salos", "name:lv"=>"Kuka Salas", "name:mg"=>"Nosy Kook", "name:mi"=>"Kuki Airani", "name:mk"=>"Кукови Острови", "name:ml"=>"കൂക്ക് ദ്വീപുകൾ", "name:mn"=>"Күүкийн Арлууд", "name:mr"=>"कूक द्वीपसमूह", "name:ms"=>"Kepulauan Cook", "name:mt"=>"Gżejjer Cook", "name:my"=>"ကွတ် ကျွန်းစု", "name:ne"=>"कुक टापु", "name:nl"=>"Cookeilanden", "name:nn"=>"Cookøyane", "name:no"=>"Cookøyene", "name:oc"=>"Illas Cook", "name:or"=>"କୁକ୍ ଆଇସଲ୍ୟାଣ୍ଡ", "name:os"=>"Кучы сакъадæхтæ", "name:pa"=>"ਕੁੱਕ ਟਾਪੂ", "name:pl"=>"Wyspy Cooka", "name:pt"=>"Ilhas Cook", "name:rm"=>"Inslas Cook", "name:rn"=>"Izinga rya Kuku", "name:ro"=>"Insulele Cook", "name:ru"=>"Острова Кука", "name:rw"=>"Ibirwa bya Kuke", "name:se"=>"Cook-sullot", "name:sg"=>"âzûâ Kûku", "name:sh"=>"Kukova Ostrva", "name:si"=>"කුක් දිවයින්", "name:sk"=>"Cookove ostrovy", "name:sl"=>"Cookovi otoki", "name:sn"=>"Zvitsuwa zveCook", "name:so"=>"Jaziiradda Cook", "name:sq"=>"Ishulli Kuk", "name:sr"=>"Кукова Острва", "name:su"=>"Kapuloan Cook", "name:sv"=>"Cooköarna", "name:sw"=>"Visiwa vya Cook", "name:ta"=>"குக் தீவுகள்", "name:te"=>"కుక్ దీవులు", "name:th"=>"หมู่เกาะคุก", "name:ti"=>"ኩክ ደሴቶች", "name:tl"=>"Kapuluang Cook", "name:to"=>"ʻOtumotu Kuki", "name:tr"=>"Cook Adaları", "name:tt"=>"Кук утраулары", "name:ug"=>"Kuk Taqim Aralliri", "name:uk"=>"Острови́ Ку́ка", "name:ur"=>"جزائر کک", "name:uz"=>"Kuk orollari", "name:vi"=>"Quần đảo Cook", "name:wo"=>"Dunu Kook", "name:yo"=>"Orílẹ́ède Etíokun Kùúkù", "name:zh"=>"庫克群島", "name:zu"=>"i-Cook Islands"
-gs "name"=>"South Georgia and the South Sandwich Islands", "name:af"=>"Suid-Georgië en die Suidelike Sandwich-eilande", "name:ar"=>"جزر جورجيا الجنوبية وساندويتش الجنوبية", "name:az"=>"Cənubi Georgiya və Cənubi Sandviç adaları", "name:be"=>"Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы", "name:bg"=>"Южна Джорджия и Южни Сандвичеви острови", "name:br"=>"Inizi Georgia ar Su hag Inizi Sandwich ar Su", "name:bs"=>"Južna Džordžija i Južna Sendvička Ostrva", "name:ca"=>"Illes Geòrgia del Sud i Sandwich del Sud", "name:cs"=>"Jižní Georgie a Jižní Sandwichovy ostrovy", "name:da"=>"South Georgia og South Sandwich Islands", "name:de"=>"Südgeorgien und die Südlichen Sandwichinseln", "name:el"=>"Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς", "name:en"=>"South Georgia and the South Sandwich Islands", "name:eo"=>"Sud-Georgio kaj Sud-Sandviĉinsuloj", "name:es"=>"Islas Georgias del Sur y Sandwich del Sur", "name:et"=>"Lõuna-Georgia ja Lõuna-Sandwichi saared", "name:eu"=>"Hegoaldeko Georgiak eta Hegoaldeko Sandwich uharteak", "name:fa"=>"جزایر جورجیای جنوبی و ساندویچ جنوبی", "name:fi"=>"Etelä-Georgia ja Eteläiset Sandwichsaaret", "name:fo"=>"Suðursandwichoyggjar og Suðurgeorgia", "name:fr"=>"Géorgie du Sud-et-les Îles Sandwich du Sud", "name:fy"=>"Súd-Georgje en de Súdlike Sandwicheilannen", "name:gd"=>"Seòirsia-a-Deas is na h-Eileanan Shandwich-a-Deas", "name:gl"=>"Illas Xeorxia do Sur e Sandwich do Sur", "name:he"=>"איי ג'ורג'יה הדרומית ואיי סנדוויץ' הדרומיים", "name:hi"=>"दक्षिण जॉर्जिया एवं दक्षिण सैंडविच द्वीप समूह", "name:hr"=>"Južna Georgija i Otočje Južni Sandwich", "name:hu"=>"Déli-Georgia és Déli-Sandwich-szigetek", "name:id"=>"Georgia Selatan dan Kepulauan Sandwich Selatan", "name:is"=>"Suður-Georgía og Suður-Sandvíkureyjar", "name:it"=>"Georgia del Sud e Isole Sandwich Australi", "name:ja"=>"サウスジョージア・サウスサンドウィッチ諸島", "name:ko"=>"사우스조지아 사우스샌드위치 제도", "name:kw"=>"Jeorji Dheghow hag Ynysow Sandwich Deghow", "name:lt"=>"Pietų Džordžija ir Pietų Sandvičo salos", "name:lv"=>"Dienviddžordžija un Dienvidsendviču salas", "name:mk"=>"Јужна Џорџија и Јужни Сендвички Острови", "name:mr"=>"साउथ जॉर्जिया व साउथ सँडविच द्वीपसमूह", "name:ms"=>"Georgia Selatan dan Kepulauan Sandwich Selatan", "name:nl"=>"Zuid-Georgia en de Zuidelijke Sandwicheilanden", "name:nn"=>"Sør-Georgia og Sør-Sandwichøyane", "name:no"=>"Sør-Georgia og Sør-Sandwichøyene", "name:os"=>"Хуссар Джорджи æмæ Хуссар Сандвичы сакъадæхтæ", "name:pl"=>"Georgia Południowa i Sandwich Południowy", "name:pt"=>"Ilhas Geórgia do Sul e Sanduíche do Sul", "name:ro"=>"Georgia de Sud şi Insulele Sandwich de Sud", "name:ru"=>"Южная Георгия и Южные Сандвичевы Острова", "name:se"=>"Lulli Georgia ja Lulli Sandwich-sullot", "name:sk"=>"Južná Georgia a Južné Sandwichove ostrovy", "name:sl"=>"Južna Georgija in Južni Sandwichevi otoki", "name:sq"=>"Gjeorgjia Jugore dhe Ishujt Jugorë Sanduiç", "name:sr"=>"Јужна Џорџија и Јужна Сендвичка Острва", "name:sv"=>"Sydgeorgien och Sydsandwichöarna", "name:ta"=>"தெற்கு யோர்சியா மற்றும் தெற்கு சண்ட்விச் தீவுகள்", "name:th"=>"เกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิช", "name:tr"=>"Güney Georgia ve Güney Sandwich Adaları", "name:uk"=>"Південна Джорджія та Південні Сандвічеві острови", "name:vi"=>"Quần đảo Nam Georgia và Nam Sandwich", "name:wo"=>"Jeoorji gu Bëj-saalum ak Duni Islaand yi Bëj-saalum", "name:zh"=>"南喬治亞和南桑威奇群島"
-ie "name"=>"Éire / Ireland", "name:af"=>"Ierland", "name:ak"=>"Aereland", "name:am"=>"አየርላንድ", "name:an"=>"Irlanda", "name:ar"=>"أيرلندا", "name:ay"=>"Irlandiya", "name:az"=>"İrlandiya", "name:ba"=>"Ирландия", "name:be"=>"Ірландыя", "name:bg"=>"Ирландия", "name:bi"=>"Ireland", "name:bm"=>"Irilandi", "name:bn"=>"আয়ারল্যান্ড", "name:bo"=>"ཨ་ཡར་ལནཌ།", "name:br"=>"Iwerzhon", "name:bs"=>"Irska", "name:ca"=>"Irlanda", "name:ce"=>"Ирланди", "name:co"=>"Irlanda", "name:cs"=>"Irsko", "name:cu"=>"Єирь", "name:cv"=>"Ирланди Республики", "name:cy"=>"Iwerddon", "name:da"=>"Irland", "name:de"=>"Irland", "name:dv"=>"އަޔަލޭންޑުގެ ޖުމްހޫރިއްޔާ", "name:dz"=>"ཨཱ་ཡ་ལེནཌ", "name:ee"=>"Ireland nutome", "name:el"=>"Ιρλανδία", "name:en"=>"Ireland", "name:eo"=>"Irlando", "name:es"=>"Irlanda", "name:et"=>"Iirimaa", "name:eu"=>"Irlanda", "name:fa"=>"ایرلند", "name:ff"=>"Irlannda", "name:fi"=>"Irlanti", "name:fo"=>"Írland", "name:fr"=>"Irlande", "name:fy"=>"Ierlân", "name:ga"=>"Éire", "name:gd"=>"Èirinn", "name:gl"=>"Irlanda", "name:gn"=>"Ilandia", "name:gu"=>"આયર્લેંડ", "name:gv"=>"Nerin", "name:ha"=>"Ayalan", "name:he"=>"אירלנד", "name:hi"=>"आयरलैंड", "name:hr"=>"Irska", "name:ht"=>"Ilann", "name:hu"=>"Írország", "name:hy"=>"Իռլանդիա", "name:ia"=>"Irlanda", "name:id"=>"Irlandia", "name:ie"=>"Irland", "name:io"=>"Irlando", "name:is"=>"Írland", "name:it"=>"Irlanda", "name:ja"=>"アイルランド", "name:jv"=>"Republik Irlandia", "name:ka"=>"ირლანდია", "name:ki"=>"Ayalandi", "name:kk"=>"Ирландия", "name:kl"=>"Irlandi", "name:km"=>"អៀរឡង់", "name:kn"=>"ಐರ್ಲೆಂಡ್", "name:ko"=>"아일랜드", "name:ks"=>"اَیَرلینٛڑ", "name:ku"=>"Îrland", "name:kv"=>"Ирландия", "name:kw"=>"Repoblek Wordhen", "name:ky"=>"Ирландия", "name:la"=>"Hibernia", "name:lb"=>"Irland", "name:lg"=>"Ayalandi", "name:li"=>"Ierland", "name:ln"=>"Irelandɛ", "name:lo"=>"ໄອແລນ", "name:lt"=>"Airija", "name:lv"=>"Īrija", "name:mg"=>"Irlandy", "name:mi"=>"Airangi", "name:mk"=>"Ирска", "name:ml"=>"അയർലാൻഡ്", "name:mn"=>"Ирланд", "name:mr"=>"आयर्लंड", "name:ms"=>"Ireland", "name:mt"=>"Irlanda", "name:my"=>"အိုင်ယာလန်", "name:na"=>"Ripubrikit Airerand", "name:ne"=>"आइरल्याण्ड", "name:nl"=>"Ierland", "name:nn"=>"Irland", "name:no"=>"Irland", "name:nv"=>"Bitsiighaʼ Łichííʼí Bikéyah", "name:oc"=>"Republica d'Irlanda", "name:or"=>"ଆୟରଲ୍ୟାଣ୍ଡ", "name:os"=>"Ирланди", "name:pl"=>"Irlandia", "name:ps"=>"د آيرلېنډ جمهوريت", "name:pt"=>"Irlanda", "name:qu"=>"Ilanda", "name:rm"=>"Irlanda", "name:rn"=>"Irilandi", "name:ro"=>"Irlanda", "name:ru"=>"Ирландия", "name:rw"=>"Irilande", "name:sc"=>"Irlanda", "name:se"=>"Irlánda", "name:sg"=>"Irlânde", "name:sh"=>"Irska", "name:si"=>"අයර්ලන්තය", "name:sk"=>"Írsko", "name:sl"=>"Irska", "name:sn"=>"Ireland", "name:so"=>"Ayrlaand", "name:sq"=>"Irlandë", "name:sr"=>"Ирска", "name:ss"=>"IYalendi", "name:sv"=>"Irland", "name:sw"=>"Ayalandi", "name:ta"=>"அயர்லாந்து", "name:te"=>"ఐర్ లాండ్", "name:tg"=>"Ҷумҳурии Ирландия", "name:th"=>"สาธารณรัฐไอร์แลนด์", "name:ti"=>"አየርላንድ", "name:tk"=>"Irlandiýa", "name:tl"=>"Irlanda", "name:to"=>"ʻAealani", "name:tr"=>"İrlanda", "name:ts"=>"Ireland", "name:tt"=>"Ирландия", "name:uk"=>"Ірландія", "name:ur"=>"آئرلینڈ", "name:uz"=>"Irlandiya", "name:vi"=>"Ireland", "name:vo"=>"Lireyän", "name:wa"=>"Irlande", "name:yi"=>"אירלאנד", "name:yo"=>"Orílẹ́ède Ailandi", "name:za"=>"Aiwjlanz Gunghozgoz", "name:zh"=>"愛爾蘭", "name:zu"=>"i-Ireland"
-km "name"=>"Comores Komori جزر القمر", "name:af"=>"Komore", "name:ar"=>"جزر القمر", "name:br"=>"Komorez", "name:ca"=>"Comores", "name:cs"=>"Komory", "name:cy"=>"Comoros", "name:da"=>"Comorerne", "name:de"=>"Komoren", "name:el"=>"Κομόρες", "name:en"=>"Comoros", "name:eo"=>"Komoroj", "name:es"=>"Comoras", "name:et"=>"Komoorid", "name:eu"=>"Komoreak", "name:fa"=>"اتحاد قمر", "name:fi"=>"Komorit", "name:fr"=>"Comores", "name:fy"=>"de Komoaren", "name:ga"=>"Oileáin Chomóra", "name:gd"=>"Comòras", "name:he"=>"קומורו", "name:hr"=>"Komori", "name:hu"=>"Comore-szigetek", "name:ia"=>"Comoros", "name:id"=>"Komoro", "name:io"=>"Komori", "name:is"=>"Kómoreyjar", "name:it"=>"Comore", "name:ja"=>"コモロ", "name:la"=>"Insulae Comorianae", "name:lb"=>"Komoren", "name:lt"=>"Komorai", "name:lv"=>"Komoru salas", "name:mk"=>"Комори", "name:mn"=>"Коморын арлууд", "name:nl"=>"Comoren", "name:pl"=>"Komory", "name:ps"=>"قمرټاپوګان", "name:pt"=>"Comores", "name:ru"=>"Коморские острова", "name:se"=>"Komorosullot", "name:sk"=>"Komory", "name:sl"=>"Komori", "name:sr"=>"Комори", "name:sv"=>"Komorerna", "name:ta"=>"கொமொரோசு", "name:th"=>"ประเทศคอโมโรส", "name:tr"=>"Komorlar", "name:ug"=>"كومور ئاراللىرى", "name:uk"=>"Коморські Острови", "name:ur"=>"اتحاد القمری", "name:vi"=>"Comoros", "name:vo"=>"Komoruäns", "name:zh"=>"科摩洛"
-kp "name"=>"조선민주주의인민공화국", "name:af"=>"Noord-Korea", "name:am"=>"ስሜን ኮርያ", "name:an"=>"Coreya d'o Norte", "name:ar"=>"كوريا الشمالية", "name:as"=>"উত্তৰ কোৰিয়া", "name:az"=>"Koreya Xalq Demokratik Respublikası", "name:ba"=>"Корея Халыҡ-Демократик Республикаһы", "name:be"=>"Карэйская Народна-Дэмакратычная Рэспубліка", "name:bg"=>"Северна Корея", "name:bh"=>"उत्तर कोरिया", "name:bn"=>"উত্তর কোরিয়া", "name:bo"=>"བྱང་ཀོ་རི་ཡ།", "name:br"=>"Republik Poblel ha Demokratel Korea", "name:bs"=>"Sjeverna Koreja", "name:ca"=>"Corea del Nord", "name:ce"=>"Корейн Халкъан-Демократин Республика", "name:cs"=>"Severní Korea", "name:cy"=>"Gogledd Corea", "name:da"=>"Nordkorea", "name:de"=>"Nordkorea", "name:dv"=>"އުތުރު ކޮރެއާ", "name:dz"=>"བྱང་ཀོ་རི་ཡ་", "name:ee"=>"North Korea", "name:el"=>"Βόρεια Κορέα", "name:en"=>"North Korea", "name:eo"=>"Nord-Koreio", "name:es"=>"Corea del Norte", "name:et"=>"Põhja-Korea", "name:eu"=>"Ipar Korea", "name:fa"=>"کره شمالی", "name:fi"=>"Pohjois-Korea", "name:fo"=>"Norðurkorea", "name:fr"=>"Corée du Nord", "name:fy"=>"Noard-Koreä", "name:ga"=>"An Chóiré Thuaidh", "name:gd"=>"Coirèa a Tuath", "name:gl"=>"Corea do Norte", "name:gn"=>"Yvate Koréa", "name:gu"=>"ઉત્તર કોરિયા", "name:gv"=>"Yn Chorea Twoaie", "name:ha"=>"Koriya ta Arewa", "name:he"=>"קוריאה הצפונית", "name:hi"=>"उत्तर कोरिया", "name:hr"=>"Sjeverna Koreja", "name:ht"=>"Kore dinò", "name:hu"=>"Koreai Népi Demokratikus Köztársaság (Észak-Korea)", "name:hy"=>"Կորեայի Ժողովրդա-Դեմոկրատական Հանրապետություն", "name:ia"=>"Corea del Nord", "name:id"=>"Korea Utara", "name:ie"=>"Nord-Korea", "name:ik"=>"Nigiq Korea", "name:io"=>"Nord-Korea", "name:is"=>"Norður-Kórea", "name:it"=>"Corea del Nord", "name:ja"=>"朝鮮民主主義人民共和国", "name:jv"=>"Koréa Lor", "name:ka"=>"კორეის სახალხო დემოკრატიული რესპუბლიკა", "name:kg"=>"Hangu ya Node", "name:ki"=>"North Korea", "name:kk"=>"Корей Халық Демократиялық Республикасы", "name:kl"=>"Korea Avannarleq", "name:km"=>"កូរ៉េខាងជើង", "name:kn"=>"ಉತ್ತರ ಕೊರಿಯಾ", "name:ko"=>"조선민주주의인민공화국", "name:ku"=>"Korêya Bakur", "name:kv"=>"Корея Войтыр Демократия Республика", "name:kw"=>"Korea Gledh", "name:ky"=>"Корей Эл-Демократиялык Республикасы", "name:la"=>"Res publica popularis democratica Coreana", "name:lb"=>"Demokratesch Volleksrepublik Korea", "name:li"=>"Noord-Korea", "name:ln"=>"Koré ya Nola", "name:lo"=>"ປະເທດເກົາຫຼີເໜືອ", "name:lt"=>"Šiaurės Korėja", "name:lv"=>"Ziemeļkoreja", "name:mg"=>"Korea Avaratra", "name:mi"=>"Kōrea-ki-te-raki", "name:mk"=>"Демократска Народна Република Кореја", "name:ml"=>"ഉത്തര കൊറിയ", "name:mn"=>"Умард Солонгос", "name:mr"=>"उत्तर कोरिया", "name:ms"=>"Korea Utara", "name:mt"=>"Korea ta' Fuq", "name:my"=>"ကိုရီးယား ဒီမိုကရက်တစ် ပြည်သူ့သမ္မတနိုင်ငံ", "name:na"=>"Ripubrikit Engame Korea", "name:ne"=>"उत्तर कोरिया", "name:nl"=>"Noord-Korea", "name:nn"=>"Nord-Korea", "name:no"=>"Nord-Korea", "name:nv"=>"Kolíya Bikéyah Náhookǫsjí Siʼánígíí", "name:oc"=>"Corèa del Nòrd", "name:om"=>"Kooriyaa Kaabaa", "name:or"=>"ପୂର୍ବ କୋରିଆ", "name:os"=>"Корейы Адæмон Демократон Республикæ", "name:pa"=>"ਉੱਤਰੀ ਕੋਰੀਆ", "name:pl"=>"Korea Północna", "name:ps"=>"شمالي کوريا", "name:pt"=>"Coreia do Norte", "name:qu"=>"Chusun Runakapaq Runallaqta Republika", "name:ro"=>"Coreea de Nord", "name:ru"=>"Северная Корея", "name:rw"=>"Koreya y’Amajyaruguru", "name:sa"=>"उत्तर कोरिया", "name:sc"=>"Corea de su Norte", "name:sd"=>"اتر ڪوريا", "name:se"=>"Davvi-Korea", "name:sh"=>"Demokratska Narodna Republika Koreja", "name:si"=>"උතුරු කොරියාව", "name:sk"=>"Kórejská ľudovodemokratická republika", "name:sl"=>"Severna Koreja", "name:sn"=>"North Korea", "name:so"=>"Waqooyiga Kuuriya", "name:sq"=>"Koreja e Veriut", "name:sr"=>"Северна Кореја", "name:ss"=>"IKhoriya leseNyakatfo", "name:su"=>"Koréa Kalér", "name:sv"=>"Nordkorea", "name:sw"=>"Korea Kaskazini", "name:ta"=>"வட கொரியா", "name:te"=>"ఉత్తర కొరియా", "name:tg"=>"Кореяи Шимолӣ", "name:th"=>"ประเทศเกาหลีเหนือ", "name:tk"=>"Demirgazyk Koreýa", "name:tl"=>"Hilagang Korea", "name:tr"=>"Kuzey Kore", "name:ts"=>"North Korea", "name:tt"=>"Корея Халык Демократик Җөмһүрияте", "name:ug"=>"شىمالىي چاۋشيەن", "name:uk"=>"Корейська Народно-Демократична Республіка", "name:ur"=>"شمالی کوریا", "name:uz"=>"Koreya Xalq Demokratik Respublikasi", "name:vi"=>"Bắc Triều Tiên", "name:vo"=>"Nolüda-Koreyän", "name:wo"=>"Kore gu Bëj-gànnaar", "name:xh"=>"Coreia do Twoaie", "name:yi"=>"צפון קארעע", "name:yo"=>"Kòréà Àríwá", "name:za"=>"Cauzsenh Minzcujcujyi Yinzminz Gunghozgoz", "name:zh"=>"朝鲜民主主义人民共和国"
-kr "name"=>"대한민국", "name:af"=>"Suid-Korea", "name:ak"=>"Anaafo Koria", "name:am"=>"ደቡብ ኮርያ", "name:an"=>"Corea d'o Sur", "name:ar"=>"كوريا الجنوبية", "name:as"=>"দক্ষিণ কোৰিয়া", "name:az"=>"Cənubi Koreya", "name:ba"=>"Көньяҡ Корея", "name:be"=>"Паўднёвая Карэя", "name:bg"=>"Южна Корея", "name:bi"=>"Saot Koria", "name:bn"=>"দক্ষিণ কোরিয়া", "name:bo"=>"ལྷོ་ཀོ་རི་ཡ།", "name:br"=>"Korea ar Su", "name:bs"=>"Južna Koreja", "name:ca"=>"Corea del Sud", "name:ce"=>"Къилба Корей", "name:cs"=>"Jižní Korea", "name:cy"=>"De Corea", "name:da"=>"Sydkorea", "name:de"=>"Südkorea", "name:dv"=>"ދެކުނު ކޮރެއާ", "name:dz"=>"ལྷོ་ཀོ་རི་ཡ་", "name:ee"=>"South Korea", "name:el"=>"Νότια Κορέα", "name:en"=>"South Korea", "name:eo"=>"Sud-Koreio", "name:es"=>"Corea del Sur", "name:et"=>"Lõuna-Korea", "name:eu"=>"Hego Korea", "name:fa"=>"کره جنوبی", "name:fi"=>"Etelä-Korea", "name:fo"=>"Suðurkorea", "name:fr"=>"Corée du Sud", "name:fy"=>"Súd-Korea", "name:ga"=>"An Chóiré Theas", "name:gd"=>"Coirea a Deas", "name:gl"=>"Corea do Sur", "name:gn"=>"Yvykorea", "name:gu"=>"દક્ષિણ કોરિયા", "name:gv"=>"Yn Chorea Yiass", "name:he"=>"קוריאה הדרומית", "name:hi"=>"दक्षिण कोरिया", "name:hr"=>"Južna Koreja", "name:ht"=>"Kore disid", "name:hu"=>"Dél-Korea", "name:hy"=>"Հարավային Կորեա", "name:ia"=>"Corea del Sud", "name:id"=>"Korea Selatan", "name:ie"=>"Sud-Korea", "name:io"=>"Sud-Korea", "name:is"=>"Suður-Kórea", "name:it"=>"Corea del Sud", "name:ja"=>"大韓民国", "name:jv"=>"Koréa Kidul", "name:ka"=>"სამხრეთი კორეა", "name:ki"=>"South Korea", "name:kk"=>"Оңтүстік Корея", "name:kl"=>"Korea Kujalleq", "name:km"=>"កូរ៉េខាងត្បូង", "name:kn"=>"ದಕ್ಷಿಣ ಕೊರಿಯಾ", "name:ko"=>"대한민국", "name:ks"=>"दक्षिण कोरिया", "name:ku"=>"Korêya Başûr", "name:kv"=>"Корея Республика", "name:kw"=>"Korea Dhyhow", "name:ky"=>"Корея Республикасы", "name:la"=>"Corea Meridionalis", "name:lb"=>"Südkorea", "name:li"=>"Zuud-Korea", "name:ln"=>"Kore ya Sidi", "name:lo"=>"ປະເທດເກົາຫຼີໃຕ້", "name:lt"=>"Pietų Korėja", "name:lv"=>"Dienvidkoreja", "name:mg"=>"Korea Atsimo", "name:mi"=>"Kōrea-ki-te-tonga", "name:mk"=>"Република Кореја", "name:ml"=>"ദക്ഷിണ കൊറിയ", "name:mn"=>"Өмнөд Солонгос", "name:mr"=>"दक्षिण कोरिया", "name:ms"=>"Korea Selatan", "name:mt"=>"Korea t'Isfel", "name:my"=>"တောင်ကိုရီးယားနိုင်ငံ", "name:na"=>"Ripubrikin Korea", "name:ne"=>"दक्षिण कोरिया", "name:nl"=>"Zuid-Korea", "name:nn"=>"Sør-Korea", "name:no"=>"Sør-Korea", "name:nv"=>"Kolíya Bikéyah Shádiʼááhjí Siʼánígíí", "name:oc"=>"Corèa del Sud", "name:or"=>"ଦକ୍ଷିଣ କୋରିଆ", "name:os"=>"Хуссар Корей", "name:pl"=>"Korea Południowa", "name:ps"=>"سوېلي کوريا", "name:pt"=>"Coreia do Sul", "name:qu"=>"Urin Kuriya", "name:rm"=>"Corea dal sid", "name:ro"=>"Coreea de Sud", "name:ru"=>"Республика Корея", "name:rw"=>"Koreya y’Amajyepfo", "name:sa"=>"दक्षिण कोरिया", "name:sc"=>"Corea de su Sud", "name:se"=>"Lulli-Korea", "name:sg"=>"Korëe tî Mbongo", "name:sh"=>"Južna Koreja", "name:si"=>"දකුණු කොරියාව", "name:sk"=>"Južná Kórea", "name:sl"=>"Južna Koreja", "name:sm"=>"Kolea i Saute", "name:sn"=>"Korea, South", "name:so"=>"Koonfur Kuuriya", "name:sq"=>"Koreja e Jugut", "name:sr"=>"Јужна Кореја", "name:ss"=>"IKhoriya leseNingizimu", "name:su"=>"Koréa Kidul", "name:sv"=>"Sydkorea", "name:sw"=>"Korea Kusini", "name:ta"=>"தென்கொரியா", "name:te"=>"దక్షిణ కొరియా", "name:th"=>"ประเทศเกาหลีใต้", "name:tk"=>"Günorta Koreýa", "name:tl"=>"Timog Korea", "name:tr"=>"Güney Kore", "name:tt"=>"Көньяк Корея", "name:ug"=>"جەنۇبىي چاۋشيەن", "name:uk"=>"Південна Корея", "name:ur"=>"جنوبی کوریا", "name:uz"=>"Janubiy Koreya", "name:vi"=>"Hàn Quốc", "name:vo"=>"Sulüda-Koreyän", "name:wo"=>"Kore gu Bëj-saalum", "name:yi"=>"דרום קארעע", "name:yo"=>"Kòréà Gúúsù", "name:za"=>"Hanzgoz", "name:zh"=>"韩国/南韓"
-ye "name"=>"اليمن", "name:af"=>"Jemen", "name:am"=>"የመን (አገር)", "name:an"=>"Yemen", "name:ar"=>"اليمن", "name:az"=>"Yəmən", "name:ba"=>"Йемен", "name:be"=>"Емен", "name:bg"=>"Йемен", "name:bn"=>"ইয়েমেন", "name:bo"=>"ཡེ་མེན།", "name:br"=>"Yemen", "name:bs"=>"Jemen", "name:ca"=>"Iemen", "name:ce"=>"Йемен", "name:co"=>"Yemen", "name:cs"=>"Jemen", "name:cv"=>"Йемен", "name:cy"=>"Yemen", "name:da"=>"Yemen", "name:de"=>"Jemen", "name:dv"=>"ޔަމަން", "name:el"=>"Υεμένη", "name:en"=>"Yemen", "name:eo"=>"Jemeno", "name:es"=>"Yemen", "name:et"=>"Jeemen", "name:eu"=>"Yemen", "name:fa"=>"یمن", "name:fi"=>"Jemen", "name:fo"=>"Jemen", "name:fr"=>"Yémen", "name:fy"=>"Jemen", "name:ga"=>"Poblacht Éimin", "name:gd"=>"Iemen", "name:gl"=>"Iemen - اليمن", "name:gn"=>"Jemẽ", "name:gu"=>"યેમેન", "name:gv"=>"Yn Yeaman", "name:he"=>"תימן", "name:hi"=>"यमन", "name:hr"=>"Jemen", "name:ht"=>"Yemèn", "name:hu"=>"Jemen", "name:hy"=>"Եմեն", "name:ia"=>"Yemen", "name:id"=>"Yaman", "name:ie"=>"Yemen", "name:io"=>"Yemen", "name:is"=>"Jemen", "name:it"=>"Yemen", "name:ja"=>"イエメン", "name:jv"=>"Yaman", "name:ka"=>"იემენი", "name:ki"=>"Yemen", "name:kk"=>"Йемен", "name:kl"=>"Yemen", "name:kn"=>"ಯೆಮೆನ್", "name:ko"=>"예멘", "name:ks"=>"یَمَن", "name:ku"=>"Yemen", "name:kv"=>"Йемен", "name:kw"=>"Yemen", "name:ky"=>"Йемен", "name:la"=>"Iemenia", "name:lb"=>"Jemen", "name:li"=>"Jeme", "name:ln"=>"Yeméni", "name:lt"=>"Jemenas", "name:lv"=>"Jemena", "name:mk"=>"Јемен", "name:ml"=>"യെമൻ", "name:mn"=>"Йемен", "name:mr"=>"येमेनचे प्रजासत्ताक", "name:ms"=>"Yaman", "name:mt"=>"Jemen", "name:my"=>"ယီမင်နိုင်ငံ", "name:na"=>"Yemen", "name:ne"=>"गणतन्त्र यमन", "name:nl"=>"Jemen", "name:nn"=>"Jemen", "name:no"=>"Jemen", "name:nv"=>"Shádiʼááhjí Ásáí Bikéyah", "name:oc"=>"Iemèn", "name:or"=>"ୟେମେନ", "name:os"=>"Йемен", "name:pa"=>"ਯਮਨ", "name:pl"=>"Jemen", "name:ps"=>"یمن", "name:pt"=>"Iémen", "name:qu"=>"Yaman", "name:ro"=>"Yemen", "name:ru"=>"Йемен", "name:rw"=>"Yemeni", "name:sa"=>"यमन", "name:sd"=>"يمن", "name:se"=>"Jemen", "name:sh"=>"Jemen", "name:sk"=>"Jemen", "name:sl"=>"Jemen", "name:so"=>"Yemen", "name:sq"=>"Jemeni", "name:sr"=>"Јемен", "name:ss"=>"IYemeni", "name:su"=>"Yaman", "name:sv"=>"Jemen", "name:sw"=>"Yemen", "name:ta"=>"யெமன்", "name:te"=>"యెమన్", "name:tg"=>"Яман", "name:th"=>"ประเทศเยเมน", "name:tk"=>"Ýemen", "name:tl"=>"Yemen", "name:tr"=>"Yemen", "name:tt"=>"Йәмән", "name:ug"=>"يەمەن", "name:uk"=>"Ємен", "name:ur"=>"یمن", "name:uz"=>"Yaman", "name:vi"=>"Yemen", "name:vo"=>"Yämän", "name:wo"=>"Yaman", "name:yi"=>"תימן", "name:yo"=>"Yemen", "name:zh"=>"也门", "name:zu"=>"IYemen"
-gt "name"=>"Guatemala", "name:af"=>"Guatemala", "name:am"=>"ጓቴማላ", "name:an"=>"Guatemala", "name:ar"=>"غواتيمالا", "name:ay"=>"Watimala", "name:az"=>"Qvatemala", "name:ba"=>"Гватемала", "name:be"=>"Гватэмала", "name:bg"=>"Гватемала", "name:bm"=>"Gatemala", "name:bn"=>"গুয়াতেমালা", "name:bo"=>"གུ་ཝེ་ཐི་མ་ལ།", "name:br"=>"Guatemala", "name:bs"=>"Gvatemala", "name:ca"=>"Guatemala", "name:ce"=>"Гватемала", "name:cs"=>"Guatemala", "name:cy"=>"Guatemala", "name:da"=>"Guatemala", "name:de"=>"Guatemala", "name:dv"=>"ގުއަޓެމާލާ", "name:ee"=>"Guatemala", "name:el"=>"Γουατεμάλα", "name:en"=>"Guatemala", "name:eo"=>"Gvatemalo", "name:es"=>"Guatemala", "name:et"=>"Guatemala", "name:eu"=>"Guatemala", "name:fa"=>"گواتمالا", "name:fi"=>"Guatemala", "name:fo"=>"Guatemala", "name:fr"=>"Guatemala", "name:fy"=>"Gûatemala", "name:ga"=>"Guatamala", "name:gd"=>"Guatamala", "name:gl"=>"Guatemala", "name:gn"=>"Guatemala", "name:gv"=>"Yn Ghuatemaley", "name:he"=>"גואטמלה", "name:hi"=>"ग्वाटेमाला", "name:hr"=>"Gvatemala", "name:ht"=>"Gwatemala", "name:hu"=>"Guatemala", "name:hy"=>"Գվատեմալա", "name:ia"=>"Guatemala", "name:id"=>"Guatemala", "name:ie"=>"Guatemala", "name:io"=>"Guatemala", "name:is"=>"Gvatemala", "name:it"=>"Guatemala", "name:ja"=>"グアテマラ", "name:jv"=>"Guatemala", "name:ka"=>"გვატემალა", "name:kk"=>"Гватемала", "name:km"=>"ហ្គាតេម៉ាឡា", "name:kn"=>"ಗ್ವಾಟೆಮಾಲ", "name:ko"=>"과테말라", "name:ku"=>"Guatemala", "name:kw"=>"Gwatemala", "name:la"=>"Guatimalia", "name:lb"=>"Guatemala", "name:li"=>"Guatemala", "name:ln"=>"Gwatemala", "name:lt"=>"Gvatemala", "name:lv"=>"Gvatemala", "name:mg"=>"Goatemala", "name:mi"=>"Kuatamāra", "name:mk"=>"Гватемала", "name:ml"=>"ഗ്വാട്ടിമാല", "name:mn"=>"Гватемал", "name:mr"=>"ग्वातेमाला", "name:ms"=>"Guatemala", "name:mt"=>"Gwatemala", "name:my"=>"ဂွါတီမာလာနိုင်ငံ", "name:na"=>"Guatemara", "name:ne"=>"ग्वाटेमाला", "name:nl"=>"Guatemala", "name:nn"=>"Guatemala", "name:no"=>"Guatemala", "name:oc"=>"Guatemala", "name:os"=>"Гватемалæ", "name:pa"=>"ਗੁਆਤੇਮਾਲਾ", "name:pl"=>"Gwatemala", "name:ps"=>"ګواتمالا", "name:pt"=>"Guatemala", "name:qu"=>"Watimala", "name:ro"=>"Guatemala", "name:ru"=>"Гватемала", "name:rw"=>"Gwatemala", "name:sa"=>"ग्वाटेमाला", "name:se"=>"Guatemala", "name:sh"=>"Gvatemala", "name:sk"=>"Guatemala", "name:sl"=>"Gvatemala", "name:sm"=>"Tuatemala", "name:so"=>"Guatemala", "name:sq"=>"Guatemala", "name:sr"=>"Гватемала", "name:ss"=>"IGwathamala", "name:su"=>"Guatémala", "name:sv"=>"Guatemala", "name:sw"=>"Guatemala", "name:ta"=>"குவாத்தமாலா", "name:tg"=>"Гуатемала", "name:th"=>"ประเทศกัวเตมาลา", "name:tl"=>"Guwatemala", "name:tr"=>"Guatemala", "name:tt"=>"Гватемала", "name:ug"=>"گۋاتېمالا", "name:uk"=>"Гватемала", "name:ur"=>"گوئٹے مالا", "name:uz"=>"Gvatemala", "name:vi"=>"Guatemala", "name:vo"=>"Gvatemän", "name:wo"=>"Guwaatemala", "name:yi"=>"גוואטעמאלע", "name:yo"=>"Guatẹmálà", "name:zh"=>"危地马拉", "name:zu"=>"Guatemala"
-pg "name"=>"Papua Niugini", "name:af"=>"Papoea-Nieu-Guinee", "name:am"=>"ፓፑዋ ኒው ጊኒ", "name:an"=>"Papua y Nueva Guinea", "name:ar"=>"بابوا غينيا الجديدة", "name:az"=>"Papua-Yeni Qvineya", "name:ba"=>"Папуа — Яңы Гвинея", "name:be"=>"Папуа — Новая Гвінея", "name:bg"=>"Папуа Нова Гвинея", "name:bi"=>"Papua New Guinea", "name:bn"=>"পাপুয়া নিউ গিনি", "name:bo"=>"པ་པུ་འ་ནིའུ་གི་ནེ།", "name:br"=>"Papoua Ginea-Nevez", "name:bs"=>"Papua Nova Gvineja", "name:ca"=>"Papua Nova Guinea", "name:ce"=>"Папуа — Керла Гвине", "name:cs"=>"Papua Nová Guinea", "name:cu"=>"Папоуа · Нова Гвинєꙗ", "name:cy"=>"Papua Guinea Newydd", "name:da"=>"Papua Ny Guinea", "name:de"=>"Papua-Neuguinea", "name:dv"=>"ޕަޕުއާ ނިއު ގިނީ", "name:el"=>"Παπούα Νέα Γουινέα", "name:en"=>"Papua New Guinea", "name:eo"=>"Papuo-Nov-Gvineo", "name:es"=>"Papua-Nueva Guinea", "name:et"=>"Paapua Uus-Guinea", "name:eu"=>"Papua Ginea Berria", "name:fa"=>"پاپوآ گینه نو", "name:fi"=>"Papua-Uusi-Guinea", "name:fo"=>"Papua Nýguinea", "name:fr"=>"Papouasie-Nouvelle-Guinée", "name:fy"=>"Papoea Nij-Guineä", "name:ga"=>"Nua-Ghuine Phapua", "name:gd"=>"Gini Nuadh Phaputhach", "name:gl"=>"Papúa Nova Guinea", "name:gv"=>"Papooey Guinea Noa", "name:he"=>"פפואה גינאה החדשה", "name:hi"=>"पापुआ न्यू गिनी", "name:hr"=>"Papua Nova Gvineja", "name:ht"=>"Papwazi-Nouvèl-Gine", "name:hu"=>"Pápua Új-Guinea", "name:hy"=>"Պապուա Նոր Գվինեա", "name:ia"=>"Papua Nove Guinea", "name:id"=>"Papua Nugini", "name:io"=>"Papua-Nova-Guinea", "name:is"=>"Papúa Nýja-Gínea", "name:it"=>"Papua Nuova Guinea", "name:ja"=>"パプアニューギニア", "name:jv"=>"Papua Nugini", "name:ka"=>"პაპუა-ახალი გვინეა", "name:kk"=>"Папуа Жаңа Гвинея", "name:kn"=>"ಪಾಪುಅ ನ್ಯೂ ಗಿನಿ", "name:ko"=>"파푸아 뉴기니", "name:ku"=>"Papua Gîneya Nû", "name:ky"=>"Папуа-Жаӊы-Гвинея.", "name:la"=>"Papua Nova Guinea", "name:lb"=>"Papua-Neiguinea", "name:li"=>"Papoea-Nui-Guinea", "name:lt"=>"Papua Naujoji Gvinėja", "name:lv"=>"Papua-Jaungvineja", "name:mi"=>"Papua Nūkini", "name:mk"=>"Папуа Нова Гвинеја", "name:ml"=>"പാപുവ ന്യൂ ഗിനിയ", "name:mn"=>"Папуа-Шинэ Гвиней", "name:mr"=>"पापुआ न्यू गिनी", "name:ms"=>"Papua New Guinea", "name:mt"=>"Papwa Gwinea l-Ġdida", "name:my"=>"ပါပူအာနယူးဂီနီနိုင်ငံ", "name:na"=>"Papua New Guinea", "name:nl"=>"Papoea-Nieuw-Guinea", "name:nn"=>"Papua Ny-Guinea", "name:no"=>"Papua Ny-Guinea", "name:nv"=>"Páápowa Bigíní Ániidí", "name:oc"=>"Papoa-Nòva Guinèa", "name:os"=>"Папуæ — Ног Гвиней", "name:pa"=>"ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ", "name:pl"=>"Papua-Nowa Gwinea", "name:pt"=>"Papua-Nova Guiné", "name:qu"=>"Papwa Ñukini", "name:ro"=>"Papua Noua Guinee", "name:ru"=>"Папуа - Новая Гвинея", "name:rw"=>"Papuwa Nuveli Gineya", "name:sa"=>"पपुवा न्यू गिनी", "name:se"=>"Papua-Ođđa-Guinea", "name:sg"=>"Papû Finî Ginëe", "name:sh"=>"Papua Nova Gvineja", "name:sk"=>"Papua-Nová Guinea", "name:sl"=>"Papua Nova Gvineja", "name:sm"=>"Papua", "name:sq"=>"Papua Guinea e Re", "name:sr"=>"Папуа Нова Гвинеја", "name:su"=>"Papua Nugini", "name:sv"=>"Papua Nya Guinea", "name:sw"=>"Papua Guinea Mpya", "name:ta"=>"பப்புவா நியூ கினி", "name:th"=>"ประเทศปาปัวนิวกินี", "name:tl"=>"Papua Bagong Ginea", "name:tr"=>"Papua Yeni Gine", "name:tt"=>"Папуа — Яңа Гвинея", "name:ug"=>"پاپۇئا يېڭى گۋىنېيە", "name:uk"=>"Папуа Нова Ґвінея", "name:ur"=>"پاپوا نیو گنی", "name:uz"=>"Papua Yangi Gvineya", "name:vi"=>"Papua New Guinea", "name:vo"=>"Papuveän Nula-Gineyän", "name:wo"=>"Papuwaasi-Gine-Gu-Bees", "name:yo"=>"Papua Guinea Titun", "name:zh"=>"巴布亚新几内亚 / 巴布亞紐幾內亞 / 巴布亞新畿內亞"
-lu "name"=>"Lëtzebuerg", "name:af"=>"Luxemburg", "name:am"=>"ሉክሰምበርግ", "name:an"=>"Luxemburgo", "name:ar"=>"لوكسمبورغ", "name:az"=>"Lüksemburq", "name:ba"=>"Люксембург", "name:be"=>"Люксембург", "name:bg"=>"Люксембург", "name:bi"=>"Luxembourg", "name:bn"=>"লুক্সেমবুর্গ", "name:bo"=>"ལུ་སེམ་བའུརག", "name:br"=>"Luksembourg", "name:bs"=>"Luksemburg", "name:ca"=>"Luxemburg", "name:ce"=>"Люксембург", "name:co"=>"Lussemburgu", "name:cs"=>"Lucembursko", "name:cu"=>"Люѯємбоургъ", "name:cv"=>"Люксембург", "name:cy"=>"Lwcsembwrg", "name:da"=>"Luxembourg", "name:de"=>"Luxemburg", "name:ee"=>"Luxembourg", "name:el"=>"Λουξεμβούργο", "name:en"=>"Luxembourg", "name:eo"=>"Luksemburgio", "name:es"=>"Luxemburgo", "name:et"=>"Luksemburg", "name:eu"=>"Luxenburgo", "name:fa"=>"لوکزامبورگ", "name:fi"=>"Luxemburg", "name:fo"=>"Luksemburg", "name:fr"=>"Luxembourg", "name:fy"=>"Lúksemboarch", "name:ga"=>"Lucsamburg", "name:gd"=>"Lucsamburg", "name:gl"=>"Luxemburgo", "name:gn"=>"Luxemburgo", "name:gu"=>"લક્ઝેમ્બર્ગ", "name:gv"=>"Lucsemburg", "name:he"=>"לוקסמבורג", "name:hi"=>"लक्ज़मबर्ग", "name:hr"=>"Luksemburg", "name:ht"=>"Liksanbou", "name:hu"=>"Luxemburg", "name:hy"=>"Լյուքսեմբուրգ", "name:ia"=>"Luxemburg", "name:id"=>"Luksemburg", "name:ie"=>"Luxemburgia", "name:io"=>"Luxemburgia", "name:is"=>"Lúxemborg", "name:it"=>"Lussemburgo", "name:ja"=>"ルクセンブルク", "name:jv"=>"Luksemburg", "name:ka"=>"ლუქსემბურგი", "name:kg"=>"Luxembourg", "name:kk"=>"Люксембург", "name:kl"=>"Luxembourg", "name:ko"=>"룩셈부르크", "name:ku"=>"Lûksembûrg", "name:kv"=>"Люксембург", "name:kw"=>"Lushaborg", "name:ky"=>"Люксембург", "name:la"=>"Luxemburgum", "name:lb"=>"Lëtzebuerg", "name:li"=>"Luxembörg", "name:ln"=>"Luksamburg", "name:lt"=>"Liuksemburgas", "name:lv"=>"Luksemburga", "name:mg"=>"Loksemborga", "name:mi"=>"Rakapuō", "name:mk"=>"Луксембург", "name:ml"=>"ലക്സംബർഗ്", "name:mn"=>"Люксембург", "name:mr"=>"लक्झेंबर्ग", "name:ms"=>"Luxembourg", "name:mt"=>"Lussemburgu", "name:my"=>"လူဇင်ဘတ်နိုင်ငံ", "name:na"=>"Ruketemburg", "name:ne"=>"लक्जेम्बर्ग", "name:nl"=>"Luxemburg", "name:nn"=>"Luxembourg", "name:no"=>"Luxembourg", "name:nv"=>"Látsębooʼ", "name:oc"=>"Luxemborg", "name:or"=>"ଲକ୍ସମବର୍ଗ", "name:os"=>"Люксембург", "name:pa"=>"ਲਕਸਮਬਰਗ", "name:pl"=>"Luksemburg", "name:ps"=>"لوګزامبورګ", "name:pt"=>"Luxemburgo", "name:qu"=>"Luksimbur", "name:rm"=>"Luxemburg", "name:ro"=>"Luxemburg", "name:ru"=>"Люксембург", "name:rw"=>"Lugizamburu", "name:sa"=>"लक्सम्बर्ग", "name:sc"=>"Lussemburgu", "name:se"=>"Luxemburg", "name:sh"=>"Luksemburg", "name:sk"=>"Luxembursko", "name:sl"=>"Luksemburg", "name:so"=>"Luksemburg", "name:sq"=>"Luksemburgu", "name:sr"=>"Луксембург", "name:ss"=>"Lusembogu", "name:su"=>"Luksemburg", "name:sv"=>"Luxemburg", "name:sw"=>"Luxemburg", "name:ta"=>"லக்சம்பர்க்", "name:tg"=>"Люксембург", "name:th"=>"ประเทศลักเซมเบิร์ก", "name:tk"=>"Lýuksemburg", "name:tl"=>"Luxembourg", "name:tr"=>"Lüksemburg", "name:tt"=>"Люксембург", "name:ug"=>"ليۇكسېمبۇرگ", "name:uk"=>"Люксембург", "name:ur"=>"لکسمبرگ", "name:uz"=>"Luksemburg", "name:vi"=>"Luxembourg", "name:vo"=>"Luxämburgän", "name:wa"=>"Grande-Dutcheye do Lussimbork", "name:wo"=>"Luksambuur", "name:yi"=>"לוקסעמבורג", "name:yo"=>"Lúksẹ́mbọ̀rg", "name:zh"=>"盧森堡"
-vn "name"=>"Việt Nam", "name:af"=>"Viëtnam", "name:ak"=>"Vietnam", "name:am"=>"ቬት ናም", "name:an"=>"Vietnam", "name:ar"=>"فيتنام", "name:av"=>"Вьетнам", "name:ay"=>"Vietnam", "name:az"=>"Vyetnam", "name:ba"=>"Вьетнам", "name:be"=>"В'етнам", "name:bg"=>"Виетнам", "name:bi"=>"Vietnam", "name:bm"=>"Vietnam", "name:bn"=>"ভিয়েতনাম", "name:bo"=>"ཝི་ཏི་ནམ།", "name:br"=>"Viêt Nam", "name:bs"=>"Vijetnam", "name:ca"=>"Vietnam", "name:ce"=>"Вьетнам", "name:ch"=>"Vietnam", "name:cs"=>"Vietnam", "name:cv"=>"Вьетнам", "name:cy"=>"Fietnam", "name:da"=>"Vietnam", "name:de"=>"Vietnam", "name:dv"=>"ވިއެޓުނާމު", "name:ee"=>"Vietnam", "name:el"=>"Βιετνάμ", "name:en"=>"Vietnam", "name:eo"=>"Vjetnamio", "name:es"=>"Vietnam", "name:et"=>"Vietnam", "name:eu"=>"Vietnam", "name:fa"=>"ویتنام", "name:ff"=>"Vietnam", "name:fi"=>"Vietnam", "name:fo"=>"Vjetnam", "name:fr"=>"Viêt Nam", "name:fy"=>"Fjetnam", "name:ga"=>"Vítneam", "name:gd"=>"Bhiet-Nam", "name:gl"=>"Vietnam", "name:gn"=>"Vietnam", "name:gu"=>"વિયેતનામ", "name:gv"=>"Yn Vietnam", "name:he"=>"וייטנאם", "name:hi"=>"वियतनाम", "name:hr"=>"Vijetnam", "name:ht"=>"Vyetnam", "name:hu"=>"Vietnám", "name:hy"=>"Վիետնամ", "name:ia"=>"Vietnam", "name:id"=>"Vietnam", "name:ie"=>"Viet-Nam", "name:ik"=>"Vietnam", "name:io"=>"Vietnam", "name:is"=>"Víetnam", "name:it"=>"Vietnam", "name:ja"=>"ベトナム", "name:jv"=>"Viètnam", "name:ka"=>"ვიეტნამი", "name:kg"=>"Vietnam", "name:ki"=>"Vietnam", "name:kk"=>"Вьетнам", "name:kl"=>"Vietnam", "name:km"=>"វៀតណាម", "name:kn"=>"ವಿಯೆಟ್ನಾಮ್", "name:ko"=>"베트남", "name:ku"=>"Viyetnam", "name:kv"=>"Вьетнам", "name:kw"=>"Vietnam", "name:ky"=>"Вьетнам", "name:la"=>"Vietnamia", "name:lb"=>"Vietnam", "name:li"=>"Vietnam", "name:ln"=>"Vietnami", "name:lo"=>"ປະເທດຫວຽດນາມ", "name:lt"=>"Vietnamas", "name:lv"=>"Vjetnama", "name:mg"=>"Vietnam", "name:mi"=>"Witināma", "name:mk"=>"Виетнам", "name:ml"=>"വിയറ്റ്നാം", "name:mn"=>"Вьетнам", "name:mr"=>"व्हियेतनाम", "name:ms"=>"Vietnam", "name:mt"=>"Vjetnam", "name:my"=>"ဗီယက်နမ်နိုင်ငံ", "name:na"=>"Bitinam", "name:ne"=>"भियतनाम", "name:nl"=>"Vietnam", "name:nn"=>"Vietnam", "name:no"=>"Vietnam", "name:nv"=>"Biʼednam", "name:oc"=>"Vietnam", "name:om"=>"Veetinaam", "name:or"=>"ଭିଏତନାମ", "name:os"=>"Вьетнам", "name:pa"=>"ਵੀਅਤਨਾਮ", "name:pl"=>"Wietnam", "name:pt"=>"Vietname", "name:qu"=>"Witnam", "name:rm"=>"Vietnam", "name:rn"=>"Vietnam", "name:ro"=>"Vietnam", "name:ru"=>"Вьетнам", "name:rw"=>"Viyetinamu", "name:sa"=>"चम्पादेश", "name:sc"=>"Vietnam", "name:se"=>"Vietnam", "name:sh"=>"Vijetnam", "name:si"=>"වියට්නාමය", "name:sk"=>"Vietnam", "name:sl"=>"Vietnam", "name:sm"=>"Vietnam", "name:sn"=>"Vietnam", "name:so"=>"Fiyetnam", "name:sq"=>"Vietnami", "name:sr"=>"Вијетнам", "name:ss"=>"IViyethina", "name:st"=>"Vietnam", "name:su"=>"Viétnam", "name:sv"=>"Vietnam", "name:sw"=>"Vietnam", "name:ta"=>"வியட்நாம்", "name:te"=>"వియత్నాం", "name:tg"=>"Ветнам", "name:th"=>"ประเทศเวียดนาม", "name:tk"=>"Wýetnam", "name:tl"=>"Vietnam", "name:tr"=>"Vietnam", "name:tt"=>"Вьетнам", "name:tw"=>"Vietnam", "name:ug"=>"ۋيېتنام", "name:uk"=>"В'єтнам", "name:ur"=>"ویتنام", "name:uz"=>"Vyetnam", "name:ve"=>"Viëtnam", "name:vi"=>"Việt Nam", "name:vo"=>"Vietnamän", "name:wa"=>"Vietnam", "name:wo"=>"Wiyetnaam", "name:yi"=>"וויעטנאם", "name:yo"=>"Fiẹtnám", "name:za"=>"Yiednamz", "name:zh"=>"越南", "name:zu"=>"IViyetnami"
-tr "name"=>"Türkiye", "name:ab"=>"Ҭырқәтәыла", "name:af"=>"Turkye", "name:ak"=>"Turki", "name:am"=>"ቱርክ", "name:an"=>"Turquía", "name:ar"=>"تركيا", "name:av"=>"Туркия", "name:ay"=>"Turkiya", "name:az"=>"Türkiyə", "name:ba"=>"Төркиә", "name:be"=>"Турцыя", "name:bg"=>"Турция", "name:bi"=>"Turkey", "name:bn"=>"তুরস", "name:bo"=>"ཏུར་ཀི།", "name:br"=>"Turkia", "name:bs"=>"Turska", "name:ca"=>"Turquia", "name:ce"=>"Туркойчоь", "name:cs"=>"Turecko", "name:cu"=>"Тѷрци", "name:cv"=>"Турци", "name:cy"=>"Twrci", "name:da"=>"Tyrkiet", "name:de"=>"Türkei", "name:dv"=>"ތުރުކީވިލާތް", "name:ee"=>"Turkey", "name:el"=>"Τουρκία", "name:en"=>"Turkey", "name:eo"=>"Turkio", "name:es"=>"Turquía", "name:et"=>"Türgi", "name:eu"=>"Turkia", "name:fa"=>"ترکیه", "name:fi"=>"Turkki", "name:fo"=>"Turkaland", "name:fr"=>"Turquie", "name:fy"=>"Turkije", "name:ga"=>"An Tuirc", "name:gd"=>"An Tuirc", "name:gl"=>"Turquía", "name:gn"=>"Tuykia", "name:gu"=>"તુર્કસ્તાન", "name:gv"=>"Yn Turkee", "name:ha"=>"Turkiyya", "name:he"=>"טורקיה", "name:hi"=>"तुर्की", "name:hr"=>"Turska", "name:ht"=>"Tiki", "name:hu"=>"Törökország", "name:hy"=>"Թուրքիա", "name:ia"=>"Turchia", "name:id"=>"Turki", "name:ie"=>"Turcia", "name:ik"=>"Turkey", "name:io"=>"Turkia", "name:is"=>"Tyrkland", "name:it"=>"Turchia", "name:ja"=>"トルコ", "name:jv"=>"Turki", "name:ka"=>"თურქეთი", "name:kg"=>"Turki", "name:ki"=>"Turkey", "name:kk"=>"Түркия", "name:kl"=>"Tyrkia", "name:kn"=>"ಟರ್ಕಿ", "name:ko"=>"터키", "name:ku"=>"Tirkiye", "name:kv"=>"Турция", "name:kw"=>"Turki", "name:ky"=>"Түркия Республикасы", "name:la"=>"Turcia", "name:lb"=>"Tierkei", "name:lg"=>"Buturuki", "name:li"=>"Turkije", "name:ln"=>"Turkí", "name:lt"=>"Turkija", "name:lv"=>"Turcija", "name:mg"=>"Torkia", "name:mi"=>"Tākei", "name:mk"=>"Турција", "name:ml"=>"തുർക്കി", "name:mn"=>"Турк", "name:mr"=>"तुर्कस्तान", "name:ms"=>"Turki", "name:mt"=>"Turkija", "name:my"=>"တူရကီနိုင်ငံ", "name:na"=>"Terki", "name:ne"=>"टर्की", "name:nl"=>"Turkije", "name:nn"=>"Tyrkia", "name:no"=>"Tyrkia", "name:nv"=>"Tʼóok Bikéyah", "name:oc"=>"Turquia", "name:or"=>"ତୁର୍କୀ", "name:os"=>"Турк", "name:pa"=>"ਤੁਰਕੀ", "name:pl"=>"Turcja", "name:ps"=>"تورکيه", "name:pt"=>"Turquia", "name:qu"=>"Turkiya", "name:rm"=>"Tirchia", "name:rn"=>"Turukiya", "name:ro"=>"Turcia", "name:ru"=>"Турция", "name:rw"=>"Turukiya", "name:sa"=>"तुर्की", "name:sc"=>"Turkia", "name:se"=>"Durka", "name:sh"=>"Turska", "name:si"=>"තුර්කිය", "name:sk"=>"Turecko", "name:sl"=>"Turčija", "name:so"=>"Turki", "name:sq"=>"Turqia", "name:sr"=>"Турска", "name:ss"=>"IThekhi", "name:su"=>"Turki", "name:sv"=>"Turkiet", "name:sw"=>"Uturuki", "name:ta"=>"துருக்கி", "name:te"=>"టర్కీ", "name:tg"=>"Туркия", "name:th"=>"ประเทศตุรกี", "name:tk"=>"Türkiýe", "name:tl"=>"Turkiya", "name:tr"=>"Türkiye", "name:tt"=>"Төркия", "name:tw"=>"Turkey", "name:ug"=>"تۈركىيە جۇمھۇرىيىتى", "name:uk"=>"Туреччина", "name:ur"=>"ترکی", "name:uz"=>"Turkiya", "name:vi"=>"Thổ Nhĩ Kỳ", "name:vo"=>"Türkän", "name:wa"=>"Tourkeye", "name:wo"=>"Tirki", "name:yi"=>"טערקיי", "name:yo"=>"Túrkì", "name:za"=>"Dujwjgiz", "name:zh"=>"土耳其", "name:zu"=>"ITheki"
-sz "name"=>"eSwatini", "name:af"=>"Swaziland", "name:am"=>"ስዋዚላንድ", "name:an"=>"Swazilandia", "name:ar"=>"سوازيلاند", "name:ay"=>"Suasïsuiu", "name:az"=>"Svazilend", "name:ba"=>"Свазиленд", "name:be"=>"Эсваціні", "name:bg"=>"Есватини", "name:bm"=>"Swazilandi", "name:bn"=>"সোয়াজিল্যান্ড", "name:bo"=>"སུ་ཝ་ཛི་ལནཌ།", "name:br"=>"Swaziland", "name:bs"=>"Svazilend", "name:ca"=>"Swazilàndia", "name:cs"=>"Svazijsko", "name:cy"=>"Gwlad Swazi", "name:da"=>"Swaziland", "name:de"=>"Eswatini", "name:dv"=>"ސުވާޒިލޭންޑު", "name:dz"=>"སུ་ཝ་ཛི་ལེནཌ", "name:ee"=>"Swaziland", "name:el"=>"Σουαζιλάνδη", "name:en"=>"Eswatini", "name:eo"=>"Svazilando", "name:es"=>"Suazilandia", "name:et"=>"Svaasimaa", "name:eu"=>"Swazilandia", "name:fa"=>"سوازیلند", "name:ff"=>"Swaasilannda", "name:fi"=>"Swazimaa", "name:fo"=>"Svasiland", "name:fr"=>"Swaziland", "name:fy"=>"Swazilân", "name:ga"=>"An tSuasalainn", "name:gd"=>"Dùthaich nan Suasaidh", "name:gl"=>"Suacilandia - Swaziland", "name:gu"=>"સ્વાઝીલેન્ડ", "name:gv"=>"Yn Çheer Swassee", "name:ha"=>"Suwazilan", "name:he"=>"סווזילנד", "name:hi"=>"स्वाज़ीलैण्ड", "name:hr"=>"Svazi", "name:ht"=>"Swazilann", "name:hu"=>"Szváziföld", "name:hy"=>"Սվազիլենդ", "name:ia"=>"Swazilandia", "name:id"=>"Swaziland", "name:ie"=>"Swaziland", "name:io"=>"Swazilando", "name:is"=>"Svasíland", "name:it"=>"Swaziland", "name:ja"=>"スワジランド", "name:jv"=>"Swaziland", "name:ka"=>"სვაზილენდი", "name:kg"=>"Swati", "name:ki"=>"Uswazi", "name:kk"=>"Суазиланд", "name:kl"=>"Swazilandi", "name:km"=>"សូហ្ស៉ីឡង់", "name:kn"=>"ಸ್ವಾಜಿಲ್ಯಾಂಡ್", "name:ko"=>"스와질란드", "name:ks"=>"سُوزِلینٛڑ", "name:ku"=>"Swaziland", "name:kw"=>"Pow Swati", "name:la"=>"Swazia", "name:lb"=>"Swasiland", "name:lg"=>"Swazirandi", "name:li"=>"Swaziland", "name:ln"=>"Swaziland", "name:lo"=>"ສະວາຊິແລນ", "name:lt"=>"Svazilandas", "name:lv"=>"Svazilenda", "name:mg"=>"Soazilandy", "name:mi"=>"Warerangi", "name:mk"=>"Свазиленд", "name:ml"=>"സ്വാസിലാന്റ്", "name:mn"=>"Свазиланд", "name:mr"=>"स्वाझीलँड", "name:ms"=>"Swaziland", "name:mt"=>"Sważiland", "name:my"=>"ဆွာဇီလန်နိုင်ငံ", "name:ne"=>"स्वाजिल्याण्ड", "name:nl"=>"Swaziland", "name:nn"=>"Eswatini", "name:no"=>"Eswatini", "name:nv"=>"Swáazi Dineʼé Bikéyah", "name:oc"=>"Swaziland", "name:or"=>"ସ୍ଵାଜିଲ୍ୟାଣ୍ଡ", "name:os"=>"Свазиленд", "name:pa"=>"ਸਵਾਜ਼ੀਲੈਂਡ", "name:pl"=>"Eswatini", "name:ps"=>"سوازيلانډ", "name:pt"=>"eSwatini", "name:qu"=>"Swasisuyu", "name:rn"=>"Suwazilandi", "name:ro"=>"eSwatini", "name:ru"=>"Эсватини", "name:rw"=>"Swazilande", "name:sa"=>"स्वाजीलैंड", "name:sc"=>"Swaziland", "name:se"=>"Swazieana", "name:sg"=>"Swäzïlânde", "name:sh"=>"Svazilend", "name:si"=>"ස්වාසිලන්තය", "name:sk"=>"Svazijsko", "name:sl"=>"Esvatini", "name:sn"=>"Swaziland", "name:so"=>"Swasiland", "name:sq"=>"Suazilendi", "name:sr"=>"Есватини", "name:ss"=>"eSwatini", "name:su"=>"Swaziland", "name:sv"=>"Swaziland", "name:sw"=>"Uswazi", "name:ta"=>"சுவாசிலாந்து", "name:te"=>"స్వాజీలేండ్", "name:tg"=>"Свазиленд", "name:th"=>"ประเทศสวาซิแลนด์", "name:ti"=>"ስዋዚላንድ", "name:tk"=>"Swazilend", "name:tl"=>"Suwasilandya", "name:to"=>"Suasileni", "name:tr"=>"Esvatini", "name:ts"=>"Swaziland", "name:tt"=>"Свазиленд", "name:ug"=>"سۋازىلېند", "name:uk"=>"Есватіні", "name:ur"=>"سوازی لینڈ", "name:uz"=>"Svazilend", "name:ve"=>"Swazini", "name:vi"=>"Eswatini", "name:vo"=>"Svasiyän", "name:wo"=>"Suwaasilaand", "name:yi"=>"סוואזילאנד", "name:yo"=>"Swásílándì", "name:zh"=>"斯威士兰/斯威士蘭/史瓦濟蘭", "name:zu"=>"ISwazilandi"
-ae "name"=>"الإمارات العربية المتحدة", "name:af"=>"Verenigde Arabiese Emirate", "name:am"=>"የተባበሩት የዓረብ ግዛቶች", "name:an"=>"Emiratos Arabes Unitos", "name:ar"=>"الإمارات العربية المتحدة", "name:av"=>"ГIарабазул Цолъарал Имаратал", "name:az"=>"Birləşmiş Ərəb Əmirlikləri", "name:be"=>"Аб'яднаныя Арабскія Эміраты", "name:bg"=>"Обединени арабски емирства", "name:bn"=>"সংযুক্ত আরব আমিরাত", "name:bo"=>"ཡི་ནེ་ཁྲེ་ཀྲི་ཨ་རབ་ཨེ་མེ་རེ་ཁྲི།", "name:br"=>"Emirelezhioù Arab Unanet", "name:bs"=>"Ujedinjeni Arapski Emirati", "name:ca"=>"Emirats Àrabs Units", "name:ce"=>"Ӏарбийн Цхьаьнакхетта Эмираташ", "name:cs"=>"Spojené arabské emiráty", "name:cy"=>"Yr Emiradau Arabaidd Unedig", "name:da"=>"Forenede Arabiske Emirater", "name:de"=>"Vereinigte Arabische Emirate", "name:dv"=>"އެކުވެރި ޢަރަބި އިމާރާތު", "name:dz"=>"ཡུ་ནའི་ཊེཊ་ཨ་རབ་ཨེ་མི་རེཊསི་", "name:el"=>"Ηνωμένα Αραβικά Εμιράτα", "name:en"=>"United Arab Emirates", "name:eo"=>"Unuiĝintaj Arabaj Emirlandoj", "name:es"=>"Emiratos Árabes Unidos", "name:et"=>"Araabia Ühendemiraadid", "name:eu"=>"Arabiar Emirerri Batuak", "name:fa"=>"امارات متحده عربی", "name:fi"=>"Yhdistyneet arabiemiirikunnat", "name:fo"=>"Sameindu Emirríkini", "name:fr"=>"Émirats arabes unis", "name:fy"=>"Feriene Arabyske Emiraten", "name:ga"=>"Aontas na nÉimíríochtaí Arabacha", "name:gd"=>"Na h-Iomaratan Arabach Aonaichte", "name:gl"=>"Emiratos Árabes Unidos", "name:gn"=>"Aravia Emiryvy Joaju", "name:gv"=>"Ny h-Emmiraidyn Arabagh Unnaneysit", "name:he"=>"איחוד האמירויות הערביות", "name:hi"=>"संयुक्त अरब अमीरात", "name:hr"=>"Ujedinjeni Arapski Emirati", "name:ht"=>"Emira Arab Ini", "name:hu"=>"Egyesült Arab Emírségek", "name:hy"=>"Արաբական Միացյալ Էմիրություններ", "name:ia"=>"Emiratos Arabe Unite", "name:id"=>"Uni Emirat Arab", "name:ie"=>"Unit Arabic Emiratus", "name:io"=>"Unionita Araba Emirati", "name:is"=>"Sameinuðu arabísku furstadæmin", "name:it"=>"Emirati Arabi Uniti", "name:ja"=>"アラブ首長国連邦", "name:jv"=>"Uni Emirat Arab", "name:ka"=>"არაბთა გაერთიანებული საამიროები", "name:ki"=>"United Arab Emirates", "name:kk"=>"Біріккен Араб Әмірліктері", "name:kl"=>"United Arab Emirates", "name:kn"=>"ಸಂಯುಕ್ತ ಅರಬ ಅಮೀರಾತ", "name:ko"=>"아랍에미리트", "name:ku"=>"Mîrnişînên Erebî yên Yekbûyî", "name:kv"=>"Ӧтувтчӧм Араб Эмиратъяс", "name:kw"=>"Pennternasedh Unys Arabek", "name:ky"=>"Бириккен Араб Эмирликтери", "name:la"=>"Phylarchiarum Arabicarum Confoederatio", "name:lb"=>"Vereenegt Arabesch Emiraten", "name:li"=>"Vereinegde Arabische Emiraote", "name:lt"=>"Jungtiniai Arabų Emyratai", "name:lv"=>"Apvienotie Arābu Emirāti", "name:mi"=>"Te Kotahitanga o ngā Whenua Ārapi", "name:mk"=>"Обединети Арапски Емирати", "name:ml"=>"ഐക്യ അറബ് എമിറേറ്റുകൾ", "name:mn"=>"Арабын Нэгдсэн Эмирт Улс", "name:mr"=>"संयुक्त अरब अमिराती", "name:ms"=>"Emiriah Arab Bersatu", "name:mt"=>"Emirati Għarab Magħquda", "name:my"=>"အာရပ်စော်ဘွားများပြည်ထောင်စုနိုင်ငံ", "name:na"=>"Emireitit Arabiya", "name:ne"=>"संयुक्त अरब इमिरेट्स", "name:nl"=>"Verenigde Arabische Emiraten", "name:nn"=>"Dei sameinte arabiske emirata", "name:no"=>"De forente arabiske emirater", "name:nv"=>"Ásáí Bikéyah Yázhí Ałhidadiidzooígíí", "name:oc"=>"Emirats Arabis Units", "name:or"=>"ୟୁନାଇଟେଡ଼ ଆରବ ଏମିରଟ", "name:os"=>"Араббы Иугонд Эмираттæ", "name:pa"=>"ਸੰਯੁਕਤ ਅਰਬ ਇਮਰਾਤ", "name:pl"=>"Emiraty Arabskie", "name:ps"=>"عربي متحده امارات", "name:pt"=>"Emirados Árabes Unidos", "name:qu"=>"Hukllachasqa Arab Imiratukuna", "name:ro"=>"Emiratele Arabe Unite", "name:ru"=>"Объединённые Арабские Эмираты", "name:rw"=>"Nyarabu Zunze Ubumwe", "name:sd"=>"گڏيل عرب امارات", "name:se"=>"Ovttastuvvan arábaemiráhtat", "name:sh"=>"Ujedinjeni Arapski Emirati", "name:sk"=>"Spojené arabské emiráty", "name:sl"=>"Združeni arabski emirati", "name:so"=>"Imaaraatka Carabta", "name:sq"=>"Emiratet e Bashkuara Arabe", "name:sr"=>"Уједињени Арапски Емирати", "name:ss"=>"Bunye bema-Arabhu", "name:su"=>"Uni Émirat Arab", "name:sv"=>"Förenade Arabemiraten", "name:sw"=>"Falme za Kiarabu", "name:ta"=>"ஐக்கிய அரபு அமீரகம்", "name:te"=>"యునైటెడ్ అరబ్ ఎమిరేట్స్", "name:tg"=>"Аморати Муттаҳидаи Араб", "name:th"=>"สหรัฐอาหรับเอมิเรตส์", "name:tk"=>"Birleşen Arap Emirlikleri", "name:tl"=>"United Arab Emirates", "name:tr"=>"Birleşik Arap Emirlikleri", "name:tt"=>"Берләшкән Гарәп Әмирлекләре", "name:ug"=>"ئەرەب بىرلەشمە خەلىپىلىكى", "name:uk"=>"Об'єднані Арабські Емірати", "name:ur"=>"متحدہ عرب امارات", "name:uz"=>"Birlashgan Arab Amirliklari", "name:vi"=>"Các Tiểu vương quốc Ả Rập Thống nhất", "name:vo"=>"Lemiräns Larabik Pebalöl", "name:wo"=>"Imaaraat yu Araab yu Bennoo yi", "name:yi"=>"פאראייניגטע אראבישע עמיראטן", "name:yo"=>"Àwọn Ẹ́mírétì Árábù Aṣọ̀kan", "name:zh"=>"阿拉伯联合酋长国"
-ao "name"=>"Angola", "name:af"=>"Angola", "name:am"=>"አንጎላ", "name:an"=>"Angola", "name:ar"=>"أنغولا", "name:az"=>"Anqola", "name:ba"=>"Анго́ла", "name:be"=>"Анго́ла", "name:bg"=>"Ангола", "name:bh"=>"अंगोला", "name:bm"=>"Angola", "name:bn"=>"অ্যাঙ্গোলা", "name:bo"=>"ཨང་གོ་ལ།", "name:br"=>"Angola", "name:bs"=>"Angola", "name:ca"=>"Angola", "name:ce"=>"Анго́ла", "name:co"=>"Angola", "name:cs"=>"Angola", "name:cv"=>"Ангола", "name:cy"=>"Angola", "name:da"=>"Angola", "name:de"=>"Angola", "name:dv"=>"އެންގޯލާ", "name:dz"=>"ཨང་གྷོ་ལ", "name:ee"=>"Aŋgola", "name:el"=>"Ανγκόλα", "name:en"=>"Angola", "name:eo"=>"Angolo", "name:es"=>"Angola", "name:et"=>"Angola", "name:eu"=>"Angola", "name:fa"=>"آنگولا", "name:ff"=>"Anngolaa", "name:fi"=>"Angola", "name:fo"=>"Angola", "name:fr"=>"Angola", "name:fy"=>"Angoala", "name:ga"=>"Angóla", "name:gd"=>"Angola", "name:gl"=>"Angola", "name:gn"=>"Angola", "name:gu"=>"અંગોલા", "name:gv"=>"Angoley", "name:ha"=>"Angola", "name:he"=>"אנגולה", "name:hi"=>"अंगोला", "name:hr"=>"Angola", "name:ht"=>"Angola", "name:hu"=>"Angola", "name:hy"=>"Անգոլա", "name:ia"=>"Angola", "name:id"=>"Angola", "name:ie"=>"Angola", "name:ig"=>"Angola", "name:io"=>"Angola", "name:is"=>"Angóla", "name:it"=>"Angola", "name:ja"=>"アンゴラ", "name:jv"=>"Angola", "name:ka"=>"ანგოლა", "name:kg"=>"Ngola", "name:ki"=>"Angola", "name:kk"=>"Ангола", "name:km"=>"អង់ហ្គោឡា", "name:kn"=>"ಅಂಗೋಲ", "name:ko"=>"앙골라", "name:ks"=>"اینٛگولا", "name:ku"=>"Angola", "name:kw"=>"Angola", "name:ky"=>"Ангола", "name:la"=>"Angolia", "name:lb"=>"Angola", "name:lg"=>"Angola", "name:li"=>"Angola", "name:ln"=>"Angola", "name:lo"=>"ອັງໂກລາ", "name:lt"=>"Angola", "name:lv"=>"Angola", "name:mg"=>"Angola", "name:mi"=>"Anakora", "name:mk"=>"Ангола", "name:ml"=>"അംഗോള", "name:mn"=>"Ангол", "name:mr"=>"अँगोला", "name:ms"=>"Angola", "name:mt"=>"Angola", "name:my"=>"အင်ဂိုလာနိုင်ငံ", "name:na"=>"Angora", "name:ne"=>"अंगोला", "name:nl"=>"Angola", "name:nn"=>"Angola", "name:no"=>"Angola", "name:nv"=>"Angóola", "name:ny"=>"Angola", "name:oc"=>"Angòla", "name:om"=>"Angoolaa", "name:or"=>"ଆଙ୍ଗୋଲା", "name:os"=>"Анголæ", "name:pa"=>"ਅੰਗੋਲਾ", "name:pi"=>"अंगोला", "name:pl"=>"Angola", "name:ps"=>"آنګولا", "name:pt"=>"Angola", "name:qu"=>"Angula", "name:rm"=>"Angola", "name:ro"=>"Angola", "name:ru"=>"Ангола", "name:rw"=>"Angola", "name:sa"=>"अङ्गोला", "name:sc"=>"Angola", "name:se"=>"Angola", "name:sg"=>"Angoläa", "name:sh"=>"Angola", "name:si"=>"ඇන්ගෝලාව", "name:sk"=>"Angola", "name:sl"=>"Angola", "name:sn"=>"Angola", "name:so"=>"Angola", "name:sq"=>"Angola", "name:sr"=>"Ангола", "name:ss"=>"I-Angola", "name:st"=>"Angola", "name:su"=>"Angola", "name:sv"=>"Angola", "name:sw"=>"Angola", "name:ta"=>"அங்கோலா", "name:te"=>"అంగోలా", "name:tg"=>"Ангола", "name:th"=>"ประเทศแองโกลา", "name:ti"=>"ኣንጎላ", "name:tk"=>"Angola", "name:tl"=>"Anggola", "name:to"=>"ʻEnikola", "name:tr"=>"Angola", "name:ts"=>"Angola", "name:tt"=>"Анго́ла", "name:ug"=>"ئانگولا", "name:uk"=>"Анґо́ла", "name:ur"=>"انگولہ", "name:uz"=>"Angola", "name:vi"=>"Angola", "name:vo"=>"Langolän", "name:wo"=>"Angolaa", "name:yi"=>"אַנגאלאַ", "name:yo"=>"Àngólà", "name:za"=>"Angola", "name:zh"=>"安哥拉", "name:zu"=>"I-Angola"
-vg "name"=>"British Virgin Islands", "name:af"=>"Brits-Maagde-eilande", "name:ar"=>"جزر فيرجن البريطانية", "name:be"=>"Брытанскія Вірджынскія астравы", "name:br"=>"Inizi Gwerc’h Breizhveuriat", "name:ca"=>"Illes Verges Britàniques", "name:cs"=>"Britské Panenské ostrovy", "name:da"=>"Britiske Jomfruøer", "name:de"=>"Britische Jungferninseln", "name:en"=>"British Virgin Islands", "name:eo"=>"Britaj Virgulinsuloj", "name:es"=>"Islas Vírgenes Británicas", "name:et"=>"Briti Neitsisaared", "name:eu"=>"Birjina uharte britainiarrak", "name:fa"=>"جزایر ویرجین بریتانیا", "name:fi"=>"Brittiläiset Neitsytsaaret", "name:fr"=>"Îles Vierges britanniques", "name:ga"=>"Oileáin Bhriotanacha na Maighdean", "name:he"=>"איי הבתולה הבריטיים", "name:hr"=>"Britanski Djevičanski Otoci", "name:hu"=>"Brit Virgin-szigetek", "name:id"=>"Kepulauan Virgin Britania Raya", "name:is"=>"Bresku Jómfrúaeyjar", "name:it"=>"Isole Vergini Britanniche", "name:ja"=>"イギリス領ヴァージン諸島", "name:la"=>"Britannicae Virginis Insulae", "name:lb"=>"Britesch Joffereninselen", "name:lt"=>"Britų Mergelių salos", "name:lv"=>"Britu Virdžīnu salas", "name:mk"=>"Британски Девствени Острови", "name:mn"=>"Виржиний Арлууд, Британийн", "name:nl"=>"Britse Maagdeneilanden", "name:pl"=>"Brytyjskie Wyspy Dziewicze", "name:pt"=>"Ilhas Virgens Britânicas", "name:ru"=>"Британские Виргинские острова", "name:sk"=>"Britské Panenské ostrovy", "name:sl"=>"Britanski Deviški otoki", "name:sr"=>"Британска Девичанска Острва", "name:sv"=>"Brittiska Jungfruöarna", "name:th"=>"หมู่เกาะบริติชเวอร์จิน", "name:tr"=>"Birleşik Krallık Virgin Adaları", "name:uk"=>"Британські Віргінські острови", "name:vi"=>"Quần đảo Virgin thuộc Anh", "name:zh"=>"英属维尔京群岛"
-bt "name"=>"འབྲུག་ཡུལ་", "name:ab"=>"Бутан", "name:af"=>"Bhoetan", "name:ak"=>"Butan", "name:am"=>"ቡታን", "name:an"=>"Bután", "name:ar"=>"بوتان", "name:as"=>"ভূটান", "name:az"=>"Butan", "name:ba"=>"Бута́н", "name:be"=>"Бута́н", "name:bg"=>"Бутан", "name:bh"=>"भूटान", "name:bi"=>"Bhutan", "name:bn"=>"ভুটান", "name:bo"=>"འབྲུག་ཡུལ།", "name:br"=>"Bhoutan", "name:bs"=>"Butan", "name:ca"=>"Bhutan", "name:ce"=>"Бутан", "name:cs"=>"Bhútán", "name:cv"=>"Бутан", "name:cy"=>"Bhwtan", "name:da"=>"Bhutan", "name:de"=>"Bhutan", "name:dv"=>"ބޫޓާން", "name:dz"=>"འབྲུགཡུལ་", "name:el"=>"Μπουτάν", "name:en"=>"Bhutan", "name:eo"=>"Butano", "name:es"=>"Bután", "name:et"=>"Bhutan", "name:eu"=>"Bhutan", "name:fa"=>"بوتان", "name:ff"=>"Butaan", "name:fi"=>"Bhutan", "name:fo"=>"Butan", "name:fr"=>"Bhoutan", "name:fy"=>"Bûtan", "name:ga"=>"an Bhútáin", "name:gd"=>"Butàn", "name:gl"=>"Bután", "name:gn"=>"Vutã", "name:gu"=>"ભૂતાન", "name:gv"=>"yn Vutaan", "name:ha"=>"Bhutan", "name:he"=>"בהוטן", "name:hi"=>"भूटान", "name:hr"=>"Butan", "name:ht"=>"Boutan", "name:hu"=>"Bhután", "name:hy"=>"Բութան", "name:ia"=>"Bhutan", "name:id"=>"Bhutan", "name:ie"=>"Bhutan", "name:io"=>"Bhutan", "name:is"=>"Bútan", "name:it"=>"Bhutan", "name:ja"=>"ブータン", "name:jv"=>"Bhutan", "name:ka"=>"ბჰუტანი", "name:kg"=>"Bhutan", "name:ki"=>"Bhutan", "name:kk"=>"Бутан", "name:kl"=>"Bhutan", "name:km"=>"ប៊ូតាន", "name:kn"=>"ಭೂತಾನ್", "name:ko"=>"부탄", "name:ks"=>"بوٗٹان", "name:ku"=>"Bûtan", "name:kv"=>"Бутан", "name:kw"=>"Bhoutan", "name:ky"=>"Бутан", "name:la"=>"Butania", "name:lb"=>"Bhutan", "name:lg"=>"Butaani", "name:li"=>"Bhutan", "name:ln"=>"Butáni", "name:lo"=>"ບູຕານ", "name:lt"=>"Butanas", "name:lv"=>"Butāna", "name:mg"=>"Botàna", "name:mi"=>"Putāna", "name:mk"=>"Бутан", "name:ml"=>"ഭൂട്ടാൻ", "name:mn"=>"Бутан", "name:mr"=>"भूतान", "name:ms"=>"Bhutan", "name:mt"=>"Butan", "name:my"=>"ဘူတန်နိုင်ငံ", "name:na"=>"Butan", "name:ne"=>"भूटान", "name:nl"=>"Bhutan", "name:nn"=>"Bhutan", "name:no"=>"Bhutan", "name:nv"=>"Bikéyah", "name:oc"=>"Botan", "name:om"=>"Buutan", "name:or"=>"ଭୁଟାନ", "name:os"=>"Бутан", "name:pa"=>"ਭੂਟਾਨ", "name:pi"=>"भूटान", "name:pl"=>"Bhutan", "name:ps"=>"بوتان", "name:pt"=>"Butão", "name:qu"=>"Butan", "name:rm"=>"Bhutan", "name:rn"=>"Butani", "name:ro"=>"Bhutan", "name:ru"=>"Бутан", "name:rw"=>"Butani", "name:sa"=>"भूटान", "name:se"=>"Bhutan", "name:sg"=>"Butäan", "name:sh"=>"Butan", "name:si"=>"භූතානය", "name:sk"=>"Bhután", "name:sl"=>"Butan", "name:sn"=>"Bhutan", "name:so"=>"Butaan", "name:sq"=>"Butani", "name:sr"=>"Бутан", "name:ss"=>"iBhuthani", "name:su"=>"Butan", "name:sv"=>"Bhutan", "name:sw"=>"Bhutan", "name:ta"=>"பூட்டான்", "name:te"=>"భూటాన్", "name:tg"=>"Бутан", "name:th"=>"ประเทศภูฏาน", "name:ti"=>"ቡህታን", "name:tk"=>"Butan", "name:tl"=>"Butan", "name:to"=>"Pūtani", "name:tr"=>"Bhutan", "name:tt"=>"Бутан", "name:tw"=>"Butan", "name:ug"=>"بۇتان", "name:uk"=>"Бута́н", "name:ur"=>"بھوٹان", "name:uz"=>"Butan", "name:vi"=>"Bhutan", "name:vo"=>"Butän", "name:wo"=>"Butaan", "name:yi"=>"בהוטאן", "name:yo"=>"Bhùtán", "name:za"=>"Budanh", "name:zh"=>"不丹", "name:zu"=>"i-Bhutan"
-sy "name"=>"سوريا", "name:af"=>"Sirië", "name:am"=>"ሶርያ", "name:an"=>"Siria", "name:ar"=>"سوريا", "name:av"=>"Сирия", "name:az"=>"Suriya", "name:ba"=>"Сирия", "name:be"=>"Сірыя", "name:bg"=>"Сирия", "name:bm"=>"Suriya", "name:bn"=>"সিরিয়া", "name:bo"=>"སི་རི་ཡ།", "name:br"=>"Siria", "name:bs"=>"Sirija", "name:ca"=>"República Àrab Siriana", "name:ce"=>"Шема", "name:cs"=>"Sýrie", "name:cu"=>"Сѷрїꙗ", "name:cv"=>"Сири", "name:cy"=>"Syria", "name:da"=>"Syrien", "name:de"=>"Syrien", "name:dv"=>"ސޫރިޔާ", "name:el"=>"Συρία", "name:en"=>"Syria", "name:eo"=>"Sirio", "name:es"=>"Siria", "name:et"=>"Süüria", "name:eu"=>"Siria", "name:fa"=>"سوریه", "name:fi"=>"Syyria", "name:fo"=>"Sýria", "name:fr"=>"Syrie", "name:fy"=>"Syrje", "name:ga"=>"An tSiria", "name:gd"=>"Siria", "name:gl"=>"Siria - سورية", "name:gu"=>"સિરિયા", "name:gv"=>"Yn Teer", "name:he"=>"סוריה", "name:hi"=>"सीरिया", "name:hr"=>"Sirija", "name:ht"=>"Siri", "name:hu"=>"Szíria", "name:hy"=>"Սիրիա", "name:ia"=>"Syria", "name:id"=>"Suriah", "name:ie"=>"Siria", "name:io"=>"Siria", "name:is"=>"Sýrland", "name:it"=>"Siria", "name:ja"=>"シリア", "name:jv"=>"Suriah", "name:ka"=>"სირია", "name:ki"=>"Syria", "name:kk"=>"Сирия", "name:kl"=>"Syria", "name:kn"=>"ಸಿರಿಯಾ", "name:ko"=>"시리아", "name:ku"=>"Sûrî", "name:kv"=>"Сирия", "name:kw"=>"Syri", "name:ky"=>"Сирия", "name:la"=>"Syria", "name:lb"=>"Syrien", "name:li"=>"Syrië", "name:ln"=>"Sirí", "name:lt"=>"Sirija", "name:lv"=>"Sīrija", "name:mg"=>"Siria", "name:mi"=>"Hiria", "name:mk"=>"Сирија", "name:ml"=>"സിറിയ", "name:mn"=>"Сири", "name:mr"=>"सीरिया", "name:ms"=>"Syria", "name:my"=>"ဆီးရီးယားနိုင်ငံ", "name:na"=>"Syria", "name:ne"=>"सीरिया", "name:nl"=>"Syrië", "name:nn"=>"Syria", "name:no"=>"Syria", "name:nv"=>"Sííwiya", "name:oc"=>"Siria", "name:or"=>"ସିରିଆ", "name:os"=>"Сири", "name:pa"=>"ਸੀਰੀਆ", "name:pl"=>"Syria", "name:ps"=>"سوريه", "name:pt"=>"Síria", "name:qu"=>"Sirya", "name:ro"=>"Siria", "name:ru"=>"Сирия", "name:rw"=>"Siriya", "name:sa"=>"सिरिया", "name:sc"=>"Siria", "name:sd"=>"شام", "name:se"=>"Syria", "name:sh"=>"Sirija", "name:sk"=>"Sýria", "name:sl"=>"Sirija", "name:so"=>"Suuriya", "name:sq"=>"Siria", "name:sr"=>"Сирија", "name:ss"=>"ISiriya", "name:su"=>"Suriah", "name:sv"=>"Syrien", "name:sw"=>"Syria", "name:ta"=>"சிரியா", "name:te"=>"సిరియా", "name:tg"=>"Сурия", "name:th"=>"ประเทศซีเรีย", "name:tk"=>"Siriýa", "name:tl"=>"Sirya", "name:tr"=>"Suriye", "name:tt"=>"Сүрия", "name:ug"=>"سۇرىيە", "name:uk"=>"Сирія", "name:ur"=>"شام", "name:uz"=>"Suriya", "name:vi"=>"Syria", "name:vo"=>"Süriyän", "name:wa"=>"Sireye", "name:wo"=>"Siri", "name:yi"=>"סיריע", "name:yo"=>"Síríà", "name:zh"=>"叙利亚/敘利亞"
-gl "name"=>"Kalaallit Nunaat", "name:af"=>"Groenland", "name:am"=>"ግሪንላንድ", "name:an"=>"Gronlandia", "name:ar"=>"غرينلاند", "name:az"=>"Qrenlandiya", "name:be"=>"Грэнландыя", "name:bg"=>"Гренландия", "name:bn"=>"গ্রিনল্যান্ড", "name:bo"=>"གེ་རེན་ལ", "name:br"=>"Greunland", "name:bs"=>"Grenland", "name:ca"=>"Grenlàndia", "name:cs"=>"Grónsko", "name:cv"=>"Гренланди", "name:cy"=>"Yr Ynys Las", "name:da"=>"Grønland", "name:de"=>"Grönland", "name:dv"=>"ގުރީންލޭންޑު", "name:el"=>"Γροιλανδία", "name:en"=>"Greenland", "name:eo"=>"Gronlando", "name:es"=>"Groenlandia", "name:et"=>"Gröönimaa", "name:eu"=>"Groenlandia", "name:fa"=>"گرینلند", "name:fi"=>"Grönlanti", "name:fo"=>"Grønland", "name:fr"=>"Groenland", "name:fy"=>"Grienlân", "name:ga"=>"An Ghraonlainn", "name:gd"=>"A' Ghraonlainn", "name:gl"=>"Groenlandia", "name:gn"=>"Kyoẽlándia", "name:gv"=>"Greenlynn", "name:he"=>"גרינלנד", "name:hi"=>"ग्रीनलैण्ड", "name:hr"=>"Grenland", "name:hu"=>"Grönland", "name:hy"=>"Գրենլանդիա", "name:ia"=>"Groenlandia", "name:id"=>"Greenland", "name:ie"=>"Grenland", "name:io"=>"Grenlando", "name:is"=>"Grænland", "name:it"=>"Groenlandia", "name:iu"=>"ᐊᑯᑭᑦᑐᑦ", "name:ja"=>"グリーンランド", "name:jv"=>"Greenland", "name:ka"=>"გრენლანდია", "name:kk"=>"Гренландия", "name:kl"=>"Kalaallit Nunaat", "name:kn"=>"ಗ್ರೀನ್ಲ್ಯಾಂಡ್", "name:ko"=>"그린란드", "name:ku"=>"Grînlenda", "name:kv"=>"Гренландия", "name:kw"=>"Greunland", "name:la"=>"Groenlandia", "name:lb"=>"Grönland", "name:li"=>"Greunland", "name:ln"=>"Groenlandi", "name:lt"=>"Grenlandija", "name:lv"=>"Grenlande", "name:mg"=>"Groenlanda", "name:mi"=>"Greenland", "name:mk"=>"Гренланд", "name:ml"=>"ഗ്രീൻലാൻഡ്", "name:mn"=>"Гренланд", "name:mr"=>"ग्रीनलँड", "name:ms"=>"Greenland", "name:my"=>"ဂရင်းလန်ကျွန်း", "name:ne"=>"ग्रीनल्याण्ड", "name:nl"=>"Groenland", "name:nn"=>"Grønland", "name:no"=>"Grønland", "name:nv"=>"Haʼaʼaahjí Hakʼaz Dineʼé Bikéyah", "name:oc"=>"Groenlàndia", "name:or"=>"ଗ୍ରୀନଲାଣ୍ଡ", "name:os"=>"Гренланди", "name:pa"=>"ਗਰੀਨਲੈਂਡ", "name:pl"=>"Grenlandia", "name:pt"=>"Gronelândia", "name:qu"=>"Kalalit Nunat", "name:ro"=>"Groenlanda", "name:ru"=>"Гренландия", "name:rw"=>"Goronulande", "name:se"=>"Kalaallit Nunaat", "name:sh"=>"Grenland", "name:sk"=>"Grónsko", "name:sl"=>"Grenlandija", "name:so"=>"Griinland", "name:sq"=>"Groenlanda", "name:sr"=>"Гренланд", "name:su"=>"Lemah Héjo", "name:sv"=>"Grönland", "name:sw"=>"Greenland", "name:ta"=>"கிறீன்லாந்து", "name:te"=>"గ్రీన్లాండ్", "name:tg"=>"Гренландия", "name:th"=>"กรีนแลนด์", "name:tl"=>"Lupanlunti", "name:tr"=>"Grönland", "name:tt"=>"Гренландия", "name:ug"=>"گرېنلاندىيە", "name:uk"=>"Ґренландія", "name:ur"=>"گرین لینڈ", "name:vi"=>"Greenland", "name:vo"=>"Gröneän", "name:wo"=>"Groenlaand", "name:yi"=>"גרינלאנד", "name:yo"=>"Grínlándì", "name:zh"=>"格陵兰"
-se "name"=>"Sverige", "name:ab"=>"Швециа", "name:af"=>"Swede", "name:ak"=>"Sweden", "name:am"=>"ስዊድን", "name:an"=>"Suecia", "name:ar"=>"السويد", "name:az"=>"İsveç", "name:ba"=>"Швеция", "name:be"=>"Швецыя", "name:bg"=>"Швеция", "name:bi"=>"Sweden", "name:bm"=>"Swedi", "name:bn"=>"সুইডেন", "name:bo"=>"སི་ཝེ་དེན།", "name:br"=>"Sveden", "name:bs"=>"Švedska", "name:ca"=>"Suècia", "name:ce"=>"Швеци", "name:co"=>"Svezia", "name:cs"=>"Švédsko", "name:cu"=>"Свєньско", "name:cv"=>"Швеци", "name:cy"=>"Sweden", "name:da"=>"Sverige", "name:de"=>"Schweden", "name:dv"=>"ސުވިޑަން", "name:dz"=>"སུའི་ཌན་", "name:ee"=>"Sweden", "name:el"=>"Σουηδία", "name:en"=>"Sweden", "name:eo"=>"Svedio", "name:es"=>"Suecia", "name:et"=>"Rootsi", "name:eu"=>"Suedia", "name:fa"=>"سوئد", "name:fi"=>"Ruotsi", "name:fo"=>"Svøríki", "name:fr"=>"Suède", "name:fy"=>"Sweden", "name:ga"=>"An tSualainn", "name:gd"=>"An t-Suain", "name:gl"=>"Suecia", "name:gn"=>"Suesia", "name:gu"=>"સ્વિડન", "name:gv"=>"Yn Toolynn", "name:he"=>"שבדיה", "name:hi"=>"स्वीडन", "name:hr"=>"Švedska", "name:ht"=>"Syèd", "name:hu"=>"Svédország", "name:hy"=>"Շվեդիա", "name:ia"=>"Svedia", "name:id"=>"Swedia", "name:ie"=>"Svedia", "name:io"=>"Suedia", "name:is"=>"Svíþjóð", "name:it"=>"Svezia", "name:iu"=>"ᔅᕗᕆᑭ", "name:ja"=>"スウェーデン", "name:jv"=>"Swédia", "name:ka"=>"შვედეთი", "name:kg"=>"Suedi", "name:ki"=>"Sweden", "name:kk"=>"Швеция", "name:kl"=>"Svenskit Nunaat", "name:km"=>"ស៊ុយអែត", "name:kn"=>"ಸ್ವೀಡನ್", "name:ko"=>"스웨덴", "name:ku"=>"Swêd", "name:kv"=>"Швеция", "name:kw"=>"Swedherwyk", "name:ky"=>"Швеция", "name:la"=>"Suecia", "name:lb"=>"Schweden", "name:lg"=>"Swiiden", "name:li"=>"Zwede", "name:ln"=>"Swédi", "name:lt"=>"Švedija", "name:lv"=>"Zviedrija", "name:mg"=>"Soeda", "name:mi"=>"Huītene", "name:mk"=>"Шведска", "name:ml"=>"സ്വീഡൻ", "name:mn"=>"Швед", "name:mr"=>"स्वीडन", "name:ms"=>"Sweden", "name:mt"=>"Żvezja", "name:my"=>"ဆွီဒင်နိုင်ငံ", "name:na"=>"Widen", "name:ne"=>"स्वीडेन", "name:nl"=>"Zweden", "name:nn"=>"Sverige", "name:no"=>"Sverige", "name:oc"=>"Suècia", "name:or"=>"ସ୍ଵିଡେନ", "name:os"=>"Швеци", "name:pa"=>"ਸਵੀਡਨ", "name:pl"=>"Szwecja", "name:ps"=>"سويډن", "name:pt"=>"Suécia", "name:qu"=>"Suwidsuyu", "name:rm"=>"Svezia", "name:ro"=>"Suedia", "name:ru"=>"Швеция", "name:rw"=>"Suwede", "name:sa"=>"स्वीडन", "name:sc"=>"Isvetzia", "name:se"=>"Ruoŧŧa", "name:sh"=>"Švedska", "name:sk"=>"Švédsko", "name:sl"=>"Švedska", "name:sm"=>"Sweden", "name:so"=>"Iswiidhan", "name:sq"=>"Suedia", "name:sr"=>"Шведска", "name:ss"=>"ISwideni", "name:su"=>"Swédia", "name:sv"=>"Sverige", "name:sw"=>"Uswidi", "name:ta"=>"சுவீடன்", "name:te"=>"స్వీడన్", "name:tg"=>"Шветсия", "name:th"=>"ประเทศสวีเดน", "name:tk"=>"Şwesiýa", "name:tl"=>"Suwesya", "name:tr"=>"İsveç", "name:tt"=>"Швеция", "name:tw"=>"Sweden", "name:ug"=>"شۋېتسىيە", "name:uk"=>"Швеція", "name:ur"=>"سویڈن", "name:uz"=>"Shvetsiya", "name:vi"=>"Thụy Điển", "name:vo"=>"Svedän", "name:wa"=>"Suwedwesse", "name:wo"=>"Suweed", "name:yi"=>"שוועדן", "name:yo"=>"Swídìn", "name:zh"=>"瑞典", "name:zu"=>"ISwidi"
-sk "name"=>"Slovensko", "name:af"=>"Slowakye", "name:am"=>"ስሎቫኪያ", "name:an"=>"Eslovaquia", "name:ar"=>"سلوفاكيا", "name:az"=>"Slovakiya", "name:ba"=>"Словакия", "name:be"=>"Славакія", "name:bg"=>"Словакия", "name:bi"=>"Slovakia", "name:bn"=>"স্লোভাকিয়া", "name:bo"=>"སི་ལོ་ཕ་ཁེ།", "name:br"=>"Slovakia", "name:bs"=>"Slovačka", "name:ca"=>"Eslovàquia", "name:ce"=>"Словаки", "name:co"=>"Sluvacchia", "name:cs"=>"Slovensko", "name:cu"=>"Словѣньско", "name:cv"=>"Словаки", "name:cy"=>"Slofacia", "name:da"=>"Slovakiet", "name:de"=>"Slowakei", "name:dv"=>"ސުލޮވާކިއާ", "name:ee"=>"Slovakia", "name:el"=>"Σλοβακία", "name:en"=>"Slovakia", "name:eo"=>"Slovakio", "name:es"=>"Eslovaquia", "name:et"=>"Slovakkia", "name:eu"=>"Eslovakia", "name:fa"=>"اسلواکی", "name:fi"=>"Slovakia", "name:fo"=>"Slovakia", "name:fr"=>"Slovaquie", "name:fy"=>"Slowakije", "name:ga"=>"An tSlóvaic", "name:gd"=>"An t-Slòbhac", "name:gl"=>"Eslovaquia", "name:gn"=>"Elovakia", "name:gu"=>"સ્લોવાકિયા", "name:gv"=>"Yn Clovack", "name:he"=>"סלובקיה", "name:hi"=>"स्लोवाकिया", "name:hr"=>"Slovačka", "name:ht"=>"Slovaki", "name:hu"=>"Szlovákia", "name:hy"=>"Սլովակիա", "name:ia"=>"Slovachia", "name:id"=>"Slowakia", "name:ie"=>"Slovacia", "name:io"=>"Slovakia", "name:is"=>"Slóvakía", "name:it"=>"Slovacchia", "name:ja"=>"スロバキア", "name:jv"=>"Slowakia", "name:ka"=>"სლოვაკეთი", "name:kg"=>"Slovakia", "name:kk"=>"Словакия", "name:kl"=>"Slovakia", "name:ko"=>"슬로바키아", "name:ku"=>"Slovakya", "name:kv"=>"Словакия", "name:kw"=>"Slovaki", "name:ky"=>"Словакия", "name:la"=>"Slovacia", "name:lb"=>"Slowakei", "name:li"=>"Slowakieë", "name:ln"=>"Slovakia", "name:lt"=>"Slovakija", "name:lv"=>"Slovākija", "name:mi"=>"Horowākia", "name:mk"=>"Словачка", "name:ml"=>"സ്ലോവാക്യ", "name:mn"=>"Словак", "name:mr"=>"स्लोव्हाकिया", "name:ms"=>"Slovakia", "name:mt"=>"Slovakkja", "name:my"=>"ဆလိုဗားကီးယားနိုင်ငံ", "name:na"=>"Slowakia", "name:ne"=>"स्लोभाकिया", "name:nl"=>"Slowakije", "name:nn"=>"Slovakia", "name:no"=>"Slovakia", "name:nv"=>"Słóbaʼ Bikéyah", "name:oc"=>"Eslovaquia", "name:or"=>"ସ୍ଲୋଭାକିଆ", "name:os"=>"Словаки", "name:pl"=>"Słowacja", "name:ps"=>"سلواکيا", "name:pt"=>"Eslováquia", "name:qu"=>"Isluwakya", "name:rm"=>"Slovachia", "name:ro"=>"Slovacia", "name:ru"=>"Словакия", "name:rw"=>"Silovakiya", "name:sa"=>"स्लोवाकिया", "name:se"=>"Slovakia", "name:sh"=>"Slovačka", "name:sk"=>"Slovensko", "name:sl"=>"Slovaška", "name:so"=>"Islofaakiya", "name:sq"=>"Sllovakia", "name:sr"=>"Словачка", "name:ss"=>"Silovakhi", "name:st"=>"Slovakia", "name:su"=>"Slovakia", "name:sv"=>"Slovakien", "name:sw"=>"Slovakia", "name:ta"=>"சிலோவாக்கியா", "name:tg"=>"Словакия", "name:th"=>"ประเทศสโลวาเกีย", "name:tk"=>"Slowakiýa", "name:tl"=>"Eslobakya", "name:tr"=>"Slovakya", "name:tt"=>"Словакия", "name:ug"=>"سلوۋاكىيە", "name:uk"=>"Словаччина", "name:ur"=>"سلوواکیہ", "name:uz"=>"Slovakiya", "name:vi"=>"Slovakia", "name:vo"=>"Slovakiyän", "name:wo"=>"Eslowaaki", "name:yi"=>"סלאוואקיי", "name:yo"=>"Slofákíà", "name:zh"=>"斯洛伐克", "name:zu"=>"ISlovaki"
-cy "name"=>"Κύπρος - Kıbrıs", "name:af"=>"Siprus", "name:am"=>"ቆጵሮስ", "name:an"=>"Chipre", "name:ar"=>"قبرص", "name:az"=>"Kipr", "name:be"=>"Кіпр", "name:bg"=>"Кипър", "name:bi"=>"Cyprus", "name:bn"=>"সাইপ্রাস", "name:bo"=>"སེ་པི་རི་སི།", "name:br"=>"Kiprenez", "name:bs"=>"Kipar", "name:ca"=>"Xipre", "name:ce"=>"Кипр", "name:co"=>"Cipru", "name:cs"=>"Kypr", "name:cu"=>"Кѷпръ", "name:cv"=>"Кипр", "name:cy"=>"Cyprus", "name:da"=>"Cypern", "name:de"=>"Zypern", "name:ee"=>"Cyprus", "name:el"=>"Κύπρος", "name:en"=>"Cyprus", "name:eo"=>"Kipro", "name:es"=>"Chipre", "name:et"=>"Küpros", "name:eu"=>"Zipre", "name:fa"=>"قبرس", "name:fi"=>"Kypros", "name:fo"=>"Kýpros", "name:fr"=>"Chypre", "name:fy"=>"Syprus", "name:ga"=>"An Chipir", "name:gd"=>"Cìopras", "name:gl"=>"Chipre", "name:gn"=>"Chipre", "name:gu"=>"સાયપ્રસ", "name:gv"=>"Yn Cheeprey", "name:he"=>"קפריסין", "name:hi"=>"साइप्रस", "name:hr"=>"Cipar", "name:ht"=>"Chip", "name:hu"=>"Ciprus", "name:hy"=>"Կիպրոս", "name:ia"=>"Cypro", "name:id"=>"Siprus", "name:ie"=>"Cypria", "name:io"=>"Chipro", "name:is"=>"Kýpur", "name:it"=>"Cipro", "name:ja"=>"キプロス", "name:jv"=>"Siprus", "name:ka"=>"კვიპროსი", "name:kg"=>"Kipros", "name:kk"=>"Кипр", "name:kl"=>"Cyperni", "name:kn"=>"ಕಿಪ್ರೊಸ್", "name:ko"=>"키프로스", "name:ku"=>"Kîpros", "name:kv"=>"Кипр", "name:kw"=>"Kobros", "name:la"=>"Cyprus", "name:lb"=>"Zypern", "name:li"=>"Cyprus", "name:lt"=>"Kipras", "name:lv"=>"Kipra", "name:mg"=>"Kipra", "name:mi"=>"Haipara", "name:mk"=>"Кипар", "name:ml"=>"സൈപ്രസ്", "name:mn"=>"Кипр", "name:mr"=>"सायप्रस", "name:ms"=>"Cyprus", "name:mt"=>"Ċipru", "name:my"=>"ဆိုက်ပရပ်စ်နိုင်ငံ", "name:na"=>"Taiprus", "name:nb"=>"Kypros", "name:ne"=>"साइप्रस", "name:nl"=>"Cyprus", "name:nn"=>"Kypros", "name:no"=>"Kypros", "name:nv"=>"Béésh Łichíiʼii Bikéyah", "name:oc"=>"Chipre", "name:or"=>"ସାଇପ୍ରସ", "name:os"=>"Кипр", "name:pa"=>"ਸਾਇਪ੍ਰਸ", "name:pl"=>"Cypr", "name:pt"=>"Chipre", "name:qu"=>"Kipru", "name:rm"=>"Cipra", "name:ro"=>"Cipru", "name:ru"=>"Кипр", "name:rw"=>"Shipure", "name:sc"=>"Tzipru", "name:se"=>"Kypros", "name:sh"=>"Cipar", "name:si"=>"සයිප්රස්", "name:sk"=>"Cyprus", "name:sl"=>"Ciper", "name:sm"=>"Cyprus", "name:so"=>"Qabrus", "name:sq"=>"Qiproja", "name:sr"=>"Кипар", "name:ss"=>"ISayiphro", "name:su"=>"Siprus", "name:sv"=>"Cypern", "name:sw"=>"Kupro", "name:ta"=>"சைப்பிரஸ்", "name:te"=>"సైప్రస్", "name:tg"=>"Кипр", "name:th"=>"ประเทศไซปรัส", "name:tk"=>"Kipr", "name:tl"=>"Tsipre", "name:tr"=>"Kıbrıs", "name:tt"=>"Кипр", "name:ug"=>"سىپرۇس", "name:uk"=>"Кіпр", "name:ur"=>"قبرص", "name:uz"=>"Qibris", "name:vi"=>"Síp", "name:vo"=>"Sipreän", "name:wo"=>"Ciipër", "name:yi"=>"קיפראס", "name:yo"=>"Kíprù", "name:zh"=>"赛普勒斯/塞浦路斯/塞浦路斯"
-cn "name"=>"中国", "name:ab"=>"Чынҭ", "name:af"=>"China", "name:ak"=>"China", "name:am"=>"የቻይና", "name:an"=>"China", "name:ar"=>"الصين", "name:as"=>"চীন", "name:av"=>"Чин", "name:ay"=>"China", "name:az"=>"Çin", "name:ba"=>"Ҡытай", "name:be"=>"Кітай", "name:bg"=>"Китай", "name:bh"=>"चीन", "name:bi"=>"Jaena", "name:bm"=>"China", "name:bn"=>"গণচীন", "name:bo"=>"ཀྲུང་གོ།", "name:br"=>"Sina", "name:bs"=>"Kina", "name:ca"=>"Xina", "name:ce"=>"Цийн-мохк", "name:ch"=>"China", "name:co"=>"China", "name:cs"=>"Čína", "name:cu"=>"Срѣдинꙗнє", "name:cv"=>"Китай", "name:cy"=>"Tsieina", "name:da"=>"Kina", "name:de"=>"China", "name:dv"=>"ސީނުކަރަ", "name:dz"=>"རྒྱ་ནག", "name:ee"=>"China", "name:el"=>"Κίνα", "name:en"=>"China", "name:eo"=>"Ĉinio", "name:es"=>"China", "name:et"=>"Hiina", "name:eu"=>"Txina", "name:fa"=>"چین", "name:ff"=>"Ciina", "name:fi"=>"Kiina", "name:fj"=>"Jaina", "name:fo"=>"Kina", "name:fr"=>"Chine", "name:fy"=>"Sina", "name:ga"=>"Síne", "name:gd"=>"Sìona", "name:gl"=>"China", "name:gn"=>"Chína", "name:gu"=>"ચીન", "name:gv"=>"Sheen", "name:ha"=>"Sin", "name:he"=>"סין", "name:hi"=>"चीनी", "name:hr"=>"Kina", "name:ht"=>"Chin", "name:hu"=>"Kína", "name:hy"=>"Չինաստան", "name:ia"=>"China", "name:id"=>"Tiongkok", "name:ie"=>"China", "name:ig"=>"Chaina", "name:ik"=>"China", "name:io"=>"Chinia", "name:is"=>"Kína", "name:it"=>"Cina", "name:iu"=>"ᓴᐃᓇ", "name:ja"=>"中国", "name:jv"=>"Cina", "name:ka"=>"ჩინეთი", "name:kg"=>"Sina", "name:ki"=>"China", "name:kk"=>"Қытай", "name:kl"=>"Kina", "name:km"=>"ចិន", "name:kn"=>"ಚೀನಿ", "name:ko"=>"중국", "name:ks"=>"چیٖن", "name:ku"=>"Çîn", "name:kv"=>"Китай", "name:kw"=>"China", "name:ky"=>"Кытай", "name:la"=>"Sinae", "name:lb"=>"China", "name:lg"=>"Cayina", "name:li"=>"China", "name:ln"=>"Sína", "name:lo"=>"ປະເທດຈີນ", "name:lt"=>"Kinija", "name:lv"=>"Ķīna", "name:mg"=>"Sina", "name:mi"=>"Haina", "name:mk"=>"Кина", "name:ml"=>"ചീന", "name:mn"=>"Хятад", "name:mr"=>"चीन", "name:ms"=>"China", "name:mt"=>"Ċina", "name:my"=>"တရုတ်", "name:na"=>"Tsiene", "name:nb"=>"Kina", "name:ne"=>"चीन", "name:nl"=>"China", "name:nn"=>"Kina", "name:no"=>"Kina", "name:nv"=>"Tsiiʼyishbizhí Dineʼé Bikéyah", "name:ny"=>"China", "name:oc"=>"China", "name:om"=>"Chaayinaan", "name:or"=>"ଚୀନ", "name:os"=>"Китай", "name:pa"=>"ਚੀਨ", "name:pl"=>"Chiny", "name:ps"=>"چين", "name:pt"=>"China", "name:qu"=>"Chunkuk", "name:rm"=>"China", "name:rn"=>"Ubushinwa", "name:ro"=>"China", "name:ru"=>"Китай", "name:rw"=>"Ubushinwa", "name:sc"=>"Cina", "name:sd"=>"چين", "name:se"=>"Kiinná", "name:sg"=>"Sînä", "name:sh"=>"Kina", "name:si"=>"චීනය", "name:sk"=>"Čína", "name:sl"=>"Kitájska", "name:sm"=>"Saina", "name:sn"=>"China", "name:so"=>"Shiinaha", "name:sq"=>"Kina", "name:sr"=>"Кина", "name:ss"=>"iShayina", "name:st"=>"Tjhaena", "name:su"=>"Tiongkok", "name:sv"=>"Kina", "name:sw"=>"China", "name:ta"=>"சீனா", "name:te"=>"చైనా", "name:tg"=>"Хито́й", "name:th"=>"ประเทศจีน", "name:ti"=>"የቻይና", "name:tk"=>"Hytaý", "name:tl"=>"Tsina", "name:tn"=>"China", "name:to"=>"Siaina", "name:tr"=>"Çin", "name:ts"=>"Chayina", "name:tt"=>"Кытай", "name:tw"=>"China", "name:ty"=>"Tinitō", "name:ug"=>"جۇڭخۇا خەلق جۇمھۇرىيىتى", "name:uk"=>"Кита́йська", "name:ur"=>"چین", "name:uz"=>"Xitoy", "name:ve"=>"China", "name:vi"=>"Trung Quốc", "name:vo"=>"Tsyinän", "name:wo"=>"Siin", "name:xh"=>"IShayina", "name:yi"=>"כינע", "name:yo"=>"Ṣáínà", "name:za"=>"Cunghgoz", "name:zh"=>"中国", "name:zu"=>"IShayina"
-kw "name"=>"الكويت", "name:af"=>"Koeweit", "name:am"=>"ኩዌት", "name:an"=>"Kuwait", "name:ar"=>"الكويت", "name:az"=>"Küveyt", "name:ba"=>"Күвейт", "name:be"=>"Кувейт", "name:bg"=>"Кувейт", "name:bn"=>"কুয়েত", "name:bo"=>"ཁུ་ཝི་ཐི།", "name:br"=>"Koweit", "name:bs"=>"Kuvajt", "name:ca"=>"Kuwait", "name:ce"=>"Кувейт", "name:cs"=>"Kuvajt", "name:cv"=>"Кувейт", "name:cy"=>"Kuwait", "name:da"=>"Kuwait", "name:de"=>"Kuwait", "name:dv"=>"ކުވެއިތު", "name:dz"=>"ཀུ་ཝེཊ་", "name:el"=>"Κουβέιτ", "name:en"=>"Kuwait", "name:eo"=>"Kuvajto", "name:es"=>"Kuwait", "name:et"=>"Kuveit", "name:eu"=>"Kuwait", "name:fa"=>"کویت", "name:fi"=>"Kuwait", "name:fo"=>"Kuveit", "name:fr"=>"Koweït", "name:fy"=>"Koeweit", "name:ga"=>"Cuáit", "name:gd"=>"Cubhait", "name:gl"=>"Kuwait", "name:gu"=>"કુવૈત", "name:gv"=>"Yn Choowait", "name:he"=>"כווית", "name:hi"=>"कुवैत", "name:hr"=>"Kuvajt", "name:ht"=>"Kowet", "name:hu"=>"Kuvait", "name:hy"=>"Քուվեյթ", "name:ia"=>"Kuwait", "name:id"=>"Kuwait", "name:ie"=>"Kuwait", "name:io"=>"Kuwait", "name:is"=>"Kúveit", "name:it"=>"Kuwait", "name:ja"=>"クウェート", "name:jv"=>"Kuwait", "name:ka"=>"ქუვეითი", "name:kk"=>"Кувейт", "name:kl"=>"Kuwait", "name:km"=>"គុយវ៉ែត", "name:kn"=>"ಕುವೈತ್", "name:ko"=>"쿠웨이트", "name:ku"=>"Kuweyt", "name:kv"=>"Кувейт", "name:kw"=>"Koweyt", "name:la"=>"Cuvaitum", "name:lb"=>"Kuwait", "name:li"=>"Koeweit", "name:ln"=>"Koweit", "name:lt"=>"Kuveitas", "name:lv"=>"Kuveita", "name:mk"=>"Кувајт", "name:ml"=>"കുവൈറ്റ്", "name:mn"=>"Кувейт", "name:mr"=>"कुवेत", "name:ms"=>"Kuwait", "name:my"=>"ကူဝိတ်နိုင်ငံ", "name:na"=>"Kuwait", "name:ne"=>"कुवेत", "name:nl"=>"Koeweit", "name:nn"=>"Kuwait", "name:no"=>"Kuwait", "name:nv"=>"Kóóweiʼ", "name:oc"=>"Kowait", "name:or"=>"କୁଏତ", "name:os"=>"Кувейт", "name:pl"=>"Kuwejt", "name:ps"=>"کوېټ", "name:pt"=>"Kuwait", "name:qu"=>"Kuwait", "name:ro"=>"Kuweit", "name:ru"=>"Кувейт", "name:rw"=>"Koweti", "name:sa"=>"कुवैत", "name:se"=>"Kuwait", "name:sh"=>"Kuvajt", "name:sk"=>"Kuvajt", "name:sl"=>"Kuvajt", "name:so"=>"Kuwayt", "name:sq"=>"Kuvajti", "name:sr"=>"Кувајт", "name:ss"=>"IKhuwathi", "name:su"=>"Kuwait", "name:sv"=>"Kuwait", "name:sw"=>"Kuwait", "name:ta"=>"குவைத்", "name:te"=>"కువైట్", "name:tg"=>"Кувайт", "name:th"=>"ประเทศคูเวต", "name:tk"=>"Kuweýt", "name:tl"=>"Kuwait", "name:tr"=>"Kuveyt", "name:tt"=>"Күвәйт", "name:ug"=>"كۇۋەيت", "name:uk"=>"Кувейт", "name:ur"=>"کویت", "name:uz"=>"Quvayt", "name:vi"=>"Kuwait", "name:vo"=>"Kovätän", "name:wo"=>"Kowet", "name:yi"=>"קואווייט", "name:yo"=>"Kuwaiti", "name:zh"=>"科威特"
-ls "name"=>"Lesotho", "name:af"=>"Lesotho", "name:am"=>"ሌሶቶ", "name:an"=>"Lesoto", "name:ar"=>"ليسوتو", "name:az"=>"Lesoto", "name:ba"=>"Лесото", "name:be"=>"Лесота", "name:bg"=>"Лесото", "name:bm"=>"Lesoto", "name:bn"=>"লেসোথো", "name:bo"=>"ལི་སོ་ཐོ།", "name:br"=>"Lesotho", "name:bs"=>"Lesoto", "name:ca"=>"Lesotho", "name:ce"=>"Лесото", "name:cs"=>"Lesotho", "name:cv"=>"Лесото", "name:cy"=>"Lesotho", "name:da"=>"Lesotho", "name:de"=>"Lesotho", "name:dv"=>"ލެސޯތޯ", "name:ee"=>"Lesotho", "name:el"=>"Λεσότο", "name:en"=>"Lesotho", "name:eo"=>"Lesoto", "name:es"=>"Lesoto", "name:et"=>"Lesotho", "name:eu"=>"Lesotho", "name:fa"=>"لسوتو", "name:fi"=>"Lesotho", "name:fo"=>"Lesoto", "name:fr"=>"Lesotho", "name:fy"=>"Lesoto", "name:ga"=>"Leosóta", "name:gd"=>"Leasoto", "name:gl"=>"Lesoto", "name:gv"=>"Lesoto", "name:he"=>"לסוטו", "name:hi"=>"लेसोथो", "name:hr"=>"Lesoto", "name:ht"=>"Lezoto", "name:hu"=>"Lesotho", "name:hy"=>"Լեսոթո", "name:ia"=>"Lesotho", "name:id"=>"Lesotho", "name:ie"=>"Lesotho", "name:io"=>"Lesotho", "name:is"=>"Lesótó", "name:it"=>"Lesotho", "name:ja"=>"レソト", "name:jv"=>"Lesotho", "name:ka"=>"ლესოთო", "name:kg"=>"Lesotho", "name:kk"=>"Лесото", "name:kn"=>"ಲೆಸೊಥೊ", "name:ko"=>"레소토", "name:ku"=>"Lesoto", "name:kw"=>"Lesotho", "name:la"=>"Lesothum", "name:lb"=>"Lesotho", "name:li"=>"Lesotho", "name:ln"=>"Lesoto", "name:lt"=>"Lesotas", "name:lv"=>"Lesoto", "name:mi"=>"Teroto", "name:mk"=>"Лесото", "name:ml"=>"ലെസോത്തോ", "name:mn"=>"Лесото", "name:mr"=>"लेसोथो", "name:ms"=>"Lesotho", "name:mt"=>"Lesoto", "name:my"=>"လီဆိုသိုနိုင်ငံ", "name:na"=>"Resoto", "name:nl"=>"Lesotho", "name:nn"=>"Lesotho", "name:no"=>"Lesotho", "name:nv"=>"Sotho Dineʼé Bikéyah", "name:oc"=>"Lesotho", "name:or"=>"ଲିସୁଟୁ", "name:os"=>"Лесото", "name:pa"=>"ਲਿਸੋਥੋ", "name:pl"=>"Lesotho", "name:pt"=>"Lesoto", "name:qu"=>"Suthusuyu", "name:ro"=>"Lesotho", "name:ru"=>"Лесото", "name:rw"=>"Lesoto", "name:sa"=>"लेसोथो", "name:se"=>"Lesotho", "name:sg"=>"Lesôtho", "name:sh"=>"Lesoto", "name:sk"=>"Lesotho", "name:sl"=>"Lesoto", "name:sn"=>"Lesotho", "name:so"=>"Lesotho", "name:sq"=>"Lesoto", "name:sr"=>"Лесото", "name:ss"=>"ÉLusûtfu", "name:st"=>"Lesotho", "name:su"=>"Lésotho", "name:sv"=>"Lesotho", "name:sw"=>"Lesotho", "name:ta"=>"லெசோத்தோ", "name:tg"=>"Лесото", "name:th"=>"ประเทศเลโซโท", "name:tk"=>"Lesoto", "name:tl"=>"Lesoto", "name:tn"=>"Lesotho", "name:tr"=>"Lesotho", "name:ts"=>"Lesotho", "name:tt"=>"Лесото", "name:ug"=>"لېسوتو", "name:uk"=>"Лесото", "name:ur"=>"لیسوتھو", "name:uz"=>"Lesoto", "name:ve"=>"Li-Sotho", "name:vi"=>"Lesotho", "name:vo"=>"Lesotän", "name:wo"=>"Lesoto", "name:yi"=>"לעסאטא", "name:yo"=>"Lèsóthò", "name:zh"=>"莱索托/賴索托", "name:zu"=>"OSotho"
-gi "name"=>"Gibraltar", "name:af"=>"Gibraltar", "name:an"=>"Chibraltar", "name:ar"=>"جبل طارق", "name:az"=>"Cəbəli-Tariq", "name:ba"=>"Гибралтар", "name:be"=>"Гібралтар", "name:bg"=>"Гибралтар", "name:bn"=>"জিব্রাল্টার", "name:br"=>"Jibraltar", "name:bs"=>"Gibraltar", "name:ca"=>"Gibraltar", "name:cs"=>"Gibraltar", "name:cv"=>"Гибралтар", "name:cy"=>"Gibraltar", "name:da"=>"Gibraltar", "name:de"=>"Gibraltar", "name:dv"=>"ޖަބަލްޠާރިޤު", "name:el"=>"Γιβραλτάρ", "name:en"=>"Gibraltar", "name:eo"=>"Ĝibraltaro", "name:es"=>"Gibraltar", "name:et"=>"Gibraltar", "name:eu"=>"Gibraltar", "name:fa"=>"جبل طارق", "name:fi"=>"Gibraltar", "name:fo"=>"Gibraltar", "name:fr"=>"Gibraltar", "name:fy"=>"Gibraltar", "name:ga"=>"Giobráltar", "name:gd"=>"Giobraltair", "name:gl"=>"Xibraltar", "name:gv"=>"Gibraaltar", "name:he"=>"גיברלטר", "name:hi"=>"जिब्राल्टर", "name:hr"=>"Gibraltar", "name:hu"=>"Gibraltár", "name:hy"=>"Ջիբրալթար", "name:ia"=>"Gibraltar", "name:id"=>"Gibraltar", "name:ie"=>"Gibraltar", "name:io"=>"Gibraltar", "name:is"=>"Gíbraltar", "name:it"=>"Gibilterra", "name:ja"=>"ジブラルタル", "name:jv"=>"Gibraltar", "name:ka"=>"გიბრალტარი", "name:kk"=>"Гибралтар", "name:ko"=>"지브롤터", "name:ku"=>"Cîbraltar", "name:kw"=>"Jibraltar", "name:la"=>"Gibraltar", "name:lb"=>"Gibraltar", "name:li"=>"Gibraltar", "name:lt"=>"Gibraltaras", "name:lv"=>"Gibraltārs", "name:mi"=>"Kāmaka", "name:mk"=>"Гибралтар", "name:mn"=>"Гибралтар", "name:mr"=>"जिब्राल्टर", "name:ms"=>"Gibraltar", "name:my"=>"ဂျီဘရော်လ်တာ", "name:ne"=>"गिब्राल्टार", "name:nl"=>"Gibraltar", "name:nn"=>"Gibraltar", "name:no"=>"Gibraltar", "name:oc"=>"Gibartar", "name:or"=>"ଜିବ୍ରାଲେଟର", "name:os"=>"Гибралтар", "name:pa"=>"ਜਿਬਰਾਲਟਰ", "name:pl"=>"Gibraltar", "name:pt"=>"Gibraltar", "name:ro"=>"Gibraltar", "name:ru"=>"Гибралтар", "name:rw"=>"Giburalitari", "name:sh"=>"Gibraltar", "name:sk"=>"Gibraltár", "name:sl"=>"Gibraltar", "name:so"=>"Jibraltaar", "name:sq"=>"Gjibraltari", "name:sr"=>"Гибралтар", "name:su"=>"Gibraltar", "name:sv"=>"Gibraltar", "name:sw"=>"Gibraltar", "name:ta"=>"ஜிப்ரால்ட்டர்", "name:tg"=>"Гибралтар", "name:th"=>"ยิบรอลตาร์", "name:tl"=>"Hibraltar", "name:tr"=>"Cebelitarık", "name:tt"=>"Гибралтар", "name:uk"=>"Гібралтар", "name:ur"=>"جبل الطارق", "name:vi"=>"Gibraltar", "name:wa"=>"Djibraltar", "name:wo"=>"Jibraltaar", "name:yi"=>"גיבראלטאר", "name:yo"=>"Gibraltar", "name:zh"=>"直布罗陀"
-au "name"=>"Australia", "name:ab"=>"Австралиа", "name:af"=>"Australië", "name:am"=>"አውስትራልያ", "name:an"=>"Australia", "name:ar"=>"أستراليا", "name:as"=>"অষ্ট্ৰেলিয়া", "name:ay"=>"Australla", "name:az"=>"Avstraliya", "name:ba"=>"Австралия", "name:be"=>"Аўстра́лія", "name:bg"=>"Австралия", "name:bh"=>"ऑस्ट्रेलिया", "name:bi"=>"Ostrelia", "name:bm"=>"Ostralia", "name:bn"=>"অস্ট্রেলিয়া", "name:bo"=>"ཨོ་སེ་ཐེ་ལི་ཡ།", "name:br"=>"Aostralia", "name:bs"=>"Australija", "name:ca"=>"Austràlia", "name:ce"=>"Австра́ли", "name:co"=>"Australia", "name:cs"=>"Austrálie", "name:cu"=>"Аѵстралїꙗ", "name:cv"=>"Австрали", "name:cy"=>"Awstralia", "name:da"=>"Australien", "name:de"=>"Australien", "name:dv"=>"އޮސްޓަރުލިޔާ", "name:dz"=>"ཨས་ཊེཡེ་ལི་ཡ", "name:ee"=>"Australia", "name:el"=>"Αυστραλία", "name:en"=>"Australia", "name:eo"=>"Aŭstralio", "name:es"=>"Australia", "name:et"=>"Austraalia", "name:eu"=>"Australia", "name:fa"=>"استرالیا", "name:fi"=>"Australia", "name:fo"=>"Avstralia", "name:fr"=>"Australie", "name:fy"=>"Austraalje", "name:ga"=>"Astráil", "name:gd"=>"Astràilia", "name:gl"=>"Australia", "name:gn"=>"Autaralia", "name:gu"=>"ઑસ્ટ્રેલિયા", "name:gv"=>"Austrail", "name:ha"=>"Asturaliya", "name:he"=>"אוסטרליה", "name:hi"=>"ऑस्ट्रेलिया", "name:hr"=>"Australija", "name:ht"=>"Ostrali", "name:hu"=>"Ausztrália", "name:hy"=>"Ավստրալիա", "name:ia"=>"Australia", "name:id"=>"Australia", "name:ie"=>"Australia", "name:ig"=>"Ostraliya", "name:io"=>"Australia", "name:is"=>"Ástralía", "name:it"=>"Australia", "name:iu"=>"ᐊᔅᑦᕌᓕᐊ", "name:ja"=>"オーストラリア", "name:jv"=>"Ostrali", "name:ka"=>"ავსტრალია", "name:kg"=>"Australia", "name:ki"=>"Australia", "name:kk"=>"Аустралия", "name:kl"=>"Australia", "name:km"=>"អូស្ត្រាលី", "name:kn"=>"ಆಸ್ಟ್ರೇಲಿಯ", "name:ko"=>"오스트레일리아", "name:ku"=>"Awistralya", "name:kv"=>"Австралия", "name:kw"=>"Ostrali", "name:ky"=>"Австралия", "name:la"=>"Australia", "name:lb"=>"Australien", "name:li"=>"Australië", "name:lo"=>"ປະເທດອົດສະຕາລີ", "name:lt"=>"Australija", "name:lv"=>"Austrālija", "name:mg"=>"Aostralia", "name:mi"=>"Ahitereiria", "name:mk"=>"Австралија", "name:ml"=>"ഓസ്ട്രേലിയ", "name:mn"=>"Австрали", "name:mr"=>"ऑस्ट्रेलिया", "name:ms"=>"Australia", "name:mt"=>"Awstralja", "name:my"=>"ဩစတြေးလျနိုင်ငံ", "name:na"=>"Otereiriya", "name:ne"=>"अष्ट्रेलिया", "name:nl"=>"Australië", "name:nn"=>"Australia", "name:no"=>"Australia", "name:nv"=>"Nahatʼeʼiitsoh Bikéyah", "name:oc"=>"Austràlia", "name:om"=>"Awustireliyaa", "name:or"=>"ଅଷ୍ଟ୍ରେଲିଆ", "name:os"=>"Австрали", "name:pa"=>"ਆਸਟ੍ਰੇਲੀਆ", "name:pi"=>"आस्ट्रेलिया", "name:pl"=>"Australia", "name:ps"=>"آسټراليا", "name:pt"=>"Austrália", "name:qu"=>"Awstralya", "name:rm"=>"Australia", "name:rn"=>"Australiya", "name:ro"=>"Australia", "name:ru"=>"Австралия", "name:rw"=>"Ositaraliya", "name:sa"=>"आस्ट्रेलिया", "name:sc"=>"Austràlia", "name:sd"=>"آسٽريليا", "name:se"=>"Australia", "name:sg"=>"Ostralïi", "name:sh"=>"Australija", "name:si"=>"ඕස්ට්රේලියාව", "name:sk"=>"Austrália", "name:sl"=>"Avstralija", "name:sm"=>"Ausetalia", "name:sn"=>"Australia", "name:so"=>"Australia", "name:sq"=>"Australia", "name:sr"=>"Аустралија", "name:su"=>"Australia", "name:sv"=>"Australien", "name:sw"=>"Australia", "name:ta"=>"ஆஸ்திரேலியா", "name:te"=>"ఆస్ట్రేలియా", "name:tg"=>"Австралия", "name:th"=>"ออสเตรเลีย", "name:ti"=>"ኣውስትራሊያ", "name:tk"=>"Awstraliýa", "name:tl"=>"Australya", "name:tr"=>"Avustralya", "name:tt"=>"Австралия", "name:tw"=>"Australia", "name:ty"=>"Autereraria", "name:ug"=>"ئاۋستىرالىيە", "name:uk"=>"Австра́лія", "name:ur"=>"آسٹریلیا", "name:uz"=>"Avstraliya", "name:vi"=>"Úc", "name:vo"=>"Laustralän", "name:wa"=>"Ostraleye", "name:wo"=>"Óstraali", "name:yi"=>"אויסטראַליע", "name:yo"=>"Austrálíà", "name:za"=>"Audaihleihya", "name:zh"=>"澳大利亚", "name:zu"=>"I-Ostreliya"
-md "name"=>"Moldova", "name:ab"=>"Молдова", "name:af"=>"Moldowa", "name:am"=>"ሞልዶቫ", "name:an"=>"Moldavia", "name:ar"=>"مولدوفا", "name:az"=>"Moldova", "name:ba"=>"Молдова", "name:be"=>"Малдова", "name:bg"=>"Молдова", "name:bi"=>"Moldova", "name:bn"=>"মলদোভা", "name:bo"=>"མོལ་དོ་ཝ།", "name:br"=>"Moldova", "name:bs"=>"Moldavija", "name:ca"=>"Moldàvia", "name:ce"=>"Молдави", "name:co"=>"Moldavia", "name:cs"=>"Moldavsko", "name:cu"=>"Молдова", "name:cv"=>"Молдави", "name:cy"=>"Moldofa", "name:da"=>"Moldova", "name:de"=>"Moldawien", "name:dv"=>"މޮލްޑޯވާ", "name:ee"=>"Moldova", "name:el"=>"Μολδαβία", "name:en"=>"Moldova", "name:eo"=>"Moldavio", "name:es"=>"Moldavia", "name:et"=>"Moldova", "name:eu"=>"Moldavia", "name:fa"=>"مولداوی", "name:fi"=>"Moldova", "name:fo"=>"Moldova", "name:fr"=>"Moldavie", "name:fy"=>"Moldaavje", "name:ga"=>"An Mholdóiv", "name:gd"=>"Moldàibhia", "name:gl"=>"Moldavia", "name:gu"=>"મોલ્દોવા", "name:gv"=>"Moldova", "name:he"=>"מולדובה", "name:hi"=>"मॉल्डोवा", "name:hr"=>"Moldova", "name:ht"=>"Moldavi", "name:hu"=>"Moldova", "name:hy"=>"Մոլդովա", "name:ia"=>"Moldova", "name:id"=>"Moldova", "name:ie"=>"Moldavia", "name:io"=>"Moldova", "name:is"=>"Moldóva", "name:it"=>"Moldavia", "name:ja"=>"モルドバ", "name:jv"=>"Moldova", "name:ka"=>"მოლდოვა", "name:kg"=>"Moldova", "name:kk"=>"Молдова", "name:kl"=>"Moldova", "name:kn"=>"ಮಾಲ್ಡೋವ", "name:ko"=>"몰도바", "name:ku"=>"Moldova", "name:kv"=>"Молдова", "name:kw"=>"Moldova", "name:ky"=>"Молдова", "name:la"=>"Moldavia", "name:lb"=>"Moldawien", "name:li"=>"Moldavië", "name:lt"=>"Moldavija", "name:lv"=>"Moldova", "name:mi"=>"Te Whenua o Morotawa", "name:mk"=>"Молдавија", "name:ml"=>"മൊൾഡോവ", "name:mn"=>"Молдав", "name:mo"=>"Мoldova", "name:mr"=>"मोल्दोव्हा", "name:ms"=>"Moldova", "name:mt"=>"Moldova", "name:my"=>"မော်လ်ဒိုဗာနိုင်ငံ", "name:na"=>"Mordowa", "name:ne"=>"मोल्दोवा", "name:nl"=>"Moldavië", "name:nn"=>"Moldova", "name:no"=>"Moldova", "name:oc"=>"Moldàvia", "name:or"=>"ମାଲଡୋଭା", "name:os"=>"Молдави", "name:pa"=>"ਮੋਲਦੋਵਾ", "name:pl"=>"Mołdawia", "name:pt"=>"Moldávia", "name:qu"=>"Mulduwa", "name:ro"=>"Moldova", "name:ru"=>"Молдавия", "name:rw"=>"Molidova", "name:sa"=>"मोल्दोवा", "name:se"=>"Moldova", "name:sh"=>"Moldavija", "name:sk"=>"Moldavsko", "name:sl"=>"Moldavija", "name:so"=>"Moldofa", "name:sq"=>"Moldavia", "name:sr"=>"Молдавија", "name:ss"=>"IMolidiva", "name:st"=>"Moldova", "name:su"=>"Moldova", "name:sv"=>"Moldavien", "name:sw"=>"Moldova", "name:ta"=>"மல்தோவா", "name:te"=>"మోల్డోవా", "name:tg"=>"Молдова", "name:th"=>"ประเทศมอลโดวา", "name:tk"=>"Moldawiýa", "name:tl"=>"Moldavia", "name:tr"=>"Moldova", "name:tt"=>"Молдавия", "name:ug"=>"مولدوۋا", "name:uk"=>"Молдова", "name:ur"=>"مالدووا", "name:uz"=>"Moldova", "name:vi"=>"Moldova", "name:vo"=>"Moldovän", "name:wo"=>"Moldaawi", "name:yi"=>"מאלדאווע", "name:yo"=>"Móldófà", "name:zh"=>"摩尔多瓦"
-tv "name"=>"Tuvalu", "name:am"=>"ቱቫሉ", "name:ar"=>"توفالو", "name:be"=>"Тувалу", "name:bg"=>"Тувалу", "name:bn"=>"টুভালু", "name:bo"=>"ཐུ་ཝ་ལུ།", "name:br"=>"Tuvalu", "name:ca"=>"Tuvalu", "name:cs"=>"Tuvalu", "name:cy"=>"Twfalw", "name:da"=>"Tuvalu", "name:de"=>"Tuvalu", "name:dz"=>"ཏུ་ཝ་ལུ", "name:ee"=>"Tuvalu nutome", "name:el"=>"Τουβαλού", "name:en"=>"Tuvalu", "name:eo"=>"Tuvalo", "name:es"=>"Tuvalu", "name:fa"=>"تووالو", "name:ff"=>"Tuwaluu", "name:fi"=>"Tuvalu", "name:fr"=>"Tuvalu", "name:fy"=>"Tûvalû", "name:ga"=>"Tuvalu", "name:gd"=>"Tubhalu", "name:gu"=>"તુવાલુ", "name:gv"=>"Tuvalu", "name:ha"=>"Tubalu", "name:he"=>"טובלו", "name:hi"=>"तुवालु", "name:hr"=>"Tuvalu", "name:hu"=>"Tuvalu", "name:hy"=>"Տուվալու", "name:is"=>"Túvalú", "name:ja"=>"ツバル", "name:ka"=>"ტუვალუ", "name:km"=>"ទូវ៉ាលូ", "name:kn"=>"ಟುವಾಲು", "name:ko"=>"투발루", "name:ks"=>"توٗوالوٗ", "name:ku"=>"Tûvalû", "name:lo"=>"ຕູວາລູ", "name:lt"=>"Tuvalu", "name:lv"=>"Tuvalu", "name:mg"=>"Tovalò", "name:mk"=>"Тувалу", "name:ml"=>"തുവാലു", "name:mn"=>"Тувалу", "name:mr"=>"टुवालु", "name:ne"=>"तुभालु", "name:no"=>"Tuvalu", "name:oc"=>"Tuvalu", "name:or"=>"ଟୁଭାଲୁ", "name:pl"=>"Tuvalu", "name:pt"=>"Tuvalu", "name:ru"=>"Тувалу", "name:se"=>"Tuvalu", "name:sg"=>"Tüvalü", "name:si"=>"ටුවාලූ", "name:sk"=>"Tuvalu", "name:sr"=>"Тувалу", "name:sv"=>"Tuvalu", "name:ta"=>"துவாலூ", "name:te"=>"టువాలు", "name:th"=>"ประเทศตูวาลู", "name:ti"=>"ቱቫሉ", "name:to"=>"Tūvalu", "name:uk"=>"Тувалу", "name:ur"=>"ٹووالو", "name:vo"=>"Tuvaluäns", "name:yo"=>"Orílẹ́ède Tufalu", "name:zh"=>"吐瓦鲁", "name:zu"=>"i-Tuvalu"
-bb "name"=>"Barbados", "name:af"=>"Barbados", "name:am"=>"ባርቤዶስ", "name:an"=>"Barbados", "name:ar"=>"باربادوس", "name:ay"=>"Barbados", "name:az"=>"Barbados", "name:ba"=>"Барба́дос", "name:be"=>"Барба́дас", "name:bg"=>"Барбадос", "name:bn"=>"বার্বাডোস", "name:bo"=>"བར་བ་ཌོ་སི།", "name:br"=>"Barbados", "name:bs"=>"Barbados", "name:ca"=>"Barbados", "name:ce"=>"Барбадос", "name:cs"=>"Barbados", "name:cy"=>"Barbados", "name:da"=>"Barbados", "name:de"=>"Barbados", "name:dv"=>"ބާބަޑޮސް", "name:ee"=>"Barbados", "name:el"=>"Μπαρμπάντος", "name:en"=>"Barbados", "name:eo"=>"Barbado", "name:es"=>"Barbados", "name:et"=>"Barbados", "name:eu"=>"Barbados", "name:fa"=>"باربادوس", "name:fi"=>"Barbados", "name:fo"=>"Barbados", "name:fr"=>"Barbade", "name:fy"=>"Barbados", "name:ga"=>"Barbadós", "name:gd"=>"Barbados", "name:gl"=>"Barbados", "name:gn"=>"Varvado", "name:gv"=>"Barbados", "name:he"=>"ברבדוס", "name:hi"=>"बारबाडोस", "name:hr"=>"Barbados", "name:ht"=>"Lababad", "name:hu"=>"Barbados", "name:hy"=>"Բարբադոսը", "name:ia"=>"Barbados", "name:id"=>"Barbados", "name:ie"=>"Barbados", "name:ig"=>"Barbados", "name:io"=>"Barbados", "name:is"=>"Barbados", "name:it"=>"Barbados", "name:ja"=>"バルバドス", "name:jv"=>"Barbadhos", "name:ka"=>"ბარბადოსი", "name:kk"=>"Барба́дос", "name:kn"=>"ಬಾರ್ಬಡೋಸ್", "name:ko"=>"바베이도스", "name:ku"=>"Barbados", "name:kv"=>"Барбадос", "name:kw"=>"Barbados", "name:ky"=>"Барбадос", "name:la"=>"Barbata", "name:lb"=>"Barbados", "name:li"=>"Barbados", "name:ln"=>"Barbados", "name:lt"=>"Barbadòsas", "name:lv"=>"Barbadosa", "name:mg"=>"Barbady", "name:mk"=>"Барбадос", "name:ml"=>"ബർബാഡോസ്", "name:mn"=>"Барбадос", "name:mr"=>"बार्बाडोस", "name:ms"=>"Barbados", "name:mt"=>"Barbados", "name:my"=>"ဘာဘေးဒိုးစ်နိုင်ငံ", "name:na"=>"Barbadot", "name:ne"=>"बार्बाडोस", "name:nl"=>"Barbados", "name:nn"=>"Barbados", "name:no"=>"Barbados", "name:oc"=>"Barbados", "name:om"=>"Baarbeedoos", "name:or"=>"ବାରବାଡୋସ", "name:os"=>"Барбадос", "name:pa"=>"ਬਾਰਬਾਡੋਸ", "name:pi"=>"बार्बाडोस", "name:pl"=>"Barbados", "name:ps"=>"بارباډوس", "name:pt"=>"Barbados", "name:rm"=>"Barbados", "name:ro"=>"Barbados", "name:ru"=>"Барбадос", "name:rw"=>"Barubadosi", "name:sa"=>"बार्बाडोस", "name:se"=>"Barbados", "name:sh"=>"Barbados", "name:sk"=>"Barbados", "name:sl"=>"Barbados", "name:sn"=>"Barbados", "name:so"=>"Barbados", "name:sq"=>"Barbadosi", "name:sr"=>"Барбадос", "name:ss"=>"iBhadosi", "name:su"=>"Barbados", "name:sv"=>"Barbados", "name:sw"=>"Barbados", "name:ta"=>"பார்படோசு", "name:te"=>"బార్బడోస్", "name:tg"=>"Барбáдос", "name:th"=>"บาร์เบโดส", "name:tl"=>"Barbados", "name:tr"=>"Barbados", "name:tt"=>"Барба́дос", "name:ug"=>"باربادوس", "name:uk"=>"Барба́дос", "name:ur"=>"بارباڈوس", "name:uz"=>"Barbados", "name:vi"=>"Barbados", "name:vo"=>"Barbadeän", "name:wa"=>"Barbåde", "name:wo"=>"Barbados", "name:yi"=>"באַרבאַדאס", "name:yo"=>"Bárbádọ̀s", "name:zh"=>"巴巴多斯"
-bz "name"=>"Belize", "name:af"=>"Belize", "name:ak"=>"Beliz", "name:am"=>"ቤሊዝ", "name:an"=>"Belize", "name:ar"=>"بليز", "name:ay"=>"Wilisi", "name:az"=>"Beliz", "name:ba"=>"Белиз", "name:be"=>"Белі́з", "name:bg"=>"Белиз", "name:bm"=>"Belizi", "name:bn"=>"বেলিজ", "name:bo"=>"བེ་ལི་ཛི།", "name:br"=>"Belize", "name:bs"=>"Beliz", "name:ca"=>"Belize", "name:ce"=>"Бели́з", "name:cs"=>"Belize", "name:cv"=>"Белиз", "name:cy"=>"Belîs", "name:da"=>"Belize", "name:de"=>"Belize", "name:dv"=>"ބެލީޒު", "name:dz"=>"བེ་ལིཛ།", "name:ee"=>"Belize", "name:el"=>"Μπελίζ", "name:en"=>"Belize", "name:eo"=>"Belizo", "name:es"=>"Belice", "name:et"=>"Belize", "name:eu"=>"Belize", "name:fa"=>"بلیز", "name:ff"=>"Beliise", "name:fi"=>"Belize", "name:fo"=>"Belis", "name:fr"=>"Belize", "name:fy"=>"Belize", "name:ga"=>"an Bheilís", "name:gd"=>"Beilise", "name:gl"=>"Belice", "name:gn"=>"Mbelise", "name:gu"=>"બેલીઝ", "name:gv"=>"yn Veleesh", "name:ha"=>"Beliz", "name:he"=>"בליז", "name:hi"=>"बेलीज़", "name:hr"=>"Belize", "name:ht"=>"Beliz", "name:hu"=>"Belize", "name:hy"=>"Բելիզ", "name:ia"=>"Belize", "name:id"=>"Belize", "name:ie"=>"Belize", "name:io"=>"Belize", "name:is"=>"Belís", "name:it"=>"Belize", "name:ja"=>"ベリーズ", "name:jv"=>"Belize", "name:ka"=>"ბელიზი", "name:kk"=>"Бели́з", "name:km"=>"បេលីហ្ស", "name:kn"=>"ಬೆಲೀಜ್", "name:ko"=>"벨리즈", "name:ks"=>"بیلِج", "name:ku"=>"Belîze", "name:kw"=>"Belisa", "name:ky"=>"Белиз", "name:la"=>"Beliza", "name:lb"=>"Belize", "name:li"=>"Belize", "name:ln"=>"Belize", "name:lo"=>"ເບຊີວ", "name:lt"=>"Belizas", "name:lv"=>"Beliza", "name:mg"=>"Belizy", "name:mk"=>"Белизе", "name:ml"=>"ബെലീസ്", "name:mn"=>"Белиз", "name:mr"=>"बेलिझ", "name:ms"=>"Belize", "name:mt"=>"Beliże", "name:my"=>"ဘလိဇ်", "name:na"=>"Berij", "name:ne"=>"बेलिज", "name:nl"=>"Belize", "name:nn"=>"Belize", "name:no"=>"Belize", "name:oc"=>"Belize", "name:om"=>"Beliiz", "name:or"=>"ବେଲିଜ", "name:os"=>"Белиз", "name:pa"=>"ਬੇਲੀਜ਼", "name:pi"=>"बेलीज", "name:pl"=>"Belize", "name:ps"=>"بېلیز", "name:pt"=>"Belize", "name:qu"=>"Bilisi", "name:rm"=>"Belize", "name:ro"=>"Belize", "name:ru"=>"Белиз", "name:rw"=>"Belize", "name:sa"=>"बेलीज", "name:sc"=>"Belize", "name:se"=>"Belize", "name:sg"=>"Belîzi", "name:sh"=>"Belize", "name:si"=>"බෙලීස්", "name:sk"=>"Belize", "name:sl"=>"Belize", "name:sm"=>"Pelisi", "name:sn"=>"Belize", "name:so"=>"Belise", "name:sq"=>"Beliza", "name:sr"=>"Белизе", "name:ss"=>"iBhelizi", "name:su"=>"Bélis", "name:sv"=>"Belize", "name:sw"=>"Belize", "name:ta"=>"பெலீசு", "name:te"=>"బెలిజ్", "name:tg"=>"Белѝз", "name:th"=>"เบลีซ", "name:ti"=>"ቤሊዘ", "name:tl"=>"Belise", "name:to"=>"Pelise", "name:tr"=>"Belize", "name:tt"=>"Бели́з", "name:ug"=>"بېلىز", "name:uk"=>"Белі́з", "name:ur"=>"بیلیز", "name:uz"=>"Beliz", "name:vi"=>"Belize", "name:vo"=>"Belisän", "name:wo"=>"Beliis", "name:yi"=>"בעליז", "name:yo"=>"Bẹ̀lísè", "name:za"=>"Belize", "name:zh"=>"伯利兹", "name:zu"=>"Belize"
-gh "name"=>"Ghana", "name:af"=>"Ghana", "name:ak"=>"Ghana", "name:am"=>"ጋና", "name:an"=>"Ghana", "name:ar"=>"غانا", "name:az"=>"Qana", "name:ba"=>"Гана", "name:be"=>"Гана", "name:bg"=>"Гана", "name:bm"=>"Gana", "name:bn"=>"ঘানা", "name:bo"=>"ཀ་ན།", "name:br"=>"Ghana", "name:bs"=>"Gana", "name:ca"=>"Ghana", "name:ce"=>"Гана", "name:co"=>"Ghana", "name:cs"=>"Ghana", "name:cv"=>"Гана", "name:cy"=>"Ghana", "name:da"=>"Ghana", "name:de"=>"Ghana", "name:dv"=>"ގާނާ", "name:ee"=>"Ghana", "name:el"=>"Γκάνα", "name:en"=>"Ghana", "name:eo"=>"Ganao", "name:es"=>"Ghana", "name:et"=>"Ghana", "name:eu"=>"Ghana", "name:fa"=>"غنا", "name:ff"=>"Gana", "name:fi"=>"Ghana", "name:fo"=>"Gana", "name:fr"=>"Ghana", "name:fy"=>"Gana", "name:ga"=>"Gána", "name:gd"=>"Gàna", "name:gl"=>"Gana", "name:gu"=>"ઘાના", "name:gv"=>"Yn Ghaney", "name:he"=>"גאנה", "name:hi"=>"घाना", "name:hr"=>"Gana", "name:ht"=>"Gana", "name:hu"=>"Ghána", "name:hy"=>"Գանա", "name:ia"=>"Ghana", "name:id"=>"Ghana", "name:ie"=>"Ghana", "name:ig"=>"Ghana", "name:io"=>"Ghana", "name:is"=>"Gana", "name:it"=>"Ghana", "name:ja"=>"ガーナ", "name:jv"=>"Ghana", "name:ka"=>"განა", "name:kg"=>"Gana", "name:ki"=>"Ghana", "name:kk"=>"Гана", "name:kn"=>"ಘಾನಾ", "name:ko"=>"가나", "name:ku"=>"Gana", "name:kw"=>"Ghana", "name:ky"=>"Гана", "name:la"=>"Gana", "name:lb"=>"Ghana", "name:li"=>"Ghana", "name:ln"=>"Ghana", "name:lt"=>"Gana", "name:lv"=>"Gana", "name:mg"=>"Ghana", "name:mi"=>"Kāna", "name:mk"=>"Гана", "name:ml"=>"ഘാന", "name:mn"=>"Гана", "name:mr"=>"घाना", "name:ms"=>"Ghana", "name:mt"=>"Gana", "name:my"=>"ဂါနာနိုင်ငံ", "name:na"=>"Gana", "name:ne"=>"घाना", "name:nl"=>"Ghana", "name:nn"=>"Ghana", "name:no"=>"Ghana", "name:nv"=>"Gáana", "name:oc"=>"Ghana", "name:or"=>"ଘାନା", "name:os"=>"Ганæ", "name:pa"=>"ਘਾਨਾ", "name:pl"=>"Ghana", "name:ps"=>"ګانا", "name:pt"=>"Gana", "name:qu"=>"Gana", "name:rm"=>"Ghana", "name:ro"=>"Ghana", "name:ru"=>"Гана", "name:rw"=>"Gana", "name:sa"=>"घाना", "name:sc"=>"Ghana", "name:se"=>"Ghana", "name:sg"=>"Ganäa", "name:sh"=>"Gana", "name:sk"=>"Ghana", "name:sl"=>"Gana", "name:sn"=>"Ghana", "name:so"=>"Gaana", "name:sq"=>"Gana", "name:sr"=>"Гана", "name:ss"=>"IGana", "name:su"=>"Ghana", "name:sv"=>"Ghana", "name:sw"=>"Ghana", "name:ta"=>"கானா", "name:te"=>"ఘనా", "name:tg"=>"Гана", "name:th"=>"ประเทศกานา", "name:tk"=>"Gana", "name:tl"=>"Ghana", "name:tr"=>"Gana", "name:ts"=>"Ghana", "name:tt"=>"Гана", "name:tw"=>"Ghana", "name:ug"=>"گانا جۇمھۇرىيىتى", "name:uk"=>"Гана", "name:ur"=>"گھانا", "name:uz"=>"Gana", "name:vi"=>"Ghana", "name:vo"=>"Ganän", "name:wa"=>"Gana", "name:wo"=>"Gana", "name:yi"=>"גהאנע", "name:yo"=>"Ghánà", "name:zh"=>"加纳", "name:zu"=>"IGana"
-nu "name"=>"Niuē", "name:ar"=>"نييوي", "name:be"=>"Ніуэ", "name:bg"=>"Ниуе", "name:br"=>"Niue", "name:cs"=>"Niue", "name:da"=>"Niue", "name:de"=>"Niue", "name:dv"=>"ނީއު", "name:el"=>"Νιούε", "name:en"=>"Niue", "name:eo"=>"Niuo", "name:es"=>"Niue", "name:fa"=>"نیووی", "name:fi"=>"Niue", "name:fr"=>"Niue", "name:fy"=>"Niûé", "name:ga"=>"Niue", "name:he"=>"ניואה", "name:hr"=>"Niue", "name:hu"=>"Niue", "name:is"=>"Niue", "name:ja"=>"ニウエ", "name:ka"=>"ნიუე", "name:kk"=>"Ниуе", "name:ko"=>"니우에", "name:ku"=>"Niûe", "name:lt"=>"Niujė", "name:lv"=>"Niue", "name:mk"=>"Ниуе", "name:ml"=>"നിയുവെ", "name:mn"=>"Ниуэ", "name:mr"=>"न्युए", "name:os"=>"Ниуэ", "name:pl"=>"Niue", "name:ru"=>"Ниуэ", "name:rw"=>"Niyuwe", "name:sk"=>"Niue", "name:sr"=>"Нијуе", "name:sv"=>"Niue", "name:ta"=>"நியுவே", "name:th"=>"นีอูเอ", "name:ug"=>"Niué Arili", "name:uk"=>"Ніуе", "name:ur"=>"نیووے", "name:wo"=>"Niwe", "name:zh"=>"紐埃"
-pw "name"=>"Belau", "name:ar"=>"بالاو", "name:cs"=>"Palau", "name:de"=>"Palau", "name:en"=>"Palau", "name:eo"=>"Palaŭo", "name:fr"=>"Palaos", "name:hr"=>"Palau", "name:ia"=>"Palau", "name:io"=>"Palau", "name:lt"=>"Palau", "name:mi"=>"Pārau", "name:oc"=>"Belau", "name:pl"=>"Palau", "name:ru"=>"Палау", "name:se"=>"Palau", "name:sk"=>"Palau", "name:sl"=>"Palau", "name:sr"=>"Палау", "name:ta"=>"பலாவு", "name:uk"=>"Палау", "name:vi"=>"Palau", "name:vo"=>"Palauäns", "name:zh"=>"帕劳 / 帛琉"
-ag "name"=>"Antigua and Barbuda", "name:af"=>"Antigua en Barbuda", "name:ak"=>"Antigua ne Baabuda", "name:am"=>"አንቲጋ እና ባርቡዳ", "name:an"=>"Antigua y Barbuda", "name:ar"=>"أنتيغوا وباربودا", "name:as"=>"এণ্টিগুৱা আৰু বাৰ্বুডা", "name:ay"=>"Antiwa wan Barbuda", "name:az"=>"Antiqua və Barbuda", "name:ba"=>"Антигуа һәм Барбуда", "name:be"=>"Антыгуа́ і Барбу́да", "name:bg"=>"Антигуа и Барбуда", "name:bm"=>"Antiga-ni-Barbuda", "name:bn"=>"অ্যান্টিগুয়া ও বার্বুডা", "name:bo"=>"ཨེན་ཊི་གུའ་དང་བར་བུ་ཌ།", "name:br"=>"Antigua ha Barbuda", "name:bs"=>"Antigva i Barbuda", "name:ca"=>"Antigua i Barbuda", "name:ce"=>"Анти́гуа а Барбу́да", "name:cs"=>"Antigua a Barbuda", "name:cy"=>"Antigwa a Barbiwda", "name:da"=>"Antigua og Barbuda", "name:de"=>"Antigua und Barbuda", "name:dv"=>"އެންޓިގުއާ އަދި ބާބިއުޑާ", "name:dz"=>"ཨན་ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌ", "name:ee"=>"Antigua and Barbuda", "name:el"=>"Αντίγκουα και Μπαρμπούντα", "name:en"=>"Antigua and Barbuda", "name:eo"=>"Antigvo-Barbudo", "name:es"=>"Antigua y Barbuda", "name:et"=>"Antigua ja Barbuda", "name:eu"=>"Antigua eta Barbuda", "name:fa"=>"آنتیگوا و باربودا", "name:ff"=>"Antiguwaa e Barbudaa", "name:fi"=>"Antigua ja Barbuda", "name:fo"=>"Antigua og Barbuda", "name:fr"=>"Antigua-et-Barbuda", "name:fy"=>"Antigûa en Barbûda", "name:ga"=>"Antigua agus Barbúda", "name:gd"=>"Antigua agus Barbuda", "name:gl"=>"Antiga e Barbuda", "name:gn"=>"Antigua ha Barbuda", "name:gu"=>"એન્ટીગુઆ અને બરબુડા", "name:gv"=>"Antigua as Barbuda", "name:ha"=>"Antigwa da Barbuba", "name:he"=>"אנטיגואה וברבודה", "name:hi"=>"अण्टीगुआ और बारबूडा", "name:hr"=>"Antigva i Barbuda", "name:ht"=>"Antigwa ak Babouda", "name:hu"=>"Antigua és Barbuda", "name:hy"=>"Անտիգուա և Բարբուդա", "name:ia"=>"Antigua e Barbuda", "name:id"=>"Antigua dan Barbuda", "name:ie"=>"Antigua e Barbuda", "name:io"=>"Antigua e Barbuda", "name:is"=>"Antígva og Barbúda", "name:it"=>"Antigua e Barbuda", "name:ja"=>"アンティグア・バーブーダ", "name:jv"=>"Antigua lan Barbuda", "name:ka"=>"ანტიგუა და ბარბუდა", "name:ki"=>"Antigua na Barbuda", "name:kk"=>"Антигуа және Барбуда", "name:kl"=>"Antigua aamma Barbuda", "name:km"=>"អង់ទីគ័រ និងបាបុយដា", "name:kn"=>"ಆಂಟಿಗುವ ಮತ್ತು ಬಾರ್ಬುಡ", "name:ko"=>"앤티가 바부다", "name:ks"=>"اٮ۪نٹِگُوا تہٕ باربوڑا", "name:ku"=>"Antîgua û Berbûda", "name:kw"=>"Antiga ha Barbuda", "name:ky"=>"Антигуа жана Барбуда", "name:la"=>"Antiqua et Barbuda", "name:lb"=>"Antigua a Barbuda", "name:lg"=>"Antigwa ne Barabuda", "name:li"=>"Antigua en Barbuda", "name:ln"=>"Antigua mpé Barbuda", "name:lo"=>"ແອນຕີກາວ ແລະ ບາບູດາ", "name:lt"=>"Antigva ir Barbuda", "name:lv"=>"Antigva un Barbuda", "name:mg"=>"Antigua sy Barbuda", "name:mk"=>"Антигва и Барбуда", "name:ml"=>"ആന്റിഗ്വയ ആന്റ് ബാർബൂഡ", "name:mn"=>"Антигуа ба Барбуда", "name:mr"=>"अँटिगा आणि बार्बुडा", "name:ms"=>"Antigua dan Barbuda", "name:mt"=>"Antigwa u Barbuda", "name:my"=>"အင်တီဂွါနှင့် ဘာဘူဒါ", "name:na"=>"Antigua me Barbuda", "name:nb"=>"Antigua og Barbuda", "name:ne"=>"एन्टिगुआ र बर्बुडा", "name:nl"=>"Antigua en Barbuda", "name:nn"=>"Antigua og Barbuda", "name:no"=>"Antigua og Barbuda", "name:nv"=>"Antíígwa dóó Hashkʼaan Bikéyah Yázhí", "name:oc"=>"Antigua e Barbuda", "name:om"=>"Antiiguwaa fi Baarbuudaa", "name:or"=>"ଆଣ୍ଟିଗୁଆ ଓ ବରବୁଡା", "name:os"=>"Антигуæ æмæ Барбудæ", "name:pa"=>"ਐਂਟੀਗੁਆ ਅਤੇ ਬਰਬੂਡਾ", "name:pl"=>"Antigua i Barbuda", "name:pt"=>"Antígua e Barbuda", "name:qu"=>"Antiwa Barbudawan", "name:rm"=>"Antigua e Barbuda", "name:ro"=>"Antigua și Barbuda", "name:ru"=>"Антигуа и Барбуда", "name:rw"=>"Antigwa na Baribuda", "name:sa"=>"अण्टीग्वा", "name:sc"=>"Antigua e Barbuda", "name:se"=>"Antigua ja Barbuda", "name:sh"=>"Antigva i Barbuda", "name:si"=>"ඇන්ටිගුවා සහ බාබියුඩා", "name:sk"=>"Antigua a Barbuda", "name:sl"=>"Antigva in Barbuda", "name:sn"=>"Antigua and Barbuda", "name:so"=>"Antigua iyo Barbuda", "name:sq"=>"Antigua dhe Barbuda", "name:sr"=>"Антигва и Барбуда", "name:ss"=>"iBhabudi ne Anithikhu", "name:su"=>"Antigua jeung Barbuda", "name:sv"=>"Antigua och Barbuda", "name:sw"=>"Antigua na Barbuda", "name:ta"=>"அன்டிகுவா பர்புடா", "name:te"=>"ఆంటిగ్వా మరియు బార్బుడా", "name:tg"=>"Антигуаю Барбуда", "name:th"=>"แอนติกาและบาร์บูดา", "name:ti"=>"አንቲጓ እና ባሩዳ", "name:tl"=>"Antigua at Barbuda", "name:to"=>"Anitikua mo Palaputa", "name:tr"=>"Antigua ve Barbuda", "name:tt"=>"Анти́гуа һәм Барбу́да", "name:ug"=>"ئانتىگۇئا ۋە باربۇدا", "name:uk"=>"Анти́гуа і Барбу́да", "name:ur"=>"اینٹیگوا و باربوڈا", "name:uz"=>"Antigua va Barbuda", "name:vi"=>"Antigua và Barbuda", "name:vo"=>"Lantigeän e Barbudeän", "name:wo"=>"Antigua ak Barbuda", "name:yo"=>"Ántígúà àti Bàrbúdà", "name:za"=>"Antigua caeuq Barbuda", "name:zh"=>"安提瓜和巴布达", "name:zu"=>"i-Antigua and Barbuda"
-bs "name"=>"The Bahamas", "name:af"=>"Bahamas", "name:ak"=>"Bahama", "name:am"=>"ባሃማስ", "name:an"=>"Bahamas", "name:ar"=>"جزر باهاماس", "name:ay"=>"Bahamas", "name:az"=>"Bahamalar", "name:ba"=>"Багама утрауҙары", "name:be"=>"Бага́мскія Астравы́", "name:bg"=>"Бахамските острови", "name:bm"=>"Bahamasi", "name:bn"=>"বাহামা দ্বীপপুঞ্জ", "name:bo"=>"བ་ཧ་མཱ་སི།", "name:br"=>"Bahamas", "name:bs"=>"Bahami", "name:ca"=>"Bahames", "name:ce"=>"Багама", "name:cs"=>"Bahamy", "name:cv"=>"Пахамсем", "name:cy"=>"Y Bahamas", "name:da"=>"Bahamas", "name:de"=>"Die Bahamas", "name:dv"=>"ބަހާމަސް", "name:dz"=>"བཱ་ཧ་མས྄།", "name:ee"=>"Bahamas", "name:el"=>"Μπαχάμες", "name:en"=>"The Bahamas", "name:eo"=>"La Bahamoj", "name:es"=>"Las Bahamas", "name:et"=>"Bahama", "name:eu"=>"Bahamak", "name:fa"=>"باهاما", "name:ff"=>"Bahamaas", "name:fi"=>"Bahama", "name:fo"=>"Bahamaoyggjar", "name:fr"=>"Les Bahamas", "name:fy"=>"De Bahama's", "name:ga"=>"na Bahámaí", "name:gd"=>"na Bahàmas", "name:gl"=>"Bahamas", "name:gn"=>"Vaamakuéra", "name:gu"=>"બહામાસ", "name:gv"=>"ny Bahamaghyn", "name:he"=>"איי בהאמה", "name:hi"=>"बहामस", "name:hr"=>"Bahami", "name:ht"=>"Il Bahamas", "name:hu"=>"Bahama-szigetek", "name:hy"=>"Բահամները", "name:ia"=>"Bahamas", "name:id"=>"Bahama", "name:io"=>"Bahama", "name:is"=>"Bahamaeyjar", "name:it"=>"Le Bahamas", "name:ja"=>"バハマ", "name:jv"=>"Bahama", "name:ka"=>"ბაჰამის კუნძულები", "name:ki"=>"Bahama", "name:kk"=>"Багам аралдары", "name:km"=>"បាហាម៉ា", "name:kn"=>"ಬಹಾಮಾಸ್", "name:ko"=>"바하마", "name:ks"=>"بَہامَس", "name:ku"=>"Bahama", "name:kw"=>"Ynysow Bahama", "name:ky"=>"Багама аралдары", "name:la"=>"Bahamanae", "name:lb"=>"D'Bahamas", "name:lg"=>"Bahamasi", "name:li"=>"De Bahama's", "name:ln"=>"Bahamasɛ", "name:lo"=>"ບາຮາມມາສ", "name:lt"=>"Bahamos", "name:lv"=>"Bahamas", "name:mg"=>"Bahamasy", "name:mk"=>"Бахами", "name:ml"=>"ബഹാമാസ്", "name:mn"=>"Багамын Арлууд", "name:mr"=>"बहामास", "name:ms"=>"Bahamas", "name:mt"=>"Il-Baħamas", "name:my"=>"ဘဟားမားနိုင်ငံ", "name:na"=>"Bahamat", "name:ne"=>"बहामस", "name:nl"=>"Bahama's", "name:nn"=>"Bahamas", "name:no"=>"Bahamas", "name:oc"=>"Las Bahamas", "name:om"=>"Bahamaas", "name:or"=>"ବାହାମା", "name:os"=>"Багамтæ", "name:pa"=>"ਬਹਾਮਾਸ", "name:pi"=>"बहामास", "name:pl"=>"Bahamy", "name:pt"=>"Bahamas", "name:qu"=>"Bahamakuna", "name:rm"=>"Bahamas", "name:rn"=>"Bahamasi", "name:ro"=>"Bahamas", "name:ru"=>"Багамские Острова", "name:rw"=>"Bahamasi", "name:sa"=>"बहामास", "name:se"=>"Bahamasullot", "name:sg"=>"Bahâmasa", "name:sh"=>"Bahami", "name:si"=>"බහාමාස්", "name:sk"=>"Bahamy", "name:sl"=>"Bahami", "name:sn"=>"The Bahamas", "name:so"=>"Bahamas", "name:sq"=>"Bahamet", "name:sr"=>"Бахаме", "name:ss"=>"iBhahamasi", "name:su"=>"Bahama", "name:sv"=>"Bahamas", "name:sw"=>"Bahamas", "name:ta"=>"பாகாமாசு", "name:te"=>"బహామాస్", "name:tg"=>"Баҳамас", "name:th"=>"ประเทศบาฮามาส", "name:ti"=>"ባሃማስ", "name:tk"=>"Bagama Adalary", "name:tl"=>"Bahamas", "name:to"=>"Pahama", "name:tr"=>"Bahamalar", "name:tt"=>"Багамалар", "name:ug"=>"باھاما", "name:uk"=>"Багамські Острови", "name:ur"=>"بہاماس", "name:uz"=>"Bagam orollari", "name:vi"=>"Bahamas", "name:vo"=>"Bahamuäns", "name:wo"=>"Bahamas", "name:yi"=>"די באַהאַמאַס", "name:yo"=>"Àwọn Bàhámà", "name:za"=>"Bahamas", "name:zh"=>"巴哈马", "name:zu"=>"i-Bahamas"
-eh "name"=>"الجمهورية العربية الصحراوية الديمقراطية", "name:ar"=>"الجمهورية العربية الصحراوية الديمقراطية", "name:cs"=>"Saharská arabská demokratická republika", "name:de"=>"Demokratische Arabische Republik Sahara", "name:el"=>"Δημοκρατία της Σαχάρας", "name:en"=>"Sahrawi Arab Democratic Republic", "name:es"=>"República Árabe Saharaui Democrática", "name:fa"=>"جمهوری دموکراتیک عربی صحرا", "name:fr"=>"République arabe sahraouie démocratique", "name:it"=>"Repubblica Araba Democratica dei Sahrawi", "name:lt"=>"Sacharos Arabų Demokratinė Respublika", "name:nl"=>"Arabische Democratische Republiek Sahara", "name:pt"=>"República Árabe Saaraui Democrática", "name:ru"=>"Сахарская Арабская Демократическая Республика", "name:ur"=>"صحراوی عرب عوامی جمہوریہ", "name:zh"=>"撒拉威阿拉伯民主共和國"
-sb "name"=>"Solomon Islands", "name:af"=>"Solomoneilande", "name:am"=>"ሰለሞን ደሴቶች", "name:an"=>"Islas Salomón", "name:ar"=>"جزر سليمان", "name:az"=>"Solomon adaları", "name:be"=>"Саламонавы Астравы", "name:bg"=>"Соломонови острови", "name:bn"=>"সলোমন দ্বীপপুঞ্জ", "name:bo"=>"སོ་ལོ་མོན་གླིང་ཕྲན་ཚོ་ཁག", "name:br"=>"Inizi Solomon", "name:bs"=>"Solomonska Ostrva", "name:ca"=>"Salomó", "name:ce"=>"Соломонан гӀайреш", "name:cs"=>"Šalomounovy ostrovy", "name:cv"=>"Соломон Утравĕсем", "name:cy"=>"Ynysoedd Solomon", "name:da"=>"Salomonøerne", "name:de"=>"Salomonen", "name:dv"=>"ސޮލޮމޮން ޖަޒީރާ", "name:el"=>"Νήσοι Σολομώντα", "name:en"=>"Solomon Islands", "name:eo"=>"Salomonoj", "name:es"=>"Islas Salomón", "name:et"=>"Saalomoni Saared", "name:eu"=>"Salomon Uharteak", "name:fa"=>"جزایر سلیمان", "name:fi"=>"Salomonsaaret", "name:fo"=>"Sálomonoyggjarnar", "name:fr"=>"Salomon", "name:fy"=>"Salomonseilannen", "name:ga"=>"Oileáin Sholamón", "name:gd"=>"Na h-Eileanan Sholaimh", "name:gl"=>"Illas Salomón", "name:gv"=>"Ny h-Ellanyn Holomon", "name:he"=>"איי שלמה", "name:hi"=>"सोलोमन द्वीपसमूह", "name:hr"=>"Solomonski Otoci", "name:ht"=>"Salomon", "name:hu"=>"Salamon-szigetek", "name:hy"=>"Սողոմոնյան Կղզիներ", "name:id"=>"Kepulauan Solomon", "name:io"=>"Salomon Insuli", "name:is"=>"Salómonseyjar", "name:it"=>"Isole Salomone", "name:ja"=>"ソロモン諸島", "name:jv"=>"Kapuloan Solomon", "name:ka"=>"სოლომონის კუნძულები", "name:kk"=>"Соломон Аралдары", "name:kn"=>"ಸಾಲೊಮನ್ ದ್ವೀಪಗಳು", "name:ko"=>"솔로몬 제도", "name:ku"=>"Giravên Salomon", "name:kw"=>"Ynysow Salamon", "name:la"=>"Insulae Salomonis", "name:lb"=>"Salomonen", "name:li"=>"Salomonseilen", "name:lt"=>"Saliamono Salos", "name:lv"=>"Zālamana Salas", "name:mk"=>"Соломонски Острови", "name:ml"=>"സോളമൻ ദ്വീപുകൾ", "name:mr"=>"सॉलोमन द्वीपसमूह", "name:ms"=>"Kepulauan Solomon", "name:mt"=>"Gżejjer Solomon", "name:my"=>"ဆော်လမွန်အိုင်းလန်းနိုင်ငံ", "name:ne"=>"सोलोमन द्धीप", "name:nl"=>"Salomonseilanden", "name:nn"=>"Salomonøyane", "name:no"=>"Salomonøyene", "name:nv"=>"Sólomon Tó Bináhaazyínígíí", "name:oc"=>"Illas Salamon", "name:or"=>"ସୋଲୋମନ ଆୟରଲ୍ୟାଣ୍ଡ", "name:os"=>"Соломоны сакъадæхтæ", "name:pa"=>"ਸੋਲੋਮਨ ਟਾਪੂ", "name:pl"=>"Wyspy Salomona", "name:pt"=>"Ilhas Salomão", "name:qu"=>"Salumun wat'akuna", "name:ro"=>"Insulele Solomon", "name:ru"=>"Соломоновы Острова", "name:rw"=>"Ibirwa bya Solomoni", "name:sa"=>"सोलोमन-द्वीप", "name:se"=>"Salomonsullot", "name:sh"=>"Solomonski Otoci", "name:si"=>"සොලමන් දුපත්", "name:sk"=>"Šalamúnove ostrovy", "name:sl"=>"Salomonovi otoki", "name:sm"=>"Solomon Islands", "name:so"=>"Jasiiradaha Solomon", "name:sq"=>"Ishujt Solomon", "name:sr"=>"Соломонска Острва", "name:su"=>"Kapuloan Solomon", "name:sv"=>"Salomonöarna", "name:sw"=>"Visiwa vya Solomon", "name:ta"=>"சொலமன் தீவுகள்", "name:te"=>"సోలమన్ దీవులు", "name:tg"=>"Ҷазираҳои Соломон", "name:th"=>"หมู่เกาะโซโลมอน", "name:tl"=>"Kapuluang Solomon", "name:tr"=>"Solomon Adaları", "name:ug"=>"سولومون تاقىم ئاراللىرى", "name:uk"=>"Соломонові Острови", "name:ur"=>"جزائر سلیمان", "name:uz"=>"Solomon Orollari", "name:vi"=>"Quần đảo Solomon", "name:vo"=>"Solomonuäns", "name:wo"=>"Duni Solomon", "name:yo"=>"Àwọn Erékùsù Sólómọ́nì", "name:zh"=>"所罗门群岛"
-dm "name"=>"Dominica", "name:af"=>"Dominika", "name:ar"=>"دومينيكا", "name:be"=>"Дамініка", "name:br"=>"Republik Dominikan", "name:cs"=>"Dominika", "name:de"=>"Dominica", "name:el"=>"Δομινίκα", "name:en"=>"Dominica", "name:eo"=>"Dominiko", "name:es"=>"Dominica", "name:eu"=>"Dominika", "name:fa"=>"دومینیکا", "name:fi"=>"Dominica", "name:fr"=>"Dominique", "name:fy"=>"Dominika", "name:ga"=>"Doiminice", "name:gd"=>"Doiminicia", "name:he"=>"דומיניקה", "name:hr"=>"Dominika", "name:hu"=>"Dominikai Közösség", "name:id"=>"Dominika", "name:is"=>"Dóminíka", "name:it"=>"Dominìca", "name:ja"=>"ドミニカ", "name:lt"=>"Dominika", "name:lv"=>"Dominika", "name:mn"=>"Доминика", "name:nl"=>"Dominica", "name:pl"=>"Dominika", "name:pt"=>"Dominica", "name:ru"=>"Доминика", "name:se"=>"Dominica", "name:sk"=>"Dominika", "name:sl"=>"Dominika", "name:sv"=>"Dominica", "name:th"=>"ประเทศโดมินิกา", "name:tr"=>"Dominika", "name:uk"=>"Домініка", "name:vo"=>"Dominikeän", "name:zh"=>"多米尼克"
-ml "name"=>"Mali", "name:af"=>"Mali", "name:am"=>"ማሊ", "name:an"=>"Mali", "name:ar"=>"مالي", "name:az"=>"Mali", "name:ba"=>"Мали", "name:be"=>"Малі", "name:bg"=>"Мали", "name:bm"=>"Mali", "name:bn"=>"মালি", "name:bo"=>"མ་ལི།", "name:br"=>"Mali", "name:bs"=>"Mali", "name:ca"=>"Mali", "name:ce"=>"Мали", "name:cs"=>"Mali", "name:cv"=>"Мали", "name:cy"=>"Mali", "name:da"=>"Mali", "name:de"=>"Mali", "name:dv"=>"މާލީ", "name:ee"=>"Mali", "name:el"=>"Μάλι", "name:en"=>"Mali", "name:eo"=>"Malio", "name:es"=>"Malí", "name:et"=>"Mali", "name:eu"=>"Mali", "name:fa"=>"مالی", "name:ff"=>"Maali", "name:fi"=>"Mali", "name:fo"=>"Mali", "name:fr"=>"Mali", "name:fy"=>"Maly", "name:ga"=>"Mailí", "name:gd"=>"Màili", "name:gl"=>"Malí", "name:gv"=>"Malee", "name:ha"=>"Mali", "name:he"=>"מאלי", "name:hi"=>"माली", "name:hr"=>"Mali", "name:ht"=>"Mali", "name:hu"=>"Mali", "name:hy"=>"Մալի", "name:ia"=>"Mali", "name:id"=>"Mali", "name:ie"=>"Mali", "name:io"=>"Mali", "name:is"=>"Malí", "name:it"=>"Mali", "name:ja"=>"マリ共和国", "name:jv"=>"Mali", "name:ka"=>"მალი", "name:kg"=>"Mali", "name:kk"=>"Мали", "name:kn"=>"ಮಾಲಿ", "name:ko"=>"말리", "name:ku"=>"Malî", "name:kw"=>"Mali", "name:la"=>"Malium", "name:lb"=>"Mali", "name:li"=>"Mali", "name:ln"=>"Mali", "name:lt"=>"Malis", "name:lv"=>"Mali", "name:mi"=>"Māri", "name:mk"=>"Мали", "name:ml"=>"മാലി", "name:mn"=>"Мали", "name:mr"=>"माली", "name:ms"=>"Mali", "name:mt"=>"Mali", "name:my"=>"မာလီနိုင်ငံ", "name:nl"=>"Mali", "name:nn"=>"Mali", "name:no"=>"Mali", "name:oc"=>"Mali", "name:or"=>"ମାଲି", "name:os"=>"Мали", "name:pa"=>"ਮਾਲੀ", "name:pl"=>"Mali", "name:ps"=>"مالي", "name:pt"=>"Mali", "name:qu"=>"Mali", "name:ro"=>"Mali", "name:ru"=>"Мали", "name:rw"=>"Mali", "name:sa"=>"माली", "name:sc"=>"Mali", "name:se"=>"Mali", "name:sg"=>"Malïi", "name:sh"=>"Mali", "name:si"=>"මාලි", "name:sk"=>"Mali", "name:sl"=>"Mali", "name:sn"=>"Mali", "name:so"=>"Maali", "name:sq"=>"Mali", "name:sr"=>"Мали", "name:ss"=>"IMali", "name:st"=>"Mali", "name:su"=>"Mali", "name:sv"=>"Mali", "name:sw"=>"Mali", "name:ta"=>"மாலி", "name:tg"=>"Малӣ", "name:th"=>"ประเทศมาลี", "name:ti"=>"ማሊ", "name:tk"=>"Mali", "name:tl"=>"Mali", "name:tr"=>"Mali", "name:ts"=>"Mali", "name:tt"=>"Мали", "name:ug"=>"مالى", "name:uk"=>"Малі", "name:ur"=>"مالی", "name:uz"=>"Mali", "name:vi"=>"Mali", "name:vo"=>"Maliyän", "name:wa"=>"Mali", "name:wo"=>"Mali", "name:yi"=>"מאלי", "name:yo"=>"Málì", "name:zh"=>"马里共和国", "name:zu"=>"IMali"
-mc "name"=>"Monaco", "name:af"=>"Monaco", "name:ak"=>"Mɔnako", "name:am"=>"ሞናኮ", "name:an"=>"Múnegu", "name:ar"=>"موناكو", "name:az"=>"Monako", "name:ba"=>"Монако", "name:be"=>"Манака", "name:bg"=>"Монако", "name:bi"=>"Monaco", "name:bm"=>"Monako", "name:bn"=>"মোনাকো", "name:bo"=>"མོ་ན་ཁོ།", "name:br"=>"Monako", "name:bs"=>"Monako", "name:ca"=>"Mònaco", "name:ce"=>"Монако", "name:cs"=>"Monako", "name:cu"=>"Монако", "name:cv"=>"Монако", "name:cy"=>"Monaco", "name:da"=>"Monaco", "name:de"=>"Monaco", "name:dv"=>"މޮނާކޯ", "name:dz"=>"མོ་ན་ཀོ", "name:ee"=>"Monaco", "name:el"=>"Μονακό", "name:en"=>"Monaco", "name:eo"=>"Monako", "name:es"=>"Mónaco", "name:et"=>"Monaco", "name:eu"=>"Monako", "name:fa"=>"موناکو", "name:ff"=>"Monaakoo", "name:fi"=>"Monaco", "name:fo"=>"Monako", "name:fr"=>"Monaco", "name:fy"=>"Monako", "name:ga"=>"Monacó", "name:gd"=>"Monaco", "name:gl"=>"Mónaco", "name:gu"=>"મોનૅકો", "name:gv"=>"Monaco", "name:ha"=>"Monako", "name:he"=>"מונקו", "name:hi"=>"मोनैको", "name:hr"=>"Monako", "name:ht"=>"Monako", "name:hu"=>"Monaco", "name:hy"=>"Մոնակո", "name:ia"=>"Monaco", "name:id"=>"Monako", "name:ie"=>"Mónaco", "name:io"=>"Monako", "name:is"=>"Mónakó", "name:it"=>"Monaco", "name:ja"=>"モナコ", "name:jv"=>"Monako", "name:ka"=>"მონაკო", "name:kg"=>"Monako", "name:ki"=>"Monako", "name:kk"=>"Монако", "name:kl"=>"Monaco", "name:km"=>"ម៉ូណាកូ", "name:kn"=>"ಮೊನಾಕೊ", "name:ko"=>"모나코", "name:ks"=>"موناکو", "name:ku"=>"Monako", "name:kv"=>"Монако", "name:kw"=>"Monako", "name:la"=>"Monoecus", "name:lb"=>"Monaco", "name:lg"=>"Monako", "name:li"=>"Monaco", "name:ln"=>"Monaco", "name:lo"=>"ໂມນາໂກ", "name:lt"=>"Monakas", "name:lv"=>"Monako", "name:mg"=>"Mônakô", "name:mi"=>"Manako", "name:mk"=>"Монако", "name:ml"=>"മൊണാക്കോ", "name:mn"=>"Монако", "name:mr"=>"मोनॅको", "name:ms"=>"Monaco", "name:mt"=>"Monako", "name:my"=>"နိုင်ငံ", "name:na"=>"Monako", "name:ne"=>"मोनाको", "name:nl"=>"Monaco", "name:nn"=>"Monaco", "name:no"=>"Monaco", "name:oc"=>"Mónegue", "name:or"=>"ମୋନାକୋ", "name:os"=>"Монако", "name:pa"=>"ਮੋਨਾਕੋ", "name:pl"=>"Monako", "name:pt"=>"Mónaco", "name:qu"=>"Munaku", "name:rm"=>"Monaco", "name:rn"=>"Monako", "name:ro"=>"Monaco", "name:ru"=>"Монако", "name:rw"=>"Monako", "name:sa"=>"मोनाको", "name:se"=>"Monaco", "name:sg"=>"Monaköo", "name:sh"=>"Monako", "name:si"=>"මොනාකෝව", "name:sk"=>"Monako", "name:sl"=>"Monako", "name:so"=>"Monako", "name:sq"=>"Monako", "name:sr"=>"Монако", "name:ss"=>"IMonakho", "name:su"=>"Monako", "name:sv"=>"Monaco", "name:sw"=>"Monako", "name:ta"=>"மொனாக்கோ", "name:te"=>"మొనాకో", "name:tg"=>"Монако", "name:th"=>"ประเทศโมนาโก", "name:ti"=>"ሞናኮ", "name:tk"=>"Monako", "name:tl"=>"Monako", "name:to"=>"Manako", "name:tr"=>"Monako", "name:tt"=>"Монако", "name:tw"=>"Monako", "name:ug"=>"موناكو", "name:uk"=>"Монако", "name:ur"=>"موناکو", "name:uz"=>"Monako", "name:vi"=>"Monaco", "name:vo"=>"Monakän", "name:wo"=>"Monaako", "name:yi"=>"מאנאקא", "name:yo"=>"Mónakò", "name:zh"=>"摩纳哥", "name:zu"=>"i-Monaco"
-tt "name"=>"Trinidad and Tobago", "name:af"=>"Trinidad en Tobago", "name:ar"=>"ترينيداد وتوباغو", "name:be"=>"Трынідад і Табага", "name:br"=>"Trinidad-ha-Tobago", "name:ca"=>"Trinitat i Tobago", "name:cs"=>"Trinidad a Tobago", "name:cy"=>"Trinidad a Tobago", "name:da"=>"Trinidad og Tobago", "name:de"=>"Trinidad und Tobago", "name:en"=>"Trinidad and Tobago", "name:eo"=>"Trinidado kaj Tobago", "name:es"=>"Trinidad y Tobago", "name:et"=>"Trinidad ja Tobago", "name:fa"=>"ترینیداد و توباگو", "name:fi"=>"Trinidad ja Tobago", "name:fr"=>"Trinité-et-Tobago", "name:fy"=>"Trinidad en Tobago", "name:ga"=>"Oileán na Tríonóide agus Tobága", "name:gd"=>"Trianaid agus Tobago", "name:he"=>"טרינידד וטובגו", "name:hr"=>"Trinidad i Tobago", "name:hu"=>"Trinidad és Tobago", "name:id"=>"Trinidad dan Tobago", "name:is"=>"Trínidad og Tóbagó", "name:it"=>"Trinidad e Tobago", "name:ja"=>"トリニダード・トバゴ", "name:la"=>"Trinitas et Tabacum", "name:lt"=>"Trinidadas ir Tobagas", "name:mn"=>"Тринидад ба Тобаго", "name:nl"=>"Trinidad en Tobago", "name:pl"=>"Trynidad i Tobago", "name:pt"=>"Trindade e Tobago", "name:ru"=>"Тринидад и Тобаго", "name:se"=>"Trinidad ja Tobago", "name:sk"=>"Trinidad a Tobago", "name:sl"=>"Trinidad in Tobago", "name:sv"=>"Trinidad och Tobago", "name:ta"=>"டிரினிடாட் மற்றும் டொபாகோ", "name:th"=>"ประเทศตรินิแดดและโตเบโก", "name:tr"=>"Trinidad ve Tobago", "name:uk"=>"Тринідад і Тобаго", "name:vi"=>"Trinidad và Tobago", "name:vo"=>"Trinidadeän e Tobageäns", "name:zh"=>"特立尼达和多巴哥"
-ca "name"=>"Canada", "name:ab"=>"Канада", "name:af"=>"Kanada", "name:am"=>"ካናዳ", "name:an"=>"Canadá", "name:ar"=>"كندا", "name:as"=>"কানাডা", "name:av"=>"Канада", "name:ay"=>"Kanada", "name:az"=>"Kanada", "name:ba"=>"Канада", "name:be"=>"Канада", "name:bg"=>"Канада", "name:bi"=>"Kanada", "name:bm"=>"Kanada", "name:bn"=>"কানাডা", "name:bo"=>"ཁ་ན་ཌ།", "name:br"=>"Kanada", "name:bs"=>"Kanada", "name:ca"=>"Canadà", "name:ce"=>"Канада", "name:co"=>"Canadà", "name:cs"=>"Kanada", "name:cu"=>"Канада", "name:cv"=>"Канада", "name:cy"=>"Canada", "name:da"=>"Canada", "name:de"=>"Kanada", "name:dv"=>"ކެނެޑާ", "name:dz"=>"ཀེ་ན་ཌ་", "name:ee"=>"Canada", "name:el"=>"Καναδάς", "name:en"=>"Canada", "name:eo"=>"Kanado", "name:es"=>"Canadá", "name:et"=>"Kanada", "name:eu"=>"Kanada", "name:fa"=>"کانادا", "name:fi"=>"Kanada", "name:fo"=>"Kanada", "name:fr"=>"Canada", "name:fy"=>"Kanada", "name:ga"=>"Ceanada", "name:gd"=>"Canada", "name:gl"=>"Canadá", "name:gn"=>"Kanatã", "name:gu"=>"કેનેડા", "name:gv"=>"Yn Chanadey", "name:ha"=>"Kanada", "name:he"=>"קנדה", "name:hi"=>"कनाडा", "name:hr"=>"Kanada", "name:ht"=>"Kanada", "name:hu"=>"Kanada", "name:hy"=>"Կանադա", "name:ia"=>"Canada", "name:id"=>"Kanada", "name:ie"=>"Canada", "name:ig"=>"Kánada", "name:ik"=>"Kanada", "name:io"=>"Kanada", "name:is"=>"Kanada", "name:it"=>"Canada", "name:iu"=>"ᑲᓇᑕ", "name:ja"=>"カナダ", "name:jv"=>"Kanada", "name:ka"=>"კანადა", "name:ki"=>"Canada", "name:kk"=>"Канада", "name:kl"=>"Canada", "name:km"=>"កាណាដា", "name:kn"=>"ಕೆನಡಾ", "name:ko"=>"캐나다", "name:ku"=>"Kanada", "name:kv"=>"Канада", "name:kw"=>"Kanada", "name:ky"=>"Канада", "name:la"=>"Canada", "name:lb"=>"Kanada", "name:li"=>"Canada", "name:ln"=>"Kanadá", "name:lt"=>"Kanada", "name:lv"=>"Kanāda", "name:mg"=>"Kanada", "name:mi"=>"Kānata", "name:mk"=>"Канада", "name:ml"=>"കാനഡ", "name:mn"=>"Канад", "name:mr"=>"कॅनडा", "name:ms"=>"Kanada", "name:mt"=>"Kanada", "name:my"=>"ကနေဒါနိုင်ငံ", "name:na"=>"Kanada", "name:ne"=>"क्यानाडा", "name:nl"=>"Canada", "name:nn"=>"Canada", "name:no"=>"Canada", "name:nv"=>"Deeteel Bikéyah", "name:oc"=>"Canadà", "name:om"=>"Canada", "name:or"=>"କାନାଡ଼ା", "name:os"=>"Канадæ", "name:pa"=>"ਕੈਨੇਡਾ", "name:pl"=>"Kanada", "name:ps"=>"کاناډا", "name:pt"=>"Canadá", "name:qu"=>"Kanada", "name:rm"=>"Canada", "name:rn"=>"Kanada", "name:ro"=>"Canada", "name:ru"=>"Канада", "name:rw"=>"Kanada", "name:sa"=>"केनडा", "name:sc"=>"Canada", "name:se"=>"Kanáda", "name:sg"=>"Kanadäa", "name:sh"=>"Kanada", "name:sk"=>"Kanada", "name:sl"=>"Kanada", "name:sn"=>"Canada", "name:so"=>"Kanada", "name:sq"=>"Kanadaja", "name:sr"=>"Канада", "name:ss"=>"IKhanada", "name:su"=>"Kanada", "name:sv"=>"Kanada", "name:sw"=>"Kanada", "name:ta"=>"கனடா", "name:te"=>"కెనడా", "name:tg"=>"Канада", "name:th"=>"ประเทศแคนาดา", "name:tk"=>"Kanada", "name:tl"=>"Kanada", "name:tr"=>"Kanada", "name:ts"=>"Canada", "name:tt"=>"Канада", "name:tw"=>"Kanada", "name:ty"=>"Tanata", "name:ug"=>"كانادا", "name:uk"=>"Канада", "name:ur"=>"کینیڈا", "name:uz"=>"Kanada", "name:vi"=>"Canada", "name:vo"=>"Kanadän", "name:wa"=>"Canada", "name:wo"=>"Kanadaa", "name:yi"=>"קאנאדע", "name:yo"=>"Kánádà", "name:zh"=>"加拿大", "name:zu"=>"IKhanada"
-\.
endforeach()
ADD_CUSTOM_TARGET(doc
- COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Centos-8.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Centos-8.md
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-18.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-18.md
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-20.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-20.md
+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/Install-on-Ubuntu-22.sh ${CMAKE_CURRENT_BINARY_DIR}/appendix/Install-on-Ubuntu-22.md
COMMAND PYTHONPATH=${PROJECT_SOURCE_DIR} mkdocs build -d ${CMAKE_CURRENT_BINARY_DIR}/../site-html -f ${CMAKE_CURRENT_BINARY_DIR}/../mkdocs.yml
)
!!! note
The external module is only needed when using the legacy tokenizer.
- If you have choosen the ICU tokenizer, then you can ignore this section
+ If you have chosen the ICU tokenizer, then you can ignore this section
and follow the standard import documentation.
### Option 1: Compiling the library on the database server
of a full database.
Next install Nominatim on the target machine by following the standard installation
-instructions. Again make sure to use the same version as the source machine.
+instructions. Again, make sure to use the same version as the source machine.
-You can now copy the project directory from the source machine to the new machine.
-If necessary, edit the `.env` file to point it to the restored database.
-Finally run
+Create a project directory on your destination machine and set up the `.env`
+file to match the configuration on the source machine. Finally run
nominatim refresh --website
If you are using the legacy tokenizer you might also have to switch to the
PostgreSQL module that was compiled on your target machine. If you get errors
-that PostgreSQL cannot find or access `nominatim.so` then copy the installed
-version into the `module` directory of your project directory. The installed
-copy can usually be found under `/usr/local/lib/nominatim/module/nominatim.so`.
+that PostgreSQL cannot find or access `nominatim.so` then rerun
+
+ nominatim refresh --functions
+
+on the target machine to update the the location of the module.
### Installing the required packages
-Nginx has no built-in PHP interpreter. You need to use php-fpm as a deamon for
+Nginx has no built-in PHP interpreter. You need to use php-fpm as a daemon for
serving PHP cgi.
On Ubuntu/Debian install nginx and php-fpm with:
Restart the nginx and php-fpm services and the website should now be available
at `http://localhost/`.
+## Nominatim with other webservers
+
+Users have created instructions for other webservers:
+
+* [Caddy](https://github.com/osm-search/Nominatim/discussions/2580)
+
pg_config seems to use bad includes sometimes when multiple versions
of PostgreSQL are available in the system. Make sure you remove the
-server development libraries (`postgresql-server-dev-9.5` on Ubuntu)
+server development libraries (`postgresql-server-dev-13` on Ubuntu)
and recompile (`cmake .. && make`).
Try `chmod a+r nominatim.so; chmod a+x nominatim.so`.
-When running SELinux, make sure that the
-[context is set up correctly](../appendix/Install-on-Centos-8.md#adding-selinux-security-settings).
-
When you recently updated your operating system, updated PostgreSQL to
a new version or moved files (e.g. the build directory) you should
recreate `nominatim.so`. Try
If you only want to use the Nominatim database for reverse lookups or
if you plan to use the installation only for exports to a
-[photon](https://photon.komoot.de/) database, then you can set up a database
+[photon](https://photon.komoot.io/) database, then you can set up a database
without search indexes. Add `--reverse-only` to your setup command above.
This saves about 5% of disk space.
prerequisites. There are also step-by-step instructions available for
the following operating systems:
+ * [Ubuntu 22.04](../appendix/Install-on-Ubuntu-22.md)
* [Ubuntu 20.04](../appendix/Install-on-Ubuntu-20.md)
* [Ubuntu 18.04](../appendix/Install-on-Ubuntu-18.md)
- * [CentOS 8](../appendix/Install-on-Centos-8.md)
These OS-specific instructions can also be found in executable form
in the `vagrant/` directory.
### Software
!!! Warning
- For larger installations you **must have** PostgreSQL 11+ and Postgis 3+
+ For larger installations you **must have** PostgreSQL 11+ and PostGIS 3+
otherwise import and queries will be slow to the point of being unusable.
+ Query performance has marked improvements with PostgreSQL 13+ and PostGIS 3.2+.
For compiling:
For running Nominatim:
- * [PostgreSQL](https://www.postgresql.org) (9.5+ will work, 11+ strongly recommended)
+ * [PostgreSQL](https://www.postgresql.org) (9.6+ will work, 11+ strongly recommended)
* [PostGIS](https://postgis.net) (2.2+ will work, 3.0+ strongly recommended)
* [Python 3](https://www.python.org/) (3.6+)
* [Psycopg2](https://www.psycopg.org) (2.7+)
### Hardware
A minimum of 2GB of RAM is required or installation will fail. For a full
-planet import 64GB of RAM or more are strongly recommended. Do not report
+planet import 128GB of RAM or more are strongly recommended. Do not report
out of memory problems if you have less than 64GB RAM.
-For a full planet install you will need at least 900GB of hard disk space.
+For a full planet install you will need at least 1TB of hard disk space.
Take into account that the OSM database is growing fast.
Fast disks are essential. Using NVME disks is recommended.
work_mem = (50MB)
effective_cache_size = (24GB)
synchronous_commit = off
- checkpoint_segments = 100 # only for postgresql <= 9.4
- max_wal_size = 1GB # postgresql > 9.4
+ max_wal_size = 1GB
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9
fsync = off
full_page_writes = off
-Don't forget to reenable them after the initial import or you risk database
+Don't forget to re-enable them after the initial import or you risk database
corruption.
also check out the osm2pgsql subproject:
```
-git clone --recursive git://github.com/openstreetmap/Nominatim.git
+git clone --recursive https://github.com/openstreetmap/Nominatim.git
```
The development version does not include the country grid. Download it separately:
sudo make install
```
+!!! warning
+ The default installation no longer compiles the PostgreSQL module that
+ is needed for the legacy tokenizer from older Nominatim versions. If you
+ are upgrading an older database or want to run the
+ [legacy tokenizer](../customize/Tokenizers.md#legacy-tokenizer) for
+ some other reason, you need to enable the PostgreSQL module via
+ cmake: `cmake -DBUILD_MODULE=on ../Nominatim`. To compile the module
+ you need to have the server development headers for PostgreSQL installed.
+ On Ubuntu/Debian run: `sudo apt install postgresql-server-dev-<postgresql version>`
+
+
Nominatim installs itself into `/usr/local` per default. To choose a different
installation directory add `-DCMAKE_INSTALL_PREFIX=<install root>` to the
cmake command. Make sure that the `bin` directory is available in your path
for example, when adding an additional country via `nominatim add-data`.
+## Forcing recomputation of places and areas
+
+Command: `nominatim refresh --data-object [NWR]<id> --data-area [NWR]<id>`
+
+When running replication updates, Nominatim tries to recompute the search
+and address information for all places that are affected by a change. But it
+needs to restrict the total number of changes to make sure it can keep up
+with the minutely updates. Therefore it will refrain from propagating changes
+that affect a lot of objects.
+
+The administrator may force an update of places in the database.
+`nominatim refresh --data-object` invalidates a single OSM object.
+`nominatim refresh --data-area` invalidates an OSM object and all dependent
+objects. That are usually the places that inside its area or around the
+center of the object. Both commands expect the OSM object as an argument
+of the form OSM type + OSM id. The type must be `N` (node), `W` (way) or
+`R` (relation).
+
+After invalidating the object, indexing must be run again. If continuous
+update are running in the background, the objects will be recomputed together
+with the next round of updates. Otherwise you need to run `nominatim index`
+to finish the recomputation.
+
+
## Removing large deleted objects
Nominatim refuses to delete very large areas because often these deletions are
If you are migrating from a version <3.6, then you still have to follow
the manual migration steps up to 3.6.
+## 4.0.0 -> 4.1.0
+
+### ICU tokenizer is the new default
+
+Nominatim now installs the [ICU tokenizer](../customize/Tokenizers.md#icu-tokenizer)
+by default. This only has an effect on newly installed databases. When
+updating older databases, it keeps its installed tokenizer. If you still
+run with the legacy tokenizer, make sure to compile Nominatim with the
+PostgreSQL module, see [Installation](Installation.md#building-nominatim).
+
+### geocodejson output changed
+
+The `type` field of the geocodejson output has changed. It now contains
+the address class of the object instead of the value of the OSM tag. If
+your client has used the `type` field, switch them to read `osm_value`
+instead.
+
## 3.7.0 -> 4.0.0
### NOMINATIM_PHRASE_CONFIG removed
[nominatim-ui's Github release page](https://github.com/osm-search/nominatim-ui/releases)
and unpack it. You can use `nominatim-ui-x.x.x.tar.gz` or `nominatim-ui-x.x.x.zip`.
-Next you need to adapt the UI yo your installation. Custom settings need to be
+Next you need to adapt the UI to your installation. Custom settings need to be
put into `dist/theme/config.theme.js`. At a minimum you need to
set `Nominatim_API_Endpoint` to point to your Nominatim installation:
cd nominatim-ui
- echo "Nominatim_Config.Nominatim_API_Endpoint='https:\\myserver.org\nominatim';" > dist/theme/config.theme.js
+ echo "Nominatim_Config.Nominatim_API_Endpoint='https://myserver.org/nominatim/';" > dist/theme/config.theme.js
For the full set of available settings, have a look at `dist/config.defaults.js`.
# If no endpoint is given, then use search.
RewriteRule ^(/|$) "search.php"
- # If format-html is explicity requested, forward to the UI.
+ # If format-html is explicitly requested, forward to the UI.
RewriteCond %{QUERY_STRING} "format=html"
- RewriteRule ^([^/]+).php ui/$1.html [R,END]
- # Same but .php suffix is missing.
- RewriteCond %{QUERY_STRING} "format=html"
- RewriteRule ^([^/]+) ui/$1.html [R,END]
+ RewriteRule ^([^/]+)(.php)? ui/$1.html [R,END]
# If no format parameter is there then forward anything
# but /reverse and /lookup to the UI.
RewriteCond %{QUERY_STRING} "!format="
RewriteCond %{REQUEST_URI} "!/lookup"
RewriteCond %{REQUEST_URI} "!/reverse"
- RewriteRule ^([^/]+).php ui/$1.html [R,END]
- # Same but .php suffix is missing.
- RewriteCond %{QUERY_STRING} "!format="
- RewriteCond %{REQUEST_URI} "!/lookup"
- RewriteCond %{REQUEST_URI} "!/reverse"
- RewriteRule ^([^/]+) ui/$1.html [R,END]
+ RewriteRule ^([^/]+)(.php)? ui/$1.html [R,END]
</Directory>
```
new updates from the server as they are published.
You can run this command as a simple systemd service. Create a service
-description like that in `/etc/systemd/system/nominatim-update.service`:
+description like that in `/etc/systemd/system/nominatim-updates.service`:
```
[Unit]
while true; do
nominatim replication --once
- if [ -f "/srv/nominatim/schedule-mainenance" ]; then
- rm /srv/nominatim/schedule-mainenance
+ if [ -f "/srv/nominatim/schedule-maintenance" ]; then
+ rm /srv/nominatim/schedule-maintenance
nominatim refresh --postcodes
fi
done
```
-A cron job then creates the file `/srv/nominatim/need-mainenance` once per night.
+A cron job then creates the file `/srv/nominatim/schedule-maintenance` once per night.
+
+##### One-time mode with systemd
+
+You can run the one-time mode with a systemd timer & service.
+
+Create a timer description like `/etc/systemd/system/nominatim-updates.timer`:
+
+```
+[Unit]
+Description=Timer to start updates of Nominatim
+
+[Timer]
+OnActiveSec=2
+OnUnitActiveSec=1min
+Unit=nominatim-updates.service
+
+[Install]
+WantedBy=multi-user.target
+```
+
+And then a similar service definition: `/etc/systemd/system/nominatim-updates.service`:
+
+```
+[Unit]
+Description=Single updates of Nominatim
+
+[Service]
+WorkingDirectory=/srv/nominatim
+ExecStart=nominatim replication --once
+StandardOutput=append:/var/log/nominatim-updates.log
+StandardError=append:/var/log/nominatim-updates.error.log
+User=nominatim
+Group=nominatim
+Type=simple
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Replace the `WorkingDirectory` with your project directory. Also adapt user and
+group names as required. `OnUnitActiveSec` defines how often the individual
+update command is run.
+
+Now activate the service and start the updates:
+
+```
+sudo systemctl daemon-reload
+sudo systemctl enable nominatim-updates.timer
+sudo systemctl start nominatim-updates.timer
+```
+
+You can stop future data updates, while allowing any current, in-progress
+update steps to finish, by running `sudo systemctl stop
+nominatim-updates.timer` and waiting until `nominatim-updates.service` isn't
+running (`sudo systemctl is-active nominatim-updates.service`). Current output
+from the update can be seen like above (`systemctl status
+nominatim-updates.service`).
#### Catch-up mode
a replication source with an update frequency that is an order of magnitude
lower. For example, if you want to update once a day, use an hourly updated
source. This makes sure that you don't miss an entire day of updates when
- the source is unexpectely late to publish its update.
+ the source is unexpectedly late to publish its update.
If you want to use the source with the same update frequency (e.g. a daily
updated source with daily updates), use the
##### XML
-[https://nominatim.openstreetmap.org/lookup?osm_ids=R146656,W104393803,N240109189](https://nominatim.openstreetmap.org/lookup?osm_ids=R146656,W104393803,N240109189)
+[https://nominatim.openstreetmap.org/lookup?osm_ids=R146656,W104393803,N240109189](https://nominatim.openstreetmap.org/lookup?osm_ids=R146656,W50637691,N240109189)
```xml
- <lookupresults timestamp="Mon, 29 Jun 15 18:01:33 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright" querystring="R146656,W104393803,N240109189" polygon="false">
- <place place_id="127761056" osm_type="relation" osm_id="146656" place_rank="16" lat="53.4791466" lon="-2.2447445" display_name="Manchester, Greater Manchester, North West England, England, United Kingdom" class="boundary" type="administrative" importance="0.704893333438333">
+ <lookupresults timestamp="Mon, 28 Mar 22 14:38:54 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="R146656,W50637691,N240109189" more_url="">
+ <place place_id="282236157" osm_type="relation" osm_id="146656" place_rank="16" address_rank="16" boundingbox="53.3401044,53.5445923,-2.3199185,-2.1468288" lat="53.44246175" lon="-2.2324547359718547" display_name="Manchester, Greater Manchester, North West England, England, United Kingdom" class="boundary" type="administrative" importance="0.35">
<city>Manchester</city>
<county>Greater Manchester</county>
<state_district>North West England</state_district>
<country>United Kingdom</country>
<country_code>gb</country_code>
</place>
- <place place_id="77769745" osm_type="way" osm_id="104393803" place_rank="30" lat="52.5162024" lon="13.3777343363579" display_name="Brandenburg Gate, 1, Pariser Platz, Mitte, Berlin, 10117, Germany" class="tourism" type="attraction" importance="0.443472858361592">
- <attraction>Brandenburg Gate</attraction>
- <house_number>1</house_number>
- <pedestrian>Pariser Platz</pedestrian>
- <suburb>Mitte</suburb>
- <city_district>Mitte</city_district>
- <city>Berlin</city>
- <state>Berlin</state>
- <postcode>10117</postcode>
+ <place place_id="115462561" osm_type="way" osm_id="50637691" place_rank="30" address_rank="30" boundingbox="52.3994612,52.3996426,13.0479574,13.0481754" lat="52.399550700000006" lon="13.048066846939687" display_name="Brandenburger Tor, Brandenburger Straße, Historische Innenstadt, Innenstadt, Potsdam, Brandenburg, 14467, Germany" class="tourism" type="attraction" importance="0.29402874005524">
+ <tourism>Brandenburger Tor</tourism>
+ <road>Brandenburger Straße</road>
+ <suburb>Historische Innenstadt</suburb>
+ <city>Potsdam</city>
+ <state>Brandenburg</state>
+ <postcode>14467</postcode>
<country>Germany</country>
<country_code>de</country_code>
</place>
- <place place_id="2570600569" osm_type="node" osm_id="240109189" place_rank="15" lat="52.5170365" lon="13.3888599" display_name="Berlin, Germany" class="place" type="city" importance="0.822149797630868">
+ <place place_id="567505" osm_type="node" osm_id="240109189" place_rank="15" address_rank="16" boundingbox="52.3586925,52.6786925,13.2396024,13.5596024" lat="52.5186925" lon="13.3996024" display_name="Berlin, 10178, Germany" class="place" type="city" importance="0.78753902824914">
<city>Berlin</city>
<state>Berlin</state>
+ <postcode>10178</postcode>
<country>Germany</country>
<country_code>de</country_code>
</place>
##### JSON with extratags
-[https://nominatim.openstreetmap.org/lookup?osm_ids=W50637691&format=json](https://nominatim.openstreetmap.org/lookup?osm_ids=W50637691&format=json)
+[https://nominatim.openstreetmap.org/lookup?osm_ids=W50637691&format=json&extratags=1](https://nominatim.openstreetmap.org/lookup?osm_ids=W50637691&format=json&extratags=1)
```json
[
- {
- "place_id": "84271358",
- "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
- "osm_type": "way",
- "osm_id": "50637691",
- "lat": "52.39955055",
- "lon": "13.04806574678",
- "display_name": "Brandenburger Tor, Brandenburger Straße, Nördliche Innenstadt, Innenstadt, Potsdam, Brandenburg, 14467, Germany",
- "class": "historic",
- "type": "city_gate",
- "importance": "0.221233780277011",
- "address": {
- "address29": "Brandenburger Tor",
- "pedestrian": "Brandenburger Straße",
- "suburb": "Nördliche Innenstadt",
- "city": "Potsdam",
- "state": "Brandenburg",
- "postcode": "14467",
- "country": "Germany",
- "country_code": "de"
- },
- "extratags": {
- "image": "http://commons.wikimedia.org/wiki/File:Potsdam_brandenburger_tor.jpg",
- "wikidata": "Q695045",
- "wikipedia": "de:Brandenburger Tor (Potsdam)",
- "wheelchair": "yes",
- "description": "Kleines Brandenburger Tor in Potsdam"
- }
- }
+ {
+ "place_id": 115462561,
+ "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
+ "osm_type": "way",
+ "osm_id": 50637691,
+ "boundingbox": [
+ "52.3994612",
+ "52.3996426",
+ "13.0479574",
+ "13.0481754"
+ ],
+ "lat": "52.399550700000006",
+ "lon": "13.048066846939687",
+ "display_name": "Brandenburger Tor, Brandenburger Straße, Historische Innenstadt, Innenstadt, Potsdam, Brandenburg, 14467, Germany",
+ "class": "tourism",
+ "type": "attraction",
+ "importance": 0.2940287400552381,
+ "address": {
+ "tourism": "Brandenburger Tor",
+ "road": "Brandenburger Straße",
+ "suburb": "Historische Innenstadt",
+ "city": "Potsdam",
+ "state": "Brandenburg",
+ "postcode": "14467",
+ "country": "Germany",
+ "country_code": "de"
+ },
+ "extratags": {
+ "image": "http://commons.wikimedia.org/wiki/File:Potsdam_brandenburger_tor.jpg",
+ "heritage": "4",
+ "wikidata": "Q695045",
+ "architect": "Carl von Gontard;Georg Christian Unger",
+ "wikipedia": "de:Brandenburger Tor (Potsdam)",
+ "wheelchair": "yes",
+ "description": "Kleines Brandenburger Tor in Potsdam",
+ "heritage:website": "http://www.bldam-brandenburg.de/images/stories/PDF/DML%202012/04-p-internet-13.pdf",
+ "heritage:operator": "bldam",
+ "architect:wikidata": "Q68768;Q95223",
+ "year_of_construction": "1771"
+ }
+ }
]
```
"city": "London",
"state_district": "Greater London",
"state": "England",
+ "ISO3166-2-lvl4": "GB-ENG",
"postcode": "SW1A 2DU",
"country": "United Kingdom",
"country_code": "gb"
The following feature attributes are implemented:
* `osm_type`, `osm_id` - reference to the OSM object (unofficial extension, [see notes](#osm-reference))
- * `type` - value of the main tag of the object (e.g. residential, restaurant, ...)
+ * `type` - the 'address level' of the object ('house', 'street', `district`, `city`,
+ `county`, `state`, `country`, `locality`)
+ * `osm_key`- key of the main tag of the OSM object (e.g. boundary, highway, amenity)
+ * `osm_value` - value of the main tag of the OSM object (e.g. residential, restaurant)
* `label` - full comma-separated address
* `name` - localised name of the place
* `housenumber`, `street`, `locality`, `district`, `postcode`, `city`,
</result>
<addressparts>
<state>Bavaria</state>
+ <ISO3166-2-lvl4>DE-BY</ISO3166-2-lvl4>
<country>Germany</country>
<country_code>de</country_code>
</addressparts>
<city>London</city>
<state_district>Greater London</state_district>
<state>England</state>
+ <ISO3166-2-lvl4>GB-ENG</ISO3166-2-lvl4>
<postcode>SW1A 2DU</postcode>
<country>United Kingdom</country>
<country_code>gb</country_code>
removed and reimported while updating the database with fresh OSM data.
It is thus not useful to treat it as permanent for later use.
-The combination `osm_type`+`osm_id` is slighly better but remember in
+The combination `osm_type`+`osm_id` is slightly better but remember in
OpenStreetMap mappers can delete, split, recreate places (and those
get a new `osm_id`), there is no link between those old and new ids.
Places can also change their meaning without changing their `osm_id`,
* continent
* country, country_code
- * region, state, state_district, county
+ * region, state, state_district, county, ISO3166-2-lvl<admin_level>
* municipality, city, town, village
* city_district, district, borough, suburb, subdivision
* hamlet, croft, isolated_dwelling
* neighbourhood, allotments, quarter
- * city_block, residental, farm, farmyard, industrial, commercial, retail
+ * city_block, residential, farm, farmyard, industrial, commercial, retail
* road
* house_number, house_name
* emergency, historic, military, natural, landuse, place, railway,
https://nominatim.openstreetmap.org/reverse?lat=<value>&lon=<value>&<params>
```
-where `lat` and `lon` are latitude and longitutde of a coordinate in WGS84
+where `lat` and `lon` are latitude and longitude of a coordinate in WGS84
projection. The API returns exactly one result or an error when the coordinate
is in an area with no OSM data coverage.
-Additional paramters are accepted as listed below.
+Additional parameters are accepted as listed below.
!!! warning "Deprecation warning"
The reverse API used to allow address lookup for a single OSM object by
* `email=<valid email address>`
-If you are making large numbers of request please include an appropriate email
+If you are making a large number of requests, please include an appropriate email
address to identify your requests. See Nominatim's [Usage Policy](https://operations.osmfoundation.org/policies/nominatim/) for more details.
See [Place Output Formats](Output.md) for details on each format. (Default: jsonv2)
+!!! note
+ The Nominatim service at
+ [https://nominatim.openstreetmap.org](https://nominatim.openstreetmap.org)
+ has a different default behaviour for historical reasons. When the
+ `format` parameter is omitted, the request will be forwarded to the Web UI.
+
* `json_callback=<string>`
Wrap JSON output in a callback function ([JSONP](https://en.wikipedia.org/wiki/JSONP)) i.e. `<string>(<json>)`.
--- /dev/null
+# Customizing Per-Country Data
+
+Whenever an OSM is imported into Nominatim, the object is first assigned
+a country. Nominatim can use this information to adapt various aspects of
+the address computation to the local customs of the country. This section
+explains how country assignment works and the principal per-country
+localizations.
+
+## Country assignment
+
+Countries are assigned on the basis of country data from the OpenStreetMap
+input data itself. Countries are expected to be tagged according to the
+[administrative boundary schema](https://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative):
+a OSM relation with `boundary=administrative` and `admin_level=2`. Nominatim
+uses the country code to distinguish the countries.
+
+If there is no country data available for a point, then Nominatim uses the
+fallback data imported from `data/country_osm_grid.sql.gz`. This was computed
+from OSM data as well but is guaranteed to cover all countries.
+
+Some OSM objects may also be located outside any country, for example a buoy
+in the middle of the ocean. These object do not get any country assigned and
+get a default treatment when it comes to localized handling of data.
+
+## Per-country settings
+
+### Global country settings
+
+The main place to configure settings per country is the file
+`settings/country_settings.yaml`. This file has one section per country that
+is recognised by Nominatim. Each section is tagged with the country code
+(in lower case) and contains the different localization information. Only
+countries which are listed in this file are taken into account for computations.
+
+For example, the section for Andorra looks like this:
+
+```
+ partition: 35
+ languages: ca
+ names: !include country-names/ad.yaml
+ postcode:
+ pattern: "(ddd)"
+ output: AD\1
+```
+
+The individual settings are described below.
+
+#### `partition`
+
+Nominatim internally splits the data into multiple tables to improve
+performance. The partition number tells Nominatim into which table to put
+the country. This is purely internal management and has no effect on the
+output data.
+
+The default is to have one partition per country.
+
+#### `languages`
+
+A comma-separated list of ISO-639 language codes of default languages in the
+country. These are the languages used in name tags without a language suffix.
+Note that this is not necessarily the same as the list of official languages
+in the country. There may be officially recognised languages in a country
+which are only ever used in name tags with the appropriate language suffixes.
+Conversely, a non-official language may appear a lot in the name tags, for
+example when used as an unofficial Lingua Franca.
+
+List the languages in order of frequency of appearance with the most frequently
+used language first. It is not recommended to add languages when there are only
+very few occurrences.
+
+If only one language is listed, then Nominatim will 'auto-complete' the
+language of names without an explicit language-suffix.
+
+#### `names`
+
+List of names of the country and its translations. These names are used as
+a baseline. It is always possible to search countries by the given names, no
+matter what other names are in the OSM data. They are also used as a fallback
+when a needed translation is not available.
+
+!!! Note
+ The list of names per country is currently fairly large because Nominatim
+ supports translations in many languages per default. That is why the
+ name lists have been separated out into extra files. You can find the
+ name lists in the file `settings/country-names/<country code>.yaml`.
+ The names section in the main country settings file only refers to these
+ files via the special `!include` directive.
+
+#### `postcode`
+
+Describes the format of the postcode that is in use in the country.
+
+When a country has no official postcodes, set this to no. Example:
+
+```
+ae:
+ postcode: no
+```
+
+When a country has a postcode, you need to state the postcode pattern and
+the default output format. Example:
+
+```
+bm:
+ postcode:
+ pattern: "(ll)[ -]?(dd)"
+ output: \1 \2
+```
+
+The **pattern** is a regular expression that describes the possible formats
+accepted as a postcode. The pattern follows the standard syntax for
+[regular expressions in Python](https://docs.python.org/3/library/re.html#regular-expression-syntax)
+with two extra shortcuts: `d` is a shortcut for a single digit([0-9])
+and `l` for a single ASCII letter ([A-Z]).
+
+Use match groups to indicate groups in the postcode that may optionally be
+separated with a space or a hyphen.
+
+For example, the postcode for Bermuda above always consists of two letters
+and two digits. They may optionally be separated by a space or hyphen. That
+means that Nominatim will consider `AB56`, `AB 56` and `AB-56` spelling variants
+for one and the same postcode.
+
+Never add the country code in front of the postcode pattern. Nominatim will
+automatically accept variants with a country code prefix for all postcodes.
+
+The **output** field is an optional field that describes what the canonical
+spelling of the postcode should be. The format is the
+[regular expression expand syntax](https://docs.python.org/3/library/re.html#re.Match.expand) referring back to the bracket groups in the pattern.
+
+Most simple postcodes only have one spelling variant. In that case, the
+**output** can be omitted. The postcode will simply be used as is.
+
+In the Bermuda example above, the canonical spelling would be to have a space
+between letters and digits.
+
+!!! Warning
+ When your postcode pattern covers multiple variants of the postcode, then
+ you must explicitly state the canonical output or Nominatim will not
+ handle the variations correctly.
+
+### Other country-specific configuration
+
+There are some other configuration files where you can set localized settings
+according to the assigned country. These are:
+
+ * [Place ranking configuration](Ranking.md)
+
+Please see the linked documentation sections for more information.
in the [Import section](../admin/Import.md#filtering-imported-data). These
standard styles may be referenced by their name.
-You can also create your own custom syle. Put the style file into your
+You can also create your own custom style. Put the style file into your
project directory and then set `NOMINATIM_IMPORT_STYLE` to the name of the file.
It is always recommended to start with one of the standard styles and customize
those. You find the standard styles under the name `import-<stylename>.style`
| **Description:** | Enable searching for Tiger house number data |
| **Format:** | boolean |
| **Default:** | no |
-| **After Changes:** | run `nominatim --refresh --functions` |
+| **After Changes:** | run `nominatim refresh --functions` |
When this setting is enabled, search and reverse queries also take data
from [Tiger house number data](Tiger.md) into account.
| **Description:** | Enable searching in external house number tables |
| **Format:** | boolean |
| **Default:** | no |
-| **After Changes:** | run `nominatim --refresh --functions` |
+| **After Changes:** | run `nominatim refresh --functions` |
| **Comment:** | Do not use. |
When this setting is enabled, search queries also take data from external
The legacy tokenizer implements the analysis algorithms of older Nominatim
versions. It uses a special Postgresql module to normalize names and queries.
-This tokenizer is currently the default.
+This tokenizer is automatically installed and used when upgrading an older
+database. It should not be used for new installations anymore.
+
+### Compiling the PostgreSQL module
+
+The tokeinzer needs a special C module for PostgreSQL which is not compiled
+by default. If you need the legacy tokenizer, compile Nominatim as follows:
+
+```
+mkdir build
+cd build
+cmake -DBUILD_MODULE=on
+make
+```
+
+### Enabling the tokenizer
To enable the tokenizer add the following line to your project configuration:
The ICU tokenizer uses the [ICU library](http://site.icu-project.org/) to
normalize names and queries. It also offers configurable decomposition and
abbreviation handling.
+This tokenizer is currently the default.
To enable the tokenizer add the following line to your project configuration:
- words:
- road -> rd
- bridge -> bdge,br,brdg,bri,brg
+ mutations:
+ - pattern: 'ä'
+ replacements: ['ä', 'ae']
```
The configuration file contains four sections:
rendering:
heading_level: 6
+##### clean-housenumbers
+
+::: nominatim.tokenizer.sanitizers.clean_housenumbers
+ selection:
+ members: False
+ rendering:
+ heading_level: 6
+
+##### clean-postcodes
+
+::: nominatim.tokenizer.sanitizers.clean_postcodes
+ selection:
+ members: False
+ rendering:
+ heading_level: 6
#### Token Analysis
The token-analysis section contains the list of configured analyzers. Each
analyzer must have an `id` parameter that uniquely identifies the analyzer.
The only exception is the default analyzer that is used when no special
-analyzer was selected.
+analyzer was selected. There are analysers with special ids:
+
+ * '@housenumber'. If an analyzer with that name is present, it is used
+ for normalization of house numbers.
+ * '@potcode'. If an analyzer with that name is present, it is used
+ for normalization of postcodes.
Different analyzer implementations may exist. To select the implementation,
-the `analyzer` parameter must be set. Currently there is only one implementation
-`generic` which is described in the following.
+the `analyzer` parameter must be set. The different implementations are
+described in the following.
##### Generic token analyzer
-The generic analyzer is able to create variants from a list of given
-abbreviation and decomposition replacements. It takes one optional parameter
-`variants` which lists the replacements to apply. If the section is
-omitted, then the generic analyzer becomes a simple analyzer that only
-applies the transliteration.
+The generic analyzer `generic` is able to create variants from a list of given
+abbreviation and decomposition replacements and introduce spelling variations.
+
+###### Variants
-The variants section defines lists of replacements which create alternative
+The optional 'variants' section defines lists of replacements which create alternative
spellings of a name. To create the variants, a name is scanned from left to
right and the longest matching replacement is applied until the end of the
string is reached.
means that for a word like `hauptstrasse` four variants are created:
`hauptstrasse`, `haupt strasse`, `hauptstr` and `haupt str`.
+###### Mutations
+
+The 'mutation' section in the configuration describes an additional set of
+replacements to be applied after the variants have been computed.
+
+Each mutation is described by two parameters: `pattern` and `replacements`.
+The pattern must contain a single regular expression to search for in the
+variant name. The regular expressions need to follow the syntax for
+[Python regular expressions](file:///usr/share/doc/python3-doc/html/library/re.html#regular-expression-syntax).
+Capturing groups are not permitted.
+`replacements` must contain a list of strings that the pattern
+should be replaced with. Each occurrence of the pattern is replaced with
+all given replacements. Be mindful of combinatorial explosion of variants.
+
+###### Modes
+
+The generic analyser supports a special mode `variant-only`. When configured
+then it consumes the input token and emits only variants (if any exist). Enable
+the mode by adding:
+
+```
+ mode: variant-only
+```
+
+to the analyser configuration.
+
+##### Housenumber token analyzer
+
+The analyzer `housenumbers` is purpose-made to analyze house numbers. It
+creates variants with optional spaces between numbers and letters. Thus,
+house numbers of the form '3 a', '3A', '3-A' etc. are all considered equivalent.
+
+The analyzer cannot be customized.
+
+##### Postcode token analyzer
+
+The analyzer `postcodes` is pupose-made to analyze postcodes. It supports
+a 'lookup' varaint of the token, which produces variants with optional
+spaces. Use together with the clean-postcodes sanitizer.
+
+The analyzer cannot be customized.
+
### Reconfiguration
Changing the configuration after the import is currently not possible, although
Each country is assigned a partition number in the country_name table (see
below) and the data is then split between a set of tables, one for each
partition. Note that Nominatim still manually manages partitioned tables.
-Native support for partitions in PostgreSQL only became useable with version 13.
+Native support for partitions in PostgreSQL only became usable with version 13.
It will be a little while before Nominatim drops support for older versions.
![address tables](address-tables.svg)
default languages and saves the assignment of countries to partitions.
* `country_osm_grid` provides a fallback for country geometries
-## Auxilary data tables
+## Auxiliary data tables
-Finally there are some table for auxillary data:
+Finally there are some table for auxiliary data:
* `location_property_tiger` - saves housenumber from the Tiger import. Its
layout is similar to that of `location_propoerty_osmline`.
# Setting up Nominatim for Development
-This chapter gives an overview how to set up Nominatim for developement
+This chapter gives an overview how to set up Nominatim for development
and how to run tests.
!!! Important
* [behave test framework](https://behave.readthedocs.io) >= 1.2.6
* [phpunit](https://phpunit.de) (9.5 is known to work)
* [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer)
-* [Pylint](https://pylint.org/) (2.6.0 is used for the CI)
+* [Pylint](https://pylint.org/) (CI always runs the latest version from pip)
+* [mypy](http://mypy-lang.org/) (plus typing information for external libs)
+* [Python Typing Extensions](https://github.com/python/typing_extensions) (for Python < 3.9)
* [pytest](https://pytest.org)
The documentation is built with mkdocs:
* [mkdocs](https://www.mkdocs.org/) >= 1.1.2
-* [mkdocstrings](https://mkdocstrings.github.io/)
+* [mkdocstrings](https://mkdocstrings.github.io/) >= 0.16
+* [mkdocstrings-python-legacy](https://mkdocstrings.github.io/python-legacy/)
### Installing prerequisites on Ubuntu/Debian
```sh
sudo apt install php-cgi phpunit php-codesniffer \
- python3-pip python3-setuptools python3-dev pylint
+ python3-pip python3-setuptools python3-dev
-pip3 install --user behave mkdocs mkdocstrings pytest
+pip3 install --user behave mkdocs mkdocstrings pytest pylint \
+ mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil
```
The `mkdocs` executable will be located in `.local/bin`. You may have to add
--- /dev/null
+# Writing custom sanitizer and token analysis modules for the ICU tokenizer
+
+The [ICU tokenizer](../customize/Tokenizers.md#icu-tokenizer) provides a
+highly customizable method to pre-process and normalize the name information
+of the input data before it is added to the search index. It comes with a
+selection of sanitizers and token analyzers which you can use to adapt your
+installation to your needs. If the provided modules are not enough, you can
+also provide your own implementations. This section describes the API
+of sanitizers and token analysis.
+
+!!! warning
+ This API is currently in early alpha status. While this API is meant to
+ be a public API on which other sanitizers and token analyzers may be
+ implemented, it is not guaranteed to be stable at the moment.
+
+
+## Using non-standard sanitizers and token analyzers
+
+Sanitizer names (in the `step` property) and token analysis names (in the
+`analyzer`) may refer to externally supplied modules. There are two ways
+to include external modules: through a library or from the project directory.
+
+To include a module from a library, use the absolute import path as name and
+make sure the library can be found in your PYTHONPATH.
+
+To use a custom module without creating a library, you can put the module
+somewhere in your project directory and then use the relative path to the
+file. Include the whole name of the file including the `.py` ending.
+
+## Custom sanitizer modules
+
+A sanitizer module must export a single factory function `create` with the
+following signature:
+
+``` python
+def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]
+```
+
+The function receives the custom configuration for the sanitizer and must
+return a callable (function or class) that transforms the name and address
+terms of a place. When a place is processed, then a `ProcessInfo` object
+is created from the information that was queried from the database. This
+object is sequentially handed to each configured sanitizer, so that each
+sanitizer receives the result of processing from the previous sanitizer.
+After the last sanitizer is finished, the resulting name and address lists
+are forwarded to the token analysis module.
+
+Sanitizer functions are instantiated once and then called for each place
+that is imported or updated. They don't need to be thread-safe.
+If multi-threading is used, each thread creates their own instance of
+the function.
+
+### Sanitizer configuration
+
+::: nominatim.tokenizer.sanitizers.config.SanitizerConfig
+ rendering:
+ show_source: no
+ heading_level: 6
+
+### The main filter function of the sanitizer
+
+The filter function receives a single object of type `ProcessInfo`
+which has with three members:
+
+ * `place`: read-only information about the place being processed.
+ See PlaceInfo below.
+ * `names`: The current list of names for the place. Each name is a
+ PlaceName object.
+ * `address`: The current list of address names for the place. Each name
+ is a PlaceName object.
+
+While the `place` member is provided for information only, the `names` and
+`address` lists are meant to be manipulated by the sanitizer. It may add and
+remove entries, change information within a single entry (for example by
+adding extra attributes) or completely replace the list with a different one.
+
+#### PlaceInfo - information about the place
+
+::: nominatim.data.place_info.PlaceInfo
+ rendering:
+ show_source: no
+ heading_level: 6
+
+
+#### PlaceName - extended naming information
+
+::: nominatim.data.place_name.PlaceName
+ rendering:
+ show_source: no
+ heading_level: 6
+
+
+### Example: Filter for US street prefixes
+
+The following sanitizer removes the directional prefixes from street names
+in the US:
+
+``` python
+import re
+
+def _filter_function(obj):
+ if obj.place.country_code == 'us' \
+ and obj.place.rank_address >= 26 and obj.place.rank_address <= 27:
+ for name in obj.names:
+ name.name = re.sub(r'^(north|south|west|east) ',
+ '',
+ name.name,
+ flags=re.IGNORECASE)
+
+def create(config):
+ return _filter_function
+```
+
+This is the most simple form of a sanitizer module. If defines a single
+filter function and implements the required `create()` function by returning
+the filter.
+
+The filter function first checks if the object is interesting for the
+sanitizer. Namely it checks if the place is in the US (through `country_code`)
+and it the place is a street (a `rank_address` of 26 or 27). If the
+conditions are met, then it goes through all available names and
+removes any leading directional prefix using a simple regular expression.
+
+Save the source code in a file in your project directory, for example as
+`us_streets.py`. Then you can use the sanitizer in your `icu_tokenizer.yaml`:
+
+``` yaml
+...
+sanitizers:
+ - step: us_streets.py
+...
+```
+
+!!! warning
+ This example is just a simplified show case on how to create a sanitizer.
+ It is not really read for real-world use: while the sanitizer would
+ correcly transform `West 5th Street` into `5th Street`. it would also
+ shorten a simple `North Street` to `Street`.
+
+For more sanitizer examples, have a look at the sanitizers provided by Nominatim.
+They can be found in the directory
+[`nominatim/tokenizer/sanitizers`](https://github.com/osm-search/Nominatim/tree/master/nominatim/tokenizer/sanitizers).
+
+
+## Custom token analysis module
+
+::: nominatim.tokenizer.token_analysis.base.AnalysisModule
+ rendering:
+ show_source: no
+ heading_level: 6
+
+
+::: nominatim.tokenizer.token_analysis.base.Analyzer
+ rendering:
+ show_source: no
+ heading_level: 6
+
+### Example: Creating acronym variants for long names
+
+The following example of a token analysis module creates acronyms from
+very long names and adds them as a variant:
+
+``` python
+class AcronymMaker:
+ """ This class is the actual analyzer.
+ """
+ def __init__(self, norm, trans):
+ self.norm = norm
+ self.trans = trans
+
+
+ def get_canonical_id(self, name):
+ # In simple cases, the normalized name can be used as a canonical id.
+ return self.norm.transliterate(name.name).strip()
+
+
+ def compute_variants(self, name):
+ # The transliterated form of the name always makes up a variant.
+ variants = [self.trans.transliterate(name)]
+
+ # Only create acronyms from very long words.
+ if len(name) > 20:
+ # Take the first letter from each word to form the acronym.
+ acronym = ''.join(w[0] for w in name.split())
+ # If that leds to an acronym with at least three letters,
+ # add the resulting acronym as a variant.
+ if len(acronym) > 2:
+ # Never forget to transliterate the variants before returning them.
+ variants.append(self.trans.transliterate(acronym))
+
+ return variants
+
+# The following two functions are the module interface.
+
+def configure(rules, normalizer, transliterator):
+ # There is no configuration to parse and no data to set up.
+ # Just return an empty configuration.
+ return None
+
+
+def create(normalizer, transliterator, config):
+ # Return a new instance of our token analysis class above.
+ return AcronymMaker(normalizer, transliterator)
+```
+
+Given the name `Trans-Siberian Railway`, the code above would return the full
+name `Trans-Siberian Railway` and the acronym `TSR` as variant, so that
+searching would work for both.
+
+## Sanitizers vs. Token analysis - what to use for variants?
+
+It is not always clear when to implement variations in the sanitizer and
+when to write a token analysis module. Just take the acronym example
+above: it would also have been possible to write a sanitizer which adds the
+acronym as an additional name to the name list. The result would have been
+similar. So which should be used when?
+
+The most important thing to keep in mind is that variants created by the
+token analysis are only saved in the word lookup table. They do not need
+extra space in the search index. If there are many spelling variations, this
+can mean quite a significant amount of space is saved.
+
+When creating additional names with a sanitizer, these names are completely
+independent. In particular, they can be fed into different token analysis
+modules. This gives a much greater flexibility but at the price that the
+additional names increase the size of the search index.
+
The prepared place information is handed to the tokenizer next. This is a
Python module responsible for processing the names from both name and address
terms and building up the word index from them. The process is explained in
-more detail in the [Tokenizer chapter](Tokenizer.md).
+more detail in the [Tokenizer chapter](Tokenizers.md).
### Address processing
|
+- php PHP unit tests
+- python Python unit tests
- +- scenes Geometry test data
+- testdb Base data for generating API test database
+ +- testdata Additional test data used by unit tests
```
## PHP Unit Tests (`test/php`)
Nominatim expects two files for a tokenizer:
-* `nominiatim/tokenizer/<NAME>_tokenizer.py` containing the Python part of the
+* `nominatim/tokenizer/<NAME>_tokenizer.py` containing the Python part of the
implementation
* `lib-php/tokenizer/<NAME>_tokenizer.php` with the PHP part of the
implementation
If the tokenizer has a default configuration file, this should be saved in
the `settings/<NAME>_tokenizer.<SUFFIX>`.
-### Configuration and Persistance
+### Configuration and Persistence
Tokenizers may define custom settings for their configuration. All settings
must be prefixed with `NOMINATIM_TOKENIZER_`. Settings may be transient or
both the search token list and the match token list.
```sql
-FUNCTION token_normalized_postcode(postcode TEXT) RETURNS TEXT
+FUNCTION token_get_postcode(info JSONB) RETURNS TEXT
```
-Return the normalized version of the given postcode. This function must return
-the same value as the Python function `AbstractAnalyzer->normalize_postcode()`.
+Return the postcode for the object, if any exists. The postcode must be in
+the form that should also be presented to the end-user.
```sql
FUNCTION token_strip_info(info JSONB) RETURNS JSONB
## US Census TIGER
-For the United States you can choose to import additonal street-level data.
+For the United States you can choose to import additional street-level data.
The data isn't mixed into OSM data but queried as fallback when no OSM
result can be found.
background-color: #eee;
}
-/* Indentation for mkdocstrings.
-div.doc-contents:not(.first) {
- padding-left: 25px;
- border-left: 4px solid rgba(230, 230, 230);
- margin-bottom: 60px;
-}*/
+.doc-object h6 {
+ margin-bottom: 0.8em;
+ font-size: 120%;
+}
+.doc-object {
+ margin-bottom: 1.3em;
+}
docs_dir: ${CMAKE_CURRENT_BINARY_DIR}
site_url: https://nominatim.org
repo_url: https://github.com/openstreetmap/Nominatim
-pages:
+nav:
- 'Introduction' : 'index.md'
- 'API Reference':
- 'Overview': 'api/Overview.md'
- 'Overview': 'customize/Overview.md'
- 'Import Styles': 'customize/Import-Styles.md'
- 'Configuration Settings': 'customize/Settings.md'
+ - 'Per-Country Data': 'customize/Country-Settings.md'
- 'Place Ranking' : 'customize/Ranking.md'
- 'Tokenizers' : 'customize/Tokenizers.md'
- 'Special Phrases': 'customize/Special-Phrases.md'
- 'Database Layout' : 'develop/Database-Layout.md'
- 'Indexing' : 'develop/Indexing.md'
- 'Tokenizers' : 'develop/Tokenizers.md'
+ - 'Custom modules for ICU tokenizer': 'develop/ICU-Tokenizer-Modules.md'
- 'Setup for Development' : 'develop/Development-Environment.md'
- 'Testing' : 'develop/Testing.md'
- 'External Data Sources': 'develop/data-sources.md'
- 'Appendix':
- - 'Installation on CentOS 8' : 'appendix/Install-on-Centos-8.md'
- 'Installation on Ubuntu 18' : 'appendix/Install-on-Ubuntu-18.md'
- 'Installation on Ubuntu 20' : 'appendix/Install-on-Ubuntu-20.md'
+ - 'Installation on Ubuntu 22' : 'appendix/Install-on-Ubuntu-22.md'
markdown_extensions:
- codehilite
- admonition
- search
- mkdocstrings:
handlers:
- python:
+ python-legacy:
rendering:
show_source: false
show_signature_annotations: false
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
|| $aLine['class'] == 'place')
) {
$aAddress[$sTypeLabel] = $sName;
+
+ if (!empty($aLine['name'])) {
+ $this->addSubdivisionCode($aAddress, $aLine['admin_level'], $aLine['name']);
+ }
}
}
{
return $this->aAddressLines;
}
+
+ private function addSubdivisionCode(&$aAddress, $iAdminLevel, $nameDetails)
+ {
+ if (is_string($nameDetails)) {
+ $nameDetails = json_decode('{' . str_replace('"=>"', '":"', $nameDetails) . '}', true);
+ }
+ if (!empty($nameDetails['ISO3166-2'])) {
+ $aAddress["ISO3166-2-lvl$iAdminLevel"] = $nameDetails['ISO3166-2'];
+ }
+ }
}
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\ClassTypes;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$conn->exec("SET DateStyle TO 'sql,european'");
$conn->exec("SET client_encoding TO 'utf-8'");
+ // Disable JIT and parallel workers. They interfere badly with search SQL.
+ $conn->exec("UPDATE pg_settings SET setting = -1 WHERE name = 'jit_above_cost'");
+ $conn->exec("UPDATE pg_settings SET setting = 0 WHERE name = 'max_parallel_workers_per_gather'");
$iMaxExecution = ini_get('max_execution_time');
if ($iMaxExecution > 0) {
$conn->setAttribute(\PDO::ATTR_TIMEOUT, $iMaxExecution); // seconds
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
}
$this->iFinalLimit = $iLimit;
- $this->iLimit = $iLimit + min($iLimit, 10);
+ $this->iLimit = $iLimit + max($iLimit, 10);
}
public function setFeatureType($sFeatureType)
$this->bFallback = $oParams->getBool('fallback', $this->bFallback);
- // List of excluded Place IDs - used for more acurate pageing
+ // List of excluded Place IDs - used for more accurate pageing
$sExcluded = $oParams->getStringList('exclude_place_ids');
if ($sExcluded) {
foreach ($sExcluded as $iExcludedPlaceID) {
}
$aReverseGroupedSearches = $this->getGroupedSearches($aSearches, $aPhrases, $oValidTokens);
- foreach ($aGroupedSearches as $aSearches) {
+ foreach ($aReverseGroupedSearches as $aSearches) {
foreach ($aSearches as $aSearch) {
- if (!isset($aReverseGroupedSearches[$aSearch->getRank()])) {
- $aReverseGroupedSearches[$aSearch->getRank()] = array();
+ if (!isset($aGroupedSearches[$aSearch->getRank()])) {
+ $aGroupedSearches[$aSearch->getRank()] = array();
}
- $aReverseGroupedSearches[$aSearch->getRank()][] = $aSearch;
+ $aGroupedSearches[$aSearch->getRank()][] = $aSearch;
}
}
- $aGroupedSearches = $aReverseGroupedSearches;
ksort($aGroupedSearches);
}
} else {
$aResult['importance'] = 0.001;
$aResult['foundorder'] = $aResult['addressimportance'];
} else {
- $aResult['importance'] = max(0.001, $aResult['importance']);
+ if ($aResult['importance'] == 0) {
+ $aResult['importance'] = 0.0001;
+ }
$aResult['importance'] *= $this->viewboxImportanceFactor(
$aResult['lon'],
$aResult['lat']
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
public function getBool($sName, $bDefault = false)
{
- if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
+ if (!isset($this->aParams[$sName])
+ || !is_string($this->aParams[$sName])
+ || strlen($this->aParams[$sName]) == 0
+ ) {
return $bDefault;
}
public function getInt($sName, $bDefault = false)
{
- if (!isset($this->aParams[$sName])) {
+ if (!isset($this->aParams[$sName]) || is_array($this->aParams[$sName])) {
return $bDefault;
}
public function getFloat($sName, $bDefault = false)
{
- if (!isset($this->aParams[$sName])) {
+ if (!isset($this->aParams[$sName]) || is_array($this->aParams[$sName])) {
return $bDefault;
}
public function getString($sName, $bDefault = false)
{
- if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
+ if (!isset($this->aParams[$sName])
+ || !is_string($this->aParams[$sName])
+ || strlen($this->aParams[$sName]) == 0
+ ) {
return $bDefault;
}
public function getSet($sName, $aValues, $sDefault = false)
{
- if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
+ if (!isset($this->aParams[$sName])
+ || !is_string($this->aParams[$sName])
+ || strlen($this->aParams[$sName]) == 0
+ ) {
return $sDefault;
}
- if (!in_array($this->aParams[$sName], $aValues)) {
+ if (!in_array($this->aParams[$sName], $aValues, true)) {
userError("Parameter '$sName' must be one of: ".join(', ', $aValues));
}
}
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
- $aLangPrefOrder['name:'.$sLanguage] = 'name:'.$sLanguage;
+ $this->addNameTag($aLangPrefOrder, 'name:'.$sLanguage);
}
- $aLangPrefOrder['name'] = 'name';
- $aLangPrefOrder['brand'] = 'brand';
+ $this->addNameTag($aLangPrefOrder, 'name');
+ $this->addNameTag($aLangPrefOrder, 'brand');
foreach ($aLanguages as $sLanguage => $fLanguagePref) {
- $aLangPrefOrder['official_name:'.$sLanguage] = 'official_name:'.$sLanguage;
- $aLangPrefOrder['short_name:'.$sLanguage] = 'short_name:'.$sLanguage;
+ $this->addNameTag($aLangPrefOrder, 'official_name:'.$sLanguage);
+ $this->addNameTag($aLangPrefOrder, 'short_name:'.$sLanguage);
}
- $aLangPrefOrder['official_name'] = 'official_name';
- $aLangPrefOrder['short_name'] = 'short_name';
- $aLangPrefOrder['ref'] = 'ref';
- $aLangPrefOrder['type'] = 'type';
+ $this->addNameTag($aLangPrefOrder, 'official_name');
+ $this->addNameTag($aLangPrefOrder, 'short_name');
+ $this->addNameTag($aLangPrefOrder, 'ref');
+ $this->addNameTag($aLangPrefOrder, 'type');
return $aLangPrefOrder;
}
+ private function addNameTag(&$aLangPrefOrder, $sTag)
+ {
+ $aLangPrefOrder[$sTag] = $sTag;
+ $aLangPrefOrder['_place_'.$sTag] = '_place_'.$sTag;
+ }
+
public function hasSetAny($aParamNames)
{
foreach ($aParamNames as $sName) {
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
}
/**
- * Get the orginal phrase of the string.
+ * Get the original phrase of the string.
*/
public function getPhrase()
{
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$sSQL .= ' null::text AS extra_place ';
$sSQL .= ' FROM (';
$sSQL .= ' SELECT place_id, '; // interpolate the Tiger housenumbers here
- $sSQL .= ' ST_LineInterpolatePoint(linegeo, (housenumber_for_place-startnumber::float)/(endnumber-startnumber)::float) AS centroid, ';
+ $sSQL .= ' CASE WHEN startnumber != endnumber';
+ $sSQL .= ' THEN ST_LineInterpolatePoint(linegeo, (housenumber_for_place-startnumber::float)/(endnumber-startnumber)::float)';
+ $sSQL .= ' ELSE ST_LineInterpolatePoint(linegeo, 0.5) END AS centroid, ';
$sSQL .= ' parent_place_id, ';
$sSQL .= ' housenumber_for_place';
$sSQL .= ' FROM (';
$sSQL .= ' CASE '; // interpolate the housenumbers here
$sSQL .= ' WHEN startnumber != endnumber ';
$sSQL .= ' THEN ST_LineInterpolatePoint(linegeo, (housenumber_for_place-startnumber::float)/(endnumber-startnumber)::float) ';
- $sSQL .= ' ELSE ST_LineInterpolatePoint(linegeo, 0.5) ';
+ $sSQL .= ' ELSE linegeo ';
$sSQL .= ' END as centroid, ';
$sSQL .= ' parent_place_id, ';
$sSQL .= ' housenumber_for_place ';
if ($this->bExtraTags) {
if ($aPlace['extra']) {
- $aPlace['sExtraTags'] = json_decode($aPlace['extra']);
+ $aPlace['sExtraTags'] = json_decode($aPlace['extra'], true);
} else {
$aPlace['sExtraTags'] = (object) array();
}
}
if ($this->bNameDetails) {
- if ($aPlace['names']) {
- $aPlace['sNameDetails'] = json_decode($aPlace['names']);
- } else {
- $aPlace['sNameDetails'] = (object) array();
- }
+ $aPlace['sNameDetails'] = $this->extractNames($aPlace['names']);
}
$aPlace['addresstype'] = ClassTypes\getLabelTag(
return $aResults;
}
+
+ private function extractNames($sNames)
+ {
+ if (!$sNames) {
+ return (object) array();
+ }
+
+ $aFullNames = json_decode($sNames, true);
+ $aNames = array();
+
+ foreach ($aFullNames as $sKey => $sValue) {
+ if (strpos($sKey, '_place_') === 0) {
+ $sSubKey = substr($sKey, 7);
+ if (array_key_exists($sSubKey, $aFullNames)) {
+ $aNames[$sKey] = $sValue;
+ } else {
+ $aNames[$sSubKey] = $sValue;
+ }
+ } else {
+ $aNames[$sKey] = $sValue;
+ }
+ }
+
+ return $aNames;
+ }
+
+
/* returns an array which will contain the keys
* aBoundingBox
* and may also contain one or more of the keys
* lat
* lon
*/
-
-
public function getOutlines($iPlaceID, $fLon = null, $fLat = null, $fRadius = null, $fLonReverse = null, $fLatReverse = null)
{
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
{
Debug::newFunction('lookupInterpolation');
$sSQL = 'SELECT place_id, parent_place_id, 30 as rank_search,';
- $sSQL .= ' ST_LineLocatePoint(linegeo,'.$sPointSQL.') as fraction,';
- $sSQL .= ' startnumber, endnumber, interpolationtype,';
+ $sSQL .= ' (CASE WHEN endnumber != startnumber';
+ $sSQL .= ' THEN (endnumber - startnumber) * ST_LineLocatePoint(linegeo,'.$sPointSQL.')';
+ $sSQL .= ' ELSE startnumber END) as fhnr,';
+ $sSQL .= ' startnumber, endnumber, step,';
$sSQL .= ' ST_Distance(linegeo,'.$sPointSQL.') as distance';
$sSQL .= ' FROM location_property_osmline';
$sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', linegeo, '.$fSearchDiam.')';
// starts if the search is on POI or street level,
// searches for the nearest POI or street,
// if a street is found and a POI is searched for,
- // the nearest POI which the found street is a parent of is choosen.
+ // the nearest POI which the found street is a parent of is chosen.
$sSQL = 'select place_id,parent_place_id,rank_address,country_code,';
$sSQL .= ' ST_distance('.$sPointSQL.', geometry) as distance';
$sSQL .= ' FROM ';
&& $this->iMaxRank >= 28
) {
$sSQL = 'SELECT place_id,parent_place_id,30 as rank_search,';
- $sSQL .= 'ST_LineLocatePoint(linegeo,'.$sPointSQL.') as fraction,';
- $sSQL .= 'ST_distance('.$sPointSQL.', linegeo) as distance,';
- $sSQL .= 'startnumber,endnumber,interpolationtype';
+ $sSQL .= ' (endnumber - startnumber) * ST_LineLocatePoint(linegeo,'.$sPointSQL.') as fhnr,';
+ $sSQL .= ' startnumber, endnumber, step,';
+ $sSQL .= ' ST_Distance('.$sPointSQL.', linegeo) as distance';
$sSQL .= ' FROM location_property_tiger WHERE parent_place_id = '.$oResult->iId;
$sSQL .= ' AND ST_DWithin('.$sPointSQL.', linegeo, 0.001)';
$sSQL .= ' ORDER BY distance ASC limit 1';
if ($aPlaceTiger) {
$aPlace = $aPlaceTiger;
$oResult = new Result($aPlaceTiger['place_id'], Result::TABLE_TIGER);
- $oResult->iHouseNumber = closestHouseNumber($aPlaceTiger);
+ $iRndNum = max(0, round($aPlaceTiger['fhnr'] / $aPlaceTiger['step']) * $aPlaceTiger['step']);
+ $oResult->iHouseNumber = $aPlaceTiger['startnumber'] + $iRndNum;
+ if ($oResult->iHouseNumber > $aPlaceTiger['endnumber']) {
+ $oResult->iHouseNumber = $aPlaceTiger['endnumber'];
+ }
$iRankAddress = 30;
}
}
// We can't reliably go from the closest street to an
// interpolation line because the closest interpolation
// may have a different street segments as a parent.
- // Therefore allow an interpolation line to take precendence
+ // Therefore allow an interpolation line to take precedence
// even when the street is closer.
$fDistance = $iRankAddress < 28 ? 0.001 : $aPlace['distance'];
}
if ($aHouse) {
$oResult = new Result($aHouse['place_id'], Result::TABLE_OSMLINE);
- $oResult->iHouseNumber = closestHouseNumber($aHouse);
+ $iRndNum = max(0, round($aHouse['fhnr'] / $aHouse['step']) * $aHouse['step']);
+ $oResult->iHouseNumber = $aHouse['startnumber'] + $iRndNum;
+ if ($oResult->iHouseNumber > $aHouse['endnumber']) {
+ $oResult->iHouseNumber = $aHouse['endnumber'];
+ }
$aPlace = $aHouse;
}
}
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
* Add the given full-word token to the list of terms to search for in the
* name.
*
- * @param interger iId ID of term to add.
+ * @param integer iId ID of term to add.
* @param bool bRareName True if the term is infrequent enough to not
* require other constraints for efficient search.
*/
{
if (empty($this->aName)) {
$this->bNameNeedsAddress = $bNeedsAddress;
+ } elseif ($bSearchable && count($this->aName) >= 2) {
+ $this->bNameNeedsAddress = false;
} else {
$this->bNameNeedsAddress &= $bNeedsAddress;
}
*
* @return mixed[] An array with two fields: IDs contains the list of
* matching place IDs and houseNumber the houseNumber
- * if appicable or -1 if not.
+ * if applicable or -1 if not.
*/
public function query(&$oDB, $iMinRank, $iMaxRank, $iLimit)
{
$iLimit
);
- // Now search for housenumber, if housenumber provided. Can be zero.
- if (($this->sHouseNumber || $this->sHouseNumber === '0') && !empty($aResults)) {
- $aHnResults = $this->queryHouseNumber($oDB, $aResults);
-
- // Downgrade the rank of the street results, they are missing
- // the housenumber. Also drop POI places (rank 30) here, they
- // cannot be a parent place and therefore must not be shown
- // as a result for a search with a missing housenumber.
- foreach ($aResults as $oRes) {
- if ($oRes->iAddressRank < 28) {
- if ($oRes->iAddressRank >= 26) {
- $oRes->iResultRank++;
- } else {
- $oRes->iResultRank += 2;
- }
- $aHnResults[$oRes->iId] = $oRes;
- }
- }
-
- $aResults = $aHnResults;
- }
-
// finally get POIs if requested
if ($this->sClass && !empty($aResults)) {
$aResults = $this->queryPoiByOperator($oDB, $aResults, $iLimit);
$aTerms = array();
$aOrder = array();
- // Sort by existence of the requested house number but only if not
- // too many results are expected for the street, i.e. if the result
- // will be narrowed down by an address. Remember that with ordering
- // every single result has to be checked.
- if ($this->sHouseNumber && ($this->bRareName || !empty($this->aAddress) || $this->sPostcode)) {
- $sHouseNumberRegex = $oDB->getDBQuoted('\\\\m'.$this->sHouseNumber.'\\\\M');
-
- // Housenumbers on streets and places.
- $sChildHnr = 'SELECT * FROM placex WHERE parent_place_id = search_name.place_id';
- $sChildHnr .= ' AND housenumber ~* E'.$sHouseNumberRegex;
- // Interpolations on streets and places.
- if (preg_match('/^[0-9]+$/', $this->sHouseNumber)) {
- $sIpolHnr = 'WHERE parent_place_id = search_name.place_id ';
- $sIpolHnr .= ' AND startnumber is not NULL';
- $sIpolHnr .= ' AND '.$this->sHouseNumber.'>=startnumber ';
- $sIpolHnr .= ' AND '.$this->sHouseNumber.'<=endnumber ';
- } else {
- $sIpolHnr = false;
- }
- // Housenumbers on the object iteself for unlisted places.
- $sSelfHnr = 'SELECT * FROM placex WHERE place_id = search_name.place_id';
- $sSelfHnr .= ' AND housenumber ~* E'.$sHouseNumberRegex;
-
- $sSql = '(CASE WHEN address_rank = 30 THEN EXISTS('.$sSelfHnr.') ';
- $sSql .= ' ELSE EXISTS('.$sChildHnr.') ';
- if ($sIpolHnr) {
- $sSql .= 'OR EXISTS(SELECT * FROM location_property_osmline '.$sIpolHnr.') ';
- if (CONST_Use_US_Tiger_Data) {
- $sSql .= "OR (country_code = 'us' AND ";
- $sSql .= ' EXISTS(SELECT * FROM location_property_tiger '.$sIpolHnr.')) ';
- }
- }
- $sSql .= 'END) DESC';
-
-
- $aOrder[] = $sSql;
- }
-
if (!empty($this->aName)) {
$aTerms[] = 'name_vector @> '.$oDB->getArraySQL($this->aName);
}
$aTerms[] = 'centroid && '.$this->oContext->sqlViewboxSmall;
}
- if ($this->oContext->hasNearPoint()) {
- $aOrder[] = $this->oContext->distanceSQL('centroid');
- }
-
if ($this->sHouseNumber) {
$sImportanceSQL = '- abs(26 - address_rank) + 3';
} else {
$sExactMatchSQL = '0::int as exactmatch';
}
- if ($this->sHouseNumber || $this->sClass) {
- $iLimit = 40;
+ if (empty($aTerms)) {
+ return array();
}
- $aResults = array();
-
- if (!empty($aTerms)) {
- $sSQL = 'SELECT place_id, address_rank,'.$sExactMatchSQL;
- $sSQL .= ' FROM search_name';
- $sSQL .= ' WHERE '.join(' and ', $aTerms);
- $sSQL .= ' ORDER BY '.join(', ', $aOrder);
- $sSQL .= ' LIMIT '.$iLimit;
+ if ($this->hasHousenumber()) {
+ $sHouseNumberRegex = $oDB->getDBQuoted('\\\\m'.$this->sHouseNumber.'\\\\M');
- Debug::printSQL($sSQL);
+ // Housenumbers on streets and places.
+ $sPlacexSql = 'SELECT array_agg(place_id) FROM placex';
+ $sPlacexSql .= ' WHERE parent_place_id = sin.place_id AND sin.address_rank < 30';
+ $sPlacexSql .= $this->oContext->excludeSQL(' AND place_id');
+ $sPlacexSql .= ' and housenumber ~* E'.$sHouseNumberRegex;
- $aDBResults = $oDB->getAll($sSQL, null, 'Could not get places for search terms.');
+ // Interpolations on streets and places.
+ $sInterpolSql = 'null';
+ $sTigerSql = 'null';
+ if (preg_match('/^[0-9]+$/', $this->sHouseNumber)) {
+ $sIpolHnr = 'WHERE parent_place_id = sin.place_id ';
+ $sIpolHnr .= ' AND startnumber is not NULL AND sin.address_rank < 30';
+ $sIpolHnr .= ' AND '.$this->sHouseNumber.' between startnumber and endnumber';
+ $sIpolHnr .= ' AND ('.$this->sHouseNumber.' - startnumber) % step = 0';
- foreach ($aDBResults as $aResult) {
- $oResult = new Result($aResult['place_id']);
- $oResult->iExactMatches = $aResult['exactmatch'];
- $oResult->iAddressRank = $aResult['address_rank'];
- $aResults[$aResult['place_id']] = $oResult;
+ $sInterpolSql = 'SELECT array_agg(place_id) FROM location_property_osmline '.$sIpolHnr;
+ if (CONST_Use_US_Tiger_Data) {
+ $sTigerSql = 'SELECT array_agg(place_id) FROM location_property_tiger '.$sIpolHnr;
+ $sTigerSql .= " and sin.country_code = 'us'";
+ }
}
- }
- return $aResults;
- }
+ if ($this->sClass) {
+ $iLimit = 40;
+ }
- private function queryHouseNumber(&$oDB, $aRoadPlaceIDs)
- {
- $aResults = array();
- $sRoadPlaceIDs = Result::joinIdsByTableMaxRank(
- $aRoadPlaceIDs,
- Result::TABLE_PLACEX,
- 27
- );
- $sPOIPlaceIDs = Result::joinIdsByTableMinRank(
- $aRoadPlaceIDs,
- Result::TABLE_PLACEX,
- 30
- );
+ $sSelfHnr = 'SELECT * FROM placex WHERE place_id = search_name.place_id';
+ $sSelfHnr .= ' AND housenumber ~* E'.$sHouseNumberRegex;
- $aIDCondition = array();
- if ($sRoadPlaceIDs) {
- $aIDCondition[] = 'parent_place_id in ('.$sRoadPlaceIDs.')';
- }
- if ($sPOIPlaceIDs) {
- $aIDCondition[] = 'place_id in ('.$sPOIPlaceIDs.')';
- }
+ $aTerms[] = '(address_rank < 30 or exists('.$sSelfHnr.'))';
+
+
+ $sSQL = 'SELECT sin.*, ';
+ $sSQL .= '('.$sPlacexSql.') as placex_hnr, ';
+ $sSQL .= '('.$sInterpolSql.') as interpol_hnr, ';
+ $sSQL .= '('.$sTigerSql.') as tiger_hnr ';
+ $sSQL .= ' FROM (';
+ $sSQL .= ' SELECT place_id, address_rank, country_code,'.$sExactMatchSQL.',';
+ $sSQL .= ' CASE WHEN importance = 0 OR importance IS NULL';
+ $sSQL .= ' THEN 0.75001-(search_rank::float/40) ELSE importance END as importance';
+ $sSQL .= ' FROM search_name';
+ $sSQL .= ' WHERE '.join(' and ', $aTerms);
+ $sSQL .= ' ORDER BY '.join(', ', $aOrder);
+ $sSQL .= ' LIMIT 40000';
+ $sSQL .= ') as sin';
+ $sSQL .= ' ORDER BY address_rank = 30 desc, placex_hnr, interpol_hnr, tiger_hnr,';
+ $sSQL .= ' importance';
+ $sSQL .= ' LIMIT '.$iLimit;
+ } else {
+ if ($this->sClass) {
+ $iLimit = 40;
+ }
- if (empty($aIDCondition)) {
- return $aResults;
+ $sSQL = 'SELECT place_id, address_rank, '.$sExactMatchSQL;
+ $sSQL .= ' FROM search_name';
+ $sSQL .= ' WHERE '.join(' and ', $aTerms);
+ $sSQL .= ' ORDER BY '.join(', ', $aOrder);
+ $sSQL .= ' LIMIT '.$iLimit;
}
- $sHouseNumberRegex = $oDB->getDBQuoted('\\\\m'.$this->sHouseNumber.'\\\\M');
- $sSQL = 'SELECT place_id FROM placex WHERE';
- $sSQL .= ' housenumber ~* E'.$sHouseNumberRegex;
- $sSQL .= ' AND ('.join(' OR ', $aIDCondition).')';
- $sSQL .= $this->oContext->excludeSQL(' AND place_id');
-
Debug::printSQL($sSQL);
- // XXX should inherit the exactMatches from its parent
- foreach ($oDB->getCol($sSQL) as $iPlaceId) {
- $aResults[$iPlaceId] = new Result($iPlaceId);
- }
+ $aDBResults = $oDB->getAll($sSQL, null, 'Could not get places for search terms.');
- $bIsIntHouseNumber= (bool) preg_match('/[0-9]+/', $this->sHouseNumber);
- $iHousenumber = intval($this->sHouseNumber);
- if ($bIsIntHouseNumber && $sRoadPlaceIDs && empty($aResults)) {
- // if nothing found, search in the interpolation line table
- $sSQL = 'SELECT distinct place_id FROM location_property_osmline';
- $sSQL .= ' WHERE startnumber is not NULL';
- $sSQL .= ' AND parent_place_id in ('.$sRoadPlaceIDs.') AND (';
- if ($iHousenumber % 2 == 0) {
- // If housenumber is even, look for housenumber in streets
- // with interpolationtype even or all.
- $sSQL .= "interpolationtype='even'";
- } else {
- // Else look for housenumber with interpolationtype odd or all.
- $sSQL .= "interpolationtype='odd'";
- }
- $sSQL .= " or interpolationtype='all') and ";
- $sSQL .= $iHousenumber.'>=startnumber and ';
- $sSQL .= $iHousenumber.'<=endnumber';
- $sSQL .= $this->oContext->excludeSQL(' AND place_id');
-
- Debug::printSQL($sSQL);
+ $aResults = array();
- foreach ($oDB->getCol($sSQL) as $iPlaceId) {
- $oResult = new Result($iPlaceId, Result::TABLE_OSMLINE);
- $oResult->iHouseNumber = $iHousenumber;
- $aResults[$iPlaceId] = $oResult;
- }
- }
+ foreach ($aDBResults as $aResult) {
+ $oResult = new Result($aResult['place_id']);
+ $oResult->iExactMatches = $aResult['exactmatch'];
+ $oResult->iAddressRank = $aResult['address_rank'];
+
+ $bNeedResult = true;
+ if ($this->hasHousenumber() && $aResult['address_rank'] < 30) {
+ if ($aResult['placex_hnr']) {
+ foreach (explode(',', substr($aResult['placex_hnr'], 1, -1)) as $sPlaceID) {
+ $iPlaceID = intval($sPlaceID);
+ $oHnrResult = new Result($iPlaceID);
+ $oHnrResult->iExactMatches = $aResult['exactmatch'];
+ $oHnrResult->iAddressRank = 30;
+ $aResults[$iPlaceID] = $oHnrResult;
+ $bNeedResult = false;
+ }
+ }
+ if ($aResult['interpol_hnr']) {
+ foreach (explode(',', substr($aResult['interpol_hnr'], 1, -1)) as $sPlaceID) {
+ $iPlaceID = intval($sPlaceID);
+ $oHnrResult = new Result($iPlaceID, Result::TABLE_OSMLINE);
+ $oHnrResult->iExactMatches = $aResult['exactmatch'];
+ $oHnrResult->iAddressRank = 30;
+ $oHnrResult->iHouseNumber = intval($this->sHouseNumber);
+ $aResults[$iPlaceID] = $oHnrResult;
+ $bNeedResult = false;
+ }
+ }
+ if ($aResult['tiger_hnr']) {
+ foreach (explode(',', substr($aResult['tiger_hnr'], 1, -1)) as $sPlaceID) {
+ $iPlaceID = intval($sPlaceID);
+ $oHnrResult = new Result($iPlaceID, Result::TABLE_TIGER);
+ $oHnrResult->iExactMatches = $aResult['exactmatch'];
+ $oHnrResult->iAddressRank = 30;
+ $oHnrResult->iHouseNumber = intval($this->sHouseNumber);
+ $aResults[$iPlaceID] = $oHnrResult;
+ $bNeedResult = false;
+ }
+ }
- // If nothing found then search in Tiger data (location_property_tiger)
- if (CONST_Use_US_Tiger_Data && $sRoadPlaceIDs && $bIsIntHouseNumber && empty($aResults)) {
- $sSQL = 'SELECT place_id FROM location_property_tiger';
- $sSQL .= ' WHERE parent_place_id in ('.$sRoadPlaceIDs.') and (';
- if ($iHousenumber % 2 == 0) {
- $sSQL .= "interpolationtype='even'";
- } else {
- $sSQL .= "interpolationtype='odd'";
+ if ($aResult['address_rank'] < 26) {
+ $oResult->iResultRank += 2;
+ } else {
+ $oResult->iResultRank++;
+ }
}
- $sSQL .= " or interpolationtype='all') and ";
- $sSQL .= $iHousenumber.'>=startnumber and ';
- $sSQL .= $iHousenumber.'<=endnumber';
- $sSQL .= $this->oContext->excludeSQL(' AND place_id');
-
- Debug::printSQL($sSQL);
- foreach ($oDB->getCol($sSQL) as $iPlaceId) {
- $oResult = new Result($iPlaceId, Result::TABLE_TIGER);
- $oResult->iHouseNumber = $iHousenumber;
- $aResults[$iPlaceId] = $oResult;
+ if ($bNeedResult) {
+ $aResults[$aResult['place_id']] = $oResult;
}
}
$sSQL = 'SELECT geometry FROM placex';
$sSQL .= " WHERE place_id in ($sPlaceIDs)";
$sSQL .= " AND rank_search < $iMaxRank + 5";
+ $sSQL .= ' AND ST_Area(Box2d(geometry)) < 20';
$sSQL .= " AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')";
$sSQL .= ' ORDER BY rank_search ASC ';
$sSQL .= ' LIMIT 1';
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
return array_slice($aWordSets, 0, SimpleWordList::MAX_WORDSETS);
}
+ /**
+ * Custom search routine which takes two arrays. The array with the fewest
+ * items wins. If same number of items then the one with the longest first
+ * element wins.
+ */
public static function cmpByArraylen($aA, $aB)
{
$iALen = count($aA);
$iBLen = count($aB);
if ($iALen == $iBLen) {
- return 0;
+ return strlen($aB[0]) <=> strlen($aA[0]);
}
return ($iALen < $iBLen) ? -1 : 1;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\Token;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\Token;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\Token;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\Token;
{
/// Database word id, if available.
private $iId;
- /// Full nomralized postcode (upper cased).
+ /// Full normalized postcode (upper cased).
private $sPostcode;
// Optional country code the postcode belongs to (currently unused).
private $sCountryCode;
public function __construct($iId, $sPostcode, $sCountryCode = '')
{
$this->iId = $iId;
- $this->sPostcode = $sPostcode;
+ $iSplitPos = strpos($sPostcode, '@');
+ if ($iSplitPos === false) {
+ $this->sPostcode = $sPostcode;
+ } else {
+ $this->sPostcode = substr($sPostcode, 0, $iSplitPos);
+ }
$this->sCountryCode = empty($sCountryCode) ? '' : $sCountryCode;
}
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\Token;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim\Token;
public function extendSearch($oSearch, $oPosition)
{
// Full words can only be a name if they appear at the beginning
- // of the phrase. In structured search the name must forcably in
+ // of the phrase. In structured search the name must forcibly in
// the first phrase. In unstructured search it may be in a later
// phrase when the first phrase is a house number.
if ($oSearch->hasName()
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
@define('CONST_LibDir', dirname(dirname(__FILE__)));
// Script to extract structured city and street data
// from a running nominatim instance as CSV data
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
@define('CONST_LibDir', dirname(dirname(__FILE__)));
require_once(CONST_LibDir.'/init-cmd.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/Shell.php');
showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is missing');
}
if ($aCounts[$aLine[0]] > $aLine[3]) {
- showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is pressent too many times');
+ showUsage($aSpec, $bExitOnError, 'Option \''.$aLine[0].'\' is present too many times');
}
if ($aLine[6] == 'bool' && !array_key_exists($aLine[0], $aResult)) {
$aResult[$aLine[0]] = false;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require('Symfony/Component/Dotenv/autoload.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once('init.php');
require_once('cmd.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once('init.php');
require_once('ParameterParser.php');
function exception_handler_json($exception)
{
- http_response_code($exception->getCode());
+ http_response_code($exception->getCode() == 0 ? 500 : $exception->getCode());
header('Content-type: application/json; charset=utf-8');
include(CONST_LibDir.'/template/error-json.php');
exit();
function exception_handler_xml($exception)
{
- http_response_code($exception->getCode());
+ http_response_code($exception->getCode() == 0 ? 500 : $exception->getCode());
header('Content-type: text/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
include(CONST_LibDir.'/template/error-xml.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/lib.php');
require_once(CONST_LibDir.'/DB.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
function loadSettings($sProjectDir)
{
@define('CONST_InstallDir', $sProjectDir);
- // Temporary hack to set the direcory via environment instead of
+ // Temporary hack to set the directory via environment instead of
// the installed scripts. Neither setting is part of the official
// set of settings.
defined('CONST_ConfigDir') or define('CONST_ConfigDir', $_SERVER['NOMINATIM_CONFIGDIR']);
return array($sFound, $fQueryLat, $fQueryLon);
}
-function closestHouseNumber($aRow)
+function addressRankToGeocodeJsonType($iAddressRank)
{
- $fHouse = $aRow['startnumber']
- + ($aRow['endnumber'] - $aRow['startnumber']) * $aRow['fraction'];
-
- switch ($aRow['interpolationtype']) {
- case 'odd':
- $iHn = (int)($fHouse/2) * 2 + 1;
- break;
- case 'even':
- $iHn = (int)(round($fHouse/2)) * 2;
- break;
- default:
- $iHn = (int)(round($fHouse));
- break;
- }
-
- return max(min($aRow['endnumber'], $iHn), $aRow['startnumber']);
+ if ($iAddressRank >= 29 && $iAddressRank <= 30) {
+ return 'house';
+ }
+ if ($iAddressRank >= 26 && $iAddressRank < 28) {
+ return 'street';
+ }
+ if ($iAddressRank >= 22 && $iAddressRank < 26) {
+ return 'locality';
+ }
+ if ($iAddressRank >= 17 && $iAddressRank < 22) {
+ return 'district';
+ }
+ if ($iAddressRank >= 13 && $iAddressRank < 17) {
+ return 'city';
+ }
+ if ($iAddressRank >= 10 && $iAddressRank < 13) {
+ return 'county';
+ }
+ if ($iAddressRank >= 5 && $iAddressRank < 10) {
+ return 'state';
+ }
+ if ($iAddressRank >= 4 && $iAddressRank < 5) {
+ return 'country';
+ }
+
+ return 'locality';
}
if (!function_exists('array_key_last')) {
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array())
if (CONST_Log_DB) {
$aEndTime = explode('.', $fEndTime);
- if (!$aEndTime[1]) {
+ if (!isset($aEndTime[1])) {
$aEndTime[1] = '0';
}
$sEndTime = date('Y-m-d H:i:s', $aEndTime[0]).'.'.$aEndTime[1];
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
function formatOSMType($sType, $bIncludeExternal = true)
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
function getOsm2pgsqlBinary()
{
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
// https://github.com/geocoders/geocodejson-spec/
$aFilteredPlaces['properties']['geocoding']['osm_id'] = $aPlace['osm_id'];
}
- $aFilteredPlaces['properties']['geocoding']['type'] = $aPlace['type'];
+ $aFilteredPlaces['properties']['geocoding']['type'] = addressRankToGeocodeJsonType($aPlace['rank_address']);
$aFilteredPlaces['properties']['geocoding']['accuracy'] = (int) $fDistance;
}
if (isset($aPlace['asgeojson'])) {
- $aFilteredPlaces['geometry'] = json_decode($aPlace['asgeojson']);
+ $aFilteredPlaces['geometry'] = json_decode($aPlace['asgeojson'], true);
} else {
$aFilteredPlaces['geometry'] = array(
'type' => 'Point',
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aFilteredPlaces = array();
}
if (isset($aPlace['asgeojson'])) {
- $aFilteredPlaces['geometry'] = json_decode($aPlace['asgeojson']);
+ $aFilteredPlaces['geometry'] = json_decode($aPlace['asgeojson'], true);
} else {
$aFilteredPlaces['geometry'] = array(
'type' => 'Point',
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aFilteredPlaces = array();
}
if (isset($aPlace['asgeojson'])) {
- $aFilteredPlaces['geojson'] = json_decode($aPlace['asgeojson']);
+ $aFilteredPlaces['geojson'] = json_decode($aPlace['asgeojson'], true);
}
if (isset($aPlace['assvg'])) {
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
header('content-type: text/xml; charset=UTF-8');
echo '<';
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aPlaceDetails = array();
'coordinates' => array( (float) $aPointDetails['lon'], (float) $aPointDetails['lat'] )
);
-$aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']);
+$aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson'], true);
$funcMapAddressLine = function ($aFull) {
return array(
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$error = array(
'code' => $exception->getCode(),
'message' => $exception->getMessage()
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aOutput = array();
$aOutput['licence'] = 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright';
}
if (isset($aPointDetails['asgeojson'])) {
- $aPlace['geojson'] = json_decode($aPointDetails['asgeojson']);
+ $aPlace['geojson'] = json_decode($aPointDetails['asgeojson'], true);
}
if (isset($aPointDetails['assvg'])) {
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aFilteredPlaces = array();
foreach ($aSearchResults as $iResNum => $aPointDetails) {
$aPlace['properties']['geocoding']['osm_type'] = $sOSMType;
$aPlace['properties']['geocoding']['osm_id'] = $aPointDetails['osm_id'];
}
+ $aPlace['properties']['geocoding']['osm_key'] = $aPointDetails['class'];
+ $aPlace['properties']['geocoding']['osm_value'] = $aPointDetails['type'];
- $aPlace['properties']['geocoding']['type'] = $aPointDetails['type'];
+ $aPlace['properties']['geocoding']['type'] = addressRankToGeocodeJsonType($aPointDetails['rank_address']);
$aPlace['properties']['geocoding']['label'] = $aPointDetails['langaddress'];
}
if (isset($aPointDetails['asgeojson'])) {
- $aPlace['geometry'] = json_decode($aPointDetails['asgeojson']);
+ $aPlace['geometry'] = json_decode($aPointDetails['asgeojson'], true);
} else {
$aPlace['geometry'] = array(
'type' => 'Point',
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aFilteredPlaces = array();
foreach ($aSearchResults as $iResNum => $aPointDetails) {
}
if (isset($aPointDetails['asgeojson'])) {
- $aPlace['geometry'] = json_decode($aPointDetails['asgeojson']);
+ $aPlace['geometry'] = json_decode($aPointDetails['asgeojson'], true);
} else {
$aPlace['geometry'] = array(
'type' => 'Point',
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
$aFilteredPlaces = array();
foreach ($aSearchResults as $iResNum => $aPointDetails) {
}
if (isset($aPointDetails['asgeojson'])) {
- $aPlace['geojson'] = json_decode($aPointDetails['asgeojson']);
+ $aPlace['geojson'] = json_decode($aPointDetails['asgeojson'], true);
}
if (isset($aPointDetails['assvg'])) {
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
header('content-type: text/xml; charset=UTF-8');
echo '<';
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$sSQL = 'SELECT word_id, word_token, type, word,';
$sSQL .= " info->>'op' as operator,";
$sSQL .= " info->>'class' as class, info->>'type' as ctype,";
- $sSQL .= " info->>'count' as count";
+ $sSQL .= " info->>'count' as count,";
+ $sSQL .= " info->>'lookup' as lookup";
$sSQL .= ' FROM word WHERE word_token in (';
$sSQL .= join(',', $this->oDB->getDBQuotedList($aTokens)).')';
}
break;
case 'H': // house number tokens
- $oValidTokens->addToken($sTok, new Token\HouseNumber($iId, $aWord['word_token']));
+ $sLookup = $aWord['lookup'] ?? $aWord['word_token'];
+ $oValidTokens->addToken($sTok, new Token\HouseNumber($iId, $sLookup));
break;
case 'P': // postcode tokens
// Postcodes are not normalized, so they may have content
if ($aWord['word'] !== null
&& pg_escape_string($aWord['word']) == $aWord['word']
) {
- $sNormPostcode = $this->normalizeString($aWord['word']);
- if (strpos($sNormQuery, $sNormPostcode) !== false) {
- $oValidTokens->addToken(
- $sTok,
- new Token\Postcode($iId, $aWord['word'], null)
- );
+ $iSplitPos = strpos($aWord['word'], '@');
+ if ($iSplitPos === false) {
+ $sPostcode = $aWord['word'];
+ } else {
+ $sPostcode = substr($aWord['word'], 0, $iSplitPos);
}
+
+ $oValidTokens->addToken(
+ $sTok,
+ new Token\Postcode($iId, $sPostcode, null)
+ );
}
break;
case 'S': // tokens for classification terms (special phrases)
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
$aLinkedLines = $oDB->getAll($sSQL);
}
-// All places this is an imediate parent of
+// All places this is an immediate parent of
$aHierarchyLines = false;
if ($bIncludeHierarchy) {
$sSQL = 'SELECT obj.place_id, osm_type, osm_id, class, type, housenumber,';
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/ParameterParser.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/ParameterParser.php');
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
{% include('functions/utils.sql') %}
{% include('functions/ranking.sql') %}
{% include('functions/importance.sql') %}
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Functions for returning address information for a place.
DROP TYPE IF EXISTS addressline CASCADE;
END IF;
END LOOP;
- -- anything will do as a fallback - just take the first name type thing there is
- RETURN trim((avals(name))[1]);
+ -- as a fallback - take the last element since it is the default name
+ RETURN trim((avals(name))[array_length(avals(name), 1)]);
END;
$$
LANGUAGE plpgsql IMMUTABLE;
DECLARE
place addressdata_place;
location RECORD;
+ country RECORD;
current_rank_address INTEGER;
location_isaddress BOOLEAN;
BEGIN
WHERE place_id = place.place_id
LOOP
--RAISE WARNING '%',location;
+ -- mix in default names for countries
+ IF location.rank_address = 4 and place.country_code is not NULL THEN
+ FOR country IN
+ SELECT coalesce(name, ''::hstore) as name FROM country_name
+ WHERE country_code = place.country_code LIMIT 1
+ LOOP
+ place.name := country.name || place.name;
+ END LOOP;
+ END IF;
+
IF location.rank_address < 4 THEN
-- no country locations for ranks higher than country
place.country_code := NULL::varchar(2);
-- If no country was included yet, add the name information from country_name.
IF current_rank_address > 4 THEN
FOR location IN
- SELECT name FROM country_name WHERE country_code = place.country_code LIMIT 1
+ SELECT name || coalesce(derived_name, ''::hstore) as name FROM country_name
+ WHERE country_code = place.country_code LIMIT 1
LOOP
--RAISE WARNING '% % %',current_rank_address,searchcountrycode,countryname;
RETURN NEXT ROW(null, null, null, location.name, 'place', 'country', NULL,
location := ROW(null, null, null, hstore('ref', place.postcode), 'place',
'postcode', null, null, false, true, 5, 0)::addressline;
RETURN NEXT location;
+ ELSEIF place.address is not null and place.address ? 'postcode'
+ and not place.address->'postcode' SIMILAR TO '%(,|;)%' THEN
+ location := ROW(null, null, null, hstore('ref', place.address->'postcode'), 'place',
+ 'postcode', null, null, false, true, 5, 0)::addressline;
+ RETURN NEXT location;
END IF;
RETURN;
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Functions for interpreting wkipedia/wikidata tags and computing importance.
DROP TYPE IF EXISTS wikipedia_article_match CASCADE;
--- Functions for address interpolation objects in location_property_osmline.
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
--- Splits the line at the given point and returns the two parts
--- in a multilinestring.
-CREATE OR REPLACE FUNCTION split_line_on_node(line GEOMETRY, point GEOMETRY)
-RETURNS GEOMETRY
- AS $$
-BEGIN
- RETURN ST_Split(ST_Snap(line, point, 0.0005), point);
-END;
-$$
-LANGUAGE plpgsql IMMUTABLE;
+-- Functions for address interpolation objects in location_property_osmline.
CREATE OR REPLACE FUNCTION get_interpolation_address(in_address HSTORE, wayid BIGINT)
IF parent_place_id is null THEN
FOR location IN SELECT place_id FROM placex
WHERE ST_DWithin(geom, placex.geometry, 0.001) and placex.rank_search = 26
- ORDER BY (ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0))+
+ ORDER BY CASE WHEN ST_GeometryType(geom) = 'ST_Line' THEN
+ (ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0))+
ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,0.5))+
- ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,1))) ASC limit 1
+ ST_distance(placex.geometry, ST_LineInterpolatePoint(geom,1)))
+ ELSE ST_distance(placex.geometry, geom) END
+ ASC
+ LIMIT 1
LOOP
parent_place_id := location.place_id;
END LOOP;
LANGUAGE plpgsql STABLE;
-CREATE OR REPLACE FUNCTION osmline_reinsert(node_id BIGINT, geom GEOMETRY)
- RETURNS BOOLEAN
+CREATE OR REPLACE FUNCTION reinsert_interpolation(way_id BIGINT, addr HSTORE,
+ geom GEOMETRY)
+ RETURNS INT
AS $$
DECLARE
- existingline RECORD;
+ existing BIGINT[];
BEGIN
- SELECT w.id FROM planet_osm_ways w, location_property_osmline p
- WHERE p.linegeo && geom and p.osm_id = w.id and p.indexed_status = 0
- and node_id = any(w.nodes) INTO existingline;
-
- IF existingline.id is not NULL THEN
- DELETE FROM location_property_osmline WHERE osm_id = existingline.id;
- INSERT INTO location_property_osmline (osm_id, address, linegeo)
- SELECT osm_id, address, geometry FROM place
- WHERE osm_type = 'W' and osm_id = existingline.id;
- END IF;
-
- RETURN true;
+ -- Get the existing entry from the interpolation table.
+ SELECT array_agg(place_id) INTO existing
+ FROM location_property_osmline WHERE osm_id = way_id;
+
+ IF existing IS NULL or array_length(existing, 1) = 0 THEN
+ INSERT INTO location_property_osmline (osm_id, address, linegeo)
+ VALUES (way_id, addr, geom);
+ ELSE
+ -- Update the interpolation table:
+ -- The first entry gets the original data, all other entries
+ -- are removed and will be recreated on indexing.
+ -- (An interpolation can be split up, if it has more than 2 address nodes)
+ UPDATE location_property_osmline
+ SET address = addr,
+ linegeo = geom,
+ startnumber = null,
+ indexed_status = 1
+ WHERE place_id = existing[1];
+ IF array_length(existing, 1) > 1 THEN
+ DELETE FROM location_property_osmline
+ WHERE place_id = any(existing[2:]);
+ END IF;
+ END IF;
+
+ RETURN 1;
END;
$$
LANGUAGE plpgsql;
IF NEW.indexed_status IS NULL THEN
IF NEW.address is NULL OR NOT NEW.address ? 'interpolation'
- OR NEW.address->'interpolation' NOT IN ('odd', 'even', 'all') THEN
- -- other interpolation types than odd/even/all (e.g. numeric ones) are not supported
+ OR NOT (NEW.address->'interpolation' in ('odd', 'even', 'all')
+ or NEW.address->'interpolation' similar to '[1-9]')
+ THEN
+ -- alphabetic interpolation is not supported
RETURN NULL;
END IF;
RETURNS TRIGGER
AS $$
DECLARE
- place_centroid GEOMETRY;
waynodes BIGINT[];
prevnode RECORD;
nextnode RECORD;
startnumber INTEGER;
endnumber INTEGER;
- housenum INTEGER;
+ newstart INTEGER;
+ newend INTEGER;
+ moddiff SMALLINT;
linegeo GEOMETRY;
splitline GEOMETRY;
sectiongeo GEOMETRY;
- interpol_postcode TEXT;
postcode TEXT;
+ stepmod SMALLINT;
BEGIN
-- deferred delete
IF OLD.indexed_status = 100 THEN
RETURN NEW;
END IF;
- NEW.interpolationtype = NEW.address->'interpolation';
-
- place_centroid := ST_PointOnSurface(NEW.linegeo);
- NEW.parent_place_id = get_interpolation_parent(NEW.token_info, NEW.partition,
- place_centroid, NEW.linegeo);
-
- interpol_postcode := token_normalized_postcode(NEW.address->'postcode');
+ NEW.parent_place_id := get_interpolation_parent(NEW.token_info, NEW.partition,
+ ST_PointOnSurface(NEW.linegeo),
+ NEW.linegeo);
NEW.token_info := token_strip_info(NEW.token_info);
IF NEW.address ? '_inherited' THEN
- NEW.address := hstore('interpolation', NEW.interpolationtype);
+ NEW.address := hstore('interpolation', NEW.address->'interpolation');
END IF;
- -- if the line was newly inserted, split the line as necessary
+ -- If the line was newly inserted, split the line as necessary.
IF OLD.indexed_status = 1 THEN
- select nodes from planet_osm_ways where id = NEW.osm_id INTO waynodes;
-
- IF array_upper(waynodes, 1) IS NULL THEN
- RETURN NEW;
+ IF NEW.address->'interpolation' in ('odd', 'even') THEN
+ NEW.step := 2;
+ stepmod := CASE WHEN NEW.address->'interpolation' = 'odd' THEN 1 ELSE 0 END;
+ ELSE
+ NEW.step := CASE WHEN NEW.address->'interpolation' = 'all'
+ THEN 1
+ ELSE (NEW.address->'interpolation')::SMALLINT END;
+ stepmod := NULL;
+ END IF;
+
+ SELECT nodes INTO waynodes
+ FROM planet_osm_ways WHERE id = NEW.osm_id;
+
+ IF array_upper(waynodes, 1) IS NULL THEN
+ RETURN NEW;
+ END IF;
+
+ linegeo := null;
+ SELECT null::integer as hnr INTO prevnode;
+
+ -- Go through all nodes on the interpolation line that have a housenumber.
+ FOR nextnode IN
+ SELECT DISTINCT ON (nodeidpos)
+ osm_id, address, geometry,
+ -- Take the postcode from the node only if it has a housenumber itself.
+ -- Note that there is a corner-case where the node has a wrongly
+ -- formatted postcode and therefore 'postcode' contains a derived
+ -- variant.
+ CASE WHEN address ? 'postcode' THEN placex.postcode ELSE NULL::text END as postcode,
+ substring(address->'housenumber','[0-9]+')::integer as hnr
+ FROM placex, generate_series(1, array_upper(waynodes, 1)) nodeidpos
+ WHERE osm_type = 'N' and osm_id = waynodes[nodeidpos]::BIGINT
+ and address is not NULL and address ? 'housenumber'
+ ORDER BY nodeidpos
+ LOOP
+ {% if debug %}RAISE WARNING 'processing point % (%)', nextnode.hnr, ST_AsText(nextnode.geometry);{% endif %}
+ IF linegeo is null THEN
+ linegeo := NEW.linegeo;
+ ELSE
+ splitline := ST_Split(ST_Snap(linegeo, nextnode.geometry, 0.0005), nextnode.geometry);
+ sectiongeo := ST_GeometryN(splitline, 1);
+ linegeo := ST_GeometryN(splitline, 2);
END IF;
- linegeo := NEW.linegeo;
- startnumber := NULL;
-
- FOR nodeidpos in 1..array_upper(waynodes, 1) LOOP
-
- select osm_id, address, geometry
- from place where osm_type = 'N' and osm_id = waynodes[nodeidpos]::BIGINT
- and address is not NULL and address ? 'housenumber' limit 1 INTO nextnode;
- --RAISE NOTICE 'Nextnode.place_id: %s', nextnode.place_id;
- IF nextnode.osm_id IS NOT NULL THEN
- --RAISE NOTICE 'place_id is not null';
- IF nodeidpos > 1 and nodeidpos < array_upper(waynodes, 1) THEN
- -- Make sure that the point is actually on the line. That might
- -- be a bit paranoid but ensures that the algorithm still works
- -- should osm2pgsql attempt to repair geometries.
- splitline := split_line_on_node(linegeo, nextnode.geometry);
- sectiongeo := ST_GeometryN(splitline, 1);
- linegeo := ST_GeometryN(splitline, 2);
+ IF prevnode.hnr is not null
+ -- Check if there are housenumbers to interpolate between the
+ -- regularly mapped housenumbers.
+ -- (Conveniently also fails if one of the house numbers is not a number.)
+ and abs(prevnode.hnr - nextnode.hnr) > NEW.step
+ THEN
+ IF prevnode.hnr < nextnode.hnr THEN
+ startnumber := prevnode.hnr;
+ endnumber := nextnode.hnr;
+ ELSE
+ startnumber := nextnode.hnr;
+ endnumber := prevnode.hnr;
+ sectiongeo := ST_Reverse(sectiongeo);
+ END IF;
+
+ -- Adjust the interpolation, so that only inner housenumbers
+ -- are taken into account.
+ IF stepmod is null THEN
+ newstart := startnumber + NEW.step;
+ ELSE
+ newstart := startnumber + 1;
+ moddiff := newstart % NEW.step - stepmod;
+ IF moddiff < 0 THEN
+ newstart := newstart + (NEW.step + moddiff);
ELSE
- sectiongeo = linegeo;
- END IF;
- endnumber := substring(nextnode.address->'housenumber','[0-9]+')::integer;
-
- IF startnumber IS NOT NULL AND endnumber IS NOT NULL
- AND startnumber != endnumber
- AND ST_GeometryType(sectiongeo) = 'ST_LineString' THEN
-
- IF (startnumber > endnumber) THEN
- housenum := endnumber;
- endnumber := startnumber;
- startnumber := housenum;
- sectiongeo := ST_Reverse(sectiongeo);
- END IF;
-
- -- determine postcode
- postcode := coalesce(interpol_postcode,
- token_normalized_postcode(prevnode.address->'postcode'),
- token_normalized_postcode(nextnode.address->'postcode'),
- postcode);
-
- IF postcode is NULL THEN
- SELECT token_normalized_postcode(placex.postcode)
- FROM placex WHERE place_id = NEW.parent_place_id INTO postcode;
- END IF;
- IF postcode is NULL THEN
- postcode := get_nearest_postcode(NEW.country_code, nextnode.geometry);
- END IF;
-
- IF NEW.startnumber IS NULL THEN
- NEW.startnumber := startnumber;
- NEW.endnumber := endnumber;
- NEW.linegeo := sectiongeo;
- NEW.postcode := postcode;
- ELSE
- insert into location_property_osmline
- (linegeo, partition, osm_id, parent_place_id,
- startnumber, endnumber, interpolationtype,
- address, postcode, country_code,
- geometry_sector, indexed_status)
- values (sectiongeo, NEW.partition, NEW.osm_id, NEW.parent_place_id,
- startnumber, endnumber, NEW.interpolationtype,
- NEW.address, postcode,
- NEW.country_code, NEW.geometry_sector, 0);
- END IF;
+ newstart := newstart + moddiff;
END IF;
+ END IF;
+ newend := newstart + ((endnumber - 1 - newstart) / NEW.step) * NEW.step;
+
+ -- If newstart and newend are the same, then this returns a point.
+ sectiongeo := ST_LineSubstring(sectiongeo,
+ (newstart - startnumber)::float / (endnumber - startnumber)::float,
+ (newend - startnumber)::float / (endnumber - startnumber)::float);
+ startnumber := newstart;
+ endnumber := newend;
+
+ -- determine postcode
+ postcode := coalesce(prevnode.postcode, nextnode.postcode, postcode);
+ IF postcode is NULL and NEW.parent_place_id > 0 THEN
+ SELECT placex.postcode FROM placex
+ WHERE place_id = NEW.parent_place_id INTO postcode;
+ END IF;
+ IF postcode is NULL THEN
+ postcode := get_nearest_postcode(NEW.country_code, nextnode.geometry);
+ END IF;
- -- early break if we are out of line string,
- -- might happen when a line string loops back on itself
- IF ST_GeometryType(linegeo) != 'ST_LineString' THEN
- RETURN NEW;
- END IF;
+ -- Add the interpolation. If this is the first segment, just modify
+ -- the interpolation to be inserted, otherwise add an additional one
+ -- (marking it indexed already).
+ IF NEW.startnumber IS NULL THEN
+ NEW.startnumber := startnumber;
+ NEW.endnumber := endnumber;
+ NEW.linegeo := sectiongeo;
+ NEW.postcode := postcode;
+ ELSE
+ INSERT INTO location_property_osmline
+ (linegeo, partition, osm_id, parent_place_id,
+ startnumber, endnumber, step,
+ address, postcode, country_code,
+ geometry_sector, indexed_status)
+ VALUES (sectiongeo, NEW.partition, NEW.osm_id, NEW.parent_place_id,
+ startnumber, endnumber, NEW.step,
+ NEW.address, postcode,
+ NEW.country_code, NEW.geometry_sector, 0);
+ END IF;
- startnumber := substring(nextnode.address->'housenumber','[0-9]+')::integer;
- prevnode := nextnode;
+ -- early break if we are out of line string,
+ -- might happen when a line string loops back on itself
+ IF ST_GeometryType(linegeo) != 'ST_LineString' THEN
+ RETURN NEW;
END IF;
- END LOOP;
+ END IF;
+
+ prevnode := nextnode;
+ END LOOP;
END IF;
- -- marking descendants for reparenting is not needed, because there are
- -- actually no descendants for interpolation lines
RETURN NEW;
END;
$$
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
DROP TYPE IF EXISTS nearfeaturecentr CASCADE;
CREATE TYPE nearfeaturecentr AS (
place_id BIGINT,
centroid GEOMETRY
);
--- feature intersects geoemtry
+-- feature intersects geometry
-- for areas and linestrings they must touch at least along a line
CREATE OR REPLACE FUNCTION is_relevant_geometry(de9im TEXT, geom_type TEXT)
RETURNS BOOLEAN
END
$$ LANGUAGE plpgsql IMMUTABLE;
-create or replace function getNearFeatures(in_partition INTEGER, feature GEOMETRY, maxrank INTEGER) RETURNS setof nearfeaturecentr AS $$
+CREATE OR REPLACE function getNearFeatures(in_partition INTEGER, feature GEOMETRY,
+ feature_centroid GEOMETRY,
+ maxrank INTEGER)
+RETURNS setof nearfeaturecentr AS $$
DECLARE
r nearfeaturecentr%rowtype;
BEGIN
IF in_partition = {{ partition }} THEN
FOR r IN
SELECT place_id, keywords, rank_address, rank_search,
- min(ST_Distance(feature, centroid)) as distance,
+ CASE WHEN isguess THEN ST_Distance(feature, centroid)
+ ELSE min(ST_Distance(feature_centroid, geometry))
+ -- tie breaker when distance is the same (i.e. way is on boundary)
+ + 0.00001 * ST_Distance(feature, centroid)
+ END as distance,
isguess, postcode, centroid
FROM location_area_large_{{ partition }}
WHERE geometry && feature
AND rank_address between from_rank and to_rank
AND token_matches_address(token_info, key, keywords)
GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid
- ORDER BY bool_or(ST_Intersects(geometry, feature)), distance LIMIT 1;
+ ORDER BY bool_or(ST_Intersects(geometry, feature)) DESC, distance LIMIT 1;
RETURN r;
END IF;
{% endfor %}
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
CREATE OR REPLACE FUNCTION place_insert()
RETURNS TRIGGER
AS $$
DECLARE
i INTEGER;
+ country RECORD;
existing RECORD;
existingplacex RECORD;
- existingline RECORD;
- existinggeometry GEOMETRY;
- existingplace_id BIGINT;
- result BOOLEAN;
- partition INTEGER;
+ existingline BIGINT[];
+ interpol RECORD;
BEGIN
-
{% if debug %}
- RAISE WARNING '-----------------------------------------------------------------------------------';
RAISE WARNING 'place_insert: % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,st_area(NEW.geometry);
{% endif %}
- -- filter wrong tupels
- IF ST_IsEmpty(NEW.geometry) OR NOT ST_IsValid(NEW.geometry) OR ST_X(ST_Centroid(NEW.geometry))::text in ('NaN','Infinity','-Infinity') OR ST_Y(ST_Centroid(NEW.geometry))::text in ('NaN','Infinity','-Infinity') THEN
- INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name, country_code, updated, errormessage, prevgeometry, newgeometry)
- VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name, NEW.address->'country', now(), ST_IsValidReason(NEW.geometry), null, NEW.geometry);
--- RAISE WARNING 'Invalid Geometry: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
+
+ -- Filter tuples with bad geometries.
+ IF ST_IsEmpty(NEW.geometry) OR NOT ST_IsValid(NEW.geometry) THEN
+ INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name,
+ country_code, updated, errormessage,
+ prevgeometry, newgeometry)
+ VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name,
+ NEW.address->'country', now(), ST_IsValidReason(NEW.geometry),
+ null, NEW.geometry);
+ {% if debug %}
+ RAISE WARNING 'Invalid Geometry: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
+ {% endif %}
RETURN null;
END IF;
- -- decide, whether it is an osm interpolation line => insert intoosmline, or else just placex
- IF NEW.class='place' and NEW.type='houses' and NEW.osm_type='W' and ST_GeometryType(NEW.geometry) = 'ST_LineString' THEN
- -- Have we already done this place?
- select * from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existing;
-
- -- Get the existing place_id
- select * from location_property_osmline where osm_id = NEW.osm_id INTO existingline;
-
- -- Handle a place changing type by removing the old data (this trigger is executed BEFORE INSERT of the NEW tupel)
- IF existing.osm_type IS NULL THEN
- DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
- END IF;
-
- DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
- DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+ -- Have we already done this place?
+ SELECT * INTO existing
+ FROM place
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
- -- update method for interpolation lines: delete all old interpolation lines with same osm_id (update on place) and insert the new one(s) (they can be split up, if they have > 2 nodes)
- IF existingline.osm_id IS NOT NULL THEN
- delete from location_property_osmline where osm_id = NEW.osm_id;
- END IF;
+ {% if debug %}RAISE WARNING 'Existing: %',existing.osm_id;{% endif %}
- -- for interpolations invalidate all nodes on the line
- update placex p set indexed_status = 2
- from planet_osm_ways w
- where w.id = NEW.osm_id and p.osm_type = 'N' and p.osm_id = any(w.nodes);
+ -- Handle a place changing type by removing the old data.
+ -- (This trigger is executed BEFORE INSERT of the NEW tuple.)
+ IF existing.osm_type IS NULL THEN
+ DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
+ END IF;
+ -- Remove any old logged data.
+ DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+ DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
- INSERT INTO location_property_osmline (osm_id, address, linegeo)
- VALUES (NEW.osm_id, NEW.address, NEW.geometry);
+ -- ---- Interpolation Lines
+ IF NEW.class='place' and NEW.type='houses'
+ and NEW.osm_type='W' and ST_GeometryType(NEW.geometry) = 'ST_LineString'
+ THEN
+ PERFORM reinsert_interpolation(NEW.osm_id, NEW.address, NEW.geometry);
- IF existing.osm_type IS NULL THEN
- return NEW;
- END IF;
+ -- Now invalidate all address nodes on the line.
+ -- They get their parent from the interpolation.
+ UPDATE placex p SET indexed_status = 2
+ FROM planet_osm_ways w
+ WHERE w.id = NEW.osm_id and p.osm_type = 'N' and p.osm_id = any(w.nodes);
- IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
- OR (coalesce(existing.extratags, ''::hstore) != coalesce(NEW.extratags, ''::hstore))
- OR existing.geometry::text != NEW.geometry::text
- THEN
-
- update place set
- name = NEW.name,
- address = NEW.address,
- extratags = NEW.extratags,
- admin_level = NEW.admin_level,
- geometry = NEW.geometry
- where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
+ -- If there is already an entry in place, just update that, if necessary.
+ IF existing.osm_type is not null THEN
+ IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+ OR existing.geometry::text != NEW.geometry::text
+ THEN
+ UPDATE place
+ SET name = NEW.name,
+ address = NEW.address,
+ extratags = NEW.extratags,
+ admin_level = NEW.admin_level,
+ geometry = NEW.geometry
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
+ END IF;
+
+ RETURN NULL;
END IF;
- RETURN NULL;
+ RETURN NEW;
+ END IF;
- ELSE -- insert to placex
-
- -- Patch in additional country names
- IF NEW.admin_level = 2 AND NEW.type = 'administrative'
- AND NEW.address is not NULL AND NEW.address ? 'country' THEN
- SELECT name FROM country_name WHERE country_code = lower(NEW.address->'country') INTO existing;
- IF existing.name IS NOT NULL THEN
- NEW.name = existing.name || NEW.name;
- END IF;
- END IF;
-
- -- Have we already done this place?
- select * from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existing;
-
- -- Get the existing place_id
- select * from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type INTO existingplacex;
-
- -- Handle a place changing type by removing the old data
- -- My generated 'place' types are causing havok because they overlap with real keys
- -- TODO: move them to their own special purpose key/class to avoid collisions
- IF existing.osm_type IS NULL THEN
- DELETE FROM place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class;
- END IF;
+ -- ---- Postcode points.
+ IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
-- Pure postcodes are never queried from placex so we don't add them.
-- location_postcodes is filled from the place table directly.
- IF NEW.class = 'place' AND NEW.type = 'postcode' THEN
- -- Remove old placex entry.
- DELETE FROM placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
-
- IF existing.osm_type IS NOT NULL THEN
- IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
- OR existing.geometry::text != NEW.geometry::text
- THEN
- update place set address = NEW.address, geometry = NEW.geometry
- where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
- END IF;
+ -- Remove any old placex entry.
+ DELETE FROM placex WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id;
- RETURN NULL;
+ IF existing.osm_type IS NOT NULL THEN
+ IF coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+ OR existing.geometry::text != NEW.geometry::text
+ THEN
+ UPDATE place
+ SET name = NEW.name,
+ address = NEW.address,
+ extratags = NEW.extratags,
+ admin_level = NEW.admin_level,
+ geometry = NEW.geometry
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
END IF;
- RETURN NEW;
+ RETURN NULL;
END IF;
- {% if debug %}RAISE WARNING 'Existing: %',existing.osm_id;{% endif %}
- {% if debug %}RAISE WARNING 'Existing PlaceX: %',existingplacex.place_id;{% endif %}
-
- -- Log and discard
- IF existing.geometry is not null AND st_isvalid(existing.geometry)
- AND st_area(existing.geometry) > 0.02
- AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon')
- AND st_area(NEW.geometry) < st_area(existing.geometry)*0.5
- THEN
- INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name, country_code, updated, errormessage, prevgeometry, newgeometry)
- VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name, NEW.address->'country', now(),
- 'Area reduced from '||st_area(existing.geometry)||' to '||st_area(NEW.geometry), existing.geometry, NEW.geometry);
- RETURN null;
- END IF;
+ RETURN NEW;
+ END IF;
- DELETE from import_polygon_error where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
- DELETE from import_polygon_delete where osm_type = NEW.osm_type and osm_id = NEW.osm_id;
+ -- ---- All other place types.
+
+ -- When an area is changed from large to small: log and discard change
+ IF existing.geometry is not null AND ST_IsValid(existing.geometry)
+ AND ST_Area(existing.geometry) > 0.02
+ AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon')
+ AND ST_Area(NEW.geometry) < ST_Area(existing.geometry) * 0.5
+ THEN
+ INSERT INTO import_polygon_error (osm_type, osm_id, class, type, name,
+ country_code, updated, errormessage,
+ prevgeometry, newgeometry)
+ VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name,
+ NEW.address->'country', now(),
+ 'Area reduced from '||st_area(existing.geometry)||' to '||st_area(NEW.geometry),
+ existing.geometry, NEW.geometry);
- -- To paraphrase, if there isn't an existing item, OR if the admin level has changed
- IF existingplacex.osm_type IS NULL OR
- (existingplacex.class = 'boundary' AND
- ((coalesce(existingplacex.admin_level, 15) != coalesce(NEW.admin_level, 15) AND existingplacex.type = 'administrative') OR
- (existingplacex.type != NEW.type)))
- THEN
+ RETURN null;
+ END IF;
- {% if config.get_bool('LIMIT_REINDEXING') %}
- IF existingplacex.osm_type IS NOT NULL THEN
- -- sanity check: ignore admin_level changes on places with too many active children
- -- or we end up reindexing entire countries because somebody accidentally deleted admin_level
- SELECT count(*) INTO i FROM
- (SELECT 'a' FROM placex, place_addressline
- WHERE address_place_id = existingplacex.place_id
- and placex.place_id = place_addressline.place_id
- and indexed_status = 0 and place_addressline.isaddress LIMIT 100001) sub;
- IF i > 100000 THEN
- RETURN null;
- END IF;
- END IF;
- {% endif %}
+ -- If an address node is part of a interpolation line and changes or is
+ -- newly inserted (happens when the node already existed but now gets address
+ -- information), then mark the interpolation line for reparenting.
+ -- (Already here, because interpolation lines are reindexed before nodes,
+ -- so in the second call it would be too late.)
+ IF NEW.osm_type='N'
+ and coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+ THEN
+ FOR interpol IN
+ SELECT DISTINCT osm_id, address, geometry FROM place, planet_osm_ways w
+ WHERE NEW.geometry && place.geometry
+ and place.osm_type = 'W'
+ and place.address ? 'interpolation'
+ and exists (SELECT * FROM location_property_osmline
+ WHERE osm_id = place.osm_id
+ and indexed_status in (0, 2))
+ and w.id = place.osm_id and NEW.osm_id = any (w.nodes)
+ LOOP
+ PERFORM reinsert_interpolation(interpol.osm_id, interpol.address,
+ interpol.geometry);
+ END LOOP;
+ END IF;
- IF existing.osm_type IS NOT NULL THEN
- -- pathological case caused by the triggerless copy into place during initial import
- -- force delete even for large areas, it will be reinserted later
- UPDATE place set geometry = ST_SetSRID(ST_Point(0,0), 4326) where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
- DELETE from place where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
+ -- Get the existing placex entry.
+ SELECT * INTO existingplacex
+ FROM placex
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
+
+ {% if debug %}RAISE WARNING 'Existing PlaceX: %',existingplacex.place_id;{% endif %}
+
+ -- To paraphrase: if there isn't an existing item, OR if the admin level has changed
+ IF existingplacex.osm_type IS NULL
+ or (existingplacex.class = 'boundary'
+ and ((coalesce(existingplacex.admin_level, 15) != coalesce(NEW.admin_level, 15)
+ and existingplacex.type = 'administrative')
+ or existingplacex.type != NEW.type))
+ THEN
+ {% if config.get_bool('LIMIT_REINDEXING') %}
+ -- sanity check: ignore admin_level changes on places with too many active children
+ -- or we end up reindexing entire countries because somebody accidentally deleted admin_level
+ IF existingplacex.osm_type IS NOT NULL THEN
+ SELECT count(*) INTO i FROM
+ (SELECT 'a' FROM placex, place_addressline
+ WHERE address_place_id = existingplacex.place_id
+ and placex.place_id = place_addressline.place_id
+ and indexed_status = 0 and place_addressline.isaddress LIMIT 100001) sub;
+ IF i > 100000 THEN
+ RETURN null;
END IF;
-
- -- No - process it as a new insertion (hopefully of low rank or it will be slow)
- insert into placex (osm_type, osm_id, class, type, name,
- admin_level, address, extratags, geometry)
- values (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name,
- NEW.admin_level, NEW.address, NEW.extratags, NEW.geometry);
-
- {% if debug %}RAISE WARNING 'insert done % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,NEW.name;{% endif %}
-
- RETURN NEW;
+ END IF;
+ {% endif %}
+
+ IF existing.osm_type IS NOT NULL THEN
+ -- Pathological case caused by the triggerless copy into place during initial import
+ -- force delete even for large areas, it will be reinserted later
+ UPDATE place SET geometry = ST_SetSRID(ST_Point(0,0), 4326)
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
+ DELETE FROM place
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
END IF;
- -- Special case for polygon shape changes because they tend to be large and we can be a bit clever about how we handle them
- IF existing.geometry::text != NEW.geometry::text
- AND ST_GeometryType(existing.geometry) in ('ST_Polygon','ST_MultiPolygon')
- AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon')
- THEN
-
- -- Get the version of the geometry actually used (in placex table)
- select geometry from placex where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type into existinggeometry;
-
- -- Performance limit
- IF st_area(NEW.geometry) < 0.000000001 AND st_area(existinggeometry) < 1 THEN
-
- -- re-index points that have moved in / out of the polygon, could be done as a single query but postgres gets the index usage wrong
- update placex set indexed_status = 2 where indexed_status = 0
- AND ST_Intersects(NEW.geometry, placex.geometry)
- AND NOT ST_Intersects(existinggeometry, placex.geometry)
- AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
+ -- Process it as a new insertion
+ INSERT INTO placex (osm_type, osm_id, class, type, name,
+ admin_level, address, extratags, geometry)
+ VALUES (NEW.osm_type, NEW.osm_id, NEW.class, NEW.type, NEW.name,
+ NEW.admin_level, NEW.address, NEW.extratags, NEW.geometry);
- update placex set indexed_status = 2 where indexed_status = 0
- AND ST_Intersects(existinggeometry, placex.geometry)
- AND NOT ST_Intersects(NEW.geometry, placex.geometry)
- AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
+ {% if debug %}RAISE WARNING 'insert done % % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type,NEW.name;{% endif %}
- END IF;
+ RETURN NEW;
+ END IF;
+ -- Special case for polygon shape changes because they tend to be large
+ -- and we can be a bit clever about how we handle them
+ IF existing.geometry::text != NEW.geometry::text
+ AND ST_GeometryType(existing.geometry) in ('ST_Polygon','ST_MultiPolygon')
+ AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon')
+ THEN
+ -- Performance limit
+ IF ST_Area(NEW.geometry) < 0.000000001 AND ST_Area(existingplacex.geometry) < 1
+ THEN
+ -- re-index points that have moved in / out of the polygon.
+ -- Could be done as a single query but postgres gets the index usage wrong.
+ update placex set indexed_status = 2 where indexed_status = 0
+ AND ST_Intersects(NEW.geometry, placex.geometry)
+ AND NOT ST_Intersects(existingplacex.geometry, placex.geometry)
+ AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
+
+ update placex set indexed_status = 2 where indexed_status = 0
+ AND ST_Intersects(existingplacex.geometry, placex.geometry)
+ AND NOT ST_Intersects(NEW.geometry, placex.geometry)
+ AND rank_search > existingplacex.rank_search AND (rank_search < 28 or name is not null);
END IF;
+ END IF;
- IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
- OR coalesce(existing.extratags::text, '') != coalesce(NEW.extratags::text, '')
- OR coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
- OR coalesce(existing.admin_level, 15) != coalesce(NEW.admin_level, 15)
- OR existing.geometry::text != NEW.geometry::text
- THEN
-
- update place set
- name = NEW.name,
- address = NEW.address,
- extratags = NEW.extratags,
- admin_level = NEW.admin_level,
- geometry = NEW.geometry
- where osm_type = NEW.osm_type and osm_id = NEW.osm_id and class = NEW.class and type = NEW.type;
-
-
- IF NEW.class = 'boundary' AND NEW.type = 'postal_code' THEN
- IF NEW.address is NULL OR NOT NEW.address ? 'postcode' THEN
- -- postcode was deleted, no longer retain in placex
- DELETE FROM placex where place_id = existingplacex.place_id;
- RETURN NULL;
- END IF;
-
- NEW.name := hstore('ref', NEW.address->'postcode');
+ -- Has something relevant changed?
+ IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
+ OR coalesce(existing.extratags::text, '') != coalesce(NEW.extratags::text, '')
+ OR coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
+ OR coalesce(existing.admin_level, 15) != coalesce(NEW.admin_level, 15)
+ OR existing.geometry::text != NEW.geometry::text
+ THEN
+ UPDATE place
+ SET name = NEW.name,
+ address = NEW.address,
+ extratags = NEW.extratags,
+ admin_level = NEW.admin_level,
+ geometry = NEW.geometry
+ WHERE osm_type = NEW.osm_type and osm_id = NEW.osm_id
+ and class = NEW.class and type = NEW.type;
+
+ -- Postcode areas are only kept, when there is an actual postcode assigned.
+ IF NEW.class = 'boundary' AND NEW.type = 'postal_code' THEN
+ IF NEW.address is NULL OR NOT NEW.address ? 'postcode' THEN
+ -- postcode was deleted, no longer retain in placex
+ DELETE FROM placex where place_id = existingplacex.place_id;
+ RETURN NULL;
END IF;
- IF NEW.class in ('boundary')
- AND ST_GeometryType(NEW.geometry) not in ('ST_Polygon','ST_MultiPolygon') THEN
- DELETE FROM placex where place_id = existingplacex.place_id;
- RETURN NULL;
- END IF;
+ NEW.name := hstore('ref', NEW.address->'postcode');
+ END IF;
- update placex set
- name = NEW.name,
- address = NEW.address,
- parent_place_id = null,
- extratags = NEW.extratags,
- admin_level = NEW.admin_level,
- indexed_status = 2,
- geometry = NEW.geometry
- where place_id = existingplacex.place_id;
-
- -- if a node(=>house), which is part of a interpolation line, changes (e.g. the street attribute) => mark this line for reparenting
- -- (already here, because interpolation lines are reindexed before nodes, so in the second call it would be too late)
- IF NEW.osm_type='N'
- and (coalesce(existing.address, ''::hstore) != coalesce(NEW.address, ''::hstore)
- or existing.geometry::text != NEW.geometry::text)
- THEN
- result:= osmline_reinsert(NEW.osm_id, NEW.geometry);
- END IF;
+ -- Boundaries must be areas.
+ IF NEW.class in ('boundary')
+ AND ST_GeometryType(NEW.geometry) not in ('ST_Polygon','ST_MultiPolygon')
+ THEN
+ DELETE FROM placex where place_id = existingplacex.place_id;
+ RETURN NULL;
+ END IF;
- -- linked places should get potential new naming and addresses
- IF existingplacex.linked_place_id is not NULL THEN
- update placex x set
- name = p.name,
- extratags = p.extratags,
- indexed_status = 2
- from place p
- where x.place_id = existingplacex.linked_place_id
+ -- Update the placex entry in-place.
+ UPDATE placex
+ SET name = NEW.name,
+ address = NEW.address,
+ parent_place_id = null,
+ extratags = NEW.extratags,
+ admin_level = NEW.admin_level,
+ indexed_status = 2,
+ geometry = NEW.geometry
+ WHERE place_id = existingplacex.place_id;
+
+ -- Invalidate linked places: they potentially get a new name and addresses.
+ IF existingplacex.linked_place_id is not NULL THEN
+ UPDATE placex x
+ SET name = p.name,
+ extratags = p.extratags,
+ indexed_status = 2
+ FROM place p
+ WHERE x.place_id = existingplacex.linked_place_id
and x.indexed_status = 0
and x.osm_type = p.osm_type
and x.osm_id = p.osm_id
and x.class = p.class;
- END IF;
+ END IF;
- IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
- THEN
- IF existingplacex.rank_address between 26 and 27 THEN
- -- When streets change their name, this may have an effect on POI objects
- -- with addr:street tags.
- UPDATE placex SET indexed_status = 2
+ -- Invalidate dependent objects effected by name changes
+ IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
+ THEN
+ IF existingplacex.rank_address between 26 and 27 THEN
+ -- When streets change their name, this may have an effect on POI objects
+ -- with addr:street tags.
+ UPDATE placex SET indexed_status = 2
WHERE indexed_status = 0 and address ? 'street'
and parent_place_id = existingplacex.place_id;
- UPDATE placex SET indexed_status = 2
+ UPDATE placex SET indexed_status = 2
WHERE indexed_status = 0 and rank_search = 30 and address ? 'street'
and ST_DWithin(NEW.geometry, geometry, 0.002);
- ELSEIF existingplacex.rank_address between 16 and 25 THEN
- -- When places change their name, this may have an effect on POI objects
- -- with addr:place tags.
- UPDATE placex SET indexed_status = 2
+ ELSEIF existingplacex.rank_address between 16 and 25 THEN
+ -- When places change their name, this may have an effect on POI objects
+ -- with addr:place tags.
+ UPDATE placex SET indexed_status = 2
WHERE indexed_status = 0 and address ? 'place' and rank_search = 30
and parent_place_id = existingplacex.place_id;
- -- No update of surrounding objects, potentially too expensive.
- END IF;
+ -- No update of surrounding objects, potentially too expensive.
END IF;
END IF;
-
- -- Abort the add (we modified the existing place instead)
- RETURN NULL;
END IF;
+ -- Abort the insertion (we modified the existing place instead)
+ RETURN NULL;
END;
$$ LANGUAGE plpgsql;
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Trigger functions for the placex table.
-- Information returned by update preparation.
country_code TEXT,
class TEXT,
type TEXT,
- linked_place_id BIGINT
+ linked_place_id BIGINT,
+ centroid_x float,
+ centroid_y float
);
-- Retrieve the data needed by the indexer for updating the place.
DECLARE
location RECORD;
result prepare_update_info;
+ extra_names HSTORE;
BEGIN
+ IF not p.address ? '_inherited' THEN
+ result.address := p.address;
+ END IF;
+
-- For POI nodes, check if the address should be derived from a surrounding
-- building.
- IF p.rank_search < 30 OR p.osm_type != 'N' OR p.address is not null THEN
- result.address := p.address;
- ELSE
- -- The additional && condition works around the misguided query
- -- planner of postgis 3.0.
- SELECT placex.address || hstore('_inherited', '') INTO result.address
- FROM placex
- WHERE ST_Covers(geometry, p.centroid)
- and geometry && p.centroid
- and placex.address is not null
- and (placex.address ? 'housenumber' or placex.address ? 'street' or placex.address ? 'place')
- and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
- LIMIT 1;
+ IF p.rank_search = 30 AND p.osm_type = 'N' THEN
+ IF p.address is null THEN
+ -- The additional && condition works around the misguided query
+ -- planner of postgis 3.0.
+ SELECT placex.address || hstore('_inherited', '') INTO result.address
+ FROM placex
+ WHERE ST_Covers(geometry, p.centroid)
+ and geometry && p.centroid
+ and placex.address is not null
+ and (placex.address ? 'housenumber' or placex.address ? 'street' or placex.address ? 'place')
+ and rank_search = 30 AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')
+ LIMIT 1;
+ ELSE
+ -- See if we can inherit additional address tags from an interpolation.
+ -- These will become permanent.
+ FOR location IN
+ SELECT (address - 'interpolation'::text - 'housenumber'::text) as address
+ FROM place, planet_osm_ways w
+ WHERE place.osm_type = 'W' and place.address ? 'interpolation'
+ and place.geometry && p.geometry
+ and place.osm_id = w.id
+ and p.osm_id = any(w.nodes)
+ LOOP
+ result.address := location.address || result.address;
+ END LOOP;
+ END IF;
END IF;
+ -- remove internal and derived names
result.address := result.address - '_unlisted_place'::TEXT;
- result.name := p.name;
+ SELECT hstore(array_agg(key), array_agg(value)) INTO result.name
+ FROM each(p.name) WHERE key not like '\_%';
+
result.class := p.class;
result.type := p.type;
result.country_code := p.country_code;
result.rank_address := p.rank_address;
+ result.centroid_x := ST_X(p.centroid);
+ result.centroid_y := ST_Y(p.centroid);
-- Names of linked places need to be merged in, so search for a linkable
-- place already here.
IF location.place_id is not NULL THEN
result.linked_place_id := location.place_id;
- IF NOT location.name IS NULL THEN
- result.name := location.name || result.name;
+ IF location.name is not NULL THEN
+ {% if debug %}RAISE WARNING 'Names original: %, location: %', result.name, location.name;{% endif %}
+ -- Add all names from the place nodes that deviate from the name
+ -- in the relation with the prefix '_place_'. Deviation means that
+ -- either the value is different or a given key is missing completely
+ SELECT hstore(array_agg('_place_' || key), array_agg(value)) INTO extra_names
+ FROM each(location.name - result.name);
+ {% if debug %}RAISE WARNING 'Extra names: %', extra_names;{% endif %}
+
+ IF extra_names is not null THEN
+ result.name := result.name || extra_names;
+ END IF;
+
+ {% if debug %}RAISE WARNING 'Final names: %', result.name;{% endif %}
END IF;
END IF;
IF location.members[i+1] = 'street' THEN
FOR parent IN
SELECT place_id from placex
- WHERE osm_type = 'W' and osm_id = substring(location.members[i],2)::bigint
+ WHERE osm_type = upper(substring(location.members[i], 1, 1))::char(1)
+ and osm_id = substring(location.members[i], 2)::bigint
and name is not null
and rank_search between 26 and 27
LOOP
END IF;
IF parent_place_id is null and poi_osm_type = 'N' THEN
- -- Is this node part of an interpolation?
- FOR location IN
- SELECT q.parent_place_id
- FROM location_property_osmline q, planet_osm_ways x
- WHERE q.linegeo && bbox and x.id = q.osm_id
- and poi_osm_id = any(x.nodes)
- LIMIT 1
- LOOP
- {% if debug %}RAISE WARNING 'Get parent from interpolation: %', location.parent_place_id;{% endif %}
- RETURN location.parent_place_id;
- END LOOP;
-
FOR location IN
SELECT p.place_id, p.osm_id, p.rank_search, p.address,
coalesce(p.centroid, ST_Centroid(p.geometry)) as centroid
OR position(bnd_name in lower(name->'name')) > 0)
AND placex.class = 'place' AND placex.type = bnd.extratags->'place'
AND placex.osm_type = 'N'
- AND placex.linked_place_id is null
+ AND (placex.linked_place_id is null or placex.linked_place_id = bnd.place_id)
AND placex.rank_search < 26 -- needed to select the right index
AND placex.type != 'postcode'
AND ST_Covers(bnd.geometry, placex.geometry)
WHERE placex.class = 'place' AND placex.osm_type = 'N'
AND placex.extratags ? 'wikidata' -- needed to select right index
AND placex.extratags->'wikidata' = bnd.extratags->'wikidata'
- AND placex.linked_place_id is null
+ AND (placex.linked_place_id is null or placex.linked_place_id = bnd.place_id)
AND placex.rank_search < 26
AND _st_covers(bnd.geometry, placex.geometry)
ORDER BY lower(name->'name') = bnd_name desc
OR (bnd.rank_address = 0 and placex.rank_search = bnd.rank_search))
AND placex.osm_type = 'N'
AND placex.class = 'place'
- AND placex.linked_place_id is null
+ AND (placex.linked_place_id is null or placex.linked_place_id = bnd.place_id)
AND placex.rank_search < 26 -- needed to select the right index
AND placex.type != 'postcode'
AND ST_Covers(bnd.geometry, placex.geometry)
WHERE s.place_id = parent_place_id;
FOR addr_item IN
- SELECT (get_addr_tag_rank(key, country)).*, key,
+ SELECT ranks.*, key,
token_get_address_search_tokens(token_info, key) as search_tokens
- FROM token_get_address_keys(token_info) as key
+ FROM token_get_address_keys(token_info) as key,
+ LATERAL get_addr_tag_rank(key, country) as ranks
WHERE not token_get_address_search_tokens(token_info, key) <@ parent_address_vector
LOOP
addr_place := get_address_place(in_partition, geometry,
maxrank SMALLINT,
token_info JSONB,
geometry GEOMETRY,
+ centroid GEOMETRY,
country TEXT,
OUT parent_place_id BIGINT,
OUT postcode TEXT,
address_havelevel := array_fill(false, ARRAY[maxrank]);
FOR location IN
- SELECT (get_address_place(partition, geometry, from_rank, to_rank,
- extent, token_info, key)).*, key
- FROM (SELECT (get_addr_tag_rank(key, country)).*, key
- FROM token_get_address_keys(token_info) as key) x
+ SELECT apl.*, key
+ FROM (SELECT extra.*, key
+ FROM token_get_address_keys(token_info) as key,
+ LATERAL get_addr_tag_rank(key, country) as extra) x,
+ LATERAL get_address_place(partition, geometry, from_rank, to_rank,
+ extent, token_info, key) as apl
ORDER BY rank_address, distance, isguess desc
LOOP
IF location.place_id is null THEN
END LOOP;
FOR location IN
- SELECT * FROM getNearFeatures(partition, geometry, maxrank)
+ SELECT * FROM getNearFeatures(partition, geometry, centroid, maxrank)
WHERE not addr_place_ids @> ARRAY[place_id]
ORDER BY rank_address, isguess asc,
distance *
{% if not disable_diff_updates %}
-- The following is not needed until doing diff updates, and slows the main index process down
- IF NEW.osm_type = 'N' and NEW.rank_search > 28 THEN
- -- might be part of an interpolation
- result := osmline_reinsert(NEW.osm_id, NEW.geometry);
- ELSEIF NEW.rank_address > 0 THEN
+ IF NEW.rank_address > 0 THEN
IF (ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') AND ST_IsValid(NEW.geometry)) THEN
-- Performance: We just can't handle re-indexing for country level changes
IF st_area(NEW.geometry) < 1 THEN
-- roads may cause reparenting for >27 rank places
update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter);
-- reparenting also for OSM Interpolation Lines (and for Tiger?)
- update location_property_osmline set indexed_status = 2 where indexed_status = 0 and ST_DWithin(location_property_osmline.linegeo, NEW.geometry, diameter);
+ update location_property_osmline set indexed_status = 2 where indexed_status = 0 and startnumber is not null and ST_DWithin(location_property_osmline.linegeo, NEW.geometry, diameter);
ELSEIF NEW.rank_search >= 16 THEN
-- up to rank 16, street-less addresses may need reparenting
update placex set indexed_status = 2 where indexed_status = 0 and rank_search > NEW.rank_search and ST_DWithin(placex.geometry, NEW.geometry, diameter) and (rank_search < 28 or name is not null or address ? 'place');
DELETE FROM place_addressline WHERE place_id = NEW.place_id;
result := deleteRoad(NEW.partition, NEW.place_id);
result := deleteLocationArea(NEW.partition, NEW.place_id, NEW.rank_search);
- UPDATE placex set linked_place_id = null, indexed_status = 2
- where linked_place_id = NEW.place_id;
- -- update not necessary for osmline, cause linked_place_id does not exist
NEW.extratags := NEW.extratags - 'linked_place'::TEXT;
linked_place := NEW.linked_place_id;
NEW.linked_place_id := OLD.linked_place_id;
- IF NEW.linked_place_id is not null THEN
- NEW.token_info := null;
- {% if debug %}RAISE WARNING 'place already linked to %', OLD.linked_place_id;{% endif %}
- RETURN NEW;
- END IF;
+ -- Remove linkage, if we have computed a different new linkee.
+ UPDATE placex SET linked_place_id = null, indexed_status = 2
+ WHERE linked_place_id = NEW.place_id
+ and (linked_place is null or linked_place_id != linked_place);
+ -- update not necessary for osmline, cause linked_place_id does not exist
-- Postcodes are just here to compute the centroids. They are not searchable
-- unless they are a boundary=postal_code.
NEW.class, NEW.type, NEW.admin_level,
(NEW.extratags->'capital') = 'yes',
NEW.address->'postcode');
+
+ -- Short-cut out for linked places. Note that this must happen after the
+ -- address rank has been recomputed. The linking might nullify a shift in
+ -- address rank.
+ IF NEW.linked_place_id is not null THEN
+ NEW.token_info := null;
+ {% if debug %}RAISE WARNING 'place already linked to %', OLD.linked_place_id;{% endif %}
+ RETURN NEW;
+ END IF;
+
-- We must always increase the address level relative to the admin boundary.
IF NEW.class = 'boundary' and NEW.type = 'administrative'
and NEW.osm_type = 'R' and NEW.rank_address > 0
IF NEW.rank_address > 9 THEN
-- Second check that the boundary is not completely contained in a
- -- place area with a higher address rank
+ -- place area with a equal or higher address rank.
FOR location IN
- SELECT rank_address FROM placex
+ SELECT rank_address
+ FROM placex,
+ LATERAL compute_place_rank(country_code, 'A', class, type,
+ admin_level, False, null) prank
WHERE class = 'place' and rank_address < 24
- and rank_address > NEW.rank_address
+ and prank.address_rank >= NEW.rank_address
and geometry && NEW.geometry
and geometry ~ NEW.geometry -- needed because ST_Relate does not do bbox cover test
and ST_Relate(geometry, NEW.geometry, 'T*T***FF*') -- contains but not equal
- ORDER BY rank_address desc LIMIT 1
+ ORDER BY prank.address_rank desc LIMIT 1
LOOP
NEW.rank_address := location.rank_address + 2;
END LOOP;
END IF;
+ ELSEIF NEW.class = 'place'
+ and ST_GeometryType(NEW.geometry) in ('ST_Polygon', 'ST_MultiPolygon')
+ and NEW.rank_address between 16 and 23
+ THEN
+ -- For place areas make sure they are not completely contained in an area
+ -- with a equal or higher address rank.
+ FOR location IN
+ SELECT rank_address
+ FROM placex,
+ LATERAL compute_place_rank(country_code, 'A', class, type,
+ admin_level, False, null) prank
+ WHERE prank.address_rank < 24
+ and prank.address_rank >= NEW.rank_address
+ and geometry && NEW.geometry
+ and geometry ~ NEW.geometry -- needed because ST_Relate does not do bbox cover test
+ and ST_Relate(geometry, NEW.geometry, 'T*T***FF*') -- contains but not equal
+ ORDER BY prank.address_rank desc LIMIT 1
+ LOOP
+ NEW.rank_address := location.rank_address + 2;
+ END LOOP;
ELSEIF NEW.class = 'place' and NEW.osm_type = 'N'
- and NEW.rank_address between 16 and 23
+ and NEW.rank_address between 16 and 23
THEN
- -- If a place node is contained in a admin boundary with the same address level
- -- and has not been linked, then make the node a subpart by increasing the
- -- address rank (city level and above).
+ -- If a place node is contained in an admin or place boundary with the same
+ -- address level and has not been linked, then make the node a subpart
+ -- by increasing the address rank (city level and above).
FOR location IN
- SELECT rank_address FROM placex
- WHERE osm_type = 'R' and class = 'boundary' and type = 'administrative'
- and rank_address = NEW.rank_address
+ SELECT rank_address
+ FROM placex,
+ LATERAL compute_place_rank(country_code, 'A', class, type,
+ admin_level, False, null) prank
+ WHERE osm_type = 'R'
+ and ((class = 'place' and prank.address_rank = NEW.rank_address)
+ or (class = 'boundary' and rank_address = NEW.rank_address))
and geometry && NEW.centroid and _ST_Covers(geometry, NEW.centroid)
LIMIT 1
LOOP
{% if debug %}RAISE WARNING 'Got parent details from search name';{% endif %}
-- determine postcode
- NEW.postcode := coalesce(token_normalized_postcode(NEW.address->'postcode'),
+ NEW.postcode := coalesce(token_get_postcode(NEW.token_info),
location.postcode,
get_nearest_postcode(NEW.country_code, NEW.centroid));
{% endif %}
NEW.token_info := token_strip_info(NEW.token_info);
- -- If the address was inherited from a surrounding building,
- -- do not add it permanently to the table.
- IF NEW.address ? '_inherited' THEN
- IF NEW.address ? '_unlisted_place' THEN
- NEW.address := hstore('_unlisted_place', NEW.address->'_unlisted_place');
- ELSE
- NEW.address := null;
- END IF;
- END IF;
RETURN NEW;
END IF;
-- Full indexing
{% if debug %}RAISE WARNING 'Using full index mode for % %', NEW.osm_type, NEW.osm_id;{% endif %}
IF linked_place is not null THEN
- SELECT * INTO location FROM placex WHERE place_id = linked_place;
+ -- Recompute the ranks here as the ones from the linked place might
+ -- have been shifted to accommodate surrounding boundaries.
+ SELECT place_id, osm_id, class, type, extratags,
+ centroid, geometry,
+ (compute_place_rank(country_code, osm_type, class, type, admin_level,
+ (extratags->'capital') = 'yes', null)).*
+ INTO location
+ FROM placex WHERE place_id = linked_place;
{% if debug %}RAISE WARNING 'Linked %', location;{% endif %}
NEW.centroid := geom;
END IF;
- {% if debug %}RAISE WARNING 'parent address: % rank address: %', parent_address_level, location.rank_address;{% endif %}
- IF location.rank_address > parent_address_level
- and location.rank_address < 26
+ {% if debug %}RAISE WARNING 'parent address: % rank address: %', parent_address_level, location.address_rank;{% endif %}
+ IF location.address_rank > parent_address_level
+ and location.address_rank < 26
THEN
- NEW.rank_address := location.rank_address;
+ NEW.rank_address := location.address_rank;
END IF;
-- merge in extra tags
|| coalesce(NEW.extratags, ''::hstore);
-- mark the linked place (excludes from search results)
- UPDATE placex set linked_place_id = NEW.place_id
+ -- Force reindexing to remove any traces from the search indexes and
+ -- reset the address rank if necessary.
+ UPDATE placex set linked_place_id = NEW.place_id, indexed_status = 2
WHERE place_id = location.place_id;
-- ensure that those places are not found anymore
{% if 'search_name' in db.tables %}
END IF;
END IF;
+ {% if not disable_diff_updates %}
+ IF OLD.rank_address != NEW.rank_address THEN
+ -- After a rank shift all addresses containing us must be updated.
+ UPDATE placex p SET indexed_status = 2 FROM place_addressline pa
+ WHERE pa.address_place_id = NEW.place_id and p.place_id = pa.place_id
+ and p.indexed_status = 0 and p.rank_address between 4 and 25;
+ END IF;
+ {% endif %}
+
IF NEW.admin_level = 2
AND NEW.class = 'boundary' AND NEW.type = 'administrative'
AND NEW.country_code IS NOT NULL AND NEW.osm_type = 'R'
THEN
- -- Update the list of country names. Adding an additional sanity
- -- check here: make sure the country does overlap with the area where
- -- we expect it to be as per static country grid.
+ -- Update the list of country names.
+ -- Only take the name from the largest area for the given country code
+ -- in the hope that this is the authoritative one.
+ -- Also replace any old names so that all mapping mistakes can
+ -- be fixed through regular OSM updates.
FOR location IN
- SELECT country_code FROM country_osm_grid
- WHERE ST_Covers(geometry, NEW.centroid) and country_code = NEW.country_code
+ SELECT osm_id FROM placex
+ WHERE rank_search = 4 and osm_type = 'R'
+ and country_code = NEW.country_code
+ ORDER BY ST_Area(geometry) desc
LIMIT 1
LOOP
- {% if debug %}RAISE WARNING 'Updating names for country '%' with: %', NEW.country_code, NEW.name;{% endif %}
- UPDATE country_name SET name = name || NEW.name WHERE country_code = NEW.country_code;
+ IF location.osm_id = NEW.osm_id THEN
+ {% if debug %}RAISE WARNING 'Updating names for country '%' with: %', NEW.country_code, NEW.name;{% endif %}
+ UPDATE country_name SET derived_name = NEW.name WHERE country_code = NEW.country_code;
+ END IF;
END LOOP;
END IF;
END IF;
SELECT * FROM insert_addresslines(NEW.place_id, NEW.partition, max_rank,
- NEW.token_info, geom, NEW.country_code)
+ NEW.token_info, geom, NEW.centroid,
+ NEW.country_code)
INTO NEW.parent_place_id, NEW.postcode, nameaddress_vector;
{% if debug %}RAISE WARNING 'RETURN insert_addresslines: %, %, %', NEW.parent_place_id, NEW.postcode, nameaddress_vector;{% endif %}
- NEW.postcode := coalesce(token_normalized_postcode(NEW.address->'postcode'),
- NEW.postcode);
+ NEW.postcode := coalesce(token_get_postcode(NEW.token_info), NEW.postcode);
-- if we have a name add this to the name search table
IF NEW.name IS NOT NULL THEN
NEW.postcode := get_nearest_postcode(NEW.country_code, NEW.geometry);
END IF;
- {% if debug %}RAISE WARNING 'place update % % finsihed.', NEW.osm_type, NEW.osm_id;{% endif %}
+ {% if debug %}RAISE WARNING 'place update % % finished.', NEW.osm_type, NEW.osm_id;{% endif %}
NEW.token_info := token_strip_info(NEW.token_info);
RETURN NEW;
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Trigger functions for location_postcode table.
NEW.parent_place_id = 0;
FOR location IN
SELECT place_id
- FROM getNearFeatures(partition, NEW.geometry, NEW.rank_search)
+ FROM getNearFeatures(partition, NEW.geometry, NEW.geometry, NEW.rank_search)
WHERE NOT isguess ORDER BY rank_address DESC, distance asc LIMIT 1
LOOP
NEW.parent_place_id = location.place_id;
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Functions related to search and address ranks
-- Return an approximate search radius according to the search rank.
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Assorted helper functions for the triggers.
CREATE OR REPLACE FUNCTION geometry_sector(partition INTEGER, place geometry)
-- RAISE WARNING 'near osm fallback: %', ST_AsText(place_centre);
- --
- FOR nearcountry IN
- SELECT country_code from country_osm_grid
- WHERE st_dwithin(geometry, place_centre, 0.5)
- ORDER BY st_distance(geometry, place_centre) asc, area asc limit 1
- LOOP
- RETURN nearcountry.country_code;
- END LOOP;
-
RETURN NULL;
END;
$$
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Indices used only during search and update.
-- These indices are created only after the indexing process is done.
AND name is not null AND indexed_status = 0 AND linked_place_id is null;
CREATE INDEX IF NOT EXISTS idx_osmline_parent_place_id
- ON location_property_osmline USING BTREE (parent_place_id) {{db.tablespace.search_index}};
+ ON location_property_osmline USING BTREE (parent_place_id) {{db.tablespace.search_index}}
+ WHERE parent_place_id is not null;
CREATE INDEX IF NOT EXISTS idx_osmline_parent_osm_id
ON location_property_osmline USING BTREE (osm_id) {{db.tablespace.search_index}};
{% if postgres.has_index_non_key_column %}
CREATE INDEX IF NOT EXISTS idx_placex_housenumber
- ON placex USING btree (parent_place_id) INCLUDE (housenumber) WHERE housenumber is not null;
+ ON placex USING btree (parent_place_id)
+ INCLUDE (housenumber) {{db.tablespace.search_index}}
+ WHERE housenumber is not null;
CREATE INDEX IF NOT EXISTS idx_osmline_parent_osm_id_with_hnr
- ON location_property_osmline USING btree(parent_place_id) INCLUDE (startnumber, endnumber);
+ ON location_property_osmline USING btree(parent_place_id)
+ INCLUDE (startnumber, endnumber) {{db.tablespace.search_index}}
+ WHERE startnumber is not null;
{% endif %}
{% endif %}
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
drop table IF EXISTS search_name_blank CASCADE;
CREATE TABLE search_name_blank (
place_id BIGINT,
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
DROP TABLE IF EXISTS gb_postcode;
CREATE TABLE gb_postcode (
id integer,
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- insert creates the location tables, creates location indexes if indexed == true
CREATE TRIGGER placex_before_insert BEFORE INSERT ON placex
FOR EACH ROW EXECUTE PROCEDURE placex_insert();
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
drop table if exists import_status;
CREATE TABLE import_status (
lastimportdate timestamp with time zone NOT NULL,
DROP TABLE IF EXISTS nominatim_properties;
CREATE TABLE nominatim_properties (
- property TEXT,
+ property TEXT NOT NULL,
value TEXT
);
GRANT SELECT ON TABLE nominatim_properties TO "{{config.DATABASE_WEBUSER}}";
parent_place_id BIGINT,
startnumber INTEGER,
endnumber INTEGER,
+ step SMALLINT,
partition SMALLINT,
linegeo GEOMETRY,
- interpolationtype TEXT,
postcode TEXT);
GRANT SELECT ON location_property_tiger TO "{{config.DATABASE_WEBUSER}}";
indexed_date TIMESTAMP,
startnumber INTEGER,
endnumber INTEGER,
+ step SMALLINT,
partition SMALLINT,
indexed_status SMALLINT,
linegeo GEOMETRY,
- interpolationtype TEXT,
address HSTORE,
token_info JSONB, -- custom column for tokenizer use only
postcode TEXT,
){{db.tablespace.search_data}};
CREATE UNIQUE INDEX idx_osmline_place_id ON location_property_osmline USING BTREE (place_id) {{db.tablespace.search_index}};
CREATE INDEX idx_osmline_geometry_sector ON location_property_osmline USING BTREE (geometry_sector) {{db.tablespace.address_index}};
-CREATE INDEX idx_osmline_linegeo ON location_property_osmline USING GIST (linegeo) {{db.tablespace.search_index}};
+CREATE INDEX idx_osmline_linegeo ON location_property_osmline USING GIST (linegeo) {{db.tablespace.search_index}}
+ WHERE startnumber is not null;
GRANT SELECT ON location_property_osmline TO "{{config.DATABASE_WEBUSER}}";
drop table IF EXISTS search_name;
-- Add one for lookup of associated street relations.
CREATE INDEX planet_osm_rels_parts_associated_idx ON planet_osm_rels USING gin(parts) WHERE tags @> ARRAY['associatedStreet'];
+-- Needed for lookups if a node is part of an interpolation.
+CREATE INDEX IF NOT EXISTS idx_place_interpolations
+ ON place USING gist(geometry) {{db.tablespace.address_index}}
+ WHERE osm_type = 'W' and address ? 'interpolation';
+
GRANT SELECT ON table country_osm_grid to "{{config.DATABASE_WEBUSER}}";
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
--index only on parent_place_id
CREATE INDEX IF NOT EXISTS idx_location_property_tiger_parent_place_id_imp
ON location_property_tiger_import (parent_place_id)
{% if postgres.has_index_non_key_column %}
- INCLUDE (startnumber, endnumber)
+ INCLUDE (startnumber, endnumber, step)
{% endif %}
{{db.tablespace.aux_index}};
CREATE UNIQUE INDEX IF NOT EXISTS idx_location_property_tiger_place_id_imp
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
DROP TABLE IF EXISTS location_property_tiger_import;
-CREATE TABLE location_property_tiger_import (linegeo GEOMETRY, place_id BIGINT, partition INTEGER, parent_place_id BIGINT, startnumber INTEGER, endnumber INTEGER, interpolationtype TEXT, postcode TEXT);
+CREATE TABLE location_property_tiger_import (
+ linegeo GEOMETRY,
+ place_id BIGINT,
+ partition INTEGER,
+ parent_place_id BIGINT,
+ startnumber INTEGER,
+ endnumber INTEGER,
+ step SMALLINT,
+ postcode TEXT);
CREATE OR REPLACE FUNCTION tiger_line_import(linegeo GEOMETRY, in_startnumber INTEGER,
in_endnumber INTEGER, interpolationtype TEXT,
BEGIN
IF in_endnumber > in_startnumber THEN
- startnumber = in_startnumber;
- endnumber = in_endnumber;
+ startnumber := in_startnumber;
+ endnumber := in_endnumber;
ELSE
- startnumber = in_endnumber;
- endnumber = in_startnumber;
+ startnumber := in_endnumber;
+ endnumber := in_startnumber;
+ linegeo := ST_Reverse(linegeo);
END IF;
IF startnumber < 0 THEN
END IF;
-- Filter out really broken tiger data
- IF numberrange > 0 AND (numberrange::float/stepsize::float > 500)
- AND ST_length(linegeo)/(numberrange::float/stepsize::float) < 0.000001 THEN
+ IF numberrange > 0
+ and numberrange::float/stepsize::float > 500
+ and ST_length(linegeo)/(numberrange::float/stepsize::float) < 0.000001
+ THEN
RAISE WARNING 'Road too short for number range % to % (%)',startnumber,endnumber,
ST_length(linegeo)/(numberrange::float/stepsize::float);
RETURN 0;
END IF;
--insert street(line) into import table
-insert into location_property_tiger_import (linegeo, place_id, partition, parent_place_id, startnumber, endnumber, interpolationtype, postcode)
-values (linegeo, nextval('seq_place'), out_partition, out_parent_place_id, startnumber, endnumber, interpolationtype, in_postcode);
+insert into location_property_tiger_import (linegeo, place_id, partition,
+ parent_place_id, startnumber, endnumber,
+ step, postcode)
+values (linegeo, nextval('seq_place'), out_partition,
+ out_parent_place_id, startnumber, endnumber,
+ stepsize, in_postcode);
RETURN 1;
END;
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Get tokens used for searching the given place.
--
-- These are the tokens that will be saved in the search_name table.
CREATE OR REPLACE FUNCTION token_matches_street(info JSONB, street_tokens INTEGER[])
RETURNS BOOLEAN
AS $$
- SELECT (info->>'street')::INTEGER[] <@ street_tokens
+ SELECT (info->>'street')::INTEGER[] && street_tokens
$$ LANGUAGE SQL IMMUTABLE STRICT;
$$ LANGUAGE SQL IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION token_normalized_postcode(postcode TEXT)
+CREATE OR REPLACE FUNCTION token_get_postcode(info JSONB)
RETURNS TEXT
AS $$
- SELECT CASE WHEN postcode SIMILAR TO '%(,|;)%' THEN NULL ELSE upper(trim(postcode))END;
+ SELECT info->>'postcode';
$$ LANGUAGE SQL IMMUTABLE STRICT;
END;
$$
LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION create_analyzed_hnr_id(norm_term TEXT, lookup_terms TEXT[])
+ RETURNS INTEGER
+ AS $$
+DECLARE
+ return_id INTEGER;
+BEGIN
+ SELECT min(word_id) INTO return_id
+ FROM word WHERE word = norm_term and type = 'H';
+
+ IF return_id IS NULL THEN
+ return_id := nextval('seq_word');
+ INSERT INTO word (word_id, word_token, type, word, info)
+ SELECT return_id, lookup_term, 'H', norm_term,
+ json_build_object('lookup', lookup_terms[1])
+ FROM unnest(lookup_terms) as lookup_term;
+ END IF;
+
+ RETURN return_id;
+END;
+$$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION create_postcode_word(postcode TEXT, lookup_terms TEXT[])
+ RETURNS BOOLEAN
+ AS $$
+DECLARE
+ existing INTEGER;
+BEGIN
+ SELECT count(*) INTO existing
+ FROM word WHERE word = postcode and type = 'P';
+
+ IF existing > 0 THEN
+ RETURN TRUE;
+ END IF;
+
+ -- postcodes don't need word ids
+ INSERT INTO word (word_token, type, word)
+ SELECT lookup_term, 'P', postcode FROM unnest(lookup_terms) as lookup_term;
+
+ RETURN FALSE;
+END;
+$$
+LANGUAGE plpgsql;
+
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
DROP TABLE IF EXISTS word;
CREATE TABLE word (
word_id INTEGER,
CREATE INDEX idx_word_full_word ON word
USING btree(word) {{db.tablespace.address_index}}
WHERE type = 'W';
+-- Used when inserting analyzed housenumbers (exclude old-style entries).
+CREATE INDEX idx_word_housenumbers ON word
+ USING btree(word) {{db.tablespace.address_index}}
+ WHERE type = 'H' and word is not null;
GRANT SELECT ON word TO "{{config.DATABASE_WEBUSER}}";
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Get tokens used for searching the given place.
--
-- These are the tokens that will be saved in the search_name table.
$$ LANGUAGE SQL IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION token_normalized_postcode(postcode TEXT)
+CREATE OR REPLACE FUNCTION token_get_postcode(info JSONB)
RETURNS TEXT
AS $$
- SELECT CASE WHEN postcode SIMILAR TO '%(,|;)%' THEN NULL ELSE upper(trim(postcode))END;
+ SELECT info->>'postcode';
$$ LANGUAGE SQL IMMUTABLE STRICT;
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
-- Required for details lookup.
CREATE INDEX IF NOT EXISTS idx_word_word_id
ON word USING BTREE (word_id) {{db.tablespace.search_index}};
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
DROP TABLE IF EXISTS word;
CREATE TABLE word (
word_id INTEGER,
# just use the pgxs makefile
-foreach(suffix ${PostgreSQL_ADDITIONAL_VERSIONS} "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3")
+foreach(suffix ${PostgreSQL_ADDITIONAL_VERSIONS} "14" "13" "12" "11" "10" "9.6")
list(APPEND PG_CONFIG_HINTS
"/usr/pgsql-${suffix}/bin")
endforeach()
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
#include "postgres.h"
#include "fmgr.h"
#include "mb/pg_wchar.h"
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
str_replace(buffer, &len, &changes, " national wildlife refuge area ", 31, " nwra ", 6, 0);
str_replace(buffer, &len, &changes, " national recreation area ", 26, " nra ", 5, 0);
str_replace(buffer, &len, &changes, " air national guard base ", 25, " angb ", 6, 0);
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
#define UTFASCII " \x00""\x01"" \x01""0\x01""1\x01""2\x01""3\x01""4\x01""5\x01""6\x01""7\x01""8\x01""9\x01""a\x01""b\x01""c\x01""d\x01""e\x01""f\x01""g\x01""h\x01""i\x01""j\x01""k\x01""l\x01""m\x01""n\x01""o\x01""p\x01""q\x01""r\x01""s\x01""t\x01""u\x01""v\x01""w\x01""x\x01""y\x01""z\x02""ps\x02""ss\x03""deg\x01""-\x02""14\x02""12\x02""34\x02""ae\x02""th\x02""ij\x02""ng\x02""oe\x02""hv\x02""oi\x02""yr\x02""sh\x02""zh\x02""ts\x02""dz\x02""lj\x02""nj\x02""ou\x02""db\x02""qp\x04""stop\x02""lz\x02""tc\x02""fn\x02""ls\x02""ww\x0a""extra-high\x04""high\x03""mid\x04""tone\x09""extra-low\x03""yin\x04""yang\x04""down\x02""up\x04""left\x05""right\x04""ring\x06""middle\x05""tilde\x06""raised\x05""begin\x03""end\x05""shelf\x05""below\x04""heta\x05""sampi\x0a""pamphylian\x02""ks\x02""ph\x02""kh\x05""koppa\x02""st\x02""sp\x02""ch\x02""ti\x03""sho\x03""san\x02""ie\x02""io\x02""dj\x02""gj\x02""yi\x03""tsh\x02""kj\x03""dzh\x04""shch\x04""hard\x02""iu\x02""ia\x02""gh\x02""ot\x04""1000\x06""100000\x07""1000000\x03""tts\x02""el\x02""en\x02""em\x08""palochka\x03""ghe\x02""ha\x02""de\x03""dje\x03""zje\x04""dzje\x03""lje\x03""nje\x03""sje\x03""tje\x02""ze\x03""lha\x03""rha\x03""yae\x02""qa\x02""we\x05""aleut\x02""rh\x02""ew\x04""alef\x04""ayin\x02""oy\x05""sanah\x05""safha\x05""misra\x0b""sallallahou\x06""alayhe\x0b""rahmatullah\x04""radi\x09""takhallus\x05""hamza\x03""teh\x02""dh\x03""ain\x05""keheh\x05""farsi\x02""an\x02""un\x02""in\x05""small\x03""dot\x03""beh\x03""qaf\x02""tt\x03""tth\x02""bh\x03""hah\x02""ny\x02""dy\x03""cch\x02""dd\x02""dt\x03""ddh\x02""rr\x02""hy\x02""yu\x03""yeh\x03""sad\x03""dal\x03""reh\x06""sindhi\x03""heh\x05""alaph\x02""yh\x07""persian\x07""sogdian\x04""seen\x03""feh\x04""meem\x04""noon\x03""lam\x03""waw\x03""kaf\x05""alifu\x02""hh\x04""ainu\x02""aa\x02""ee\x02""oo\x02""ey\x02""oa\x03""naa\x0a""dagbasinna\x02""ba\x02""pa\x02""ta\x02""ja\x03""cha\x02""da\x02""ra\x03""rra\x02""sa\x03""gba\x02""fa\x02""ka\x02""la\x02""na\x02""ma\x03""nya\x02""wa\x02""ya\x04""jona\x0b""candrabindu\x08""anusvara\x07""visarga\x02""ii\x02""uu\x06""candra\x02""ai\x02""au\x03""kha\x02""ga\x03""gha\x03""nga\x02""ca\x03""jha\x03""tta\x04""ttha\x03""dda\x04""ddha\x03""nna\x03""tha\x03""dha\x04""nnna\x03""pha\x03""bha\x03""lla\x04""llla\x02""va\x03""sha\x03""ssa\x05""nukta\x08""avagraha\x06""virama\x06""udatta\x08""anudatta\x04""khha\x04""ghha\x02""za\x05""dddha\x03""yya\x02""ll\x03""gga\x03""jja\x04""ddda\x03""bba\x06""khanda\x02""on\x02""jh\x02""nn\x03""nnn\x03""lll\x03""aum\x05""udaat\x03""khh\x03""ghh\x04""dddh\x02""yy\x06""yakash\x02""rs\x02""bb\x03""geo\x03""tsa\x03""dza\x05""tuumu\x0b""jihvamuliya\x0b""upadhmaniya\x06""chillu\x08""iruyanna\x06""eyanna\x0a""alpapraana\x07""yayanna\x07""rayanna\x07""dantaja\x09""muurdhaja\x0a""aela-pilla\x05""ketti\x04""diga\x0c""gaetta-pilla\x07""kombuva\x05""kombu\x0b""gayanukitta\x02""ko\x03""kho\x02""yo\x03""tho\x02""so\x07""phinthu\x0b""lakkhangyao\x03""mai\x08""nikhahit\x08""yamakkan\x07""fongman\x0a""angkhankhu\x06""khomut\x03""aae\x02""no\x03""nng\x03""jny\x03""nyj\x04""nndd\x02""nd\x02""mb\x02""lo\x02""om\x04""half\x02""am\x02""ue\x03""uue\x03""yar\x02""ao\x04""tsha\x04""dzha\x03""zha\x02""-a\x04""kssa\x0a""fixed-form\x03""kka\x04""rjes\x04""rnam\x03""sna\x03""lci\x04""mchu\x03""gru\x02""ei\x02""ay\x04""rdel\x02""hn\x02""hm\x04""nnya\x04""shan\x03""mon\x04""tall\x04""asat\x06""medial\x05""great\x03""ssh\x03""kss\x07""western\x07""eastern\x05""rumai\x03""rae\x04""char\x04""jhan\x03""hae\x02""he\x03""hie\x03""har\x03""hoe\x03""ban\x03""gan\x03""don\x03""vin\x03""zen\x03""tan\x03""kan\x03""las\x03""man\x03""nar\x03""par\x04""zhar\x03""tar\x04""phar\x04""khar\x04""ghan\x03""qar\x04""shin\x04""chin\x03""can\x03""jil\x03""cil\x03""xan\x02""fi\x02""yn\x05""elifi\x08""georgian\x03""nny\x06""filler\x02""eo\x03""yeo\x02""ye\x03""wae\x03""weo\x02""wi\x02""eu\x03""a-o\x03""a-u\x04""ya-o\x05""ya-yo\x04""eo-o\x04""eo-u\x05""eo-eu\x05""yeo-o\x05""yeo-u\x04""o-eo\x03""o-e\x04""o-ye\x03""o-o\x03""o-u\x05""yo-ya\x06""yo-yae\x06""yo-yeo\x04""yo-o\x04""yo-i\x03""u-a\x04""u-ae\x07""u-eo-eu\x04""u-ye\x03""u-u\x04""yu-a\x05""yu-eo\x04""yu-e\x06""yu-yeo\x05""yu-ye\x04""yu-u\x04""yu-i\x04""eu-u\x05""eu-eu\x04""yi-u\x03""i-a\x04""i-ya\x03""i-o\x03""i-u\x04""i-eu\x07""i-araea\x05""araea\x08""araea-eo\x02""xh\x0c""nieun-tikeut\x0a""nieun-sios\x0d""nieun-pansios\x0d""nieun-thieuth\x0d""tikeut-kiyeok\x0c""tikeut-rieul\x11""rieul-kiyeok-sios\x0b""rieul-nieun\x0c""rieul-tikeut\x12""rieul-tikeut-hieuh\x0b""hieuh-mieum\x0b""hieuh-pieup\x0b""yeorinhieuh\x02""gg\x03""laa\x02""jj\x02""nb\x02""dg\x02""rn\x02""mn\x02""bg\x02""bn\x03""sza\x02""bs\x03""bsg\x03""bst\x03""bsb\x03""bss\x03""bsj\x02""bj\x02""bc\x02""bt\x02""bp\x03""bbn\x02""sg\x02""sn\x02""sd\x02""sr\x02""sm\x02""sb\x03""sbg\x03""sss\x02""sj\x02""sc\x02""sk\x04""shee\x03""she\x04""shwa\x03""qoa\x03""qha\x03""qhu\x02""ck\x04""qhee\x03""qhe\x02""pb\x02""pn\x04""qhwi\x05""qhwaa\x05""qhwee\x04""qhwe\x04""u-eo\x03""u-i\x02""gs\x02""nh\x02""lg\x02""lm\x02""lb\x02""lt\x02""lp\x02""lh\x02""gl\x03""gsg\x02""ns\x02""nz\x02""nt\x02""tl\x03""lgs\x02""ln\x02""ld\x03""lth\x03""lmg\x03""lms\x03""lbs\x03""lbh\x03""rnp\x03""lss\x02""lk\x02""lq\x02""mg\x02""ml\x02""ms\x03""mss\x02""mz\x02""mc\x02""mh\x02""bl\x02""sl\x02""hl\x02""hb\x03""ddi\x04""ddaa\x04""ddee\x03""dde\x03""ddo\x04""ddwa\x02""hu\x02""hi\x03""haa\x03""hee\x02""ho\x03""jwa\x02""lu\x02""li\x03""lee\x02""le\x03""lwa\x03""hha\x03""hhu\x03""hhi\x04""hhaa\x04""hhee\x03""hhe\x03""hho\x04""hhwa\x02""mu\x02""mi\x03""maa\x03""mee\x02""me\x02""mo\x03""mwa\x03""szu\x03""szi\x04""szaa\x04""szee\x03""sze\x03""szo\x04""szwa\x02""ru\x02""ri\x03""raa\x03""ree\x02""re\x02""ro\x03""rwa\x02""su\x02""si\x03""saa\x03""see\x02""se\x03""swa\x03""shu\x03""shi\x04""shaa\x02""qu\x02""qi\x03""qaa\x03""qee\x02""qe\x02""qo\x04""tzoa\x03""qwa\x02""fu\x03""qwi\x04""qwaa\x04""qwee\x03""qwe\x02""fo\x03""fwa\x03""qhi\x04""qhaa\x03""qho\x03""pwa\x04""qhwa\x03""mya\x02""bu\x02""bi\x03""baa\x03""bee\x02""be\x02""bo\x03""bwa\x02""vu\x02""vi\x03""vaa\x03""vee\x02""ve\x02""vo\x03""vwa\x02""tu\x03""taa\x03""tee\x02""te\x02""to\x03""twa\x02""cu\x02""ci\x03""caa\x03""cee\x02""ce\x02""co\x03""cwa\x02""xa\x02""xu\x02""xi\x03""xaa\x03""xee\x02""xe\x02""xo\x03""bwe\x03""xwa\x03""fwi\x03""xwi\x04""xwaa\x04""xwee\x03""xwe\x04""pwee\x03""pwe\x02""nu\x02""ni\x03""nee\x02""ne\x03""nwa\x03""nyu\x03""nyi\x04""nyaa\x04""nyee\x03""nye\x03""nyo\x04""nywa\x02""ku\x02""ki\x03""kaa\x03""kee\x02""ke\x03""kwa\x03""kwi\x04""kwaa\x04""kwee\x03""kwe\x03""kxa\x03""kxu\x03""kxi\x04""kxaa\x04""kxee\x03""kxe\x03""kxo\x03""hna\x04""kxwa\x04""kxwi\x05""kxwaa\x05""kxwee\x04""kxwe\x03""qua\x03""que\x02""wu\x03""waa\x03""wee\x02""wo\x02""sv\x02""di\x02""zu\x02""zi\x03""zaa\x03""zee\x02""zo\x03""zwa\x03""zhu\x03""zhi\x04""zhaa\x04""zhee\x03""zhe\x03""zho\x04""zhwa\x03""yaa\x03""yee\x02""du\x03""daa\x03""dee\x02""do\x03""dwa\x03""ddu\x02""ju\x02""ji\x03""jaa\x03""jee\x02""je\x02""jo\x02""gu\x02""gi\x03""gaa\x03""gee\x02""ge\x02""go\x03""gwa\x03""gwi\x04""gwaa\x04""gwee\x03""gwe\x03""ggu\x03""ggi\x04""ggaa\x04""ggee\x03""gge\x03""ggo\x03""thu\x03""thi\x04""thaa\x04""thee\x03""the\x04""thwa\x03""chu\x03""chi\x04""chaa\x04""chee\x03""che\x03""cho\x04""chwa\x03""phu\x03""phi\x04""phaa\x04""phee\x03""phe\x03""pho\x04""phwa\x03""tsu\x03""tsi\x04""tsaa\x04""tsee\x03""tse\x03""tso\x04""tswa\x03""tza\x03""tzu\x03""tzi\x04""tzaa\x04""tzee\x03""tze\x03""tzo\x03""faa\x03""fee\x02""fe\x02""pu\x02""pi\x03""paa\x03""pee\x02""pe\x02""po\x03""rya\x03""fya\x02""gv\x02""lv\x03""nah\x02""nv\x03""qui\x03""quo\x03""quu\x03""quv\x02""dv\x03""dla\x03""tla\x03""tle\x03""tli\x03""tlo\x03""tlu\x03""tlv\x03""tsv\x02""wv\x02""yv\x03""aai\x03""wii\x03""woo\x04""paai\x03""pii\x03""poo\x03""pwi\x04""pwii\x03""pwo\x04""pwoo\x04""pwaa\x04""taai\x03""tii\x03""too\x03""twe\x03""twi\x04""twii\x03""two\x04""twoo\x04""twaa\x03""tte\x03""tti\x03""tto\x04""kaai\x03""kii\x03""koo\x04""kwii\x03""kwo\x04""kwoo\x02""kw\x03""keh\x03""kih\x03""koh\x03""kah\x04""caai\x03""cii\x03""coo\x03""cwe\x03""cwi\x04""cwii\x03""cwo\x04""cwoo\x04""cwaa\x04""maai\x03""mii\x03""moo\x03""mwe\x03""mwi\x04""mwii\x03""mwo\x04""mwoo\x04""mwaa\x04""naai\x03""nii\x03""noo\x03""nwe\x04""nwaa\x04""laai\x03""lii\x03""loo\x03""lwe\x03""lwi\x04""lwii\x03""lwo\x04""lwoo\x04""lwaa\x04""saai\x03""sii\x03""soo\x03""swe\x03""swi\x04""swii\x03""swo\x04""swoo\x04""swaa\x02""sw\x03""skw\x04""spwa\x04""stwa\x04""skwa\x04""scwa\x04""shii\x04""shoo\x04""shwe\x04""shwi\x05""shwii\x04""shwo\x05""shwoo\x05""shwaa\x04""yaai\x03""yii\x03""yoo\x03""ywe\x03""ywi\x04""ywii\x03""ywo\x04""ywoo\x03""ywa\x04""ywaa\x04""raai\x03""rii\x03""roo\x04""rwaa\x04""faai\x03""fii\x03""foo\x04""fwaa\x04""thii\x04""thoo\x05""thwaa\x04""tthe\x04""tthi\x04""ttho\x03""tye\x03""tyi\x03""tyo\x03""tya\x03""hii\x03""hoo\x02""hk\x04""qaai\x03""qii\x03""qoo\x04""tlhe\x04""tlhi\x04""tlho\x04""tlha\x05""ngaai\x03""ngi\x04""ngii\x03""ngo\x04""ngoo\x04""ngaa\x03""lhi\x04""lhii\x03""lho\x04""lhoo\x04""lhaa\x03""ghu\x03""gho\x04""ghee\x03""ghi\x03""hwu\x03""hwo\x03""hwe\x04""hwee\x03""hwi\x03""hwa\x03""ttu\x04""ttee\x03""khu\x03""khe\x04""khee\x03""khi\x03""kku\x03""kko\x03""kke\x04""kkee\x03""kki\x02""kk\x03""jju\x03""jjo\x03""jje\x04""jjee\x03""jji\x03""dlu\x03""dlo\x03""dle\x04""dlee\x03""dli\x03""lhu\x03""lhe\x04""lhee\x04""tlhu\x05""tlhee\x04""tlee\x03""dzu\x03""dzo\x03""dze\x04""dzee\x03""dzi\x04""ttsu\x04""ttso\x04""ttse\x05""ttsee\x04""ttsi\x04""ttsa\x03""qai\x04""ngai\x04""nngi\x05""nngii\x04""nngo\x05""nngoo\x04""nnga\x05""nngaa\x03""sso\x02""ac\x03""ear\x03""ior\x08""boundary\x03""ang\x03""zra\x04""todo\x04""sibe\x06""manchu\x02""uk\x03""uuv\x02""ry\x03""ryy\x02""ly\x03""lyy\x02""ua\x02""kr\x03""yan\x09""mukphreng\x09""kemphreng\x04""sa-i\x02""eh\x03""aue\x05""tone-\x03""kva\x03""xva\x05""vowel\x03""aay\x02""uy\x03""oay\x03""uey\x02""iy\x05""final\x03""lae\x04""laev\x04""ngka\x03""mpa\x03""nra\x04""nyca\x03""ulu\x05""cecek\x06""surang\x05""bisah\x05""akara\x05""ikara\x05""ukara\x05""ekara\x06""aikara\x05""okara\x07""rerekan\x06""tedung\x04""suku\x06""taling\x05""pepet\x04""khot\x04""tzir\x02""ef\x03""zal\x06""asyura\x08""panyecek\x09""panglayar\x09""pangwisad\x09""pamingkal\x08""panyakra\x07""panyiku\x08""panghulu\x07""panyuku\x0a""panaelaeng\x08""panolong\x07""pamepet\x0a""paneuleung\x07""pamaaeh\x03""sya\x03""kla\x03""gla\x03""pla\x03""fla\x03""bla\x03""mla\x03""hla\x07""nyin-do\x04""kang\x03""ran\x02""at\x02""ag\x02""al\x03""aak\x03""aaj\x03""aam\x03""aaw\x02""is\x02""ih\x03""iny\x02""ir\x02""uc\x02""ud\x03""unn\x02""ep\x03""edd\x03""err\x03""ott\x02""ob\x02""ov\x02""oh\x07""capital\x04""open\x08""sideways\x03""top\x06""bottom\x06""voiced\x06""turned\x05""alpha\x05""schwa\x03""eng\x04""beta\x05""greek\x05""delta\x05""gamma\x03""rho\x08""cyrillic\x07""insular\x04""iota\x07""upsilon\x03""esh\x03""ezh\x03""eth\x08""reversed\x07""dotless\x06""script\x06""barred\x05""theta\x09""flattened\x02""av\x02""zr\x02""jy\x02""cy\x0c""middle-welsh\x07""epsilon\x03""eta\x07""omicron\x05""omega\x03"" ha\x03"" ga\x03"" zi\x04"" pai\x05"" yong\x05"" bing\x03""tie\x02""et\x03"" xi\x06"" zheng\x06"" chong\x05"" ping\x05"" shan\x06""shapes\x05"" xian\x04"" qia\x05"" jiao\x04"" jue\x04"" hui\x03"" li\x03"" mo\x04"" jin\x05"" zhuo\x04"" shu\x03"" ji\x03"" lu\x03"" le\x04"" you\x04"" sui\x04"" lan\x05"" peng\x03"" bi\x04"" nen\x04"" xia\x04"" zao\x03"" ti\x04"" jie\x04"" nao\x04"" shi\x04"" hua\x05"" lian\x05"" jian\x05"" beng\x06"" jiang\x05"" xing\x04"" bie\x04"" zai\x05"" chou\x04"" sou\x05"" niao\x04"" die\x06"" huang\x04"" dun\x03"" yi\x04"" tuo\x05"" jing\x04"" dai\x04"" cha\x04"" fen\x02""pp\x04"" wan\x04"" sao\x04"" xiu\x04"" gao\x04"" xue\x05"" weng\x03""ecu\x02""cl\x02""cr\x02""ff\x03""mil\x03""pts\x02""dr\x03"" fu\x04"" kou\x04"" chu\x04"" zhe\x03""iii\x02""iv\x03""vii\x04""viii\x02""ix\x03""xii\x05"" tian\x04"" suo\x04"" she\x06"" zhuan\x05"" tang\x06"" zhuai\x04"" yao\x03"" tu\x03"" mi\x05"" zhen\x04"" xie\x04"" lei\x04"" gai\x05"" juan\x05""above\x04"" qiu\x05"" ding\x04"" que\x03""and\x03"" ao\x04"" mei\x03"" ge\x04""with\x03"" qu\x04"" hou\x03""azu\x04""buky\x04""vede\x07""glagoli\x05""dobro\x05""yestu\x07""zhivete\x05""dzelo\x06""zemlja\x04""izhe\x07""initial\x06""djervi\x04""kako\x07""ljudije\x07""myslite\x05""nashi\x03""onu\x06""pokoji\x05""ritsi\x05""slovo\x06""tvrido\x03""uku\x05""fritu\x04""heru\x03""otu\x04""shta\x06""chrivi\x04""yeru\x04""yeri\x04""yati\x07""spidery\x03""yus\x07""iotated\x03""big\x04""fita\x07""izhitsa\x07""shtapic\x0a""trokutasti\x08""latinate\x08""tailless\x04""alfa\x04""vida\x05""dalda\x03""eie\x03""sou\x04""zata\x04""hate\x06""thethe\x05""iauda\x04""kapa\x05""laula\x03""ksi\x04""sima\x03""tau\x03""psi\x03""oou\x09""dialect-p\x03""old\x0d""cryptogrammic\x07""crossed\x08""akhmimic\x08""l-shaped\x03""yab\x04""yabh\x03""yag\x05""yaghh\x06""berber\x03""yaj\x03""yad\x04""yadh\x04""yadd\x05""yaddh\x03""yey\x03""yaf\x03""yak\x06""tuareg\x05""yakhh\x03""yah\x04""yahh\x04""yakh\x03""yaq\x04""yazh\x07""ahaggar\x03""yal\x03""yam\x03""yap\x04""yarr\x04""yagh\x04""ayer\x03""yas\x04""yass\x04""yash\x03""yat\x04""yath\x04""yach\x04""yatt\x03""yav\x03""yaw\x03""yay\x03""yaz\x0a""tawellemet\x04""yazz\x0d""labialization\x03""loa\x03""moa\x03""roa\x03""soa\x04""shoa\x03""boa\x03""toa\x03""coa\x03""noa\x04""nyoa\x03""zoa\x03""doa\x04""ddoa\x03""joa\x04""thoa\x04""choa\x04""phoa\x03""poa\x04""ggwa\x04""ggwi\x05""ggwee\x04""ggwe\x03""ssu\x03""ssi\x04""ssaa\x04""ssee\x03""sse\x03""cca\x03""ccu\x03""cci\x04""ccaa\x04""ccee\x03""cce\x03""cco\x03""zza\x03""zzu\x03""zzi\x04""zzaa\x04""zzee\x03""zze\x03""zzo\x04""ccha\x04""cchu\x04""cchi\x05""cchaa\x05""cchee\x04""cche\x04""ccho\x03""qya\x03""qyu\x03""qyi\x04""qyaa\x04""qyee\x03""qye\x03""qyo\x03""kya\x03""kyu\x03""kyi\x04""kyaa\x04""kyee\x03""kye\x03""kyo\x03""xya\x03""xyu\x03""xyi\x04""xyaa\x04""xyee\x03""xye\x03""xyo\x03""gya\x03""gyu\x03""gyi\x04""gyaa\x04""gyee\x03""gye\x03""gyo\x02""er\x02""es\x05""shcha\x05""es-te\x05""djerv\x09""monograph\x08""iotified\x06""little\x04""full\x08""surround\x08""overlaid\x02""gn\x06""kiyeok\x0b""ssangkiyeok\x0b""kiyeok-sios\x05""nieun\x0b""nieun-cieuc\x0b""nieun-hieuh\x06""tikeut\x0b""ssangtikeut\x05""rieul\x0c""rieul-kiyeok\x0b""rieul-mieum\x0b""rieul-pieup\x0a""rieul-sios\x0d""rieul-thieuth\x0d""rieul-phieuph\x0b""rieul-hieuh\x05""mieum\x05""pieup\x0a""ssangpieup\x0a""pieup-sios\x04""sios\x09""ssangsios\x05""ieung\x05""cieuc\x0a""ssangcieuc\x07""chieuch\x07""khieukh\x07""thieuth\x07""phieuph\x05""hieuh\x0a""ssangnieun\x10""rieul-pieup-sios\x0d""rieul-pansios\x11""rieul-yeorinhieuh\x0b""mieum-pieup\x0a""mieum-sios\x0d""mieum-pansios\x0d""kapyeounmieum\x0c""pieup-kiyeok\x0c""pieup-tikeut\x11""pieup-sios-kiyeok\x11""pieup-sios-tikeut\x0b""pieup-cieuc\x0d""pieup-thieuth\x0d""kapyeounpieup\x12""kapyeounssangpieup\x0b""sios-kiyeok\x0a""sios-nieun\x0b""sios-tikeut\x0a""sios-pieup\x0a""sios-cieuc\x07""pansios\x0a""ssangieung\x08""yesieung\x0d""yesieung-sios\x10""yesieung-pansios\x0f""kapyeounphieuph\x0a""ssanghieuh\x06""araeae\x03""enn\x03""onn\x03""ann\x03""inn\x02""im\x03""ngg\x04""ainn\x04""aunn\x03""ong\x04""innn\x05""ojeon\x06""chamko\x05""jueui\x04"" kua\x03"" wu\x04"" yin\x03"" si\x03"" ye\x04"" nuo\x03"" xu\x06"" xiong\x04"" liu\x04"" lin\x06"" xiang\x04"" xin\x04"" pan\x03"" ma\x05"" qian\x06"" zhong\x02"" n\x06"" cheng\x05"" fang\x04"" zuo\x05"" zhou\x05"" dong\x03"" su\x06"" jiong\x05"" wang\x04"" zhu\x05"" long\x05"" ying\x05"" miao\x03"" yu\x04"" luo\x05"" chai\x04"" hun\x04"" rao\x04"" han\x04"" tai\x03"" ai\x04"" jun\x02"" l\x05"" xiao\x05"" tiao\x04"" zha\x03"" ku\x03"" er\x05"" nang\x03"" qi\x04"" chi\x03"" mu\x03"" se\x06"" qiong\x03"" sa\x03"" pu\x03"" ta\x03"" ou\x05"" mian\x04"" wen\x05"" diao\x04"" mie\x05"" quan\x04"" cai\x06"" liang\x03"" gu\x04"" mao\x04"" gua\x04"" man\x05"" chui\x05"" huan\x05"" gong\x04"" nan\x05"" dian\x04"" yan\x03"" ci\x05"" lang\x03"" he\x04"" tou\x05"" pian\x02"" e\x04"" qie\x04"" rui\x05"" chan\x04"" dan\x04"" duo\x04"" fei\x05"" bang\x03"" ba\x05"" kuai\x05"" shen\x03"" pi\x05"" yang\x04"" bei\x04"" che\x05"" suan\x05"" heng\x04"" gui\x04"" lou\x04"" sun\x04"" zou\x04"" zhi\x04"" jia\x03"" hu\x03"" la\x03"" ke\x04"" wei\x05"" zhao\x04"" kui\x04"" fan\x06"" zhang\x05"" song\x04"" nei\x05"" chen\x04"" guo\x03"" ng\x03"" fa\x04"" hao\x04"" pou\x05"" hong\x04"" tun\x03"" bo\x04"" nie\x04"" wai\x05"" shou\x05"" ling\x04"" lun\x05"" chun\x04"" rou\x03"" ze\x06"" sheng\x04"" bai\x04"" gou\x03"" na\x03"" cu\x04"" kuo\x04"" lao\x04"" huo\x04"" sai\x05"" rong\x03"" ju\x04"" pao\x04"" can\x05"" nian\x05"" xuan\x04"" qin\x03"" bu\x05"" zang\x05"" mang\x04"" dui\x04"" bao\x06"" chang\x04"" gun\x05"" liao\x03"" da\x05"" meng\x05"" qiao\x05"" rang\x04"" yun\x04"" tao\x04"" lai\x04"" ban\x05"" chuo\x03"" nu\x04"" ran\x04"" sha\x04"" dou\x03"" po\x05"" tong\x06"" qiang\x04"" xun\x05"" pang\x04"" cao\x03"" an\x04"" mai\x04"" yue\x05"" huai\x04"" zan\x04"" hai\x05"" luan\x05"" ning\x03"" ya\x05"" ming\x04"" zui\x04"" cui\x03"" de\x05"" bian\x04"" nou\x04"" tui\x05"" zhan\x04"" cen\x04"" min\x03"" zu\x03"" ni\x04"" cuo\x04"" pei\x05"" gang\x05"" yuan\x05"" biao\x04"" dao\x04"" jiu\x04"" run\x03"" wo\x05"" cuan\x04"" ren\x04"" kai\x04"" men\x07"" chuang\x05"" feng\x05"" zhai\x03"" di\x04"" ben\x05"" zong\x05"" ceng\x05"" hang\x04"" nin\x05"" kong\x04"" lie\x06"" kuang\x04"" san\x03"" te\x05"" shun\x03"" ce\x04"" ang\x03"" ru\x07"" shuang\x05"" guai\x03"" wa\x05"" shai\x05"" tuan\x05"" piao\x04"" kun\x04"" qun\x06"" chuai\x05"" shao\x05"" duan\x04"" gen\x06"" guang\x04"" cou\x05"" nuan\x05"" reng\x04"" mou\x04"" nai\x05"" guan\x04"" hen\x06"" chuan\x05"" kuan\x05"" qing\x04"" pin\x05"" kang\x03"" du\x05"" neng\x04"" tan\x05"" cang\x05"" chao\x05"" nong\x04"" kan\x04"" ken\x05"" ting\x04"" gan\x04"" niu\x05"" ruan\x05"" cong\x05"" zeng\x05"" shui\x05"" geng\x05"" shuo\x05"" zuan\x05"" zhui\x03"" en\x05"" leng\x04"" cun\x03"" ne\x04"" bin\x04"" ruo\x04"" kao\x05"" dang\x05"" teng\x03"" ri\x05"" deng\x03"" za\x06"" niang\x03"" ca\x05"" sang\x05"" keng\x06"" shuai\x04"" pie\x04"" tie\x06"" shuan\x05"" chua\x04"" zen\x06"" shang\x03"" pa\x04"" fou\x04"" diu\x03"" fo\x03"" ka\x04"" lia\x04"" zun\x05"" seng\x05"" zhun\x06"" zhuen\x05"" shua\x02"" a\x04"" pen\x02"" m\x04"" gem\x03"" yo\x03"" re\x04"" dia\x04""inch\x06""gallon\x04""giga\x06""guinea\x08""kilogram\x08""kilowatt\x07""gramton\x06""koruna\x08""shilling\x05""dozen\x04""desi\x06""dollar\x07""percent\x08""building\x05""farad\x05""franc\x07""hectare\x04""peso\x07""pfennig\x05""point\x03""hon\x05""micro\x04""mile\x04""mark\x06""micron\x05""rupee\x05""ruble\x03""rem\x08""roentgen\x05""meiji\x02""gb\x03""cal\x02""pf\x09""microgram\x02""hz\x03""khz\x02""mm\x03""ms2\x03""kpa\x03""gpa\x05""rads2\x02""mv\x02""nw\x02""cc\x02""cd\x02""gy\x03""mol\x07"" zhuang\x04"" zei\x02"" t\x05"" zhua\x04"" sen\x04"" hei\x04"" hal\x06"" ppwun\x04"" nay\x04"" yai\x06"" sasou\x04"" kes\x05"" saai\x05"" haai\x03"" so\x07"" akutsu\x05"" gake\x05"" gomi\x04"" ama\x04"" sho\x04"" ten\x04"" gei\x03"" ki\x04"" lue\x04"" miu\x05"" moku\x06"" tochi\x06"" kasei\x07"" kunugi\x06"" hazou\x08"" katsura\x05"" tamo\x0a"" shitamizu\x07"" shibui\x05"" tani\x05"" suei\x05"" diou\x08"" oozutsu\x0d"" tsumekanmuri\x04"" swu\x0c"" deshiguramu\x0b"" miriguramu\x0b"" hekutogura\x07"" tatamu\x04"" nue\x07"" utsubo\x02"" o\x04"" sik\x07"" sasara\x05"" yana\x03""bup\x05"" hata\x03""pap\x04""purx\x05"" kuji\x08"" shinshi\x04""nbap\x05"" kume\x04""nbyx\x09"" nukamiso\x03"" ro\x04""hmyx\x05""hmyrx\x07"" sukumo\x06"" kouji\x05"" kinu\x05"" wata\x04"" sok\x05"" kase\x06"" yingl\x07"" kasuri\x05"" nawa\x07"" odoshi\x05"" horo\x04"" sem\x05"" jung\x03"" un\x04""zzyr\x08"" kaakeru\x04""ssyt\x04""zhux\x09"" yashinau\x03""jyt\x03""qie\x04""njup\x04""nyuo\x08"" shikato\x03""xie\x0a"" tsuraneru\x03""een\x04""ween\x04""bhee\x04""mbee\x04""kpee\x05""mgbee\x04""gbee\x04""dhee\x05""dhhee\x04""ndee\x04""njee\x05""nggee\x03""hin\x03""win\x03""bhi\x03""mbi\x03""kpi\x04""mgbi\x03""gbi\x03""dhi\x04""dhhi\x03""ndi\x03""nji\x04""nggi\x04""ngan\x03""han\x03""wan\x03""mba\x04""kpan\x04""mgba\x04""dhha\x03""nda\x03""nja\x04""ngga\x03""oon\x04""woon\x04""bhoo\x03""boo\x04""mboo\x04""kpoo\x05""mgboo\x04""gboo\x03""voo\x04""dhoo\x05""dhhoo\x03""doo\x04""ndoo\x03""zoo\x04""zhoo\x03""joo\x04""njoo\x05""nggoo\x03""goo\x04""nyoo\x03""hun\x03""wun\x03""bhu\x03""mbu\x03""kpu\x04""mgbu\x03""gbu\x03""dhu\x04""dhhu\x03""ndu\x03""nju\x04""nggu\x04""ngon\x03""won\x03""bho\x03""mbo\x03""kpo\x04""mgbo\x03""gbo\x04""gbon\x03""dho\x04""dhho\x03""ndo\x03""njo\x04""nggo\x04""ngen\x03""hen\x03""wen\x03""bhe\x03""mbe\x03""kpe\x04""kpen\x04""mgbe\x03""gbe\x04""gben\x03""dhe\x04""dhhe\x03""nde\x04""ngge\x05""nggen\x03""gen\x0a""lengthener\x05""ndole\x06""zemlya\x05""broad\x07""neutral\x06""closed\x07""blended\x04""soft\x09""monocular\x09""binocular\x06""double\x0b""multiocular\x03""dwe\x04""dzwe\x04""zhwe\x04""dzze\x04""tswe\x04""tsse\x04""tche\x07""chinese\x06""dotted\x09""left-stem\x05""lower\x08""inverted\x06""stress\x0d""egyptological\x04""heng\x02""tz\x08""tresillo\x09""cuatrillo\x06""broken\x03""rum\x02""vy\x0a""visigothic\x05""thorn\x04""vend\x03""con\x02""us\x03""dum\x03""lum\x03""mum\x03""num\x03""tum\x02""um\x0a""circumflex\x05""colon\x06""equals\x08""saltillo\x08""dvisvara\x07""hasanta\x03""jho\x04""ddho\x03""rro\x09""alternate\x09""voiceless\x09""aspirated\x05""haaru\x03""hta\x04""shya\x04""nyja\x02""ea\x04""ngue\x04""chha\x04""nhue\x03""nha\x04""nhja\x03""nue\x03""ppa\x03""mue\x0b"" obiyaakasu\x04"" noy\x05"" tara\x07"" yadoru\x07"" hesaki\x04""gyon\x05"" sori\x07"" yofune\x05"" susa\x06"" usagi\x04"" nuc\x0b"" kutabireru\x05"" yaji\x07"" sonoko\x04"" hie\x04""nyan\x05"" hagi\x04"" ebi\x09"" kamakiri\x03""dab\x0a"" kamishimo\x05"" yuki\x04"" ena\x06"" hitoe\x08"" chihaya\x07"" tasuki\x08"" yasashi\x03""ren\x03""roe\x07"" segare\x06"" nerau\x07"" utsuke\x03""rim\x09"" shitsuke\x07"" yagate\x07"" suberu\x04"" sip\x03"" ip\x07"" totemo\x04"" kep\x05"" sako\x07"" appare\x06"" otoko\x0b"" sakenomoto\x09"" ishiyumi\x07"" habaki\x06"" irori\x06"" ngaak\x08"" kasugai\x06"" pyeng\x04""byun\x07"" kazari\x05"" yari\x05"" yuru\x07"" phwung\x04""song\x05"" tomo\x07"" kohaze\x03"" on\x07"" oroshi\x05"" shuu\x04"" eri\x07"" namazu\x05"" todo\x07"" kajika\x03""yon\x05"" bora\x05"" mate\x05"" gori\x05"" ugui\x06"" asari\x0a"" subashiri\x09"" kazunoko\x07"" shachi\x06"" dojou\x08"" sukesou\x08"" muroaji\x07"" haraka\x02"" z\x09"" hatahata\x04"" eso\x05"" kyou\x07"" shiira\x06"" mutsu\x04"" nio\x05"" yiao\x06"" shigi\x08"" chidori\x05"" toki\x08"" ikaruga\x07"" kakesu\x06"" isuka\x0c"" kikuitadaki\x08"" tsugumi\x04""jjog\x04""jjon\x04""jjol\x04""jjom\x04""jjob\x04""jjos\x05""jjong\x04""jjoc\x04""jjwa\x05""jjwag\x05""jjwal\x06""jjwass\x05""jjwae\x02""it\x02""ip\x03""iet\x03""iex\x03""iep\x02""ax\x02""ap\x03""uox\x02""uo\x03""uop\x02""ox\x02""op\x02""ex\x03""bit\x03""bix\x03""bip\x04""biet\x04""biex\x03""bie\x04""biep\x03""bat\x03""bax\x03""bap\x04""buox\x03""buo\x04""buop\x03""bot\x03""box\x03""bop\x03""bex\x03""bep\x03""but\x03""bux\x04""burx\x03""bur\x03""byt\x03""byx\x02""by\x03""byp\x04""byrx\x03""byr\x03""pit\x03""pix\x03""pip\x04""piex\x03""pie\x04""piep\x03""pat\x03""pax\x04""puox\x03""puo\x04""puop\x03""pot\x03""pox\x03""pop\x03""put\x03""pux\x03""pup\x03""pur\x03""pyt\x03""pyx\x02""py\x03""pyp\x04""pyrx\x03""pyr\x04""bbit\x04""bbix\x03""bbi\x04""bbip\x05""bbiet\x05""bbiex\x04""bbie\x05""bbiep\x04""bbat\x04""bbax\x04""bbap\x05""bbuox\x04""bbuo\x05""bbuop\x04""bbot\x04""bbox\x03""bbo\x04""bbop\x04""bbex\x03""bbe\x04""bbep\x04""bbut\x04""bbux\x03""bbu\x04""bbup\x05""bburx\x04""bbur\x04""bbyt\x04""bbyx\x03""bby\x04""bbyp\x04""nbit\x04""nbix\x03""nbi\x04""nbip\x05""nbiex\x04""nbie\x05""nbiep\x04""nbat\x04""nbax\x03""nba\x04""nbot\x04""nbox\x03""nbo\x04""nbop\x04""nbut\x04""nbux\x03""nbu\x04""nbup\x05""nburx\x04""nbur\x04""nbyt\x03""nby\x04""nbyp\x05""nbyrx\x04""nbyr\x04""hmit\x04""hmix\x03""hmi\x04""hmip\x05""hmiex\x04""hmie\x05""hmiep\x04""hmat\x04""hmax\x03""hma\x04""hmap\x05""hmuox\x04""hmuo\x05""hmuop\x04""hmot\x04""hmox\x03""hmo\x04""hmop\x04""hmut\x04""hmux\x03""hmu\x04""hmup\x05""hmurx\x04""hmur\x03""hmy\x04""hmyp\x04""hmyr\x03""mit\x03""mix\x03""mip\x04""miex\x03""mie\x04""miep\x03""mat\x03""max\x03""map\x04""muot\x04""muox\x03""muo\x04""muop\x03""mot\x03""mox\x03""mop\x03""mex\x03""mut\x03""mux\x03""mup\x04""murx\x03""mur\x03""myt\x03""myx\x02""my\x03""myp\x03""fit\x03""fix\x03""fip\x03""fat\x03""fax\x03""fap\x03""fox\x03""fop\x03""fut\x03""fux\x03""fup\x04""furx\x03""fur\x03""fyt\x03""fyx\x02""fy\x03""fyp\x03""vit\x03""vix\x03""vip\x04""viet\x04""viex\x03""vie\x04""viep\x03""vat\x03""vax\x03""vap\x03""vot\x03""vox\x03""vop\x03""vex\x03""vep\x03""vut\x03""vux\x03""vup\x04""vurx\x03""vur\x03""vyt\x03""vyx\x03""vyp\x04""vyrx\x03""vyr\x03""dit\x03""dix\x03""dip\x04""diex\x03""die\x04""diep\x03""dat\x03""dax\x03""dap\x04""duox\x03""duo\x03""dox\x03""dop\x03""dex\x03""dep\x03""dut\x03""dux\x03""dup\x04""durx\x03""dur\x03""tit\x03""tix\x03""tip\x04""tiex\x04""tiep\x03""tat\x03""tax\x03""tap\x04""tuot\x04""tuox\x03""tuo\x04""tuop\x03""tot\x03""tox\x03""tex\x03""tep\x03""tut\x03""tux\x03""tup\x04""turx\x03""tur\x04""ddit\x04""ddix\x04""ddip\x05""ddiex\x04""ddie\x05""ddiep\x04""ddat\x04""ddax\x04""ddap\x05""dduox\x04""dduo\x05""dduop\x04""ddot\x04""ddox\x04""ddop\x04""ddex\x04""ddep\x04""ddut\x04""ddux\x04""ddup\x05""ddurx\x04""ddur\x04""ndit\x04""ndix\x04""ndip\x05""ndiex\x04""ndie\x04""ndat\x04""ndax\x04""ndap\x04""ndot\x04""ndox\x04""ndop\x04""ndex\x04""ndep\x04""ndut\x04""ndux\x04""ndup\x05""ndurx\x04""ndur\x04""hnit\x04""hnix\x03""hni\x04""hnip\x05""hniet\x05""hniex\x04""hnie\x05""hniep\x04""hnat\x04""hnax\x04""hnap\x05""hnuox\x04""hnuo\x04""hnot\x04""hnox\x04""hnop\x04""hnex\x03""hne\x04""hnep\x04""hnut\x03""nit\x03""nix\x03""nip\x04""niex\x03""nie\x04""niep\x03""nax\x03""nap\x04""nuox\x03""nuo\x04""nuop\x03""not\x03""nox\x03""nop\x03""nex\x03""nep\x03""nut\x03""nux\x03""nup\x04""nurx\x03""nur\x04""hlit\x04""hlix\x03""hli\x04""hlip\x05""hliex\x04""hlie\x05""hliep\x04""hlat\x04""hlax\x04""hlap\x05""hluox\x04""hluo\x05""hluop\x04""hlox\x03""hlo\x04""hlop\x04""hlex\x03""hle\x04""hlep\x04""hlut\x04""hlux\x03""hlu\x04""hlup\x05""hlurx\x04""hlur\x04""hlyt\x04""hlyx\x03""hly\x04""hlyp\x05""hlyrx\x04""hlyr\x03""lit\x03""lix\x03""lip\x04""liet\x04""liex\x03""lie\x04""liep\x03""lat\x03""lax\x03""lap\x04""luot\x04""luox\x03""luo\x04""luop\x03""lot\x03""lox\x03""lop\x03""lex\x03""lep\x03""lut\x03""lux\x03""lup\x04""lurx\x03""lur\x03""lyt\x03""lyx\x03""lyp\x04""lyrx\x03""lyr\x03""git\x03""gix\x03""gip\x04""giet\x04""giex\x03""gie\x04""giep\x03""gat\x03""gax\x03""gap\x04""guot\x04""guox\x03""guo\x04""guop\x03""got\x03""gox\x03""gop\x03""get\x03""gex\x03""gep\x03""gut\x03""gux\x03""gup\x04""gurx\x03""gur\x03""kit\x03""kix\x03""kip\x04""kiex\x03""kie\x04""kiep\x03""kat\x03""kax\x03""kap\x04""kuox\x03""kuo\x04""kuop\x03""kot\x03""kox\x03""kop\x03""ket\x03""kex\x03""kep\x03""kut\x03""kux\x03""kup\x04""kurx\x03""kur\x04""ggit\x04""ggix\x05""ggiex\x04""ggie\x05""ggiep\x04""ggat\x04""ggax\x04""ggap\x05""gguot\x05""gguox\x04""gguo\x05""gguop\x04""ggot\x04""ggox\x04""ggop\x04""gget\x04""ggex\x04""ggep\x04""ggut\x04""ggux\x04""ggup\x05""ggurx\x04""ggur\x05""mgiex\x04""mgie\x04""mgat\x04""mgax\x03""mga\x04""mgap\x05""mguox\x04""mguo\x05""mguop\x04""mgot\x04""mgox\x03""mgo\x04""mgop\x04""mgex\x03""mge\x04""mgep\x04""mgut\x04""mgux\x03""mgu\x04""mgup\x05""mgurx\x04""mgur\x04""hxit\x04""hxix\x03""hxi\x04""hxip\x05""hxiet\x05""hxiex\x04""hxie\x05""hxiep\x04""hxat\x04""hxax\x03""hxa\x04""hxap\x05""hxuot\x05""hxuox\x04""hxuo\x05""hxuop\x04""hxot\x04""hxox\x03""hxo\x04""hxop\x04""hxex\x03""hxe\x04""hxep\x05""ngiex\x04""ngie\x05""ngiep\x04""ngat\x04""ngax\x04""ngap\x05""nguot\x05""nguox\x04""nguo\x04""ngot\x04""ngox\x04""ngop\x04""ngex\x03""nge\x04""ngep\x03""hit\x04""hiex\x03""hat\x03""hax\x03""hap\x04""huot\x04""huox\x03""huo\x04""huop\x03""hot\x03""hox\x03""hop\x03""hex\x03""hep\x03""wat\x03""wax\x03""wap\x04""wuox\x03""wuo\x04""wuop\x03""wox\x03""wop\x03""wex\x03""wep\x03""zit\x03""zix\x03""zip\x04""ziex\x03""zie\x04""ziep\x03""zat\x03""zax\x03""zap\x04""zuox\x03""zuo\x04""zuop\x03""zot\x03""zox\x03""zop\x03""zex\x03""zep\x03""zut\x03""zux\x03""zup\x04""zurx\x03""zur\x03""zyt\x03""zyx\x02""zy\x03""zyp\x04""zyrx\x03""zyr\x03""cit\x03""cix\x03""cip\x04""ciet\x04""ciex\x03""cie\x04""ciep\x03""cat\x03""cax\x03""cap\x04""cuox\x03""cuo\x04""cuop\x03""cot\x03""cox\x03""cop\x03""cex\x03""cep\x03""cut\x03""cux\x03""cup\x04""curx\x03""cur\x03""cyt\x03""cyx\x03""cyp\x04""cyrx\x03""cyr\x04""zzit\x04""zzix\x04""zzip\x05""zziet\x05""zziex\x04""zzie\x05""zziep\x04""zzat\x04""zzax\x04""zzap\x04""zzox\x04""zzop\x04""zzex\x04""zzep\x04""zzux\x04""zzup\x05""zzurx\x04""zzur\x04""zzyt\x04""zzyx\x03""zzy\x04""zzyp\x05""zzyrx\x04""nzit\x04""nzix\x03""nzi\x04""nzip\x05""nziex\x04""nzie\x05""nziep\x04""nzat\x04""nzax\x03""nza\x04""nzap\x05""nzuox\x04""nzuo\x04""nzox\x04""nzop\x04""nzex\x03""nze\x04""nzux\x03""nzu\x04""nzup\x05""nzurx\x04""nzur\x04""nzyt\x04""nzyx\x03""nzy\x04""nzyp\x05""nzyrx\x04""nzyr\x03""sit\x03""six\x03""sip\x04""siex\x03""sie\x04""siep\x03""sat\x03""sax\x03""sap\x04""suox\x03""suo\x04""suop\x03""sot\x03""sox\x03""sop\x03""sex\x03""sep\x03""sut\x03""sux\x03""sup\x04""surx\x03""sur\x03""syt\x03""syx\x02""sy\x03""syp\x04""syrx\x03""syr\x04""ssit\x04""ssix\x04""ssip\x05""ssiex\x04""ssie\x05""ssiep\x04""ssat\x04""ssax\x04""ssap\x04""ssot\x04""ssox\x04""ssop\x04""ssex\x04""ssep\x04""ssut\x04""ssux\x04""ssup\x04""ssyx\x03""ssy\x04""ssyp\x05""ssyrx\x04""ssyr\x04""zhat\x04""zhax\x04""zhap\x05""zhuox\x04""zhuo\x05""zhuop\x04""zhot\x04""zhox\x04""zhop\x04""zhet\x04""zhex\x04""zhep\x04""zhut\x04""zhup\x05""zhurx\x04""zhur\x04""zhyt\x04""zhyx\x03""zhy\x04""zhyp\x05""zhyrx\x04""zhyr\x04""chat\x04""chax\x04""chap\x05""chuot\x05""chuox\x04""chuo\x05""chuop\x04""chot\x04""chox\x04""chop\x04""chet\x04""chex\x04""chep\x04""chux\x04""chup\x05""churx\x04""chur\x04""chyt\x04""chyx\x03""chy\x04""chyp\x05""chyrx\x04""chyr\x04""rrax\x05""rruox\x04""rruo\x04""rrot\x04""rrox\x04""rrop\x04""rret\x04""rrex\x03""rre\x04""rrep\x04""rrut\x04""rrux\x03""rru\x04""rrup\x05""rrurx\x04""rrur\x04""rryt\x04""rryx\x03""rry\x04""rryp\x05""rryrx\x04""rryr\x04""nrat\x04""nrax\x04""nrap\x04""nrox\x03""nro\x04""nrop\x04""nret\x04""nrex\x03""nre\x04""nrep\x04""nrut\x04""nrux\x03""nru\x04""nrup\x05""nrurx\x04""nrur\x04""nryt\x04""nryx\x03""nry\x04""nryp\x05""nryrx\x04""nryr\x04""shat\x04""shax\x04""shap\x05""shuox\x04""shuo\x05""shuop\x04""shot\x04""shox\x04""shop\x04""shet\x04""shex\x04""shep\x04""shut\x04""shux\x04""shup\x05""shurx\x04""shur\x04""shyt\x04""shyx\x03""shy\x04""shyp\x05""shyrx\x04""shyr\x03""rat\x03""rax\x03""rap\x04""ruox\x03""ruo\x04""ruop\x03""rot\x03""rox\x03""rop\x03""rex\x03""rep\x03""rut\x03""rux\x03""rup\x04""rurx\x03""rur\x03""ryt\x03""ryx\x03""ryp\x04""ryrx\x03""ryr\x03""jit\x03""jix\x03""jip\x04""jiet\x04""jiex\x03""jie\x04""jiep\x04""juot\x04""juox\x03""juo\x04""juop\x03""jot\x03""jox\x03""jop\x03""jut\x03""jux\x03""jup\x04""jurx\x03""jur\x03""jyx\x03""jyp\x04""jyrx\x03""jyr\x03""qit\x03""qix\x03""qip\x04""qiet\x04""qiex\x04""qiep\x04""quot\x04""quox\x04""quop\x03""qot\x03""qox\x03""qop\x03""qut\x03""qux\x03""qup\x04""qurx\x03""qur\x03""qyt\x03""qyx\x02""qy\x03""qyp\x04""qyrx\x03""qyr\x04""jjit\x04""jjix\x04""jjip\x05""jjiet\x05""jjiex\x04""jjie\x05""jjiep\x05""jjuox\x04""jjuo\x05""jjuop\x04""jjot\x04""jjox\x04""jjop\x04""jjut\x04""jjux\x04""jjup\x05""jjurx\x04""jjur\x04""jjyt\x04""jjyx\x03""jjy\x04""jjyp\x04""njit\x04""njix\x04""njip\x05""njiet\x05""njiex\x04""njie\x05""njiep\x05""njuox\x04""njuo\x04""njot\x04""njox\x04""njop\x04""njux\x05""njurx\x04""njur\x04""njyt\x04""njyx\x03""njy\x04""njyp\x05""njyrx\x04""njyr\x04""nyit\x04""nyix\x04""nyip\x05""nyiet\x05""nyiex\x04""nyie\x05""nyiep\x05""nyuox\x05""nyuop\x04""nyot\x04""nyox\x04""nyop\x04""nyut\x04""nyux\x04""nyup\x03""xit\x03""xix\x03""xip\x04""xiet\x04""xiex\x04""xiep\x04""xuox\x03""xuo\x03""xot\x03""xox\x03""xop\x03""xyt\x03""xyx\x02""xy\x03""xyp\x04""xyrx\x03""xyr\x03""yit\x03""yix\x03""yip\x04""yiet\x04""yiex\x03""yie\x04""yiep\x04""yuot\x04""yuox\x03""yuo\x04""yuop\x03""yot\x03""yox\x03""yop\x03""yut\x03""yux\x03""yup\x04""yurx\x03""yur\x03""yyt\x03""yyx\x03""yyp\x04""yyrx\x03""yyr\x03""kug\x03""kun\x03""kul\x03""kum\x03""kub\x03""kus\x04""kung\x04""kweo\x05""kweon\x05""kweol\x06""kweong\x05""kweng\x04""kwig\x04""kwin\x04""kwil\x04""kwim\x04""kwib\x04""kwis\x05""kwing\x04""kyun\x04""kyul\x04""kyum\x03""keu\x04""keug\x04""keun\x04""keul\x04""keum\x04""keub\x05""keung\x03""kig\x03""kin\x03""kil\x03""kim\x03""kib\x03""kis\x04""king\x03""tag\x03""tal\x04""talg\x03""tam\x03""tab\x03""tas\x04""tass\x04""tang\x03""tae\x04""taeg\x04""taen\x04""tael\x04""taem\x04""taeb\x04""taes\x05""taess\x05""taeng\x05""tyang\x03""teo\x04""teog\x04""teon\x04""teol\x05""teolm\x04""teom\x04""teob\x04""teos\x05""teoss\x05""teong\x03""teg\x03""ten\x03""tel\x03""tem\x03""teb\x03""tes\x04""teng\x04""tyeo\x05""tyeon\x06""tyeoss\x04""tyen\x03""tog\x03""ton\x03""tol\x03""tom\x03""tob\x03""tos\x04""tong\x04""twan\x04""twae\x03""toe\x04""toen\x04""toes\x05""toeng\x03""tug\x03""tun\x03""tul\x03""tub\x03""tus\x04""tung\x04""tweo\x06""tweoss\x04""twig\x04""twin\x04""twil\x04""twim\x04""twib\x05""twing\x03""tyu\x04""tyun\x04""tyul\x04""tyum\x05""tyung\x03""teu\x04""teug\x04""teun\x04""teud\x04""teul\x05""teulm\x04""teum\x04""teub\x04""teus\x04""tyin\x04""tyil\x04""tyim\x04""tyib\x03""tig\x03""tin\x03""til\x03""tim\x03""tib\x03""tis\x04""ting\x03""pag\x04""pagg\x03""pan\x03""pal\x04""palm\x03""pam\x03""pab\x03""pas\x04""pass\x04""pang\x03""pae\x04""paeg\x04""paen\x04""pael\x04""paem\x04""paeb\x04""paes\x05""paess\x05""paeng\x03""pya\x04""pyag\x03""peo\x04""peog\x04""peon\x04""peol\x04""peom\x04""peob\x04""peos\x05""peoss\x05""peong\x03""peg\x03""pen\x03""pel\x03""pem\x03""peb\x03""pes\x04""peng\x04""pyeo\x05""pyeon\x05""pyeol\x05""pyeom\x05""pyeob\x06""pyeoss\x06""pyeong\x03""pye\x04""pyel\x04""pyeb\x04""pyes\x03""pog\x03""pon\x03""pol\x03""pom\x03""pob\x03""pos\x04""pong\x05""pwang\x03""poe\x04""poen\x03""pyo\x04""pyon\x04""pyol\x04""pyob\x04""pyos\x03""pug\x03""pun\x03""pud\x03""pul\x04""pulm\x03""pum\x03""pub\x03""pus\x04""pung\x04""pweo\x06""pweong\x04""pwin\x04""pwil\x04""pwim\x04""pwis\x03""pyu\x04""pyun\x04""pyul\x04""pyum\x04""pyus\x05""pyung\x03""peu\x04""peun\x04""peul\x04""peum\x04""peub\x04""peus\x03""pig\x03""pin\x03""pil\x03""pim\x03""pib\x03""pis\x04""ping\x03""hag\x03""hal\x04""halt\x03""ham\x03""hab\x03""has\x04""hang\x04""haeg\x04""haen\x04""hael\x04""haem\x04""haeb\x04""haes\x05""haess\x05""haeng\x03""hya\x05""hyang\x03""heo\x04""heog\x04""heon\x04""heol\x05""heolm\x04""heom\x04""heob\x04""heos\x05""heong\x03""heg\x03""hel\x03""hem\x03""heb\x03""hes\x04""hyeo\x05""hyeog\x05""hyeon\x05""hyeol\x05""hyeom\x05""hyeob\x05""hyeos\x06""hyeoss\x06""hyeong\x03""hye\x04""hyen\x04""hyel\x04""hyeb\x03""hog\x03""hol\x04""holt\x03""hom\x03""hob\x03""hos\x04""hong\x04""hwag\x04""hwan\x04""hwal\x04""hwas\x05""hwang\x04""hwae\x05""hwaeg\x05""hwaen\x05""hwaes\x06""hwaeng\x04""hoeg\x04""hoen\x04""hoel\x04""hoeb\x04""hoes\x05""hoeng\x03""hyo\x04""hyon\x04""hyol\x04""hyob\x04""hyos\x03""hug\x03""hul\x04""hult\x03""hum\x03""hus\x04""hung\x04""hweo\x05""hweon\x05""hweol\x05""hweom\x06""hweong\x04""hweg\x03""gag\x04""gagg\x04""gags\x04""ganj\x04""ganh\x03""gad\x03""gal\x04""galg\x04""galm\x04""galb\x04""gals\x04""galt\x04""galp\x04""galh\x03""gam\x03""gab\x04""gabs\x03""gas\x04""gass\x04""gang\x03""gaj\x03""gac\x03""gak\x03""gah\x03""gae\x04""gaeg\x05""gaegg\x05""gaegs\x04""gaen\x05""gaenj\x05""gaenh\x04""gaed\x04""gael\x05""gaelg\x05""gaelm\x05""gaelb\x05""gaels\x05""gaelt\x05""gaelp\x05""gaelh\x04""gaem\x04""gaeb\x05""gaebs\x04""gaes\x05""gaess\x05""gaeng\x04""gaej\x04""gaec\x04""gaek\x04""gaet\x04""gaep\x04""gaeh\x04""gyag\x05""gyagg\x05""gyags\x04""gyan\x05""gyanj\x05""gyanh\x04""gyad\x04""gyal\x05""gyalg\x05""gyalm\x05""gyalb\x05""gyals\x05""gyalt\x05""gyalp\x05""gyalh\x04""gyam\x04""gyab\x05""gyabs\x04""gyas\x05""gyass\x05""gyang\x04""gyaj\x04""gyac\x04""gyak\x04""gyat\x04""gyap\x04""gyah\x04""gyae\x05""gyaeg\x06""gyaegg\x06""gyaegs\x05""gyaen\x06""gyaenj\x06""gyaenh\x05""gyaed\x05""gyael\x06""gyaelg\x06""gyaelm\x06""gyaelb\x06""gyaels\x06""gyaelt\x06""gyaelp\x06""gyaelh\x05""gyaem\x05""gyaeb\x06""gyaebs\x05""gyaes\x06""gyaess\x06""gyaeng\x05""gyaej\x05""gyaec\x05""gyaek\x05""gyaet\x05""gyaep\x05""gyaeh\x04""geog\x05""geogg\x05""geogs\x04""geon\x05""geonj\x05""geonh\x04""geod\x04""geol\x05""geolg\x05""geolm\x05""geolb\x05""geols\x05""geolt\x05""geolp\x05""geolh\x04""geom\x04""geob\x05""geobs\x04""geos\x05""geoss\x05""geong\x04""geoj\x04""geoc\x04""geok\x04""geot\x04""geop\x04""geoh\x03""geg\x04""gegg\x04""gegs\x04""genj\x04""genh\x03""ged\x03""gel\x04""gelg\x04""gelm\x04""gelb\x04""gels\x04""gelt\x04""gelp\x04""gelh\x03""gem\x03""geb\x04""gebs\x03""ges\x04""gess\x04""geng\x03""gej\x03""gec\x03""gek\x03""geh\x04""gyeo\x05""gyeog\x06""gyeogg\x06""gyeogs\x05""gyeon\x06""gyeonj\x06""gyeonh\x05""gyeod\x05""gyeol\x06""gyeolg\x06""gyeolm\x06""gyeolb\x06""gyeols\x06""gyeolt\x06""gyeolp\x06""gyeolh\x05""gyeom\x05""gyeob\x06""gyeobs\x05""gyeos\x06""gyeoss\x06""gyeong\x05""gyeoj\x05""gyeoc\x05""gyeok\x05""gyeot\x05""gyeop\x05""gyeoh\x04""gyeg\x05""gyegg\x05""gyegs\x04""gyen\x05""gyenj\x05""gyenh\x04""gyed\x04""gyel\x05""gyelg\x05""gyelm\x05""gyelb\x05""gyels\x05""gyelt\x05""gyelp\x05""gyelh\x04""gyem\x04""gyeb\x05""gyebs\x04""gyes\x05""gyess\x05""gyeng\x04""gyej\x04""gyec\x04""gyek\x04""gyet\x04""gyep\x04""gyeh\x03""gog\x04""gogg\x04""gogs\x03""gon\x04""gonj\x04""gonh\x03""god\x03""gol\x04""golg\x04""golm\x04""golb\x04""gols\x04""golt\x04""golp\x04""golh\x03""gom\x03""gob\x04""gobs\x03""gos\x04""goss\x04""gong\x03""goj\x03""goc\x03""gok\x03""goh\x04""gwag\x05""gwagg\x05""gwags\x04""gwan\x05""gwanj\x05""gwanh\x04""gwad\x04""gwal\x05""gwalg\x05""gwalm\x05""gwalb\x05""gwals\x05""gwalt\x05""gwalp\x05""gwalh\x04""gwam\x04""gwab\x05""gwabs\x04""gwas\x05""gwass\x05""gwang\x04""gwaj\x04""gwac\x04""gwak\x04""gwat\x04""gwap\x04""gwah\x04""gwae\x05""gwaeg\x06""gwaegg\x06""gwaegs\x05""gwaen\x06""gwaenj\x06""gwaenh\x05""gwaed\x05""gwael\x06""gwaelg\x06""gwaelm\x06""gwaelb\x06""gwaels\x06""gwaelt\x06""gwaelp\x06""gwaelh\x05""gwaem\x05""gwaeb\x06""gwaebs\x05""gwaes\x06""gwaess\x06""gwaeng\x05""gwaej\x05""gwaec\x05""gwaek\x05""gwaet\x05""gwaep\x05""gwaeh\x03""goe\x04""goeg\x05""goegg\x05""goegs\x04""goen\x05""goenj\x05""goenh\x04""goed\x04""goel\x05""goelg\x05""goelm\x05""goelb\x05""goels\x05""goelt\x05""goelp\x05""goelh\x04""goem\x04""goeb\x05""goebs\x04""goes\x05""goess\x05""goeng\x04""goej\x04""goec\x04""goek\x04""goet\x04""goep\x04""goeh\x04""gyog\x05""gyogg\x05""gyogs\x05""gyonj\x05""gyonh\x04""gyod\x04""gyol\x05""gyolg\x05""gyolm\x05""gyolb\x05""gyols\x05""gyolt\x05""gyolp\x05""gyolh\x04""gyom\x04""gyob\x05""gyobs\x04""gyos\x05""gyoss\x05""gyong\x04""gyoj\x04""gyoc\x04""gyok\x04""gyot\x04""gyop\x04""gyoh\x03""gug\x04""gugg\x04""gugs\x03""gun\x04""gunj\x04""gunh\x03""gud\x03""gul\x04""gulg\x04""gulm\x04""gulb\x04""guls\x04""gult\x04""gulp\x04""gulh\x03""gum\x03""gub\x04""gubs\x03""gus\x04""guss\x04""gung\x03""guj\x03""guc\x03""guk\x03""guh\x04""gweo\x05""gweog\x06""gweogg\x06""gweogs\x05""gweon\x06""gweonj\x06""gweonh\x05""gweod\x05""gweol\x06""gweolg\x06""gweolm\x06""gweolb\x06""gweols\x06""gweolt\x06""gweolp\x06""gweolh\x05""gweom\x05""gweob\x06""gweobs\x05""gweos\x06""gweoss\x06""gweong\x05""gweoj\x05""gweoc\x05""gweok\x05""gweot\x05""gweop\x05""gweoh\x04""gweg\x05""gwegg\x05""gwegs\x04""gwen\x05""gwenj\x05""gwenh\x04""gwed\x04""gwel\x05""gwelg\x05""gwelm\x05""gwelb\x05""gwels\x05""gwelt\x05""gwelp\x05""gwelh\x04""gwem\x04""gweb\x05""gwebs\x04""gwes\x05""gwess\x05""gweng\x04""gwej\x04""gwec\x04""gwek\x04""gwet\x04""gwep\x04""gweh\x04""gwig\x05""gwigg\x05""gwigs\x04""gwin\x05""gwinj\x05""gwinh\x04""gwid\x04""gwil\x05""gwilg\x05""gwilm\x05""gwilb\x05""gwils\x05""gwilt\x05""gwilp\x05""gwilh\x04""gwim\x04""gwib\x05""gwibs\x04""gwis\x05""gwiss\x05""gwing\x04""gwij\x04""gwic\x04""gwik\x04""gwit\x04""gwip\x04""gwih\x04""gyug\x05""gyugg\x05""gyugs\x04""gyun\x05""gyunj\x05""gyunh\x04""gyud\x04""gyul\x05""gyulg\x05""gyulm\x05""gyulb\x05""gyuls\x05""gyult\x05""gyulp\x05""gyulh\x04""gyum\x04""gyub\x05""gyubs\x04""gyus\x05""gyuss\x05""gyung\x04""gyuj\x04""gyuc\x04""gyuk\x04""gyut\x04""gyup\x04""gyuh\x03""geu\x04""geug\x05""geugg\x05""geugs\x04""geun\x05""geunj\x05""geunh\x04""geud\x04""geul\x05""geulg\x05""geulm\x05""geulb\x05""geuls\x05""geult\x05""geulp\x05""geulh\x04""geum\x04""geub\x05""geubs\x04""geus\x04""geuj\x04""geuc\x04""geuk\x04""geut\x04""geup\x04""geuh\x04""gyig\x05""gyigg\x05""gyigs\x04""gyin\x05""gyinj\x05""gyinh\x04""gyid\x04""gyil\x05""gyilg\x05""gyilm\x05""gyilb\x05""gyils\x05""gyilt\x05""gyilp\x05""gyilh\x04""gyim\x04""gyib\x05""gyibs\x04""gyis\x05""gyiss\x05""gying\x04""gyij\x04""gyic\x04""gyik\x04""gyit\x04""gyip\x04""gyih\x03""gig\x04""gigg\x04""gigs\x03""gin\x04""ginj\x04""ginh\x03""gid\x03""gil\x04""gilg\x04""gilm\x04""gilb\x04""gils\x04""gilt\x04""gilp\x04""gilh\x03""gim\x03""gib\x04""gibs\x03""gis\x04""giss\x04""ging\x03""gij\x03""gic\x03""gik\x03""gih\x04""ggag\x05""ggagg\x05""ggags\x04""ggan\x05""gganj\x05""gganh\x04""ggad\x04""ggal\x05""ggalg\x05""ggalm\x05""ggalb\x05""ggals\x05""ggalt\x05""ggalp\x05""ggalh\x04""ggam\x04""ggab\x05""ggabs\x04""ggas\x05""ggass\x05""ggang\x04""ggaj\x04""ggac\x04""ggak\x04""ggah\x04""ggae\x05""ggaeg\x06""ggaegg\x06""ggaegs\x05""ggaen\x06""ggaenj\x06""ggaenh\x05""ggaed\x05""ggael\x06""ggaelg\x06""ggaelm\x06""ggaelb\x06""ggaels\x06""ggaelt\x06""ggaelp\x06""ggaelh\x05""ggaem\x05""ggaeb\x06""ggaebs\x05""ggaes\x06""ggaess\x06""ggaeng\x05""ggaej\x05""ggaec\x05""ggaek\x05""ggaet\x05""ggaep\x05""ggaeh\x04""ggya\x05""ggyag\x06""ggyagg\x06""ggyags\x05""ggyan\x06""ggyanj\x06""ggyanh\x05""ggyad\x05""ggyal\x06""ggyalg\x06""ggyalm\x06""ggyalb\x06""ggyals\x06""ggyalt\x06""ggyalp\x06""ggyalh\x05""ggyam\x05""ggyab\x06""ggyabs\x05""ggyas\x06""ggyass\x06""ggyang\x05""ggyaj\x05""ggyac\x05""ggyak\x05""ggyat\x05""ggyap\x05""ggyah\x05""ggyae\x06""ggyaeg\x07""ggyaegg\x07""ggyaegs\x06""ggyaen\x07""ggyaenj\x07""ggyaenh\x06""ggyaed\x06""ggyael\x07""ggyaelg\x07""ggyaelm\x07""ggyaelb\x07""ggyaels\x07""ggyaelt\x07""ggyaelp\x07""ggyaelh\x06""ggyaem\x06""ggyaeb\x07""ggyaebs\x06""ggyaes\x07""ggyaess\x07""ggyaeng\x06""ggyaej\x06""ggyaec\x06""ggyaek\x06""ggyaet\x06""ggyaep\x06""ggyaeh\x04""ggeo\x05""ggeog\x06""ggeogg\x06""ggeogs\x05""ggeon\x06""ggeonj\x06""ggeonh\x05""ggeod\x05""ggeol\x06""ggeolg\x06""ggeolm\x06""ggeolb\x06""ggeols\x06""ggeolt\x06""ggeolp\x06""ggeolh\x05""ggeom\x05""ggeob\x06""ggeobs\x05""ggeos\x06""ggeoss\x06""ggeong\x05""ggeoj\x05""ggeoc\x05""ggeok\x05""ggeot\x05""ggeop\x05""ggeoh\x04""ggeg\x05""ggegg\x05""ggegs\x04""ggen\x05""ggenj\x05""ggenh\x04""gged\x04""ggel\x05""ggelg\x05""ggelm\x05""ggelb\x05""ggels\x05""ggelt\x05""ggelp\x05""ggelh\x04""ggem\x04""ggeb\x05""ggebs\x04""gges\x05""ggess\x05""ggeng\x04""ggej\x04""ggec\x04""ggek\x04""ggeh\x05""ggyeo\x06""ggyeog\x07""ggyeogg\x07""ggyeogs\x06""ggyeon\x07""ggyeonj\x07""ggyeonh\x06""ggyeod\x06""ggyeol\x07""ggyeolg\x07""ggyeolm\x07""ggyeolb\x07""ggyeols\x07""ggyeolt\x07""ggyeolp\x07""ggyeolh\x06""ggyeom\x06""ggyeob\x07""ggyeobs\x06""ggyeos\x07""ggyeoss\x07""ggyeong\x06""ggyeoj\x06""ggyeoc\x06""ggyeok\x06""ggyeot\x06""ggyeop\x06""ggyeoh\x04""ggye\x05""ggyeg\x06""ggyegg\x06""ggyegs\x05""ggyen\x06""ggyenj\x06""ggyenh\x05""ggyed\x05""ggyel\x06""ggyelg\x06""ggyelm\x06""ggyelb\x06""ggyels\x06""ggyelt\x06""ggyelp\x06""ggyelh\x05""ggyem\x05""ggyeb\x06""ggyebs\x05""ggyes\x06""ggyess\x06""ggyeng\x05""ggyej\x05""ggyec\x05""ggyek\x05""ggyet\x05""ggyep\x05""ggyeh\x04""ggog\x05""ggogg\x05""ggogs\x04""ggon\x05""ggonj\x05""ggonh\x04""ggod\x04""ggol\x05""ggolg\x05""ggolm\x05""ggolb\x05""ggols\x05""ggolt\x05""ggolp\x05""ggolh\x04""ggom\x04""ggob\x05""ggobs\x04""ggos\x05""ggoss\x05""ggong\x04""ggoj\x04""ggoc\x04""ggok\x04""ggoh\x05""ggwag\x06""ggwagg\x06""ggwags\x05""ggwan\x06""ggwanj\x06""ggwanh\x05""ggwad\x05""ggwal\x06""ggwalg\x06""ggwalm\x06""ggwalb\x06""ggwals\x06""ggwalt\x06""ggwalp\x06""ggwalh\x05""ggwam\x05""ggwab\x06""ggwabs\x05""ggwas\x06""ggwass\x06""ggwang\x05""ggwaj\x05""ggwac\x05""ggwak\x05""ggwat\x05""ggwap\x05""ggwah\x05""ggwae\x06""ggwaeg\x07""ggwaegg\x07""ggwaegs\x06""ggwaen\x07""ggwaenj\x07""ggwaenh\x06""ggwaed\x06""ggwael\x07""ggwaelg\x07""ggwaelm\x07""ggwaelb\x07""ggwaels\x07""ggwaelt\x07""ggwaelp\x07""ggwaelh\x06""ggwaem\x06""ggwaeb\x07""ggwaebs\x06""ggwaes\x07""ggwaess\x07""ggwaeng\x06""ggwaej\x06""ggwaec\x06""ggwaek\x06""ggwaet\x06""ggwaep\x06""ggwaeh\x04""ggoe\x05""ggoeg\x06""ggoegg\x06""ggoegs\x05""ggoen\x06""ggoenj\x06""ggoenh\x05""ggoed\x05""ggoel\x06""ggoelg\x06""ggoelm\x06""ggoelb\x06""ggoels\x06""ggoelt\x06""ggoelp\x06""ggoelh\x05""ggoem\x05""ggoeb\x06""ggoebs\x05""ggoes\x06""ggoess\x06""ggoeng\x05""ggoej\x05""ggoec\x05""ggoek\x05""ggoet\x05""ggoep\x05""ggoeh\x04""ggyo\x05""ggyog\x06""ggyogg\x06""ggyogs\x05""ggyon\x06""ggyonj\x06""ggyonh\x05""ggyod\x05""ggyol\x06""ggyolg\x06""ggyolm\x06""ggyolb\x06""ggyols\x06""ggyolt\x06""ggyolp\x06""ggyolh\x05""ggyom\x05""ggyob\x06""ggyobs\x05""ggyos\x06""ggyoss\x06""ggyong\x05""ggyoj\x05""ggyoc\x05""ggyok\x05""ggyot\x05""ggyop\x05""ggyoh\x04""ggug\x05""ggugg\x05""ggugs\x04""ggun\x05""ggunj\x05""ggunh\x04""ggud\x04""ggul\x05""ggulg\x05""ggulm\x05""ggulb\x05""gguls\x05""ggult\x05""ggulp\x05""ggulh\x04""ggum\x04""ggub\x05""ggubs\x04""ggus\x05""gguss\x05""ggung\x04""gguj\x04""gguc\x04""gguk\x04""gguh\x05""ggweo\x06""ggweog\x07""ggweogg\x07""ggweogs\x06""ggweon\x07""ggweonj\x07""ggweonh\x06""ggweod\x06""ggweol\x07""ggweolg\x07""ggweolm\x07""ggweolb\x07""ggweols\x07""ggweolt\x07""ggweolp\x07""ggweolh\x06""ggweom\x06""ggweob\x07""ggweobs\x06""ggweos\x07""ggweoss\x07""ggweong\x06""ggweoj\x06""ggweoc\x06""ggweok\x06""ggweot\x06""ggweop\x06""ggweoh\x05""ggweg\x06""ggwegg\x06""ggwegs\x05""ggwen\x06""ggwenj\x06""ggwenh\x05""ggwed\x05""ggwel\x06""ggwelg\x06""ggwelm\x06""ggwelb\x06""ggwels\x06""ggwelt\x06""ggwelp\x06""ggwelh\x05""ggwem\x05""ggweb\x06""ggwebs\x05""ggwes\x06""ggwess\x06""ggweng\x05""ggwej\x05""ggwec\x05""ggwek\x05""ggwet\x05""ggwep\x05""ggweh\x05""ggwig\x06""ggwigg\x06""ggwigs\x05""ggwin\x06""ggwinj\x06""ggwinh\x05""ggwid\x05""ggwil\x06""ggwilg\x06""ggwilm\x06""ggwilb\x06""ggwils\x06""ggwilt\x06""ggwilp\x06""ggwilh\x05""ggwim\x05""ggwib\x06""ggwibs\x05""ggwis\x06""ggwiss\x06""ggwing\x05""ggwij\x05""ggwic\x05""ggwik\x05""ggwit\x05""ggwip\x05""ggwih\x04""ggyu\x05""ggyug\x06""ggyugg\x06""ggyugs\x05""ggyun\x06""ggyunj\x06""ggyunh\x05""ggyud\x05""ggyul\x06""ggyulg\x06""ggyulm\x06""ggyulb\x06""ggyuls\x06""ggyult\x06""ggyulp\x06""ggyulh\x05""ggyum\x05""ggyub\x06""ggyubs\x05""ggyus\x06""ggyuss\x06""ggyung\x05""ggyuj\x05""ggyuc\x05""ggyuk\x05""ggyut\x05""ggyup\x05""ggyuh\x04""ggeu\x05""ggeug\x06""ggeugg\x06""ggeugs\x05""ggeun\x06""ggeunj\x06""ggeunh\x05""ggeud\x05""ggeul\x06""ggeulg\x06""ggeulm\x06""ggeulb\x06""ggeuls\x06""ggeult\x06""ggeulp\x06""ggeulh\x05""ggeum\x05""ggeub\x06""ggeubs\x05""ggeus\x06""ggeuss\x06""ggeung\x05""ggeuj\x05""ggeuc\x05""ggeuk\x05""ggeut\x05""ggeup\x05""ggeuh\x04""ggyi\x05""ggyig\x06""ggyigg\x06""ggyigs\x05""ggyin\x06""ggyinj\x06""ggyinh\x05""ggyid\x05""ggyil\x06""ggyilg\x06""ggyilm\x06""ggyilb\x06""ggyils\x06""ggyilt\x06""ggyilp\x06""ggyilh\x05""ggyim\x05""ggyib\x06""ggyibs\x05""ggyis\x06""ggyiss\x06""ggying\x05""ggyij\x05""ggyic\x05""ggyik\x05""ggyit\x05""ggyip\x05""ggyih\x04""ggig\x05""ggigg\x05""ggigs\x04""ggin\x05""gginj\x05""gginh\x04""ggid\x04""ggil\x05""ggilg\x05""ggilm\x05""ggilb\x05""ggils\x05""ggilt\x05""ggilp\x05""ggilh\x04""ggim\x04""ggib\x05""ggibs\x04""ggis\x05""ggiss\x05""gging\x04""ggij\x04""ggic\x04""ggik\x04""ggip\x04""ggih\x03""nag\x04""nagg\x04""nags\x03""nan\x04""nanj\x04""nanh\x03""nad\x03""nal\x04""nalg\x04""nalm\x04""nalb\x04""nals\x04""nalt\x04""nalp\x04""nalh\x03""nam\x03""nab\x04""nabs\x03""nas\x04""nass\x04""nang\x03""naj\x03""nac\x03""nak\x03""nat\x03""nae\x04""naeg\x05""naegg\x05""naegs\x04""naen\x05""naenj\x05""naenh\x04""naed\x04""nael\x05""naelg\x05""naelm\x05""naelb\x05""naels\x05""naelt\x05""naelp\x05""naelh\x04""naem\x04""naeb\x05""naebs\x04""naes\x05""naess\x05""naeng\x04""naej\x04""naec\x04""naek\x04""naet\x04""naep\x04""naeh\x04""nyag\x05""nyagg\x05""nyags\x05""nyanj\x05""nyanh\x04""nyad\x04""nyal\x05""nyalg\x05""nyalm\x05""nyalb\x05""nyals\x05""nyalt\x05""nyalp\x05""nyalh\x04""nyam\x04""nyab\x05""nyabs\x04""nyas\x05""nyass\x05""nyang\x04""nyaj\x04""nyac\x04""nyak\x04""nyat\x04""nyap\x04""nyah\x04""nyae\x05""nyaeg\x06""nyaegg\x06""nyaegs\x05""nyaen\x06""nyaenj\x06""nyaenh\x05""nyaed\x05""nyael\x06""nyaelg\x06""nyaelm\x06""nyaelb\x06""nyaels\x06""nyaelt\x06""nyaelp\x06""nyaelh\x05""nyaem\x05""nyaeb\x06""nyaebs\x05""nyaes\x06""nyaess\x06""nyaeng\x05""nyaej\x05""nyaec\x05""nyaek\x05""nyaet\x05""nyaep\x05""nyaeh\x03""neo\x04""neog\x05""neogg\x05""neogs\x04""neon\x05""neonj\x05""neonh\x04""neod\x04""neol\x05""neolg\x05""neolm\x05""neolb\x05""neols\x05""neolt\x05""neolp\x05""neolh\x04""neom\x04""neob\x05""neobs\x04""neos\x05""neoss\x05""neong\x04""neoj\x04""neoc\x04""neok\x04""neot\x04""neop\x04""neoh\x03""neg\x04""negg\x04""negs\x03""nen\x04""nenj\x04""nenh\x03""ned\x03""nel\x04""nelg\x04""nelm\x04""nelb\x04""nels\x04""nelt\x04""nelp\x04""nelh\x03""nem\x03""neb\x04""nebs\x03""nes\x04""ness\x04""neng\x03""nej\x03""nec\x03""nek\x03""net\x03""neh\x04""nyeo\x05""nyeog\x06""nyeogg\x06""nyeogs\x05""nyeon\x06""nyeonj\x06""nyeonh\x05""nyeod\x05""nyeol\x06""nyeolg\x06""nyeolm\x06""nyeolb\x06""nyeols\x06""nyeolt\x06""nyeolp\x06""nyeolh\x05""nyeom\x05""nyeob\x06""nyeobs\x05""nyeos\x06""nyeoss\x06""nyeong\x05""nyeoj\x05""nyeoc\x05""nyeok\x05""nyeot\x05""nyeop\x05""nyeoh\x04""nyeg\x05""nyegg\x05""nyegs\x04""nyen\x05""nyenj\x05""nyenh\x04""nyed\x04""nyel\x05""nyelg\x05""nyelm\x05""nyelb\x05""nyels\x05""nyelt\x05""nyelp\x05""nyelh\x04""nyem\x04""nyeb\x05""nyebs\x04""nyes\x05""nyess\x05""nyeng\x04""nyej\x04""nyec\x04""nyek\x04""nyet\x04""nyep\x04""nyeh\x03""nog\x04""nogg\x04""nogs\x03""non\x04""nonj\x04""nonh\x03""nod\x03""nol\x04""nolg\x04""nolm\x04""nolb\x04""nols\x04""nolt\x04""nolp\x04""nolh\x03""nom\x03""nob\x04""nobs\x03""nos\x04""noss\x04""nong\x03""noj\x03""noc\x03""nok\x03""noh\x04""nwag\x05""nwagg\x05""nwags\x04""nwan\x05""nwanj\x05""nwanh\x04""nwad\x04""nwal\x05""nwalg\x05""nwalm\x05""nwalb\x05""nwals\x05""nwalt\x05""nwalp\x05""nwalh\x04""nwam\x04""nwab\x05""nwabs\x04""nwas\x05""nwass\x05""nwang\x04""nwaj\x04""nwac\x04""nwak\x04""nwat\x04""nwap\x04""nwah\x04""nwae\x05""nwaeg\x06""nwaegg\x06""nwaegs\x05""nwaen\x06""nwaenj\x06""nwaenh\x05""nwaed\x05""nwael\x06""nwaelg\x06""nwaelm\x06""nwaelb\x06""nwaels\x06""nwaelt\x06""nwaelp\x06""nwaelh\x05""nwaem\x05""nwaeb\x06""nwaebs\x05""nwaes\x06""nwaess\x06""nwaeng\x05""nwaej\x05""nwaec\x05""nwaek\x05""nwaet\x05""nwaep\x05""nwaeh\x03""noe\x04""noeg\x05""noegg\x05""noegs\x04""noen\x05""noenj\x05""noenh\x04""noed\x04""noel\x05""noelg\x05""noelm\x05""noelb\x05""noels\x05""noelt\x05""noelp\x05""noelh\x04""noem\x04""noeb\x05""noebs\x04""noes\x05""noess\x05""noeng\x04""noej\x04""noec\x04""noek\x04""noet\x04""noep\x04""noeh\x04""nyog\x05""nyogg\x05""nyogs\x04""nyon\x05""nyonj\x05""nyonh\x04""nyod\x04""nyol\x05""nyolg\x05""nyolm\x05""nyolb\x05""nyols\x05""nyolt\x05""nyolp\x05""nyolh\x04""nyom\x04""nyob\x05""nyobs\x04""nyos\x05""nyoss\x05""nyong\x04""nyoj\x04""nyoc\x04""nyok\x04""nyoh\x03""nug\x04""nugg\x04""nugs\x03""nun\x04""nunj\x04""nunh\x03""nud\x03""nul\x04""nulg\x04""nulm\x04""nulb\x04""nuls\x04""nult\x04""nulp\x04""nulh\x03""nub\x04""nubs\x03""nus\x04""nuss\x04""nung\x03""nuj\x03""nuc\x03""nuk\x03""nuh\x04""nweo\x05""nweog\x06""nweogg\x06""nweogs\x05""nweon\x06""nweonj\x06""nweonh\x05""nweod\x05""nweol\x06""nweolg\x06""nweolm\x06""nweolb\x06""nweols\x06""nweolt\x06""nweolp\x06""nweolh\x05""nweom\x05""nweob\x06""nweobs\x05""nweos\x06""nweoss\x06""nweong\x05""nweoj\x05""nweoc\x05""nweok\x05""nweot\x05""nweop\x05""nweoh\x04""nweg\x05""nwegg\x05""nwegs\x04""nwen\x05""nwenj\x05""nwenh\x04""nwed\x04""nwel\x05""nwelg\x05""nwelm\x05""nwelb\x05""nwels\x05""nwelt\x05""nwelp\x05""nwelh\x04""nwem\x04""nweb\x05""nwebs\x04""nwes\x05""nwess\x05""nweng\x04""nwej\x04""nwec\x04""nwek\x04""nwet\x04""nwep\x04""nweh\x03""nwi\x04""nwig\x05""nwigg\x05""nwigs\x04""nwin\x05""nwinj\x05""nwinh\x04""nwid\x04""nwil\x05""nwilg\x05""nwilm\x05""nwilb\x05""nwils\x05""nwilt\x05""nwilp\x05""nwilh\x04""nwim\x04""nwib\x05""nwibs\x04""nwis\x05""nwiss\x05""nwing\x04""nwij\x04""nwic\x04""nwik\x04""nwit\x04""nwip\x04""nwih\x04""nyug\x05""nyugg\x05""nyugs\x04""nyun\x05""nyunj\x05""nyunh\x04""nyud\x04""nyul\x05""nyulg\x05""nyulm\x05""nyulb\x05""nyuls\x05""nyult\x05""nyulp\x05""nyulh\x04""nyum\x04""nyub\x05""nyubs\x04""nyus\x05""nyuss\x05""nyung\x04""nyuj\x04""nyuc\x04""nyuk\x04""nyuh\x03""neu\x04""neug\x05""neugg\x05""neugs\x04""neun\x05""neunj\x05""neunh\x04""neud\x04""neul\x05""neulg\x05""neulm\x05""neulb\x05""neuls\x05""neult\x05""neulp\x05""neulh\x04""neum\x04""neub\x05""neubs\x04""neus\x05""neuss\x05""neung\x04""neuj\x04""neuc\x04""neuk\x04""neut\x04""neup\x04""neuh\x04""nyig\x05""nyigg\x05""nyigs\x04""nyin\x05""nyinj\x05""nyinh\x04""nyid\x04""nyil\x05""nyilg\x05""nyilm\x05""nyilb\x05""nyils\x05""nyilt\x05""nyilp\x05""nyilh\x04""nyim\x04""nyib\x05""nyibs\x04""nyis\x05""nyiss\x05""nying\x04""nyij\x04""nyic\x04""nyik\x04""nyih\x03""nig\x04""nigg\x04""nigs\x03""nin\x04""ninj\x04""ninh\x03""nid\x03""nil\x04""nilg\x04""nilm\x04""nilb\x04""nils\x04""nilt\x04""nilp\x04""nilh\x03""nim\x03""nib\x04""nibs\x03""nis\x04""niss\x04""ning\x03""nij\x03""nic\x03""nik\x03""nih\x03""dag\x04""dagg\x04""dags\x03""dan\x04""danj\x04""danh\x03""dad\x04""dalg\x04""dalm\x04""dalb\x04""dals\x04""dalt\x04""dalp\x04""dalh\x03""dam\x04""dabs\x03""das\x04""dass\x04""dang\x03""daj\x03""dac\x03""dak\x03""dah\x03""dae\x04""daeg\x05""daegg\x05""daegs\x04""daen\x05""daenj\x05""daenh\x04""daed\x04""dael\x05""daelg\x05""daelm\x05""daelb\x05""daels\x05""daelt\x05""daelp\x05""daelh\x04""daem\x04""daeb\x05""daebs\x04""daes\x05""daess\x05""daeng\x04""daej\x04""daec\x04""daek\x04""daet\x04""daep\x04""daeh\x03""dya\x04""dyag\x05""dyagg\x05""dyags\x04""dyan\x05""dyanj\x05""dyanh\x04""dyad\x04""dyal\x05""dyalg\x05""dyalm\x05""dyalb\x05""dyals\x05""dyalt\x05""dyalp\x05""dyalh\x04""dyam\x04""dyab\x05""dyabs\x04""dyas\x05""dyass\x05""dyang\x04""dyaj\x04""dyac\x04""dyak\x04""dyat\x04""dyap\x04""dyah\x04""dyae\x05""dyaeg\x06""dyaegg\x06""dyaegs\x05""dyaen\x06""dyaenj\x06""dyaenh\x05""dyaed\x05""dyael\x06""dyaelg\x06""dyaelm\x06""dyaelb\x06""dyaels\x06""dyaelt\x06""dyaelp\x06""dyaelh\x05""dyaem\x05""dyaeb\x06""dyaebs\x05""dyaes\x06""dyaess\x06""dyaeng\x05""dyaej\x05""dyaec\x05""dyaek\x05""dyaet\x05""dyaep\x05""dyaeh\x03""deo\x04""deog\x05""deogg\x05""deogs\x04""deon\x05""deonj\x05""deonh\x04""deod\x04""deol\x05""deolg\x05""deolm\x05""deolb\x05""deols\x05""deolt\x05""deolp\x05""deolh\x04""deom\x04""deob\x05""deobs\x04""deos\x05""deoss\x05""deong\x04""deoj\x04""deoc\x04""deok\x04""deot\x04""deop\x04""deoh\x04""degg\x04""degs\x03""den\x04""denj\x04""denh\x03""ded\x03""del\x04""delg\x04""delm\x04""delb\x04""dels\x04""delt\x04""delp\x04""delh\x03""dem\x03""deb\x04""debs\x03""des\x04""dess\x04""deng\x03""dej\x03""dec\x03""dek\x03""det\x03""deh\x04""dyeo\x05""dyeog\x06""dyeogg\x06""dyeogs\x05""dyeon\x06""dyeonj\x06""dyeonh\x05""dyeod\x05""dyeol\x06""dyeolg\x06""dyeolm\x06""dyeolb\x06""dyeols\x06""dyeolt\x06""dyeolp\x06""dyeolh\x05""dyeom\x05""dyeob\x06""dyeobs\x05""dyeos\x06""dyeoss\x06""dyeong\x05""dyeoj\x05""dyeoc\x05""dyeok\x05""dyeot\x05""dyeop\x05""dyeoh\x03""dye\x04""dyeg\x05""dyegg\x05""dyegs\x04""dyen\x05""dyenj\x05""dyenh\x04""dyed\x04""dyel\x05""dyelg\x05""dyelm\x05""dyelb\x05""dyels\x05""dyelt\x05""dyelp\x05""dyelh\x04""dyem\x04""dyeb\x05""dyebs\x04""dyes\x05""dyess\x05""dyeng\x04""dyej\x04""dyec\x04""dyek\x04""dyet\x04""dyep\x04""dyeh\x03""dog\x04""dogg\x04""dogs\x04""donj\x04""donh\x03""dod\x03""dol\x04""dolg\x04""dolm\x04""dolb\x04""dols\x04""dolt\x04""dolp\x04""dolh\x03""dom\x03""dob\x04""dobs\x03""dos\x04""doss\x04""dong\x03""doj\x03""doc\x03""dok\x03""doh\x04""dwag\x05""dwagg\x05""dwags\x04""dwan\x05""dwanj\x05""dwanh\x04""dwad\x04""dwal\x05""dwalg\x05""dwalm\x05""dwalb\x05""dwals\x05""dwalt\x05""dwalp\x05""dwalh\x04""dwam\x04""dwab\x05""dwabs\x04""dwas\x05""dwass\x05""dwang\x04""dwaj\x04""dwac\x04""dwak\x04""dwat\x04""dwap\x04""dwah\x04""dwae\x05""dwaeg\x06""dwaegg\x06""dwaegs"
#define UTFASCIILOOKUP {1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,1,2,2,1,1,2,2,2,2,4,6,8,10,12,14,16,18,20,22,2,2,1,1,1,1,1,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,1,2,1,1,1,1,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,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,2,1,28,76,1,72,1,79,1,28,24,1,1,2,58,2,82,86,8,10,1,64,54,1,2,6,52,1,88,91,94,1,24,24,24,24,24,24,97,28,32,32,32,32,40,40,40,40,30,50,52,52,52,52,52,70,52,64,64,64,64,64,100,79,24,24,24,24,24,24,97,28,32,32,32,32,40,40,40,40,30,50,52,52,52,52,52,2,52,64,64,64,64,72,100,72,24,24,24,24,24,24,28,28,28,28,28,28,28,28,30,30,30,30,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,38,38,38,38,40,40,40,40,40,40,40,40,40,40,103,103,42,42,44,44,44,46,46,46,46,46,46,46,46,46,46,50,50,50,50,50,50,50,106,106,52,52,52,52,52,52,109,109,58,58,58,58,58,58,60,60,60,60,60,60,60,60,62,62,62,62,62,62,64,64,64,64,64,64,64,64,64,64,64,64,68,68,72,72,72,74,74,74,74,74,74,60,26,26,26,26,16,16,52,28,28,30,30,30,30,30,10,1,32,34,34,36,36,112,40,40,44,44,46,46,68,50,50,52,52,52,115,115,54,54,118,8,8,121,121,62,62,62,62,64,64,72,66,72,72,74,74,124,124,124,124,8,14,14,127,68,1,1,1,1,130,130,130,133,133,133,136,136,136,24,24,40,40,52,52,64,64,64,64,64,64,64,64,64,64,1,24,24,24,24,97,97,36,36,36,36,44,44,52,52,52,52,124,124,42,130,30,130,36,36,112,68,50,50,24,24,97,97,52,52,24,24,24,24,32,32,32,32,40,40,40,40,52,52,52,52,58,58,58,58,64,64,64,64,60,60,62,62,72,72,38,38,50,30,139,139,74,74,24,24,32,32,52,52,52,52,52,52,52,52,72,72,46,50,62,42,142,145,24,28,28,46,62,60,74,148,148,26,64,66,32,32,42,42,56,56,58,58,72,72,24,24,24,26,52,28,30,30,32,1,1,32,32,32,32,42,36,36,36,36,64,72,38,38,40,40,40,46,46,46,153,68,68,48,50,50,50,52,109,52,34,58,58,58,58,58,58,58,58,58,60,60,42,60,60,62,62,64,64,66,1,68,72,72,74,74,74,74,1,1,1,28,1,26,32,36,38,42,44,46,56,1,1,130,130,130,127,127,156,159,162,153,165,1,38,38,44,38,42,58,58,58,58,68,72,1,1,1,1,1,1,1,1,1,1,1,1,66,1,66,1,2,2,2,2,1,2,2,2,2,1,1,1,66,1,2,66,2,1,2,1,1,58,70,36,46,60,70,1,168,179,184,188,193,203,207,66,1,1,212,217,220,225,231,236,236,236,243,249,256,262,256,262,266,266,220,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,272,272,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,272,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,24,32,40,52,64,28,30,38,48,58,62,66,70,278,278,283,283,1,2,289,289,0,0,1,0,0,0,1,0,0,0,0,0,1,1,24,2,32,32,40,0,52,0,64,52,40,24,26,36,30,32,74,32,100,40,44,46,48,50,300,52,54,58,0,60,62,64,303,306,76,52,40,64,24,32,32,40,64,24,26,36,30,32,74,32,100,40,44,46,48,50,70,52,54,58,60,60,62,64,303,306,76,52,40,64,52,64,52,0,26,100,64,64,64,303,54,2,309,309,315,315,68,68,56,56,318,318,121,121,34,34,306,306,38,38,36,36,321,321,324,324,44,58,28,42,0,0,0,327,327,0,331,331,0,0,0,0,335,338,341,344,335,130,40,347,42,133,136,350,354,40,64,357,24,26,66,36,30,335,124,74,40,40,44,46,48,50,52,54,58,60,62,64,34,306,127,321,121,361,366,72,1,32,371,374,24,26,66,36,30,335,124,74,40,40,44,46,48,50,52,54,58,60,62,64,34,306,127,321,121,361,366,72,1,32,371,374,335,338,341,344,335,130,40,347,42,133,136,350,354,40,64,357,52,52,32,32,335,335,32,32,335,335,52,52,338,338,300,300,76,76,34,34,72,72,72,72,64,64,52,52,52,52,380,380,56,56,383,1,1,1,1,0,388,395,40,40,1,1,58,58,36,36,36,36,36,36,124,124,74,74,44,44,44,44,44,44,44,44,50,50,106,106,54,54,306,306,60,60,62,62,64,64,64,64,306,306,403,403,321,321,321,321,38,38,321,321,321,321,1,124,124,44,44,407,407,50,50,410,410,321,321,413,413,416,24,24,24,24,97,97,335,335,1,1,1,1,124,124,74,74,130,130,40,40,40,40,52,52,52,52,52,52,32,32,64,64,64,64,64,64,321,321,425,425,72,72,425,425,429,429,429,429,432,432,435,435,439,439,443,443,448,448,452,452,456,456,460,460,464,464,407,407,467,467,471,471,475,475,479,479,482,482,485,485,407,407,410,410,0,0,0,0,0,0,0,0,0,0,0,0,0,24,26,36,30,32,74,32,32,62,124,40,46,306,127,44,38,130,377,321,48,72,50,121,52,321,54,42,491,60,66,62,58,127,68,54,44,52,34,0,0,220,0,0,0,0,0,0,0,24,26,36,30,32,74,32,32,62,124,40,46,306,127,44,38,130,377,321,48,72,50,121,52,321,54,42,491,60,66,62,58,127,68,54,44,52,34,494,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,24,52,40,32,32,24,24,52,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,26,36,30,38,66,74,306,62,72,44,44,46,48,48,50,50,60,502,54,54,127,127,56,58,121,62,0,0,0,0,0,66,507,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,510,0,516,0,0,0,0,0,0,0,0,0,0,0,522,528,540,547,559,564,0,497,0,0,0,0,0,0,0,0,0,0,574,24,497,68,497,72,497,26,580,62,100,42,38,306,30,584,58,74,60,121,60,30,62,74,587,36,591,591,597,597,597,0,34,56,44,46,48,50,38,68,497,72,603,606,609,24,64,40,68,0,0,0,0,0,0,0,0,66,612,618,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,622,626,497,497,497,497,179,179,179,64,179,630,633,26,62,62,54,100,637,640,38,644,647,38,321,650,654,30,30,657,584,660,30,30,30,664,58,58,58,58,58,58,42,58,60,60,60,60,60,62,377,34,34,34,66,34,303,56,56,306,44,44,44,106,44,36,36,50,36,36,36,46,46,46,46,50,50,50,50,50,38,321,667,38,38,580,68,109,109,64,670,670,68,66,72,72,72,68,32,673,72,72,0,97,677,626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,681,685,0,6,8,10,12,14,16,18,20,22,121,30,377,689,689,696,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,700,700,26,36,36,30,30,38,68,74,38,62,62,72,706,44,46,48,50,60,60,32,54,54,60,56,58,121,62,709,709,709,24,24,24,24,24,24,32,32,32,32,40,40,64,64,64,52,0,0,0,0,0,70,56,0,0,0,0,0,0,717,717,717,622,622,622,622,622,622,622,640,640,681,681,685,725,587,587,587,730,730,591,591,591,734,734,739,739,739,744,685,685,725,640,640,725,685,640,497,497,597,597,597,748,748,673,673,640,725,725,752,38,121,50,58,26,46,44,756,66,48,34,584,100,46,36,644,60,30,74,62,72,54,42,321,630,762,306,100,74,121,60,30,62,74,765,377,56,68,24,770,40,773,64,776,32,779,52,782,0,785,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,24,773,40,32,64,776,52,789,50,800,803,806,809,812,816,819,822,826,829,833,836,839,842,845,848,842,429,852,855,848,858,858,858,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,863,875,884,24,24,770,40,892,64,895,58,46,898,32,32,905,898,52,52,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,963,803,968,800,972,845,855,819,822,839,976,980,985,988,992,826,429,0,0,996,1002,770,40,892,64,895,58,664,898,32,32,905,898,52,52,908,1011,0,0,0,1018,1025,0,0,0,0,0,479,1034,1039,1044,1047,471,833,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,179,898,0,0,0,0,0,0,0,0,1060,1064,148,1068,1073,0,863,875,884,0,24,770,40,892,64,895,58,46,0,0,32,905,0,0,52,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,0,803,968,800,972,845,855,819,0,839,0,0,0,988,992,826,429,0,0,996,1002,770,40,892,64,895,58,664,0,0,32,905,0,0,52,908,1011,1077,0,0,0,0,0,0,0,0,0,0,0,0,0,822,471,0,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,819,819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,410,32,32,905,1084,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1093,54,303,26,637,48,72,58,664,46,46,1097,66,121,79,60,38,0,0,996,0,770,40,892,64,895,58,664,410,32,32,905,1084,52,52,908,1011,0,0,1101,1105,0,0,0,0,0,0,56,1111,1115,74,1119,491,34,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,1127,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,664,0,0,32,905,0,0,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,0,46,976,0,985,121,79,60,38,0,0,996,1002,770,40,892,64,895,58,664,898,0,32,905,898,0,52,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,491,0,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,58,58,1134,1134,0,0,0,0,0,0,0,0,0,0,0,0,0,863,50,884,0,24,770,40,892,64,895,58,46,0,0,773,905,0,0,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,1137,48,72,58,0,46,1057,0,66,121,992,60,38,0,0,996,1002,770,40,892,64,895,58,664,0,0,773,905,0,0,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,1111,1115,74,664,471,34,1053,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,50,38,0,0,1140,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,0,410,32,32,905,1084,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,963,54,303,26,637,48,855,58,822,46,1057,980,66,121,79,60,38,0,0,0,0,770,40,892,64,895,58,664,410,32,32,905,1084,52,52,908,1011,0,0,1101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,0,32,32,905,0,52,52,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,822,46,1057,0,985,121,79,60,38,0,0,0,1002,770,40,892,64,895,58,664,0,32,32,905,0,52,52,908,1011,0,0,0,0,0,0,0,0,0,0,1144,1148,0,0,664,491,0,1124,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,6,8,10,6,8,10,1152,0,0,50,38,0,24,770,40,892,64,895,58,46,0,32,773,905,0,52,776,908,44,911,915,918,106,28,812,42,929,644,630,937,942,946,1090,62,955,816,959,50,1093,54,968,800,972,48,72,58,664,46,1057,1097,66,988,79,60,38,0,0,996,1002,770,40,892,64,895,58,664,0,32,773,905,0,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,1158,1170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,38,0,24,770,40,892,64,895,58,46,0,32,773,905,0,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,0,54,303,26,637,48,72,58,664,46,1057,980,66,121,79,60,38,0,0,0,1002,770,40,892,64,895,58,664,0,32,773,905,0,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,1057,46,1057,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,1182,1182,1182,1182,1182,1182,0,0,50,38,0,24,770,40,892,64,895,58,46,1189,32,773,905,1198,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1205,54,303,26,637,48,72,58,664,46,1057,1205,66,121,79,60,38,1216,1224,0,1232,770,40,892,64,895,58,664,1240,32,773,905,0,52,776,908,0,0,1250,1261,1267,1261,1267,1261,0,1267,0,1272,1285,1267,1293,1285,1285,1097,1299,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1267,1267,0,0,0,0,0,0,0,0,0,0,0,0,0,1311,50,38,1314,24,770,40,892,64,895,58,46,1318,32,773,905,1321,52,776,908,44,306,36,377,106,28,321,42,1087,644,630,633,654,660,1090,62,100,30,584,50,1325,54,303,26,637,48,72,58,664,46,1057,1097,66,121,79,60,38,1328,0,0,0,770,40,892,64,895,58,905,1336,32,773,905,1348,52,776,908,1352,1361,1370,0,6,8,10,12,14,16,18,20,22,1378,1389,0,0,0,0,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1311,50,38,1314,24,770,97,1396,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,1321,0,1400,44,306,36,377,106,1403,28,321,42,1087,644,1407,1411,630,633,654,660,1090,1415,62,100,30,584,50,770,1420,54,303,26,637,48,1423,72,58,1426,46,0,0,66,121,79,60,38,1057,34,0,0,0,0,0,0,0,0,770,97,1396,40,892,64,14,895,18,58,32,773,905,52,776,908,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,1057,0,0,0,0,0,0,0,0,0,0,0,0,1429,44,306,306,306,306,306,106,650,321,321,321,321,72,30,62,100,100,100,50,30,62,100,100,100,50,26,54,303,34,303,34,303,48,72,58,58,46,46,68,60,60,60,38,46,1432,38,1432,24,24,770,1437,40,892,1440,1443,64,895,0,0,0,0,1447,637,32,97,52,905,905,1451,812,809,0,848,933,937,942,48,951,806,955,816,959,842,803,968,800,972,845,1144,1454,1148,1459,852,1464,1044,1468,855,819,839,988,992,826,429,24,1471,1476,1487,822,0,0,0,0,770,40,892,64,895,58,664,46,1057,32,773,52,776,1491,1496,40,44,306,1501,306,0,1505,106,321,1509,60,1514,0,644,0,0,836,911,915,918,30,38,100,100,0,50,26,54,303,34,303,34,955,48,72,58,803,46,800,68,845,1144,60,38,1459,852,1464,1044,24,855,770,1437,40,892,72,1124,64,895,1476,52,46,644,0,0,32,1518,52,1521,905,0,0,0,0,0,0,0,0,48,1524,1524,0,0,0,0,0,0,0,0,0,0,0,0,1529,1532,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1101,911,915,918,922,926,812,809,929,848,1535,933,937,942,946,951,806,955,816,959,842,803,968,800,972,845,855,819,839,852,826,429,976,24,1540,40,892,64,895,32,1545,52,908,1549,770,40,892,64,895,32,905,1545,1545,32,875,618,884,1011,1554,1559,1559,1559,1559,1566,44,306,36,377,106,28,321,42,20,644,630,633,654,660,1090,62,100,30,584,50,54,303,26,637,48,127,350,130,357,68,124,74,1545,72,58,46,121,1572,60,38,24,1576,58,1580,1580,1580,1588,1588,1588,770,40,892,64,895,58,664,46,1057,32,773,52,776,48,38,40,892,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1596,1596,44,306,36,377,106,28,321,42,20,644,630,633,654,660,1090,62,100,30,584,50,54,303,26,637,48,127,350,130,357,68,124,74,1602,72,58,46,121,79,60,38,24,1576,68,72,58,1606,70,1611,1616,1620,1623,482,1627,1631,0,0,0,0,0,0,0,0,0,0,603,1635,1639,1643,410,1647,1651,1655,609,1659,1663,1667,1671,1084,1675,1679,1602,331,1684,606,1688,1693,1698,1703,1707,1712,1717,1721,1725,1606,1729,1611,1616,1620,1623,482,1627,1631,1733,1736,1739,1639,587,0,1745,0,0,0,44,306,36,377,106,28,321,42,1087,644,1754,630,633,654,660,1090,630,100,30,584,50,54,303,26,637,48,72,58,46,68,60,38,1057,24,0,40,892,64,895,32,0,52,908,0,770,40,892,64,895,32,905,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,58,46,32,121,79,58,664,46,1057,58,664,46,1057,0,0,0,0,0,0,1758,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,1789,1793,1797,1802,1808,1813,1818,1824,1830,1836,1841,1845,1850,1854,1858,1864,1871,1878,1883,1888,1892,1897,1905,1910,1914,1919,1925,1930,1937,1943,1948,1953,1958,1964,1969,1973,1978,1982,1986,1991,1999,2005,24,26,36,30,32,66,74,62,40,44,46,48,50,52,54,124,58,60,62,64,54,44,36,56,121,321,28,74,28,321,70,42,38,32,72,68,2014,109,2017,2030,2041,2055,2069,2083,2096,2114,2126,2139,24,26,36,30,32,66,74,62,40,44,46,48,50,52,54,124,58,60,62,64,54,44,36,56,121,321,28,74,28,321,70,42,38,32,72,68,2014,109,34,2158,2170,2182,0,0,0,0,0,0,36,2194,50,30,654,58,48,26,1137,60,79,2197,42,2201,28,44,62,54,38,106,1090,1420,2204,2207,2210,664,491,2210,1423,2213,2216,2219,2222,2226,2229,2233,2237,2241,2245,2249,2252,2255,2258,2219,2261,2265,2268,2271,2274,2277,2280,2283,2287,60,2291,2294,2297,315,318,121,2300,2305,327,2309,74,36,30,48,26,60,74,2314,42,28,62,54,50,42,0,0,2318,2322,2326,321,2329,2334,2338,2341,762,56,2344,2349,2355,2361,0,0,800,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,1789,1793,1797,1802,1808,1813,1818,1824,1830,1836,1841,1845,1850,1854,1858,1864,1871,1878,1883,1888,1892,1897,1905,1910,1914,1919,1925,1930,1937,1943,1948,1953,1958,1964,1969,1973,1978,1982,1986,1982,64,2366,1910,2371,895,770,773,32,52,852,36,2194,2375,50,136,2378,30,46,2381,2384,2387,162,2390,2393,2396,48,26,2226,60,79,106,42,28,44,62,54,38,2399,2402,106,1420,2406,2409,2412,2207,2415,2418,2422,2425,2428,1057,2432,2436,2440,2444,2448,2452,153,2456,2459,2462,2465,1423,2468,2471,2475,2478,2481,2213,2484,2258,303,2341,2265,2271,2487,2280,74,36,79,1318,306,50,2406,2409,2338,2341,1529,2490,1532,2493,56,2496,2500,2505,2510,2514,2518,429,2523,2526,2529,2533,1620,2537,2540,839,2544,2547,2197,2550,2554,1426,2557,2561,2565,2569,2573,2578,2583,2587,2591,845,2596,2599,2602,2606,2610,2613,2616,2222,2620,2624,2628,2633,2638,2642,2646,819,2651,2654,2657,2661,2665,2668,2671,826,2675,2678,2681,2685,2689,1325,2692,988,2696,2700,2704,2300,2305,327,2309,479,2709,2712,2715,2719,2723,2726,2729,2734,2738,2741,2745,2750,2755,2759,2762,2318,2322,2766,2770,2329,2334,2775,2779,2783,2788,2344,2349,2355,2361,0,0,800,2792,2795,2798,2802,2806,2809,2812,985,2816,2819,2822,2826,2830,2833,2836,806,2840,324,2843,2847,2851,2854,2857,926,2861,2864,2867,2871,2875,2878,2881,2885,2888,2891,2894,2898,2902,2905,2908,2912,2916,2920,2924,2929,2934,2938,2943,842,2947,2950,785,2953,2957,1400,2960,848,2964,2968,2972,2977,2982,2986,2990,24,32,40,52,64,66,915,836,836,2995,2998,3001,3005,3009,1311,2526,3012,2523,3016,3020,3025,3030,1426,2544,3034,3038,3042,3046,3051,3056,3060,3064,3068,2957,3073,3078,3084,3090,3095,3099,852,3103,1783,3106,3110,482,3114,2678,1325,2675,3117,816,806,432,2851,3120,1044,3123,3126,3129,3133,464,3137,3140,1464,3144,3148,3152,3157,3162,3166,3170,855,670,347,3175,3179,1772,1318,855,816,3183,3120,3186,3190,432,3194,3197,942,3201,2496,2500,2505,2510,2514,2518,809,3205,3208,3211,3215,3219,3222,2540,915,3225,3228,3231,3235,3239,3242,0,3245,0,3249,3253,3258,3263,0,0,1060,3267,3271,3275,3280,3285,3289,0,955,3293,3297,3301,3306,3311,1321,3315,812,3320,3324,3328,3333,3338,3342,3346,968,3351,3355,3359,3364,3369,3373,3377,1144,3382,3386,3390,3395,3400,3404,3408,3413,3417,3421,3425,3430,3435,3439,0,833,2738,1733,3443,3447,3451,2759,2762,803,3454,3457,3460,3464,3468,3471,2779,3474,2788,3478,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,32,40,52,64,66,915,836,3239,3228,3242,3225,3482,429,1620,2526,2537,2523,112,839,2554,2547,1426,2544,3485,845,2610,2599,2613,2596,842,3064,3488,2957,2950,1400,2947,3492,3095,3099,3495,3499,3503,3507,826,60,2689,2678,1325,2675,3117,816,806,432,2851,3120,324,3194,3183,3511,3514,3518,3522,3526,3530,3534,3538,1144,3400,3386,3404,3382,3542,852,482,1783,3114,3103,3546,855,1772,347,1318,670,3549,0,0,0,0,0,0,0,0,0,0,0,0,32,3552,40,892,52,776,776,773,40,24,770,482,482,1783,1783,3556,3556,3114,3114,3560,3560,3560,852,852,3106,3106,3106,905,68,0,62,44,121,60,50,68,50,0,68,28,0,46,410,609,1084,603,3468,3564,3457,3569,3471,3573,3573,2533,2526,803,3460,2943,2943,3577,3577,3581,3581,3586,3586,3590,3590,2779,2779,3595,3595,3595,54,54,38,2851,3600,324,3605,2854,3609,3609,3190,3120,806,2843,3613,3613,3617,3617,3621,3621,3626,3626,3630,3630,2857,2857,3635,3635,3635,62,3640,3644,3648,933,3009,3652,2998,3657,1311,3661,3661,836,3001,3030,3030,3016,3016,3665,3665,3670,3670,3674,3674,3012,3012,3020,3020,3020,44,3679,3682,3686,3690,3694,2875,3698,2864,3703,2878,3707,3707,926,2867,3711,3711,3715,3715,3719,3719,3724,3724,3728,3728,2881,2881,3733,3733,3733,28,100,2610,3738,2599,3743,2613,3747,3747,845,2602,3751,3751,3755,3755,3759,3759,3764,3764,3768,3768,2616,2616,3773,3773,3773,48,48,2481,48,48,2957,3778,2950,3783,1400,3787,3787,842,785,3791,3791,2960,2960,3795,3795,3795,50,106,2378,2554,3800,2547,3805,1426,3809,3809,839,2197,3813,3813,3817,3817,3821,3821,3826,3826,3830,3830,2557,2557,3835,3835,46,46,46,2689,3840,2678,3845,1325,3849,3849,826,2681,3853,3853,3857,3857,3861,3861,3866,3866,3870,3870,2692,2692,3875,3875,3875,60,60,3880,60,2297,3883,3880,3887,3892,3897,3902,2305,2700,3907,327,3912,988,2704,3917,3917,3922,3922,3927,3927,3933,3933,3938,3938,2309,2309,3944,3944,121,1772,3950,347,3955,1318,3959,3959,855,3175,3963,3963,3967,3967,3971,3971,3976,3976,3980,3980,3985,3985,3989,3989,3989,72,72,72,347,2665,2665,2554,3994,2654,3999,2668,4003,1426,819,2657,839,4007,4007,58,58,58,3451,4012,1733,4017,2759,4021,833,3443,4025,4025,34,3311,3311,3297,3297,4030,4030,1321,4035,955,3301,4040,4040,100,4046,4051,4056,937,633,4061,4065,4069,4073,1620,2526,4077,2537,4081,429,2529,38,38,4085,4088,2712,4093,2726,4097,479,2715,56,4101,4106,4111,4116,2665,2654,2668,819,4121,4127,4131,4136,4140,922,4145,106,1403,2305,2700,327,988,3311,3297,1321,955,100,4150,4154,4159,4163,467,4168,2396,3311,3297,4030,1321,4035,955,3301,100,26,32,40,52,24,482,1783,3114,852,2957,2950,1400,842,3009,2998,1311,836,1620,2526,2537,429,4173,4177,425,4181,4186,918,2651,2668,2665,2661,2654,819,3103,3114,482,3110,1783,852,4190,4194,4198,4202,4207,4211,3293,1321,3311,3306,3297,955,4215,3648,3640,4219,3644,933,3454,3471,3468,3464,3457,803,54,3225,3242,3239,3235,3228,915,4224,1314,4228,4232,4237,911,4241,4245,4249,4253,4258,1487,4262,2947,1400,2957,2953,2950,842,2596,2613,2610,2606,2599,845,670,1318,1772,3179,347,855,3205,3205,3222,3219,3215,3208,3208,809,4265,4269,4273,4277,4282,1064,2544,1426,2554,2550,2547,839,4286,4290,4294,4298,4303,3514,4307,4159,4311,4315,4150,467,4320,4111,4101,4325,4106,4116,3534,3530,3522,4331,3526,3518,3123,3137,464,3133,3126,1044,74,74,4336,4340,4344,4348,4353,1148,2675,1325,2689,2685,2678,826,2696,327,2305,2300,2700,988,121,3382,3404,3400,3395,3386,1144,3320,3342,3338,3333,3324,812,4357,4362,4367,4372,4378,4383,70,839,4388,4392,4397,4402,4408,4413,4419,4424,0,0,0,0,0,0,0,0,0,836,26,46,34,60,50,38,30,62,28,56,48,36,106,74,58,24,52,64,32,40,321,100,303,54,70,54,1426,2833,988,4430,826,34,66,64,118,72,68,100,100,24,52,4434,97,52,52,52,109,1084,58,44,28,44,36,106,36,36,68,38,38,38,38,50,50,50,40,32,42,36,97,24,1765,54,74,60,60,60,28,74,62,62,30,26,26,54,54,32,48,48,48,46,46,106,106,30,52,4437,4441,2709,2709,2709,60,118,118,118,56,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4445,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,24,32,40,52,64,109,1440,773,842,4454,800,803,479,915,845,839,826,988,806,816,812,809,855,819,852,833,836,911,1144,1044,2529,4458,467,3148,3324,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4462,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4467,4472,4472,4472,4472,4472,0,0,0,0,0,0,0,0,44,306,36,377,106,28,321,42,1087,644,62,633,30,660,1090,62,100,30,584,50,54,303,26,637,48,72,58,46,66,121,79,60,38,46,56,24,770,40,892,64,4479,895,4482,4486,4489,4493,4496,32,905,776,776,908,24,770,770,40,892,72,1124,64,895,4500,109,855,335,32,97,905,776,908,48,38,24,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,911,915,918,922,926,812,809,929,4506,806,955,816,959,842,803,968,800,972,845,855,819,839,852,988,992,826,429,0,0,0,24,40,64,773,905,776,908,32,52,855,819,852,0,0,0,0,836,922,875,806,842,803,845,819,839,4510,4520,4530,0,0,0,0,3809,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,836,2885,922,1144,826,855,806,955,839,803,968,845,833,985,429,479,911,1454,842,24,40,773,4535,64,776,52,1440,32,4538,905,0,0,4542,4542,4542,4542,4542,0,0,0,0,0,0,0,0,0,0,0,179,479,179,179,179,836,2885,922,179,179,179,1144,826,855,179,179,179,806,955,842,179,179,179,803,968,845,179,179,179,833,985,839,179,179,179,429,816,800,179,179,4548,4552,0,0,0,0,0,0,4556,770,892,64,895,32,97,52,782,1440,1521,4562,4566,507,4569,4573,4577,4580,4580,4580,4580,4580,4580,4580,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,4586,4590,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,915,922,4595,803,800,845,4600,806,816,842,4604,926,809,848,4608,855,819,839,985,826,24,429,40,64,32,52,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4613,4613,4617,4623,4630,4636,4636,4642,4642,4648,4648,819,819,839,839,4654,4660,4667,4667,836,836,915,915,922,926,926,809,809,848,806,806,816,816,842,806,806,816,816,842,803,803,800,800,845,855,819,839,852,826,826,826,429,4673,4681,4613,4613,4688,4688,819,819,839,839,4693,4693,4693,4693,4700,4700,0,752,4706,4711,4716,2830,4719,4723,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4730,4739,4749,24,40,64,97,52,32,1786,836,479,915,922,926,809,1044,848,806,816,842,803,833,985,800,845,855,819,839,852,826,2885,429,4759,4769,4778,4786,4795,4803,4814,4823,4831,4842,0,0,0,911,4850,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,4854,911,915,4858,922,926,812,809,848,806,955,816,842,803,4862,968,833,4866,800,4870,845,4874,1144,1454,1148,855,819,839,429,4878,985,826,988,852,24,855,819,770,40,52,776,64,895,32,44,48,46,50,54,58,62,4882,4890,4895,996,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,933,937,942,0,6,8,10,12,14,16,18,20,22,839,4899,4902,4454,4905,2197,4908,4912,4916,4920,2547,4924,4927,4930,4934,2544,4937,4940,4943,4566,2554,4947,4950,410,4954,1426,4958,4962,4965,4968,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4971,4971,97,4971,4971,4971,4971,4971,4979,40,4971,4971,4971,4971,4971,4971,4971,4984,4984,4984,109,4971,4993,4997,4971,4971,4971,4971,4971,4984,4984,4984,4971,4971,4971,4971,5004,587,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,4971,24,5011,5018,5011,26,30,32,5024,4979,5011,36,5011,44,48,5030,52,4979,4993,4997,54,62,64,4984,5011,66,587,5034,5039,5045,5039,3324,40,58,64,66,5034,5051,5057,3355,3324,1440,26,30,34,48,50,54,58,58,60,62,74,36,5061,5070,100,40,5078,54,64,5083,26,30,34,36,44,46,48,50,54,58,60,5091,66,70,74,24,5018,30,32,32,4979,5024,40,52,5091,64,5095,5011,28,28,5099,5103,34,5112,5120,5011,40,5078,4971,4971,42,46,46,4971,48,5011,50,50,4971,5127,3355,60,5091,62,64,5083,4971,66,5011,74,74,74,5095,5134,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,5140,97,1451,5150,28,5070,5099,36,4971,44,46,4971,4971,50,4971,4971,58,60,60,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,28,28,30,30,30,30,30,30,30,30,30,30,32,32,32,32,32,32,32,32,32,32,34,34,24,32,40,52,64,52,64,773,50,106,26,54,56,36,48,46,60,121,62,30,321,42,72,58,68,34,44,911,127,74,38,5153,2396,124,321,48,32,40,52,64,52,64,106,26,54,56,36,48,62,30,321,42,127,72,68,44,36,38,5156,644,130,32,40,4577,64,64,106,44,36,38,54,121,62,30,42,34,36,38,127,74,58,321,124,40,44,58,34,124,64,64,64,64,66,66,66,66,68,38,70,68,48,68,68,24,40,44,106,28,630,633,654,1090,62,30,54,303,79,124,74,24,62,124,377,106,28,1087,933,660,62,584,79,5159,124,74,64,72,637,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,64,64,64,64,64,64,64,64,64,64,64,64,64,64,72,72,72,72,72,72,72,72,5162,5162,5162,5162,72,72,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5175,5175,5175,5175,5175,5175,0,0,5175,5175,5175,5175,5175,5175,0,0,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5078,5187,5187,5187,5187,5187,5187,0,0,5187,5187,5187,5187,5187,5187,0,0,5083,5083,5083,5083,5083,5083,5083,5083,0,5083,0,5083,0,5083,0,5083,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5018,5018,5175,5175,5183,5183,5078,5078,5187,5187,5083,5083,5195,5195,0,0,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5018,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5183,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5195,5018,5018,5018,5018,5018,0,5018,5018,5018,5018,5018,5018,5018,0,0,0,0,0,5183,5183,5183,0,5183,5183,5175,5175,5183,5183,5183,0,0,0,5078,5078,5078,5078,0,0,5078,5078,5078,5078,5078,5078,0,0,0,0,5083,5083,5083,5083,5057,5057,5083,5083,5083,5083,5083,5083,5057,0,0,0,0,0,5195,5195,5195,0,5195,5195,5187,5187,5195,5195,5195,0,0,0,5201,0,2,2,2,2,5205,2,2,5209,5213,2,2,2,2,2,2,2,2,2,2,0,0,0,5218,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,0,0,5224,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,5230,0,0,2,0,0,0,0,0,0,5234,0,1,1,0,0,5237,0,0,5241,0,0,0,0,0,0,5248,0,0,0,5255,2,2,0,0,0,0,0,0,0,0,0,0,5261,0,0,5267,5267,5274,40,0,5280,0,0,0,0,0,0,0,5285,0,0,0,50,0,0,0,0,0,0,0,0,0,0,5291,0,0,0,0,0,24,32,52,70,5024,0,0,0,0,0,0,0,0,0,5296,0,0,0,0,0,0,0,0,5301,0,0,0,0,0,0,0,0,0,5305,0,5309,0,0,0,5314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,0,0,0,0,0,0,5329,0,0,0,0,0,0,0,0,0,0,4971,5333,0,0,0,4971,0,0,0,0,2,0,0,0,0,0,4971,0,0,0,0,5337,2,0,0,0,0,0,4971,5078,0,0,0,4971,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5342,0,0,5347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5352,0,0,0,0,0,0,0,0,0,0,5358,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,5362,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5372,0,0,0,0,0,0,0,0,0,5320,0,0,0,0,5377,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5381,0,0,0,0,0,0,0,5386,0,0,0,0,0,0,0,0,0,5391,0,0,0,0,0,0,0,0,0,5396,5401,5401,0,0,0,5407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5426,5386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5248,0,0,5437,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5442,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5448,0,0,0,0,0,0,0,0,0,0,0,0,0,5453,5459,0,0,0,0,0,0,0,5453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,28,28,30,30,30,30,30,30,30,30,30,30,32,32,32,32,32,32,32,32,32,32,34,34,36,36,38,38,38,38,38,38,38,38,38,38,40,40,40,40,44,44,44,44,44,44,46,46,46,46,46,46,46,46,48,48,48,48,48,48,50,50,50,50,50,50,50,50,52,52,52,52,52,52,52,52,54,54,54,54,58,58,58,58,58,58,58,58,60,60,60,60,60,60,60,60,60,60,62,62,62,62,62,62,62,62,64,64,64,64,64,64,64,64,64,64,66,66,66,66,68,68,68,68,68,68,68,68,68,68,70,70,70,70,72,72,74,74,74,74,74,74,38,62,68,72,24,60,24,26,28,30,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,64,64,64,64,64,64,64,64,64,64,64,64,64,64,72,72,72,72,72,72,72,72,16,18,20,22,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,0,0,32,32,32,32,32,32,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,52,52,52,52,52,52,5386,0,52,52,52,52,52,52,2,5480,64,64,64,64,64,64,64,64,0,64,0,64,0,64,0,64,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,24,24,32,32,32,32,40,40,52,52,64,64,52,52,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,24,24,24,24,24,0,24,24,24,24,24,24,24,0,40,0,0,0,32,32,32,0,32,32,32,32,32,32,32,0,0,0,40,40,40,40,0,0,40,40,40,40,40,40,0,0,0,0,64,64,64,64,58,58,64,64,64,64,64,64,58,0,0,0,0,0,52,52,52,0,52,52,52,52,52,52,52,0,0,0,5485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5491,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,5496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5501,0,0,0,0,0,0,0,0,0,0,5506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5509,0,5255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5514,0,0,0,5519,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5524,0,0,0,0,0,5529,0,0,0,0,0,5534,0,0,0,5540,5544,5547,5550,46,5553,50,5557,1134,68,2406,30,1786,44,62,5561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5568,0,5573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5578,0,0,0,0,5564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,40,892,5583,5587,66,2819,5590,5594,5599,70,2891,5602,46,28,30,48,40,892,5583,5587,66,2819,5590,5594,5599,70,2891,5602,46,28,30,48,6,30,10,12,14,16,18,20,22,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,66,0,0,0,0,0,5606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5612,0,0,0,0,5617,0,0,0,0,0,0,0,0,0,5622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5629,0,0,0,0,5291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5635,0,0,0,5629,0,0,0,0,5642,0,0,0,0,0,0,0,0,0,0,0,0,0,5647,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5325,5655,0,0,0,0,0,0,0,0,5285,0,0,0,5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5661,5661,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5666,0,0,0,0,5671,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,5676,5682,0,0,0,0,5688,0,0,0,0,0,0,0,0,0,0,5693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5699,0,0,0,0,0,0,5291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,5704,5704,0,0,0,0,0,0,0,0,0,0,0,5708,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5712,0,0,5717,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5721,5721,5721,5721,5721,5721,5721,5721,5721,5721,5721,609,609,0,5721,5721,0,0,609,609,5721,5726,0,609,609,609,0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5693,0,0,0,0,0,0,0,0,5730,0,0,2,2,0,0,0,0,0,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,5682,5682,5682,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,272,272,272,272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,5682,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5735,5739,5744,5749,5757,5763,5769,5777,5783,5790,5795,40,5803,5810,5815,5823,5831,5837,5841,5848,5854,5860,5867,5871,5877,5882,3468,5886,3386,5891,988,5898,5903,5908,5913,670,5921,5921,1318,5925,5933,5925,5937,5942,5950,5958,5969,0,5735,5739,5744,5749,5757,5763,5769,5777,5783,5790,5795,40,5803,5810,5815,5823,5831,5837,5841,5848,5854,5860,5867,5871,5877,5882,3468,5886,3386,5891,988,5898,5903,5908,5913,670,5921,5921,1318,5925,5933,5925,5937,5942,5950,5958,5969,0,46,46,46,54,58,24,62,38,38,44,44,74,74,5018,48,24,0,66,68,68,66,1432,1432,5978,32,58,52,4971,42,4971,0,0,5987,5987,5992,5992,5051,5051,5997,5997,6003,6003,6007,6007,6011,6011,6016,6016,6021,6021,6028,6028,6034,6034,6039,6039,2599,2599,2950,2950,6045,6045,52,52,3457,3457,2668,2668,6049,6049,6054,6054,4500,4500,1733,1733,4237,4237,6058,6058,6062,6062,6066,6066,6076,6076,6080,6080,6066,6066,6066,6066,6080,6080,6076,6076,283,283,6094,6094,6076,6076,6076,6076,6102,6102,6066,6066,6076,6076,6076,6076,6111,6111,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,6076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,603,1635,1639,1643,410,1647,1651,1655,609,1659,1663,1667,1671,1084,1675,1679,1602,331,1684,606,1688,1693,1698,1703,1707,1712,1717,1721,1725,1606,1729,1611,1616,1620,1623,482,1627,1631,0,0,0,0,0,0,0,0,0,0,855,6120,6124,6129,6133,6139,6146,6150,6154,6159,6164,6170,6174,6178,6182,6189,6195,6139,6182,6199,3175,6204,6182,6209,6182,347,6213,6218,6182,6226,6230,4506,6182,6182,6234,670,1447,6238,6243,6182,6248,6253,6257,6262,6267,6271,6276,6281,6286,6290,6294,6298,6302,6313,0,0,0,0,0,0,0,0,0,6318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6332,6336,6340,6344,6348,6353,6357,6361,6365,6369,782,6374,6378,6382,6387,6391,6396,6401,6406,6410,6415,6420,6426,0,0,0,0,0,0,0,0,0,992,6431,6435,6439,6444,6449,4430,0,6453,6457,6461,6465,6470,6475,6479,0,6483,6487,6491,6495,6500,6505,6509,0,6513,6518,6523,6528,6534,6540,6545,0,6550,6554,6558,6562,6567,6572,6576,0,6580,6584,6588,6592,6597,6602,6606,0,6610,6614,6618,6622,6627,6632,6636,0,6640,6644,6648,6652,6657,6662,6666,0,2806,2830,425,432,3162,464,836,407,413,410,52,3468,6670,6673,2851,429,3400,3338,988,6676,5937,6682,24,335,6688,6694,6267,670,6704,6713,5933,6704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,5682,220,5682,6720,6725,6725,6725,6725,6725,6725,6734,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,24,24,40,40,64,64,32,32,52,52,836,915,2998,3228,2995,3225,3009,3239,1311,3242,826,1044,2678,3126,2675,3123,2689,464,1325,3137,806,816,324,3120,2840,2840,3183,2851,432,2854,3194,842,2950,2947,2957,1400,429,800,803,2526,70,3457,2523,2792,3454,1620,2806,3468,2537,2809,3471,845,2599,2596,2610,2613,855,855,670,670,1318,1318,819,2654,2651,2665,2668,852,852,1783,482,3114,50,2816,836,3009,0,0,0,0,0,0,0,0,0,2,24,24,40,40,64,64,32,32,52,52,836,915,2998,3228,2995,3225,3009,3239,1311,3242,826,1044,2678,3126,2675,3123,2689,66,66,66,66,816,324,3120,2840,2840,3183,2851,432,2854,3194,842,2950,2947,2957,1400,429,800,803,2526,2795,3457,2523,2792,3454,1620,2806,3468,2537,2809,3471,845,2599,2596,2610,2613,855,855,670,670,1318,1318,819,2654,2651,2665,2668,852,52,1783,482,3114,50,2816,836,3009,985,2819,2830,2833,0,0,0,0,0,0,0,0,0,0,26,54,48,34,30,62,50,46,36,44,38,42,56,70,124,321,121,58,74,28,60,24,52,32,4535,905,1518,908,139,603,410,4454,5030,6670,40,64,371,66,106,6743,4927,0,0,0,6746,6753,6765,6777,6783,6795,6807,6814,6826,6832,6845,6857,6869,6880,6894,6908,6920,6926,6932,6943,6954,6959,6969,6975,6981,6992,7000,7008,7016,7024,24,97,855,475,1765,32,1768,1772,52,852,1775,109,1318,64,1779,482,1783,670,1786,347,40,0,7030,2017,2030,2041,2096,2126,7041,7058,7072,7090,7102,7113,7127,7141,7154,7167,7185,7203,7215,7229,7243,7262,7274,7285,7297,7308,7319,7327,7338,7347,7361,7378,7394,2182,1858,1864,1883,1930,1937,1948,1999,7405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2792,3126,3208,3225,773,7412,776,7416,4934,7420,7424,4943,7428,7431,7435,7440,1437,1429,7445,7449,54,62,44,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2995,2678,2675,2854,2947,429,2526,2523,1620,2537,2596,819,2654,2651,2665,2668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7454,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7460,7467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,26,0,44,0,46,0,28,40,34,0,48,60,54,0,32,0,38,0,52,0,58,0,30,42,36,0,50,62,56,0,0,0,0,0,64,0,66,0,0,0,0,0,70,0,0,0,0,0,0,0,74,0,0,0,0,68,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5688,5606,0,0,7473,7478,7482,0,0,0,0,0,7487,0,0,0,0,0,0,0,0,0,7491,0,0,0,0,0,5442,0,0,0,0,7495,0,0,5688,0,0,0,7500,5426,0,7504,7511,7516,7521,5218,7528,5655,5491,7478,7533,0,0,7538,7542,5476,7548,7555,7558,0,0,0,0,5314,7565,5708,7478,7571,0,7576,7582,7588,5476,7592,7599,5666,5386,7605,0,0,0,0,7500,0,0,0,5381,5459,7495,7588,5476,7610,7616,5413,0,0,0,5347,7622,5476,5301,5325,7628,7632,7637,0,0,0,7643,7500,5296,7648,0,7576,0,7653,5237,7658,7663,5296,7667,7538,7672,5629,7675,7681,7687,7628,7692,7696,7700,7706,7710,7715,7653,5629,7719,0,7723,5666,7730,0,0,5296,7734,7738,5320,0,7742,7658,0,7746,7752,7757,7628,7763,7667,5453,5661,5337,0,0,5617,0,5666,5301,0,7632,0,5325,0,0,0,0,7768,0,7774,7779,7786,7790,0,7795,5342,0,0,7790,7800,0,5391,5301,0,7599,5568,7805,5655,0,0,0,5224,7811,7582,7817,0,0,5401,7592,5329,5426,0,7823,5661,0,5358,5381,7588,0,0,0,5337,5426,7706,0,7828,5564,7632,5280,5381,0,0,7834,7839,0,7843,0,0,7849,0,5301,5396,7853,7858,0,7667,7864,7867,5476,5291,7872,5407,0,7710,5248,7710,0,7672,0,7516,5291,7588,7675,7877,0,0,7605,7883,5407,7576,7888,5661,5301,0,7710,5237,5407,0,5325,0,7893,5573,7898,5568,0,7904,7779,7908,0,7849,0,5291,5666,7914,7920,7924,7672,7930,7864,5329,0,0,7935,7495,7940,7946,7628,0,7952,5476,5274,7817,7957,0,5333,5391,0,7962,5642,5381,7967,0,5699,7482,0,7972,7977,7982,7986,5730,7990,0,5485,7663,0,7864,5573,5661,5573,7994,0,0,7811,7588,5337,0,7667,7999,7500,5391,0,0,8005,0,7849,5671,7834,5688,5476,5396,0,8010,8015,7883,7565,8022,5708,5564,8028,7849,5337,5396,0,8033,8039,8044,5396,5301,8048,8052,8057,0,7487,0,0,5333,7516,5476,5730,0,7500,5726,7696,0,0,0,0,0,0,0,8028,7994,5661,5377,8062,8068,8073,8077,7482,0,0,0,0,0,0,8082,8087,7904,7491,5325,7853,7653,7592,7582,7752,5329,5448,8039,8093,0,5606,8099,0,0,0,0,0,0,0,7491,5391,5529,5501,8104,8110,7888,8115,7864,5661,0,7864,8119,7752,7800,7982,5717,5367,7800,5358,5325,5730,7972,0,0,0,0,8126,7663,0,0,8131,7883,8126,8073,8136,5301,7675,5519,0,0,0,0,0,7582,5377,8140,8144,8149,7972,7663,5237,0,7867,0,0,0,0,5573,5325,8154,7738,7834,7500,0,8159,0,0,0,0,7491,7521,0,5367,7571,5476,7839,0,0,5274,7658,8164,5476,7972,5476,5274,8170,5325,7653,0,8174,5301,0,5347,8179,7653,7834,0,0,7834,7653,0,7710,8184,8154,0,5358,5367,5534,8190,0,5337,8196,7500,8028,5358,8052,5485,5708,5708,0,0,0,0,8170,0,7571,8201,5381,7663,8205,7839,8048,0,0,0,0,8077,7511,8211,8217,0,5358,8222,0,5573,7653,5606,8227,0,0,0,0,5564,7888,7628,7491,8005,7653,7908,0,7908,0,7610,0,8201,7710,5661,8077,7843,5476,0,7800,8015,5367,8234,0,0,5325,8239,7491,5325,7482,0,8245,5476,5661,8052,5218,7653,7877,7658,5629,7972,8222,8249,7952,7877,5666,0,5237,0,0,8255,8261,8267,0,7610,5564,0,0,7786,0,0,5396,8039,0,5524,8272,0,5261,8277,8077,5564,5524,7867,8282,0,0,5237,7500,8005,8249,8287,0,5325,8293,7675,5476,7628,5476,7834,0,8297,8052,8302,0,5337,0,7528,5358,0,7828,0,8201,0,7487,7696,0,7790,8267,0,0,8255,0,8174,0,0,7495,5381,0,7696,7888,0,0,0,7888,0,0,7867,0,7742,5448,8179,8307,0,5352,5476,0,7571,8312,7867,8316,7528,5337,7930,7610,0,0,0,0,0,0,7738,5347,7800,8322,7576,7834,0,5329,0,5514,7746,0,7872,8048,5496,5386,0,5442,0,5320,7858,0,8005,8302,0,5274,7972,0,0,0,5401,8329,7500,5651,5296,7715,0,8334,5476,8131,5629,7706,8267,5320,5564,5476,8245,0,5401,8340,8179,8170,5329,7588,5362,5708,8345,7542,0,0,0,0,8297,7914,8349,7653,8354,7696,5708,5274,7538,0,0,5347,0,8354,7582,5534,8359,8249,5453,5509,5651,8077,5726,8365,5401,7972,5209,8370,7500,8052,8329,7972,8010,8104,8131,0,8104,8375,7605,8087,8239,5381,5661,5693,5381,8164,8211,0,5717,5642,8381,5476,7843,5218,7482,0,7588,0,7516,8387,7790,8391,8397,7628,7491,8131,5651,7667,7752,0,0,7828,7610,0,5426,8402,8255,7746,8249,8196,0,5509,8407,7663,0,8411,8417,5401,5309,0,7805,7571,8073,0,5642,8422,5325,0,8039,5325,7994,0,0,7500,8184,8267,0,7904,5578,8170,7994,5237,7706,5476,5661,7839,5688,8068,5453,7706,5325,0,0,0,7828,8149,8427,0,0,7482,8433,5325,5296,5437,5347,5386,8170,8196,5491,0,5381,7500,0,5218,8307,7710,0,8438,5464,5342,7990,8443,8052,7558,5529,8447,7710,5401,8345,7710,0,7521,7924,5396,8451,5688,8149,5564,8217,8211,7843,5480,7653,8211,8073,0,7706,7653,0,7610,0,7681,8149,7706,8365,5651,8456,8427,7521,8461,0,7706,0,5329,0,8267,7864,7768,8438,7994,7768,5320,8438,0,0,8391,5642,5291,5301,7908,8461,8467,8245,0,8149,7957,7542,5708,8473,0,8211,8479,0,5708,0,5237,5564,0,8484,8489,8316,5726,7864,0,5325,5325,5396,5285,8397,8473,8249,8126,7994,5325,5708,7628,8052,8217,8494,8447,8498,0,5301,5329,5453,5396,8277,0,7672,0,5651,7628,0,8170,0,0,8427,0,5476,0,5325,5358,0,8504,0,8010,5717,7692,5381,7622,0,0,8316,0,7839,5358,8509,5301,0,7962,7495,0,5325,8514,5274,5280,7864,7790,0,0,7853,0,8255,0,0,7478,0,8519,5377,5401,5358,0,8211,5529,8527,5666,0,5241,5573,7800,7610,0,7482,0,5241,7542,8375,8077,5476,0,5325,5325,8533,7628,8484,7811,8539,0,8093,5325,8543,7687,7839,7883,8239,5476,7999,5274,7710,7839,7710,7834,7843,8307,7610,7877,0,8422,5496,7663,7710,0,7616,5496,7853,0,8422,5496,5642,8548,0,0,8255,5401,8196,5329,7834,0,0,5476,7877,7592,5419,0,5485,0,7582,0,5676,7653,8539,0,0,8062,0,7710,8438,5358,0,8329,5329,0,5617,5358,0,5358,0,5274,7994,5432,7696,5676,0,5655,7930,5476,7628,5726,8365,5651,8447,7487,0,0,0,5261,7658,7715,5485,8411,8164,8554,8179,0,0,0,0,0,8539,8316,7738,5426,0,7888,5237,8316,0,5377,5261,5407,7972,0,7482,0,0,7811,7548,7706,0,0,5661,5661,8115,7994,0,0,7738,8427,8381,0,0,0,5476,8504,5320,5496,5314,0,7746,5325,7565,8456,7663,8010,5708,8196,5280,7675,0,0,8255,0,8316,0,5337,0,8543,5564,5573,7605,0,5573,0,8560,8566,5291,0,5496,8571,8577,5301,7500,0,7628,8370,5301,5730,7817,7990,8467,8407,5296,0,8582,7592,8365,5564,7867,7930,5237,7839,8334,0,5237,5688,5464,0,0,5442,8589,0,8407,8407,8594,8514,8093,8087,7828,8179,5459,7935,5352,0,8170,5325,8277,5606,8467,0,7774,7706,7628,5401,0,0,0,0,7628,5325,7994,5651,8402,5661,7500,5237,5688,5296,0,7628,7867,8598,7805,7888,7957,0,8334,7658,7576,7482,0,7893,7914,8467,5476,7643,7719,7491,8438,5501,7849,0,7482,8604,8447,5708,8527,5401,8227,7877,7538,8539,0,5329,0,5476,5396,0,8422,7864,5396,7962,8447,5401,5301,5274,7834,7610,8514,5407,0,0,8411,7628,8154,7622,5442,8370,0,5333,5381,7994,5476,7811,7849,8179,5347,7482,5661,0,7632,8093,7542,8154,0,8494,0,0,5717,0,5459,5218,5325,8608,8613,5237,8617,7500,5476,7982,5325,5726,5606,0,7542,7715,0,7790,7482,5671,7904,5274,7790,7565,8387,0,8022,7994,5529,0,8625,8484,7864,5209,8402,5358,8631,0,8577,0,0,7908,0,8370,0,7605,5248,5274,8190,0,5688,8456,7952,7696,7817,7723,0,8149,5301,8033,8589,8073,8494,8057,0,7888,0,8594,7738,7972,8473,7786,0,0,5224,7972,7582,7558,7999,8028,7516,8312,5325,8438,7994,7935,8131,0,8613,0,8201,0,8005,8149,7653,7616,7972,5381,5426,5661,8329,5261,7542,5661,7588,8370,5651,7643,0,0,5296,8136,8022,8543,7511,5381,5464,5347,0,7982,8307,8154,5717,5642,8604,7952,5407,5407,5442,5309,7538,5296,8514,8179,7672,7920,7924,8170,8170,5699,0,0,8635,0,8484,5396,5274,5661,0,7588,7893,8604,7491,0,0,0,8196,5296,8068,0,8322,5237,5476,0,8249,8641,5347,8052,7839,8533,8647,7632,5651,0,0,0,5661,8073,5296,7706,5661,0,0,8073,7542,8282,5285,5291,8653,8022,8170,7864,8077,0,5459,5459,0,7952,0,7706,7805,0,7628,8196,0,7990,5564,0,8539,5274,7952,7849,8658,7653,8316,8073,5261,5358,5329,7491,8447,8663,8589,7757,5329,7853,5401,7990,8589,5655,8663,5401,7790,0,7542,7990,8670,8255,5358,0,7482,0,5261,7588,7730,7872,5314,5329,8093,5496,0,7811,0,0,7977,8282,7982,8307,0,7957,0,5676,7990,5612,5717,5578,5693,8676,7605,7834,8334,5496,0,0,0,0,5476,0,0,5337,8234,5642,5642,5391,7817,7706,8682,0,0,5730,5651,5564,7982,8687,7883,0,0,7834,0,0,5726,0,8227,8391,0,8222,0,0,0,5274,0,0,0,7790,7843,7823,8456,8033,0,0,8694,0,7867,5491,0,8653,5459,5329,0,0,0,0,7628,7658,7877,7800,7746,7811,0,8699,7811,5730,5485,8073,5274,5301,5309,0,8211,8647,8052,7924,0,5274,7588,7994,7935,0,5309,8554,7849,0,8635,8093,0,8217,0,7734,8354,8073,0,5296,5459,7834,8170,5285,7908,8577,7628,5377,0,7478,8062,7675,8052,0,0,0,0,5464,5564,0,0,5471,0,8705,5285,0,7528,0,0,8467,5291,5396,0,7898,8711,0,0,7994,0,5712,7487,8411,5329,0,0,0,7849,5617,7672,5213,8164,5688,8577,7817,5274,5237,0,0,5453,0,0,0,5661,5666,0,8498,5314,7893,7571,5459,5325,7849,5325,0,0,0,0,0,5647,5274,7834,5629,7738,8539,5291,8608,7653,5642,8170,7872,7898,0,8077,5606,8716,0,0,5337,7746,0,0,8716,5426,7706,0,8682,8316,7696,7977,8196,7790,7864,5301,7710,0,7849,5381,5325,0,8721,5730,5671,0,5501,7719,0,5325,0,7723,7849,0,5274,5381,5396,5358,0,0,5655,0,0,5391,0,8022,7972,8543,0,0,0,7843,5358,5274,7898,5491,0,0,7920,7877,5358,7588,8154,8727,7616,8732,5419,5362,7786,7565,0,0,7738,8402,0,8407,8297,8739,7935,8245,7982,8402,5329,5676,5329,7542,8174,5655,0,5301,8340,7706,0,0,5377,8093,5726,5401,5329,5320,7817,5578,8473,5309,8745,0,0,8548,7734,5309,8473,5407,8234,0,0,0,8577,5301,7632,7914,7746,5407,8539,7930,0,5401,0,8329,8751,5699,7610,8397,0,5291,0,5617,0,5661,0,5347,8140,5476,7495,5301,8354,0,5476,0,5325,8756,5661,0,5209,7990,5296,5726,0,0,0,8631,0,8329,0,7914,5568,7867,8302,7500,8387,8312,8443,5337,5209,5401,5309,5367,5476,7867,5651,5285,0,7710,5391,0,7482,5305,5476,0,7719,5309,7491,0,5699,7935,8375,0,5241,0,0,0,0,0,0,8402,0,8345,5519,8179,8732,7687,0,5325,8073,0,0,7843,8422,0,8093,7864,8494,5401,8762,8514,5347,7994,8676,7908,7663,5437,5296,5476,5305,5209,8543,5413,0,5358,5301,5329,7632,0,7883,0,5699,8033,0,7558,8484,5568,5325,8093,0,8670,8509,7872,8287,8766,0,7957,8222,0,0,8222,8164,0,5666,0,0,5726,0,0,7972,8772,8164,8443,7616,7790,8716,8411,0,0,5629,7653,5372,8164,0,0,7734,0,8772,0,8297,8381,8577,5459,5459,7548,0,7672,7883,0,7952,5325,8447,5476,8184,7628,7599,8039,8115,7834,8402,5274,5285,5320,5564,8456,0,0,0,0,8201,8411,7710,7730,5476,8411,0,8217,5347,0,7637,0,8190,7628,7628,0,0,0,0,7738,0,0,0,0,8170,5661,5237,5407,0,7533,7738,8190,5274,5453,0,0,0,0,0,5651,5325,8131,7752,0,7599,5337,8115,5358,5651,0,5661,8010,5476,0,5666,7616,0,5309,5617,7482,5325,0,7588,0,0,0,7599,7746,7588,5476,5437,7719,5325,7632,0,7790,7687,5342,7972,8411,5301,0,0,0,0,0,0,0,8255,8721,0,5655,0,8077,7667,5661,5642,5661,0,8766,0,0,7610,8033,5651,5699,0,8136,0,0,0,7588,5661,8073,5693,8498,0,8519,7935,7653,7883,8052,0,0,0,7914,5651,7877,8514,7653,8402,5291,7849,7893,5391,7935,7914,7555,5564,7800,0,0,0,0,5476,5442,0,0,8222,5666,7990,7828,5358,5342,5717,5358,5476,5274,8447,7616,7605,8104,8527,7500,8647,7478,8239,8777,7967,0,8411,5642,7811,5213,5448,0,8217,5485,5237,0,8039,0,0,7834,5529,5573,7946,7616,0,0,0,5401,5274,7811,0,0,5401,5261,8777,7930,5407,5320,8010,7828,0,7904,7628,0,0,7700,5666,5476,5491,0,7877,8783,0,5309,5362,0,0,0,8239,5712,8484,0,7511,7653,0,5218,5309,7710,8504,8789,0,0,8062,5606,0,0,0,0,8073,7723,0,5320,8402,5296,8783,8307,8625,7864,7994,5501,8772,0,8099,7849,5218,5296,0,7628,8548,7834,5688,7999,7592,7658,0,0,0,0,0,0,8422,7516,7592,7687,0,7849,0,7500,0,0,0,8402,8745,5305,0,0,5413,5301,0,0,7834,5717,5305,7930,5676,5459,8670,0,7478,7834,0,5291,0,7658,7653,0,7828,5325,5381,0,0,0,5661,7986,8010,8154,5237,8077,5651,8297,8498,7482,5651,0,5291,0,8316,5509,0,5301,8670,8571,8795,8282,0,7681,0,7930,7491,7858,7877,7982,8800,0,8345,8104,7542,7930,0,5501,0,5480,5480,7571,8093,0,7952,0,5391,5730,8577,0,7487,0,7930,8504,8762,8073,7779,7839,5358,5325,8548,0,7849,5301,8467,8354,0,7877,8539,5666,5309,5248,7487,7734,5476,0,0,7811,8272,8613,7616,7616,7648,7482,5391,7482,5291,8068,8190,0,0,7867,7605,0,0,5337,0,0,5237,5391,5476,5305,0,0,7982,7675,7478,0,5485,8805,5391,8447,0,7738,0,5573,7877,8647,7757,5386,5386,8811,8131,7628,5730,0,0,0,7982,7924,0,5274,0,8164,7957,7999,8179,8239,8647,8370,8010,7653,7883,8427,0,7738,7605,8282,5407,7628,5314,5337,5301,0,0,0,7877,5401,0,0,8484,7734,5688,7817,5209,7628,0,0,8705,8816,5712,0,8484,0,7500,5255,8411,7790,0,0,0,0,5476,5337,0,5255,0,8222,5296,0,0,0,8201,8211,7986,5647,7478,5301,8093,0,5325,7667,0,7888,5291,5491,7930,0,0,0,0,0,7986,8411,5342,5647,5459,0,0,0,0,0,7888,0,0,5342,5358,5647,7719,8179,5647,7746,0,7672,0,0,8427,5358,5325,8433,0,5301,0,0,5342,0,5320,0,0,7864,0,0,0,0,7723,7632,7482,8068,7786,7628,5666,7930,8028,7858,5401,5688,5401,0,0,5301,5693,8631,7576,0,5426,8608,8010,5352,8126,5480,0,7864,8126,7706,5573,7817,8316,7653,7558,7977,7811,5426,7828,8349,7582,7864,8821,8577,8119,7742,8539,7628,8732,8164,0,5629,8827,8647,8617,5329,8316,5241,5301,7730,0,0,0,0,8625,5476,7653,5661,7632,7511,0,7883,0,0,8772,0,0,0,5337,7823,0,8461,7667,7710,5568,5509,5301,7511,8577,5367,0,8345,7628,8170,8110,8329,0,8451,8179,8833,5218,5564,8821,0,5237,5320,5285,5285,7653,8015,0,0,8839,8033,8010,5325,0,0,7786,7478,0,7867,5320,0,5480,8762,7487,8297,7715,5564,8093,5325,5519,8190,8716,0,5381,5301,8245,5325,0,7672,7914,5301,7843,8845,7482,0,8196,7867,7935,5337,8201,5464,5699,8277,0,0,7500,7898,7990,7706,0,8119,0,0,7576,5464,8422,7982,7930,0,0,0,5325,7786,0,5524,7637,7538,7605,8422,8422,5401,7843,0,0,0,5491,7663,5274,0,5237,0,8422,8179,5514,0,5381,5501,8658,0,5642,8479,7977,5666,7834,5329,8422,7616,7920,7632,5301,5432,0,7790,8126,0,0,5642,7849,8104,7982,8381,5442,5301,5629,7811,5358,0,7935,7924,8245,5708,5529,0,0,0,8297,0,5372,5509,7738,8222,0,7834,0,7605,8387,8010,5337,0,8422,8249,5617,5309,7786,7706,8255,5285,7834,0,8795,7746,5274,8589,8136,0,7811,8816,7558,0,5291,5237,7706,8608,5712,7786,0,0,8010,5726,7877,8598,5358,7790,8851,7786,8062,7811,7632,8560,7977,7768,0,8211,8201,7786,0,7715,7663,7616,8598,7843,5381,8539,7977,0,8751,8504,7834,8762,8539,0,7843,5274,0,5426,7930,8345,5651,7706,7706,8494,5617,7628,7977,7558,5642,7616,7924,5325,5381,7653,8438,7957,8509,5642,7834,7962,7952,5464,7616,8119,5496,5401,0,8190,8732,7935,8447,5726,7622,8154,7628,7823,7982,8554,0,7542,5617,5419,5708,8349,8211,8427,8411,5285,5291,8789,5358,5391,5301,5305,8577,7763,5305,5237,7877,5726,5285,8154,0,7500,7700,8316,5730,7628,0,0,8073,8857,0,8287,0,5381,0,5426,5296,5391,0,0,0,5642,7628,7898,5381,5578,0,5617,8539,7582,7839,5564,8438,5655,5655,0,7834,7757,8062,7817,0,7672,8625,7986,8402,8048,8451,7834,0,5381,0,8039,5612,5509,5241,8077,7757,8277,7738,8402,0,8234,0,0,0,0,7746,0,8438,8170,7628,0,7999,8115,0,0,7533,7849,8131,8062,8149,7478,8287,0,5329,8140,5401,0,8255,5320,0,0,8433,0,5296,7588,8519,0,7610,0,5386,8772,7883,7994,8811,8245,5301,0,5274,7533,7986,0,5453,8359,7616,5274,5347,5305,7904,0,5564,5358,0,8154,5476,7511,0,0,5676,8154,7558,8307,7864,0,7834,8863,8762,7706,7628,7768,8154,8077,7946,8170,5617,0,0,5352,8391,8340,7957,5301,8104,0,8402,5261,0,7706,0,8277,8093,8239,8705,7628,5386,8287,7706,5476,8184,0,5407,8387,0,7805,0,0,0,5358,7883,8312,8184,7972,8783,5606,5606,8110,5476,8577,8345,7849,7723,5301,0,5209,7588,8467,8387,8762,5509,0,7582,5337,5296,5407,7872,8211,8170,0,0,8345,5342,8277,7643,8322,0,7888,0,8136,8179,5377,7500,8484,5464,7706,5381,7790,7834,0,7972,8422,0,7663,8334,8777,5629,8869,7643,7706,5573,5612,5314,8417,5647,8443,7957,7622,5301,7800,7786,8433,5396,5712,0,5401,8479,5261,7839,0,0,7972,7904,8402,5688,0,7610,0,7893,8039,7558,8484,7864,0,5291,8062,5285,8498,5642,8316,5496,5337,5320,5642,5717,7811,7843,5291,8033,0,0,7914,0,8391,8391,0,8519,8267,0,5309,8287,0,8772,0,7723,0,7558,0,7628,7558,8316,0,8255,0,8170,5347,5476,8164,0,0,7487,0,8048,0,8249,7952,0,0,8370,8255,8287,5699,8217,5301,7904,5381,0,7632,0,8267,0,7982,7482,0,7972,5401,0,8811,5407,7576,7605,7692,8136,8217,8115,7924,7605,7817,5476,0,0,8519,8149,8504,8164,0,8136,8604,0,0,5476,5291,5358,7558,7667,5442,5296,7710,7972,7834,0,0,8099,5224,7999,7653,7628,5491,7999,7893,8302,8093,7738,0,8211,7491,8222,8005,7795,7823,5717,0,7710,0,5612,7839,7576,7658,7908,8196,0,8762,8604,7811,0,8159,5241,7542,0,0,7994,0,0,5237,8136,7734,8359,8170,0,0,0,7533,7738,7542,0,8164,7632,7982,5448,0,7734,7763,0,8851,8349,5320,8093,5666,5419,8873,7972,7757,0,8589,7982,8010,5712,5342,5407,5629,5661,0,5305,8010,5666,0,8554,8093,0,8827,8267,8249,7628,7972,7706,7883,8154,7994,8772,7719,5661,5448,8022,0,7511,5476,0,5666,5301,7893,8577,7516,5274,5642,0,5432,5274,8261,5622,0,7883,8411,8093,8062,7706,8239,8282,5651,7982,7982,0,8604,8456,7723,8391,8484,8201,5712,8589,5712,0,0,5301,7768,0,8869,7521,0,5391,0,0,5347,5464,8484,7834,0,7730,8641,5661,5578,8514,5237,7800,0,5464,8772,7675,8387,5358,7632,8010,5301,8402,5496,5442,8539,8582,5573,0,7877,5651,7542,5688,5655,0,0,0,7786,7834,7710,8625,7715,8073,7473,8845,5642,7790,7599,0,0,0,8613,5291,0,8438,5419,0,8427,7571,8354,5224,0,7576,5358,8504,7628,0,8287,7696,5476,5651,8745,0,7599,5325,8201,0,5432,8010,5642,5301,8010,5726,5564,7696,0,0,0,8154,5309,7706,8170,8277,7935,7930,8816,5476,7500,7511,8329,5564,0,8566,8805,5413,7687,0,0,0,7742,8851,8845,5629,7952,5296,7738,0,5642,0,7706,7653,7672,5651,5651,0,5329,8010,7742,5651,5381,5564,5651,5464,7588,5642,8077,5309,5401,5358,8745,5377,8093,8857,7972,7482,8479,5442,7774,5651,7834,5347,5248,0,0,8721,5617,7632,0,0,7632,7605,0,5442,5676,7592,7696,5476,7872,7774,8504,5564,5347,5342,7628,5642,7828,8093,7605,7738,5255,7542,5291,7805,8201,7786,8879,0,7653,7653,8711,7982,8062,8539,5564,8190,5651,5712,7843,7786,7999,7738,7628,8548,5301,8239,7478,5666,5325,5666,5301,0,8073,8608,8005,5480,0,0,7999,7952,0,7500,8716,8287,7888,0,7582,7952,8073,0,7811,8190,8179,5301,8422,5464,5529,7982,8222,8297,7681,5564,8239,0,5476,5320,8312,7849,8140,0,8136,8345,8783,5329,8427,7738,0,0,0,8255,7588,0,8721,0,0,5573,0,7696,7696,8699,7706,7487,5573,0,7834,7898,8345,0,8884,8519,7904,0,5377,7653,7571,7904,5578,8631,8119,5358,7696,7605,7478,7752,7972,7576,5329,7752,8234,5688,7986,5437,5448,7746,7972,7706,8340,8647,5401,0,7610,7588,7706,8467,8527,0,5291,8539,7858,8721,8816,8504,5655,5671,7920,8772,8783,8104,0,8104,5305,5432,7706,5391,5358,5291,7487,0,5396,8136,5296,0,7696,0,8711,0,5237,7972,8504,8170,5459,5578,8670,8249,5358,7653,7628,5274,0,8766,8179,8201,0,7706,5325,5453,5329,7592,7653,5476,7774,8104,7972,5209,8245,0,5606,7576,0,8104,0,5578,0,8110,8888,5325,5476,8762,5291,5717,5325,0,0,5612,8893,7521,5464,7706,7605,8451,7710,5534,0,8898,7786,8509,8010,0,8340,7972,7877,5666,0,0,5578,7628,7952,5464,5309,0,8039,5514,8772,0,5237,7800,7888,5708,7920,7478,7663,8249,7920,8249,7924,7972,8073,7616,7994,5386,5347,7834,7877,7768,5655,7734,0,7658,7893,5320,0,8903,5496,8297,5606,7710,7738,7977,8598,5464,8239,0,0,0,5309,7864,0,5564,7888,0,7864,0,5642,8539,0,8539,8201,7800,7935,8099,7706,7715,8179,0,0,0,0,5337,0,8245,0,7588,5564,5325,5419,8340,8073,8909,7935,5564,8201,7478,0,7924,8391,8334,8211,0,8249,8340,7681,8509,8126,7675,7528,7706,0,0,8670,7946,8816,7675,8033,0,8010,7482,8608,8297,8915,8048,8010,5726,5391,7849,8411,5491,5305,8919,0,0,0,0,5496,7888,5337,8052,0,0,5274,5666,5309,7706,0,5712,0,0,0,0,7834,5476,7482,7706,5578,5237,5476,7491,7864,0,7972,7653,8287,0,8104,5224,7908,5442,0,5480,7723,0,8484,0,8140,5564,0,8249,5301,8577,7738,0,7786,7779,0,7986,7828,7839,0,0,0,5325,0,5496,7790,8762,0,7637,7872,8727,8821,0,8277,5426,0,5476,5712,0,7849,5325,0,7653,0,5301,5209,8443,5642,0,5301,7706,8811,5301,0,0,0,0,7588,5442,0,5661,7930,7500,5485,7734,8093,7521,7571,7757,8104,8745,7823,0,7672,7710,8670,7628,5396,5301,0,0,0,5301,0,0,8217,0,5476,8381,0,7982,5564,0,7558,7823,8604,0,5377,8196,8473,5342,7994,0,7719,7663,7864,5381,8739,7893,0,7482,0,5514,8307,5296,5661,8115,8772,8227,7972,5476,5564,7864,0,7667,0,5496,5274,7800,0,5358,8093,5381,8005,7977,0,0,7843,0,7893,5329,7687,7849,0,8447,7616,7675,8909,8149,8115,8005,0,7542,8170,8647,8282,8307,7516,5651,5314,5661,7982,5651,0,8925,8827,5717,7823,7605,7834,7653,0,5476,8375,8354,8297,8093,8929,7628,7555,0,5476,7555,8196,7542,5367,5573,5309,5651,0,8136,7653,8443,5367,7834,5647,0,0,5612,7482,5248,7576,8211,8467,7555,7622,5514,5509,5301,0,8136,5391,5358,7839,7898,0,5676,7521,7952,5213,0,8329,7687,5642,0,0,0,7864,7924,7681,5337,5291,5301,0,5301,0,5325,7982,8427,5564,8227,8721,8170,8249,0,7558,8711,0,5301,0,0,0,5476,5224,0,5730,5509,7710,0,5717,7653,8073,0,7511,8179,8179,5476,8190,7834,5612,5524,5218,0,0,0,7628,0,5578,7538,0,0,8617,5309,8721,7734,7516,0,8805,0,7986,5476,0,7839,7834,5381,0,7994,5274,8381,5564,5717,0,5305,5564,8716,5274,7752,5301,8179,7763,0,8447,7637,0,7500,7555,8349,0,8795,0,8560,0,0,7628,7994,7605,0,0,5476,0,0,5564,5358,7605,5209,5320,5367,8447,0,5285,8190,0,8417,8164,5459,7730,0,0,7628,0,0,0,5329,7653,0,5476,8397,8427,7588,5509,8447,8721,5291,5413,8179,0,7888,7706,5642,7952,8699,5730,8329,5661,0,5296,0,5661,8073,7990,0,7500,8126,0,5573,0,5377,5573,7710,5453,8721,8527,5661,0,7888,5291,5296,8833,7730,7888,8093,8249,0,8039,8249,7610,0,7616,0,8721,8140,5301,8762,0,7864,0,0,0,8407,8407,5419,5401,0,8670,5237,0,7994,0,0,7849,5337,5329,8277,7742,8119,5676,7706,0,8267,0,7706,0,8873,5325,8349,8519,8184,0,5301,8093,0,8033,0,5274,7982,0,8443,5491,5491,7643,0,7935,5377,0,7495,7972,7511,7893,5285,0,5708,7516,0,8705,8272,7920,7528,5261,5661,8631,8272,0,5237,5661,7920,5642,5642,7555,8052,8566,7482,8010,7823,7710,7599,8467,5367,7576,8467,5391,5651,0,5717,8174,7893,7982,8447,7839,5651,8411,0,8136,7628,7864,7972,8566,7500,7672,5296,8329,5386,7653,7977,8307,5396,0,0,8140,5237,8022,5651,7528,7478,7723,5241,5442,5426,8484,8170,7643,5377,7800,5407,7706,8087,5666,5509,7935,8179,5381,5337,5296,7687,7588,5717,5386,5237,0,0,7710,7994,5305,8234,0,0,5372,5296,8375,8239,8149,0,0,5280,5708,8077,5342,8349,8772,7528,5485,8345,7738,7877,7994,8641,5325,8033,7935,7500,5274,7528,0,0,0,5386,0,7834,5688,8062,8022,7667,8239,8170,0,7800,8577,0,5573,7710,7521,0,5712,5320,8604,7710,7786,7628,0,0,8239,8149,5320,5578,0,0,0,0,7864,0,8302,8548,5291,7667,0,7957,7994,0,7605,7986,0,5578,7999,0,5476,0,8447,0,0,5476,8052,8387,7811,7800,7800,5726,8149,8052,0,8514,5274,5655,5320,7571,7605,8131,8190,5476,5377,0,5309,8179,0,8201,7779,7972,5325,5509,8721,0,8745,7663,5564,7952,8131,5274,8821,7972,8473,5476,5612,5459,7952,8119,8329,8033,5617,8745,0,0,8104,8062,7582,7558,7994,5459,5320,0,5325,8925,7706,0,5564,5708,5564,8312,0,8772,7687,7935,5726,5337,7849,5730,7952,7864,5419,8267,7853,5688,0,5564,7571,7982,0,8073,0,5291,8539,5291,5564,5464,0,5218,7805,5612,7710,0,0,0,7800,8936,7706,5407,5358,0,7972,7605,5726,8427,5325,7828,0,5301,5301,7986,7768,0,5564,5496,5629,5391,8560,7867,7706,8073,8136,7853,5573,8140,8354,8539,8033,5573,5358,8211,7904,5606,8438,8577,8527,0,5688,7681,5564,8144,5407,0,0,0,5655,5688,8451,7710,8005,8577,7898,8762,7478,0,5291,5329,8227,0,5573,7779,5606,8653,8227,5291,5647,5396,7893,5358,0,5280,8494,5325,5726,8005,7982,8140,5342,0,0,5688,7920,7930,8631,5285,8164,0,8140,5459,7710,8451,8249,8190,7888,5432,5578,5573,7877,7952,8676,7967,8919,8277,8909,8354,7768,5320,8093,0,8196,5564,5617,7681,0,7663,0,7723,7757,8370,5261,8082,8427,7610,8484,5301,0,8438,8164,8354,5291,8756,8010,7706,8062,5564,5329,8062,5480,8438,5606,5676,7706,5241,5485,7817,5606,7843,7790,7482,5329,8267,8170,7920,0,5661,8411,0,0,8164,8940,7478,5496,7786,7877,5352,7800,0,0,8617,8946,5622,7877,0,8519,5342,7930,8509,0,7972,7994,8438,8093,0,8028,8093,7706,8354,0,5476,5237,8033,0,8164,8033,8789,5337,5325,8073,7565,0,0,8140,8539,0,7628,5717,7500,7672,7849,0,8126,7817,7592,0,8387,8293,5337,8022,5661,8777,5642,5320,7834,8952,8239,0,7628,8073,5342,0,7834,5666,7516,7658,8762,8354,5325,0,8267,0,0,0,8170,0,8033,0,7521,5274,0,7952,7628,5666,0,5647,8033,5426,5688,8560,0,8903,7774,8539,7834,0,0,0,7877,0,5301,5612,7538,7538,0,5629,8456,7957,0,8451,5647,7864,8179,5381,5377,5325,8903,5285,5358,5666,5476,8104,8104,8312,5301,5437,7658,8312,5606,8170,7500,8010,0,7500,7696,8154,0,8297,8048,0,0,7779,5377,5651,0,0,8433,5712,7482,7746,5647,8005,0,0,5651,8164,8039,0,5651,8170,7920,5309,7599,5325,8249,5407,5529,8222,8811,7877,5301,5301,5688,5471,7616,8267,8033,5325,8297,0,7672,0,7952,8354,5296,7920,5496,7888,7877,0,8739,5617,5426,5534,5391,7710,7491,7653,7893,7491,7834,8857,0,7482,7888,5274,0,0,7867,7877,7653,8249,8354,8140,7542,5309,5261,7715,0,0,0,5241,7972,8104,7628,8711,5509,5442,0,7588,8959,5606,8739,8140,5342,0,5381,5407,5708,5285,7491,0,7491,7610,5372,8222,5401,0,7811,7672,7994,5274,8964,8073,5241,7605,7904,8249,5661,0,0,0,7675,5301,7687,5651,0,7491,0,0,0,5661,0,0,0,5261,0,0,5261,5291,5325,7565,0,5453,5708,5573,7478,8721,5661,8805,5661,8903,0,8772,0,5367,7500,5358,7487,8154,5241,7478,0,8489,8663,5391,7811,8144,5564,8663,5274,8196,7867,5347,0,8387,0,5699,0,8104,7972,0,8005,7542,8560,5476,8447,5241,8663,0,5391,0,7839,5291,7500,8267,0,0,5573,8479,7828,5717,5377,8062,8447,0,5301,0,5274,0,5237,8190,0,0,0,8277,0,7715,7558,5407,5358,7706,8093,8052,7898,5629,8539,5564,5274,8969,0,0,0,7734,5296,7994,5476,7491,0,7935,8052,0,0,5274,7877,7643,0,7653,7839,0,7706,8005,8110,0,0,7504,0,7982,8402,0,5699,8539,7935,0,0,7834,8239,5358,0,0,0,0,7555,8222,7616,8062,7839,5280,5377,7628,5666,8222,0,5325,5564,5274,8433,0,7719,0,0,7628,0,7663,7653,7883,5717,8539,7982,8334,0,0,8093,8349,8349,5401,0,5529,5655,8312,5564,8417,5237,8217,7883,8267,5274,7482,0,8217,5413,7982,7893,7893,7542,7930,0,0,5391,5606,8427,5407,0,5296,5564,5509,5305,8255,8239,0,7763,5717,8062,7628,7706,7888,8608,0,7904,8539,8190,8539,5358,7576,8174,8184,5476,0,7977,8245,7888,5237,7883,7681,5661,8227,8467,8721,7779,5413,0,5329,5325,8190,5320,0,5320,7982,8267,7877,0,8164,7864,0,7904,8527,0,5578,5501,8721,8201,5717,0,5464,8762,5377,8073,7542,7986,7610,7994,8427,5347,0,8136,5358,5480,5285,0,8201,8170,8312,5367,7994,5564,7849,8010,7877,7982,8925,0,0,0,0,0,8010,5459,8062,7710,8222,7482,0,0,8073,8821,5442,7616,0,5671,0,8267,5655,8387,0,5730,8438,8456,5717,8411,0,8052,5651,8119,8682,5358,7888,8104,8976,8589,7558,8297,8982,7790,8073,8422,7920,5564,0,0,7516,0,8514,7478,7706,7972,8033,5367,7849,8940,0,5730,0,5564,7648,7643,8456,7542,0,5237,8391,8005,5717,0,5708,8589,8617,7957,5655,5296,8179,0,7516,8136,7653,8762,5309,7746,8010,7864,5386,8062,8062,5529,5529,0,5358,0,5337,5476,5529,7730,7628,5301,5301,8467,8217,8052,7867,8873,0,0,8039,8201,7994,7994,0,8345,7500,8987,7946,7924,0,5642,0,5358,0,7946,8272,7511,0,7605,0,7706,8783,5476,8307,8467,8140,0,8073,8179,7924,0,5476,8184,8670,8543,0,8282,5305,7663,8869,5617,0,7972,7924,5407,8467,8217,5377,7994,8329,7972,5476,8504,5391,7982,8884,5476,5407,5342,7616,8222,7982,7982,5661,0,7924,5401,0,8869,0,5407,7605,7616,7834,5309,8519,7883,0,7908,5476,7491,5407,8869,8381,7839,7542,5529,8073,5651,8839,5651,7779,7706,7706,8087,5358,8073,5413,5432,8447,7994,7811,8010,7706,7511,5564,8608,8608,0,7706,8658,5480,5476,8073,7858,8073,0,8190,0,0,7628,7710,5329,5476,5301,0,5453,5237,7478,0,5666,0,7999,8397,8287,0,8345,7696,7628,8873,5564,8302,7811,5573,5448,0,5358,5459,0,8539,5301,0,7653,5437,7786,7558,7957,5305,5651,8349,5708,7883,7605,5464,8010,8919,8316,0,8762,7982,7994,5325,7710,7516,0,8334,5407,8077,7632,5325,0,0,8077,5476,0,5509,8387,5280,8073,0,8093,8811,8154,8370,0,7946,8005,8433,0,7843,5358,7811,8312,7742,5407,5377,5342,0,8217,5708,5407,5305,7952,7908,8345,7538,8745,5501,0,8898,8052,7888,0,8716,0,5381,5564,8994,0,8227,8077,7800,0,7839,0,8144,0,8539,5564,7681,8443,8494,7893,7774,5352,5391,0,8110,7706,5496,7533,8073,7800,8548,7839,7952,5325,5347,0,8249,7746,7533,5329,8498,0,7511,5476,7752,5301,5301,8833,7605,7643,7914,7710,5426,7599,0,8154,7920,0,5712,7935,5712,8783,8170,8417,0,8447,8613,8093,8387,0,7706,0,0,7898,0,8115,5381,7628,7528,7930,7904,5480,0,8255,5337,8539,5381,5305,8119,5261,7706,5261,5651,7883,5476,8845,8845,7853,0,5529,5476,8805,7681,8711,7511,0,5301,0,5329,7500,8451,7904,7511,8170,8427,8170,0,8443,5274,7972,0,0,7972,0,0,7986,0,8845,7864,7715,7548,8539,7834,0,8845,0,7843,7628,0,8136,8370,5396,8427,0,7957,7877,5459,7994,8190,5372,8438,0,0,0,0,0,5480,8433,8739,8909,8028,8149,5329,5476,5661,7834,8745,7734,5442,5274,8721,5381,8277,8249,7491,0,5301,7482,0,0,8909,7628,0,0,5496,8762,8062,0,5237,0,7706,0,8467,5325,8267,7565,0,8560,5655,7982,0,0,5381,8456,8811,8190,0,8479,8255,7839,5459,7904,7681,5509,7839,7972,8126,7478,8222,7883,7904,8316,0,0,8484,7952,7839,5337,8467,8149,8484,8998,8028,7864,7864,5426,7849,7834,5647,8201,5413,5568,7805,0,7706,8467,0,0,0,5730,5464,0,5676,8005,7864,5325,5305,5248,8222,7478,5655,7500,8245,7710,0,8827,7538,5568,7834,8179,0,7849,0,5347,8316,7628,8560,5386,5301,5501,7734,8093,5708,8190,5476,8190,8249,0,5666,7834,8222,5459,8093,5391,5285,8577,5485,8170,5377,7920,8461,5285,8359,8201,8539,7811,5642,5301,5651,0,0,0,8504,0,0,8647,5329,8093,5476,7774,5261,0,5320,5480,5305,7849,8964,5224,5352,7643,0,8039,8201,5301,7877,8126,8451,8249,5612,8322,7972,8582,5358,5708,8249,5274,0,7853,0,7994,0,0,0,8149,7877,8447,8447,5301,7582,8170,5407,5564,8302,7687,8272,5407,8789,8387,5485,8811,8539,5407,5712,8245,5407,5617,5661,5437,8211,5301,8234,7628,7738,5578,7924,8641,0,7849,7757,7994,8267,7687,5726,0,0,0,8805,7786,0,8936,5564,8964,7738,7738,5314,7653,5255,7849,0,7576,8073,7511,7555,0,8174,8539,8302,5377,7908,5377,7706,5325,7710,8994,5309,7990,5301,8170,5726,7986,7786,5280,7706,5274,5407,5391,5274,7663,5396,8170,8115,5642,0,5325,5496,8795,0,0,7834,0,0,8316,7823,8354,0,7710,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5476,5693,8898,7706,8987,5367,0,5305,8015,8589,8987,5367,5325,8201,7628,7746,5671,5442,5442,5622,7867,7920,5391,5391,5688,5224,7491,8827,7582,7487,7558,9003,5688,7779,9003,5337,7779,7834,5224,8940,8234,8484,5717,8387,8322,7548,5325,5381,8527,8721,8732,7877,7516,5314,7605,0,5509,7883,7994,7605,5485,5301,8170,8959,5564,5476,5476,8716,0,8484,8484,5578,5642,5476,0,7972,7478,7687,7982,8048,5333,7548,5255,8334,8255,7982,8625,7558,7558,5476,7482,0,7763,8484,7706,7491,5237,7521,5671,8484,0,0,5320,0,5391,5325,7700,7977,0,5391,0,0,8349,8375,0,8613,5529,7834,5564,8302,8136,8811,0,0,0,0,8811,7710,7952,8811,8375,7516,5476,5291,5333,0,7628,5241,5391,5391,7696,5573,7628,7628,7628,8267,7982,7706,7478,5485,7487,5342,8682,8682,8387,5661,8387,7706,8387,5325,7853,7599,8756,7738,5285,8370,5476,7877,7946,7715,0,7521,5485,8805,7779,7521,5485,7491,8196,8073,5337,5661,7883,5401,7888,7994,8504,8504,5325,0,7599,5476,5391,8504,5333,5693,8115,5309,7734,5442,7904,8015,5309,5381,5224,8705,8827,9008,8589,8099,0,8777,5209,5391,7738,8015,5564,5274,5274,5480,8062,8316,8504,7542,8811,5476,8539,5491,8093,5476,8783,8227,7730,8987,5476,7715,8514,8504,7977,8783,7924,7542,7548,7920,5509,7478,5407,5381,5642,8527,8777,8504,7599,5501,8539,7565,7548,7706,8456,7628,7757,5471,7752,5476,7528,8756,5476,5325,7663,7478,5325,5564,8048,5519,5309,7930,7883,5564,5629,7548,5337,8154,5296,7628,8402,8732,8589,7994,8732,7935,8387,5274,8987,8227,8099,8777,8329,7528,7994,7605,7710,8190,8293,8073,7786,8447,8447,5661,8282,7500,8093,7576,7914,5726,7487,5413,7487,7977,7920,5476,7487,7663,5241,7828,7653,8349,7883,7605,8201,5726,5358,8670,7839,7994,8539,7605,7571,5337,7924,5377,8427,7849,5358,5480,5617,7628,5476,9008,7571,5568,8381,8316,8447,8190,5726,5218,8631,7542,0,9012,0,8456,8359,7849,8149,7521,5717,7924,8126,8048,8391,7977,7696,5224,5325,8727,8154,7952,7768,7681,5285,7839,5476,5391,5426,7914,5480,8795,7972,5671,8277,5476,7710,7473,8687,5301,7482,5391,5651,7605,7500,5337,8345,5329,8711,7696,8099,8316,5496,7710,8329,7817,7576,5476,8613,5407,5367,7977,5437,5329,0,5285,5655,8604,8255,7908,7637,8381,8789,5309,7478,5730,7592,7558,5655,7571,5442,8196,5329,8170,5320,8805,7914,5480,8073,7823,8052,8411,8422,7628,5237,8140,7864,5688,7500,8582,7692,7478,7667,5476,5564,7843,8443,8255,5301,5218,7643,5485,5274,8589,5213,7588,5564,5237,5301,5564,5255,8222,7628,7487,5367,7528,5519,7628,5377,7935,5442,0,7834,9016,5301,8277,7487,5407,5519,5564,7849,8170,7675,5213,5407,8473,5573,7893,8527,8387,8345,7930,7628,7528,5358,5407,8227,7710,5224,8365,5642,8402,9016,5509,8277,8777,8548,5717,8721,7930,5606,5320,5320,8514,8479,8772,5291,7805,5426,5352,5629,5730,5476,7706,5377,8811,5485,5381,5342,8227,5381,7565,7972,8571,5676,8548,8170,7542,8447,8099,5314,7994,7632,8022,8873,7643,7582,5209,8543,7478,8170,8716,7774,5407,8533,7491,7972,8302,8745,0,7616,7558,5407,7834,8699,7548,8104,7977,5381,7994,7628,5224,8893,5377,7994,7858,7834,8527,5629,8494,7864,5661,7935,8119,8795,8539,7571,5496,8805,7930,7491,5464,5642,8427,5442,7834,5337,5407,7500,7687,7839,5564,5358,7972,8548,7746,5325,5476,5661,8329,7487,8676,8604,5655,7742,7853,7853,7930,8925,5329,5381,7994,5501,8227,7952,5448,7972,7588,5367,5564,8467,8164,5301,8613,8267,8131,7538,7898,7828,5629,8052,5381,5237,5261,7542,5291,8777,5573,8589,7930,7675,5218,5642,8772,5612,7924,8048,5224,7977,5491,5437,5629,0,8888,5573,7495,8179,5666,8402,5218,5372,8548,5352,8022,5708,8732,7628,8533,8694,8987,8322,5485,7710,8302,7653,8015,8745,7834,8539,5237,5329,7930,8647,5309,5401,5329,7800,7542,5274,8772,7616,7582,5622,7521,5261,8255,7592,8422,9021,7734,5237,8149,8227,8687,8239,7706,8919,7877,7994,5325,8010,5296,8732,5407,7883,5285,8484,9026,5501,5274,5291,7864,5285,5407,8316,7516,8073,7786,0,7588,5274,5419,8438,7491,5309,7977,8255,7920,8527,7576,7663,8159,5476,7667,8789,7877,5476,8903,5485,8190,7908,5407,5573,7883,5285,8302,5437,0,8888,8345,8613,7658,5442,7637,5347,8447,5309,7542,8249,7478,8381,7723,8447,8227,8577,5666,5329,8582,8222,8762,8473,8365,7972,7487,5337,8052,8033,8033,5301,8909,7994,7610,5573,7877,8261,5320,5296,5301,7632,8365,7495,5629,7834,5666,7700,7696,7478,8267,8365,8467,7504,5248,7999,7504,5274,8687,8217,7990,8217,7746,5647,8227,7696,8217,7696,7528,5647,7487,7834,7834,5391,5391,8903,7542,8307,5501,7790,7914,8307,8126,5485,5301,5464,8613,7599,8028,7768,7779,7628,7904,7817,7511,5237,0,5347,7817,5606,8721,5426,5224,7706,8170,7828,5209,0,7924,5407,8087,5325,5476,5325,7877,7592,0,8297,8028,8467,7790,8461,8297,8604,7592,8604,5437,7795,7592,7790,7576,8711,8131,7500,7746,5651,8164,7482,5661,8795,7667,8789,5476,5651,5391,8721,8249,7548,8170,8467,8391,5568,0,5564,5661,5651,5224,7582,7658,8461,8527,5224,7982,5248,5291,7982,8582,7491,8873,7533,5564,8438,7582,5274,8577,5367,5407,5485,5320,5712,5647,7706,7786,9032,8022,5485,7779,8745,7757,8093,7582,8811,5407,7482,8694,5476,5301,8777,8391,9038,8402,7487,7888,5309,7516,7516,8381,5237,8762,5325,8010,8010,8010,8527,8170,5573,0,8527,0,0,5564,8527,5255,8527,8509,5464,8509,8811,8919,5255,5726,7504,7908,5647,5708,5573,5325,8903,7653,7653,5372,8479,7757,8479,8504,8504,8519,5501,7867,5476,5325,8795,7542,8879,5573,7752,5325,7883,5426,5396,5509,5291,5301,8354,8577,7511,8115,8461,8519,5564,5573,5726,8170,5261,8438,8093,7548,7533,5432,5381,5381,8222,5301,5261,5432,7877,5485,7795,8682,8479,8519,8005,7692,7888,7696,7972,9045,7768,5496,7839,7990,5381,7952,7839,7952,8509,7888,5325,5377,5485,7957,8682,8115,8467,8451,5529,7990,7986,7542,5496,8519,7795,5407,8451,5301,5377,7893,8057,7877,7706,8519,5209,8461,5509,8073,5325,7888,8745,7834,5314,5407,5325,8073,7834,8170,8154,8119,5407,7888,8676,7478,7795,5564,8119,5407,5717,7687,8509,8519,5676,7877,8641,5329,5301,8998,5261,8647,5568,5285,7795,8255,5291,5396,7687,5314,5401,8170,7920,7511,7952,5285,7952,5407,5407,5629,8154,5325,5407,5476,5407,7972,7877,8498,5305,5301,7605,5301,8387,7768,8282,7817,7977,7478,8349,8577,5309,8946,5661,7972,7582,7605,8293,5381,5726,8670,5476,7605,7622,5301,5485,8149,8149,5676,5568,7924,8631,7675,8711,8582,5381,8577,7849,5391,7990,5485,8052,8073,8438,7710,7843,5218,5218,7746,7990,8329,5676,8745,5329,8057,8249,8277,5333,8509,7746,7582,7500,7500,8795,7478,5476,8329,5534,8119,8149,7715,5329,8647,5391,5325,8196,8322,5285,7768,7924,5476,5291,8010,5676,8316,8170,7883,5661,8349,8329,8329,5329,5301,7935,8261,7768,8222,8670,8267,8484,8222,8131,7478,8267,0,0,5671,5671,8222,8827,0,7504,5352,8170,8272,5717,7734,8345,8174,5564,7817,8245,8484,7723,5358,5396,7930,5386,7710,7565,8484,5476,8925,5419,8756,5419,8582,7982,5367,5726,8411,7952,7867,8205,8582,7893,7982,7853,7952,7952,5296,7883,7952,5401,5401,7940,8762,8484,5726,5237,7920,5726,5476,5280,7834,8411,8447,5726,5391,7528,7542,8184,7730,8443,8119,7478,5296,8282,5391,5237,5509,5396,5661,5509,7930,8443,5314,5661,7883,8349,7823,7883,5325,8073,8952,8201,8582,8411,8201,8427,5280,5329,5337,5329,5237,7795,8494,5661,5381,5381,7994,8608,7723,7972,7790,7482,7994,8670,5325,5699,8375,5391,5676,5661,7500,5309,5699,7478,5325,7864,8745,5237,0,7653,8427,7864,8805,5301,5578,7653,5301,8387,8387,7834,5617,7972,7687,8334,0,7849,8387,7972,8604,8334,5377,5301,5617,5730,8805,8397,8451,7893,8467,8604,8467,7521,7834,5301,5291,8302,7828,5573,8484,8196,5708,7952,7834,7487,5301,8227,5347,5301,7834,7834,8467,7487,7817,7516,5688,5726,5726,0,5666,8762,5274,5622,8589,8179,8179,8179,8179,7663,5491,5337,5496,5325,5337,8617,8010,8087,8625,7904,8048,8893,5391,5320,5314,5726,8087,8411,7500,7977,7533,5448,5524,7994,5448,5459,7872,8827,5568,7786,8170,8093,7795,8272,5568,7972,5285,7999,7904,5693,7990,7658,7710,5391,5337,5688,8312,5661,8052,7487,8772,7710,5333,7757,5325,0,8062,7763,7500,8211,7710,5717,8190,5642,5209,7849,5325,7757,8879,8316,8391,5730,5301,5647,7521,7687,5367,7491,5329,9051,7538,7742,5529,5476,7667,5442,7516,8068,7482,7893,5358,8196,8196,5381,8201,8998,7904,5471,5501,7864,7653,8805,8560,8598,7706,8062,7972,7914,7478,7478,8783,8884,5529,5237,7805,8307,7752,5730,7742,7478,5524,8387,7667,5329,7864,40,5712,7663,7706,7558,7478,5524,5564,915,2998,7710,8119,8884,8068,5564,5476,5491,7742,5301,8126,8467,7908,3123,8322,7478,1325,3137,7768,9054,7752,8447,9059,8093,8297,5337,8539,7576,3194,7576,8964,5237,2957,1400,5255,5209,7786,5209,7994,7500,7849,5386,5367,8456,2806,7675,7914,7982,8391,8245,5726,8170,9062,8925,855,7888,670,8174,5358,5564,819,2654,7687,7849,8370,8484,5218,5564,5699,7576,50,9012,7786,9012,7571,8201,7610,7582,8381,0,7487,5274,8154,7706,7696,7864,8687,7687,5237,5476,8577,5209,7763,5651,7972,5642,5325,7576,5717,8952,8365,7675,7990,5296,826,8359,8272,5274,2675,8190,5519,8082,7834,8149,5476,7663,8751,7914,8316,8062,7504,7710,8631,5201,5437,842,2950,5213,7521,7663,8727,8582,8387,8245,7675,5358,8354,2792,5396,1620,7908,7888,2537,5325,8789,8711,9067,8052,8467,7610,855,8211,5717,7864,7710,8670,5301,8136,8443,2665,7692,7675,852,1783,8073,5578,7687,2816,836,3009,5333,5342,2830,8201,7653,7946,8845,8851,5717,5337,7834,7786,7786,8126,7653,5612,8104,5476,7663,7977,5647,5274,36,5301,5237,5629,7571,5688,124,7478,121,8387,8307,28,60,8196,7538,32,4535,905,1518,8149,139,5612,5372,7811,5030,8302,5325,64,371,8527,106,7982,7706,8087,7994,9045,8227,7696,5301,8322,8345,5381,9067,8184,7628,2381,8277,8302,162,5480,7982,7663,7576,26,8800,5314,5314,8987,8539,7946,5347,9051,7675,7521,8068,7478,7752,8402,8302,7982,7706,32,8272,7883,7883,852,1775,109,1318,8287,7849,8387,7706,670,8456,7779,5274,7920,8302,7986,8115,2409,2418,8994,2440,7719,5622,8077,2468,2475,2213,2216,7768,2229,8073,5693,7843,7675,2261,2265,7710,5377,8345,8484,7883,7990,5218,7994,7823,5261,762,56,7986,5381,5730,7653,5459,7576,7637,8082,9071,7628,7482,8365,5642,8494,7746,7982,8267,8732,5296,7811,7811,5237,7849,5325,8005,2792,7994,8302,7500,5464,8762,8077,8190,7779,7628,8940,7710,8255,7834,7883,7440,8179,5301,9067,7687,54,7622,7616,9054,0,8005,5237,7628,5381,7957,7692,5514,8154,5377,5642,7849,9051,5519,8322,7719,5218,7588,8062,5661,5476,5612,7538,5496,8370,7990,7738,8940,5606,8613,5448,8631,5325,8334,7478,5274,5391,5717,5209,5381,7632,5534,8631,7487,7710,8052,5612,7977,8370,5612,8196,8077,7849,0,8159,8044,5717,8136,9075,7663,0,8316,5358,5708,5708,5401,8402,5578,5305,5448,5448,8772,8539,7706,5285,5248,5285,8509,8772,8589,8340,7977,7663,7675,8647,7957,5205,7786,7675,7982,5296,8039,7742,5274,8115,8227,7500,8312,8407,7538,7538,7982,5666,8762,5205,5629,7491,5413,7616,0,5285,5651,7675,5396,8349,8297,7571,5352,8149,7675,5325,7605,8783,8005,8397,7675,7487,8052,5564,8239,8255,5237,5519,8772,8772,5305,8329,7864,9021,8010,7710,5296,8365,8519,8140,7883,7628,8068,7558,5285,7491,5237,7706,8052,5401,7500,8919,5296,7482,7734,5291,8196,8329,8077,5329,7487,7834,7616,8245,7883,7628,7576,5309,8789,8354,5296,7706,7864,5372,5476,5391,5285,8467,7663,5218,5291,7908,7628,9054,8479,5717,7528,5471,8903,0,8159,7920,7920,7482,8397,8381,8539,5347,7738,8154,8613,8052,5367,8387,7888,5237,5442,5325,5309,8052,5377,8227,0,0,8936,5377,5329,5296,8073,5337,8077,7482,7982,5305,5464,5578,5301,7511,0,7700,7675,5305,7834,5301,5329,7610,5564,7883,8033,8751,7920,7521,8154,5305,5237,7888,7692,7834,7877,7616,8261,7828,7986,7738,7675,5285,8287,7811,8154,5622,8077,7675,8936,5301,7877,7637,5301,5476,7632,7700,8365,7588,5237,0,5407,24,7605,64,8077,7700,836,2998,7994,5296,1311,5688,7487,2675,5407,5296,7528,7482,7823,8641,8641,5471,8756,2947,7592,1400,429,8827,7982,1620,8467,5337,2599,8653,8827,7994,5647,7994,8099,819,8658,2651,8093,7786,852,1783,8039,5647,5337,8039,7482,7643,7734,7628,9080,8467,8099,7768,7628,8745,8039,8732,7994,9085,7768,9092,9097,8467,8467,7864,9104,5647,9113,8641,9122,5296,5476,8467,9130,8375,5647,8387,9137,8805,8119,9146,9152,9157,8387,5437,7994,5717,9164,7478,7952,7920,5476,8539,9172,9181,5655,5314,9187,9193,9201,9206,8582,8227,7706,5034,9214,5325,9220,7972,7972,8282,9224,9230,8196,9235,7667,9240,8068,7565,5501,8543,8772,8795,7920,7571,8946,5358,9247,9253,9259,9263,7908,8539,5485,5407,8772,5301,7904,7478,5501,8863,8312,7533,5629,8653,5726,8772,7972,5480,8811,5255,7828,7795,8447,7658,7920,7592,7924,9008,5708,7511,5688,7715,7990,8131,5529,7904,7710,7935,8093,9272,5564,7982,842,7805,7986,7610,7610,5329,9278,9281,8174,9285,5426,7582,9288,2462,5329,9298,9301,5666,5671,7482,5730,2465,7999,5564,8687,5642,7888,9305,7952,5496,7924,7482,8048,8131,8467,5459,5661,8800,7592,9308,7864,9312,7828,9316,7478,7473,9320,76,2406,8509,2468,5386,8345,5426,9326,7811,7898,8456,9329,5476,7482,3679,7500,7805,8433,8845,7663,9332,9335,5699,5218,142,9338,429,8349,7843,4262,7558,7834,5309,2422,5666,8577,8201,7558,9341,303,5391,8329,8039,2274,7491,8184,8539,7628,8201,8387,5676,5342,7920,7558,5509,8170,8099,5241,8571,5248,7582,5491,8772,8345,7774,5320,5413,8795,7972,7888,5476,7972,5476,8456,5325,9032,7706,5514,8170,8447,7692,7990,5629,8653,8447,5407,8217,5309,8461,7628,7864,5352,7786,5647,8873,0,8387,7542,0,8345,0,7888,5386,5647,7558,7482,7643,5358,5401,8039,5459,5622,5730,8222,8222,7628,8539,7790,5381,8821,7864,8845,8795,8548,7628,5464,7864,5642,7834,8222,5325,5712,8227,8762,5480,7482,8527,7548,5381,5655,8527,8461,8732,5407,0,0,7521,5464,8873,8676,0,8190,5325,5325,7908,7616,7738,7558,5218,8509,7588,7588,5391,5651,7738,5534,7558,5647,5629,5699,7548,5301,5352,7898,8159,8205,8217,5606,7478,7558,8329,5717,5655,7663,7817,7834,8795,5606,8467,7752,5661,7511,0,7843,8227,5352,5413,8033,8140,5329,7742,7542,5712,5305,5622,8617,5320,7957,7710,7800,8473,5485,7706,5320,8539,8015,8795,5218,7828,8033,7972,5237,8039,8322,5309,8539,8987,7715,8402,7834,7738,8833,7706,8322,7779,0,8863,8255,8833,7500,5261,5261,7904,7734,7908,7582,8010,5699,5305,5471,5471,5471,8539,8119,7888,7888,8772,8919,7478,5501,5464,8772,8245,7491,0,0,7628,8322,5325,8255,8800,5476,7920,5358,7828,5419,7491,5218,8073,8772,5347,8170,8359,8903,8261,7542,8329,5347,5237,7849,7663,8387,8479,8052,8821,0,5666,8582,5329,7834,8772,7994,8359,7610,7610,7872,5301,7516,8261,0,8329,7834,5666,7904,0,5391,8504,0,9345,9345,8119,5476,8349,7990,7605,9345,7982,7982,8653,5476,7982,7500,8653,8087,8211,9021,8087,5476,7972,7786,5573,5419,8527,7930,0,8411,5342,8658,8093,5564,7571,5367,7504,0,5386,5367,8005,5237,8082,8467,7790,7588,7888,7888,7491,8745,0,8131,8131,7706,8249,8249,7482,8154,8033,8245,8115,5606,7658,5564,8625,5642,7924,8560,5524,5391,8543,7658,7853,7834,5358,5476,7473,7977,7888,0,8582,8267,7977,8994,8869,5401,7811,8539,7834,8174,7768,7706,8716,8527,5661,5501,7828,0,8005,7967,7811,7706,8509,7687,8543,5476,5419,8272,8205,8543,5237,7521,7893,7757,8329,8946,7828,5708,5617,5534,7533,5708,7478,5708,5419,5401,7888,8267,5419,5391,5501,8154,5358,5401,7888,8293,8293,5693,8716,7542,5407,7738,8484,7823,5496,8052,5274,8010,5325,8851,8613,7893,7599,8062,9345,5564,7538,7883,8504,5564,5485,7834,5661,7752,7548,8994,8762,5325,8946,7548,5642,5309,8267,7622,8456,0,8354,9345,8816,7834,8136,7528,5501,5358,7628,5480,8527,8467,7565,7478,7628,7952,8762,7904,8447,7576,5314,7999,8245,8716,8467,7853,8190,7972,7864,5712,5305,7706,5358,7914,7867,7864,7849,7500,8048,5241,8438,8282,7715,5564,8093,5209,5209,5391,8297,5261,7924,7800,5381,7786,7487,5426,7994,5209,8170,5261,8751,8504,5642,8316,5419,5320,5325,5671,8987,8144,5676,5285,8131,7715,5407,5407,5476,8184,7972,5325,5325,5274,7946,8687,7667,7473,7834,8391,8577,8456,7834,5337,7834,5496,7914,7482,7710,7952,7768,5209,8022,7994,8062,8631,7957,8387,7648,5285,8375,5255,5274,8670,5301,7558,7675,8211,0,5612,7478,7994,7990,8277,8287,5693,8929,5426,7823,7628,7495,8456,8028,5676,7914,7972,7653,8539,9345,7864,8751,8422,7653,7746,7478,7834,7478,5237,7834,7628,7487,7628,8631,0,5274,8170,5726,8839,7706,5274,8863,7582,8227,5329,7663,7864,7864,7957,7746,8827,8057,8170,8312,7774,5693,5509,8473,7675,5320,7706,5296,5564,7864,8494,8772,7893,0,5381,5606,8447,7768,5485,7643,5485,7542,7828,5426,7982,8631,8277,5358,7482,5442,8287,5564,5485,8099,7834,5347,8653,7482,8387,0,5301,7828,5274,0,5396,7616,7877,7914,8805,8903,5642,7478,7823,8893,7977,7853,7500,7628,7994,5377,8110,5712,7883,8821,8196,0,7478,7542,8104,7790,5564,5381,8676,5237,7548,5712,5464,7746,8345,7616,8190,0,7994,5712,8467,5655,5688,5377,5661,5480,5401,7790,8297,7487,7858,7994,8631,8484,7982,5708,0,0,7500,7853,7952,7967,5642,7920,5237,8467,7616,8164,8613,7710,7511,5712,7533,5708,7538,8131,8005,8196,7977,5514,5655,8467,5496,5218,8391,7616,5325,7588,5453,5274,8272,8334,7843,5386,8222,7663,7920,8751,5476,8647,7628,5666,8190,7800,5476,8015,8756,5218,8447,5301,8539,7952,7834,5309,5622,8227,8604,7653,5362,8149,5305,5578,7982,7982,5708,5362,8322,0,8959,7786,7478,5285,5480,8427,7790,5274,5274,5305,8239,5401,5396,7952,8919,7972,7500,0,5396,5237,5296,7648,5237,7834,7877,5285,5712,8010,8010,5274,5476,7994,5285,5564,5391,5358,5261,5342,8322,5401,7811,0,5453,7582,5476,8179,7663,8929,8766,7538,7681,5442,5309,7839,7628,8751,0,7500,8716,7834,7658,7616,8179,5453,0,7616,7746,0,7538,7914,5426,8447,8762,7511,8467,5347,7834,8617,8093,5285,8929,5347,5274,7616,8617,8952,7768,5651,5301,8375,7834,7605,5347,5209,5381,5291,5291,8571,8267,5209,5209,8879,7962,5564,7930,5209,7675,7528,8249,7487,7658,8222,5325,7786,8293,5529,0,5622,8370,8375,7962,8359,7763,8827,7542,5320,7877,8387,5209,8447,5564,5209,5301,5529,8073,8613,8277,8077,8077,7616,8375,7746,7605,8164,7738,7952,8533,7723,7628,8087,8345,5647,8022,5509,8110,5642,8062,5476,5485,9032,5651,7605,8903,8062,8548,8721,7576,5693,5509,5476,8222,5391,5391,5248,7914,7990,8190,5391,5337,7811,5476,7681,5391,5274,7817,7558,8658,7817,7675,5437,7687,8222,8370,7834,7675,7977,7914,8033,8164,5464,5651,5568,8739,8888,7588,7774,8365,5325,8467,5325,7482,5651,5568,8745,5699,5655,5407,5564,8381,5224,7811,5712,8196,7653,7628,5391,8381,8196,8381,7972,7628,8222,8739,8381,8196,5305,5496,8170,7795,8196,7982,7478,8239,5391,7605,8533,7914,7994,5661,8739,5296,8239,7667,7811,5476,5476,8222,8196,5248,8222,8527,8879,8217,7487,8329,8479,7672,8217,8087,8312,8527,5622,5564,5617,7990,5419,5419,5622,7994,9021,8329,5320,8217,8479,7675,5325,8670,7696,7696,7696,5205,5407,5320,8033,8987,8987,0,5205,8227,8239,5274,5274,0,7599,7599,5337,8239,8239,5642,8211,7599,7599,7599,5205,5642,7888,8005,7548,8484,8811,7786,8811,8422,8811,8811,5391,7482,7710,8898,8447,5309,7994,5453,8170,7920,8554,5237,5358,8170,5381,5606,5726,5377,5381,7478,7757,5391,5391,5255,5325,5661,8033,5237,8447,8427,5237,0,7800,7864,7957,5255,5377,7893,5320,5661,5647,5329,5329,5237,8554,5329,8170,5661,8170,5291,8239,5291,5320,5237,7935,8068,8447,5261,0,5274,5301,5529,0,0,7610,5476,7706,8504,7478,7653,7914,7628,5573,5342,7706,0,8354,8282,5642,8608,8387,7478,5381,7864,5325,7542,5501,8467,7706,8433,7542,7706,5496,5381,5726,8461,5274,5708,5347,8479,7904,7571,7571,7924,8170,8461,7990,8131,5529,7930,5301,7681,8170,7834,5564,5519,7977,8093,5480,8456,5337,5491,8582,8354,5726,7982,8312,8438,8345,7681,8093,7710,0,7582,0,8005,5519,7790,8316,5529,5476,0,7849,7990,7632,7864,5564,8329,5459,5329,8345,7696,5671,7768,8316,5476,7715,5391,8345,7994,7982,7972,5651,5301,5325,8316,7994,5337,0,5367,5301,5642,5285,5241,8375,5285,7864,7864,7628,7491,8201,8255,8658,8527,8527,5386,5301,5337,5274,8062,8479,7914,7558,5647,8845,7667,8052,5367,7482,7628,7843,8795,8149,8277,5274,5699,8571,5248,5248,7738,0,5396,8170,8277,7706,8438,8653,8653,8443,7786,8402,8387,8387,8461,8099,8099,8873,5291,7888,5241,8039,7482,7582,7653,5241,7994,5642,7920,7834,8022,5381,5413,8443,5291,7582,8427,7786,7482,0,8115,5464,7628,7994,7924,8527,5688,5471,5377,5476,7972,5391,5437,5642,7864,7605,8795,5329,7834,5712,8811,5325,5325,7811,8805,8119,5712,7542,7478,7628,8548,5347,5291,7834,7834,7994,8548,5496,5342,8164,0,8196,7628,0,7957,5647,8217,5237,5534,8777,8903,8062,5381,7663,7511,7478,8022,8255,5209,7994,5413,7828,8451,7542,5218,8077,8451,5325,0,0,8022,8548,5419,8239,0,7877,5459,8433,5693,5647,7957,8015,8427,8427,5708,8340,5726,8322,8397,8397,8479,8479,5237,7628,8073,7610,7521,8554,8073,8196,5285,7834,8149,8427,7516,8239,8239,5309,8919,7888,9021,5285,7952,5642,8255,5642,5291,8427,5476,5529,5386,7491,7491,5476,7864,5274,5325,5661,7990,5237,8539,5708,8397,0,8447,8164,8479,8093,8925,7628,8354,7482,0,5381,5301,5342,7610,7610,7828,7616,5237,8170,7877,7616,8005,7834,7994,5386,7768,8783,8498,8375,7828,7828,0,7834,7834,7834,5386,7834,8732,7952,8732,7576,5464,5485,8329,8783,8783,8577,7817,7571,8255,8170,7817,0,7478,0,0,7637,5688,5688,5325,5476,7487,7904,7972,7999,7521,5476,5309,8329,5676,0,8329,5309,5564,8925,5358,5391,8201,5693,8952,8010,8077,5391,5501,8994,7972,5237,7982,7883,7994,8015,5629,5491,7538,8456,8994,8964,5564,5401,7972,7576,8073,7972,8539,5305,5476,5476,5255,5280,5676,8613,8952,5491,5241,8839,8255,5655,5391,8658,5237,7898,5491,7952,5442,5255,8015,8302,5509,5491,7994,8227,8302,7706,8115,8039,7790,8762,5730,5241,7500,5651,7994,8494,5564,5476,7898,5255,0,7817,7533,5464,8479,5651,7977,8909,5296,7548,5261,7800,7715,8473,8039,8115,7715,7898,8015,7592,7877,5564,7972,7982,8010,8519,5358,0,0,5651,8255,7877,5501,8249,7898,5442,7763,5573,5381,5274,5347,8811,5255,8184,7542,5224,5224,5426,8811,5642,7811,5337,5337,5325,7834,7920,8805,8115,8687,9345,5305,8745,5358,8196,5471,8519,7952,8387,8126,5381,7500,5329,7478,0,7692,7616,8539,8174,7828,8387,7622,8845,7839,5564,8316,8334,7893,7521,5476,7972,7681,7972,5519,8762,7571,7675,5647,7952,7692,8334,8805,5337,8201,5693,7558,8277,7930,5325,8345,5320,8756,5218,5480,8022,5320,8745,7628,7628,7622,5448,8604,7521,7893,8484,7849,5296,7511,8302,5401,7843,5448,5407,8057,8745,8484,8484,8196,5708,8144,7957,7482,8239,5491,5329,5476,5573,7877,5647,7487,7528,7622,8227,7478,7893,8687,0,7908,5358,8322,5661,7516,7516,8239,5329,0,7616,5274,8805,5218,5301,8805,7482,8329,7834,8805,8539,8312,5407,5296,8716,5296,7817,8184,8509,8411,5476,7706,8789,5501,8170,7834,5476,8205,5358,5476,5476,7696,8589,5391,7696,5391,5391,7817,7757,7482,7982,5564,8062,7478,8422,7710,5419,7904,7914,8539,8015,5291,8272,5564,8539,5651,5274,7982,8783,8293,5485,5655,5476,5651,7768,5509,8670,8893,8190,5485,5471,8015,5419,8322,5352,7883,8322,5358,5358,5617,7883,5407,8131,0,8048,5358,5568,0,5432,7675,7883,8144,8322,8062,5651,8144,5509,5291,5325,5325,7952,8903,5329,5329,8641,5296,7972,5296,5296,5476,5476,5476,5476,8154,8154,5261,5426,7752,8316,7834,7834,7628,7710,7774,8473,7757,8888,5352,5218,8647,8015,7616,7710,7710,5314,5480,5325,8334,7548,5476,7599,7935,5358,7710,8093,5564,7599,5241,8140,7599,5485,5491,5237,8329,8727,7924,8359,5329,5730,8631,7558,7972,7500,5485,5647,8827,0,8277,8827,8407,5213,5237,0,7706,8227,7972,8827,7576,8277,7628,5661,5381,5407,7710,7977,8411,5464,5564,8329,7994,8334,5642,7994,5237,5241,8647,7710,8407,5241,5241,5432,8407,5248,7935,5285,7994,5285,5296,5712,7610,7521,8222,5726,7528,5320,5358,5476,5333,8504,8479,5693,5671,5325,8504,8504,7877,8772,8594,8594,8811,7706,5391,8879,7972,7599,8211,5237,8010,7616,5606,8438,8438,7548,5248,7478,5325,7478,5237,7491,5337,5509,8827,7548,7908,7628,8411,7972,7706,8402,8033,7658,8068,7542,8184,7643,7504,8816,7599,5274,7528,8756,7982,8509,5501,8359,7658,8022,7478,7742,8227,8519,8170,5476,8222,8783,8438,8456,7571,8982,7924,5568,8282,8293,5386,5241,8994,8201,8964,7786,7982,8170,8245,5401,7487,5442,8539,5491,5476,5647,5337,5564,5325,5352,5426,8467,8447,8625,5564,5237,5358,5337,7867,8190,8827,5224,5464,7500,5573,7920,5237,5237,8772,0,8548,8217,0,0,5476,7710,8504,8329,5391,5237,8149,7946,8582,7715,7972,5661,5401,7681,5464,5459,8052,8571,7952,7946,5237,7675,5320,0,7473,5688,7924,5296,5296,7710,7977,5476,7504,8625,7516,5296,5209,7500,7710,7521,8293,8727,8869,7990,8316,5606,7817,7768,5237,5280,8354,5352,8800,8407,5296,7864,0,8316,7834,8509,8604,5386,8267,8211,5218,5218,8467,7920,8653,8255,8354,7628,7628,5381,5237,5578,7516,5377,7653,8052,7867,5377,8201,5476,7542,5296,5237,7930,7800,5476,7946,8022,7768,7558,5296,7478,7478,5337,5301,7779,7811,8827,5476,8354,5301,8566,5386,7864,5699,8190,7542,7478,8438,8827,7893,7930,7888,8402,8227,8514,5301,5325,8721,8721,5426,8479,7706,8571,5606,8099,5237,8795,8653,8447,8745,5442,5471,8039,7877,7779,5509,8467,5309,5325,7516,7628,8154,7849,7768,8772,5377,5377,8077,7599,8287,8201,7643,5237,5629,7528,7994,5296,7864,7872,8548,5407,5218,7828,8170,8179,7558,8407,7930,7867,8179,7883,8721,7888,5386,8267,7521,8863,5459,5464,8104,7723,9071,5426,8604,8411,7643,8548,5377,8255,5442,7930,8190,7994,5717,7542,7994,7628,7628,5358,8190,7811,8438,5358,5476,7746,5218,8509,8903,7482,7864,8033,8711,7990,7990,7628,7663,7867,7834,7495,8811,8267,8548,8159,8873,5501,0,8005,8005,5699,7817,8267,7588,7588,7706,5642,8022,5464,5325,7786,8170,8519,8447,5661,8509,5241,5218,8340,7962,7914,8073,8509,8467,5661,7643,5218,7924,5301,5514,8272,7482,7839,7500,7542,7658,5464,8267,7914,8391,0,5617,8827,8647,5305,7715,8039,7710,8179,8179,8179,8402,8438,8594,8015,8316,5708,8617,7800,8721,5699,5372,8484,5296,8509,5401,7742,8022,5309,7482,5329,8987,7994,8641,7800,7542,5617,5218,8745,8756,8539,7972,7957,5676,7706,7706,7628,5255,8239,8827,5337,5248,7972,8316,7558,7706,5726,5352,7930,5432,8104,5285,8833,7710,5401,5255,8005,5296,8255,7558,7482,7482,5237,5237,7883,8772,7888,8217,8217,7588,5291,8604,7675,8010,5501,8149,8149,5248,7653,7706,5274,8438,5485,8239,7478,8179,5291,8140,5274,8772,8119,7920,5476,5573,5274,5386,7883,8772,5485,8022,7653,5285,8082,7811,7582,8196,8196,5726,8340,8800,5661,7616,5708,7790,5476,7516,7719,7667,8359,8514,5347,7663,7516,7834,7795,5367,7710,7628,7482,5491,8249,7663,8249,8217,7706,5305,5347,8514,5442,7972,7495,7495,7834,7924,8073,7972,8582,8582,5337,5564,7511,7763,7558,0,7877,8249,5347,8359,8190,8261,7877,5325,8170,7811,5617,5476,5401,7823,5651,5629,5291,8461,8461,8461,5717,8354,7478,5407,7500,5320,8164,5237,7558,8494,5381,5717,5407,8322,8154,8322,8427,7582,7706,7977,5459,9353,7977,5325,5391,8795,5325,8005,5671,8919,8427,8519,5717,5407,5381,7628,5407,7834,5329,5237,8427,5237,5237,8287,5491,5726,7982,7982,7982,7864,5391,5301,7790,7982,5301,7565,5612,8411,7828,7592,8987,5476,5476,5261,7982,7893,7834,8087,9358,7774,7687,5688,5333,8201,7904,8245,8705,5564,0,5437,5480,8015,7757,8756,7628,7692,7653,7914,5496,5476,7786,5568,7478,5480,7542,7972,8504,8144,8514,5514,7924,8816,8282,7935,7648,5237,7542,8282,7977,7628,5564,5708,5237,7920,7972,5209,7864,5471,7999,7558,5325,7834,8582,8411,8783,8170,7752,7982,8354,5291,7904,8196,5655,5241,8267,5509,8293,5476,5320,9361,8057,7853,8307,8756,5578,8057,5564,8174,7904,5708,8115,8641,5568,8099,8322,0,7982,8222,5224,7972,5352,8772,7734,7920,7658,5642,5655,7687,7924,8222,7849,8447,5476,8539,7710,7920,8925,5305,5712,7914,8387,5442,5726,8438,5573,7977,5564,8427,7605,7883,7637,7715,8184,7986,5564,8174,8282,5213,8093,8136,8625,7542,8170,5480,7904,5480,5480,5708,8170,5314,7533,7999,8126,8126,8539,8447,8170,8144,7610,5407,0,5218,5347,8381,8073,8115,7542,8727,7795,5391,5381,5241,8566,7817,7817,7768,8969,8879,8365,8898,7710,5661,8604,5296,8751,5635,5391,8136,8073,7710,7795,7972,8144,7888,7888,7972,7867,8345,8789,5655,5717,5285,7692,7582,8613,7681,8577,7687,5329,5459,8631,5291,0,8170,7972,8375,8387,9361,7738,5661,5386,8903,5285,5241,5325,5296,8329,0,7663,5480,7495,8451,8073,8845,5377,5655,7558,5612,5612,8946,5712,7610,8170,5352,5407,5476,8805,5261,7495,5509,5661,5496,8527,5285,7478,7667,8484,8316,8653,8154,5647,5314,8057,5333,7904,7653,8670,8077,5676,8115,8022,7491,5291,8201,7811,8201,9021,5476,8533,7672,5448,5480,8149,7962,7898,5407,7811,8479,0,5509,8196,5352,5617,8577,8438,8514,5564,8126,8170,8479,8494,7663,5676,8354,8548,8033,7805,5381,5647,8543,8136,8184,7495,8443,8494,5237,5274,7558,7828,5514,8099,8745,8461,7888,8087,7757,8057,8539,8015,8234,5325,8272,5280,7706,5213,5320,7542,8093,5476,8387,5291,5241,7779,7795,5476,8154,5261,5241,5329,7774,8772,7935,5224,5381,5377,8571,8422,7834,8451,7967,8170,5606,7542,8800,8126,8087,5381,5329,8039,0,0,7972,7883,0,5274,5514,8721,5352,8467,7495,5407,5655,8484,5407,7628,7834,8005,7823,8062,8110,7920,7994,8159,7967,8190,7622,5377,8077,5496,5391,8548,5655,5476,8598,7946,8411,7924,7811,7834,8857,8345,7500,8387,8494,7990,8663,5325,5377,7986,7986,7558,8509,8484,8484,5647,5381,5296,8845,5248,8851,5617,5661,8467,7542,7491,5496,7687,7930,5642,0,0,5347,7752,8196,7877,5717,7957,8548,8845,5285,8131,8196,5218,5699,5442,7710,8427,7962,7962,8073,5573,8164,5413,8451,5514,7990,5642,8479,7972,8293,5661,5407,5448,5688,5524,5274,8851,8940,5309,7763,7864,7805,7495,5261,7738,5381,5629,7533,8282,8245,5301,8272,7982,7972,8631,5367,7542,7752,8322,5606,5655,7864,5237,7495,7768,5496,7687,5717,7478,8869,5617,8756,5617,5320,8126,5642,8888,5448,8772,7730,7877,5612,8239,5248,8519,8039,5224,8527,8952,8539,7706,0,8533,5401,5629,7710,8721,5329,7632,7957,8548,5671,7982,7687,8519,5629,5396,8402,8716,5305,5419,7952,7616,7972,5708,7972,8077,7800,5261,5568,5320,5612,8641,5285,5305,5305,5578,5274,8946,8647,5419,7482,8131,7542,5329,5325,7616,5291,8959,8959,8149,5471,5274,8821,8005,8365,5476,8329,7558,7558,7730,5386,7946,7487,7542,5464,8245,9021,8184,7516,5241,5296,9345,5285,5325,8340,7883,7883,7935,8073,7935,5291,7675,8239,8543,5564,8255,8073,8451,5314,5622,5480,7734,8196,5471,8184,0,5661,5329,5285,8498,7738,7653,8255,9361,5407,8811,5218,5666,8144,5329,5261,5314,8115,7734,8287,5325,8903,5612,8340,8745,5485,7811,5381,8196,7908,7883,5237,5717,7920,8073,5708,8170,7491,0,0,5448,5651,5325,7658,5314,8479,5426,5347,8936,8170,7491,8613,7491,7491,8447,7982,5325,8888,8381,5717,7972,5381,8144,5305,5407,5661,8577,8772,8126,5448,5329,5329,7648,7972,7533,7924,5666,7730,5320,8365,8184,5274,7667,8154,5301,7986,7653,7616,5329,7610,7542,7542,8365,7542,5347,8589,7616,5712,8261,7877,0,8498,5237,5617,7632,7667,5651,5301,8365,5329,8772,8857,5301,7828,8631,8903,5285,5291,5347,5301,7700,7972,7952,7952,7706,7528,7734,5342,8087,8898,5337,5671,5476,7817,8811,8282,7565,5241,8073,7828,5568,8438,7478,7786,7849,8604,7675,5651,5573,5717,8539,7500,5285,8438,8033,8484,5655,7888,7628,7710,5708,8126,7500,5285,7888,5401,8077,5358,8227,7828,7888,5476,8811,8589,7990,7834,5471,7706,8307,7675,7888,5285,5485,7924,5367,8438,5320,7663,8255,7663,5241,8539,5655,5564,5320,8239,5726,7504,5237,5285,0,5285,5314,5476,5401,5358,5301,7675,7675,7752,5529,7706,7706,8533,8888,5291,8533,0,7893,8282,8282,5347,7628,5347,7994,8307,8119,8239,7977,7982,5661,7977,7628,5655,5285,8494,7853,5573,5309,7710,7482,5564,8322,8427,5726,5314,8427,8676,5314,7487,7528,5314,5314,8196,7516,5314,5573,8676,7605,7565,5661,8560,7628,5391,8456,5337,0,8334,7706,8427,7790,5329,8456,7920,7511,5564,7565,8190,5485,5485,8447,8443,7999,5476,7511,8670,5407,0,5476,7706,7972,8010,8647,8010,8427,8625,5342,7628,7478,5325,5325,5325,8154,8915,7883,8484,7972,5372,5661,7681,8329,7500,7500,7500,8811,7653,7658,8539,7500,7877,5391,8582,7924,5391,7599,8438,8438,8068,8104,7478,8267,7930,8608,8115,8282,5381,8653,8119,7982,7565,8052,7952,8227,8190,8391,7643,5501,8196,7982,5476,5237,7528,7834,8115,7565,8772,7914,8170,7924,8365,5224,5426,7616,8190,8456,5655,8093,8104,8052,5712,7571,5305,8411,7500,7643,7999,8548,5391,5391,7628,7893,5459,7790,8447,8227,7752,7582,7663,5224,8608,7576,7610,5274,8582,7681,8783,5391,5464,5464,8190,8005,7500,5285,5309,7972,5309,8987,8316,8062,7834,5671,7521,8635,7675,7491,8267,5296,7653,7653,7667,5509,5274,8653,7576,5237,7558,8119,8201,5578,5578,7478,7653,5296,8052,8033,5509,5606,5314,8397,7576,7734,5485,5237,5261,5476,5237,8745,7706,5485,7952,5655,5476,7972,8345,5509,7516,7779,8227,7599,7675,8365,0,8190,8190,5476,5367,8267,5296,5564,8438,8005,7849,7616,8762,7994,5320,8745,7790,7823,5407,8699,8345,7924,8104,5642,5612,5309,8391,5285,8509,5524,5534,8227,7706,8052,7834,5301,7663,5325,7952,8514,8365,5661,8052,7715,5305,8827,8447,8015,5296,8222,7653,8190,8732,8239,5274,7883,5485,8959,7516,8068,5237,5476,5325,5464,7658,7491,7491,5301,8772,8316,7675,7893,8196,7999,8052,5476,7521,5426,9367,5285,8222,5485,7834,7663,7491,8613,5320,8249,8329,5642,7734,5301,8033,8582,5459,0,7834,8154,5329,5237,8164,7610,7700,7632,8375,8635,5629,7834,5573,8354,8354,5726,5476,8845,7491,7982,7849,5320,8340,8340,0,7800,8554,8554,5377,8397,8179,7500,5296,7482,7867,5501,7920,8354,5337,8821,5352,8282,5564,8093,7893,5726,0,8293,7681,8851,5655,7843,7843,5676,8391,5464,7599,8068,7999,5325,7706,7616,8548,7599,8316,7843,0,8249,7610,7715,8919,7994,5305,8543,7687,7605,7605,0,7605,8504,7904,8312,7888,7888,8479,5301,5688,5325,8484,5358,5519,8805,7839,8302,0,8925,7768,7542,7628,8811,7478,5496,5261,8329,8010,7478,5209,5301,5426,7774,8879,8504,8670,5480,8539,8015,8211,7710,5476,7786,7817,8762,5476,7706,5320,8461,7681,0,0,0,8277,0,8211,7924,7538,7622,7487,8467,8560,7893,7930,5381,7582,5524,5642,5274,5573,8658,8994,5320,5396,7528,5442,7605,5442,8022,8282,8022,5325,8354,5309,8131,5325,7790,7920,5358,7599,8608,7565,5501,5476,5564,7823,5237,7982,8387,8307,8329,5655,5642,7516,7872,7864,5712,7999,8039,7972,8827,8267,0,8307,5320,5372,0,5301,0,5407,7558,0,8322,8527,7823,7675,5274,7692,5255,5476,5237,7972,8625,7675,7977,7977,8131,5564,5305,5476,7491,7491,5391,8077,5358,7888,5476,8093,5224,8447,7986,7849,7533,8010,7548,5491,7839,7924,5564,8073,8711,8811,7706,8297,8110,7790,7999,8022,5578,5367,5337,7914,8170,5480,7571,7823,8381,5218,8539,7972,7687,5496,7883,7786,0,8484,5708,5564,5407,8073,7888,7990,8716,7605,5358,7511,7637,7687,7487,7605,8456,5391,8625,5496,5642,5291,8484,5391,7972,7511,5712,0,8164,7687,0,8473,8427,5381,7610,7582,5329,0,5301,5347,5218,5320,8329,8969,7706,5655,7706,5301,5476,7521,5655,5301,7588,7795,8795,5224,8504,7675,8073,8504,5224,5209,5442,5476,5381,7500,7605,5407,8397,7696,7696,5337,8048,7817,8898,8149,8427,5301,0,7924,7849,8682,7972,7710,5717,5437,8375,5564,5381,8560,7952,8272,8687,7994,8582,8613,8345,8345,5676,5476,5314,7692,7972,7723,8316,8940,8940,7811,5381,8484,5529,7888,8863,7628,8365,0,7616,0,0,8427,8387,5386,5655,8903,7706,8255,5396,7908,5419,9345,8329,5612,8302,5655,7930,8805,7795,5485,8073,8543,5564,7872,8316,5291,5237,7843,7511,8527,7706,7752,7667,8811,8140,7779,5688,8805,5337,5712,7898,7610,5352,9345,8539,8190,5647,5372,5708,7786,5358,8539,7653,5209,7972,8504,7930,8845,5407,7811,5509,7495,7977,7681,5325,7675,5329,7811,8670,8433,5501,8022,8249,7478,5301,5301,8307,8433,7616,5612,8170,5377,5381,8653,5314,5320,7877,8010,7994,5485,5301,5224,0,0,8272,7972,8277,5401,5407,5314,8093,5301,7706,5224,9032,8827,7542,7746,7706,7706,7774,8234,7877,8594,7893,5213,7898,8057,7643,8548,7558,5372,5325,5301,5352,7628,7628,7786,7643,7582,5629,8461,7599,8539,5237,8010,7558,8427,7706,8467,7834,7628,7768,5476,9367,8504,7805,8873,7706,5314,5564,7990,8277,7967,7967,5314,8721,5501,5501,8033,7723,8077,5509,8039,5329,8052,5381,5476,5442,8170,8170,7558,7571,7779,8322,7972,8863,8387,8170,7930,5285,5314,5209,8888,5352,5693,5573,0,0,0,5407,7952,5237,8762,7542,0,0,0,7632,7972,0,0,0,0,5352,8427,0,5480,9367,7888,7491,8998,7994,7994,8676,7977,8548,5407,5476,7914,5237,7834,7834,8732,8427,8104,7628,7849,7687,8494,7858,5358,5642,8154,7500,8893,7924,7986,7834,8543,7643,8005,5381,8005,7487,8527,5661,5480,7972,5407,7715,7790,5573,7982,7982,5401,8873,8805,7823,7628,5337,5712,8022,8190,8190,7616,5655,7858,7491,5325,5381,7491,5573,8598,7628,8694,7994,5712,8539,5325,5381,8509,5688,7616,8110,7946,7957,5333,0,0,8751,0,5671,8772,5347,8267,7628,8033,5329,8170,0,0,0,5661,7977,5476,8427,5564,8716,5651,7843,8164,7786,5407,8170,7738,5642,5655,7898,8302,8467,5209,8391,7588,7977,5642,5381,5464,8811,7893,7687,7542,7538,7962,8467,5661,8164,5391,7972,8402,8267,8805,7511,8164,5629,5699,8533,7487,8119,7738,7990,5237,7786,7706,8898,5524,7962,7533,8272,5717,8329,7828,8417,5325,8851,8131,7805,8322,5496,7542,8359,5712,7500,8461,5524,5314,5480,0,7924,7828,7977,5407,8397,0,0,8888,7605,0,5237,7706,5401,5296,5218,7542,8039,5671,5671,8641,5396,8140,9367,8402,5413,5337,7982,5419,7982,7811,8005,5476,8077,5524,8756,7952,7952,8340,7800,5309,8539,9345,5333,7843,8033,8827,5301,5519,8745,8617,8010,8316,8721,5325,5612,5666,5329,7779,5651,7957,8783,7588,7990,5320,5629,8473,5329,8484,5320,7687,5320,8015,8514,5305,5453,7924,7681,5352,7605,8302,5237,7768,7946,5407,8827,0,0,8322,0,7616,7696,7528,7972,8255,8397,8827,7734,5320,5396,8005,5655,9021,8354,8427,5237,8329,7828,8048,8811,5305,7478,8255,5386,7516,7511,8255,5274,8489,8010,8427,5480,8149,8267,8598,8422,7558,5629,8249,8170,7558,7588,5291,5291,8772,5296,5325,7495,7521,5480,8381,7872,7605,8519,8833,5501,7723,8297,7946,8433,7786,7511,8149,5524,5573,0,0,0,0,5325,8307,0,5329,0,0,8467,7738,5320,5419,8772,7516,8789,7482,5237,5342,5261,8397,8190,7558,8811,8170,8397,5476,8196,7734,7834,5666,8527,5296,8903,5325,5342,8073,5358,5693,5573,9361,7908,5325,5381,7977,8745,5578,5407,8322,8479,5476,8473,8022,5617,7516,0,5496,8249,7482,8272,7658,7746,7706,0,8888,8154,5325,7542,5651,8381,5476,5524,5407,7482,7696,8745,7834,7706,5651,7999,7952,8104,5325,8005,8312,8919,5573,0,7746,5337,7972,8687,7542,5666,5666,7730,5329,5301,8498,7672,7763,5296,7742,5329,5381,5524,8762,8467,5301,7893,5314,5448,5401,0,5573,0,7605,5329,7834,5301,7605,8033,5381,7864,7588,8359,8077,7628,7610,8277,0,5274,0,8170,7675,8093,7616,5407,7482,5337,7616,7521,8789,8073,7877,5347,8170,8617,5617,7994,8827,7768,5726,0,0,7628,7632,5301,8365,8375,8903,5291,0,5347,5347,7605,5666,5301,7904,7700,7628,8093,0,7542,7839,7811,7528,7628,7628,7542,7742,7500,8783,5573,7710,8509,5476,5291,5237,7500,5367,7628,7908,7843,8739,8851,5237,7663,5476,7706,7982,7710,8196,8739,8795,8739,8795,8732,8302,0,7482,7528,5661,7628,7542,7675,5476,5717,7478,8772,5309,7742,7982,5377,7811,7500,9054,5237,7675,7500,5237,0,5401,5573,5476,8795,7628,8287,7811,7972,5241,7839,8201,7478,7706,8201,8201,8082,8170,7542,7710,7719,7710,7719,7548,5342,5342,5301,8451,7628,5301,7952,5491,5491,7487,5407,5578,5305,5305,5642,5305,8140,7924,5606,8119,5491,8987,7500,8329,5320,8179,5291,8647,5280,5688,7588,8745,8267,5401,5476,8998,7972,7491,8179,7643,7883,5325,7491,0,8267,7752,5442,8888,5377,5309,8987,7482,7757,8140,5296,8498,5476,7883,8762,5419,5401,8888,8762,0,5407,5320,7742,8676,7605,7482,8745,5476,8302,5699,7990,5642,7667,7828,5296,5296,7786,5699,5325,5476,7742,5296,8676,5476,7675,7478,8721,7715,5712,5712,7663,7571,8762,7628,5358,5358,5358,7920,7920,5358,7877,7790,0,0,7734,0,7977,8427,8159,7715,5480,8329,7696,8164,5274,8170,7715,8052,5688,8307,0,8772,8456,8170,7888,8402,5358,8589,0,7790,5342,7628,7628,5480,7849,5407,7738,8589,5329,7715,5301,8316,8164,8227,7734,7632,8427,5514,8427,8249,7632,5726,5459,5391,8539,8438,5291,8211,7706,8959,8716,7706,8479,5274,8732,5501,8915,8028,0,5564,7914,7582,8745,7706,7482,5237,8370,7924,8345,8387,7990,8745,8387,7582,7883,5329,8745,7924,8267,8267,8839,8589,5241,5224,5218,8903,0,5333,8447,8068,8010,7952,8805,7972,5688,8888,8115,7746,8498,5296,7757,5476,5496,5314,8732,5509,8010,5491,5237,5480,8211,5688,7706,5261,5213,7653,7542,7478,7478,8329,7487,8613,7817,5419,7710,7478,0,0,5629,7972,7710,7542,5651,7628,7599,8745,5485,7872,7667,8062,7658,7768,5325,8411,8411,8811,7752,7548,7565,7504,5291,8560,0,7706,5501,7500,7500,8196,5476,8494,8267,8467,8560,7834,8033,8033,7883,5337,5471,7982,8154,7867,7715,8110,5712,7738,7746,7478,5248,5606,5358,8302,7972,8456,7533,8863,8925,8131,7511,5712,8115,8527,7742,5301,8099,8777,8527,7994,7982,5305,5712,5320,8170,8365,5480,5480,5480,7849,5301,5651,5476,8048,7893,5337,5606,7972,7999,7786,8427,7834,7487,8582,7592,8170,5661,5688,5476,7977,7548,7768,8073,5296,5651,8543,5314,5573,5333,5337,7786,8062,8811,8048,7790,7487,7982,5255,7839,8010,7710,7588,8381,7558,8093,8174,8073,7706,7487,8447,8170,8354,7605,8119,5666,8190,5529,5564,7533,8438,7658,7924,5325,5218,8721,5413,5529,7610,5329,0,8073,5661,8312,8115,5485,7482,7576,5325,5476,5296,5296,8397,7558,7482,7994,5730,5407,7924,8577,7487,5325,7696,5426,5564,7730,5612,7972,7482,7478,5237,8898,7605,5419,7632,0,8345,7582,5476,8711,5666,5476,5651,7768,5309,5305,7994,7675,5661,8062,7500,8851,8582,8272,7867,8170,7696,7576,8613,5255,8329,7504,7972,8687,7811,8391,8154,8631,5280,5213,7478,5726,7511,5476,7977,5485,7542,5419,5285,7558,5391,5314,8604,0,7908,5325,7511,7877,7643,7982,8789,8329,5309,8577,5688,7994,5578,7667,7653,7898,8211,5314,5337,5237,8073,8307,5509,8062,5476,7734,7616,5347,8052,7843,7653,5301,8845,5564,7478,5401,8104,8527,5476,7628,8316,8149,8370,5309,7977,5248,5534,5712,5342,7558,8456,5274,7914,5647,8653,8751,8077,7653,5485,7675,5617,8184,5647,5218,7675,5274,8805,7864,7588,8068,5676,8433,5377,5301,8839,7487,5666,8839,8272,8762,8149,8277,5401,7994,8494,8267,7811,8539,0,8489,5407,8015,7719,5564,8721,5426,8087,8969,8387,8287,8015,7491,8571,8494,7653,5480,7582,7849,8494,8170,8811,7779,7643,7738,5314,7828,7867,8407,5676,5209,5237,5642,7706,7786,8039,7653,7516,5629,7576,5352,8052,8227,5320,7706,7565,7710,5329,5386,8170,8272,8827,5666,7972,5352,7893,8022,5606,7920,7883,7628,8447,7628,5329,8811,5651,5485,8093,8099,7482,8402,5726,8359,7628,8184,7914,8647,8104,8631,8467,8277,7643,8745,7834,7542,5606,7622,7972,7482,5651,8543,8467,7752,9071,7893,8745,8467,7990,5325,5617,8467,0,5329,5209,8762,0,5407,8438,7920,0,7628,8467,7914,7914,8110,7811,7605,5407,8699,7628,5688,8805,5726,8762,8527,7687,8073,8494,8494,8539,7994,7752,8613,5661,8604,7994,5717,8461,7834,8062,8190,5651,7990,7790,7616,7834,5337,8062,7622,5426,5712,5437,7643,8716,8005,5391,7864,5213,5712,5401,7706,7706,5712,5606,8694,7994,8179,8641,7746,5296,5305,7500,5325,9054,5407,5407,7982,8527,7521,5476,7482,8427,5391,5381,7558,5464,8772,7628,5358,8438,5391,5647,8119,5218,5726,7548,0,8484,5285,0,7482,5629,7610,8154,8467,7823,8282,5337,7768,7805,7779,7877,7834,8104,8077,5209,5509,5391,7800,7616,0,8005,0,5407,7500,7672,7952,5671,0,0,8312,5309,7952,5629,8467,5612,8467,5401,5642,8249,9032,8119,7990,7658,8245,8631,7511,8131,5514,8391,7687,5391,5476,8099,7538,7734,7994,5301,7774,7478,5237,7752,8322,8115,5391,7588,5476,5655,5448,8267,5519,7482,8164,7643,7588,7588,8447,7738,5391,8613,7994,7533,5573,5573,8334,5534,8777,7763,7849,7828,8052,5464,5237,5209,8539,7972,7616,5564,5381,5396,5717,5209,8272,8909,5342,5358,5285,5296,8234,7482,5524,7610,7972,7834,5617,7800,7616,8104,5329,5347,8375,0,8888,8772,7628,5448,7982,5358,8473,7972,5419,5568,7914,8987,8539,5651,5708,5329,7982,7982,5337,7877,8010,5218,8234,7800,8745,7628,8647,5325,8387,5285,7706,5237,5325,5329,5329,7610,5309,8039,8827,7957,7972,5671,8322,5301,7834,8340,5285,8827,8658,8641,7742,8909,7491,5237,5651,5629,5305,8987,7653,5401,5347,8631,5301,7542,8527,8190,5476,7800,5209,8211,8756,5666,5352,5320,8015,8015,5248,7500,7811,8144,5407,7834,8519,8239,8402,5377,7924,5419,8827,7616,8062,8329,5320,8721,7616,7675,0,0,7500,5401,7972,7994,7920,5291,5285,8312,8903,5296,5381,7478,8994,5325,7533,7952,7675,7542,7542,5237,5329,5237,8190,5471,5464,8438,8489,7588,8239,5655,7548,5476,8539,5509,7883,8772,8783,8329,8005,0,8670,5647,7605,8589,9372,5358,5261,7877,7877,5320,8316,7734,7516,7994,7719,7719,7558,7592,7558,5396,5285,8149,7935,8811,8879,7946,7487,5320,5352,7653,8267,7511,8062,5564,8052,7849,5274,5407,5261,5237,0,0,5347,0,7628,7516,8438,5372,8903,5509,8115,5661,7628,5301,5391,5529,8093,7800,5209,5218,7908,8179,5401,7828,7491,5708,7811,5655,7877,7800,7883,7883,5476,5342,7920,8170,7738,8196,5325,5314,5401,8789,8039,5309,5501,7719,5325,5342,5296,5573,7738,8022,5693,0,7605,8277,8888,5401,5651,5391,5320,5651,8381,7616,7616,8249,5309,7706,7920,5325,8052,8613,8397,8494,8272,7482,7482,8217,7839,8154,5485,5347,7667,7663,7734,5314,7994,8888,7786,7542,5426,0,8144,7893,0,0,5407,7994,7632,8365,5329,5301,5337,7924,5329,7487,5381,7616,8762,7599,5296,5661,7533,7914,8473,7877,5305,7511,5407,7734,7719,7558,7786,8888,8154,5274,5329,8196,7653,7616,5218,5301,5485,7675,7616,5342,7994,5661,8359,8052,7605,7610,8277,8217,8010,7982,8277,0,0,7616,5651,5325,5401,5407,7616,5501,7516,5476,5407,8354,7877,5491,8261,5407,5347,8010,8617,8467,5314,8527,5617,5666,5347,8827,5726,5218,7542,8048,8721,5699,7834,8052,0,7730,8365,8375,7834,5301,5651,5261,8772,8903,5285,7877,0,8052,7904,7605,5347,5347,7700,5509,8375,8329,5274,7834,8811,7834,7628,8154,7487,7763,8687,8919,5296,7675,7675,0,8062,8093,5372,5622,8484,7687,5661,7710,5314,5437,5437,8179,7924,7706,7548,5501,8816,7592,7752,8312,5476,5329,7805,7920,8509,7533,7834,8509,8334,7715,8783,8239,7952,8756,8068,8687,7528,7972,8687,8687,7994,8322,0,8245,5367,5241,7605,7990,7999,5564,7904,7888,7888,8093,5314,8190,8170,8772,8174,7592,8174,7658,7658,5224,7924,8316,7653,7605,7687,7828,7994,5391,5401,7710,5464,0,7982,8851,5347,5485,5285,7500,5426,7768,8577,7811,7924,7675,5519,5274,7482,7478,7576,5642,5391,7994,8316,5529,5437,8509,8062,7632,5367,7605,8190,5241,8312,7834,5296,8687,5578,5296,8898,0,8010,8670,7491,5296,0,5629,5309,9071,0,5237,5564,7592,7935,7734,5485,5314,8805,5509,8370,5352,7843,5261,7982,8527,7710,8164,7982,0,5320,7849,8329,7692,5291,7675,5237,7834,7653,9345,7667,8539,5661,5325,7478,0,0,7653,7834,7811,8514,8170,5442,7930,5501,7516,8653,7643,8068,5237,8402,7478,8062,8170,5564,8494,5285,8827,8527,5255,7723,8893,5237,7723,7528,5314,7834,7834,5476,5291,7628,8461,8297,7920,7786,0,8119,8227,8670,0,0,0,0,8033,7849,8005,7548,8676,5367,5296,8527,5401,8190,5426,5464,5285,5407,5358,7616,7605,7994,8641,5606,5237,8699,8699,7877,7834,7592,7592,7628,5712,8302,7994,7491,7528,7723,8110,5712,7811,7500,7999,7994,8010,5688,5342,7924,8577,7605,0,5524,7795,8222,7982,8267,5367,0,0,8411,8131,8422,5629,8783,5261,8869,8073,5464,5661,5237,7478,5237,8267,7849,7849,5237,8267,7504,8716,5261,0,5642,8329,5651,5401,7616,7478,8164,0,0,8322,7511,5237,5358,8473,8548,5329,5407,8087,5476,7957,8527,5342,5476,8316,5291,8548,8267,7982,5476,7972,5708,7994,8239,7653,7742,9071,7592,7800,0,8987,8498,8833,5407,5237,5237,5237,5476,7675,7710,5464,7877,7491,7542,8297,7834,5274,8255,9021,8919,5471,7914,5285,5501,7487,8239,7628,7516,8316,8670,5501,8010,7834,8329,5347,5712,5629,5476,5485,8514,0,0,7616,7628,5476,5529,5347,7658,5372,8179,5342,5237,5699,8827,5401,5296,7605,5661,8093,7994,5476,5661,7999,5296,0,0,5347,8613,5274,8898,8329,5309,5442,5442,5642,7849,5347,8473,8164,8987,5305,8222,8893,8015,8589,5708,5367,8582,8851,7628,7746,5329,5442,5442,7834,5237,7920,5391,5391,5688,8261,8354,5347,7582,5291,8316,8721,5688,7779,5651,5629,7779,7834,5224,8093,8498,7628,9361,8387,8994,5241,5325,5381,8467,7663,7994,7877,7516,5291,5564,7491,7904,5459,7491,5642,8443,8617,7696,8322,8519,5717,8205,8716,8322,8484,8322,7858,8282,7533,8670,5407,5213,8762,7982,7853,5333,7548,5459,7898,8255,7982,5337,7558,8762,8387,7558,8816,7763,8751,8484,8711,5480,7715,8149,8504,9377,7565,7790,7715,5391,7478,7834,7977,7930,5391,5407,7786,5337,8375,8119,7715,8539,7542,7768,7768,5209,8594,5237,8211,8946,7542,7478,7786,5237,5301,5301,7516,5325,8461,7972,8543,7768,8489,8762,8170,7977,5407,8527,7858,7990,8170,8898,5573,7478,7930,7632,5381,7538,8682,7994,5301,8387,8316,8387,5419,7853,5301,8762,8577,7920,8647,8222,5237,5442,7994,8005,7521,7768,8010,7904,8010,5688,7491,7774,8073,8345,5381,9345,8687,7538,5337,8756,8504,5325,8387,7599,7811,9345,8267,8582,8816,8539,8745,7548,5442,7930,7920,8170,8447,8119,8174,5367,9008,7982,8093,7893,8777,8447,5391,5337,8131,8354,8170,7883,8312,7786,8316,8381,7811,8727,5285,7849,7999,5325,5476,5261,8227,8164,8087,8316,8149,8762,5367,5391,5396,5241,7628,7962,7628,5358,7478,5237,5676,5301,5367,7482,7940,7843,7930,7972,7834,8302,5301,8456,5274,7757,5471,7752,5642,7904,8756,8447,8473,7482,7478,5237,5407,8048,8653,7834,8039,7883,5651,8227,5476,7972,5241,5296,8249,7774,8140,5617,7994,8732,7632,7982,8548,8987,7994,8527,8494,8329,5426,7605,7790,7994,8467,5274,8641,8387,5386,5661,7977,5730,8411,5337,5337,5712,7687,5642,7962,8073,7977,5396,8467,5448,7663,8467,5491,7628,5391,7883,7605,8201,5655,8519,8670,7800,5485,5419,7715,8015,7877,5708,5377,8427,7849,5358,5291,5358,5358,5464,7734,7571,7628,8316,5642,8239,8851,7675,5218,8631,5237,5717,5676,8762,5296,7908,5274,5661,7738,5274,8329,8381,8048,8154,8417,7696,8577,5386,8687,8087,7952,7738,5274,5651,8261,7811,5386,7632,5274,7706,5291,8190,7622,5209,5329,5329,7628,7588,7599,7482,5391,5693,7605,7500,5325,8062,8539,7768,8811,8484,7628,5496,7710,8329,7538,7576,7478,8613,7752,5381,8387,5501,5329,5413,8354,5291,8604,5291,5509,7637,5712,7883,7920,7994,7811,5274,7558,8093,5491,5476,8345,5255,7828,5564,8190,5237,8073,7839,7823,7977,8670,8312,7628,7990,8297,7864,7914,5476,8443,7977,8438,5261,7511,5358,5655,5655,5291,8048,7610,5309,5285,5407,8589,8687,5274,7576,7817,7834,5519,7924,7500,7632,7487,7605,7528,5519,8329,5377,7696,5442,5642,5367,7946,7952,5248,7500,8282,8456,5564,7849,8170,7643,5213,7864,7558,5377,7893,7478,8387,7667,7930,7930,8805,5274,8287,7653,8190,5224,5688,7768,7843,5301,5519,5564,7511,7491,5237,8093,5301,5606,5401,5612,8514,8479,8772,5291,7805,8427,5352,5629,5730,8170,8033,5377,7752,5485,5381,7828,5573,5314,8456,7558,7982,7706,8548,8653,8227,7706,5413,5509,5329,8827,8721,7834,7757,7930,7516,8196,7920,8994,8716,7774,5407,8048,7491,7723,8302,8745,7643,7628,7790,5712,7834,8190,7548,5426,7977,5381,7994,5655,7994,8893,7811,5381,8732,5407,5622,7924,8494,7768,5367,7935,8467,8795,5386,7982,7616,7628,7930,7872,7719,7511,8427,8164,5612,5642,5407,7500,5309,7839,7616,7538,7972,8548,5629,5301,7843,7952,5655,8322,8451,8604,7999,5642,7663,7853,5647,8925,5329,5622,8827,5309,5476,8402,8827,7972,5301,5367,5612,5688,8190,5708,5401,7800,8015,7538,7898,7616,5629,5329,5381,8919,5261,8833,8329,8777,8903,7516,7930,7723,5218,5464,8772,7734,5485,8010,5309,7511,5325,5437,5485,7663,5358,8179,5726,5372,8903,8402,8234,5372,5296,7811,7719,5342,8732,7628,7628,5309,5329,8888,5485,7752,8397,7653,5237,5325,8190,8821,8154,5671,5666,8647,5301,5401,5329,7800,7542,7723,5578,7616,7582,5622,7610,5261,8255,8365,8422,7616,5651,7521,5237,8721,8479,8365,7811,7795,8073,5459,8222,7982,7972,8647,8282,8261,5301,8631,9026,5419,7542,5291,7864,7565,5407,5534,7742,8073,7786,0,7588,8093,5476,5255,7839,5309,7977,8255,7710,8527,8903,8249,8057,8863,7667,8411,7576,5655,8903,5485,7616,7706,5407,5573,8539,7742,8249,5622,5352,7516,8833,7478,7920,7883,5534,7616,7834,8811,5491,7914,7478,5606,7653,8227,8119,8577,8119,7877,7877,8222,8119,7588,8365,5218,8952,5329,5564,5218,5413,8527,8381,5606,5337,7977,7914,8261,7828,5296,7823,7828,5255,8805,5396,8805,7768,5209,8249,5358,8267,8365,8467,7511,8227,7715,8267,8010,5564,8845,5606,5381,5381,7768,7994,7696,5606,7696,7528,7533,7487,7834,7834,5391,7511,8543,5655,5573,7715,7790,8604,8307,8126,5358,8245,7972,5329,7706,5329,7768,7779,8010,5396,7628,7628,5237,7667,5476,7817,7628,5459,5442,5224,8903,8287,5325,5509,9382,7924,5407,8641,5666,5325,5496,7877,7592,8641,7516,8028,5419,5442,8461,5459,5459,7920,8077,5437,5320,5320,7972,5476,8519,8131,5693,5358,5381,8239,7817,5717,8484,7667,8789,5261,5651,8293,5301,7924,8033,5337,7904,5381,5568,7972,5564,5661,5358,5476,5301,7658,8519,8527,7605,8174,7920,8811,7990,7839,5661,8873,7883,5655,8048,7972,8909,8170,5325,7893,5726,7828,7977,5274,5496,5224,9032,5241,5218,5485,7768,5248,8316,5476,8509,7994,5296,7888,7924,5301,7972,8727,8387,5712,8307,5485,7675,8316,7516,8211,7920,7675,7940,7734,5301,7972,8451,8170,7478,8302,8149,8087,7811,5274,8527,5352,8527,8721,8772,7893,7538,7516,7710,5325,7828,8345,7710,5358,7930,8438,7786,8217,7864,7994,7628,8402,8479,7605,8504,7883,5501,7867,5325,7628,5730,8527,7986,7924,7752,5647,7628,7795,5396,7811,7692,7977,7482,5476,5329,5514,5291,7710,5237,8721,5476,7752,5325,8519,8282,5666,7511,7637,8087,8293,7828,8245,8959,8772,7877,8473,7795,8140,7632,5476,8548,5442,8015,8533,7972,9045,5699,5496,7957,5329,5305,5309,7482,7616,5464,7888,8239,7610,5485,7957,8149,5274,7893,7883,5529,7990,7834,8282,5496,8519,8625,5407,7628,7994,5476,7893,7920,5666,5301,5320,7883,8461,7828,8073,8277,8959,5325,7710,7924,5274,5381,5241,7834,5301,8154,8277,5407,7828,5274,7616,7482,5726,5218,8772,7828,7687,8509,8375,8073,7877,7952,8312,8048,8919,8048,8126,8126,7867,5358,5372,5372,7790,8407,5314,5381,5464,7952,7839,8093,5524,7952,5407,5285,5352,5524,7663,7864,8052,5407,5358,5509,8498,5305,5237,7663,7592,8052,5464,8052,7817,7977,7478,8349,8577,8312,8946,5285,7972,7582,7605,5301,8647,5726,5285,7920,8811,8174,7576,7667,8149,8879,5699,5568,7786,7667,7667,7576,7687,5381,8427,8762,8438,7990,5485,7628,7930,7999,7548,9054,5218,7616,7849,5476,8329,5676,7849,8608,8427,7834,5407,7849,7628,8005,7582,5671,8479,7533,7478,5688,8119,8479,5329,8427,8249,5329,5309,5391,5407,7533,8721,8345,5329,7924,7576,8903,8010,7786,5301,7715,7558,8811,7500,8211,8211,7972,7706,7935,5606,7521,5471,7528,5237,7533,8222,5471,7478,8267,8119,9389,8267,7746,7533,8827,7622,7883,5712,7790,8795,5274,7742,8345,8174,5241,5642,7914,8154,7723,5655,5396,7930,5386,7710,8119,5712,5476,7605,5655,5655,7746,8582,8467,5459,5476,5209,5209,8783,7687,8190,7893,7982,7853,5342,7952,5651,7883,5476,7696,8391,8190,7710,8582,5676,8711,5655,7681,7924,7834,5305,7548,8447,7999,5241,7528,7667,8670,7653,7811,8539,7478,5296,5676,7864,5509,5274,5237,8653,8277,5407,5261,5314,7643,5509,8093,7823,7883,8577,9394,5485,5241,8582,8277,5342,5676,8839,5342,8762,5329,5358,7715,7643,8447,5329,5476,5381,7774,7576,7628,7643,7482,7994,8670,5325,5699,8375,5391,5676,5661,8762,5309,5699,5377,8005,5524,7872,8711,7500,8048,7752,7622,5442,5301,5651,5534,5568,8387,8033,7990,5448,5367,7723,8334,8391,7800,8387,7972,8015,8334,7757,5301,5305,8598,8827,7957,7710,7800,8647,7558,5325,8249,7834,5301,8959,8302,8255,7734,7605,8919,7914,8598,8239,7487,5301,8795,7491,7500,8316,8711,7516,8005,5274,7516,7663,5296,8427,5407,7786,8762,5726,5622,8589,5514,8179,8329,8179,7663,8249,5337,8888,7746,5337,8582,5291,8190,7746,8154,8048,8893,7610,8721,7800,5726,5573,5629,8795,7605,7790,5309,5524,7628,5448,8604,7872,5391,5476,7786,7972,8093,7914,7616,8170,7972,5285,8451,8676,7663,5285,8833,8154,8126,5391,5688,8312,5325,5209,8811,7478,5480,7692,8322,5237,8010,8582,8903,7538,8302,7883,5717,5301,5564,5209,7849,8154,7757,8879,7706,8795,5381,5501,7864,8387,7920,5578,7834,5342,5622,7935,5471,5529,7834,7667,8527,8048,8068,7687,5726,7628,7632,5480,5381,8539,8533,5655,7663,7893,7715,7605,5301,8411,8293,5255,5352,8093,8174,5333,8312,8073,8884,7914,8925,7495,5301,7610,8316,7742,5301,5524,5573,7667,5329,7605,5717,8154,7663,5386,7977,5329,7994,5564,7632,8800,5426,8119,8316,8068,5237,5476,5491,8851,5367,8255,8467,7908,8255,8322,8946,7675,5699,7768,7843,7752,7628,9059,5367,8211,5337,8539,7935,7935,7864,7511,7616,8211,5699,7834,8302,8653,7628,7994,7500,7849,5386,5407,8456,8022,7675,8946,5352,8391,8863,8571,8554,7706,8925,8745,7516,7667,8073,5693,5564,7757,7849,7687,5329,7663,5342,5699,5564,7930,7576,8217,7478,7706,8099,5509,7828,8461,8456,7706,8033,7487,7834,5459,5693,8762,5480,5381,7616,8411,5476,5358,7994,8851,5655,8676,5367,8903,7576,5386,5352,5407,8539,8772,5496,7473,8359,8272,5274,8190,5699,5699,7538,7834,8184,5476,7663,7839,7914,7487,5629,7898,5396,8631,7994,8940,5666,8451,5655,5367,7706,5401,7533,7994,8245,7675,5578,7990,7986,5396,9399,8234,5622,7877,5325,5708,5352,5329,5329,8795,8322,8033,8211,5666,7864,7706,5305,7706,8402,8443,8745,8287,7675,5325,8149,8073,5726,8833,8919,7904,7763,7516,5342,7828,5464,7533,8925,8255,8539,5301,5337,5285,7786,7786,8255,5471,5612,7628,5476,7849,7977,5647,5666,7811,5573,5237,5699,8903,5476,5419,7920,5372,8387,8751,7706,7663,8196,5407,7628,8821,8249,9406,8149,7779,5612,7763,8936,5274,8582,5666,5666,7972,5301,5301,8010,5699,8087,7616,9045,7610,7696,5301,8073,8617,5381,9067,8365,7834,5391,5391,5301,8705,5617,8354,7487,7706,7738,8800,5661,5274,5274,7972,7706,7972,5413,8217,7548,8068,7478,5391,5337,7972,7681,5564,5564,5651,8443,7972,7491,5209,7571,5726,7982,7605,7914,5342,7839,7637,5651,5329,7628,7521,7986,7681,8647,7605,7952,5367,7719,5325,8077,5655,5524,7834,5309,8033,5671,8073,5693,8479,8154,8272,7706,7710,8721,8397,8484,5329,5224,5309,8479,7823,5329,5261,5578,7986,5296,5730,5237,7482,7576,8154,5655,5564,8467,7482,5274,7924,5377,5476,5712,7487,8539,5296,5314,5655,5218,5325,5325,8005,7487,7538,7738,7500,8190,8762,7628,5237,5325,7628,7877,8772,7908,5342,5301,9054,8447,8479,5301,8261,8354,7622,8365,5666,8110,7628,7628,7710,5381,8196,7849,5647,5519,7487,5642,5647,9051,5496,8811,7719,5274,5224,8062,5688,5476,5248,5501,8052,8370,7990,7622,8940,5606,5358,7972,8631,5651,8334,7478,5274,8447,5301,5337,8443,7920,7904,8631,5305,7558,8052,8196,7924,8370,7972,7972,5320,8170,5209,8154,5325,7558,8136,9075,7663,7849,8316,5209,7972,5381,5401,8762,5476,5305,5296,5448,8772,5237,7706,7843,5564,8115,8839,5329,8589,8811,7977,5377,7558,5647,8670,8839,7786,8099,5329,7786,7571,8504,9032,8115,8126,5325,7972,7972,8653,8873,7982,7990,5224,5442,5629,7628,7588,7616,9411,5476,5651,8411,5396,8349,5358,7571,5352,7548,8548,7500,7558,8479,7752,8397,7675,7487,5325,5564,5655,8255,8479,7977,5325,5524,5524,7786,7864,5342,8010,5325,5296,7715,5261,8514,7972,5325,5329,7588,5325,7616,7752,5688,7719,5401,7500,5464,5296,5325,5342,7675,8196,5285,5314,8316,7487,7834,5342,8789,7719,5296,8261,5309,8789,8354,5325,8422,7752,5372,8154,7817,5329,8473,7663,8261,5314,7908,7628,5529,8631,8484,7723,5237,7723,8571,7628,7920,5485,5642,8732,9032,5647,5347,7867,8533,5642,8411,8222,5642,5224,8631,7605,5285,8255,8052,7478,7952,5642,7972,8519,5642,7681,5285,8519,7592,7675,7482,7982,8498,8494,7883,7692,7990,9417,7500,7588,5305,8005,8307,5329,7482,8494,8631,8387,7628,8170,7723,5642,5642,7681,8783,7628,5606,7757,8170,8239,5237,7986,8005,7675,5285,8287,8739,7610,7558,8402,7675,5372,8498,8255,7637,8307,5372,7632,7867,5301,7588,5391,9423,7542,8925,8062,7706,7542,7700,5391,5320,7994,8170,8427,7605,7487,7610,5224,5485,5485,8015,5476,7487,7667,8062,8316,8022,7592,7858,8267,5320,5485,5296,5381,5255,8676,8670,8827,7994,5647,7994,8099,5485,8795,5485,7605,7605,5333,7658,7628,5647,8811,8211,7605,7643,8762,5325,7675,7904,8099,5325,5655,7999,7962,8732,7994,8467,7982,8461,7675,8433,7920,5358,5407,5647,5647,5261,8119,5367,8539,8467,8136,7710,5647,5301,5647,8438,8222,7681,7487,5564,8387,8543,7994,8245,5209,8539,8093,8115,8293,5564,8131,8010,7977,5717,8010,5391,9427,8312,8582,5407,7723,7610,5305,8411,7977,7952,7972,8282,8329,5642,5274,5358,7723,7795,8919,5285,5309,7768,7962,8613,8048,8582,7605,8316,5426,8245,5485,8604,7908,5568,5485,5358,8635,5301,5241,7478,5501,8267,5647,8994,5301,7843,8170,8721,5407,5480,8316,5255,7828,7558,7940,5391,7920,7571,7675,8670,8805,8604,7834,5524,7908,8811,5442,7904,8461,7935,8093,7542,5564,5407,7972,8277,7986,5358,5358,5358,5717,7710,8174,7628,5407,7999,7786,7710,5241,5485,8302,7576,5671,8073,5325,7516,7940,7667,5564,7687,7786,8571,7542,5496,7667,7805,8721,8467,8467,8170,5661,8115,7867,5480,7632,7883,7675,8893,5407,7473,8411,8272,7521,8509,9435,5655,8119,5426,5391,7605,8354,8456,7904,5476,7482,7675,7500,5381,5464,8845,7663,8010,7565,5622,7858,8329,7605,8062,7867,5730,8190,7622,7542,5309,8005,5666,7957,8267,7849,9441,8201,5442,5524,7893,8893,5241,8131,8077,7542,7675,8498,7817,8334,8762,5301,5358,5314,5573,8635,7710,7605,7582,7610,5347,8345,8201,5301,5296,5358,8539,7888,7834,5352,9367,5622,5325,8647,8307,7628,7763,5622,8115,5237,8039,5476,8447,7877,5568,8140,8461,5442,5325,7952,7588,7957,7687,5329,8184,5612,8498,8345,5612,7888,8676,5647,7558,8073,7643,5358,8903,8239,7883,7828,5564,5407,8438,8005,8539,8255,8919,5464,7962,8149,8365,7675,8762,5391,7864,5642,5213,8222,5325,8811,8227,8762,5480,7834,8073,8903,5381,7990,7610,7542,5401,8073,7576,8277,7521,5347,8873,7628,8354,8052,5655,7658,5377,7616,5442,5325,5218,8509,8909,7588,5391,8010,5448,5534,7558,5314,8909,5329,5329,5407,5480,7898,8159,8277,7610,5606,7478,5347,7542,8354,7548,5726,7817,8411,8676,8857,5301,7752,7632,7616,9447,7843,7500,5651,8539,8010,8140,5329,7914,8293,5661,5666,5274,5209,8447,8879,7710,7542,8473,5358,8282,7478,8539,8015,8110,5501,5358,8402,7972,5301,8039,8322,5309,7904,5301,7715,8170,8312,5305,8140,8184,8322,7779,7588,7681,5301,7706,7588,5261,8316,5209,8604,8354,7576,8010,9345,8126,5471,5501,5471,8539,8119,7779,5274,8772,7779,8179,8845,5301,8354,8245,7491,9452,8402,8126,8015,7516,8548,5485,8039,7920,8589,8589,5419,7491,8110,8073,5730,7500,8170,7982,5407,8365,7839,5301,5347,5564,8447,7930,8387,5519,5524,5629,5688,5666,8340,5329,7834,5651,8589,5501,5372,8756,7872,5305,7516,8261,9457,8329,7779,5419,7904,8073,5391,8504,8548,5274,7495,8641,8077,5301,7990,8539,9345,7681,5347,5651,5476,8484,5237,8653,5241,8484,9021,5325,5496,7576,8329,8354,8062,7628,7849,5509,8504,7752,7752,5688,8136,5209,7853,8816,8998,5381,5320,8104,7920,7482,8302,8062,7972,5325,5501,8267,8504,7883,5309,7588,7565,5612,8249,7482,8154,8033,5309,5564,7972,7658,5209,5442,5642,7687,5666,5237,5564,5661,7914,7853,7605,5726,5476,7605,8670,8811,7924,5564,5480,5655,5491,5314,5391,7548,5274,8443,7592,8282,8170,8716,8527,8397,5501,5485,8504,7946,5661,5381,7605,5442,7795,8126,5291,8582,8272,7839,8543,5237,8272,5661,7757,5285,7768,7828,7632,8190,5224,7533,5708,9462,8316,8164,7681,7482,5666,5419,7768,7500,5329,5459,8316,7487,5419,8293,5296,5291,7972,5407,5676,7710,7746,5655,5329,5274,5688,5320,7898,8613,7675,5509,8196,8845,5564,5377,5519,8504,5564,5237,5564,8805,5342,7548,8653,5564,5485,7982,7548,7834,5309,8267,5325,8456,5391,8548,7516,7888,5301,5329,7779,5442,7768,7628,5480,7706,9032,7565,5509,7542,5274,8087,7994,7706,8272,5509,8461,7599,8716,8863,7774,8190,8402,8099,7511,7706,8427,7930,8287,8093,7746,7706,7867,8772,5241,8234,7967,5476,5209,8093,7779,5309,7893,7872,5261,7628,8548,5381,5329,7500,5426,7994,5209,8170,7521,5407,7990,5274,8821,7746,7706,8676,7548,8539,8438,5676,8467,5661,7715,7487,5688,8411,7811,8845,5325,7746,5274,5564,7994,7628,8131,7622,5661,5401,8456,8411,8267,7834,5377,7795,7972,7710,7952,7768,5209,8022,8467,8062,7500,7957,8387,7648,5285,7616,5309,5476,8863,8447,7898,7786,7533,7576,5407,8451,7768,8617,8267,5367,8952,8929,5426,8272,5564,8267,5655,5524,8613,7982,5437,8909,5274,7588,5655,8548,8422,7653,7774,5358,8527,7478,5301,5612,7482,5237,8548,5666,5622,7542,7800,7972,5329,5305,8647,5401,5651,8190,8548,5325,5261,5342,8010,8952,5413,5476,5514,8711,7576,8322,7643,8473,5237,5320,5519,5296,5564,5296,8255,8833,7571,7972,5261,8589,7516,7628,8010,8239,5485,9021,5407,7648,7877,7872,5519,5296,5396,5442,8287,8322,5485,8245,8119,5296,5237,7482,5407,8170,7811,5372,5274,5381,5285,8073,7877,5476,5386,5342,5476,8635,7500,5325,8888,7542,5347,7734,8329,8857,7706,5712,7883,5305,5666,5661,8857,8582,5337,7500,5666,5274,7877,5237,5329,7877,7616,7774,7521,5274,8397,8857,7632,5237,8479,5347,5688,5377,7487,8484,7628,8062,7576,5274,7849,8354,5325,5509,8582,5325,8504,7994,8267,7853,8104,7920,8302,8461,8136,8467,8548,8099,5501,7972,7752,7565,7533,5708,8816,5320,5274,8811,5661,5564,5401,8443,7914,5237,7972,7548,7576,8282,5564,5314,8670,5476,5485,5491,7898,8164,5381,7692,7648,8647,7946,5296,9462,8190,5419,7632,5291,5285,8316,8845,7675,5676,5519,5309,5342,8272,5325,5377,5325,7500,8093,5578,7500,7706,7893,8287,8015,8234,8119,7994,7746,8087,5413,5442,7790,7511,7768,8548,8427,5509,5329,8863,5209,7990,7521,5407,7746,5347,5377,7622,7706,7834,5296,7487,7888,8676,8411,5274,8131,8863,7811,8539,5329,8411,8438,8467,5309,5564,8613,5655,8527,7582,5524,7877,5301,5476,5407,8888,8647,7800,5666,7616,5612,8711,5514,5661,8239,5261,8833,5419,7542,5372,7811,5285,8857,8998,7538,8461,8998,5699,8762,7511,8073,5255,5730,8617,8093,7616,7616,8745,5367,7616,8617,8772,7768,7706,5534,7616,5666,8772,5329,8721,7599,5291,5291,7599,7653,5209,7632,5564,7962,8048,7786,7605,8170,7790,7786,8438,8461,7904,7795,7786,5676,5564,7516,7834,7999,8397,7795,5314,7628,7972,7542,8048,7823,5320,7487,7920,7538,7511,7904,8048,5301,8783,7994,5358,5325,8833,8316,7746,5325,5676,5651,7952,7632,7920,5325,5325,8375,7924,7763,8322,7738,5712,8062,5476,5337,5501,5651,5524,7924,7786,8548,8721,7576,8093,5476,7605,8539,5519,7542,5476,5274,8164,8658,8658,7542,7811,8397,5274,5476,5274,7817,5274,7628,8845,5381,5629,8467,5237,8010,7834,5501,5261,5401,5666,8845,8417,8322,7877,7628,7817,5476,5248,5534,5501,8062,5325,7710,8402,5564,8745,9054,5476,7986,5476,7920,8093,7511,7972,5726,5237,7628,7521,5237,8196,7706,8255,7628,8222,7675,7719,8196,5419,8539,8402,7893,8272,8302,7478,7605,5407,7605,5391,7858,8548,5509,5296,5730,7849,7849,7653,5708,8647,5476,5401,5726,8222,7516,9054,8255,7487,8010,5476,5296,8190,8479,5642,8149,5622,8898,7790,5578,7706,8131,5622,7994,9021,5459,7696,9045,8821,7696,8716,5622,5666,7696,5209,8845,8783,8052,8267,8994,8987,7710,7487,8227,7977,8170,7849,5573,8149,7599,5325,5629,7742,7957,8417,8131,8334,7599,7957,5642,7888,8005,5337,5305,8811,7696,5578,8805,7491,8245,8022,8196,7710,7710,8447,7883,8062,8845,8170,7920,8077,7883,5358,8170,8093,5241,5337,5377,8239,7610,7972,8381,5391,7696,8387,5459,7795,5237,5401,8427,8119,8577,8751,7864,8170,5255,8539,8039,7752,7500,5647,8827,5329,5237,8805,5329,8170,8005,8170,8005,8827,5291,5534,5237,7935,5401,8827,5708,8119,8022,8805,8005,8077,7972,7883,8381,7706,8504,7478,8805,7610,7628,7628,5342,7487,7588,5476,7588,7487,7999,8387,8110,5476,5333,5325,7542,5501,8340,5717,8433,7811,5464,5496,8504,7675,8461,7576,8467,8762,8461,8164,8811,7571,8494,8227,7786,7972,7653,5564,7893,5301,7681,8170,5407,7565,9032,5337,8136,8560,8800,5337,7817,7628,8354,5642,5309,8312,7542,5237,7681,7893,7710,5485,7658,7914,7548,8015,5661,7914,7994,7576,5459,7883,7893,7904,8073,5726,8329,7930,7795,7658,5209,7692,7972,8316,5476,5209,5564,8334,5655,5274,7571,8456,7977,8119,7972,8222,5337,5726,7982,5301,5476,7482,7500,7924,7610,7582,9012,5329,5485,8293,7834,8658,7473,5476,8687,5671,5717,7582,7972,7675,7914,7504,7696,7864,5426,7858,8766,5209,7628,7558,7681,7972,8277,5274,5661,8402,5661,5305,8349,5325,5396,8170,7908,7730,8205,7706,5386,5651,8789,8375,5509,8073,8461,8721,5688,5285,5485,7888,7946,8451,8577,7582,8805,5712,8104,7914,5661,7834,8397,5381,5519,8443,5480,8174,7558,7786,5564,8307,5480,5453,7628,7994,7924,7795,5688,5401,8015,8402,7972,5391,7576,7920,7864,7605,8795,5329,8005,7805,8811,5606,8028,5485,8805,7986,5476,8345,8504,7914,8287,5564,5564,8170,7893,8322,5509,5496,5342,8164,8548,5693,7478,5712,7957,5622,7972,8694,7795,7742,8903,8345,5426,5386,7628,7478,7823,8255,7548,7994,7864,8159,5647,5642,5407,7994,5285,7628,7977,8676,5358,8227,5564,5274,8447,7746,8631,8909,8422,7898,7957,5329,8631,8427,5708,7588,8863,5717,5476,8073,8239,5325,7920,7628,5524,7610,8888,8554,8227,8196,8039,7834,8663,8647,5419,5564,5629,5305,5237,5622,5329,5285,7952,5329,7972,5642,5291,5401,8316,5352,8447,7687,8239,8402,7864,7675,5325,8010,7972,5285,5261,7478,8402,8489,7521,5342,5501,7616,8772,9361,7883,7908,8789,8068,5401,5358,5218,5291,5573,5476,5676,7986,5401,5514,8005,7786,7706,5386,8888,8329,8613,8154,8205,7828,8473,7834,8739,7986,7834,5329,8154,7952,7632,5726,8205,8375,8447,8205,8033,8577,8494,8687,8205,7516,8687,5209,7478,8077,5442,5325,5688,5688,5325,8077,7972,7972,7972,7999,5459,7972,5519,7658,5655,8484,8329,7628,5496,5642,7628,5248,8201,5237,8484,7628,7628,5426,8170,8484,7528,5617,5617,7883,7994,5391,8772,5320,7538,5606,7883,7734,7734,8721,7972,7576,8732,8598,5367,7478,7576,8479,8461,5261,5476,8613,8994,5491,5241,8282,8732,8560,7565,8282,5699,7898,7548,5407,8777,8093,7605,8115,7888,8073,5274,5717,8732,7977,5329,8062,8334,5237,5730,5564,7500,8527,7994,8670,7628,5476,8805,5255,7994,7817,8249,5464,8479,5464,8087,8548,8411,7790,5459,7800,7898,5496,5476,5514,8777,8340,7957,5491,7877,5642,8316,7982,8903,8772,5329,5476,5381,5407,8255,8249,7706,5329,5329,7877,8617,8682,7779,5407,5407,7719,7834,5564,5255,7834,7834,8340,8340,5476,7811,8805,5688,7663,8716,7681,8805,5381,5352,5509,5476,8745,5358,7763,5471,7542,7628,8387,8851,7723,5647,5367,7706,8211,5209,5296,8539,8174,7521,5358,5564,8068,7994,7478,7972,7706,5261,7752,7542,8504,8998,5568,5381,5329,7500,5325,8196,7706,8467,5501,7904,7872,7528,5325,5396,8277,7565,7478,5291,8131,7972,8267,8196,5708,5573,7790,8387,7893,7622,8560,8827,7482,5337,8411,5476,5296,7994,5301,5401,7864,5274,8227,8777,8249,7588,8484,8467,8297,8093,7658,7681,8539,7622,7723,5301,5573,7990,7715,7487,8222,8131,8438,5476,7893,8170,7920,8893,7692,7605,8447,7516,5224,5261,5688,5642,7616,8543,8062,7616,7687,7582,8170,5459,8077,8811,8539,5255,5712,5564,8716,5296,5358,8184,5564,5314,7790,8010,7867,7790,7790,7904,5209,5305,5358,5476,7710,5325,5485,7610,7696,5453,5391,7817,7616,7723,5717,8391,5301,8164,7482,8682,7542,7904,8033,8539,5519,5291,8577,7478,5325,8005,8604,5248,7839,8131,8687,8211,7710,5285,7768,5564,8670,7605,5209,5419,5296,7482,5496,8048,8164,8613,5248,8211,8316,5617,7883,7605,8329,7811,7473,7768,5671,8245,5485,5426,7768,8340,5485,7696,8345,8087,7710,8504,5407,5377,5464,5255,5301,5329,8149,5296,9345,5296,7977,7648,5358,5476,8255,5296,7706,8903,5426,8164,7643,7616,7632,7616,8329,5309,7962,7482,8349,8062,7576,5642,8015,7616,7710,8307,5564,8504,7482,7849,5358,5476,8267,8539,5647,5342,5342,7558,7599,7478,8140,5237,5485,5301,5564,7605,5305,5301,9345,5325,7888,5688,8302,5612,8033,5485,8170,5712,8249,5426,5485,7935,7528,7667,7834,8805,7757,8451,5509,7653,5337,7628,7977,7599,5337,8816,8670,5274,7843,5564,7864,5305,8334,5642,7823,7715,8795,8277,5401,5391,8494,5241,5401,8154,5337,7616,7616,7994,8104,8211,5712,7839,5509,5485,8539,5726,7582,5407,7967,7786,7986,5329,8170,7994,7667,8504,8653,7849,8772,5209,8594,8039,5564,8099,8227,5442,8022,7805,5237,8514,7774,7904,5301,5647,8073,7653,8222,8196,5676,5237,7491,8539,5381,7734,8903,5309,7999,8411,8845,5396,7786,8093,7893,5309,8345,7599,5413,7576,7834,8170,5407,7516,8772,5320,5606,8479,8359,7706,8022,8402,8272,8227,7930,8227,5476,7893,8277,7706,8249,5255,7994,7883,8302,7811,7834,5476,5241,8994,8201,8964,8716,7982,8170,8484,8964,7632,5442,8539,8249,5476,5647,5337,7616,7616,7616,7675,7730,5688,7990,7521,5509,7628,5337,5564,5401,8190,8467,7823,8115,8494,8104,7675,7628,7858,7790,8345,7864,7632,9467,8154,7795,8504,7746,7571,7571,8170,8222,8110,7715,5661,5661,5726,5407,5564,5329,8052,9054,8527,8062,5237,5730,5320,5647,7605,5688,7521,7914,5717,5381,5485,5651,5464,7914,7734,5671,7582,7500,7542,7994,8073,7994,8994,7990,7982,8205,7977,8676,5642,7667,8827,5352,7994,5274,8005,8805,7643,5237,5391,7706,8604,5386,5642,8467,5218,5218,8467,8539,8653,8721,8354,5529,7877,8509,8005,5578,5419,7957,7994,5213,7867,5448,7482,5476,7542,5391,5237,7930,7843,8293,8249,7849,5699,7940,8467,5301,8170,5237,8334,5573,7811,5647,5476,8354,5655,7542,8443,8312,8451,8467,5573,7628,7908,7533,7734,7734,7888,8851,8227,5501,5301,5241,5407,5325,8893,8777,8869,8571,8052,7962,5655,8391,8653,7500,7511,5237,7786,8039,8164,5534,5671,8451,5391,5629,7632,8613,5612,5274,7930,5642,5377,5358,8548,7599,8287,5519,8604,5237,5347,7528,5325,5301,7864,7872,7628,5407,7616,5305,7757,7681,7790,8316,7605,5352,8179,5401,8827,5237,5255,5688,5309,8104,5459,7994,8422,7723,7628,5476,5325,8239,5358,5329,7588,8201,5442,7632,8190,7994,5717,8093,5325,8647,8234,7653,8539,7588,5329,5617,8987,7746,7763,8329,7800,8073,8539,8451,5578,9367,8190,7994,7663,5708,5651,7957,8140,7548,7774,8159,5419,5651,8827,5453,5296,7667,7482,5407,7834,5320,7482,8005,8033,7982,8302,7786,8170,8519,8205,5661,8322,8307,5401,7516,5568,7663,5358,5301,8467,5325,8329,5218,8010,8249,7742,7877,7828,8329,5285,7872,7872,5464,7628,8255,8391,5396,5407,8827,8267,8222,5337,5726,5329,7648,5296,7864,8909,8438,5291,8397,8316,8613,5501,8005,8598,7872,8387,7500,5564,5291,8903,7478,8316,7487,7675,5237,8987,7994,8641,7706,7542,8267,7962,8093,7628,5367,5218,5325,8062,7487,7706,5666,5255,8267,7628,5237,8052,8073,8052,7663,7994,5296,7994,5325,7839,7521,8375,7763,5476,8873,5419,8005,5296,8322,5401,7990,8467,8245,5377,5629,5661,5358,8427,7962,5401,8010,5693,5381,7786,5661,8149,5407,8898,8062,7730,7528,8329,5642,8239,5448,5320,8329,8217,5274,7994,8766,5442,8349,8613,8647,7658,7706,8772,5485,5655,7696,8447,7616,5524,8827,7675,7706,8048,5407,7500,8005,5381,5708,7757,5476,5347,5309,8777,7622,7723,7867,5274,7516,7742,7795,7588,5329,5476,7500,5491,5301,5476,7986,5666,7706,8539,7972,7930,8909,5642,5305,7495,8647,8010,5448,8772,8422,7723,5337,7994,7511,5296,7558,5524,7877,8249,5301,5320,5573,7663,7516,5372,8170,8033,8277,8154,5480,7478,7872,5629,7706,7946,5329,7588,5717,8211,8267,8751,7628,5320,8164,5237,7558,5305,5381,7588,5407,8322,8077,8073,8261,5476,5274,7628,8170,9353,5401,7482,8322,7616,7610,8316,7994,8354,8093,5726,5717,8010,5651,7628,8005,5347,5325,8903,8427,5666,5666,5396,8527,7972,7994,7982,8427,8359,5301,5325,5651,7982,8359,7632,5325,8411,7828,5407,8987,5476,5666,7768,7675,7893,7834,8514,5432,7982,7982,5329,8293,5329,7487,7675,7542,5573,7982,5437,5480,5564,7500,7500,5329,7692,7628,8052,5496,8170,8039,8222,7834,8427,7542,8005,8282,5237,5320,5248,5688,7757,5325,5688,7558,5391,7542,8539,5578,7628,5564,8811,5237,8062,5296,8249,5717,5342,5367,7637,5391,5476,7538,8411,8783,7864,8994,7710,8354,5291,7752,7872,7898,5358,8354,5509,7667,7706,5320,7482,7706,5606,8467,5291,5296,8196,7706,8174,8387,7839,7715,8641,5568,5501,8560,7817,5372,5564,5224,5381,5564,7710,8307,8647,5274,5642,5655,5688,5337,7687,7849,7710,5337,7849,7653,8170,5301,5564,8297,7687,8131,7920,8073,5274,7605,7757,5432,5224,7786,8297,5726,5617,8964,8093,7786,7883,7786,7616,5301,7558,5726,8711,8170,7839,5296,5480,8211,5564,7924,8631,8577,7605,5476,5274,8144,5285,8170,8144,5255,5325,5201,5218,5476,8381,5305,7723,7867,7952,7817,7972,7800,5241,7972,7977,7648,7487,7706,5426,8577,5688,8670,5218,7977,8839,8751,5635,7864,8136,5320,8190,8527,7914,5655,5564,5274,5578,7478,5564,5301,7843,5358,5573,8467,7582,8613,7883,7834,8805,5329,8839,8631,7795,7972,8022,7893,8170,5651,9361,7706,5661,7667,7687,8249,8322,7487,5237,8099,5301,5459,7681,8272,8451,8811,7653,7628,5655,7893,7920,7994,5471,5476,8467,8170,7768,7542,5476,8447,8745,7994,5509,8039,5509,7582,7864,8282,8539,8484,8316,7924,7616,8039,7877,8057,7986,7990,5325,7849,8805,8349,7500,7746,7628,5381,5391,8190,5464,7834,8411,8110,7994,5564,8467,5712,7994,5564,8821,5661,5337,5688,7790,5367,7616,5391,5248,5629,7605,8548,5377,5564,8467,5296,7663,5676,8762,7982,5688,5459,5301,7795,8267,8170,7823,7957,8658,8164,7616,5274,7558,7843,8334,7487,5237,8461,5237,8467,5534,8057,5448,8015,8164,5325,5325,7478,5688,7653,8196,5476,8093,5396,5629,5476,5241,8716,7849,7982,5296,7538,8391,9471,7774,7616,8909,7628,5381,5377,8571,7800,7834,8987,5578,8340,7710,8539,5708,5329,8087,7972,5629,8033,8647,5726,7920,7628,5407,7632,7957,8196,7548,7482,5419,8952,5655,5285,5509,7972,5578,7538,7538,8039,7511,7790,5237,8827,7967,8190,7622,5377,8015,8211,7521,5305,5655,5476,5688,8594,7972,7924,5352,5285,5726,5432,8239,7533,7952,5237,5325,5622,5464,7893,8149,5291,8509,5296,7482,7877,5285,5261,7648,5248,8851,5248,8329,7487,7542,7558,8903,7687,5661,5261,5476,5485,5347,7877,7706,7839,7521,5617,7632,8845,7616,7637,8196,8115,8190,5401,7605,8115,5661,8211,5661,7706,8164,5413,8249,8052,8821,8154,5314,7972,8888,5661,7763,8010,5666,5524,7986,5651,5301,8104,5301,5688,8077,5329,8762,7675,7605,7610,5301,7610,8245,7491,5413,8987,7786,5676,7616,7542,5237,8179,5726,7768,8762,5237,7800,5291,5381,7605,7687,5661,5464,8816,8456,8293,7528,7548,5642,7696,5448,7763,5237,5426,7834,8795,5248,8519,8039,8190,5320,5274,8316,7610,5381,8533,8387,7982,7994,8721,5248,7994,7957,8548,7946,5726,5476,5476,8201,5396,7628,8473,5496,5476,5261,8033,5564,8234,5501,8952,5381,8136,5568,7883,8915,7548,7548,5305,7706,5578,5274,7972,8504,8196,5309,7667,8467,5712,7637,5708,5453,8959,8959,7977,5480,5274,5491,8222,8174,5642,8329,7558,8670,8772,8170,7946,5320,5519,5655,5476,8994,8073,8539,8631,5296,8234,7972,5325,8297,7533,7883,7790,8073,7935,5568,5274,8239,5726,7930,8234,5237,8451,5314,5622,5564,5476,8196,7692,8504,5419,7977,8879,5305,5381,7738,7632,8613,7605,7952,7482,7774,8577,8144,5329,9345,8903,8115,7734,8800,5453,5320,7977,8653,7558,5301,5676,5381,8057,7908,5476,7628,5655,7511,5688,8658,5325,5476,8201,9345,8839,8302,5325,5301,5401,5401,7692,5407,8936,7877,5358,8613,7491,8467,8093,7982,8227,5442,7888,8473,7779,8227,8456,5305,7893,8467,7632,8039,7834,8762,5237,7972,8170,7972,7533,7972,7795,7730,5320,5377,5377,5564,7667,5661,8411,5459,8653,7616,5519,7610,7849,8467,8222,8222,5564,7628,8641,7834,5296,7930,5573,5329,5237,5617,8267,8245,5651,8245,8359,8164,8772,8613,8716,7592,8631,8282,8068,7710,8940,5453,7616,5381,7542,8359,7692,5401,8222,5301,5578,5391,5329,5671,5476,5661,5274,7994,8473,5241,8073,5419,9367,8222,7521,7786,7734,8604,7675,5407,5573,5325,7883,8925,5285,8073,7521,7528,5432,7648,7628,7710,5708,7888,7952,8340,5342,8789,7877,5401,5358,5309,8903,5320,8772,5358,5347,7834,8613,7706,8307,5320,8631,5391,8126,5661,8073,8033,5320,7610,5237,5274,5347,8539,5491,5564,5320,5391,5407,7533,5476,5285,8387,5237,5314,5642,8527,8772,5301,8473,5564,7904,7849,7706,5325,5407,8888,5291,8533,7952,7893,8282,8282,5651,7628,7763,5391,7487,8427,8239,5291,5651,7681,5401,5642,7972,5285,5237,5261,7994,5237,7710,7628,5347,8322,8762,8196,5314,5325,8391,7616,8131,7528,5314,5309,8721,7516,5314,7632,5726,7605,7994,5291,8560,7628,5347,7914,8539,8721,5407,8721,8427,7952,5651,5391,8427,5347,5291,5325,5237,8539,5485,7628,8131,5309,5726,5285,8484,5309,8140,5291,7706,7972,5325,7786,7883,8397,8539,8987,5396,7768,5717,7710,5381,7952,7817,8062,5381,7643,5688,5661,7588,8447,5325,7500,7972,7687,5358,5426,7982,8987,7877,7972,5529,5573,5391,5476,5329,5291,8068,7834,5237,7834,7930,5693,5564,5688,5381,8653,8062,5325,7565,8329,7952,8062,8190,8272,7500,5381,5476,8504,8329,5237,5261,7706,5480,5325,8772,7914,7864,7924,8387,5642,8022,7616,8190,7528,5291,8093,8884,8052,5337,7571,5305,7565,7500,8783,5617,8548,5391,8068,7500,7893,5476,7588,8447,7849,7752,7582,7500,5655,7605,5241,7610,5209,5209,8427,7786,5391,5464,5459,8093,8539,7500,5301,5309,7533,5309,8811,5476,8170,5708,7687,5480,5476,7675,7999,5255,5358,7504,5726,7904,5509,8443,8653,7576,7839,7558,5218,7500,8329,5476,7478,7653,5391,8052,5285,5391,5606,5496,8131,7952,7768,5485,5381,5396,5671,7521,7994,7914,5442,8316,5655,8427,8391,7864,5296,7516,7779,7795,7599,5413,7681,7710,5666,7605,8582,7473,8267,7628,8909,5325,7972,8504,7616,7843,7994,8582,7864,5391,7823,7883,8073,8345,5337,7946,8255,5612,5309,8391,7628,8509,7558,5381,8227,7478,7478,5524,8022,7734,5296,7952,8851,5655,8851,8762,7715,5305,8839,8447,7990,5296,8222,7653,5342,8732,8190,7893,7710,7738,5476,8136,7482,7757,7920,5325,7877,8033,9032,5325,7706,8772,8863,7994,7893,8745,5407,5241,5476,7967,5426,5314,7779,5407,7605,8052,8099,7914,8473,8359,7858,7628,5459,7500,7858,5391,8190,5391,7643,7834,7864,5329,8539,5661,5564,7700,7632,5407,8635,7628,5209,8732,5237,5296,7482,8345,5274,7823,8033,8527,7605,8340,7834,7946,8190,8554,7495,7706,8711,7491,7994,5296,8909,7967,5261,5407,8073,5337,5464,8154,5717,7616,5651,7675,5651,5237,8322,8033,8293,5377,7588,7898,7710,7542,5391,5419,8467,5661,5529,7706,5642,5642,7599,7628,8473,8827,8745,5301,5305,8919,8987,5578,9476,7687,8115,5381,5401,7957,8504,7742,8312,5237,5314,5708,5301,5309,5578,5476,7982,5419,7800,7839,7653,5396,7877,7768,7542,7719,5237,5617,8217,5241,5386,5347,7864,5209,5291,5325,9021,5285,8073,5296,5622,7715,8982,7687,5391,8255,8772,8982,7734,8119,7706,5372,8772,7681,9481,7542,9487,5285,5485,5401,8417,7538,7663,8427,7920,5296,7893,5476,5476,5261,8261,5642,7542,5573,8658,7982,7576,8052,7491,7616,7605,7628,5407,5296,8762,5325,8190,8365,5666,7914,7994,7920,5301,7599,8411,5578,7834,5476,5442,7823,5442,7982,7877,8261,7482,5347,8033,7516,5578,7811,8365,7999,8903,7972,7834,8762,7834,5325,5693,5564,8504,5325,5381,8062,8272,8261,5261,7706,7823,8329,5476,8329,5325,5476,5419,5296,7742,8170,8387,8884,7500,7864,8099,5476,8022,8527,5617,7565,5291,5241,7786,7849,5255,8443,5391,7849,7687,7588,5655,8539,7967,7839,5726,7999,8711,5476,5476,8582,5666,5391,7795,5391,5381,5296,7558,7605,7914,5396,7883,8131,7768,7952,8329,5476,5241,5671,7521,5496,7643,7500,5708,5381,7478,7628,8255,7478,5524,5337,5296,8582,8851,8022,7663,8745,7605,7967,7495,8762,5314,7893,7990,7994,7628,8839,7914,7757,7877,7779,9032,5342,8772,5381,5476,8711,8033,5459,5464,5407,5661,8293,7491,7994,7864,7628,8190,7877,5209,8345,7834,8539,5651,7858,8795,5305,8903,7588,5661,5642,7898,5391,7542,5651,5309,7800,5578,5407,9476,8772,8982,8255,5347,7734,5291,7834,7542,8427,8033,7786,7849,8062,5367,5291,8062,7653,8062,5237,5381,8154,8239,7653,8687,7610,8307,5419,7706,5391,5301,8919,5509,5358,5320,5274,8527,8940,8940,7811,7834,5391,5573,5296,8863,7628,8068,9494,5407,7904,5730,7864,8387,7521,7811,8903,8800,5671,5726,7908,5237,8888,8052,7628,7605,7977,7930,5237,8073,7752,7811,8888,5564,8548,5501,5476,7972,8222,7637,7653,7920,8136,7667,8811,8136,5337,7757,8805,7487,5519,7811,7610,5352,7849,5305,8190,7790,5301,8447,5358,7628,7977,8641,7790,7920,5237,7930,8170,5305,5573,8772,7495,5291,7930,5655,7675,5564,7774,7817,8594,5476,8560,8249,8751,8154,8010,8772,8721,8115,7972,7696,7605,5391,8653,5209,7696,7952,7858,8411,8349,5491,8119,8582,7893,8964,5476,7710,7790,7849,5358,5329,8504,5296,5671,9032,5209,7977,7746,9353,7706,5671,8205,5407,7616,7893,5655,5617,8888,7643,5688,7558,8732,5325,7576,8277,8365,7487,8033,8987,5606,8456,8845,5274,8349,5407,5342,5564,8772,8827,8467,7972,7628,8015,8762,5309,8504,8598,8267,7706,5437,8277,8527,8277,7967,8119,7663,5622,5564,8131,8159,8115,8077,7994,8039,8033,8052,7972,8863,8473,8267,8833,8772,8365,7834,8322,5261,8863,7616,5309,7930,5285,8205,5358,8762,5320,7834,5573,8190,9501,8811,5407,7930,5655,5564,7542,7817,7774,8115,5274,8126,8015,8154,7972,8010,8772,8751,8411,8131,7605,8721,7696,5407,5358,5391,8964,7952,8582,5491,7790,7893,7849,5476,9353,7972,7977,5296,5209,8504,5329,8205,5209,5671,5309,5688,5655,8277,5617,5564,8762,5325,5320,8987,7487,8005,7487,8845,8456,8772,8277,5407,8863,5564,5622,8159,8115,7834,8365,8805,8833,5261,7616,8811,7710,8190,5617,7823,7504,5237,7491,7849,7558,5578,5367,5629,7967,7967,5301,8484,5564,7999,8811,7706,5261,7723,8110,5274,7957,5291,9509,9516,7839,8033,5671,8772,8170,8783,7628,8033,5329,7605,8354,5726,5381,7710,5573,7795,5529,7839,7681,7888,8577,8811,5612,5407,8170,7999,5642,7482,8170,8302,8467,5629,8287,8402,7977,5726,5381,5688,8811,5377,5726,7542,5464,8255,8255,5642,5372,5377,7972,8365,8365,8443,8994,8222,7692,7990,5471,5291,5564,7738,5407,5237,7972,7730,8898,8994,7706,8354,8322,5480,7658,5476,8184,5325,8851,7904,5459,7692,5480,7977,7839,8174,7500,7605,5524,5459,7972,5564,7533,8170,5261,8073,8447,8170,5301,8682,5476,5325,5491,5274,5285,5296,7605,5622,7473,5635,7952,7723,8005,8140,7710,5329,5413,7972,7977,7681,7774,5407,8005,8255,5358,5274,7888,5325,8170,5325,5320,5647,5573,9345,8077,7675,8073,7710,8658,8711,5320,7843,5218,8316,5442,8255,5612,7738,5407,7706,8494,7994,5314,5381,5325,8077,8170,8170,8099,5329,8873,8359,8170,7710,5509,7768,5377,8073,8443,7867,5325,8140,5237,7774,8548,5352,7972,5241,7828,7972,7628,7888,7696,8104,5218,7548,8539,8827,8033,8663,5407,8005,5629,8170,5564,8443,5459,7858,8110,8048,5377,5496,7478,5407,8479,8451,5237,7738,8322,8427,7828,8427,5325,8077,7800,7511,8427,5358,5248,5329,8170,8140,5629,5491,5612,5237,8005,5325,7972,8322,8539,7800,8548,5401,5413,5372,5501,5432,8422,7946,8919,8554,7511,8010,5573,5573,5471,8073,8140,8589,5291,8307,7516,5329,8255,8255,7734,7738,5320,8498,8772,5372,7738,7482,5358,7605,8170,5573,8255,5471,5442,5325,7478,8354,8184,7516,8577,7972,5301,7972,7877,5573,8676,7994,7610,7516,5274,9361,8857,5347,5661,8261,5661,8077,5407,5726,5381,8498,8857,8022,8005,5291,7516,7914,7817,7482,8272,5726,5377,7888,7888,8888,8154,5325,7542,5651,8381,5476,5629,5407,7482,7834,8745,7834,5726,5651,8149,7952,8104,5325,5377,8312,8919,7628,7935,8387,7952,7667,7994,8354,5666,8539,8190,8010,8504,8498,5329,5320,8068,7742,5329,7864,8136,7706,7790,8821,8504,8010,5622,8062,9525,5726,5464,8539,8093,5491,5301,5655,8010,5381,8608,5352,8359,7786,7628,7610,7605,8164,7864,7904,7576,7972,5642,7990,5476,8745,5391,5255,7696,7723,8170,5285,5347,5329,8509,7768,7576,5437,7972,5617,7779,7628,8670,7632,7811,8267,5578,5509,5564,8745,7576,8447,8093,5578,8427,7779,5209,5296,7599,8287,8039,7839,7811,5352,7542,8234,8184,7742,7500,7930,8099,7710,7779,5476,8110,5325,7500,5367,8732,8694,8658,5717,5337,8062,5320,5564,7706,5564,7710,8196,8427,7628,7752,8795,7786,5655,5367,8467,5329,8484,8783,5622,7675,7643,5717,7935,5285,8427,7734,8149,5501,8010,7516,5717,7719,8795,7811,5476,5325,8217,7696,7628,5274,8062,5666,8456,5301,5301,5329,8201,7935,8387,7952,8190,8082,8504,5622,7864,8099,8821,8062,7692,7990,5329,7576,7972,5476,7982,5655,5301,5642,8745,5391,5437,7972,5285,5642,7768,5329,5285,5578,5564,7779,8184,7930,5296,8234,7599,5291,8287,5209,8694,5564,5325,8267,5320,8456,8467,5367,8427,5329,7935,7516,7528,7786,5655,7839,7920,5442,8888,5377,7986,8987,7482,8282,8411,8411,8411,5476,8411,8762,7839,8411,8411,8033,8613,8789,5320,5655,8676,8287,7482,8745,8411,8411,5699,7990,8239,8245,7877,5296,7542,7628,5699,7706,8329,5476,8039,8349,7706,7675,7599,8721,9032,7616,5712,8267,5309,8560,8387,8010,7478,8245,7864,7811,5578,7877,5309,8467,7994,5401,7710,7935,8447,7681,7972,5476,7592,7977,8164,5491,7696,8539,8312,5688,5459,8115,8272,5320,8170,7888,5485,5296,8316,5337,5651,5413,5325,8716,5476,5381,8863,8577,8329,8422,8022,7795,8272,8334,5730,8447,7632,8427,8190,8329,8201,5337,7675,5688,7853,7605,5688,8539,8539,5647,5485,5377,8307,8479,5578,8316,8687,7478,5391,7558,7588,5372,8658,8527,5401,5612,5237,5301,7924,8345,8387,7990,8745,8387,7811,5491,5329,8745,7576,5309,8267,8287,8005,7994,5224,5476,8245,9531,7632,5358,7495,7628,8903,8805,5471,5342,8888,8732,7710,8498,7628,7757,5655,5337,8267,8732,8411,8039,7864,5367,5464,5688,8479,8245,7994,5213,5476,8131,5642,7478,7511,8329,7738,8539,5419,8467,7588,7738,7542,5629,5642,7710,8015,5708,5391,7599,7710,5485,5372,5578,5471,8539,7768,7710,8451,7516,9021,7648,7542,8190,7628,5476,7478,8239,8170,5391,5358,5642,8349,5661,5342,7811,8427,8909,7696,7622,8411,8411,7986,5471,8467,8154,7632,5301,5476,5712,8919,7706,5218,5248,7653,7628,8211,7972,7723,7533,8582,5564,8756,8888,7565,5426,8136,7742,7914,7898,8467,8879,7994,5661,5305,7478,5320,5337,7653,7658,5688,5358,8456,5224,8670,7930,8048,8539,7967,7491,7516,7999,7952,7605,5391,7487,7628,7592,5717,5237,7972,5476,8329,5730,7768,5285,5237,5651,8543,7843,7977,7908,5241,7786,8267,7834,7558,8307,7710,5329,5564,7478,5564,5524,8052,8381,7977,8845,7667,7616,8073,5237,7930,5301,8267,8201,7675,7706,7920,8745,8039,7533,8772,7967,5255,8277,8447,8033,5337,5529,7521,7883,8170,5218,8255,5476,8762,7834,5712,8893,7930,7864,7628,5676,7628,8267,5730,8005,7521,5407,5448,8577,8391,5237,8613,5573,5209,7967,5612,7478,7482,8267,8052,5218,5358,5305,8783,5564,8239,7482,5622,7982,8255,7834,8015,8010,5309,7500,8919,5358,7528,5358,8554,7994,5241,7790,5261,7516,8312,7883,8249,7491,8340,7908,7972,8249,7967,8582,5401,8631,5280,5337,7706,7834,7877,5476,8093,7811,5237,8527,8365,5301,5337,5693,5688,5314,8456,7576,5476,8560,7643,8484,7834,8397,7790,7883,7500,7853,5578,5501,7653,7898,8267,7658,5606,5280,5480,7571,7653,7786,7588,7734,7616,5437,8391,7632,7653,5442,8845,8316,7972,5274,5419,7558,7482,5647,7675,5712,7692,7940,5666,7734,5534,5712,7834,5237,8929,7994,5329,5347,7834,8272,8456,8427,8104,7675,8397,8287,8140,8653,5377,5274,8762,7982,7500,5426,8772,8433,5377,5301,8312,7487,5448,5651,7768,5442,8451,8267,5218,8608,7687,8370,5629,5419,8647,8489,7628,5301,7719,8149,5476,5419,7734,5285,5237,8772,8312,8789,5476,5301,8170,5480,5476,8929,8613,8329,8811,7834,8093,5651,5314,8929,7528,5285,5237,5209,7834,8411,7774,5391,5337,5391,5391,5301,7548,7491,7779,5301,5309,7706,5688,5476,7757,8479,7999,5693,8312,5688,7849,5564,5655,8022,7904,7920,5564,8716,7757,5261,5329,5568,8732,5209,8010,7628,5396,7653,7817,7706,7628,8184,8539,8647,5237,5476,7637,5391,5647,5237,8293,7542,5606,5407,7920,7482,7482,7904,7565,8033,5426,7853,8354,7834,5564,5325,8136,7528,9542,5291,5471,8131,7482,7542,8282,5325,9550,8783,8816,5501,8267,8110,8196,7920,5407,8062,7628,7667,8805,5726,8762,8527,5671,8915,8154,7658,8756,7994,7752,8613,5661,7888,5209,8447,8461,5391,8438,7786,7864,8093,7790,5476,7786,7904,7920,7628,5426,5712,8201,5337,7828,7977,5391,7864,5213,8964,8170,8427,7706,5617,8190,7999,8222,7849,5358,8119,5573,5391,8073,7605,7710,8925,5407,8316,7542,7521,5476,7511,7542,5391,5381,8354,5464,7924,8282,8073,5381,8131,5320,5241,7715,5726,7548,9556,8484,7715,7883,7482,5476,7487,8582,9012,7823,5407,5337,5426,7805,5285,7710,7696,5717,5224,5391,8711,7977,7482,7616,7576,5248,8987,8316,5305,5666,5325,5671,7500,8504,9021,7972,7723,5629,8467,5274,8467,7768,7920,8964,7605,5730,8391,7473,5642,5274,5274,5519,5514,8391,8149,5325,7920,8613,5651,5476,7482,8687,8345,9562,5337,7719,8898,7542,8375,7588,5476,5655,7653,7872,5391,8946,5688,7675,7588,5519,8447,5377,8451,8613,7994,7533,8307,5329,5712,7843,5509,7528,8267,7930,7478,7588,7628,7877,8805,8073,7653,7977,8062,8498,8527,7877,8272,7972,5342,8190,7478,7478,8234,7482,5524,5329,5426,7542,7914,7653,7616,8104,5573,5347,8170,5274,8964,8211,7734,5448,7982,7872,7558,5524,5301,8594,7914,7605,8539,5651,5708,8397,8170,8227,8467,5407,8461,5218,8272,8227,8099,7473,8093,5325,5329,5285,8322,5237,5676,8438,5329,5352,8345,7920,5274,8387,8863,5671,9051,8571,7738,8653,8762,8827,7805,5209,5241,8543,7491,8827,8658,8772,5693,7706,7542,5314,7706,7628,5309,8721,7790,8227,5606,5237,5401,8272,7786,8451,5352,5320,5329,8249,5329,5396,8473,8144,8277,8800,8519,8239,8716,5377,8365,5419,8827,7616,8062,8329,7779,8721,8514,8509,7616,8539,5401,8039,5274,8762,5647,7994,8827,5564,8110,5296,7864,8110,8033,5377,7687,8062,7924,8676,5367,5237,8946,5237,5464,7994,5464,7999,5496,7867,8239,8062,7548,5476,8711,5509,8255,5730,7853,8329,7811,7491,8670,5647,7605,5407,8022,8005,5261,8190,7888,5381,5655,7734,7548,7994,5519,7719,5712,5213,7558,5396,5285,8149,8287,7738,7898,7946,5401,5612,5237,7511,8267,7491,8417,5564,8164,5629,5612,8322,5717,8851,7805,8073,5347,7730,5358,8940,8438,5209,7478,7616,5464,7681,7511,8509,7962,8302,5448,7800,8052,5655,5655,7632,5476,8467,5629,8077,5237,7977,7877,7538,7883,7883,5476,5342,7920,8170,7738,8196,5329,5314,7742,8443,8641,5309,5501,8190,5401,5342,5708,5573,5305,7632,5358,7994,7511,8539,8255,5401,5476,5329,5708,8946,8322,8402,7706,8249,5629,7800,5218,7877,8052,5485,8473,5320,7957,5519,8827,7610,8365,8154,5485,5347,5367,7663,8756,5314,7994,8888,7786,7542,5426,5396,5325,7734,5296,8322,8312,7516,5612,5519,8589,7558,8005,7924,5329,5386,5381,7616,5342,8010,5296,7768,7924,5629,7521,5291,5285,9021,8239,5381,8149,8217,8772,8365,5325,5274,7548,8919,8387,7616,5218,5301,5485,7675,7734,8964,7994,5661,8359,8052,7605,7610,7893,5342,5329,5676,5296,7628,5401,7616,8255,7542,5314,5666,7616,8964,7811,7491,7888,8039,8903,8170,5501,8245,7930,5476,7663,8548,5314,8527,7605,7946,8863,5325,8077,7738,8154,8745,8888,5699,7834,8381,7500,5407,5407,8375,7834,7972,5651,5301,8772,8903,8857,8582,8987,5352,7986,7605,8851,5347,5329,8473,8222,8329,5274,7834,7610,7864,5329,7528,7487,5347,8073,5407,5642,7877,7521,5407,5237,8721,8777,8077,5666,7687,5661,7710,7632,8857,8375,5372,8077,5291,5629,5320,8816,5309,5688,5476,5655,5693,7999,8312,7757,5647,7542,8732,5261,7715,8010,7757,8514,8293,8068,7637,7528,5671,8201,7658,8170,5471,8783,7548,8136,7930,8461,8282,7542,5642,8196,7667,7478,8131,8756,7565,8154,7853,8816,7904,7628,7542,5241,7542,7786,8073,7864,8312,8201,7904,8354,8857,7715,7883,7977,7828,5337,8964,8073,8093,8851,7542,7511,7768,5391,8190,5617,5358,8447,7920,7888,7478,8898,8149,7696,7994,8316,5337,7558,7977,7491,5386,5367,8903,8316,5329,7757,7482,8509,7687,7605,5274,8805,9003,8010,5396,7768,8302,7977,5642,5717,8391,5241,7719,5285,5476,7877,5248,5629,8345,7482,8613,7605,8149,7734,5261,8277,8594,5401,8946,7675,5612,5301,5241,5573,8039,5524,8964,5519,8451,5329,8527,7528,7511,8509,5407,7872,5377,7843,7542,8170,9051,8322,7888,5606,8451,7790,8543,8653,8407,7473,8653,8402,5237,7786,7632,7805,8863,5309,8827,5274,5676,8154,8057,8772,5693,5407,8170,8249,5209,7867,5291,8509,8322,8022,7864,5496,8255,7548,8676,5448,5464,7811,7663,8762,5712,7957,8005,7893,5712,5305,5655,8527,5717,8077,5426,5676,8077,8136,7511,8052,7898,5476,7977,8888,5237,8473,5629,7800,7632,7592,5218,5485,8539,8443,8190,7491,8772,5291,8239,7734,5329,8217,5347,7734,8498,8322,8919,8154,5666,7605,5314,5401,5476,5496,8473,8267,5367,7521,8227,8411,8131,5708,5459,5726,8239,7555,8227,8514,5661,8969,5261,5237,8267,7834,5358,7653,5358,7504,8509,8756,5413,8062,8489,8589,5274,5274,5407,8438,9568,0,8322,7687,5386,5358,5352,5367,5329,8411,5358,8489,7849,8721,5717,5717,8048,5291,8062,7952,8438,5476,8653,7843,5329,8805,7653,8170,8354,8354,7800,5726,7516,8227,8635,5407,7834,8438,7834,7864,7643,7628,7752,7521,7491,7542,5726,7834,7752,8282,8345,7994,7482,8144,5699,5347,8762,8239,7628,5606,8077,7738,8509,7849,5699,8519,5347,8307,5629,8005,5629,8721,8647,8795,5237,5296,7877,7920,8903,7811,7738,8179,5342,8514,8969,5261,7834,5296,5358,7752,8519,8489,7994,5274,8062,5407,8438,8756,8514,7687,5386,7952,7752,7738,8438,5329,5642,8048,5717,7849,8653,8484,8354,7843,8893,7628,7834,8227,5237,7752,7643,7834,7864,7877,5347,5726,7834,8144,5699,5717,5606,7738,5699,8795,5347,5564,5564,5333,8217,7528,7542,7478,5476,5480,7605,7924,8093,7864,7628,8282,9577,8946,8267,8821,7972,7920,5485,7565,7924,7482,5655,5381,7491,7904,5726,8539,8443,7571,7828,7696,9051,5480,5717,8312,5224,5564,5325,5329,7610,8033,5426,7888,7957,5305,5419,5320,7888,5274,7696,5459,7628,5671,5261,5337,8255,5426,8387,7558,5358,5367,5261,8119,7972,5480,8307,8467,5655,5573,5274,7790,8077,8267,5274,8456,8456,7967,5476,5407,8099,7482,8170,7805,8033,7920,8093,8272,5274,5329,8594,5274,8211,7605,7924,8705,7786,5248,5301,5301,7628,5377,7628,7610,7994,7994,8077,8217,5342,7977,5464,5381,5342,7482,5671,7834,5296,5717,8267,7632,7994,7663,5237,7994,5325,8015,8316,5708,5419,7482,5301,7648,7516,8422,8647,8222,5342,5342,7628,5274,5442,8447,8010,5325,8010,5237,7482,7864,5296,7610,5381,5301,5301,5301,8863,8756,7972,9032,7667,7823,5476,5699,7834,7542,8387,7504,8387,5325,7786,7811,7972,8131,7667,7839,5218,8170,5573,7982,8925,7632,7628,5442,7757,5342,7653,8154,8617,8721,5573,8925,5218,5325,5237,5442,7511,5301,7823,5325,8925,5261,7738,7628,7628,5529,8136,8762,5367,5391,7752,5501,8334,8267,5301,5358,8608,8093,5666,8345,8222,8249,7828,7843,5426,7478,7999,7500,5325,7715,5274,7675,7687,8805,5655,8456,5712,8093,7706,7482,8154,8302,7893,5534,8427,7482,8447,8548,5651,7516,5476,7582,7616,8387,8249,8617,8093,5367,8062,7482,7632,8349,8267,7511,8249,8888,7478,7994,8154,7482,5237,5476,7663,7883,8919,5274,5386,5329,7977,5730,5325,5337,5337,7904,7920,7994,7962,8073,5325,8349,8249,5448,7538,5301,8154,7663,5391,5491,7610,8093,7663,8519,5301,7800,5485,5419,7715,8015,7877,8745,5485,8052,8402,5485,5291,8745,5485,5485,7828,5485,7628,7893,5642,8898,5651,7746,9591,8174,7491,5606,5676,7491,5717,5693,5496,5407,8504,8539,8329,7478,8504,8196,5309,5529,8577,7904,7482,7730,8136,5305,8443,8245,8282,5476,5642,8272,5480,7977,8062,8174,7924,5209,5329,7977,7628,5325,5661,5688,8345,8727,7817,7904,8245,8255,8539,5509,8811,8484,7681,8255,8190,8571,7538,7738,8015,5224,7752,8170,7986,5661,8110,7898,5476,5688,8267,7849,5509,7715,8170,5407,8411,8539,5407,5274,8322,8131,7738,7930,8345,7533,5717,5564,8144,5237,7957,7839,8131,7977,5325,8312,5419,7990,8245,8154,5274,7542,8762,8631,5407,5261,7994,8504,5564,5712,5676,5717,7610,5309,7653,8227,5301,8110,8329,5617,7994,7834,5519,8272,8131,8267,7588,7605,7994,8800,8762,8222,8762,7994,8504,5367,7653,7994,8267,8272,8484,8484,5274,5661,5274,5325,7482,7864,8267,8670,7478,5352,7946,7616,8267,7930,7482,7482,7521,7982,7491,5693,8745,7533,7521,8598,7653,7500,7511,7500,5237,8022,8005,7706,8560,7628,5509,8282,5471,7828,8751,7533,8312,8093,7628,5485,5666,7849,8255,7864,7994,7994,5381,5314,8456,5476,7982,8370,8217,7858,5255,7706,5564,7977,7853,8827,8005,7977,7757,5606,7516,7616,7667,8994,7653,5485,8422,8048,8751,8277,8422,5381,7643,7628,5693,5712,7834,7653,5407,7990,5491,7592,8196,5476,8159,5377,7864,7864,7834,7643,8795,5218,5622,7834,5274,8676,5476,8467,8940,7982,7828,5419,7692,5666,8239,8647,5391,7800,7706,7648,8052,7478,7786,5309,7542,5296,8427,7511,5629,5301,5274,8751,5329,5347,8077,7768,7491,5693,8745,7653,7521,8598,7500,7500,5509,7786,5471,7706,8282,8022,8560,7628,5329,8093,8312,5485,5381,7977,8015,7653,7616,7616,8370,5476,8751,8919,8422,7653,8329,7616,7990,5377,8239,7864,5622,7834,7864,8077,7800,7828,8940,8052,5325,8427,8613,8751,7768,8527,8473,5372,8903,5367,8427,8473,7730,7811,7658,8577,7795,8190,7628,8170,5329,7487,8087,7924,5642,5448,8509,5514,8010,7511,5237,8239,8647,8647,5301,8473,8110,5301,8239,7723,7719,8527,5342,8527,7610,5329,8473,7730,8170,7616,5448,7521,5237,8647,8473,8473,7893,8010,8073,7893,5391,7982,7972,5325,5693,8261,5480,8631,7962,7521,8068,8504,7628,7565,7710,7482,8010,9596,9609,7482,7982,5476,5476,5358,7839,9621,7511,7839,7710,7487,8222,5391,8057,8370,5255,5606,5285,5655,5224,7839,8316,7839,7521,7924,8539,7696,7834,5622,5352,8179,8073,8028,7864,8201,7667,8307,7588,7628,5491,5642,7643,5606,5391,5407,8863,5224,5274,7877,7877,8772,7893,7588,7994,8721,7864,8699,7643,7982,5464,8964,5296,5407,5730,7849,5426,7687,7994,5564,7823,7828,5255,8073,5396,5237,8005,7511,5448,5358,7491,8267,5305,7511,7800,7715,7628,5519,5309,8845,8005,5622,5381,7710,7994,5476,5325,7648,7558,5218,8272,5296,7521,8427,5501,8543,8249,7834,7715,7877,7521,8433,8857,5358,5391,7972,5325,7706,5426,8068,5237,8504,7628,7710,8010,7482,5407,5391,8222,7487,5459,5476,7696,7648,7521,5325,5509,5285,8119,5224,8073,5666,7864,7628,8028,9633,8641,7643,5274,8721,5496,8005,5459,5448,7877,8077,5305,5320,7511,5519,5309,7800,8589,5622,7700,8087,8005,8039,7521,8484,7576,8447,5358,8073,9641,5301,7893,8033,8345,7904,5564,5274,7752,7528,8402,5358,5426,7538,7628,8527,7653,8539,5480,5480,7710,8329,7605,5661,7706,7883,8915,7730,7482,7752,7972,5325,7893,5726,8073,8222,7908,5480,5476,5726,5241,5726,7592,7768,7999,8467,5352,7576,8170,7605,8293,8170,7920,8205,7977,8093,5655,7658,5564,7675,5391,5358,5480,7920,7487,7940,7734,7858,8272,7972,8164,7478,7582,8149,7768,7914,5274,7696,8370,8073,8721,7482,7632,7538,7516,5661,5325,8170,8022,8196,8211,7779,7653,5647,8190,8422,7667,7628,7558,7528,7663,5329,8863,7576,5617,5325,8653,8272,8277,7986,7990,7706,7706,7628,7893,5514,7834,5381,5642,7478,5476,5329,7858,7542,7893,5464,5407,8154,7752,5377,8519,5367,8548,8005,8110,8087,7795,5480,8005,5448,7542,7558,7972,7511,8140,8909,5237,8340,5442,7834,8467,7967,5514,5261,5301,7972,5329,5305,5237,7632,8015,5305,5708,8179,8647,8827,5726,5358,5274,7628,7500,5396,7849,7588,7675,7516,7877,5471,8789,5480,8833,8772,5285,8964,7834,5301,8427,5485,5476,7828,7516,8888,7967,7834,7710,5329,5274,7521,5325,8617,8170,5237,7811,5301,8473,7538,7628,5480,8329,7710,5726,7828,8073,5329,8205,5391,7487,5564,8170,7967,7605,5480,8293,7977,5476,7658,7675,7538,7790,5285,5396,7632,8370,7858,7839,5301,7558,7834,5325,5285,7667,7706,7706,7990,8863,7653,5358,8179,7858,7972,5237,5514,7478,5708,7511,7542,5261,8647,7632,8827,7877,7967,5325,5285,7521,7786,5464,5301,7994,7849,8811,7920,8608,7853,5661,7667,5358,7710,5699,8539,7692,8370,8255,8131,7473,5717,8427,8845,7858,5358,7990,9012,7930,5342,7957,8073,7675,7616,7849,7839,8739,8888,5305,8608,7957,5386,8762,8205,5342,5377,8888,8739,8479,5524,5564,5688,8119,8255,5329,5372,8473,5301,8653,5377,7565,7533,8721,7790,7883,5320,7576,8048,7681,5352,5209,8048,8297,8811,8174,7920,7790,5564,7706,8164,5726,7521,5519,7795,5325,5352,9361,8670,8438,8391,5301,5391,8548,5377,5352,8022,7622,7768,5712,8598,5407,7888,7982,7986,8484,7706,5401,5655,8888,8245,5305,8589,7800,7800,9026,7500,5712,5305,7605,8789,7811,7908,8539,8888,8577,8261,8307,5209,5386,8062,5237,8307,7653,7610,5342,8484,8227,5459,7628,5301,5676,8190,7542,8582,8548,8711,5655,8987,7628,7952,5305,5325,7706,7999,8005,7643,7904,8312,5712,7500,7834,7675,7779,7628,8422,7706,7599,7779,7994,8277,7710,8647,5606,5305,5325,7500,5391,7834,8427,7628,8479,5241,5301,8277,7817,5480,7757,5342,8762,7864,5358,8302,8560,8068,5329,5476,5381,8010,7576,7628,5329,7752,7982,5426,5237,7565,5501,8136,5337,5712,8762,7849,5367,5726,7653,7920,7872,5480,7500,5688,5255,7622,5358,5325,7994,8170,5568,8903,8033,7990,5448,8184,7723,7658,8222,5564,7687,8115,7786,5476,7757,7742,5305,5381,5320,7957,7710,7696,8345,7994,7681,7605,7482,8577,7632,8316,8255,7706,7605,7994,5285,8598,7952,5274,5717,8795,7491,7500,8316,8711,7888,7667,5274,7800,7675,5296,8427,5407,7628,7999,5578,8234,8845,5514,7478,5688,5642,5564,5509,5337,5301,8302,5301,8582,5291,8190,7746,8154,5329,5218,8447,5209,7706,8745,7521,5629,8104,5325,7757,7867,7516,7576,8851,8277,7893,8447,5476,8653,5329,8484,8227,5485,8170,8093,7967,5301,8676,7663,5285,8184,8154,8126,5391,5693,7914,5325,5391,5730,7478,5480,7692,8322,5325,8010,8582,8903,7538,8302,7883,7994,7628,8658,8110,5459,5464,5401,7834,5688,5688,5407,5501,7864,8387,5564,8159,5407,5367,5622,7982,5471,7533,7834,7752,5407,8052,5305,7687,5726,7511,7632,5391,5391,7482,8533,5655,7738,5642,7715,8164,7542,7706,7752,8893,5352,5401,5708,5333,5296,8073,5325,7681,8925,5407,5514,7800,5237,5688,8473,5325,5325,7605,7768,7605,5622,8154,8015,8756,5529,5432,5291,5726,7521,8073,5285,7834,7588,5352,9021,5261,5261,8010,5291,7516,8329,7622,5237,0,8946,7675,8721,5730,7908,8062,5514,8427,5367,8211,8119,5301,8227,7935,7864,7511,7616,5325,7500,7834,8302,5301,7628,5301,7763,5655,7521,7864,5329,8721,5301,8946,7628,7834,8863,5337,8554,5329,7565,8745,7516,8073,5255,8184,5329,7757,5407,5564,5329,8222,5730,5699,7658,7952,5381,8217,7994,7696,8099,5509,7828,8461,5325,5285,5274,8821,7521,8329,8845,5301,5401,5407,5301,5391,7681,8234,8302,5509,5655,5325,5367,8745,8093,5386,7967,7893,8653,8227,7786,8447,8184,7757,5485,8190,5391,5209,5501,5459,8184,7588,7864,7839,7511,8159,7864,5688,5564,5464,7994,8940,8411,5514,5708,7706,7738,7482,5642,7994,8267,5333,8473,5529,5432,7800,8438,5218,5622,7877,5291,5261,7516,9021,5329,8795,5301,8033,7482,5453,5476,5564,5305,8484,8201,7834,5564,7757,5325,5325,5261,8811,5391,8527,8391,8222,8467,7972,5693,8196,5564,5501,7752,5407,8539,7628,8998,5285,5291,5291,7920,7811,5655,8222,7834,8387,8154,8533,5666,7990,7742,5325,7977,8903,8093,5419,5564,5480,7628,5301,8411,7972,8509,8467,7628,5726,7675,7972,7883,8170,5337,7786,8936,7628,7924,5666,8387,8964,7628,5301,7616,8863,7478,7696,7795,7663,7610,7834,8073,8617,5325,8577,7605,7834,5391,8062,5301,8613,8711,5717,8504,5285,5519,7576,7972,7632,5274,7972,7706,7972,7977,5325,7628,7811,5476,8201,7478,5676,7628,8073,8329,5651,5358,5237,7667,8170,5647,5485,5377,7864,7864,8582,7982,7478,5651,5329,7628,7521,7478,5255,5320,5564,8345,7999,5352,5325,5524,7930,7757,5329,5699,5407,8170,5647,8539,8467,7706,5301,7491,8863,8721,8863,8093,8119,7706,5485,5476,7972,5485,5209,8277,7582,7706,8104,8845,8170,5726,8154,5655,5325,5320,7478,7710,7924,8110,5476,5688,5377,7982,5377,7864,5381,7790,5564,8104,5647,7834,7849,8467,7858,8267,7706,7982,7616,5471,7715,8170,8772,8777,7565,5301,7616,8447,8190,5534,5391,7849,5573,5629,5367,8893,7511,5325,7786,5407,8196,7653,5209,5519,8447,5642,7834,5325,5301,5606,5568,5377,5224,8447,5647,7538,5285,5524,5606,8033,5301,5622,5578,8845,5642,5476,7742,7710,7972,8239,8164,7957,5358,8617,5314,7920,7478,5291,7482,7768,7487,5285,7924,5396,5358,7972,7588,5464,8010,5285,8239,7834,8316,8484,5274,5274,5647,8349,9021,7628,7616,5329,8641,7605,5529,5476,7920,5320,7632,7706,5476,5325,5578,7628,8427,8811,7924,5377,8381,5647,5651,8839,8249,8539,8354,7628,5666,8222,5329,7898,7610,5325,8354,7616,8721,8873,5301,8375,5453,8484,5325,8467,8391,9471,7742,8387,5237,8222,5655,7786,7582,5329,8387,7548,7924,7500,7972,5726,8467,5401,5480,7487,7972,7696,7795,5519,8479,7977,5717,8375,8062,7786,8073,5301,5676,7982,7864,7628,5274,5377,7478,5699,7622,8345,5325,7930,5352,5688,8104,8845,5476,5464,7982,5325,7864,7786,7734,5209,5712,7715,8159,5642,5342,8789,7719,5296,5407,7849,7628,7616,5578,8239,8239,5285,8484,7628,5329,8473,8427,7616,8154,5301,8721,5529,5329,8484,7723,5407,5274,8451,7628,5407,7834,8451,5329,5337,8140,5325,8473,8533,5642,7605,7667,7605,5407,5651,5651,7478,7511,8033,7478,7952,8447,7706,5329,8484,7667,5285,5301,7592,7834,7977,5651,5301,5617,7883,7516,5485,5325,7500,7588,8140,8349,8349,5717,7482,5564,7746,8387,7628,8174,5726,5642,8711,7681,8783,7628,5726,7746,8170,8527,5564,5726,7746,7538,5305,5305,5296,7610,7967,8402,5501,5464,5464,8255,7723,8307,7853,7946,7867,5301,7946,5320,5301,8184,7710,9372,9372,5476,7542,7883,5237,7622,5305,5305,7542,5491,5573,5337,7828,5476,5367,5476,5726,7667,7834,5485,7628,5301,8903,8762,8179,7482,5726,7834,8772,8345,5655,5622,8179,5476,5712,7883,7834,8762,5485,7972,5501,5564,5564,8438,8438,8467,8140,5726,9646,8762,5325,7675,8211,5708,5432,5480,5358,8467,8387,5480,5693,5651,8716,7675,5209,7786,5358,7582,5501,8272,8467,7920,8227,5524,7706,8136,5629,7786,5320,5320,5501,7893,7752,7904,5564,8604,8316,5726,8119,5391,5337,5391,8805,7478,8184,5485,7643,8170,7834,5647,5377,5237,5274,7834,5407,5358,7610,5688,7653,7632,7478,5730,5237,5717,7687,5274,5534,7687,8789,7700,7706,8533,5325,5209,5325,5325,7706,5325,7710,5325,8033,7849,8387,8800,5661,8174,5358,5391,5209,7710,8184,8170,7681,8093,8093,5573,7768,5661,8800,8077,7653,8316,8287,8653,7628,7940,5476,8447,8451,7967,5726,8805,5274,7742,7864,8494,5476,8287,7967,7828,8267,9654,8387,7710,8033,7734,8277,8170,8093,8174,7681,5209,8800,7628,8287,5726,8494,7610,7710,5241,8334,7834,7610,5329,7817,8795,7516,7940,7738,7610,7817,8795,7952,5688,7768,7952,8354,8721,7849,8604,5661,8073,8115,7867,5480,7632,7883,7675,8893,5407,8190,8411,7962,7521,5274,5255,5655,8119,7982,5391,7605,8354,8104,5329,7478,7582,7675,5325,5381,5464,5426,5712,8010,7805,5622,7858,8527,7605,8062,7867,5730,5688,7622,7542,0,8005,9657,7957,8267,7849,5629,8354,5442,5524,7893,8893,5241,8131,8077,7542,7675,8498,7817,8334,8762,5301,5358,5314,5573,8635,7710,7605,8322,7610,5347,5407,8201,5301,5296,5358,8539,8827,7834,5352,9367,5622,5213,8647,8307,7628,7763,5622,8115,5237,8039,5476,7982,7877,5568,8140,5255,5442,5325,7952,7588,7957,7687,5329,8184,5612,8498,9662,5612,5333,8676,9670,7675,8073,5651,7487,8903,8239,7883,7828,5564,5407,8438,8005,5491,8255,8919,5464,7962,8149,8365,7675,8762,5391,8365,9676,5213,9680,5213,8811,8170,8762,5329,7834,8073,8903,8159,7990,7610,7542,5401,8073,7576,8277,9686,5347,8005,7628,8354,8052,5655,7658,5377,5651,5442,5325,9690,9680,8909,5622,7576,8010,5448,7576,9695,5314,8909,5329,5329,5407,5480,7616,7628,8277,7610,9701,5401,5347,7542,8354,7548,5726,5401,8411,8676,8857,5301,7487,7632,7616,8354,5314,7500,5651,8539,8010,7914,5578,7914,8293,5661,5666,5274,5209,8447,8879,9710,7542,9715,5358,8282,7478,8302,8756,8110,5501,5358,8402,9721,5301,7710,9726,9736,7904,5301,8811,8170,8312,5305,8140,8184,7576,5301,7588,7681,5301,7706,7588,8062,8316,5209,8604,8354,7576,7516,9345,8126,9740,5501,5325,9745,9751,7779,5274,5564,7779,8179,8845,5301,8354,5329,8170,7706,8402,8126,8015,7516,8548,5485,8039,9759,8589,8589,5629,8411,8110,7746,5730,7500,8548,7982,5407,8365,7839,5301,5661,5564,8447,7930,7786,5519,5524,5629,5688,9751,8340,9345,5629,5651,8589,5501,5372,8756,5419,5305,8589,8589,7495,5237,7779,5419,7908,8073,7811,985,8548,5274,7495,8641,8077,5301,7571,8539,8077,7681,5347,5651,5285,8484,5237,7817,5241,8484,5337,5325,5496,7576,8329,8354,8062,7628,7849,5509,8504,7752,7752,5688,8136,5209,7853,8816,8998,5381,5320,8104,7920,7482,8302,8062,7972,5325,5501,8267,8504,7883,5309,7588,7565,5612,8402,8484,7687,9766,5309,5564,7972,7839,5209,5442,8062,7687,5666,5237,5564,5661,7914,7930,7605,5726,8093,7605,8670,8811,7924,5564,5480,5655,5491,5314,5391,7548,5274,8443,7592,8282,8170,5305,5320,8397,9772,5485,8504,7946,5661,5381,7605,5442,7795,8126,5291,8582,7982,7839,8845,8845,8272,5661,7692,5285,7768,5671,7632,8190,5224,5274,5564,9462,8316,8164,7681,7482,5666,5661,7768,7500,8099,5459,8316,7487,5419,7521,5296,5291,7972,5407,5676,7710,7746,5655,5329,7558,5688,5320,7898,8316,7675,5509,8196,8845,5519,5377,5519,5661,8062,5237,5564,8805,5342,8217,8653,5564,5485,7982,7972,7834,7592,8527,5325,9778,9783,8548,7516,7888,5301,5329,7779,5442,7768,8670,7706,7706,9032,7706,5509,7542,5274,8087,7994,7706,8272,5509,8461,7599,5413,8863,7774,8039,8402,8099,7511,7706,8427,7930,8287,8093,7746,7706,7867,8772,8548,8234,7967,5476,5209,5426,7779,5309,7893,7872,8438,7628,8548,8010,5329,7500,9789,8015,9796,7500,7521,5407,7990,5274,8821,7746,7706,8676,7548,8539,8438,7622,8467,5661,8222,7487,5688,8411,7811,8845,8827,7746,7994,5564,7994,7628,8131,7622,5661,5401,8548,8411,8267,7482,5377,7795,7972,8267,7558,7877,5491,5367,8467,8548,7500,9804,9810,8845,9367,7616,5309,5476,8863,8447,7898,7786,7533,7576,5407,8451,7768,8617,8267,5367,8952,5237,8164,8272,5564,8267,5655,5524,8613,7982,5437,8909,5274,7588,5655,8548,8272,9818,7774,5358,8527,8140,5301,5612,7482,5237,8548,5666,5622,7542,7800,7972,5329,5305,8647,5401,5651,8190,8548,5325,5261,5342,8010,8952,5413,5476,5514,8711,7576,8322,7643,9824,5237,9829,5519,8297,8190,5296,8255,8833,7571,7972,5261,8589,7516,7628,8010,8239,8287,9021,5407,7648,7877,7872,5519,5296,5396,8857,5237,8322,9835,8245,8119,5296,5237,7719,5407,5419,7811,5372,8827,5381,5285,8073,7877,5476,5386,5342,5476,8635,7500,5325,8888,7542,5347,7734,8329,8857,7706,5352,5301,5305,5666,5661,8857,8582,5337,7500,5666,5274,7877,5568,5329,7877,7616,7774,7521,5274,8397,8857,7632,5237,8479,5347,5666,5401,7487,8484,7628,8062,7576,5274,7849,8354,5325,5509,8582,5325,8504,7994,8267,8062,8104,7920,8302,8461,8136,8504,8548,8099,5501,7972,7752,7565,7605,7482,8816,5320,5274,8811,5661,5564,5401,8443,7914,5237,7972,7548,7576,8282,5564,5314,8670,5476,5485,5491,7898,8164,5381,7692,7648,5459,7946,5296,9462,8190,5419,7632,5291,5285,8316,8845,7675,5676,5519,5237,5342,8272,5325,5377,5325,7500,8093,9839,7500,7706,7893,8287,8015,8234,8119,7994,7746,8087,5413,5442,8272,7511,7768,8548,8427,5509,5329,8863,5209,7990,7521,5407,7746,5347,5377,7622,7706,8267,5296,7487,7888,8676,8411,5274,8131,8863,7811,8539,5329,8411,8438,8467,5309,5564,8613,5655,8527,8952,5524,7877,5301,5476,5407,8888,8647,7800,5666,7616,5612,8711,5514,5661,8239,5261,8833,5419,7542,5372,7811,5285,8857,8998,5661,8461,8998,5699,8998,9844,8073,5255,5730,9853,8461,7616,7616,8745,5367,8721,9021,8772,8227,7706,5534,7616,5666,8772,5329,8721,7599,7599,8461,7599,7653,9858,7632,5564,5651,8048,7786,7605,8170,7790,7786,8438,8461,7904,7795,5377,5676,5564,7516,7834,7999,8397,7795,5314,7628,7972,8345,8048,7823,5320,7487,7920,7538,7511,7904,8048,5301,8783,7994,5358,5325,8833,8316,7511,5325,5676,5651,7999,7632,7920,5325,5325,8375,7924,7763,8322,7738,5712,7924,5337,5337,5501,7904,5524,7924,7786,8322,8205,5524,8093,5476,7605,8539,5519,7542,5476,5274,8164,8658,8658,7542,7811,8397,5274,5476,9863,8322,5274,7628,8845,5381,5629,8467,5237,8010,5261,5501,5261,5401,5666,8845,8417,8322,7877,7628,7817,5476,5248,5534,5501,8062,7710,7710,8402,5564,5367,9054,5476,7986,5476,7920,8093,7511,7972,5726,5237,5661,7521,5237,5237,7706,8255,5296,5296,7675,7719,8062,5419,8539,8402,7893,8272,8302,7710,7605,5407,8190,5391,7858,8548,5509,5296,5730,7849,7849,7653,5708,8647,5476,5401,5726,9873,7516,9054,8255,5708,8010,5476,5296,8190,8479,5642,8149,9877,8898,7790,5578,7706,8131,8131,8131,5459,5459,7696,9045,8821,7696,8716,5622,5666,8805,5209,8845,8783,8052,8267,8994,7920,7710,7487,5573,7977,8170,7849,5573,8149,8099,5325,5629,7742,7957,8417,8131,8334,8115,7957,5325,8149,8154,5337,5305,8359,7696,5578,8805,7491,8245,8022,8196,8267,7710,7883,7883,8062,8845,7972,9881,8077,7883,5655,7935,8093,5241,5337,8631,8239,7610,7972,8381,7681,7696,8387,5459,7795,9886,5401,8052,8119,8577,8751,5485,8170,5358,8539,8039,7752,7500,5255,8827,9891,9900,8805,7628,8827,8005,9904,8005,8827,5401,5534,8005,5401,5401,8827,5708,8119,8022,8805,8005,8077,7972,7883,8381,7867,5325,8805,8805,7610,7628,7628,7999,7487,7588,5476,7588,7487,7999,7999,8110,5476,5333,5325,5688,8800,8340,5717,8539,7811,5464,5476,8504,7675,8613,7576,8467,8762,8461,8164,8811,5496,8494,8227,7786,7972,7653,5564,7893,5501,8456,8334,5407,7565,9032,5337,8136,8560,8800,8297,7817,7628,7752,5642,5309,7920,7542,5237,5237,7893,8800,5485,7658,7914,7548,8015,5661,7914,7994,7576,5459,7883,7893,7904,8073,5726,5606,7930,7795,7658,5209,7692,7972,8447,5255,5209,5564,8334,5655,5274,7571,8456,7977,8119,7972,8222,7715,5726,7982,7990,5476,7482,7500,7924,7610,7582,9012,5329,5485,8293,7834,8334,7473,5476,8687,5671,5717,7582,7972,7675,7504,7504,7696,7864,5426,7858,8766,5209,7952,773,9915,2533,3110,9919,3464,9924,2802,9929,9934,9939,9945,3447,2826,2847,3306,9950,9955,2550,2661,3190,9961,2685,2300,3133,3157,2871,3215,9966,3179,3005,9971,3235,2606,2953,2977,40,609,2526,9977,1783,9981,3457,9985,2795,9989,9993,9997,10002,1733,2819,324,3297,10006,10010,2547,2654,3120,10015,2678,2700,3126,3148,2864,3208,10019,347,2998,10023,3228,2599,2950,2968,24,603,10028,429,10033,852,10037,803,972,800,10041,9312,10045,10050,829,833,985,806,955,959,10055,839,819,816,10060,826,988,1044,1464,926,809,10064,855,836,1659,10068,915,845,842,848,776,10073,4081,3560,10077,3573,10082,10087,10091,10096,10101,10107,4021,10112,3609,4035,10116,10121,3809,4003,10127,10131,3849,3912,10136,10140,3707,10145,10149,3959,3661,10154,10160,3747,3787,10164,64,606,2523,10169,3103,10173,3454,10177,2792,10181,10185,10189,10194,2738,2816,2840,3293,10198,10202,2544,2651,3183,10207,2675,2696,3123,3144,2861,3205,10211,670,2995,10215,3225,2596,2947,2964,52,1084,10220,2537,9220,3114,10225,3471,10229,2809,10233,10237,10241,10246,10250,2759,2833,2854,1321,10255,10259,1426,2668,3194,10264,1325,327,3137,3166,2878,3222,10268,1318,1311,10272,3242,2613,1400,2986,32,410,10277,1620,10282,482,10286,3468,10290,2806,10294,10298,10302,10307,10312,10316,3451,2830,2851,3311,10321,10325,2554,2665,432,10330,2689,2305,464,3162,2875,3219,452,1772,3009,10334,10339,3239,10345,2610,2957,2982,106,10349,0,0,0,10360,10360,10360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,10360,10360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10366,10366,5777,5777,4344,4344,5078,5078,6688,6688,6694,6694,10373,10373,10379,10379,5898,5898,6704,6704,670,670,6704,6704,10387,10387,10394,10394,6704,6704,1736,1736,0,0,10402,10402,10402,10402,10402,10402,10407,10407,10417,10417,10427,10427,10434,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10446,10446,10450,10450,10455,10455,6540,6540,10460,10460,2851,2851,3613,3613,10465,10465,10470,10470,10475,10475,4198,4198,3917,3917,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10480,10480,10480,10480,10480,10480,10480,10480,168,179,184,10488,193,168,179,184,10488,193,168,179,184,10495,193,618,618,618,10505,249,249,249,249,10511,10520,10520,10527,10527,10527,10527,10541,10541,10546,10546,10549,10549,10558,10558,10558,10558,4971,4971,770,770,1451,1451,908,908,5150,5150,5150,5150,1521,1521,28,28,44,44,44,44,44,44,10568,10568,46,46,52,52,52,52,776,776,54,54,54,54,54,54,56,56,56,56,58,58,10575,10575,66,66,10579,10579,10582,10582,10593,10593,10593,10593,10599,10599,5234,5234,4924,4924,10604,10604,10608,10611,10615,10619,10623,10575,4971,10627,10631,5070,5070,5070,5070,5070,5070,5070,46,46,5070,5070,5070,5070,5070,5070,10634,10645,10651,10658,10658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,54,48,40,48,24,40,10667,64,32,52,10676,1311,1314,3242,4177,875,2878,3342,3222,10684,3648,4056,2514,10688,2854,1321,3194,10255,1400,3471,3373,2809,10229,2613,2668,1426,10693,1325,2537,24,40,64,32,776,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,836,911,915,922,926,812,809,848,806,955,816,842,803,968,800,845,1144,1454,1148,852,1464,1044,24,855,819,839,988,826,429,24,40,64,32,52,479,2885,833,1060,773,852,855,933,937,942,951,10697,10707,5004,10717,819,819,863,0,0,0,0,0,0,0,0,0,0,0,0,875,884,24,770,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,836,911,915,918,922,926,812,809,929,848,933,937,942,946,951,806,955,816,959,842,803,968,800,972,845,855,819,839,985,988,992,826,429,976,10727,770,40,892,64,895,58,664,46,1057,32,773,905,52,776,908,1011,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,10,12,14,16,18,20,22,836,911,915,922,826,988,1044,848,806,10733,842,803,968,845,816,800,819,855,839,852,955,429,985,926,24,109,40,776,0,0,0,0,0,0,0,0,3715,10737,836,915,922,806,816,842,803,800,845,926,809,848,826,819,839,855,852,429,10041,10068,10060,10742,24,40,64,32,905,52,908,1786,10747,106,50,58,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,40,64,32,905,52,836,911,915,918,10750,922,812,10755,809,929,10760,10765,10769,806,955,816,959,10774,842,942,803,10778,968,800,972,10782,845,1073,855,819,839,985,992,826,429,770,40,892,1518,64,109,52,905,908,1440,855,819,839,852,0,0,0,0,0,0,0,0,0,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,4580,0,0,0,6,8,10,12,14,16,18,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7558,7681,7972,8402,5712,5661,8402,5661,5305,8349,5325,10786,0,7908,7730,8205,7706,5386,5651,8789,8375,5509,8073,7752,8721,5688,5285,5485,8110,7946,8451,8577,5261,8805,5712,8104,7914,5661,8407,8397,8140,5519,7528,5480,8174,7558,8028,5564,8307,5480,5453,10798,7920,7786,7795,5301,5401,8015,8402,5381,7779,7576,7920,8473,8099,7858,8039,8005,7805,7883,5606,8028,5485,5381,7986,5476,8345,8504,7914,8287,5564,5564,8170,7893,8322,5509,7582,7920,8039,8548,5693,7478,5712,8821,5622,7972,8694,7795,7742,8539,8345,5426,5386,7628,8732,7823,8267,7548,8110,7864,8159,5647,5642,5407,7994,5285,7628,7977,8676,5358,8227,5564,5274,8447,7746,8631,8909,8422,7898,7542,5329,8631,5448,5629,7588,8863,5717,5476,8073,8239,5325,7920,5661,5524,5329,8888,7742,8227,5329,8039,8334,8663,8647,5419,5564,5629,5305,5237,5622,5329,5285,7616,5329,7972,10803,8104,5401,8316,5352,8447,7687,8239,8402,7952,7675,8909,8010,7972,5285,5261,7478,8402,8489,7521,5342,5501,7616,8772,9361,7883,7908,8789,8068,5401,5358,5218,5291,5573,5476,5676,7986,5401,5514,8068,7786,7706,8402,8888,8329,8613,8154,8205,5274,8473,5426,8739,7986,7834,5329,8154,8205,7632,5726,8205,8375,8447,8205,8033,7542,8494,8687,8205,7516,8687,5209,5285,8077,5442,5325,5524,5442,7746,8077,7972,7972,5717,5407,5459,7972,5519,7658,5655,8484,5274,7628,5496,5642,7628,5248,5237,5237,8484,7628,7628,5426,8170,8484,7528,5617,5617,10809,8484,5391,8772,5320,5391,5606,7883,7734,7734,8721,5396,8772,8732,8598,5367,7478,7576,8479,8461,5261,5476,0,8994,7658,8010,8282,8732,8560,7565,8282,5699,10817,7548,5407,8777,8093,7605,8115,7888,8073,5274,5717,8732,7977,5329,8062,8334,5237,0,5564,5372,8527,5301,8670,7628,7843,8805,0,7994,8073,8249,8184,8170,5464,8087,8548,8411,7790,5459,10825,7898,5496,5476,5514,8777,8340,7957,5491,10830,5642,8316,10836,8903,8772,5329,5476,5381,5407,8154,8249,7706,5329,5329,7877,8617,8682,7779,5407,5407,7719,7834,5564,5255,7834,7834,8340,8340,5476,5333,8805,5688,7663,8716,7681,5285,5381,5352,5509,5476,7637,7746,7763,8811,7542,7628,7628,8851,7723,5647,5367,7706,8211,5209,5296,5342,7972,7521,5358,5564,8068,7994,7478,7972,7706,5261,7752,7542,8504,8998,5568,5381,5329,7500,5325,8196,7706,8467,5501,7904,7872,7528,5325,5396,5396,7565,7478,5291,8131,7972,8267,8196,5708,5573,7790,8387,7893,8705,8560,8827,7482,5337,8411,5476,10844,7994,5301,7920,7864,5274,8227,8777,8249,7588,5476,8467,8297,8093,7658,7681,8539,7622,7723,5301,5218,7990,7715,8456,8222,8131,8438,5476,5476,8170,7920,8893,7692,7605,8447,8073,5224,5261,5688,5642,5274,8543,8062,7616,7687,7582,8170,5459,8077,8811,7982,5255,5712,5564,8119,7786,5358,7994,5564,5314,7790,8010,7867,7790,7790,7904,5209,5305,5209,8539,7710,5325,5485,7610,0,5453,0,5529,7616,7723,5717,8391,5301,8164,7482,8682,7542,7637,8033,7628,5519,5209,8577,7478,5325,8005,8604,5248,7839,8131,8687,8211,7710,5285,5285,5564,7628,7605,5209,5419,5296,7482,5496,8048,8164,8613,5248,8211,8316,7548,0,7605,8329,7811,7473,7768,5671,8245,5485,5426,7768,8340,5485,7696,8345,8087,7710,8504,5407,5377,5464,5255,5301,5309,8149,5320,9345,8245,7977,7648,5358,8115,8255,5296,7706,8903,0,8164,7643,7616,7632,7616,8329,5309,7962,7482,8349,8062,7576,5642,8762,7994,5573,8307,5564,8504,7482,7849,5358,8201,8267,8539,5647,5342,5342,7558,8033,7478,5432,5237,8845,5301,5564,7605,5305,5301,9345,5325,7888,5688,8302,5612,8033,8527,8170,5712,8249,5426,5485,7935,7528,7667,7834,8805,7757,8451,5509,7653,5337,8451,7977,7599,5337,8816,8670,5274,7843,5564,7864,5305,7752,5381,7823,7715,8795,8277,5401,5391,8494,10850,5401,8154,5337,7616,7616,10857,8104,8211,8211,7839,5509,5485,8539,5726,7582,5407,7967,7786,7986,5329,8170,7994,7667,8077,8653,7849,7734,5209,5524,8039,5564,8099,8227,5442,8022,7805,8427,8514,7774,7904,5301,5647,8073,7653,8222,8196,5676,5237,8196,8539,5381,7734,8903,5309,7999,7658,8845,5396,7786,8093,7893,5309,8345,7599,5413,7576,7834,8170,5407,7516,8772,5320,5606,8479,7982,7706,7849,8402,8272,8104,7930,8227,7811,7893,8277,7706,8249,5255,7994,7883,8302,7811,7834,5476,7681,7706,5509,8604,8716,10862,5480,8484,8964,7632,0,0,8249,0,10874,0,7616,7616,7616,7675,7730,5688,7990,7521,5509,7628,7628,5564,5401,8190,8467,7823,8115,8494,8104,7675,7628,7858,7790,8345,7864,7632,7616,8154,7795,5419,7746,7571,7571,8170,8222,8110,5237,5661,8345,5726,5407,5564,5329,5485,9054,8527,8062,8062,5730,7834,5647,7605,5209,7521,7914,5717,5381,5485,5651,5464,7914,7734,5671,7582,7576,7542,7994,8073,7994,8994,5325,7982,8205,7977,8676,5642,7667,8827,7768,7994,5274,8005,8805,7643,5237,5391,7706,5347,8548,5642,8467,5712,8267,5320,8539,5622,8721,9751,5529,7877,8509,8005,0,5419,7957,7994,5213,0,5448,7482,5391,8104,5391,8267,5655,7843,8293,8249,7849,5699,7940,8467,5301,8170,5237,8334,5573,7500,5647,7511,8494,5655,7542,8443,8312,8451,8467,5573,7628,7908,7533,7734,7734,8136,8851,5237,5501,8267,5241,5407,5325,8893,8777,8869,5651,8052,7962,5655,8391,5448,7500,7511,5237,7786,7843,8164,5534,5671,8451,5391,5629,7632,8613,5612,5274,7930,5642,7952,5358,8548,8234,8925,5519,8604,8370,5347,0,5325,5301,8179,7843,7628,0,7616,5305,7757,7681,7790,8316,7605,5352,8345,5401,8827,5237,5255,5688,5309,8104,5381,7994,8422,8340,7628,5476,5325,8239,5358,5329,7588,8201,8015,7632,5419,7800,7834,8093,5325,8647,8234,7653,8539,7588,5329,5617,8987,8539,7763,8329,7800,8073,8539,8451,5578,9367,8190,7994,7982,5708,5651,7957,8140,7548,7774,8312,5419,5651,8827,5453,5296,7667,7482,5407,7834,5320,7482,8005,8033,7982,8302,5568,7542,7538,8205,10880,8322,8307,5401,7516,5568,7663,5358,5301,7994,5325,8329,8119,8010,8249,7742,7877,7828,8329,5285,7872,7872,5666,7628,8255,5573,5396,5407,8349,8267,8222,5337,5726,5329,7648,5296,7864,8909,7893,5291,8397,8048,8613,5501,8005,8598,7872,8387,7500,5564,5291,8903,7478,8316,7487,7675,5237,7610,8267,0,7706,5407,8267,7962,8093,7628,5367,5218,5325,8062,7487,8789,5666,8190,8267,7628,5237,8052,8073,8052,7663,7994,5296,7994,5325,7839,7521,8375,7763,5476,8873,5419,8179,7914,8322,5401,7990,8467,8245,5377,5629,5661,5358,8427,7962,5401,8010,5693,5381,7786,5661,5320,5407,8898,8062,7730,7528,8329,5642,10888,5448,5320,8329,8217,8751,7994,8766,5442,8349,8613,8647,7658,7706,5372,8033,5655,7696,8447,7616,5524,8827,7675,7706,8048,5407,7500,8005,5381,8411,7757,5651,5347,5309,8777,7622,7723,7867,5274,10893,7742,5274,7588,5329,5476,7500,5661,5301,5476,7986,5666,7675,8539,7972,7930,8909,5642,5305,7811,8647,8010,5448,8772,8422,7723,8255,7994,7511,5296,0,5524,8267,0,5301,5320,5573,7663,7516,5372,8190,8033,8277,8154,5480,7478,7872,7872,7706,7946,5329,7588,8422,8211,8267,8751,7628,8329,5325,7592,5274,5305,10898,7588,7592,0,8077,8073,8261,5476,5274,7628,8170,5401,5401,7482,8322,7616,7610,8316,7994,8354,8093,5726,5642,8010,5651,5347,8005,5347,5325,8903,9516,5666,5666,5396,8527,7972,7994,8005,8427,8359,5301,5325,5651,5666,8359,7632,5325,8005,5329,5407,8589,0,5666,7768,7675,5476,8375,8514,5432,7982,7982,5329,9641,5329,7487,7675,7542,5573,7982,7500,8451,5564,7500,7500,5329,7982,7628,8052,5285,8170,8039,8222,7834,8427,8427,8005,8282,5237,5320,5248,5688,7757,5325,5688,7558,5391,0,8539,5578,5617,7628,8811,5209,8062,5296,8249,5717,5342,5367,7637,5391,5476,7538,7521,7565,7864,8994,7710,7542,7752,7752,7872,7898,5358,8354,8354,7667,7706,8297,7482,7706,5606,8467,5291,5296,8196,7706,7548,8387,7839,7715,7599,5501,5501,8560,7817,5372,5564,8297,5381,5564,7710,8307,8647,5274,8447,8594,5688,5337,7687,5255,7710,5337,7849,7653,8170,5301,5564,8297,7687,8131,7920,8073,5274,7605,7757,5432,5224,7786,8297,5726,5617,8964,8093,7786,7883,7786,7616,5301,7558,5726,8711,5717,7839,5296,5296,8211,5564,7924,8631,8577,7605,5476,5274,8144,5285,5301,5476,5255,5325,5201,5617,5476,7599,5305,7723,7867,7952,7817,7972,7800,10904,7972,7977,7648,7487,7706,5426,8577,5688,8670,5218,7977,8839,7935,8126,7864,7653,5320,8190,8527,7914,5655,5564,5274,5578,7478,5564,5301,7843,5358,5573,8467,5337,5381,7883,7834,8805,7828,8839,5296,7795,7972,8022,7893,8170,5651,7706,7706,7628,7667,7687,8249,8322,7487,5237,8099,5301,5459,7681,8272,8653,8811,7653,7628,7898,7893,7920,7994,5471,5476,8467,7588,7768,7542,7872,8447,8745,7994,7779,8039,5509,7582,7864,8282,8539,7599,8179,7924,7616,8039,7877,0,7986,7990,5325,7849,8805,8349,7500,7746,7628,5381,5391,8190,5464,7834,8411,8110,7994,5564,8467,5712,7994,5564,8821,5661,5337,5688,7790,5367,7616,5391,5248,5629,7605,8548,5377,5564,8467,5296,8249,7986,8762,7982,5688,5459,5301,7795,8267,8170,7823,7957,8658,8164,7616,5419,0,7843,8334,7487,5237,7839,5237,8467,5534,5401,5448,8282,8164,8164,5325,7478,5688,7653,8196,5476,5358,5396,5629,5476,8762,8716,7849,7982,5296,7538,8391,5476,7752,7616,8909,7628,8777,9423,10904,7800,0,8987,5578,8340,7710,8539,5708,5329,7994,7972,5629,8033,8647,5726,7920,7628,5407,7632,7957,8196,7548,7482,5419,8952,7752,5285,5509,7972,5578,7538,7538,8039,7511,7790,5237,8827,5301,7800,7675,10909,8015,8211,7521,5305,8397,7487,5688,8594,7972,5352,5352,5285,5726,5432,8239,7533,7952,5237,5325,5622,5464,7893,8149,5291,5291,5296,7482,7877,5285,5261,7648,7675,8711,5248,8329,7487,10919,7558,8903,5301,5661,5261,5476,5485,8245,7877,7706,7839,7521,5617,7632,8196,7616,7637,5301,8115,8190,5401,7605,8115,5661,8211,5661,7706,8164,5407,8249,8052,8821,8154,5314,5381,8888,7849,7763,8010,5666,5381,7986,5651,5301,8104,5301,5688,8077,5329,8762,7675,7605,7610,5301,7610,8527,7491,5413,8987,7786,5676,7616,0,5237,8179,5726,7768,8762,8179,7800,5291,5381,7605,7687,5661,5464,8816,8456,8293,7528,7548,5305,7696,7990,7763,5237,5426,7834,8795,8467,0,8093,8190,5320,5274,8316,7610,5381,5274,8387,7982,7994,8479,5248,7994,8479,9032,7946,5726,5476,5476,8201,8811,7628,8473,5496,5476,5261,8033,5564,8234,5501,8952,5381,8136,7548,7883,8915,7548,7548,5661,7706,5661,8297,7972,8504,8196,5309,7667,8467,5712,7637,5708,5453,5296,8297,7977,5480,8093,5491,8222,8174,5642,7571,5358,8670,8772,8170,7849,5320,5519,5655,5476,8994,8073,8539,8631,5564,8234,7972,7972,8297,7533,5476,7790,5480,8136,5568,5274,7877,5726,7930,8234,5237,8884,8073,9818,5564,5476,7710,7692,8504,5419,7977,8879,5305,5381,7696,7632,8613,7605,7952,7482,7774,8577,10923,10934,9345,8903,0,8653,8800,5453,5320,7977,8653,7558,5301,5676,7914,8057,5717,5476,7628,5655,7511,5688,8658,5325,5476,8201,9345,8839,8302,8658,5301,5401,5401,7692,5407,8998,7877,5358,8234,8272,8467,8093,7710,8227,5442,7888,8473,7779,8227,8456,8456,7893,8467,7632,8039,7834,8762,5237,7972,8170,7706,5325,7972,7795,8800,7935,5377,5377,5564,5248,5661,8411,5459,8653,8676,5519,5519,7849,8467,8222,8222,5564,7628,8641,7834,5296,7930,5573,5329,10940,10945,8267,8245,8131,8245,8359,8164,8467,8613,8716,7592,5612,8282,8068,7710,8940,5453,7616,5381,7542,8359,7692,5401,8222,5301,5578,5391,5329,5476,5459,5661,5274,7994,8473,8340,5325,5419,9367,8222,7521,10952,7734,5407,5622,5407,8397,5325,7883,8925,8010,8073,7521,7528,5432,7648,7800,5347,5708,7888,7952,8340,5342,8789,7877,5401,5358,5309,8903,5320,8772,5358,5347,7734,8613,7972,0,5320,8631,5391,8126,5661,8073,8033,8277,7610,5237,5274,5347,5578,5491,10961,8365,5391,5407,7533,5476,8297,8387,5237,5237,5642,8527,8772,0,8473,5564,7904,7849,5325,5325,5407,8721,8411,7834,7952,5291,7858,7790,5651,5651,7763,5391,7487,8427,7632,5291,5651,7681,5401,5642,7972,7667,5237,5261,7994,5237,5606,7628,5347,7864,8762,8196,8334,5325,8391,7616,8131,5726,8427,5309,8721,8919,5407,7632,5726,5407,7994,5291,5726,7632,5347,7914,8539,8721,5407,8721,7834,7952,5651,5391,8427,5347,5291,5325,5237,8539,5606,7628,8131,5309,5726,5285,8484,5309,8140,5291,7972,8783,5325,7786,7883,8397,8539,8987,5396,7768,5717,7710,5381,7952,7817,8062,5381,7643,5688,5426,7588,8447,5325,5329,7972,7687,5358,5426,7982,8987,7817,7972,5529,5573,5237,5476,5329,5291,5237,7834,5237,7834,7834,5693,5564,5688,5688,5285,8062,5325,8010,8329,7757,8062,5496,8272,7500,5381,5476,8504,8329,7482,5261,7706,5480,5325,8329,7482,7864,5501,8387,5642,8022,7914,7482,7528,5291,7675,8884,8033,5337,7972,7504,7565,7528,8783,5617,5274,8302,8068,7500,5476,5476,7588,7710,7849,7914,7849,7500,5655,7605,5241,8131,5209,5209,8427,7786,5564,7768,5459,8093,8539,7924,5301,5386,7533,7576,8811,5476,8170,5708,7687,5480,5476,5726,7999,5255,5358,7504,5726,7904,8245,8443,8272,7605,7839,5578,5218,7500,8329,5476,5464,7849,5391,5496,5285,5391,8727,5496,8131,7952,7768,5296,5381,5396,5671,7521,7994,7914,5442,8316,5651,8427,8391,7864,5296,7834,7504,7795,7696,5413,7681,7710,5666,7605,8582,7473,7478,7628,8909,5325,7972,8504,7588,7843,7864,8582,7864,5391,8805,7883,8073,7877,5337,7946,8255,8196,9045,8345,7628,7675,7558,5381,5274,7478,7478,5524,8022,7734,5296,5485,8851,5655,8851,8762,10969,8227,8839,5381,7990,5726,8827,7675,5342,7599,8190,7893,7710,7738,5476,8136,7482,7757,7920,8287,7877,8033,9032,5325,7706,8772,8863,7994,8170,8745,5407,5241,8115,7967,7542,5314,7779,5407,7605,8052,8099,7914,8473,8359,7858,7628,5459,7500,7858,5391,8190,5391,7643,5396,7864,7548,8539,5661,5564,7734,8805,5407,7706,7628,5209,8732,5237,5296,7482,8345,5274,7823,8033,8527,7605,7924,7834,7946,8190,5717,7495,7706,8711,7491,7994,0,8909,7967,5261,5407,8073,7692,5464,8154,5717,7616,5651,7675,5651,5237,8322,8033,9641,5377,7588,7898,7710,7542,5391,5419,8467,5661,5529,8272,5642,5642,0,7628,8473,8827,8745,5301,5305,5305,8987,5578,9476,5407,8115,5381,5401,7957,8179,7742,8721,5237,5314,5708,5708,5309,5578,5476,7982,5419,7800,8783,7653,5396,7877,7500,8833,7719,5237,5617,8217,5241,5386,5347,7864,7616,5291,5325,9021,5285,8073,5296,5622,7715,8982,7687,5391,8255,8772,8982,7734,8119,8190,5372,8772,8903,5342,7542,5325,5285,5485,5401,8417,5476,7663,8427,7920,5296,5396,5476,5476,5261,8261,8417,7542,8863,7738,7982,7576,8052,7491,7616,5407,7628,5407,5296,8762,5578,8190,8365,5666,7914,7994,7877,5301,5476,8411,5578,7834,7864,5442,7994,5442,5642,7877,8261,7482,5347,8033,8154,5578,7811,8365,5476,8903,8427,7834,8762,7834,5325,5693,5564,8504,5325,5381,8062,8272,8261,5261,7706,5480,8329,5476,8329,5325,8504,5419,5296,7742,8170,8387,8884,7500,7864,8099,7504,8022,8527,5617,7565,5291,5241,7786,7849,5255,8443,5391,7504,7687,7588,5655,8539,7967,7839,5726,7999,5358,5476,5476,8582,5666,5391,7795,5391,5381,5296,7558,7605,7914,5396,7883,8131,7768,7952,8329,5476,5241,5671,7521,5496,7643,7500,7576,5381,7478,7628,8255,7478,5524,5337,5296,8582,8851,8022,7663,8745,7605,7967,7495,8762,5314,7893,7990,7994,7628,8839,7914,7757,7877,7779,9032,5342,8772,7914,5476,8711,8033,5459,5464,5407,5661,9641,7491,7994,7864,7628,8190,7877,5209,8345,7834,8539,5651,7858,7500,5305,8903,7588,5661,5642,7898,5391,7542,5651,5309,7800,5578,5407,9476,8772,8982,8255,5347,7734,5291,7834,7542,8427,8033,7786,7542,8062,5367,5291,8062,7653,8062,5237,5237,8154,8239,7653,8762,7610,8307,5419,7706,5391,5301,8919,5509,5358,5320,5274,8527,7972,7972,7834,7834,5391,5573,5296,8068,5476,8068,5476,5407,7904,5730,7864,8140,7521,7811,5407,8800,5671,5726,5564,5237,8888,8052,7628,7605,7977,0,5237,8073,7752,7811,8888,8539,8548,5501,5476,7972,8222,7637,7653,7920,8136,7920,8131,8136,5337,7757,5305,7487,5519,7811,8653,7849,7849,5305,7653,7790,5301,8447,5358,7628,7977,8641,7790,7920,5237,7864,8170,5305,5573,8772,7811,5291,7930,5655,8467,5564,7774,7817,8594,5476,8560,5509,8751,8154,8010,8772,8721,8115,7972,7696,7605,5391,5358,5209,7696,7952,7858,8411,8349,5491,8119,8582,7893,8964,5476,7710,7790,7849,5358,5329,8504,5296,5671,7858,5209,7977,7500,9353,5285,5671,8205,5407,7616,8329,5655,5617,8888,8888,5688,5617,8732,8205,7576,8277,8365,7487,8033,8987,5606,8456,8845,5274,8349,5407,5342,5564,8772,8827,8827,7972,5325,8015,8762,5309,7504,8598,8267,8222,5437,8277,8527,8777,5325,8119,7663,5622,5564,8131,8159,8115,8239,7994,8126,8033,5622,7972,8863,8473,8267,8833,8772,8365,7834,10978,5261,5509,7616,5309,8811,5274,8205,5358,8762,5320,7834,9259,8190,7610,8811,8205,7930,5655,5564,8467,7817,7774,8115,5274,8126,8015,8154,7972,8010,8772,8751,8411,8131,7605,8721,7696,5407,5358,5391,8964,7952,8582,5491,7790,7893,7849,5476,9353,7972,7977,5296,5209,8504,5329,8205,5209,5671,5309,5688,5655,8277,5617,5564,8762,5325,5320,8987,7487,5358,7576,8845,8456,8772,8277,8527,8863,5564,5622,8159,8115,7834,8365,8267,8833,5261,7616,8811,7710,5237,5617,7823,7504,5237,7558,7849,7558,5578,5367,5629,7967,7967,5301,8484,5564,7999,8811,7706,5261,7723,8196,5274,7839,5291,8196,7710,7839,8033,8033,5459,8170,8783,8539,7719,8427,7605,8354,5726,5381,7710,5573,7795,5529,7839,7681,7888,8577,8811,5612,8140,5237,7999,7588,7482,8170,5407,5699,5629,8287,8402,5329,5726,8903,5688,5209,5377,5726,7710,5464,8255,8255,5642,5372,5377,10982,8365,8365,8443,8994,8222,7692,7990,5471,5291,5564,8033,5407,7565,7972,7730,8354,8994,7706,8354,8322,5480,7658,5476,8184,8093,5712,7904,5459,7692,5480,7977,7839,8174,5280,7605,8170,5459,7972,5564,7533,8170,5261,8073,8447,8170,5301,8682,5476,5325,5491,5274,5285,7888,7605,5622,7473,5635,7952,7723,8005,7521,7710,5329,5413,7972,7977,7681,7774,5407,7738,8255,5358,5274,7888,5325,8170,5325,5320,5647,5573,5485,8077,7675,8073,7710,8658,8711,5320,7843,5218,5285,5442,8255,0,7738,5407,7706,8494,7994,5314,5381,5325,8077,8170,8170,8099,5329,8873,8359,8170,7710,5509,7768,5377,8073,8443,7867,5325,8140,8548,7774,8548,5352,7972,5241,7828,7972,7628,7888,5471,8104,5218,7548,8539,5578,8033,8663,5407,7795,5629,8170,5564,8443,5459,7858,8110,7495,5377,5496,8422,5407,8479,8451,5237,7738,8322,8427,7828,5377,5325,8077,7800,7511,8427,5358,5248,5329,8239,8140,5629,5491,5612,5237,8005,5325,7972,8322,8539,7800,8548,5401,5413,5372,8184,5432,8422,8170,8919,8554,5274,8010,5573,7548,5471,8073,8140,8443,5291,5291,7516,7738,8255,8255,7734,8239,5471,8498,8582,5372,7738,5358,5358,7605,8170,5573,8255,5471,5442,5325,7478,8354,8184,7516,8577,7972,5301,7972,7877,5573,8676,7994,7610,7516,5274,7994,8857,5347,5661,8261,5661,8077,7738,5726,5381,8498,8857,5237,8005,5291,7516,7914,7817,7883,10986,5726,5377,7888,7888,7817,7843,10994,7632,7663,5325,8170,5629,11001,11009,7834,11013,8756,5726,7957,8149,5480,7972,11023,5377,8479,11023,7628,7935,8387,7952,7667,7994,8354,7528,8539,8190,8010,8504,5261,8322,5320,8068,8033,5491,7864,8136,7706,7790,8821,8504,8010,5622,8062,7982,5726,5464,8539,8093,5491,5708,5655,8010,8582,8608,5352,7930,7786,7692,8174,7605,8164,7864,7904,7576,7972,5642,7990,5476,8745,5391,5255,7696,7723,8170,5285,8687,5329,8509,7768,7576,5437,7972,5617,7779,7628,8670,5337,7811,8267,5578,5509,5564,8745,7576,8447,8093,5578,8427,7779,5209,5296,7599,8287,8039,8795,5476,5352,7542,8234,8184,7858,8721,7930,8099,5213,7779,8821,8110,5325,7924,5274,8732,8694,8658,5717,5337,8062,5320,5564,5209,5564,7752,8543,8427,7628,7752,8272,7786,5655,5367,8467,5329,8484,8783,5622,7994,7643,10830,7935,5285,8427,7734,8149,5501,8010,7516,5717,7719,8795,7811,5476,5325,8217,7696,7628,5274,8062,5666,8456,5301,5301,5329,7516,7935,8387,7952,8190,8539,8504,5622,7864,8099,8821,8062,7692,7990,5329,7576,7972,5476,7982,5655,5301,5642,8745,5391,5437,7972,5285,7576,7768,5329,5285,5578,5564,7779,8184,7930,5296,8234,7599,7779,8287,5209,8694,5564,5325,7752,5320,8456,8467,5367,8427,5329,7935,7516,7528,7786,7839,7839,7920,8397,8411,7986,7986,7839,5529,8282,8411,8411,8411,0,8411,8282,7839,8411,8411,8033,8613,8789,8789,5655,8287,8287,11031,8705,8411,8411,11039,11044,8239,8245,7877,8811,7542,7628,7628,7706,8329,5476,8039,8349,7706,8925,7599,7977,9032,7616,5377,8267,5309,8560,8387,8010,7478,8245,7864,7811,5578,11048,5309,8467,7994,5401,7710,7935,8447,7681,7972,5476,7592,7977,8033,5491,7696,8539,8312,7599,5459,8115,8272,5320,5480,11056,5485,5296,8316,5337,5651,5413,5325,8716,5476,5381,8863,8577,8329,8422,8022,7795,8272,8334,5730,8447,5471,7592,8190,8329,8201,5337,7675,5688,7853,7605,5688,8539,8539,5647,5485,5377,8307,5476,5578,8316,8687,7478,5391,7558,7588,5372,8658,8527,5401,5612,5296,5301,11061,8277,8543,8451,5291,5413,7811,5491,5329,5337,7576,5309,7628,8287,8005,7994,5377,5476,8245,8467,7632,5358,7495,7628,8903,5342,5471,5342,7834,8732,7710,5377,7628,5391,5655,5337,8267,7864,8411,8039,7864,5367,5464,5688,8479,8245,7994,11067,5476,8131,5642,5573,7511,8329,7738,8539,7710,8467,7588,7738,7542,0,5642,8721,8015,5708,5391,8604,7710,7588,5372,5578,5471,8539,7957,7710,8451,7516,9021,7648,7542,8190,7628,5476,7478,8239,8170,5391,5358,5642,8349,5661,5342,7811,8427,8909,7696,7622,8411,8411,7986,5301,8467,5642,7632,5301,5476,8805,8919,7706,5218,5261,7653,7628,8211,8613,7723,0,8582,5564,8756,8888,7565,5426,8136,7528,7914,7898,8467,8879,8154,5661,7898,7478,8170,5337,7653,7658,5688,5358,8456,5224,8670,7930,8631,8539,7967,7491,7516,8582,7952,7605,5391,7692,7628,5671,5717,5237,7972,5325,8329,5730,5426,5285,5237,7952,7495,7843,7977,7908,5241,11075,8267,7834,7558,8307,7710,5329,5564,7478,5564,5524,8052,7843,7977,8845,7667,7616,8073,5237,7930,5301,8267,8201,7675,7706,7920,8745,8039,7576,8772,7967,5255,8277,8447,8033,5337,8201,7521,7883,8170,5218,8255,5476,8762,7834,5712,8893,7930,7864,7628,5676,7628,8267,5730,8005,7521,7521,5448,5629,8391,5237,8613,5573,5209,7967,8170,7478,7521,8267,8052,5218,5358,5305,8783,5564,8239,7482,5622,7982,8255,7834,8015,8010,8255,7500,8919,5358,7528,5358,8554,7994,5241,7790,5261,7516,8312,7883,8249,7491,8340,7908,8527,8249,7967,8582,5401,8365,7877,5337,7706,7834,7877,8365,8093,7811,5237,8527,8365,5301,5337,5693,5688,5314,8456,7576,5476,8560,7628,8484,7834,8397,7790,7883,7500,7853,5655,5501,11082,0,8267,7658,5606,5280,5480,7571,7653,7786,7588,8312,5442,5437,8391,7632,8287,5442,5337,8316,7972,5274,5419,7558,7482,5647,7675,5712,7692,7940,5666,7734,8397,8370,7834,5237,8929,7994,5329,5347,7834,8272,8456,8427,8104,8772,8397,8287,8140,8653,5377,7746,8762,7982,7500,5426,8772,8484,8104,8267,8312,7990,5448,5651,7768,5442,8451,8267,5218,8608,7687,8370,5629,5419,8647,5261,7628,5301,5372,8149,5476,5419,7734,5285,5237,8772,8312,8789,5476,5301,8170,5285,5476,8929,8613,8329,5442,7834,8093,5651,5651,8929,7528,5285,5237,5651,7834,8411,7774,5391,5337,5391,5391,5301,7548,7491,7779,5301,5309,5309,5688,5476,7757,8479,7999,5693,8312,5688,7849,5564,5655,7972,7904,8375,5564,8716,7757,5261,8255,5568,8732,5209,8010,7628,5396,7653,7817,7706,8211,8915,8539,7487,5237,5476,7637,5391,5647,5237,8293,7542,11094,5407,7920,7491,7482,7904,7565,8033,5426,7853,8354,7834,5564,7920,8136,7528,7864,5291,5471,8131,7482,7542,8282,5325,8504,8783,8816,5501,8267,5325,8196,7920,8039,8062,7482,7667,5391,5476,7548,8077,5671,8915,8154,7658,8756,11104,11112,11119,0,7888,5209,8447,5647,5391,8438,7786,7864,8093,5224,5476,7786,7904,7920,7628,7487,7571,8201,5337,7828,7977,5655,5391,5391,8964,8170,8427,5391,5617,8190,7999,8222,7849,5358,8119,5573,5391,8073,7605,7710,8925,8312,8316,7542,5564,8533,7511,7542,5564,5301,8354,7920,7924,8282,8073,5381,8131,5320,5241,7715,8447,8077,8539,7977,7715,7883,7914,5476,7487,8582,9012,7930,5407,8316,5426,8062,5285,7710,7696,5717,5224,5391,8711,7977,7482,7667,7576,5248,8987,8316,5305,5666,5325,7628,7500,8504,9021,7972,7723,5261,7710,5274,5426,7768,7920,8964,7605,5730,8391,7473,5642,5274,5274,5519,7667,5496,8149,5325,7920,8613,5651,5476,7482,8687,8345,9562,5337,7719,8898,7542,8375,11126,7663,7757,7653,7872,5391,8946,5688,7675,5578,5519,8205,5377,8451,7795,7817,7548,8307,5329,5712,7843,5509,7528,8267,7930,7478,7588,7628,7877,8805,8073,7653,7977,8062,8498,8527,7877,5509,7972,7487,8190,7478,7478,7681,7817,5314,9471,5426,7542,7914,7653,9471,5661,5573,5241,8170,5274,8964,8211,7734,5301,7533,7872,7558,5524,5301,8594,11135,7605,11142,5647,7511,8397,8170,8227,8467,5407,8461,7757,8272,8227,8099,7473,8093,7930,5329,5301,8322,8057,5676,8438,8397,5352,8345,7920,5274,8387,8863,5666,9051,8571,7738,8653,8762,7994,7805,5209,5241,8543,8077,8827,8658,8772,5693,7706,7542,5314,7706,7628,5309,8721,7790,8227,5606,5237,5401,8272,7786,8451,5320,5655,5329,8249,5329,5396,8473,5205,8277,8800,11147,8201,8716,5509,8365,0,8407,5274,0,8154,7779,5933,8514,8509,7616,8539,5401,8039,5274,8762,5647,7994,8827,5564,8110,5325,7864,8110,8033,5377,7687,8062,7924,8676,5367,7628,8946,5426,5464,7994,5564,7999,5496,7867,5617,8062,8005,5606,8711,8255,8255,5730,7853,8827,7811,7491,8438,5407,8676,5407,8022,8005,7982,8190,7888,5381,5655,8411,7548,5209,5519,7491,5712,5213,7663,5381,0,5712,8287,7738,7898,5367,5401,5612,5237,7511,8443,7491,8417,5534,8164,5629,5612,8322,5717,8851,7805,8073,7533,7730,5358,8940,8461,5209,7478,7616,5464,7681,7511,8509,7962,8302,5448,5509,8052,5655,5655,7632,5476,8467,5629,8077,5237,7977,5717,7538,5676,11126,11104,5612,0,0,0,8136,5329,5612,7742,8443,8641,5519,8721,8190,5401,8087,5708,7800,5305,7632,5358,7994,7511,8539,8255,8827,5476,5329,5708,8946,8322,8402,7706,8227,5629,7800,5218,7877,8527,5485,8473,5320,7957,5519,8827,7610,8365,5407,8340,5301,5367,5237,8756,0,5413,0,0,5241,5329,5396,5325,7734,5296,8322,8312,7516,5612,5519,8589,7558,8005,7487,7511,5386,7946,8959,5342,8010,8255,7768,7924,5629,7521,5291,5285,9021,8239,5381,8149,8217,8772,8365,5325,5407,7548,8919,8387,7616,8217,5291,8417,5377,7734,8964,0,0,5693,5261,8509,5407,7893,5342,5329,5676,5296,7628,5401,5314,8255,7542,5314,5666,5358,8964,7811,7491,7888,8039,8903,8170,5501,8245,7930,5476,7663,8548,8329,7757,7605,7946,8863,5325,8077,7738,8154,8745,8888,7616,8005,8381,7500,5407,5407,11155,5496,7972,7763,5301,5666,5325,8857,8582,8987,5352,7986,8762,8851,8287,5329,8473,8222,5329,0,0,7610,7864,5329,7528,5407,5347,8073,5407,5642,7877,7521,5407,5237,8721,8777,8077,5666,8498,5726,7533,7632,8857,8375,5372,8077,5291,5629,5320,5347,5309,5688,5476,5655,5693,7999,8312,7757,5647,7542,8732,5261,5325,8010,7757,8514,8293,5237,7637,5426,5671,8201,7658,8170,5471,8783,7548,8136,7930,8461,8282,7542,5642,8196,7667,7478,8131,8756,7565,8154,7853,8816,7904,7628,7542,5241,7542,7786,8073,7864,8312,8201,7904,8354,8857,7715,7883,7977,7828,5337,8964,8073,8093,8851,7542,7511,8222,5391,8190,5617,5358,8447,7920,7888,5426,8898,8149,7696,8211,8387,5337,7558,7977,7491,5386,7972,8903,8316,5329,7757,7482,8509,7687,7605,5274,8805,9003,5274,5396,7768,8302,7977,5642,5717,8391,5241,7719,5285,5476,7877,5248,5629,8345,7482,8613,7605,8149,7734,7478,8277,8594,5401,8946,7675,5612,5301,5241,5573,8039,5524,8964,5519,8451,9471,8527,7528,7511,8509,5407,7872,5377,7843,7542,8170,9051,8322,7888,5606,8451,7790,8543,7706,8407,7473,8653,8227,5237,7786,7632,7805,8863,5309,7972,5274,5676,8154,8057,8772,5693,5407,8170,8249,5209,7867,7616,8509,8322,8022,7864,5496,8255,7548,8676,5448,5464,7811,7663,8762,5712,7957,5209,7893,5712,5305,5655,8073,5717,8077,5629,5676,8077,8136,7511,8052,7898,5476,7977,8888,8164,8473,5629,7800,7632,5413,5218,5485,8539,8443,8190,7511,8772,5291,8239,7734,5329,8217,5347,7734,8498,8322,8919,8154,5666,7811,5314,5401,5476,5496,8473,7986,7877,7521,8227,8227,8484,5708,5459,5726,8239,5651,8227,8514,7538,8969,5261,8154,8514,7834,5358,7653,5358,8589,8509,8756,5413,8062,8489,8589,5274,5274,5407,8438,5367,11161,8307,7687,5386,5407,5352,5367,8093,8411,5358,8489,7849,8721,5717,5717,8048,5573,8062,7952,8438,7719,8653,7843,5329,8805,8302,8170,8354,8354,7877,5726,7516,8227,8635,8653,7834,8438,7834,7864,7643,7628,7752,7521,8222,7521,5726,5642,7752,8282,8345,7994,7482,8144,5699,5347,8762,0,11167,5606,8077,7738,8509,7849,5699,8519,8721,8307,7706,8005,5629,8721,8647,8795,5237,5296,7877,7920,8903,7811,7738,7752,0,8514,8969,5261,7834,7653,5358,7752,8519,8489,7994,5274,8062,5407,8438,8756,8514,7687,5386,7952,7752,7738,8438,5329,8509,8048,5717,7849,8653,8484,8354,7843,8762,7628,7834,8227,5237,7752,7643,7834,7864,7877,5347,5726,5296,8144,5699,5717,5606,7738,5699,8795,7811,5564,5564,5333,8217,7528,7542,7478,5476,5480,7482,7924,8307,7864,8119,8282,8456,8946,8267,8821,7972,7920,5485,7565,7924,7482,5655,5381,7558,7864,5726,8539,8443,7571,7828,8093,9051,5480,5480,8312,5224,5564,5325,5329,7610,8033,5426,7888,7957,5305,5419,5320,7888,5274,7696,7952,7628,5671,5261,8329,8255,5426,8104,5564,5358,5367,5261,8119,7972,7734,8307,8467,5655,5573,5274,7853,8077,8267,5274,8456,8456,7967,5476,8217,8099,7482,8170,7805,8033,7920,8093,8272,5274,5329,8119,5274,7482,7605,7924,8705,5261,5248,7834,7482,7628,5377,7628,7610,7994,7994,8077,8217,5342,8345,5464,5381,5342,7482,5671,7834,5296,5717,8267,7478,7994,7663,5237,5629,5325,8015,8479,5708,5237,7482,11175,7648,7516,8422,8919,7920,5342,5342,7628,5274,5501,8447,7696,5325,8479,5237,7482,7864,5296,7610,5237,5301,5301,5301,8863,7849,7972,9032,7667,7823,5476,5699,7834,7542,8387,7504,8387,5325,7786,7811,7972,8131,7667,7839,5218,8170,5573,7982,8925,7632,7628,5442,7757,5342,7653,8154,8617,8721,5573,8925,5218,5325,5237,5442,7511,5301,7823,5529,8925,5325,5325,7628,7628,5529,8136,8998,7719,7715,7752,5501,8334,8267,5301,5301,8608,8093,5666,8345,8222,8249,7828,8903,5426,7478,7999,7500,5325,7715,8033,7675,7687,8805,5655,8456,5712,8093,7706,5442,8154,8302,7893,5534,8427,7482,8447,5442,8068,7516,0,7582,7616,7478,8093,8617,8093,5367,8062,7482,5305,8349,8267,7511,8249,8888,7478,7994,8154,7482,5237,5476,7663,7883,8919,5274,7628,5329,7610,5491,5325,8334,7924,7904,7920,7994,0,5237,5325,8349,8249,8249,5666,5301,8154,7663,7893,5491,7610,8093,7663,8527,5301,8222,0,7849,7849,5224,8745,8745,5485,5606,5655,5485,7558,8745,5485,5485,7828,5485,5606,7893,7893,8898,5651,7746,7746,8174,7491,5606,5296,7491,5717,5693,5496,5407,8504,8539,8762,7478,8504,8196,5309,5529,8816,7904,7482,7730,8136,5305,8443,8245,8282,5476,5642,8272,5480,7977,8062,8174,7924,11180,7482,7977,8272,5325,5661,8345,8345,8727,7817,11186,8245,8255,8805,5509,7616,5342,7681,8255,8190,8571,5413,7738,8015,5224,8144,8170,7986,5661,8110,7898,5476,5688,5688,7849,7675,7715,8170,5407,8411,8539,5407,11194,8272,8131,7738,7930,5661,7533,5717,5358,8144,5629,7957,7952,8255,5529,5325,5407,5419,7877,8245,8154,5274,7542,8762,8631,5407,5347,7994,8504,5564,5712,5676,5717,7994,8255,7653,8227,0,8110,8329,5617,7994,5717,7930,8272,8131,8267,0,5358,7994,5296,8762,8631,8762,7994,8504,5564,7653,7994,8267,8272,8484,8484,5274,5661,5274,5325,7482,8925,8267,8670,5333,5352,7946,7616,8267,5352,7482,7482,7521,7982,7491,5693,8745,7533,7521,8598,7653,7500,5476,7500,7786,8022,8005,7706,8560,7628,5509,8282,5471,8539,7883,7533,8312,8093,8604,5485,5666,7849,8255,7864,7864,7994,5381,7795,7914,5476,7914,8370,8217,7858,5255,5666,5564,7977,7853,5296,8005,7977,5333,5606,7558,7616,7667,7982,7653,5485,8422,8422,8751,8277,8422,5209,5209,7805,5693,8277,7834,7653,5407,7990,8402,7592,8196,5476,8159,5377,7864,7864,7834,7643,8795,5218,5622,7834,5274,7528,5476,8467,8940,7828,7828,5419,7692,5666,8239,8647,5476,7800,7706,7648,8052,8255,7786,8329,7542,5296,8427,8613,8062,8888,5274,8751,5329,5347,8077,7768,7491,5693,8745,7653,7521,8598,7500,7500,5509,7786,5471,7706,8282,8022,8560,7628,5329,8093,8312,5485,5381,7977,5606,7653,7616,7592,8370,5476,8751,5296,8422,7653,7616,7616,7990,5377,5218,7864,5622,7834,7864,8077,7800,7828,8940,8052,5666,8427,8613,8751,7768,8527,8473,11198,5564,5367,8427,8473,7730,7904,7658,8577,7795,8190,8670,8170,5358,7487,7994,7924,5642,5448,8509,5514,8010,7511,5237,8239,8647,8647,7511,8473,8473,8473,8239,0,7719,8527,8473,8527,7924,8427,8473,7730,8170,7487,5448,5642,7511,8647,8473,8473,7893,8010,7893,7893,5391,5391,8179,5325,5693,7487,5480,8427,7962,7521,8068,8504,7628,5676,7710,7482,8010,8010,7962,7482,7605,5476,8533,5358,5381,8272,7511,7839,8964,7487,8222,5391,7888,8370,8504,5606,5285,7977,5224,5642,8316,7839,7521,7924,7924,7696,7834,5333,5476,8179,8073,8028,7864,8201,7667,8307,7588,7628,5391,5642,7643,8039,5391,5407,8863,5224,5274,8201,7491,8772,7893,8015,7994,8721,7864,8699,7643,7982,5464,8964,5296,5407,5730,7849,5426,5501,7994,7786,5496,8022,5629,8073,5524,5237,8005,7511,5448,8272,7491,8267,5305,5629,7800,5358,7628,5519,5309,8589,8005,5622,5261,7710,7883,5476,5325,7648,7558,5218,8272,5296,7521,8427,5501,8370,8249,7834,5305,7877,7521,7632,8857,7700,5391,5693,5325,5480,5426,8068,5237,8504,7628,7710,8010,7482,5407,5391,8222,7487,7888,5476,7696,7648,7521,7977,5333,5285,5476,5224,8073,8307,7864,7628,8028,7667,8039,7643,5274,8721,5496,8005,7786,5448,7877,7491,5305,8073,7511,5519,5309,7800,8589,5622,7700,8087,8005,8039,7521,5501,7904,8447,5358,8073,5647,7653,7893,5407,8345,7663,5564,5274,7752,7528,5501,8888,5426,7538,7628,8527,7653,8539,5480,5480,7710,8329,7605,7972,8456,7528,8915,7730,7482,7752,7972,7883,5329,5337,8073,8222,7908,5480,5476,5726,0,5726,7592,8073,7999,8467,5352,7576,8170,7605,8293,8170,7920,8205,7977,8093,5655,7658,5564,7924,5391,5358,5480,5480,7487,7511,7538,7858,8272,7972,8164,8909,7582,8329,7768,7914,7592,7696,8370,8073,7605,7482,7632,11206,7883,5661,7511,8170,8022,8196,8211,7779,7653,5647,8190,8422,7667,7864,7558,7528,7663,5329,8863,7576,5617,7858,8653,8272,8277,8548,7990,7706,7706,7834,7893,5514,7834,5381,5642,7478,7858,8827,7858,7542,7893,5464,5407,8154,7628,5377,7768,5367,8548,8005,8110,7487,7795,5480,8005,5448,7542,7558,7972,7511,8334,8909,5237,8340,8762,7834,8467,7967,5514,5261,5301,7972,8617,5329,5237,7632,8015,5305,5708,8179,8647,8827,5726,5358,7972,7628,7500,5396,8073,7588,7675,7516,7877,5471,7511,5480,8833,8772,5285,8964,7834,7632,8427,5485,5476,7491,5480,8888,7967,7834,5352,5329,8909,7521,5325,8617,8170,5237,7811,5301,8473,7538,7628,5480,8329,7710,5726,8915,8073,5329,8205,5391,7487,5564,8170,7967,7605,5480,8293,7977,5476,7658,7675,7538,7482,5285,5396,7632,8370,7858,8473,5301,7558,7834,7528,8196,7667,7706,7706,7990,8863,8548,7588,8179,7858,7972,8005,5514,7478,5708,7511,7542,5261,8647,7632,8827,7877,7967,5325,8617,7521,7786,7994,7994,7994,7628,8811,5476,8608,7853,5661,8222,5358,7710,5377,8539,7692,8370,8255,8131,7473,5717,8422,8845,7858,5358,7990,9012,7628,5342,7957,8073,7675,8334,8073,7839,8739,8888,5305,8239,7957,5386,8762,8205,5342,5377,8888,8739,5329,5524,5524,8255,8898,8255,8149,5372,8473,8653,8653,5377,7565,5519,8297,7790,7883,8653,8888,8048,7681,5352,5209,8048,8297,5377,8174,7920,7790,5564,7696,8164,5726,7817,5519,7795,5325,5352,9361,8670,8302,5377,5301,8888,8548,5377,5352,8022,5241,7768,8548,8598,5407,7888,7982,7986,8484,7706,5401,5655,8888,5352,5305,8589,7800,7800,9026,7500,8577,7542,7542,8789,7811,7908,8381,8888,8577,8261,8307,8307,5386,8062,5237,8307,7653,8307,8307,8484,8227,7628,7628,5301,5676,5564,7542,7952,8548,7511,7952,8987,7628,7952,5712,5325,7706,5381,8005,7643,7904,8312,5712,7500,7834,7675,7779,7628,8422,7706,7599,7779,7994,5407,7710,8647,5358,5305,5325,7500,5442,7834,8427,7628,8479,8504,5325,11212,7817,5480,7757,5325,7500,7864,7864,8302,8560,8068,5305,5381,7914,8010,8467,5358,5329,7752,7982,5329,8925,7565,5501,8136,5337,11217,11225,7849,5367,5726,7653,7920,8093,5480,8073,5688,5255,5564,5358,5325,7994,8170,7757,8073,5337,8234,7920,8184,5426,7658,8222,5564,7687,8170,7786,11231,8316,11239,7738,5381,5320,5730,7521,7696,8345,7994,7681,7605,7482,8577,7632,8316,5476,7706,5224,7994,5285,8201,7952,5274,5717,5296,11243,11249,8898,11255,7888,7667,5377,7800,7675,8925,8302,8196,7628,8028,5578,8234,8845,7588,7478,5688,8805,5564,5509,5337,5301,8302,8302,5524,8249,11261,11267,11274,11285,5218,8447,5209,7706,8745,7521,8028,8104,5325,7757,7867,7786,7576,7582,8277,7893,8447,5476,8653,5329,8484,8227,5485,8099,8093,7967,5301,8249,8548,7972,8184,11295,11303,11310,5391,7914,7643,5391,5730,5426,7605,7986,8548,5325,8411,8411,7811,7768,8115,7994,7994,7628,8658,8110,5459,5464,5401,7834,5688,5688,5407,5358,7864,7924,5564,8159,5407,5367,5480,7982,11319,8893,11328,7752,5407,8052,7478,7565,5514,7511,7538,5391,5391,7482,11336,8909,7738,5642,5717,8164,7542,7706,7752,8893,11339,5401,5708,5333,5296,8438,5325,7681,5726,5407,5514,7800,5237,5688,8473,5325,5325,7605,5419,5688,5622,5218,8015,8756,5529,5432,5291,5726,7521,8073,5285,8329,7588,5464,9021,5261,5261,8010,5291,7516,8329,7622,5237,11349,11354,5501,8721,5730,7908,9353,5514,8427,8811,7952,8119,5301,8227,11339,11360,11368,8613,5325,7500,8154,11360,5301,8577,5301,7763,5655,7521,7864,5329,8721,5301,5274,7628,8479,5325,5337,8068,5329,7565,7904,7849,8073,5255,8184,5329,5337,7687,5564,8073,8222,5730,7920,7658,7952,5381,8898,7994,7696,8316,8115,5730,7908,5325,5285,5274,8925,7521,8329,8845,5301,5401,5407,5301,5391,7681,8234,8302,5509,7667,5325,5218,8745,8093,7706,7967,7893,8653,8227,7786,8447,8184,7757,5485,7914,5391,5209,5501,5459,5358,8227,5391,7752,7994,8159,7864,5688,5564,5464,7768,5419,8411,5514,5708,7706,7738,7482,5642,7565,5407,5333,8473,5529,5432,7800,8438,5218,7994,5237,5291,5261,7516,9021,8154,8811,5301,8427,8721,5453,5476,5564,5301,8484,8201,7834,5564,7757,5325,8527,11375,8811,5391,8527,8391,8222,8467,7972,7982,8196,5564,5501,7752,5407,5391,7628,8998,11380,5291,5291,7920,7811,5655,8222,7834,8387,5241,7565,8527,7752,7742,8594,7977,8293,8093,7763,5564,5480,7752,5301,8411,7972,5717,8467,5209,5726,7675,7972,7883,8170,5337,7786,7548,7628,7924,8164,8387,8964,7628,11386,7616,8863,7478,7696,7795,7663,7972,7834,7946,5285,5325,8577,7605,8504,5476,8062,7632,8613,8711,5717,8504,5285,5519,7576,7972,7632,11393,11402,9457,8375,7977,5325,7628,7811,5480,8201,7478,5676,7628,8073,8329,8329,5358,5237,7667,8170,5647,5485,5377,7864,7864,8582,7982,7478,7914,8277,11408,11417,5329,5255,5320,5564,8345,7999,5352,8196,7542,7930,7757,5329,5699,5407,8170,5647,8387,8467,7706,5301,7491,8863,8571,8863,8653,8119,7706,5485,5476,5476,5485,5209,8277,7582,7706,8104,8845,8170,5726,11425,11432,5325,5320,0,7710,7622,8110,8345,5688,5377,7982,5377,7864,5381,7790,5564,8104,5647,7834,7849,8467,7858,8267,5712,7982,7616,5471,7715,8170,11445,8777,7565,7786,7616,8467,8190,5534,5391,7849,5573,5629,5367,8893,7511,5325,7786,5407,9032,7653,5209,5209,8447,5642,7834,5325,5301,5606,5568,5377,5377,8447,5647,7538,5285,5524,5606,8033,5301,5622,5578,5708,5642,5476,7742,7710,7972,8239,8164,7957,5358,8617,5314,7628,7478,5291,7482,7768,7487,5285,5476,5396,5358,7616,7588,5464,8010,5285,8239,7834,8898,8484,5274,5274,5647,8349,9021,7628,7616,5329,8641,5274,5529,5476,7920,5320,7632,7706,5476,5325,5578,7628,8427,7491,7924,7920,8381,8154,5651,7616,8249,8539,8354,7628,5666,8222,5329,7849,7610,8617,8354,7616,8721,5726,5301,8375,5453,8484,5325,8467,8391,5391,7742,8387,8777,8222,5655,7786,7582,5329,8387,7675,7924,8093,7972,5726,8467,5529,5480,7487,7972,7696,7795,5519,7946,7576,5717,8375,8062,7478,8073,5301,5676,7982,7864,7628,5274,5377,7478,5699,7622,8345,8653,7930,5352,7542,8104,8845,8467,7588,7982,7849,7864,7786,5688,5209,5712,7715,8447,5642,5534,7511,5325,8447,5407,7849,5476,7616,5578,8239,8239,5285,8484,7628,5329,8190,8427,7616,8154,8249,8721,8617,5329,5309,8093,5407,5274,8451,5407,5407,7834,8451,5329,5337,8140,5325,8473,8140,8473,7605,7667,7605,5407,5651,5651,7478,7511,8033,7667,7516,8447,7706,5329,8484,7667,5485,5301,7521,7834,7977,5651,5301,5617,8015,7516,5485,5325,8093,7834,8140,8349,8349,5717,8783,5564,7746,7746,5564,8174,5726,5726,8711,5564,5274,8277,5726,7746,0,8527,5564,5726,7746,7538,5305,5305,5296,7538,7967,5362,5501,5464,5464,5309,8687,5606,7853,7946,5237,8582,7946,5320,5301,8184,7710,9372,9372,5476,7542,7883,5237,8641,5305,5305,7542,5491,5573,5337,7828,5476,5367,7834,5726,5712,7834,5485,7628,5301,8903,8762,8179,7482,8345,7834,8772,8345,5655,5491,8179,5476,5712,7883,7834,8762,5329,7972,5501,5564,5564,8438,8438,8467,8140,5726,8783,8631,7605,7972,8211,5708,5432,5480,5358,8467,8783,5480,5693,5651,8716,5693,5209,7786,7786,7582,5501,8272,8467,7920,8227,5524,7706,8467,5629,8909,5320,5320,5501,7893,7752,7904,7757,5480,8316,5726,8119,5391,5337,5391,8805,7478,8184,5485,7643,8170,7834,5647,5377,5237,5274,7834,5666,5358,5642,5688,7653,7478,7478,5730,5237,5717,7687,5519,5534,7687,8789,7700,7706,8533,5325,5209,5325,5325,7706,5325,7710,8033,8033,7849,8387,8800,5661,8174,8451,5391,5209,7710,8184,8170,7681,8093,8093,5573,7768,5661,8800,8077,8484,5642,8287,8653,7628,5573,5476,8447,8451,7967,5726,5362,5274,7742,7864,8494,5476,8287,7967,7828,5573,5309,8387,7710,8033,7849,8800,8170,8093,8174,7681,5209,8800,7628,8287,5726,8494,7610,8334,7817,8334,7834,7610,7610,7817,8795,7738,8093,7738,7610,7817,8795,7952,5688,5432,7952,8354,7805,7849,5291,5661,7628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4269,11454,0,0,11459,0,0,0,11464,0,0,0,0,0,0,0,11469,11474,0,11479,0,11484,0,11490,0,0,0,0,11495,11500,0,0,0,0,0,0,11506,0,0,0,0,0,0,0,0,0,0,0,11512,0,0,0,0,0,0,0,11519,0,0,0,0,0,0,0,0,0,0,0,11525,5599,40,11528,11531,11535,335,11539,4899,11543,24,11546,11549,11553,11556,380,11560,52,11563,11566,32,3103,11569,11573,2795,11577,11581,11586,11591,11595,11600,11604,800,11608,11612,11617,11621,11626,11630,2809,11634,11638,2806,11642,11646,11650,2792,9676,11654,11659,11663,11667,11671,11674,11678,11683,11687,11691,3457,11695,11699,11704,11708,11713,11717,803,9686,11721,11726,11730,11735,11739,3471,11743,11747,11751,3454,11755,9690,11759,11763,11767,11771,11774,11778,11783,11787,11792,11797,11801,11806,11812,11818,11823,11829,11834,1073,11839,11844,11850,11855,11861,11866,11871,11875,11880,11885,11889,11894,11899,11904,11908,11913,11919,11924,11929,11934,11938,11943,11948,11953,11957,11962,11968,11973,11979,11984,11989,9710,11993,11998,12003,12007,12012,12017,12022,12026,12031,12037,12042,9721,12047,12051,12056,12062,12067,12072,12077,12081,12086,12092,12097,12103,12108,12113,12117,12122,12128,12133,12139,12144,12149,12153,12158,12163,12168,12172,12177,12183,9740,12188,12192,9745,12197,12202,12206,2599,12210,12214,12219,12223,12228,12232,845,12236,12240,12245,12250,12254,12259,12263,2613,12267,12271,2610,12275,12279,2596,12283,12287,12292,12296,12300,12304,12307,12311,12315,1733,12319,12323,12327,833,12331,12335,2759,12339,12343,12347,2738,12351,12355,12360,12364,12368,12372,12375,12379,12383,2819,12387,12391,12396,12401,12405,12410,12414,985,12418,12422,12426,2833,12430,12434,12438,12442,12446,2816,12450,12454,12459,12463,12467,10579,12471,12475,12480,12484,12488,3120,12492,12496,12501,12505,12510,12514,816,12518,12522,12527,618,12531,3194,12535,12539,432,12543,12547,12551,3183,12555,12559,12564,12568,12572,324,12576,12580,5230,12585,12590,12594,806,12598,12602,12607,12612,12616,12621,12625,2854,4993,12629,2851,12633,12637,12641,2840,12645,12649,12654,12658,12663,2496,12668,12673,12679,12684,12690,12695,942,12700,12705,12711,12716,12722,12727,2514,12732,12737,2510,12742,12747,12752,3201,12757,12762,12768,12773,12778,10015,12783,12788,12794,12799,12804,10060,12809,12814,12819,10264,12824,12829,10330,12834,12839,12844,10207,12849,12854,12860,12865,12870,12875,12879,12884,12890,12896,12901,12907,12912,3064,12917,12922,12928,12933,12938,12943,12948,12953,12957,12962,12967,12971,2950,12975,12979,12984,12988,12993,842,12997,13001,13006,13010,13015,13019,1400,13023,13027,2957,13031,13035,13039,2947,13043,13047,13052,13056,13061,13066,13070,13075,13081,13086,13092,13097,4878,13102,13107,13113,13118,13124,13129,13133,13138,13143,13147,13152,13157,13162,13166,13171,13177,13182,13187,13192,13196,13201,13207,13212,13216,2547,13220,13224,13229,13234,13238,13243,13247,839,13251,13255,13260,13265,13269,13274,13278,1426,13282,13286,2554,13290,13294,13298,2544,13302,13306,13311,13315,13319,4493,13323,13327,13332,13336,13340,3228,13344,13348,13353,13358,13362,13367,13371,915,13375,13379,13384,13389,13393,13398,13402,3242,13406,13410,13414,3239,13418,13422,13426,3225,13430,13434,13439,13443,13447,2998,13451,13455,13460,13464,13469,13473,836,13477,13481,13486,13490,13495,13499,1311,13503,13507,13511,3009,13515,13519,13523,2995,13527,13531,13536,13540,13545,3271,13550,13556,13561,13567,13572,1060,13577,13582,13588,13594,13599,13605,13610,3289,13615,13620,13625,3285,13630,13635,13640,3267,13645,13650,13656,13661,13667,13672,13677,13682,13686,13691,13697,13702,13708,13713,13718,13722,13727,13732,13736,13741,13746,13751,13755,13760,13766,13771,13776,13781,13785,13790,13796,13802,13807,13813,13818,13823,13827,13832,13838,13844,13849,13855,13860,13865,13869,13874,13879,13883,13888,13894,13899,13905,13910,922,13915,13920,13926,13932,13937,13942,4136,13947,13952,13957,13961,13966,13970,1623,13975,13979,429,13983,13987,13992,13997,14001,14006,14010,2537,14014,14018,1620,14022,14026,14030,852,14034,14038,14043,14047,14052,3114,14056,14060,482,14064,14068,14072,3126,14076,14080,14085,14089,14094,14098,1044,14102,14106,14111,14115,14120,14124,3137,14128,14132,464,14136,14140,14144,3123,14148,14152,14157,14161,14165,14169,14172,14176,14181,14185,14189,2864,14193,14197,14202,14207,14211,14216,14220,926,14224,14228,14233,14237,14242,14246,2878,14250,14254,2875,14258,14262,14266,2861,14270,14274,14279,14283,14287,5159,14291,14295,14300,14304,14309,6491,14314,14319,14325,14331,14336,14342,14347,6483,14352,14357,6509,14362,14367,6505,14372,14377,6487,14382,14387,14393,14398,14403,14408,14412,14417,9839,14423,14428,14433,14437,14442,14448,14453,14459,14464,14469,14473,14478,14484,14489,14494,14499,14504,14508,14513,14517,14522,14528,14533,14538,14543,14547,14552,14558,14563,14567,2678,14571,14575,14580,14584,14589,14593,826,14597,14601,14606,14610,14615,14619,1325,14623,14627,2689,14631,14635,14639,2675,14643,14647,14652,14656,14660,14664,14667,14671,14676,14680,14685,6435,14690,14695,14701,14706,14712,14717,992,14722,14727,14732,4430,14737,14742,6449,14747,14752,14757,6431,14762,9853,14767,14772,14776,14781,14787,14792,14797,1464,14802,14807,14813,14818,14824,14829,3166,14834,14839,14844,3162,14849,14854,9858,3144,14859,14864,14870,14875,14880,14885,14889,14894,14900,14905,14910,812,14915,14920,14926,14932,14937,14943,14948,3342,14953,14958,14963,3338,14968,14973,3320,14978,14983,14989,14994,14999,15004,15008,15013,15019,15024,822,15029,15035,15040,15045,10693,15050,15055,15060,15065,15069,15074,15079,15084,15088,15093,15099,15104,15109,15114,15118,15123,15129,15134,15139,4604,15144,15149,15154,15158,15163,15168,15173,15177,15182,15187,15192,15196,15201,15207,15212,15217,15222,15226,15231,15237,15242,15247,988,15252,15257,15263,15268,15274,15279,327,15284,15289,15294,2305,15299,15304,15309,2696,15314,15319,15325,15330,15335,15340,15344,15349,15355,15360,15364,819,15368,15372,15377,15381,15386,15390,2668,15394,15398,2665,15402,15406,15410,2651,15414,15418,15423,15427,15431,4486,15435,15439,15444,15448,15452,3208,15456,15460,15465,15470,15474,15479,15484,15489,15493,15498,15502,3222,15506,15510,15514,3205,15518,15522,15527,9873,15531,5156,15535,15539,15544,15548,15552,2712,15556,15560,15565,9877,15570,15575,15580,3499,15585,15590,15594,2726,15598,15602,15606,2709,15610,15614,15619,15623,15627,15631,15634,15638,15643,15647,15652,4282,15657,15662,15668,15674,15679,15685,15691,15696,15702,15707,4269,15712,15717,15722,4265,15727,15732,15738,15743,15748,15753,15757,15762,15767,10019,15772,15777,15783,15789,15794,15800,15806,15811,15816,10268,15821,15826,10211,9881,15831,15837,15842,15847,15852,15856,15861,15867,15872,15877,2968,15882,15887,15893,15899,15904,15910,9886,15916,15922,15927,2986,15932,15937,15942,2964,15947,15952,15956,2891,15960,15964,15969,9900,15974,15979,15984,15988,15992,2905,15996,16000,16004,16008,16011,16015,16020,16024,16028,347,16032,16036,16041,16046,16050,16055,16060,16065,16069,16074,16078,1318,16082,16086,16090,670,16094,16098,16103,16107,16111,1124,16115,16119,16124,0,0,0,15590,2547,13443,15882,14291,6435,13615,13418,2599,13771,13332,11894,12267,1318,11747,13844,12590,915,0,0,12768,11659,13594,15932,2840,11563,15717,14120,11763,12149,16024,12459,15340,12438,1044,3222,0,15753,13398,15674,3114,3183,15325,13234,5159,14237,14193,13869,15242,0,15284,3338,14319,0,3009,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2995,16128,0,0,16132,0,0,0,16136,0,0,0,0,0,0,0,16140,16144,0,16148,0,16152,0,0,0,0,0,0,16157,0,0,0,16162,0,0,0,16168,0,0,0,0,0,0,0,0,0,0,0,0,16174,0,0,0,0,0,0,3030,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16181,0,0,0,0,0,0,3016,16187,0,0,16192,0,0,0,16197,0,0,0,0,0,0,0,16202,16207,0,16212,0,16217,0,0,0,0,0,0,6584,0,0,0,16223,0,0,0,16228,0,0,0,0,0,0,0,16233,0,0,0,0,0,0,0,0,0,0,0,16238,16242,0,0,16247,0,0,0,16252,0,0,0,0,0,0,0,16257,16262,0,0,0,16267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2998,16273,0,0,16277,0,0,0,16281,0,0,0,0,0,0,0,16285,16289,0,16293,0,16297,0,0,0,0,0,0,806,16302,0,0,1655,0,0,0,16306,16310,0,0,0,0,0,0,16315,16319,0,16323,16327,16332,0,0,0,0,0,0,16337,16341,0,0,16346,0,0,0,16351,0,0,0,0,0,0,0,16356,16361,0,16366,16371,16377,0,0,0,0,0,0,4073,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16389,16393,0,0,16398,0,0,0,16403,0,16408,0,0,0,0,0,16414,16419,0,16424,16429,16435,0,0,0,0,0,0,2851,16441,0,0,16445,0,0,0,16449,0,0,0,0,0,0,0,16453,16457,0,16461,0,16465,0,0,0,0,0,0,16470,0,0,0,16475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16481,0,0,0,0,0,0,0,4061,0,0,0,16488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2854,16493,0,0,16497,0,0,0,16501,0,0,0,0,0,0,0,16505,16509,0,16513,0,16517,0,0,0,0,4993,0,2857,0,0,0,16522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16527,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16532,0,0,0,16536,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16541,0,16546,0,0,0,0,0,0,4069,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2840,16552,0,0,16556,0,0,0,16560,0,0,0,0,0,0,0,10627,16564,0,16568,0,16572,0,0,0,0,0,0,16577,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16582,0,0,0,0,0,0,0,3613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3617,16589,0,0,16594,0,0,0,16599,0,0,0,0,0,0,0,16604,16609,0,0,0,16614,0,0,0,0,0,0,16620,0,0,0,16624,0,0,0,16629,0,0,0,0,0,0,0,16634,0,0,0,0,16639,0,0,0,0,0,0,16645,16649,0,0,16654,0,0,16659,16664,0,16669,0,0,0,0,0,16675,16680,0,16685,0,0,0,0,0,0,0,0,4065,0,0,0,16690,0,0,0,16695,0,0,0,0,0,0,0,16700,16705,0,0,0,0,0,0,0,0,0,0,324,16710,0,0,16714,0,0,0,16718,0,0,0,0,0,0,0,16722,16726,0,16730,0,16734,0,0,0,0,0,0,803,16739,16743,0,16748,0,0,0,16752,0,16756,0,0,0,0,0,16761,16765,0,16769,16773,16778,0,0,0,11713,0,0,16783,16787,0,0,16792,0,0,0,16797,0,0,0,0,0,0,0,16802,16807,0,16812,16817,16823,0,0,0,0,0,0,16829,16833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16838,16842,0,0,16847,0,0,0,16852,0,0,0,0,0,0,0,16857,16862,0,16867,16872,16878,0,0,0,0,0,0,3468,16884,0,0,16888,0,0,0,16892,0,0,0,0,0,0,0,16896,16900,0,16904,0,16908,0,0,0,0,0,0,16913,0,0,0,16918,0,0,0,16924,0,0,0,0,0,0,0,16930,16936,0,0,16942,16949,0,0,0,0,0,0,16956,0,0,0,0,0,0,0,16960,0,0,0,0,0,0,0,0,16965,0,16970,0,0,0,0,0,0,0,0,3471,16975,0,0,16979,0,0,0,16983,0,0,0,0,0,0,0,16987,16991,0,16995,0,16999,0,0,0,0,0,0,2779,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17010,0,0,0,17014,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17019,0,0,0,17023,0,0,0,17028,0,0,0,0,0,0,0,0,17033,0,17038,0,0,0,0,0,0,0,0,3454,17043,0,0,17047,0,0,17051,17055,0,17059,0,0,0,0,0,17064,17068,0,17072,0,17076,0,0,0,0,0,0,17081,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17086,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3577,0,0,0,17093,0,0,0,17098,0,0,0,0,0,0,0,17103,0,0,17108,0,0,0,0,0,0,0,0,17113,0,0,0,17117,0,0,0,17122,0,0,0,0,0,0,0,17127,0,0,17132,0,17137,0,0,0,0,0,0,17143,0,0,0,17147,0,0,0,17152,0,0,0,0,0,0,0,17157,17162,0,17167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3457,17172,0,0,17176,0,0,0,17180,0,0,0,0,0,0,0,17184,17188,0,17192,0,17196,0,0,0,0,0,0,429,17201,0,0,10033,0,0,0,17205,0,0,0,0,17209,0,0,17214,17218,0,17222,0,17226,0,0,0,0,0,0,1616,17231,0,0,17236,0,0,0,17241,0,0,0,0,0,0,0,17246,17251,0,17256,17261,17267,0,0,0,0,0,0,17273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17283,17287,0,0,17292,0,0,0,17297,0,17302,0,0,0,0,0,17308,17313,0,17318,0,17323,0,0,0,0,0,0,1620,17329,0,0,10282,0,0,0,17333,0,0,0,0,0,0,0,17337,17341,0,17345,0,10541,0,0,0,0,0,0,17349,17354,0,0,17360,0,0,0,17366,0,0,0,0,0,0,0,17372,17378,0,17384,17390,17397,0,0,0,0,0,0,17404,0,0,0,17408,0,0,0,17413,0,0,0,0,0,0,0,0,17418,0,0,0,0,0,0,0,0,0,0,2537,17423,0,0,9220,0,0,0,17427,0,0,0,0,17431,0,0,17436,17440,0,17444,0,17448,0,0,0,14006,0,0,4211,17453,0,0,17458,0,0,0,17463,0,0,0,0,0,0,0,0,0,0,17468,0,17473,0,0,0,0,0,0,17479,17484,0,0,17490,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17496,0,17502,0,0,0,0,0,0,1631,17509,0,0,17514,0,0,0,17519,0,0,0,0,0,0,0,0,17524,0,17529,0,17534,0,0,0,0,0,0,17540,0,0,0,17544,0,0,0,17549,0,0,0,0,0,0,0,0,17554,0,17559,0,0,0,0,0,0,0,0,2523,17564,0,0,10169,0,0,0,17568,0,0,0,0,17572,0,0,17577,0,0,17581,0,17585,0,0,0,0,0,0,17590,0,0,0,17595,0,0,0,17601,0,0,0,0,0,0,0,17607,0,0,0,0,17613,0,0,0,0,0,0,4198,17620,0,0,915,17625,17629,17634,1639,17639,17644,17649,17653,17657,17662,17667,17672,17677,17682,17687,17692,17696,17700,17705,17709,17714,17719,17723,17727,13367,13375,17731,17735,17739,17744,17750,17756,17761,17767,17773,17778,17783,17789,17795,17801,17807,17813,17819,17825,17830,17835,17841,17846,17852,17858,17863,17868,17873,17878,17883,6640,17888,17893,17899,17905,17910,17916,17922,17927,17932,17938,17944,17950,17956,17962,17968,17974,17979,17984,17990,17995,18001,18007,18012,18017,18022,18027,18032,18037,18042,18048,18055,18062,18068,18075,18082,18088,18094,18101,18108,18115,18122,18129,18136,18143,18149,18155,18162,18168,18175,18182,18188,18194,18200,18206,18212,1140,18218,18223,18229,18235,18240,18246,18252,18257,18262,18268,18274,18280,18286,18292,18298,18304,18309,18314,18320,18325,18331,18337,18342,18347,18352,18357,18362,3239,18367,18371,18376,10345,18381,18386,18391,18395,18399,18404,18409,18414,18419,18424,18429,18434,18438,18442,18447,18451,18456,18461,18465,18469,13410,13418,18473,18477,18482,18488,18495,18502,18508,18515,18522,18528,18534,18541,18548,18555,18562,18569,18576,18583,18589,18595,18602,18608,18615,18622,18628,18634,18640,18646,18652,6662,18658,18663,18669,18675,18680,18686,18692,18697,18702,18708,18714,18720,18726,18732,18738,18744,18749,18754,18760,18765,18771,18777,18782,18787,18792,18797,18802,3242,18807,18811,18816,18821,18825,18830,18835,18839,18843,18848,18853,18858,18863,18868,18873,18878,18882,18886,18891,18895,18900,18905,18909,18913,13398,13406,18917,3245,18921,18926,18932,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,24,54,24,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18938,18943,18949,18955,18960,18965,18971,18977,18983,18989,18995,19001,19007,19012,19017,19023,19028,19034,19040,19045,19050,19055,19060,19065,19070,19075,19081,19088,19095,19101,19108,19115,19121,19127,19134,19141,19148,19155,19162,19169,19176,19182,19188,19195,19201,19208,19215,19221,19227,19233,19239,19245,19251,19255,19260,19266,19272,19277,19283,19289,19294,19299,19305,19311,19317,19323,19329,19335,19341,19346,19351,19357,19362,19368,19374,19379,19384,19389,19394,19399,6666,19404,19409,19415,10825,19421,19427,19433,19438,19443,19449,19455,19461,19467,19473,19479,19485,19490,19495,19501,19506,19512,19518,19523,19528,19533,19538,19543,3225,19548,19552,19557,19562,19566,19571,19576,19580,19584,19589,19594,19599,19604,19609,19614,19619,19623,19627,19632,19636,19641,19646,19650,19654,13422,13430,19658,19662,19667,19673,19680,19687,19693,19700,19707,19713,19719,19726,19733,19740,19747,19754,19761,19768,19774,19780,19787,19793,19800,19807,19813,19819,19825,19831,19837,3263,19843,19848,19854,19860,19865,19871,19877,19882,19887,19893,19899,19905,19911,19917,19923,19929,19934,19939,19945,19950,19956,19962,19967,19972,19977,19982,19987,3249,19992,19997,20003,20009,20014,20020,20026,20031,20036,20042,20048,20054,20060,20066,20072,20078,20083,20088,20094,20099,20105,20111,20116,20121,20126,20131,20136,6644,20141,20146,20152,20158,20163,20169,20175,20180,20185,20191,20197,20203,20209,20215,20221,20227,20232,20237,20243,20248,20254,20260,20265,20270,20275,20280,20285,20290,20294,20299,20305,20311,20316,20322,20328,20333,20338,20344,20350,20356,20362,20368,20374,20380,20385,20390,20396,7478,8154,20401,20406,20411,20416,20421,20426,6648,20431,20436,20442,20448,20453,20459,20465,20470,20475,20481,20487,20493,20499,20505,20511,20517,20522,20527,20533,20538,20544,20550,20555,20560,20565,20570,20575,3228,20580,20584,20589,20594,20598,20603,20608,20612,20616,20621,20626,20631,20636,20641,20646,20651,20655,20659,20664,20668,20673,20678,20682,20686,13336,13344,20690,1060,20694,20699,20705,20711,20716,20722,20728,20733,20738,20744,20750,20756,20762,20768,20774,20780,20785,20790,20796,20801,20807,20813,20818,20823,13567,13577,20828,20833,20838,20844,20851,20858,20864,20871,20878,20884,20890,20897,20904,20911,20918,20925,20932,20939,20945,20951,20958,20964,20971,20978,20984,20990,20996,21002,21008,21014,21019,21025,21032,21039,21045,21052,21059,21065,21071,21078,21085,21092,21099,21106,21113,21120,21126,21132,21139,21145,21152,21159,21165,21171,21177,21183,21189,21195,21201,21208,21216,21224,21231,21239,21247,21254,21261,21269,21277,21285,21293,21301,21309,21317,21324,21331,21339,21346,21354,21362,21369,21376,21383,21390,21397,21404,21409,21415,21422,21429,21435,21442,21449,21455,21461,21468,21475,21482,21489,21496,21503,21510,21516,21522,21529,21535,21542,21549,21555,21561,21567,21573,21579,3285,21585,21590,21596,21602,21607,21613,21619,21624,21629,21635,21641,21647,21653,21659,21665,21671,21676,21681,21687,21692,21698,21704,21709,21714,13620,13630,21719,21724,21730,21737,21745,21753,21760,21768,21776,21783,21790,21798,21806,21814,21822,21830,21838,21846,21853,21860,21868,21875,21883,21891,21898,21905,21912,21919,21926,21933,21938,21944,21951,21958,21964,21971,21978,21984,21990,21997,22004,22011,22018,22025,22032,22039,22045,22051,22058,22064,22071,22078,22084,22090,22096,22102,22108,3289,22114,22119,22125,22131,22136,22142,22148,22153,22158,22164,22170,22176,22182,22188,22194,22200,22205,22210,22216,22221,22227,22233,22238,22243,13605,13615,22248,6410,22253,22259,22266,22273,22279,22286,22293,22299,22305,22312,22319,22326,22333,22340,22347,22354,22360,22366,22373,22379,22386,22393,22399,22405,22411,22417,22423,22429,22435,22442,22450,22458,22465,22473,22481,22488,22495,22503,22511,22519,22527,22535,22543,22551,22558,22565,22573,22580,22588,22596,22603,22610,22617,22624,22631,22638,22643,22649,22656,22663,22669,22676,22683,22689,22695,22702,22709,22716,22723,22730,22737,22744,22750,22756,22763,22769,22776,22783,22789,22795,22801,22807,22813,22819,22824,22830,22837,22844,22850,22857,22864,22870,22876,22883,22890,22897,22904,22911,22918,22925,22931,22937,22944,22950,22957,22964,22970,22976,22982,22988,22994,3267,23000,23005,23011,23017,23022,23028,23034,23039,23044,23050,23056,23062,23068,23074,23080,23086,23091,23096,23102,23107,23113,23119,23124,23129,13635,13645,23134,23139,23145,23152,23160,23168,23175,23183,23191,23198,23205,23213,23221,23229,23237,23245,23253,23261,23268,23275,23283,23290,23298,23306,23313,23320,23327,23334,23341,6426,23348,23354,23361,23368,23374,23381,23388,23394,23400,23407,23414,23421,23428,23435,23442,23449,23455,23461,23468,23474,23481,23488,23494,23500,23506,23512,23518,6415,23524,23530,23537,23544,23550,23557,23564,23570,23576,23583,23590,23597,23604,23611,23618,23625,23631,23637,23644,23650,23657,23664,23670,23676,23682,23688,23694,23700,23705,23711,23718,23725,23731,23738,23745,23751,23757,23764,23771,23778,23785,23792,23799,23806,23812,23818,23825,23831,23838,23845,23851,23857,23863,23869,23875,23881,23886,23892,23899,23906,23912,23919,23926,23932,23938,23945,23952,23959,23966,23973,23980,23987,23993,23999,24006,24012,24019,24026,24032,24038,24044,24050,24056,24062,24067,24073,24080,24087,24093,24100,24107,24113,24119,24126,24133,24140,24147,24154,24161,24168,24174,24180,24187,24193,24200,24207,24213,24219,24225,24231,24237,3271,24243,24248,24254,24260,24265,24271,24277,24282,24287,24293,24299,24305,24311,24317,24323,24329,24334,24339,24345,24350,24356,24362,24367,24372,13540,24377,24382,842,24387,24391,24396,24401,24405,24410,24415,24419,24423,24428,24433,24438,24443,24448,24453,24458,24462,24466,24471,24475,24480,24485,24489,24493,24497,12997,3488,24501,24505,24510,24516,24522,24527,24533,24539,24544,24549,24555,24561,24567,24573,24579,24585,24591,24596,24601,24607,24612,24618,24624,24629,24634,24639,24644,24649,848,24654,24659,24665,10893,24671,24677,24683,24688,24693,24699,24705,24711,24717,24723,24729,24735,24740,24745,24751,24756,24762,24768,24773,24778,24783,24788,24793,24798,24803,24809,24816,24823,24829,24836,24843,24849,24855,24862,24869,24876,24883,24890,24897,24904,24910,24916,24923,24929,24936,24943,24949,24955,24961,24967,24973,24979,24983,24988,24994,25000,25005,25011,25017,25022,25027,25033,25039,25045,25051,25057,25063,25069,25074,25079,25085,25090,25096,25102,25107,25112,25117,25122,25127,2957,25132,25136,25141,25146,25150,25155,25160,25164,25168,25173,25178,25183,25188,25193,25198,25203,25207,25211,25216,25220,25225,25230,25234,25238,25242,13031,25246,25250,25255,25261,25268,25275,25281,25288,25295,25301,25307,25314,25321,25328,25335,25342,25349,25356,25362,25368,25375,25381,25388,25395,25401,25407,25413,25419,25425,2982,25431,25436,25442,25448,25453,25459,25465,25470,25475,25481,25487,25493,25499,25505,25511,25517,25522,25527,25533,25538,25544,25550,25555,25560,25565,25570,25575,1400,25580,25584,25589,25594,25598,25603,25608,25612,25616,25621,25626,25631,25636,25641,25646,25651,25655,25659,25664,25668,25673,25678,25682,25686,13015,13023,25690,2960,25694,25699,25705,25711,25716,25722,25728,25733,25738,25744,25750,25756,25762,25768,25774,25780,25785,25790,25796,25801,25807,25813,25818,25823,25828,25833,25838,25843,25848,25854,25861,25868,25874,25881,25888,25894,25900,25907,25914,25921,25928,25935,25942,25949,25955,25961,25968,25974,25981,25988,25994,26000,26006,26012,26018,26024,26028,26033,26039,26045,26050,26056,26062,26067,26072,26078,26084,26090,26096,26102,26108,26114,26119,26124,26130,26135,26141,26147,26152,26157,26162,26167,26172,2986,26177,26182,26188,26194,26199,26205,26211,26216,26221,26227,26233,26239,26245,26251,26257,26263,26268,26273,26279,26284,26290,26296,26301,26306,15922,15932,26311,2947,26316,26320,26325,26330,26334,26339,26344,26348,26352,26357,26362,26367,26372,26377,26382,10623,26387,26391,26396,26400,26405,26410,26414,26418,13035,13043,26422,26426,26431,26437,26444,26451,26457,26464,26471,26477,26483,26490,26497,26504,26511,26518,26525,26532,26538,26544,26551,26557,26564,26571,26577,26583,26589,26595,26601,3791,26607,26612,26618,26624,26629,26635,26641,26646,26651,26657,26663,26669,26675,26681,26687,26693,26698,26703,26709,26714,26720,26726,26731,26736,26741,26746,26751,26756,26760,26765,26771,26777,26782,26788,26794,26799,26804,26810,26816,26822,26828,26834,26840,26846,26851,26856,26862,26867,26873,26879,26884,26889,26894,26899,26904,2964,26909,26914,26920,26926,26931,26937,26943,26948,26953,26959,26965,26971,26977,26983,26989,26995,27000,27005,27011,27016,27022,27028,27033,27038,15937,15947,27043,27048,27052,27057,27063,27069,27074,27080,27086,27091,27096,27102,27108,27114,27120,27126,27132,27138,27143,27148,27154,27159,27165,27171,27176,27181,27186,27191,27196,2968,27201,27206,27212,27218,27223,27229,27235,27240,27245,27251,27257,27263,27269,27275,27281,27287,27292,27297,27303,27308,27314,27320,27325,27330,15872,15882,27335,2950,27340,27344,27349,27354,27358,27363,27368,27372,27376,27381,27386,27391,27396,27401,27406,27411,27415,27419,27424,27428,27433,27438,27442,27446,12967,12975,27450,816,27454,27458,27463,27468,27472,27477,27482,681,27486,27491,27496,27501,27506,27511,27516,27521,10919,27525,27530,27534,27539,27544,27548,27552,12510,12518,27556,27560,27564,27569,27575,27581,27586,27592,27598,27603,27608,27614,27620,27626,27632,27638,27644,27650,27655,27660,27666,27671,27677,27683,27688,27693,27698,27703,27708,27713,27717,27722,27728,27734,27739,27745,27751,27756,27761,27767,27773,27779,27785,27791,27797,27803,27808,27813,27819,27824,27830,27836,27841,27846,27851,27856,27861,27866,27871,27877,27884,27891,27897,27904,27911,27917,27923,27930,27937,27944,27951,27958,27965,27972,27978,27984,27991,27997,28004,28011,28017,28023,28029,28035,28041,28047,28051,28056,28062,28068,28073,28079,28085,28090,28095,28101,28107,28113,28119,28125,28131,28137,28142,28147,28153,28158,28164,28170,28175,28180,28185,28190,28195,432,82,28200,28205,28210,28214,28219,28224,28228,28232,28237,28242,28247,28252,28257,28262,28267,28271,28275,28280,28284,28289,28294,28298,28302,28306,12543,28310,28314,28319,28325,28332,28339,28345,28352,28359,28365,28371,28378,28385,28392,28399,28406,28413,28420,28426,28432,28439,28445,28452,28459,28465,28471,28477,28483,28489,28495,28499,28504,28510,28516,28521,28527,28533,28538,28543,28549,28555,28561,28567,28573,28579,28585,28590,28595,28601,28606,28612,28618,28623,28628,28633,28638,28643,3194,28648,28652,28657,1643,28662,28667,28672,28676,28680,28685,28690,28695,28700,28705,28710,28715,28719,28723,28728,28732,28737,28742,28746,28750,618,12535,28754,3197,28758,28763,28769,28775,28780,28786,28792,28797,28802,28808,28814,28820,28826,28832,28838,28844,28849,28854,28860,28865,28871,28877,28882,28887,28892,28897,28902,28907,28912,28918,28925}
#!/bin/sh
#
-# Plugin to monitor the types of requsts made to the API
+# Plugin to monitor the types of requests made to the API
#
# Can be configured through libpq environment variables, for example
# PGUSER, PGDATABASE, etc. See man page of psql for more information.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Command-line interface to the Nominatim functions for import, update,
database administration and querying.
"""
+from typing import Optional, Any, List, Union
import logging
import os
import sys
from nominatim.tools.exec_utils import run_legacy_script, run_php_server
from nominatim.errors import UsageError
from nominatim import clicmd
-from nominatim.clicmd.args import NominatimArgs
+from nominatim import version
+from nominatim.clicmd.args import NominatimArgs, Subcommand
LOG = logging.getLogger()
-
class CommandlineParser:
""" Wraps some of the common functions for parsing the command line
and setting up subcommands.
"""
- def __init__(self, prog, description):
+ def __init__(self, prog: str, description: Optional[str]):
self.parser = argparse.ArgumentParser(
prog=prog,
description=description,
self.subs = self.parser.add_subparsers(title='available commands',
dest='subcommand')
+ # Global arguments that only work if no sub-command given
+ self.parser.add_argument('--version', action='store_true',
+ help='Print Nominatim version and exit')
+
# Arguments added to every sub-command
self.default_args = argparse.ArgumentParser(add_help=False)
group = self.default_args.add_argument_group('Default arguments')
help='Number of parallel threads to use')
- def add_subcommand(self, name, cmd):
+ def nominatim_version_text(self) -> str:
+ """ Program name and version number as string
+ """
+ text = f'Nominatim version {version.version_str()}'
+ if version.GIT_COMMIT_HASH is not None:
+ text += f' ({version.GIT_COMMIT_HASH})'
+ return text
+
+
+ def add_subcommand(self, name: str, cmd: Subcommand) -> None:
""" Add a subcommand to the parser. The subcommand must be a class
with a function add_args() that adds the parameters for the
subcommand and a run() function that executes the command.
"""
+ assert cmd.__doc__ is not None
+
parser = self.subs.add_parser(name, parents=[self.default_args],
help=cmd.__doc__.split('\n', 1)[0],
description=cmd.__doc__,
parser.set_defaults(command=cmd)
cmd.add_args(parser)
- def run(self, **kwargs):
+
+ def run(self, **kwargs: Any) -> int:
""" Parse the command line arguments of the program and execute the
appropriate subcommand.
"""
args = NominatimArgs()
- self.parser.parse_args(args=kwargs.get('cli_args'), namespace=args)
+ try:
+ self.parser.parse_args(args=kwargs.get('cli_args'), namespace=args)
+ except SystemExit:
+ return 1
+
+ if args.version:
+ print(self.nominatim_version_text())
+ return 0
if args.subcommand is None:
self.parser.print_help()
Export addresses as CSV file from the database.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Output arguments')
group.add_argument('--output-type', default='street',
choices=('continent', 'country', 'state', 'county',
help='Export only children of this OSM relation')
- @staticmethod
- def run(args):
- params = ['export.php',
- '--output-type', args.output_type,
- '--output-format', args.output_format]
+ def run(self, args: NominatimArgs) -> int:
+ params: List[Union[int, str]] = [
+ '--output-type', args.output_type,
+ '--output-format', args.output_format]
if args.output_all_postcodes:
params.append('--output-all-postcodes')
if args.language:
if args.restrict_to_osm_relation:
params.extend(('--restrict-to-osm-relation', args.restrict_to_osm_relation))
- return run_legacy_script(*params, nominatim_env=args)
+ return run_legacy_script('export.php', *params, nominatim_env=args)
class AdminServe:
By the default, the webserver can be accessed at: http://127.0.0.1:8088
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Server arguments')
group.add_argument('--server', default='127.0.0.1:8088',
help='The address the server will listen to.')
- @staticmethod
- def run(args):
+
+ def run(self, args: NominatimArgs) -> int:
run_php_server(args.server, args.project_dir / 'website')
+ return 0
+
-def get_set_parser(**kwargs):
+def get_set_parser(**kwargs: Any) -> CommandlineParser:
"""\
Initializes the parser and adds various subcommands for
nominatim cli.
"""
parser = CommandlineParser('nominatim', nominatim.__doc__)
- parser.add_subcommand('import', clicmd.SetupAll)
- parser.add_subcommand('freeze', clicmd.SetupFreeze)
- parser.add_subcommand('replication', clicmd.UpdateReplication)
+ parser.add_subcommand('import', clicmd.SetupAll())
+ parser.add_subcommand('freeze', clicmd.SetupFreeze())
+ parser.add_subcommand('replication', clicmd.UpdateReplication())
- parser.add_subcommand('special-phrases', clicmd.ImportSpecialPhrases)
+ parser.add_subcommand('special-phrases', clicmd.ImportSpecialPhrases())
- parser.add_subcommand('add-data', clicmd.UpdateAddData)
- parser.add_subcommand('index', clicmd.UpdateIndex)
+ parser.add_subcommand('add-data', clicmd.UpdateAddData())
+ parser.add_subcommand('index', clicmd.UpdateIndex())
parser.add_subcommand('refresh', clicmd.UpdateRefresh())
- parser.add_subcommand('admin', clicmd.AdminFuncs)
+ parser.add_subcommand('admin', clicmd.AdminFuncs())
- parser.add_subcommand('export', QueryExport)
- parser.add_subcommand('serve', AdminServe)
+ parser.add_subcommand('export', QueryExport())
+ parser.add_subcommand('serve', AdminServe())
if kwargs.get('phpcgi_path'):
- parser.add_subcommand('search', clicmd.APISearch)
- parser.add_subcommand('reverse', clicmd.APIReverse)
- parser.add_subcommand('lookup', clicmd.APILookup)
- parser.add_subcommand('details', clicmd.APIDetails)
- parser.add_subcommand('status', clicmd.APIStatus)
+ parser.add_subcommand('search', clicmd.APISearch())
+ parser.add_subcommand('reverse', clicmd.APIReverse())
+ parser.add_subcommand('lookup', clicmd.APILookup())
+ parser.add_subcommand('details', clicmd.APIDetails())
+ parser.add_subcommand('status', clicmd.APIStatus())
else:
parser.parser.epilog = 'php-cgi not found. Query commands not available.'
return parser
-def nominatim(**kwargs):
+def nominatim(**kwargs: Any) -> int:
"""\
Command-line tools for importing, updating, administrating and
querying the Nominatim database.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Subcommand definitions for the command-line tool.
"""
+# mypy and pylint disagree about the style of explicit exports,
+# see https://github.com/PyCQA/pylint/issues/6006.
+# pylint: disable=useless-import-alias
-from nominatim.clicmd.setup import SetupAll
-from nominatim.clicmd.replication import UpdateReplication
-from nominatim.clicmd.api import APISearch, APIReverse, APILookup, APIDetails, APIStatus
-from nominatim.clicmd.index import UpdateIndex
-from nominatim.clicmd.refresh import UpdateRefresh
-from nominatim.clicmd.add_data import UpdateAddData
-from nominatim.clicmd.admin import AdminFuncs
-from nominatim.clicmd.freeze import SetupFreeze
-from nominatim.clicmd.special_phrases import ImportSpecialPhrases
+from nominatim.clicmd.setup import SetupAll as SetupAll
+from nominatim.clicmd.replication import UpdateReplication as UpdateReplication
+from nominatim.clicmd.api import (APISearch as APISearch,
+ APIReverse as APIReverse,
+ APILookup as APILookup,
+ APIDetails as APIDetails,
+ APIStatus as APIStatus)
+from nominatim.clicmd.index import UpdateIndex as UpdateIndex
+from nominatim.clicmd.refresh import UpdateRefresh as UpdateRefresh
+from nominatim.clicmd.add_data import UpdateAddData as UpdateAddData
+from nominatim.clicmd.admin import AdminFuncs as AdminFuncs
+from nominatim.clicmd.freeze import SetupFreeze as SetupFreeze
+from nominatim.clicmd.special_phrases import ImportSpecialPhrases as ImportSpecialPhrases
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'add-data' subcommand.
"""
+from typing import cast
+import argparse
import logging
import psutil
+from nominatim.clicmd.args import NominatimArgs
+
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
# Using non-top-level imports to avoid eventually unused imports.
for more information.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group_name = parser.add_argument_group('Source')
- group = group_name.add_mutually_exclusive_group(required=True)
- group.add_argument('--file', metavar='FILE',
- help='Import data from an OSM file or diff file')
- group.add_argument('--diff', metavar='FILE',
- help='Import data from an OSM diff file (deprecated: use --file)')
- group.add_argument('--node', metavar='ID', type=int,
- help='Import a single node from the API')
- group.add_argument('--way', metavar='ID', type=int,
- help='Import a single way from the API')
- group.add_argument('--relation', metavar='ID', type=int,
- help='Import a single relation from the API')
- group.add_argument('--tiger-data', metavar='DIR',
- help='Add housenumbers from the US TIGER census database')
- group = parser.add_argument_group('Extra arguments')
- group.add_argument('--use-main-api', action='store_true',
- help='Use OSM API instead of Overpass to download objects')
- group.add_argument('--osm2pgsql-cache', metavar='SIZE', type=int,
- help='Size of cache to be used by osm2pgsql (in MB)')
- group.add_argument('--socket-timeout', dest='socket_timeout', type=int, default=60,
- help='Set timeout for file downloads')
-
- @staticmethod
- def run(args):
+ group1 = group_name.add_mutually_exclusive_group(required=True)
+ group1.add_argument('--file', metavar='FILE',
+ help='Import data from an OSM file or diff file')
+ group1.add_argument('--diff', metavar='FILE',
+ help='Import data from an OSM diff file (deprecated: use --file)')
+ group1.add_argument('--node', metavar='ID', type=int,
+ help='Import a single node from the API')
+ group1.add_argument('--way', metavar='ID', type=int,
+ help='Import a single way from the API')
+ group1.add_argument('--relation', metavar='ID', type=int,
+ help='Import a single relation from the API')
+ group1.add_argument('--tiger-data', metavar='DIR',
+ help='Add housenumbers from the US TIGER census database')
+ group2 = parser.add_argument_group('Extra arguments')
+ group2.add_argument('--use-main-api', action='store_true',
+ help='Use OSM API instead of Overpass to download objects')
+ group2.add_argument('--osm2pgsql-cache', metavar='SIZE', type=int,
+ help='Size of cache to be used by osm2pgsql (in MB)')
+ group2.add_argument('--socket-timeout', dest='socket_timeout', type=int, default=60,
+ help='Set timeout for file downloads')
+
+
+ def run(self, args: NominatimArgs) -> int:
from nominatim.tokenizer import factory as tokenizer_factory
from nominatim.tools import tiger_data, add_osm_data
osm2pgsql_params = args.osm2pgsql_options(default_cache=1000, default_threads=1)
if args.file or args.diff:
- return add_osm_data.add_data_from_file(args.file or args.diff,
+ return add_osm_data.add_data_from_file(cast(str, args.file or args.diff),
osm2pgsql_params)
if args.node:
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'admin' subcommand.
"""
import logging
+import argparse
from nominatim.tools.exec_utils import run_legacy_script
-from nominatim.db.connection import connect
+from nominatim.clicmd.args import NominatimArgs
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
Analyse and maintain the database.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Admin tasks')
objs = group.add_mutually_exclusive_group(required=True)
objs.add_argument('--warm', action='store_true',
mgroup.add_argument('--place-id', type=int,
help='Analyse indexing of the given Nominatim object')
- @staticmethod
- def run(args):
+ def run(self, args: NominatimArgs) -> int:
if args.warm:
- return AdminFuncs._warm(args)
+ return self._warm(args)
if args.check_database:
LOG.warning('Checking database')
if args.analyse_indexing:
LOG.warning('Analysing performance of indexing function')
from ..tools import admin
- with connect(args.config.get_libpq_dsn()) as conn:
- admin.analyse_indexing(conn, osm_id=args.osm_id, place_id=args.place_id)
+ admin.analyse_indexing(args.config, osm_id=args.osm_id, place_id=args.place_id)
return 0
if args.migrate:
return 1
- @staticmethod
- def _warm(args):
+ def _warm(self, args: NominatimArgs) -> int:
LOG.warning('Warming database caches')
params = ['warm.php']
if args.target == 'reverse':
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Subcommand definitions for API calls from the command line.
"""
+from typing import Mapping, Dict
+import argparse
import logging
from nominatim.tools.exec_utils import run_api_script
from nominatim.errors import UsageError
+from nominatim.clicmd.args import NominatimArgs
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
('polygon_geojson', 'Include geometry of result')
)
-def _add_api_output_arguments(parser):
+def _add_api_output_arguments(parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Output arguments')
group.add_argument('--format', default='jsonv2',
choices=['xml', 'json', 'jsonv2', 'geojson', 'geocodejson'],
"Parameter is difference tolerance in degrees."))
-def _run_api(endpoint, args, params):
+def _run_api(endpoint: str, args: NominatimArgs, params: Mapping[str, object]) -> int:
script_file = args.project_dir / 'website' / (endpoint + '.php')
if not script_file.exists():
https://nominatim.org/release-docs/latest/api/Search/
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Query arguments')
group.add_argument('--query',
help='Free-form query string')
help='Do not remove duplicates from the result list')
- @staticmethod
- def run(args):
+ def run(self, args: NominatimArgs) -> int:
+ params: Dict[str, object]
if args.query:
params = dict(q=args.query)
else:
https://nominatim.org/release-docs/latest/api/Reverse/
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Query arguments')
group.add_argument('--lat', type=float, required=True,
help='Latitude of coordinate to look up (in WGS84)')
_add_api_output_arguments(parser)
- @staticmethod
- def run(args):
+ def run(self, args: NominatimArgs) -> int:
params = dict(lat=args.lat, lon=args.lon, format=args.format)
if args.zoom is not None:
params['zoom'] = args.zoom
https://nominatim.org/release-docs/latest/api/Lookup/
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Query arguments')
group.add_argument('--id', metavar='OSMID',
action='append', required=True, dest='ids',
_add_api_output_arguments(parser)
- @staticmethod
- def run(args):
- params = dict(osm_ids=','.join(args.ids), format=args.format)
+ def run(self, args: NominatimArgs) -> int:
+ params: Dict[str, object] = dict(osm_ids=','.join(args.ids), format=args.format)
for param, _ in EXTRADATA_PARAMS:
if getattr(args, param):
https://nominatim.org/release-docs/latest/api/Details/
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Query arguments')
objs = group.add_mutually_exclusive_group(required=True)
objs.add_argument('--node', '-n', type=int,
group.add_argument('--lang', '--accept-language', metavar='LANGS',
help='Preferred language order for presenting search results')
- @staticmethod
- def run(args):
+
+ def run(self, args: NominatimArgs) -> int:
if args.node:
params = dict(osmtype='N', osmid=args.node)
elif args.way:
https://nominatim.org/release-docs/latest/api/Status/
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('API parameters')
group.add_argument('--format', default='text', choices=['text', 'json'],
help='Format of result')
- @staticmethod
- def run(args):
+
+ def run(self, args: NominatimArgs) -> int:
return _run_api('status', args, dict(format=args.format))
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Provides custom functions over command-line arguments.
"""
+from typing import Optional, List, Dict, Any, Sequence, Tuple
+import argparse
import logging
from pathlib import Path
from nominatim.errors import UsageError
+from nominatim.config import Configuration
+from nominatim.typing import Protocol
LOG = logging.getLogger()
+class Subcommand(Protocol):
+ """
+ Interface to be implemented by classes implementing a CLI subcommand.
+ """
+
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
+ """
+ Fill the given parser for the subcommand with the appropriate
+ parameters.
+ """
+
+ def run(self, args: 'NominatimArgs') -> int:
+ """
+ Run the subcommand with the given parsed arguments.
+ """
+
+
class NominatimArgs:
""" Customized namespace class for the nominatim command line tool
to receive the command-line arguments.
"""
+ # Basic environment set by root program.
+ config: Configuration
+ project_dir: Path
+ module_dir: Path
+ osm2pgsql_path: Path
+ phplib_dir: Path
+ sqllib_dir: Path
+ data_dir: Path
+ config_dir: Path
+ phpcgi_path: Path
+
+ # Global switches
+ version: bool
+ subcommand: Optional[str]
+ command: Subcommand
+
+ # Shared parameters
+ osm2pgsql_cache: Optional[int]
+ socket_timeout: int
+
+ # Arguments added to all subcommands.
+ verbose: int
+ threads: Optional[int]
+
+ # Arguments to 'add-data'
+ file: Optional[str]
+ diff: Optional[str]
+ node: Optional[int]
+ way: Optional[int]
+ relation: Optional[int]
+ tiger_data: Optional[str]
+ use_main_api: bool
+
+ # Arguments to 'admin'
+ warm: bool
+ check_database: bool
+ migrate: bool
+ analyse_indexing: bool
+ target: Optional[str]
+ osm_id: Optional[str]
+ place_id: Optional[int]
+
+ # Arguments to 'import'
+ osm_file: List[str]
+ continue_at: Optional[str]
+ reverse_only: bool
+ no_partitions: bool
+ no_updates: bool
+ offline: bool
+ ignore_errors: bool
+ index_noanalyse: bool
+
+ # Arguments to 'index'
+ boundaries_only: bool
+ no_boundaries: bool
+ minrank: int
+ maxrank: int
+
+ # Arguments to 'export'
+ output_type: str
+ output_format: str
+ output_all_postcodes: bool
+ language: Optional[str]
+ restrict_to_country: Optional[str]
+ restrict_to_osm_node: Optional[int]
+ restrict_to_osm_way: Optional[int]
+ restrict_to_osm_relation: Optional[int]
+
+ # Arguments to 'refresh'
+ postcodes: bool
+ word_tokens: bool
+ word_counts: bool
+ address_levels: bool
+ functions: bool
+ wiki_data: bool
+ importance: bool
+ website: bool
+ diffs: bool
+ enable_debug_statements: bool
+ data_object: Sequence[Tuple[str, int]]
+ data_area: Sequence[Tuple[str, int]]
+
+ # Arguments to 'replication'
+ init: bool
+ update_functions: bool
+ check_for_updates: bool
+ once: bool
+ catch_up: bool
+ do_index: bool
+
+ # Arguments to 'serve'
+ server: str
+
+ # Arguments to 'special-phrases
+ import_from_wiki: bool
+ import_from_csv: Optional[str]
+ no_replace: bool
+
+ # Arguments to all query functions
+ format: str
+ addressdetails: bool
+ extratags: bool
+ namedetails: bool
+ lang: Optional[str]
+ polygon_output: Optional[str]
+ polygon_threshold: Optional[float]
+
+ # Arguments to 'search'
+ query: Optional[str]
+ street: Optional[str]
+ city: Optional[str]
+ county: Optional[str]
+ state: Optional[str]
+ country: Optional[str]
+ postalcode: Optional[str]
+ countrycodes: Optional[str]
+ exclude_place_ids: Optional[str]
+ limit: Optional[int]
+ viewbox: Optional[str]
+ bounded: bool
+ dedupe: bool
+
+ # Arguments to 'reverse'
+ lat: float
+ lon: float
+ zoom: Optional[int]
+
+ # Arguments to 'lookup'
+ ids: Sequence[str]
+
+ # Arguments to 'details'
+ object_class: Optional[str]
+
- def osm2pgsql_options(self, default_cache, default_threads):
+ def osm2pgsql_options(self, default_cache: int,
+ default_threads: int) -> Dict[str, Any]:
""" Return the standard osm2pgsql options that can be derived
from the command line arguments. The resulting dict can be
further customized and then used in `run_osm2pgsql()`.
osm2pgsql_style=self.config.get_import_style_file(),
threads=self.threads or default_threads,
dsn=self.config.get_libpq_dsn(),
- flatnode_file=str(self.config.get_path('FLATNODE_FILE')),
+ flatnode_file=str(self.config.get_path('FLATNODE_FILE') or ''),
tablespaces=dict(slim_data=self.config.TABLESPACE_OSM_DATA,
slim_index=self.config.TABLESPACE_OSM_INDEX,
main_data=self.config.TABLESPACE_PLACE_DATA,
)
- def get_osm_file_list(self):
+ def get_osm_file_list(self) -> Optional[List[Path]]:
""" Return the --osm-file argument as a list of Paths or None
if no argument was given. The function also checks if the files
exist and raises a UsageError if one cannot be found.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'freeze' subcommand.
"""
+import argparse
from nominatim.db.connection import connect
+from nominatim.clicmd.args import NominatimArgs
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
This command has the same effect as the `--no-updates` option for imports.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
pass # No options
- @staticmethod
- def run(args):
+
+ def run(self, args: NominatimArgs) -> int:
from ..tools import freeze
with connect(args.config.get_libpq_dsn()) as conn:
freeze.drop_update_tables(conn)
- freeze.drop_flatnode_file(str(args.config.get_path('FLATNODE_FILE')))
+ freeze.drop_flatnode_file(args.config.get_path('FLATNODE_FILE'))
return 0
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'index' subcommand.
"""
+import argparse
+
import psutil
from nominatim.db import status
from nominatim.db.connection import connect
+from nominatim.clicmd.args import NominatimArgs
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
of indexing. For other cases, this function allows to run indexing manually.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Filter arguments')
group.add_argument('--boundaries-only', action='store_true',
help="""Index only administrative boundaries.""")
group.add_argument('--maxrank', '-R', type=int, metavar='RANK', default=30,
help='Maximum/finishing rank')
- @staticmethod
- def run(args):
+
+ def run(self, args: NominatimArgs) -> int:
from ..indexer.indexer import Indexer
from ..tokenizer import factory as tokenizer_factory
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of 'refresh' subcommand.
"""
+from typing import Tuple, Optional
+import argparse
import logging
from pathlib import Path
+from nominatim.config import Configuration
from nominatim.db.connection import connect
+from nominatim.tokenizer.base import AbstractTokenizer
+from nominatim.clicmd.args import NominatimArgs
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
LOG = logging.getLogger()
+def _parse_osm_object(obj: str) -> Tuple[str, int]:
+ """ Parse the given argument into a tuple of OSM type and ID.
+ Raises an ArgumentError if the format is not recognized.
+ """
+ if len(obj) < 2 or obj[0].lower() not in 'nrw' or not obj[1:].isdigit():
+ raise argparse.ArgumentTypeError("Cannot parse OSM ID. Expect format: [N|W|R]<id>.")
+
+ return (obj[0].upper(), int(obj[1:]))
+
+
class UpdateRefresh:
"""\
Recompute auxiliary data used by the indexing process.
Warning: the 'update' command must not be run in parallel with other update
commands like 'replication' or 'add-data'.
"""
- def __init__(self):
- self.tokenizer = None
+ def __init__(self) -> None:
+ self.tokenizer: Optional[AbstractTokenizer] = None
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Data arguments')
group.add_argument('--postcodes', action='store_true',
help='Update postcode centroid table')
+ group.add_argument('--word-tokens', action='store_true',
+ help='Clean up search terms')
group.add_argument('--word-counts', action='store_true',
help='Compute frequency of full-word search terms')
group.add_argument('--address-levels', action='store_true',
help='Recompute place importances (expensive!)')
group.add_argument('--website', action='store_true',
help='Refresh the directory that serves the scripts for the web API')
+ group.add_argument('--data-object', action='append',
+ type=_parse_osm_object, metavar='OBJECT',
+ help='Mark the given OSM object as requiring an update'
+ ' (format: [NWR]<id>)')
+ group.add_argument('--data-area', action='append',
+ type=_parse_osm_object, metavar='OBJECT',
+ help='Mark the area around the given OSM object as requiring an update'
+ ' (format: [NWR]<id>)')
+
group = parser.add_argument_group('Arguments for function refresh')
group.add_argument('--no-diff-updates', action='store_false', dest='diffs',
help='Do not enable code for propagating updates')
help='Enable debug warning statements in functions')
- def run(self, args):
+ def run(self, args: NominatimArgs) -> int: #pylint: disable=too-many-branches
from ..tools import refresh, postcodes
from ..indexer.indexer import Indexer
LOG.error("The place table doesn't exist. "
"Postcode updates on a frozen database is not possible.")
+ if args.word_tokens:
+ LOG.warning('Updating word tokens')
+ tokenizer = self._get_tokenizer(args.config)
+ tokenizer.update_word_tokens()
+
if args.word_counts:
LOG.warning('Recompute word statistics')
self._get_tokenizer(args.config).update_statistics()
if args.website:
webdir = args.project_dir / 'website'
LOG.warning('Setting up website directory at %s', webdir)
+ # This is a little bit hacky: call the tokenizer setup, so that
+ # the tokenizer directory gets repopulated as well, in case it
+ # wasn't there yet.
+ self._get_tokenizer(args.config)
with connect(args.config.get_libpq_dsn()) as conn:
refresh.setup_website(webdir, args.config, conn)
+ if args.data_object or args.data_area:
+ with connect(args.config.get_libpq_dsn()) as conn:
+ for obj in args.data_object or []:
+ refresh.invalidate_osm_object(*obj, conn, recursive=False)
+ for obj in args.data_area or []:
+ refresh.invalidate_osm_object(*obj, conn, recursive=True)
+ conn.commit()
+
return 0
- def _get_tokenizer(self, config):
+ def _get_tokenizer(self, config: Configuration) -> AbstractTokenizer:
if self.tokenizer is None:
from ..tokenizer import factory as tokenizer_factory
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'replication' sub-command.
"""
+from typing import Optional
+import argparse
import datetime as dt
import logging
import socket
from nominatim.db import status
from nominatim.db.connection import connect
from nominatim.errors import UsageError
+from nominatim.clicmd.args import NominatimArgs
LOG = logging.getLogger()
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
# Using non-top-level imports to make pyosmium optional for replication only.
-# pylint: disable=E0012,C0415
+# pylint: disable=C0415
class UpdateReplication:
"""\
downloads and imports the next batch of updates.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Arguments for initialisation')
group.add_argument('--init', action='store_true',
help='Initialise the update process')
group.add_argument('--socket-timeout', dest='socket_timeout', type=int, default=60,
help='Set timeout for file downloads')
- @staticmethod
- def _init_replication(args):
+
+ def _init_replication(self, args: NominatimArgs) -> int:
from ..tools import replication, refresh
LOG.warning("Initialising replication updates")
return 0
- @staticmethod
- def _check_for_updates(args):
+ def _check_for_updates(self, args: NominatimArgs) -> int:
from ..tools import replication
with connect(args.config.get_libpq_dsn()) as conn:
return replication.check_for_updates(conn, base_url=args.config.REPLICATION_URL)
- @staticmethod
- def _report_update(batchdate, start_import, start_index):
- def round_time(delta):
+
+ def _report_update(self, batchdate: dt.datetime,
+ start_import: dt.datetime,
+ start_index: Optional[dt.datetime]) -> None:
+ def round_time(delta: dt.timedelta) -> dt.timedelta:
return dt.timedelta(seconds=int(delta.total_seconds()))
end = dt.datetime.now(dt.timezone.utc)
LOG.warning("Update completed. Import: %s. %sTotal: %s. Remaining backlog: %s.",
round_time((start_index or end) - start_import),
- "Indexing: {} ".format(round_time(end - start_index))
- if start_index else '',
+ f"Indexing: {round_time(end - start_index)} " if start_index else '',
round_time(end - start_import),
round_time(end - batchdate))
- @staticmethod
- def _compute_update_interval(args):
+ def _compute_update_interval(self, args: NominatimArgs) -> int:
if args.catch_up:
return 0
return update_interval
- @staticmethod
- def _update(args):
+ def _update(self, args: NominatimArgs) -> None:
+ # pylint: disable=too-many-locals
from ..tools import replication
from ..indexer.indexer import Indexer
from ..tokenizer import factory as tokenizer_factory
- update_interval = UpdateReplication._compute_update_interval(args)
+ update_interval = self._compute_update_interval(args)
params = args.osm2pgsql_options(default_cache=2000, default_threads=1)
params.update(base_url=args.config.REPLICATION_URL,
indexer.index_full(analyse=False)
if LOG.isEnabledFor(logging.WARNING):
- UpdateReplication._report_update(batchdate, start, index_start)
+ assert batchdate is not None
+ self._report_update(batchdate, start, index_start)
if args.once or (args.catch_up and state is replication.UpdateState.NO_CHANGES):
break
time.sleep(recheck_interval)
- @staticmethod
- def run(args):
+ def run(self, args: NominatimArgs) -> int:
socket.setdefaulttimeout(args.socket_timeout)
if args.init:
- return UpdateReplication._init_replication(args)
+ return self._init_replication(args)
if args.check_for_updates:
- return UpdateReplication._check_for_updates(args)
+ return self._check_for_updates(args)
- UpdateReplication._update(args)
+ self._update(args)
return 0
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'import' subcommand.
"""
+from typing import Optional
+import argparse
import logging
from pathlib import Path
import psutil
-from nominatim.db.connection import connect
+from nominatim.config import Configuration
+from nominatim.db.connection import connect, Connection
from nominatim.db import status, properties
-from nominatim.version import NOMINATIM_VERSION
+from nominatim.tokenizer.base import AbstractTokenizer
+from nominatim.version import version_str
+from nominatim.clicmd.args import NominatimArgs
+from nominatim.errors import UsageError
# Do not repeat documentation of subcommand classes.
# pylint: disable=C0111
# Using non-top-level imports to avoid eventually unused imports.
-# pylint: disable=E0012,C0415
+# pylint: disable=C0415
LOG = logging.getLogger()
needs superuser rights on the database.
"""
- @staticmethod
- def add_args(parser):
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group_name = parser.add_argument_group('Required arguments')
- group = group_name.add_mutually_exclusive_group(required=True)
- group.add_argument('--osm-file', metavar='FILE', action='append',
+ group1 = group_name.add_mutually_exclusive_group(required=True)
+ group1.add_argument('--osm-file', metavar='FILE', action='append',
help='OSM file to be imported'
' (repeat for importing multiple files)')
- group.add_argument('--continue', dest='continue_at',
+ group1.add_argument('--continue', dest='continue_at',
choices=['load-data', 'indexing', 'db-postprocess'],
help='Continue an import that was interrupted')
- group = parser.add_argument_group('Optional arguments')
- group.add_argument('--osm2pgsql-cache', metavar='SIZE', type=int,
+ group2 = parser.add_argument_group('Optional arguments')
+ group2.add_argument('--osm2pgsql-cache', metavar='SIZE', type=int,
help='Size of cache to be used by osm2pgsql (in MB)')
- group.add_argument('--reverse-only', action='store_true',
+ group2.add_argument('--reverse-only', action='store_true',
help='Do not create tables and indexes for searching')
- group.add_argument('--no-partitions', action='store_true',
+ group2.add_argument('--no-partitions', action='store_true',
help=("Do not partition search indices "
"(speeds up import of single country extracts)"))
- group.add_argument('--no-updates', action='store_true',
+ group2.add_argument('--no-updates', action='store_true',
help="Do not keep tables that are only needed for "
"updating the database later")
- group = parser.add_argument_group('Expert options')
- group.add_argument('--ignore-errors', action='store_true',
+ group2.add_argument('--offline', action='store_true',
+ help="Do not attempt to load any additional data from the internet")
+ group3 = parser.add_argument_group('Expert options')
+ group3.add_argument('--ignore-errors', action='store_true',
help='Continue import even when errors in SQL are present')
- group.add_argument('--index-noanalyse', action='store_true',
+ group3.add_argument('--index-noanalyse', action='store_true',
help='Do not perform analyse operations during index (expert only)')
- @staticmethod
- def run(args):
- from ..tools import database_import, refresh, postcodes, freeze, country_info
+ def run(self, args: NominatimArgs) -> int: # pylint: disable=too-many-statements
+ from ..data import country_info
+ from ..tools import database_import, refresh, postcodes, freeze
from ..indexer.indexer import Indexer
country_info.setup_country_config(args.config)
if args.continue_at is None:
files = args.get_osm_file_list()
+ if not files:
+ raise UsageError("No input files (use --osm-file).")
LOG.warning('Creating database')
database_import.setup_database_skeleton(args.config.get_libpq_dsn(),
drop=args.no_updates,
ignore_errors=args.ignore_errors)
- SetupAll._setup_tables(args.config, args.reverse_only)
+ self._setup_tables(args.config, args.reverse_only)
LOG.warning('Importing wikipedia importance data')
data_path = Path(args.config.WIKIPEDIA_DATA_PATH or args.project_dir)
args.threads or psutil.cpu_count() or 1)
LOG.warning("Setting up tokenizer")
- tokenizer = SetupAll._get_tokenizer(args.continue_at, args.config)
+ tokenizer = self._get_tokenizer(args.continue_at, args.config)
if args.continue_at is None or args.continue_at == 'load-data':
LOG.warning('Calculate postcodes')
if args.continue_at is None or args.continue_at in ('load-data', 'indexing'):
if args.continue_at is not None and args.continue_at != 'load-data':
with connect(args.config.get_libpq_dsn()) as conn:
- SetupAll._create_pending_index(conn, args.config.TABLESPACE_ADDRESS_INDEX)
+ self._create_pending_index(conn, args.config.TABLESPACE_ADDRESS_INDEX)
LOG.warning('Indexing places')
indexer = Indexer(args.config.get_libpq_dsn(), tokenizer,
args.threads or psutil.cpu_count() or 1)
drop=args.no_updates)
LOG.warning('Create search index for default country names.')
country_info.create_country_names(conn, tokenizer,
- args.config.LANGUAGES)
+ args.config.get_str_list('LANGUAGES'))
if args.no_updates:
freeze.drop_update_tables(conn)
tokenizer.finalize_import(args.config)
with connect(args.config.get_libpq_dsn()) as conn:
refresh.setup_website(webdir, args.config, conn)
- SetupAll._set_database_date(args.config.get_libpq_dsn())
+ self._finalize_database(args.config.get_libpq_dsn(), args.offline)
return 0
- @staticmethod
- def _setup_tables(config, reverse_only):
+ def _setup_tables(self, config: Configuration, reverse_only: bool) -> None:
""" Set up the basic database layout: tables, indexes and functions.
"""
from ..tools import database_import, refresh
refresh.create_functions(conn, config, False, False)
- @staticmethod
- def _get_tokenizer(continue_at, config):
+ def _get_tokenizer(self, continue_at: Optional[str],
+ config: Configuration) -> AbstractTokenizer:
""" Set up a new tokenizer or load an already initialised one.
"""
from ..tokenizer import factory as tokenizer_factory
# just load the tokenizer
return tokenizer_factory.get_tokenizer_for_db(config)
- @staticmethod
- def _create_pending_index(conn, tablespace):
+
+ def _create_pending_index(self, conn: Connection, tablespace: str) -> None:
""" Add a supporting index for finding places still to be indexed.
This index is normally created at the end of the import process
LOG.warning('Creating support index')
if tablespace:
tablespace = 'TABLESPACE ' + tablespace
- cur.execute("""CREATE INDEX idx_placex_pendingsector
- ON placex USING BTREE (rank_address,geometry_sector)
- {} WHERE indexed_status > 0
- """.format(tablespace))
+ cur.execute(f"""CREATE INDEX idx_placex_pendingsector
+ ON placex USING BTREE (rank_address,geometry_sector)
+ {tablespace} WHERE indexed_status > 0
+ """)
conn.commit()
- @staticmethod
- def _set_database_date(dsn):
+ def _finalize_database(self, dsn: str, offline: bool) -> None:
""" Determine the database date and set the status accordingly.
"""
with connect(dsn) as conn:
- try:
- dbdate = status.compute_database_date(conn)
- status.set_status(conn, dbdate)
- LOG.info('Database is at %s.', dbdate)
- except Exception as exc: # pylint: disable=broad-except
- LOG.error('Cannot determine date of database: %s', exc)
-
- properties.set_property(conn, 'database_version',
- '{0[0]}.{0[1]}.{0[2]}-{0[3]}'.format(NOMINATIM_VERSION))
+ if not offline:
+ try:
+ dbdate = status.compute_database_date(conn)
+ status.set_status(conn, dbdate)
+ LOG.info('Database is at %s.', dbdate)
+ except Exception as exc: # pylint: disable=broad-except
+ LOG.error('Cannot determine date of database: %s', exc)
+
+ properties.set_property(conn, 'database_version', version_str())
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Implementation of the 'special-phrases' command.
"""
+import argparse
import logging
from pathlib import Path
+
from nominatim.errors import UsageError
from nominatim.db.connection import connect
-from nominatim.tools.special_phrases.sp_importer import SPImporter
+from nominatim.tools.special_phrases.sp_importer import SPImporter, SpecialPhraseLoader
from nominatim.tools.special_phrases.sp_wiki_loader import SPWikiLoader
from nominatim.tools.special_phrases.sp_csv_loader import SPCsvLoader
+from nominatim.clicmd.args import NominatimArgs
LOG = logging.getLogger()
with custom rules into the project directory or by using the `--config`
option to point to another configuration file.
"""
- @staticmethod
- def add_args(parser):
+
+ def add_args(self, parser: argparse.ArgumentParser) -> None:
group = parser.add_argument_group('Input arguments')
group.add_argument('--import-from-wiki', action='store_true',
help='Import special phrases from the OSM wiki to the database')
help='Import special phrases from a CSV file')
group.add_argument('--no-replace', action='store_true',
help='Keep the old phrases and only add the new ones')
- group.add_argument('--config', action='store',
- help='Configuration file for black/white listing '
- '(default: phrase-settings.json)')
- @staticmethod
- def run(args):
+
+ def run(self, args: NominatimArgs) -> int:
+
if args.import_from_wiki:
- ImportSpecialPhrases.start_import(args, SPWikiLoader(args.config))
+ self.start_import(args, SPWikiLoader(args.config))
if args.import_from_csv:
if not Path(args.import_from_csv).is_file():
LOG.fatal("CSV file '%s' does not exist.", args.import_from_csv)
raise UsageError('Cannot access file.')
- ImportSpecialPhrases.start_import(args, SPCsvLoader(args.import_from_csv))
+ self.start_import(args, SPCsvLoader(args.import_from_csv))
return 0
- @staticmethod
- def start_import(args, loader):
+
+ def start_import(self, args: NominatimArgs, loader: SpecialPhraseLoader) -> None:
"""
Create the SPImporter object containing the right
sp loader and then start the import of special phrases.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Nominatim configuration accessor.
"""
+from typing import Dict, Any, List, Mapping, Optional
+import importlib.util
import logging
import os
+import sys
from pathlib import Path
import json
import yaml
from dotenv import dotenv_values
+from nominatim.typing import StrPath
from nominatim.errors import UsageError
LOG = logging.getLogger()
+CONFIG_CACHE : Dict[str, Any] = {}
-
-def flatten_config_list(content, section=''):
+def flatten_config_list(content: Any, section: str = '') -> List[Any]:
""" Flatten YAML configuration lists that contain include sections
which are lists themselves.
"""
avoid conflicts with other environment variables.
"""
- def __init__(self, project_dir, config_dir, environ=None):
+ def __init__(self, project_dir: Path, config_dir: Path,
+ environ: Optional[Mapping[str, str]] = None) -> None:
self.environ = environ or os.environ
self.project_dir = project_dir
self.config_dir = config_dir
self._config.update(dotenv_values(str((project_dir / '.env').resolve())))
class _LibDirs:
- pass
+ module: Path
+ osm2pgsql: Path
+ php: Path
+ sql: Path
+ data: Path
self.lib_dir = _LibDirs()
+ self._private_plugins: Dict[str, object] = {}
+
- def set_libdirs(self, **kwargs):
+ def set_libdirs(self, **kwargs: StrPath) -> None:
""" Set paths to library functions and data.
"""
for key, value in kwargs.items():
setattr(self.lib_dir, key, Path(value).resolve())
- def __getattr__(self, name):
+
+ def __getattr__(self, name: str) -> str:
name = 'NOMINATIM_' + name
if name in self.environ:
return self.environ[name]
- return self._config[name]
+ return self._config[name] or ''
- def get_bool(self, name):
+
+ def get_bool(self, name: str) -> bool:
""" Return the given configuration parameter as a boolean.
Values of '1', 'yes' and 'true' are accepted as truthy values,
everything else is interpreted as false.
"""
- return self.__getattr__(name).lower() in ('1', 'yes', 'true')
+ return getattr(self, name).lower() in ('1', 'yes', 'true')
- def get_int(self, name):
+ def get_int(self, name: str) -> int:
""" Return the given configuration parameter as an int.
"""
try:
- return int(self.__getattr__(name))
+ return int(getattr(self, name))
except ValueError as exp:
LOG.fatal("Invalid setting NOMINATIM_%s. Needs to be a number.", name)
raise UsageError("Configuration error.") from exp
- def get_path(self, name):
+ def get_str_list(self, name: str) -> Optional[List[str]]:
+ """ Return the given configuration parameter as a list of strings.
+ The values are assumed to be given as a comma-sparated list and
+ will be stripped before returning them. On empty values None
+ is returned.
+ """
+ raw = getattr(self, name)
+
+ return [v.strip() for v in raw.split(',')] if raw else None
+
+
+ def get_path(self, name: str) -> Optional[Path]:
""" Return the given configuration parameter as a Path.
If a relative path is configured, then the function converts this
into an absolute path with the project directory as root path.
- If the configuration is unset, a falsy value is returned.
+ If the configuration is unset, None is returned.
"""
- value = self.__getattr__(name)
- if value:
- value = Path(value)
+ value = getattr(self, name)
+ if not value:
+ return None
+
+ cfgpath = Path(value)
- if not value.is_absolute():
- value = self.project_dir / value
+ if not cfgpath.is_absolute():
+ cfgpath = self.project_dir / cfgpath
- value = value.resolve()
+ return cfgpath.resolve()
- return value
- def get_libpq_dsn(self):
+ def get_libpq_dsn(self) -> str:
""" Get configured database DSN converted into the key/value format
understood by libpq and psycopg.
"""
dsn = self.DATABASE_DSN
- def quote_param(param):
+ def quote_param(param: str) -> str:
key, val = param.split('=')
val = val.replace('\\', '\\\\').replace("'", "\\'")
if ' ' in val:
return dsn
- def get_import_style_file(self):
+ def get_import_style_file(self) -> Path:
""" Return the import style file as a path object. Translates the
name of the standard styles automatically into a file in the
config style.
"""
- style = self.__getattr__('IMPORT_STYLE')
+ style = getattr(self, 'IMPORT_STYLE')
if style in ('admin', 'street', 'address', 'full', 'extratags'):
- return self.config_dir / 'import-{}.style'.format(style)
+ return self.config_dir / f'import-{style}.style'
return self.find_config_file('', 'IMPORT_STYLE')
- def get_os_env(self):
+ def get_os_env(self) -> Dict[str, Optional[str]]:
""" Return a copy of the OS environment with the Nominatim configuration
merged in.
"""
return env
- def load_sub_configuration(self, filename, config=None):
+ def load_sub_configuration(self, filename: StrPath,
+ config: Optional[str] = None) -> Any:
""" Load additional configuration from a file. `filename` is the name
of the configuration file. The file is first searched in the
- project directory and then in the global settings dirctory.
+ project directory and then in the global settings directory.
If `config` is set, then the name of the configuration file can
be additionally given through a .env configuration option. When
"""
configfile = self.find_config_file(filename, config)
+ if str(configfile) in CONFIG_CACHE:
+ return CONFIG_CACHE[str(configfile)]
+
if configfile.suffix in ('.yaml', '.yml'):
- return self._load_from_yaml(configfile)
+ result = self._load_from_yaml(configfile)
+ elif configfile.suffix == '.json':
+ with configfile.open('r', encoding='utf-8') as cfg:
+ result = json.load(cfg)
+ else:
+ raise UsageError(f"Config file '{configfile}' has unknown format.")
+
+ CONFIG_CACHE[str(configfile)] = result
+ return result
+
+
+ def load_plugin_module(self, module_name: str, internal_path: str) -> Any:
+ """ Load a Python module as a plugin.
+
+ The module_name may have three variants:
+
+ * A name without any '.' is assumed to be an internal module
+ and will be searched relative to `internal_path`.
+ * If the name ends in `.py`, module_name is assumed to be a
+ file name relative to the project directory.
+ * Any other name is assumed to be an absolute module name.
+
+ In either of the variants the module name must start with a letter.
+ """
+ if not module_name or not module_name[0].isidentifier():
+ raise UsageError(f'Invalid module name {module_name}')
+
+ if '.' not in module_name:
+ module_name = module_name.replace('-', '_')
+ full_module = f'{internal_path}.{module_name}'
+ return sys.modules.get(full_module) or importlib.import_module(full_module)
+
+ if module_name.endswith('.py'):
+ if self.project_dir is None or not (self.project_dir / module_name).exists():
+ raise UsageError(f"Cannot find module '{module_name}' in project directory.")
+
+ if module_name in self._private_plugins:
+ return self._private_plugins[module_name]
+
+ file_path = str(self.project_dir / module_name)
+ spec = importlib.util.spec_from_file_location(module_name, file_path)
+ if spec:
+ module = importlib.util.module_from_spec(spec)
+ # Do not add to global modules because there is no standard
+ # module name that Python can resolve.
+ self._private_plugins[module_name] = module
+ assert spec.loader is not None
+ spec.loader.exec_module(module)
- if configfile.suffix == '.json':
- with configfile.open('r') as cfg:
- return json.load(cfg)
+ return module
- raise UsageError(f"Config file '{configfile}' has unknown format.")
+ return sys.modules.get(module_name) or importlib.import_module(module_name)
- def find_config_file(self, filename, config=None):
+ def find_config_file(self, filename: StrPath,
+ config: Optional[str] = None) -> Path:
""" Resolve the location of a configuration file given a filename and
an optional configuration option with the file name.
Raises a UsageError when the file cannot be found or is not
a regular file.
"""
if config is not None:
- cfg_filename = self.__getattr__(config)
- if cfg_filename:
- cfg_filename = Path(cfg_filename)
+ cfg_value = getattr(self, config)
+ if cfg_value:
+ cfg_filename = Path(cfg_value)
if cfg_filename.is_absolute():
cfg_filename = cfg_filename.resolve()
raise UsageError("Config file not found.")
- def _load_from_yaml(self, cfgfile):
+ def _load_from_yaml(self, cfgfile: Path) -> Any:
""" Load a YAML configuration file. This installs a special handler that
allows to include other YAML files using the '!include' operator.
"""
return yaml.safe_load(cfgfile.read_text(encoding='utf-8'))
- def _yaml_include_representer(self, loader, node):
+ def _yaml_include_representer(self, loader: Any, node: yaml.Node) -> Any:
""" Handler for the '!include' operator in YAML files.
When the filename is relative, then the file is first searched in the
- project directory and then in the global settings dirctory.
+ project directory and then in the global settings directory.
"""
fname = loader.construct_scalar(node)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Functions for importing and managing static country information.
+"""
+from typing import Dict, Any, Iterable, Tuple, Optional, Container, overload
+from pathlib import Path
+import psycopg2.extras
+
+from nominatim.db import utils as db_utils
+from nominatim.db.connection import connect, Connection
+from nominatim.errors import UsageError
+from nominatim.config import Configuration
+from nominatim.tokenizer.base import AbstractTokenizer
+
+def _flatten_name_list(names: Any) -> Dict[str, str]:
+ if names is None:
+ return {}
+
+ if not isinstance(names, dict):
+ raise UsageError("Expected key-value list for names in country_settings.py")
+
+ flat = {}
+ for prefix, remain in names.items():
+ if isinstance(remain, str):
+ flat[prefix] = remain
+ elif not isinstance(remain, dict):
+ raise UsageError("Entries in names must be key-value lists.")
+ else:
+ for suffix, name in remain.items():
+ if suffix == 'default':
+ flat[prefix] = name
+ else:
+ flat[f'{prefix}:{suffix}'] = name
+
+ return flat
+
+
+
+class _CountryInfo:
+ """ Caches country-specific properties from the configuration file.
+ """
+
+ def __init__(self) -> None:
+ self._info: Dict[str, Dict[str, Any]] = {}
+
+
+ def load(self, config: Configuration) -> None:
+ """ Load the country properties from the configuration files,
+ if they are not loaded yet.
+ """
+ if not self._info:
+ self._info = config.load_sub_configuration('country_settings.yaml')
+ for prop in self._info.values():
+ # Convert languages into a list for simpler handling.
+ if 'languages' not in prop:
+ prop['languages'] = []
+ elif not isinstance(prop['languages'], list):
+ prop['languages'] = [x.strip()
+ for x in prop['languages'].split(',')]
+ prop['names'] = _flatten_name_list(prop.get('names'))
+
+
+ def items(self) -> Iterable[Tuple[str, Dict[str, Any]]]:
+ """ Return tuples of (country_code, property dict) as iterable.
+ """
+ return self._info.items()
+
+ def get(self, country_code: str) -> Dict[str, Any]:
+ """ Get country information for the country with the given country code.
+ """
+ return self._info.get(country_code, {})
+
+
+
+_COUNTRY_INFO = _CountryInfo()
+
+
+def setup_country_config(config: Configuration) -> None:
+ """ Load country properties from the configuration file.
+ Needs to be called before using any other functions in this
+ file.
+ """
+ _COUNTRY_INFO.load(config)
+
+@overload
+def iterate() -> Iterable[Tuple[str, Dict[str, Any]]]:
+ ...
+
+@overload
+def iterate(prop: str) -> Iterable[Tuple[str, Any]]:
+ ...
+
+def iterate(prop: Optional[str] = None) -> Iterable[Tuple[str, Dict[str, Any]]]:
+ """ Iterate over country code and properties.
+
+ When `prop` is None, all countries are returned with their complete
+ set of properties.
+
+ If `prop` is given, then only countries are returned where the
+ given property is set. The second item of the tuple contains only
+ the content of the given property.
+ """
+ if prop is None:
+ return _COUNTRY_INFO.items()
+
+ return ((c, p[prop]) for c, p in _COUNTRY_INFO.items() if prop in p)
+
+
+def setup_country_tables(dsn: str, sql_dir: Path, ignore_partitions: bool = False) -> None:
+ """ Create and populate the tables with basic static data that provides
+ the background for geocoding. Data is assumed to not yet exist.
+ """
+ db_utils.execute_file(dsn, sql_dir / 'country_osm_grid.sql.gz')
+
+ params = []
+ for ccode, props in _COUNTRY_INFO.items():
+ if ccode is not None and props is not None:
+ if ignore_partitions:
+ partition = 0
+ else:
+ partition = props.get('partition', 0)
+ lang = props['languages'][0] if len(
+ props['languages']) == 1 else None
+
+ params.append((ccode, props['names'], lang, partition))
+ with connect(dsn) as conn:
+ with conn.cursor() as cur:
+ psycopg2.extras.register_hstore(cur)
+ cur.execute(
+ """ CREATE TABLE public.country_name (
+ country_code character varying(2),
+ name public.hstore,
+ derived_name public.hstore,
+ country_default_language_code text,
+ partition integer
+ ); """)
+ cur.execute_values(
+ """ INSERT INTO public.country_name
+ (country_code, name, country_default_language_code, partition) VALUES %s
+ """, params)
+ conn.commit()
+
+
+def create_country_names(conn: Connection, tokenizer: AbstractTokenizer,
+ languages: Optional[Container[str]] = None) -> None:
+ """ Add default country names to search index. `languages` is a comma-
+ separated list of language codes as used in OSM. If `languages` is not
+ empty then only name translations for the given languages are added
+ to the index.
+ """
+ def _include_key(key: str) -> bool:
+ return ':' not in key or not languages or \
+ key[key.index(':') + 1:] in languages
+
+ with conn.cursor() as cur:
+ psycopg2.extras.register_hstore(cur)
+ cur.execute("""SELECT country_code, name FROM country_name
+ WHERE country_code is not null""")
+
+ with tokenizer.name_analyzer() as analyzer:
+ for code, name in cur:
+ names = {'countrycode': code}
+
+ # country names (only in languages as provided)
+ if name:
+ names.update({k : v for k, v in name.items() if _include_key(k)})
+
+ analyzer.add_country_names(code, names)
+
+ conn.commit()
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Wrapper around place information the indexer gets from the database and hands to
+the tokenizer.
+"""
+from typing import Optional, Mapping, Any, Tuple
+
+class PlaceInfo:
+ """ This data class contains all information the tokenizer can access
+ about a place.
+ """
+
+ def __init__(self, info: Mapping[str, Any]) -> None:
+ self._info = info
+
+
+ @property
+ def name(self) -> Optional[Mapping[str, str]]:
+ """ A dictionary with the names of the place. Keys and values represent
+ the full key and value of the corresponding OSM tag. Which tags
+ are saved as names is determined by the import style.
+ The property may be None if the place has no names.
+ """
+ return self._info.get('name')
+
+
+ @property
+ def address(self) -> Optional[Mapping[str, str]]:
+ """ A dictionary with the address elements of the place. They key
+ usually corresponds to the suffix part of the key of an OSM
+ 'addr:*' or 'isin:*' tag. There are also some special keys like
+ `country` or `country_code` which merge OSM keys that contain
+ the same information. See [Import Styles][1] for details.
+
+ The property may be None if the place has no address information.
+
+ [1]: ../customize/Import-Styles.md
+ """
+ return self._info.get('address')
+
+
+ @property
+ def country_code(self) -> Optional[str]:
+ """ The country code of the country the place is in. Guaranteed
+ to be a two-letter lower-case string. If the place is not inside
+ any country, the property is set to None.
+ """
+ return self._info.get('country_code')
+
+
+ @property
+ def rank_address(self) -> int:
+ """ The [rank address][1] before ant rank correction is applied.
+
+ [1]: ../customize/Ranking.md#address-rank
+ """
+ return self._info.get('rank_address', 0)
+
+
+ @property
+ def centroid(self) -> Optional[Tuple[float, float]]:
+ """ A center point of the place in WGS84. May be None when the
+ geometry of the place is unknown.
+ """
+ x, y = self._info.get('centroid_x'), self._info.get('centroid_y')
+ return None if x is None or y is None else (x, y)
+
+
+ def is_a(self, key: str, value: str) -> bool:
+ """ Set to True when the place's primary tag corresponds to the given
+ key and value.
+ """
+ return self._info.get('class') == key and self._info.get('type') == value
+
+
+ def is_country(self) -> bool:
+ """ Set to True when the place is a valid country boundary.
+ """
+ return self.rank_address == 4 \
+ and self.is_a('boundary', 'administrative') \
+ and self.country_code is not None
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Data class for a single name of a place.
+"""
+from typing import Optional, Dict, Mapping
+
+class PlaceName:
+ """ Each name and address part of a place is encapsulated in an object of
+ this class. It saves not only the name proper but also describes the
+ kind of name with two properties:
+
+ * `kind` describes the name of the OSM key used without any suffixes
+ (i.e. the part after the colon removed)
+ * `suffix` contains the suffix of the OSM tag, if any. The suffix
+ is the part of the key after the first colon.
+
+ In addition to that, a name may have arbitrary additional attributes.
+ How attributes are used, depends on the sanitizers and token analysers.
+ The exception is is the 'analyzer' attribute. This attribute determines
+ which token analysis module will be used to finalize the treatment of
+ names.
+ """
+
+ def __init__(self, name: str, kind: str, suffix: Optional[str]):
+ self.name = name
+ self.kind = kind
+ self.suffix = suffix
+ self.attr: Dict[str, str] = {}
+
+
+ def __repr__(self) -> str:
+ return f"PlaceName(name='{self.name}',kind='{self.kind}',suffix='{self.suffix}')"
+
+
+ def clone(self, name: Optional[str] = None,
+ kind: Optional[str] = None,
+ suffix: Optional[str] = None,
+ attr: Optional[Mapping[str, str]] = None) -> 'PlaceName':
+ """ Create a deep copy of the place name, optionally with the
+ given parameters replaced. In the attribute list only the given
+ keys are updated. The list is not replaced completely.
+ In particular, the function cannot to be used to remove an
+ attribute from a place name.
+ """
+ newobj = PlaceName(name or self.name,
+ kind or self.kind,
+ suffix or self.suffix)
+
+ newobj.attr.update(self.attr)
+ if attr:
+ newobj.attr.update(attr)
+
+ return newobj
+
+
+ def set_attr(self, key: str, value: str) -> None:
+ """ Add the given property to the name. If the property was already
+ set, then the value is overwritten.
+ """
+ self.attr[key] = value
+
+
+ def get_attr(self, key: str, default: Optional[str] = None) -> Optional[str]:
+ """ Return the given property or the value of 'default' if it
+ is not set.
+ """
+ return self.attr.get(key, default)
+
+
+ def has_attr(self, key: str) -> bool:
+ """ Check if the given attribute is set.
+ """
+ return key in self.attr
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Functions for formatting postcodes according to their country-specific
+format.
+"""
+from typing import Any, Mapping, Optional, Set, Match
+import re
+
+from nominatim.errors import UsageError
+from nominatim.data import country_info
+
+class CountryPostcodeMatcher:
+ """ Matches and formats a postcode according to a format definition
+ of the given country.
+ """
+ def __init__(self, country_code: str, config: Mapping[str, Any]) -> None:
+ if 'pattern' not in config:
+ raise UsageError("Field 'pattern' required for 'postcode' "
+ f"for country '{country_code}'")
+
+ pc_pattern = config['pattern'].replace('d', '[0-9]').replace('l', '[A-Z]')
+
+ self.norm_pattern = re.compile(f'\\s*(?:{country_code.upper()}[ -]?)?(.*)\\s*')
+ self.pattern = re.compile(pc_pattern)
+
+ self.output = config.get('output', r'\g<0>')
+
+
+ def match(self, postcode: str) -> Optional[Match[str]]:
+ """ Match the given postcode against the postcode pattern for this
+ matcher. Returns a `re.Match` object if the match was successful
+ and None otherwise.
+ """
+ # Upper-case, strip spaces and leading country code.
+ normalized = self.norm_pattern.fullmatch(postcode.upper())
+
+ if normalized:
+ return self.pattern.fullmatch(normalized.group(1))
+
+ return None
+
+
+ def normalize(self, match: Match[str]) -> str:
+ """ Return the default format of the postcode for the given match.
+ `match` must be a `re.Match` object previously returned by
+ `match()`
+ """
+ return match.expand(self.output)
+
+
+class PostcodeFormatter:
+ """ Container for different postcode formats of the world and
+ access functions.
+ """
+ def __init__(self) -> None:
+ # Objects without a country code can't have a postcode per definition.
+ self.country_without_postcode: Set[Optional[str]] = {None}
+ self.country_matcher = {}
+ self.default_matcher = CountryPostcodeMatcher('', {'pattern': '.*'})
+
+ for ccode, prop in country_info.iterate('postcode'):
+ if prop is False:
+ self.country_without_postcode.add(ccode)
+ elif isinstance(prop, dict):
+ self.country_matcher[ccode] = CountryPostcodeMatcher(ccode, prop)
+ else:
+ raise UsageError(f"Invalid entry 'postcode' for country '{ccode}'")
+
+
+ def set_default_pattern(self, pattern: str) -> None:
+ """ Set the postcode match pattern to use, when a country does not
+ have a specific pattern.
+ """
+ self.default_matcher = CountryPostcodeMatcher('', {'pattern': pattern})
+
+
+ def get_matcher(self, country_code: Optional[str]) -> Optional[CountryPostcodeMatcher]:
+ """ Return the CountryPostcodeMatcher for the given country.
+ Returns None if the country doesn't have a postcode and the
+ default matcher if there is no specific matcher configured for
+ the country.
+ """
+ if country_code in self.country_without_postcode:
+ return None
+
+ assert country_code is not None
+
+ return self.country_matcher.get(country_code, self.default_matcher)
+
+
+ def match(self, country_code: Optional[str], postcode: str) -> Optional[Match[str]]:
+ """ Match the given postcode against the postcode pattern for this
+ matcher. Returns a `re.Match` object if the country has a pattern
+ and the match was successful or None if the match failed.
+ """
+ if country_code in self.country_without_postcode:
+ return None
+
+ assert country_code is not None
+
+ return self.country_matcher.get(country_code, self.default_matcher).match(postcode)
+
+
+ def normalize(self, country_code: str, match: Match[str]) -> str:
+ """ Return the default format of the postcode for the given match.
+ `match` must be a `re.Match` object previously returned by
+ `match()`
+ """
+ return self.country_matcher.get(country_code, self.default_matcher).normalize(match)
# SPDX-License-Identifier: GPL-2.0-only
#
-# This file is part of Nominatim.
-# Copyright (C) 2021 by the Nominatim developer community.
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
# For a full list of authors see the git log.
-""" Database helper functions for the indexer.
+""" Non-blocking database connections.
"""
+from typing import Callable, Any, Optional, Iterator, Sequence
import logging
import select
import time
except ImportError:
__has_psycopg2_errors__ = False
+from nominatim.typing import T_cursor, Query
+
LOG = logging.getLogger()
class DeadlockHandler:
normally.
"""
- def __init__(self, handler, ignore_sql_errors=False):
+ def __init__(self, handler: Callable[[], None], ignore_sql_errors: bool = False) -> None:
self.handler = handler
self.ignore_sql_errors = ignore_sql_errors
- def __enter__(self):
+ def __enter__(self) -> 'DeadlockHandler':
return self
- def __exit__(self, exc_type, exc_value, traceback):
+ def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> bool:
if __has_psycopg2_errors__:
if exc_type == psycopg2.errors.DeadlockDetected: # pylint: disable=E1101
self.handler()
""" A single non-blocking database connection.
"""
- def __init__(self, dsn, cursor_factory=None, ignore_sql_errors=False):
- self.current_query = None
- self.current_params = None
+ def __init__(self, dsn: str,
+ cursor_factory: Optional[Callable[..., T_cursor]] = None,
+ ignore_sql_errors: bool = False) -> None:
self.dsn = dsn
+
+ self.current_query: Optional[Query] = None
+ self.current_params: Optional[Sequence[Any]] = None
self.ignore_sql_errors = ignore_sql_errors
- self.conn = None
- self.cursor = None
+ self.conn: Optional['psycopg2.connection'] = None
+ self.cursor: Optional['psycopg2.cursor'] = None
self.connect(cursor_factory=cursor_factory)
- def close(self):
+ def close(self) -> None:
""" Close all open connections. Does not wait for pending requests.
"""
if self.conn is not None:
- self.cursor.close()
+ if self.cursor is not None:
+ self.cursor.close() # type: ignore[no-untyped-call]
+ self.cursor = None
self.conn.close()
self.conn = None
- def connect(self, cursor_factory=None):
+ def connect(self, cursor_factory: Optional[Callable[..., T_cursor]] = None) -> None:
""" (Re)connect to the database. Creates an asynchronous connection
with JIT and parallel processing disabled. If a connection was
already open, it is closed and a new connection established.
self.conn = psycopg2.connect(**{'dsn': self.dsn, 'async': True})
self.wait()
- self.cursor = self.conn.cursor(cursor_factory=cursor_factory)
+ if cursor_factory is not None:
+ self.cursor = self.conn.cursor(cursor_factory=cursor_factory)
+ else:
+ self.cursor = self.conn.cursor()
# Disable JIT and parallel workers as they are known to cause problems.
# Update pg_settings instead of using SET because it does not yield
# errors on older versions of Postgres where the settings are not
WHERE name = 'max_parallel_workers_per_gather';""")
self.wait()
- def _deadlock_handler(self):
+ def _deadlock_handler(self) -> None:
LOG.info("Deadlock detected (params = %s), retry.", str(self.current_params))
+ assert self.cursor is not None
+ assert self.current_query is not None
+ assert self.current_params is not None
+
self.cursor.execute(self.current_query, self.current_params)
- def wait(self):
+ def wait(self) -> None:
""" Block until any pending operation is done.
"""
while True:
self.current_query = None
return
- def perform(self, sql, args=None):
+ def perform(self, sql: Query, args: Optional[Sequence[Any]] = None) -> None:
""" Send SQL query to the server. Returns immediately without
blocking.
"""
+ assert self.cursor is not None
self.current_query = sql
self.current_params = args
self.cursor.execute(sql, args)
- def fileno(self):
+ def fileno(self) -> int:
""" File descriptor to wait for. (Makes this class select()able.)
"""
+ assert self.conn is not None
return self.conn.fileno()
- def is_done(self):
+ def is_done(self) -> bool:
""" Check if the connection is available for a new query.
Also checks if the previous query has run into a deadlock.
If so, then the previous query is repeated.
"""
+ assert self.conn is not None
+
if self.current_query is None:
return True
"""
REOPEN_CONNECTIONS_AFTER = 100000
- def __init__(self, dsn, pool_size, ignore_sql_errors=False):
+ def __init__(self, dsn: str, pool_size: int, ignore_sql_errors: bool = False) -> None:
self.threads = [DBConnection(dsn, ignore_sql_errors=ignore_sql_errors)
for _ in range(pool_size)]
self.free_workers = self._yield_free_worker()
- self.wait_time = 0
+ self.wait_time = 0.0
- def finish_all(self):
+ def finish_all(self) -> None:
""" Wait for all connection to finish.
"""
for thread in self.threads:
self.free_workers = self._yield_free_worker()
- def close(self):
+ def close(self) -> None:
""" Close all connections and clear the pool.
"""
for thread in self.threads:
thread.close()
self.threads = []
- self.free_workers = None
+ self.free_workers = iter([])
- def next_free_worker(self):
+ def next_free_worker(self) -> DBConnection:
""" Get the next free connection.
"""
return next(self.free_workers)
- def _yield_free_worker(self):
+ def _yield_free_worker(self) -> Iterator[DBConnection]:
ready = self.threads
command_stat = 0
while True:
self.wait_time += time.time() - tstart
- def _reconnect_threads(self):
+ def _reconnect_threads(self) -> None:
for thread in self.threads:
while not thread.is_done():
thread.wait()
thread.connect()
- def __enter__(self):
+ def __enter__(self) -> 'WorkerPool':
return self
- def __exit__(self, exc_type, exc_value, traceback):
+ def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
self.finish_all()
self.close()
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Specialised connection and cursor functions.
"""
+from typing import Optional, Any, Callable, ContextManager, Dict, cast, overload, Tuple, Iterable
import contextlib
import logging
import os
import psycopg2.extras
from psycopg2 import sql as pysql
+from nominatim.typing import SysEnv, Query, T_cursor
from nominatim.errors import UsageError
LOG = logging.getLogger()
-class _Cursor(psycopg2.extras.DictCursor):
+class Cursor(psycopg2.extras.DictCursor):
""" A cursor returning dict-like objects and providing specialised
execution functions.
"""
-
- def execute(self, query, args=None): # pylint: disable=W0221
+ # pylint: disable=arguments-renamed,arguments-differ
+ def execute(self, query: Query, args: Any = None) -> None:
""" Query execution that logs the SQL query when debugging is enabled.
"""
- LOG.debug(self.mogrify(query, args).decode('utf-8'))
+ if LOG.isEnabledFor(logging.DEBUG):
+ LOG.debug(self.mogrify(query, args).decode('utf-8')) # type: ignore[no-untyped-call]
super().execute(query, args)
- def execute_values(self, sql, argslist, template=None):
+ def execute_values(self, sql: Query, argslist: Iterable[Tuple[Any, ...]],
+ template: Optional[Query] = None) -> None:
""" Wrapper for the psycopg2 convenience function to execute
SQL for a list of values.
"""
psycopg2.extras.execute_values(self, sql, argslist, template=template)
- def scalar(self, sql, args=None):
+ def scalar(self, sql: Query, args: Any = None) -> Any:
""" Execute query that returns a single value. The value is returned.
If the query yields more than one row, a ValueError is raised.
"""
if self.rowcount != 1:
raise RuntimeError("Query did not return a single row.")
- return self.fetchone()[0]
+ result = self.fetchone()
+ assert result is not None
+
+ return result[0]
- def drop_table(self, name, if_exists=True, cascade=False):
+ def drop_table(self, name: str, if_exists: bool = True, cascade: bool = False) -> None:
""" Drop the table with the given name.
- Set `if_exists` to False if a non-existant table should raise
+ Set `if_exists` to False if a non-existent table should raise
an exception instead of just being ignored. If 'cascade' is set
to True then all dependent tables are deleted as well.
"""
self.execute(pysql.SQL(sql).format(pysql.Identifier(name)))
-class _Connection(psycopg2.extensions.connection):
+class Connection(psycopg2.extensions.connection):
""" A connection that provides the specialised cursor by default and
adds convenience functions for administrating the database.
"""
+ @overload # type: ignore[override]
+ def cursor(self) -> Cursor:
+ ...
+
+ @overload
+ def cursor(self, name: str) -> Cursor:
+ ...
- def cursor(self, cursor_factory=_Cursor, **kwargs):
+ @overload
+ def cursor(self, cursor_factory: Callable[..., T_cursor]) -> T_cursor:
+ ...
+
+ def cursor(self, cursor_factory = Cursor, **kwargs): # type: ignore
""" Return a new cursor. By default the specialised cursor is returned.
"""
return super().cursor(cursor_factory=cursor_factory, **kwargs)
- def table_exists(self, table):
+ def table_exists(self, table: str) -> bool:
""" Check that a table with the given name exists in the database.
"""
with self.cursor() as cur:
num = cur.scalar("""SELECT count(*) FROM pg_tables
WHERE tablename = %s and schemaname = 'public'""", (table, ))
- return num == 1
+ return num == 1 if isinstance(num, int) else False
+
+
+ def table_has_column(self, table: str, column: str) -> bool:
+ """ Check if the table 'table' exists and has a column with name 'column'.
+ """
+ with self.cursor() as cur:
+ has_column = cur.scalar("""SELECT count(*) FROM information_schema.columns
+ WHERE table_name = %s
+ and column_name = %s""",
+ (table, column))
+ return has_column > 0 if isinstance(has_column, int) else False
- def index_exists(self, index, table=None):
+ def index_exists(self, index: str, table: Optional[str] = None) -> bool:
""" Check that an index with the given name exists in the database.
If table is not None then the index must relate to the given
table.
if table is not None:
row = cur.fetchone()
+ if row is None or not isinstance(row[0], str):
+ return False
return row[0] == table
return True
- def drop_table(self, name, if_exists=True, cascade=False):
+ def drop_table(self, name: str, if_exists: bool = True, cascade: bool = False) -> None:
""" Drop the table with the given name.
- Set `if_exists` to False if a non-existant table should raise
+ Set `if_exists` to False if a non-existent table should raise
an exception instead of just being ignored.
"""
with self.cursor() as cur:
self.commit()
- def server_version_tuple(self):
+ def server_version_tuple(self) -> Tuple[int, int]:
""" Return the server version as a tuple of (major, minor).
Converts correctly for pre-10 and post-10 PostgreSQL versions.
"""
version = self.server_version
if version < 100000:
- return (int(version / 10000), (version % 10000) / 100)
+ return (int(version / 10000), int((version % 10000) / 100))
return (int(version / 10000), version % 10000)
- def postgis_version_tuple(self):
+ def postgis_version_tuple(self) -> Tuple[int, int]:
""" Return the postgis version installed in the database as a
tuple of (major, minor). Assumes that the PostGIS extension
has been installed already.
with self.cursor() as cur:
version = cur.scalar('SELECT postgis_lib_version()')
- return tuple((int(x) for x in version.split('.')[:2]))
+ version_parts = version.split('.')
+ if len(version_parts) < 2:
+ raise UsageError(f"Error fetching Postgis version. Bad format: {version}")
+ return (int(version_parts[0]), int(version_parts[1]))
+
+class ConnectionContext(ContextManager[Connection]):
+ """ Context manager of the connection that also provides direct access
+ to the underlying connection.
+ """
+ connection: Connection
-def connect(dsn):
+def connect(dsn: str) -> ConnectionContext:
""" Open a connection to the database using the specialised connection
factory. The returned object may be used in conjunction with 'with'.
When used outside a context manager, use the `connection` attribute
to get the connection.
"""
try:
- conn = psycopg2.connect(dsn, connection_factory=_Connection)
- ctxmgr = contextlib.closing(conn)
- ctxmgr.connection = conn
+ conn = psycopg2.connect(dsn, connection_factory=Connection)
+ ctxmgr = cast(ConnectionContext, contextlib.closing(conn))
+ ctxmgr.connection = cast(Connection, conn)
return ctxmgr
except psycopg2.OperationalError as err:
- raise UsageError("Cannot connect to database: {}".format(err)) from err
+ raise UsageError(f"Cannot connect to database: {err}") from err
# Translation from PG connection string parameters to PG environment variables.
}
-def get_pg_env(dsn, base_env=None):
+def get_pg_env(dsn: str,
+ base_env: Optional[SysEnv] = None) -> Dict[str, str]:
""" Return a copy of `base_env` with the environment variables for
PostgresSQL set up from the given database connection string.
If `base_env` is None, then the OS environment is used as a base
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Query and access functions for the in-database property table.
"""
+from typing import Optional, cast
-def set_property(conn, name, value):
- """ Add or replace the propery with the given name.
+from nominatim.db.connection import Connection
+
+def set_property(conn: Connection, name: str, value: str) -> None:
+ """ Add or replace the property with the given name.
"""
with conn.cursor() as cur:
cur.execute('SELECT value FROM nominatim_properties WHERE property = %s',
cur.execute(sql, (value, name))
conn.commit()
-def get_property(conn, name):
- """ Return the current value of the given propery or None if the property
+
+def get_property(conn: Connection, name: str) -> Optional[str]:
+ """ Return the current value of the given property or None if the property
is not set.
"""
+ if not conn.table_exists('nominatim_properties'):
+ return None
+
with conn.cursor() as cur:
cur.execute('SELECT value FROM nominatim_properties WHERE property = %s',
(name, ))
- return cur.fetchone()[0] if cur.rowcount > 0 else None
+ if cur.rowcount == 0:
+ return None
+
+ result = cur.fetchone()
+ assert result is not None
+
+ return cast(Optional[str], result[0])
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Preprocessing of SQL files.
"""
+from typing import Set, Dict, Any
import jinja2
+from nominatim.db.connection import Connection
+from nominatim.config import Configuration
-def _get_partitions(conn):
+def _get_partitions(conn: Connection) -> Set[int]:
""" Get the set of partitions currently in use.
"""
with conn.cursor() as cur:
return partitions
-def _get_tables(conn):
+def _get_tables(conn: Connection) -> Set[str]:
""" Return the set of tables currently in use.
Only includes non-partitioned
"""
return set((row[0] for row in list(cur)))
-def _setup_tablespace_sql(config):
+def _setup_tablespace_sql(config: Configuration) -> Dict[str, str]:
""" Returns a dict with tablespace expressions for the different tablespace
kinds depending on whether a tablespace is configured or not.
"""
out = {}
for subset in ('ADDRESS', 'SEARCH', 'AUX'):
for kind in ('DATA', 'INDEX'):
- tspace = getattr(config, 'TABLESPACE_{}_{}'.format(subset, kind))
+ tspace = getattr(config, f'TABLESPACE_{subset}_{kind}')
if tspace:
- tspace = 'TABLESPACE "{}"'.format(tspace)
- out['{}_{}'.format(subset.lower(), kind.lower())] = tspace
+ tspace = f'TABLESPACE "{tspace}"'
+ out[f'{subset.lower()}_{kind.lower()}'] = tspace
return out
-def _setup_postgresql_features(conn):
+def _setup_postgresql_features(conn: Connection) -> Dict[str, Any]:
""" Set up a dictionary with various optional Postgresql/Postgis features that
depend on the database version.
"""
and follows its syntax.
"""
- def __init__(self, conn, config):
+ def __init__(self, conn: Connection, config: Configuration) -> None:
self.env = jinja2.Environment(autoescape=False,
loader=jinja2.FileSystemLoader(str(config.lib_dir.sql)))
- db_info = {}
+ db_info: Dict[str, Any] = {}
db_info['partitions'] = _get_partitions(conn)
db_info['tables'] = _get_tables(conn)
db_info['reverse_only'] = 'search_name' not in db_info['tables']
self.env.globals['postgres'] = _setup_postgresql_features(conn)
- def run_sql_file(self, conn, name, **kwargs):
+ def run_sql_file(self, conn: Connection, name: str, **kwargs: Any) -> None:
""" Execute the given SQL file on the connection. The keyword arguments
may supply additional parameters for preprocessing.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Access and helper functions for the status and status log table.
"""
+from typing import Optional, Tuple, cast
import datetime as dt
import logging
import re
+from nominatim.db.connection import Connection
from nominatim.tools.exec_utils import get_url
from nominatim.errors import UsageError
+from nominatim.typing import TypedDict
LOG = logging.getLogger()
ISODATE_FORMAT = '%Y-%m-%dT%H:%M:%S'
-def compute_database_date(conn):
+
+class StatusRow(TypedDict):
+ """ Dictionary of columns of the import_status table.
+ """
+ lastimportdate: dt.datetime
+ sequence_id: Optional[int]
+ indexed: Optional[bool]
+
+
+def compute_database_date(conn: Connection) -> dt.datetime:
""" Determine the date of the database from the newest object in the
data base.
"""
LOG.info("Using node id %d for timestamp lookup", osmid)
# Get the node from the API to find the timestamp when it was created.
- node_url = 'https://www.openstreetmap.org/api/0.6/node/{}/1'.format(osmid)
+ node_url = f'https://www.openstreetmap.org/api/0.6/node/{osmid}/1'
data = get_url(node_url)
match = re.search(r'timestamp="((\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}))Z"', data)
return dt.datetime.strptime(match.group(1), ISODATE_FORMAT).replace(tzinfo=dt.timezone.utc)
-def set_status(conn, date, seq=None, indexed=True):
+def set_status(conn: Connection, date: Optional[dt.datetime],
+ seq: Optional[int] = None, indexed: bool = True) -> None:
""" Replace the current status with the given status. If date is `None`
then only sequence and indexed will be updated as given. Otherwise
the whole status is replaced.
+ The change will be committed to the database.
"""
assert date is None or date.tzinfo == dt.timezone.utc
with conn.cursor() as cur:
conn.commit()
-def get_status(conn):
+def get_status(conn: Connection) -> Tuple[Optional[dt.datetime], Optional[int], Optional[bool]]:
""" Return the current status as a triple of (date, sequence, indexed).
If status has not been set up yet, a triple of None is returned.
"""
if cur.rowcount < 1:
return None, None, None
- row = cur.fetchone()
+ row = cast(StatusRow, cur.fetchone())
return row['lastimportdate'], row['sequence_id'], row['indexed']
-def set_indexed(conn, state):
+def set_indexed(conn: Connection, state: bool) -> None:
""" Set the indexed flag in the status table to the given state.
"""
with conn.cursor() as cur:
conn.commit()
-def log_status(conn, start, event, batchsize=None):
+def log_status(conn: Connection, start: dt.datetime,
+ event: str, batchsize: Optional[int] = None) -> None:
""" Write a new status line to the `import_osmosis_log` table.
"""
with conn.cursor() as cur:
(batchend, batchseq, batchsize, starttime, endtime, event)
SELECT lastimportdate, sequence_id, %s, %s, now(), %s FROM import_status""",
(batchsize, start, event))
+ conn.commit()
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Helper functions for handling DB accesses.
"""
+from typing import IO, Optional, Union, Any, Iterable
import subprocess
import logging
import gzip
import io
+from pathlib import Path
-from nominatim.db.connection import get_pg_env
+from nominatim.db.connection import get_pg_env, Cursor
from nominatim.errors import UsageError
LOG = logging.getLogger()
-def _pipe_to_proc(proc, fdesc):
+def _pipe_to_proc(proc: 'subprocess.Popen[bytes]',
+ fdesc: Union[IO[bytes], gzip.GzipFile]) -> int:
+ assert proc.stdin is not None
chunk = fdesc.read(2048)
while chunk and proc.poll() is None:
try:
return len(chunk)
-def execute_file(dsn, fname, ignore_errors=False, pre_code=None, post_code=None):
+def execute_file(dsn: str, fname: Path,
+ ignore_errors: bool = False,
+ pre_code: Optional[str] = None,
+ post_code: Optional[str] = None) -> None:
""" Read an SQL file and run its contents against the given database
using psql. Use `pre_code` and `post_code` to run extra commands
before or after executing the file. The commands are run within the
cmd.extend(('-v', 'ON_ERROR_STOP=1'))
if not LOG.isEnabledFor(logging.INFO):
cmd.append('--quiet')
- proc = subprocess.Popen(cmd, env=get_pg_env(dsn), stdin=subprocess.PIPE)
- try:
- if not LOG.isEnabledFor(logging.INFO):
- proc.stdin.write('set client_min_messages to WARNING;'.encode('utf-8'))
+ with subprocess.Popen(cmd, env=get_pg_env(dsn), stdin=subprocess.PIPE) as proc:
+ assert proc.stdin is not None
+ try:
+ if not LOG.isEnabledFor(logging.INFO):
+ proc.stdin.write('set client_min_messages to WARNING;'.encode('utf-8'))
- if pre_code:
- proc.stdin.write((pre_code + ';').encode('utf-8'))
+ if pre_code:
+ proc.stdin.write((pre_code + ';').encode('utf-8'))
- if fname.suffix == '.gz':
- with gzip.open(str(fname), 'rb') as fdesc:
- remain = _pipe_to_proc(proc, fdesc)
- else:
- with fname.open('rb') as fdesc:
- remain = _pipe_to_proc(proc, fdesc)
+ if fname.suffix == '.gz':
+ with gzip.open(str(fname), 'rb') as fdesc:
+ remain = _pipe_to_proc(proc, fdesc)
+ else:
+ with fname.open('rb') as fdesc:
+ remain = _pipe_to_proc(proc, fdesc)
- if remain == 0 and post_code:
- proc.stdin.write((';' + post_code).encode('utf-8'))
- finally:
- proc.stdin.close()
- ret = proc.wait()
+ if remain == 0 and post_code:
+ proc.stdin.write((';' + post_code).encode('utf-8'))
+ finally:
+ proc.stdin.close()
+ ret = proc.wait()
if ret != 0 or remain > 0:
raise UsageError("Failed to execute SQL file.")
# List of characters that need to be quoted for the copy command.
-_SQL_TRANSLATION = {ord(u'\\'): u'\\\\',
- ord(u'\t'): u'\\t',
- ord(u'\n'): u'\\n'}
+_SQL_TRANSLATION = {ord('\\'): '\\\\',
+ ord('\t'): '\\t',
+ ord('\n'): '\\n'}
class CopyBuffer:
""" Data collector for the copy_from command.
"""
- def __init__(self):
+ def __init__(self) -> None:
self.buffer = io.StringIO()
- def __enter__(self):
+ def __enter__(self) -> 'CopyBuffer':
return self
- def __exit__(self, exc_type, exc_value, traceback):
+ def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
if self.buffer is not None:
self.buffer.close()
- def add(self, *data):
+ def add(self, *data: Any) -> None:
""" Add another row of data to the copy buffer.
"""
first = True
self.buffer.write('\n')
- def copy_out(self, cur, table, columns=None):
+ def copy_out(self, cur: Cursor, table: str, columns: Optional[Iterable[str]] = None) -> None:
""" Copy all collected data into the given table.
"""
if self.buffer.tell() > 0:
self.buffer.seek(0)
- cur.copy_from(self.buffer, table, columns=columns)
+ cur.copy_from(self.buffer, table, columns=columns) # type: ignore[no-untyped-call]
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Custom exception and error classes for Nominatim.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Main work horse for indexing (computing addresses) the database.
"""
+from typing import Optional, Any, cast
import logging
import time
import psycopg2.extras
+from nominatim.tokenizer.base import AbstractTokenizer
from nominatim.indexer.progress import ProgressLogger
from nominatim.indexer import runners
from nominatim.db.async_connection import DBConnection, WorkerPool
-from nominatim.db.connection import connect
+from nominatim.db.connection import connect, Connection, Cursor
+from nominatim.typing import DictCursorResults
LOG = logging.getLogger()
class PlaceFetcher:
""" Asynchronous connection that fetches place details for processing.
"""
- def __init__(self, dsn, setup_conn):
- self.wait_time = 0
- self.current_ids = None
- self.conn = DBConnection(dsn, cursor_factory=psycopg2.extras.DictCursor)
+ def __init__(self, dsn: str, setup_conn: Connection) -> None:
+ self.wait_time = 0.0
+ self.current_ids: Optional[DictCursorResults] = None
+ self.conn: Optional[DBConnection] = DBConnection(dsn,
+ cursor_factory=psycopg2.extras.DictCursor)
with setup_conn.cursor() as cur:
# need to fetch those manually because register_hstore cannot
psycopg2.extras.register_hstore(self.conn.conn, oid=hstore_oid,
array_oid=hstore_array_oid)
- def close(self):
+ def close(self) -> None:
""" Close the underlying asynchronous connection.
"""
if self.conn:
self.conn = None
- def fetch_next_batch(self, cur, runner):
+ def fetch_next_batch(self, cur: Cursor, runner: runners.Runner) -> bool:
""" Send a request for the next batch of places.
If details for the places are required, they will be fetched
asynchronously.
Returns true if there is still data available.
"""
- ids = cur.fetchmany(100)
+ ids = cast(Optional[DictCursorResults], cur.fetchmany(100))
if not ids:
self.current_ids = None
return False
- if hasattr(runner, 'get_place_details'):
- runner.get_place_details(self.conn, ids)
- self.current_ids = []
- else:
- self.current_ids = ids
+ assert self.conn is not None
+ self.current_ids = runner.get_place_details(self.conn, ids)
return True
- def get_batch(self):
+ def get_batch(self) -> DictCursorResults:
""" Get the next batch of data, previously requested with
`fetch_next_batch`.
"""
+ assert self.conn is not None
+ assert self.conn.cursor is not None
+
if self.current_ids is not None and not self.current_ids:
tstart = time.time()
self.conn.wait()
self.wait_time += time.time() - tstart
- self.current_ids = self.conn.cursor.fetchall()
+ self.current_ids = cast(Optional[DictCursorResults],
+ self.conn.cursor.fetchall())
- return self.current_ids
+ return self.current_ids if self.current_ids is not None else []
- def __enter__(self):
+ def __enter__(self) -> 'PlaceFetcher':
return self
- def __exit__(self, exc_type, exc_value, traceback):
+ def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
+ assert self.conn is not None
self.conn.wait()
self.close()
""" Main indexing routine.
"""
- def __init__(self, dsn, tokenizer, num_threads):
+ def __init__(self, dsn: str, tokenizer: AbstractTokenizer, num_threads: int):
self.dsn = dsn
self.tokenizer = tokenizer
self.num_threads = num_threads
- def has_pending(self):
+ def has_pending(self) -> bool:
""" Check if any data still needs indexing.
This function must only be used after the import has finished.
Otherwise it will be very expensive.
return cur.rowcount > 0
- def index_full(self, analyse=True):
+ def index_full(self, analyse: bool = True) -> None:
""" Index the complete database. This will first index boundaries
followed by all other objects. When `analyse` is True, then the
database will be analysed at the appropriate places to
with connect(self.dsn) as conn:
conn.autocommit = True
- def _analyze():
+ def _analyze() -> None:
if analyse:
with conn.cursor() as cur:
cur.execute('ANALYZE')
_analyze()
- def index_boundaries(self, minrank, maxrank):
+ def index_boundaries(self, minrank: int, maxrank: int) -> None:
""" Index only administrative boundaries within the given rank range.
"""
LOG.warning("Starting indexing boundaries using %s threads",
for rank in range(max(minrank, 4), min(maxrank, 26)):
self._index(runners.BoundaryRunner(rank, analyzer))
- def index_by_rank(self, minrank, maxrank):
+ def index_by_rank(self, minrank: int, maxrank: int) -> None:
""" Index all entries of placex in the given rank range (inclusive)
in order of their address rank.
minrank, maxrank, self.num_threads)
with self.tokenizer.name_analyzer() as analyzer:
- for rank in range(max(1, minrank), maxrank):
- self._index(runners.RankRunner(rank, analyzer))
+ for rank in range(max(1, minrank), maxrank + 1):
+ self._index(runners.RankRunner(rank, analyzer), 20 if rank == 30 else 1)
if maxrank == 30:
self._index(runners.RankRunner(0, analyzer))
self._index(runners.InterpolationRunner(analyzer), 20)
- self._index(runners.RankRunner(30, analyzer), 20)
- else:
- self._index(runners.RankRunner(maxrank, analyzer))
- def index_postcodes(self):
- """Index the entries ofthe location_postcode table.
+ def index_postcodes(self) -> None:
+ """Index the entries of the location_postcode table.
"""
LOG.warning("Starting indexing postcodes using %s threads", self.num_threads)
self._index(runners.PostcodeRunner(), 20)
- def update_status_table(self):
+ def update_status_table(self) -> None:
""" Update the status in the status table to 'indexed'.
"""
with connect(self.dsn) as conn:
conn.commit()
- def _index(self, runner, batch=1):
+ def _index(self, runner: runners.Runner, batch: int = 1) -> None:
""" Index a single rank or table. `runner` describes the SQL to use
for indexing. `batch` describes the number of objects that
should be processed with a single SQL statement
# asynchronously get the next batch
has_more = fetcher.fetch_next_batch(cur, runner)
- # And insert the curent batch
+ # And insert the current batch
for idx in range(0, len(places), batch):
part = places[idx:idx + batch]
LOG.debug("Processing places: %s", str(part))
+++ /dev/null
-"""
-Wrapper around place information the indexer gets from the database and hands to
-the tokenizer.
-"""
-
-import psycopg2.extras
-
-class PlaceInfo:
- """ Data class containing all information the tokenizer gets about a
- place it should process the names for.
- """
-
- def __init__(self, info):
- self._info = info
-
-
- def analyze(self, analyzer):
- """ Process this place with the given tokenizer and return the
- result in psycopg2-compatible Json.
- """
- return psycopg2.extras.Json(analyzer.process_place(self))
-
-
- @property
- def name(self):
- """ A dictionary with the names of the place or None if the place
- has no names.
- """
- return self._info.get('name')
-
-
- @property
- def address(self):
- """ A dictionary with the address elements of the place
- or None if no address information is available.
- """
- return self._info.get('address')
-
-
- @property
- def country_code(self):
- """ The country code of the country the place is in. Guaranteed
- to be a two-letter lower-case string or None, if no country
- could be found.
- """
- return self._info.get('country_code')
-
-
- @property
- def rank_address(self):
- """ The computed rank address before rank correction.
- """
- return self._info.get('rank_address')
-
-
- def is_a(self, key, value):
- """ Check if the place's primary tag corresponds to the given
- key and value.
- """
- return self._info.get('class') == key and self._info.get('type') == value
-
-
- def is_country(self):
- """ Check if the place is a valid country boundary.
- """
- return self.rank_address == 4 \
- and self.is_a('boundary', 'administrative') \
- and self.country_code is not None
# SPDX-License-Identifier: GPL-2.0-only
#
-# This file is part of Nominatim.
-# Copyright (C) 2020 Sarah Hoffmann
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Helpers for progress logging.
"""
""" Tracks and prints progress for the indexing process.
`name` is the name of the indexing step being tracked.
`total` sets up the total number of items that need processing.
- `log_interval` denotes the interval in seconds at which progres
+ `log_interval` denotes the interval in seconds at which progress
should be reported.
"""
- def __init__(self, name, total, log_interval=1):
+ def __init__(self, name: str, total: int, log_interval: int = 1) -> None:
self.name = name
self.total_places = total
self.done_places = 0
self.log_interval = log_interval
self.next_info = INITIAL_PROGRESS if LOG.isEnabledFor(logging.WARNING) else total + 1
- def add(self, num=1):
+ def add(self, num: int = 1) -> None:
""" Mark `num` places as processed. Print a log message if the
logging is at least info and the log interval has passed.
"""
self.next_info += int(places_per_sec) * self.log_interval
- def done(self):
+ def done(self) -> None:
""" Print final statistics about the progress.
"""
rank_end_time = datetime.now()
if rank_end_time == self.rank_start_time:
- diff_seconds = 0
- places_per_sec = self.done_places
+ diff_seconds = 0.0
+ places_per_sec = float(self.done_places)
else:
diff_seconds = (rank_end_time - self.rank_start_time).total_seconds()
places_per_sec = self.done_places / diff_seconds
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Mix-ins that provide the actual commands for the indexer for various indexing
tasks.
"""
+from typing import Any, List
import functools
from psycopg2 import sql as pysql
+import psycopg2.extras
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
+from nominatim.tokenizer.base import AbstractAnalyzer
+from nominatim.db.async_connection import DBConnection
+from nominatim.typing import Query, DictCursorResult, DictCursorResults, Protocol
# pylint: disable=C0111
-def _mk_valuelist(template, num):
+def _mk_valuelist(template: str, num: int) -> pysql.Composed:
return pysql.SQL(',').join([pysql.SQL(template)] * num)
+def _analyze_place(place: DictCursorResult, analyzer: AbstractAnalyzer) -> psycopg2.extras.Json:
+ return psycopg2.extras.Json(analyzer.process_place(PlaceInfo(place)))
+
+
+class Runner(Protocol):
+ def name(self) -> str: ...
+ def sql_count_objects(self) -> Query: ...
+ def sql_get_objects(self) -> Query: ...
+ def get_place_details(self, worker: DBConnection,
+ ids: DictCursorResults) -> DictCursorResults: ...
+ def index_places(self, worker: DBConnection, places: DictCursorResults) -> None: ...
+
class AbstractPlacexRunner:
""" Returns SQL commands for indexing of the placex table.
SELECT_SQL = pysql.SQL('SELECT place_id FROM placex ')
UPDATE_LINE = "(%s, %s::hstore, %s::hstore, %s::int, %s::jsonb)"
- def __init__(self, rank, analyzer):
+ def __init__(self, rank: int, analyzer: AbstractAnalyzer) -> None:
self.rank = rank
self.analyzer = analyzer
- @staticmethod
@functools.lru_cache(maxsize=1)
- def _index_sql(num_places):
+ def _index_sql(self, num_places: int) -> pysql.Composed:
return pysql.SQL(
""" UPDATE placex
SET indexed_status = 0, address = v.addr, token_info = v.ti,
""").format(_mk_valuelist(AbstractPlacexRunner.UPDATE_LINE, num_places))
- @staticmethod
- def get_place_details(worker, ids):
- worker.perform("""SELECT place_id, (placex_indexing_prepare(placex)).*
- FROM placex WHERE place_id IN %s""",
+ def get_place_details(self, worker: DBConnection, ids: DictCursorResults) -> DictCursorResults:
+ worker.perform("""SELECT place_id, extra.*
+ FROM placex, LATERAL placex_indexing_prepare(placex) as extra
+ WHERE place_id IN %s""",
(tuple((p[0] for p in ids)), ))
+ return []
+
- def index_places(self, worker, places):
- values = []
+ def index_places(self, worker: DBConnection, places: DictCursorResults) -> None:
+ values: List[Any] = []
for place in places:
for field in ('place_id', 'name', 'address', 'linked_place_id'):
values.append(place[field])
- values.append(PlaceInfo(place).analyze(self.analyzer))
+ values.append(_analyze_place(place, self.analyzer))
worker.perform(self._index_sql(len(places)), values)
""" Returns SQL commands for indexing one rank within the placex table.
"""
- def name(self):
- return "rank {}".format(self.rank)
+ def name(self) -> str:
+ return f"rank {self.rank}"
- def sql_count_objects(self):
+ def sql_count_objects(self) -> pysql.Composed:
return pysql.SQL("""SELECT count(*) FROM placex
WHERE rank_address = {} and indexed_status > 0
""").format(pysql.Literal(self.rank))
- def sql_get_objects(self):
+ def sql_get_objects(self) -> pysql.Composed:
return self.SELECT_SQL + pysql.SQL(
"""WHERE indexed_status > 0 and rank_address = {}
ORDER BY geometry_sector
of a certain rank.
"""
- def name(self):
- return "boundaries rank {}".format(self.rank)
+ def name(self) -> str:
+ return f"boundaries rank {self.rank}"
- def sql_count_objects(self):
+ def sql_count_objects(self) -> pysql.Composed:
return pysql.SQL("""SELECT count(*) FROM placex
WHERE indexed_status > 0
AND rank_search = {}
AND class = 'boundary' and type = 'administrative'
""").format(pysql.Literal(self.rank))
- def sql_get_objects(self):
+ def sql_get_objects(self) -> pysql.Composed:
return self.SELECT_SQL + pysql.SQL(
"""WHERE indexed_status > 0 and rank_search = {}
and class = 'boundary' and type = 'administrative'
location_property_osmline.
"""
- def __init__(self, analyzer):
+ def __init__(self, analyzer: AbstractAnalyzer) -> None:
self.analyzer = analyzer
- @staticmethod
- def name():
+ def name(self) -> str:
return "interpolation lines (location_property_osmline)"
- @staticmethod
- def sql_count_objects():
+ def sql_count_objects(self) -> str:
return """SELECT count(*) FROM location_property_osmline
WHERE indexed_status > 0"""
- @staticmethod
- def sql_get_objects():
+ def sql_get_objects(self) -> str:
return """SELECT place_id
FROM location_property_osmline
WHERE indexed_status > 0
ORDER BY geometry_sector"""
- @staticmethod
- def get_place_details(worker, ids):
+ def get_place_details(self, worker: DBConnection, ids: DictCursorResults) -> DictCursorResults:
worker.perform("""SELECT place_id, get_interpolation_address(address, osm_id) as address
FROM location_property_osmline WHERE place_id IN %s""",
(tuple((p[0] for p in ids)), ))
+ return []
- @staticmethod
@functools.lru_cache(maxsize=1)
- def _index_sql(num_places):
+ def _index_sql(self, num_places: int) -> pysql.Composed:
return pysql.SQL("""UPDATE location_property_osmline
SET indexed_status = 0, address = v.addr, token_info = v.ti
FROM (VALUES {}) as v(id, addr, ti)
""").format(_mk_valuelist("(%s, %s::hstore, %s::jsonb)", num_places))
- def index_places(self, worker, places):
- values = []
+ def index_places(self, worker: DBConnection, places: DictCursorResults) -> None:
+ values: List[Any] = []
for place in places:
values.extend((place[x] for x in ('place_id', 'address')))
- values.append(PlaceInfo(place).analyze(self.analyzer))
+ values.append(_analyze_place(place, self.analyzer))
worker.perform(self._index_sql(len(places)), values)
-class PostcodeRunner:
+class PostcodeRunner(Runner):
""" Provides the SQL commands for indexing the location_postcode table.
"""
- @staticmethod
- def name():
+ def name(self) -> str:
return "postcodes (location_postcode)"
- @staticmethod
- def sql_count_objects():
+
+ def sql_count_objects(self) -> str:
return 'SELECT count(*) FROM location_postcode WHERE indexed_status > 0'
- @staticmethod
- def sql_get_objects():
+
+ def sql_get_objects(self) -> str:
return """SELECT place_id FROM location_postcode
WHERE indexed_status > 0
ORDER BY country_code, postcode"""
- @staticmethod
- def index_places(worker, ids):
+
+ def get_place_details(self, worker: DBConnection, ids: DictCursorResults) -> DictCursorResults:
+ return ids
+
+ def index_places(self, worker: DBConnection, places: DictCursorResults) -> None:
worker.perform(pysql.SQL("""UPDATE location_postcode SET indexed_status = 0
WHERE place_id IN ({})""")
- .format(pysql.SQL(',').join((pysql.Literal(i[0]) for i in ids))))
+ .format(pysql.SQL(',').join((pysql.Literal(i[0]) for i in places))))
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
-Abstract class defintions for tokenizers. These base classes are here
+Abstract class definitions for tokenizers. These base classes are here
mainly for documentation purposes.
"""
from abc import ABC, abstractmethod
-from typing import List, Tuple, Dict, Any
+from typing import List, Tuple, Dict, Any, Optional, Iterable
+from pathlib import Path
from nominatim.config import Configuration
-from nominatim.indexer.place_info import PlaceInfo
-
-# pylint: disable=unnecessary-pass
+from nominatim.data.place_info import PlaceInfo
+from nominatim.typing import Protocol
class AbstractAnalyzer(ABC):
""" The analyzer provides the functions for analysing names and building
return self
- def __exit__(self, exc_type, exc_value, traceback) -> None:
+ def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
self.close()
@abstractmethod
- def update_special_phrases(self, phrases: List[Tuple[str, str, str, str]],
+ def update_special_phrases(self,
+ phrases: Iterable[Tuple[str, str, str, str]],
should_replace: bool) -> None:
""" Update the tokenizer's special phrase tokens from the given
list of special phrases.
@abstractmethod
- def add_country_names(self, country_code: str, names: Dict[str, str]):
+ def add_country_names(self, country_code: str, names: Dict[str, str]) -> None:
""" Add the given names to the tokenizer's list of country tokens.
Arguments:
the search index.
Arguments:
- place: Place information retrived from the database.
+ place: Place information retrieved from the database.
Returns:
A JSON-serialisable structure that will be handed into
init_db: When set to False, then initialisation of database
tables should be skipped. This option is only required for
- migration purposes and can be savely ignored by custom
+ migration purposes and can be safely ignored by custom
tokenizers.
TODO: can we move the init_db parameter somewhere else?
@abstractmethod
- def check_database(self, config: Configuration) -> str:
+ def check_database(self, config: Configuration) -> Optional[str]:
""" Check that the database is set up correctly and ready for being
queried.
"""
+ @abstractmethod
+ def update_word_tokens(self) -> None:
+ """ Do house-keeping on the tokenizers internal data structures.
+ Remove unused word tokens, resort data etc.
+ """
+
+
@abstractmethod
def name_analyzer(self) -> AbstractAnalyzer:
""" Create a new analyzer for tokenizing names and queries
When used outside the with construct, the caller must ensure to
call the close() function before destructing the analyzer.
"""
+
+
+class TokenizerModule(Protocol):
+ """ Interface that must be exported by modules that implement their
+ own tokenizer.
+ """
+
+ def create(self, dsn: str, data_dir: Path) -> AbstractTokenizer:
+ """ Factory for new tokenizers.
+ """
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for creating a tokenizer or initialising the right one for an
existing database.
A tokenizer is something that is bound to the lifetime of a database. It
-can be choosen and configured before the intial import but then needs to
+can be chosen and configured before the initial import but then needs to
be used consistently when querying and updating the database.
This module provides the functions to create and configure a new tokenizer
-as well as instanciating the appropriate tokenizer for updating an existing
+as well as instantiating the appropriate tokenizer for updating an existing
database.
A tokenizer usually also includes PHP code for querying. The appropriate PHP
normalizer module is installed, when the tokenizer is created.
"""
+from typing import Optional
import logging
import importlib
from pathlib import Path
-from ..errors import UsageError
-from ..db import properties
-from ..db.connection import connect
+from nominatim.errors import UsageError
+from nominatim.db import properties
+from nominatim.db.connection import connect
+from nominatim.config import Configuration
+from nominatim.tokenizer.base import AbstractTokenizer, TokenizerModule
LOG = logging.getLogger()
-def _import_tokenizer(name):
+def _import_tokenizer(name: str) -> TokenizerModule:
""" Load the tokenizer.py module from project directory.
"""
src_file = Path(__file__).parent / (name + '_tokenizer.py')
return importlib.import_module('nominatim.tokenizer.' + name + '_tokenizer')
-def create_tokenizer(config, init_db=True, module_name=None):
+def create_tokenizer(config: Configuration, init_db: bool = True,
+ module_name: Optional[str] = None) -> AbstractTokenizer:
""" Create a new tokenizer as defined by the given configuration.
The tokenizer data and code is copied into the 'tokenizer' directory
return tokenizer
-def get_tokenizer_for_db(config):
+def get_tokenizer_for_db(config: Configuration) -> AbstractTokenizer:
""" Instantiate a tokenizer for an existing database.
The function looks up the appropriate tokenizer in the database
"""
basedir = config.project_dir / 'tokenizer'
if not basedir.is_dir():
- LOG.fatal("Cannot find tokenizer data in '%s'.", basedir)
- raise UsageError('Cannot initialize tokenizer.')
+ # Directory will be repopulated by tokenizer below.
+ basedir.mkdir()
with connect(config.get_libpq_dsn()) as conn:
name = properties.get_property(conn, 'tokenizer')
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Helper class to create ICU rules from a configuration file.
"""
-import importlib
+from typing import Mapping, Any, Dict, Optional
import io
import json
import logging
-from nominatim.config import flatten_config_list
+from icu import Transliterator
+
+from nominatim.config import flatten_config_list, Configuration
from nominatim.db.properties import set_property, get_property
+from nominatim.db.connection import Connection
from nominatim.errors import UsageError
from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
from nominatim.tokenizer.icu_token_analysis import ICUTokenAnalysis
-import nominatim.tools.country_info
+from nominatim.tokenizer.token_analysis.base import AnalysisModule, Analyzer
+import nominatim.data.country_info
LOG = logging.getLogger()
DBCFG_IMPORT_ANALYSIS_RULES = "tokenizer_import_analysis_rules"
-def _get_section(rules, section):
+def _get_section(rules: Mapping[str, Any], section: str) -> Any:
""" Get the section named 'section' from the rules. If the section does
not exist, raise a usage error with a meaningful message.
"""
""" Compiler for ICU rules from a tokenizer configuration file.
"""
- def __init__(self, config):
+ def __init__(self, config: Configuration) -> None:
+ self.config = config
rules = config.load_sub_configuration('icu_tokenizer.yaml',
config='TOKENIZER_CONFIG')
- # Make sure country information is available to analyzers and sanatizers.
- nominatim.tools.country_info.setup_country_config(config)
+ # Make sure country information is available to analyzers and sanitizers.
+ nominatim.data.country_info.setup_country_config(config)
self.normalization_rules = self._cfg_to_icu_rules(rules, 'normalization')
self.transliteration_rules = self._cfg_to_icu_rules(rules, 'transliteration')
self.sanitizer_rules = rules.get('sanitizers', [])
- def load_config_from_db(self, conn):
+ def load_config_from_db(self, conn: Connection) -> None:
""" Get previously saved parts of the configuration from the
database.
"""
- self.normalization_rules = get_property(conn, DBCFG_IMPORT_NORM_RULES)
- self.transliteration_rules = get_property(conn, DBCFG_IMPORT_TRANS_RULES)
- self.analysis_rules = json.loads(get_property(conn, DBCFG_IMPORT_ANALYSIS_RULES))
+ rules = get_property(conn, DBCFG_IMPORT_NORM_RULES)
+ if rules is not None:
+ self.normalization_rules = rules
+
+ rules = get_property(conn, DBCFG_IMPORT_TRANS_RULES)
+ if rules is not None:
+ self.transliteration_rules = rules
+
+ rules = get_property(conn, DBCFG_IMPORT_ANALYSIS_RULES)
+ if rules:
+ self.analysis_rules = json.loads(rules)
+ else:
+ self.analysis_rules = []
self._setup_analysis()
- def save_config_to_db(self, conn):
+ def save_config_to_db(self, conn: Connection) -> None:
""" Save the part of the configuration that cannot be changed into
the database.
"""
set_property(conn, DBCFG_IMPORT_ANALYSIS_RULES, json.dumps(self.analysis_rules))
- def make_sanitizer(self):
+ def make_sanitizer(self) -> PlaceSanitizer:
""" Create a place sanitizer from the configured rules.
"""
- return PlaceSanitizer(self.sanitizer_rules)
+ return PlaceSanitizer(self.sanitizer_rules, self.config)
- def make_token_analysis(self):
+ def make_token_analysis(self) -> ICUTokenAnalysis:
""" Create a token analyser from the reviouly loaded rules.
"""
return ICUTokenAnalysis(self.normalization_rules,
self.transliteration_rules, self.analysis)
- def get_search_rules(self):
+ def get_search_rules(self) -> str:
""" Return the ICU rules to be used during search.
The rules combine normalization and transliteration.
"""
return rules.getvalue()
- def get_normalization_rules(self):
+ def get_normalization_rules(self) -> str:
""" Return rules for normalisation of a term.
"""
return self.normalization_rules
- def get_transliteration_rules(self):
+ def get_transliteration_rules(self) -> str:
""" Return the rules for converting a string into its asciii representation.
"""
return self.transliteration_rules
- def _setup_analysis(self):
+ def _setup_analysis(self) -> None:
""" Process the rules used for creating the various token analyzers.
"""
- self.analysis = {}
+ self.analysis: Dict[Optional[str], TokenAnalyzerRule] = {}
if not isinstance(self.analysis_rules, list):
raise UsageError("Configuration section 'token-analysis' must be a list.")
+ norm = Transliterator.createFromRules("rule_loader_normalization",
+ self.normalization_rules)
+ trans = Transliterator.createFromRules("rule_loader_transliteration",
+ self.transliteration_rules)
+
for section in self.analysis_rules:
name = section.get('id', None)
if name in self.analysis:
LOG.fatal("ICU tokenizer configuration has two token "
"analyzers with id '%s'.", name)
raise UsageError("Syntax error in ICU tokenizer config.")
- self.analysis[name] = TokenAnalyzerRule(section, self.normalization_rules)
+ self.analysis[name] = TokenAnalyzerRule(section, norm, trans,
+ self.config)
@staticmethod
- def _cfg_to_icu_rules(rules, section):
+ def _cfg_to_icu_rules(rules: Mapping[str, Any], section: str) -> str:
""" Load an ICU ruleset from the given section. If the section is a
simple string, it is interpreted as a file name and the rules are
loaded verbatim from the given file. The filename is expected to be
and creates a new token analyzer on request.
"""
- def __init__(self, rules, normalization_rules):
- # Find the analysis module
- module_name = 'nominatim.tokenizer.token_analysis.' \
- + _get_section(rules, 'analyzer').replace('-', '_')
- analysis_mod = importlib.import_module(module_name)
- self.create = analysis_mod.create
+ def __init__(self, rules: Mapping[str, Any],
+ normalizer: Any, transliterator: Any,
+ config: Configuration) -> None:
+ analyzer_name = _get_section(rules, 'analyzer')
+ if not analyzer_name or not isinstance(analyzer_name, str):
+ raise UsageError("'analyzer' parameter needs to be simple string")
+
+ self._analysis_mod: AnalysisModule = \
+ config.load_plugin_module(analyzer_name, 'nominatim.tokenizer.token_analysis')
- # Load the configuration.
- self.config = analysis_mod.configure(rules, normalization_rules)
+ self.config = self._analysis_mod.configure(rules, normalizer,
+ transliterator)
+
+
+ def create(self, normalizer: Any, transliterator: Any) -> Analyzer:
+ """ Create a new analyser instance for the given rule.
+ """
+ return self._analysis_mod.create(normalizer, transliterator, self.config)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Container class collecting all components required to transform an OSM name
into a Nominatim token.
"""
-
+from typing import Mapping, Optional, TYPE_CHECKING
from icu import Transliterator
+from nominatim.tokenizer.token_analysis.base import Analyzer
+
+if TYPE_CHECKING:
+ from typing import Any
+ from nominatim.tokenizer.icu_rule_loader import TokenAnalyzerRule # pylint: disable=cyclic-import
+
class ICUTokenAnalysis:
""" Container class collecting the transliterators and token analysis
- modules for a single NameAnalyser instance.
+ modules for a single Analyser instance.
"""
- def __init__(self, norm_rules, trans_rules, analysis_rules):
+ def __init__(self, norm_rules: str, trans_rules: str,
+ analysis_rules: Mapping[Optional[str], 'TokenAnalyzerRule']):
self.normalizer = Transliterator.createFromRules("icu_normalization",
norm_rules)
trans_rules += ";[:Space:]+ > ' '"
self.search = Transliterator.createFromRules("icu_search",
norm_rules + trans_rules)
- self.analysis = {name: arules.create(self.to_ascii, arules.config)
+ self.analysis = {name: arules.create(self.normalizer, self.to_ascii)
for name, arules in analysis_rules.items()}
+
+
+ def get_analyzer(self, name: Optional[str]) -> Analyzer:
+ """ Return the given named analyzer. If no analyzer with that
+ name exists, return the default analyzer.
+ """
+ return self.analysis.get(name) or self.analysis[None]
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tokenizer implementing normalisation as used before Nominatim 4 but using
libICU instead of the PostgreSQL module.
"""
+from typing import Optional, Sequence, List, Tuple, Mapping, Any, cast, \
+ Dict, Set, Iterable
import itertools
import json
import logging
-import re
+from pathlib import Path
from textwrap import dedent
-from nominatim.db.connection import connect
+from nominatim.db.connection import connect, Connection, Cursor
+from nominatim.config import Configuration
from nominatim.db.utils import CopyBuffer
from nominatim.db.sql_preprocessor import SQLPreprocessor
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
from nominatim.tokenizer.icu_rule_loader import ICURuleLoader
+from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
+from nominatim.data.place_name import PlaceName
+from nominatim.tokenizer.icu_token_analysis import ICUTokenAnalysis
from nominatim.tokenizer.base import AbstractAnalyzer, AbstractTokenizer
DBCFG_TERM_NORMALIZATION = "tokenizer_term_normalization"
LOG = logging.getLogger()
-def create(dsn, data_dir):
+def create(dsn: str, data_dir: Path) -> 'ICUTokenizer':
""" Create a new instance of the tokenizer provided by this module.
"""
- return LegacyICUTokenizer(dsn, data_dir)
+ return ICUTokenizer(dsn, data_dir)
-class LegacyICUTokenizer(AbstractTokenizer):
- """ This tokenizer uses libICU to covert names and queries to ASCII.
+class ICUTokenizer(AbstractTokenizer):
+ """ This tokenizer uses libICU to convert names and queries to ASCII.
Otherwise it uses the same algorithms and data structures as the
normalization routines in Nominatim 3.
"""
- def __init__(self, dsn, data_dir):
+ def __init__(self, dsn: str, data_dir: Path) -> None:
self.dsn = dsn
self.data_dir = data_dir
- self.loader = None
+ self.loader: Optional[ICURuleLoader] = None
- def init_new_db(self, config, init_db=True):
+ def init_new_db(self, config: Configuration, init_db: bool = True) -> None:
""" Set up a new tokenizer for the database.
This copies all necessary data in the project directory to make
"""
self.loader = ICURuleLoader(config)
- self._install_php(config.lib_dir.php)
+ self._install_php(config.lib_dir.php, overwrite=True)
self._save_config()
if init_db:
self._init_db_tables(config)
- def init_from_project(self, config):
+ def init_from_project(self, config: Configuration) -> None:
""" Initialise the tokenizer from the project directory.
"""
self.loader = ICURuleLoader(config)
with connect(self.dsn) as conn:
self.loader.load_config_from_db(conn)
+ self._install_php(config.lib_dir.php, overwrite=False)
- def finalize_import(self, config):
+
+ def finalize_import(self, config: Configuration) -> None:
""" Do any required postprocessing to make the tokenizer data ready
for use.
"""
sqlp.run_sql_file(conn, 'tokenizer/legacy_tokenizer_indices.sql')
- def update_sql_functions(self, config):
+ def update_sql_functions(self, config: Configuration) -> None:
""" Reimport the SQL functions for this tokenizer.
"""
with connect(self.dsn) as conn:
sqlp.run_sql_file(conn, 'tokenizer/icu_tokenizer.sql')
- def check_database(self, config):
+ def check_database(self, config: Configuration) -> None:
""" Check that the tokenizer is set up correctly.
"""
# Will throw an error if there is an issue.
self.init_from_project(config)
- def update_statistics(self):
+ def update_statistics(self) -> None:
""" Recompute frequencies for all name words.
"""
with connect(self.dsn) as conn:
conn.commit()
- def name_analyzer(self):
+ def _cleanup_housenumbers(self) -> None:
+ """ Remove unused house numbers.
+ """
+ with connect(self.dsn) as conn:
+ if not conn.table_exists('search_name'):
+ return
+ with conn.cursor(name="hnr_counter") as cur:
+ cur.execute("""SELECT DISTINCT word_id, coalesce(info->>'lookup', word_token)
+ FROM word
+ WHERE type = 'H'
+ AND NOT EXISTS(SELECT * FROM search_name
+ WHERE ARRAY[word.word_id] && name_vector)
+ AND (char_length(coalesce(word, word_token)) > 6
+ OR coalesce(word, word_token) not similar to '\\d+')
+ """)
+ candidates = {token: wid for wid, token in cur}
+ with conn.cursor(name="hnr_counter") as cur:
+ cur.execute("""SELECT housenumber FROM placex
+ WHERE housenumber is not null
+ AND (char_length(housenumber) > 6
+ OR housenumber not similar to '\\d+')
+ """)
+ for row in cur:
+ for hnr in row[0].split(';'):
+ candidates.pop(hnr, None)
+ LOG.info("There are %s outdated housenumbers.", len(candidates))
+ LOG.debug("Outdated housenumbers: %s", candidates.keys())
+ if candidates:
+ with conn.cursor() as cur:
+ cur.execute("""DELETE FROM word WHERE word_id = any(%s)""",
+ (list(candidates.values()), ))
+ conn.commit()
+
+
+
+ def update_word_tokens(self) -> None:
+ """ Remove unused tokens.
+ """
+ LOG.warning("Cleaning up housenumber tokens.")
+ self._cleanup_housenumbers()
+ LOG.warning("Tokenizer house-keeping done.")
+
+
+ def name_analyzer(self) -> 'ICUNameAnalyzer':
""" Create a new analyzer for tokenizing names and queries
using this tokinzer. Analyzers are context managers and should
be used accordingly:
Analyzers are not thread-safe. You need to instantiate one per thread.
"""
- return LegacyICUNameAnalyzer(self.dsn, self.loader.make_sanitizer(),
- self.loader.make_token_analysis())
+ assert self.loader is not None
+ return ICUNameAnalyzer(self.dsn, self.loader.make_sanitizer(),
+ self.loader.make_token_analysis())
- def _install_php(self, phpdir):
+ def _install_php(self, phpdir: Path, overwrite: bool = True) -> None:
""" Install the php script for the tokenizer.
"""
+ assert self.loader is not None
php_file = self.data_dir / "tokenizer.php"
- php_file.write_text(dedent(f"""\
- <?php
- @define('CONST_Max_Word_Frequency', 10000000);
- @define('CONST_Term_Normalization_Rules', "{self.loader.normalization_rules}");
- @define('CONST_Transliteration', "{self.loader.get_search_rules()}");
- require_once('{phpdir}/tokenizer/icu_tokenizer.php');"""))
+
+ if not php_file.exists() or overwrite:
+ php_file.write_text(dedent(f"""\
+ <?php
+ @define('CONST_Max_Word_Frequency', 10000000);
+ @define('CONST_Term_Normalization_Rules', "{self.loader.normalization_rules}");
+ @define('CONST_Transliteration', "{self.loader.get_search_rules()}");
+ require_once('{phpdir}/tokenizer/icu_tokenizer.php');"""), encoding='utf-8')
- def _save_config(self):
+ def _save_config(self) -> None:
""" Save the configuration that needs to remain stable for the given
database as database properties.
"""
+ assert self.loader is not None
with connect(self.dsn) as conn:
self.loader.save_config_to_db(conn)
- def _init_db_tables(self, config):
+ def _init_db_tables(self, config: Configuration) -> None:
""" Set up the word table and fill it with pre-computed word
frequencies.
"""
conn.commit()
-class LegacyICUNameAnalyzer(AbstractAnalyzer):
- """ The legacy analyzer uses the ICU library for splitting names.
+class ICUNameAnalyzer(AbstractAnalyzer):
+ """ The ICU analyzer uses the ICU library for splitting names.
Each instance opens a connection to the database to request the
normalization.
"""
- def __init__(self, dsn, sanitizer, token_analysis):
- self.conn = connect(dsn).connection
+ def __init__(self, dsn: str, sanitizer: PlaceSanitizer,
+ token_analysis: ICUTokenAnalysis) -> None:
+ self.conn: Optional[Connection] = connect(dsn).connection
self.conn.autocommit = True
self.sanitizer = sanitizer
self.token_analysis = token_analysis
self._cache = _TokenCache()
- def close(self):
+ def close(self) -> None:
""" Free all resources used by the analyzer.
"""
if self.conn:
self.conn = None
- def _search_normalized(self, name):
+ def _search_normalized(self, name: str) -> str:
""" Return the search token transliteration of the given name.
"""
- return self.token_analysis.search.transliterate(name).strip()
+ return cast(str, self.token_analysis.search.transliterate(name)).strip()
- def _normalized(self, name):
+ def _normalized(self, name: str) -> str:
""" Return the normalized version of the given name with all
non-relevant information removed.
"""
- return self.token_analysis.normalizer.transliterate(name).strip()
+ return cast(str, self.token_analysis.normalizer.transliterate(name)).strip()
- def get_word_token_info(self, words):
+ def get_word_token_info(self, words: Sequence[str]) -> List[Tuple[str, str, int]]:
""" Return token information for the given list of words.
If a word starts with # it is assumed to be a full name
otherwise is a partial name.
The function is used for testing and debugging only
and not necessarily efficient.
"""
+ assert self.conn is not None
full_tokens = {}
partial_tokens = {}
for word in words:
+ [(k, v, part_ids.get(v, None)) for k, v in partial_tokens.items()]
- @staticmethod
- def normalize_postcode(postcode):
+ def normalize_postcode(self, postcode: str) -> str:
""" Convert the postcode to a standardized form.
This function must yield exactly the same result as the SQL function
return postcode.strip().upper()
- def _make_standard_hnr(self, hnr):
- """ Create a normalised version of a housenumber.
-
- This function takes minor shortcuts on transliteration.
- """
- return self._search_normalized(hnr)
-
- def update_postcodes_from_db(self):
+ def update_postcodes_from_db(self) -> None:
""" Update postcode tokens in the word table from the location_postcode
table.
"""
- to_delete = []
+ assert self.conn is not None
+ analyzer = self.token_analysis.analysis.get('@postcode')
+
with self.conn.cursor() as cur:
- # This finds us the rows in location_postcode and word that are
- # missing in the other table.
- cur.execute("""SELECT * FROM
- (SELECT pc, word FROM
- (SELECT distinct(postcode) as pc FROM location_postcode) p
- FULL JOIN
- (SELECT word FROM word WHERE type = 'P') w
- ON pc = word) x
- WHERE pc is null or word is null""")
-
- with CopyBuffer() as copystr:
- for postcode, word in cur:
- if postcode is None:
- to_delete.append(word)
- else:
- copystr.add(self._search_normalized(postcode),
- 'P', postcode)
-
- if to_delete:
- cur.execute("""DELETE FROM WORD
- WHERE type ='P' and word = any(%s)
- """, (to_delete, ))
-
- copystr.copy_out(cur, 'word',
- columns=['word_token', 'type', 'word'])
-
-
- def update_special_phrases(self, phrases, should_replace):
+ # First get all postcode names currently in the word table.
+ cur.execute("SELECT DISTINCT word FROM word WHERE type = 'P'")
+ word_entries = set((entry[0] for entry in cur))
+
+ # Then compute the required postcode names from the postcode table.
+ needed_entries = set()
+ cur.execute("SELECT country_code, postcode FROM location_postcode")
+ for cc, postcode in cur:
+ info = PlaceInfo({'country_code': cc,
+ 'class': 'place', 'type': 'postcode',
+ 'address': {'postcode': postcode}})
+ address = self.sanitizer.process_names(info)[1]
+ for place in address:
+ if place.kind == 'postcode':
+ if analyzer is None:
+ postcode_name = place.name.strip().upper()
+ variant_base = None
+ else:
+ postcode_name = analyzer.get_canonical_id(place)
+ variant_base = place.get_attr("variant")
+
+ if variant_base:
+ needed_entries.add(f'{postcode_name}@{variant_base}')
+ else:
+ needed_entries.add(postcode_name)
+ break
+
+ # Now update the word table.
+ self._delete_unused_postcode_words(word_entries - needed_entries)
+ self._add_missing_postcode_words(needed_entries - word_entries)
+
+ def _delete_unused_postcode_words(self, tokens: Iterable[str]) -> None:
+ assert self.conn is not None
+ if tokens:
+ with self.conn.cursor() as cur:
+ cur.execute("DELETE FROM word WHERE type = 'P' and word = any(%s)",
+ (list(tokens), ))
+
+ def _add_missing_postcode_words(self, tokens: Iterable[str]) -> None:
+ assert self.conn is not None
+ if not tokens:
+ return
+
+ analyzer = self.token_analysis.analysis.get('@postcode')
+ terms = []
+
+ for postcode_name in tokens:
+ if '@' in postcode_name:
+ term, variant = postcode_name.split('@', 2)
+ term = self._search_normalized(term)
+ if analyzer is None:
+ variants = [term]
+ else:
+ variants = analyzer.compute_variants(variant)
+ if term not in variants:
+ variants.append(term)
+ else:
+ variants = [self._search_normalized(postcode_name)]
+ terms.append((postcode_name, variants))
+
+ if terms:
+ with self.conn.cursor() as cur:
+ cur.execute_values("""SELECT create_postcode_word(pc, var)
+ FROM (VALUES %s) AS v(pc, var)""",
+ terms)
+
+
+
+
+ def update_special_phrases(self, phrases: Iterable[Tuple[str, str, str, str]],
+ should_replace: bool) -> None:
""" Replace the search index for special phrases with the new phrases.
If `should_replace` is True, then the previous set of will be
completely replaced. Otherwise the phrases are added to the
already existing ones.
"""
+ assert self.conn is not None
norm_phrases = set(((self._normalized(p[0]), p[1], p[2], p[3])
for p in phrases))
len(norm_phrases), added, deleted)
- def _add_special_phrases(self, cursor, new_phrases, existing_phrases):
+ def _add_special_phrases(self, cursor: Cursor,
+ new_phrases: Set[Tuple[str, str, str, str]],
+ existing_phrases: Set[Tuple[str, str, str, str]]) -> int:
""" Add all phrases to the database that are not yet there.
"""
to_add = new_phrases - existing_phrases
return added
- @staticmethod
- def _remove_special_phrases(cursor, new_phrases, existing_phrases):
- """ Remove all phrases from the databse that are no longer in the
+ def _remove_special_phrases(self, cursor: Cursor,
+ new_phrases: Set[Tuple[str, str, str, str]],
+ existing_phrases: Set[Tuple[str, str, str, str]]) -> int:
+ """ Remove all phrases from the database that are no longer in the
new phrase list.
"""
to_delete = existing_phrases - new_phrases
return len(to_delete)
- def add_country_names(self, country_code, names):
- """ Add names for the given country to the search index.
+ def add_country_names(self, country_code: str, names: Mapping[str, str]) -> None:
+ """ Add default names for the given country to the search index.
"""
# Make sure any name preprocessing for country names applies.
info = PlaceInfo({'name': names, 'country_code': country_code,
'rank_address': 4, 'class': 'boundary',
'type': 'administrative'})
self._add_country_full_names(country_code,
- self.sanitizer.process_names(info)[0])
+ self.sanitizer.process_names(info)[0],
+ internal=True)
- def _add_country_full_names(self, country_code, names):
+ def _add_country_full_names(self, country_code: str, names: Sequence[PlaceName],
+ internal: bool = False) -> None:
""" Add names for the given country from an already sanitized
name list.
"""
+ assert self.conn is not None
word_tokens = set()
for name in names:
norm_name = self._search_normalized(name.name)
with self.conn.cursor() as cur:
# Get existing names
- cur.execute("""SELECT word_token FROM word
- WHERE type = 'C' and word = %s""",
+ cur.execute("""SELECT word_token, coalesce(info ? 'internal', false) as is_internal
+ FROM word
+ WHERE type = 'C' and word = %s""",
(country_code, ))
- word_tokens.difference_update((t[0] for t in cur))
+ # internal/external names
+ existing_tokens: Dict[bool, Set[str]] = {True: set(), False: set()}
+ for word in cur:
+ existing_tokens[word[1]].add(word[0])
+
+ # Delete names that no longer exist.
+ gone_tokens = existing_tokens[internal] - word_tokens
+ if internal:
+ gone_tokens.update(existing_tokens[False] & word_tokens)
+ if gone_tokens:
+ cur.execute("""DELETE FROM word
+ USING unnest(%s) as token
+ WHERE type = 'C' and word = %s
+ and word_token = token""",
+ (list(gone_tokens), country_code))
# Only add those names that are not yet in the list.
- if word_tokens:
- cur.execute("""INSERT INTO word (word_token, type, word)
- (SELECT token, 'C', %s
- FROM unnest(%s) as token)
- """, (country_code, list(word_tokens)))
-
- # No names are deleted at the moment.
- # If deletion is made possible, then the static names from the
- # initial 'country_name' table should be kept.
-
-
- def process_place(self, place):
+ new_tokens = word_tokens - existing_tokens[True]
+ if not internal:
+ new_tokens -= existing_tokens[False]
+ if new_tokens:
+ if internal:
+ sql = """INSERT INTO word (word_token, type, word, info)
+ (SELECT token, 'C', %s, '{"internal": "yes"}'
+ FROM unnest(%s) as token)
+ """
+ else:
+ sql = """INSERT INTO word (word_token, type, word)
+ (SELECT token, 'C', %s
+ FROM unnest(%s) as token)
+ """
+ cur.execute(sql, (country_code, list(new_tokens)))
+
+
+ def process_place(self, place: PlaceInfo) -> Mapping[str, Any]:
""" Determine tokenizer information about the given place.
Returns a JSON-serializable structure that will be handed into
the database via the token_info field.
"""
- token_info = _TokenInfo(self._cache)
+ token_info = _TokenInfo()
names, address = self.sanitizer.process_names(place)
if names:
- fulls, partials = self._compute_name_tokens(names)
-
- token_info.add_names(fulls, partials)
+ token_info.set_names(*self._compute_name_tokens(names))
if place.is_country():
+ assert place.country_code is not None
self._add_country_full_names(place.country_code, names)
if address:
self._process_place_address(token_info, address)
- return token_info.data
+ return token_info.to_dict()
- def _process_place_address(self, token_info, address):
- hnrs = []
- addr_terms = []
+ def _process_place_address(self, token_info: '_TokenInfo',
+ address: Sequence[PlaceName]) -> None:
for item in address:
if item.kind == 'postcode':
- self._add_postcode(item.name)
- elif item.kind in ('housenumber', 'streetnumber', 'conscriptionnumber'):
- hnrs.append(item.name)
+ token_info.set_postcode(self._add_postcode(item))
+ elif item.kind == 'housenumber':
+ token_info.add_housenumber(*self._compute_housenumber_token(item))
elif item.kind == 'street':
- token_info.add_street(self._compute_partial_tokens(item.name))
+ token_info.add_street(self._retrieve_full_tokens(item.name))
elif item.kind == 'place':
- token_info.add_place(self._compute_partial_tokens(item.name))
- elif not item.kind.startswith('_') and \
- item.kind not in ('country', 'full'):
- addr_terms.append((item.kind, self._compute_partial_tokens(item.name)))
-
- if hnrs:
- hnrs = self._split_housenumbers(hnrs)
- token_info.add_housenumbers(self.conn, [self._make_standard_hnr(n) for n in hnrs])
+ if not item.suffix:
+ token_info.add_place(self._compute_partial_tokens(item.name))
+ elif not item.kind.startswith('_') and not item.suffix and \
+ item.kind not in ('country', 'full', 'inclusion'):
+ token_info.add_address_term(item.kind, self._compute_partial_tokens(item.name))
- if addr_terms:
- token_info.add_address_terms(addr_terms)
+ def _compute_housenumber_token(self, hnr: PlaceName) -> Tuple[Optional[int], Optional[str]]:
+ """ Normalize the housenumber and return the word token and the
+ canonical form.
+ """
+ assert self.conn is not None
+ analyzer = self.token_analysis.analysis.get('@housenumber')
+ result: Tuple[Optional[int], Optional[str]] = (None, None)
- def _compute_partial_tokens(self, name):
+ if analyzer is None:
+ # When no custom analyzer is set, simply normalize and transliterate
+ norm_name = self._search_normalized(hnr.name)
+ if norm_name:
+ result = self._cache.housenumbers.get(norm_name, result)
+ if result[0] is None:
+ with self.conn.cursor() as cur:
+ hid = cur.scalar("SELECT getorcreate_hnr_id(%s)", (norm_name, ))
+
+ result = hid, norm_name
+ self._cache.housenumbers[norm_name] = result
+ else:
+ # Otherwise use the analyzer to determine the canonical name.
+ # Per convention we use the first variant as the 'lookup name', the
+ # name that gets saved in the housenumber field of the place.
+ word_id = analyzer.get_canonical_id(hnr)
+ if word_id:
+ result = self._cache.housenumbers.get(word_id, result)
+ if result[0] is None:
+ variants = analyzer.compute_variants(word_id)
+ if variants:
+ with self.conn.cursor() as cur:
+ hid = cur.scalar("SELECT create_analyzed_hnr_id(%s, %s)",
+ (word_id, list(variants)))
+ result = hid, variants[0]
+ self._cache.housenumbers[word_id] = result
+
+ return result
+
+
+ def _compute_partial_tokens(self, name: str) -> List[int]:
""" Normalize the given term, split it into partial words and return
then token list for them.
"""
+ assert self.conn is not None
norm_name = self._search_normalized(name)
tokens = []
(need_lookup, ))
for partial, token in cur:
+ assert token is not None
tokens.append(token)
self._cache.partials[partial] = token
return tokens
- def _compute_name_tokens(self, names):
+ def _retrieve_full_tokens(self, name: str) -> List[int]:
+ """ Get the full name token for the given name, if it exists.
+ The name is only retrieved for the standard analyser.
+ """
+ assert self.conn is not None
+ norm_name = self._search_normalized(name)
+
+ # return cached if possible
+ if norm_name in self._cache.fulls:
+ return self._cache.fulls[norm_name]
+
+ with self.conn.cursor() as cur:
+ cur.execute("SELECT word_id FROM word WHERE word_token = %s and type = 'W'",
+ (norm_name, ))
+ full = [row[0] for row in cur]
+
+ self._cache.fulls[norm_name] = full
+
+ return full
+
+
+ def _compute_name_tokens(self, names: Sequence[PlaceName]) -> Tuple[Set[int], Set[int]]:
""" Computes the full name and partial name tokens for the given
dictionary of names.
"""
- full_tokens = set()
- partial_tokens = set()
+ assert self.conn is not None
+ full_tokens: Set[int] = set()
+ partial_tokens: Set[int] = set()
for name in names:
analyzer_id = name.get_attr('analyzer')
- norm_name = self._normalized(name.name)
+ analyzer = self.token_analysis.get_analyzer(analyzer_id)
+ word_id = analyzer.get_canonical_id(name)
if analyzer_id is None:
- token_id = norm_name
+ token_id = word_id
else:
- token_id = f'{norm_name}@{analyzer_id}'
+ token_id = f'{word_id}@{analyzer_id}'
full, part = self._cache.names.get(token_id, (None, None))
if full is None:
- variants = self.token_analysis.analysis[analyzer_id].get_variants_ascii(norm_name)
+ variants = analyzer.compute_variants(word_id)
if not variants:
continue
with self.conn.cursor() as cur:
- cur.execute("SELECT (getorcreate_full_word(%s, %s)).*",
+ cur.execute("SELECT * FROM getorcreate_full_word(%s, %s)",
(token_id, variants))
- full, part = cur.fetchone()
+ full, part = cast(Tuple[int, List[int]], cur.fetchone())
self._cache.names[token_id] = (full, part)
+ assert part is not None
+
full_tokens.add(full)
partial_tokens.update(part)
return full_tokens, partial_tokens
- def _add_postcode(self, postcode):
+ def _add_postcode(self, item: PlaceName) -> Optional[str]:
""" Make sure the normalized postcode is present in the word table.
"""
- if re.search(r'[:,;]', postcode) is None:
- postcode = self.normalize_postcode(postcode)
+ assert self.conn is not None
+ analyzer = self.token_analysis.analysis.get('@postcode')
- if postcode not in self._cache.postcodes:
- term = self._search_normalized(postcode)
- if not term:
- return
+ if analyzer is None:
+ postcode_name = item.name.strip().upper()
+ variant_base = None
+ else:
+ postcode_name = analyzer.get_canonical_id(item)
+ variant_base = item.get_attr("variant")
- with self.conn.cursor() as cur:
- # no word_id needed for postcodes
- cur.execute("""INSERT INTO word (word_token, type, word)
- (SELECT %s, 'P', pc FROM (VALUES (%s)) as v(pc)
- WHERE NOT EXISTS
- (SELECT * FROM word
- WHERE type = 'P' and word = pc))
- """, (term, postcode))
- self._cache.postcodes.add(postcode)
-
-
- @staticmethod
- def _split_housenumbers(hnrs):
- if len(hnrs) > 1 or ',' in hnrs[0] or ';' in hnrs[0]:
- # split numbers if necessary
- simple_list = []
- for hnr in hnrs:
- simple_list.extend((x.strip() for x in re.split(r'[;,]', hnr)))
-
- if len(simple_list) > 1:
- hnrs = list(set(simple_list))
- else:
- hnrs = simple_list
+ if variant_base:
+ postcode = f'{postcode_name}@{variant_base}'
+ else:
+ postcode = postcode_name
- return hnrs
+ if postcode not in self._cache.postcodes:
+ term = self._search_normalized(postcode_name)
+ if not term:
+ return None
+ variants = {term}
+ if analyzer is not None and variant_base:
+ variants.update(analyzer.compute_variants(variant_base))
+
+ with self.conn.cursor() as cur:
+ cur.execute("SELECT create_postcode_word(%s, %s)",
+ (postcode, list(variants)))
+ self._cache.postcodes.add(postcode)
+ return postcode_name
class _TokenInfo:
""" Collect token information to be sent back to the database.
"""
- def __init__(self, cache):
- self._cache = cache
- self.data = {}
+ def __init__(self) -> None:
+ self.names: Optional[str] = None
+ self.housenumbers: Set[str] = set()
+ self.housenumber_tokens: Set[int] = set()
+ self.street_tokens: Set[int] = set()
+ self.place_tokens: Set[int] = set()
+ self.address_tokens: Dict[str, str] = {}
+ self.postcode: Optional[str] = None
+
+
+ def _mk_array(self, tokens: Iterable[Any]) -> str:
+ return f"{{{','.join((str(s) for s in tokens))}}}"
+
+
+ def to_dict(self) -> Dict[str, Any]:
+ """ Return the token information in database importable format.
+ """
+ out: Dict[str, Any] = {}
+
+ if self.names:
+ out['names'] = self.names
+
+ if self.housenumbers:
+ out['hnr'] = ';'.join(self.housenumbers)
+ out['hnr_tokens'] = self._mk_array(self.housenumber_tokens)
+
+ if self.street_tokens:
+ out['street'] = self._mk_array(self.street_tokens)
+
+ if self.place_tokens:
+ out['place'] = self._mk_array(self.place_tokens)
- @staticmethod
- def _mk_array(tokens):
- return '{%s}' % ','.join((str(s) for s in tokens))
+ if self.address_tokens:
+ out['addr'] = self.address_tokens
+ if self.postcode:
+ out['postcode'] = self.postcode
- def add_names(self, fulls, partials):
+ return out
+
+
+ def set_names(self, fulls: Iterable[int], partials: Iterable[int]) -> None:
""" Adds token information for the normalised names.
"""
- self.data['names'] = self._mk_array(itertools.chain(fulls, partials))
+ self.names = self._mk_array(itertools.chain(fulls, partials))
- def add_housenumbers(self, conn, hnrs):
+ def add_housenumber(self, token: Optional[int], hnr: Optional[str]) -> None:
""" Extract housenumber information from a list of normalised
housenumbers.
"""
- self.data['hnr_tokens'] = self._mk_array(self._cache.get_hnr_tokens(conn, hnrs))
- self.data['hnr'] = ';'.join(hnrs)
+ if token:
+ assert hnr is not None
+ self.housenumbers.add(hnr)
+ self.housenumber_tokens.add(token)
- def add_street(self, tokens):
+ def add_street(self, tokens: Iterable[int]) -> None:
""" Add addr:street match terms.
"""
- if tokens:
- self.data['street'] = self._mk_array(tokens)
+ self.street_tokens.update(tokens)
- def add_place(self, tokens):
+ def add_place(self, tokens: Iterable[int]) -> None:
""" Add addr:place search and match terms.
"""
- if tokens:
- self.data['place'] = self._mk_array(tokens)
+ self.place_tokens.update(tokens)
- def add_address_terms(self, terms):
+ def add_address_term(self, key: str, partials: Iterable[int]) -> None:
""" Add additional address terms.
"""
- tokens = {key: self._mk_array(partials)
- for key, partials in terms if partials}
+ if partials:
+ self.address_tokens[key] = self._mk_array(partials)
- if tokens:
- self.data['addr'] = tokens
+ def set_postcode(self, postcode: Optional[str]) -> None:
+ """ Set the postcode to the given one.
+ """
+ self.postcode = postcode
class _TokenCache:
This cache is not thread-safe and needs to be instantiated per
analyzer.
"""
- def __init__(self):
- self.names = {}
- self.partials = {}
- self.postcodes = set()
- self.housenumbers = {}
-
-
- def get_hnr_tokens(self, conn, terms):
- """ Get token ids for a list of housenumbers, looking them up in the
- database if necessary. `terms` is an iterable of normalized
- housenumbers.
- """
- tokens = []
- askdb = []
-
- for term in terms:
- token = self.housenumbers.get(term)
- if token is None:
- askdb.append(term)
- else:
- tokens.append(token)
-
- if askdb:
- with conn.cursor() as cur:
- cur.execute("SELECT nr, getorcreate_hnr_id(nr) FROM unnest(%s) as nr",
- (askdb, ))
- for term, tid in cur:
- self.housenumbers[term] = tid
- tokens.append(tid)
-
- return tokens
+ def __init__(self) -> None:
+ self.names: Dict[str, Tuple[int, List[int]]] = {}
+ self.partials: Dict[str, int] = {}
+ self.fulls: Dict[str, List[int]] = {}
+ self.postcodes: Set[str] = set()
+ self.housenumbers: Dict[str, Tuple[Optional[int], Optional[str]]] = {}
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tokenizer implementing normalisation as used before Nominatim 4.
"""
+from typing import Optional, Sequence, List, Tuple, Mapping, Any, Callable, \
+ cast, Dict, Set, Iterable
from collections import OrderedDict
import logging
+from pathlib import Path
import re
import shutil
from textwrap import dedent
import psycopg2
import psycopg2.extras
-from nominatim.db.connection import connect
+from nominatim.db.connection import connect, Connection
+from nominatim.config import Configuration
from nominatim.db import properties
from nominatim.db import utils as db_utils
from nominatim.db.sql_preprocessor import SQLPreprocessor
+from nominatim.data.place_info import PlaceInfo
from nominatim.errors import UsageError
from nominatim.tokenizer.base import AbstractAnalyzer, AbstractTokenizer
LOG = logging.getLogger()
-def create(dsn, data_dir):
+def create(dsn: str, data_dir: Path) -> 'LegacyTokenizer':
""" Create a new instance of the tokenizer provided by this module.
"""
return LegacyTokenizer(dsn, data_dir)
-def _install_module(config_module_path, src_dir, module_dir):
+def _install_module(config_module_path: str, src_dir: Path, module_dir: Path) -> str:
""" Copies the PostgreSQL normalisation module into the project
directory if necessary. For historical reasons the module is
saved in the '/module' subdirectory and not with the other tokenizer
# Compatibility mode for builddir installations.
if module_dir.exists() and src_dir.samefile(module_dir):
LOG.info('Running from build directory. Leaving database module as is.')
- return module_dir
+ return str(module_dir)
# In any other case install the module in the project directory.
if not module_dir.exists():
LOG.info('Database module installed at %s', str(destfile))
- return module_dir
+ return str(module_dir)
-def _check_module(module_dir, conn):
+def _check_module(module_dir: str, conn: Connection) -> None:
""" Try to use the PostgreSQL module to confirm that it is correctly
installed and accessible from PostgreSQL.
"""
with conn.cursor() as cur:
try:
cur.execute("""CREATE FUNCTION nominatim_test_import_func(text)
- RETURNS text AS '{}/nominatim.so', 'transliteration'
+ RETURNS text AS %s, 'transliteration'
LANGUAGE c IMMUTABLE STRICT;
DROP FUNCTION nominatim_test_import_func(text)
- """.format(module_dir))
+ """, (f'{module_dir}/nominatim.so', ))
except psycopg2.DatabaseError as err:
LOG.fatal("Error accessing database module: %s", err)
raise UsageError("Database module cannot be accessed.") from err
calls to the database.
"""
- def __init__(self, dsn, data_dir):
+ def __init__(self, dsn: str, data_dir: Path) -> None:
self.dsn = dsn
self.data_dir = data_dir
- self.normalization = None
+ self.normalization: Optional[str] = None
- def init_new_db(self, config, init_db=True):
+ def init_new_db(self, config: Configuration, init_db: bool = True) -> None:
""" Set up a new tokenizer for the database.
This copies all necessary data in the project directory to make
self.normalization = config.TERM_NORMALIZATION
- self._install_php(config)
+ self._install_php(config, overwrite=True)
with connect(self.dsn) as conn:
_check_module(module_dir, conn)
self._init_db_tables(config)
- def init_from_project(self, _):
+ def init_from_project(self, config: Configuration) -> None:
""" Initialise the tokenizer from the project directory.
"""
with connect(self.dsn) as conn:
self.normalization = properties.get_property(conn, DBCFG_NORMALIZATION)
+ if not (config.project_dir / 'module' / 'nominatim.so').exists():
+ _install_module(config.DATABASE_MODULE_PATH,
+ config.lib_dir.module,
+ config.project_dir / 'module')
- def finalize_import(self, config):
+ self._install_php(config, overwrite=False)
+
+ def finalize_import(self, config: Configuration) -> None:
""" Do any required postprocessing to make the tokenizer data ready
for use.
"""
sqlp.run_sql_file(conn, 'tokenizer/legacy_tokenizer_indices.sql')
- def update_sql_functions(self, config):
+ def update_sql_functions(self, config: Configuration) -> None:
""" Reimport the SQL functions for this tokenizer.
"""
with connect(self.dsn) as conn:
modulepath=modulepath)
- def check_database(self, _):
+ def check_database(self, _: Configuration) -> Optional[str]:
""" Check that the tokenizer is set up correctly.
"""
hint = """\
return None
- def migrate_database(self, config):
+ def migrate_database(self, config: Configuration) -> None:
""" Initialise the project directory of an existing database for
use with this tokenizer.
self._save_config(conn, config)
- def update_statistics(self):
+ def update_statistics(self) -> None:
""" Recompute the frequency of full words.
"""
with connect(self.dsn) as conn:
cur.drop_table("word_frequencies")
conn.commit()
- def name_analyzer(self):
+
+ def update_word_tokens(self) -> None:
+ """ No house-keeping implemented for the legacy tokenizer.
+ """
+ LOG.info("No tokenizer clean-up available.")
+
+
+ def name_analyzer(self) -> 'LegacyNameAnalyzer':
""" Create a new analyzer for tokenizing names and queries
using this tokinzer. Analyzers are context managers and should
be used accordingly:
return LegacyNameAnalyzer(self.dsn, normalizer)
- def _install_php(self, config):
+ def _install_php(self, config: Configuration, overwrite: bool = True) -> None:
""" Install the php script for the tokenizer.
"""
php_file = self.data_dir / "tokenizer.php"
- php_file.write_text(dedent("""\
- <?php
- @define('CONST_Max_Word_Frequency', {0.MAX_WORD_FREQUENCY});
- @define('CONST_Term_Normalization_Rules', "{0.TERM_NORMALIZATION}");
- require_once('{0.lib_dir.php}/tokenizer/legacy_tokenizer.php');
- """.format(config)))
+
+ if not php_file.exists() or overwrite:
+ php_file.write_text(dedent(f"""\
+ <?php
+ @define('CONST_Max_Word_Frequency', {config.MAX_WORD_FREQUENCY});
+ @define('CONST_Term_Normalization_Rules', "{config.TERM_NORMALIZATION}");
+ require_once('{config.lib_dir.php}/tokenizer/legacy_tokenizer.php');
+ """), encoding='utf-8')
- def _init_db_tables(self, config):
+ def _init_db_tables(self, config: Configuration) -> None:
""" Set up the word table and fill it with pre-computed word
frequencies.
"""
db_utils.execute_file(self.dsn, config.lib_dir.data / 'words.sql')
- def _save_config(self, conn, config):
+ def _save_config(self, conn: Connection, config: Configuration) -> None:
""" Save the configuration that needs to remain stable for the given
database as database properties.
"""
+ assert self.normalization is not None
+
properties.set_property(conn, DBCFG_NORMALIZATION, self.normalization)
properties.set_property(conn, DBCFG_MAXWORDFREQ, config.MAX_WORD_FREQUENCY)
normalization.
"""
- def __init__(self, dsn, normalizer):
- self.conn = connect(dsn).connection
+ def __init__(self, dsn: str, normalizer: Any):
+ self.conn: Optional[Connection] = connect(dsn).connection
self.conn.autocommit = True
self.normalizer = normalizer
psycopg2.extras.register_hstore(self.conn)
self._cache = _TokenCache(self.conn)
- def close(self):
+ def close(self) -> None:
""" Free all resources used by the analyzer.
"""
if self.conn:
self.conn = None
- def get_word_token_info(self, words):
+ def get_word_token_info(self, words: Sequence[str]) -> List[Tuple[str, str, int]]:
""" Return token information for the given list of words.
If a word starts with # it is assumed to be a full name
otherwise is a partial name.
The function is used for testing and debugging only
and not necessarily efficient.
"""
+ assert self.conn is not None
with self.conn.cursor() as cur:
cur.execute("""SELECT t.term, word_token, word_id
FROM word, (SELECT unnest(%s::TEXT[]) as term) t
return [(r[0], r[1], r[2]) for r in cur]
- def normalize(self, phrase):
+ def normalize(self, phrase: str) -> str:
""" Normalize the given phrase, i.e. remove all properties that
are irrelevant for search.
"""
- return self.normalizer.transliterate(phrase)
+ return cast(str, self.normalizer.transliterate(phrase))
- @staticmethod
- def normalize_postcode(postcode):
+ def normalize_postcode(self, postcode: str) -> str:
""" Convert the postcode to a standardized form.
This function must yield exactly the same result as the SQL function
return postcode.strip().upper()
- def update_postcodes_from_db(self):
+ def update_postcodes_from_db(self) -> None:
""" Update postcode tokens in the word table from the location_postcode
table.
"""
+ assert self.conn is not None
+
with self.conn.cursor() as cur:
# This finds us the rows in location_postcode and word that are
# missing in the other table.
- def update_special_phrases(self, phrases, should_replace):
+ def update_special_phrases(self, phrases: Iterable[Tuple[str, str, str, str]],
+ should_replace: bool) -> None:
""" Replace the search index for special phrases with the new phrases.
"""
+ assert self.conn is not None
+
norm_phrases = set(((self.normalize(p[0]), p[1], p[2], p[3])
for p in phrases))
len(norm_phrases), len(to_add), len(to_delete))
- def add_country_names(self, country_code, names):
+ def add_country_names(self, country_code: str, names: Mapping[str, str]) -> None:
""" Add names for the given country to the search index.
"""
+ assert self.conn is not None
+
with self.conn.cursor() as cur:
cur.execute(
"""INSERT INTO word (word_id, word_token, country_code)
""", (country_code, list(names.values()), country_code))
- def process_place(self, place):
+ def process_place(self, place: PlaceInfo) -> Mapping[str, Any]:
""" Determine tokenizer information about the given place.
Returns a JSON-serialisable structure that will be handed into
the database via the token_info field.
"""
+ assert self.conn is not None
+
token_info = _TokenInfo(self._cache)
names = place.name
token_info.add_names(self.conn, names)
if place.is_country():
+ assert place.country_code is not None
self.add_country_names(place.country_code, names)
address = place.address
return token_info.data
- def _process_place_address(self, token_info, address):
+ def _process_place_address(self, token_info: '_TokenInfo', address: Mapping[str, str]) -> None:
+ assert self.conn is not None
hnrs = []
addr_terms = []
if key == 'postcode':
# Make sure the normalized postcode is present in the word table.
if re.search(r'[:,;]', value) is None:
- self._cache.add_postcode(self.conn,
- self.normalize_postcode(value))
+ norm_pc = self.normalize_postcode(value)
+ token_info.set_postcode(norm_pc)
+ self._cache.add_postcode(self.conn, norm_pc)
elif key in ('housenumber', 'streetnumber', 'conscriptionnumber'):
hnrs.append(value)
elif key == 'street':
token_info.add_street(self.conn, value)
elif key == 'place':
token_info.add_place(self.conn, value)
- elif not key.startswith('_') and key not in ('country', 'full'):
+ elif not key.startswith('_') \
+ and key not in ('country', 'full', 'inclusion'):
addr_terms.append((key, value))
if hnrs:
class _TokenInfo:
""" Collect token information to be sent back to the database.
"""
- def __init__(self, cache):
+ def __init__(self, cache: '_TokenCache') -> None:
self.cache = cache
- self.data = {}
+ self.data: Dict[str, Any] = {}
- def add_names(self, conn, names):
+ def add_names(self, conn: Connection, names: Mapping[str, str]) -> None:
""" Add token information for the names of the place.
"""
with conn.cursor() as cur:
(names, ))
- def add_housenumbers(self, conn, hnrs):
+ def add_housenumbers(self, conn: Connection, hnrs: Sequence[str]) -> None:
""" Extract housenumber information from the address.
"""
if len(hnrs) == 1:
return
# split numbers if necessary
- simple_list = []
+ simple_list: List[str] = []
for hnr in hnrs:
simple_list.extend((x.strip() for x in re.split(r'[;,]', hnr)))
simple_list = list(set(simple_list))
with conn.cursor() as cur:
- cur.execute("SELECT (create_housenumbers(%s)).* ", (simple_list, ))
- self.data['hnr_tokens'], self.data['hnr'] = cur.fetchone()
+ cur.execute("SELECT * FROM create_housenumbers(%s)", (simple_list, ))
+ result = cur.fetchone()
+ assert result is not None
+ self.data['hnr_tokens'], self.data['hnr'] = result
- def add_street(self, conn, street):
+ def set_postcode(self, postcode: str) -> None:
+ """ Set or replace the postcode token with the given value.
+ """
+ self.data['postcode'] = postcode
+
+ def add_street(self, conn: Connection, street: str) -> None:
""" Add addr:street match terms.
"""
- def _get_street(name):
+ def _get_street(name: str) -> List[int]:
with conn.cursor() as cur:
- return cur.scalar("SELECT word_ids_from_name(%s)::text", (name, ))
+ return cast(List[int],
+ cur.scalar("SELECT word_ids_from_name(%s)::text", (name, )))
tokens = self.cache.streets.get(street, _get_street)
if tokens:
self.data['street'] = tokens
- def add_place(self, conn, place):
+ def add_place(self, conn: Connection, place: str) -> None:
""" Add addr:place search and match terms.
"""
- def _get_place(name):
+ def _get_place(name: str) -> Tuple[List[int], List[int]]:
with conn.cursor() as cur:
cur.execute("""SELECT make_keywords(hstore('name' , %s))::text,
word_ids_from_name(%s)::text""",
(name, name))
- return cur.fetchone()
+ return cast(Tuple[List[int], List[int]], cur.fetchone())
self.data['place_search'], self.data['place_match'] = \
self.cache.places.get(place, _get_place)
- def add_address_terms(self, conn, terms):
+ def add_address_terms(self, conn: Connection, terms: Sequence[Tuple[str, str]]) -> None:
""" Add additional address terms.
"""
- def _get_address_term(name):
+ def _get_address_term(name: str) -> Tuple[List[int], List[int]]:
with conn.cursor() as cur:
cur.execute("""SELECT addr_ids_from_name(%s)::text,
word_ids_from_name(%s)::text""",
(name, name))
- return cur.fetchone()
+ return cast(Tuple[List[int], List[int]], cur.fetchone())
tokens = {}
for key, value in terms:
produce the item when there is a cache miss.
"""
- def __init__(self, maxsize=128, init_data=None):
- self.data = init_data or OrderedDict()
+ def __init__(self, maxsize: int = 128):
+ self.data: 'OrderedDict[str, Any]' = OrderedDict()
self.maxsize = maxsize
- if init_data is not None and len(init_data) > maxsize:
- self.maxsize = len(init_data)
- def get(self, key, generator):
+
+ def get(self, key: str, generator: Callable[[str], Any]) -> Any:
""" Get the item with the given key from the cache. If nothing
is found in the cache, generate the value through the
generator function and store it in the cache.
This cache is not thread-safe and needs to be instantiated per
analyzer.
"""
- def __init__(self, conn):
+ def __init__(self, conn: Connection):
# various LRU caches
self.streets = _LRU(maxsize=256)
self.places = _LRU(maxsize=128)
with conn.cursor() as cur:
cur.execute("""SELECT i, ARRAY[getorcreate_housenumber_id(i::text)]::text
FROM generate_series(1, 100) as i""")
- self._cached_housenumbers = {str(r[0]): r[1] for r in cur}
+ self._cached_housenumbers: Dict[str, str] = {str(r[0]): r[1] for r in cur}
# For postcodes remember the ones that have already been added
- self.postcodes = set()
+ self.postcodes: Set[str] = set()
- def get_housenumber(self, number):
+ def get_housenumber(self, number: str) -> Optional[str]:
""" Get a housenumber token from the cache.
"""
return self._cached_housenumbers.get(number)
- def add_postcode(self, conn, postcode):
+ def add_postcode(self, conn: Connection, postcode: str) -> None:
""" Make sure the given postcode is in the database.
"""
if postcode not in self.postcodes:
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Handler for cleaning name and address tags in place information before it
is handed to the token analysis.
"""
-import importlib
+from typing import Optional, List, Mapping, Sequence, Callable, Any, Tuple
from nominatim.errors import UsageError
-
-class PlaceName:
- """ A searchable name for a place together with properties.
- Every name object saves the name proper and two basic properties:
- * 'kind' describes the name of the OSM key used without any suffixes
- (i.e. the part after the colon removed)
- * 'suffix' contains the suffix of the OSM tag, if any. The suffix
- is the part of the key after the first colon.
- In addition to that, the name may have arbitrary additional attributes.
- Which attributes are used, depends on the token analyser.
- """
-
- def __init__(self, name, kind, suffix):
- self.name = name
- self.kind = kind
- self.suffix = suffix
- self.attr = {}
-
-
- def __repr__(self):
- return f"PlaceName(name='{self.name}',kind='{self.kind}',suffix='{self.suffix}')"
-
-
- def clone(self, name=None, kind=None, suffix=None, attr=None):
- """ Create a deep copy of the place name, optionally with the
- given parameters replaced. In the attribute list only the given
- keys are updated. The list is not replaced completely.
- In particular, the function cannot to be used to remove an
- attribute from a place name.
- """
- newobj = PlaceName(name or self.name,
- kind or self.kind,
- suffix or self.suffix)
-
- newobj.attr.update(self.attr)
- if attr:
- newobj.attr.update(attr)
-
- return newobj
-
-
- def set_attr(self, key, value):
- """ Add the given property to the name. If the property was already
- set, then the value is overwritten.
- """
- self.attr[key] = value
-
-
- def get_attr(self, key, default=None):
- """ Return the given property or the value of 'default' if it
- is not set.
- """
- return self.attr.get(key, default)
-
-
- def has_attr(self, key):
- """ Check if the given attribute is set.
- """
- return key in self.attr
-
-
-class _ProcessInfo:
- """ Container class for information handed into to handler functions.
- The 'names' and 'address' members are mutable. A handler must change
- them by either modifying the lists place or replacing the old content
- with a new list.
- """
-
- def __init__(self, place):
- self.place = place
- self.names = self._convert_name_dict(place.name)
- self.address = self._convert_name_dict(place.address)
-
-
- @staticmethod
- def _convert_name_dict(names):
- """ Convert a dictionary of names into a list of PlaceNames.
- The dictionary key is split into the primary part of the key
- and the suffix (the part after an optional colon).
- """
- out = []
-
- if names:
- for key, value in names.items():
- parts = key.split(':', 1)
- out.append(PlaceName(value.strip(),
- parts[0].strip(),
- parts[1].strip() if len(parts) > 1 else None))
-
- return out
+from nominatim.config import Configuration
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
+from nominatim.tokenizer.sanitizers.base import SanitizerHandler, ProcessInfo
+from nominatim.data.place_name import PlaceName
+from nominatim.data.place_info import PlaceInfo
class PlaceSanitizer:
names and address before they are used by the token analysers.
"""
- def __init__(self, rules):
- self.handlers = []
+ def __init__(self, rules: Optional[Sequence[Mapping[str, Any]]],
+ config: Configuration) -> None:
+ self.handlers: List[Callable[[ProcessInfo], None]] = []
if rules:
for func in rules:
if 'step' not in func:
raise UsageError("Sanitizer rule is missing the 'step' attribute.")
- module_name = 'nominatim.tokenizer.sanitizers.' + func['step'].replace('-', '_')
- handler_module = importlib.import_module(module_name)
- self.handlers.append(handler_module.create(func))
+ if not isinstance(func['step'], str):
+ raise UsageError("'step' attribute must be a simple string.")
+
+ module: SanitizerHandler = \
+ config.load_plugin_module(func['step'], 'nominatim.tokenizer.sanitizers')
+
+ self.handlers.append(module.create(SanitizerConfig(func)))
- def process_names(self, place):
+ def process_names(self, place: PlaceInfo) -> Tuple[List[PlaceName], List[PlaceName]]:
""" Extract a sanitized list of names and address parts from the
given place. The function returns a tuple
(list of names, list of address names)
"""
- obj = _ProcessInfo(place)
+ obj = ProcessInfo(place)
for func in self.handlers:
func(obj)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Common data types and protocols for sanitizers.
+"""
+from typing import Optional, List, Mapping, Callable
+
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
+from nominatim.data.place_info import PlaceInfo
+from nominatim.data.place_name import PlaceName
+from nominatim.typing import Protocol, Final
+
+
+class ProcessInfo:
+ """ Container class for information handed into to handler functions.
+ The 'names' and 'address' members are mutable. A handler must change
+ them by either modifying the lists place or replacing the old content
+ with a new list.
+ """
+
+ def __init__(self, place: PlaceInfo):
+ self.place: Final = place
+ self.names = self._convert_name_dict(place.name)
+ self.address = self._convert_name_dict(place.address)
+
+
+ @staticmethod
+ def _convert_name_dict(names: Optional[Mapping[str, str]]) -> List[PlaceName]:
+ """ Convert a dictionary of names into a list of PlaceNames.
+ The dictionary key is split into the primary part of the key
+ and the suffix (the part after an optional colon).
+ """
+ out = []
+
+ if names:
+ for key, value in names.items():
+ parts = key.split(':', 1)
+ out.append(PlaceName(value.strip(),
+ parts[0].strip(),
+ parts[1].strip() if len(parts) > 1 else None))
+
+ return out
+
+
+class SanitizerHandler(Protocol):
+ """ Protocol for sanitizer modules.
+ """
+
+ def create(self, config: SanitizerConfig) -> Callable[[ProcessInfo], None]:
+ """
+ Create a function for sanitizing a place.
+
+ Arguments:
+ config: A dictionary with the additional configuration options
+ specified in the tokenizer configuration
+
+ Return:
+ The result must be a callable that takes a place description
+ and transforms name and address as reuqired.
+ """
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Sanitizer that preprocesses address tags for house numbers. The sanitizer
+allows to
+
+* define which tags are to be considered house numbers (see 'filter-kind')
+* split house number lists into individual numbers (see 'delimiters')
+
+Arguments:
+ delimiters: Define the set of characters to be used for
+ splitting a list of house numbers into parts. (default: ',;')
+ filter-kind: Define the address tags that are considered to be a
+ house number. Either takes a single string or a list of strings,
+ where each string is a regular expression. An address item
+ is considered a house number if the 'kind' fully matches any
+ of the given regular expressions. (default: 'housenumber')
+ convert-to-name: Define house numbers that should be treated as a name
+ instead of a house number. Either takes a single string
+ or a list of strings, where each string is a regular
+ expression that must match the full house number value.
+"""
+from typing import Callable, Iterator, List
+import re
+
+from nominatim.tokenizer.sanitizers.base import ProcessInfo
+from nominatim.data.place_name import PlaceName
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
+
+class _HousenumberSanitizer:
+
+ def __init__(self, config: SanitizerConfig) -> None:
+ self.filter_kind = config.get_filter_kind('housenumber')
+ self.split_regexp = config.get_delimiter()
+
+ nameregexps = config.get_string_list('convert-to-name', [])
+ self.is_name_regexp = [re.compile(r) for r in nameregexps]
+
+
+
+ def __call__(self, obj: ProcessInfo) -> None:
+ if not obj.address:
+ return
+
+ new_address: List[PlaceName] = []
+ for item in obj.address:
+ if self.filter_kind(item.kind):
+ if self._treat_as_name(item.name):
+ obj.names.append(item.clone(kind='housenumber'))
+ else:
+ new_address.extend(item.clone(kind='housenumber', name=n)
+ for n in self.sanitize(item.name))
+ else:
+ # Don't touch other address items.
+ new_address.append(item)
+
+ obj.address = new_address
+
+
+ def sanitize(self, value: str) -> Iterator[str]:
+ """ Extract housenumbers in a regularized format from an OSM value.
+
+ The function works as a generator that yields all valid housenumbers
+ that can be created from the value.
+ """
+ for hnr in self.split_regexp.split(value):
+ if hnr:
+ yield from self._regularize(hnr)
+
+
+ def _regularize(self, hnr: str) -> Iterator[str]:
+ yield hnr
+
+
+ def _treat_as_name(self, housenumber: str) -> bool:
+ return any(r.fullmatch(housenumber) is not None for r in self.is_name_regexp)
+
+
+def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]:
+ """ Create a housenumber processing function.
+ """
+
+ return _HousenumberSanitizer(config)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Sanitizer that filters postcodes by their officially allowed pattern.
+
+Arguments:
+ convert-to-address: If set to 'yes' (the default), then postcodes that do
+ not conform with their country-specific pattern are
+ converted to an address component. That means that
+ the postcode does not take part when computing the
+ postcode centroids of a country but is still searchable.
+ When set to 'no', non-conforming postcodes are not
+ searchable either.
+ default-pattern: Pattern to use, when there is none available for the
+ country in question. Warning: will not be used for
+ objects that have no country assigned. These are always
+ assumed to have no postcode.
+"""
+from typing import Callable, Optional, Tuple
+
+from nominatim.data.postcode_format import PostcodeFormatter
+from nominatim.tokenizer.sanitizers.base import ProcessInfo
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
+
+class _PostcodeSanitizer:
+
+ def __init__(self, config: SanitizerConfig) -> None:
+ self.convert_to_address = config.get_bool('convert-to-address', True)
+ self.matcher = PostcodeFormatter()
+
+ default_pattern = config.get('default-pattern')
+ if default_pattern is not None and isinstance(default_pattern, str):
+ self.matcher.set_default_pattern(default_pattern)
+
+
+ def __call__(self, obj: ProcessInfo) -> None:
+ if not obj.address:
+ return
+
+ postcodes = ((i, o) for i, o in enumerate(obj.address) if o.kind == 'postcode')
+
+ for pos, postcode in postcodes:
+ formatted = self.scan(postcode.name, obj.place.country_code)
+
+ if formatted is None:
+ if self.convert_to_address:
+ postcode.kind = 'unofficial_postcode'
+ else:
+ obj.address.pop(pos)
+ else:
+ postcode.name = formatted[0]
+ postcode.set_attr('variant', formatted[1])
+
+
+ def scan(self, postcode: str, country: Optional[str]) -> Optional[Tuple[str, str]]:
+ """ Check the postcode for correct formatting and return the
+ normalized version. Returns None if the postcode does not
+ correspond to the official format of the given country.
+ """
+ match = self.matcher.match(country, postcode)
+ if match is None:
+ return None
+
+ assert country is not None
+
+ return self.matcher.normalize(country, match),\
+ ' '.join(filter(lambda p: p is not None, match.groups()))
+
+
+
+
+def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]:
+ """ Create a housenumber processing function.
+ """
+
+ return _PostcodeSanitizer(config)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Configuration for Sanitizers.
+"""
+from typing import Sequence, Optional, Pattern, Callable, Any, TYPE_CHECKING
+from collections import UserDict
+import re
+
+from nominatim.errors import UsageError
+
+# working around missing generics in Python < 3.8
+# See https://github.com/python/typing/issues/60#issuecomment-869757075
+if TYPE_CHECKING:
+ _BaseUserDict = UserDict[str, Any]
+else:
+ _BaseUserDict = UserDict
+
+class SanitizerConfig(_BaseUserDict):
+ """ The `SanitizerConfig` class is a read-only dictionary
+ with configuration options for the sanitizer.
+ In addition to the usual dictionary functions, the class provides
+ accessors to standard sanitizer options that are used by many of the
+ sanitizers.
+ """
+
+ def get_string_list(self, param: str, default: Sequence[str] = tuple()) -> Sequence[str]:
+ """ Extract a configuration parameter as a string list.
+
+ Arguments:
+ param: Name of the configuration parameter.
+ default: Value to return, when the parameter is missing.
+
+ Returns:
+ If the parameter value is a simple string, it is returned as a
+ one-item list. If the parameter value does not exist, the given
+ default is returned. If the parameter value is a list, it is
+ checked to contain only strings before being returned.
+ """
+ values = self.data.get(param, None)
+
+ if values is None:
+ return None if default is None else list(default)
+
+ if isinstance(values, str):
+ return [values] if values else []
+
+ if not isinstance(values, (list, tuple)):
+ raise UsageError(f"Parameter '{param}' must be string or list of strings.")
+
+ if any(not isinstance(value, str) for value in values):
+ raise UsageError(f"Parameter '{param}' must be string or list of strings.")
+
+ return values
+
+
+ def get_bool(self, param: str, default: Optional[bool] = None) -> bool:
+ """ Extract a configuration parameter as a boolean.
+
+ Arguments:
+ param: Name of the configuration parameter. The parameter must
+ contain one of the yaml boolean values or an
+ UsageError will be raised.
+ default: Value to return, when the parameter is missing.
+ When set to `None`, the parameter must be defined.
+
+ Returns:
+ Boolean value of the given parameter.
+ """
+ value = self.data.get(param, default)
+
+ if not isinstance(value, bool):
+ raise UsageError(f"Parameter '{param}' must be a boolean value ('yes' or 'no'.")
+
+ return value
+
+
+ def get_delimiter(self, default: str = ',;') -> Pattern[str]:
+ """ Return the 'delimiters' parameter in the configuration as a
+ compiled regular expression that can be used to split strings on
+ these delimiters.
+
+ Arguments:
+ default: Delimiters to be used when 'delimiters' parameter
+ is not explicitly configured.
+
+ Returns:
+ A regular expression pattern which can be used to
+ split a string. The regular expression makes sure that the
+ resulting names are stripped and that repeated delimiters
+ are ignored. It may still create empty fields on occasion. The
+ code needs to filter those.
+ """
+ delimiter_set = set(self.data.get('delimiters', default))
+ if not delimiter_set:
+ raise UsageError("Empty 'delimiter' parameter not allowed for sanitizer.")
+
+ return re.compile('\\s*[{}]+\\s*'.format(''.join('\\' + d for d in delimiter_set)))
+
+
+ def get_filter_kind(self, *default: str) -> Callable[[str], bool]:
+ """ Return a filter function for the name kind from the 'filter-kind'
+ config parameter.
+
+ If the 'filter-kind' parameter is empty, the filter lets all items
+ pass. If the parameter is a string, it is interpreted as a single
+ regular expression that must match the full kind string.
+ If the parameter is a list then
+ any of the regular expressions in the list must match to pass.
+
+ Arguments:
+ default: Filters to be used, when the 'filter-kind' parameter
+ is not specified. If omitted then the default is to
+ let all names pass.
+
+ Returns:
+ A filter function which takes a name string and returns
+ True when the item passes the filter.
+ """
+ filters = self.get_string_list('filter-kind', default)
+
+ if not filters:
+ return lambda _: True
+
+ regexes = [re.compile(regex) for regex in filters]
+
+ return lambda name: any(regex.fullmatch(name) for regex in regexes)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Sanitizer that splits lists of names into their components.
Arguments:
delimiters: Define the set of characters to be used for
- splitting the list. (default: `,;`)
+ splitting the list. (default: ',;')
"""
-import re
+from typing import Callable
-from nominatim.errors import UsageError
+from nominatim.tokenizer.sanitizers.base import ProcessInfo
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
-def create(func):
+def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]:
""" Create a name processing function that splits name values with
multiple values into their components.
"""
- delimiter_set = set(func.get('delimiters', ',;'))
- if not delimiter_set:
- raise UsageError("Set of delimiters in split-name-list sanitizer is empty.")
+ regexp = config.get_delimiter()
- regexp = re.compile('\\s*[{}]\\s*'.format(''.join('\\' + d for d in delimiter_set)))
-
- def _process(obj):
+ def _process(obj: ProcessInfo) -> None:
if not obj.names:
return
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
This sanitizer creates additional name variants for names that have
addendums in brackets (e.g. "Halle (Saale)"). The additional variant contains
only the main name part with the bracket part removed.
"""
+from typing import Callable
-def create(_):
+from nominatim.tokenizer.sanitizers.base import ProcessInfo
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
+
+
+def create(_: SanitizerConfig) -> Callable[[ProcessInfo], None]:
""" Create a name processing function that creates additional name variants
for bracket addendums.
"""
- def _process(obj):
+ def _process(obj: ProcessInfo) -> None:
""" Add variants for names that have a bracket extension.
"""
if obj.names:
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
This sanitizer sets the `analyzer` property depending on the
language of the tag. The language is taken from the suffix of the name.
filter-kind: Restrict the names the sanitizer should be applied to
to the given tags. The parameter expects a list of
- regular expressions which are matched against `kind`.
+ regular expressions which are matched against 'kind'.
Note that a match against the full string is expected.
whitelist: Restrict the set of languages that should be tagged.
Expects a list of acceptable suffixes. When unset,
any analyzer tagged) is retained. (default: replace)
"""
-import re
+from typing import Callable, Dict, Optional, List
-from nominatim.tools import country_info
+from nominatim.data import country_info
+from nominatim.tokenizer.sanitizers.base import ProcessInfo
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
class _AnalyzerByLanguage:
""" Processor for tagging the language of names in a place.
"""
- def __init__(self, config):
- if 'filter-kind' in config:
- self.regexes = [re.compile(regex) for regex in config['filter-kind']]
- else:
- self.regexes = None
-
+ def __init__(self, config: SanitizerConfig) -> None:
+ self.filter_kind = config.get_filter_kind()
self.replace = config.get('mode', 'replace') != 'append'
self.whitelist = config.get('whitelist')
- self.__compute_default_languages(config.get('use-defaults', 'no'))
+ self._compute_default_languages(config.get('use-defaults', 'no'))
- def __compute_default_languages(self, use_defaults):
- self.deflangs = {}
+ def _compute_default_languages(self, use_defaults: str) -> None:
+ self.deflangs: Dict[Optional[str], List[str]] = {}
if use_defaults in ('mono', 'all'):
- for ccode, prop in country_info.iterate():
- clangs = prop['languages']
+ for ccode, clangs in country_info.iterate('languages'):
if len(clangs) == 1 or use_defaults == 'all':
if self.whitelist:
self.deflangs[ccode] = [l for l in clangs if l in self.whitelist]
self.deflangs[ccode] = clangs
- def _kind_matches(self, kind):
- if self.regexes is None:
- return True
-
- return any(regex.fullmatch(kind) for regex in self.regexes)
-
-
- def _suffix_matches(self, suffix):
+ def _suffix_matches(self, suffix: str) -> bool:
if self.whitelist is None:
return len(suffix) in (2, 3) and suffix.islower()
return suffix in self.whitelist
- def __call__(self, obj):
+ def __call__(self, obj: ProcessInfo) -> None:
if not obj.names:
return
more_names = []
for name in (n for n in obj.names
- if not n.has_attr('analyzer') and self._kind_matches(n.kind)):
+ if not n.has_attr('analyzer') and self.filter_kind(n.kind)):
if name.suffix:
langs = [name.suffix] if self._suffix_matches(name.suffix) else None
else:
obj.names.extend(more_names)
-def create(config):
+def create(config: SanitizerConfig) -> Callable[[ProcessInfo], None]:
""" Create a function that sets the analyzer property depending on the
language of the tag.
"""
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Common data types and protocols for analysers.
+"""
+from typing import Mapping, List, Any
+
+from nominatim.typing import Protocol
+from nominatim.data.place_name import PlaceName
+
+class Analyzer(Protocol):
+ """ The `create()` function of an analysis module needs to return an
+ object that implements the following functions.
+ """
+
+ def get_canonical_id(self, name: PlaceName) -> str:
+ """ Return the canonical form of the given name. The canonical ID must
+ be unique (the same ID must always yield the same variants) and
+ must be a form from which the variants can be derived.
+
+ Arguments:
+ name: Extended place name description as prepared by
+ the sanitizers.
+
+ Returns:
+ ID string with a canonical form of the name. The string may
+ be empty, when the analyzer cannot analyze the name at all,
+ for example because the character set in use does not match.
+ """
+
+ def compute_variants(self, canonical_id: str) -> List[str]:
+ """ Compute the transliterated spelling variants for the given
+ canonical ID.
+
+ Arguments:
+ canonical_id: ID string previously computed with
+ `get_canonical_id()`.
+
+ Returns:
+ A list of possible spelling variants. All strings must have
+ been transformed with the global normalizer and
+ transliterator ICU rules. Otherwise they cannot be matched
+ against the input by the query frontend.
+ The list may be empty, when there are no useful
+ spelling variants. This may happen when an analyzer only
+ usually outputs additional variants to the canonical spelling
+ and there are no such variants.
+ """
+
+
+class AnalysisModule(Protocol):
+ """ The setup of the token analysis is split into two parts:
+ configuration and analyser factory. A token analysis module must
+ therefore implement the two functions here described.
+ """
+
+ def configure(self, rules: Mapping[str, Any],
+ normalizer: Any, transliterator: Any) -> Any:
+ """ Prepare the configuration of the analysis module.
+ This function should prepare all data that can be shared
+ between instances of this analyser.
+
+ Arguments:
+ rules: A dictionary with the additional configuration options
+ as specified in the tokenizer configuration.
+ normalizer: an ICU Transliterator with the compiled
+ global normalization rules.
+ transliterator: an ICU Transliterator with the compiled
+ global transliteration rules.
+
+ Returns:
+ A data object with configuration data. This will be handed
+ as is into the `create()` function and may be
+ used freely by the analysis module as needed.
+ """
+
+ def create(self, normalizer: Any, transliterator: Any, config: Any) -> Analyzer:
+ """ Create a new instance of the analyser.
+ A separate instance of the analyser is created for each thread
+ when used in multi-threading context.
+
+ Arguments:
+ normalizer: an ICU Transliterator with the compiled normalization
+ rules.
+ transliterator: an ICU Transliterator with the compiled
+ transliteration rules.
+ config: The object that was returned by the call to configure().
+
+ Returns:
+ A new analyzer instance. This must be an object that implements
+ the Analyzer protocol.
+ """
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Parser for configuration for variants.
+"""
+from typing import Any, Iterator, Tuple, List, Optional, Set, NamedTuple
+from collections import defaultdict
+import itertools
+import re
+
+from nominatim.config import flatten_config_list
+from nominatim.errors import UsageError
+
+class ICUVariant(NamedTuple):
+ """ A single replacement rule for variant creation.
+ """
+ source: str
+ replacement: str
+
+
+def get_variant_config(in_rules: Any,
+ normalizer: Any) -> Tuple[List[Tuple[str, List[str]]], str]:
+ """ Convert the variant definition from the configuration into
+ replacement sets.
+
+ Returns a tuple containing the replacement set and the list of characters
+ used in the replacements.
+ """
+ immediate = defaultdict(list)
+ chars: Set[str] = set()
+
+ if in_rules:
+ vset: Set[ICUVariant] = set()
+ rules = flatten_config_list(in_rules, 'variants')
+
+ vmaker = _VariantMaker(normalizer)
+
+ for section in rules:
+ for rule in (section.get('words') or []):
+ vset.update(vmaker.compute(rule))
+
+ # Intermediate reorder by source. Also compute required character set.
+ for variant in vset:
+ if variant.source[-1] == ' ' and variant.replacement[-1] == ' ':
+ replstr = variant.replacement[:-1]
+ else:
+ replstr = variant.replacement
+ immediate[variant.source].append(replstr)
+ chars.update(variant.source)
+
+ return list(immediate.items()), ''.join(chars)
+
+
+class _VariantMaker:
+ """ Generator for all necessary ICUVariants from a single variant rule.
+
+ All text in rules is normalized to make sure the variants match later.
+ """
+
+ def __init__(self, normalizer: Any) -> None:
+ self.norm = normalizer
+
+
+ def compute(self, rule: Any) -> Iterator[ICUVariant]:
+ """ Generator for all ICUVariant tuples from a single variant rule.
+ """
+ parts = re.split(r'(\|)?([=-])>', rule)
+ if len(parts) != 4:
+ raise UsageError(f"Syntax error in variant rule: {rule}")
+
+ decompose = parts[1] is None
+ src_terms = [self._parse_variant_word(t) for t in parts[0].split(',')]
+ repl_terms = (self.norm.transliterate(t).strip() for t in parts[3].split(','))
+
+ # If the source should be kept, add a 1:1 replacement
+ if parts[2] == '-':
+ for src in src_terms:
+ if src:
+ for froms, tos in _create_variants(*src, src[0], decompose):
+ yield ICUVariant(froms, tos)
+
+ for src, repl in itertools.product(src_terms, repl_terms):
+ if src and repl:
+ for froms, tos in _create_variants(*src, repl, decompose):
+ yield ICUVariant(froms, tos)
+
+
+ def _parse_variant_word(self, name: str) -> Optional[Tuple[str, str, str]]:
+ name = name.strip()
+ match = re.fullmatch(r'([~^]?)([^~$^]*)([~$]?)', name)
+ if match is None or (match.group(1) == '~' and match.group(3) == '~'):
+ raise UsageError(f"Invalid variant word descriptor '{name}'")
+ norm_name = self.norm.transliterate(match.group(2)).strip()
+ if not norm_name:
+ return None
+
+ return norm_name, match.group(1), match.group(3)
+
+
+_FLAG_MATCH = {'^': '^ ',
+ '$': ' ^',
+ '': ' '}
+
+
+def _create_variants(src: str, preflag: str, postflag: str,
+ repl: str, decompose: bool) -> Iterator[Tuple[str, str]]:
+ if preflag == '~':
+ postfix = _FLAG_MATCH[postflag]
+ # suffix decomposition
+ src = src + postfix
+ repl = repl + postfix
+
+ yield src, repl
+ yield ' ' + src, ' ' + repl
+
+ if decompose:
+ yield src, ' ' + repl
+ yield ' ' + src, repl
+ elif postflag == '~':
+ # prefix decomposition
+ prefix = _FLAG_MATCH[preflag]
+ src = prefix + src
+ repl = prefix + repl
+
+ yield src, repl
+ yield src + ' ', repl + ' '
+
+ if decompose:
+ yield src, repl + ' '
+ yield src + ' ', repl
+ else:
+ prefix = _FLAG_MATCH[preflag]
+ postfix = _FLAG_MATCH[postflag]
+
+ yield prefix + src + postfix, prefix + repl + postfix
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Generic processor for names that creates abbreviation variants.
"""
-from collections import defaultdict, namedtuple
+from typing import Mapping, Dict, Any, Iterable, Iterator, Optional, List, cast
import itertools
-import re
-from icu import Transliterator
import datrie
-from nominatim.config import flatten_config_list
from nominatim.errors import UsageError
+from nominatim.data.place_name import PlaceName
+from nominatim.tokenizer.token_analysis.config_variants import get_variant_config
+from nominatim.tokenizer.token_analysis.generic_mutation import MutationVariantGenerator
### Configuration section
-ICUVariant = namedtuple('ICUVariant', ['source', 'replacement'])
-
-def configure(rules, normalization_rules):
+def configure(rules: Mapping[str, Any], normalizer: Any, _: Any) -> Dict[str, Any]:
""" Extract and preprocess the configuration for this module.
"""
- config = {}
+ config: Dict[str, Any] = {}
- config['replacements'], config['chars'] = _get_variant_config(rules.get('variants'),
- normalization_rules)
+ config['replacements'], config['chars'] = get_variant_config(rules.get('variants'),
+ normalizer)
config['variant_only'] = rules.get('mode', '') == 'variant-only'
- return config
-
-
-def _get_variant_config(rules, normalization_rules):
- """ Convert the variant definition from the configuration into
- replacement sets.
- """
- immediate = defaultdict(list)
- chars = set()
-
- if rules:
- vset = set()
- rules = flatten_config_list(rules, 'variants')
-
- vmaker = _VariantMaker(normalization_rules)
-
- for section in rules:
- for rule in (section.get('words') or []):
- vset.update(vmaker.compute(rule))
-
- # Intermediate reorder by source. Also compute required character set.
- for variant in vset:
- if variant.source[-1] == ' ' and variant.replacement[-1] == ' ':
- replstr = variant.replacement[:-1]
- else:
- replstr = variant.replacement
- immediate[variant.source].append(replstr)
- chars.update(variant.source)
-
- return list(immediate.items()), ''.join(chars)
-
-
-class _VariantMaker:
- """ Generater for all necessary ICUVariants from a single variant rule.
-
- All text in rules is normalized to make sure the variants match later.
- """
-
- def __init__(self, norm_rules):
- self.norm = Transliterator.createFromRules("rule_loader_normalization",
- norm_rules)
-
-
- def compute(self, rule):
- """ Generator for all ICUVariant tuples from a single variant rule.
- """
- parts = re.split(r'(\|)?([=-])>', rule)
- if len(parts) != 4:
- raise UsageError("Syntax error in variant rule: " + rule)
-
- decompose = parts[1] is None
- src_terms = [self._parse_variant_word(t) for t in parts[0].split(',')]
- repl_terms = (self.norm.transliterate(t).strip() for t in parts[3].split(','))
-
- # If the source should be kept, add a 1:1 replacement
- if parts[2] == '-':
- for src in src_terms:
- if src:
- for froms, tos in _create_variants(*src, src[0], decompose):
- yield ICUVariant(froms, tos)
-
- for src, repl in itertools.product(src_terms, repl_terms):
- if src and repl:
- for froms, tos in _create_variants(*src, repl, decompose):
- yield ICUVariant(froms, tos)
-
-
- def _parse_variant_word(self, name):
- name = name.strip()
- match = re.fullmatch(r'([~^]?)([^~$^]*)([~$]?)', name)
- if match is None or (match.group(1) == '~' and match.group(3) == '~'):
- raise UsageError("Invalid variant word descriptor '{}'".format(name))
- norm_name = self.norm.transliterate(match.group(2)).strip()
- if not norm_name:
- return None
-
- return norm_name, match.group(1), match.group(3)
+ # parse mutation rules
+ config['mutations'] = []
+ for rule in rules.get('mutations', []):
+ if 'pattern' not in rule:
+ raise UsageError("Missing field 'pattern' in mutation configuration.")
+ if not isinstance(rule['pattern'], str):
+ raise UsageError("Field 'pattern' in mutation configuration "
+ "must be a simple text field.")
+ if 'replacements' not in rule:
+ raise UsageError("Missing field 'replacements' in mutation configuration.")
+ if not isinstance(rule['replacements'], list):
+ raise UsageError("Field 'replacements' in mutation configuration "
+ "must be a list of texts.")
+
+ config['mutations'].append((rule['pattern'], rule['replacements']))
-
-_FLAG_MATCH = {'^': '^ ',
- '$': ' ^',
- '': ' '}
-
-
-def _create_variants(src, preflag, postflag, repl, decompose):
- if preflag == '~':
- postfix = _FLAG_MATCH[postflag]
- # suffix decomposition
- src = src + postfix
- repl = repl + postfix
-
- yield src, repl
- yield ' ' + src, ' ' + repl
-
- if decompose:
- yield src, ' ' + repl
- yield ' ' + src, repl
- elif postflag == '~':
- # prefix decomposition
- prefix = _FLAG_MATCH[preflag]
- src = prefix + src
- repl = prefix + repl
-
- yield src, repl
- yield src + ' ', repl + ' '
-
- if decompose:
- yield src, repl + ' '
- yield src + ' ', repl
- else:
- prefix = _FLAG_MATCH[preflag]
- postfix = _FLAG_MATCH[postflag]
-
- yield prefix + src + postfix, prefix + repl + postfix
+ return config
### Analysis section
-def create(transliterator, config):
+def create(normalizer: Any, transliterator: Any,
+ config: Mapping[str, Any]) -> 'GenericTokenAnalysis':
""" Create a new token analysis instance for this module.
"""
- return GenericTokenAnalysis(transliterator, config)
+ return GenericTokenAnalysis(normalizer, transliterator, config)
class GenericTokenAnalysis:
and provides the functions to apply the transformations.
"""
- def __init__(self, to_ascii, config):
+ def __init__(self, norm: Any, to_ascii: Any, config: Mapping[str, Any]) -> None:
+ self.norm = norm
self.to_ascii = to_ascii
self.variant_only = config['variant_only']
else:
self.replacements = None
+ # set up mutation rules
+ self.mutations = [MutationVariantGenerator(*cfg) for cfg in config['mutations']]
+
+
+ def get_canonical_id(self, name: PlaceName) -> str:
+ """ Return the normalized form of the name. This is the standard form
+ from which possible variants for the name can be derived.
+ """
+ return cast(str, self.norm.transliterate(name.name)).strip()
+
- def get_variants_ascii(self, norm_name):
+ def compute_variants(self, norm_name: str) -> List[str]:
""" Compute the spelling variants for the given normalized name
and transliterate the result.
"""
+ variants = self._generate_word_variants(norm_name)
+
+ for mutation in self.mutations:
+ variants = mutation.generate(variants)
+
+ return [name for name in self._transliterate_unique_list(norm_name, variants) if name]
+
+
+ def _transliterate_unique_list(self, norm_name: str,
+ iterable: Iterable[str]) -> Iterator[Optional[str]]:
+ seen = set()
+ if self.variant_only:
+ seen.add(norm_name)
+
+ for variant in map(str.strip, iterable):
+ if variant not in seen:
+ seen.add(variant)
+ yield self.to_ascii.transliterate(variant).strip()
+
+
+ def _generate_word_variants(self, norm_name: str) -> Iterable[str]:
baseform = '^ ' + norm_name + ' ^'
+ baselen = len(baseform)
partials = ['']
startpos = 0
if self.replacements is not None:
pos = 0
force_space = False
- while pos < len(baseform):
+ while pos < baselen:
full, repl = self.replacements.longest_prefix_item(baseform[pos:],
(None, None))
if full is not None:
# No variants detected? Fast return.
if startpos == 0:
- if self.variant_only:
- return []
-
- trans_name = self.to_ascii.transliterate(norm_name).strip()
- return [trans_name] if trans_name else []
-
- return self._compute_result_set(partials, baseform[startpos:],
- norm_name if self.variant_only else '')
-
-
- def _compute_result_set(self, partials, prefix, exclude):
- results = set()
+ return (norm_name, )
- for variant in partials:
- vname = (variant + prefix)[1:-1].strip()
- if vname != exclude:
- trans_name = self.to_ascii.transliterate(vname).strip()
- if trans_name:
- results.add(trans_name)
+ if startpos < baselen:
+ return (part[1:] + baseform[startpos:-1] for part in partials)
- return list(results)
+ return (part[1:-1] for part in partials)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Creator for mutation variants for the generic token analysis.
+"""
+from typing import Sequence, Iterable, Iterator, Tuple
+import itertools
+import logging
+import re
+
+from nominatim.errors import UsageError
+
+LOG = logging.getLogger()
+
+def _zigzag(outer: Iterable[str], inner: Iterable[str]) -> Iterator[str]:
+ return itertools.chain.from_iterable(itertools.zip_longest(outer, inner, fillvalue=''))
+
+
+class MutationVariantGenerator:
+ """ Generates name variants by applying a regular expression to the name
+ and replacing it with one or more variants. When the regular expression
+ matches more than once, each occurrence is replaced with all replacement
+ patterns.
+ """
+
+ def __init__(self, pattern: str, replacements: Sequence[str]):
+ self.pattern = re.compile(pattern)
+ self.replacements = replacements
+
+ if self.pattern.groups > 0:
+ LOG.fatal("The mutation pattern %s contains a capturing group. "
+ "This is not allowed.", pattern)
+ raise UsageError("Bad mutation pattern in configuration.")
+
+
+ def generate(self, names: Iterable[str]) -> Iterator[str]:
+ """ Generator function for the name variants. 'names' is an iterable
+ over a set of names for which the variants are to be generated.
+ """
+ for name in names:
+ parts = self.pattern.split(name)
+ if len(parts) == 1:
+ yield name
+ else:
+ for seps in self._fillers(len(parts)):
+ yield ''.join(_zigzag(parts, seps))
+
+
+ def _fillers(self, num_parts: int) -> Iterator[Tuple[str, ...]]:
+ """ Returns a generator for strings to join the given number of string
+ parts in all possible combinations.
+ """
+ return itertools.product(self.replacements, repeat=num_parts - 1)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Specialized processor for housenumbers. Analyses common housenumber patterns
+and creates variants for them.
+"""
+from typing import Any, List, cast
+import re
+
+from nominatim.data.place_name import PlaceName
+from nominatim.tokenizer.token_analysis.generic_mutation import MutationVariantGenerator
+
+RE_NON_DIGIT = re.compile('[^0-9]')
+RE_DIGIT_ALPHA = re.compile(r'(\d)\s*([^\d\s␣])')
+RE_ALPHA_DIGIT = re.compile(r'([^\s\d␣])\s*(\d)')
+RE_NAMED_PART = re.compile(r'[a-z]{4}')
+
+### Configuration section
+
+def configure(*_: Any) -> None:
+ """ All behaviour is currently hard-coded.
+ """
+ return None
+
+### Analysis section
+
+def create(normalizer: Any, transliterator: Any, config: None) -> 'HousenumberTokenAnalysis': # pylint: disable=W0613
+ """ Create a new token analysis instance for this module.
+ """
+ return HousenumberTokenAnalysis(normalizer, transliterator)
+
+
+class HousenumberTokenAnalysis:
+ """ Detects common housenumber patterns and normalizes them.
+ """
+ def __init__(self, norm: Any, trans: Any) -> None:
+ self.norm = norm
+ self.trans = trans
+
+ self.mutator = MutationVariantGenerator('␣', (' ', ''))
+
+ def get_canonical_id(self, name: PlaceName) -> str:
+ """ Return the normalized form of the housenumber.
+ """
+ # shortcut for number-only numbers, which make up 90% of the data.
+ if RE_NON_DIGIT.search(name.name) is None:
+ return name.name
+
+ norm = cast(str, self.trans.transliterate(self.norm.transliterate(name.name)))
+ # If there is a significant non-numeric part, use as is.
+ if RE_NAMED_PART.search(norm) is None:
+ # Otherwise add optional spaces between digits and letters.
+ (norm_opt, cnt1) = RE_DIGIT_ALPHA.subn(r'\1␣\2', norm)
+ (norm_opt, cnt2) = RE_ALPHA_DIGIT.subn(r'\1␣\2', norm_opt)
+ # Avoid creating too many variants per number.
+ if cnt1 + cnt2 <= 4:
+ return norm_opt
+
+ return norm
+
+ def compute_variants(self, norm_name: str) -> List[str]:
+ """ Compute the spelling variants for the given normalized housenumber.
+
+ Generates variants for optional spaces (marked with '␣').
+ """
+ return list(self.mutator.generate([norm_name]))
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Specialized processor for postcodes. Supports a 'lookup' variant of the
+token, which produces variants with optional spaces.
+"""
+from typing import Any, List
+
+from nominatim.tokenizer.token_analysis.generic_mutation import MutationVariantGenerator
+from nominatim.data.place_name import PlaceName
+
+### Configuration section
+
+def configure(*_: Any) -> None:
+ """ All behaviour is currently hard-coded.
+ """
+ return None
+
+### Analysis section
+
+def create(normalizer: Any, transliterator: Any, config: None) -> 'PostcodeTokenAnalysis': # pylint: disable=W0613
+ """ Create a new token analysis instance for this module.
+ """
+ return PostcodeTokenAnalysis(normalizer, transliterator)
+
+
+class PostcodeTokenAnalysis:
+ """ Special normalization and variant generation for postcodes.
+
+ This analyser must not be used with anything but postcodes as
+ it follows some special rules: the canonial ID is the form that
+ is used for the output. `compute_variants` then needs to ensure that
+ the generated variants once more follow the standard normalization
+ and transliteration, so that postcodes are correctly recognised by
+ the search algorithm.
+ """
+ def __init__(self, norm: Any, trans: Any) -> None:
+ self.norm = norm
+ self.trans = trans
+
+ self.mutator = MutationVariantGenerator(' ', (' ', ''))
+
+
+ def get_canonical_id(self, name: PlaceName) -> str:
+ """ Return the standard form of the postcode.
+ """
+ return name.name.strip().upper()
+
+
+ def compute_variants(self, norm_name: str) -> List[str]:
+ """ Compute the spelling variants for the given normalized postcode.
+
+ Takes the canonical form of the postcode, normalizes it using the
+ standard rules and then creates variants of the result where
+ all spaces are optional.
+ """
+ # Postcodes follow their own transliteration rules.
+ # Make sure at this point, that the terms are normalized in a way
+ # that they are searchable with the standard transliteration rules.
+ return [self.trans.transliterate(term) for term in
+ self.mutator.generate([self.norm.transliterate(norm_name)]) if term]
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Module with functions for importing, updating Nominatim databases
as well as general maintenance helpers.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Function to add additional OSM data from a file or the API into the database.
"""
+from typing import Any, MutableMapping
from pathlib import Path
import logging
import urllib
LOG = logging.getLogger()
-def add_data_from_file(fname, options):
+def add_data_from_file(fname: str, options: MutableMapping[str, Any]) -> int:
""" Adds data from a OSM file to the database. The file may be a normal
OSM file or a diff file in all formats supported by libosmium.
"""
return 0
-def add_osm_object(osm_type, osm_id, use_main_api, options):
+def add_osm_object(osm_type: str, osm_id: int, use_main_api: bool,
+ options: MutableMapping[str, Any]) -> int:
""" Add or update a single OSM object from the latest version of the
API.
"""
options['import_data'] = get_url(base_url).encode('utf-8')
run_osm2pgsql(options)
+
+ return 0
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for database analysis and maintenance.
"""
+from typing import Optional, Tuple, Any, cast
import logging
+from psycopg2.extras import Json, register_hstore
+
+from nominatim.config import Configuration
+from nominatim.db.connection import connect, Cursor
+from nominatim.tokenizer import factory as tokenizer_factory
from nominatim.errors import UsageError
+from nominatim.data.place_info import PlaceInfo
+from nominatim.typing import DictCursorResult
LOG = logging.getLogger()
-def analyse_indexing(conn, osm_id=None, place_id=None):
+def _get_place_info(cursor: Cursor, osm_id: Optional[str],
+ place_id: Optional[int]) -> DictCursorResult:
+ sql = """SELECT place_id, extra.*
+ FROM placex, LATERAL placex_indexing_prepare(placex) as extra
+ """
+
+ values: Tuple[Any, ...]
+ if osm_id:
+ osm_type = osm_id[0].upper()
+ if osm_type not in 'NWR' or not osm_id[1:].isdigit():
+ LOG.fatal('OSM ID must be of form <N|W|R><id>. Got: %s', osm_id)
+ raise UsageError("OSM ID parameter badly formatted")
+
+ sql += ' WHERE placex.osm_type = %s AND placex.osm_id = %s'
+ values = (osm_type, int(osm_id[1:]))
+ elif place_id is not None:
+ sql += ' WHERE placex.place_id = %s'
+ values = (place_id, )
+ else:
+ LOG.fatal("No OSM object given to index.")
+ raise UsageError("OSM object not found")
+
+ cursor.execute(sql + ' LIMIT 1', values)
+
+ if cursor.rowcount < 1:
+ LOG.fatal("OSM object %s not found in database.", osm_id)
+ raise UsageError("OSM object not found")
+
+ return cast(DictCursorResult, cursor.fetchone())
+
+
+def analyse_indexing(config: Configuration, osm_id: Optional[str] = None,
+ place_id: Optional[int] = None) -> None:
""" Analyse indexing of a single Nominatim object.
"""
- with conn.cursor() as cur:
- if osm_id:
- osm_type = osm_id[0].upper()
- if osm_type not in 'NWR' or not osm_id[1:].isdigit():
- LOG.fatal('OSM ID must be of form <N|W|R><id>. Got: %s', osm_id)
- raise UsageError("OSM ID parameter badly formatted")
- cur.execute('SELECT place_id FROM placex WHERE osm_type = %s AND osm_id = %s',
- (osm_type, osm_id[1:]))
-
- if cur.rowcount < 1:
- LOG.fatal("OSM object %s not found in database.", osm_id)
- raise UsageError("OSM object not found")
-
- place_id = cur.fetchone()[0]
-
- if place_id is None:
- LOG.fatal("No OSM object given to index.")
- raise UsageError("OSM object not found")
-
- cur.execute("update placex set indexed_status = 2 where place_id = %s",
- (place_id, ))
-
- cur.execute("""SET auto_explain.log_min_duration = '0';
- SET auto_explain.log_analyze = 'true';
- SET auto_explain.log_nested_statements = 'true';
- LOAD 'auto_explain';
- SET client_min_messages = LOG;
- SET log_min_messages = FATAL""")
-
- cur.execute("update placex set indexed_status = 0 where place_id = %s",
- (place_id, ))
-
- # we do not want to keep the results
- conn.rollback()
-
- for msg in conn.notices:
- print(msg)
+ with connect(config.get_libpq_dsn()) as conn:
+ register_hstore(conn)
+ with conn.cursor() as cur:
+ place = _get_place_info(cur, osm_id, place_id)
+
+ cur.execute("update placex set indexed_status = 2 where place_id = %s",
+ (place['place_id'], ))
+
+ cur.execute("""SET auto_explain.log_min_duration = '0';
+ SET auto_explain.log_analyze = 'true';
+ SET auto_explain.log_nested_statements = 'true';
+ LOAD 'auto_explain';
+ SET client_min_messages = LOG;
+ SET log_min_messages = FATAL""")
+
+ tokenizer = tokenizer_factory.get_tokenizer_for_db(config)
+
+ with tokenizer.name_analyzer() as analyzer:
+ cur.execute("""UPDATE placex
+ SET indexed_status = 0, address = %s, token_info = %s,
+ name = %s, linked_place_id = %s
+ WHERE place_id = %s""",
+ (place['address'],
+ Json(analyzer.process_place(PlaceInfo(place))),
+ place['name'], place['linked_place_id'], place['place_id']))
+
+ # we do not want to keep the results
+ conn.rollback()
+
+ for msg in conn.notices:
+ print(msg)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Collection of functions that check if the database is complete and functional.
"""
+from typing import Callable, Optional, Any, Union, Tuple, Mapping, List
from enum import Enum
from textwrap import dedent
-from nominatim.db.connection import connect
+from nominatim.config import Configuration
+from nominatim.db.connection import connect, Connection
from nominatim.errors import UsageError
from nominatim.tokenizer import factory as tokenizer_factory
FAIL = 1
FATAL = 2
NOT_APPLICABLE = 3
+ WARN = 4
-def _check(hint=None):
+CheckResult = Union[CheckState, Tuple[CheckState, Mapping[str, Any]]]
+CheckFunc = Callable[[Connection, Configuration], CheckResult]
+
+def _check(hint: Optional[str] = None) -> Callable[[CheckFunc], CheckFunc]:
""" Decorator for checks. It adds the function to the list of
checks to execute and adds the code for printing progress messages.
"""
- def decorator(func):
- title = func.__doc__.split('\n', 1)[0].strip()
+ def decorator(func: CheckFunc) -> CheckFunc:
+ title = (func.__doc__ or '').split('\n', 1)[0].strip()
- def run_check(conn, config):
+ def run_check(conn: Connection, config: Configuration) -> CheckState:
print(title, end=' ... ')
ret = func(conn, config)
if isinstance(ret, tuple):
params = {}
if ret == CheckState.OK:
print('\033[92mOK\033[0m')
+ elif ret == CheckState.WARN:
+ print('\033[93mWARNING\033[0m')
+ if hint:
+ print('')
+ print(dedent(hint.format(**params)))
elif ret == CheckState.NOT_APPLICABLE:
print('not applicable')
else:
class _BadConnection:
- def __init__(self, msg):
+ def __init__(self, msg: str) -> None:
self.msg = msg
- def close(self):
+ def close(self) -> None:
""" Dummy function to provide the implementation.
"""
-def check_database(config):
+def check_database(config: Configuration) -> int:
""" Run a number of checks on the database and return the status.
"""
try:
conn = connect(config.get_libpq_dsn()).connection
except UsageError as err:
- conn = _BadConnection(str(err))
+ conn = _BadConnection(str(err)) # type: ignore[assignment]
overall_result = 0
for check in CHECKLIST:
return overall_result
-def _get_indexes(conn):
+def _get_indexes(conn: Connection) -> List[str]:
indexes = ['idx_place_addressline_address_place_id',
'idx_placex_rank_search',
'idx_placex_rank_address',
Project directory: {config.project_dir}
Current setting of NOMINATIM_DATABASE_DSN: {config.DATABASE_DSN}
""")
-def check_connection(conn, config):
+def check_connection(conn: Any, config: Configuration) -> CheckResult:
""" Checking database connection
"""
if isinstance(conn, _BadConnection):
Project directory: {config.project_dir}
Current setting of NOMINATIM_DATABASE_DSN: {config.DATABASE_DSN}
""")
-def check_placex_table(conn, config):
+def check_placex_table(conn: Connection, config: Configuration) -> CheckResult:
""" Checking for placex table
"""
if conn.table_exists('placex'):
return CheckState.FATAL, dict(config=config)
-@_check(hint="""placex table has no data. Did the import finish sucessfully?""")
-def check_placex_size(conn, _):
+@_check(hint="""placex table has no data. Did the import finish successfully?""")
+def check_placex_size(conn: Connection, _: Configuration) -> CheckResult:
""" Checking for placex content
"""
with conn.cursor() as cur:
@_check(hint="""{msg}""")
-def check_tokenizer(_, config):
+def check_tokenizer(_: Connection, config: Configuration) -> CheckResult:
""" Checking that tokenizer works
"""
try:
tokenizer = tokenizer_factory.get_tokenizer_for_db(config)
except UsageError:
return CheckState.FAIL, dict(msg="""\
- Cannot load tokenizer. Did the import finish sucessfully?""")
+ Cannot load tokenizer. Did the import finish successfully?""")
result = tokenizer.check_database(config)
return CheckState.FAIL, dict(msg=result)
+@_check(hint="""\
+ Wikipedia/Wikidata importance tables missing.
+ Quality of search results may be degraded. Reverse geocoding is unaffected.
+ See https://nominatim.org/release-docs/latest/admin/Import/#wikipediawikidata-rankings
+ """)
+def check_existance_wikipedia(conn: Connection, _: Configuration) -> CheckResult:
+ """ Checking for wikipedia/wikidata data
+ """
+ if not conn.table_exists('search_name'):
+ return CheckState.NOT_APPLICABLE
+
+ with conn.cursor() as cur:
+ cnt = cur.scalar('SELECT count(*) FROM wikipedia_article')
+
+ return CheckState.WARN if cnt == 0 else CheckState.OK
+
+
@_check(hint="""\
The indexing didn't finish. {count} entries are not yet indexed.
To index the remaining entries, run: {index_cmd}
""")
-def check_indexing(conn, _):
+def check_indexing(conn: Connection, _: Configuration) -> CheckResult:
""" Checking indexing status
"""
with conn.cursor() as cur:
Rerun the index creation with: nominatim import --continue db-postprocess
""")
-def check_database_indexes(conn, _):
+def check_database_indexes(conn: Connection, _: Configuration) -> CheckResult:
""" Checking that database indexes are complete
"""
missing = []
Invalid indexes:
{indexes}
""")
-def check_database_index_valid(conn, _):
+def check_database_index_valid(conn: Connection, _: Configuration) -> CheckResult:
""" Checking that all database indexes are valid
"""
with conn.cursor() as cur:
{error}
Run TIGER import again: nominatim add-data --tiger-data <DIR>
""")
-def check_tiger_table(conn, config):
+def check_tiger_table(conn: Connection, config: Configuration) -> CheckResult:
""" Checking TIGER external data table.
"""
if not config.get_bool('USE_US_TIGER_DATA'):
+++ /dev/null
-"""
-Functions for importing and managing static country information.
-"""
-import psycopg2.extras
-
-from nominatim.db import utils as db_utils
-from nominatim.db.connection import connect
-
-class _CountryInfo:
- """ Caches country-specific properties from the configuration file.
- """
-
- def __init__(self):
- self._info = {}
-
-
- def load(self, config):
- """ Load the country properties from the configuration files,
- if they are not loaded yet.
- """
- if not self._info:
- self._info = config.load_sub_configuration('country_settings.yaml')
- # Convert languages into a list for simpler handling.
- for prop in self._info.values():
- if 'languages' not in prop:
- prop['languages'] = []
- elif not isinstance(prop['languages'], list):
- prop['languages'] = [x.strip()
- for x in prop['languages'].split(',')]
-
-
- def items(self):
- """ Return tuples of (country_code, property dict) as iterable.
- """
- return self._info.items()
-
-
-_COUNTRY_INFO = _CountryInfo()
-
-def setup_country_config(config):
- """ Load country properties from the configuration file.
- Needs to be called before using any other functions in this
- file.
- """
- _COUNTRY_INFO.load(config)
-
-
-def iterate():
- """ Iterate over country code and properties.
- """
- return _COUNTRY_INFO.items()
-
-
-def setup_country_tables(dsn, sql_dir, ignore_partitions=False):
- """ Create and populate the tables with basic static data that provides
- the background for geocoding. Data is assumed to not yet exist.
- """
- db_utils.execute_file(dsn, sql_dir / 'country_name.sql')
- db_utils.execute_file(dsn, sql_dir / 'country_osm_grid.sql.gz')
-
- params = []
- for ccode, props in _COUNTRY_INFO.items():
- if ccode is not None and props is not None:
- if ignore_partitions:
- partition = 0
- else:
- partition = props.get('partition')
- lang = props['languages'][0] if len(props['languages']) == 1 else None
- params.append((ccode, partition, lang))
-
- with connect(dsn) as conn:
- with conn.cursor() as cur:
- cur.execute_values(
- """ UPDATE country_name
- SET partition = part, country_default_language_code = lang
- FROM (VALUES %s) AS v (cc, part, lang)
- WHERE country_code = v.cc""", params)
- conn.commit()
-
-
-def create_country_names(conn, tokenizer, languages=None):
- """ Add default country names to search index. `languages` is a comma-
- separated list of language codes as used in OSM. If `languages` is not
- empty then only name translations for the given languages are added
- to the index.
- """
- if languages:
- languages = languages.split(',')
-
- def _include_key(key):
- return key == 'name' or \
- (key.startswith('name:') and (not languages or key[5:] in languages))
-
- with conn.cursor() as cur:
- psycopg2.extras.register_hstore(cur)
- cur.execute("""SELECT country_code, name FROM country_name
- WHERE country_code is not null""")
-
- with tokenizer.name_analyzer() as analyzer:
- for code, name in cur:
- names = {'countrycode': code}
- if code == 'gb':
- names['short_name'] = 'UK'
- if code == 'us':
- names['short_name'] = 'United States'
-
- # country names (only in languages as provided)
- if name:
- names.update(((k, v) for k, v in name.items() if _include_key(k)))
-
- analyzer.add_country_names(code, names)
-
- conn.commit()
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for setting up and importing a new Nominatim database.
"""
+from typing import Tuple, Optional, Union, Sequence, MutableMapping, Any
import logging
import os
import selectors
import psutil
from psycopg2 import sql as pysql
-from nominatim.db.connection import connect, get_pg_env
+from nominatim.config import Configuration
+from nominatim.db.connection import connect, get_pg_env, Connection
from nominatim.db.async_connection import DBConnection
from nominatim.db.sql_preprocessor import SQLPreprocessor
from nominatim.tools.exec_utils import run_osm2pgsql
LOG = logging.getLogger()
-def _require_version(module, actual, expected):
+def _require_version(module: str, actual: Tuple[int, int], expected: Tuple[int, int]) -> None:
""" Compares the version for the given module and raises an exception
if the actual version is too old.
"""
raise UsageError(f'{module} is too old.')
-def setup_database_skeleton(dsn, rouser=None):
+def setup_database_skeleton(dsn: str, rouser: Optional[str] = None) -> None:
""" Create a new database for Nominatim and populate it with the
essential extensions.
cnt = cur.scalar('SELECT count(*) FROM pg_user where usename = %s',
(rouser, ))
if cnt == 0:
- LOG.fatal("Web user '%s' does not exists. Create it with:\n"
+ LOG.fatal("Web user '%s' does not exist. Create it with:\n"
"\n createuser %s", rouser, rouser)
raise UsageError('Missing read-only user.')
POSTGIS_REQUIRED_VERSION)
-def import_osm_data(osm_files, options, drop=False, ignore_errors=False):
+def import_osm_data(osm_files: Union[Path, Sequence[Path]],
+ options: MutableMapping[str, Any],
+ drop: bool = False, ignore_errors: bool = False) -> None:
""" Import the given OSM files. 'options' contains the list of
default settings for osm2pgsql.
"""
Path(options['flatnode_file']).unlink()
-def create_tables(conn, config, reverse_only=False):
+def create_tables(conn: Connection, config: Configuration, reverse_only: bool = False) -> None:
""" Create the set of basic tables.
When `reverse_only` is True, then the main table for searching will
be skipped and only reverse search is possible.
sql.run_sql_file(conn, 'tables.sql')
-def create_table_triggers(conn, config):
+def create_table_triggers(conn: Connection, config: Configuration) -> None:
""" Create the triggers for the tables. The trigger functions must already
have been imported with refresh.create_functions().
"""
sql.run_sql_file(conn, 'table-triggers.sql')
-def create_partition_tables(conn, config):
+def create_partition_tables(conn: Connection, config: Configuration) -> None:
""" Create tables that have explicit partitioning.
"""
sql = SQLPreprocessor(conn, config)
sql.run_sql_file(conn, 'partition-tables.src.sql')
-def truncate_data_tables(conn):
+def truncate_data_tables(conn: Connection) -> None:
""" Truncate all data tables to prepare for a fresh load.
"""
with conn.cursor() as cur:
'extratags', 'geometry')))
-def load_data(dsn, threads):
+def load_data(dsn: str, threads: int) -> None:
""" Copy data into the word and placex table.
"""
sel = selectors.DefaultSelector()
print('.', end='', flush=True)
print('\n')
- with connect(dsn) as conn:
- with conn.cursor() as cur:
+ with connect(dsn) as syn_conn:
+ with syn_conn.cursor() as cur:
cur.execute('ANALYSE')
-def create_search_indices(conn, config, drop=False):
+def create_search_indices(conn: Connection, config: Configuration, drop: bool = False) -> None:
""" Create tables that have explicit partitioning.
"""
bad_indices = [row[0] for row in list(cur)]
for idx in bad_indices:
LOG.info("Drop invalid index %s.", idx)
- cur.execute('DROP INDEX "{}"'.format(idx))
+ cur.execute(pysql.SQL('DROP INDEX {}').format(pysql.Identifier(idx)))
conn.commit()
sql = SQLPreprocessor(conn, config)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Helper functions for executing external programs.
"""
+from typing import Any, Union, Optional, Mapping, IO
+from pathlib import Path
import logging
import subprocess
import urllib.request as urlrequest
from urllib.parse import urlencode
-from nominatim.version import NOMINATIM_VERSION
+from nominatim.typing import StrPath
+from nominatim.version import version_str
from nominatim.db.connection import get_pg_env
LOG = logging.getLogger()
-def run_legacy_script(script, *args, nominatim_env=None, throw_on_fail=False):
+def run_legacy_script(script: StrPath, *args: Union[int, str],
+ nominatim_env: Any,
+ throw_on_fail: bool = False) -> int:
""" Run a Nominatim PHP script with the given arguments.
Returns the exit code of the script. If `throw_on_fail` is True
return proc.returncode
-def run_api_script(endpoint, project_dir, extra_env=None, phpcgi_bin=None,
- params=None):
- """ Execute a Nominiatim API function.
+def run_api_script(endpoint: str, project_dir: Path,
+ extra_env: Optional[Mapping[str, str]] = None,
+ phpcgi_bin: Optional[Path] = None,
+ params: Optional[Mapping[str, Any]] = None) -> int:
+ """ Execute a Nominatim API function.
The function needs a project directory that contains the website
directory with the scripts to be executed. The scripts will be run
query_string = urlencode(params or {})
env = dict(QUERY_STRING=query_string,
- SCRIPT_NAME='/{}.php'.format(endpoint),
- REQUEST_URI='/{}.php?{}'.format(endpoint, query_string),
+ SCRIPT_NAME=f'/{endpoint}.php',
+ REQUEST_URI=f'/{endpoint}.php?{query_string}',
CONTEXT_DOCUMENT_ROOT=webdir,
- SCRIPT_FILENAME='{}/{}.php'.format(webdir, endpoint),
+ SCRIPT_FILENAME=f'{webdir}/{endpoint}.php',
HTTP_HOST='localhost',
HTTP_USER_AGENT='nominatim-tool',
REMOTE_ADDR='0.0.0.0',
return 0
-def run_php_server(server_address, base_dir):
+def run_php_server(server_address: str, base_dir: StrPath) -> None:
""" Run the built-in server from the given directory.
"""
subprocess.run(['/usr/bin/env', 'php', '-S', server_address],
cwd=str(base_dir), check=True)
-def run_osm2pgsql(options):
+def run_osm2pgsql(options: Mapping[str, Any]) -> None:
""" Run osm2pgsql with the given options.
"""
env = get_pg_env(options['dsn'])
env=env, check=True)
-def get_url(url):
+def get_url(url: str) -> str:
""" Get the contents from the given URL and return it as a UTF-8 string.
"""
- headers = {"User-Agent": "Nominatim/{0[0]}.{0[1]}.{0[2]}-{0[3]}".format(NOMINATIM_VERSION)}
+ headers = {"User-Agent": f"Nominatim/{version_str()}"}
try:
- with urlrequest.urlopen(urlrequest.Request(url, headers=headers)) as response:
+ request = urlrequest.Request(url, headers=headers)
+ with urlrequest.urlopen(request) as response: # type: IO[bytes]
return response.read().decode('utf-8')
except Exception:
LOG.fatal('Failed to load URL: %s', url)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for removing unnecessary data from the database.
"""
+from typing import Optional
from pathlib import Path
from psycopg2 import sql as pysql
+from nominatim.db.connection import Connection
+
UPDATE_TABLES = [
'address_levels',
'gb_postcode',
'wikipedia_%'
]
-def drop_update_tables(conn):
+def drop_update_tables(conn: Connection) -> None:
""" Drop all tables only necessary for updating the database from
OSM replication data.
"""
conn.commit()
-def drop_flatnode_file(fname):
+def drop_flatnode_file(fpath: Optional[Path]) -> None:
""" Remove the flatnode file if it exists.
"""
- if fname:
- fpath = Path(fname)
- if fpath.exists():
- fpath.unlink()
+ if fpath and fpath.exists():
+ fpath.unlink()
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for database migration to newer software versions.
"""
+from typing import List, Tuple, Callable, Any
import logging
+from psycopg2 import sql as pysql
+
+from nominatim.config import Configuration
from nominatim.db import properties
-from nominatim.db.connection import connect
-from nominatim.version import NOMINATIM_VERSION
+from nominatim.db.connection import connect, Connection
+from nominatim.version import NOMINATIM_VERSION, version_str
from nominatim.tools import refresh
from nominatim.tokenizer import factory as tokenizer_factory
from nominatim.errors import UsageError
LOG = logging.getLogger()
-_MIGRATION_FUNCTIONS = []
+VersionTuple = Tuple[int, int, int, int]
+
+_MIGRATION_FUNCTIONS : List[Tuple[VersionTuple, Callable[..., None]]] = []
-def migrate(config, paths):
+def migrate(config: Configuration, paths: Any) -> int:
""" Check for the current database version and execute migrations,
if necesssary.
"""
has_run_migration = False
for version, func in _MIGRATION_FUNCTIONS:
if db_version <= version:
- LOG.warning("Runnning: %s (%s)", func.__doc__.split('\n', 1)[0],
- '{0[0]}.{0[1]}.{0[2]}-{0[3]}'.format(version))
+ title = func.__doc__ or ''
+ LOG.warning("Running: %s (%s)", title.split('\n', 1)[0],
+ version_str(version))
kwargs = dict(conn=conn, config=config, paths=paths)
func(**kwargs)
conn.commit()
tokenizer = tokenizer_factory.get_tokenizer_for_db(config)
tokenizer.update_sql_functions(config)
- properties.set_property(conn, 'database_version',
- '{0[0]}.{0[1]}.{0[2]}-{0[3]}'.format(NOMINATIM_VERSION))
+ properties.set_property(conn, 'database_version', version_str())
conn.commit()
return 0
-def _guess_version(conn):
+def _guess_version(conn: Connection) -> VersionTuple:
""" Guess a database version when there is no property table yet.
Only migrations for 3.6 and later are supported, so bail out
when the version seems older.
-def _migration(major, minor, patch=0, dbpatch=0):
+def _migration(major: int, minor: int, patch: int = 0,
+ dbpatch: int = 0) -> Callable[[Callable[..., None]], Callable[..., None]]:
""" Decorator for a single migration step. The parameters describe the
version after which the migration is applicable, i.e before changing
from the given version to the next, the migration is required.
process, so the migration functions may leave a temporary state behind
there.
"""
- def decorator(func):
+ def decorator(func: Callable[..., None]) -> Callable[..., None]:
_MIGRATION_FUNCTIONS.append(((major, minor, patch, dbpatch), func))
return func
@_migration(3, 5, 0, 99)
-def import_status_timestamp_change(conn, **_):
+def import_status_timestamp_change(conn: Connection, **_: Any) -> None:
""" Add timezone to timestamp in status table.
The import_status table has been changed to include timezone information
@_migration(3, 5, 0, 99)
-def add_nominatim_property_table(conn, config, **_):
+def add_nominatim_property_table(conn: Connection, config: Configuration, **_: Any) -> None:
""" Add nominatim_property table.
"""
if not conn.table_exists('nominatim_properties'):
with conn.cursor() as cur:
- cur.execute("""CREATE TABLE nominatim_properties (
- property TEXT,
- value TEXT);
- GRANT SELECT ON TABLE nominatim_properties TO "{}";
- """.format(config.DATABASE_WEBUSER))
+ cur.execute(pysql.SQL("""CREATE TABLE nominatim_properties (
+ property TEXT,
+ value TEXT);
+ GRANT SELECT ON TABLE nominatim_properties TO {};
+ """).format(pysql.Identifier(config.DATABASE_WEBUSER)))
@_migration(3, 6, 0, 0)
-def change_housenumber_transliteration(conn, **_):
+def change_housenumber_transliteration(conn: Connection, **_: Any) -> None:
""" Transliterate housenumbers.
The database schema switched from saving raw housenumbers in
@_migration(3, 7, 0, 0)
-def switch_placenode_geometry_index(conn, **_):
+def switch_placenode_geometry_index(conn: Connection, **_: Any) -> None:
""" Replace idx_placex_geometry_reverse_placeNode index.
Make the index slightly more permissive, so that it can also be used
@_migration(3, 7, 0, 1)
-def install_legacy_tokenizer(conn, config, **_):
+def install_legacy_tokenizer(conn: Connection, config: Configuration, **_: Any) -> None:
""" Setup legacy tokenizer.
If no other tokenizer has been configured yet, then create the
and column_name = 'token_info'""",
(table, ))
if has_column == 0:
- cur.execute('ALTER TABLE {} ADD COLUMN token_info JSONB'.format(table))
+ cur.execute(pysql.SQL('ALTER TABLE {} ADD COLUMN token_info JSONB')
+ .format(pysql.Identifier(table)))
tokenizer = tokenizer_factory.create_tokenizer(config, init_db=False,
module_name='legacy')
- tokenizer.migrate_database(config)
+ tokenizer.migrate_database(config) # type: ignore[attr-defined]
@_migration(4, 0, 99, 0)
-def create_tiger_housenumber_index(conn, **_):
+def create_tiger_housenumber_index(conn: Connection, **_: Any) -> None:
""" Create idx_location_property_tiger_parent_place_id with included
house number.
ON location_property_tiger
USING btree(parent_place_id)
INCLUDE (startnumber, endnumber) """)
+
+
+@_migration(4, 0, 99, 1)
+def create_interpolation_index_on_place(conn: Connection, **_: Any) -> None:
+ """ Create idx_place_interpolations for lookup of interpolation lines
+ on updates.
+ """
+ with conn.cursor() as cur:
+ cur.execute("""CREATE INDEX IF NOT EXISTS idx_place_interpolations
+ ON place USING gist(geometry)
+ WHERE osm_type = 'W' and address ? 'interpolation'""")
+
+
+@_migration(4, 0, 99, 2)
+def add_step_column_for_interpolation(conn: Connection, **_: Any) -> None:
+ """ Add a new column 'step' to the interpolations table.
+
+ Also converts the data into the stricter format which requires that
+ startnumbers comply with the odd/even requirements.
+ """
+ if conn.table_has_column('location_property_osmline', 'step'):
+ return
+
+ with conn.cursor() as cur:
+ # Mark invalid all interpolations with no intermediate numbers.
+ cur.execute("""UPDATE location_property_osmline SET startnumber = null
+ WHERE endnumber - startnumber <= 1 """)
+ # Align the start numbers where odd/even does not match.
+ cur.execute("""UPDATE location_property_osmline
+ SET startnumber = startnumber + 1,
+ linegeo = ST_LineSubString(linegeo,
+ 1.0 / (endnumber - startnumber)::float,
+ 1)
+ WHERE (interpolationtype = 'odd' and startnumber % 2 = 0)
+ or (interpolationtype = 'even' and startnumber % 2 = 1)
+ """)
+ # Mark invalid odd/even interpolations with no intermediate numbers.
+ cur.execute("""UPDATE location_property_osmline SET startnumber = null
+ WHERE interpolationtype in ('odd', 'even')
+ and endnumber - startnumber = 2""")
+ # Finally add the new column and populate it.
+ cur.execute("ALTER TABLE location_property_osmline ADD COLUMN step SMALLINT")
+ cur.execute("""UPDATE location_property_osmline
+ SET step = CASE WHEN interpolationtype = 'all'
+ THEN 1 ELSE 2 END
+ """)
+
+
+@_migration(4, 0, 99, 3)
+def add_step_column_for_tiger(conn: Connection, **_: Any) -> None:
+ """ Add a new column 'step' to the tiger data table.
+ """
+ if conn.table_has_column('location_property_tiger', 'step'):
+ return
+
+ with conn.cursor() as cur:
+ cur.execute("ALTER TABLE location_property_tiger ADD COLUMN step SMALLINT")
+ cur.execute("""UPDATE location_property_tiger
+ SET step = CASE WHEN interpolationtype = 'all'
+ THEN 1 ELSE 2 END
+ """)
+
+
+@_migration(4, 0, 99, 4)
+def add_derived_name_column_for_country_names(conn: Connection, **_: Any) -> None:
+ """ Add a new column 'derived_name' which in the future takes the
+ country names as imported from OSM data.
+ """
+ if not conn.table_has_column('country_name', 'derived_name'):
+ with conn.cursor() as cur:
+ cur.execute("ALTER TABLE country_name ADD COLUMN derived_name public.HSTORE")
+
+
+@_migration(4, 0, 99, 5)
+def mark_internal_country_names(conn: Connection, config: Configuration, **_: Any) -> None:
+ """ Names from the country table should be marked as internal to prevent
+ them from being deleted. Only necessary for ICU tokenizer.
+ """
+ import psycopg2.extras # pylint: disable=import-outside-toplevel
+
+ tokenizer = tokenizer_factory.get_tokenizer_for_db(config)
+ with tokenizer.name_analyzer() as analyzer:
+ with conn.cursor() as cur:
+ psycopg2.extras.register_hstore(cur)
+ cur.execute("SELECT country_code, name FROM country_name")
+
+ for country_code, names in cur:
+ if not names:
+ names = {}
+ names['countrycode'] = country_code
+ analyzer.add_country_names(country_code, names)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for importing, updating and otherwise maintaining the table
of artificial postcode centroids.
"""
+from typing import Optional, Tuple, Dict, List, TextIO
+from collections import defaultdict
+from pathlib import Path
import csv
import gzip
import logging
from psycopg2 import sql as pysql
-from nominatim.db.connection import connect
+from nominatim.db.connection import connect, Connection
+from nominatim.utils.centroid import PointsCentroid
+from nominatim.data.postcode_format import PostcodeFormatter, CountryPostcodeMatcher
+from nominatim.tokenizer.base import AbstractAnalyzer, AbstractTokenizer
LOG = logging.getLogger()
-def _to_float(num, max_value):
+def _to_float(numstr: str, max_value: float) -> float:
""" Convert the number in string into a float. The number is expected
to be in the range of [-max_value, max_value]. Otherwise rises a
ValueError.
"""
- num = float(num)
+ num = float(numstr)
if not isfinite(num) or num <= -max_value or num >= max_value:
raise ValueError()
return num
-class _CountryPostcodesCollector:
+class _PostcodeCollector:
""" Collector for postcodes of a single country.
"""
- def __init__(self, country):
+ def __init__(self, country: str, matcher: Optional[CountryPostcodeMatcher]):
self.country = country
- self.collected = dict()
+ self.matcher = matcher
+ self.collected: Dict[str, PointsCentroid] = defaultdict(PointsCentroid)
+ self.normalization_cache: Optional[Tuple[str, Optional[str]]] = None
- def add(self, postcode, x, y):
+ def add(self, postcode: str, x: float, y: float) -> None:
""" Add the given postcode to the collection cache. If the postcode
already existed, it is overwritten with the new centroid.
"""
- self.collected[postcode] = (x, y)
+ if self.matcher is not None:
+ normalized: Optional[str]
+ if self.normalization_cache and self.normalization_cache[0] == postcode:
+ normalized = self.normalization_cache[1]
+ else:
+ match = self.matcher.match(postcode)
+ normalized = self.matcher.normalize(match) if match else None
+ self.normalization_cache = (postcode, normalized)
+ if normalized:
+ self.collected[normalized] += (x, y)
- def commit(self, conn, analyzer, project_dir):
+
+ def commit(self, conn: Connection, analyzer: AbstractAnalyzer, project_dir: Path) -> None:
""" Update postcodes for the country from the postcodes selected so far
as well as any externally supplied postcodes.
"""
""").format(pysql.Literal(self.country)), to_update)
- def _compute_changes(self, conn):
+ def _compute_changes(self, conn: Connection) \
+ -> Tuple[List[Tuple[str, float, float]], List[str], List[Tuple[str, float, float]]]:
""" Compute which postcodes from the collected postcodes have to be
added or modified and which from the location_postcode table
have to be deleted.
WHERE country_code = %s""",
(self.country, ))
for postcode, x, y in cur:
- newx, newy = self.collected.pop(postcode, (None, None))
- if newx is not None:
- dist = (x - newx)**2 + (y - newy)**2
- if dist > 0.0000001:
+ pcobj = self.collected.pop(postcode, None)
+ if pcobj:
+ newx, newy = pcobj.centroid()
+ if (x - newx) > 0.0000001 or (y - newy) > 0.0000001:
to_update.append((postcode, newx, newy))
else:
to_delete.append(postcode)
- to_add = [(k, v[0], v[1]) for k, v in self.collected.items()]
- self.collected = []
+ to_add = [(k, *v.centroid()) for k, v in self.collected.items()]
+ self.collected = defaultdict(PointsCentroid)
return to_add, to_delete, to_update
- def _update_from_external(self, analyzer, project_dir):
+ def _update_from_external(self, analyzer: AbstractAnalyzer, project_dir: Path) -> None:
""" Look for an external postcode file for the active country in
the project directory and add missing postcodes when found.
"""
postcode = analyzer.normalize_postcode(row['postcode'])
if postcode not in self.collected:
try:
- self.collected[postcode] = (_to_float(row['lon'], 180),
- _to_float(row['lat'], 90))
+ # Do float conversation separately, it might throw
+ centroid = (_to_float(row['lon'], 180),
+ _to_float(row['lat'], 90))
+ self.collected[postcode] += centroid
except ValueError:
LOG.warning("Bad coordinates %s, %s in %s country postcode file.",
row['lat'], row['lon'], self.country)
csvfile.close()
- def _open_external(self, project_dir):
- fname = project_dir / '{}_postcodes.csv'.format(self.country)
+ def _open_external(self, project_dir: Path) -> Optional[TextIO]:
+ fname = project_dir / f'{self.country}_postcodes.csv'
if fname.is_file():
LOG.info("Using external postcode file '%s'.", fname)
- return open(fname, 'r')
+ return open(fname, 'r', encoding='utf-8')
- fname = project_dir / '{}_postcodes.csv.gz'.format(self.country)
+ fname = project_dir / f'{self.country}_postcodes.csv.gz'
if fname.is_file():
LOG.info("Using external postcode file '%s'.", fname)
return None
-def update_postcodes(dsn, project_dir, tokenizer):
+def update_postcodes(dsn: str, project_dir: Path, tokenizer: AbstractTokenizer) -> None:
""" Update the table of artificial postcodes.
Computes artificial postcode centroids from the placex table,
potentially enhances it with external data and then updates the
postcodes in the table 'location_postcode'.
"""
+ matcher = PostcodeFormatter()
with tokenizer.name_analyzer() as analyzer:
with connect(dsn) as conn:
# First get the list of countries that currently have postcodes.
# Recompute the list of valid postcodes from placex.
with conn.cursor(name="placex_postcodes") as cur:
cur.execute("""
- SELECT cc as country_code, pc, ST_X(centroid), ST_Y(centroid)
+ SELECT cc, pc, ST_X(centroid), ST_Y(centroid)
FROM (SELECT
COALESCE(plx.country_code,
get_country_code(ST_Centroid(pl.geometry))) as cc,
- token_normalized_postcode(pl.address->'postcode') as pc,
- ST_Centroid(ST_Collect(COALESCE(plx.centroid,
- ST_Centroid(pl.geometry)))) as centroid
+ pl.address->'postcode' as pc,
+ COALESCE(plx.centroid, ST_Centroid(pl.geometry)) as centroid
FROM place AS pl LEFT OUTER JOIN placex AS plx
ON pl.osm_id = plx.osm_id AND pl.osm_type = plx.osm_type
- WHERE pl.address ? 'postcode' AND pl.geometry IS NOT null
- GROUP BY cc, pc) xx
+ WHERE pl.address ? 'postcode' AND pl.geometry IS NOT null) xx
WHERE pc IS NOT null AND cc IS NOT null
- ORDER BY country_code, pc""")
+ ORDER BY cc, pc""")
collector = None
if collector is None or country != collector.country:
if collector is not None:
collector.commit(conn, analyzer, project_dir)
- collector = _CountryPostcodesCollector(country)
+ collector = _PostcodeCollector(country, matcher.get_matcher(country))
todo_countries.discard(country)
collector.add(postcode, x, y)
# Now handle any countries that are only in the postcode table.
for country in todo_countries:
- _CountryPostcodesCollector(country).commit(conn, analyzer, project_dir)
+ fmt = matcher.get_matcher(country)
+ _PostcodeCollector(country, fmt).commit(conn, analyzer, project_dir)
conn.commit()
analyzer.update_postcodes_from_db()
-def can_compute(dsn):
+def can_compute(dsn: str) -> bool:
"""
Check that the place table exists so that
postcodes can be computed.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for bringing auxiliary data in the database up-to-date.
"""
+from typing import MutableSequence, Tuple, Any, Type, Mapping, Sequence, List, cast
import logging
from textwrap import dedent
from pathlib import Path
from psycopg2 import sql as pysql
+from nominatim.config import Configuration
+from nominatim.db.connection import Connection
from nominatim.db.utils import execute_file
from nominatim.db.sql_preprocessor import SQLPreprocessor
-from nominatim.version import NOMINATIM_VERSION
+from nominatim.version import version_str
LOG = logging.getLogger()
+OSM_TYPE = {'N': 'node', 'W': 'way', 'R': 'relation'}
-def _add_address_level_rows_from_entry(rows, entry):
+def _add_address_level_rows_from_entry(rows: MutableSequence[Tuple[Any, ...]],
+ entry: Mapping[str, Any]) -> None:
""" Converts a single entry from the JSON format for address rank
descriptions into a flat format suitable for inserting into a
PostgreSQL table and adds these lines to `rows`.
for country in countries:
rows.append((country, key, value, rank_search, rank_address))
-def load_address_levels(conn, table, levels):
+
+def load_address_levels(conn: Connection, table: str, levels: Sequence[Mapping[str, Any]]) -> None:
""" Replace the `address_levels` table with the contents of `levels'.
A new table is created any previously existing table is dropped.
The table has the following columns:
country, class, type, rank_search, rank_address
"""
- rows = []
+ rows: List[Tuple[Any, ...]] = []
for entry in levels:
_add_address_level_rows_from_entry(rows, entry)
with conn.cursor() as cur:
cur.drop_table(table)
- cur.execute("""CREATE TABLE {} (country_code varchar(2),
+ cur.execute(pysql.SQL("""CREATE TABLE {} (
+ country_code varchar(2),
class TEXT,
type TEXT,
rank_search SMALLINT,
- rank_address SMALLINT)""".format(table))
+ rank_address SMALLINT)
+ """).format(pysql.Identifier(table)))
cur.execute_values(pysql.SQL("INSERT INTO {} VALUES %s")
.format(pysql.Identifier(table)), rows)
- cur.execute('CREATE UNIQUE INDEX ON {} (country_code, class, type)'.format(table))
+ cur.execute(pysql.SQL('CREATE UNIQUE INDEX ON {} (country_code, class, type)')
+ .format(pysql.Identifier(table)))
conn.commit()
-def load_address_levels_from_config(conn, config):
+def load_address_levels_from_config(conn: Connection, config: Configuration) -> None:
""" Replace the `address_levels` table with the content as
defined in the given configuration. Uses the parameter
NOMINATIM_ADDRESS_LEVEL_CONFIG to determine the location of the
load_address_levels(conn, 'address_levels', cfg)
-def create_functions(conn, config, enable_diff_updates=True, enable_debug=False):
+def create_functions(conn: Connection, config: Configuration,
+ enable_diff_updates: bool = True,
+ enable_debug: bool = False) -> None:
""" (Re)create the PL/pgSQL functions.
"""
sql = SQLPreprocessor(conn, config)
)
-def import_wikipedia_articles(dsn, data_path, ignore_errors=False):
+def import_wikipedia_articles(dsn: str, data_path: Path, ignore_errors: bool = False) -> int:
""" Replaces the wikipedia importance tables with new data.
The import is run in a single transaction so that the new data
- is replace seemlessly.
+ is replace seamlessly.
Returns 0 if all was well and 1 if the importance file could not
be found. Throws an exception if there was an error reading the file.
return 0
-def recompute_importance(conn):
+def recompute_importance(conn: Connection) -> None:
""" Recompute wikipedia links and importance for all entries in placex.
This is a long-running operations that must not be executed in
parallel with updates.
conn.commit()
-def _quote_php_variable(var_type, config, conf_name):
+def _quote_php_variable(var_type: Type[Any], config: Configuration,
+ conf_name: str) -> str:
if var_type == bool:
return 'true' if config.get_bool(conf_name) else 'false'
if var_type == int:
- return getattr(config, conf_name)
+ return cast(str, getattr(config, conf_name))
if not getattr(config, conf_name):
return 'false'
if var_type == Path:
- value = str(config.get_path(conf_name))
+ value = str(config.get_path(conf_name) or '')
else:
value = getattr(config, conf_name)
return f"'{quoted}'"
-def setup_website(basedir, config, conn):
+def setup_website(basedir: Path, config: Configuration, conn: Connection) -> None:
""" Create the website script stubs.
"""
if not basedir.exists():
LOG.info('Creating website directory.')
basedir.mkdir()
- template = dedent("""\
+ template = dedent(f"""\
<?php
@define('CONST_Debug', $_GET['debug'] ?? false);
- @define('CONST_LibDir', '{0}');
- @define('CONST_TokenizerDir', '{2}');
- @define('CONST_NominatimVersion', '{1[0]}.{1[1]}.{1[2]}-{1[3]}');
+ @define('CONST_LibDir', '{config.lib_dir.php}');
+ @define('CONST_TokenizerDir', '{config.project_dir / 'tokenizer'}');
+ @define('CONST_NominatimVersion', '{version_str()}');
- """.format(config.lib_dir.php, NOMINATIM_VERSION,
- config.project_dir / 'tokenizer'))
+ """)
for php_name, conf_name, var_type in PHP_CONST_DEFS:
varout = _quote_php_variable(var_type, config, conf_name)
(basedir / script).write_text(template.format('reverse-only-search.php'), 'utf-8')
else:
(basedir / script).write_text(template.format(script), 'utf-8')
+
+
+def invalidate_osm_object(osm_type: str, osm_id: int, conn: Connection,
+ recursive: bool = True) -> None:
+ """ Mark the given OSM object for reindexing. When 'recursive' is set
+ to True (the default), then all dependent objects are marked for
+ reindexing as well.
+
+ 'osm_type' must be on of 'N' (node), 'W' (way) or 'R' (relation).
+ If the given object does not exist, then nothing happens.
+ """
+ assert osm_type in ('N', 'R', 'W')
+
+ LOG.warning("Invalidating OSM %s %s%s.",
+ OSM_TYPE[osm_type], osm_id,
+ ' and its dependent places' if recursive else '')
+
+ with conn.cursor() as cur:
+ if recursive:
+ sql = """SELECT place_force_update(place_id)
+ FROM placex WHERE osm_type = %s and osm_id = %s"""
+ else:
+ sql = """UPDATE placex SET indexed_status = 2
+ WHERE osm_type = %s and osm_id = %s"""
+
+ cur.execute(sql, (osm_type, osm_id))
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for updating a database from a replication source.
"""
+from typing import ContextManager, MutableMapping, Any, Generator, cast
+from contextlib import contextmanager
import datetime as dt
from enum import Enum
import logging
import time
from nominatim.db import status
+from nominatim.db.connection import Connection
from nominatim.tools.exec_utils import run_osm2pgsql
from nominatim.errors import UsageError
from osmium.replication.server import ReplicationServer
from osmium import WriteHandler
except ImportError as exc:
- logging.getLogger().fatal("pyosmium not installed. Replication functions not available.\n"
- "To install pyosmium via pip: pip3 install osmium")
+ logging.getLogger().critical("pyosmium not installed. Replication functions not available.\n"
+ "To install pyosmium via pip: pip3 install osmium")
raise UsageError("replication tools not available") from exc
LOG = logging.getLogger()
-def init_replication(conn, base_url):
+def init_replication(conn: Connection, base_url: str) -> None:
""" Set up replication for the server at the given base URL.
"""
LOG.info("Using replication source: %s", base_url)
status.set_status(conn, date=date, seq=seq)
- LOG.warning("Updates intialised at sequence %s (%s)", seq, date)
+ LOG.warning("Updates initialised at sequence %s (%s)", seq, date)
-def check_for_updates(conn, base_url):
+def check_for_updates(conn: Connection, base_url: str) -> int:
""" Check if new data is available from the replication service at the
given base URL.
"""
NO_CHANGES = 3
-def update(conn, options):
+def update(conn: Connection, options: MutableMapping[str, Any]) -> UpdateState:
""" Update database from the next batch of data. Returns the state of
updates according to `UpdateState`.
"""
"Please run 'nominatim replication --init' first.")
raise UsageError("Replication not set up.")
+ assert startdate is not None
+
if not indexed and options['indexed_only']:
LOG.info("Skipping update. There is data that needs indexing.")
return UpdateState.MORE_PENDING
options['import_file'].unlink()
# Read updates into file.
- repl = ReplicationServer(options['base_url'])
-
- outhandler = WriteHandler(str(options['import_file']))
- endseq = repl.apply_diffs(outhandler, startseq + 1,
- max_size=options['max_diff_size'] * 1024)
- outhandler.close()
+ with _make_replication_server(options['base_url']) as repl:
+ outhandler = WriteHandler(str(options['import_file']))
+ endseq = repl.apply_diffs(outhandler, startseq + 1,
+ max_size=options['max_diff_size'] * 1024)
+ outhandler.close()
- if endseq is None:
- return UpdateState.NO_CHANGES
+ if endseq is None:
+ return UpdateState.NO_CHANGES
- # Consume updates with osm2pgsql.
- options['append'] = True
- options['disable_jit'] = conn.server_version_tuple() >= (11, 0)
- run_osm2pgsql(options)
+ # Consume updates with osm2pgsql.
+ options['append'] = True
+ options['disable_jit'] = conn.server_version_tuple() >= (11, 0)
+ run_osm2pgsql(options)
- # Write the current status to the file
- endstate = repl.get_state_info(endseq)
- status.set_status(conn, endstate.timestamp if endstate else None,
- seq=endseq, indexed=False)
+ # Write the current status to the file
+ endstate = repl.get_state_info(endseq)
+ status.set_status(conn, endstate.timestamp if endstate else None,
+ seq=endseq, indexed=False)
return UpdateState.UP_TO_DATE
+
+
+def _make_replication_server(url: str) -> ContextManager[ReplicationServer]:
+ """ Returns a ReplicationServer in form of a context manager.
+
+ Creates a light wrapper around older versions of pyosmium that did
+ not support the context manager interface.
+ """
+ if hasattr(ReplicationServer, '__enter__'):
+ return cast(ContextManager[ReplicationServer], ReplicationServer(url))
+
+ @contextmanager
+ def get_cm() -> Generator[ReplicationServer, None, None]:
+ yield ReplicationServer(url)
+
+ return get_cm()
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Contains the class which handles statistics for the
import of special phrases.
LOG = logging.getLogger()
class SpecialPhrasesImporterStatistics():
- # pylint: disable-msg=too-many-instance-attributes
"""
Class handling statistics of the import
process of special phrases.
"""
- def __init__(self):
+ def __init__(self) -> None:
self._intialize_values()
- def _intialize_values(self):
+ def _intialize_values(self) -> None:
"""
Set all counts for the global
import to 0.
self.tables_ignored = 0
self.invalids = 0
- def notify_one_phrase_invalid(self):
+ def notify_one_phrase_invalid(self) -> None:
"""
Add +1 to the count of invalid entries
fetched from the wiki.
"""
self.invalids += 1
- def notify_one_table_created(self):
+ def notify_one_table_created(self) -> None:
"""
Add +1 to the count of created tables.
"""
self.tables_created += 1
- def notify_one_table_deleted(self):
+ def notify_one_table_deleted(self) -> None:
"""
Add +1 to the count of deleted tables.
"""
self.tables_deleted += 1
- def notify_one_table_ignored(self):
+ def notify_one_table_ignored(self) -> None:
"""
Add +1 to the count of ignored tables.
"""
self.tables_ignored += 1
- def notify_import_done(self):
+ def notify_import_done(self) -> None:
"""
Print stats for the whole import process
and reset all values.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Module containing the SPCsvLoader class.
The class allows to load phrases from a csv file.
"""
+from typing import Iterable
import csv
import os
-from collections.abc import Iterator
from nominatim.tools.special_phrases.special_phrase import SpecialPhrase
from nominatim.errors import UsageError
-class SPCsvLoader(Iterator):
+class SPCsvLoader:
"""
Handles loading of special phrases from external csv file.
"""
- def __init__(self, csv_path):
- super().__init__()
+ def __init__(self, csv_path: str) -> None:
self.csv_path = csv_path
- self.has_been_read = False
- def __next__(self):
- if self.has_been_read:
- raise StopIteration()
- self.has_been_read = True
- self.check_csv_validity()
- return self.parse_csv()
-
- def parse_csv(self):
- """
- Open and parse the given csv file.
+ def generate_phrases(self) -> Iterable[SpecialPhrase]:
+ """ Open and parse the given csv file.
Create the corresponding SpecialPhrases.
"""
- phrases = set()
+ self._check_csv_validity()
- with open(self.csv_path) as file:
- reader = csv.DictReader(file, delimiter=',')
+ with open(self.csv_path, encoding='utf-8') as fd:
+ reader = csv.DictReader(fd, delimiter=',')
for row in reader:
- phrases.add(
- SpecialPhrase(row['phrase'], row['class'], row['type'], row['operator'])
- )
- return phrases
+ yield SpecialPhrase(row['phrase'], row['class'], row['type'], row['operator'])
+
- def check_csv_validity(self):
+ def _check_csv_validity(self) -> None:
"""
Check that the csv file has the right extension.
"""
_, extension = os.path.splitext(self.csv_path)
if extension != '.csv':
- raise UsageError('The file {} is not a csv file.'.format(self.csv_path))
+ raise UsageError(f'The file {self.csv_path} is not a csv file.')
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Module containing the class handling the import
of the special phrases.
The phrases already present in the database which are not
valids anymore are removed.
"""
+from typing import Iterable, Tuple, Mapping, Sequence, Optional, Set
import logging
import re
-from psycopg2.sql import Identifier, Literal, SQL
+from psycopg2.sql import Identifier, SQL
+
+from nominatim.config import Configuration
+from nominatim.db.connection import Connection
from nominatim.tools.special_phrases.importer_statistics import SpecialPhrasesImporterStatistics
+from nominatim.tools.special_phrases.special_phrase import SpecialPhrase
+from nominatim.tokenizer.base import AbstractTokenizer
+from nominatim.typing import Protocol
LOG = logging.getLogger()
-def _classtype_table(phrase_class, phrase_type):
+def _classtype_table(phrase_class: str, phrase_type: str) -> str:
""" Return the name of the table for the given class and type.
"""
return f'place_classtype_{phrase_class}_{phrase_type}'
+
+class SpecialPhraseLoader(Protocol):
+ """ Protocol for classes implementing a loader for special phrases.
+ """
+
+ def generate_phrases(self) -> Iterable[SpecialPhrase]:
+ """ Generates all special phrase terms this loader can produce.
+ """
+
+
class SPImporter():
# pylint: disable-msg=too-many-instance-attributes
"""
Take a sp loader which load the phrases from an external source.
"""
- def __init__(self, config, db_connection, sp_loader) -> None:
+ def __init__(self, config: Configuration, conn: Connection,
+ sp_loader: SpecialPhraseLoader) -> None:
self.config = config
- self.db_connection = db_connection
+ self.db_connection = conn
self.sp_loader = sp_loader
self.statistics_handler = SpecialPhrasesImporterStatistics()
self.black_list, self.white_list = self._load_white_and_black_lists()
self.sanity_check_pattern = re.compile(r'^\w+$')
# This set will contain all existing phrases to be added.
- # It contains tuples with the following format: (lable, class, type, operator)
- self.word_phrases = set()
+ # It contains tuples with the following format: (label, class, type, operator)
+ self.word_phrases: Set[Tuple[str, str, str, str]] = set()
# This set will contain all existing place_classtype tables which doesn't match any
# special phrases class/type on the wiki.
- self.table_phrases_to_delete = set()
+ self.table_phrases_to_delete: Set[str] = set()
- def import_phrases(self, tokenizer, should_replace):
+ def import_phrases(self, tokenizer: AbstractTokenizer, should_replace: bool) -> None:
"""
Iterate through all SpecialPhrases extracted from the
loader and import them into the database.
# Store pairs of class/type for further processing
class_type_pairs = set()
- for loaded_phrases in self.sp_loader:
- for phrase in loaded_phrases:
- result = self._process_phrase(phrase)
- if result:
- class_type_pairs.add(result)
+ for phrase in self.sp_loader.generate_phrases():
+ result = self._process_phrase(phrase)
+ if result:
+ class_type_pairs.add(result)
- self._create_place_classtype_table_and_indexes(class_type_pairs)
+ self._create_classtype_table_and_indexes(class_type_pairs)
if should_replace:
self._remove_non_existent_tables_from_db()
self.db_connection.commit()
self.statistics_handler.notify_import_done()
- def _fetch_existing_place_classtype_tables(self):
+ def _fetch_existing_place_classtype_tables(self) -> None:
"""
Fetch existing place_classtype tables.
Fill the table_phrases_to_delete set of the class.
for row in db_cursor:
self.table_phrases_to_delete.add(row[0])
- def _load_white_and_black_lists(self):
+ def _load_white_and_black_lists(self) \
+ -> Tuple[Mapping[str, Sequence[str]], Mapping[str, Sequence[str]]]:
"""
Load white and black lists from phrases-settings.json.
"""
return settings['blackList'], settings['whiteList']
- def _check_sanity(self, phrase):
+ def _check_sanity(self, phrase: SpecialPhrase) -> bool:
"""
Check sanity of given inputs in case somebody added garbage in the wiki.
If a bad class/type is detected the system will exit with an error.
return False
return True
- def _process_phrase(self, phrase):
+ def _process_phrase(self, phrase: SpecialPhrase) -> Optional[Tuple[str, str]]:
"""
Processes the given phrase by checking black and white list
and sanity.
return (phrase.p_class, phrase.p_type)
- def _create_place_classtype_table_and_indexes(self, class_type_pairs):
+ def _create_classtype_table_and_indexes(self,
+ class_type_pairs: Iterable[Tuple[str, str]]) -> None:
"""
Create table place_classtype for each given pair.
Also create indexes on place_id and centroid.
db_cursor.execute("DROP INDEX idx_placex_classtype")
- def _create_place_classtype_table(self, sql_tablespace, phrase_class, phrase_type):
+ def _create_place_classtype_table(self, sql_tablespace: str,
+ phrase_class: str, phrase_type: str) -> None:
"""
- Create table place_classtype of the given phrase_class/phrase_type if doesn't exit.
+ Create table place_classtype of the given phrase_class/phrase_type
+ if doesn't exit.
"""
table_name = _classtype_table(phrase_class, phrase_type)
- with self.db_connection.cursor() as db_cursor:
- db_cursor.execute(SQL("""
- CREATE TABLE IF NOT EXISTS {{}} {}
- AS SELECT place_id AS place_id,st_centroid(geometry) AS centroid FROM placex
- WHERE class = {{}} AND type = {{}}""".format(sql_tablespace))
- .format(Identifier(table_name), Literal(phrase_class),
- Literal(phrase_type)))
-
-
- def _create_place_classtype_indexes(self, sql_tablespace, phrase_class, phrase_type):
+ with self.db_connection.cursor() as cur:
+ cur.execute(SQL("""CREATE TABLE IF NOT EXISTS {} {} AS
+ SELECT place_id AS place_id,
+ st_centroid(geometry) AS centroid
+ FROM placex
+ WHERE class = %s AND type = %s
+ """).format(Identifier(table_name), SQL(sql_tablespace)),
+ (phrase_class, phrase_type))
+
+
+ def _create_place_classtype_indexes(self, sql_tablespace: str,
+ phrase_class: str, phrase_type: str) -> None:
"""
Create indexes on centroid and place_id for the place_classtype table.
"""
- index_prefix = 'idx_place_classtype_{}_{}_'.format(phrase_class, phrase_type)
+ index_prefix = f'idx_place_classtype_{phrase_class}_{phrase_type}_'
base_table = _classtype_table(phrase_class, phrase_type)
# Index on centroid
if not self.db_connection.index_exists(index_prefix + 'centroid'):
with self.db_connection.cursor() as db_cursor:
- db_cursor.execute(SQL("""
- CREATE INDEX {{}} ON {{}} USING GIST (centroid) {}""".format(sql_tablespace))
+ db_cursor.execute(SQL("CREATE INDEX {} ON {} USING GIST (centroid) {}")
.format(Identifier(index_prefix + 'centroid'),
- Identifier(base_table)), sql_tablespace)
+ Identifier(base_table),
+ SQL(sql_tablespace)))
# Index on place_id
if not self.db_connection.index_exists(index_prefix + 'place_id'):
with self.db_connection.cursor() as db_cursor:
- db_cursor.execute(SQL(
- """CREATE INDEX {{}} ON {{}} USING btree(place_id) {}""".format(sql_tablespace))
+ db_cursor.execute(SQL("CREATE INDEX {} ON {} USING btree(place_id) {}")
.format(Identifier(index_prefix + 'place_id'),
- Identifier(base_table)))
+ Identifier(base_table),
+ SQL(sql_tablespace)))
- def _grant_access_to_webuser(self, phrase_class, phrase_type):
+ def _grant_access_to_webuser(self, phrase_class: str, phrase_type: str) -> None:
"""
Grant access on read to the table place_classtype for the webuser.
"""
.format(Identifier(table_name),
Identifier(self.config.DATABASE_WEBUSER)))
- def _remove_non_existent_tables_from_db(self):
+ def _remove_non_existent_tables_from_db(self) -> None:
"""
Remove special phrases which doesn't exist on the wiki anymore.
Delete the place_classtype tables.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Module containing the SPWikiLoader class.
"""
+from typing import Iterable
import re
import logging
-from collections.abc import Iterator
+
+from nominatim.config import Configuration
from nominatim.tools.special_phrases.special_phrase import SpecialPhrase
from nominatim.tools.exec_utils import get_url
LOG = logging.getLogger()
-class SPWikiLoader(Iterator):
+
+def _get_wiki_content(lang: str) -> str:
+ """
+ Request and return the wiki page's content
+ corresponding to special phrases for a given lang.
+ Requested URL Example :
+ https://wiki.openstreetmap.org/wiki/Special:Export/Nominatim/Special_Phrases/EN
+ """
+ url = 'https://wiki.openstreetmap.org/wiki/Special:Export/Nominatim/Special_Phrases/' \
+ + lang.upper()
+ return get_url(url)
+
+
+class SPWikiLoader:
"""
Handles loading of special phrases from the wiki.
"""
- def __init__(self, config, languages=None):
- super().__init__()
+ def __init__(self, config: Configuration) -> None:
self.config = config
# Compile the regex here to increase performances.
self.occurence_pattern = re.compile(
r'\| *([^\|]+) *\|\| *([^\|]+) *\|\| *([^\|]+) *\|\| *([^\|]+) *\|\| *([\-YN])'
)
- self.languages = self._load_languages() if not languages else list(languages)
+ # Hack around a bug where building=yes was imported with quotes into the wiki
+ self.type_fix_pattern = re.compile(r'\"|"')
- def __next__(self):
- if not self.languages:
- raise StopIteration
+ self.languages = self.config.get_str_list('LANGUAGES') or \
+ ['af', 'ar', 'br', 'ca', 'cs', 'de', 'en', 'es',
+ 'et', 'eu', 'fa', 'fi', 'fr', 'gl', 'hr', 'hu',
+ 'ia', 'is', 'it', 'ja', 'mk', 'nl', 'no', 'pl',
+ 'ps', 'pt', 'ru', 'sk', 'sl', 'sv', 'uk', 'vi']
- lang = self.languages.pop(0)
- loaded_xml = self._get_wiki_content(lang)
- LOG.warning('Importing phrases for lang: %s...', lang)
- return self.parse_xml(loaded_xml)
- def parse_xml(self, xml):
+ def generate_phrases(self) -> Iterable[SpecialPhrase]:
+ """ Download the wiki pages for the configured languages
+ and extract the phrases from the page.
"""
- Parses XML content and extracts special phrases from it.
- Return a list of SpecialPhrase.
- """
- # One match will be of format [label, class, type, operator, plural]
- matches = self.occurence_pattern.findall(xml)
- returned_phrases = set()
- for match in matches:
- returned_phrases.add(
- SpecialPhrase(match[0], match[1], match[2], match[3])
- )
- return returned_phrases
+ for lang in self.languages:
+ LOG.warning('Importing phrases for lang: %s...', lang)
+ loaded_xml = _get_wiki_content(lang)
- def _load_languages(self):
- """
- Get list of all languages from env config file
- or default if there is no languages configured.
- The system will extract special phrases only from all specified languages.
- """
- default_languages = [
- 'af', 'ar', 'br', 'ca', 'cs', 'de', 'en', 'es',
- 'et', 'eu', 'fa', 'fi', 'fr', 'gl', 'hr', 'hu',
- 'ia', 'is', 'it', 'ja', 'mk', 'nl', 'no', 'pl',
- 'ps', 'pt', 'ru', 'sk', 'sl', 'sv', 'uk', 'vi']
- return self.config.LANGUAGES.split(',') if self.config.LANGUAGES else default_languages
+ # One match will be of format [label, class, type, operator, plural]
+ matches = self.occurence_pattern.findall(loaded_xml)
- @staticmethod
- def _get_wiki_content(lang):
- """
- Request and return the wiki page's content
- corresponding to special phrases for a given lang.
- Requested URL Example :
- https://wiki.openstreetmap.org/wiki/Special:Export/Nominatim/Special_Phrases/EN
- """
- url = 'https://wiki.openstreetmap.org/wiki/Special:Export/Nominatim/Special_Phrases/' \
- + lang.upper()
- return get_url(url)
+ for match in matches:
+ yield SpecialPhrase(match[0],
+ match[1],
+ self.type_fix_pattern.sub('', match[2]),
+ match[3])
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Module containing the class SpecialPhrase.
This class is a model used to transfer a special phrase through
the process of load and importation.
"""
-import re
+from typing import Any
-class SpecialPhrase():
+class SpecialPhrase:
"""
Model representing a special phrase.
"""
- def __init__(self, p_label, p_class, p_type, p_operator):
+ def __init__(self, p_label: str, p_class: str, p_type: str, p_operator: str) -> None:
self.p_label = p_label.strip()
self.p_class = p_class.strip()
- # Hack around a bug where building=yes was imported with quotes into the wiki
- self.p_type = re.sub(r'\"|"', '', p_type.strip())
+ self.p_type = p_type.strip()
# Needed if some operator in the wiki are not written in english
p_operator = p_operator.strip().lower()
self.p_operator = '-' if p_operator not in ('near', 'in') else p_operator
+
+ def __eq__(self, other: Any) -> bool:
+ if not isinstance(other, SpecialPhrase):
+ return False
+
+ return self.p_label == other.p_label \
+ and self.p_class == other.p_class \
+ and self.p_type == other.p_type \
+ and self.p_operator == other.p_operator
+
+ def __hash__(self) -> int:
+ return hash((self.p_label, self.p_class, self.p_type, self.p_operator))
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions for importing tiger data and handling tarbar and directory files
"""
+from typing import Any, TextIO, List, Union, cast
import csv
import io
import logging
import os
import tarfile
+from psycopg2.extras import Json
+
+from nominatim.config import Configuration
from nominatim.db.connection import connect
from nominatim.db.async_connection import WorkerPool
from nominatim.db.sql_preprocessor import SQLPreprocessor
from nominatim.errors import UsageError
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
+from nominatim.tokenizer.base import AbstractAnalyzer, AbstractTokenizer
LOG = logging.getLogger()
-
-def handle_tarfile_or_directory(data_dir):
- """ Handles tarfile or directory for importing tiger data
+class TigerInput:
+ """ Context manager that goes through Tiger input files which may
+ either be in a directory or gzipped together in a tar file.
"""
- tar = None
- if data_dir.endswith('.tar.gz'):
- try:
- tar = tarfile.open(data_dir)
- except tarfile.ReadError as err:
- LOG.fatal("Cannot open '%s'. Is this a tar file?", data_dir)
- raise UsageError("Cannot open Tiger data file.") from err
-
- csv_files = [i for i in tar.getmembers() if i.name.endswith('.csv')]
- LOG.warning("Found %d CSV files in tarfile with path %s", len(csv_files), data_dir)
- if not csv_files:
- LOG.warning("Tiger data import selected but no files in tarfile's path %s", data_dir)
- return None, None
- else:
- files = os.listdir(data_dir)
- csv_files = [os.path.join(data_dir, i) for i in files if i.endswith('.csv')]
- LOG.warning("Found %d CSV files in path %s", len(csv_files), data_dir)
- if not csv_files:
- LOG.warning("Tiger data import selected but no files found in path %s", data_dir)
- return None, None
-
- return csv_files, tar
-
-
-def handle_threaded_sql_statements(pool, fd, analyzer):
+ def __init__(self, data_dir: str) -> None:
+ self.tar_handle = None
+ self.files: List[Union[str, tarfile.TarInfo]] = []
+
+ if data_dir.endswith('.tar.gz'):
+ try:
+ self.tar_handle = tarfile.open(data_dir) # pylint: disable=consider-using-with
+ except tarfile.ReadError as err:
+ LOG.fatal("Cannot open '%s'. Is this a tar file?", data_dir)
+ raise UsageError("Cannot open Tiger data file.") from err
+
+ self.files = [i for i in self.tar_handle.getmembers() if i.name.endswith('.csv')]
+ LOG.warning("Found %d CSV files in tarfile with path %s", len(self.files), data_dir)
+ else:
+ files = os.listdir(data_dir)
+ self.files = [os.path.join(data_dir, i) for i in files if i.endswith('.csv')]
+ LOG.warning("Found %d CSV files in path %s", len(self.files), data_dir)
+
+ if not self.files:
+ LOG.warning("Tiger data import selected but no files found at %s", data_dir)
+
+
+ def __enter__(self) -> 'TigerInput':
+ return self
+
+
+ def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
+ if self.tar_handle:
+ self.tar_handle.close()
+ self.tar_handle = None
+
+
+ def next_file(self) -> TextIO:
+ """ Return a file handle to the next file to be processed.
+ Raises an IndexError if there is no file left.
+ """
+ fname = self.files.pop(0)
+
+ if self.tar_handle is not None:
+ extracted = self.tar_handle.extractfile(fname)
+ assert extracted is not None
+ return io.TextIOWrapper(extracted)
+
+ return open(cast(str, fname), encoding='utf-8')
+
+
+ def __len__(self) -> int:
+ return len(self.files)
+
+
+def handle_threaded_sql_statements(pool: WorkerPool, fd: TextIO,
+ analyzer: AbstractAnalyzer) -> None:
""" Handles sql statement with multiplexing
"""
lines = 0
address = dict(street=row['street'], postcode=row['postcode'])
args = ('SRID=4326;' + row['geometry'],
int(row['from']), int(row['to']), row['interpolation'],
- PlaceInfo({'address': address}).analyze(analyzer),
+ Json(analyzer.process_place(PlaceInfo({'address': address}))),
analyzer.normalize_postcode(row['postcode']))
except ValueError:
continue
lines = 0
-def add_tiger_data(data_dir, config, threads, tokenizer):
+def add_tiger_data(data_dir: str, config: Configuration, threads: int,
+ tokenizer: AbstractTokenizer) -> int:
""" Import tiger data from directory or tar file `data dir`.
"""
dsn = config.get_libpq_dsn()
- files, tar = handle_tarfile_or_directory(data_dir)
- if not files:
- return
+ with TigerInput(data_dir) as tar:
+ if not tar:
+ return 1
- with connect(dsn) as conn:
- sql = SQLPreprocessor(conn, config)
- sql.run_sql_file(conn, 'tiger_import_start.sql')
+ with connect(dsn) as conn:
+ sql = SQLPreprocessor(conn, config)
+ sql.run_sql_file(conn, 'tiger_import_start.sql')
- # Reading files and then for each file line handling
- # sql_query in <threads - 1> chunks.
- place_threads = max(1, threads - 1)
+ # Reading files and then for each file line handling
+ # sql_query in <threads - 1> chunks.
+ place_threads = max(1, threads - 1)
- with WorkerPool(dsn, place_threads, ignore_sql_errors=True) as pool:
- with tokenizer.name_analyzer() as analyzer:
- for fname in files:
- if not tar:
- fd = open(fname)
- else:
- fd = io.TextIOWrapper(tar.extractfile(fname))
+ with WorkerPool(dsn, place_threads, ignore_sql_errors=True) as pool:
+ with tokenizer.name_analyzer() as analyzer:
+ while tar:
+ with tar.next_file() as fd:
+ handle_threaded_sql_statements(pool, fd, analyzer)
- handle_threaded_sql_statements(pool, fd, analyzer)
+ print('\n')
- fd.close()
-
- if tar:
- tar.close()
- print('\n')
LOG.warning("Creating indexes on Tiger data")
with connect(dsn) as conn:
sql = SQLPreprocessor(conn, config)
sql.run_sql_file(conn, 'tiger_import_finish.sql')
+
+ return 0
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Type definitions for typing annotations.
+
+Complex type definitions are moved here, to keep the source files readable.
+"""
+from typing import Any, Union, Mapping, TypeVar, Sequence, TYPE_CHECKING
+
+# Generics variable names do not confirm to naming styles, ignore globally here.
+# pylint: disable=invalid-name,abstract-method,multiple-statements
+# pylint: disable=missing-class-docstring,useless-import-alias
+
+if TYPE_CHECKING:
+ import psycopg2.sql
+ import psycopg2.extensions
+ import psycopg2.extras
+ import os
+
+StrPath = Union[str, 'os.PathLike[str]']
+
+SysEnv = Mapping[str, str]
+
+# psycopg2-related types
+
+Query = Union[str, bytes, 'psycopg2.sql.Composable']
+
+T_ResultKey = TypeVar('T_ResultKey', int, str)
+
+class DictCursorResult(Mapping[str, Any]):
+ def __getitem__(self, x: Union[int, str]) -> Any: ...
+
+DictCursorResults = Sequence[DictCursorResult]
+
+T_cursor = TypeVar('T_cursor', bound='psycopg2.extensions.cursor')
+
+# The following typing features require typing_extensions to work
+# on all supported Python versions.
+# Only require this for type checking but not for normal operations.
+
+if TYPE_CHECKING:
+ from typing_extensions import (Protocol as Protocol,
+ Final as Final,
+ TypedDict as TypedDict)
+else:
+ Protocol = object
+ Final = 'Final'
+ TypedDict = dict
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Functions for computation of centroids.
+"""
+from typing import Tuple, Any
+from collections.abc import Collection
+
+class PointsCentroid:
+ """ Centroid computation from single points using an online algorithm.
+ More points may be added at any time.
+
+ Coordinates are internally treated as a 7-digit fixed-point float
+ (i.e. in OSM style).
+ """
+
+ def __init__(self) -> None:
+ self.sum_x = 0
+ self.sum_y = 0
+ self.count = 0
+
+ def centroid(self) -> Tuple[float, float]:
+ """ Return the centroid of all points collected so far.
+ """
+ if self.count == 0:
+ raise ValueError("No points available for centroid.")
+
+ return (float(self.sum_x/self.count)/10000000,
+ float(self.sum_y/self.count)/10000000)
+
+
+ def __len__(self) -> int:
+ return self.count
+
+
+ def __iadd__(self, other: Any) -> 'PointsCentroid':
+ if isinstance(other, Collection) and len(other) == 2:
+ if all(isinstance(p, (float, int)) for p in other):
+ x, y = other
+ self.sum_x += int(x * 10000000)
+ self.sum_y += int(y * 10000000)
+ self.count += 1
+ return self
+
+ raise ValueError("Can only add 2-element tuples to centroid.")
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Version information for Nominatim.
"""
+from typing import Optional, Tuple
# Version information: major, minor, patch level, database patch level
#
# to 99 to make sure that the migration is applied when updating from a
# patch release to the next minor version. Patch releases usually shouldn't
# have migrations in them. When they are needed, then make sure that the
-# migration can reapplied and set the migration version to the appropriate
+# migration can be reapplied and set the migration version to the appropriate
# patch level when cherry-picking the commit with the migration.
#
# Released versions always have a database patch level of 0.
-NOMINATIM_VERSION = (4, 0, 99, 1)
+NOMINATIM_VERSION = (4, 1, 0, 0)
-POSTGRESQL_REQUIRED_VERSION = (9, 5)
+POSTGRESQL_REQUIRED_VERSION = (9, 6)
POSTGIS_REQUIRED_VERSION = (2, 2)
+
+# Cmake sets a variable @GIT_HASH@ by executing 'git --log'. It is not run
+# on every execution of 'make'.
+# cmake/tool-installed.tmpl is used to build the binary 'nominatim'. Inside
+# there is a call to set the variable value below.
+GIT_COMMIT_HASH : Optional[str] = None
+
+
+# pylint: disable=consider-using-f-string
+def version_str(version:Tuple[int, int, int, int] = NOMINATIM_VERSION) -> str:
+ """
+ Return a human-readable string of the version.
+ """
+ return '{}.{}.{}-{}'.format(*version)
-Subproject commit bd7b4440000a9c1df639c5fac020bc00bd590368
+Subproject commit b0352aa8f15e2739ba36d72561854a2738123770
}
}
},
+{ "countries" : [ "ca" ],
+ "tags" : {
+ "place" : {
+ "county" : [12, 0]
+ }
+ }
+},
{ "countries" : [ "de" ],
"tags" : {
"place" : {
--- /dev/null
+name:
+ default: Andorra
+ ab: Андора
+ af: Andorra
+ ak: Andora
+ am: አንዶራ
+ an: Andorra
+ ar: أندورا
+ av: Андо́рра
+ az: Andorra
+ ba: Андо́рра
+ be: Андо́ра
+ bg: Андора
+ bh: अंडोरा
+ bi: Andorra
+ bm: Andɔr
+ bn: অ্যান্ডোরা
+ bo: ཨན་ཌོར་ར།
+ br: Andorra
+ bs: Andora
+ ca: Andorra
+ ce: Андо́рра
+ co: Andorra
+ cs: Andorra
+ cu: Андо́ра
+ cv: Андорра
+ cy: Andorra
+ da: Andorra
+ de: Andorra
+ dv: އެންޑޯރާ
+ dz: ཨཱན་དོ་ར
+ ee: Andorra
+ el: Ανδόρρα
+ en: Andorra
+ eo: Andoro
+ es: Andorra
+ et: Andorra
+ eu: Andorra
+ fa: آندورا
+ ff: Anndoora
+ fi: Andorra
+ fo: Andorra
+ fr: Andorre
+ fy: Andorra
+ ga: Andóra
+ gd: Andorra
+ gl: Andorra
+ gn: Andorra
+ gu: એન્ડોરા
+ gv: Andorra
+ ha: Andorra
+ he: אַנְדּוֹרָה
+ hi: अण्डोरा
+ hr: Andora
+ ht: Andora
+ hu: Andorra
+ hy: Անդորրա
+ ia: Andorra
+ id: Andorra
+ ie: Andorra
+ ig: Andorra
+ io: Andora
+ is: Andorra
+ it: Andorra
+ ja: アンドラ
+ jv: Andorra
+ ka: ანდორა
+ kg: Andora
+ ki: Andora
+ kk: Андорра
+ kl: Andorra
+ km: អង់ដូរ៉ា
+ kn: ಅಂಡೋರ
+ ko: 안도라
+ ks: اٮ۪نڑورا
+ ku: Andorra
+ kv: Андорра
+ kw: Andorra
+ ky: Андорра
+ la: Andorra
+ lb: Andorra
+ lg: Andora
+ li: Andorra
+ ln: Andora
+ lo: ອັງດອກ
+ lt: Andora
+ lv: Andora
+ mg: Andora
+ mi: Andorra
+ mk: Андора
+ ml: അൻഡോറ
+ mn: Андорра
+ mr: आंदोरा
+ ms: Andorra
+ mt: Andorra
+ my: အင်ဒိုရာနိုင်ငံ
+ na: Andorra
+ ne: एण्डोरा
+ nl: Andorra
+ nn: Andorra
+ "no": Andorra
+ nv: Andówa
+ oc: Andòrra
+ om: Andooraa
+ or: ଆଣ୍ଡୋରା
+ os: Андоррæ
+ pa: ਅੰਡੋਰਾ
+ pi: अंडोरा
+ pl: Andora
+ ps: اندورا
+ pt: Andorra
+ qu: Andurra
+ rm: Andorra
+ rn: Andora
+ ro: Andorra
+ ru: Андорра
+ rw: Andora
+ sa: अण्डोरा
+ sc: Andorra
+ sd: انڊورا
+ se: Andorra
+ sg: Andôro
+ sh: Andora
+ si: ඇන්ඩෝරා
+ sk: Andorra
+ sl: Andora
+ sm: Andora
+ sn: Andorra
+ so: Andorra
+ sq: Andorra
+ sr: Андора
+ ss: iYandola
+ su: Andorra
+ sv: Andorra
+ sw: Andorra
+ ta: அண்டோரா
+ te: అండొర్రా
+ tg: Андорра
+ th: อันดอร์รา
+ ti: አንዶራ
+ tk: Andorra
+ tl: Andorra
+ to: ʻEnitola
+ tr: Andorra
+ ts: Andorra
+ tt: Андорра
+ tw: Andorra
+ ug: ئاندوررا
+ uk: Андо́рра
+ ur: انڈورا
+ uz: Andorra
+ vi: Andorra
+ vo: Landorän
+ wo: Andoor
+ yi: אַנדאָרע
+ yo: Àndórà
+ zh: 安道爾
+ zu: I-Andora
--- /dev/null
+name:
+ default: الإمارات العربية المتحدة
+ af: Verenigde Arabiese Emirate
+ am: የተባበሩት የዓረብ ግዛቶች
+ an: Emiratos Arabes Unitos
+ ar: الإمارات العربية المتحدة
+ av: ГIарабазул Цолъарал Имаратал
+ az: Birləşmiş Ərəb Əmirlikləri
+ be: Аб'яднаныя Арабскія Эміраты
+ bg: Обединени арабски емирства
+ bn: সংযুক্ত আরব আমিরাত
+ bo: ཡི་ནེ་ཁྲེ་ཀྲི་ཨ་རབ་ཨེ་མེ་རེ་ཁྲི།
+ br: Emirelezhioù Arab Unanet
+ bs: Ujedinjeni Arapski Emirati
+ ca: Emirats Àrabs Units
+ ce: Ӏарбийн Цхьаьнакхетта Эмираташ
+ cs: Spojené arabské emiráty
+ cy: Yr Emiradau Arabaidd Unedig
+ da: Forenede Arabiske Emirater
+ de: Vereinigte Arabische Emirate
+ dv: އެކުވެރި ޢަރަބި އިމާރާތު
+ dz: ཡུ་ནའི་ཊེཊ་ཨ་རབ་ཨེ་མི་རེཊསི་
+ el: Ηνωμένα Αραβικά Εμιράτα
+ en: United Arab Emirates
+ eo: Unuiĝintaj Arabaj Emirlandoj
+ es: Emiratos Árabes Unidos
+ et: Araabia Ühendemiraadid
+ eu: Arabiar Emirerri Batuak
+ fa: امارات متحده عربی
+ fi: Yhdistyneet arabiemiirikunnat
+ fo: Sameindu Emirríkini
+ fr: Émirats arabes unis
+ fy: Feriene Arabyske Emiraten
+ ga: Aontas na nÉimíríochtaí Arabacha
+ gd: Na h-Iomaratan Arabach Aonaichte
+ gl: Emiratos Árabes Unidos
+ gn: Aravia Emiryvy Joaju
+ gv: Ny h-Emmiraidyn Arabagh Unnaneysit
+ he: איחוד האמירויות הערביות
+ hi: संयुक्त अरब अमीरात
+ hr: Ujedinjeni Arapski Emirati
+ ht: Emira Arab Ini
+ hu: Egyesült Arab Emírségek
+ hy: Արաբական Միացյալ Էմիրություններ
+ ia: Emiratos Arabe Unite
+ id: Uni Emirat Arab
+ ie: Unit Arabic Emiratus
+ io: Unionita Araba Emirati
+ is: Sameinuðu arabísku furstadæmin
+ it: Emirati Arabi Uniti
+ ja: アラブ首長国連邦
+ jv: Uni Emirat Arab
+ ka: არაბთა გაერთიანებული საამიროები
+ ki: United Arab Emirates
+ kk: Біріккен Араб Әмірліктері
+ kl: United Arab Emirates
+ kn: ಸಂಯುಕ್ತ ಅರಬ ಅಮೀರಾತ
+ ko: 아랍에미리트
+ ku: Mîrnişînên Erebî yên Yekbûyî
+ kv: Ӧтувтчӧм Араб Эмиратъяс
+ kw: Pennternasedh Unys Arabek
+ ky: Бириккен Араб Эмирликтери
+ la: Phylarchiarum Arabicarum Confoederatio
+ lb: Vereenegt Arabesch Emiraten
+ li: Vereinegde Arabische Emiraote
+ lt: Jungtiniai Arabų Emyratai
+ lv: Apvienotie Arābu Emirāti
+ mi: Te Kotahitanga o ngā Whenua Ārapi
+ mk: Обединети Арапски Емирати
+ ml: ഐക്യ അറബ് എമിറേറ്റുകൾ
+ mn: Арабын Нэгдсэн Эмирт Улс
+ mr: संयुक्त अरब अमिराती
+ ms: Emiriah Arab Bersatu
+ mt: Emirati Għarab Magħquda
+ my: အာရပ်စော်ဘွားများပြည်ထောင်စုနိုင်ငံ
+ na: Emireitit Arabiya
+ ne: संयुक्त अरब इमिरेट्स
+ nl: Verenigde Arabische Emiraten
+ nn: Dei sameinte arabiske emirata
+ "no": De forente arabiske emirater
+ nv: Ásáí Bikéyah Yázhí Ałhidadiidzooígíí
+ oc: Emirats Arabis Units
+ or: ୟୁନାଇଟେଡ଼ ଆରବ ଏମିରଟ
+ os: Араббы Иугонд Эмираттæ
+ pa: ਸੰਯੁਕਤ ਅਰਬ ਇਮਰਾਤ
+ pl: Emiraty Arabskie
+ ps: عربي متحده امارات
+ pt: Emirados Árabes Unidos
+ qu: Hukllachasqa Arab Imiratukuna
+ ro: Emiratele Arabe Unite
+ ru: Объединённые Арабские Эмираты
+ rw: Nyarabu Zunze Ubumwe
+ sd: گڏيل عرب امارات
+ se: Ovttastuvvan arábaemiráhtat
+ sh: Ujedinjeni Arapski Emirati
+ sk: Spojené arabské emiráty
+ sl: Združeni arabski emirati
+ so: Imaaraatka Carabta
+ sq: Emiratet e Bashkuara Arabe
+ sr: Уједињени Арапски Емирати
+ ss: Bunye bema-Arabhu
+ su: Uni Émirat Arab
+ sv: Förenade Arabemiraten
+ sw: Falme za Kiarabu
+ ta: ஐக்கிய அரபு அமீரகம்
+ te: యునైటెడ్ అరబ్ ఎమిరేట్స్
+ tg: Аморати Муттаҳидаи Араб
+ th: สหรัฐอาหรับเอมิเรตส์
+ tk: Birleşen Arap Emirlikleri
+ tl: United Arab Emirates
+ tr: Birleşik Arap Emirlikleri
+ tt: Берләшкән Гарәп Әмирлекләре
+ ug: ئەرەب بىرلەشمە خەلىپىلىكى
+ uk: Об'єднані Арабські Емірати
+ ur: متحدہ عرب امارات
+ uz: Birlashgan Arab Amirliklari
+ vi: Các Tiểu vương quốc Ả Rập Thống nhất
+ vo: Lemiräns Larabik Pebalöl
+ wo: Imaaraat yu Araab yu Bennoo yi
+ yi: פאראייניגטע אראבישע עמיראטן
+ yo: Àwọn Ẹ́mírétì Árábù Aṣọ̀kan
+ zh: 阿拉伯联合酋长国
--- /dev/null
+name:
+ default: افغانستان
+ af: Afghanistan
+ ak: Afganistan
+ am: አፍጋኒስታን
+ an: Afganistán
+ ar: أفغانستان
+ as: আফগানিস্তান
+ az: Əfqanıstan
+ ba: Афғанстан
+ be: Афганістан
+ bg: Афганистан
+ bh: अफ़ग़ानिस्तान
+ bm: Afiganistaŋ
+ bn: আফগানিস্তান
+ bo: ཨ་ཧྥུའུ་རྒན་སི་ཐན།
+ br: Afghanistan
+ bs: Afganistan
+ ca: Afganistan
+ ce: АфгIанистан
+ ch: Afghanistan
+ co: Afghanistan
+ cs: Afghánistán
+ cv: Афганистан
+ cy: Affganistan
+ da: Afghanistan
+ de: Afghanistan
+ dv: އަފްޣާނިސްތާން
+ dz: ཨཕ་ག་ནིསི་ཏཱན་
+ ee: Afghanistan nutome
+ el: Αφγανιστάν
+ en: Afghanistan
+ eo: Afganio
+ es: Afganistán
+ et: Afganistan
+ eu: Afganistan
+ fa: افغانستان
+ ff: Afganistaan
+ fi: Afganistan
+ fo: Afghanistan
+ fr: Afghanistan
+ fy: Afganistan
+ ga: An Afganastáin
+ gd: Afganastan
+ gl: Afganistán - افغانستان
+ gn: Ahyganitã
+ gu: અફઘાનિસ્તાન
+ gv: Yn Afghanistaan
+ ha: Afghanistan
+ he: אפגניסטן
+ hi: अफ़्गानिस्तान
+ hr: Afganistan
+ ht: Afganistan
+ hu: Afganisztán
+ hy: Աֆղանստան
+ ia: Afghanistan
+ id: Afganistan
+ ie: Afghanistan
+ io: Afganistan
+ is: Afganistan
+ it: Afghanistan
+ iu: ᐊᑉᒐᓂᔅᑕᓐ
+ ja: アフガニスタン
+ jv: Afganistan
+ ka: ავღანეთი
+ kg: Afghanistan
+ ki: Afghanistan
+ kk: Ауғанстан
+ kl: Afghanistan
+ km: សាធារណរដ្ឋឥស្លាមអាហ្វហ្កានីស្ថាន
+ kn: ಅಫ್ಘಾನಿಸ್ತಾನ
+ ko: 아프가니스탄
+ ks: اَفغانَستان
+ ku: Afxanistan
+ kv: Афганистан
+ kw: Afghanistan
+ ky: Ооганстан
+ la: Afgania
+ lb: Afghanistan
+ lg: Afaganisitani
+ li: Afghanistan
+ ln: Afganistáni
+ lo: ອັບການິສະຖານ
+ lt: Afganistanas
+ lv: Afganistāna
+ mg: Afganistana
+ mi: Āwhekenetāna
+ mk: Авганистан
+ ml: അഫ്ഗാനിസ്താൻ
+ mn: Афганистан
+ mo: Афганистан
+ mr: अफगाणिस्तान
+ ms: Afghanistan
+ mt: Afganistan
+ my: အာဖဂန်နစ္စတန်နိုင်ငံ
+ na: Apeganitan
+ ne: अफगानिस्तान
+ nl: Afghanistan
+ nn: Afghanistan
+ "no": Afghanistan
+ oc: Afganistan
+ om: Afgaanistaan
+ or: ଆଫଗାନିସ୍ତାନ
+ os: Афгъанистан
+ pa: ਅਫ਼ਗ਼ਾਨਿਸਤਾਨ
+ pi: अफगानस्थान
+ pl: Afganistan
+ ps: افغانستان
+ pt: Afeganistão
+ qu: Afgansuyu
+ rm: Afganistan
+ rn: Afuganisitani
+ ro: Afganistan
+ ru: Афганистан
+ rw: Afuganisitani
+ sa: अफगानस्थान
+ sc: Afganistàn
+ sd: افغانستان
+ se: Afganistána
+ sg: Faganïta, Afganïstäan
+ sh: Afganistan
+ si: ඇෆ්ගනිස්ථානය
+ sk: Afganistan
+ sl: Afganistan
+ sm: Afakanisitana
+ sn: Afghanistan
+ so: Afgaanistan
+ sq: Afganistani
+ sr: Авганистан
+ ss: I-Afugani
+ su: Apganistan
+ sv: Afghanistan
+ sw: Afghanistan
+ ta: ஆப்கானித்தான்
+ te: ఆఫ్ఘనిస్తాన్
+ tg: Афғонистон
+ th: ประเทศอัฟกานิสถาน
+ ti: አፍጋኒስታን
+ tk: Owganystan
+ tl: Apganistan
+ to: ʻAfukanisitani
+ tr: Afganistan
+ tt: Әфганстан
+ ug: ئافغانىستان
+ uk: Афганістан
+ ur: افغانستان
+ uz: Afgʻoniston
+ vi: Afghanistan
+ vo: Lafganistän
+ wo: Afganistaan
+ yi: אפגאניסטאן
+ yo: Afghanístàn
+ za: Afghanistan
+ zh: 阿富汗
+ zu: I-Afganistani
--- /dev/null
+name:
+ default: Antigua and Barbuda
+ af: Antigua en Barbuda
+ ak: Antigua ne Baabuda
+ am: አንቲጋ እና ባርቡዳ
+ an: Antigua y Barbuda
+ ar: أنتيغوا وباربودا
+ as: এণ্টিগুৱা আৰু বাৰ্বুডা
+ ay: Antiwa wan Barbuda
+ az: Antiqua və Barbuda
+ ba: Антигуа һәм Барбуда
+ be: Антыгуа́ і Барбу́да
+ bg: Антигуа и Барбуда
+ bm: Antiga-ni-Barbuda
+ bn: অ্যান্টিগুয়া ও বার্বুডা
+ bo: ཨེན་ཊི་གུའ་དང་བར་བུ་ཌ།
+ br: Antigua ha Barbuda
+ bs: Antigva i Barbuda
+ ca: Antigua i Barbuda
+ ce: Анти́гуа а Барбу́да
+ cs: Antigua a Barbuda
+ cy: Antigwa a Barbiwda
+ da: Antigua og Barbuda
+ de: Antigua und Barbuda
+ dv: އެންޓިގުއާ އަދި ބާބިއުޑާ
+ dz: ཨན་ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌ
+ ee: Antigua and Barbuda
+ el: Αντίγκουα και Μπαρμπούντα
+ en: Antigua and Barbuda
+ eo: Antigvo-Barbudo
+ es: Antigua y Barbuda
+ et: Antigua ja Barbuda
+ eu: Antigua eta Barbuda
+ fa: آنتیگوا و باربودا
+ ff: Antiguwaa e Barbudaa
+ fi: Antigua ja Barbuda
+ fo: Antigua og Barbuda
+ fr: Antigua-et-Barbuda
+ fy: Antigûa en Barbûda
+ ga: Antigua agus Barbúda
+ gd: Antigua agus Barbuda
+ gl: Antiga e Barbuda
+ gn: Antigua ha Barbuda
+ gu: એન્ટીગુઆ અને બરબુડા
+ gv: Antigua as Barbuda
+ ha: Antigwa da Barbuba
+ he: אנטיגואה וברבודה
+ hi: अण्टीगुआ और बारबूडा
+ hr: Antigva i Barbuda
+ ht: Antigwa ak Babouda
+ hu: Antigua és Barbuda
+ hy: Անտիգուա և Բարբուդա
+ ia: Antigua e Barbuda
+ id: Antigua dan Barbuda
+ ie: Antigua e Barbuda
+ io: Antigua e Barbuda
+ is: Antígva og Barbúda
+ it: Antigua e Barbuda
+ ja: アンティグア・バーブーダ
+ jv: Antigua lan Barbuda
+ ka: ანტიგუა და ბარბუდა
+ ki: Antigua na Barbuda
+ kk: Антигуа және Барбуда
+ kl: Antigua aamma Barbuda
+ km: អង់ទីគ័រ និងបាបុយដា
+ kn: ಆಂಟಿಗುವ ಮತ್ತು ಬಾರ್ಬುಡ
+ ko: 앤티가 바부다
+ ks: اٮ۪نٹِگُوا تہٕ باربوڑا
+ ku: Antîgua û Berbûda
+ kw: Antiga ha Barbuda
+ ky: Антигуа жана Барбуда
+ la: Antiqua et Barbuda
+ lb: Antigua a Barbuda
+ lg: Antigwa ne Barabuda
+ li: Antigua en Barbuda
+ ln: Antigua mpé Barbuda
+ lo: ແອນຕີກາວ ແລະ ບາບູດາ
+ lt: Antigva ir Barbuda
+ lv: Antigva un Barbuda
+ mg: Antigua sy Barbuda
+ mk: Антигва и Барбуда
+ ml: ആന്റിഗ്വയ ആന്റ് ബാർബൂഡ
+ mn: Антигуа ба Барбуда
+ mr: अँटिगा आणि बार्बुडा
+ ms: Antigua dan Barbuda
+ mt: Antigwa u Barbuda
+ my: အင်တီဂွါနှင့် ဘာဘူဒါ
+ na: Antigua me Barbuda
+ nb: Antigua og Barbuda
+ ne: एन्टिगुआ र बर्बुडा
+ nl: Antigua en Barbuda
+ nn: Antigua og Barbuda
+ "no": Antigua og Barbuda
+ nv: Antíígwa dóó Hashkʼaan Bikéyah Yázhí
+ oc: Antigua e Barbuda
+ om: Antiiguwaa fi Baarbuudaa
+ or: ଆଣ୍ଟିଗୁଆ ଓ ବରବୁଡା
+ os: Антигуæ æмæ Барбудæ
+ pa: ਐਂਟੀਗੁਆ ਅਤੇ ਬਰਬੂਡਾ
+ pl: Antigua i Barbuda
+ pt: Antígua e Barbuda
+ qu: Antiwa Barbudawan
+ rm: Antigua e Barbuda
+ ro: Antigua și Barbuda
+ ru: Антигуа и Барбуда
+ rw: Antigwa na Baribuda
+ sa: अण्टीग्वा
+ sc: Antigua e Barbuda
+ se: Antigua ja Barbuda
+ sh: Antigva i Barbuda
+ si: ඇන්ටිගුවා සහ බාබියුඩා
+ sk: Antigua a Barbuda
+ sl: Antigva in Barbuda
+ sn: Antigua and Barbuda
+ so: Antigua iyo Barbuda
+ sq: Antigua dhe Barbuda
+ sr: Антигва и Барбуда
+ ss: iBhabudi ne Anithikhu
+ su: Antigua jeung Barbuda
+ sv: Antigua och Barbuda
+ sw: Antigua na Barbuda
+ ta: அன்டிகுவா பர்புடா
+ te: ఆంటిగ్వా మరియు బార్బుడా
+ tg: Антигуаю Барбуда
+ th: แอนติกาและบาร์บูดา
+ ti: አንቲጓ እና ባሩዳ
+ tl: Antigua at Barbuda
+ to: Anitikua mo Palaputa
+ tr: Antigua ve Barbuda
+ tt: Анти́гуа һәм Барбу́да
+ ug: ئانتىگۇئا ۋە باربۇدا
+ uk: Анти́гуа і Барбу́да
+ ur: اینٹیگوا و باربوڈا
+ uz: Antigua va Barbuda
+ vi: Antigua và Barbuda
+ vo: Lantigeän e Barbudeän
+ wo: Antigua ak Barbuda
+ yo: Ántígúà àti Bàrbúdà
+ za: Antigua caeuq Barbuda
+ zh: 安提瓜和巴布达
+ zu: i-Antigua and Barbuda
--- /dev/null
+name:
+ default: Anguilla
+ af: Anguilla
+ an: Anguila
+ ar: أنجويلا
+ az: Angilya
+ ba: Ангилья
+ be: Ангілья
+ bg: Ангуила
+ br: Anguilla
+ bs: Angvila
+ ca: Anguilla
+ cs: Anguilla
+ cy: Anguilla
+ da: Anguilla
+ de: Anguilla
+ dv: އަންގީލާ
+ el: Ανγκουίλα
+ en: Anguilla
+ eo: Angvilo
+ es: Anguila
+ et: Anguilla
+ eu: Aingira
+ fa: آنگویلا
+ fi: Anguilla
+ fr: Anguilla
+ ga: Angaíle
+ gl: Anguila
+ he: אנגווילה
+ hi: अंगुइला
+ hr: Angvila
+ hu: Anguilla
+ hy: Անգիլիա
+ id: Anguilla
+ io: Anguila
+ is: Angvilla
+ it: Anguilla
+ ja: アンギラ
+ jv: Anguilla
+ ka: ანგილია
+ ko: 앵귈라
+ kw: Angwilla
+ lb: Anguilla
+ li: Anguilla
+ lt: Angilija
+ lv: Angilja
+ mk: Ангвила
+ mn: Ангилья
+ mr: अँग्विला
+ ms: Anguilla
+ ne: एन्गुला
+ nl: Anguilla
+ nn: Anguilla
+ "no": Anguilla
+ oc: Anguilla
+ pa: ਐਂਗੁਈਲਾ
+ pl: Anguilla
+ pt: Anguilla
+ ro: Anguilla
+ ru: Ангилья
+ rw: Angwiya
+ sh: Angvila
+ sk: Anguilla
+ sl: Angvila
+ sq: Anguilla
+ sr: Ангвила
+ su: Anguilla
+ sv: Anguilla
+ sw: Anguilla
+ ta: அங்கியுலா
+ th: แองกวิลลา
+ tl: Anggilya
+ tr: Anguilla
+ ug: ئانگۋىللا
+ uk: Ангілья
+ ur: اینگویلا
+ uz: Angilya
+ vi: Anguilla
+ wo: Angila
+ yo: Àngúíllà
+ zh: 安圭拉
--- /dev/null
+name:
+ default: Shqipëria
+ ab: Арнауыҭтәыла
+ af: Albanië
+ ak: Albania
+ am: አልባኒያ
+ an: Albania
+ ar: ألبانيا
+ as: আলবেনিয়া
+ av: Алба́ния
+ ay: Alwaña
+ az: Albaniya
+ ba: Алба́ния
+ be: Алба́нія
+ bg: Албания
+ bh: अल्बानिया
+ bi: Albania
+ bm: Alibani
+ bn: আলবেনিয়া
+ bo: ཨལ་པ་ཉི་ཡ།
+ br: Albania
+ bs: Albanija
+ ca: Albània
+ ce: Алба́ни
+ ch: Albania
+ co: Albania
+ cs: Albánie
+ cu: Алванїꙗ
+ cv: Албани
+ cy: Albania
+ da: Albanien
+ de: Albanien
+ dv: އަލްބޭނިއާ
+ dz: ཨཱལ་བེ་ནི་ཡ
+ ee: Albania
+ el: Αλβανία
+ en: Albania
+ eo: Albanio
+ es: Albania
+ et: Albaania
+ eu: Albania
+ fa: آلبانی
+ ff: Albaniya
+ fi: Albania
+ fo: Albania
+ fr: Albanie
+ fy: Albaanje
+ ga: An Albáin
+ gd: Albàinia
+ gl: Albania
+ gn: Avaña
+ gu: આલ્બેનિયા
+ gv: Yn Albaan
+ ha: Albaniya
+ he: אַלְבַּנְיָה
+ hi: अल्बानिया
+ hr: Albanija
+ ht: Albani
+ hu: Albánia
+ hy: Ալբանիա
+ ia: Albania
+ id: Albania
+ ie: Albania
+ ig: Albania
+ io: Albania
+ is: Albanía
+ it: Albania
+ iu: ᐊᓪᐹᓂᐊ
+ ja: アルバニア
+ jv: Albania
+ ka: ალბანეთი
+ kg: Albania
+ ki: Arũmbĩnia
+ kk: Албания
+ kl: Albania
+ km: អាល់បានី
+ kn: ಅಲ್ಬೇನಿಯ
+ ko: 알바니아
+ ks: اٮ۪لبانِیا
+ ku: Albanya
+ kv: Албания
+ kw: Albani
+ ky: Албания
+ la: Albania
+ lb: Albanien
+ lg: Alibaniya
+ li: Albanië
+ ln: Albania
+ lo: ແອລເບເນຍ
+ lt: Albanija
+ lv: Albānija
+ mg: Albania
+ mi: Arapeinia
+ mk: Албанија
+ ml: അൽബേനിയ
+ mn: Албани
+ mr: आल्बेनिया
+ ms: Albania
+ mt: Albanija
+ my: အယ်လ်ဘေးနီးယား၏
+ na: Arbainiya
+ ne: अल्बानिया
+ nl: Albanië
+ nn: Albania
+ "no": Albania
+ nv: Dziłigaii Bikéyah
+ oc: Albania
+ om: Albeeniyaa
+ or: ଆଲବାନିଆ
+ os: Албани
+ pa: ਅਲਬਾਨੀਆ
+ pi: अल्बानिया
+ pl: Albania
+ ps: البانیا
+ pt: Albânia
+ qu: Albanya
+ rm: Albania
+ rn: Alubaniya
+ ro: Albania
+ ru: Албания
+ rw: Alubaniya
+ sa: अल्बेनिया
+ sc: Albania
+ sd: البانيا
+ se: Albánia
+ sg: Albanïi
+ sh: Albanija
+ si: ඇල්බේනියාව
+ sk: Albánsko
+ sl: Albanija
+ sm: Albania
+ sn: Albania
+ so: Albania
+ sq: Shqipëria
+ sr: Албанија
+ ss: I-Alibheniya
+ st: Albania
+ su: Albania
+ sv: Albanien
+ sw: Albania
+ ta: அல்பேனியா
+ te: అల్బేనియా
+ tg: Албания
+ th: ประเทศแอลเบเนีย
+ ti: አልባኒያ
+ tk: Albaniýa
+ tl: Albanya
+ to: ʻAlipania
+ tr: Arnavutluk
+ ts: Albania
+ tt: Албания
+ tw: Albania
+ ty: Arapania
+ ug: ئالبانىيە
+ uk: Алба́нія
+ ur: البانیا
+ uz: Albaniya
+ vi: Albania
+ vo: Lalbanän
+ wa: Albaneye
+ wo: Albaani
+ yi: אלבאניע
+ yo: Albáníà
+ za: Albania
+ zh: 阿爾巴尼亞
+ zu: I-Albaniya
--- /dev/null
+name:
+ default: Հայաստան
+ ab: Ермантәыла
+ af: Armenië
+ ak: Armenia
+ am: አርመኒያ
+ an: Armenia
+ ar: أرمينيا
+ as: আৰ্মেনিয়া
+ av: ЦIамухъ
+ az: Ermənistan
+ ba: Әрмәнстан
+ be: Арме́нія
+ bg: Армения
+ bh: आर्मीनिया
+ bi: Armenia
+ bm: Arimeni
+ bn: আর্মেনিয়া
+ bo: ཨར་མེ་ནི་ཡ།
+ br: Armenia
+ bs: Ermenija
+ ca: Armènia
+ ce: Эрмалойчоь
+ ch: Armenia
+ co: Armenia
+ cs: Arménie
+ cu: Армєні́ꙗ
+ cv: Эрмени
+ cy: Armenia
+ da: Armenien
+ de: Armenien
+ dv: އަރުމީނިއާ
+ dz: ཨར་མི་ནི་ཡ
+ ee: Armenia
+ el: Αρμενία
+ en: Armenia
+ eo: Armenio
+ es: Armenia
+ et: Armeenia
+ eu: Armenia
+ fa: ارمنستان
+ ff: Armaaniya
+ fi: Armenia
+ fo: Armenia
+ fr: Arménie
+ fy: Armeenje
+ ga: An Airméin
+ gd: Airmeinia
+ gl: Armenia
+ gn: Aymenia
+ gu: આર્મેનિયા
+ gv: Armeain
+ ha: Armeniya
+ he: אַרְמֶנְיָה
+ hi: आर्मीनिया
+ hr: Armenija
+ ht: Ameni
+ hu: Örményország
+ hy: Հայաստան
+ ia: Armenia
+ id: Armenia
+ ie: Armenia
+ io: Armenia
+ is: Armenía
+ it: Armenia
+ ja: アルメニア
+ jv: Armènia
+ ka: სომხეთი
+ kg: Armenia
+ ki: Armenia
+ kk: Армения
+ kl: Armenia
+ km: អាមេនី
+ kn: ಆರ್ಮೇನಿಯ
+ ko: 아르메니아
+ ks: اَرمانِیا
+ ku: Ermenistan
+ kv: Армения
+ kw: Armeni
+ ky: Армения
+ la: Armenia
+ lb: Armenien
+ lg: Arameniya
+ li: Armenië
+ ln: Armeni
+ lo: ປະເທດອາກເມນີ
+ lt: Armėnija
+ lv: Armēnija
+ mg: Armenia
+ mi: Āmenia
+ mk: Ерменија
+ ml: അർമേനിയ
+ mn: Армен
+ mo: Армения
+ mr: आर्मेनिया
+ ms: Armenia
+ mt: Armenja
+ my: အာမေးနီးယားနိုင်ငံ
+ na: Arminiya
+ ne: आर्मेनिया
+ nl: Armenië
+ nn: Armenia
+ "no": Armenia
+ nv: Aooméénii Bikéyah
+ oc: Armenia
+ om: Armeeniyaa
+ or: ଆର୍ମେନିଆ
+ os: Сомихыстон
+ pa: ਅਰਮੀਨੀਆ
+ pi: आर्मीनिया
+ pl: Armenia
+ ps: ارمنستان
+ pt: Arménia
+ qu: Arminya
+ rm: Armenia
+ rn: Arumeniya
+ ro: Armenia
+ ru: Армения
+ rw: Arumeniya
+ sa: आर्मीनिया
+ sc: Armènia
+ sd: آرمينيا
+ se: Armenia
+ sg: Armenïi
+ sh: Jermenija
+ si: ආර්මේනියාව
+ sk: Arménsko
+ sl: Armenija
+ sm: Amenia
+ sn: Armenia
+ so: Armania
+ sq: Armenia
+ sr: Јерменија
+ ss: iArimeniya
+ su: Arménia
+ sv: Armenien
+ sw: Armenia
+ ta: ஆர்மீனியா
+ te: ఆర్మేనియా
+ tg: Арманистон
+ th: อาร์มีเนีย
+ ti: አርሜኒያ
+ tk: Ermenistan
+ tl: Armenya
+ to: ʻĀminia
+ tr: Ermenistan
+ ts: Armenia
+ tt: Әрмәнстан
+ tw: Aminia
+ ty: Āmenia
+ ug: ئەرمېنىيە
+ uk: Вірме́нія
+ ur: آرمینیا
+ uz: Armaniston
+ vi: Armenia
+ vo: Larmeniyän
+ wo: Armeeni
+ yi: אַרמעניע
+ yo: Arméníà
+ za: Armenia
+ zh: 亞美尼亞
+ zu: i-Armenia
--- /dev/null
+name:
+ default: De Nederlandse Antillen
+ af: Nederlandse Antille
+ an: Antillas Neerlandesas
+ ar: جزر الأنتيل
+ be: Нідэрландскія Антылы
+ bg: Холандски Антили
+ br: Antilhez Nederlandat
+ bs: Holandski Antili
+ ca: Antilles Neerlandeses
+ cs: Nizozemské Antily
+ cy: Antilles yr Iseldiroedd
+ da: Nederlandske Antiller
+ de: Niederländische Antillen
+ dv: ނެދަލޭންޑު އެންޓިލޭ
+ el: Ολλανδικές Αντίλλες
+ en: Netherlands Antilles
+ eo: Nederlandaj Antiloj
+ es: Antillas Neerlandesas;Antillas Holandesas;Indias Occidentales Holandesas
+ et: Hollandi Antillid
+ eu: Holandarren Antillak
+ fa: آنتیل هلند
+ fi: Alankomaiden Antillit
+ fo: Niðurlendsku Antillurnar
+ fr: Antilles néerlandaises
+ fy: Nederlânske Antillen
+ ga: Aintillí na hÍsiltíre
+ gl: Antillas Neerlandesas
+ he: האנטילים ההולנדיים
+ hi: नीदरलैंड एंटीलीज़
+ hr: Nizozemski Antili
+ hu: Holland Antillák
+ ia: Antillas Nederlandese
+ id: Antillen Belanda
+ io: Nederlandana Antili
+ is: Hollensku Antillaeyjar
+ it: Antille Olandesi
+ ja: オランダ領アンティル
+ jv: Antillen Walanda
+ ka: ნიდერლანდის ანტილები
+ kk: Антийлер
+ ko: 네덜란드령 안틸레스
+ kw: Antillys Iseldiryek
+ la: Antillae Nederlandiae
+ lb: Hollännesch Antillen
+ li: Nederlandse Antille
+ ln: Antiya ya Holanda
+ lt: Nyderlandų Antilai
+ lv: Antiļas
+ mn: Нидерландын Антиллийн Арлууд
+ mr: नेदरलँड्स अँटिल्स
+ ms: Antillen Belanda
+ nn: Dei nederlandske Antillane
+ "no": De nederlandske Antillene
+ pl: Antyle Holenderskie
+ pt: Antilhas Holandesas
+ ro: Antilele Olandeze
+ ru: Нидерландские Антилы
+ sh: Nizozemski Antili
+ sk: Holandské Antily
+ sl: Nizozemski Antili
+ sr: Холандски Антили
+ sv: Nederländska Antillerna
+ sw: Antili za Kiholanzi
+ ta: நெதர்லாந்து அண்டிலிசு
+ tg: Антил Ҳоланд
+ th: เนเธอร์แลนด์แอนทิลลิส
+ tr: Hollanda Antilleri
+ uk: Нідерландські Антильські острови
+ vi: Antille thuộc Hà Lan
+ zh: 荷属安的列斯
--- /dev/null
+name:
+ default: Angola
+ af: Angola
+ am: አንጎላ
+ an: Angola
+ ar: أنغولا
+ az: Anqola
+ ba: Анго́ла
+ be: Анго́ла
+ bg: Ангола
+ bh: अंगोला
+ bm: Angola
+ bn: অ্যাঙ্গোলা
+ bo: ཨང་གོ་ལ།
+ br: Angola
+ bs: Angola
+ ca: Angola
+ ce: Анго́ла
+ co: Angola
+ cs: Angola
+ cv: Ангола
+ cy: Angola
+ da: Angola
+ de: Angola
+ dv: އެންގޯލާ
+ dz: ཨང་གྷོ་ལ
+ ee: Aŋgola
+ el: Ανγκόλα
+ en: Angola
+ eo: Angolo
+ es: Angola
+ et: Angola
+ eu: Angola
+ fa: آنگولا
+ ff: Anngolaa
+ fi: Angola
+ fo: Angola
+ fr: Angola
+ fy: Angoala
+ ga: Angóla
+ gd: Angola
+ gl: Angola
+ gn: Angola
+ gu: અંગોલા
+ gv: Angoley
+ ha: Angola
+ he: אנגולה
+ hi: अंगोला
+ hr: Angola
+ ht: Angola
+ hu: Angola
+ hy: Անգոլա
+ ia: Angola
+ id: Angola
+ ie: Angola
+ ig: Angola
+ io: Angola
+ is: Angóla
+ it: Angola
+ ja: アンゴラ
+ jv: Angola
+ ka: ანგოლა
+ kg: Ngola
+ ki: Angola
+ kk: Ангола
+ km: អង់ហ្គោឡា
+ kn: ಅಂಗೋಲ
+ ko: 앙골라
+ ks: اینٛگولا
+ ku: Angola
+ kw: Angola
+ ky: Ангола
+ la: Angolia
+ lb: Angola
+ lg: Angola
+ li: Angola
+ ln: Angola
+ lo: ອັງໂກລາ
+ lt: Angola
+ lv: Angola
+ mg: Angola
+ mi: Anakora
+ mk: Ангола
+ ml: അംഗോള
+ mn: Ангол
+ mr: अँगोला
+ ms: Angola
+ mt: Angola
+ my: အင်ဂိုလာနိုင်ငံ
+ na: Angora
+ ne: अंगोला
+ nl: Angola
+ nn: Angola
+ "no": Angola
+ nv: Angóola
+ ny: Angola
+ oc: Angòla
+ om: Angoolaa
+ or: ଆଙ୍ଗୋଲା
+ os: Анголæ
+ pa: ਅੰਗੋਲਾ
+ pi: अंगोला
+ pl: Angola
+ ps: آنګولا
+ pt: Angola
+ qu: Angula
+ rm: Angola
+ ro: Angola
+ ru: Ангола
+ rw: Angola
+ sa: अङ्गोला
+ sc: Angola
+ se: Angola
+ sg: Angoläa
+ sh: Angola
+ si: ඇන්ගෝලාව
+ sk: Angola
+ sl: Angola
+ sn: Angola
+ so: Angola
+ sq: Angola
+ sr: Ангола
+ ss: I-Angola
+ st: Angola
+ su: Angola
+ sv: Angola
+ sw: Angola
+ ta: அங்கோலா
+ te: అంగోలా
+ tg: Ангола
+ th: ประเทศแองโกลา
+ ti: ኣንጎላ
+ tk: Angola
+ tl: Anggola
+ to: ʻEnikola
+ tr: Angola
+ ts: Angola
+ tt: Анго́ла
+ ug: ئانگولا
+ uk: Анґо́ла
+ ur: انگولہ
+ uz: Angola
+ vi: Angola
+ vo: Langolän
+ wo: Angolaa
+ yi: אַנגאלאַ
+ yo: Àngólà
+ za: Angola
+ zh: 安哥拉
+ zu: I-Angola
--- /dev/null
+name:
+ default: Antarctica
--- /dev/null
+name:
+ default: Argentina
+ af: Argentinië
+ ak: Agyɛntina
+ am: አርጀንቲና
+ an: Archentina
+ ar: الأرجنتين
+ as: আৰ্জেণ্টিনা
+ av: Аргентина
+ ay: Arxintina
+ az: Argentina
+ ba: Аргенти́на
+ be: Аргенці́на
+ bg: Аржентѝна
+ bh: अर्जेन्टीना
+ bi: Argentina
+ bm: Argentina
+ bn: আর্জেন্টিনা
+ bo: ཨར་ཇེན་ཊི་ན།
+ br: Arc'hantina
+ bs: Argentina
+ ca: Argentina
+ ce: Аргенти́на
+ ch: Argentina
+ co: Argentina
+ cs: Argentina
+ cv: Аргентина
+ cy: Ariannin
+ da: Argentina
+ de: Argentinien
+ dv: އާޖެންޓީނާ
+ dz: ཨར་ཇེན་ཊི་ན
+ ee: Argentina
+ el: Αργεντινή
+ en: Argentina
+ eo: Argentino
+ es: Argentina
+ et: Argentina
+ eu: Argentina
+ fa: آرژانتین
+ ff: Arjantiin
+ fi: Argentiina
+ fj: Argentina
+ fo: Argentina
+ fr: Argentine
+ fy: Argentynje
+ ga: an Airgintín
+ gd: Argentina
+ gl: Arxentina
+ gn: Argentina
+ gu: આર્જેન્ટીના
+ gv: yn Argenteen
+ ha: Argentina
+ he: ארגנטינה
+ hi: अर्जेण्टीना
+ hr: Argentina
+ ht: Ajantin
+ hu: Argentína
+ hy: Արգենտինա
+ ia: Argentina
+ id: Argentina
+ ie: Argentina
+ ig: Argentina
+ io: Arjentinia
+ is: Argentína
+ it: Argentina
+ ja: アルゼンチン
+ jv: Argèntina
+ ka: არგენტინა
+ kg: Arhentina
+ ki: Argentina
+ kk: Аргентина
+ kl: Argentina
+ km: អាហ្សង់ទីន
+ kn: ಅರ್ಜೆಂಟೀನ
+ ko: 아르헨티나
+ ks: أرجَنٹینا
+ ku: Arjentîn
+ kv: Аргентина
+ kw: Arghantina
+ ky: Аргентина
+ la: Argentina
+ lb: Argentinien
+ lg: Arigentina
+ li: Argentinië
+ ln: Argentina
+ lo: ອາກຊັງຕີນ
+ lt: Argentina
+ lv: Argentīna
+ mg: Arjentina
+ mi: Āketina
+ mk: Аргентина
+ ml: അർജന്റീന
+ mn: Аргентин
+ mr: आर्जेन्टिना
+ ms: Argentina
+ mt: Arġentina
+ my: အာဂျင်တီးနားနိုင်ငံ
+ na: Ardjentina
+ ne: अर्जेन्टिना
+ nl: Argentinië
+ nn: Argentina
+ "no": Argentina
+ nv: Béésh Łigaii Bikéyah
+ oc: Argentina
+ om: Arjentiinaa
+ or: ଆର୍ଜେଣ୍ଟିନା
+ os: Аргентинæ
+ pa: ਅਰਜਨਟੀਨਾ
+ pi: अर्जन्टीना
+ pl: Argentyna
+ ps: ارجنټاین
+ pt: Argentina
+ qu: Arhintina
+ rm: Argentinia
+ rn: Argentine
+ ro: Argentina
+ ru: Аргентина
+ rw: Arijantine
+ sa: अर्जण्टिना
+ sc: Argentina
+ se: Argentiinná
+ sg: Arzantîna
+ sh: Argentina
+ si: ආජන්ටිනාව
+ sk: Argentína
+ sl: Argentina
+ sm: Atenitina
+ sn: Argentina
+ so: Arjantiina
+ sq: Argjentina
+ sr: Аргентина
+ su: Argéntina
+ sv: Argentina
+ sw: Argentina
+ ta: அர்கெந்தீனா
+ te: అర్జెంటీనా
+ tg: Аргенти́на
+ th: อาร์เจนตินา
+ ti: አርጀንቲና
+ tk: Argentina
+ tl: Arhentina
+ to: ʻAsenitina
+ tr: Arjantin
+ ts: Arjentina
+ tt: Аргенти́на
+ tw: Argentina
+ ty: ’Atetina
+ ug: ئارگېنتىنا
+ uk: Аргенти́на
+ ur: ارجنٹائن
+ uz: Argentina
+ vi: Argentina
+ vo: Largäntän
+ wa: Årdjintene
+ wo: Arsantin
+ yi: אַרגענטינע
+ yo: Argẹntínà
+ za: Argentina
+ zh: 阿根廷
+ zu: i-Argentina
--- /dev/null
+name:
+ default: American Samoa
--- /dev/null
+name:
+ default: Österreich
+ ab: Австриа
+ af: Oostenryk
+ ak: Austria
+ am: ኦስትሪያ
+ an: Austria
+ ar: النمسا
+ as: অষ্ট্ৰিয়া
+ av: Авустур
+ ay: Austriya
+ az: Avstriya
+ ba: Австрия
+ be: Аўстрыя
+ bg: Австрия
+ bh: ऑस्ट्रिया
+ bi: Austria
+ bn: অস্ট্রিয়া
+ bo: ཨོ་སི་ཐྲི་ཡ།
+ br: Aostria
+ bs: Austrija
+ ca: Àustria
+ ce: Австри
+ ch: Austria
+ co: Austria
+ cs: Rakousko
+ cu: Аѵстрїꙗ
+ cv: Австри
+ cy: Awstria
+ da: Østrig
+ de: Österreich
+ dv: އޮސްޓްރިއާ
+ dz: ཨས་ཊི་ཡ
+ ee: Austria
+ el: Αυστρία
+ en: Austria
+ eo: Aŭstrio
+ es: Austria
+ et: Austria
+ eu: Austria
+ fa: اتریش
+ ff: Otiris
+ fi: Itävalta
+ fo: Eysturríki
+ fr: Autriche
+ fy: Eastenryk
+ ga: An Ostair
+ gd: An Ostair
+ gl: Austria
+ gn: Auteria
+ gu: ઑસ્ટ્રિયા
+ gv: Yn Austeyr
+ ha: Austriya
+ he: אוסטריה
+ hi: ऑस्ट्रिया
+ hr: Austrija
+ ht: Otrich
+ hu: Ausztria
+ hy: Ավստրիա
+ ia: Austria
+ id: Austria
+ ie: Austria
+ ig: Austria
+ io: Austria
+ is: Austurríki
+ it: Austria
+ ja: オーストリア
+ jv: Austria
+ ka: ავსტრია
+ kg: Autriche
+ kk: Аустрия Республикасы
+ kl: Østrigi
+ kn: ಆಸ್ಟ್ರಿಯ
+ ko: 오스트리아
+ ku: Awistriya
+ kv: Австрия
+ kw: Estrych
+ ky: Австрия
+ la: Austria
+ lb: Éisträich
+ li: Oosteriek
+ ln: Otrish
+ lo: ປະເທດໂອຕະລິດ
+ lt: Austrija
+ lv: Austrija
+ mg: Aotrisy
+ mi: Ateria
+ mk: Австрија
+ ml: ഓസ്ട്രിയ
+ mn: Австри
+ mr: ऑस्ट्रिया
+ ms: Austria
+ mt: Awstrija
+ my: သြစတြီးယားနိုင်ငံ
+ na: Oteriya
+ ne: अष्ट्रीया
+ nl: Oostenrijk
+ nn: Austerrike
+ "no": Østerrike
+ nv: Óóswiya
+ oc: Àustria
+ om: Oostiriyaa
+ or: ଅଷ୍ଟ୍ରିଆ
+ os: Австри
+ pa: ਆਸਟਰੀਆ
+ pi: आस्ट्रिया
+ pl: Austria
+ ps: اتريش
+ pt: Áustria
+ qu: Awstiriya
+ rm: Austria
+ ro: Austria
+ ru: Австрия
+ rw: Ositiriya
+ sa: आस्ट्रिया
+ sc: Àustria
+ sd: آسٽريا
+ se: Nuortariika
+ sh: Austrija
+ si: ඔස්ට්රියාව
+ sk: Rakúsko
+ sl: Avstrija
+ sm: Austilia
+ sn: Austria
+ so: Austriya
+ sq: Austria
+ sr: Аустрија
+ ss: IYosithiya
+ st: Austria
+ su: Austria
+ sv: Österrike
+ sw: Austria
+ ta: ஆஸ்திரியா
+ te: ఆస్ట్రియా
+ tg: Утриш
+ th: ประเทศออสเตรีย
+ tk: Awstriýa
+ tl: Austria
+ tr: Avusturya
+ ts: Austria
+ tt: Австрия
+ tw: Austria
+ ug: ئاۋستىرىيە
+ uk: Австрія
+ ur: آسٹریا
+ uz: Avstriya
+ vi: Áo
+ vo: Lösterän
+ wa: Otriche
+ wo: Otris
+ yi: עסטרייך
+ yo: Austríà
+ za: Audeihleih
+ zh: 奧地利
+ zu: I-Ostriya
--- /dev/null
+name:
+ default: Australia
+ ab: Австралиа
+ af: Australië
+ am: አውስትራልያ
+ an: Australia
+ ar: أستراليا
+ as: অষ্ট্ৰেলিয়া
+ ay: Australla
+ az: Avstraliya
+ ba: Австралия
+ be: Аўстра́лія
+ bg: Австралия
+ bh: ऑस्ट्रेलिया
+ bi: Ostrelia
+ bm: Ostralia
+ bn: অস্ট্রেলিয়া
+ bo: ཨོ་སེ་ཐེ་ལི་ཡ།
+ br: Aostralia
+ bs: Australija
+ ca: Austràlia
+ ce: Австра́ли
+ co: Australia
+ cs: Austrálie
+ cu: Аѵстралїꙗ
+ cv: Австрали
+ cy: Awstralia
+ da: Australien
+ de: Australien
+ dv: އޮސްޓަރުލިޔާ
+ dz: ཨས་ཊེཡེ་ལི་ཡ
+ ee: Australia
+ el: Αυστραλία
+ en: Australia
+ eo: Aŭstralio
+ es: Australia
+ et: Austraalia
+ eu: Australia
+ fa: استرالیا
+ fi: Australia
+ fo: Avstralia
+ fr: Australie
+ fy: Austraalje
+ ga: Astráil
+ gd: Astràilia
+ gl: Australia
+ gn: Autaralia
+ gu: ઑસ્ટ્રેલિયા
+ gv: Austrail
+ ha: Asturaliya
+ he: אוסטרליה
+ hi: ऑस्ट्रेलिया
+ hr: Australija
+ ht: Ostrali
+ hu: Ausztrália
+ hy: Ավստրալիա
+ ia: Australia
+ id: Australia
+ ie: Australia
+ ig: Ostraliya
+ io: Australia
+ is: Ástralía
+ it: Australia
+ iu: ᐊᔅᑦᕌᓕᐊ
+ ja: オーストラリア
+ jv: Ostrali
+ ka: ავსტრალია
+ kg: Australia
+ ki: Australia
+ kk: Аустралия
+ kl: Australia
+ km: អូស្ត្រាលី
+ kn: ಆಸ್ಟ್ರೇಲಿಯ
+ ko: 오스트레일리아
+ ku: Awistralya
+ kv: Австралия
+ kw: Ostrali
+ ky: Австралия
+ la: Australia
+ lb: Australien
+ li: Australië
+ lo: ປະເທດອົດສະຕາລີ
+ lt: Australija
+ lv: Austrālija
+ mg: Aostralia
+ mi: Ahitereiria
+ mk: Австралија
+ ml: ഓസ്ട്രേലിയ
+ mn: Австрали
+ mr: ऑस्ट्रेलिया
+ ms: Australia
+ mt: Awstralja
+ my: ဩစတြေးလျနိုင်ငံ
+ na: Otereiriya
+ ne: अष्ट्रेलिया
+ nl: Australië
+ nn: Australia
+ "no": Australia
+ nv: Nahatʼeʼiitsoh Bikéyah
+ oc: Austràlia
+ om: Awustireliyaa
+ or: ଅଷ୍ଟ୍ରେଲିଆ
+ os: Австрали
+ pa: ਆਸਟ੍ਰੇਲੀਆ
+ pi: आस्ट्रेलिया
+ pl: Australia
+ ps: آسټراليا
+ pt: Austrália
+ qu: Awstralya
+ rm: Australia
+ rn: Australiya
+ ro: Australia
+ ru: Австралия
+ rw: Ositaraliya
+ sa: आस्ट्रेलिया
+ sc: Austràlia
+ sd: آسٽريليا
+ se: Australia
+ sg: Ostralïi
+ sh: Australija
+ si: ඕස්ට්රේලියාව
+ sk: Austrália
+ sl: Avstralija
+ sm: Ausetalia
+ sn: Australia
+ so: Australia
+ sq: Australia
+ sr: Аустралија
+ su: Australia
+ sv: Australien
+ sw: Australia
+ ta: ஆஸ்திரேலியா
+ te: ఆస్ట్రేలియా
+ tg: Австралия
+ th: ออสเตรเลีย
+ ti: ኣውስትራሊያ
+ tk: Awstraliýa
+ tl: Australya
+ tr: Avustralya
+ tt: Австралия
+ tw: Australia
+ ty: Autereraria
+ ug: ئاۋستىرالىيە
+ uk: Австра́лія
+ ur: آسٹریلیا
+ uz: Avstraliya
+ vi: Úc
+ vo: Laustralän
+ wa: Ostraleye
+ wo: Óstraali
+ yi: אויסטראַליע
+ yo: Austrálíà
+ za: Audaihleihya
+ zh: 澳大利亚
+ zu: I-Ostreliya
--- /dev/null
+name:
+ default: Aruba
--- /dev/null
+name:
+ default: Aland Islands
--- /dev/null
+name:
+ default: Azərbaycan
+ ab: Азербаиџьан
+ af: Azerbeidjan
+ ak: Azerbaijan
+ am: አዘርባይጃን
+ an: Azerbaichán
+ ar: أذربيجان
+ as: আজেৰবাইজান
+ av: Азарбижан
+ az: Azərbaycan
+ ba: Әзербайжан
+ be: Азербайджа́н
+ bg: Азербайджан
+ bh: अज़रबैजान
+ bi: Azerbaijan
+ bm: Azɛrbayjaŋ
+ bn: আজারবাইজান
+ bo: ཨ་ཛར་བཡི་ཇན།
+ br: Azerbaidjan
+ bs: Azerbejdžan
+ ca: Azerbaidjan
+ ce: Азербайджа́н
+ co: Azerbaighjan
+ cs: Ázerbájdžán
+ cu: Аꙁѣрбаича́нъ
+ cv: Азербайджан
+ cy: Aserbaijan
+ da: Aserbajdsjan
+ de: Aserbaidschan
+ dv: އަޒަރުބައިޖާން
+ dz: ཨཛར་བཡེ་ཇན།
+ ee: Azerbaijan
+ el: Αζερμπαϊτζάν
+ en: Azerbaijan
+ eo: Azerbajĝano
+ es: Azerbaiyán
+ et: Aserbaidžaan
+ eu: Azerbaijan
+ fa: آذربایجان
+ ff: Aserbayjan
+ fi: Azerbaidžan
+ fo: Aserbadsjan
+ fr: Azerbaïdjan
+ fy: Azerbeidzjan
+ ga: an Asarbaiseáin
+ gd: Asarbaideàn
+ gl: Acerbaixán
+ gn: Aservaijã
+ gu: અઝેરબીજાન
+ gv: yn Asserbajaan
+ ha: Azerbaijan
+ he: אָזַרְבַּיְיגָ'ן
+ hi: अज़रबैजान
+ hr: Azerbajdžan
+ ht: Azerbaydjan
+ hu: Azerbajdzsán
+ hy: Ադրբեջան
+ ia: Azerbaidzhan
+ id: Azerbaijan
+ ie: Azerbaidjan
+ io: Azerbaijan
+ is: Aserbaísjan
+ it: Azerbaigian
+ ja: アゼルバイジャン
+ jv: Azerbaijan
+ ka: აზერბაიჯანი
+ kg: Azerbaidjan
+ ki: Azerbaijan
+ kk: Әзірбайжан
+ kl: Aserbajdsjan
+ km: អាស៊ែបៃហ្សង់
+ kn: ಅಜೆರ್ಬೈಜಾನ್
+ ko: 아제르바이잔
+ ks: آزَرباجان
+ ku: Azerbaycan
+ kv: Азербайджа́н
+ kw: Azerbayjan
+ ky: Азербайжан
+ la: Atropatene
+ lb: Aserbaidschan
+ lg: Azerebayijaani
+ li: Azerbaidzjan
+ ln: Azɛrbayzáni
+ lo: ປະເທດອາແຊກບາຍຊັງ
+ lt: Azerbaidžanas
+ lv: Azerbaidžāna
+ mg: Azerbaijana
+ mi: Atepaihānia
+ mk: Азербејџан
+ ml: അസർബെയ്ജാൻ
+ mn: Азербайжан
+ mo: Азербаиӂан
+ mr: अझरबैजान
+ ms: Azerbaijan
+ mt: Ażerbajġan
+ my: အဇာဘိုင်ဂျန်နိုင်ငံ
+ na: Aderbaidjan
+ nb: Aserbajdsjan
+ ne: अजरबैजान
+ nl: Azerbeidzjan
+ nn: Aserbajdsjan
+ "no": Aserbajdsjan
+ nv: Azééwii Bikéyah
+ ny: Azerbaijan
+ oc: Azerbaitjan
+ om: Azarbaajan
+ or: ଆଜରବାଇଜାନ
+ os: Азербайджан
+ pa: ਅਜ਼ਰਬਾਈਜਾਨ
+ pi: अजर्बैजान
+ pl: Azerbejdżan
+ ps: آزربایجان
+ pt: Azerbaijão
+ qu: Asarsuyu
+ rm: Aserbeidschan
+ ro: Azerbaidjan
+ ru: Азербайджан
+ rw: Azeribayijani
+ sa: अजर्बैजान
+ sc: Azerbaigián
+ se: Azerbaižan
+ sg: Zerebaidyäan
+ sh: Azerbejdžan
+ si: අසර්බයිජානය
+ sk: Azerbajdžan
+ sl: Azerbajdžan
+ sm: Azerbaijin
+ sn: Azerbaijan
+ so: Aserbiijaan
+ sq: Azerbajxhani
+ sr: Азербејџан
+ ss: iZebajani
+ su: Azerbaijan
+ sv: Azerbajdzjan
+ sw: Azerbaijan
+ ta: அசர்பைஜான்
+ te: అజర్బైజాన్
+ tg: Озарбойҷон
+ th: อาเซอร์ไบจาน
+ ti: አዘርባጃን
+ tk: Azerbaýjan
+ tl: Aserbayan
+ to: ʻAsapaisani
+ tr: Azerbaycan
+ ts: Azerbaijan
+ tt: Азәрбайҗан
+ tw: Azerbaijan
+ ty: Atepaihānia
+ ug: ئەزەربەيجان
+ uk: Азербайджа́н
+ ur: آذربائیجان
+ uz: Ozarbayjon
+ vi: Azerbaijan
+ vo: Lasärbäcän
+ wo: Aserbayjaan
+ yi: אַזערבײַדזשאַן
+ yo: Azerbaijan
+ za: Ahsehbaiqgyangh
+ zh: 阿塞拜疆
+ zu: Azerbaijan
--- /dev/null
+name:
+ default: Bosna i Hercegovina / Босна и Херцеговина
+ af: Bosnië en Herzegowina
+ ak: Bosnia and Herzegovina
+ am: ቦስኒያና ሄርጸጎቪና
+ an: Bosnia y Herzegovina
+ ar: البوسنة والهرسك
+ av: Бо́сния ва Герцегови́на
+ az: Bosniya və Herseqovina
+ ba: Босния һәм Герцеговина
+ be: Бо́снія і Герцагаві́на
+ bg: Босна и Херцеговина
+ bh: बोस्निया आ हर्जेगोविना
+ bi: Bosnia mo Herzegovina
+ bm: Bozni-Ɛrizigovini
+ bn: বসনিয়া ও হার্জেগোভিনা
+ bo: བྷོསུ་ནིཡ་དང་ཧར་ཛེ་གྷོ་ཝི་ན།
+ br: Bosnia-ha-Herzegovina
+ bs: Bosna i Hercegovina
+ ca: Bòsnia i Hercegovina
+ ce: Босни а Герцеговина а
+ co: Bosnia è Erzegovina
+ cs: Bosna a Hercegovina
+ cu: Босна́
+ cv: Босни тата Герцеговина
+ cy: Bosnia a Hercegovina
+ da: Bosnien og Hercegovina
+ de: Bosnien und Herzegowina
+ dv: ބޮސްނިޔާ އެންޑް ހެރްޒިގޮވީނާ
+ ee: Bosnia and Herzegovina
+ el: Βοσνία και Ερζεγοβίνη
+ en: Bosnia and Herzegovina
+ eo: Bosnio kaj Hercegovino
+ es: Bosnia y Herzegovina
+ et: Bosnia ja Hertsegoviina
+ eu: Bosnia eta Herzegovinako
+ fa: بوسنی و هرزگوین
+ ff: Bosniya e Herzegovina
+ fi: Bosnia ja Hertsegovina
+ fo: Bosnia og Hersegovina
+ fr: Bosnie-et-Herzégovine
+ fy: Bosnje-Hertsegovina
+ ga: an Bhoisnia-Heirseagaivéin
+ gd: Bosna agus Hearsagobhana
+ gl: Bosnia e Hercegovina
+ gn: Vonia ha Hesegovina
+ gu: બોસ્નિયા અને હર્ઝેગોવિના
+ gv: Bosnia as Herzegovina
+ ha: Bosnia da Herzegovina
+ he: בּוֹסְנִיָּה וְהֶרְצֶגוֹבִינָה
+ hi: बॉस्निया और हर्ज़ेगोविना
+ hr: Bosna i Hercegovina
+ ht: Bosni ak Erzegovin
+ hu: Bosznia-Hercegovina
+ hy: Բոսնիա և Հերցեգովինա
+ ia: Bosnia e Herzegovina
+ id: Bosnia dan Herzegovina
+ ie: Bosnia e Herzegovina
+ ig: Bosnia na Herzegovina
+ io: Bosnia e Herzegovina
+ is: Bosnía og Hersegóvína
+ it: Bosnia ed Erzegovina
+ ja: ボスニア・ヘルツェゴビナ
+ jv: Bosnia lan Hércegovina
+ ka: ბოსნია და ჰერცეგოვინა
+ kg: Bosna
+ ki: Mbocinia na Hecengobina
+ kk: Босния және Герцеговина
+ kl: Bosnia-Hercegovina
+ km: បូស្ន៉ី
+ kn: ಬೊಸ್ನಿಯ ಮತ್ತು ಹೆರ್ಜೆಗೊವಿನ
+ ko: 보스니아 헤르체고비나
+ ks: बास्निया
+ ku: Bosniya û Herzegovîna
+ kv: Босния да Герцеговина
+ kw: Bosni–Hercegovina
+ ky: Босния жана Герцеговина
+ la: Bosnia et Herzegovina
+ lb: Bosnien an Herzegowina
+ li: Bosnië en Herzegovina
+ ln: Bosnia na Erzegovina
+ lo: ປະເທດບົດສະນີແຮກເຊໂກວີນ
+ lt: Bosnija ir Hercegovina
+ lv: Bosnija un Hercegovina
+ mg: Bosnia sy Herzegovina
+ mi: Pōngia-Herekōmina
+ mk: Босна и Херцеговина
+ ml: ബോസ്നിയ ആന്റ് ഹെർസെഗോവിന
+ mn: Босни ба Херцеговина
+ mr: बॉस्निया आणि हर्झगोव्हिना
+ ms: Bosnia dan Herzegovina
+ mt: Bożnija u Ħerżegovina
+ my: ဘော့စနီးယားနှင့် ဟာဇီဂိုးဗီးနားနိုင်ငံ
+ na: Boteniya me Erdegobina
+ ne: बोस्निया र हर्जगोभिना
+ nl: Bosnië en Herzegovina
+ nn: Bosnia-Hercegovina
+ "no": Bosnia-Hercegovina
+ nv: Bosna dóó Hetsog Bikéyah
+ oc: Bòsnia e Ercegovina
+ om: Boosniyaa fi Herzegoviinaa
+ or: ବୋସନିଆ ଓ ହରଜଗୋଭିନା
+ os: Босни æмæ Герцеговинæ
+ pa: ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ
+ pi: बास्निया
+ pl: Bośnia i Hercegowina
+ ps: بوسنيا او هېرزګوينا
+ pt: Bósnia e Herzegovina
+ qu: Busna-Hirsiquwina
+ rm: Bosnia-Erzegovina
+ rn: Bosiniya na Herigozevine
+ ro: Bosnia și Herțegovina
+ ru: Босния и Герцеговина
+ rw: Bosiniya na Herizegovina
+ sa: बास्निया
+ sc: Bòsnia e Erzegòvina
+ se: Bosnia ja Hercegovina
+ sg: Bosnïi na Herzegovînni
+ sh: Bosna i Hercegovina
+ si: බොස්නියා සහ හර්සගෝවිනා
+ sk: Bosna a Hercegovina
+ sl: Bosna in Hercegovina
+ sm: Bosnia ma Herzegovina
+ sn: Bosnia and Herzegovina
+ so: Bosniya iyo Herzegovina
+ sq: Bosnja dhe Hercegovina
+ sr: Босна и Херцеговина
+ ss: iBhosinya ne Hezegovi
+ su: Bosnia jeung Hérzégovina
+ sv: Bosnien och Hercegovina
+ sw: Bosnia na Herzegovina
+ ta: பொசுனியாவும் எர்செகோவினாவும்
+ te: బోస్నియా మరియు హెర్జెగొవీనా
+ tg: Босния ва Ҳерсеговина
+ th: บอสเนียและเฮอร์เซโกวีนา
+ ti: ቦስኒያ እና ሄርዞጎቪኒያ
+ tk: Bosniýa we Gersegowina
+ tl: Bosnia at Herzegovina
+ to: Posinia mo Hesikōvinia
+ tr: Bosna-Hersek
+ ts: Bosnia and Herzegovina
+ tt: Бо́сния һәм Герцегови́на
+ ty: Pōtinia-Heretōvina
+ ug: بوسنىيە ۋە ھېرسېگوۋىنا
+ uk: Бо́снія і Герцеґови́на
+ ur: بوسنیا و ہرزیگووینا
+ uz: Bosniya va Gersegovina
+ vi: Bosnia và Herzegovina
+ vo: Bosnän e Härzegovän
+ wa: Bosneye
+ wo: Bosni Hersegowin
+ yi: באסניע און הערצעגאווינע
+ yo: Bósníà àti Hẹrjẹgòfínà
+ zh: 波斯尼亞和黑塞哥維那
+ zu: IBhosniya neHerzegovina
--- /dev/null
+name:
+ default: Barbados
+ af: Barbados
+ am: ባርቤዶስ
+ an: Barbados
+ ar: باربادوس
+ ay: Barbados
+ az: Barbados
+ ba: Барба́дос
+ be: Барба́дас
+ bg: Барбадос
+ bn: বার্বাডোস
+ bo: བར་བ་ཌོ་སི།
+ br: Barbados
+ bs: Barbados
+ ca: Barbados
+ ce: Барбадос
+ cs: Barbados
+ cy: Barbados
+ da: Barbados
+ de: Barbados
+ dv: ބާބަޑޮސް
+ ee: Barbados
+ el: Μπαρμπάντος
+ en: Barbados
+ eo: Barbado
+ es: Barbados
+ et: Barbados
+ eu: Barbados
+ fa: باربادوس
+ fi: Barbados
+ fo: Barbados
+ fr: Barbade
+ fy: Barbados
+ ga: Barbadós
+ gd: Barbados
+ gl: Barbados
+ gn: Varvado
+ gv: Barbados
+ he: ברבדוס
+ hi: बारबाडोस
+ hr: Barbados
+ ht: Lababad
+ hu: Barbados
+ hy: Բարբադոսը
+ ia: Barbados
+ id: Barbados
+ ie: Barbados
+ ig: Barbados
+ io: Barbados
+ is: Barbados
+ it: Barbados
+ ja: バルバドス
+ jv: Barbadhos
+ ka: ბარბადოსი
+ kk: Барба́дос
+ kn: ಬಾರ್ಬಡೋಸ್
+ ko: 바베이도스
+ ku: Barbados
+ kv: Барбадос
+ kw: Barbados
+ ky: Барбадос
+ la: Barbata
+ lb: Barbados
+ li: Barbados
+ ln: Barbados
+ lt: Barbadòsas
+ lv: Barbadosa
+ mg: Barbady
+ mk: Барбадос
+ ml: ബർബാഡോസ്
+ mn: Барбадос
+ mr: बार्बाडोस
+ ms: Barbados
+ mt: Barbados
+ my: ဘာဘေးဒိုးစ်နိုင်ငံ
+ na: Barbadot
+ ne: बार्बाडोस
+ nl: Barbados
+ nn: Barbados
+ "no": Barbados
+ oc: Barbados
+ om: Baarbeedoos
+ or: ବାରବାଡୋସ
+ os: Барбадос
+ pa: ਬਾਰਬਾਡੋਸ
+ pi: बार्बाडोस
+ pl: Barbados
+ ps: بارباډوس
+ pt: Barbados
+ rm: Barbados
+ ro: Barbados
+ ru: Барбадос
+ rw: Barubadosi
+ sa: बार्बाडोस
+ se: Barbados
+ sh: Barbados
+ sk: Barbados
+ sl: Barbados
+ sn: Barbados
+ so: Barbados
+ sq: Barbadosi
+ sr: Барбадос
+ ss: iBhadosi
+ su: Barbados
+ sv: Barbados
+ sw: Barbados
+ ta: பார்படோசு
+ te: బార్బడోస్
+ tg: Барбáдос
+ th: บาร์เบโดส
+ tl: Barbados
+ tr: Barbados
+ tt: Барба́дос
+ ug: باربادوس
+ uk: Барба́дос
+ ur: بارباڈوس
+ uz: Barbados
+ vi: Barbados
+ vo: Barbadeän
+ wa: Barbåde
+ wo: Barbados
+ yi: באַרבאַדאס
+ yo: Bárbádọ̀s
+ zh: 巴巴多斯
--- /dev/null
+name:
+ default: Bangladesh
+ af: Bangladesj
+ ar: بنغلاديش
+ az: Banqladeş
+ be: Бангладэш
+ br: Bangladesh
+ ca: Bangla Desh
+ da: Bangladesh
+ de: Bangladesch
+ el: Μπανγκλαντές
+ en: Bangladesh
+ eo: Bangladeŝo
+ fa: بنگلادش
+ fi: Bangladesh
+ fr: Bangladesh
+ fy: Banglades
+ ga: An Bhangladéis
+ gd: Bangladais
+ he: בנגלדש
+ hr: Bangladeš
+ hu: Banglades
+ is: Bangladess
+ it: Bangladesh
+ ja: バングラデシュ
+ la: Bangladesha
+ lb: Bangladesch
+ li: Bangladesj
+ lt: Bangladešas
+ lv: Bangladeša
+ mn: Бангладеш
+ pl: Bangladesz
+ pt: Bangladesh
+ ru: Бангладеш
+ sl: Bangladeš
+ sv: Bangladesh
+ th: ประเทศบังกลาเทศ
+ tr: Bangladeş
+ uk: Бангладеш
+ zh: 孟加拉国
--- /dev/null
+name:
+ default: België / Belgique / Belgien
+ af: België
+ ak: Belgium
+ am: ቤልጅግ
+ an: Belchica
+ ar: بلجيكا
+ av: Бе́льгия
+ ay: Bilkiya
+ az: Belçika
+ ba: Бе́льгия
+ be: Бeльгія
+ bg: Белгия
+ bh: बेल्जियम
+ bi: Beljiom
+ bm: Bɛliziki
+ bn: বেলজিয়াম
+ bo: པེར་ཅིན།
+ br: Belgia
+ bs: Belgija
+ ca: Bèlgica
+ ce: Бельги
+ co: Belgica
+ cs: Belgie
+ cu: Бє́лгїѥ
+ cv: Бельги
+ cy: Gwlad Belg
+ da: Belgien
+ de: Belgien
+ dv: ބެލްޖިއަމް
+ dz: བེལ་ཇིཡམ
+ ee: Belgium
+ el: Βέλγιο
+ en: Belgium
+ eo: Belgio
+ es: Bélgica
+ et: Belgia
+ eu: Belgika
+ fa: بلژیک
+ ff: Beljik
+ fi: Belgia
+ fo: Belgia
+ fr: Belgique
+ fy: Belgje
+ ga: an Bheilg
+ gd: a' Bheilg
+ gl: Bélxica
+ gn: Véyhika
+ gu: બેલ્જિયમ
+ gv: Velg
+ ha: Beljik
+ he: בֶּלְגְיָה
+ hi: बेल्जियम
+ hr: Belgija
+ ht: Bèljik
+ hu: Belgium
+ hy: Բելգիա
+ ia: Belgica
+ id: Belgia
+ ie: Belgia
+ ig: Belgium
+ io: Belgia
+ is: Belgía
+ it: Belgio
+ ja: ベルギー
+ jv: Bèlgia
+ ka: ბელგია
+ kg: Belezi
+ ki: Ubelgiji
+ kk: Бельгия
+ kl: Belgia
+ km: បែលហ្ស៉ិក
+ kn: ಬೆಲ್ಜಿಯಂ
+ ko: 벨기에
+ ks: बेल्जियम
+ ku: Belçîka
+ kv: Бельгия
+ kw: Pow Belg
+ ky: Бельгия
+ la: Belgica
+ lb: Belsch
+ lg: Bubirigi
+ li: Belsj
+ ln: Bɛ́ljika
+ lo: ປະເທດແບນຊິກ
+ lt: Belgija
+ lv: Beļģija
+ mg: Belzika
+ mi: Pehiamu
+ mk: Белгија
+ ml: ബെൽജിയം
+ mn: Бельги
+ mr: बेल्जियम
+ ms: Belgium
+ mt: Belġju
+ my: ဘယ်လ်ဂျီယမ်နိုင်ငံ
+ na: Berdjiyum
+ nb: Belgia
+ ne: बेल्जियम
+ nl: België
+ nn: Belgia
+ "no": Belgia
+ oc: Belgica
+ om: Beeljiyeem
+ or: ବେଲଜିଅମ
+ os: Бельги
+ pa: ਬੈਲਜੀਅਮ
+ pi: बेल्जियम
+ pl: Belgia
+ ps: بلجیم
+ pt: Bélgica
+ qu: Bilhika
+ rm: Belgia
+ rn: Ububirigi
+ ro: Belgia
+ ru: Бельгия
+ rw: Ububiligi
+ sa: बेल्जियम
+ sc: Bèlgiu
+ sd: بيلجيم
+ se: Belgia
+ sg: Bêleze
+ sh: Belgija
+ si: බෙල්ජියම්
+ sk: Belgicko
+ sl: Bélgija
+ sm: Peleseuma
+ sn: Belgium
+ so: Beljim
+ sq: Belgjika
+ sr: Белгија
+ ss: iBhelijiyamu
+ su: Bélgia
+ sv: Belgien
+ sw: Ubelgiji
+ ta: பெல்ஜியம்
+ te: బెల్జియం
+ tg: Белгия
+ th: เบลเยียม
+ ti: ቤልጄም
+ tk: Belgiýa
+ tl: Belhika
+ to: Pelesiume
+ tr: Belçika
+ ts: Belgium
+ tt: Бе́льгия
+ tw: Belgium
+ ug: بېلگىيە
+ uk: Бе́льгія
+ ur: بلجئیم
+ uz: Belgiya
+ vi: Bỉ
+ vo: Belgän
+ wa: Beldjike
+ wo: Belsik
+ yi: בעלגיע
+ yo: Bẹ́ljíọ̀m
+ zh: 比利時
+ zu: i-Belgium
--- /dev/null
+name:
+ default: Burkina Faso
+ af: Burkina Faso
+ ak: Burkina Faso
+ am: ቡርኪና ፋሶ
+ an: Burkina Faso
+ ar: بوركينا فاسو
+ az: Burkina-Faso
+ ba: Буркина́-Фасо́
+ be: Буркіна́-Фасо́
+ bg: Буркина Фасо
+ bh: बुर्किना फासो
+ bm: Burukina Faso
+ bn: বুর্কিনা ফাসো
+ bo: བུར་ཀི་ན་ཕ་སོ།
+ br: Burkina Faso
+ bs: Burkina Faso
+ ca: Burkina Faso
+ ce: Буркина-Фасо
+ cs: Burkina Faso
+ cv: Буркина Фасо
+ cy: Bwrcina Ffaso
+ da: Burkina Faso
+ de: Burkina Faso
+ dv: ބުރުކީނާ ފާސޯ
+ dz: བྷར་ཀི་ན་ ཕེ་སོ
+ ee: Burkina Faso
+ el: Μπουρκίνα Φάσο
+ en: Burkina Faso
+ eo: Burkina Faso
+ es: Burkina Faso
+ et: Burkina Faso
+ eu: Burkina Faso
+ fa: بورکینافاسو
+ ff: Burkina Faso
+ fi: Burkina Faso
+ fo: Burkina Faso
+ fr: Burkina Faso
+ fy: Boerkina Faso
+ ga: Buircíne Fasó
+ gd: Buirciona Faso
+ gl: Burquina Faso
+ gu: બુર્કિના ફાસો
+ gv: Burkina Faso
+ ha: Burkina faso
+ he: בורקינה פאסו
+ hi: बुर्किना फासो
+ hr: Burkina Faso
+ ht: Boukinafaso
+ hu: Burkina Faso
+ hy: Բուրկինա Ֆասո
+ ia: Burkina Faso
+ id: Burkina Faso
+ ie: Burkina Faso
+ ig: Burkina Faso
+ io: Burkina Faso
+ is: Búrkína Fasó
+ it: Burkina Faso
+ ja: ブルキナファソ
+ jv: Burkina Faso
+ ka: ბურკინა-ფასო
+ kg: Burkina Faso
+ ki: Burkina Faso
+ kk: Буркина Фасо
+ km: ប៊ូរគីណាហ្វាសូ
+ kn: ಬುರ್ಕೀನ ಫಾಸೊ
+ ko: 부르키나파소
+ ks: بُرکِنا فیسو
+ ku: Burkîna Faso
+ kw: Burkina Faso
+ ky: Буркина-Фасо
+ la: Burkina Faso
+ lb: Burkina Faso
+ lg: Burkina Faso
+ li: Burkina Faso
+ ln: Burkina Faso
+ lo: ເບີກິນາຟາໂຊ
+ lt: Burkina Fasas
+ lv: Burkinafaso
+ mg: Borkina Faso
+ mk: Буркина Фасо
+ ml: ബർക്കിനാ ഫാസോ
+ mn: Буркина Фасо
+ mr: बर्किना फासो
+ ms: Burkina Faso
+ mt: Burkina Faso
+ my: ဘာကီးနားဖားဆိုနိုင်ငံ
+ na: Burkinabato
+ ne: बुर्किना फासो
+ nl: Burkina Faso
+ nn: Burkina Faso
+ "no": Burkina Faso
+ oc: Burkina Faso
+ om: Burkinaa Faasoo
+ or: ବୁରକିନା ଫାସୋ
+ os: Буркина́-Фасо́
+ pa: ਬੁਰਕੀਨਾ ਫ਼ਾਸੋ
+ pi: बुर्कीना-फासो
+ pl: Burkina Faso
+ ps: بورکینا فاسو
+ pt: Burquina Faso
+ qu: Burkina Phasu
+ rm: Burkina Faso
+ rn: Burukina Faso
+ ro: Burkina Faso
+ ru: Буркина-Фасо
+ rw: Burukina Faso
+ sa: बुर्कीना-फासो
+ sc: Burkina Faso
+ se: Burkina Faso
+ sg: Burkina Faso
+ sh: Burkina Faso
+ si: බර්කිනා ෆාසෝ
+ sk: Burkina Faso
+ sl: Burkina Faso
+ sm: Burkina Faso
+ sn: Burkina Faso
+ so: Burkina Faso
+ sq: Burkina Faso
+ sr: Буркина Фасо
+ ss: iBhukhina-Faso
+ st: Burkina Faso
+ su: Burkina Faso
+ sv: Burkina Faso
+ sw: Burkina Faso
+ ta: புர்க்கினா பாசோ
+ te: బర్కీనా ఫాసో
+ tg: Буркина Фасо
+ th: บูร์กินาฟาโซ
+ ti: ቡርኪና ፋሶ
+ tk: Burkina-Faso
+ tl: Burkina Faso
+ to: Pekano Faso
+ tr: Burkina Faso
+ ts: Burkina Faso
+ tt: Буркина́ Фасо́
+ ug: بۇركىنا فاسو
+ uk: Буркіна́-Фасо́
+ ur: برکینا فاسو
+ uz: Burkina Faso
+ vi: Buốc-ki-na Pha-xô
+ vo: Burkinän
+ wo: Burkinaa Faaso
+ yi: בורקינע פֿאַסא
+ yo: Bùrkínà Fasò
+ zh: 布基纳法索
+ zu: iBukhina Faso
--- /dev/null
+name:
+ default: Бългaрия
+ ab: Болга́риа
+ af: Bulgarye
+ ak: Bulgaria
+ am: ቡልጋሪያ
+ an: Bulgaria
+ ar: بلغاريا
+ av: Болга́рия
+ ay: Bulkariya
+ az: Bolqarıstan
+ ba: Болга́рия
+ be: Балга́рыя
+ bg: България
+ bh: बुल्गारिया
+ bi: Bulgaria
+ bn: বুলগেরিয়া
+ bo: པུ་ར་ག་རི་ཡ།
+ br: Bulgaria
+ bs: Bugarska
+ ca: Bulgària
+ ce: Болга́ри
+ ch: Bulgaria
+ co: Bulgaria
+ cs: Bulharsko
+ cu: Блъгарїꙗ
+ cv: Пăлхарĕ
+ cy: Bwlgaria
+ da: Bulgarien
+ de: Bulgarien
+ dv: ބަލްގޭރިއާ
+ ee: Bulgaria
+ el: Βουλγαρία
+ en: Bulgaria
+ eo: Bulgario
+ es: Bulgaria
+ et: Bulgaaria
+ eu: Bulgaria
+ fa: بلغارستان
+ ff: Bulgariya
+ fi: Bulgaria
+ fo: Bulgaria
+ fr: Bulgarie
+ fy: Bulgarije
+ ga: an Bhulgáir
+ gd: Bulgàiria
+ gl: Bulgaria
+ gn: Vugaria
+ gu: બલ્ગેરિયા
+ gv: yn Vulgeyr
+ ha: Bulgairiya
+ he: בּוּלְגַרְיָה
+ hi: बुल्गारिया
+ hr: Bugarska
+ ht: Bilgari
+ hu: Bulgária
+ hy: Բուլղարիա
+ ia: Bulgaria
+ id: Bulgaria
+ ie: Bulgaria
+ ig: Bulgaria
+ io: Bulgaria
+ is: Búlgaría
+ it: Bulgaria
+ ja: ブルガリア
+ jv: Bulgaria
+ ka: ბულგარეთი
+ kg: Balgaria
+ kk: Болгария
+ kl: Bulgaria
+ kn: ಬಲ್ಗೇರಿಯ
+ ko: 불가리아
+ ku: Bulgaristan
+ kv: Болгария
+ kw: Bulgari
+ ky: Болгария
+ la: Bulgaria
+ lb: Bulgarien
+ li: Bölgarije
+ ln: Bulgaria
+ lo: ປະເທດບູນກາລີ
+ lt: Bulgarija
+ lv: Bulgārija
+ mg: Biolgaria
+ mi: Purukāria
+ mk: Бугарија
+ ml: ബൾഗേറിയ
+ mn: Болгар
+ mr: बल्गेरिया
+ ms: Bulgaria
+ mt: Bulgarija
+ my: ဘူလ်ဂေးရီးယားနိုင်ငံ
+ na: Borgeriya
+ ne: बुल्गेरिया
+ nl: Bulgarije
+ nn: Bulgaria
+ "no": Bulgaria
+ nv: Bálgaa Bikéyah
+ oc: Bulgaria
+ om: Bulgeeriyaa
+ or: ବୁଲଗାରିଆ
+ os: Болгари
+ pa: ਬੁਲਗਾਰੀਆ
+ pi: बुल्गारिया
+ pl: Bułgaria
+ ps: بلغاریا
+ pt: Bulgária
+ qu: Bulgarya
+ rm: Bulgaria
+ rn: Bulgaria
+ ro: Bulgaria
+ ru: Болгария
+ rw: Bulugariya
+ sa: बुल्गारिया
+ sc: Bulgaria
+ sd: بلغاريه
+ se: Bulgária
+ sg: Bulugarïi
+ sh: Bugarska
+ si: බල්ගේරියාව
+ sk: Bulharsko
+ sl: Bolgarija
+ sm: Bultalia
+ sn: Bulgaria
+ so: Bulgaria
+ sq: Bullgaria
+ sr: Бугарска
+ ss: iBhulgariya
+ su: Bulgaria
+ sv: Bulgarien
+ sw: Bulgaria
+ ta: பல்கேரியா
+ te: బల్గేరియా
+ tg: Булғористон
+ th: บัลแกเรีย
+ tk: Bolgariýa
+ tl: Bulgarya
+ tr: Bulgaristan
+ ts: Bulgaria
+ tt: Болгария
+ tw: Bulgaria
+ ug: بۇلغارىيە
+ uk: Болга́рія
+ ur: بلغاریہ
+ uz: Bolgariya
+ vi: Bulgaria
+ vo: Bulgarän
+ wa: Bulgåreye
+ wo: Bulgaari
+ yi: בולגאַריע
+ yo: Bùlgáríà
+ zh: 保加利亚
+ zu: IBulgariya
--- /dev/null
+name:
+ default: البحرين
+ af: Bahrein
+ ak: Baren
+ am: ባሕሬን
+ an: Bahrein
+ ar: البحرين
+ as: বাহৰেইন
+ az: Bəhreyn
+ ba: Бахре́йн
+ be: Бахрэ́йн
+ bg: Бахрейн
+ bh: बहरीन
+ bm: Bareyini
+ bn: বাহরাইন
+ bo: བྷཧ་རཡིན།
+ br: Bahrein
+ bs: Bahrein
+ ca: Bahrain
+ ce: Бахьрайн
+ cs: Bahrajn
+ cv: Бахрейн
+ cy: Bahrein
+ da: Bahrain
+ de: Bahrain
+ dv: ބަޙްރައިން
+ dz: བཧ་རེན་
+ ee: Bahrain nutome
+ el: Μπαχρέιν
+ en: Bahrain
+ eo: Barejno
+ es: Baréin
+ et: Bahrein
+ eu: Bahrain
+ fa: بحرین
+ ff: Bahreyn
+ fi: Bahrain
+ fo: Barein
+ fr: Bahreïn
+ fy: Bachrein
+ ga: Bairéin
+ gd: Bachrain
+ gl: Bahrein
+ gn: Varéĩ
+ gu: બહેરીન
+ gv: Bahrain
+ ha: Baharain
+ he: בחריין
+ hi: बहरीन
+ hr: Bahrein
+ ht: Barayn
+ hu: Bahrein
+ hy: Բահրեյն
+ ia: Bahrain
+ id: Bahrain
+ ie: Bahrain
+ io: Bahrain
+ is: Barein
+ it: Bahrein
+ ja: バーレーン
+ jv: Bahrain
+ ka: ბაჰრეინი
+ kg: Bahrain
+ ki: Bahrain
+ kk: Бахрейн
+ kl: Bahrain
+ km: បារ៉ែន
+ kn: ಬಹರೇನ್
+ ko: 바레인
+ ks: بحریٖن
+ ku: Behreyn
+ kv: Бахрейн
+ kw: Bahreyn
+ ky: Бахре́йн
+ la: Baharina
+ lb: Bahrain
+ lg: Baareeni
+ li: Bahrein
+ ln: Bahrein
+ lo: ບາເລນ
+ lt: Bahreinas
+ lv: Bahreina
+ mg: Baharainy
+ mk: Бахреин
+ ml: ബഹ്റൈൻ
+ mn: Бахрейн
+ mr: बहरैन
+ ms: Bahrain
+ mt: Baħrejn
+ my: ဘာရိန်းနိုင်ငံ
+ na: Bahrain
+ ne: बहराइन
+ nl: Bahrein
+ nn: Bahrain
+ "no": Bahrain
+ oc: Bahrayn
+ om: Baahireen
+ or: ବାହାରିନ୍
+ os: Бахрейн
+ pa: ਬਹਿਰੀਨ
+ pi: बहरैन
+ pl: Bahrajn
+ ps: بحرین
+ pt: Bahrein
+ qu: Bahrayn
+ rm: Bahrain
+ rn: Bahareyini
+ ro: Bahrain
+ ru: Бахрейн
+ rw: Bahirayini
+ sa: बहरैन
+ sd: بحرين
+ se: Bahrain
+ sg: Bahrâina
+ sh: Bahrein
+ si: බහරේන්
+ sk: Bahrajn
+ sl: Bahrájn
+ sm: Bahrain
+ sn: Bahrain
+ so: Baxrayn
+ sq: Bahraini
+ sr: Бахреин
+ ss: iBhaharayi
+ su: Bahrain
+ sv: Bahrain
+ sw: Bahrain
+ ta: பகுரைன்
+ te: బహ్రయిన్
+ tg: Баҳрайн
+ th: บาห์เรน
+ ti: ባህሬን
+ tk: Bahreýn
+ tl: Bahrain
+ to: Paleini
+ tr: Bahreyn
+ tt: Бәхрәйн
+ ug: بەھرېيىن
+ uk: Бахре́йн
+ ur: بحرین
+ uz: Baxreyn
+ vi: Bahrain
+ vo: Bahruäns
+ wo: Bahrayni
+ yi: באכריין
+ yo: Báháráìnì
+ zh: 巴林
+ zu: i-Bahrain
--- /dev/null
+name:
+ default: Burundi
+ af: Burundi
+ am: ቡሩንዲ
+ an: Burundi
+ ar: بوروندي
+ az: Burundi
+ ba: Буру́нди
+ be: Буру́ндзі
+ bg: Бурунди
+ bh: बुरुंडी
+ bm: Burundi
+ bn: বুরুন্ডি
+ bo: བུ་རུན་ཌི།
+ br: Burundi
+ bs: Burundi
+ ca: Burundi
+ ce: Бурунди
+ cs: Burundi
+ cv: Бурунди
+ cy: Bwrwndi
+ da: Burundi
+ de: Burundi
+ dv: ބުރުންޑީ
+ dz: བྷུ་རུན་ཌི
+ ee: Burundi
+ el: Μπουρούντι
+ en: Burundi
+ eo: Burundo
+ es: Burundí
+ et: Burundi
+ eu: Burundi
+ fa: بوروندی
+ ff: Burunndi
+ fi: Burundi
+ fo: Burundi
+ fr: Burundi
+ fy: Boerûndy
+ ga: an Bhurúin
+ gd: Burundaidh
+ gl: Burundi
+ gn: Vurundi
+ gu: બુરુંડી
+ gv: Burundee
+ ha: Burundi
+ he: בורונדי
+ hi: बुरुण्डी
+ hr: Burundi
+ ht: Bouroundi
+ hu: Burundi
+ hy: Բուրունդի
+ ia: Burundi
+ id: Burundi
+ ie: Burundi
+ ig: Burundi
+ io: Burundi
+ is: Búrúndí
+ it: Burundi
+ ja: ブルンジ
+ jv: Burundi
+ ka: ბურუნდი
+ kg: Burundi
+ ki: Burundi
+ kk: Бурунди
+ km: ប៊ូរុនឌី
+ kn: ಬುರುಂಡಿ
+ ko: 부룬디
+ ks: بورَنڈِ
+ ku: Burundî
+ kw: Burundi
+ ky: Бурунди
+ la: Burundia
+ lb: Burundi
+ lg: Burundi
+ li: Boeroendi
+ ln: Burundi
+ lo: ບູລັນດີ
+ lt: Burundis
+ lv: Burundi
+ mg: Borondy
+ mk: Бурунди
+ ml: ബറുണ്ടി
+ mn: Бурунди
+ mr: बुरुंडी
+ ms: Burundi
+ mt: Burundi
+ my: ဘူရွန်ဒီနိုင်ငံ
+ na: Burundi
+ ne: बुरूण्डी
+ nl: Burundi
+ nn: Burundi
+ "no": Burundi
+ oc: Burundi
+ om: Buruundii
+ or: ବୁରୁଣ୍ଡି
+ os: Буру́нди
+ pa: ਬੁਰੂੰਡੀ
+ pi: बुरुंडी
+ pl: Burundi
+ ps: برونډي
+ pt: Burundi
+ qu: Burundi
+ rm: Burundi
+ rn: Uburundi
+ ro: Burundi
+ ru: Бурунди
+ rw: Uburundi
+ sa: बुरुंडी
+ sc: Burundi
+ se: Burundi
+ sg: Burundïi
+ sh: Burundi
+ si: බුරුන්ඩි
+ sk: Burundi
+ sl: Burundi
+ sn: Burundi
+ so: Burundi
+ sq: Burundi
+ sr: Бурунди
+ ss: iBurundi
+ st: Burundi
+ su: Burundi
+ sv: Burundi
+ sw: Burundi
+ ta: புருண்டி
+ te: బురుండి
+ tg: Бурунди
+ th: บุรุนดี
+ ti: ብሩንዲ
+ tk: Burundi
+ tl: Burundi
+ to: Pelaniti
+ tr: Burundi
+ ts: Burundi
+ tt: Буру́нди
+ ug: بۇرۇندى
+ uk: Буру́нді
+ ur: برونڈی
+ uz: Burundi
+ vi: Burundi
+ vo: Rundiyän
+ wa: Bouroundi
+ wo: Buruundi
+ yi: בורונדי
+ yo: Bùrúndì
+ zh: 布隆迪
+ zu: iBurundi
--- /dev/null
+name:
+ default: Bénin
+ af: Benin
+ ak: Bɛnin
+ am: ቤኒን
+ an: Benín
+ ar: بنين
+ az: Benin
+ ba: Бенин
+ be: Бені́н
+ bg: Бенин
+ bh: बेनिन
+ bm: Benɛn
+ bn: বেনিন
+ bo: བེ་ནིན།
+ br: Benin
+ bs: Benin
+ ca: Benín
+ ce: Бени́н
+ cs: Benin
+ cv: Бенин
+ cy: Benin
+ da: Benin
+ de: Benin
+ dv: ބެނީން
+ dz: བཱེ་ནིན།
+ ee: Benɛ̃
+ el: Μπενίν
+ en: Benin
+ eo: Benino
+ es: Benín
+ et: Benin
+ eu: Benin
+ fa: بنین
+ ff: Benen
+ fi: Benin
+ fo: Benin
+ fr: Bénin
+ fy: Benyn
+ ga: Beinin
+ gd: Beinin
+ gl: Benin
+ gn: Mbenĩ
+ gu: બેનિન
+ gv: Benin
+ ha: Benin
+ he: בנין
+ hi: बेनिन
+ hr: Benin
+ ht: Benen
+ hu: Benin
+ hy: Բենին
+ ia: Benin
+ id: Benin
+ ie: Benin
+ ig: Benin
+ io: Benin
+ is: Benín
+ it: Benin
+ ja: ベナン
+ jv: Bénin
+ ka: ბენინი
+ kg: Benin
+ ki: Benin
+ kk: Бени́н
+ kl: Benin
+ km: បេណាំង
+ kn: ಬೆನಿನ್
+ ko: 베냉
+ ks: بِنِن
+ ku: Bênîn
+ kw: Benin
+ ky: Бени́н
+ la: Beninum
+ lb: Benin
+ lg: Benin
+ li: Benin
+ ln: Benin
+ lo: ເບນິນ
+ lt: Beninas
+ lv: Benina
+ mg: Benina
+ mi: Pēnina
+ mk: Бенин
+ ml: ബെനിൻ
+ mn: Бенин
+ mr: बेनिन
+ ms: Benin
+ mt: Benin
+ my: ဘီနင်နိုင်ငံ
+ na: Benin
+ ne: बेनिन
+ nl: Benin
+ nn: Benin
+ "no": Benin
+ oc: Benin
+ om: Beeniin
+ or: ବେନିନ
+ os: Бенин
+ pa: ਬੇਨਿਨ
+ pi: बेनिन
+ pl: Benin
+ ps: بېنين
+ pt: Benim
+ qu: Binin
+ rm: Benin
+ rn: Bene
+ ro: Benin
+ ru: Бенин
+ rw: Bene
+ sa: बेनिन्
+ sc: Benin
+ sd: بينن
+ se: Benin
+ sg: Benëen
+ sh: Benin
+ si: බෙනින්
+ sk: Benin
+ sl: Benin
+ sn: Benin
+ so: Benin
+ sq: Benini
+ sr: Бенин
+ ss: iBhenini
+ st: Benin
+ su: Bénin
+ sv: Benin
+ sw: Benin
+ ta: பெனின்
+ te: బెనిన్
+ tg: Бенѝн
+ th: เบนิน
+ ti: ቤኒን
+ tk: Benin
+ tl: Benin
+ to: Penini
+ tr: Benin
+ ts: Benin
+ tt: Бени́н
+ ug: بېنىن
+ uk: Бені́н
+ ur: بینن
+ uz: Benin
+ vi: Bénin
+ vo: Beninän
+ wo: Bene
+ yi: בענין
+ yo: Benin
+ zh: 贝宁
+ zu: IBenini
--- /dev/null
+name:
+ default: Saint Barthélemy
--- /dev/null
+name:
+ default: Bermuda
+ ar: برمودا
+ be: Бярмуды
+ br: Bermudez
+ ca: Bermudes
+ cs: Bermudy
+ da: Bermuda
+ de: Bermuda
+ el: Βερμούδες
+ en: Bermuda
+ eo: Bermudoj
+ fa: برمودا
+ fi: Bermuda
+ fr: Bermudes
+ ga: Beirmiúda
+ gl: Bermudas
+ he: ברמודה
+ hr: Bermudski Otoci
+ hu: Bermuda
+ id: Bermuda
+ is: Bermúda
+ it: Bermuda
+ lt: Bermuda
+ lv: Bermudu salas
+ mk: Бермуда
+ mn: Бермудын Арал
+ oc: Bermudas
+ pl: Bermudy
+ pt: Bermudas
+ ru: Бермудские острова
+ sl: Bermudi
+ sr: Бермуди
+ sv: Bermuda
+ th: เบอร์มิวดา
+ tr: Bermuda
+ uk: Бермудські острови
+ uz: Bermud orollari
+ zh: 百慕大
--- /dev/null
+name:
+ default: Brunei
+ af: Broenei
+ ak: Brunae
+ am: ብሩናይ
+ an: Brunei
+ ar: بروناي
+ as: ব্ৰুণেই
+ az: Bruney
+ ba: Бруней
+ be: Бруне́й
+ bg: Бруней
+ bh: ब्रूनेई
+ bm: Burinɛyi
+ bn: ব্রুনাই
+ bo: བྷི་རུ་ནི།
+ br: Brunei
+ bs: Brunej
+ ca: Brunei
+ ce: Бруней
+ cs: Brunej
+ cv: Бруней
+ cy: Brwnei
+ da: Brunei
+ de: Brunei
+ dv: ބުރުނައީ
+ dz: བྷྲུ་ནའི
+ el: Μπρουνέι
+ en: Brunei
+ eo: Brunejo
+ es: Brunéi
+ et: Brunei
+ eu: Brunei
+ fa: برونئی
+ ff: Burnaay
+ fi: Brunei
+ fo: Brunei
+ fr: Brunei
+ fy: Brûnei
+ ga: Brúiné
+ gd: Brùnaigh
+ gl: Brunei
+ gn: Mburunéi
+ gu: બ્રુનેઈ
+ gv: Brunei
+ ha: Brunei
+ he: ברוניי
+ hi: ब्रुनेई
+ hr: Brunej
+ ht: Brouney
+ hu: Brunei
+ hy: Բրունեյ
+ ia: Brunei
+ id: Brunei
+ ie: Brunei
+ ik: Brunei
+ io: Brunei
+ is: Brúnei
+ it: Brunei
+ ja: ブルネイ
+ jv: Brunéi
+ ka: ბრუნეი
+ kg: Brunei
+ ki: Brunei
+ kk: Бруней
+ kl: Brunei
+ km: ប្រទេសប៊្រុយណេ
+ kn: ಬ್ರುನೈ
+ ko: 브루나이
+ ks: بُرنٔے
+ ku: Brûney
+ kv: Бруней
+ kw: Bruney
+ ky: Бруней
+ la: Bruneium
+ lb: Brunei
+ li: Brunei
+ ln: Brunei
+ lo: ບູໄນ
+ lt: Brunėjus
+ lv: Bruneja
+ mg: Boroney
+ mi: Poronai
+ mk: Брунеј
+ ml: ബ്രൂണൈ
+ mn: Бруней
+ mr: ब्रुनेई
+ ms: Brunei
+ mt: Brunej
+ my: ဘရူနိုင်းနိုင်ငံ
+ na: Brunei
+ ne: ब्रुनेई
+ nl: Brunei
+ nn: Brunei
+ "no": Brunei
+ ny: Brunei
+ oc: Brunei
+ om: Birunaay
+ or: ବ୍ରୁନେଇ
+ os: Бруней
+ pa: ਬਰੂਨਾਈ
+ pi: ब्रूनै
+ pl: Brunei
+ ps: برونای
+ pt: Brunei
+ qu: Bruniy
+ rm: Brunei
+ ro: Brunei
+ ru: Бруней
+ rw: Buruneyi
+ sa: ब्रूनै
+ sd: برونئي
+ se: Brunei
+ sg: Brunêi
+ sh: Brunej
+ si: බෲනායි
+ sk: Brunej
+ sl: Brunej
+ sn: Brunei
+ so: Barunay
+ sq: Brunei
+ sr: Брунеј
+ ss: iBhruneyi
+ su: Brunéi
+ sv: Brunei
+ sw: Brunei
+ ta: புரூணை
+ te: బ్రూనై
+ tg: Бруней
+ th: บรูไน
+ ti: ብሩኒ
+ tk: Bruneý
+ tl: Brunei
+ to: Pulunei
+ tr: Brunei
+ tt: Бруне́й
+ ug: برۇنېي
+ uk: Бруне́й
+ ur: برونائی
+ uz: Bruney
+ vi: Brunei
+ vo: Brunän
+ yi: ברוניי
+ yo: Brunei
+ za: Vwnzlaiz
+ zh: 文莱
+ zu: i-Brunei
--- /dev/null
+name:
+ default: Bolivia
+ ab: Боли́виа
+ af: Bolivië
+ am: ቦሊቪያ
+ an: Bolivia
+ ar: بوليفيا
+ ay: Wuliwya
+ az: Boliviya
+ ba: Боливия
+ be: Балі́вія
+ bg: Боливия
+ bh: बोलीविया
+ bi: Bolivia
+ bm: Bolivia
+ bn: বলিভিয়া
+ bo: བྷོ་ལི་ཝི་ཡ།
+ br: Bolivia
+ bs: Bolivija
+ ca: Bolívia
+ ce: Боливи
+ co: Bolivia
+ cs: Bolívie
+ cv: Боливи
+ cy: Bolifia
+ da: Bolivia
+ de: Bolivien
+ dv: ބޮލީވިއާ
+ dz: བོ་ལི་ཝིཡ
+ ee: Bolivia
+ el: Βολιβία
+ en: Bolivia
+ eo: Bolivio
+ es: Bolivia
+ et: Boliivia
+ eu: Bolivia
+ fa: بولیوی
+ ff: Boliwii
+ fi: Bolivia
+ fo: Bolivia
+ fr: Bolivie
+ fy: Bolivia
+ ga: an Bholaiv
+ gd: Boilibhia
+ gl: Bolivia
+ gn: Volívia
+ gu: બોલીવિયા
+ gv: yn Volivia
+ ha: Bolibiya
+ he: בוליביה
+ hi: बोलिविया
+ hr: Bolivija
+ ht: Bolivi
+ hu: Bolívia
+ hy: Բոլիվիան
+ ia: Bolivia
+ id: Bolivia
+ ie: Bolivia
+ ig: Bolivia
+ io: Bolivia
+ is: Bólivía
+ it: Bolivia
+ ja: ボリビア
+ jv: Bolivia
+ ka: ბოლივია
+ kg: Bolivia
+ ki: Bolivia
+ kk: Боли́вия
+ kl: Bolivia
+ km: បូលីវី
+ kn: ಬೊಲಿವಿಯ
+ ko: 볼리비아
+ ks: بولِوِیا
+ ku: Bolîvya
+ kw: Bolivi
+ ky: Боливия
+ la: Bolivia
+ lb: Bolivien
+ lg: Boliviya
+ li: Bolivia
+ ln: Bolivia
+ lo: ໂບລີວີ
+ lt: Bolivija
+ lv: Bolīvija
+ mg: Bolivia
+ mi: Poriwia
+ mk: Боливија
+ ml: ബൊളീവിയ
+ mn: Боливи
+ mr: बोलिव्हिया
+ ms: Bolivia
+ mt: Bolivja
+ my: ဘိုလီးဗီးယားနိုင်ငံ
+ na: Boribiya
+ ne: बोलिभिया
+ nl: Bolivia
+ nn: Bolivia
+ "no": Bolivia
+ nv: Bolíbiya
+ oc: Bolívia
+ om: Boliiviyaa
+ or: ବୋଲିଭିଆ
+ os: Боливи
+ pa: ਬੋਲੀਵੀਆ
+ pi: बोलिविया
+ pl: Boliwia
+ ps: بولېویا
+ pt: Bolívia
+ qu: Wuliwiya
+ rm: Bolivia
+ rn: Boliviya
+ ro: Bolivia
+ ru: Боливия
+ rw: Boliviya
+ sa: बोलिविया
+ sc: Bolìvia
+ se: Bolivia
+ sg: Bolivïi
+ sh: Bolivija
+ si: බොලීවියාව
+ sk: Bolívia
+ sl: Bolivija
+ sm: Polevia
+ sn: Bolivia
+ so: Boliifia
+ sq: Bolivia
+ sr: Боливија
+ ss: IBholiviya
+ su: Bolivia
+ sv: Bolivia
+ sw: Bolivia
+ ta: பொலிவியா
+ te: బొలీవియా
+ tg: Боливия
+ th: โบลิเวีย
+ ti: ቦሊቪያ
+ tk: Boliwiýa
+ tl: Bolivia
+ to: Polīvia
+ tr: Bolivya
+ tt: Боли́вия
+ ug: بولىۋىيە
+ uk: Болі́вія
+ ur: بولیویا
+ uz: Boliviya
+ vi: Bolivia
+ vo: Bolivän
+ wa: Boliveye
+ wo: Boliibi
+ yi: באליוויע
+ yo: Bòlífíà
+ za: Bolivia
+ zh: 玻利维亚
+ zu: i-Bolivia
--- /dev/null
+name:
+ default: "\N"
--- /dev/null
+name:
+ default: Brasil
+ af: Brasilië
+ ak: Brazil
+ am: ብራዚል
+ an: Brasil
+ ar: البَرَازِيل
+ as: ব্ৰাজিল
+ ay: Wrasil
+ az: Braziliya
+ ba: Брази́лия
+ be: Бразі́лія
+ bg: Бразилия
+ bh: ब्राज़ील
+ bi: Brazil
+ bm: Brazil
+ bn: ব্রাজিল
+ bo: པུ་རུ་ཟིལ།
+ br: Brazil
+ bs: Brazil
+ ca: Brasil
+ ce: Брази́ли
+ ch: Brazil
+ co: Brasile
+ cs: Brazílie
+ cu: Браꙁїлі́ꙗ
+ cv: Бразили
+ cy: Brasil
+ da: Brasilien
+ de: Brasilien
+ dv: ބުރެޒިލް
+ dz: བཱརཱ་ཛིལ་
+ ee: Brazil
+ el: Βραζιλία
+ en: Brazil
+ eo: Brazilo
+ es: Brasil
+ et: Brasiilia
+ eu: Brasil
+ fa: برزیل
+ ff: Barazil
+ fi: Brasilia
+ fj: Brazil
+ fo: Brasilia
+ fr: Brésil
+ fy: Brazylje
+ ga: an Bhrasaíl
+ gd: Braisil
+ gl: Brasil
+ gn: Pindoráma
+ gu: બ્રાઝિલ
+ gv: yn Vrasseel
+ ha: Brazil
+ he: ברזיל
+ hi: ब्रास़ील
+ hr: Brazil
+ ht: Brezil
+ hu: Brazília
+ hy: Բրազիլիա
+ ia: Brasil
+ id: Brasil
+ ie: Brasil
+ ig: Brazil
+ io: Brazilia
+ is: Brasilía
+ it: Brasile
+ ja: ブラジル
+ jv: Brasil
+ ka: ბრაზილია
+ kg: Brazilia
+ ki: Brazil
+ kk: Бразилия
+ kl: Brazil
+ km: ប្រេស៊ីល
+ kn: ಬ್ರೆಜಿಲ್
+ ko: 브라질
+ ks: برٛازِل
+ ku: Brazîl
+ kv: Бразилия
+ kw: Brasil
+ ky: Бразилия
+ la: Brasilia
+ lb: Brasilien
+ lg: Buraziiri
+ li: Braziel
+ ln: Brazil
+ lo: ບະເຣຊິນ
+ lt: Brazilija
+ lv: Brazīlija
+ mg: Brazila
+ mi: Parīhi
+ mk: Бразил
+ ml: ബ്രസീൽ
+ mn: Бразил
+ mr: ब्राझील
+ ms: Brazil
+ mt: Brażil
+ my: ဘရာဇီးနိုင်ငံ
+ na: Bradir
+ ne: ब्राजिल
+ nl: Brazilië
+ nn: Brasil
+ "no": Brasil
+ nv: Bwazííl
+ oc: Brasil
+ om: Biraazil
+ or: ବ୍ରାଜିଲ
+ os: Бразили
+ pa: ਬ੍ਰਾਜ਼ੀਲ
+ pi: ब्रासील
+ pl: Brazylia
+ ps: برازیل
+ pt: Brasil
+ qu: Prasil
+ rm: Brasilia
+ rn: Brazil
+ ro: Brazilia
+ ru: Бразилия
+ rw: Burezile
+ sa: ब्रासील
+ sc: Brasile
+ sd: برازيل
+ se: Brasilia
+ sh: Brazil
+ si: බ්රසීලය
+ sk: Brazília
+ sl: Brazilija
+ sm: Pasila
+ sn: Brazil
+ so: Barasiil
+ sq: Brazili
+ sr: Бразил
+ st: Brazil
+ su: Brasil
+ sv: Brasilien
+ sw: Brazil
+ ta: பிரேசில்
+ te: బ్రెజిల్
+ tg: Бразилия
+ th: บราซิล
+ ti: ብራዚል
+ tk: Braziliýa
+ tl: Brasil
+ to: Palāsili
+ tr: Brezilya
+ tt: Брази́лия
+ tw: Brazil
+ ty: Parīihi
+ ug: برازىلىيە
+ uk: Брази́лія
+ ur: برازیل
+ uz: Braziliya
+ ve: Brazil
+ vi: Brasil
+ vo: Brasilän
+ wa: Braezi
+ wo: Breesil
+ xh: Brasil
+ yi: בראַזיל
+ yo: Brasil
+ za: Bahsih
+ zh: 巴西
+ zu: IBrazili
--- /dev/null
+name:
+ default: The Bahamas
+ af: Bahamas
+ ak: Bahama
+ am: ባሃማስ
+ an: Bahamas
+ ar: جزر باهاماس
+ ay: Bahamas
+ az: Bahamalar
+ ba: Багама утрауҙары
+ be: Бага́мскія Астравы́
+ bg: Бахамските острови
+ bm: Bahamasi
+ bn: বাহামা দ্বীপপুঞ্জ
+ bo: བ་ཧ་མཱ་སི།
+ br: Bahamas
+ bs: Bahami
+ ca: Bahames
+ ce: Багама
+ cs: Bahamy
+ cv: Пахамсем
+ cy: Y Bahamas
+ da: Bahamas
+ de: Die Bahamas
+ dv: ބަހާމަސް
+ dz: བཱ་ཧ་མས྄།
+ ee: Bahamas
+ el: Μπαχάμες
+ en: The Bahamas
+ eo: La Bahamoj
+ es: Las Bahamas
+ et: Bahama
+ eu: Bahamak
+ fa: باهاما
+ ff: Bahamaas
+ fi: Bahama
+ fo: Bahamaoyggjar
+ fr: Les Bahamas
+ fy: De Bahama's
+ ga: na Bahámaí
+ gd: na Bahàmas
+ gl: Bahamas
+ gn: Vaamakuéra
+ gu: બહામાસ
+ gv: ny Bahamaghyn
+ he: איי בהאמה
+ hi: बहामस
+ hr: Bahami
+ ht: Il Bahamas
+ hu: Bahama-szigetek
+ hy: Բահամները
+ ia: Bahamas
+ id: Bahama
+ io: Bahama
+ is: Bahamaeyjar
+ it: Le Bahamas
+ ja: バハマ
+ jv: Bahama
+ ka: ბაჰამის კუნძულები
+ ki: Bahama
+ kk: Багам аралдары
+ km: បាហាម៉ា
+ kn: ಬಹಾಮಾಸ್
+ ko: 바하마
+ ks: بَہامَس
+ ku: Bahama
+ kw: Ynysow Bahama
+ ky: Багама аралдары
+ la: Bahamanae
+ lb: D'Bahamas
+ lg: Bahamasi
+ li: De Bahama's
+ ln: Bahamasɛ
+ lo: ບາຮາມມາສ
+ lt: Bahamos
+ lv: Bahamas
+ mg: Bahamasy
+ mk: Бахами
+ ml: ബഹാമാസ്
+ mn: Багамын Арлууд
+ mr: बहामास
+ ms: Bahamas
+ mt: Il-Baħamas
+ my: ဘဟားမားနိုင်ငံ
+ na: Bahamat
+ ne: बहामस
+ nl: Bahama's
+ nn: Bahamas
+ "no": Bahamas
+ oc: Las Bahamas
+ om: Bahamaas
+ or: ବାହାମା
+ os: Багамтæ
+ pa: ਬਹਾਮਾਸ
+ pi: बहामास
+ pl: Bahamy
+ pt: Bahamas
+ qu: Bahamakuna
+ rm: Bahamas
+ rn: Bahamasi
+ ro: Bahamas
+ ru: Багамские Острова
+ rw: Bahamasi
+ sa: बहामास
+ se: Bahamasullot
+ sg: Bahâmasa
+ sh: Bahami
+ si: බහාමාස්
+ sk: Bahamy
+ sl: Bahami
+ sn: The Bahamas
+ so: Bahamas
+ sq: Bahamet
+ sr: Бахаме
+ ss: iBhahamasi
+ su: Bahama
+ sv: Bahamas
+ sw: Bahamas
+ ta: பாகாமாசு
+ te: బహామాస్
+ tg: Баҳамас
+ th: ประเทศบาฮามาส
+ ti: ባሃማስ
+ tk: Bagama Adalary
+ tl: Bahamas
+ to: Pahama
+ tr: Bahamalar
+ tt: Багамалар
+ ug: باھاما
+ uk: Багамські Острови
+ ur: بہاماس
+ uz: Bagam orollari
+ vi: Bahamas
+ vo: Bahamuäns
+ wo: Bahamas
+ yi: די באַהאַמאַס
+ yo: Àwọn Bàhámà
+ za: Bahamas
+ zh: 巴哈马
+ zu: i-Bahamas
--- /dev/null
+name:
+ default: འབྲུག་ཡུལ་
+ ab: Бутан
+ af: Bhoetan
+ ak: Butan
+ am: ቡታን
+ an: Bután
+ ar: بوتان
+ as: ভূটান
+ az: Butan
+ ba: Бута́н
+ be: Бута́н
+ bg: Бутан
+ bh: भूटान
+ bi: Bhutan
+ bn: ভুটান
+ bo: འབྲུག་ཡུལ།
+ br: Bhoutan
+ bs: Butan
+ ca: Bhutan
+ ce: Бутан
+ cs: Bhútán
+ cv: Бутан
+ cy: Bhwtan
+ da: Bhutan
+ de: Bhutan
+ dv: ބޫޓާން
+ dz: འབྲུགཡུལ་
+ el: Μπουτάν
+ en: Bhutan
+ eo: Butano
+ es: Bután
+ et: Bhutan
+ eu: Bhutan
+ fa: بوتان
+ ff: Butaan
+ fi: Bhutan
+ fo: Butan
+ fr: Bhoutan
+ fy: Bûtan
+ ga: an Bhútáin
+ gd: Butàn
+ gl: Bután
+ gn: Vutã
+ gu: ભૂતાન
+ gv: yn Vutaan
+ ha: Bhutan
+ he: בהוטן
+ hi: भूटान
+ hr: Butan
+ ht: Boutan
+ hu: Bhután
+ hy: Բութան
+ ia: Bhutan
+ id: Bhutan
+ ie: Bhutan
+ io: Bhutan
+ is: Bútan
+ it: Bhutan
+ ja: ブータン
+ jv: Bhutan
+ ka: ბჰუტანი
+ kg: Bhutan
+ ki: Bhutan
+ kk: Бутан
+ kl: Bhutan
+ km: ប៊ូតាន
+ kn: ಭೂತಾನ್
+ ko: 부탄
+ ks: بوٗٹان
+ ku: Bûtan
+ kv: Бутан
+ kw: Bhoutan
+ ky: Бутан
+ la: Butania
+ lb: Bhutan
+ lg: Butaani
+ li: Bhutan
+ ln: Butáni
+ lo: ບູຕານ
+ lt: Butanas
+ lv: Butāna
+ mg: Botàna
+ mi: Putāna
+ mk: Бутан
+ ml: ഭൂട്ടാൻ
+ mn: Бутан
+ mr: भूतान
+ ms: Bhutan
+ mt: Butan
+ my: ဘူတန်နိုင်ငံ
+ na: Butan
+ ne: भूटान
+ nl: Bhutan
+ nn: Bhutan
+ "no": Bhutan
+ nv: Bikéyah
+ oc: Botan
+ om: Buutan
+ or: ଭୁଟାନ
+ os: Бутан
+ pa: ਭੂਟਾਨ
+ pi: भूटान
+ pl: Bhutan
+ ps: بوتان
+ pt: Butão
+ qu: Butan
+ rm: Bhutan
+ rn: Butani
+ ro: Bhutan
+ ru: Бутан
+ rw: Butani
+ sa: भूटान
+ se: Bhutan
+ sg: Butäan
+ sh: Butan
+ si: භූතානය
+ sk: Bhután
+ sl: Butan
+ sn: Bhutan
+ so: Butaan
+ sq: Butani
+ sr: Бутан
+ ss: iBhuthani
+ su: Butan
+ sv: Bhutan
+ sw: Bhutan
+ ta: பூட்டான்
+ te: భూటాన్
+ tg: Бутан
+ th: ประเทศภูฏาน
+ ti: ቡህታን
+ tk: Butan
+ tl: Butan
+ to: Pūtani
+ tr: Bhutan
+ tt: Бутан
+ tw: Butan
+ ug: بۇتان
+ uk: Бута́н
+ ur: بھوٹان
+ uz: Butan
+ vi: Bhutan
+ vo: Butän
+ wo: Butaan
+ yi: בהוטאן
+ yo: Bhùtán
+ za: Budanh
+ zh: 不丹
+ zu: i-Bhutan
--- /dev/null
+name:
+ default: Bouvet Island
--- /dev/null
+name:
+ default: Botswana
+ af: Botswana
+ ak: Bɔtswana
+ am: ቦትስዋና
+ an: Botswana
+ ar: بوتسوانا
+ az: Botsvana
+ ba: Ботсвана
+ be: Батсва́на
+ bg: Ботсвана
+ bh: बोत्सवाना
+ bm: Botswana
+ bn: বতসোয়ানা
+ bo: བྷོ་ཙི་ཝ་ན།
+ br: Botswana
+ bs: Bocvana
+ ca: Botswana
+ ce: Ботсвана
+ cs: Botswana
+ cv: Ботсвана
+ cy: Botswana
+ da: Botswana
+ de: Botsuana
+ dv: ބޮޓުސްވާނާ
+ dz: བྷོཙ་ཝ་ན
+ ee: Botswana
+ el: Μποτσουάνα
+ en: Botswana
+ eo: Bocvano
+ es: Botsuana
+ et: Botswana
+ eu: Botswana
+ fa: بوتسوانا
+ ff: Botswana
+ fi: Botswana
+ fo: Botsvana
+ fr: Botswana
+ fy: Botswana
+ ga: an Bhotsuáin
+ gd: Botsuana
+ gl: Botswana
+ gn: Votusuana
+ gu: બોત્સ્વાના
+ gv: yn Votswaan
+ ha: Botswana
+ he: בּוֹטְסְוָאנָה
+ hi: बोत्सवाना
+ hr: Bocvana
+ ht: Botswana
+ hu: Botswana
+ hy: Բոտսվանա
+ ia: Botswana
+ id: Botswana
+ ie: Botswana
+ ig: Botswana
+ io: Botswana
+ is: Botsvana
+ it: Botswana
+ ja: ボツワナ
+ jv: Botswana
+ ka: ბოტსვანა
+ kg: Botswana
+ ki: Botswana
+ kk: Ботсвана
+ km: បុតស្វាណា
+ kn: ಬೋಟ್ಸ್ವಾನ
+ ko: 보츠와나
+ ks: بوتَسوانا
+ ku: Botswana
+ kw: Botswana
+ ky: Ботсвана
+ la: Botsuana
+ lb: Botswana
+ lg: Botswana
+ li: Botswana
+ ln: Botswana
+ lo: ບອດສະວານາ
+ lt: Botsvana
+ lv: Botsvana
+ mg: Bôtsoàna
+ mi: Poriwana
+ mk: Боцвана
+ ml: ബോട്സ്വാന
+ mn: Ботсвана
+ mr: बोत्स्वाना
+ ms: Botswana
+ mt: Botswana
+ my: ဘော့ဆွာနာ သမ္မတနိုင်ငံ
+ na: Botwana
+ ne: बोत्स्वाना
+ nl: Botswana
+ nn: Botswana
+ "no": Botswana
+ nv: Tswana Dineʼé Bikéyah
+ oc: Botswana
+ om: Bootiswaanaa
+ or: ବୋସଚୱାନା
+ os: Ботсванæ
+ pa: ਬੋਤਸਵਾਨਾ
+ pi: बोत्सवाना
+ pl: Botswana
+ ps: بوتسوانا
+ pt: Botsuana
+ qu: Butswana
+ rm: Botswana
+ ro: Botswana
+ ru: Ботсвана
+ rw: Botswana
+ sa: बोत्सवाना
+ sc: Botzuana
+ se: Botswana
+ sg: Botswana
+ sh: Bocvana
+ si: බොට්ස්වානා
+ sk: Botswana
+ sl: Bocvána
+ sn: Botswana
+ so: Botswana
+ sq: Bocvana
+ sr: Боцвана
+ ss: ÉButjwána
+ st: Botswana
+ su: Botswana
+ sv: Botswana
+ sw: Botswana
+ ta: போட்சுவானா
+ te: బోత్సువానా
+ tg: Ботсвана
+ th: บอตสวานา
+ ti: ቦትስዋና
+ tk: Botswana
+ tl: Botswana
+ tn: Botswana
+ to: Potisiuana
+ tr: Botsvana
+ ts: Botswana
+ tt: Ботсва́на
+ ug: بوتسۋانا
+ uk: Ботсва́на
+ ur: بوٹسوانا
+ uz: Botsvana
+ ve: Vhu-Tswana
+ vi: Bốt-xoa-na
+ vo: Zvanän
+ wa: Boswana
+ wo: Botswana
+ yi: באצוואַנע
+ yo: Bòtswánà
+ zh: 波札那
+ zu: i-Botswana
--- /dev/null
+name:
+ default: Беларусь
+ af: Wit-Rusland
+ am: ቤላሩስ
+ an: Belarrusia
+ ar: روسيا البيضاء
+ az: Belarus
+ be: Беларусь
+ bg: Беларус
+ bi: Belarus
+ bn: বেলারুশ
+ bo: བྷེ་ལ་རསུ།
+ br: Belarus
+ bs: Bjelorusija
+ ca: Bielorússia
+ ce: Белорусси
+ co: Bielorussia
+ cs: Bělorusko
+ cu: Бѣла Роусь
+ cv: Беларуç
+ cy: Belarws
+ da: Hviderusland
+ de: Belarus
+ dv: ބެލަރޫސް
+ dz: བེ་ལ་རུ་སུ།
+ ee: Belarus
+ el: Λευκορωσία
+ en: Belarus
+ eo: Belorusio
+ es: Bielorrusia
+ et: Valgevene
+ eu: Bielorrusia
+ fa: بلاروس
+ ff: Belaruusiya
+ fi: Valko-Venäjä
+ fo: Hvítarussland
+ fr: Biélorussie
+ fy: Wyt-Ruslân
+ ga: An Bhealarúis
+ gd: A' Bhealaruis
+ gl: Bielorrusia
+ gn: Vielorrusia
+ gu: બેલારુસ
+ gv: Yn Velaroosh
+ he: בלארוס
+ hi: बेलारूस
+ hr: Bjelorusija
+ ht: Byelorisi
+ hu: Fehéroroszország
+ hy: Բելառուս
+ ia: Bielorussia
+ id: Belarus
+ ie: Bielorussia
+ io: Bielorusia
+ is: Hvíta-Rússland
+ it: Bielorussia
+ ja: ベラルーシ
+ jv: Bélarus
+ ka: ბელარუსი
+ kg: Belarusia
+ kk: Беларусь
+ kl: Hvideruslandi
+ kn: ಬೆಲಾರುಸ್
+ ko: 벨라루스
+ ku: Belarûs
+ kv: Беларусь
+ kw: Belarussi
+ ky: Беларусия
+ la: Ruthenia Alba
+ lb: Wäissrussland
+ li: Wit-Rusland
+ ln: Bielorusia
+ lt: Baltarusija
+ lv: Baltkrievija
+ mi: Pērara
+ mk: Белорусија
+ ml: ബെലാറുസ്
+ mn: Беларусь
+ mr: बेलारूस
+ ms: Belarus
+ mt: Belarus
+ my: ဘီလာရုဇ်နိုင်ငံ
+ na: Berarut
+ ne: बेलारुस
+ nl: Wit-Rusland
+ nn: Kviterussland
+ "no": Hviterussland
+ oc: Bielorussia
+ or: ବେଲାଋଷ
+ os: Белорусси
+ pl: Białoruś
+ ps: بېلاروس
+ pt: Bielorrússia
+ qu: Bilarus
+ rm: Bielorussia
+ ro: Belarus
+ ru: Беларусь
+ rw: Belarusi
+ sa: बेलारूस
+ se: Vilges-Ruošša
+ sh: Belorusija
+ si: බෙලාරස්
+ sk: Bielorusko
+ sl: Belorusija
+ so: Belarus
+ sq: Bjellorusia
+ sr: Белорусија
+ ss: IBhelalasi
+ su: Bélarus
+ sv: Belarus
+ sw: Belarus
+ ta: பெலருஸ்
+ te: బెలారస్
+ tg: Беларус
+ th: ประเทศเบลารุส
+ tk: Belorussiýa
+ tl: Biyelorusya
+ tr: Beyaz Rusya
+ ts: Belarus
+ tt: Беларусия
+ ty: Belarus
+ ug: بېلورۇسسىيە
+ uk: Білорусь
+ ur: بیلاروس
+ uz: Belarus
+ vi: Belarus
+ vo: Belarusän
+ wo: Belaarus
+ yi: בעלארוס
+ yo: Bẹ̀lárùs
+ zh: 白罗斯/白羅斯
+ zu: IBelarusi
--- /dev/null
+name:
+ default: Belize
+ af: Belize
+ ak: Beliz
+ am: ቤሊዝ
+ an: Belize
+ ar: بليز
+ ay: Wilisi
+ az: Beliz
+ ba: Белиз
+ be: Белі́з
+ bg: Белиз
+ bm: Belizi
+ bn: বেলিজ
+ bo: བེ་ལི་ཛི།
+ br: Belize
+ bs: Beliz
+ ca: Belize
+ ce: Бели́з
+ cs: Belize
+ cv: Белиз
+ cy: Belîs
+ da: Belize
+ de: Belize
+ dv: ބެލީޒު
+ dz: བེ་ལིཛ།
+ ee: Belize
+ el: Μπελίζ
+ en: Belize
+ eo: Belizo
+ es: Belice
+ et: Belize
+ eu: Belize
+ fa: بلیز
+ ff: Beliise
+ fi: Belize
+ fo: Belis
+ fr: Belize
+ fy: Belize
+ ga: an Bheilís
+ gd: Beilise
+ gl: Belice
+ gn: Mbelise
+ gu: બેલીઝ
+ gv: yn Veleesh
+ ha: Beliz
+ he: בליז
+ hi: बेलीज़
+ hr: Belize
+ ht: Beliz
+ hu: Belize
+ hy: Բելիզ
+ ia: Belize
+ id: Belize
+ ie: Belize
+ io: Belize
+ is: Belís
+ it: Belize
+ ja: ベリーズ
+ jv: Belize
+ ka: ბელიზი
+ kk: Бели́з
+ km: បេលីហ្ស
+ kn: ಬೆಲೀಜ್
+ ko: 벨리즈
+ ks: بیلِج
+ ku: Belîze
+ kw: Belisa
+ ky: Белиз
+ la: Beliza
+ lb: Belize
+ li: Belize
+ ln: Belize
+ lo: ເບຊີວ
+ lt: Belizas
+ lv: Beliza
+ mg: Belizy
+ mk: Белизе
+ ml: ബെലീസ്
+ mn: Белиз
+ mr: बेलिझ
+ ms: Belize
+ mt: Beliże
+ my: ဘလိဇ်
+ na: Berij
+ ne: बेलिज
+ nl: Belize
+ nn: Belize
+ "no": Belize
+ oc: Belize
+ om: Beliiz
+ or: ବେଲିଜ
+ os: Белиз
+ pa: ਬੇਲੀਜ਼
+ pi: बेलीज
+ pl: Belize
+ ps: بېلیز
+ pt: Belize
+ qu: Bilisi
+ rm: Belize
+ ro: Belize
+ ru: Белиз
+ rw: Belize
+ sa: बेलीज
+ sc: Belize
+ se: Belize
+ sg: Belîzi
+ sh: Belize
+ si: බෙලීස්
+ sk: Belize
+ sl: Belize
+ sm: Pelisi
+ sn: Belize
+ so: Belise
+ sq: Beliza
+ sr: Белизе
+ ss: iBhelizi
+ su: Bélis
+ sv: Belize
+ sw: Belize
+ ta: பெலீசு
+ te: బెలిజ్
+ tg: Белѝз
+ th: เบลีซ
+ ti: ቤሊዘ
+ tl: Belise
+ to: Pelise
+ tr: Belize
+ tt: Бели́з
+ ug: بېلىز
+ uk: Белі́з
+ ur: بیلیز
+ uz: Beliz
+ vi: Belize
+ vo: Belisän
+ wo: Beliis
+ yi: בעליז
+ yo: Bẹ̀lísè
+ za: Belize
+ zh: 伯利兹
+ zu: Belize
--- /dev/null
+name:
+ default: Canada
+ ab: Канада
+ af: Kanada
+ am: ካናዳ
+ an: Canadá
+ ar: كندا
+ as: কানাডা
+ av: Канада
+ ay: Kanada
+ az: Kanada
+ ba: Канада
+ be: Канада
+ bg: Канада
+ bi: Kanada
+ bm: Kanada
+ bn: কানাডা
+ bo: ཁ་ན་ཌ།
+ br: Kanada
+ bs: Kanada
+ ca: Canadà
+ ce: Канада
+ co: Canadà
+ cs: Kanada
+ cu: Канада
+ cv: Канада
+ cy: Canada
+ da: Canada
+ de: Kanada
+ dv: ކެނެޑާ
+ dz: ཀེ་ན་ཌ་
+ ee: Canada
+ el: Καναδάς
+ en: Canada
+ eo: Kanado
+ es: Canadá
+ et: Kanada
+ eu: Kanada
+ fa: کانادا
+ fi: Kanada
+ fo: Kanada
+ fr: Canada
+ fy: Kanada
+ ga: Ceanada
+ gd: Canada
+ gl: Canadá
+ gn: Kanatã
+ gu: કેનેડા
+ gv: Yn Chanadey
+ ha: Kanada
+ he: קנדה
+ hi: कनाडा
+ hr: Kanada
+ ht: Kanada
+ hu: Kanada
+ hy: Կանադա
+ ia: Canada
+ id: Kanada
+ ie: Canada
+ ig: Kánada
+ ik: Kanada
+ io: Kanada
+ is: Kanada
+ it: Canada
+ iu: ᑲᓇᑕ
+ ja: カナダ
+ jv: Kanada
+ ka: კანადა
+ ki: Canada
+ kk: Канада
+ kl: Canada
+ km: កាណាដា
+ kn: ಕೆನಡಾ
+ ko: 캐나다
+ ku: Kanada
+ kv: Канада
+ kw: Kanada
+ ky: Канада
+ la: Canada
+ lb: Kanada
+ li: Canada
+ ln: Kanadá
+ lt: Kanada
+ lv: Kanāda
+ mg: Kanada
+ mi: Kānata
+ mk: Канада
+ ml: കാനഡ
+ mn: Канад
+ mr: कॅनडा
+ ms: Kanada
+ mt: Kanada
+ my: ကနေဒါနိုင်ငံ
+ na: Kanada
+ ne: क्यानाडा
+ nl: Canada
+ nn: Canada
+ "no": Canada
+ nv: Deeteel Bikéyah
+ oc: Canadà
+ om: Canada
+ or: କାନାଡ଼ା
+ os: Канадæ
+ pa: ਕੈਨੇਡਾ
+ pl: Kanada
+ ps: کاناډا
+ pt: Canadá
+ qu: Kanada
+ rm: Canada
+ rn: Kanada
+ ro: Canada
+ ru: Канада
+ rw: Kanada
+ sa: केनडा
+ sc: Canada
+ se: Kanáda
+ sg: Kanadäa
+ sh: Kanada
+ sk: Kanada
+ sl: Kanada
+ sn: Canada
+ so: Kanada
+ sq: Kanadaja
+ sr: Канада
+ ss: IKhanada
+ su: Kanada
+ sv: Kanada
+ sw: Kanada
+ ta: கனடா
+ te: కెనడా
+ tg: Канада
+ th: ประเทศแคนาดา
+ tk: Kanada
+ tl: Kanada
+ tr: Kanada
+ ts: Canada
+ tt: Канада
+ tw: Kanada
+ ty: Tanata
+ ug: كانادا
+ uk: Канада
+ ur: کینیڈا
+ uz: Kanada
+ vi: Canada
+ vo: Kanadän
+ wa: Canada
+ wo: Kanadaa
+ yi: קאנאדע
+ yo: Kánádà
+ zh: 加拿大
+ zu: IKhanada
--- /dev/null
+name:
+ default: Cocos (Keeling) Islands
+ af: Cocos (Keeling) Eilande
+ ar: جزر كوكوس (كيلينغ)
+ be: Какосавыя (Кілінг) астравы
+ br: Inizi Kokoz
+ ca: Illes Cocos
+ da: Cocosøerne
+ de: Kokosinseln
+ el: Νησιά Κόκος
+ en: Cocos (Keeling) Islands
+ eo: Kokosinsuloj
+ es: Islas Cocos (Keeling)
+ et: Kookossaared
+ eu: Cocos (Keeling) uharteak
+ fa: جزایر کوکوس
+ fi: Kookossaaret
+ fr: Îles Cocos
+ fy: de Kokoseilannen
+ he: איי קוקוס (קילינג)
+ hr: Kokosovi otoci
+ hu: Kókusz (Keeling)-szigetek
+ id: Kepulauan Cocos (Keeling)
+ is: Kókoseyjar
+ it: Isole Cocos e Keeling
+ lt: Kokoso (Keelingo) salos
+ lv: Kokosu (Kīlinga) salas
+ mn: Кокосын (Кийлингийн) Арлууд
+ nl: Cocoseilanden
+ pl: Wyspy Kokosowe
+ ru: Кокосовые острова
+ sl: Kokosovi otoki
+ sv: Kokosöarna
+ tr: Cocos (Keeling) Adaları
+ uk: Кокосові острови
+ vi: Quần đảo Cocos (Keeling)
+ zh: 科科斯(基林)群島
--- /dev/null
+name:
+ default: République démocratique du Congo
+ af: Demokratiese Republiek van die Kongo
+ am: ኮንጎ ዲሞክራሲያዊ ሪፐብሊክ
+ an: Republica Democratica d'o Congo
+ ar: جمهورية الكونغو الديمقراطية
+ az: Konqo Demokratik Respublikası
+ be: Дэмакратычная Рэспубліка Конга
+ bg: Демократична република Конго
+ bm: Kongo ka Bɛjɛfanga Fasojamana
+ bn: গণতান্ত্রিক কঙ্গো প্রজাতন্ত্র
+ bo: ཀོང་གོ་མི་དམངས་དམངས་གཙོ།
+ br: Republik Demokratel Kongo
+ bs: Demokratska Republika Kongo
+ ca: República Democràtica del Congo
+ ce: Халкъа куьйгаллийца йолу Пачхьалкх Конго
+ cs: Demokratická republika Kongo
+ cv: Конго Демократиллĕ Республики
+ cy: Gweriniaeth Ddemocrataidd Congo
+ da: Demokratiske Republik Congo
+ de: Demokratische Republik Kongo
+ dv: ކޮންގޯ (ދިމިޤްރާޠީ ޖުމްހޫރިއްޔާ)
+ el: Λαϊκή Δημοκρατία του Κονγκό
+ en: Democratic Republic of the Congo
+ eo: Demokratia Respubliko Kongo
+ es: República Democrática del Congo
+ et: Kongo Demokraatlik Vabariik
+ eu: Kongoko Errepublika Demokratikoa
+ fa: جمهوری دموکراتیک کنگو
+ fi: Kongon demokraattinen tasavalta
+ fo: Fólkaræðiliga Lýðveldið Kongo
+ fr: République démocratique du Congo
+ fy: Demokratyske Republyk Kongo
+ ga: Poblacht Dhaonlathach an Chongó
+ gd: Poblachd Dheamocrach na Congo
+ gl: República Democrática do Congo
+ gn: Tetã Jekopytyjoja Kongo
+ gv: Pobblaght Gheynlagh ny Congo
+ ha: Jamhuriyar dimokuradiyya Kwango
+ he: הרפובליקה הדמוקרטית של קונגו
+ hi: कांगो लोकतान्त्रिक गणराज्य
+ hr: Demokratska Republika Kongo
+ hu: Kongói Demokratikus Köztársaság
+ hy: Կոնգոյի Դեմոկրատական Հանրապետություն
+ ia: Republica Democratic del Congo
+ id: Republik Demokratik Kongo
+ ie: Democratic Republic de Congo
+ io: Demokratial Republiko Kongo
+ is: Lýðræðislega Lýðveldið Kongó
+ it: Repubblica Democratica del Congo
+ ja: コンゴ民主共和国
+ jv: Republik Dhémokratis Kongo
+ ka: კონგოს დემოკრატიული რესპუბლიკა
+ kg: Repubilika ya Kongo ya Dimokalasi
+ kk: Конго Демократиялық Республикасы
+ kn: ಕಾಂಗೋ ಪ್ರಜಾಸತ್ತಾತ್ಮಕ ಗಣರಾಜ್ಯ
+ ko: 콩고 민주 공화국
+ ku: Kongoya Demokratîk
+ kw: Repoblek Werinel Kongo
+ la: Respublica Democratica Congensis
+ lb: Demokratesch Republik Kongo
+ li: Democratische Rippebliek vaan de Kongo
+ ln: Republiki ya Kongó Demokratiki
+ lt: Kongo Demokratinė Respublika
+ lv: Kongo Demokrātiskā Republika
+ mg: Repoblika Demokratikan'i Kongo
+ mi: Te Whenua o Kōngo
+ mk: Демократска Република Конго
+ ml: ഡെമോക്രാറ്റിക് റിപബ്ലിക്ക് ഓഫ് കോംഗോ
+ mn: Бүгд Найрамдах Ардчилсан Конго Улс
+ mr: काँगोचे लोकशाही प्रजासत्ताक
+ ms: Republik Demokratik Congo
+ my: ကွန်ဂိုဒီမိုကရက်တစ်သမ္မတနိုင်ငံ
+ na: Ripubrikit Engame Kongo
+ ne: प्रजातान्त्रिक गणतन्त्र कंगो
+ nl: Democratische Republiek Congo
+ nn: Den demokratiske republikken Kongo
+ "no": Den demokratiske republikken Kongo
+ nv: Kéyah Káango Shádiʼááhjí Siʼánígíí
+ oc: Republica Democratica de Còngo
+ or: କଙ୍ଗୋ
+ os: Конгойы Демократон Республикæ
+ pa: ਕਾਂਗੋ ਲੋਕਤੰਤਰੀ ਗਣਰਾਜ
+ pl: Demokratyczna Republika Konga
+ pt: República Democrática do Congo
+ qu: Kungu Runakamaq Republika
+ ro: Republica Democrată Congo
+ ru: Демократическая Республика Конго
+ rw: Repubulika Iharanira Demokarasi ya Kongo
+ sc: Repùbrica Democràtiga de su Congo
+ se: Kongo demokráhtalaš dásseváldi
+ sg: Kùodùorùosêse tî Ngunuhalëzo tî Kongö
+ sh: Demokratska Republika Kongo
+ si: කොංගෝ ප්රජාතන්ත්රවාදී ජනරජය
+ sk: Kongo (býv. Zair)
+ sl: Demokratična republika Kongo
+ sn: Democratic Republic of the Congo
+ so: Jamhuuriyada Dimuqaraadiga Kongo
+ sq: Republika Demokratike e Kongos
+ sr: Демократска Република Конго
+ ss: IKhongo
+ su: Républik Démokratik Kongo
+ sv: Demokratiska Republiken Kongo
+ sw: Jamhuri ya Kidemokrasia ya Kongo
+ ta: காங்கோ மக்களாட்சிக் குடியரசு
+ th: สาธารณรัฐประชาธิปไตยคองโก
+ tk: Kongo Demokratik Respublikasy
+ tl: Demokratikong Republika ng Konggo
+ tr: Demokratik Kongo Cumhuriyeti
+ ts: Democratic Republic of the Congo
+ tt: Конго Демократик Җөмһүрияте
+ ug: كونگو دېموكراتىك جۇمھۇرىيىتى
+ uk: Демократична Республіка Конго
+ ur: جمہوری جمہوریہ کانگو
+ uz: Kongo DR
+ vi: Cộng hòa Dân chủ Congo
+ vo: Kongoän (Repüblikän Demokratik)
+ wa: Republike democratike do Congo
+ wo: Republik Demokaraatik bu Kongóo
+ yi: דעמאקראטישע רעפובליק פון קאנגא
+ yo: Orílẹ̀-èdè Olómìnira Olóṣèlú ilẹ̀ Kóngò
+ za: Ganggoj Minzcuj Gunghozgoz
+ zh: 刚果民主共和国
+ zu: IRiphabliki Labantu weKongo
--- /dev/null
+name:
+ default: Ködörösêse tî Bêafrîka - République Centrafricaine
+ af: Sentraal-Afrikaanse Republiek
+ am: የመካከለኛው አፍሪካ ሪፐብሊክ
+ an: Republica Centroafricana
+ ar: جمهورية أفريقيا الوسطى
+ az: Mərkəzi Afrika Respublikası
+ be: Цэнтральна-Афрыканская Рэспубліка
+ bg: Централноафриканска република
+ bm: Cema Afrika Fasojamana
+ bn: মধ্য আফ্রিকান প্রজাতন্ত্র
+ bo: དབུས་ཨ་ཧྥེ་རི་ཁན་རི་པཔ་ལིཀ།
+ br: Republik Kreizafrikan
+ bs: Centralnoafrička Republika
+ ca: República Centreafricana
+ ce: Юккъерчу Африкин Республика
+ cs: Středoafrická republika
+ cy: Gweriniaeth Canolbarth Affrica
+ da: Centralafrikanske Republik
+ de: Zentralafrikanische Republik
+ dv: މެދުތެރޭ އެފްރިކާގެ ޖުމްހޫރިއްޔާ
+ ee: Central African Republic
+ el: Κεντροαφρικανική Δημοκρατία
+ en: Central African Republic
+ eo: Centr-Afriko
+ es: República Centroafricana
+ et: Kesk-Aafrika Vabariik
+ eu: Afrika Erdiko Errepublika
+ fa: جمهوری آفریقای مرکزی
+ fi: Keski-Afrikan tasavalta
+ fo: Miðafrikalýðveldið
+ fr: République Centrafricaine
+ fy: Sintraal-Afrikaanske Republyk
+ ga: Poblacht na hAfraice Láir
+ gd: Poblachd Meadhan Afraga
+ gl: República Centroafricana
+ gv: Pobblaght yn Affrick Veanagh
+ he: הרפובליקה המרכז-אפריקאית
+ hi: मध्य अफ़्रीकी गणराज्य
+ hr: Srednjoafrička Republika
+ ht: Repiblik santafrik
+ hu: Közép-afrikai Köztársaság
+ hy: Կենտրոնաաֆրիկյան Հանրապետություն
+ ia: Republica Centroafrican
+ id: Republik Afrika Tengah
+ ie: Central African Republic
+ io: Centrafrika
+ is: Mið-Afríkulýðveldið
+ it: Repubblica Centrafricana
+ ja: 中央アフリカ共和国
+ jv: Republik Afrika Tengah
+ ka: ცენტრალური აფრიკის რესპუბლიკა
+ kg: Repubilika ya Afelika ya Kati
+ kk: Орталық Африка Республикасы
+ kn: ಮಧ್ಯ ಆಫ್ರಿಕಾದ ಗಣರಾಜ್ಯ
+ ko: 중앙아프리카 공화국
+ ks: مرکٔزی اَفریٖکی جموٗریَت
+ ku: Komara Afrîkaya Navend
+ kw: Centrafrika
+ la: Respublica Africae Mediae
+ lb: Zentralafrikanesch Republik
+ li: Centraal Afrika
+ ln: Santrafríka
+ lt: Centrinės Afrikos Respublika
+ lv: Centrālāfrikas Republika
+ mi: Te Puku o Āwherika
+ mk: Централноафриканска Република
+ ml: മദ്ധ്യ ആഫ്രിക്കൻ റിപ്പബ്ലിക്ക്
+ mn: Төв Африкийн Бүгд Найрамдах Улс
+ mr: मध्य आफ्रिकेचे प्रजासत्ताक
+ ms: Republik Afrika Tengah
+ mt: Repubblika Ċentru-Afrikana
+ my: ဗဟိုအာဖရိကသမ္မတနိုင်ငံ
+ na: Ripubrikin Aprika Yugaga
+ ne: मध्य अफ्रिकी गणतन्त्र
+ nl: Centraal-Afrikaanse Republiek
+ nn: Den sentralafrikanske republikken
+ "no": Den sentralafrikanske republikk
+ nv: Naakaii Łizhinii Bikéyah Beʼałnííʼ
+ oc: Centreafrica
+ or: ସେଣ୍ଟରାଲ ଆଫ୍ରିକାନ ରିପବ୍ଲିକ
+ os: Централон Африкæйы Республикæ
+ pa: ਮੱਧ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜ
+ pl: Republika Środkowoafrykańska
+ ps: د منځنی افريقا ولسمشريزه
+ pt: República da África Central
+ qu: Chawpi Aphrika Republika
+ ro: Republica Centrafricană
+ ru: Центральноафриканская Республика
+ rw: Repubulika ya Santara Afurika
+ sa: केन्द्रीय अफ्रीका गणराज्यम्
+ sc: Tzentràfrica
+ se: Gaska-Afrihká dásseváldi
+ sg: Ködörösêse tî Bêafrîka
+ sh: Srednjoafrička Republika
+ sk: Stredoafrická republika
+ sl: Srednjeafriška republika
+ sn: Central African Republic
+ so: Jamhuuriyadda Bartamaha Afrika
+ sq: Republika e Afrikës Qendrore
+ sr: Централноафричка Република
+ ss: Umkhatsi we-Afrikha
+ su: Républik Afrika Tengah
+ sv: Centralafrikanska republiken
+ sw: Jamhuri ya Afrika ya Kati
+ ta: மத்திய ஆப்பிரிக்கக் குடியரசு
+ te: సెంట్రల్ ఆఫ్రికన్ రిపబ్లిక్
+ tg: Ҷумҳурии Африқои Марказӣ
+ th: สาธารณรัฐแอฟริกากลาง
+ tk: Merkezi Afrika Respublikasy
+ tl: Republika ng Gitnang Aprika
+ tr: Orta Afrika Cumhuriyeti
+ ts: Afrika Wale Xikarhi
+ tt: Үзәк Африка Җөмһүрияте
+ ug: ئوتتۇرا ئافرىقا جۇمھۇرىيىتى
+ uk: Центральноафриканська Республіка
+ ur: وسطی افریقی جمہوریہ
+ uz: Markaziy Afrika Respublikasi
+ vi: Cộng hòa Trung Phi
+ vo: Zänoda-Frikop
+ wo: Réewum Diggu Afrig
+ yo: Orílẹ̀-èdè Olómìnira Àrin Áfríkà
+ zh: 中非共和國
+ zu: Central African Republic
--- /dev/null
+name:
+ default: Congo
+ af: Republiek van die Kongo
+ am: ኮንጎ ሪፐብሊክ
+ an: Republica d'o Congo
+ ar: جمهورية الكونغو
+ az: Konqo Respublikası
+ ba: Республика Конго
+ be: Рэспубліка Конга
+ bg: Република Конго
+ bm: Kongo-Brazaville
+ bn: কঙ্গো প্রজাতন্ত্র
+ bo: ཀོང་གོ་སྤྱི་མཐུན་རྒྱལ་ཁབ།
+ br: Republik Kongo
+ bs: Republika Kongo
+ ca: República del Congo
+ ce: Республика Конго
+ cs: Republika Kongo
+ cv: Конго Республики
+ cy: Gweriniaeth y Congo
+ da: Republikken Congo
+ de: Republik Kongo
+ dv: ކޮންގޯ (ޖުމްހޫރިއްޔާ)
+ el: Δημοκρατία του Κονγκό
+ en: Congo-Brazzaville
+ eo: Respubliko Kongo
+ es: República del Congo
+ et: Kongo Vabariik
+ eu: Kongoko Errepublika
+ fa: جمهوری کنگو
+ fi: Kongon tasavalta
+ fr: Congo-Brazzaville
+ fy: Republyk Kongo
+ ga: Poblacht an Chongó
+ gd: A' Chongo
+ gl: Congo
+ gv: Pobblaght ny Congo
+ he: הרפובליקה של קונגו
+ hi: कांगो गणराज्य
+ hr: Republika Kongo
+ ht: Kongo (Brazavil)
+ hu: Kongói Köztársaság
+ hy: Կոնգոյի Հանրապետություն
+ ia: Republica del Congo
+ id: Republik Kongo
+ ie: Republic de Congo
+ io: Republiko Kongo
+ is: Vestur-Kongó
+ it: Repubblica del Congo
+ ja: コンゴ共和国
+ jv: Republik Kongo
+ ka: კონგოს რესპუბლიკა
+ kg: Repubilika ya Kôngo
+ kk: Конго Республикасы
+ ko: 콩고 공화국
+ ku: Komara Kongoyê
+ kw: Repoblek Kongo
+ la: Respublica Congensis
+ lb: Republik Kongo
+ li: Kongo-Brazzaville
+ ln: Kongó-Brazzaville
+ lt: Kongo Respublika
+ lv: Kongo Republika
+ mk: Република Конго
+ ml: റിപ്പബ്ലിക്ക് ഓഫ് കോംഗോ
+ mn: Бүгд Найрамдах Конго Улс
+ mr: काँगोचे प्रजासत्ताक
+ ms: Republik Congo
+ my: ကွန်ဂိုသမ္မတနိုင်ငံ
+ na: Ripubrikin Kongo
+ ne: कङ्गो
+ nl: Congo-Brazzaville
+ nn: Kongo-Brazzaville
+ "no": Republikken Kongo
+ nv: Kéyah Káango Náhookǫsjí Siʼánígíí
+ oc: Republica de Còngo
+ os: Конгойы Республикæ
+ pa: ਕਾਂਗੋ ਗਣਰਾਜ
+ pl: Kongo
+ ps: د کانګو جمهوريت
+ pt: República do Congo
+ qu: Kungu Republika
+ ro: Republica Congo
+ ru: Республика Конго
+ rw: Kongo
+ sc: Repùbrica de su Congo
+ se: Kongo dásseváldi
+ sg: Ködörösêse tî Kongöo
+ sh: Republika Kongo
+ si: කොංගෝ ජනරජය
+ sk: Kongo (Brazzaville)
+ sl: Republika Kongo
+ sn: Republic of the Congo
+ so: Jamhuuriyadda Kongo
+ sq: Republika e Kongos
+ sr: Република Конго
+ ss: Tibuse weKhongo
+ su: Républik Kongo
+ sv: Republiken Kongo
+ sw: Jamhuri ya Kongo
+ ta: கொங்கோ குடியரசு
+ te: కాంగో రిపబ్లిక్
+ tg: Ҷумҳӯрии Конго
+ th: สาธารณรัฐคองโก
+ tk: Kongo Respublikasy
+ tl: Republika ng Konggo
+ tr: Kongo Cumhuriyeti
+ ts: Riphabliki ya Congo
+ tt: Конго Җөмһүрияте
+ ug: كونگو جۇمھۇرىيىتى
+ uk: Республіка Конго
+ ur: جمہوریہ کانگو
+ uz: Kongo Respublikasi
+ vi: Cộng hòa Congo
+ vo: Kongoän (Repüblikän)
+ wo: Kongóo-Brasaawiil
+ yi: רעפובליק פון קאנגא
+ yo: Orílẹ̀-èdè Olómìnira ilẹ̀ Kóngò
+ zh: 刚果共和国
+ zu: IKongo
--- /dev/null
+name:
+ default: Schweiz/Suisse/Svizzera/Svizra
+ af: Switserland
+ am: ስዊዘርላንድ
+ an: Suiza
+ ar: سويسرا
+ az: İsveçrə
+ ba: Швейцария
+ be: Швейцарыя
+ bg: Швейцария
+ bi: Switzerland
+ bn: Switzerland
+ bo: སུད་སི།
+ br: Suis
+ bs: Švicarska
+ ca: Suïssa
+ ce: Швейцари
+ co: Svizzera
+ cs: Švýcarsko
+ cu: Свицєра
+ cv: Швейцари
+ cy: Y Swistir
+ da: Schweiz
+ de: Schweiz
+ dv: ސުވިޒަލޭންޑު
+ dz: སུའིཊ་ཛར་ལེན་
+ ee: Switzerland
+ el: Ελβετία
+ en: Switzerland
+ eo: Svislando
+ es: Suiza
+ et: Šveits
+ eu: Suitza
+ fa: سوئیس
+ fi: Sveitsi
+ fo: Sveis
+ fr: Suisse
+ fy: Switserlân
+ ga: An Eilbhéis
+ gd: An Eilbheis
+ gl: Suíza
+ gn: Suisa
+ gu: સ્વિત્ઝરલેન્ડ
+ gv: Yn Elveeish
+ he: שוויץ
+ hi: स्विट्ज़रलैंड
+ hr: Švicarska
+ ht: Swis
+ hu: Svájc
+ hy: Շվեյցարիա
+ ia: Suissa
+ id: Swiss
+ ie: Svissia
+ io: Suisia
+ is: Sviss
+ it: Svizzera
+ ja: スイス
+ jv: Swiss
+ ka: შვეიცარია
+ kg: Suisi
+ kk: Швейцария
+ kl: Schweizi
+ kn: ಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್
+ ko: 스위스
+ ku: Swîsre
+ kv: Швейцария
+ kw: Swistir
+ ky: Швейцария
+ la: Helvetia
+ lb: Schwäiz
+ li: Zweitserland
+ ln: Swisi
+ lt: Šveicarija
+ lv: Šveice
+ mg: Soisa
+ mi: Huiterangi
+ mk: Швајцарија
+ ml: സ്വിറ്റ്സര്ലാന്റ്
+ mn: Швейцари
+ mr: स्वित्झर्लंड
+ ms: Switzerland
+ mt: Żvizzera
+ my: ဆွစ်ဇာလန်နိုင်ငံ
+ na: Switzerland
+ ne: स्विजरल्याण्ड
+ nl: Zwitserland
+ nn: Sveits
+ "no": Sveits
+ nv: Swis Bikéyah
+ oc: Soïssa
+ or: ସୁଇଜରଲ୍ୟାଣ୍ଡ
+ os: Швейцари
+ pa: ਸਵਿਟਜ਼ਰਲੈਂਡ
+ pl: Szwajcaria
+ ps: سويس
+ pt: Suíça
+ qu: Suwisa
+ rm: Svizra
+ ro: Elveţia
+ ru: Швейцария
+ rw: Ubusuwisi
+ sa: स्विटजरलैंड
+ sc: Isvìtzera
+ se: Šveica
+ sh: Švajcarska
+ si: ස්විට්සර්ලන්තය
+ sk: Švajčiarsko
+ sl: Švica
+ so: Iswiizerlaan
+ sq: Zvicra
+ sr: Швајцарска
+ ss: ISwizalandi
+ su: Suis
+ sv: Schweiz
+ sw: Uswisi
+ ta: சுவிட்சர்லாந்து
+ te: స్విట్జర్లాండ్
+ tg: Швейтсария
+ th: ประเทศสวิตเซอร์แลนด์
+ tk: Şweýsariýa
+ tl: Suwisa
+ tr: İsviçre
+ tt: Швейцария
+ ug: Shwétsariye
+ uk: Швейцарія
+ ur: سویٹزر لینڈ
+ uz: Shveysariya
+ vi: Thụy Sĩ
+ vo: Jveizän
+ wo: Suwis
+ yi: שווייץ
+ yo: Swítsàlandì
+ za: Nyeiqswq
+ zh: 瑞士
--- /dev/null
+name:
+ default: Côte d’Ivoire
+ af: Ivoorkus
+ am: ኮት ዲቯር
+ an: Costa de Vori
+ ar: ساحل العاج
+ az: Fil Dişi Sahili
+ be: Кот-д'Івуар
+ bg: Кот д'Ивоар
+ bm: Côte d'Ivoire
+ bn: কোত দিভোয়ার
+ bo: ཀོ་ཊི་ཌི་ཨའི་བོ་རི།
+ br: Aod an Olifant
+ bs: Obala Slonovače
+ ca: Costa d'Ivori
+ ce: Кот-д’Ивуар
+ cs: Pobřeží slonoviny
+ cv: Кот-д'Ивуар
+ cy: Côte d'Ivoire
+ da: Elfenbenskysten
+ de: Elfenbeinküste
+ dv: އައިވަރީ ކޯސްޓު
+ ee: Côte d'Ivoire
+ el: Ακτή Ελεφαντοστού
+ en: Côte d'Ivoire
+ eo: Ebur-Bordo
+ es: Costa de Marfil
+ et: Elevandiluurannik
+ eu: Boli Kosta
+ fa: ساحل عاج
+ ff: Kodduwaar
+ fi: Norsunluurannikko
+ fo: Fílabeinsstrondin
+ fr: Côte d’Ivoire
+ fy: Ivoarkust
+ ga: An Cósta Eabhair
+ gd: Costa Ìbhri
+ gl: Costa do Marfil
+ gv: Yn Clyst Iuaagagh
+ he: חוף השנהב
+ hi: कोत द'ईवोआर
+ hr: Obala Bjelokosti
+ ht: Kòt divwa
+ hu: Elefántcsontpart
+ hy: Կոտ դ'Իվուար
+ ia: Costa de Ebore
+ id: Pantai Gading
+ ie: Costa de Ivor
+ io: Ivora Rivo
+ is: Fílabeinsströndin
+ it: Costa d'Avorio
+ ja: コートジボワール
+ jv: Panté Gadhing
+ ka: კოტ-დ’ივუარი
+ kg: Côte d'Ivoire
+ ki: Côte d'Ivoire
+ kk: Кот-д-Ивуар
+ kn: ಕೋತ್ ದ್'ಇವಾರ್
+ ko: 코트디부아르
+ ku: Peravê Diranfîl
+ kw: Côte d'Ivoire
+ la: Litus Eburneum
+ lb: Elfebeeküst
+ li: Ivoorkös
+ ln: Kotdivuar
+ lt: Dramblio Kaulo Krantas
+ lv: Kotdivuāra
+ mg: Côte d'Ivoire
+ mi: Te Tai Rei
+ mk: Брег на Слоновата Коска
+ ml: ഐവറി കോസ്റ്റ്
+ mn: Кот д'Ивуар
+ mr: कोत द'ईवोआर
+ ms: Ivory Coast
+ mt: Kosta tal-Avorju
+ my: အိုင်ဗရီကို့စ်နိုင်ငံ
+ na: Aibori Kot
+ ne: आइभरी कोस्ट
+ nl: Ivoorkust
+ nn: Elfenbeinskysten
+ "no": Elfenbenskysten
+ nv: Chį́į́h Yee Adilohii Bideeʼ Tónteel Bibąąh
+ oc: Còsta d'Evòri
+ or: ଆଇଭେରି କୋଷ୍ଟ
+ os: Кот-д’Ивуар
+ pa: ਦੰਦ ਖੰਡ ਤਟ
+ pl: Wybrzeże Kości Słoniowej
+ ps: عاج ساحل
+ pt: Costa do Marfim
+ qu: Marphil Chala
+ rm: Costa d'Ivur
+ ro: Coasta de Fildeș
+ ru: Кот-д’Ивуар
+ rw: Kote Divuwari
+ sa: कोट ऐवरी
+ sc: Costa de Avòriu
+ se: Elefántačalánriddu
+ sg: Kôdivüära
+ sh: Obala Slonovače
+ si: අයිවරි කෝස්ට්
+ sk: Pobrežie Slonoviny
+ sl: Slonokoščena obala
+ sn: Côte d'Ivoire
+ so: Xeebta Foolmaroodi
+ sq: Bregu i Fildishtë
+ sr: Обала Слоноваче
+ ss: Lugu Lwempondvondlovu
+ su: Basisir Gading
+ sv: Elfenbenskusten
+ sw: Cote d'Ivoire
+ ta: கோட் டிவார்
+ te: కోటె డి ఐవొరి
+ tg: Кот-д'Ивуар
+ th: ประเทศโกตดิวัวร์
+ tk: Kot-d’Iwuar
+ tl: Baybaying Garing
+ tr: Fildişi Sahili
+ ts: Côte d'Ivoire
+ tt: Кот-д’Ивуар
+ ug: پىل چىشى قىرغىغى
+ uk: Кот-д'Івуар
+ ur: کوت داوواغ
+ uz: Kot-d‘ivuar
+ vi: Bờ Biển Ngà
+ vo: Viorajolän
+ wo: Kodiwaar
+ yi: בארטן פון העלפאנדביין
+ yo: Côte d'Ivoire
+ zh: 科特迪瓦
+ zu: Ugu Emhlophe
--- /dev/null
+name:
+ default: Kūki 'Āirani
+ af: Cookeilande
+ ak: Kook Nsupɔw
+ am: ኩክ ደሴቶች
+ an: islas Cook
+ ar: جزر كوك
+ az: Kuk adaları
+ ba: Кук Утрауҙары
+ be: Астравы Кука
+ bg: Острови Кук
+ bm: Kuki Gun
+ bn: কুক দ্বীপপুঞ্জ
+ bo: ཀཱུག གླིང་ཕྲེན་རྒྱལ་ཁབ།
+ br: Inizi Cook
+ bs: Cookova Ostrva
+ ca: Illes Cook
+ cs: Cookovy ostrovy
+ cy: Ynysoedd Cook
+ da: Cook-øerne
+ de: Cookinseln
+ dv: ކުކް ޖަޒީރާ
+ dz: ཀུག་གླིང་ཚོམ
+ ee: Kook ƒudomekpo nutome
+ el: Νήσοι Κουκ
+ en: Cook Islands
+ eo: Kukinsuloj
+ es: Islas Cook
+ et: Cooki saared
+ eu: Cook uharteak
+ fa: جزایر کوک
+ ff: Duuɗe Kuuk
+ fi: Cookinsaaret
+ fo: Cooksoyggjarnar
+ fr: Îles Cook
+ fy: de Cookeilannen
+ ga: Oileáin Cook
+ gd: Eileanan Cook
+ gl: Illas Cook
+ gu: કુક આઇલેન્ડ્સ
+ ha: Tsibiran Kuku
+ he: איי קוּק
+ hi: कुक द्वीपसमूह
+ hr: Cookovo Otočje
+ hu: Cook-szigetek
+ hy: Կուկի կղզիներ
+ ia: Insulas Cook
+ id: Kepulauan Cook
+ io: Insuli Cook
+ is: Cooks-eyjar
+ it: Isole Cook
+ ja: クック諸島
+ jv: Kapuloan Cook
+ ka: კუკის კუნძულები
+ ki: Visiwa vya Cook
+ kk: Кук аралдары
+ kl: Cook qeqertaq
+ km: កោះខូក
+ kn: ಕುಕ್ ದ್ವೀಪಗಳು
+ ko: 쿡 제도
+ ks: کُک جٔزیٖرٕ
+ ku: Giravên Cook
+ kw: Ynysow Cook
+ ky: Кук аралдары
+ la: Insulae de Cook
+ lb: Cookinseln
+ lg: Bizinga bya Kkuki
+ li: Cookeilenj
+ ln: Bisanga bya Kookɛ
+ lo: ຫມູ່ເກາະຄຸກ
+ lt: Kuko Salos
+ lv: Kuka Salas
+ mg: Nosy Kook
+ mi: Kuki Airani
+ mk: Кукови Острови
+ ml: കൂക്ക് ദ്വീപുകൾ
+ mn: Күүкийн Арлууд
+ mr: कूक द्वीपसमूह
+ ms: Kepulauan Cook
+ mt: Gżejjer Cook
+ my: ကွတ် ကျွန်းစု
+ ne: कुक टापु
+ nl: Cookeilanden
+ nn: Cookøyane
+ "no": Cookøyene
+ oc: Illas Cook
+ or: କୁକ୍ ଆଇସଲ୍ୟାଣ୍ଡ
+ os: Кучы сакъадæхтæ
+ pa: ਕੁੱਕ ਟਾਪੂ
+ pl: Wyspy Cooka
+ pt: Ilhas Cook
+ rm: Inslas Cook
+ rn: Izinga rya Kuku
+ ro: Insulele Cook
+ ru: Острова Кука
+ rw: Ibirwa bya Kuke
+ se: Cook-sullot
+ sg: âzûâ Kûku
+ sh: Kukova Ostrva
+ si: කුක් දිවයින්
+ sk: Cookove ostrovy
+ sl: Cookovi otoki
+ sn: Zvitsuwa zveCook
+ so: Jaziiradda Cook
+ sq: Ishulli Kuk
+ sr: Кукова Острва
+ su: Kapuloan Cook
+ sv: Cooköarna
+ sw: Visiwa vya Cook
+ ta: குக் தீவுகள்
+ te: కుక్ దీవులు
+ th: หมู่เกาะคุก
+ ti: ኩክ ደሴቶች
+ tl: Kapuluang Cook
+ to: ʻOtumotu Kuki
+ tr: Cook Adaları
+ tt: Кук утраулары
+ ug: Kuk Taqim Aralliri
+ uk: Острови́ Ку́ка
+ ur: جزائر کک
+ uz: Kuk orollari
+ vi: Quần đảo Cook
+ wo: Dunu Kook
+ yo: Orílẹ́ède Etíokun Kùúkù
+ zh: 庫克群島
+ zu: i-Cook Islands
--- /dev/null
+name:
+ default: Chile
+ ab: Чили
+ af: Chili
+ ak: Chile
+ am: ቺሌ
+ an: Chile
+ ar: تشيلي
+ as: চিলি
+ av: Чили
+ ay: Chili
+ az: Çili
+ ba: Чи́ли
+ be: Чылі
+ bg: Чили
+ bh: चिली
+ bi: Chile
+ bm: Chile
+ bn: চিলি
+ bo: ཅི་ལི།
+ br: Chile
+ bs: Čile
+ ca: Xile
+ ce: Чили
+ ch: Chile
+ co: Cile
+ cs: Chile
+ cu: Чилє
+ cv: Чили
+ cy: Chile
+ da: Chile
+ de: Chile
+ dv: ޗިލީ
+ dz: ཅི་ལེ
+ ee: Chile
+ el: Χιλή
+ en: Chile
+ eo: Ĉilio
+ es: Chile
+ et: Tšiili
+ eu: Txile
+ fa: شیلی
+ ff: Ciile
+ fi: Chile
+ fj: Chile
+ fo: Kili
+ fr: Chili
+ fy: Sily
+ ga: an tSile
+ gd: an t-Sile
+ gl: Chile
+ gn: Chile
+ gu: ચીલી
+ gv: yn Çhillee
+ ha: Chile
+ he: צ'ילה
+ hi: चिली
+ hr: Čile
+ ht: Chili
+ hu: Chile
+ hy: Չիլի
+ ia: Chile
+ id: Chili
+ ie: Chile
+ ig: Chile
+ ik: Cili
+ io: Chili
+ is: Síle
+ it: Cile
+ iu: ᓯᓕ
+ ja: チリ
+ jv: Chili
+ ka: ჩილე
+ kg: Chile
+ ki: Chile
+ kk: Чили
+ kl: Chile
+ km: ឈីលី
+ kn: ಚಿಲಿ
+ ko: 칠레
+ ks: چِلی
+ ku: Şîle
+ kv: Чили
+ kw: Chile
+ ky: Чили
+ la: Chilia
+ lb: Chile
+ lg: Chile
+ li: Chili
+ ln: Shili
+ lo: ປະເທດຈີເລ
+ lt: Čilė
+ lv: Čīle
+ mg: Silia
+ mi: Hiri
+ mk: Чиле
+ ml: ചിലി
+ mn: Чили
+ mr: चिली
+ ms: Chile
+ mt: Ċili
+ my: ချီလီနိုင်ငံ
+ na: Tsire
+ ne: चिली
+ nl: Chili
+ nn: Chile
+ "no": Chile
+ nv: Chíilii
+ ny: Chile
+ oc: Chile
+ om: Chiilii
+ or: ଚିଲି
+ os: Чили
+ pa: ਚਿਲੀ
+ pi: चिले
+ pl: Chile
+ ps: چېلي
+ pt: Chile
+ qu: Chili
+ rm: Chile
+ rn: Chile
+ ro: Chile
+ ru: Чили
+ rw: Shili
+ sa: चिले
+ sc: Cile
+ sd: چلي
+ se: Chile
+ sg: Shilïi
+ sh: Čile
+ si: චිලි
+ sk: Čile
+ sl: Čile
+ sm: Shili
+ sn: Chile
+ so: Jili
+ sq: Kilia
+ sr: Чиле
+ ss: iShile
+ st: Chile
+ su: Cilé
+ sv: Chile
+ sw: Chile
+ ta: சிலி
+ te: చిలీ
+ tg: Чиле
+ th: ชิลี
+ ti: ቺሌ
+ tk: Çili
+ tl: Chile
+ tn: Chile
+ to: Sile
+ tr: Şili
+ ts: Chile
+ tt: Чи́ли
+ tw: Kyili
+ ty: Tīri
+ ug: چىلى
+ uk: Чи́лі
+ ur: چلی
+ uz: Chili
+ ve: Shile
+ vi: Chi-lê
+ vo: Cilän
+ wa: Tchili
+ wo: Ciili
+ xh: iChile
+ yi: טשילע
+ yo: Tsílè
+ za: Chile
+ zh: 智利
+ zu: ITshile
--- /dev/null
+name:
+ default: Cameroun
+ af: Kameroen
+ am: ካሜሩን
+ an: Camerún
+ ar: الكاميرون
+ az: Kamerun
+ ba: Камерун
+ be: Камерун
+ bg: Камерун
+ bm: Kamerun
+ bn: ক্যামেরুন
+ bo: ཁམ་མུ་རོན།
+ br: Kameroun
+ bs: Kamerun
+ ca: Camerun
+ cs: Kamerun
+ cv: Камерун
+ cy: Camerŵn
+ da: Cameroun
+ de: Kamerun
+ dv: ކެމަރޫން
+ ee: Cameroon
+ el: Καμερούν
+ en: Cameroon
+ eo: Kameruno
+ es: Camerún
+ et: Kamerun
+ eu: Kamerun
+ fa: کامرون
+ ff: Kamerun
+ fi: Kamerun
+ fo: Kamerun
+ fr: Cameroun
+ fy: Kameroen
+ ga: Camarún
+ gd: Camarun
+ gl: Camerún
+ gv: Cameroon
+ ha: Kameru
+ he: קמרון
+ hi: कैमरुन
+ hr: Kamerun
+ ht: Kamewoun
+ hu: Kamerun
+ hy: Կամերուն
+ ia: Camerun
+ id: Kamerun
+ ie: Cameroon
+ ig: Kameroon
+ io: Kamerun
+ is: Kamerún
+ it: Camerun
+ ja: カメルーン
+ jv: Kamerun
+ ka: კამერუნი
+ kg: Kamerun
+ ki: Cameroon
+ kk: Камерун
+ kn: ಕ್ಯಾಮರೂನ್
+ ko: 카메룬
+ ks: کیٚمِروٗن
+ ku: Kamerûn
+ kw: Kameroun
+ la: Cameronia
+ lb: Kamerun
+ li: Kameroen
+ ln: Kamerun
+ lt: Kamerūnas
+ lv: Kamerūna
+ mi: Kamarūna
+ mk: Камерун
+ ml: കാമറൂൺ
+ mn: Камерун
+ mr: कामेरून
+ ms: Cameroon
+ mt: Kamerun
+ my: ကင်မရွန်းနိုင်ငံ
+ na: Kamerun
+ ne: क्यामेरून
+ nl: Kameroen
+ nn: Kamerun
+ "no": Kamerun
+ nv: Táłtłʼááh Chʼosh Daadánígíí Bitooh
+ oc: Cameron
+ or: କାମେରୁନ
+ os: Камерун
+ pa: ਕੈਮਰੂਨ
+ pl: Kamerun
+ ps: کامرون
+ pt: Camarões
+ qu: Kamirun
+ rm: Camerun
+ ro: Camerun
+ ru: Камерун
+ rw: Kameruni
+ sa: केमेरून
+ sc: Camerùn
+ se: Kamerun
+ sg: Kamerün
+ sh: Kamerun
+ sk: Kamerun
+ sl: Kamerun
+ sn: Cameroon
+ so: Kamiruun
+ sq: Kameruni
+ sr: Камерун
+ ss: IKhameruni
+ su: Kamerun
+ sv: Kamerun
+ sw: Kamerun
+ ta: கமரூன்
+ te: కామెరూన్
+ tg: Камерун
+ th: ประเทศแคเมอรูน
+ tk: Kamerun
+ tl: Kamerun
+ tr: Kamerun
+ ts: Cameroon
+ tt: Камерун
+ ug: كامېرۇن
+ uk: Камерун
+ ur: کیمرون
+ uz: Kamerun
+ vi: Cameroon
+ vo: Kamerunän
+ wo: Kamerun
+ yi: קאמערון
+ yo: Kamẹrúùn
+ zh: 喀麦隆
+ zu: IKamerooni
--- /dev/null
+name:
+ default: 中国
+ ab: Чынҭ
+ af: China
+ ak: China
+ am: የቻይና
+ an: China
+ ar: الصين
+ as: চীন
+ av: Чин
+ ay: China
+ az: Çin
+ ba: Ҡытай
+ be: Кітай
+ bg: Китай
+ bh: चीन
+ bi: Jaena
+ bm: China
+ bn: গণচীন
+ bo: ཀྲུང་གོ།
+ br: Sina
+ bs: Kina
+ ca: Xina
+ ce: Цийн-мохк
+ ch: China
+ co: China
+ cs: Čína
+ cu: Срѣдинꙗнє
+ cv: Китай
+ cy: Tsieina
+ da: Kina
+ de: China
+ dv: ސީނުކަރަ
+ dz: རྒྱ་ནག
+ ee: China
+ el: Κίνα
+ en: China
+ eo: Ĉinio
+ es: China
+ et: Hiina
+ eu: Txina
+ fa: چین
+ ff: Ciina
+ fi: Kiina
+ fj: Jaina
+ fo: Kina
+ fr: Chine
+ fy: Sina
+ ga: Síne
+ gd: Sìona
+ gl: China
+ gn: Chína
+ gu: ચીન
+ gv: Sheen
+ ha: Sin
+ he: סין
+ hi: चीनी
+ hr: Kina
+ ht: Chin
+ hu: Kína
+ hy: Չինաստան
+ ia: China
+ id: Tiongkok
+ ie: China
+ ig: Chaina
+ ik: China
+ io: Chinia
+ is: Kína
+ it: Cina
+ iu: ᓴᐃᓇ
+ ja: 中国
+ jv: Cina
+ ka: ჩინეთი
+ kg: Sina
+ ki: China
+ kk: Қытай
+ kl: Kina
+ km: ចិន
+ kn: ಚೀನಿ
+ ko: 중국
+ ks: چیٖن
+ ku: Çîn
+ kv: Китай
+ kw: China
+ ky: Кытай
+ la: Sinae
+ lb: China
+ lg: Cayina
+ li: China
+ ln: Sína
+ lo: ປະເທດຈີນ
+ lt: Kinija
+ lv: Ķīna
+ mg: Sina
+ mi: Haina
+ mk: Кина
+ ml: ചീന
+ mn: Хятад
+ mr: चीन
+ ms: China
+ mt: Ċina
+ my: တရုတ်
+ na: Tsiene
+ nb: Kina
+ ne: चीन
+ nl: China
+ nn: Kina
+ "no": Kina
+ nv: Tsiiʼyishbizhí Dineʼé Bikéyah
+ ny: China
+ oc: China
+ om: Chaayinaan
+ or: ଚୀନ
+ os: Китай
+ pa: ਚੀਨ
+ pl: Chiny
+ ps: چين
+ pt: China
+ qu: Chunkuk
+ rm: China
+ rn: Ubushinwa
+ ro: China
+ ru: Китай
+ rw: Ubushinwa
+ sc: Cina
+ sd: چين
+ se: Kiinná
+ sg: Sînä
+ sh: Kina
+ si: චීනය
+ sk: Čína
+ sl: Kitájska
+ sm: Saina
+ sn: China
+ so: Shiinaha
+ sq: Kina
+ sr: Кина
+ ss: iShayina
+ st: Tjhaena
+ su: Tiongkok
+ sv: Kina
+ sw: China
+ ta: சீனா
+ te: చైనా
+ tg: Хито́й
+ th: ประเทศจีน
+ ti: የቻይና
+ tk: Hytaý
+ tl: Tsina
+ tn: China
+ to: Siaina
+ tr: Çin
+ ts: Chayina
+ tt: Кытай
+ tw: China
+ ty: Tinitō
+ ug: جۇڭخۇا خەلق جۇمھۇرىيىتى
+ uk: Кита́йська
+ ur: چین
+ uz: Xitoy
+ ve: China
+ vi: Trung Quốc
+ vo: Tsyinän
+ wo: Siin
+ xh: IShayina
+ yi: כינע
+ yo: Ṣáínà
+ za: Cunghgoz
+ zh: 中国
+ zu: IShayina
--- /dev/null
+name:
+ default: Colombia
+ af: Colombia
+ am: ኮሎምቢያ
+ an: Colombia
+ ar: كولومبيا
+ ay: Kuluwya
+ az: Kolumbiya
+ ba: Колумбия
+ be: Калумбія
+ bg: Колумбия
+ bi: Colombia
+ bn: কলম্বিয়া
+ bo: ཁོ་ལོམ་བི་ཡ།
+ br: Kolombia
+ bs: Kolumbija
+ ca: Colòmbia
+ ce: Колумби
+ co: Colombia
+ cs: Kolumbie
+ cv: Колумби
+ cy: Colombia
+ da: Colombia
+ de: Kolumbien
+ dv: ކޮލަންބިއާ
+ dz: ཀོ་ལོམ་བི་ཡ
+ ee: Colombia
+ el: Κολομβία
+ en: Colombia
+ eo: Kolombio
+ es: Colombia
+ et: Colombia
+ eu: Kolonbia
+ fa: کلمبیا
+ fi: Kolumbia
+ fo: Kolumbia
+ fr: Colombie
+ fy: Kolombia
+ ga: An Cholóim
+ gd: Coloimbia
+ gl: Colombia
+ gn: Kolómbia
+ gu: કોલમ્બિયા
+ gv: Yn Cholombey
+ he: קולומביה
+ hi: कोलम्बिया
+ hr: Kolumbija
+ ht: Kolonbi
+ hu: Kolumbia
+ hy: Կոլումբիա
+ ia: Colombia
+ id: Kolombia
+ ie: Columbia
+ io: Kolumbia
+ is: Kólumbía
+ it: Colombia
+ ja: コロンビア
+ jv: Kolombia
+ ka: კოლუმბია
+ kk: Колумбия Республикасы
+ kl: Colombia
+ km: កូឡុំប៊ី
+ kn: ಕೊಲೊಂಬಿಯ
+ ko: 콜롬비아
+ ku: Kolombiya
+ kw: Kolombi
+ la: Columbia
+ lb: Kolumbien
+ li: Colombia
+ ln: Kolombi
+ lt: Kolumbija
+ lv: Kolumbija
+ mg: Kolombia
+ mi: Koromōpia
+ mk: Колумбија
+ ml: കൊളംബിയ
+ mn: Колумб
+ mr: कोलंबिया
+ ms: Colombia
+ mt: Kolombja
+ my: ကိုလံဘီယာနိုင်ငံ
+ na: Korombiya
+ ne: कोलम्बिया
+ nl: Colombia
+ nn: Colombia
+ "no": Colombia
+ nv: Kolámbiya
+ oc: Colómbia
+ om: Colombia
+ or: କଲୋମ୍ବିଆ
+ os: Колумби
+ pa: ਕੋਲੰਬੀਆ
+ pl: Kolumbia
+ pt: Colômbia
+ qu: Kulumbya
+ rm: Columbia
+ ro: Columbia
+ ru: Колумбия
+ rw: Kolombiya
+ sa: कोलोम्बिया
+ se: Colombia
+ sh: Kolumbija
+ sk: Kolumbia
+ sl: Kolumbija
+ so: Kolombiya
+ sq: Kolumbia
+ sr: Колумбија
+ su: Kolombia
+ sv: Colombia
+ sw: Kolombia
+ ta: கொலொம்பியா
+ te: కొలంబియా
+ tg: Кулумбия
+ th: ประเทศโคลอมเบีย
+ tl: Colombia
+ tr: Kolombiya
+ ts: Colombia
+ tt: Колумбия
+ ug: كولومبىيە
+ uk: Колумбія
+ ur: کولمبیا
+ uz: Kolumbiya
+ vi: Colombia
+ vo: Kolumbän
+ wo: Koloombi
+ xh: IsiColombia
+ yi: קאלאמביע
+ yo: Kòlómbìà
+ zh: 哥伦比亚
+ zu: IKolombiya
--- /dev/null
+name:
+ default: Costa Rica
+ ab: Коста-Рика
+ af: Costa Rica
+ am: ኮስታ ሪካ
+ an: Costa Rica
+ ar: كوستاريكا
+ ay: Kustarika
+ az: Kosta-Rika
+ ba: Коста-Рика
+ be: Коста-Рыка
+ bg: Коста Рика
+ bh: कोस्टा रिका
+ bm: Kosta Rika
+ bn: কোস্টা রিকা
+ bo: ཁོ་ས་ཏ་རི་ཁ
+ br: Costa Rica
+ bs: Kostarika
+ ca: Costa Rica
+ ce: Коста-Рика
+ cs: Kostarika
+ cy: Costa Rica
+ da: Costa Rica
+ de: Costa Rica
+ dv: ކޮސްޓަރީކާ
+ ee: Costa Rica
+ el: Κόστα Ρίκα
+ en: Costa Rica
+ eo: Kostariko
+ es: Costa Rica
+ et: Costa Rica
+ eu: Costa Rica
+ fa: کاستاریکا
+ fi: Costa Rica
+ fo: Kosta Rika
+ fr: Costa Rica
+ fy: Kosta Rika
+ ga: Cósta Ríce
+ gd: Costa Rica
+ gl: Costa Rica
+ gn: Kosta Rrika
+ gv: Yn Coose Berçhagh
+ he: קוסטה ריקה
+ hi: कोस्टा रीका
+ hr: Kostarika
+ ht: Kostarika
+ hu: Costa Rica
+ hy: Կոստա Ռիկա
+ ia: Costa Rica
+ id: Kosta Rika
+ ie: Costa Rica
+ io: Kosta Rika
+ is: Kosta Ríka
+ it: Costa Rica
+ ja: コスタリカ
+ jv: Kosta Rika
+ ka: კოსტა-რიკა
+ kk: Коста-Рика
+ kn: ಕೋಸ್ಟಾ ರಿಕ
+ ko: 코스타리카
+ ku: Kosta Rîka
+ kv: Коста-Рика
+ kw: Kosta Rika
+ ky: Коста-Рика
+ la: Ora Opulenta
+ lb: Costa Rica
+ li: Costa Rica
+ ln: Kosta Rika
+ lo: ປະເທດກົດສະຕາລິກາ
+ lt: Kosta Rika
+ lv: Kostarika
+ mg: Costa Rica
+ mi: Koto Rika
+ mk: Костарика
+ ml: കോസ്റ്റ റീക്ക
+ mn: Коста-Рика
+ mr: कोस्टा रिका
+ ms: Costa Rica
+ mt: Kosta Rika
+ my: ကော့စတာရီကာနိုင်ငံ
+ na: Kosta Rika
+ ne: कोस्टारिका
+ nl: Costa Rica
+ nn: Costa Rica
+ "no": Costa Rica
+ oc: Còsta Rica
+ om: Kostaa Rikaa
+ or: କୋଷ୍ଟାରିକା
+ os: Коста-Рикæ
+ pa: ਕੋਸਤਾ ਰੀਕਾ
+ pi: कोस्टा रीका
+ pl: Kostaryka
+ ps: کوسټاریکا
+ pt: Costa Rica
+ qu: Kustarika
+ ro: Costa Rica
+ ru: Коста-Рика
+ rw: Kosita Rika
+ sa: कोस्टा रीका
+ se: Costa Rica
+ sh: Kostarika
+ si: කෝස්ට රිකා
+ sk: Kostarika
+ sl: Kostarika
+ sm: Kosta Rika
+ so: Kosta Rika
+ sq: Kosta Rika
+ sr: Костарика
+ ss: IKhosta-Likha
+ su: Kosta Rika
+ sv: Costa Rica
+ sw: Kosta Rika
+ ta: கோஸ்ட்டா ரிக்கா
+ te: కోస్టారీకా
+ tg: Коста Рика
+ th: ประเทศคอสตาริกา
+ tk: Kosta-Rika
+ tl: Costa Rica
+ tr: Kosta Rika
+ tt: Коста-Рика
+ ug: كوستارىكا
+ uk: Коста-Рика
+ ur: کوسٹاریکا
+ uz: Kosta Rika
+ vi: Costa Rica
+ vo: Kostarikän
+ wa: Costa Rica
+ wo: Kosta Riika
+ yi: קאסטא ריקא
+ yo: Kóstá Rikà
+ zh: 哥斯达黎加
+ zu: Costa Rica
--- /dev/null
+name:
+ default: Cuba
+ af: Kuba
+ am: ኩባ
+ an: Cuba
+ ar: كوبا
+ ay: Kuba
+ az: Kuba
+ ba: Куба
+ be: Куба
+ bg: Куба
+ bm: Kuba
+ bn: কিউবা
+ bo: ཀུ་བ།
+ br: Kuba
+ bs: Kuba
+ ca: Cuba
+ ce: Куба
+ cs: Kuba
+ cv: Куба
+ cy: Cuba
+ da: Cuba
+ de: Kuba
+ dv: ކިއުބާ
+ ee: Cuba
+ el: Κούβα
+ en: Cuba
+ eo: Kubo
+ es: Cuba
+ et: Kuuba
+ eu: Kuba
+ fa: کوبا
+ fi: Kuuba
+ fo: Kuba
+ fr: Cuba
+ fy: Kuba
+ ga: Cúba
+ gd: Cùba
+ gl: Cuba
+ gn: Kuva
+ gv: Yn Choobey
+ he: קובה
+ hi: क्यूबा
+ hr: Kuba
+ ht: Kiba
+ hu: Kuba
+ hy: Կուբա
+ ia: Cuba
+ id: Kuba
+ io: Kuba
+ is: Kúba
+ it: Cuba
+ iu: ᖂᐹ
+ ja: キューバ
+ jv: Kuba
+ ka: კუბა
+ kk: Куба
+ km: គុយបា
+ kn: ಕ್ಯೂಬಾ
+ ko: 쿠바
+ ku: Kûba
+ kv: Куба
+ kw: Kuba
+ la: Cuba
+ lb: Kuba
+ li: Cuba
+ ln: Kuba
+ lt: Kuba
+ lv: Kuba
+ mi: Kiupa
+ mk: Куба
+ ml: ക്യൂബ
+ mn: Куба
+ mr: क्युबा
+ ms: Cuba
+ mt: Kuba
+ my: ကျူးဘားနိုင်ငံ
+ na: Kiuba
+ ne: क्युबा
+ nl: Cuba
+ nn: Cuba
+ "no": Cuba
+ nv: Kyóoba
+ oc: Cuba
+ or: କ୍ୟୁବା
+ os: Кубæ
+ pa: ਕਿਊਬਾ
+ pl: Kuba
+ pt: Cuba
+ qu: Kuba
+ ro: Cuba
+ ru: Куба
+ rw: Kiba
+ sa: क्यूबा
+ sc: Cuba
+ se: Cuba
+ sh: Kuba
+ si: කියුබාව
+ sk: Kuba
+ sl: Kuba
+ so: Kuuba
+ sq: Kuba
+ sr: Куба
+ ss: IKhuyubha
+ su: Kuba
+ sv: Kuba
+ sw: Kuba
+ ta: கூபா
+ te: క్యూబా
+ tg: Кубо
+ th: ประเทศคิวบา
+ tk: Kuba
+ tl: Kuba
+ tr: Küba
+ tt: Куба
+ ug: كۇبا
+ uk: Куба
+ ur: کیوبا
+ uz: Kuba
+ vi: Cuba
+ vo: Kubeän
+ wa: Couba
+ wo: Kubaa
+ yi: קובא
+ yo: Kúbà
+ za: Gujbah
+ zh: 古巴
--- /dev/null
+name:
+ default: Cabo Verde
+ af: Kaap Verde
+ ar: الرأس الأخضر
+ be: Каба-Вердэ
+ br: Kab Glas
+ ca: Cap Verd
+ cs: Kapverdy
+ cy: Cabo Verde
+ da: Kap Verde
+ de: Kap Verde
+ el: Πράσινο Ακρωτήριο
+ en: Cape Verde
+ eo: Kaboverdo
+ es: Cabo Verde
+ et: Roheneemesaared
+ fa: کیپ ورد
+ fi: Kap Verde
+ fr: Cap-Vert
+ fy: Kaapverdje
+ ga: Rinn Verde
+ gd: Cape Verde
+ he: כף ורדה
+ hr: Zelenortski Otoci
+ hu: Zöld-foki Köztársaság
+ id: Tanjung Verde
+ io: Kabo Verda
+ is: Grænhöfðaeyjar
+ it: Capo Verde
+ la: Promontorium Viride
+ lb: Kap Verde
+ li: Kaapverdië
+ lt: Žaliasis Kyšulys
+ lv: Kaboverde
+ mi: Te Kūrae Matomato
+ mk: Зелен ’Рт
+ mn: Кабо-Верде
+ nl: Kaapverdië
+ pl: Republika Zielonego Przylądka
+ pt: Cabo Verde
+ ru: Кабо-Верде
+ se: Kap Verde
+ sl: Zelenortski otoki
+ sr: Зеленортска Острва
+ sv: Kap Verde
+ ta: கேப் வர்டி
+ th: ประเทศเคปเวิร์ด
+ tr: Yeşil Burun Adaları
+ uk: Кабо-Верде
+ uz: Kabo-Verde
+ vo: Kabovärduäns
+ zh: 佛得角
--- /dev/null
+name:
+ default: Curaçao
+ en: Curaçao
+ es: Curazao
+ fr: Curaçao
+ ru: Кюрасао
+ sv: Curaçao
--- /dev/null
+name:
+ default: Christmas Island
+ af: Christmas-eiland
+ ar: جزيرة الميلاد
+ bg: Рождество
+ br: Enez Nedeleg
+ bs: Božićno ostrvo
+ ca: Illa Christmas
+ cs: Vánoční ostrov
+ cy: Ynys y Nadolig
+ da: Juleøen
+ de: Weihnachtsinsel
+ el: Νήσος των Χριστουγέννων
+ eo: Kristnaskinsulo
+ es: Isla de Navidad
+ et: Jõulusaar
+ eu: Christmas uhartea
+ fa: جزیره کریسمس
+ fi: Joulusaari
+ fr: Île Christmas
+ fy: Krysteilân
+ ga: Oileán na Nollag
+ gl: Illa de Nadal
+ he: טריטוריית האי חג המולד
+ hi: क्रिसमस आईलैंड
+ hr: Božićni otok
+ hu: Karácsony-sziget
+ id: Pulau Natal
+ is: Jólaeyja
+ it: Isola del Natale
+ ja: クリスマス島
+ ka: შობის კუნძული
+ kk: Кристмас аралы
+ ko: 크리스마스 섬
+ kw: Ynys Nadelik
+ lb: Chrëschtdagsinsel
+ lt: Kalėdų sala
+ lv: Ziemsvētku sala
+ mn: Зул Сарын Арал
+ mr: क्रिसमस द्वीप
+ ms: Pulau Krismas
+ nl: Christmaseiland
+ nn: Christmasøya
+ "no": Christmasøya
+ pl: Wyspa Bożego Narodzenia
+ pt: Ilha Christmas
+ ro: Insula Crăciunului
+ ru: Остров Рождества
+ sh: Božićni otok
+ sk: Vianočný ostrov
+ sl: Božični otoki
+ sr: Божићно Острво
+ sv: Julön
+ sw: Kisiwa cha Krismasi
+ ta: கிறிஸ்துமசு தீவு
+ th: เกาะคริสต์มาส
+ tr: Christmas Adası
+ uk: Острів Різдва
+ vi: Đảo Christmas
+ wo: Dunu Christmas
+ zh: 圣诞岛
--- /dev/null
+name:
+ default: Κύπρος - Kıbrıs
+ af: Siprus
+ am: ቆጵሮስ
+ an: Chipre
+ ar: قبرص
+ az: Kipr
+ be: Кіпр
+ bg: Кипър
+ bi: Cyprus
+ bn: সাইপ্রাস
+ bo: སེ་པི་རི་སི།
+ br: Kiprenez
+ bs: Kipar
+ ca: Xipre
+ ce: Кипр
+ co: Cipru
+ cs: Kypr
+ cu: Кѷпръ
+ cv: Кипр
+ cy: Cyprus
+ da: Cypern
+ de: Zypern
+ ee: Cyprus
+ el: Κύπρος
+ en: Cyprus
+ eo: Kipro
+ es: Chipre
+ et: Küpros
+ eu: Zipre
+ fa: قبرس
+ fi: Kypros
+ fo: Kýpros
+ fr: Chypre
+ fy: Syprus
+ ga: An Chipir
+ gd: Cìopras
+ gl: Chipre
+ gn: Chipre
+ gu: સાયપ્રસ
+ gv: Yn Cheeprey
+ he: קפריסין
+ hi: साइप्रस
+ hr: Cipar
+ ht: Chip
+ hu: Ciprus
+ hy: Կիպրոս
+ ia: Cypro
+ id: Siprus
+ ie: Cypria
+ io: Chipro
+ is: Kýpur
+ it: Cipro
+ ja: キプロス
+ jv: Siprus
+ ka: კვიპროსი
+ kg: Kipros
+ kk: Кипр
+ kl: Cyperni
+ kn: ಕಿಪ್ರೊಸ್
+ ko: 키프로스
+ ku: Kîpros
+ kv: Кипр
+ kw: Kobros
+ la: Cyprus
+ lb: Zypern
+ li: Cyprus
+ lt: Kipras
+ lv: Kipra
+ mg: Kipra
+ mi: Haipara
+ mk: Кипар
+ ml: സൈപ്രസ്
+ mn: Кипр
+ mr: सायप्रस
+ ms: Cyprus
+ mt: Ċipru
+ my: ဆိုက်ပရပ်စ်နိုင်ငံ
+ na: Taiprus
+ nb: Kypros
+ ne: साइप्रस
+ nl: Cyprus
+ nn: Kypros
+ "no": Kypros
+ nv: Béésh Łichíiʼii Bikéyah
+ oc: Chipre
+ or: ସାଇପ୍ରସ
+ os: Кипр
+ pa: ਸਾਇਪ੍ਰਸ
+ pl: Cypr
+ pt: Chipre
+ qu: Kipru
+ rm: Cipra
+ ro: Cipru
+ ru: Кипр
+ rw: Shipure
+ sc: Tzipru
+ se: Kypros
+ sh: Cipar
+ si: සයිප්රස්
+ sk: Cyprus
+ sl: Ciper
+ sm: Cyprus
+ so: Qabrus
+ sq: Qiproja
+ sr: Кипар
+ ss: ISayiphro
+ su: Siprus
+ sv: Cypern
+ sw: Kupro
+ ta: சைப்பிரஸ்
+ te: సైప్రస్
+ tg: Кипр
+ th: ประเทศไซปรัส
+ tk: Kipr
+ tl: Tsipre
+ tr: Kıbrıs
+ tt: Кипр
+ ug: سىپرۇس
+ uk: Кіпр
+ ur: قبرص
+ uz: Qibris
+ vi: Síp
+ vo: Sipreän
+ wo: Ciipër
+ yi: קיפראס
+ yo: Kíprù
+ zh: 赛普勒斯/塞浦路斯/塞浦路斯
--- /dev/null
+name:
+ default: Česko
+ ab: Чехиа
+ af: Tsjeggië
+ am: ቼክ ሪፐብሊክ
+ an: Republica Checa
+ ar: التشيك
+ av: Чехия
+ ay: Chexya Ripublika
+ az: Çexiya
+ ba: Чехия
+ be: Чэхія
+ bg: Чешка република
+ bh: चेक रिपब्लिक
+ bi: Czech Republic
+ bn: চেক প্রজাতন্ত্র
+ bo: ཅེ་ཁེ།
+ br: Tchekia
+ bs: Češka
+ ca: Txèquia
+ ce: Чехи
+ ch: Chekia
+ co: Cechia
+ cs: Česko
+ cu: Чєшьско
+ cv: Чех Республики
+ cy: Gweriniaeth Tsiec
+ da: Tjekkiet
+ de: Tschechien
+ dv: ޗެކް ޖުމްހޫރިއްޔާ
+ dz: ཅེཀ་རི་པབ་ལིཀ་
+ ee: Czech Republic
+ el: Τσεχία
+ en: Czechia
+ eo: Ĉeĥio
+ es: Chequia
+ et: Tšehhi
+ eu: Txekia
+ fa: جمهوری چک
+ ff: Cekiya
+ fi: Tšekki
+ fo: Kekkia
+ fr: Tchéquie
+ fy: Tsjechje
+ ga: An tSeic
+ gd: An t-Seic
+ gl: República Checa
+ gn: Cheko
+ gv: Yn Phobblaght Çheck
+ ha: Kazech
+ he: צכיה
+ hi: चेक गणराज्य
+ hr: Češka
+ ht: Repiblik tchèk
+ hu: Csehország
+ hy: Չեխիա
+ ia: Republica Chec
+ id: Republik Ceko
+ ie: Tchechia
+ ig: Chekia
+ ik: Czech Republic
+ io: Chekia
+ is: Tékkland
+ it: Repubblica Ceca
+ ja: チェコ
+ jv: Céko
+ ka: ჩეხეთი
+ kg: République tchèque
+ kk: Чехия
+ kl: Tjekkia
+ kn: ಜೆಕ್ ಗಣರಾಜ್ಯ
+ ko: 체코
+ ku: Komara Çekî
+ kv: Чехия
+ kw: Pow Chek
+ ky: Чехия
+ la: Cechia
+ lb: Tschechien
+ li: Tsjechië
+ ln: Republíki Sheki
+ lo: ສາທາລະນະລັດແຊັກ
+ lt: Čekija
+ lv: Čehija
+ mg: Tsekia
+ mi: Tīekia
+ mk: Чешка
+ ml: ചെക്ക് റിപ്പബ്ലിക്ക്
+ mn: Бүгд Найрамдах Чех Улс
+ mr: चेक प्रजासत्ताक
+ ms: Republik Czech
+ mt: Repubblika Ċeka
+ my: ချက်သမ္မတနိုင်ငံ
+ na: Ripubrikin Tsiek
+ ne: चेक गणतन्त्र
+ nl: Tsjechië
+ nn: Tsjekkia
+ "no": Tsjekkia
+ nv: Chek Bikéyah
+ oc: Republica Chèca
+ om: Cheekiyaa
+ or: ଚେକ ରିପବ୍ଲିକ
+ os: Чехи
+ pa: ਚੈੱਕ ਗਣਰਾਜ
+ pi: चेक रिपब्लिक
+ pl: Czechy
+ ps: چېک جمهوريت
+ pt: Tcheca
+ qu: Chiksuyu
+ rm: Tschechia
+ ro: Cehia
+ ru: Чехия
+ rw: Cekiya
+ sa: ज़ेक् रिपब्लिक
+ sc: Repùblica Ceca
+ sd: جمهوريه چيڪ
+ se: Čeahkka
+ sh: Češka Republika
+ si: චෙක් ජනරජය
+ sk: Česko
+ sl: Češka
+ sm: Czechs Republic
+ sn: Czechia
+ so: Jamhuuriyadda Tashik
+ sq: Republika Çeke
+ sr: Чешка
+ ss: Shekhi
+ su: Céko
+ sv: Tjeckien
+ sw: Ucheki
+ ta: செக் குடியரசு
+ te: చెక్ రిపబ్లిక్
+ tg: Чехия
+ th: สาธารณรัฐเช็ก
+ tk: Çehiýa
+ tl: Republikang Tseko
+ tr: Çek Cumhuriyeti
+ ts: Czech Republic
+ tt: Чехия
+ ty: Czech Republic
+ ug: چېخ جۇمھۇرىيەتى
+ uk: Чехія
+ ur: چیک جمہوریہ
+ uz: Chexiya
+ vi: Cộng hòa Séc
+ vo: Tsyegän
+ wa: Tchekeye
+ wo: Réewum Cek
+ yi: טשעכיי
+ yo: Tsẹ́kì Olómìnira
+ za: Ciethaek
+ zh: 捷克
+ zu: ITsheki
--- /dev/null
+name:
+ default: Deutschland
+ ab: Алмантәыла
+ af: Duitsland
+ ak: Germany
+ am: ጀርመን
+ an: Alemanya
+ ar: ألمانيا
+ av: Алмания
+ ay: Alimaña
+ az: Almaniya
+ ba: Германия
+ be: Германія
+ bg: Германия
+ bi: Germany
+ bm: Jermani
+ bn: জার্মানি
+ bo: འཇར་མན།
+ br: Alamagn
+ bs: Njemačka
+ ca: Alemanya
+ ce: Германи
+ co: Germania
+ cs: Německo
+ cu: Нѣмьци
+ cv: Германи
+ cy: Yr Almaen
+ da: Tyskland
+ de: Deutschland
+ dv: ޖަރުމަނުވިލާތް
+ dz: ཇཱར་མ་ནི
+ ee: Germany
+ el: Γερμανία
+ en: Germany
+ eo: Germanio
+ es: Alemania
+ et: Saksamaa
+ eu: Alemania
+ fa: آلمان
+ ff: Almaanya
+ fi: Saksa
+ fo: Týskland
+ fr: Allemagne
+ fy: Dútslân
+ ga: An Ghearmáin
+ gd: A' Ghearmailt
+ gl: Alemaña
+ gn: Alemaña
+ gu: જર્મની
+ gv: Yn Ghermaan
+ ha: Jamus
+ he: גרמניה
+ hi: जर्मनी
+ hr: Njemačka
+ ht: Almay
+ hu: Németország
+ hy: Գերմանիա
+ ia: Germania
+ id: Jerman
+ ie: Germania
+ ig: Jémanị
+ io: Germania
+ is: Þýskaland
+ it: Germania
+ iu: ᔮᒪᓂ
+ ja: ドイツ
+ jv: Jerman
+ ka: გერმანია
+ kg: Alemanyi
+ ki: Germany
+ kk: Германия Федеративтік Республикасы
+ kl: Tyskit Nunaat
+ km: អាល្លឺម៉ង់
+ kn: ಜರ್ಮನಿ
+ ko: 독일
+ ks: جرمٔنی
+ ku: Almanya
+ kv: Германия
+ kw: Almayn
+ ky: Германия
+ la: Germania
+ lb: Däitschland
+ lg: Girimane
+ li: Duutsjlandj
+ ln: Alémani
+ lo: ປະເທດເຢັຽລະມັນ
+ lt: Vokietija
+ lv: Vācija
+ mg: Alemaina
+ mi: Tiamani
+ mk: Германија
+ ml: ജർമ്മനി
+ mn: Герман
+ mo: Ӂермания
+ mr: जर्मनी
+ ms: Jerman
+ mt: Ġermanja
+ my: ဂျာမနီနိုင်ငံ
+ na: Djermani
+ ne: जर्मनी
+ nl: Duitsland
+ nn: Tyskland
+ "no": Tyskland
+ nv: Béésh Bichʼahii Bikéyah
+ oc: Alemanha
+ or: ଜର୍ମାନୀ
+ os: Герман
+ pa: ਜਰਮਨੀ
+ pl: Niemcy
+ ps: آلمان
+ pt: Alemanha
+ qu: Alimanya
+ rm: Germania
+ rn: Ubudagi
+ ro: Germania
+ ru: Германия
+ rw: Ubudage
+ sa: जर्मनी
+ sc: Germània
+ se: Duiska
+ sh: Nemačka
+ si: ජර්මනිය
+ sk: Nemecko
+ sl: Nemčija
+ sm: Siamani
+ so: Jarmalka
+ sq: Gjermania
+ sr: Немачка
+ ss: IJalimane
+ su: Jérman
+ sv: Tyskland
+ sw: Ujerumani
+ ta: செருமனி
+ te: జర్మనీ
+ tg: Олмон
+ th: ประเทศเยอรมนี
+ ti: ጀርመን
+ tk: Germaniýa
+ tl: Alemanya
+ tr: Almanya
+ ts: Jarimani
+ tt: Алмания
+ tw: Gyaaman
+ ty: Heremani
+ ug: گېرمانىيە
+ uk: Німеччина
+ ur: جرمنی
+ uz: Olmoniya
+ vi: Đức
+ vo: Deutän
+ wa: Almagne
+ wo: Almaañ
+ xh: IJamani
+ yi: דייטשלאנד
+ yo: Jẹ́mánì
+ za: Dwzgoz
+ zh: 德国
+ zu: IJalimani
--- /dev/null
+name:
+ default: Djibouti جيبوتي
+ af: Djiboeti
+ am: ጅቡቲ
+ an: Chibuti
+ ar: جيبوتي
+ az: Cibuti
+ ba: Джибути
+ be: Джыбуці
+ bg: Джибути
+ bn: জিবুতি
+ bo: ཇི་བའོ་ཊི།
+ br: Djibouti
+ bs: Džibuti
+ ca: Djibouti
+ ce: Джибути
+ cs: Džibutsko
+ cv: Джибути
+ cy: Djibouti
+ da: Djibouti
+ de: Dschibuti
+ dv: ޖިބުތީ
+ ee: Djibouti
+ el: Τζιμπουτί
+ en: Djibouti
+ eo: Ĝibutio
+ es: Yibuti
+ et: Djibouti
+ eu: Djibuti
+ fa: جیبوتی
+ fi: Djibouti
+ fr: Djibouti
+ fy: Dzjibûty
+ ga: Diobúití
+ gd: Diobùtaidh
+ gl: Xibutí
+ gv: Djibouti
+ he: ג'יבוטי
+ hi: जिबूती
+ hr: Džibuti
+ ht: Djibouti
+ hu: Dzsibuti
+ hy: Ջիբութի
+ ia: Djibouti
+ id: Djibouti
+ ie: Djibouti
+ io: Djibuti
+ is: Djíbútí
+ it: Gibuti
+ ja: ジブチ
+ jv: Djibouti
+ ka: ჯიბუტი
+ kg: Djibuti
+ ki: Djibouti
+ kk: Джибути
+ ko: 지부티
+ ku: Cîbûtî
+ kw: Jibouti
+ la: Gibutum
+ lb: Dschibuti
+ li: Djibouti
+ ln: Djibuti
+ lt: Džibutis
+ lv: Džibutija
+ mg: Jibotia
+ mi: Tipūti
+ mk: Џибути
+ ml: ജിബൂട്ടി
+ mn: Джибути
+ mr: जिबूती
+ ms: Djibouti
+ mt: Ġibuti
+ my: ဂျီဘူတီနိုင်ငံ
+ na: Djibuti
+ ne: जिबुटी
+ nl: Djibouti
+ nn: Djibouti
+ "no": Djibouti
+ nv: Jibótii
+ oc: Jiboti
+ om: Jibuutii
+ or: ଡିଜିବୋଇଟି
+ os: Джибути
+ pa: ਜਿਬੂਤੀ
+ pl: Dżibuti
+ ps: جېبوتي
+ pt: Djibouti
+ qu: Yiwuti
+ ro: Djibouti
+ ru: Джибути
+ rw: Jibuti
+ sa: जिबूटी
+ sc: Gibuti
+ se: Djibouti
+ sg: Dibutùii
+ sh: Džibuti
+ sk: Džibutsko
+ sl: Džibuti
+ sn: Djibouti
+ so: Jabuuti
+ sq: Xhibuti
+ sr: Џибути
+ ss: IJibhuthi
+ su: Djibouti
+ sv: Djibouti
+ sw: Jibuti
+ ta: சீபூத்தீ
+ te: జిబౌటి
+ tg: Ҷибути
+ th: ประเทศจิบูตี
+ ti: ጂቡቲ
+ tk: Jibuti
+ tl: Hiboti
+ tr: Cibuti
+ ts: Djibouti
+ tt: Җибути
+ ug: جىبۇتى
+ uk: Джибуті
+ ur: جبوتی
+ uz: Jibuti
+ vi: Djibouti
+ vo: Cibutän
+ wo: Jibuti
+ yi: דזשיבוטי
+ yo: Djìbútì
+ zh: 吉布提
+ zu: IJibuthi
--- /dev/null
+name:
+ default: Danmark
+ af: Denemarke
+ am: ዴንማርክ
+ an: Dinamarca
+ ar: الدنمارك
+ az: Danimarka
+ ba: Дания
+ be: Данія
+ bg: Дания
+ bi: Denmark
+ bn: ডেনমার্ক
+ bo: དན་མྲག
+ br: Danmark
+ bs: Danska
+ ca: Dinamarca
+ ce: Дани
+ co: Danimarca
+ cs: Dánsko
+ cu: Данїꙗ
+ cv: Дани
+ cy: Denmarc
+ da: Danmark
+ de: Dänemark
+ dv: ޑެންމާކު
+ dz: ཌེན་མཱཀ་
+ ee: Denmark
+ el: Δανία
+ en: Denmark
+ eo: Danio
+ es: Dinamarca
+ et: Taani
+ eu: Danimarka
+ fa: دانمارک
+ fi: Tanska
+ fo: Danmark
+ fr: Danemark
+ fy: Denemark
+ ga: An Danmhairg
+ gd: An Danmhairg
+ gl: Dinamarca
+ gn: Ndinamayka
+ gv: Yn Danvarg
+ he: דנמרק
+ hi: डेनमार्क
+ hr: Danska
+ ht: Danmak
+ hu: Dánia
+ hy: Դանիա
+ ia: Danmark
+ id: Denmark
+ ie: Dania
+ io: Dania
+ is: Danmörk
+ it: Danimarca
+ ja: デンマーク
+ jv: Denmark
+ ka: დანია
+ kg: Danemark
+ ki: Denmark
+ kk: Дания
+ kl: Danmarki
+ kn: ಡೆನ್ಮಾರ್ಕ್
+ ko: 덴마크
+ ku: Danîmarka
+ kv: Дания
+ kw: Danmark
+ ky: Дания
+ la: Dania
+ lb: Dänemark
+ lg: Denimaaka
+ li: Denemarke
+ ln: Danemark
+ lt: Danija
+ lv: Dānija
+ mg: Danmarka
+ mi: Tenemāka
+ mk: Данска
+ ml: ഡെന്മാർക്ക്
+ mn: Дани
+ mr: डेन्मार्क
+ ms: Denmark
+ mt: Danimarka
+ my: ဒိန်းမတ်နိုင်ငံ
+ na: Denemark
+ ne: डेनमार्क
+ nl: Denemarken
+ nn: Danmark
+ "no": Danmark
+ nv: Déinish Dineʼé Bikéyah
+ oc: Danemarc
+ or: ଡେନମାର୍କ
+ os: Дани
+ pl: Dania
+ ps: ډېنمارک
+ pt: Dinamarca
+ qu: Dansuyu
+ rm: Danemarc
+ rn: Danemarke
+ ro: Danemarca
+ ru: Дания
+ rw: Danimarike
+ sa: डेनमार्क
+ sc: Danimarca
+ se: Dánmárku
+ sh: Danska
+ si: ඩෙන්මාර්කය
+ sk: Dánsko
+ sl: Danska
+ so: Denmark
+ sq: Danimarka
+ sr: Данска
+ ss: IDenimakhi
+ st: Denmark
+ su: Dénmark
+ sv: Danmark
+ sw: Denmark
+ ta: டென்மார்க்
+ te: డెన్మార్క్
+ tg: Дания
+ th: ประเทศเดนมาร์ก
+ tk: Daniýa
+ tl: Dinamarka
+ tr: Danimarka
+ tt: Дания
+ ug: دانىيە
+ uk: Данія
+ ur: ڈنمارک
+ uz: Daniya
+ vi: Đan Mạch
+ vo: Danän
+ wo: Danmaark
+ yi: דענמארק
+ yo: Dẹ́nmárkì
+ zh: 丹麦
+ zu: IDenimaki
--- /dev/null
+name:
+ default: Dominica
+ af: Dominika
+ ar: دومينيكا
+ be: Дамініка
+ br: Republik Dominikan
+ cs: Dominika
+ de: Dominica
+ el: Δομινίκα
+ en: Dominica
+ eo: Dominiko
+ es: Dominica
+ eu: Dominika
+ fa: دومینیکا
+ fi: Dominica
+ fr: Dominique
+ fy: Dominika
+ ga: Doiminice
+ gd: Doiminicia
+ he: דומיניקה
+ hr: Dominika
+ hu: Dominikai Közösség
+ id: Dominika
+ is: Dóminíka
+ it: Dominìca
+ ja: ドミニカ
+ lt: Dominika
+ lv: Dominika
+ mn: Доминика
+ nl: Dominica
+ pl: Dominika
+ pt: Dominica
+ ru: Доминика
+ se: Dominica
+ sk: Dominika
+ sl: Dominika
+ sv: Dominica
+ th: ประเทศโดมินิกา
+ tr: Dominika
+ uk: Домініка
+ vo: Dominikeän
+ zh: 多米尼克
--- /dev/null
+name:
+ default: República Dominicana
+ af: Dominikaanse Republiek
+ am: ዶሚኒካን ሪፐብሊክ
+ an: Republica Dominicana
+ ar: جمهورية الدومينيكان
+ ay: Republika Duminikana
+ az: Dominikan Respublikası
+ be: Дамініканская Рэспубліка
+ bg: Доминиканска република
+ bn: ডোমিনিকান প্রজাতন্ত্র
+ bo: ཌོ་མི་ནི་ཀན་སྤྱི་མཐུན་རྒྱལ་ཁབ།
+ br: Republik Dominikan
+ bs: Dominikanska Republika
+ ca: República Dominicana
+ ce: Доминикан Пачхьалкх
+ cs: Dominikánská republika
+ cy: Gweriniaeth Dominica
+ da: Dominikanske Republik
+ de: Dominikanische Republik
+ dv: ޑޮމިނިކަން ޖުމްހޫރިއްޔާ
+ ee: Dominican Republic
+ el: Δομινικανή Δημοκρατία
+ en: Dominican Republic
+ eo: Domingo
+ es: República Dominicana
+ et: Dominikaani Vabariik
+ eu: Dominikar Errepublika
+ fa: جمهوری دومینیکن
+ fi: Dominikaaninen tasavalta
+ fo: Dominikanalýðveldið
+ fr: République dominicaine
+ fy: Dominikaanske Republyk
+ ga: An Phoblacht Dhoiminiceach
+ gd: Poblachd Dhoiminicia
+ gl: República Dominicana
+ gv: Yn Phobblaght Ghominicagh
+ he: הרפובליקה הדומיניקנית
+ hi: डोमिनिकन गणराज्य
+ hr: Dominikanska Republika
+ ht: Dominikani
+ hu: Dominikai Köztársaság
+ hy: Դոմինիկյան Հանրապետություն
+ ia: Republica Dominican
+ id: Republik Dominika
+ io: Dominikana Republiko
+ is: Dóminíska lýðveldið
+ it: Repubblica Dominicana
+ ja: ドミニカ共和国
+ jv: Republik Dominika
+ ka: დომინიკელთა რესპუბლიკა
+ kk: Доминикан Республикасы
+ kn: ಡೊಮಿನಿಕ ಗಣರಾಜ್ಯ
+ ko: 도미니카 공화국
+ ku: Komara Domînîk
+ kw: Repoblek Dhominikanek
+ la: Respublica Dominicana
+ lb: Dominikanesch Republik
+ li: Dominicaanse Rippubliek
+ ln: Republiki Dominikani
+ lt: Dominikos Respublika
+ lv: Dominikāna
+ mi: Te Whenua Tominika
+ mk: Доминиканска Република
+ ml: ഡൊമനിക്കൻ റിപ്പബ്ലിക്
+ mn: Доминиканы Бүгд Найрамдах Улс
+ mr: डॉमिनिकन प्रजासत्ताक
+ ms: Republik Dominika
+ mt: Repubblika Dominikana
+ my: ဒိုမီနီကန်သမ္မတနိုင်ငံ
+ na: Ripubrikin Dominika
+ ne: डोमिनिकन गणतन्त्र
+ nl: Dominicaanse Republiek
+ nn: Den dominikanske republikken
+ "no": Den dominikanske republikk
+ nv: Domingo Bikéyah
+ oc: Republica Dominicana
+ or: ଡୋମେନିକାନ ରିପବ୍ଲିକ
+ os: Доминиканæйы Республикæ
+ pa: ਡੋਮਿਨਿਕਾਈ ਗਣਰਾਜ
+ pl: Dominikana
+ ps: ډومنيکان جمهوريت
+ pt: República Dominicana
+ qu: Duminikana
+ ro: Republica Dominicană
+ ru: Доминиканская Республика
+ rw: Repubulika ya Dominikani
+ sa: डोमोनिकन रिपब्लिक
+ se: Dominikána dásseváldi
+ sh: Dominikanska Republika
+ sk: Dominikánska republika
+ sl: Dominikanska republika
+ sq: Republika Dominikane
+ sr: Доминиканска Република
+ ss: Tibuse weDomonokha
+ su: Républik Dominika
+ sv: Dominikanska Republiken
+ sw: Jamhuri ya Dominika
+ ta: டொமினிக்கன் குடியரசு
+ te: డొమెనికన్ రిపబ్లిక్
+ tg: Ҷумҳурии Доминикана
+ th: สาธารณรัฐโดมินิกัน
+ tl: Republikang Dominikano
+ tr: Dominik Cumhuriyeti
+ tt: Доминикан Җөмһүрияте
+ ug: دومىنىكان جۇمھۇرىيەتى
+ uk: Домініканська Республіка
+ ur: جمہوریہ ڈومینیکن
+ uz: Dominika Respublikasi
+ vi: Cộng hòa Dominica
+ vo: Sandominän
+ wo: Réewum Dominik
+ yi: דאמיניקאנישע רעפובליק
+ yo: Orílẹ̀òmìnira Dómíníkì
+ zh: 多明尼加共和國
--- /dev/null
+name:
+ default: Algérie / ⵍⵣⵣⴰⵢⴻⵔ / الجزائر
+ af: Algerië
+ ak: Algeria
+ am: አልጄሪያ
+ an: Alcheria
+ ar: الجزائر
+ as: আলজেৰিয়া
+ ay: Alhirya
+ az: Əlcəzair
+ ba: Алжи́р
+ be: Алжы́р
+ bg: Алжѝр
+ bh: अल्जीरिया
+ bm: Algeri
+ bn: আলজেরিয়া
+ bo: ཨཱལ་ཇི་རི་ཡ།
+ br: Aljeria
+ bs: Alžir
+ ca: Algèria
+ ce: Алжи́р
+ cs: Alžírsko
+ cv: Алжир
+ cy: Algeria
+ da: Algeriet
+ de: Algerien
+ dv: ޖަޒާއިރު
+ dz: ཨཱལ་ཇི་རི་ཡ
+ ee: Ɔldzeria
+ el: Αλγερία
+ en: Algeria
+ eo: Alĝerio
+ es: Argelia
+ et: Alžeeria
+ eu: Aljeria
+ fa: الجزایر
+ ff: Aljeri
+ fi: Algeria
+ fo: Algeria
+ fr: Algérie
+ fy: Algerije
+ ga: An Ailgéir
+ gd: Aildiria
+ gl: Alxeria
+ gn: Ayhelia
+ gu: અલ્જીરિયા
+ gv: Yn Algear
+ ha: Aljeriya
+ he: אלג'יריה
+ hi: अल्जीरिया
+ hr: Alžir
+ ht: Aljeri
+ hu: Algéria
+ hy: Ալժիր
+ ia: Algeria
+ id: Aljazair
+ ie: Algeria
+ ig: Algeria
+ io: Aljeria
+ is: Alsír
+ it: Algeria
+ ja: アルジェリア
+ jv: Aljazair
+ ka: ალჟირი
+ kg: Algeria
+ ki: Algeria
+ kk: Алжир
+ kl: Algeriet
+ km: ប្រទេសអាល់ហ្សេរី
+ kn: ಅಲ್ಜೀರಿಯ
+ ko: 알제리
+ ks: اٮ۪لجیرِیا
+ ku: Cezayir
+ kw: Aljeri
+ ky: Алжир
+ la: Algerium
+ lb: Algerien
+ lg: Algeria
+ li: Algerieë
+ ln: Aljeria
+ lo: ແອລຈິເລຍ
+ lt: Alžyras
+ lv: Alžīrija
+ mg: Aljeria
+ mi: Aratiria
+ mk: Алжир
+ ml: അൾജീറിയ
+ mn: Алжир
+ mr: अल्जीरिया
+ ms: Algeria
+ mt: Alġerija
+ my: အယ်လ်ဂျီးရီးယားနိုင်ငံ
+ na: Ardjiriya
+ ne: अल्जेरिया
+ nl: Algerije
+ nn: Algerie
+ "no": Algerie
+ nv: Aljííya
+ ny: Algeria
+ oc: Argeria
+ om: Aljeeriyaa
+ or: ଆଲଜେରିଆ
+ os: Алжир
+ pa: ਅਲਜੀਰੀਆ
+ pi: अल्जीरिया
+ pl: Algieria
+ ps: الجزاير
+ pt: Argélia
+ qu: Alhirya
+ rm: Algeria
+ rn: Alijeriya
+ ro: Algeria
+ ru: Алжир
+ rw: Aligeriya
+ sa: अल्जीरिया
+ sc: Algerìa
+ sd: الجزائر
+ se: Algeria
+ sg: Alazëri
+ sh: Alžir
+ si: ඇල්ජීරියාව
+ sk: Alžírsko
+ sl: Alžirija
+ sm: Algeria
+ sn: Algeria
+ so: Aljeeriya
+ sq: Algjeria
+ sr: Алжир
+ ss: i-Alijeriya
+ st: Algeria
+ su: Aljazair
+ sv: Algeriet
+ sw: Algeria
+ ta: அல்சீரியா
+ te: అల్జీరియా
+ tg: Алҷазоир
+ th: ประเทศแอลจีเรีย
+ ti: አልጀሪያ
+ tk: Alžir
+ tl: Arhelya
+ to: ʻAisilia
+ tr: Cezayir
+ ts: Algeriya
+ tt: Әлҗәзаи́р
+ tw: Algeria
+ ug: ئالجىرىيە
+ uk: Алжир
+ ur: الجزائر
+ uz: Jazoir
+ vi: Algérie
+ vo: Laljerän
+ wa: Aldjereye
+ wo: Alseeri
+ xh: I-Algeria
+ yi: אַלזשיר
+ yo: Àlgéríà
+ za: Algeria
+ zh: 阿尔及利亚
+ zu: iAljiriya
--- /dev/null
+name:
+ default: Ecuador
+ am: ኤኳዶር
+ an: Ecuador
+ ar: الإكوادور
+ ay: Ikwadur
+ az: Ekvador
+ ba: Эквадор
+ be: Эквадор
+ bg: Еквадор
+ bn: ইকুয়েডর
+ bo: ཨེ་ཁོའོ་ཌོར།
+ br: Ecuador
+ bs: Ekvador
+ ca: Equador
+ ce: Эквадор
+ cs: Ekvádor
+ cv: Эквадор
+ cy: Ecuador
+ da: Ecuador
+ de: Ecuador
+ dv: އިކުއެޑޯރު
+ ee: Ecuador
+ el: Ισημερινός (χώρα)
+ en: Ecuador
+ eo: Ekvadoro
+ es: Ecuador
+ et: Ecuador
+ eu: Ekuador
+ fa: اکوادور
+ fi: Ecuador
+ fo: Ekvador
+ fr: Équateur
+ fy: Ekwador
+ ga: Eacuadór
+ gd: Eacuador
+ gl: Ecuador
+ gn: Ekuator
+ gu: ઈક્વેડોર
+ gv: Ecuador
+ he: אקוודור
+ hi: ईक्वाडोर
+ hr: Ekvador
+ ht: Ekwatè
+ hu: Ecuador
+ hy: Էկվադոր
+ ia: Ecuador
+ id: Ekuador
+ ie: Ecuador
+ io: Equador
+ is: Ekvador
+ it: Ecuador
+ ja: エクアドル
+ jv: Ekuador
+ ka: ეკვადორი
+ ki: Ecuador
+ kk: Эквадор
+ kl: Ecuador
+ kn: ಎಕ್ವಡಾರ್
+ ko: 에콰도르
+ ku: Ekuador
+ kw: Pow Ekwadorel
+ la: Aequatoria
+ lb: Ecuador
+ li: Ecuador
+ ln: Republíki ya Ekwatéli
+ lt: Ekvadoras
+ lv: Ekvadora
+ mi: Ekuatoa
+ mk: Еквадор
+ ml: ഇക്വഡോർ
+ mn: Эквадор
+ mr: इक्वेडोर
+ ms: Ecuador
+ mt: Ekwador
+ my: အီကွေဒေါနိုင်ငံ
+ na: Ekwador
+ ne: इक्वेडर
+ nl: Ecuador
+ nn: Ecuador
+ "no": Ecuador
+ nv: Kéyah Nahasdzáán Ałníiʼgi Siʼánígíí
+ oc: Eqüator
+ or: ଏକ୍ଵାଡୋର
+ os: Эквадор
+ pa: ਏਕੁਆਦੋਰ
+ pl: Ekwador
+ ps: اېکوادور
+ pt: Equador
+ qu: Ikwadur
+ rm: Ecuador
+ ro: Ecuador
+ ru: Эквадор
+ rw: Ekwadoro
+ sa: एक्वाडोर
+ se: Ecuador
+ sh: Ekvador
+ sk: Ekvádor
+ sl: Ekvador
+ so: Ikwadoor
+ sq: Ekuadori
+ sr: Еквадор
+ su: Ékuador
+ sv: Ecuador
+ sw: Ekuador
+ ta: எக்குவடோர்
+ te: ఈక్వడార్
+ tg: Экуадор
+ th: ประเทศเอกวาดอร์
+ tl: Ecuador
+ tr: Ekvador
+ tt: Эквадор
+ ug: ئېكۋادور
+ uk: Еквадор
+ ur: ایکواڈور
+ uz: Ekvador
+ vi: Ecuador
+ vo: Lekvadorän
+ wo: Ekwadoor
+ yi: עקוואדאר
+ yo: Ẹ̀kùàdọ̀r
+ zh: 厄瓜多尔
--- /dev/null
+name:
+ default: Eesti
+ af: Estland
+ am: ኤስቶኒያ
+ an: Estonia
+ ar: إستونيا
+ az: Estoniya
+ ba: Эстония
+ be: Эстонія
+ bg: Естония
+ bi: Estonia
+ bm: Estonia
+ bn: ইস্তোনিয়া
+ bo: ཨིསུ་ཊོ་ནིཡ།
+ br: Estonia
+ bs: Estonija
+ ca: Estònia
+ ce: Эстони
+ co: Estonia
+ cs: Estonsko
+ cu: Єсть
+ cv: Эстони
+ cy: Estonia
+ da: Estland
+ de: Estland
+ dz: ཨིསི་ཊོ་ནི་ཡ།
+ ee: Estonia
+ el: Εσθονία
+ en: Estonia
+ eo: Estonio
+ es: Estonia
+ et: Eesti
+ eu: Estonia
+ fa: استونی
+ ff: Estoniya
+ fi: Viro
+ fo: Estland
+ fr: Estonie
+ fy: Estlân
+ ga: An Eastóin
+ gd: Eastòinia
+ gl: Estonia
+ gn: Etoña
+ gu: ઈસ્ટોનિયા
+ gv: Yn Estaan
+ he: אסטוניה
+ hi: एस्टोनिया
+ hr: Estonija
+ ht: Estoni
+ hu: Észtország
+ hy: Էստոնիա
+ ia: Estonia
+ id: Estonia
+ ie: Estonia
+ io: Estonia
+ is: Eistland
+ it: Estonia
+ ja: エストニア
+ jv: Estonia
+ ka: ესტონეთი
+ kg: Estonia
+ kk: Эстония
+ kl: Estlandi
+ kn: ಎಸ್ಟೊನಿಯ
+ ko: 에스토니아
+ ku: Estonya
+ kv: Эстония
+ kw: Estoni
+ ky: Эстония
+ la: Estonia
+ lb: Estland
+ li: Esland
+ ln: Estonia
+ lt: Estija
+ lv: Igaunija
+ mg: Estonia
+ mi: Etonia
+ mk: Естонија
+ ml: എസ്റ്റോണിയ
+ mn: Эстон
+ mr: एस्टोनिया
+ ms: Estonia
+ mt: Estonja
+ my: အက်စ်တိုးနီးယားနိုင်ငံ
+ na: Etoniya
+ ne: इस्टोनिया
+ nl: Estland
+ nn: Estland
+ "no": Estland
+ nv: Ééstii Bikéyah
+ oc: Estònia
+ or: ଏଷ୍ଟୋନିଆ
+ os: Эстони
+ pa: ਇਸਤੋਨੀਆ
+ pl: Estonia
+ ps: اېسټونيا
+ pt: Estónia
+ qu: Istunya
+ ro: Estonia
+ ru: Эстония
+ rw: Esitoniya
+ sa: एस्टोनिया
+ sc: Estònia
+ se: Estteeana
+ sh: Estonija
+ si: එස්ටෝනියා
+ sk: Estónsko
+ sl: Estonija
+ so: Estoniya
+ sq: Estonia
+ sr: Естонија
+ ss: IWestoniya
+ st: Estonia
+ su: Éstonia
+ sv: Estland
+ sw: Estonia
+ ta: எசுத்தோனியா
+ te: ఎస్టోనియా
+ tg: Эстония
+ th: ประเทศเอสโตเนีย
+ tk: Estoniýa
+ tl: Estonia
+ tr: Estonya
+ tt: Эстония
+ ug: ئېستونىيە
+ uk: Естонія
+ ur: استونیا
+ uz: Estoniya
+ ve: Estonia
+ vi: Estonia
+ vo: Lestiyän
+ wo: Estooni
+ yi: עסטלאנד
+ yo: Estóníà
+ zh: 爱沙尼亚
+ zu: I-Estoniya
--- /dev/null
+name:
+ default: مصر
+ ab: Мы́сры
+ af: Egipte
+ ak: Igyipt
+ am: ግብፅ
+ an: Echipto
+ ar: مصر
+ as: ইজিপ্ত
+ av: Еги́пет
+ ay: Iqiqtu
+ az: Misir
+ ba: Мысыр
+ be: Егі́пет
+ bg: Египет
+ bh: मिस्र
+ bm: Misra
+ bn: মিশর
+ bo: ཨའི་ཅི།
+ br: Egipt
+ bs: Egipat
+ ca: Egipte
+ ce: Мисар
+ ch: Ehiptu
+ cs: Egypt
+ cu: Єгѷптъ
+ cy: Yr Aifft
+ da: Egypten
+ de: Ägypten
+ dv: މިޞްރު
+ ee: Edzipti
+ el: Αίγυπτος
+ en: Egypt
+ eo: Egiptio
+ es: Egipto
+ et: Egiptus
+ eu: Egipto
+ fa: مصر
+ ff: Ejipt
+ fi: Egypti
+ fj: Ijipta
+ fo: Egyptaland
+ fr: Égypte
+ fy: Egypte
+ ga: An Éigipt
+ gd: An Èipheit
+ gl: Exipto
+ gn: Ehipto
+ gu: ઇજિપ્ત
+ gv: Yn Egypt
+ ha: Misra
+ he: מצרים
+ hi: मिस्र
+ hr: Egipat
+ ht: Ejip
+ hu: Egyiptom
+ hy: Եգիպտոս
+ ia: Egypto
+ id: Mesir
+ ie: Egiptia
+ ig: Egypt
+ io: Egiptia
+ is: Egyptaland
+ it: Egitto
+ ja: エジプト
+ jv: Mesir
+ ka: ეგვიპტე
+ kg: Misiri
+ ki: Egypt
+ kk: Мысыр
+ kl: Egypt
+ km: អេហ៊្សីប
+ kn: ಈಜಿಪ್ಟ್
+ ko: 이집트
+ ks: مِسر
+ ku: Misir
+ kv: Египет
+ kw: Ejyp
+ ky: Египет
+ la: Aegyptus
+ lb: Egypten
+ lg: Egypt
+ li: Egypte
+ ln: Ejipte
+ lo: ອີຢິບ
+ lt: Egiptas
+ lv: Ēģipte
+ mg: Ejipta
+ mi: Īhipa
+ mk: Египет
+ ml: ഈജിപ്ത്
+ mn: Египет
+ mr: इजिप्त
+ ms: Mesir
+ mt: Eġittu
+ my: အီဂျစ်နိုင်ငံ
+ na: Idjipt
+ ne: मिश्र
+ nl: Egypte
+ nn: Egypt
+ "no": Egypt
+ nv: Ííjip
+ oc: Egipte
+ om: Ijiipti
+ or: ଇଜିପ୍ଟ
+ os: Мысыр
+ pa: ਮਿਸਰ
+ pi: ईजिप्ट
+ pl: Egipt
+ ps: مصر
+ pt: Egito
+ qu: Ihiptu
+ rm: Egipta
+ rn: Egipto
+ ro: Egipt
+ ru: Египет
+ sa: ईजिप्तदेशः
+ sc: Egittu
+ sd: مصر
+ se: Egypta
+ sg: Kâmitâ
+ sh: Egipat
+ si: ඊජීප්තුව
+ sk: Egypt
+ sl: Egipt
+ sm: Aikupito
+ sn: Egypt
+ so: Masar
+ sq: Egjipti
+ sr: Египат
+ ss: iGibhithe
+ st: Egepeta
+ su: Mesir
+ sv: Egypten
+ sw: Misri
+ ta: எகிப்து
+ te: ఈజిప్టు
+ tg: Миср
+ th: ประเทศอียิปต์
+ ti: ግብጽ
+ tk: Müsür
+ tl: Ehipto
+ to: ʻIsipite
+ tr: Mısır
+ ts: Gibita
+ tt: Мисы́р
+ tw: Egypt
+ ty: ’Aifiti
+ ug: مىسىر
+ uk: Єги́пет
+ ur: مصر
+ uz: Misr
+ vi: Ai Cập
+ vo: Lägüptän
+ wa: Edjipe
+ wo: Isipt
+ yi: עגיפטן
+ yo: Ẹ́gíptì
+ za: Aehciz
+ zh: 埃及
+ zu: iGibhithe
--- /dev/null
+name:
+ default: الجمهورية العربية الصحراوية الديمقراطية
+ ar: الجمهورية العربية الصحراوية الديمقراطية
+ cs: Saharská arabská demokratická republika
+ de: Demokratische Arabische Republik Sahara
+ el: Δημοκρατία της Σαχάρας
+ en: Sahrawi Arab Democratic Republic
+ es: República Árabe Saharaui Democrática
+ fa: جمهوری دموکراتیک عربی صحرا
+ fr: République arabe sahraouie démocratique
+ it: Repubblica Araba Democratica dei Sahrawi
+ lt: Sacharos Arabų Demokratinė Respublika
+ nl: Arabische Democratische Republiek Sahara
+ pt: República Árabe Saaraui Democrática
+ ru: Сахарская Арабская Демократическая Республика
+ ur: صحراوی عرب عوامی جمہوریہ
+ zh: 撒拉威阿拉伯民主共和國
--- /dev/null
+name:
+ default: ኤርትራ Eritrea إرتريا
+ af: Eritrea
+ am: ኤርትራ
+ an: Eritrea
+ ar: إرتريا
+ az: Eritreya
+ ba: Эритрея
+ be: Эрытрэя
+ bg: Еритрея
+ bm: Eritrea
+ bn: ইরিত্রিয়া
+ bo: ཨི་རི་ཏྲའ།
+ br: Eritrea
+ bs: Eritreja
+ ca: Eritrea
+ ce: Эритре
+ cs: Eritrea
+ cu: Єрѷѳрїꙗ
+ cy: Eritrea
+ da: Eritrea
+ de: Eritrea
+ dv: އެރިތުރިއާ
+ ee: Eritrea
+ el: Ερυθραία
+ en: Eritrea
+ eo: Eritreo
+ es: Eritrea
+ et: Eritrea
+ eu: Eritrea
+ fa: اریتره
+ fi: Eritrea
+ fo: Eritrea
+ fr: Érythrée
+ fy: Eritreä
+ ga: An Eiritré
+ gd: Eartra
+ gl: Eritrea
+ gn: Erityrea
+ gv: Eritrea
+ he: אריתריאה
+ hi: इरित्रिया
+ hr: Eritreja
+ ht: Eritre
+ hu: Eritrea
+ hy: Էրիթրեա
+ ia: Eritrea
+ id: Eritrea
+ ie: Eritréa
+ io: Eritrea
+ is: Erítrea
+ it: Eritrea
+ ja: エリトリア
+ jv: Eritrea
+ ka: ერიტრეა
+ kg: Eritrea
+ kk: Эритрея
+ kn: ಎರಿಟ್ರಿಯ
+ ko: 에리트레아
+ ku: Erîtrea
+ kw: Eritrea
+ ky: Эритрея
+ la: Erythraea
+ lb: Eritrea
+ li: Eritrea
+ ln: Elitré
+ lt: Eritrėja
+ lv: Eritreja
+ mi: Eritēria
+ mk: Еритреја
+ ml: എരിട്രിയ
+ mn: Эритрей
+ mr: इरिट्रिया
+ ms: Eritrea
+ mt: Eritrea
+ my: အီရီထရီးယားနိုင်ငံ
+ na: Eritrea
+ ne: एरिट्रिया
+ nl: Eritrea
+ nn: Eritrea
+ "no": Eritrea
+ oc: Eritrèa
+ om: Eritrea
+ or: ଇରିଟ୍ରିଆ
+ os: Эритрей
+ pa: ਇਰੀਤਰੀਆ
+ pl: Erytrea
+ ps: اریتره
+ pt: Eritreia
+ qu: Iritriya
+ ro: Eritreea
+ ru: Эритрея
+ rw: Eritereya
+ sa: इरीट्रिया
+ sc: Eritrea
+ se: Eritrea
+ sg: Eritrëe
+ sh: Eritreja
+ sk: Eritrea
+ sl: Eritreja
+ sn: Eritrea
+ so: Eratareya
+ sq: Eritrea
+ sr: Еритреја
+ ss: IRitheya
+ st: Eritrea
+ su: Éritréa
+ sv: Eritrea
+ sw: Eritrea
+ ta: எரித்திரியா
+ te: ఎరిత్రియా
+ tg: Эритрея
+ th: ประเทศเอริเทรีย
+ ti: ኤርትራ
+ tk: Eritreýa
+ tl: Eritrea
+ tr: Eritre
+ ts: Eritreya
+ tt: Эритрея
+ ug: ئېرىترېيە
+ uk: Еритрея
+ ur: اریتریا
+ uz: Eritriya
+ vi: Eritrea
+ vo: Lerüträn
+ wo: Eritere
+ yi: עריטרעא
+ yo: Ẹritrẹ́à
+ zh: 厄立特里亚
+ zu: I-Eritrea
--- /dev/null
+name:
+ default: España
+ af: Spanje
+ am: እስፓንያ
+ an: Espanya
+ ar: إسبانيا
+ ay: Ispaña
+ az: İspaniya
+ ba: Испания
+ be: Іспанія
+ bg: Испания
+ bi: Spain
+ bn: স্পেন
+ bo: ཞི་པན་ཡ།
+ br: Spagn
+ bs: Španija
+ ca: Espanya
+ ce: Испани
+ ch: España
+ co: Spagna
+ cs: Španělsko
+ cu: Їспанїꙗ
+ cv: Испани
+ cy: Sbaen
+ da: Spanien
+ de: Spanien
+ dv: އިސްޕެއިން
+ dz: སིཔཱེན་
+ ee: Spain
+ el: Ισπανία
+ en: Spain
+ eo: Hispanio
+ es: España
+ et: Hispaania
+ eu: Espainia
+ fa: اسپانیا
+ fi: Espanja
+ fo: Spania
+ fr: Espagne
+ fy: Spanje
+ ga: An Spáinn
+ gd: An Spàinn
+ gl: España
+ gn: España
+ gu: સ્પેન
+ gv: Yn Spaainey
+ he: ספרד
+ hi: स्पेन
+ hr: Španjolska
+ ht: Espay
+ hu: Spanyolország
+ hy: Իսպանիա
+ ia: Espania
+ id: Spanyol
+ ie: Hispania
+ ig: Spain
+ ik: Spaña
+ io: Hispania
+ is: Spánn
+ it: Spagna
+ iu: ᓯᐸᐃᓐ
+ ja: スペイン
+ jv: Spanyol
+ ka: ესპანეთი
+ kg: Espania
+ kk: Испания
+ kl: Spania
+ km: អេស្ប៉ាញ
+ kn: ಸ್ಪೇನ್
+ ko: 스페인
+ ku: Spanya
+ kv: Испания
+ kw: Spayn
+ ky: Испания
+ la: Hispania
+ lb: Spuenien
+ li: Spanje
+ ln: Espania
+ lt: Ispanija
+ lv: Spānija
+ mg: Espaina
+ mi: Peina
+ mk: Шпанија
+ ml: സ്പെയിൻ
+ mn: Испани
+ mr: स्पेन
+ ms: Sepanyol
+ mt: Spanja
+ my: စပိန်နိုင်ငံ
+ na: Pain
+ nb: Spania
+ ne: स्पेन
+ nl: Spanje
+ nn: Spania
+ "no": Spania
+ nv: Dibé Diníí Bikéyah
+ oc: Espanha
+ or: ସ୍ପେନ
+ os: Испани
+ pa: ਸਪੇਨ
+ pl: Hiszpania
+ ps: اسپانیا
+ pt: Espanha
+ qu: Ispaña
+ rm: Spagna
+ rn: Esipanye
+ ro: Spania
+ ru: Испания
+ rw: Esipanye
+ sa: स्पेन्
+ sc: Ispagna
+ se: Espánnja
+ sh: Španija
+ sk: Španielsko
+ sl: Španija
+ sm: Spania
+ so: Isbania
+ sq: Spanja
+ sr: Шпанија
+ ss: Sipeyini
+ st: Spain
+ su: Spanyol
+ sv: Spanien
+ sw: Hispania
+ ta: எசுப்பானியா
+ te: స్పెయిన్
+ tg: Испониё
+ th: ประเทศสเปน
+ tk: Ispaniýa
+ tl: Espanya
+ to: Sepeni
+ tr: İspanya
+ ts: Spaniya
+ tt: Испания
+ ty: Paniora
+ ug: ئىسپانىيە
+ uk: Іспанія
+ ur: ہسپانیہ
+ uz: Ispaniya
+ vi: Tây Ban Nha
+ vo: Spanyän
+ wa: Espagne
+ wo: Ispaañ
+ yi: שפאניע
+ yo: Spéìn
+ za: Sihbanhyaz
+ zh: 西班牙
+ zu: ISpeyini
--- /dev/null
+name:
+ default: ኢትዮጵያ
+ af: Ethiopië
+ ak: Ithiopia
+ am: ኢትዮጵያ
+ an: Etiopia
+ ar: إثيوبيا
+ av: Хабашистан
+ az: Efiopiya
+ ba: Эфио́пия
+ be: Эфіопія
+ bg: Етиопия
+ bh: इथियोपिया
+ bm: Etiopia
+ bn: ইথিওপিয়া
+ bo: ཨི་ཐི་ཨོ་པི་ཡ།
+ br: Etiopia
+ bs: Etiopija
+ ca: Etiòpia
+ ce: Эфио́пи
+ cs: Etiopie
+ cu: Єѳїопі́ꙗ
+ cv: Эфиопи
+ cy: Ethiopia
+ da: Etiopien
+ de: Äthiopien
+ dv: ޙަބުޝްކަރަ
+ dz: ཨི་ཐི་ཡོ་པི་ཡ
+ ee: Etiopia
+ el: Αιθιοπία
+ en: Ethiopia
+ eo: Etiopio
+ es: Etiopía
+ et: Etioopia
+ eu: Etiopia
+ fa: اتیوپی
+ fi: Etiopia
+ fo: Etiopia
+ fr: Éthiopie
+ fy: Etioopje
+ ga: an Aetóip
+ gd: An Aetiòp
+ gl: Etiopía - Ityop'iya
+ gn: Etiopia
+ gu: ઇથિયોપિયા
+ gv: yn Eetoip
+ ha: Ethiopia
+ he: אתיופיה
+ hi: इथियोपिया
+ hr: Etiopija
+ ht: Etyopi
+ hu: Etiópia
+ hy: Եթովպիա
+ ia: Ethiopia
+ id: Ethiopia
+ ie: Etiopia
+ ig: Ethiopia
+ io: Etiopia
+ is: Eþíópía
+ it: Etiopia
+ ja: エチオピア
+ jv: Étiopia
+ ka: ეთიოპია
+ kg: Itiopia
+ ki: Ethiopia
+ kk: Ефиопия
+ km: អេត្យូពី
+ kn: ಇತಿಯೋಪಿಯ
+ ko: 에티오피아
+ ks: اِتھوپِیا
+ ku: Etiyopya
+ kv: Эфиопия
+ kw: Ethiopi
+ ky: Эфиопия
+ la: Aethiopia
+ lb: Ethiopien
+ lg: Ethiopia
+ li: Ethiopië
+ ln: Etiopi
+ lo: ເອທີໂອເປຍ
+ lt: Etiopija
+ lv: Etiopija
+ mg: Etiopia
+ mi: Etiopia
+ mk: Етиопија
+ ml: എത്യോപ്യ
+ mn: Этиоп
+ mr: इथियोपिया
+ ms: Habsyah
+ mt: Etjopja
+ my: အီသီယိုးပီးယားနိုင်ငံ
+ na: Itiyopiya
+ ne: इथियोपिया
+ nl: Ethiopië
+ nn: Etiopia
+ "no": Etiopia
+ nv: Iithiyópya
+ oc: Etiopia
+ om: Itoophiyaa
+ or: ଇଥିଓପିଆ
+ os: Эфио́пи
+ pa: ਇਥੋਪੀਆ
+ pi: ईथ्योपिया
+ pl: Etiopia
+ ps: اېتوپیا
+ pt: Etiópia
+ qu: Ithiyupya
+ rm: Etiopia
+ ro: Etiopia
+ ru: Эфиопия
+ rw: Etiyopiya
+ sa: ईथ्योपिया
+ sc: Etiòpia
+ se: Etiopia
+ sg: Etiopïi
+ sh: Etiopija
+ si: ඉතියෝපියාව
+ sk: Etiópia
+ sl: Etiópija
+ sm: Ethiopia
+ sn: Ethiopia
+ so: Itoobiya
+ sq: Etiopia
+ sr: Етиопија
+ ss: iTopiya
+ st: Ethiopia
+ su: Étiopia
+ sv: Etiopien
+ sw: Ethiopia
+ ta: எத்தியோப்பியா
+ te: ఇథియోపియా
+ tg: Эфиопия
+ th: เอธิโอเปีย
+ ti: ኢትዮጵያ
+ tk: Efiopiýa
+ tl: Etiyopiya
+ to: ʻItiōpea
+ tr: Etiyopya
+ ts: Topiya
+ tt: Хәбәшстан
+ ug: ئېفىئوپىيە
+ uk: Ефіо́пія
+ ur: ایتھوپیا
+ uz: Efiopiya
+ vi: Ethiopia
+ vo: Lätiopän
+ wa: Etiopeye
+ wo: Ecoopi
+ xh: iTopiya
+ yi: עטיאָפּיע
+ yo: Ethiópíà
+ za: Ethiopia
+ zh: 埃塞俄比亚
+ zu: i-Ithiopia
--- /dev/null
+name:
+ default: Suomi
+ ab: Суоми
+ af: Finland
+ am: ፊንላንድ
+ an: Finlandia
+ ar: فنلندا
+ ay: Phini suyu
+ az: Finlandiya
+ ba: Финляндия
+ be: Фінляндыя
+ bg: Финландия
+ bi: Finland
+ bm: Finland
+ bn: ফিনল্যান্ড
+ bo: ཧྥིན་ལན
+ br: Finland
+ bs: Finska
+ ca: Finlàndia
+ ce: Финлянди
+ co: Finlandia
+ cs: Finsko
+ cu: Соумь
+ cv: Финлянди
+ cy: Y Ffindir
+ da: Finland
+ de: Finnland
+ dv: ފިންލޭންޑު
+ dz: ཕིན་ལེནཌ་
+ ee: Finland
+ el: Φινλανδία
+ en: Finland
+ eo: Finnlando
+ es: Finlandia
+ et: Soome
+ eu: Finlandia
+ fa: فنلاند
+ fi: Suomi
+ fo: Finnland
+ fr: Finlande
+ fy: Finlân
+ ga: An Fhionlainn
+ gd: Suòmaidh
+ gl: Finlandia
+ gn: Hĩlandia
+ gu: ફીનલેંડ
+ gv: Finnlynn
+ he: פינלנד
+ hi: फ़िनलैंड
+ hr: Finska
+ ht: Fenlann
+ hu: Finnország
+ hy: Ֆինլանդիա
+ ia: Finlandia
+ id: Finlandia
+ ie: Finland
+ ig: Finland
+ io: Finlando
+ is: Finnland
+ it: Finlandia
+ iu: ᐃᓐᓚᓐᑦ
+ ja: フィンランド
+ jv: Finlandia
+ ka: ფინეთი
+ kg: Finlandi
+ ki: Finland
+ kk: Финландия
+ kl: Finlandi
+ kn: ಫಿನ್ಲ್ಯಾಂಡ್
+ ko: 핀란드
+ ks: فننش
+ ku: Fînland
+ kv: Финляндия
+ kw: Pow Finn
+ ky: Финляндия
+ la: Finnia
+ lb: Finnland
+ lg: Finilandi
+ li: Finland
+ ln: Finilanda
+ lt: Suomija
+ lv: Somija
+ mg: Finlandy
+ mi: Whinarana
+ mk: Финска
+ ml: ഫിൻലാന്റ്
+ mn: Финлянд
+ mr: फिनलंड
+ ms: Finland
+ mt: Finlandja
+ my: ဖင်လန်နိုင်ငံ
+ na: Finland
+ ne: फिनल्याण्ड
+ nl: Finland
+ nn: Finland
+ "no": Finland
+ nv: Nahoditsʼǫʼłání
+ oc: Finlàndia
+ or: ଫିନଲ୍ୟାଣ୍ଡ
+ os: Финлянди
+ pa: ਫ਼ਿਨਲੈਂਡ
+ pl: Finlandia
+ ps: فېنلانډ
+ pt: Finlândia
+ qu: Phinsuyu
+ rm: Finlanda
+ ro: Finlanda
+ ru: Финляндия
+ rw: Finilande
+ sa: फिन्लैंड
+ sc: Finlandia
+ se: Suopma
+ sh: Finska
+ si: ෆින්ලන්තය
+ sk: Fínsko
+ sl: Finska
+ sm: Finalagi
+ so: Finland
+ sq: Finlanda
+ sr: Финска
+ ss: IFini
+ st: Finland
+ su: Finlandia
+ sv: Finland
+ sw: Ufini
+ ta: பின்லாந்து
+ te: ఫిన్లెండ్
+ tg: Финланд
+ th: ประเทศฟินแลนด์
+ tk: Finlýandiýa
+ tl: Pinlandiya
+ tr: Finlandiya
+ tt: Finlândiä
+ ug: فىنلاندىيە
+ uk: Фінляндія
+ ur: فن لینڈ
+ uz: Finlandiya
+ vi: Phần Lan
+ vo: Suomiyän
+ wa: Finlande
+ wo: Finlaand
+ yi: פינלאנד
+ yo: Finlandi
+ za: Finlan
+ zh: 芬兰
+ zu: IFinlandi
--- /dev/null
+name:
+ default: Viti
+ af: Fidji
+ am: ፊጂ
+ an: Fichi
+ ar: فيجي
+ az: Fici
+ ba: Фиджи
+ be: Фіджы
+ bg: Фиджи
+ bh: फिजी
+ bn: ফিজি
+ bo: ཧྥི་ཇི།
+ br: Fidji
+ bs: Fidži
+ ca: Fiji
+ ce: Фиджи
+ cs: Fidži
+ cv: Фиджи
+ cy: Fiji
+ da: Fiji
+ de: Fidschi
+ dv: ފިޖީ
+ el: Φίτζι
+ en: Fiji
+ eo: Fiĝioj
+ es: Fiyi
+ et: Fidži
+ eu: Fiji
+ fa: فیجی
+ ff: Fiiji
+ fi: Fidži
+ fj: Viti
+ fo: Fiji
+ fr: Fidji
+ fy: Fidzjy
+ ga: Fidsí
+ gd: Fìdi
+ gl: Fidxi - Viti
+ gv: Fiji
+ he: פיג'י
+ hi: फ़िजी
+ hr: Fidži
+ ht: Fidji
+ hu: Fidzsi-szigetek
+ hy: Ֆիջի
+ ia: Fiji
+ id: Fiji
+ io: Fidji
+ is: Fídjieyjar
+ it: Figi
+ ja: フィジー
+ jv: Fiji
+ ka: ფიჯი
+ kk: Фиджи
+ kn: ಫಿಜಿ
+ ko: 피지
+ ku: Fîjî
+ kw: Fiji
+ la: Viti
+ lb: Fidschi
+ li: Fiji
+ lt: Fidžis
+ lv: Fidži
+ mi: Whītī
+ mk: Фиџи
+ ml: ഫിജി
+ mn: Фижи
+ mr: फिजी
+ ms: Fiji
+ mt: Fiġi
+ my: ဖီဂျီနိုင်ငံ
+ na: Bidji
+ ne: फिजी
+ nl: Fiji
+ nn: Fiji
+ "no": Fiji
+ nv: Fííjii
+ oc: Fiji
+ or: ଫିଜି
+ os: Фиджи
+ pa: ਫ਼ਿਜੀ
+ pl: Fidżi
+ pt: Fiji
+ qu: Phiyi
+ ro: Fiji
+ ru: Фиджи
+ rw: Fiji
+ sa: फिजी
+ se: Fiži
+ sg: Fidyïi
+ sh: Fidži
+ si: ෆීජි
+ sk: Fidži
+ sl: Fidži
+ sm: Fiti
+ so: Fiji
+ sq: Fixhi
+ sr: Фиџи
+ su: Fiji
+ sv: Fiji
+ sw: Fiji
+ ta: பிஜி
+ te: ఫిజీ
+ tg: Фиҷи
+ th: ประเทศฟิจิ
+ tl: Piyi
+ to: Fisi
+ tr: Fiji
+ tt: Fiji
+ ug: فىجى
+ uk: Фіджі
+ ur: فجی
+ uz: Fiji
+ vi: Fiji
+ vo: Ficiyuäns
+ wo: Fiiji
+ yi: פידזשי
+ yo: Fíjì
+ zh: 斐濟
+ zu: IFiji
--- /dev/null
+name:
+ default: Falkland Islands
+ af: Falklandeilande
+ ak: Fɔlkman Aeland
+ am: ፎክላንድ ደሴቶች (ኢስላስ ማልቪናስ)
+ ar: جزر الفولكلاند
+ az: Folkland Adaları
+ be: Фалклендскія астравы
+ bg: Фолкландски острови (Малвини)
+ bm: Maluwini Gun
+ bn: ফকল্যান্ড আইল্যান্ড (ইসল্যাস মাসভেনিস)
+ bo: ཕལྐ་ལནྜ་གླིང་ཕྲན།
+ br: Inizi Falkland (Inizi Maloù)
+ bs: Folklandska ostrva (Malvinska ostrva)
+ ca: Illes Malvines
+ cs: Falklandy
+ cy: Ynysoedd y Falklands
+ da: Falklandsøerne
+ de: Falklandinseln
+ dz: ཕལྐ་ལནྜ་གླིང་ཚོམ (ཨིས་ལཱས་མལ་བི་ཎཱས)
+ ee: Falkland ƒudomekpowo (Islas Malvinas) nutome
+ el: Νήσοι Φώκλαντ
+ en: Falkland Islands
+ eo: Falklandoj
+ es: Islas Malvinas
+ et: Falklandi saared
+ eu: Falkland uharteak (Malvina uharteak)
+ fa: جزایر فالکلند
+ ff: Duuɗe Falkland
+ fi: Falklandinsaaret
+ fo: Falklandsoyggjarnar
+ fr: Îles Malouines (Îles Falkland)
+ fy: Falklâneilannen
+ ga: Oileáin Fháclainne
+ gd: Na h-Eileanan Fàclainn
+ gl: Illas Malvinas
+ gu: ફૉકલેન્ડ આઇલેન્ડ્સ
+ gv: Ny Malveenaghyn
+ ha: Tsibiran Falkilan
+ he: איי פוקלנד (מלווינס)
+ hi: फ़ॉकलैंड आइलैंड (इज्लास माल्विनास)
+ hr: Falklandski Otoci
+ hu: Falkland-szigetek
+ id: Kepulauan Falkland
+ is: Falklandseyjar
+ it: Isole Falkland
+ ja: フォークランド諸島 (マルビナス諸島)
+ ka: ფალკლენდის კუნძულები
+ ki: Visiwa vya Falkland
+ kl: Falklandi qeqertaq
+ km: កោះហ្វក់ឡែន (Islas Malvinas)
+ kn: ಫಾಲ್ಕ್ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು (ಇಸ್ಲಾಸ್ ಮಾಲ್ವಿನಸ್)
+ ko: 포클랜드 제도 (말비나스 군도)
+ ks: فٕلاکلینٛڑ جٔزیٖرٕ
+ ku: Giravên Malvîn
+ la: Insulae Malvinae
+ lb: Falkland Inselen
+ lg: Bizinga by'eFalikalandi
+ ln: Bisanga bya Falkland
+ lo: ຫມູ່ເກາະຟອກແລນ (ອິສລາສ ມາວິລນາສ)
+ lt: Folklando (Malvinų) Salos
+ lv: Folklenda salas
+ mg: Nosy Falkand
+ mk: Фолкландски Острови
+ ml: ഫോക്ൿലൻഡ് ദ്വീപുകൾ (മൽവിനാസ്)
+ mn: Фолклендийн Арлууд
+ mr: फॉकलंड बेटे (इस्लास मालविनास)
+ ms: Kepulauan Falkland (Islas Malvinas)
+ mt: Falkland Islands
+ my: ဖောက်ကလန် ကျွန်းစု
+ ne: फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास)
+ nl: Falklandeilanden
+ nn: Falklandsøyane
+ "no": Falklandsøyene
+ or: ଫଲ୍କଲ୍ୟାଣ୍ଡ ଦ୍ବୀପପୁଞ୍ଜ
+ pl: Falklandy
+ pt: Ilhas Malvinas
+ rm: Inslas dal Falkland
+ rn: Izinga rya Filikilandi
+ ro: Insulele Falkland
+ ru: Фолклендские острова
+ se: Falklandsullot
+ sg: Âzûâ tî Mälüîni
+ si: ෆෝක්ලන්ත දූපත් (අයිලස් මල්වියනාස්)
+ sk: Falklandy
+ sl: Falklandi
+ sn: Zvitsuwa zveFalklands
+ so: Jaziiradaha Fooklaan
+ sr: Фокландска (Малвинска) Острва
+ sv: Falklandsöarna
+ sw: Visiwa vya Falklandi (Islas Malvinas)
+ ta: ஃபாக்லாந்து தீவுகள் (இஸ்லாஸ் மால்வினஸ்)
+ te: ఫాక్ లేండ్ దీవులు (ఇస్లాస్ మాల్వినాస్)
+ th: หมู่เกาะฟอล์กแลนด์
+ ti: የፎልክላንድ ደሴቶች
+ tl: Kapuluang Falkland (Kapuluang Malvinas)
+ to: ʻOtumotu Fokuleni
+ tr: Falkland Adaları
+ tt: Фолкленд утраулары
+ uk: Фолклендські острови
+ ur: فاکلینڈ آئلینڈز (ازلاس مالوینس)
+ vi: Quần đảo Falkland
+ yo: Orílẹ́ède Etikun Fakalandi
+ zh: 福克兰群岛
+ zu: i-Falkland Islands (i-Islas Malvinas)
--- /dev/null
+name:
+ default: Micronesia
+ af: Mikronesië
+ ar: ميكرونيسيا
+ be: Мікранэзія
+ br: Mikronezia
+ ca: Micronèsia
+ cs: Mikronésie
+ da: Mikronesien
+ de: Föderierte Staaten von Mikronesien
+ en: Federated States of Micronesia
+ eo: Mikronezio
+ es: Estados Federados de Micronesia
+ et: Mikroneesia
+ fa: میکرونزی
+ fi: Mikronesia
+ fr: États fédérés de Micronésie
+ fy: Mikroneezje
+ ga: An Mhicrinéis
+ gd: Na Meanbh Eileanan
+ he: מיקרונזיה
+ hr: Mikronezija
+ hu: Mikronézia
+ ia: Micronesia
+ id: Mikronesia
+ io: Mikronezia
+ is: Míkrónesía
+ lb: Mikronesien
+ li: Micronesië
+ lt: Mikronezija
+ lv: Mikronēzija
+ mn: Микронези
+ nl: Micronesia
+ "no": Mikronesia
+ oc: Estats Federats de Micronesia
+ pl: Mikronezja
+ ru: Федеративные Штаты Микронезии
+ se: Mikronesia
+ sk: Mikronézia
+ sl: Mikronezija
+ sr: Микронезија
+ sv: Mikronesiens federerade stater
+ ta: மைக்குரோனீசியக் கூட்டு நாடுகள்
+ th: ประเทศไมโครนีเซีย
+ tr: Mikronezya
+ uk: Федеративні Штати Мікронезії
+ vi: Liên bang Micronesia
+ vo: Smala-Seanuäns
+ zh: 密克罗尼西亚 / 密克羅尼西亞
--- /dev/null
+name:
+ default: Føroyar
+ af: Faroëreilande
+ am: ፋሮ ደሴቶች
+ an: Islas Feroe
+ ar: جزر فارو
+ az: Farer adaları
+ be: Фарэрскія астравы
+ bg: Ферьорски острови
+ bi: Faroe aelan
+ br: Faero
+ bs: Farska ostrva
+ ca: Illes Fèroe
+ ce: Фарерийн гІайренаш
+ cs: Faerské ostrovy
+ cy: Føroyar
+ da: Færøerne
+ de: Färöer
+ dv: ފަރޮއޭ ޖަޒީރާ
+ ee: Faroe Islands
+ el: Νήσοι Φερόες
+ en: Faroe Islands
+ eo: Ferooj
+ es: Islas Feroe
+ et: Fääri saared
+ eu: Faroeak
+ fa: جزایر فارو
+ fi: Färsaaret
+ fo: Føroyar
+ fr: Îles Féroé
+ fy: Faeröer
+ ga: Oileáin Fharó
+ gd: Na h-Eileanan Fàro
+ gl: Illas Feroe
+ gu: ફરો દ્વિપસમૂહ
+ gv: Ellanyn ny Geyrragh
+ he: איי פארו
+ hi: फ़रो द्वीपसमूह
+ hr: Ferojski Otoci
+ hu: Feröer
+ hy: Ֆարերյան կղզիներ
+ ia: Insulas Feroe
+ id: Kepulauan Faroe
+ io: Faero
+ is: Færeyjar
+ it: Fær Øer
+ ja: フェロー諸島
+ jv: Kapuloan Faroe
+ ka: ფარერის კუნძულები
+ kk: Фарер аралдары
+ kl: Savalimmiut
+ ko: 페로 제도
+ ku: Giravên Feroe
+ kv: Фарер діяс
+ kw: Ynysow Faroe
+ la: Faeroae insulae
+ li: Faeröer
+ lt: Farerai
+ lv: Fēru Salas
+ mi: Moutere Faroe
+ mk: Фарски Острови
+ mn: Фарерын арлууд
+ mr: फेरो द्वीपसमूह
+ ms: Kepulauan Faroe
+ mt: Gżejjer Faroe
+ ne: फरोइ टापु
+ nl: Faeröer
+ nn: Færøyane
+ "no": Færøyene
+ oc: Illas Feròe
+ os: Фареры сакъадæхтæ
+ pl: Wyspy Owcze
+ pt: Ilhas Feroe
+ qu: Pharuy
+ rm: Inslas Feroe
+ ro: Insulele Feroe
+ ru: Фарерские острова
+ rw: Ibirwa bya Farowe
+ se: Fearsullot
+ sh: Farski Otoci
+ si: ෆාරෝ දිවයින්
+ sk: Faerské ostrovy
+ sl: Ferski otoki
+ so: Jasiiradaha Feroe
+ sq: Ishujt Faroe
+ sr: Фарска Острва
+ su: Kapuloan Faroe
+ sv: Färöarna
+ sw: Visiwa vya Faroe
+ ta: பரோயே தீவுகள்
+ tg: Ҷазираҳои Фаро
+ th: หมู่เกาะแฟโร
+ tl: Kapuluang Peroe
+ tr: Faroe Adaları
+ tt: Фарер утраулары
+ uk: Фарерські острови
+ ur: جزائرفارو
+ vi: Quần đảo Faroe
+ wo: Duni Faarow
+ yo: Àwọn Erékùṣù Fàróè
+ zh: 法罗群岛
--- /dev/null
+name:
+ default: France
+ af: Frankryk
+ ak: Frɛnkyeman
+ am: ፈረንሣይ
+ an: Francia
+ ar: فرنسا
+ as: ফ্ৰান্স
+ ay: Phransiya
+ az: Fransa
+ ba: Франция
+ be: Францыя
+ bg: Франция
+ bi: Franis
+ bm: France
+ bn: ফ্রান্স
+ bo: ཧྥ་རན་སི།
+ br: Bro-C'hall
+ bs: Francuska
+ ca: França
+ ce: Франци
+ co: Francia
+ cs: Francie
+ cu: Франкїꙗ
+ cv: Франци
+ cy: Ffrainc
+ da: Frankrig
+ de: Frankreich
+ dv: ފަރަންސޭސިވިލާތް
+ dz: ཕརཱནསི་
+ ee: France
+ el: Γαλλία
+ en: France
+ eo: Francio
+ es: Francia
+ et: Prantsusmaa
+ eu: Frantzia
+ fa: فرانسه
+ ff: Faransi
+ fi: Ranska
+ fo: Frakland
+ fr: France
+ fy: Frankryk
+ ga: An Fhrainc
+ gd: An Fhraing
+ gl: Francia
+ gn: Hyãsia
+ gu: ફ્રાન્સ
+ gv: Yn Rank
+ ha: Faransa
+ he: צרפת
+ hi: फ़्रान्स
+ hr: Francuska
+ ht: Frans
+ hu: Franciaország
+ hy: Ֆրանսիա
+ ia: Francia
+ id: Perancis
+ ie: Francia
+ io: Francia
+ is: Frakkland
+ it: Francia
+ ja: フランス
+ jv: Prancis
+ ka: საფრანგეთი
+ kg: Fwalansa
+ ki: Ubaranja
+ kk: Франция
+ kl: Frankrigi
+ km: បារាំង
+ kn: ಫ್ರಾನ್ಸ್
+ ko: 프랑스
+ ks: فرٛانس
+ ku: Fransa
+ kv: Франция
+ kw: Pow Frynk
+ ky: Франция
+ la: Francia
+ lb: Frankräich
+ lg: Bufalansa
+ li: Frankriek
+ ln: Falansia
+ lo: ປະເທດຝະລັ່ງ
+ lt: Prancūzija
+ lv: Francija
+ mg: Frantsa
+ mi: Wīwī
+ mk: Франција
+ ml: ഫ്രാൻസ്
+ mn: Франц
+ mo: Франца
+ mr: फ्रान्स
+ ms: Perancis
+ mt: Franza
+ my: ပြင်သစ်နိုင်ငံ
+ na: Prant
+ ne: फ्रान्स
+ nl: Frankrijk
+ nn: Frankrike
+ "no": Frankrike
+ nv: Dáághahii Dineʼé Bikéyah
+ oc: França
+ or: ଫ୍ରାନ୍ସ
+ os: Франц
+ pa: ਫ੍ਰਾਂਸ
+ pl: Francja
+ ps: فرانسه
+ pt: França
+ qu: Ransiya
+ rm: Frantscha
+ rn: Francia
+ ro: Franța
+ ru: Франция
+ rw: Ubufaransa
+ sa: फ्रान्सदेशः
+ sc: Frantza
+ se: Frankriika
+ sg: Farânzi
+ sh: Francuska
+ si: ප්රංශය
+ sk: Francúzsko
+ sl: Francija
+ sm: Farani
+ so: Faransiiska
+ sq: Franca
+ sr: Француска
+ ss: IFulansi
+ st: Fora
+ su: Perancis
+ sv: Frankrike
+ sw: Ufaransa
+ ta: பிரான்சு
+ te: ఫ్రాన్స్
+ tg: Фаронса
+ th: ประเทศฝรั่งเศส
+ ti: ፈረንሳይ
+ tk: Fransiýa
+ tl: Pransiya
+ to: Falanisē
+ tr: Fransa
+ tt: Франция
+ ty: Farāni
+ ug: فرانسىيە
+ uk: Франція
+ ur: فرانس
+ uz: Fransiya
+ vi: Pháp
+ vo: Fransän
+ wa: France
+ wo: Faraas
+ yi: פראנקרייך
+ yo: Fránsì
+ za: Fazgoz
+ zh: 法國/法国
+ zu: IFulansi
--- /dev/null
+name:
+ default: Gabon
+ af: Gaboen
+ am: ጋቦን
+ an: Gabón
+ ar: الغابون
+ az: Qabon
+ ba: Габон
+ be: Габон
+ bg: Габон
+ bm: Gabon
+ bn: গাবন
+ bo: གེ་བོན།
+ br: Gabon
+ bs: Gabon
+ ca: Gabon
+ ce: Габон
+ cs: Gabon
+ cv: Габон
+ cy: Gabon
+ da: Gabon
+ de: Gabun
+ dv: ގެބޯން
+ dz: གྷེ་བྷོན
+ el: Γκαμπόν
+ en: Gabon
+ eo: Gabono
+ es: Gabón
+ et: Gabon
+ eu: Gabon
+ fa: گابن
+ ff: Gabon
+ fi: Gabon
+ fr: Gabon
+ fy: Gabon
+ ga: An Ghabúin
+ gd: Gabon
+ gl: Gabón
+ gv: Gabon
+ he: גבון
+ hi: गबॉन
+ hr: Gabon
+ ht: Gabon
+ hu: Gabon
+ hy: Գաբոն
+ ia: Gabon
+ id: Gabon
+ ie: Gabon
+ io: Gabon
+ is: Gabon
+ it: Gabon
+ ja: ガボン
+ jv: Gabon
+ ka: გაბონი
+ kg: Ngabu
+ ki: Gabon
+ kk: Габон
+ kn: ಗಬೊನ್
+ ko: 가봉
+ ks: گیبان
+ ku: Gabon
+ kw: Gabon
+ la: Gabonia
+ lb: Gabun
+ li: Gabon
+ ln: Gabɔ́
+ lt: Gabonas
+ lv: Gabona
+ mi: Kāpona
+ mk: Габон
+ ml: ഗാബോൺ
+ mn: Габон
+ mr: गॅबन
+ ms: Gabon
+ mt: Gabon
+ my: ဂါဘွန်နိုင်ငံ
+ na: Gabun
+ ne: गाबोन
+ nl: Gabon
+ nn: Gabon
+ "no": Gabon
+ nv: Gabǫ́ǫ́
+ oc: Gabon
+ or: ଗାବୋନ
+ os: Габон
+ pa: ਗਬਾਨ
+ pl: Gabon
+ ps: ګابن
+ pt: Gabão
+ qu: Gabun
+ rm: Gabun
+ ro: Gabon
+ ru: Габон
+ rw: Gabon
+ sa: गाबोन
+ sc: Gabòn
+ se: Gabon
+ sg: Gaböon
+ sh: Gabon
+ si: ගැබොන්
+ sk: Gabon
+ sl: Gabon
+ sn: Gabon
+ so: Gabon
+ sq: Gaboni
+ sr: Габон
+ ss: IGabhoni
+ st: Gabon
+ su: Gabon
+ sv: Gabon
+ sw: Gabon
+ ta: காபோன்
+ te: గబాన్
+ tg: Габон
+ th: ประเทศกาบอง
+ tk: Gabon
+ tl: Gabon
+ tr: Gabon
+ ts: Gaboni
+ tt: Габон
+ ug: گابون
+ uk: Габон
+ ur: گیبون
+ uz: Gabon
+ vi: Gabon
+ vo: Gabunän
+ wo: Gaboŋ
+ yi: גאבאן
+ yo: Gàbọ̀n
+ zh: 加蓬
+ zu: IGaboni
--- /dev/null
+short_name:
+ default: UK
+name:
+ default: United Kingdom
+ ab: Британиа Ду
+ af: Verenigde Koninkryk
+ ak: United Kingdom
+ am: ዩናይትድ ኪንግደም
+ an: Reino Unito
+ ar: المملكة المتحدة
+ as: যুক্তৰাজ্য
+ av: Кӏудабиритан
+ az: Böyük Britaniya
+ ba: Бөйөк Британия
+ be: Вялікабрытанія
+ bg: Обединено кралство Великобритания и Северна Ирландия
+ bh: यूनाइटेड किंगडम
+ bi: Unaeted Kingdom
+ bn: যুক্তরাজ্য
+ bo: དབྱིན་ཇི་མཉམ་འབྲེལ།
+ br: Rouantelezh-Unanet
+ bs: Ujedinjeno Kraljevstvo Velike Britanije i Sjeverne Irske
+ ca: Regne Unit
+ ce: Йоккха Британи
+ ch: Reinu Unidu
+ co: Regnu Unitu
+ cs: Spojené království
+ cu: Вєлика Британїꙗ
+ cv: Аслă Британи
+ cy: Deyrnas Unedig
+ da: Storbritannien
+ de: Vereinigtes Königreich
+ dv: ޔުނައިޓެޑް ކިންގްޑަމް
+ dz: ཡུ་ནའི་ཊེཊ་ཀིང་ཌམ
+ ee: United Kingdom
+ el: Ηνωμένο Βασίλειο
+ en: United Kingdom
+ eo: Unuiĝinta Reĝlando
+ es: Reino Unido
+ et: Suurbritannia
+ eu: Erresuma Batua
+ fa: بریتانیا
+ ff: Biritaani-Mawndi
+ fi: Yhdistynyt kuningaskunta
+ fo: Stóra Bretland
+ fr: Royaume-Uni
+ fy: Feriene Keninkryk
+ ga: An Ríocht Aontaithe
+ gd: An Rìoghachd Aonaichte
+ gl: Reino Unido
+ gn: Tavetã Joaju
+ gu: યુનાઇટેડ કિંગડમ
+ gv: Reeriaght Unnaneysit
+ ha: Birtaniya
+ he: הממלכה המאוחדת
+ hi: यूनाइटेड किंगडम
+ hr: Ujedinjeno Kraljevstvo
+ ht: Wayòm Ini
+ hu: Egyesült Királyság
+ hy: Միացյալ Թագավորություն
+ ia: Regno Unite
+ id: Britania Raya
+ ie: Reyatu Unit
+ ig: Obodoézè Nà Ofú
+ io: Unionita Rejio
+ is: Bretland
+ it: Regno Unito
+ iu: ᑐᓗᐃᑦ ᓄᓈᑦ
+ ja: イギリス
+ jv: Britania Raya
+ ka: გაერთიანებული სამეფო
+ kg: Royaume-Uni
+ kk: Ұлыбритания
+ kl: Tuluit Nunaat
+ km: រាជាណាចក្ររួម
+ kn: ಯುನೈಟೆಡ್ ಕಿಂಗ್ಡಂ
+ ko: 영국
+ ku: Keyaniya Yekbûyî
+ kv: Ыджыд Британия
+ kw: Ruwvaneth Unys
+ ky: Улуу Британия жана Түндүк Ирландия
+ la: Britanniarum Regnum
+ lb: Groussbritannien an Nordirland
+ li: Vereineg Keuninkriek
+ ln: Ingɛlɛ́tɛlɛ
+ lo: ສະຫະຣາຊອານາຈັກ
+ lt: Jungtinė Karalystė
+ lv: Apvienotā Karaliste
+ mg: Fanjakana Mitambatra
+ mi: Kīngitanga Kotahi
+ mk: Обединето Кралство
+ ml: യുണൈറ്റഡ് കിങ്ഡം
+ mn: Их Британи
+ mr: युनायटेड किंग्डम
+ ms: United Kingdom
+ mt: Renju Unit
+ my: ယူနိုက်တက်ကင်းဒမ်းနိုင်ငံ
+ na: Ingerand
+ ne: संयुक्त अधिराज्य
+ nl: Verenigd Koninkrijk
+ nn: Storbritannia
+ "no": Storbritannia
+ nv: Tótaʼ Dineʼé Bikéyah
+ oc: Reialme Unit
+ om: Yunaayitid Kingidem
+ or: ଯୁକ୍ତରାଜ୍ୟ
+ os: Стыр Британи
+ pa: ਸੰਯੁਕਤ ਬਾਦਸ਼ਾਹੀ
+ pl: Wielka Brytania
+ ps: بريتانيا
+ pt: Reino Unido
+ qu: Hukllachasqa Qhapaq Suyu
+ rm: Reginavel Unì
+ ro: Regatul Unit al Marii Britanii și al Irlandei de Nord
+ ru: Великобритания
+ rw: Ubwongereza
+ sa: संयुक्त अधिराज्य
+ sc: Rennu Auniadu
+ sd: گڏيل بادشاھت
+ se: Ovttastuvvan gonagasriika
+ sh: Ujedinjeno Kraljevstvo
+ si: එක්සත් රාජධානිය
+ sk: Spojené kráľovstvo
+ sl: Združeno kraljestvo Velike Britanije in Severne Irske
+ sm: Peretānia
+ sn: United Kingdom
+ so: Midowga boqortooyada Britan
+ sq: Mbretëria e Bashkuar e Britanisë dhe Irlandës së Veriut
+ sr: Уједињено Краљевство
+ ss: United Kingdom
+ su: Britania
+ sv: Storbritannien
+ sw: Ufalme wa Muungano
+ ta: ஐக்கிய இராச்சியம்
+ te: యునైటెడ్ కింగ్డమ్
+ tg: Подшоҳии Муттаҳида
+ th: สหราชอาณาจักร
+ tk: Birleşen Patyşalyk
+ tl: Nagkakaisang Kaharian
+ to: Pilitānia
+ tr: Birleşik Krallık
+ tt: Бөекбритания
+ tw: United Kingdom
+ ty: Paratāne
+ ug: بۈيۈك بېرىتانىيە
+ uk: Велика Британія
+ ur: برطانیہ
+ uz: Birlashgan Qirollik
+ vi: Vương quốc Anh
+ vo: Regän Pebalöl
+ wa: Rweyåme-Uni
+ wo: Nguur-Yu-Bennoo
+ yi: פאראייניגטע קעניגרייך
+ yo: Ilẹ̀ọba Aṣọ̀kan
+ za: Yinghgoz
+ zh: 英国/英國
+ zu: Umbuso Ohlangeneyo
--- /dev/null
+name:
+ default: Grenada
+ ar: غرينادا
+ be: Грэнада
+ br: Grenada
+ cs: Grenada
+ da: Grenada
+ de: Grenada
+ el: Γρενάδα
+ en: Grenada
+ eo: Grenado
+ es: Granada
+ fa: گرنادا
+ fi: Grenada
+ fr: Grenade
+ fy: Grenada
+ ga: Greanáda
+ gd: Greanada
+ he: גרנדה
+ hr: Grenada
+ hu: Grenada
+ is: Grenada
+ it: Grenada
+ ja: グレナダ
+ la: Granata
+ lb: Granada
+ lv: Grenāda
+ mn: Гренада
+ nl: Grenada
+ pl: Granada
+ pt: Granada
+ ru: Гренада
+ se: Grenada
+ sl: Grenada
+ sv: Grenada
+ ta: கிரெனடா
+ th: ประเทศเกรเนดา
+ uk: Гренада
+ vo: Grenadeän
+ zh: 格林纳达
--- /dev/null
+name:
+ default: საქართველო
+ ab: Қырҭтәыла
+ af: Georgië
+ am: ጂዮርጂያ
+ an: Cheorchia
+ ar: جورجيا
+ av: Гуржи
+ az: Gürcüstan
+ be: Грузія
+ bg: Грузия
+ bn: জর্জিয়া (রাষ্ট্র)
+ bo: འཇོར་ཇི་ཡ། (རྒྱལ་ཁབ།)
+ br: Jorjia (bro)
+ bs: Gruzija
+ ca: Geòrgia
+ ce: Гуьржийчоь
+ cs: Gruzie
+ cu: Гєѡргїꙗ
+ cv: Грузи
+ cy: Georgia
+ da: Georgien
+ de: Georgien
+ dv: ޖޯޖިޔާ (ޤައުމު)
+ dz: ཇཽ་ཇཱ
+ ee: Georgia
+ el: Γεωργία
+ en: Georgia
+ eo: Kartvelio
+ es: Georgia
+ et: Gruusia
+ eu: Georgia
+ fa: گرجستان
+ fi: Georgia
+ fo: Georgia (land)
+ fr: Géorgie
+ fy: Geörgje
+ ga: An tSeoirsia
+ gd: A' Chairtbheil
+ gl: Xeorxia - საქართველო
+ gu: જ્યોર્જીયા (દેશ)
+ gv: Yn Çhorshey
+ he: גאורגיה
+ hi: जॉर्जिया
+ hr: Gruzija
+ ht: Jeoji
+ hu: Grúzia
+ hy: Վրաստան
+ ia: Georgia
+ id: Georgia
+ ie: Georgia
+ io: Gruzia
+ is: Georgía
+ it: Georgia
+ ja: グルジア
+ jv: Georgia
+ ka: საქართველო
+ kk: Грузия
+ kn: ಜಾರ್ಜಿಯ
+ ko: 조지아 (국가)
+ ku: Gurcistan
+ kv: Грузия
+ kw: Pow Grouzi
+ ky: Грузия
+ la: Georgia
+ lb: Georgien
+ li: Georgië
+ lt: Gruzija
+ lv: Gruzija
+ mi: Hōria
+ mk: Грузија
+ ml: ജോർജ്ജിയ
+ mn: Гүрж
+ mr: जॉर्जिया
+ ms: Georgia
+ mt: Ġeorġja
+ my: ဂျော်ဂျီယာနိုင်ငံ
+ na: Djiordjiya
+ ne: जर्जिया (देश)
+ nl: Georgië
+ nn: Georgia
+ "no": Georgia
+ nv: Jóojah (Kéyah)
+ oc: Georgia (Caucàs)
+ or: ଜର୍ଜିଆ
+ os: Гуырдзыстон
+ pl: Gruzja
+ ps: ګرجستان
+ pt: Geórgia
+ qu: Kartulsuyu
+ ro: Georgia
+ ru: Грузия
+ rw: Geworugiya
+ sc: Georgia
+ se: Georgia
+ sh: Gruzija
+ si: ජෝර්ජියා (රට)
+ sk: Gruzínsko
+ sl: Gruzija
+ so: Joorjiya
+ sq: Gjeorgjia
+ sr: Грузија
+ ss: IJojiya
+ su: Géorgia
+ sv: Georgien
+ sw: Georgia (nchi)
+ ta: சியார்சியா (நாடு)
+ te: జార్జియా (దేశం)
+ tg: Гурҷистон
+ th: ประเทศจอร์เจีย
+ tk: Gruziýa
+ tl: Heorhiya
+ tr: Gürcistan
+ tt: Гөрҗистан
+ ug: گرۇزىيە
+ uk: Грузія
+ ur: جارجیا
+ uz: Gurjiston
+ vi: Gruzia
+ vo: Grusiyän
+ wo: Jeoorji
+ yi: גרוזיע
+ yo: Georgia
+ zh: 格鲁吉亚
--- /dev/null
+name:
+ default: Guyane Française
+ af: Frans-Guyana
+ ar: غيانا
+ br: Gwiana c’hall
+ ca: Guaiana Francesa
+ cy: Guyane
+ da: Fransk Guyana
+ de: Französisch-Guayana
+ el: Γαλλική Γουιάνα
+ en: French Guiana
+ eo: Gujano
+ es: Guayana Francesa
+ et: Prantsuse Guajaana
+ fa: گویان فرانسه
+ fi: Ranskan Guayana
+ fr: Guyane française
+ fy: Frânsk Guyana
+ ga: Guáin na Fraince
+ gd: Guiana Fhrangach
+ he: גיאנה הצרפתית
+ hr: Francuska Gvajana
+ hu: Francia Guyana
+ id: Guyana Perancis
+ is: Franska Gvæjana
+ it: Guyana francese
+ la: Guiana Francica
+ li: Frans Guyana
+ lt: Prancūzijos Gviana
+ lv: Franču Gviāna
+ mn: Франц Гвиана
+ nl: Frans-Guyana
+ pl: Gujana Francuska
+ ru: Французская Гвиана
+ sl: Francoska Gvajana
+ sv: Franska Guyana
+ th: เฟรนช์เกียนา
+ tr: Fransız Guyanası
+ uk: Французька Гвіана
+ vi: Guyane thuộc Pháp
+ zh: 法属圭亚那
--- /dev/null
+name:
+ default: Guernsey
+ af: Guernsey
+ an: Guernési
+ ar: غيرنزي
+ az: Gernsi
+ be: Гернсi
+ bg: Гърнси
+ br: Gwernenez
+ bs: Guernsey
+ ca: Guernsey
+ cs: Guernsey
+ cy: Ynys y Garn
+ da: Guernsey
+ de: Guernsey
+ dv: ގުއާންސޭ
+ el: Γουερνισία
+ en: Guernsey
+ eo: Gernezejo
+ es: Guernsey
+ et: Guernsey
+ eu: Guernesey
+ fa: گرنزی
+ fi: Guernsey
+ fr: Guernesey
+ fy: Guernsey
+ ga: Geansaí
+ gd: Guernsey
+ gl: Guernsey
+ gv: Guernsey
+ he: גרנזי
+ hi: ग्वेर्नसे
+ hr: Guernsey
+ hu: Guernsey
+ hy: Գերնսի
+ id: Guernsey
+ io: Guernsey
+ is: Guernsey
+ it: Guernsey
+ ja: ガーンジー
+ jv: Guernsey
+ ka: გერნზი
+ kn: ಗುರ್ನ್ಸಿ
+ ko: 건지 섬
+ kw: Gwernenys
+ la: Lisia
+ lb: Guernsey
+ li: Guernsey
+ lt: Gernsis
+ lv: Gērnsija
+ mi: Kōnihi
+ mk: Гернзи
+ mn: Гернси
+ mr: गर्न्सी
+ ms: Guernsey
+ ne: गुर्न्जी
+ nl: Guernsey
+ nn: Guernsey
+ "no": Guernsey
+ oc: Guernesey
+ os: Гернси
+ pa: ਗਰਨਜ਼ੇ
+ pl: Guernsey
+ pt: Guernsey
+ ro: Guernsey
+ ru: Гернси
+ rw: Gwasi
+ sh: Guernsey
+ sk: Guernsey
+ sl: Guernsey
+ sq: Guernsey
+ sr: Гернзи
+ su: Guernsey
+ sv: Guernsey
+ sw: Guernsey
+ ta: குயெர்ன்சி
+ tg: Гернси
+ th: เกิร์นซีย์
+ tl: Gernesey
+ tr: Guernsey
+ tt: Гернси
+ uk: Гернсі
+ ur: گرنزی
+ vi: Guernsey
+ yo: Guernsey
+ zh: 根西島
--- /dev/null
+name:
+ default: Ghana
+ af: Ghana
+ ak: Ghana
+ am: ጋና
+ an: Ghana
+ ar: غانا
+ az: Qana
+ ba: Гана
+ be: Гана
+ bg: Гана
+ bm: Gana
+ bn: ঘানা
+ bo: ཀ་ན།
+ br: Ghana
+ bs: Gana
+ ca: Ghana
+ ce: Гана
+ co: Ghana
+ cs: Ghana
+ cv: Гана
+ cy: Ghana
+ da: Ghana
+ de: Ghana
+ dv: ގާނާ
+ ee: Ghana
+ el: Γκάνα
+ en: Ghana
+ eo: Ganao
+ es: Ghana
+ et: Ghana
+ eu: Ghana
+ fa: غنا
+ ff: Gana
+ fi: Ghana
+ fo: Gana
+ fr: Ghana
+ fy: Gana
+ ga: Gána
+ gd: Gàna
+ gl: Gana
+ gu: ઘાના
+ gv: Yn Ghaney
+ he: גאנה
+ hi: घाना
+ hr: Gana
+ ht: Gana
+ hu: Ghána
+ hy: Գանա
+ ia: Ghana
+ id: Ghana
+ ie: Ghana
+ ig: Ghana
+ io: Ghana
+ is: Gana
+ it: Ghana
+ ja: ガーナ
+ jv: Ghana
+ ka: განა
+ kg: Gana
+ ki: Ghana
+ kk: Гана
+ kn: ಘಾನಾ
+ ko: 가나
+ ku: Gana
+ kw: Ghana
+ ky: Гана
+ la: Gana
+ lb: Ghana
+ li: Ghana
+ ln: Ghana
+ lt: Gana
+ lv: Gana
+ mg: Ghana
+ mi: Kāna
+ mk: Гана
+ ml: ഘാന
+ mn: Гана
+ mr: घाना
+ ms: Ghana
+ mt: Gana
+ my: ဂါနာနိုင်ငံ
+ na: Gana
+ ne: घाना
+ nl: Ghana
+ nn: Ghana
+ "no": Ghana
+ nv: Gáana
+ oc: Ghana
+ or: ଘାନା
+ os: Ганæ
+ pa: ਘਾਨਾ
+ pl: Ghana
+ ps: ګانا
+ pt: Gana
+ qu: Gana
+ rm: Ghana
+ ro: Ghana
+ ru: Гана
+ rw: Gana
+ sa: घाना
+ sc: Ghana
+ se: Ghana
+ sg: Ganäa
+ sh: Gana
+ sk: Ghana
+ sl: Gana
+ sn: Ghana
+ so: Gaana
+ sq: Gana
+ sr: Гана
+ ss: IGana
+ su: Ghana
+ sv: Ghana
+ sw: Ghana
+ ta: கானா
+ te: ఘనా
+ tg: Гана
+ th: ประเทศกานา
+ tk: Gana
+ tl: Ghana
+ tr: Gana
+ ts: Ghana
+ tt: Гана
+ tw: Ghana
+ ug: گانا جۇمھۇرىيىتى
+ uk: Гана
+ ur: گھانا
+ uz: Gana
+ vi: Ghana
+ vo: Ganän
+ wa: Gana
+ wo: Gana
+ yi: גהאנע
+ yo: Ghánà
+ zh: 加纳
+ zu: IGana
--- /dev/null
+name:
+ default: Gibraltar
+ af: Gibraltar
+ an: Chibraltar
+ ar: جبل طارق
+ az: Cəbəli-Tariq
+ ba: Гибралтар
+ be: Гібралтар
+ bg: Гибралтар
+ bn: জিব্রাল্টার
+ br: Jibraltar
+ bs: Gibraltar
+ ca: Gibraltar
+ cs: Gibraltar
+ cv: Гибралтар
+ cy: Gibraltar
+ da: Gibraltar
+ de: Gibraltar
+ dv: ޖަބަލްޠާރިޤު
+ el: Γιβραλτάρ
+ en: Gibraltar
+ eo: Ĝibraltaro
+ es: Gibraltar
+ et: Gibraltar
+ eu: Gibraltar
+ fa: جبل طارق
+ fi: Gibraltar
+ fo: Gibraltar
+ fr: Gibraltar
+ fy: Gibraltar
+ ga: Giobráltar
+ gd: Giobraltair
+ gl: Xibraltar
+ gv: Gibraaltar
+ he: גיברלטר
+ hi: जिब्राल्टर
+ hr: Gibraltar
+ hu: Gibraltár
+ hy: Ջիբրալթար
+ ia: Gibraltar
+ id: Gibraltar
+ ie: Gibraltar
+ io: Gibraltar
+ is: Gíbraltar
+ it: Gibilterra
+ ja: ジブラルタル
+ jv: Gibraltar
+ ka: გიბრალტარი
+ kk: Гибралтар
+ ko: 지브롤터
+ ku: Cîbraltar
+ kw: Jibraltar
+ la: Gibraltar
+ lb: Gibraltar
+ li: Gibraltar
+ lt: Gibraltaras
+ lv: Gibraltārs
+ mi: Kāmaka
+ mk: Гибралтар
+ mn: Гибралтар
+ mr: जिब्राल्टर
+ ms: Gibraltar
+ my: ဂျီဘရော်လ်တာ
+ ne: गिब्राल्टार
+ nl: Gibraltar
+ nn: Gibraltar
+ "no": Gibraltar
+ oc: Gibartar
+ or: ଜିବ୍ରାଲେଟର
+ os: Гибралтар
+ pa: ਜਿਬਰਾਲਟਰ
+ pl: Gibraltar
+ pt: Gibraltar
+ ro: Gibraltar
+ ru: Гибралтар
+ rw: Giburalitari
+ sh: Gibraltar
+ sk: Gibraltár
+ sl: Gibraltar
+ so: Jibraltaar
+ sq: Gjibraltari
+ sr: Гибралтар
+ su: Gibraltar
+ sv: Gibraltar
+ sw: Gibraltar
+ ta: ஜிப்ரால்ட்டர்
+ tg: Гибралтар
+ th: ยิบรอลตาร์
+ tl: Hibraltar
+ tr: Cebelitarık
+ tt: Гибралтар
+ uk: Гібралтар
+ ur: جبل الطارق
+ vi: Gibraltar
+ wa: Djibraltar
+ wo: Jibraltaar
+ yi: גיבראלטאר
+ yo: Gibraltar
+ zh: 直布罗陀
--- /dev/null
+name:
+ default: Kalaallit Nunaat
+ af: Groenland
+ am: ግሪንላንድ
+ an: Gronlandia
+ ar: غرينلاند
+ az: Qrenlandiya
+ be: Грэнландыя
+ bg: Гренландия
+ bn: গ্রিনল্যান্ড
+ bo: གེ་རེན་ལ
+ br: Greunland
+ bs: Grenland
+ ca: Grenlàndia
+ cs: Grónsko
+ cv: Гренланди
+ cy: Yr Ynys Las
+ da: Grønland
+ de: Grönland
+ dv: ގުރީންލޭންޑު
+ el: Γροιλανδία
+ en: Greenland
+ eo: Gronlando
+ es: Groenlandia
+ et: Gröönimaa
+ eu: Groenlandia
+ fa: گرینلند
+ fi: Grönlanti
+ fo: Grønland
+ fr: Groenland
+ fy: Grienlân
+ ga: An Ghraonlainn
+ gd: A' Ghraonlainn
+ gl: Groenlandia
+ gn: Kyoẽlándia
+ gv: Greenlynn
+ he: גרינלנד
+ hi: ग्रीनलैण्ड
+ hr: Grenland
+ hu: Grönland
+ hy: Գրենլանդիա
+ ia: Groenlandia
+ id: Greenland
+ ie: Grenland
+ io: Grenlando
+ is: Grænland
+ it: Groenlandia
+ iu: ᐊᑯᑭᑦᑐᑦ
+ ja: グリーンランド
+ jv: Greenland
+ ka: გრენლანდია
+ kk: Гренландия
+ kl: Kalaallit Nunaat
+ kn: ಗ್ರೀನ್ಲ್ಯಾಂಡ್
+ ko: 그린란드
+ ku: Grînlenda
+ kv: Гренландия
+ kw: Greunland
+ la: Groenlandia
+ lb: Grönland
+ li: Greunland
+ ln: Groenlandi
+ lt: Grenlandija
+ lv: Grenlande
+ mg: Groenlanda
+ mi: Greenland
+ mk: Гренланд
+ ml: ഗ്രീൻലാൻഡ്
+ mn: Гренланд
+ mr: ग्रीनलँड
+ ms: Greenland
+ my: ဂရင်းလန်ကျွန်း
+ ne: ग्रीनल्याण्ड
+ nl: Groenland
+ nn: Grønland
+ "no": Grønland
+ nv: Haʼaʼaahjí Hakʼaz Dineʼé Bikéyah
+ oc: Groenlàndia
+ or: ଗ୍ରୀନଲାଣ୍ଡ
+ os: Гренланди
+ pa: ਗਰੀਨਲੈਂਡ
+ pl: Grenlandia
+ pt: Gronelândia
+ qu: Kalalit Nunat
+ ro: Groenlanda
+ ru: Гренландия
+ rw: Goronulande
+ se: Kalaallit Nunaat
+ sh: Grenland
+ sk: Grónsko
+ sl: Grenlandija
+ so: Griinland
+ sq: Groenlanda
+ sr: Гренланд
+ su: Lemah Héjo
+ sv: Grönland
+ sw: Greenland
+ ta: கிறீன்லாந்து
+ te: గ్రీన్లాండ్
+ tg: Гренландия
+ th: กรีนแลนด์
+ tl: Lupanlunti
+ tr: Grönland
+ tt: Гренландия
+ ug: گرېنلاندىيە
+ uk: Ґренландія
+ ur: گرین لینڈ
+ vi: Greenland
+ vo: Gröneän
+ wo: Groenlaand
+ yi: גרינלאנד
+ yo: Grínlándì
+ zh: 格陵兰
--- /dev/null
+name:
+ default: Gambia
+ af: Gambië
+ am: ጋምቢያ
+ an: Gambia
+ ar: غامبيا
+ az: Qambiya
+ ba: Гамбия
+ be: Гамбія
+ bg: Гамбия
+ bm: Gambia
+ bn: গাম্বিয়া
+ bo: གེམ་བྷི་ཡ།
+ br: Gambia
+ bs: Gambija
+ ca: Gàmbia
+ ce: Гамби
+ cs: Gambie
+ cv: Гамби
+ cy: Y Gambia
+ da: Gambia
+ de: Gambia
+ dv: ގެމްބިއާ
+ dz: གྷེམ་བི་ཡ
+ ee: Gambia
+ el: Γκάμπια
+ en: The Gambia
+ eo: Gambio
+ es: Gambia
+ et: Gambia
+ eu: Gambia
+ fa: گامبیا
+ ff: Gammbi
+ fi: Gambia
+ fo: Gambia
+ fr: Gambie
+ fy: Gambia
+ ga: An Ghaimbia
+ gd: A' Ghaimbia
+ gl: Gambia
+ gv: Yn Ghambia
+ he: גמביה
+ hi: गाम्बिया
+ hr: Gambija
+ ht: Ganbi
+ hu: Gambia
+ hy: Գամբիա
+ ia: Gambia
+ id: Gambia
+ ie: The Gambia
+ io: Gambia
+ is: Gambía
+ it: Gambia
+ ja: ガンビア
+ jv: Gambia
+ ka: გამბია
+ kg: Gambia
+ ki: Gambia
+ kk: Гамбия
+ ko: 감비아
+ ku: Gambiya
+ kw: Gambi
+ ky: Гамбия
+ la: Gambia
+ lb: Gambia
+ li: Gambia
+ ln: Gambi
+ lt: Gambija
+ lv: Gambija
+ mk: Гамбија
+ ml: ഗാംബിയ
+ mn: Гамби
+ mr: गांबिया
+ ms: Gambia
+ mt: Gambja
+ my: ဂမ်ဘီယာနိုင်ငံ
+ na: Gambiya
+ nb: Gambia
+ ne: गाम्बिया
+ nl: Gambia
+ nn: Gambia
+ "no": Gambia
+ nv: Géémbiya
+ oc: Gàmbia
+ or: ଗାମ୍ବିଆ
+ os: Гамби
+ pa: ਗਾਂਬੀਆ
+ pl: Gambia
+ ps: ګامبيا
+ pt: Gâmbia
+ qu: Gambya
+ rm: Gambia
+ ro: Gambia
+ ru: Гамбия
+ rw: Gambiya
+ sa: गाम्बिया
+ sc: Gàmbia
+ sd: گيمبيا
+ se: Gambia
+ sg: Gambïi
+ sh: Gambija
+ sk: Gambia
+ sl: Gambija
+ sn: Gambia
+ so: Gambia
+ sq: Gambia
+ sr: Гамбија
+ ss: IGambiya
+ st: Gambia
+ su: Gambia
+ sv: Gambia
+ sw: Gambia
+ ta: காம்பியா
+ te: గాంబియా
+ tg: Гамбия
+ th: ประเทศแกมเบีย
+ tk: Gambiýa
+ tl: Ang Gambiya
+ tr: Gambiya
+ ts: Gambiya
+ tt: Гамбия
+ ug: گامبىيە
+ uk: Гамбія
+ ur: گیمبیا
+ uz: Gambia
+ vi: Gambia
+ vo: Gambiyän
+ wo: Gàmbi
+ yi: די גאמביע
+ yo: Gámbíà
+ zh: 冈比亚
+ zu: IGambia
--- /dev/null
+name:
+ default: Guinée
+ af: Guinee
+ am: ጊኔ
+ an: Guinea
+ ar: غينيا
+ az: Qvineya
+ ba: Гвинея
+ be: Гвінея
+ bg: Гвинея
+ bm: Gine
+ bn: গিনি
+ bo: གི་ནེ།
+ br: Ginea
+ bs: Gvineja
+ ca: República de Guinea
+ ce: Гвине
+ cs: Guinea
+ cv: Гвиней
+ cy: Guinée
+ da: Guinea
+ de: Guinea
+ dv: ގީނިއާ
+ ee: Guinea
+ el: Γουινέα
+ en: Guinea
+ eo: Gvineo
+ es: Guinea
+ et: Guinea
+ eu: Ginea
+ fa: گینه
+ ff: Gine
+ fi: Guinea
+ fo: Guinea
+ fr: Guinée
+ fy: Guinee
+ ga: An Ghuine
+ gd: Gini
+ gl: Guinea
+ gv: Yn Ghuinea
+ ha: Gine
+ he: גינאה
+ hi: गिनी
+ hr: Gvineja
+ ht: Gine
+ hu: Guinea
+ hy: Գվինեա
+ ia: Guinea
+ id: Guinea
+ ie: Guinea
+ io: Guinea
+ is: Gínea
+ it: Guinea
+ ja: ギニア
+ jv: Guinea
+ ka: გვინეა
+ kg: Ginea
+ kk: Гвинея
+ ko: 기니
+ ku: Gîne
+ kw: Gyni
+ ky: Гвинея
+ la: Guinea
+ lb: Guinea
+ li: Guinee
+ ln: Gine-Konakry
+ lt: Gvinėja
+ lv: Gvineja
+ mi: Kini
+ mk: Гвинеја
+ ml: ഗിനി
+ mn: Гвиней
+ mr: गिनी
+ ms: Guinea
+ my: ဂီနီနိုင်ငံ
+ na: Gini
+ ne: गिनी
+ nl: Guinee
+ nn: Guinea
+ "no": Guinea
+ nv: Gíní
+ oc: Guinèa
+ or: ଗିନି
+ os: Гвиней
+ pa: ਗਿਨੀ
+ pl: Gwinea
+ pt: Guiné
+ qu: Khiniya
+ ro: Guineea
+ ru: Гвинея
+ rw: Gineya
+ sa: गिनी
+ sc: Guinea
+ se: Guinea
+ sg: Ginëe
+ sh: Gvineja
+ sk: Guinea
+ sl: Gvineja
+ sm: Guinea
+ sn: Guinea
+ so: Guinea
+ sq: Guinea
+ sr: Гвинеја
+ ss: IGiniya
+ st: Guinea
+ su: Guinéa
+ sv: Guinea
+ sw: Guinea
+ ta: கினி
+ tg: Гвинея
+ th: ประเทศกินี
+ tk: Gwineýa
+ tl: Ginea
+ tr: Gine
+ ts: Gineya
+ tt: Гвинея
+ ug: ۋىنېيە
+ uk: Ґвінея
+ ur: جمہوریہ گنی
+ uz: Gvineya
+ vi: Guinée
+ vo: Gineyän
+ wo: Gine
+ yi: גינע
+ yo: Guinea
+ zh: 几内亚
+ zu: IGini
--- /dev/null
+name:
+ default: Guadeloupe
+ ar: غوادلوب
+ be: Гвадэлупа
+ br: Gwadeloup
+ ca: Illa de Guadalupe
+ da: Guadeloupe
+ el: Γουαδελούπη
+ en: Guadeloupe
+ eo: Gvadelupo
+ es: Guadalupe
+ fa: گوادلوپ
+ fi: Guadeloupe
+ fr: Guadeloupe
+ fy: Guadelûp
+ ga: Guadalúip
+ he: גוואדלופ
+ hr: Gvadalupa
+ hu: Guadeloupe
+ is: Gvadelúpeyjar
+ it: Guadalupa
+ la: Guadalupa
+ lt: Gvadelupa
+ lv: Gvadelupa
+ mn: Гуаделупе
+ pl: Gwadelupa
+ ru: Гваделупа
+ sv: Guadeloupe
+ th: กวาเดอลูป
+ uk: Гваделупа
+ zh: 瓜德罗普
--- /dev/null
+name:
+ default: Guinea Ecuatorial
+ af: Ekwatoriaal-Guinee
+ ak: Gini Ikuweta
+ am: ኢኳቶሪያል ጊኔ
+ an: Guinea Equatorial
+ ar: غينيا الاستوائية
+ az: Ekvatorial Qvineya
+ ba: Экватор Гвинеяһы
+ be: Экватарыяльная Гвінея
+ bg: Екваториална Гвинея
+ bh: भूमध्यरेखीय गिनी
+ bm: Cɛmajan Gine
+ bn: বিষুবীয় গিনি
+ bo: ཨི་ཁུའ་ཊོ་རལ་གི་ནེ།
+ br: Ginea ar C'heheder
+ bs: Ekvatorijalna Gvineja
+ ca: Guinea Equatorial
+ ce: Дуьнена асанан Гвине
+ co: Guinea Equatoriale
+ cs: Rovníková Guinea
+ cv: Экваториаллă Гвиней
+ cy: Gini Gyhydeddol
+ da: Ækvatorialguinea
+ de: Äquatorialguinea
+ dv: އިކުއެޓޯރިއަލް ގިނީ
+ dz: ཨེ་ཀུ་ཊོ་རེལ་ གི་ནི
+ ee: Gini Ekwatoria
+ el: Ισημερινή Γουινέα
+ en: Equatorial Guinea
+ eo: Ekvatora Gvineo
+ es: Guinea Ecuatorial
+ et: Ekvatoriaal-Guinea
+ eu: Ekuatore Ginea
+ fa: گینه استوایی
+ ff: Gine Ekwatoriyal
+ fi: Päiväntasaajan Guinea
+ fo: Ekvatorguinea
+ fr: Guinée équatoriale
+ fy: Ekwatoriaal-Guinee
+ ga: an Ghuine Mheánchriosach
+ gd: Gini Mheadhan-Chriosach
+ gl: Guinea Ecuatorial
+ gu: ઇક્વેટોરિયલ ગિની
+ gv: Guinea Chryss ny Cruinney
+ ha: Gini Ikwatoriya
+ he: גינאה המשוונית
+ hi: भूमध्यरेखीय गिनी
+ hr: Ekvatorska Gvineja
+ ht: Gine ekwateryal
+ hu: Egyenlítői-Guinea
+ hy: Հասարակածային Գվինեա
+ ia: Guinea Equatorial
+ id: Guinea Khatulistiwa
+ ie: Equatorial Guinéa
+ ig: Equatorial Guinea
+ io: Equatorala Guinea
+ is: Miðbaugs-Gínea
+ it: Guinea Equatoriale
+ ja: 赤道ギニア
+ jv: Guinea Khatulistiwa
+ ka: ეკვატორული გვინეა
+ kg: Ginea ya Ekwatelo
+ ki: Ginekweta
+ kk: Экваторлық Гвинея
+ km: ហ្គីណេអេក្វាទ័រ
+ kn: ವಿಷುವದ್ರೇಖೆಯ ಗಿನಿ
+ ko: 적도 기니
+ ks: اِکوِٹورِیَل گِنی
+ ku: Gîneya Rojbendî
+ kw: Gyni Ekwadoriel
+ la: Guinea Aequatorensis
+ lb: Equatorialguinea
+ lg: Equatorial Guinea
+ li: Equatoriaal Guinee
+ ln: Gine-Ekwatorial
+ lo: ອີຄົວໂທເລຍກີເນຍ
+ lt: Pusiaujo Gvinėja
+ lv: Ekvatoriālā Gvineja
+ mg: Ginea Ekoatorialy
+ mi: Kini Ekuatoria
+ mk: Екваторска Гвинеја
+ ml: ഇക്വറ്റോറിയൽ ഗിനി
+ mn: Экваторын Гвиней
+ mr: इक्वेटोरीयल गिनी
+ ms: Guinea Khatulistiwa
+ mt: Gwinea Ekwatorjali
+ my: အီကွေတာဂီနီနိုင်ငံ
+ na: Gini t Ekwador
+ nb: Ekvatorial-Guinea
+ ne: इक्वेटोरियल गिनी
+ nl: Equatoriaal Guinee
+ nn: Ekvatorial-Guinea
+ "no": Ekvatorial-Guinea
+ nv: Gíní Nahasdzáán Ałníiʼgi Siʼánígíí
+ oc: Guinèa Eqüatoriala
+ om: Iqu’aatoriyaal Giinii
+ or: ବିଷୁବରେଖୀୟ ଗିନି
+ os: Экваториалон Гвиней
+ pa: ਭੂ-ਮੱਧ ਰੇਖਾਈ ਗਿਨੀ
+ pl: Gwinea Równikowa
+ ps: اېکواټوريال ګوينا
+ pt: Guiné Equatorial
+ qu: Chawpipacha Khiniya
+ rm: Guinea Equatoriala
+ ro: Guineea Ecuatorială
+ ru: Экваториальная Гвинея
+ rw: Gineya Ekwatoriyale
+ sc: Guinea Ecuadoriale
+ se: Ekvatoriála Guinea
+ sg: Ginëe tî Ekuatëre
+ sh: Ekvatorijalna Gvineja
+ si: සමක ගිනියාව
+ sk: Rovníková Guinea
+ sl: Ekvatorialna Gvineja
+ sm: Kini Ekuatoria
+ sn: Equatorial Guinea
+ so: Ikweetiga Guinea
+ sq: Guinea Ekuatoriale
+ sr: Екваторијална Гвинеја
+ st: Equatorial Guinea
+ su: Guinéa Khatulistiwa
+ sv: Ekvatorialguinea
+ sw: Guinea ya Ikweta
+ ta: எக்குவடோரியல் கினி
+ te: ఎక్వేటోరియాల్ గినియా
+ tg: Гвинеяи Истивоӣ
+ th: อิเควทอเรียลกินี
+ ti: ኢኳቶሪያል ጊኒ
+ tk: Ekwatorial Gwineýa
+ tl: Gineang Ekwatoriyal
+ to: ʻEkueta Kini
+ tr: Ekvator Ginesi
+ ts: Gineya ya le Nkaveni
+ tt: Экваториа́ль Гвине́я
+ ug: ئېكۋاتور گۋىنېيىسى
+ uk: Екваторіа́льна Ґвіне́я
+ ur: استوائی گنی
+ uz: Ekvatorli Gvineya
+ vi: Guinea Xích Đạo
+ vo: Kveatora-Gineyän
+ wo: Gineg yamoo
+ yi: עקוואטארישע גינע
+ yo: Guinea Alágedeméjì
+ zh: 赤道几内亚
+ zu: iGini Enkabazwe
--- /dev/null
+name:
+ default: Ελλάς
+ ab: Барзентәыла
+ af: Griekeland
+ am: ግሪክ
+ an: Grecia
+ ar: اليونان
+ ay: Grisya
+ az: Yunanıstan
+ ba: Греция
+ be: Грэцыя
+ bg: Гърция
+ bi: Greece
+ bn: গ্রিস
+ bo: ཀེ་རི་སི།
+ br: Gres
+ bs: Grčka
+ ca: Grècia
+ ce: Греци
+ co: Grecia
+ cs: Řecko
+ cu: Грьци
+ cv: Греци
+ cy: Gwlad Groeg
+ da: Grækenland
+ de: Griechenland
+ dv: ޔޫނާން
+ dz: གྲྀས
+ ee: Greece
+ el: Ελλάς
+ en: Greece
+ eo: Grekio
+ es: Grecia
+ et: Kreeka
+ eu: Grezia
+ fa: یونان
+ fi: Kreikka
+ fo: Grikkaland
+ fr: Grèce
+ fy: Grikelân
+ ga: An Ghréig
+ gd: A' Ghrèig
+ gl: Grecia
+ gn: Gyresia
+ gu: ગ્રીસ
+ gv: Yn Ghreag
+ he: יוון
+ hi: यूनान
+ hr: Grčka
+ ht: Grès
+ hu: Görögország
+ hy: Հունաստան
+ ia: Grecia
+ id: Yunani
+ ie: Grecia
+ io: Grekia
+ is: Grikkland
+ it: Grecia
+ ja: ギリシャ
+ jv: Yunani
+ ka: საბერძნეთი
+ kg: Gelesi
+ ki: Ngiriki
+ kk: Грекия
+ kl: Grækerit Nunaat
+ kn: ಗ್ರೀಸ್
+ ko: 그리스
+ ku: Yewnanistan
+ kv: Эллада
+ kw: Pow Grek
+ ky: Греция
+ la: Graecia
+ lb: Griicheland
+ lg: Buyonaani
+ li: Griekeland
+ ln: Gresi
+ lt: Graikija
+ lv: Grieķija
+ mg: Grisy
+ mi: Kirihi
+ mk: Грција
+ ml: ഗ്രീസ്
+ mn: Грек
+ mr: ग्रीस
+ ms: Greece
+ mt: Greċja
+ my: ဂရိနိုင်ငံ
+ na: Grit
+ ne: ग्रीस
+ nl: Griekenland
+ nn: Hellas
+ "no": Hellas
+ nv: Gwíík Dineʼé Bikéyah
+ oc: Grècia
+ or: ଗ୍ରୀସ
+ os: Грекъ
+ pa: ਯੂਨਾਨ
+ pl: Grecja
+ ps: يونان
+ pt: Grécia
+ qu: Grisya
+ rm: Grezia
+ rn: Grecia
+ ro: Grecia
+ ru: Греция
+ rw: Ubugereki
+ sa: यवनदेशः
+ sc: Grèghia
+ se: Greika
+ sh: Grčka
+ si: ග්රීසිය
+ sk: Grécko
+ sl: Grčija
+ sm: Kuliti
+ so: Giriig
+ sq: Greqia
+ sr: Грчка
+ ss: IGrikhi
+ su: Yunani
+ sv: Grekland
+ sw: Ugiriki
+ ta: கிரேக்க நாடு
+ te: గ్రీస్
+ tg: Юнон
+ th: ประเทศกรีซ
+ tk: Gresiýa
+ tl: Gresya
+ tr: Yunanistan
+ tt: Греция
+ ug: Grétsiye
+ uk: Греція
+ ur: یونان
+ uz: Yunoniston
+ vi: Hy Lạp
+ vo: Grikän
+ wo: Girees
+ yi: גריכנלאנד
+ yo: Gríìsì
+ zh: 希腊
+ zu: IGreki
--- /dev/null
+name:
+ default: South Georgia and the South Sandwich Islands
+ af: Suid-Georgië en die Suidelike Sandwich-eilande
+ ar: جزر جورجيا الجنوبية وساندويتش الجنوبية
+ az: Cənubi Georgiya və Cənubi Sandviç adaları
+ be: Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы
+ bg: Южна Джорджия и Южни Сандвичеви острови
+ br: Inizi Georgia ar Su hag Inizi Sandwich ar Su
+ bs: Južna Džordžija i Južna Sendvička Ostrva
+ ca: Illes Geòrgia del Sud i Sandwich del Sud
+ cs: Jižní Georgie a Jižní Sandwichovy ostrovy
+ da: South Georgia og South Sandwich Islands
+ de: Südgeorgien und die Südlichen Sandwichinseln
+ el: Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς
+ en: South Georgia and the South Sandwich Islands
+ eo: Sud-Georgio kaj Sud-Sandviĉinsuloj
+ es: Islas Georgias del Sur y Sandwich del Sur
+ et: Lõuna-Georgia ja Lõuna-Sandwichi saared
+ eu: Hegoaldeko Georgiak eta Hegoaldeko Sandwich uharteak
+ fa: جزایر جورجیای جنوبی و ساندویچ جنوبی
+ fi: Etelä-Georgia ja Eteläiset Sandwichsaaret
+ fo: Suðursandwichoyggjar og Suðurgeorgia
+ fr: Géorgie du Sud-et-les Îles Sandwich du Sud
+ fy: Súd-Georgje en de Súdlike Sandwicheilannen
+ gd: Seòirsia-a-Deas is na h-Eileanan Shandwich-a-Deas
+ gl: Illas Xeorxia do Sur e Sandwich do Sur
+ he: איי ג'ורג'יה הדרומית ואיי סנדוויץ' הדרומיים
+ hi: दक्षिण जॉर्जिया एवं दक्षिण सैंडविच द्वीप समूह
+ hr: Južna Georgija i Otočje Južni Sandwich
+ hu: Déli-Georgia és Déli-Sandwich-szigetek
+ id: Georgia Selatan dan Kepulauan Sandwich Selatan
+ is: Suður-Georgía og Suður-Sandvíkureyjar
+ it: Georgia del Sud e Isole Sandwich Australi
+ ja: サウスジョージア・サウスサンドウィッチ諸島
+ ko: 사우스조지아 사우스샌드위치 제도
+ kw: Jeorji Dheghow hag Ynysow Sandwich Deghow
+ lt: Pietų Džordžija ir Pietų Sandvičo salos
+ lv: Dienviddžordžija un Dienvidsendviču salas
+ mk: Јужна Џорџија и Јужни Сендвички Острови
+ mr: साउथ जॉर्जिया व साउथ सँडविच द्वीपसमूह
+ ms: Georgia Selatan dan Kepulauan Sandwich Selatan
+ nl: Zuid-Georgia en de Zuidelijke Sandwicheilanden
+ nn: Sør-Georgia og Sør-Sandwichøyane
+ "no": Sør-Georgia og Sør-Sandwichøyene
+ os: Хуссар Джорджи æмæ Хуссар Сандвичы сакъадæхтæ
+ pl: Georgia Południowa i Sandwich Południowy
+ pt: Ilhas Geórgia do Sul e Sanduíche do Sul
+ ro: Georgia de Sud şi Insulele Sandwich de Sud
+ ru: Южная Георгия и Южные Сандвичевы Острова
+ se: Lulli Georgia ja Lulli Sandwich-sullot
+ sk: Južná Georgia a Južné Sandwichove ostrovy
+ sl: Južna Georgija in Južni Sandwichevi otoki
+ sq: Gjeorgjia Jugore dhe Ishujt Jugorë Sanduiç
+ sr: Јужна Џорџија и Јужна Сендвичка Острва
+ sv: Sydgeorgien och Sydsandwichöarna
+ ta: தெற்கு யோர்சியா மற்றும் தெற்கு சண்ட்விச் தீவுகள்
+ th: เกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิช
+ tr: Güney Georgia ve Güney Sandwich Adaları
+ uk: Південна Джорджія та Південні Сандвічеві острови
+ vi: Quần đảo Nam Georgia và Nam Sandwich
+ wo: Jeoorji gu Bëj-saalum ak Duni Islaand yi Bëj-saalum
+ zh: 南喬治亞和南桑威奇群島
--- /dev/null
+name:
+ default: Guatemala
+ af: Guatemala
+ am: ጓቴማላ
+ an: Guatemala
+ ar: غواتيمالا
+ ay: Watimala
+ az: Qvatemala
+ ba: Гватемала
+ be: Гватэмала
+ bg: Гватемала
+ bm: Gatemala
+ bn: গুয়াতেমালা
+ bo: གུ་ཝེ་ཐི་མ་ལ།
+ br: Guatemala
+ bs: Gvatemala
+ ca: Guatemala
+ ce: Гватемала
+ cs: Guatemala
+ cy: Guatemala
+ da: Guatemala
+ de: Guatemala
+ dv: ގުއަޓެމާލާ
+ ee: Guatemala
+ el: Γουατεμάλα
+ en: Guatemala
+ eo: Gvatemalo
+ es: Guatemala
+ et: Guatemala
+ eu: Guatemala
+ fa: گواتمالا
+ fi: Guatemala
+ fo: Guatemala
+ fr: Guatemala
+ fy: Gûatemala
+ ga: Guatamala
+ gd: Guatamala
+ gl: Guatemala
+ gn: Guatemala
+ gv: Yn Ghuatemaley
+ he: גואטמלה
+ hi: ग्वाटेमाला
+ hr: Gvatemala
+ ht: Gwatemala
+ hu: Guatemala
+ hy: Գվատեմալա
+ ia: Guatemala
+ id: Guatemala
+ ie: Guatemala
+ io: Guatemala
+ is: Gvatemala
+ it: Guatemala
+ ja: グアテマラ
+ jv: Guatemala
+ ka: გვატემალა
+ kk: Гватемала
+ km: ហ្គាតេម៉ាឡា
+ kn: ಗ್ವಾಟೆಮಾಲ
+ ko: 과테말라
+ ku: Guatemala
+ kw: Gwatemala
+ la: Guatimalia
+ lb: Guatemala
+ li: Guatemala
+ ln: Gwatemala
+ lt: Gvatemala
+ lv: Gvatemala
+ mg: Goatemala
+ mi: Kuatamāra
+ mk: Гватемала
+ ml: ഗ്വാട്ടിമാല
+ mn: Гватемал
+ mr: ग्वातेमाला
+ ms: Guatemala
+ mt: Gwatemala
+ my: ဂွါတီမာလာနိုင်ငံ
+ na: Guatemara
+ ne: ग्वाटेमाला
+ nl: Guatemala
+ nn: Guatemala
+ "no": Guatemala
+ oc: Guatemala
+ os: Гватемалæ
+ pa: ਗੁਆਤੇਮਾਲਾ
+ pl: Gwatemala
+ ps: ګواتمالا
+ pt: Guatemala
+ qu: Watimala
+ ro: Guatemala
+ ru: Гватемала
+ rw: Gwatemala
+ sa: ग्वाटेमाला
+ se: Guatemala
+ sh: Gvatemala
+ sk: Guatemala
+ sl: Gvatemala
+ sm: Tuatemala
+ so: Guatemala
+ sq: Guatemala
+ sr: Гватемала
+ ss: IGwathamala
+ su: Guatémala
+ sv: Guatemala
+ sw: Guatemala
+ ta: குவாத்தமாலா
+ tg: Гуатемала
+ th: ประเทศกัวเตมาลา
+ tl: Guwatemala
+ tr: Guatemala
+ tt: Гватемала
+ ug: گۋاتېمالا
+ uk: Гватемала
+ ur: گوئٹے مالا
+ uz: Gvatemala
+ vi: Guatemala
+ vo: Gvatemän
+ wo: Guwaatemala
+ yi: גוואטעמאלע
+ yo: Guatẹmálà
+ zh: 危地马拉
+ zu: Guatemala
--- /dev/null
+name:
+ default: Guam
--- /dev/null
+name:
+ default: Guiné-Bissau
+ af: Guinee-Bissau
+ am: ጊኔ-ቢሳው
+ an: Guinea-Bissau
+ ar: غينيا بيساو
+ az: Qvineya-Bisau
+ ba: Гвинея-Бисау
+ be: Гвінея-Бісау
+ bg: Гвинея-Бисау
+ bm: Gine Bisau
+ bn: গিনি-বিসাউ
+ bo: གི་ནེ་-བི་སའོ།
+ br: Ginea-Bissau
+ bs: Gvineja-Bisau
+ ca: Guinea Bissau
+ ce: Гвине-Бисау
+ co: Guinea-Bissau
+ cs: Guinea-Bissau
+ cv: Гвиней-Бисау
+ cy: Guiné-Bissau
+ da: Guinea-Bissau
+ de: Guinea-Bissau
+ dv: ގީނީ-ބިސާއޫ
+ ee: Guinea-Bissau
+ el: Γουινέα-Μπισσάου
+ en: Guinea-Bissau
+ eo: Gvineo Bisaŭa
+ es: Guinea-Bisáu
+ et: Guinea-Bissau
+ eu: Ginea-Bissau
+ fa: گینه بیسائو
+ ff: Gine-Bisaawo
+ fi: Guinea-Bissau
+ fo: Guinea-Bissau
+ fr: Guinée-Bissau
+ fy: Guinee-Bissau
+ ga: Guine-Bissau
+ gd: Gini-Bissau
+ gl: Guinea-Bisau
+ gv: Yn Ghuinea-Bissau
+ he: גינאה ביסאו
+ hi: गिनी-बिसाऊ
+ hr: Gvineja Bisau
+ ht: Gine-Bisao
+ hu: Bissau-Guinea
+ hy: Գվինեա Բիսաու
+ ia: Guinea-Bissau
+ id: Guinea-Bissau
+ ie: Guinea-Bissau
+ io: Guinea Bisau
+ is: Gínea-Bissá
+ it: Guinea-Bissau
+ ja: ギニアビサウ
+ jv: Guinea-Bissau
+ ka: გვინეა-ბისაუ
+ kg: Ginea-Bisau
+ kk: Гвинея-Бисау
+ ko: 기니비사우
+ ku: Gîne-Bissau
+ kw: Gyni-Bissaw
+ ky: Гвинея-Бисау
+ la: Guinea Bissaviensis
+ lb: Guinea-Bissau
+ li: Guinee-Bissau
+ ln: Gine-Bisau
+ lt: Bisau Gvinėja
+ lv: Gvineja-Bisava
+ mi: Kini Pihō
+ mk: Гвинеја-Бисау
+ ml: ഗിനി-ബിസൗ
+ mn: Гвиней-Бисау
+ mr: गिनी-बिसाउ
+ ms: Guinea-Bissau
+ my: ဂင်းနီဗစ်ဆောနိုင်ငံ
+ na: Gini-Bitau
+ ne: गिनी-बिसाउ
+ nl: Guinee-Bissau
+ nn: Guinea-Bissau
+ "no": Guinea-Bissau
+ nv: Gíní Bisó
+ oc: Guinèa Bissau
+ os: Гвиней-Бисау
+ pa: ਗਿਨੀ-ਬਿਸਾਊ
+ pl: Gwinea Bissau
+ pt: Guiné-Bissau
+ qu: Khiniya-Wisaw
+ ro: Guineea-Bissau
+ ru: Гвинея-Бисау
+ rw: Gineya-Biso
+ sc: Guinea-Bissau
+ se: Guinea-Bissau
+ sg: Ginëe-Bisau
+ sh: Gvineja Bisau
+ sk: Guinea-Bissau
+ sl: Gvineja Bissau
+ sn: Guinea-Bissau
+ so: Guinea-Bissau
+ sq: Guinea Bisau
+ sr: Гвинеја Бисао
+ ss: IGiniya-Bhasawu
+ st: Guinea-Bissau
+ su: Guinéa-Bissau
+ sv: Guinea-Bissau
+ sw: Guinea Bisau
+ ta: கினி-பிசாவு
+ tg: Гвинея Бисау
+ th: ประเทศกินี-บิสเซา
+ tk: Gwineýa-Bisau
+ tl: Ginea-Bissau
+ tr: Gine-Bissau
+ ts: Guinea-Bissau
+ tt: Гвинея-Бисау
+ ug: گۋىنېيە بىسسائۇ
+ uk: Гвінея-Бісау
+ ur: گنی بساؤ
+ uz: Gvineya-Bissau
+ vi: Guiné-Bissau
+ vo: Gineyän-Bisauän
+ wo: Gine Bisaawóo
+ yi: גינע-ביסאו
+ yo: Guinea-Bissau
+ zh: 幾內亞比索
+ zu: IGini Bisawu
--- /dev/null
+name:
+ default: Guyana
+ af: Guyana
+ am: ጋያና
+ an: Guyana
+ ar: غويانا
+ ay: Wayana
+ az: Qayana
+ ba: Гайана
+ be: Гаяна
+ bg: Гвиана
+ bn: গায়ানা
+ bo: གུ་ཡ་ན།
+ br: Guyana
+ bs: Gvajana
+ ca: Guyana
+ ce: Гайана
+ cs: Guyana
+ cv: Гайана
+ cy: Guyana
+ da: Guyana
+ de: Guyana
+ dv: ގުޔާނާ
+ ee: Guyana
+ el: Γουιάνα
+ en: Guyana
+ eo: Gujano
+ es: Guyana
+ et: Guyana
+ eu: Guyana
+ fa: گویان
+ fi: Guyana
+ fo: Gujana
+ fr: Guyana
+ fy: Guyana
+ ga: An Ghuáin
+ gd: Guiana
+ gl: Güiana
+ gn: Gujána
+ gu: ગુયાના
+ gv: Geeaaney
+ he: גיאנה
+ hi: गयाना
+ hr: Gvajana
+ ht: Giyàn
+ hu: Guyana
+ hy: Գայանա
+ ia: Guyana
+ id: Guyana
+ ie: Guyana
+ io: Guyana
+ is: Gvæjana
+ it: Guyana
+ ja: ガイアナ
+ jv: Guyana
+ ka: გაიანა
+ kk: Гайана
+ kl: Guyana
+ kn: ಗಯಾನ
+ ko: 가이아나
+ ku: Guyana
+ kw: Gwayana
+ la: Guiana
+ lb: Guyana
+ li: Guyana
+ ln: Gwiana
+ lt: Gajana
+ lv: Gajāna
+ mi: Kaiana
+ mk: Гвајана
+ ml: ഗയാന
+ mn: Гайана
+ mr: गयाना
+ ms: Guyana
+ mt: Gujana
+ my: ဂိုင်ယာနာနိုင်ငံ
+ na: Guyana
+ ne: गुयना
+ nl: Guyana
+ nn: Guyana
+ "no": Guyana
+ oc: Guyana
+ or: ଗାଇଓନା
+ os: Гайанæ
+ pa: ਗੁਇਆਨਾ
+ pl: Gujana
+ ps: ګويانا
+ pt: Guiana
+ qu: Wayana
+ ro: Guyana
+ ru: Гайана
+ rw: Giyana
+ sa: गयाना
+ sc: Guyana
+ se: Guyana
+ sh: Gvajana
+ sk: Guyana
+ sl: Gvajana
+ so: Guyana
+ sq: Guajana
+ sr: Гвајана
+ su: Guyana
+ sv: Guyana
+ sw: Guyana
+ ta: கயானா
+ te: గయానా
+ th: ประเทศกายอานา
+ tl: Guyana
+ tr: Guyana
+ tt: Гайана
+ ug: گايانا
+ uk: Гаяна
+ ur: گیانا
+ uz: Gayana
+ vi: Guyana
+ vo: Gvayän
+ wo: Guyaana
+ yi: גויאנע
+ yo: Gùyánà
+ zh: 圭亚那
--- /dev/null
+name:
+ default: Hong Kong
--- /dev/null
+name:
+ default: Heard Island and MaxDonald Islands
--- /dev/null
+name:
+ default: Honduras
+ af: Honduras
+ am: ሆንዱራስ
+ an: Honduras
+ ar: هندوراس
+ ay: Honduras
+ az: Honduras
+ ba: Гондурас
+ be: Гандурас
+ bg: Хондурас
+ bm: Honduras
+ bn: হন্ডুরাস
+ bo: ཧོང་དུ་ར་སི།
+ br: Honduras
+ bs: Honduras
+ ca: Hondures
+ ce: Гондурас
+ cs: Honduras
+ cu: Ондоурасъ
+ cy: Honduras
+ da: Honduras
+ de: Honduras
+ dv: ހޮންޑިއުރަސް
+ el: Ονδούρα
+ en: Honduras
+ eo: Honduro
+ es: Honduras
+ et: Honduras
+ eu: Honduras
+ fa: هندوراس
+ fi: Honduras
+ fo: Honduras
+ fr: Honduras
+ fy: Hondueras
+ ga: Hondúras
+ gd: Hondùras
+ gl: Honduras
+ gn: Honduras
+ gu: હોન્ડુરાસ
+ gv: Ny Hondooraghyn
+ he: הונדורס
+ hi: हौण्डुरस
+ hr: Honduras
+ ht: Ondiras
+ hu: Honduras
+ hy: Հոնդուրաս
+ ia: Honduras
+ id: Honduras
+ ie: Honduras
+ io: Honduras
+ is: Hondúras
+ it: Honduras
+ ja: ホンジュラス
+ jv: Honduras
+ ka: ჰონდურასი
+ kk: Гондурас
+ ko: 온두라스
+ ku: Hondûras
+ kw: Hondouras
+ ky: Гондурас
+ la: Honduria
+ lb: Honduras
+ li: Honduras
+ ln: Honduras
+ lt: Hondūras
+ lv: Hondurasa
+ mk: Хондурас
+ ml: ഹോണ്ടുറാസ്
+ mn: Гондурас
+ mr: होन्डुरास
+ ms: Honduras
+ mt: Ħonduras
+ my: ဟွန်ဒူးရပ်စ်နိုင်ငံ
+ na: Ondurat
+ ne: होण्डुरस
+ nl: Honduras
+ nn: Honduras
+ "no": Honduras
+ oc: Honduras
+ or: ହୋଣ୍ଡାରୁସ
+ os: Гондурас
+ pa: ਹਾਂਡੂਰਾਸ
+ pl: Honduras
+ ps: هندوراس
+ pt: Honduras
+ qu: Unduras
+ rn: Honduras
+ ro: Honduras
+ ru: Гондурас
+ rw: Hondurasi
+ sa: हांडूरस
+ se: Honduras
+ sh: Honduras
+ sk: Honduras
+ sl: Honduras
+ sm: Honilagi
+ sq: Hondurasi
+ sr: Хондурас
+ ss: IHondulasi
+ su: Honduras
+ sv: Honduras
+ sw: Honduras
+ ta: ஹொண்டுராஸ்
+ te: హోండురాస్
+ tg: Ҳондурас
+ th: ประเทศฮอนดูรัส
+ tl: Honduras
+ tr: Honduras
+ tt: Гондурас
+ ug: ھوندۇراس
+ uk: Гондурас
+ ur: ہونڈوراس
+ uz: Gonduras
+ vi: Honduras
+ vo: Hondurän
+ wa: Hondourasse
+ wo: Onduras
+ yi: האנדוראס
+ yo: Họ̀ndúràs
+ zh: 洪都拉斯
+ zu: Honduras
--- /dev/null
+name:
+ default: Hrvatska
+ ab: Хорватиа
+ af: Kroasië
+ am: ክሮኤሽያ
+ an: Croacia
+ ar: كرواتيا
+ az: Xorvatiya
+ ba: Хорватия
+ be: Харватыя
+ bg: Хърватия
+ bi: Croatia
+ bn: ক্রোয়েশিয়া
+ bo: ཁུརོ་ཤི་ཡ།
+ br: Kroatia
+ bs: Hrvatska
+ ca: Cròacia
+ ce: Хорвати
+ cs: Chorvatsko
+ cu: Хръватьска
+ cy: Croatia
+ da: Kroatien
+ de: Kroatien
+ dv: ކުރޮއޭޝިއާ
+ ee: Croatia
+ el: Κροατία
+ en: Croatia
+ eo: Kroatio
+ es: Croacia
+ et: Horvaatia
+ eu: Kroazia
+ fa: کرواسی
+ fi: Kroatia
+ fo: Kroatia
+ fr: Croatie
+ fy: Kroaasje
+ ga: An Chróit
+ gd: Croàisia
+ gl: Croacia
+ gn: Kyoasia
+ gu: ક્રોએશિયા
+ gv: Yn Chroit
+ he: קרואטיה
+ hi: क्रोएशिया
+ hr: Hrvatska
+ ht: Kroasi
+ hu: Horvátország
+ hy: Խորվաթիա
+ ia: Croatia
+ id: Kroasia
+ ie: Croatia
+ io: Kroatia
+ is: Króatía
+ it: Croazia
+ ja: クロアチア
+ jv: Kroasia
+ ka: ხორვატია
+ kg: Kroatia
+ kk: Хорватия
+ kl: Kroatia
+ kn: ಕ್ರೊಯೆಶಿಯ
+ ko: 크로아티아
+ ku: Kroatya
+ kv: Хорватия
+ kw: Kroati
+ ky: Хорватия
+ la: Croatia
+ lb: Kroatien
+ li: Kroatië
+ ln: Kroasia
+ lt: Kroatija
+ lv: Horvātija
+ mi: Koroātia
+ mk: Хрватска
+ ml: ക്രൊയേഷ്യ
+ mn: Хорват
+ mr: क्रोएशिया
+ ms: Croatia
+ mt: Kroazja
+ my: ခရိုအေးရှားနိုင်ငံ
+ na: Kroaitsiya
+ ne: क्रोएशिया
+ nl: Kroatië
+ nn: Kroatia
+ "no": Kroatia
+ nv: Kwóóʼad Bikéyah
+ oc: Croàcia
+ or: କ୍ରୋଏସିଆ
+ os: Хорвати
+ pa: ਕ੍ਰੋਏਸ਼ੀਆ
+ pl: Chorwacja
+ ps: کروواسيا
+ pt: Croácia
+ qu: Hurwatsuyu
+ rn: Croacia
+ ro: Croația
+ ru: Хорватия
+ rw: Korowatiya
+ sa: क्रोएशिया
+ sc: Croatzia
+ se: Kroatia
+ sg: Kroasïi
+ sh: Hrvatska
+ sk: Chorvátsko
+ sl: Hrvaška
+ sm: Croatia
+ so: Kroatia
+ sq: Kroacia
+ sr: Хрватска
+ ss: IKhuroshiya
+ st: Kroatia
+ su: Kroasia
+ sv: Kroatien
+ sw: Kroatia
+ ta: குரோவாசியா
+ te: క్రొయేషియా
+ tg: Хорватия
+ th: ประเทศโครเอเชีย
+ tk: Horwatiýa
+ tl: Kroasya
+ tr: Hırvatistan
+ tt: Хорватия
+ ug: كرودىيە
+ uk: Хорватія
+ ur: کروشیا
+ uz: Xorvatiya
+ vi: Croatia
+ vo: Kroasän
+ wa: Crowaceye
+ wo: Korwaasi
+ yi: קראאטיע
+ yo: Kroatíà
+ za: Gwzlozdiya
+ zh: 克羅地亞
--- /dev/null
+name:
+ default: Ayiti
+ af: Haïti
+ am: ሃይቲ
+ an: Haití
+ ar: هايتي
+ ay: Ayti
+ az: Haiti Respublikası
+ be: Гаіці
+ bg: Хаити
+ bm: Ayiti
+ bn: হাইতি
+ bo: ཧའི་ཏི།
+ br: Republik Haiti
+ bs: Haiti
+ ca: Haití
+ ce: Гаити Пачхьалкх
+ co: Haiti
+ cs: Haiti
+ cv: Гаити
+ cy: Haiti
+ da: Haiti
+ de: Haiti
+ dv: ހެއިޓީ
+ ee: Haiti
+ el: Αϊτή
+ en: Haiti
+ eo: Haitio
+ es: Haití
+ et: Haiti
+ eu: Haiti
+ fa: هائیتی
+ fi: Haiti
+ fo: Haiti
+ fr: Haïti
+ fy: Haïty
+ ga: Háítí
+ gd: Haiti
+ gl: Haití - Haïti
+ gu: હૈતી
+ gv: Haiti
+ he: האיטי
+ hi: हैती
+ hr: Haiti
+ ht: Ayiti
+ hu: Haiti
+ hy: Հաիթի
+ ia: Haiti
+ id: Haiti
+ io: Haiti
+ is: Haítí
+ it: Haiti
+ ja: ハイチ
+ jv: Haiti
+ ka: ჰაიტი
+ kg: Ayiti
+ ki: Haiti
+ kk: Гаити
+ ko: 아이티
+ ku: Haîtî
+ kw: Hayti
+ la: Haitia
+ lb: Haiti
+ li: Haïti
+ ln: Ayiti
+ lt: Haitis
+ lv: Haiti
+ mg: Haiti
+ mk: Хаити
+ ml: ഹെയ്റ്റി
+ mn: Гайти
+ mr: हैती
+ ms: Haiti
+ mt: Ħaiti
+ my: ဟေတီနိုင်ငံ
+ na: Aiti
+ ne: हाइटी
+ nl: Haïti
+ nn: Haiti
+ "no": Haiti
+ nv: Héítii
+ oc: Haití (estat)
+ or: ହିଟି
+ os: Гаити
+ pa: ਹੈਤੀ
+ pl: Haiti
+ ps: هایتي
+ pt: Haiti
+ qu: Ayti (mama llaqta)
+ ro: Haiti
+ ru: Гаити
+ rw: Hayiti
+ se: Haiti
+ sh: Haiti
+ si: හෙයිටි
+ sk: Haiti
+ sl: Haiti
+ so: Haiti
+ sq: Haitia
+ sr: Хаити
+ ss: IHayithi
+ su: Haiti
+ sv: Haiti
+ sw: Haiti
+ ta: எயிட்டி
+ th: ประเทศเฮติ
+ tl: Hayti
+ tr: Haiti
+ tt: Гаити
+ ug: ھايتى
+ uk: Гаїті
+ ur: ہیٹی
+ uz: Gaiti
+ vi: Haiti
+ vo: Haitiyän
+ wa: Ayiti
+ wo: Ayiti
+ yi: האיטי
+ yo: Hàítì
+ zh: 海地
--- /dev/null
+name:
+ default: Magyarország
+ ab: Мадиартәыла
+ af: Hongarye
+ am: ሀንጋሪ
+ an: Hongría
+ ar: المجر
+ ay: Hunkariya
+ az: Macarıstan
+ ba: Венгрия
+ be: Венгрыя
+ bg: Унгария
+ bi: Hungary
+ bn: হাঙ্গেরি
+ bo: ཧུང་གྷ་རི།
+ br: Hungaria
+ bs: Mađarska
+ ca: Hongria
+ ce: Венгри
+ co: Ungheria
+ cs: Maďarsko
+ cu: Ѫгри
+ cv: Венгри
+ cy: Hwngari
+ da: Ungarn
+ de: Ungarn
+ dv: ހަންގޭރީ
+ ee: Hungary
+ el: Ουγγαρία
+ en: Hungary
+ eo: Hungario
+ es: Hungría
+ et: Ungari
+ eu: Hungaria
+ fa: مجارستان
+ ff: Hunngariya
+ fi: Unkari
+ fo: Ungarn
+ fr: Hongrie
+ fy: Hongarije
+ ga: An Ungáir
+ gd: An Ungair
+ gl: Hungría
+ gn: Hungyria
+ gu: હંગેરી
+ gv: Yn Ungaar
+ he: הונגריה
+ hi: हंगरी
+ hr: Mađarska
+ ht: Ongri
+ hu: Magyarország
+ hy: Հունգարիա
+ ia: Hungaria
+ id: Hongaria
+ ie: Hungaria
+ io: Hungaria
+ is: Ungverjaland
+ it: Ungheria
+ ja: ハンガリー
+ jv: Hongaria
+ ka: უნგრეთი
+ kg: Hongrie
+ ki: Macartsa
+ kk: Мажарстан
+ kl: Ungarni
+ km: ប្រទេសហុងគ្រី
+ ko: 헝가리
+ ku: Macaristan
+ kv: Мадьяр Му
+ kw: Hungari
+ ky: Мажарстан
+ la: Hungaria
+ lb: Ungarn
+ li: Hongarieë
+ ln: Ungri
+ lt: Vengrija
+ lv: Ungārija
+ mi: Hanekari
+ mk: Унгарија
+ ml: ഹംഗറി
+ mn: Унгар
+ mr: हंगेरी
+ ms: Hungary
+ mt: Ungerija
+ my: ဟန်ဂေရီနိုင်ငံ
+ na: Ungari
+ ne: हंगेरी
+ nl: Hongarije
+ nn: Ungarn
+ "no": Ungern
+ nv: Hángewii
+ oc: Ongria
+ or: ହଙ୍ଗେରୀ
+ os: Венгри
+ pa: ਹੰਗਰੀ
+ pl: Węgry
+ ps: هنګري
+ pt: Hungria
+ qu: Unriya
+ rm: Ungaria
+ ro: Ungaria
+ ru: Венгрия
+ rw: Hongiriya
+ sa: हंगरी
+ se: Ungára
+ sh: Mađarska
+ si: හන්ගේරියානු සමුහාණ්ඩුව
+ sk: Maďarsko
+ sl: Madžarska
+ sm: Hungary
+ sn: Hungary
+ so: Hungaria
+ sq: Hungaria
+ sr: Мађарска
+ ss: IHangareyi
+ st: Hungary
+ su: Hungaria
+ sv: Ungern
+ sw: Hungaria
+ ta: அங்கேரி
+ te: హంగేరి
+ tg: Маҷористон
+ th: ประเทศฮังการี
+ tk: Wengriýa
+ tl: Unggarya
+ tr: Macaristan
+ ts: Hungary
+ tt: Маҗарстан
+ ug: ۋېنگرىيە
+ uk: Угорщина
+ ur: مجارستان
+ uz: Mojariston
+ vi: Hungary
+ vo: Macarän
+ wo: Ongiri
+ yi: אונגארן
+ yo: Húngárì
+ zh: 匈牙利
--- /dev/null
+name:
+ default: Indonesia
+ af: Indonesië
+ ak: Indonesia
+ am: ኢንዶኔዥያ
+ an: Indonesia
+ ar: إندونيسيا
+ ay: Indunisya
+ az: İndoneziya
+ ba: Индонезия
+ be: Інданезія
+ bg: Индонезия
+ bi: Indonesia
+ bn: ইন্দোনেশিয়া
+ bo: ཨིན་རྡུ་ནི་ཤིས་ཡ།
+ br: Indonezia
+ bs: Indonezija
+ ca: Indonèsia
+ ce: Индонези
+ ch: Indonesia
+ co: Indunesia
+ cs: Indonésie
+ cu: Їндонисїꙗ
+ cv: Индонези
+ cy: Indonesia
+ da: Indonesien
+ de: Indonesien
+ dv: އިންޑޮނޭޝިޔާ
+ el: Ινδονησία
+ en: Indonesia
+ eo: Indonezio
+ es: Indonesia
+ et: Indoneesia
+ eu: Indonesia
+ fa: اندونزی
+ fi: Indonesia
+ fo: Indonesia
+ fr: Indonésie
+ fy: Yndoneezje
+ ga: An Indinéis
+ gd: An Innd-Innse
+ gl: Indonesia
+ gn: Indonesia
+ gu: ઈંડોનેશિયા
+ gv: Yn Indoneesh
+ he: אינדונזיה
+ hi: इंडोनेशिया
+ hr: Indonezija
+ ht: Endonezi
+ hu: Indonézia
+ hy: Ինդոնեզիա
+ ia: Indonesia
+ id: Indonesia
+ ie: Indonesia
+ io: Indonezia
+ is: Indónesía
+ it: Indonesia
+ iu: ᐄᓅᓯᐊ
+ ja: インドネシア
+ jv: Indonésia
+ ka: ინდონეზია
+ ki: Indonesia
+ kk: Индонезия
+ kl: Indonesia
+ km: ឥណ្ឌូនេស៊ី
+ kn: ಇಂಡೋನೇಷ್ಯಾ
+ ko: 인도네시아
+ ku: Îndonezya
+ kv: Индонезия
+ kw: Indonesi
+ ky: Индонезия
+ la: Indonesia
+ lb: Indonesien
+ li: Indonesië
+ ln: Indonezí
+ lt: Indonezija
+ lv: Indonēzija
+ mg: Indonezia
+ mi: Initonīhia
+ mk: Индонезија
+ ml: ഇന്തോനേഷ്യ
+ mn: Индонез
+ mr: इंडोनेशिया
+ ms: Indonesia
+ mt: Indoneżja
+ my: အင်ဒိုနီးရှားနိုင်ငံ
+ na: Indonitsiya
+ ne: इण्डोनेशिया
+ nl: Indonesië
+ nn: Indonesia
+ "no": Indonesia
+ nv: Indoníízha
+ oc: Indonesia
+ om: Indoneeshiyaa
+ or: ଇଣ୍ଡୋନେସିଆ
+ os: Индонези
+ pa: ਇੰਡੋਨੇਸ਼ੀਆ
+ pl: Indonezja
+ ps: اندونيزيا
+ pt: Indonésia
+ qu: Indunisya
+ rm: Indonesia
+ ro: Indonezia
+ ru: Индонезия
+ rw: Indonesiya
+ sa: इण्डोनेशिया
+ se: Indonesia
+ sg: Ênndonezïi
+ sh: Indonezija
+ si: ඉන්දුනීසියාව
+ sk: Indonézia
+ sl: Indonezija
+ sm: Indyunisia
+ so: Indunisiya
+ sq: Indonezia
+ sr: Индонезија
+ ss: INdonesiya
+ su: Indonésia
+ sv: Indonesien
+ sw: Indonesia
+ ta: இந்தோனேசியா
+ te: ఇండోనేషియా
+ tg: Индонезия
+ th: ประเทศอินโดนีเซีย
+ tk: Indoneziýa
+ tl: Indonesya
+ tr: Endonezya
+ tt: Индонезия
+ ug: ھىندونېزىيە
+ uk: Індонезія
+ ur: انڈونیشیا
+ uz: Indoneziya
+ vi: Indonesia
+ vo: Lindäna-Seänuäns
+ wa: Indonezeye
+ wo: Endoneesi
+ yi: אינדאנעזיע
+ yo: Indonésíà
+ za: Yindunizsihya
+ zh: 印度尼西亚 / 印度尼西亞
--- /dev/null
+name:
+ default: Éire / Ireland
+ af: Ierland
+ ak: Aereland
+ am: አየርላንድ
+ an: Irlanda
+ ar: أيرلندا
+ ay: Irlandiya
+ az: İrlandiya
+ ba: Ирландия
+ be: Ірландыя
+ bg: Ирландия
+ bi: Ireland
+ bm: Irilandi
+ bn: আয়ারল্যান্ড
+ bo: ཨ་ཡར་ལནཌ།
+ br: Iwerzhon
+ bs: Irska
+ ca: Irlanda
+ ce: Ирланди
+ co: Irlanda
+ cs: Irsko
+ cu: Єирь
+ cv: Ирланди Республики
+ cy: Iwerddon
+ da: Irland
+ de: Irland
+ dv: އަޔަލޭންޑުގެ ޖުމްހޫރިއްޔާ
+ dz: ཨཱ་ཡ་ལེནཌ
+ ee: Ireland nutome
+ el: Ιρλανδία
+ en: Ireland
+ eo: Irlando
+ es: Irlanda
+ et: Iirimaa
+ eu: Irlanda
+ fa: ایرلند
+ ff: Irlannda
+ fi: Irlanti
+ fo: Írland
+ fr: Irlande
+ fy: Ierlân
+ ga: Éire
+ gd: Èirinn
+ gl: Irlanda
+ gn: Ilandia
+ gu: આયર્લેંડ
+ gv: Nerin
+ ha: Ayalan
+ he: אירלנד
+ hi: आयरलैंड
+ hr: Irska
+ ht: Ilann
+ hu: Írország
+ hy: Իռլանդիա
+ ia: Irlanda
+ id: Irlandia
+ ie: Irland
+ io: Irlando
+ is: Írland
+ it: Irlanda
+ ja: アイルランド
+ jv: Republik Irlandia
+ ka: ირლანდია
+ ki: Ayalandi
+ kk: Ирландия
+ kl: Irlandi
+ km: អៀរឡង់
+ kn: ಐರ್ಲೆಂಡ್
+ ko: 아일랜드
+ ks: اَیَرلینٛڑ
+ ku: Îrland
+ kv: Ирландия
+ kw: Repoblek Wordhen
+ ky: Ирландия
+ la: Hibernia
+ lb: Irland
+ lg: Ayalandi
+ li: Ierland
+ ln: Irelandɛ
+ lo: ໄອແລນ
+ lt: Airija
+ lv: Īrija
+ mg: Irlandy
+ mi: Airangi
+ mk: Ирска
+ ml: അയർലാൻഡ്
+ mn: Ирланд
+ mr: आयर्लंड
+ ms: Ireland
+ mt: Irlanda
+ my: အိုင်ယာလန်
+ na: Ripubrikit Airerand
+ ne: आइरल्याण्ड
+ nl: Ierland
+ nn: Irland
+ "no": Irland
+ nv: Bitsiighaʼ Łichííʼí Bikéyah
+ oc: Republica d'Irlanda
+ or: ଆୟରଲ୍ୟାଣ୍ଡ
+ os: Ирланди
+ pl: Irlandia
+ ps: د آيرلېنډ جمهوريت
+ pt: Irlanda
+ qu: Ilanda
+ rm: Irlanda
+ rn: Irilandi
+ ro: Irlanda
+ ru: Ирландия
+ rw: Irilande
+ sc: Irlanda
+ se: Irlánda
+ sg: Irlânde
+ sh: Irska
+ si: අයර්ලන්තය
+ sk: Írsko
+ sl: Irska
+ sn: Ireland
+ so: Ayrlaand
+ sq: Irlandë
+ sr: Ирска
+ ss: IYalendi
+ sv: Irland
+ sw: Ayalandi
+ ta: அயர்லாந்து
+ te: ఐర్ లాండ్
+ tg: Ҷумҳурии Ирландия
+ th: สาธารณรัฐไอร์แลนด์
+ ti: አየርላንድ
+ tk: Irlandiýa
+ tl: Irlanda
+ to: ʻAealani
+ tr: İrlanda
+ ts: Ireland
+ tt: Ирландия
+ uk: Ірландія
+ ur: آئرلینڈ
+ uz: Irlandiya
+ vi: Ireland
+ vo: Lireyän
+ wa: Irlande
+ yi: אירלאנד
+ yo: Orílẹ́ède Ailandi
+ za: Aiwjlanz Gunghozgoz
+ zh: 愛爾蘭
+ zu: i-Ireland
--- /dev/null
+name:
+ default: ישראל
+ af: Israel
+ am: እስራኤል
+ an: Israel
+ ar: إسرائيل
+ av: Гlизраил
+ az: İsrail
+ ba: Израиль
+ be: Ізраіль
+ bg: Израел
+ bm: Israil
+ bn: ইসরায়েল
+ bo: ཨི་སི་ར་ཨེལ།
+ br: Israel
+ bs: Izrael
+ ca: Israel
+ ce: Израиль
+ co: Israele
+ cs: Izrael
+ cu: Їꙁдраил҄ь
+ cv: Израиль
+ cy: Israel
+ da: Israel
+ de: Israel
+ dv: އިސްރާއީލު
+ dz: ཨིཛ་རཱེལ་
+ el: Ισραήλ
+ en: Israel
+ eo: Israelo
+ es: Israel
+ et: Iisrael
+ eu: Israel
+ fa: اسرائیل
+ fi: Israel
+ fj: Isireli
+ fo: Ísrael
+ fr: Israël
+ fy: Israel
+ ga: Iosrael
+ gd: Iosrael
+ gl: Israel
+ gn: Israel
+ gu: ઈઝરાયલ
+ gv: Israel
+ ha: Isra'ila
+ he: ישראל
+ hi: इज़राइल
+ hr: Izrael
+ ht: Izrayèl
+ hu: Izrael
+ hy: Իսրայել
+ ia: Israel
+ id: Israel
+ ie: Israel
+ ig: Israel
+ io: Israel
+ is: Ísrael
+ it: Israele
+ ja: イスラエル
+ jv: Israèl
+ ka: ისრაელი
+ kg: Israel
+ kk: Израиль
+ kl: Israel
+ kn: ಇಸ್ರೇಲ್
+ ko: 이스라엘
+ ku: Îsraêl
+ kv: Израиль
+ kw: Ysrael
+ ky: Израиль
+ la: Israel
+ lb: Israel
+ li: Israël
+ ln: Israel
+ lt: Izraelis
+ lv: Izraēla
+ mi: Iharaira
+ mk: Израел
+ ml: ഇസ്രയേൽ
+ mn: Израйль
+ mr: इस्रायल
+ ms: Israel
+ mt: Iżrael
+ my: အစ္စရေးနိုင်ငံ
+ na: Iteraer
+ ne: इजरायल
+ nl: Israël
+ nn: Israel
+ "no": Israel
+ nv: Ízrel Bikéyah
+ oc: Israèl
+ or: ଇସ୍ରାଏଲ
+ os: Израиль
+ pa: ਇਜ਼ਰਾਇਲ
+ pl: Izrael
+ ps: اسرائيل
+ pt: Israel
+ qu: Israyil
+ ro: Israel
+ ru: Израиль
+ rw: Isirayeli
+ sa: इस्रेल
+ sc: Israele
+ se: Israel
+ sh: Izrael
+ si: ඊශ්රායලය
+ sk: Izrael
+ sl: Izrael
+ sm: Israel
+ so: Israaiil
+ sq: Izraeli
+ sr: Израел
+ ss: Ka-Israyeli
+ sv: Israel
+ sw: Israel
+ ta: இசுரேல்
+ te: ఇజ్రాయిల్
+ tg: Исроил
+ th: ประเทศอิสราเอล
+ tk: Ysraýyl
+ tl: Israel
+ tr: İsrail
+ tt: Исраил
+ ug: ئىسرائىلىيە
+ uk: Ізраїль
+ ur: اسرائیل
+ uz: Isroil
+ vi: Israel
+ vo: Yisraelän
+ wa: Israyel
+ wo: Israayil
+ yi: ישראל
+ yo: Ísráẹ́lì
+ zh: 以色列
+ zu: Isreyili
--- /dev/null
+name:
+ default: Isle of Man
+ af: Eiland Man
+ an: Isla de Man
+ ar: جزيرة مان
+ az: Men adası
+ be: Востраў Мэн
+ bg: Ман
+ bn: আইল অফ ম্যান
+ br: Manav
+ bs: Ostrvo Man
+ ca: Illa de Man
+ cs: Man
+ cv: Мэн утравĕ
+ cy: Ynys Manaw
+ da: Isle of Man
+ de: Insel Man
+ dv: އައިޒަލް އޮފް މޭން
+ el: Νήσος του Μαν
+ en: Isle of Man
+ eo: Manksinsulo
+ es: Isla de Man
+ et: Man
+ eu: Man
+ fa: جزیره من
+ fi: Mansaari
+ fo: Mann
+ fr: Île de Man
+ fy: Man
+ ga: Oileán Mhanann
+ gd: Eilean Mhanainn
+ gl: Illa de Man
+ gv: Ellan Vannin
+ he: האי מאן
+ hi: आइल ऑफ़ मैन
+ hr: Otok Man
+ hu: Man
+ hy: Մեն կղզի
+ ia: Insula de Man
+ id: Pulau Man
+ io: Man-Insulo
+ is: Mön
+ it: Isola di Man
+ ja: マン島
+ jv: Pulo Man
+ ka: მენი
+ ko: 맨 섬
+ kw: Ynys Manow
+ la: Monapia
+ li: Man
+ lt: Meno Sala
+ lv: Menas Sala
+ mi: Motu o Man
+ mk: Ман
+ ml: ഐൽ ഒഫ് മാൻ
+ mr: आईल ऑफ मान
+ ms: Isle of Man
+ nl: Eiland Man
+ nn: Isle of Man
+ "no": Man
+ oc: Illa de Man
+ os: Мэн
+ pa: ਮੈਨ ਟਾਪੂ
+ pl: Wyspa Man
+ pt: Ilha de Man
+ qu: Man wat'a
+ ro: Insula Man
+ ru: Остров Мэн
+ rw: Ikirwa cya Man
+ sh: Otok Man
+ sk: Ostrov Man
+ sl: Otok Man
+ sq: Ishulli i Njeriut
+ sr: Острво Ман
+ su: Pulo Man
+ sv: Isle of Man
+ sw: Isle of Man
+ ta: மாண் தீவு
+ th: เกาะแมน
+ tl: Pulo ng Man
+ tr: Man Adası
+ tt: Мэн утравы
+ uk: Острів Мен
+ ur: آئل آف مین
+ vi: Đảo Man
+ vo: Mäneän
+ yo: Erékùṣù ilẹ̀ Man
+ zh: 马恩岛
--- /dev/null
+name:
+ default: India
+ af: Indië
+ ar: الهند
+ be: Індыя
+ br: India
+ da: Indien
+ de: Indien
+ el: Ινδία
+ en: India
+ eo: Barato
+ fa: هند
+ fi: Intia
+ fr: Inde
+ fy: Yndia
+ ga: An India
+ gd: Na h-Innseachan
+ he: הודו
+ hi: भारत
+ hu: India
+ is: Indland
+ it: India
+ iu: ᐃᓐᑎᐊ/intia
+ ja: インド
+ lb: Indien
+ lt: Indija
+ lv: Indija
+ mn: Энэтхэг
+ pl: Indie
+ ru: Индия
+ sl: Indija
+ sv: Indien
+ th: ประเทศอินเดีย
+ tr: Hindistan
+ uk: Індія
+ vi: Ấn Độ
+ zh: 印度
--- /dev/null
+name:
+ default: British Indian Ocean Territory
+ af: Britse Indiese Oseaan Gebied
+ ak: Britenfo Hɔn Man Wɔ India Po No Mu
+ am: የብሪታኒያ ህንድ ውቂያኖስ ግዛት
+ an: Territorio Britanico de l'Ozián Indico
+ ar: إقليم المحيط الهندي البريطاني
+ az: Britaniya-Hindistan Okeanik territoriyası
+ be: Брытанскія Індыйска-акіянскія тэрыторыі
+ bg: Британска индоокеанска територия
+ bm: Angilɛ ka ɛndu dugukolo
+ bn: ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল
+ br: Tiriad Meurvor Indez Breizh-Veur
+ bs: Britanski teritorij Indijskog okeana
+ ca: Territori Britànic de l'Oceà Índic
+ cs: Britské indickooceánské území
+ cy: Tiriogaeth Prydain yng Nghefnfor India
+ da: Britiske Indiske Ocean
+ de: Britisches Territorium im Indischen Ozean
+ dz: བྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངས
+ ee: Britaintɔwo ƒe india ƒudome nutome
+ el: Βρετανικό Έδαφος Ινδικού Ωκεανού
+ en: British Indian Ocean Territory
+ eo: Brita Hindoceana Teritorio
+ es: Territorio Británico del Océano Índico
+ et: Briti India ookeani ala
+ eu: Indiako Ozeanoko Britainiar Lurraldea
+ fa: مستعمرههای بریتانیا در اقیانوس هند
+ ff: Keeriindi britaani to maayo enndo
+ fi: Brittiläinen Intian valtameren alue
+ fo: Bretsku Indiahavsoyggjarnar
+ fr: Territoire britannique de l'Océan Indien
+ fy: Britske Yndyske-Oseaanterritoarium
+ ga: Críoch Aigéan Indiach na Breataine
+ gd: Ranntair Breatannach Cuan nan Innseachan
+ gl: Territorio Británico do Océano Índico
+ gu: બ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરી
+ ha: Yankin Birtaniya Na Tekun Indiya
+ he: טריטוריה בריטית באוקיאנוס ההודי
+ hi: ब्रिटिश हिंद महासागर क्षेत्र
+ hr: Britanski Indijskooceanski Teritoriji
+ hu: Brit Indiai-óceáni Terület
+ ia: Territorio oceanic britanno-indian
+ id: Teritorial Britania di Samudra Hindia
+ io: Britaniana teritorio en Indiana Oceano
+ is: Breska Indlandshafseyjar
+ it: Territorio britannico dell'oceano Indiano
+ ja: イギリス領インド洋地域
+ ka: ბრიტანეთის ინდოეთის ოკეანის ტერიტორია
+ ki: Eneo la Uingereza katika Bahari Hindi
+ km: ដែនមហាសមុទ្រឥណ្ឌា ចក្រភពអង់គ្លេស
+ kn: ಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾಸಾಗರ ಪ್ರದೇಶ
+ ko: 영국령 인도양 지역
+ ks: برطانوی بحرِ ہِنٛدۍ علاقہٕ
+ ku: Xakên Brîtanyayê yên Okyanûsa Hindî
+ lg: Bizinga by'eCago
+ ln: Mabelé ya Angɛlɛtɛ́lɛ na mbú ya Indiya
+ lo: ບຣິດທິສອິນດ່ຽນໂອຊ່ຽນເທີຣິທໍຣີ
+ lt: Indijos vandenyno Britų sritis
+ lv: Indijas okeāna Britu teritorija
+ mg: Faridranomasina indiana britanika
+ mk: Британска Индоокеанска Територија
+ ml: ബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശം
+ mn: Британийн Энэтхэгийн Далайн Нутаг дэвсгэр
+ mr: ब्रिटीश हिंदी महासागर क्षेत्र
+ ms: Wilayah Lautan Hindi British
+ my: ဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်
+ ne: बेलायती हिन्द महासागर क्षेत्र
+ nl: Brits Territorium in de Indische Oceaan
+ nn: Britiske område i Det indiske hav
+ "no": Det britiske territoriet i Indiahavet
+ or: ବ୍ରିଟିଶ୍ ଭାରତୀୟ ସାମୁଦ୍ରିକ କ୍ଷେତ୍ର
+ pl: Brytyjskie Terytorium Oceanu Indyjskiego
+ pt: Território Britânico do Oceano Índico
+ rm: Territori Britannic en l'Ocean Indic
+ rn: Intara y'Ubwongereza yo mu birwa by'Abahindi
+ ro: Teritoriul Britanic din Oceanul Indian
+ ru: Британская Территория в Индийском Океане
+ sg: Sêse tî Anglëe na Ngûyämä tî Ênnde
+ sh: Britanski teritorij Indijskog oceana
+ si: බ්රිතාන්ය ඉන්දීය සාගර ප්රාන්තය
+ sk: Britské indickooceánske územie
+ sl: Britanski teritorij v Indijskem oceanu
+ sr: Британска територија Индијског океана
+ sv: Brittiska territoriet i Indiska oceanen
+ sw: Eneo la Uingereza katika Bahari Hindi
+ ta: பிரித்தானிய இந்தியப் பெருங்கடல் மண்டலம்
+ te: బ్రిటిష్ భారతీయ ఓషన్ ప్రాంతం
+ th: บริติชอินเดียนโอเชียนเทร์ริทอรี
+ ti: የብሪታኒያ ህንድ ውቂያኖስ ግዛት
+ to: Potu fonua moana ʻInitia fakapilitānia
+ tr: Britanya Hint Okyanusu Toprakları
+ uk: Британська територія в Індійському океані
+ ur: برطانوی ہندوستانی سمندری خطہ
+ vi: Lãnh thổ Ấn Độ Dương thuộc Anh
+ yo: Orílẹ́ède Etíkun Índíánì ti Ìlú Bírítísì
+ zh: 英属印度洋领地
+ zu: i-British Indian Ocean Territory
--- /dev/null
+name:
+ default: العراق
+ af: Irak
+ am: ኢራቅ
+ an: Iraq
+ ar: العراق
+ av: ГӀиракъ
+ az: İraq
+ be: Ірак
+ bg: Ирак
+ bn: ইরাক
+ bo: ཡི་ལའ་ཁོ།
+ br: Irak
+ bs: Irak
+ ca: Iraq
+ ce: Ӏиракъ
+ cs: Irák
+ cv: Ирак
+ cy: Irac
+ da: Irak
+ de: Irak
+ dv: ޢިރާޤު
+ el: Ιράκ
+ en: Iraq
+ eo: Irako
+ es: Irak
+ et: Iraak
+ eu: Irak
+ fa: عراق
+ fi: Irak
+ fo: Irak
+ fr: Irak
+ fy: Irak
+ ga: An Iaráic
+ gd: Ioràc
+ gl: Iraq - العراق
+ gu: ઈરાક
+ gv: Yn Earack
+ he: עיראק
+ hi: इराक़
+ hr: Irak
+ ht: Irak
+ hu: Irak
+ hy: Իրաք
+ ia: Irak
+ id: Irak
+ ie: Irak
+ io: Irak
+ is: Írak
+ it: Iraq
+ iu: ᐃᕉᒃ
+ ja: イラク
+ jv: Irak
+ ka: ერაყი
+ ki: Iraq
+ kk: Ирак
+ kl: Iraq
+ kn: ಇರಾಕ್
+ ko: 이라크
+ ku: Iraq
+ kv: Ирак
+ kw: Irak
+ ky: Ирак
+ la: Iracum
+ lb: Irak
+ li: Irak
+ ln: Irak
+ lt: Irakas
+ lv: Irāka
+ mi: Irāki
+ mk: Ирак
+ ml: ഇറാഖ്
+ mn: Ирак
+ mr: इराक
+ ms: Iraq
+ mt: Iraq
+ my: အီရတ်နိုင်ငံ
+ na: Irak
+ nb: Irak
+ ne: ईराक
+ nl: Irak
+ nn: Irak
+ "no": Irak
+ nv: Iiwááʼ
+ oc: Iraq
+ or: ଇରାକ
+ os: Ирак
+ pa: ਇਰਾਕ
+ pl: Irak
+ ps: عراق
+ pt: Iraque
+ qu: Iraq
+ ro: Irak
+ ru: Ирак
+ rw: Irake
+ sa: ईराक
+ se: Irak
+ sh: Irak
+ si: ඉරාක ජනරජය
+ sk: Irak
+ sl: Irak
+ so: Ciraaq
+ sq: Iraku
+ sr: Ирак
+ ss: I-Irakhi
+ su: Irak
+ sv: Irak
+ sw: Iraq
+ ta: ஈராக்
+ te: ఇరాక్
+ tg: Ироқ
+ th: ประเทศอิรัก
+ tk: Yrak
+ tl: Irak
+ tr: Irak
+ tt: Гыйрак
+ tw: Irak
+ ug: ئىراق
+ uk: Ірак
+ ur: عراق
+ uz: Iroq
+ vi: Iraq
+ vo: Lirakän
+ wa: Irak
+ wo: Iraak
+ yi: איראק
+ yo: Irak
+ zh: 伊拉克
+ zu: I-Iraki
--- /dev/null
+name:
+ default: ایران
+ af: Iran
+ am: ፋርስ
+ an: Irán
+ ar: إیران
+ az: İran
+ ba: Иран
+ be: Іран
+ bg: Иран
+ bn: ইরান
+ bo: ཡི་ལང་།
+ br: Iran
+ bs: Iran
+ ca: Iran
+ ce: Иран
+ co: Iranu
+ cs: Írán
+ cy: Iran
+ da: Iran
+ de: Iran
+ dv: އީރާން
+ dz: ཨི་རཱན་
+ el: Ιράν
+ en: Iran
+ eo: Irano
+ es: Irán
+ et: Iraan
+ eu: Iran
+ fa: ایران
+ fi: Iran
+ fo: Iran
+ fr: Iran
+ fy: Iran
+ ga: An Iaráin
+ gd: Ioràn
+ gl: Irán - ایران
+ gn: Irán
+ gu: ઈરાન
+ gv: Yn Eeraan
+ ha: Iran
+ he: איראן
+ hi: ईरान
+ hr: Iran
+ ht: Iran
+ hu: Irán
+ hy: Իրան
+ ia: Iran
+ id: Iran
+ ie: Iran
+ io: Iran
+ is: Íran
+ it: Iran
+ ja: イラン
+ jv: Iran
+ ka: ირანი
+ kk: Иран
+ kl: Iran
+ km: អ៊ីរ៉ង់
+ kn: ಇರಾನ್
+ ko: 이란
+ ks: ایٖران
+ ku: Îran
+ kv: Иран
+ kw: Iran
+ ky: Иран
+ la: Irania
+ lb: Iran
+ li: Iran
+ ln: Iran
+ lt: Iranas
+ lv: Irāna
+ mg: Iran
+ mi: Irāna
+ mk: Иран
+ ml: ഇറാൻ
+ mn: Иран
+ mr: इराण
+ ms: Iran
+ mt: Iran
+ my: အီရန်နိုင်ငံ
+ na: Iran
+ ne: इरान
+ nl: Iran
+ nn: Iran
+ "no": Iran
+ nv: Iiwą́ą́
+ oc: Iran
+ or: ଇରାନ
+ os: Иран
+ pa: ਇਰਾਨ
+ pl: Iran
+ ps: ایران
+ pt: Irão
+ qu: Iran
+ rm: Iran
+ ro: Iran
+ ru: Иран
+ rw: Irani
+ sa: ईरान
+ sc: Iran
+ se: Iran
+ sh: Iran
+ si: ඉරානය
+ sk: Irán
+ sl: Iran
+ so: Iiraan
+ sq: Irani
+ sr: Иран
+ ss: I-Irani
+ su: Iran
+ sv: Iran
+ sw: Uajemi
+ ta: ஈரான்
+ te: ఇరాన్
+ tg: Эрон
+ th: ประเทศอิหร่าน
+ tk: Eýran
+ tl: Iran
+ tr: İran
+ tt: Иран
+ tw: Iran
+ ug: ئىران
+ uk: Іран
+ ur: ایران
+ uz: Eron
+ vi: Iran
+ vo: Lirän
+ wa: Iran
+ wo: Iraan
+ yi: איראן
+ yo: Ìránì
+ za: Iran
+ zh: 伊朗
+ zu: I-Irani
--- /dev/null
+name:
+ default: Ísland
+ af: Ysland
+ am: አይስላንድ
+ an: Islandia
+ ar: آيسلندا
+ az: İslandiya
+ ba: Исландия
+ be: Ісландыя
+ bg: Исландия
+ bi: Iceland
+ bm: Aisland
+ bn: আইসল্যান্ড
+ bo: ཨཡིསུ་ལེན་ཌ།
+ br: Island
+ bs: Island
+ ca: Islàndia
+ ce: Исланди
+ co: Islanda
+ cs: Island
+ cu: Исландъ
+ cv: Исланди
+ cy: Gwlad yr Iâ
+ da: Island
+ de: Island
+ dv: އައިސްލަންޑަން
+ dz: ཨའིསི་ལེནཌ་
+ ee: Iceland
+ el: Ισλανδία
+ en: Iceland
+ eo: Islando
+ es: Islandia
+ et: Island
+ eu: Islandia
+ fa: ایسلند
+ ff: Islannda
+ fi: Islanti
+ fo: Ísland
+ fr: Islande
+ fy: Yslân
+ ga: An Íoslainn
+ gd: Innis Tìle
+ gl: Islandia
+ gn: Iylanda
+ gu: આઈસલેંડ
+ gv: Yn Eeslynn
+ he: איסלנד
+ hi: आइसलैण्ड
+ hr: Island
+ ht: Islann
+ hu: Izland
+ hy: Իսլանդիա
+ ia: Islanda
+ id: Islandia
+ ie: Island
+ io: Islando
+ is: Ísland
+ it: Islanda
+ ja: アイスランド
+ jv: Islandia
+ ka: ისლანდია
+ kg: Islande
+ kk: Исландия
+ kl: Islandi
+ km: ប្រទេសអាយឡែន
+ kn: ಐಸ್ಲ್ಯಾಂಡ್
+ ko: 아이슬란드
+ ku: Îslenda
+ kv: Исландия
+ kw: Island
+ ky: Исландия
+ la: Islandia
+ lb: Island
+ lg: Isilandi
+ li: Iesland
+ ln: Islandi
+ lo: ອິດສະລັງ
+ lt: Islandija
+ lv: Islande
+ mi: Tiorangi
+ mk: Исланд
+ ml: ഐസ്ലാന്റ്
+ mn: Исланд
+ mr: आइसलँड
+ ms: Iceland
+ mt: Iżlanda
+ my: အိုက်စလန်နိုင်ငံ
+ na: Aiterand
+ nb: Island
+ ne: आइसल्याण्ड
+ nl: IJsland
+ nn: Island
+ "no": Island
+ nv: Tin Bikéyah
+ oc: Islàndia
+ or: ଆଇସଲ୍ୟାଣ୍ଡ
+ os: Исланди
+ pa: ਆਈਸਲੈਂਡ
+ pl: Islandia
+ ps: آيسلېنډ
+ pt: Islândia
+ qu: Islandya
+ rm: Islanda
+ ro: Islanda
+ ru: Исландия
+ rw: Isilande
+ sa: आइसलैंड
+ sc: Islanda
+ se: Islánda
+ sg: Islânde
+ sh: Island
+ si: අයිස්ලන්තය
+ sk: Island
+ sl: Islandija
+ sm: Aiselani
+ so: Island
+ sq: Islanda
+ sr: Исланд
+ ss: Echweni
+ st: Iceland
+ su: Islandia
+ sv: Island
+ sw: Iceland
+ ta: ஐசுலாந்து
+ te: ఐస్లాండ్
+ tg: Исландия
+ th: ประเทศไอซ์แลนด์
+ tk: Islandiýa
+ tl: Lupangyelo
+ tr: İzlanda
+ tt: Исландия
+ ug: ئىسلاندىيە
+ uk: Ісландія
+ ur: آئس لینڈ
+ uz: Islandiya
+ vi: Iceland
+ vo: Lisladeän
+ wa: Izlande
+ wo: Islaand
+ yi: איסלאנד
+ yo: Íslándì
+ zh: 冰岛
+ zu: I-Ayisilandi
--- /dev/null
+name:
+ default: Italia
+ ab: Италиа
+ af: Italië
+ ak: Italy
+ am: ጣልያን
+ an: Italia
+ ar: إيطاليا
+ as: ইটালী
+ ay: Italiya
+ az: İtaliya
+ ba: Италия
+ be: Італія
+ bg: Италия
+ bi: Itali
+ bn: ইতালি
+ bo: ཨི་ཏ་ལི།
+ br: Italia
+ bs: Italija
+ ca: Itàlia
+ ce: Итали
+ co: Italia
+ cs: Itálie
+ cu: Италїꙗ
+ cv: Итали
+ cy: Yr Eidal
+ da: Italien
+ de: Italien
+ dv: އިޓަލީވިލާތް
+ dz: ཨྀཊ་ལི་
+ ee: Italy
+ el: Ιταλία
+ en: Italy
+ eo: Italio
+ es: Italia
+ et: Itaalia
+ eu: Italia
+ fa: ایتالیا
+ ff: Italiya
+ fi: Italia
+ fo: Italia
+ fr: Italie
+ fy: Itaalje
+ ga: An Iodáil
+ gd: An Eadailt
+ gl: Italia
+ gn: Itália
+ gu: ઈટલી
+ gv: Yn Iddaal
+ he: איטליה
+ hi: इटली
+ hr: Italija
+ ht: Itali
+ hu: Olaszország
+ hy: Իտալիա
+ ia: Italia
+ id: Italia
+ ie: Italia
+ io: Italia
+ is: Ítalía
+ it: Italia
+ ja: イタリア
+ jv: Italia
+ ka: იტალია
+ kg: Italia
+ ki: Italia
+ kk: Италия
+ kl: Italia
+ km: អ៊ីតាលី
+ kn: ಇಟಲಿ
+ ko: 이탈리아
+ ku: Îtalya
+ kv: Италия
+ kw: Itali
+ ky: Италия
+ la: Italia
+ lb: Italien
+ lg: Yitale
+ li: Italië
+ ln: Italya
+ lo: ອິຕາລີ
+ lt: Italija
+ lv: Itālija
+ mg: Italia
+ mi: Itari
+ mk: Италија
+ ml: ഇറ്റലി
+ mn: Итали
+ mr: इटली
+ ms: Itali
+ mt: Italja
+ my: အီတလီနိုင်ငံ
+ na: Itari
+ ne: इटाली
+ nl: Italië
+ nn: Italia
+ "no": Italia
+ nv: Ídelii
+ oc: Itàlia
+ or: ଇଟାଲୀ
+ os: Итали
+ pa: ਇਟਲੀ
+ pl: Włochy
+ ps: اېټاليا
+ pt: Itália
+ qu: Italya
+ rm: Italia
+ ro: Italia
+ ru: Италия
+ rw: Ubutaliyani
+ sa: इटली
+ sc: Itàlia
+ se: Itália
+ sg: Italùii
+ sh: Italija
+ sk: Taliansko
+ sl: Italija
+ sm: Italia
+ so: Talyaaniga
+ sq: Italia
+ sr: Италија
+ ss: INtaliyane
+ su: Italia
+ sv: Italien
+ sw: Italia
+ ta: இத்தாலி
+ te: ఇటలీ
+ tg: Итолиё
+ th: ประเทศอิตาลี
+ tk: Italiýa
+ tl: Italya
+ tr: İtalya
+ tt: Италия
+ tw: Italy
+ ty: ’Itāria
+ ug: ئىتالىيە
+ uk: Італія
+ ur: اطالیہ
+ uz: Italiya
+ ve: Italy
+ vi: Ý
+ vo: Litaliyän
+ wa: Itåleye
+ wo: Itaali
+ yi: איטאליע
+ yo: Itálíà
+ zh: 意大利
+ zu: ITaliya
--- /dev/null
+name:
+ default: Jersey
+ af: Jersey
+ an: Jèrri
+ ar: جيرزي
+ az: Cersi
+ be: Джэрсi
+ bg: Джърси
+ br: Jerzenez
+ bs: Jersey
+ ca: Jersey
+ cs: Jersey
+ cy: Jersey
+ da: Jersey
+ de: Jersey
+ dv: ޖާސޭ
+ el: Υερσέη
+ en: Jersey
+ eo: Ĵerzejo
+ es: Jersey
+ et: Jersey
+ eu: Jersey
+ fa: جرزی
+ fi: Jersey
+ fr: Jersey
+ ga: Geirsí
+ gd: Jersey
+ gl: Illa de Jersey
+ gv: Jersee
+ he: ג'רזי
+ hr: Jersey
+ hu: Jersey
+ hy: Ջերսի
+ id: Jersey
+ io: Jersey
+ is: Jersey
+ it: Isola di Jersey
+ ja: ジャージー
+ jv: Jersey
+ ka: ჯერზი
+ kn: ಜರ್ಸಿ
+ ko: 저지 섬
+ kw: Jersi
+ la: Caesarea Insula
+ li: Jersey
+ lt: Džersis
+ lv: Džērsija
+ mi: Tōrehe
+ mn: Жерси
+ mr: जर्सी
+ ms: Jersey
+ ne: जर्सी
+ nl: Jersey
+ nn: Jersey
+ "no": Jersey
+ oc: Jersei
+ os: Джерси
+ pa: ਜਰਸੀ
+ pl: Jersey
+ pt: Jersey
+ ro: Insula Jersey
+ ru: Джерси
+ rw: Jersey
+ sh: Jersey
+ sk: Jersey
+ sl: Jersey
+ sq: Jersey
+ sr: Џерзи
+ su: Jersey
+ sv: Jersey
+ sw: Jersey
+ ta: யேர்சி
+ te: జెర్సీ
+ th: เจอร์ซีย์
+ tl: Hersey
+ tr: Jersey
+ tt: Җерси
+ uk: Джерсі
+ ur: جرزی
+ vi: Jersey
+ yo: Jersey
+ zh: 澤西島
--- /dev/null
+name:
+ default: Jamaica
+ af: Jamaika
+ ar: جامايكا
+ be: Ямайка
+ br: Jamaika
+ cs: Jamajka
+ de: Jamaika
+ el: Ιαμαϊκή
+ en: Jamaica
+ eo: Jamajko
+ fa: جامائیکا
+ fi: Jamaika
+ fr: Jamaïque
+ fy: Jamaika
+ ga: Iamáice
+ gd: Iaimeuca
+ he: ג'מייקה
+ hr: Jamajka
+ hu: Jamaica
+ id: Jamaika
+ io: Jamaika
+ is: Jamaíka
+ it: Giamaica
+ ja: ジャマイカ
+ ku: Camayka
+ la: Iamaica
+ lb: Jamaika
+ lt: Jamaika
+ lv: Jamaika
+ mn: Ямайка
+ nl: Jamaica
+ oc: Jamaica
+ pl: Jamajka
+ pt: Jamaica
+ ru: Ямайка
+ se: Jamaica
+ sk: Jamajka
+ sl: Jamajka
+ sv: Jamaica
+ ta: ஜமேக்கா
+ th: ประเทศจาเมกา
+ tr: Jamaika
+ uk: Ямайка
+ vo: Camekeän
+ zh: 牙买加
--- /dev/null
+name:
+ default: الأردن
+ af: Jordanië
+ am: ጆርዳን
+ an: Chordania
+ ar: الأردن
+ az: İordaniya
+ ba: Иордания
+ be: Іарданія
+ bg: Йордания
+ bm: Ordon
+ bn: জর্দান
+ bo: རྗོར་ཌན།
+ br: Jordania
+ bs: Jordan
+ ca: Jordània
+ cs: Jordánsko
+ cv: Иордани
+ cy: Gwlad Iorddonen
+ da: Jordan
+ de: Jordanien
+ dv: އުރުދުން
+ el: Ιορδανία
+ en: Jordan
+ eo: Jordanio
+ es: Jordania
+ et: Jordaania
+ eu: Jordania
+ fa: اردن
+ fi: Jordania
+ fo: Jordan
+ fr: Jordanie
+ fy: Jordaanje
+ ga: An Iordáin
+ gd: Iòrdan
+ gl: Xordania
+ gu: જૉર્ડન
+ gv: Yn Jordaan
+ he: ירדן
+ hi: जॉर्डन
+ hr: Jordan
+ ht: Jòdani
+ hu: Jordánia
+ hy: Հորդանան
+ ia: Jordania
+ id: Yordania
+ ie: Jordania
+ io: Jordania
+ is: Jórdanía
+ it: Giordania
+ ja: ヨルダン
+ jv: Yordania
+ ka: იორდანია
+ kk: Иордания
+ kl: Jordan
+ km: ហ្សកដង់
+ ko: 요르단
+ ks: اردن
+ ku: Urdun
+ kv: Иордания
+ kw: Jordan
+ la: Iordania
+ lb: Jordanien
+ li: Jordanië
+ ln: Zordaní
+ lt: Jordanija
+ lv: Jordānija
+ mi: Hōrano
+ mk: Јордан
+ ml: ജോർദാൻ
+ mn: Йордан
+ mr: जॉर्डन
+ ms: Jordan
+ mt: Ġordan
+ my: ဂျော်ဒန်နိုင်ငံ
+ na: Djordan
+ nl: Jordanië
+ nn: Jordan
+ "no": Jordan
+ nv: Jóoʼdan
+ oc: Jordania
+ or: ଜୋର୍ଡାନ
+ os: Иордани
+ pa: ਜਾਰਡਨ
+ pl: Jordania
+ ps: اردن
+ pt: Jordânia
+ qu: Hurdanya
+ ro: Iordania
+ ru: Иордания
+ rw: Yorudani
+ sa: जार्डन
+ se: Jordania
+ sh: Jordan
+ sk: Jordánsko
+ sl: Jordanija
+ so: Urdun
+ sq: Jordania
+ sr: Јордан
+ ss: IJoridane
+ su: Yordania
+ sv: Jordanien
+ sw: Yordani
+ ta: ஜோர்தான்
+ te: జోర్డాన్
+ th: ประเทศจอร์แดน
+ tk: Iordaniýa
+ tl: Hordan
+ tr: Ürdün
+ tt: Үрдүн
+ ug: ئىئوردانىيە
+ uk: Йорданія
+ ur: اردن
+ uz: Iordaniya
+ vi: Jordan
+ vo: Yordän
+ wo: Jordaani
+ yi: יארדאניע
+ yo: Jọ́rdánì
+ zh: 约旦/約旦
--- /dev/null
+name:
+ default: 日本
+ ab: Иапониа
+ af: Japan
+ am: ጃፓን
+ an: Chapón
+ ar: اليابان
+ as: জাপান
+ ay: Nihun
+ az: Yaponiya
+ ba: Япония
+ be: Японія
+ bg: Япония
+ bn: জাপান
+ bo: རི་པིན།
+ br: Japan
+ bs: Japan
+ ca: Japó
+ ce: Япони
+ ch: Chapan
+ cs: Japonsko
+ cu: Ꙗпѡнїꙗ
+ cv: Япони
+ cy: Japan
+ da: Japan
+ de: Japan
+ dv: ޖަޕާނު
+ dz: ཇཱ་པཱན།
+ ee: Japan
+ el: Ιαπωνία
+ en: Japan
+ eo: Japanio
+ es: Japón
+ et: Jaapan
+ eu: Japonia
+ fa: ژاپن
+ fi: Japani
+ fo: Japan
+ fr: Japon
+ fy: Japan
+ ga: An tSeapáin
+ gd: An t-Seapan
+ gl: Xapón
+ gn: Hapõ
+ gu: જાપાન
+ gv: Yn Çhapaan
+ ha: Japan
+ he: יפן
+ hi: जापान
+ hr: Japan
+ ht: Japon
+ hu: Japán
+ hy: Ճապոնիա
+ ia: Japon
+ id: Jepang
+ ie: Japan
+ io: Japonia
+ is: Japan
+ it: Giappone
+ iu: ᓃᑉᐊᓐ
+ ja: 日本
+ jv: Jepang
+ ka: იაპონია
+ ki: Japan
+ kk: Жапония
+ kl: Japani
+ km: ជប៉ុន
+ kn: ಜಪಾನ್
+ ko: 일본
+ ks: जापान
+ ku: Japon
+ kv: Япония
+ kw: Nihon
+ ky: Жапония
+ la: Iaponia
+ lb: Japan
+ li: Japan
+ ln: Zapɔ́
+ lo: ປະເທດຍີ່ປຸ່ນ
+ lt: Japonija
+ lv: Japāna
+ mg: Japana
+ mi: Hapani
+ mk: Јапонија
+ ml: ജപ്പാൻ
+ mn: Япон
+ mo: Жапония
+ mr: जपान
+ ms: Jepun
+ mt: Ġappun
+ my: ဂျပန်နိုင်ငံ
+ na: Djapan
+ ne: जापान
+ nl: Japan
+ nn: Japan
+ "no": Japan
+ nv: Binaʼadaałtzózí Dinéʼiʼ Bikéyah
+ oc: Japon
+ om: Jaappaan
+ or: ଜାପାନ
+ os: Япон
+ pa: ਜਪਾਨ
+ pl: Japonia
+ ps: جاپان
+ pt: Japão
+ qu: Nihun
+ rm: Giapun
+ ro: Japonia
+ ru: Япония
+ rw: Ubuyapani
+ sa: सूर्यमूल
+ sc: Giapone
+ sd: جاپان
+ se: Japána
+ sh: Japan
+ si: ජපානය
+ sk: Japonsko
+ sl: Japonska
+ sm: Iapani
+ so: Jabaan
+ sq: Japonia
+ sr: Јапан
+ ss: IJaphani
+ su: Jepang
+ sv: Japan
+ sw: Japani
+ ta: ஜப்பான்
+ te: జపాన్
+ tg: Жопун
+ th: ประเทศญี่ปุ่น
+ ti: ጃፓን
+ tk: Ýaponiýa
+ tl: Hapon
+ tr: Japonya
+ tt: Япония
+ tw: Yapan
+ ty: Tāpōnē
+ ug: ياپونىيە
+ uk: Японія
+ ur: جاپان
+ uz: Yaponiya
+ vi: Nhật Bản
+ vo: Yapän
+ wo: Sapoŋ
+ yi: יאפאן
+ yo: Japan
+ za: Nditbonj
+ zh: 日本
+ zu: IJapani
--- /dev/null
+name:
+ default: Kenya
+ af: Kenia
+ am: ኬንያ
+ an: Kenia
+ ar: كينيا
+ az: Keniya
+ ba: Кения
+ be: Кенія
+ bg: Кения
+ bm: Kenya
+ bn: কেনিয়া
+ bo: ཁེ་ནི་ཡ།
+ br: Kenya
+ bs: Kenija
+ ca: Kenya
+ ce: Кени
+ cs: Keňa
+ cv: Кени
+ cy: Kenya
+ da: Kenya
+ de: Kenia
+ dv: ކެންޔާ
+ dz: ཀེ་ནི་ཡ་
+ el: Κένυα
+ en: Kenya
+ eo: Kenjo
+ es: Kenia
+ et: Keenia
+ eu: Kenya
+ fa: کنیا
+ ff: Kenya
+ fi: Kenia
+ fo: Kenja
+ fr: Kenya
+ fy: Kenya
+ ga: An Chéinia
+ gd: A' Cheinia
+ gl: Quenia - Kenya
+ gu: કેન્યા
+ gv: Yn Cheinney
+ ha: Kenya
+ he: קניה
+ hi: कीनिया
+ hr: Kenija
+ ht: Kenya
+ hu: Kenya
+ hy: Քենիա
+ ia: Kenya
+ id: Kenya
+ ie: Kenia
+ io: Kenia
+ is: Kenía
+ it: Kenya
+ ja: ケニア
+ jv: Kénya
+ ka: კენია
+ kg: Kenya
+ ki: Kenya
+ kk: Кения
+ kl: Kenya
+ kn: ಕೀನ್ಯಾ
+ ko: 케냐
+ ku: Kenya
+ kw: Kenya
+ la: Kenia
+ lb: Kenia
+ lg: Kenya
+ li: Kenia
+ ln: Kénya
+ lt: Kenija
+ lv: Kenija
+ mg: Kenia
+ mi: Kēnia
+ mk: Кенија
+ ml: കെനിയ
+ mn: Кени
+ mr: केनिया
+ ms: Kenya
+ mt: Kenja
+ my: ကင်ညာနိုင်ငံ
+ na: Keniya
+ nl: Kenia
+ nn: Kenya
+ "no": Kenya
+ nv: Kénya
+ oc: Kenya
+ om: Keeniyaa
+ or: କେନିଆ
+ os: Кени
+ pa: ਕੀਨੀਆ
+ pl: Kenia
+ ps: کېنيا
+ pt: Quénia
+ qu: Kinya
+ ro: Kenya
+ ru: Кения
+ rw: Kenya
+ sa: केन्या
+ sc: Kènya
+ se: Kenia
+ sg: Kenyäa
+ sh: Kenija
+ sk: Keňa
+ sl: Kenija
+ sn: Kenya
+ so: Kiinya
+ sq: Kenia
+ sr: Кенија
+ ss: IKheniya
+ su: Kénya
+ sv: Kenya
+ sw: Kenya
+ ta: கென்யா
+ te: కెన్యా
+ tg: Кения
+ th: ประเทศเคนยา
+ ti: ኬንያ
+ tk: Keniýa
+ tl: Kenya
+ tr: Kenya
+ ts: Kenya
+ tt: Кения
+ ug: كېنىيە
+ uk: Кенія
+ ur: کینیا
+ uz: Keniya
+ vi: Kenya
+ vo: Kenyän
+ wo: Keeñaa
+ yi: קעניע
+ yo: Kẹ́nyà
+ zh: 肯尼亚
+ zu: IKenya
--- /dev/null
+name:
+ default: Кыргызстан
+ ab: Ҟырҕызсҭан
+ af: Kirgisië
+ am: ኪርጊዝስታን
+ an: Kirguizistán
+ ar: قرغيزستان
+ az: Qırğızıstan
+ ba: Ҡырғыҙстан
+ be: Кыргызстан
+ bg: Киргизстан
+ bn: কিরগিজিস্তান
+ bo: ཀེ་རེ་གེཛུ་སུཏེན།
+ br: Kirgizstan
+ bs: Kirgistan
+ ca: Kirguizistan
+ ce: Киргизи
+ cs: Kyrgyzstán
+ cv: Киргизи
+ cy: Kyrgyzstan
+ da: Kirgisistan
+ de: Kirgisistan
+ dv: ކިރިގިސްތާން
+ ee: Kyrgyzstan
+ el: Κιργιζία
+ en: Kyrgyzstan
+ eo: Kirgizio
+ es: Kirguistán
+ et: Kõrgõzstan
+ eu: Kirgizistan
+ fa: قرقیزستان
+ fi: Kirgisia
+ fr: Kirghizistan
+ fy: Kirgyzje
+ ga: An Chirgeastáin
+ gd: Cìorgastan
+ gl: Kirguizistán
+ gu: કિર્ગિસ્તાન
+ gv: Yn Chyrgistaan
+ he: קירגיזסטן
+ hi: किर्गिज़स्तान
+ hr: Kirgistan
+ ht: Kirgistan
+ hu: Kirgizisztán
+ hy: Ղրղզստան
+ ia: Kyrgyzistan
+ id: Kirgizstan
+ ie: Kirgizistan
+ io: Kirgizistan
+ is: Kirgisistan
+ it: Kirghizistan
+ ja: キルギス
+ jv: Kirgizstan
+ ka: ყირგიზეთი
+ kk: Қырғызстан
+ km: កៀហ៊្សីស៊ីស្ថាន
+ kn: ಕಿರ್ಗಿಸ್ಥಾನ್
+ ko: 키르기스스탄
+ ks: کرغیزستان
+ ku: Qirgizistan
+ kv: Кыргызстан
+ kw: Pow Kyrgys
+ ky: Кыргызстан
+ la: Chirgisia
+ lb: Kirgisistan
+ li: Kirgizië
+ ln: Kirghizistáni
+ lt: Kirgizija
+ lv: Kirgizstāna
+ mk: Киргистан
+ ml: കിർഗ്ഗിസ്ഥാൻ
+ mn: Кыргызстан
+ mr: किर्गिझस्तान
+ ms: Kyrgyzstan
+ my: ကာဂျစ္စတန်နိုင်ငံ
+ na: Kirgitan
+ nl: Kirgizië
+ nn: Kirgisistan
+ "no": Kirgisistan
+ nv: Kíígiz Bikéyah
+ oc: Quirguizstan
+ or: କିରଗିଜସ୍ତାନ
+ os: Хъиргъиз
+ pa: ਕਿਰਗਿਜ਼ਸਤਾਨ
+ pl: Kirgistan
+ ps: قرغزستان
+ pt: Quirguistão
+ qu: Kirkisuyu
+ ro: Kârgâzstan
+ ru: Киргизия
+ rw: Kirigizisitani
+ sa: किरगिस्थान
+ sd: ڪِرگزِستانُ
+ se: Kirgisistan
+ sh: Kirgistan
+ sk: Kirgizsko
+ sl: Kirgizistan
+ so: Qargistan
+ sq: Kirgistani
+ sr: Киргистан
+ ss: IKhirigi
+ su: Kirgistan
+ sv: Kirgizistan
+ sw: Kirgizia
+ ta: கிர்கிசுத்தான்
+ te: కిర్గిజిస్తాన్
+ tg: Қирғизистон
+ th: ประเทศคีร์กีซสถาน
+ tk: Gyrgyzystan
+ tl: Kirgistan
+ tr: Kırgızistan
+ tt: Кыргызстан
+ ug: قىرغىزىستان
+ uk: Киргизстан
+ ur: کرغیزستان
+ uz: Qirgʻiziston
+ vi: Kyrgyzstan
+ vo: Kirgistän
+ wo: Kirgistaan
+ yi: קירגיזסטאן
+ yo: Kirgistani
+ zh: 吉尔吉斯斯坦
--- /dev/null
+name:
+ default: ព្រះរាជាណាចក្រកម្ពុជា
+ af: Kambodja
+ am: ካምቦዲያ
+ an: Cambocha
+ ar: كمبوديا
+ az: Kamboca
+ ba: Камбоджа
+ be: Камбоджа
+ bg: Камбоджа
+ bn: কম্বোডিয়া
+ bo: ཁམ་པོ་ཛ།
+ br: Kambodja
+ bs: Kambodža
+ ca: Cambodja
+ ce: Камбоджа
+ cs: Kambodža
+ cv: Камбоджа
+ cy: Cambodia
+ da: Cambodja
+ de: Kambodscha
+ dv: ކެންބޯޑިއާ
+ dz: ཀམ་བོ་ཌི་ཡ་
+ el: Καμπότζη
+ en: Cambodia
+ eo: Kamboĝo
+ es: Camboya
+ et: Kambodža
+ eu: Kanbodia
+ fa: کامبوج
+ fi: Kambodža
+ fo: Kambodja
+ fr: Cambodge
+ fy: Kambodja
+ ga: An Chambóid
+ gd: Cambuidea
+ gl: Camboxa
+ gn: Kamboja
+ gu: કમ્બોડીયા
+ gv: Yn Chamboyd
+ ha: Kambodiya
+ he: קמבודיה
+ hi: कम्बोडिया
+ hr: Kambodža
+ ht: Kanbòdj
+ hu: Kambodzsa
+ hy: Կամբոջա
+ ia: Cambodgia
+ id: Kamboja
+ ie: Cambodja
+ io: Kambodja
+ is: Kambódía
+ it: Cambogia
+ ja: カンボジア
+ jv: Kamboja
+ ka: კამბოჯა
+ kk: Камбоджа
+ km: ព្រះរាជាណាចក្រកម្ពុជា
+ kn: ಕಾಂಬೋಡಿಯ
+ ko: 캄보디아
+ ku: Kamboca
+ kv: Камбоджа
+ kw: Kamboji
+ la: Cambosia
+ lb: Kambodscha
+ li: Cambodja
+ ln: Kamboji
+ lo: ປະເທດກຳປູເຈຍ
+ lt: Kambodža
+ lv: Kambodža
+ mg: Kambodia
+ mi: Kamapōtia
+ mk: Камбоџа
+ ml: കംബോഡിയ
+ mn: Камбож
+ mr: कंबोडिया
+ ms: Kemboja
+ mt: Kambodja
+ my: ကမ္ဘောဒီးယားနိုင်ငံ
+ na: Kambodja
+ nl: Cambodja
+ nn: Kambodsja
+ "no": Kambodsja
+ oc: Cambòtja
+ or: କମ୍ବୋଡ଼ିଆ
+ os: Камбоджæ
+ pa: ਕੰਬੋਡੀਆ
+ pl: Kambodża
+ ps: کمبودیا
+ pt: Camboja
+ qu: Kambuya
+ rm: Cambodscha
+ ro: Cambodgia
+ ru: Камбоджа
+ rw: Kambodiya
+ se: Kambodja
+ sh: Kambodža
+ si: කාම්බෝජය
+ sk: Kambodža
+ sl: Kambodža
+ so: Kambodiya
+ sq: Kamboxhia
+ sr: Камбоџа
+ ss: IKhambodiya
+ su: Kamboja
+ sv: Kambodja
+ sw: Kamboja
+ ta: கம்போடியா
+ te: కంబోడియా
+ tg: Камбоҷа
+ th: ประเทศกัมพูชา
+ tk: Kamboçiýa
+ tl: Kamboya
+ tr: Kamboçya
+ tt: Камбоҗа
+ ug: كامبوجا
+ uk: Камбоджа
+ ur: کمبوڈیا
+ uz: Kambodja
+ vi: Campuchia
+ vo: Kambocän
+ wo: Kamboodi
+ yi: קאמבאדיע
+ yo: Kàmbódíà
+ zh: 柬埔寨
--- /dev/null
+name:
+ default: Kiribati
+ ar: كيريباس
+ be: Кірыбаці
+ br: Kiribati
+ da: Kiribati
+ el: Κιριμπάτι
+ en: Kiribati
+ eo: Kiribato
+ fa: کیریباتی
+ fi: Kiribati
+ fr: Kiribati
+ fy: Kiribaty
+ ga: Cireabaití
+ he: קיריבטי
+ hu: Kiribati
+ is: Kíribatí
+ li: Kiribati-eilen
+ lt: Kiribatis
+ lv: Kiribati
+ mn: Кирибати
+ pl: Kiribati
+ ru: Кирибати
+ sv: Kiribati
+ th: ประเทศคิริบาส
+ uk: Кірибаті
+ zh: 基里巴斯
--- /dev/null
+name:
+ default: Comores Komori جزر القمر
+ af: Komore
+ ar: جزر القمر
+ br: Komorez
+ ca: Comores
+ cs: Komory
+ cy: Comoros
+ da: Comorerne
+ de: Komoren
+ el: Κομόρες
+ en: Comoros
+ eo: Komoroj
+ es: Comoras
+ et: Komoorid
+ eu: Komoreak
+ fa: اتحاد قمر
+ fi: Komorit
+ fr: Comores
+ fy: de Komoaren
+ ga: Oileáin Chomóra
+ gd: Comòras
+ he: קומורו
+ hr: Komori
+ hu: Comore-szigetek
+ ia: Comoros
+ id: Komoro
+ io: Komori
+ is: Kómoreyjar
+ it: Comore
+ ja: コモロ
+ la: Insulae Comorianae
+ lb: Komoren
+ lt: Komorai
+ lv: Komoru salas
+ mk: Комори
+ mn: Коморын арлууд
+ nl: Comoren
+ pl: Komory
+ ps: قمرټاپوګان
+ pt: Comores
+ ru: Коморские острова
+ se: Komorosullot
+ sk: Komory
+ sl: Komori
+ sr: Комори
+ sv: Komorerna
+ ta: கொமொரோசு
+ th: ประเทศคอโมโรส
+ tr: Komorlar
+ ug: كومور ئاراللىرى
+ uk: Коморські Острови
+ ur: اتحاد القمری
+ vi: Comoros
+ vo: Komoruäns
+ zh: 科摩洛
--- /dev/null
+name:
+ default: Saint Kitts and Nevis
+ af: Sint Kitts en Nevis
+ ar: سانت كيتس ونيفس
+ be: Святы Кітс і Невіс
+ br: Saint Kitts-ha-Nevis
+ ca: Saint Kitts i Nevis
+ cs: Svatý Kryštof a Nevis
+ cy: Saint Kitts a Nevis
+ da: Saint Kitts og Nevis
+ de: St. Kitts und Nevis
+ el: Άγιος Χριστόφορος και Νέβις
+ en: Saint Kitts and Nevis
+ eo: Sankta Kristoforo kaj Neviso
+ es: San Cristóbal y Nieves
+ et: Saint Kitts ja Nevis
+ fa: سنت کیتس و نویس
+ fi: Saint Kitts ja Nevis
+ fr: Saint-Christophe-et-Niévès
+ fy: Sint Kitts en Nevis
+ ga: San Críostóir-Nimheas
+ gd: Naomh Crìstean agus Nibheis
+ he: סנט קיטס ונוויס
+ hr: Sveti Kristofor i Nevis
+ hu: Saint Kitts és Nevis
+ ia: Sancte Christophoro e Nevis
+ id: Saint Kitts dan Nevis
+ io: Santa Kitts e Nevis
+ is: Sankti Kristófer og Nevis
+ it: Saint Kitts e Nevis
+ lb: Saint Kitts a Nevis
+ li: Saint-Kitts
+ lt: Sent Kitsas ir Nevis
+ mk: Свети Кристифер и Невис
+ mn: Сент-Киттс ба Невис
+ nl: Saint Kitts en Nevis
+ pl: Saint Kitts i Nevis
+ pt: São Cristóvão e Nevis
+ ru: Сент-Китс и Невис
+ se: Saint Kitts ja Nevis
+ sl: Sveti Krištof in Nevis
+ sv: Saint Kitts och Nevis
+ ta: செயிண்ட் கிட்சும் நெவிசும்
+ th: ประเทศเซนต์คิตส์และเนวิส
+ tr: Saint Kitts ve Nevis
+ uk: Сент-Кіттс і Невіс
+ vi: Saint Kitts và Nevis
+ vo: Sankiteän e Neviseän
+ zh: 圣基茨和尼维斯
--- /dev/null
+name:
+ default: 조선민주주의인민공화국
+ af: Noord-Korea
+ am: ስሜን ኮርያ
+ an: Coreya d'o Norte
+ ar: كوريا الشمالية
+ as: উত্তৰ কোৰিয়া
+ az: Koreya Xalq Demokratik Respublikası
+ ba: Корея Халыҡ-Демократик Республикаһы
+ be: Карэйская Народна-Дэмакратычная Рэспубліка
+ bg: Северна Корея
+ bh: उत्तर कोरिया
+ bn: উত্তর কোরিয়া
+ bo: བྱང་ཀོ་རི་ཡ།
+ br: Republik Poblel ha Demokratel Korea
+ bs: Sjeverna Koreja
+ ca: Corea del Nord
+ ce: Корейн Халкъан-Демократин Республика
+ cs: Severní Korea
+ cy: Gogledd Corea
+ da: Nordkorea
+ de: Nordkorea
+ dv: އުތުރު ކޮރެއާ
+ dz: བྱང་ཀོ་རི་ཡ་
+ ee: North Korea
+ el: Βόρεια Κορέα
+ en: North Korea
+ eo: Nord-Koreio
+ es: Corea del Norte
+ et: Põhja-Korea
+ eu: Ipar Korea
+ fa: کره شمالی
+ fi: Pohjois-Korea
+ fo: Norðurkorea
+ fr: Corée du Nord
+ fy: Noard-Koreä
+ ga: An Chóiré Thuaidh
+ gd: Coirèa a Tuath
+ gl: Corea do Norte
+ gn: Yvate Koréa
+ gu: ઉત્તર કોરિયા
+ gv: Yn Chorea Twoaie
+ ha: Koriya ta Arewa
+ he: קוריאה הצפונית
+ hi: उत्तर कोरिया
+ hr: Sjeverna Koreja
+ ht: Kore dinò
+ hu: Koreai Népi Demokratikus Köztársaság (Észak-Korea)
+ hy: Կորեայի Ժողովրդա-Դեմոկրատական Հանրապետություն
+ ia: Corea del Nord
+ id: Korea Utara
+ ie: Nord-Korea
+ ik: Nigiq Korea
+ io: Nord-Korea
+ is: Norður-Kórea
+ it: Corea del Nord
+ ja: 朝鮮民主主義人民共和国
+ jv: Koréa Lor
+ ka: კორეის სახალხო დემოკრატიული რესპუბლიკა
+ kg: Hangu ya Node
+ ki: North Korea
+ kk: Корей Халық Демократиялық Республикасы
+ kl: Korea Avannarleq
+ km: កូរ៉េខាងជើង
+ kn: ಉತ್ತರ ಕೊರಿಯಾ
+ ko: 조선민주주의인민공화국
+ ku: Korêya Bakur
+ kv: Корея Войтыр Демократия Республика
+ kw: Korea Gledh
+ ky: Корей Эл-Демократиялык Республикасы
+ la: Res publica popularis democratica Coreana
+ lb: Demokratesch Volleksrepublik Korea
+ li: Noord-Korea
+ ln: Koré ya Nola
+ lo: ປະເທດເກົາຫຼີເໜືອ
+ lt: Šiaurės Korėja
+ lv: Ziemeļkoreja
+ mg: Korea Avaratra
+ mi: Kōrea-ki-te-raki
+ mk: Демократска Народна Република Кореја
+ ml: ഉത്തര കൊറിയ
+ mn: Умард Солонгос
+ mr: उत्तर कोरिया
+ ms: Korea Utara
+ mt: Korea ta' Fuq
+ my: ကိုရီးယား ဒီမိုကရက်တစ် ပြည်သူ့သမ္မတနိုင်ငံ
+ na: Ripubrikit Engame Korea
+ ne: उत्तर कोरिया
+ nl: Noord-Korea
+ nn: Nord-Korea
+ "no": Nord-Korea
+ nv: Kolíya Bikéyah Náhookǫsjí Siʼánígíí
+ oc: Corèa del Nòrd
+ om: Kooriyaa Kaabaa
+ or: ପୂର୍ବ କୋରିଆ
+ os: Корейы Адæмон Демократон Республикæ
+ pa: ਉੱਤਰੀ ਕੋਰੀਆ
+ pl: Korea Północna
+ ps: شمالي کوريا
+ pt: Coreia do Norte
+ qu: Chusun Runakapaq Runallaqta Republika
+ ro: Coreea de Nord
+ ru: Северная Корея
+ rw: Koreya y’Amajyaruguru
+ sa: उत्तर कोरिया
+ sc: Corea de su Norte
+ sd: اتر ڪوريا
+ se: Davvi-Korea
+ sh: Demokratska Narodna Republika Koreja
+ si: උතුරු කොරියාව
+ sk: Kórejská ľudovodemokratická republika
+ sl: Severna Koreja
+ sn: North Korea
+ so: Waqooyiga Kuuriya
+ sq: Koreja e Veriut
+ sr: Северна Кореја
+ ss: IKhoriya leseNyakatfo
+ su: Koréa Kalér
+ sv: Nordkorea
+ sw: Korea Kaskazini
+ ta: வட கொரியா
+ te: ఉత్తర కొరియా
+ tg: Кореяи Шимолӣ
+ th: ประเทศเกาหลีเหนือ
+ tk: Demirgazyk Koreýa
+ tl: Hilagang Korea
+ tr: Kuzey Kore
+ ts: North Korea
+ tt: Корея Халык Демократик Җөмһүрияте
+ ug: شىمالىي چاۋشيەن
+ uk: Корейська Народно-Демократична Республіка
+ ur: شمالی کوریا
+ uz: Koreya Xalq Demokratik Respublikasi
+ vi: Bắc Triều Tiên
+ vo: Nolüda-Koreyän
+ wo: Kore gu Bëj-gànnaar
+ xh: Coreia do Twoaie
+ yi: צפון קארעע
+ yo: Kòréà Àríwá
+ za: Cauzsenh Minzcujcujyi Yinzminz Gunghozgoz
+ zh: 朝鲜民主主义人民共和国
--- /dev/null
+name:
+ default: 대한민국
+ af: Suid-Korea
+ ak: Anaafo Koria
+ am: ደቡብ ኮርያ
+ an: Corea d'o Sur
+ ar: كوريا الجنوبية
+ as: দক্ষিণ কোৰিয়া
+ az: Cənubi Koreya
+ ba: Көньяҡ Корея
+ be: Паўднёвая Карэя
+ bg: Южна Корея
+ bi: Saot Koria
+ bn: দক্ষিণ কোরিয়া
+ bo: ལྷོ་ཀོ་རི་ཡ།
+ br: Korea ar Su
+ bs: Južna Koreja
+ ca: Corea del Sud
+ ce: Къилба Корей
+ cs: Jižní Korea
+ cy: De Corea
+ da: Sydkorea
+ de: Südkorea
+ dv: ދެކުނު ކޮރެއާ
+ dz: ལྷོ་ཀོ་རི་ཡ་
+ ee: South Korea
+ el: Νότια Κορέα
+ en: South Korea
+ eo: Sud-Koreio
+ es: Corea del Sur
+ et: Lõuna-Korea
+ eu: Hego Korea
+ fa: کره جنوبی
+ fi: Etelä-Korea
+ fo: Suðurkorea
+ fr: Corée du Sud
+ fy: Súd-Korea
+ ga: An Chóiré Theas
+ gd: Coirea a Deas
+ gl: Corea do Sur
+ gn: Yvykorea
+ gu: દક્ષિણ કોરિયા
+ gv: Yn Chorea Yiass
+ he: קוריאה הדרומית
+ hi: दक्षिण कोरिया
+ hr: Južna Koreja
+ ht: Kore disid
+ hu: Dél-Korea
+ hy: Հարավային Կորեա
+ ia: Corea del Sud
+ id: Korea Selatan
+ ie: Sud-Korea
+ io: Sud-Korea
+ is: Suður-Kórea
+ it: Corea del Sud
+ ja: 大韓民国
+ jv: Koréa Kidul
+ ka: სამხრეთი კორეა
+ ki: South Korea
+ kk: Оңтүстік Корея
+ kl: Korea Kujalleq
+ km: កូរ៉េខាងត្បូង
+ kn: ದಕ್ಷಿಣ ಕೊರಿಯಾ
+ ko: 대한민국
+ ks: दक्षिण कोरिया
+ ku: Korêya Başûr
+ kv: Корея Республика
+ kw: Korea Dhyhow
+ ky: Корея Республикасы
+ la: Corea Meridionalis
+ lb: Südkorea
+ li: Zuud-Korea
+ ln: Kore ya Sidi
+ lo: ປະເທດເກົາຫຼີໃຕ້
+ lt: Pietų Korėja
+ lv: Dienvidkoreja
+ mg: Korea Atsimo
+ mi: Kōrea-ki-te-tonga
+ mk: Република Кореја
+ ml: ദക്ഷിണ കൊറിയ
+ mn: Өмнөд Солонгос
+ mr: दक्षिण कोरिया
+ ms: Korea Selatan
+ mt: Korea t'Isfel
+ my: တောင်ကိုရီးယားနိုင်ငံ
+ na: Ripubrikin Korea
+ ne: दक्षिण कोरिया
+ nl: Zuid-Korea
+ nn: Sør-Korea
+ "no": Sør-Korea
+ nv: Kolíya Bikéyah Shádiʼááhjí Siʼánígíí
+ oc: Corèa del Sud
+ or: ଦକ୍ଷିଣ କୋରିଆ
+ os: Хуссар Корей
+ pl: Korea Południowa
+ ps: سوېلي کوريا
+ pt: Coreia do Sul
+ qu: Urin Kuriya
+ rm: Corea dal sid
+ ro: Coreea de Sud
+ ru: Республика Корея
+ rw: Koreya y’Amajyepfo
+ sa: दक्षिण कोरिया
+ sc: Corea de su Sud
+ se: Lulli-Korea
+ sg: Korëe tî Mbongo
+ sh: Južna Koreja
+ si: දකුණු කොරියාව
+ sk: Južná Kórea
+ sl: Južna Koreja
+ sm: Kolea i Saute
+ sn: Korea, South
+ so: Koonfur Kuuriya
+ sq: Koreja e Jugut
+ sr: Јужна Кореја
+ ss: IKhoriya leseNingizimu
+ su: Koréa Kidul
+ sv: Sydkorea
+ sw: Korea Kusini
+ ta: தென்கொரியா
+ te: దక్షిణ కొరియా
+ th: ประเทศเกาหลีใต้
+ tk: Günorta Koreýa
+ tl: Timog Korea
+ tr: Güney Kore
+ tt: Көньяк Корея
+ ug: جەنۇبىي چاۋشيەن
+ uk: Південна Корея
+ ur: جنوبی کوریا
+ uz: Janubiy Koreya
+ vi: Hàn Quốc
+ vo: Sulüda-Koreyän
+ wo: Kore gu Bëj-saalum
+ yi: דרום קארעע
+ yo: Kòréà Gúúsù
+ za: Hanzgoz
+ zh: 韩国/南韓
--- /dev/null
+name:
+ default: الكويت
+ af: Koeweit
+ am: ኩዌት
+ an: Kuwait
+ ar: الكويت
+ az: Küveyt
+ ba: Күвейт
+ be: Кувейт
+ bg: Кувейт
+ bn: কুয়েত
+ bo: ཁུ་ཝི་ཐི།
+ br: Koweit
+ bs: Kuvajt
+ ca: Kuwait
+ ce: Кувейт
+ cs: Kuvajt
+ cv: Кувейт
+ cy: Kuwait
+ da: Kuwait
+ de: Kuwait
+ dv: ކުވެއިތު
+ dz: ཀུ་ཝེཊ་
+ el: Κουβέιτ
+ en: Kuwait
+ eo: Kuvajto
+ es: Kuwait
+ et: Kuveit
+ eu: Kuwait
+ fa: کویت
+ fi: Kuwait
+ fo: Kuveit
+ fr: Koweït
+ fy: Koeweit
+ ga: Cuáit
+ gd: Cubhait
+ gl: Kuwait
+ gu: કુવૈત
+ gv: Yn Choowait
+ he: כווית
+ hi: कुवैत
+ hr: Kuvajt
+ ht: Kowet
+ hu: Kuvait
+ hy: Քուվեյթ
+ ia: Kuwait
+ id: Kuwait
+ ie: Kuwait
+ io: Kuwait
+ is: Kúveit
+ it: Kuwait
+ ja: クウェート
+ jv: Kuwait
+ ka: ქუვეითი
+ kk: Кувейт
+ kl: Kuwait
+ km: គុយវ៉ែត
+ kn: ಕುವೈತ್
+ ko: 쿠웨이트
+ ku: Kuweyt
+ kv: Кувейт
+ kw: Koweyt
+ la: Cuvaitum
+ lb: Kuwait
+ li: Koeweit
+ ln: Koweit
+ lt: Kuveitas
+ lv: Kuveita
+ mk: Кувајт
+ ml: കുവൈറ്റ്
+ mn: Кувейт
+ mr: कुवेत
+ ms: Kuwait
+ my: ကူဝိတ်နိုင်ငံ
+ na: Kuwait
+ ne: कुवेत
+ nl: Koeweit
+ nn: Kuwait
+ "no": Kuwait
+ nv: Kóóweiʼ
+ oc: Kowait
+ or: କୁଏତ
+ os: Кувейт
+ pl: Kuwejt
+ ps: کوېټ
+ pt: Kuwait
+ qu: Kuwait
+ ro: Kuweit
+ ru: Кувейт
+ rw: Koweti
+ sa: कुवैत
+ se: Kuwait
+ sh: Kuvajt
+ sk: Kuvajt
+ sl: Kuvajt
+ so: Kuwayt
+ sq: Kuvajti
+ sr: Кувајт
+ ss: IKhuwathi
+ su: Kuwait
+ sv: Kuwait
+ sw: Kuwait
+ ta: குவைத்
+ te: కువైట్
+ tg: Кувайт
+ th: ประเทศคูเวต
+ tk: Kuweýt
+ tl: Kuwait
+ tr: Kuveyt
+ tt: Күвәйт
+ ug: كۇۋەيت
+ uk: Кувейт
+ ur: کویت
+ uz: Quvayt
+ vi: Kuwait
+ vo: Kovätän
+ wo: Kowet
+ yi: קואווייט
+ yo: Kuwaiti
+ zh: 科威特
--- /dev/null
+name:
+ default: Cayman Islands
+ af: Kaaimanseilande
+ ak: Kemanfo Islands
+ am: ካይማን ደሴቶች
+ ar: جزر الكايمان
+ az: Kayman Adaları
+ be: Кайманавы астравы
+ bg: Кайманови острови
+ bm: Bama Gun
+ bn: কেম্যান দ্বীপপুঞ্জ
+ bo: ཁེ་མེན་གླིང་ཕྲན།
+ br: Inizi Cayman
+ bs: Kajmanska Ostrva
+ ca: Illes Caiman
+ cs: Kajmanské ostrovy
+ cy: Ynysoedd Cayman
+ da: Caymanøerne
+ de: Kaimaninseln
+ dz: ཁེ་མེན་གླིང་ཚོམ
+ ee: Kayman ƒudomekpowo nutome
+ el: Νήσοι Κέιμαν
+ en: Cayman Islands
+ eo: Kajmana Insularo
+ es: Islas Caimán
+ et: Kaimanisaared
+ eu: Kaiman Uharteak
+ fa: جزایر کایمان
+ ff: Duuɗe Kaymaa
+ fi: Caymansaaret
+ fo: Caymanoyggjarnar
+ fr: Îles Caïmans
+ fy: de Kaaimaneilannen
+ ga: Oileáin Cayman
+ gd: Na h-Eileanan Caimean
+ gl: Illas Caimán
+ gu: કેયમેન આઇલૅંડ્સ
+ gv: Ellanyn Cayman
+ ha: Tsibiran Kaiman
+ he: איי קיימן
+ hi: केमैन द्वीपसमूह
+ hr: Kajmanski Otoci
+ hu: Kajmán-szigetek
+ ia: Insulas de Caiman
+ id: Kepulauan Cayman
+ io: Insuli Kaiman
+ is: Caymaneyjar
+ it: Isole Cayman
+ ja: ケイマン諸島
+ ka: კაიმანის კუნძულები
+ ki: Visiwa vya Kayman
+ km: កោះកៃម៉ង់
+ kn: ಕೇಮನ್ ದ್ವೀಪಗಳು
+ ko: 케이맨제도
+ ks: کیمَن جٔزیٖرٕ
+ ku: Giravên Caymanê
+ lb: Kaimaninselen
+ lg: Bizinga ebya Kayimaani
+ ln: Bisanga bya Kayíma
+ lo: ຄາຍແມນ ອິດແລນ
+ lt: Kaimanų salos
+ lv: Kaimanu salas
+ mg: Nosy Kayman
+ mk: Кајмански Острови
+ ml: കേയ്മാൻ ദ്വീപുകൾ
+ mn: Кайманы Арлууд
+ mr: केमन बेटे
+ mt: Gżejjer Kajmani
+ my: ကေမန် ကျွန်းစု
+ ne: केयमान टापु
+ nl: Kaaimaneilanden
+ nn: Caymanøyane
+ "no": Caymanøyene
+ or: କେମ୍ୟାନ୍ ଦ୍ବୀପପୁଞ୍ଜ
+ pl: Kajmany
+ pt: Ilhas Cayman
+ rm: Inslas Cayman
+ rn: Ibirwa bya Keyimani
+ ro: Insulele Cayman
+ ru: Острова Кайман
+ se: Cayman-sullot
+ sg: Âzûâ Ngundë, Kaimäni
+ si: කේමන් දූපත්
+ sk: Kajmanie ostrovy
+ sl: Kajmanski otoki
+ sn: Zvitsuwa zveCayman
+ sr: Кајманска Острва
+ sv: Caymanöarna
+ sw: Visiwa vya Kayman
+ ta: கேமென் தீவுகள்
+ te: కేమాన్ దీవులు
+ th: หมู่เกาะเคย์แมน
+ ti: ካይማን ደሴቶች
+ to: ʻOtumotu Keimeni
+ tr: Kayman Adaları
+ uk: Кайманові острови
+ ur: کیمین آئلینڈز
+ vi: Quần đảo Cayman
+ yo: Orílẹ́ède Etíokun Kámánì
+ zh: 开曼群岛
+ zu: i-Cayman Islands
--- /dev/null
+name:
+ default: Қазақстан
+ ab: Ҟазаҟсҭан
+ af: Kasakstan
+ am: ካዛክስታን
+ an: Cazaquistán
+ ar: كازاخستان
+ av: Хъазахъистан
+ az: Qazaxıstan
+ ba: Ҡаҙағстан
+ be: Казахстан
+ bg: Казахстан
+ bi: Kazakhstan
+ bn: কাজাখস্তান
+ bo: ཀཛ་ཀིསུ་གཏན།
+ br: Kazakstan
+ bs: Kazahstan
+ ca: Kazakhstan
+ ce: Кхазакхстан
+ cs: Kazachstán
+ cu: Каꙁахстанъ
+ cv: Казахстан
+ cy: Kazakstan
+ da: Kasakhstan
+ de: Kasachstan
+ dv: ކަޒަކިސްތާން
+ ee: Kazakhstan
+ el: Καζακστάν
+ en: Kazakhstan
+ eo: Kazaĥio
+ es: Kazajistán
+ et: Kasahstan
+ eu: Kazakhstan
+ fa: قزاقستان
+ fi: Kazakstan
+ fo: Kasakstan
+ fr: Kazakhstan
+ fy: Kazakstan
+ ga: An Chasacstáin
+ gd: Casachstàn
+ gl: Casaquistán
+ gn: Kazajistán
+ gu: કઝાકિસ્તાન
+ gv: Yn Chassaghstaan
+ he: קזחסטן
+ hi: कज़ाख़िस्तान
+ hr: Kazahstan
+ ht: Kazakstan
+ hu: Kazahsztán
+ hy: Ղազախստան
+ ia: Kazakhstan
+ id: Kazakhstan
+ ie: Kazakstan
+ io: Kazakstan
+ is: Kasakstan
+ it: Kazakistan
+ ja: カザフスタン
+ jv: Kazakhstan
+ ka: ყაზახეთი
+ kg: Kazakhstan
+ kk: Қазақстан
+ kl: Kasakhstani
+ km: កាសាក់ស្ថាន
+ kn: ಕಜಾಕಸ್ಥಾನ್
+ ko: 카자흐스탄
+ ku: Qazaxistan
+ kv: Казахстан
+ kw: Pow Kazagh
+ ky: Казакстан Республикасы
+ la: Kazachstania
+ lb: Kasachstan
+ li: Kazachstan
+ ln: Kazakstáni
+ lt: Kazachstanas
+ lv: Kazahstāna
+ mg: Kazakstàna
+ mi: Katatānga
+ mk: Казахстан
+ ml: ഖസാഖ്സ്ഥാൻ
+ mn: Казахстан
+ mr: कझाकस्तान
+ ms: Kazakhstan
+ mt: Każakistan
+ my: ကာဇက်စတန်နိုင်ငံ
+ na: Kadaketan
+ nl: Kazachstan
+ nn: Kasakhstan
+ "no": Kasakhstan
+ nv: Kʼazah Bikéyah
+ oc: Cazacstan
+ or: କାଜାଖସ୍ତାନ
+ os: Хъазахстан
+ pa: ਕਜਾਖਸਤਾਨ
+ pl: Kazachstan
+ ps: قزاقستان
+ pt: Cazaquistão
+ qu: Qasaqsuyu
+ rm: Kasachstan
+ ro: Kazahstan
+ ru: Казахстан
+ rw: Kazakisitani
+ sa: कजाकस्थान
+ se: Kazakstan
+ sh: Kazahstan
+ si: කසක්ස්තානය
+ sk: Kazachstan
+ sl: Kazahstan
+ so: Kasakhstan
+ sq: Kazakistani
+ sr: Казахстан
+ ss: IKhazakhi
+ su: Kazastan
+ sv: Kazakhstan
+ sw: Kazakhstan
+ ta: கசக்ஸ்தான்
+ te: కజకస్తాన్
+ tg: Қазоқистон
+ th: ประเทศคาซัคสถาน
+ tk: Gazagystan
+ tl: Kazakhstan
+ tr: Kazakistan
+ tt: Казакъстан
+ ug: قازاقىستان
+ uk: Казахстан
+ ur: قازقستان
+ uz: Qozogʻiston
+ vi: Kazakhstan
+ vo: Kazakistän
+ wo: Kasakistaan
+ yi: קאזאכסטאן
+ yo: Kàsàkstán
+ za: Hahsazgwswhdanj
+ zh: 哈萨克斯坦/哈薩克
--- /dev/null
+name:
+ default: ປະເທດລາວ
+ af: Laos
+ am: ላዎስ
+ an: Laos
+ ar: لاوس
+ az: Laos
+ ba: Лаос
+ be: Лаос
+ bg: Лаос
+ bi: Laos
+ bn: লাওস
+ bo: ལའོ་སུ།
+ br: Laos
+ bs: Laos
+ ca: Laos
+ ce: Лаос
+ cs: Laos
+ cv: Лаос
+ cy: Laos
+ da: Laos
+ de: Laos
+ dv: ލާއޯސް
+ el: Λάος
+ en: Laos
+ eo: Laoso
+ es: Laos
+ et: Laos
+ eu: Laos
+ fa: لائوس
+ fi: Laos
+ fo: Laos
+ fr: Laos
+ fy: Laos
+ ga: Laos
+ gd: Làthos
+ gl: Laos
+ gu: લાઓસ
+ gv: Yn Laos
+ he: לאוס
+ hi: लाओस
+ hr: Laos
+ ht: Laos
+ hu: Laosz
+ hy: Լաոս
+ ia: Laos
+ id: Laos
+ ie: Laos
+ io: Laos
+ is: Laos
+ it: Laos
+ ja: ラオス
+ jv: Laos
+ ka: ლაოსი
+ ki: Laos
+ kk: Лаос
+ km: ឡាវ
+ kn: ಲಾವೋಸ್
+ ko: 라오스
+ ku: Laos
+ kv: Лаос
+ kw: Pow Lao
+ la: Laotia
+ lb: Laos
+ li: Laos
+ ln: Laos
+ lo: ປະເທດລາວ
+ lt: Laosas
+ lv: Laosa
+ mi: Rāoho
+ mk: Лаос
+ ml: ലാവോസ്
+ mn: Лаос
+ mr: लाओस
+ ms: Laos
+ my: လာအိုနိုင်ငံ
+ na: Raot
+ nl: Laos
+ nn: Laos
+ "no": Laos
+ nv: Lááʼos
+ oc: Laos
+ or: ଲାଓସ
+ os: Лаос
+ pa: ਲਾਓਸ
+ pl: Laos
+ ps: لاووس
+ pt: Laos
+ qu: Law suyu
+ ro: Laos
+ ru: Лаос
+ rw: Lawosi
+ sa: लाओस
+ se: Laos
+ sh: Laos
+ si: ලාඕසය
+ sk: Laos
+ sl: Laos
+ so: Laos
+ sq: Laosi
+ sr: Лаос
+ ss: ILawoso
+ su: Laos
+ sv: Laos
+ sw: Laos
+ ta: லாவோஸ்
+ te: లావోస్
+ tg: Лаос
+ th: ประเทศลาว
+ tk: Laos
+ tl: Laos
+ tr: Laos
+ tt: Лаос
+ ug: لائوس
+ uk: Лаос
+ ur: لاؤس
+ uz: Laos
+ vi: Lào
+ vo: Laosän
+ wo: Réewum Lawos
+ yo: Láọ̀s
+ za: Lao
+ zh: 老挝/寮國
--- /dev/null
+name:
+ default: لبنان
+ af: Libanon
+ am: ሊባኖስ
+ an: Liban
+ ar: لبنان
+ az: Livan
+ ba: Ливан
+ be: Ліван
+ bg: Ливан
+ bm: Lubenan
+ bn: লেবানন
+ bo: ལེ་པ་ནོན།
+ br: Liban
+ bs: Liban
+ ca: Líban
+ ce: Ливан
+ cs: Libanon
+ cv: Ливан
+ cy: Libanus
+ da: Libanon
+ de: Libanon
+ dv: ލުބުނާން
+ dz: ལེ་བཱ་ནཱོན་
+ el: Λίβανος
+ en: Lebanon
+ eo: Libano
+ es: Líbano
+ et: Liibanon
+ eu: Libano
+ fa: لبنان
+ fi: Libanon
+ fo: Libanon
+ fr: Liban
+ fy: Libanon
+ ga: An Liobáin
+ gd: Leabanon
+ gl: Líbano
+ gn: Lívano
+ gu: લેબેનાન
+ gv: Yn Livaan
+ he: לבנון
+ hi: लेबनान
+ hr: Libanon
+ ht: Liban
+ hu: Libanon
+ hy: Լիբանան
+ ia: Libano
+ id: Lebanon
+ ie: Libano
+ io: Libano
+ is: Líbanon
+ it: Libano
+ ja: レバノン
+ jv: Libanon
+ ka: ლიბანი
+ kk: Ливан
+ kl: Lebanon
+ km: លីបង់
+ ko: 레바논
+ ku: Libnan
+ kv: Ливан
+ kw: Lebnon
+ ky: Ливан
+ la: Libanus
+ lb: Libanon
+ li: Libanon
+ lt: Libanas
+ lv: Libāna
+ mi: Repanona
+ mk: Либан
+ ml: ലെബനാൻ
+ mn: Ливан
+ mr: लेबेनॉन
+ ms: Lubnan
+ mt: Libanu
+ my: လက်ဘနွန်နိုင်ငံ
+ na: Ribanon
+ nb: Libanon
+ nl: Libanon
+ nn: Libanon
+ "no": Libanon
+ nv: Łíbanoo
+ oc: Liban
+ or: ଲେବନାନ
+ os: Ливан
+ pa: ਲਿਬਨਾਨ
+ pl: Liban
+ ps: لېبنان
+ pt: Líbano
+ qu: Libanu
+ ro: Liban
+ ru: Ливан
+ rw: Libani
+ sa: लेबनान
+ se: Libanon
+ sh: Libanon
+ sk: Libanon
+ sl: Libanon
+ so: Lubnaan
+ sq: Libani
+ sr: Либан
+ ss: ILibhanoni
+ su: Libanon
+ sv: Libanon
+ sw: Lebanoni
+ ta: லெபனான்
+ te: లెబనాన్
+ tg: Лубнон
+ th: ประเทศเลบานอน
+ tk: Liwan
+ tl: Libano
+ tr: Lübnan
+ tt: Ливан
+ ug: لىۋان
+ uk: Ліван
+ ur: لبنان
+ uz: Livan
+ vi: Liban
+ vo: Libanän
+ wo: Libaa
+ yi: לבנון
+ yo: Lẹ́bánọ́nì
+ zh: 黎巴嫩
--- /dev/null
+name:
+ default: Saint Lucia
+ af: Sint Lucia
+ ar: سانت لوسيا
+ be: Святая Лусія
+ br: Saint Lucia
+ cs: Svatá Lucie
+ da: Saint Lucia
+ de: St. Lucia
+ el: Αγία Λουκία
+ en: Saint Lucia
+ eo: Sankta Lucio
+ es: Santa Lucía
+ fa: سنت لوسیا
+ fi: Saint Lucia
+ fr: Sainte-Lucie
+ fy: Sint Lusia
+ ga: San Lucia
+ gd: Naomh Lùisia
+ he: סנט לוסיה
+ hr: Sveta Lucija
+ hu: Saint Lucia
+ is: Sankti Lúsía
+ it: Santa Lucia
+ ja: セントルシア
+ la: Sancta Lucia
+ li: Santa Lucia
+ lt: Sent Lusija
+ lv: Sentlūsija
+ mn: Сент Люсиа
+ nl: Saint Lucia
+ pl: Saint Lucia
+ pt: Santa Lúcia
+ ru: Сент-Люсия
+ se: Saint Lucia
+ sk: Svätá Lucia
+ sl: Sveta Lucija
+ sv: Saint Lucia
+ ta: செயிண்ட் லூசியா
+ th: ประเทศเซนต์ลูเซีย
+ uk: Сент-Люсія
+ vo: Sanlusiyän
+ zh: 圣卢西亚岛
--- /dev/null
+name:
+ default: Liechtenstein
+ ar: ليختنشتاين
+ be: Лiхтэнштэйн
+ br: Liechtenstein
+ bs: Lihtenštajn
+ cs: Lichtenštejnsko
+ de: Liechtenstein
+ el: Λίχτενσταϊν
+ en: Liechtenstein
+ eo: Liĥtenŝtejno
+ fa: لیختناشتاین
+ fi: Liechtenstein
+ fo: Liktinstein
+ fr: Liechtenstein
+ fy: Lychtenstein
+ ga: Lichtinstéin
+ he: ליכטנשטיין
+ hr: Lihtenštajn
+ hu: Liechtenstein
+ ia: Liechtenstein
+ io: Liechtenstein
+ is: Liechtenstein
+ it: Liechtenstein
+ ja: リヒテンシュタイン
+ ku: Lînxiniştayn
+ la: Lichtenstenum
+ lt: Lichtenšteinas
+ lv: Lihtenšteina
+ mi: Rīkeneteina
+ mk: Лихтенштајн
+ mn: Лихтенштейн
+ nl: Liechtenstein
+ pl: Liechtenstein
+ ru: Лихтенштейн
+ se: Liechtenstein
+ sk: Lichtenštajnsko
+ sl: Lihtenštajn
+ sr: Лихтенштајн
+ sv: Liechtenstein
+ ta: லீக்கின்ஸ்டைன்
+ th: ประเทศลิกเตนสไตน์
+ tr: Lihtenştayn
+ uk: Ліхтенштейн
+ vo: Ligtänstän
+ zh: 列支敦士登
--- /dev/null
+name:
+ default: ශ්රී ලංකාව இலங்கை
+ af: Sri Lanka
+ am: ሽሪ ላንካ
+ an: Sri Lanka
+ ar: سريلانكا
+ az: Şri-Lanka
+ ba: Шри-Ланка
+ be: Шры-Ланка
+ bg: Шри Ланка
+ bn: শ্রীলঙ্কা
+ bo: སེང་ག་གླིང་།
+ br: Sri Lanka
+ bs: Šri Lanka
+ ca: Sri Lanka
+ cs: Šrí Lanka
+ cv: Шри-Ланка
+ cy: Sri Lanka
+ da: Sri Lanka
+ de: Sri Lanka
+ dv: އޮޅުދޫކަރަ
+ dz: ཤྲཱྀ་ལངཀ་
+ el: Σρι Λάνκα
+ en: Sri Lanka
+ eo: Sri-Lanko
+ es: Sri Lanka
+ et: Sri Lanka
+ eu: Sri Lanka
+ fa: سریلانکا
+ fi: Sri Lanka
+ fo: Sri Lanka
+ fr: Sri Lanka
+ fy: Sry Lanka
+ ga: Srí Lanca
+ gd: Sri Lanca
+ gl: Sri Lanka - Sri Lankā
+ gu: શ્રીલંકા
+ gv: Sri Lanka
+ he: סרי לנקה
+ hi: श्रीलंका
+ hr: Šri Lanka
+ ht: Srilanka
+ hu: Srí Lanka
+ hy: Շրի Լանկա
+ ia: Sri Lanka
+ id: Sri Lanka
+ ie: Sri Lanka
+ io: Sri Lanka
+ is: Srí Lanka
+ it: Sri Lanka
+ ja: スリランカ
+ jv: Sri Lanka
+ ka: შრი-ლანკა
+ ki: Sri Lanka
+ kk: Шри-Ланка
+ km: ស្រីលង្កា
+ kn: ಶ್ರೀಲಂಕಾ
+ ko: 스리랑카
+ ku: Srî Lanka
+ kv: Шри-Ланка
+ kw: Shri Lanka
+ la: Taprobane
+ lb: Sri Lanka
+ li: Sri Lanka
+ ln: Sri Lanka
+ lt: Šri Lanka
+ lv: Šrilanka
+ mg: Sri Lanka
+ mi: Hīraka
+ mk: Шри Ланка
+ ml: ശ്രീലങ്ക
+ mn: Шри Ланка
+ mr: श्रीलंका
+ ms: Sri Lanka
+ mt: Sri Lanka
+ my: သီရိလင်္ကာနိုင်ငံ
+ na: Sri Lanka
+ ne: श्रीलंका
+ nl: Sri Lanka
+ nn: Sri Lanka
+ "no": Sri Lanka
+ nv: Swii Lankʼa
+ oc: Sri Lanka
+ om: Sirilaankaa
+ or: ଶ୍ରୀଲଙ୍କା
+ os: Шри-Ланка
+ pa: ਸ੍ਰੀਲੰਕਾ
+ pl: Sri Lanka
+ ps: سریلانکا
+ pt: Seri-Lanca
+ qu: Sri Lanka
+ ro: Sri Lanka
+ ru: Шри-Ланка
+ rw: Siri Lanka
+ sa: श्रीलङ्का
+ se: Sri Lanka
+ sh: Šri Lanka
+ si: ශ්රී ලංකාව
+ sk: Srí Lanka
+ sl: Šrilanka
+ sm: Sri Lanka
+ so: Siri Lanka
+ sq: Sri Lanka
+ sr: Шри Ланка
+ ss: Siri Lanka
+ su: Sri Langka
+ sv: Sri Lanka
+ sw: Sri Lanka
+ ta: இலங்கை
+ te: శ్రీలంక
+ tg: Шри-Ланка
+ th: ประเทศศรีลังกา
+ tk: Şri-Lanka
+ tl: Sri Lanka
+ tr: Sri Lanka
+ tt: Шри-Ланка
+ ug: سرىلانكا
+ uk: Шрі-Ланка
+ ur: سری لنکا
+ uz: Shri-Lanka
+ vi: Sri Lanka
+ vo: Sri-Lankän
+ wo: Siri Laanka
+ yi: סרי לאנקא
+ yo: Sri Lanka
+ zh: 斯里蘭卡
--- /dev/null
+name:
+ default: Liberia
+ af: Liberië
+ am: ላይቤሪያ
+ an: Liberia
+ ar: ليبيريا
+ az: Liberiya
+ ba: Либерия
+ be: Ліберыя
+ bg: Либерия
+ bm: Liberia
+ bn: লাইবেরিয়া
+ bo: ལི་བེ་རི་ཡ།
+ br: Liberia
+ bs: Liberija
+ ca: Libèria
+ ce: Либери
+ cs: Libérie
+ cv: Либери
+ cy: Liberia
+ da: Liberia
+ de: Liberia
+ dv: ލައިބީރިއާ
+ ee: Liberia
+ el: Λιβερία
+ en: Liberia
+ eo: Liberio
+ es: Liberia
+ et: Libeeria
+ eu: Liberia
+ fa: لیبریا
+ ff: Labiriyaa
+ fi: Liberia
+ fo: Liberia
+ fr: Liberia
+ fy: Libearia
+ ga: An Libéir
+ gd: Libèiria
+ gl: Liberia
+ gv: Yn Laibeer
+ he: ליבריה
+ hi: लाइबेरिया
+ hr: Liberija
+ ht: Liberya
+ hu: Libéria
+ hy: Լիբերիա
+ ia: Liberia
+ id: Liberia
+ ie: Liberia
+ io: Liberia
+ is: Líbería
+ it: Liberia
+ ja: リベリア
+ jv: Liberia
+ ka: ლიბერია
+ kg: Liberia
+ kk: Либерия
+ kn: ಲೈಬೀರಿಯ
+ ko: 라이베리아
+ ku: Lîberya
+ kw: Liberi
+ la: Liberia
+ lb: Liberia
+ li: Liberia
+ ln: Liberia
+ lt: Liberija
+ lv: Libērija
+ mi: Raipiri
+ mk: Либерија
+ ml: ലൈബീരിയ
+ mn: Либери
+ mr: लायबेरिया
+ ms: Liberia
+ mt: Liberja
+ my: လိုက်ဘေးရီးယားနိုင်ငံ
+ nl: Liberia
+ nn: Liberia
+ "no": Liberia
+ oc: Libèria
+ or: ଲାଇବେରିଆ
+ os: Либери
+ pl: Liberia
+ ps: لايبېريا
+ pt: Libéria
+ qu: Libirya
+ rm: Liberia
+ ro: Liberia
+ ru: Либерия
+ rw: Liberiya
+ sa: लायबीरिया
+ sc: Libèria
+ se: Liberia
+ sg: Liberïa
+ sh: Liberija
+ sk: Libéria
+ sl: Liberija
+ sn: Liberia
+ so: Liberia
+ sq: Liberia
+ sr: Либерија
+ ss: ILibheriya
+ st: Liberia
+ su: Liberia
+ sv: Liberia
+ sw: Liberia
+ ta: லைபீரியா
+ tg: Либерия
+ th: ประเทศไลบีเรีย
+ tk: Liberiýa
+ tl: Liberia
+ tr: Liberya
+ ts: Layiberiya
+ tt: Либерия
+ ug: لىبېرىيە
+ uk: Ліберія
+ ur: لائبیریا
+ uz: Liberiya
+ vi: Liberia
+ vo: Liberän
+ wo: Libeeria
+ yi: ליבעריע
+ yo: Làìbéríà
+ zh: 利比里亚
+ zu: ILiberia
--- /dev/null
+name:
+ default: Lesotho
+ af: Lesotho
+ am: ሌሶቶ
+ an: Lesoto
+ ar: ليسوتو
+ az: Lesoto
+ ba: Лесото
+ be: Лесота
+ bg: Лесото
+ bm: Lesoto
+ bn: লেসোথো
+ bo: ལི་སོ་ཐོ།
+ br: Lesotho
+ bs: Lesoto
+ ca: Lesotho
+ ce: Лесото
+ cs: Lesotho
+ cv: Лесото
+ cy: Lesotho
+ da: Lesotho
+ de: Lesotho
+ dv: ލެސޯތޯ
+ ee: Lesotho
+ el: Λεσότο
+ en: Lesotho
+ eo: Lesoto
+ es: Lesoto
+ et: Lesotho
+ eu: Lesotho
+ fa: لسوتو
+ fi: Lesotho
+ fo: Lesoto
+ fr: Lesotho
+ fy: Lesoto
+ ga: Leosóta
+ gd: Leasoto
+ gl: Lesoto
+ gv: Lesoto
+ he: לסוטו
+ hi: लेसोथो
+ hr: Lesoto
+ ht: Lezoto
+ hu: Lesotho
+ hy: Լեսոթո
+ ia: Lesotho
+ id: Lesotho
+ ie: Lesotho
+ io: Lesotho
+ is: Lesótó
+ it: Lesotho
+ ja: レソト
+ jv: Lesotho
+ ka: ლესოთო
+ kg: Lesotho
+ kk: Лесото
+ kn: ಲೆಸೊಥೊ
+ ko: 레소토
+ ku: Lesoto
+ kw: Lesotho
+ la: Lesothum
+ lb: Lesotho
+ li: Lesotho
+ ln: Lesoto
+ lt: Lesotas
+ lv: Lesoto
+ mi: Teroto
+ mk: Лесото
+ ml: ലെസോത്തോ
+ mn: Лесото
+ mr: लेसोथो
+ ms: Lesotho
+ mt: Lesoto
+ my: လီဆိုသိုနိုင်ငံ
+ na: Resoto
+ nl: Lesotho
+ nn: Lesotho
+ "no": Lesotho
+ nv: Sotho Dineʼé Bikéyah
+ oc: Lesotho
+ or: ଲିସୁଟୁ
+ os: Лесото
+ pa: ਲਿਸੋਥੋ
+ pl: Lesotho
+ pt: Lesoto
+ qu: Suthusuyu
+ ro: Lesotho
+ ru: Лесото
+ rw: Lesoto
+ sa: लेसोथो
+ se: Lesotho
+ sg: Lesôtho
+ sh: Lesoto
+ sk: Lesotho
+ sl: Lesoto
+ sn: Lesotho
+ so: Lesotho
+ sq: Lesoto
+ sr: Лесото
+ ss: ÉLusûtfu
+ st: Lesotho
+ su: Lésotho
+ sv: Lesotho
+ sw: Lesotho
+ ta: லெசோத்தோ
+ tg: Лесото
+ th: ประเทศเลโซโท
+ tk: Lesoto
+ tl: Lesoto
+ tn: Lesotho
+ tr: Lesotho
+ ts: Lesotho
+ tt: Лесото
+ ug: لېسوتو
+ uk: Лесото
+ ur: لیسوتھو
+ uz: Lesoto
+ ve: Li-Sotho
+ vi: Lesotho
+ vo: Lesotän
+ wo: Lesoto
+ yi: לעסאטא
+ yo: Lèsóthò
+ zh: 莱索托/賴索托
+ zu: OSotho
--- /dev/null
+name:
+ default: Lietuva
+ ab: Литва
+ af: Litaue
+ ak: Lituania
+ am: ሊትዌኒያ
+ an: Lituania
+ ar: ليتوانيا
+ ay: Lituaña
+ az: Litva
+ ba: Литва
+ be: Літва
+ bg: Литва
+ bi: Litwania
+ bn: লিথুয়ানিয়া
+ bo: ལི་ཐུ་ཨེ་ནི་ཡ།
+ br: Lituania
+ bs: Litvanija
+ ca: Lituània
+ ce: Литва
+ ch: Lituania
+ co: Lituania
+ cs: Litva
+ cu: Литъва
+ cv: Литва
+ cy: Lithwania
+ da: Litauen
+ de: Litauen
+ dv: ލިތުއޭނިއާ
+ dz: ལི་ཐུ་ནི་ཡ།
+ ee: Lithuania
+ el: Λιθουανία
+ en: Lithuania
+ eo: Litovio
+ es: Lituania
+ et: Leedu
+ eu: Lituania
+ fa: لیتوانی
+ ff: Lituwaniya
+ fi: Liettua
+ fj: Lituani
+ fo: Litava
+ fr: Lituanie
+ fy: Litouwen
+ ga: An Liotuáin
+ gd: Liotuàinia
+ gl: Lituania - Lietuva
+ gn: Lituaña
+ gu: લિથુઆનિયા
+ gv: Yn Litaan
+ he: ליטא
+ hi: लिथुआनिया
+ hr: Litva
+ ht: Lityani
+ hu: Litvánia
+ hy: Լիտվա
+ ia: Lituania
+ id: Lituania
+ ie: Lituania
+ io: Lituania
+ is: Litháen
+ it: Lituania
+ iu: ᓕᐋᑐᕙ
+ ja: リトアニア
+ jv: Lituania
+ ka: ლიტვა
+ kg: Lietuva
+ ki: Lithuania
+ kk: Литва
+ kl: Litaueni
+ ko: 리투아니아
+ ku: Lîtvanya
+ kv: Литва
+ kw: Lithouani
+ ky: Литва
+ la: Lituania
+ lb: Litauen
+ lg: Lithueenia
+ li: Litauwe
+ ln: Litwani
+ lt: Lietuva
+ lv: Lietuva
+ mg: Litoania
+ mi: Rituānia
+ mk: Литванија
+ ml: ലിത്വാനിയ
+ mn: Литва
+ mr: लिथुएनिया
+ ms: Lithuania
+ mt: Litwanja
+ my: လစ်သူယေးနီးယားနိုင်ငံ
+ na: Rituainiya
+ ne: लिथुआनिया
+ nl: Litouwen
+ nn: Litauen
+ "no": Litauen
+ nv: Łitʼoowę́ęya
+ ny: Lithuania
+ oc: Lituània
+ or: ଲିଥୁଆନିଆ
+ os: Литва
+ pl: Litwa
+ ps: لېتوانيا
+ pt: Lituânia
+ qu: Lituwa
+ rm: Lituania
+ rn: Lituania
+ ro: Lituania
+ ru: Литва
+ rw: Lituwaniya
+ sa: लेतुवा
+ sc: Lituània
+ se: Lietuva
+ sg: Lituanïi
+ sh: Litvanija
+ sk: Litva
+ sl: Litva
+ so: Lithuaniya
+ sq: Lituania
+ sr: Литванија
+ ss: Lithuwani
+ st: Lituania
+ su: Lituania
+ sv: Litauen
+ sw: Lituanya
+ ta: லித்துவேனியா
+ te: లిథువేనియా
+ tg: Литва
+ th: ประเทศลิทัวเนีย
+ tk: Litwa
+ tl: Litwaniya
+ tr: Litvanya
+ ts: Lithuania
+ tt: Литва
+ ug: لىتۋا
+ uk: Литва
+ ur: لتھووینیا
+ uz: Litva
+ ve: Lituania
+ vi: Litva
+ vo: Lietuvän
+ wa: Litwaneye
+ wo: Lituwaani
+ yi: ליטע
+ yo: Lituéníà
+ zh: 立陶宛
+ zu: ILithuwaniya
--- /dev/null
+name:
+ default: Lëtzebuerg
+ af: Luxemburg
+ am: ሉክሰምበርግ
+ an: Luxemburgo
+ ar: لوكسمبورغ
+ az: Lüksemburq
+ ba: Люксембург
+ be: Люксембург
+ bg: Люксембург
+ bi: Luxembourg
+ bn: লুক্সেমবুর্গ
+ bo: ལུ་སེམ་བའུརག
+ br: Luksembourg
+ bs: Luksemburg
+ ca: Luxemburg
+ ce: Люксембург
+ co: Lussemburgu
+ cs: Lucembursko
+ cu: Люѯємбоургъ
+ cv: Люксембург
+ cy: Lwcsembwrg
+ da: Luxembourg
+ de: Luxemburg
+ ee: Luxembourg
+ el: Λουξεμβούργο
+ en: Luxembourg
+ eo: Luksemburgio
+ es: Luxemburgo
+ et: Luksemburg
+ eu: Luxenburgo
+ fa: لوکزامبورگ
+ fi: Luxemburg
+ fo: Luksemburg
+ fr: Luxembourg
+ fy: Lúksemboarch
+ ga: Lucsamburg
+ gd: Lucsamburg
+ gl: Luxemburgo
+ gn: Luxemburgo
+ gu: લક્ઝેમ્બર્ગ
+ gv: Lucsemburg
+ he: לוקסמבורג
+ hi: लक्ज़मबर्ग
+ hr: Luksemburg
+ ht: Liksanbou
+ hu: Luxemburg
+ hy: Լյուքսեմբուրգ
+ ia: Luxemburg
+ id: Luksemburg
+ ie: Luxemburgia
+ io: Luxemburgia
+ is: Lúxemborg
+ it: Lussemburgo
+ ja: ルクセンブルク
+ jv: Luksemburg
+ ka: ლუქსემბურგი
+ kg: Luxembourg
+ kk: Люксембург
+ kl: Luxembourg
+ ko: 룩셈부르크
+ ku: Lûksembûrg
+ kv: Люксембург
+ kw: Lushaborg
+ ky: Люксембург
+ la: Luxemburgum
+ lb: Lëtzebuerg
+ li: Luxembörg
+ ln: Luksamburg
+ lt: Liuksemburgas
+ lv: Luksemburga
+ mg: Loksemborga
+ mi: Rakapuō
+ mk: Луксембург
+ ml: ലക്സംബർഗ്
+ mn: Люксембург
+ mr: लक्झेंबर्ग
+ ms: Luxembourg
+ mt: Lussemburgu
+ my: လူဇင်ဘတ်နိုင်ငံ
+ na: Ruketemburg
+ ne: लक्जेम्बर्ग
+ nl: Luxemburg
+ nn: Luxembourg
+ "no": Luxembourg
+ nv: Látsębooʼ
+ oc: Luxemborg
+ or: ଲକ୍ସମବର୍ଗ
+ os: Люксембург
+ pa: ਲਕਸਮਬਰਗ
+ pl: Luksemburg
+ ps: لوګزامبورګ
+ pt: Luxemburgo
+ qu: Luksimbur
+ rm: Luxemburg
+ ro: Luxemburg
+ ru: Люксембург
+ rw: Lugizamburu
+ sa: लक्सम्बर्ग
+ sc: Lussemburgu
+ se: Luxemburg
+ sh: Luksemburg
+ sk: Luxembursko
+ sl: Luksemburg
+ so: Luksemburg
+ sq: Luksemburgu
+ sr: Луксембург
+ ss: Lusembogu
+ su: Luksemburg
+ sv: Luxemburg
+ sw: Luxemburg
+ ta: லக்சம்பர்க்
+ tg: Люксембург
+ th: ประเทศลักเซมเบิร์ก
+ tk: Lýuksemburg
+ tl: Luxembourg
+ tr: Lüksemburg
+ tt: Люксембург
+ ug: ليۇكسېمبۇرگ
+ uk: Люксембург
+ ur: لکسمبرگ
+ uz: Luksemburg
+ vi: Luxembourg
+ vo: Luxämburgän
+ wa: Grande-Dutcheye do Lussimbork
+ wo: Luksambuur
+ yi: לוקסעמבורג
+ yo: Lúksẹ́mbọ̀rg
+ zh: 盧森堡
--- /dev/null
+name:
+ default: Latvija
+ ab: Латвиа
+ af: Letland
+ ak: Latvia
+ am: ላትቪያ
+ an: Letonia
+ ar: لاتفيا
+ av: Латвия
+ az: Latviya
+ ba: Латвия
+ be: Латвія
+ bg: Латвия
+ bh: लैटविया
+ bi: Latvia
+ bn: লাতভিয়া
+ bo: ལ་ཊ་ཝིཡ།
+ br: Latvia
+ bs: Latvija
+ ca: Letònia
+ ce: Латви
+ ch: Letonia
+ co: Lettonia
+ cs: Lotyšsko
+ cu: Латвїꙗ
+ cv: Латви
+ cy: Latfia
+ da: Letland
+ de: Lettland
+ dv: ލެޓުވިއާ
+ dz: ལེཊི་བི་ཡ།
+ ee: Latvia
+ el: Λετονία
+ en: Latvia
+ eo: Latvio
+ es: Letonia
+ et: Läti
+ eu: Letonia
+ fa: لتونی
+ ff: Latvia
+ fi: Latvia
+ fo: Lettland
+ fr: Lettonie
+ fy: Letlân
+ ga: An Laitvia
+ gd: An Laitbhe
+ gl: Letonia
+ gn: Letoña
+ gu: લાટવિયા
+ gv: Yn Latvey
+ ha: Laitfiya
+ he: לטביה
+ hi: लातविया
+ hr: Latvija
+ ht: Letoni
+ hu: Lettország
+ hy: Լատվիա
+ ia: Latvia
+ id: Latvia
+ ie: Latvia
+ ig: Latvia
+ io: Latvia
+ is: Lettland
+ it: Lettonia
+ ja: ラトビア
+ jv: Latvia
+ ka: ლატვია
+ kg: Latvia
+ kk: Латвия
+ kl: Letlandi
+ kn: ಲಾಟ್ವಿಯ
+ ko: 라트비아
+ ku: Letonya
+ kv: Латвия
+ kw: Latvi
+ ky: Латвия
+ la: Lettonia
+ lb: Lettland
+ lg: Latvia
+ li: Letland
+ ln: Letoni
+ lo: ປະເທດລັດເວຍ
+ lt: Latvija
+ lv: Latvija
+ mg: Latvia
+ mi: Rāwhia
+ mk: Летонија
+ ml: ലാത്വിയ
+ mn: Латви
+ mr: लात्व्हिया
+ ms: Latvia
+ mt: Latvja
+ my: လတ်ဗီယာနိုင်ငံ
+ na: Ratebiya
+ ne: लात्भिया
+ nl: Letland
+ nn: Latvia
+ "no": Latvia
+ nv: Létbiiya
+ oc: Letònia
+ om: Laativiyaa
+ or: ଲାଟଭିଆ
+ os: Латви
+ pa: ਲਾਤਵੀਆ
+ pi: लाट्विया
+ pl: Łotwa
+ pt: Letónia
+ qu: Litunya
+ rm: Lettonia
+ ro: Letonia
+ ru: Латвия
+ rw: Lativiya
+ sa: लाट्विया
+ sc: Lettonia
+ se: Latvia
+ sh: Letonija
+ si: ලැට්වියාව
+ sk: Lotyšsko
+ sl: Latvija
+ sm: Lativia
+ sn: Latvia
+ so: Latfiya
+ sq: Letonia
+ sr: Летонија
+ ss: ILathiviya
+ st: Latvia
+ su: Latvia
+ sv: Lettland
+ sw: Latvia
+ ta: லாத்வியா
+ te: లాట్వియా
+ tg: Латвия
+ th: ประเทศลัตเวีย
+ tk: Latwiýa
+ tl: Latbiya
+ tr: Letonya
+ ts: Latvia
+ tt: Латвия
+ tw: Latvia
+ ug: لاتۋىيە
+ uk: Латвія
+ ur: لٹویا
+ uz: Latviya
+ vi: Latvia
+ vo: Latviyän
+ wa: Letoneye
+ wo: Letóoni
+ yi: לעטלאנד
+ yo: Látfíà
+ za: Latvia
+ zh: 拉脫維亞
+ zu: ILatviya
--- /dev/null
+name:
+ default: ليبيا
+ af: Libië
+ am: ሊቢያ
+ an: Libia
+ ar: ليبيا
+ az: Liviya
+ ba: Ливия
+ be: Лівія
+ bg: Либия
+ bm: Libya
+ bn: লিবিয়া
+ bo: ལི་པི་ཡ།
+ br: Libia
+ bs: Libija
+ ca: Líbia
+ ce: Ливи
+ cs: Libye
+ cv: Ливи
+ cy: Libya
+ da: Libyen
+ de: Libyen
+ dv: ލީބިޔާ
+ ee: Libya
+ el: Λιβύη
+ en: Libya
+ eo: Libio
+ es: Libia
+ et: Liibüa
+ eu: Libia
+ fa: لیبی
+ fi: Libya
+ fo: Libya
+ fr: Libye
+ fy: Lybje
+ ga: An Libia
+ gd: Libia
+ gl: Libia
+ gn: Livia
+ gv: Yn Leeb
+ ha: Libya
+ he: לוב
+ hi: लीबिया
+ hr: Libija
+ ht: Libi
+ hu: Líbia
+ hy: Լիբիա
+ ia: Libya
+ id: Libya
+ ie: Libya
+ io: Libia
+ is: Líbýa
+ it: Libia
+ ja: リビア
+ jv: Libya
+ ka: ლიბია
+ kg: Libia
+ kk: Ливия
+ kl: Libya
+ kn: ಲಿಬಿಯಾ
+ ko: 리비아
+ ks: لِبیا
+ ku: Lîbya
+ kw: Libi
+ ky: Ливия
+ la: Libya
+ lb: Libyen
+ li: Libië
+ ln: Libîya
+ lt: Libija
+ lv: Lībija
+ mg: Libia
+ mi: Rīpia
+ mk: Либија
+ ml: ലിബിയ
+ mn: Ливи
+ mr: लीबिया
+ ms: Libya
+ mt: Libja
+ my: လစ်ဗျားနိုင်ငံ
+ ne: लिबिया
+ nl: Libië
+ nn: Libya
+ "no": Libya
+ nv: Łíbya
+ oc: Libia
+ or: ଲିବିଆ
+ os: Ливи
+ pa: ਲੀਬੀਆ
+ pl: Libia
+ ps: لېبيا
+ pt: Líbia
+ qu: Libya
+ ro: Libia
+ ru: Ливия
+ rw: Libiya
+ sa: लिबिया
+ sc: Lìbia
+ se: Libya
+ sg: Libïi
+ sh: Libija
+ si: ලිබියාව
+ sk: Líbya
+ sl: Libija
+ sm: Libya
+ sn: Libya
+ so: Libiya
+ sq: Libia
+ sr: Либија
+ ss: ILibhiya
+ su: Libya
+ sv: Libyen
+ sw: Libya
+ ta: லிபியா
+ te: లిబియా
+ tg: Либия
+ th: ประเทศลิเบีย
+ ti: ሊቢያ
+ tk: Liwiýa
+ tl: Libya
+ tr: Libya
+ ts: Libiya
+ tt: Ливия
+ ug: لىۋىيە
+ uk: Лівія
+ ur: لیبیا
+ uz: Liviya
+ vi: Libya
+ vo: Lübän
+ wa: Libeye
+ wo: Libi
+ yi: ליביע
+ yo: Líbyà
+ zh: 利比亚
+ zu: ILibiya
--- /dev/null
+name:
+ default: Maroc ⵍⵎⵖⵔⵉⴱ المغرب
+ af: Marokko
+ am: ሞሮኮ
+ an: Marruecos
+ ar: المغرب
+ az: Mərakeş
+ ba: Марокко
+ be: Марока
+ bg: Мароко
+ bm: Maroko
+ bn: মরোক্কো
+ bo: མོ་རོ་ཁོ།
+ br: Maroko
+ bs: Maroko
+ ca: Marroc
+ ce: Марокко
+ cs: Maroko
+ cv: Марокко
+ cy: Moroco
+ da: Marokko
+ de: Marokko
+ dv: މައުރިބު
+ el: Μαρόκο
+ en: Morocco
+ eo: Maroko
+ es: Marruecos
+ et: Maroko
+ eu: Maroko
+ fa: مراکش
+ fi: Marokko
+ fo: Marokko
+ fr: Maroc
+ fy: Marokko
+ ga: Maracó
+ gd: Maroco
+ gl: Marrocos
+ gv: Yn Varoc
+ he: מרוקו
+ hi: मोरक्को
+ hr: Maroko
+ ht: Mawòk
+ hu: Marokkó
+ hy: Մարոկկո
+ ia: Marocco
+ id: Maroko
+ ie: Morocco
+ io: Maroko
+ is: Marokkó
+ it: Marocco
+ ja: モロッコ
+ jv: Maroko
+ ka: მაროკო
+ kg: Maroko
+ kk: Мағрибия
+ kn: ಮೊರಾಕೊ
+ ko: 모로코
+ ks: मोराको
+ ku: Maroko
+ kw: Marokk
+ ky: Марокко
+ la: Marocum
+ lb: Marokko
+ li: Marokko
+ ln: Marɔkɛ
+ lt: Marokas
+ lv: Maroka
+ mg: Marôka
+ mi: Marako
+ mk: Мароко
+ ml: മൊറോക്കൊ
+ mn: Марокко
+ mr: मोरोक्को
+ ms: Maghribi
+ mt: Marokk
+ my: မော်ရိုကိုနိုင်ငံ
+ nl: Marokko
+ nn: Marokko
+ "no": Marokko
+ nv: Moroko
+ oc: Marròc
+ or: ମୋରୋକୋ
+ os: Марокко
+ pa: ਮੋਰਾਕੋ
+ pl: Maroko
+ ps: مراکش
+ pt: Marrocos
+ qu: Maruku
+ ro: Maroc
+ ru: Марокко
+ rw: Maroke
+ sa: मोराको
+ sc: Marocco
+ se: Marokko
+ sg: Marôko
+ sh: Maroko
+ sk: Maroko
+ sl: Maroko
+ sn: Morocco
+ so: Marooko
+ sq: Maroku
+ sr: Мароко
+ ss: IMorokho
+ su: Maroko
+ sv: Marocko
+ sw: Moroko
+ ta: மொரோக்கோ
+ te: మొరాకో
+ tg: Марокаш
+ th: ประเทศโมร็อกโก
+ ti: ሞሮኮ
+ tk: Marokko
+ tl: Maruekos
+ tr: Fas
+ ts: Morocco
+ tt: Марокко
+ ug: ماراكەش
+ uk: Марокко
+ ur: مراکش
+ uz: Marokash
+ vi: Maroc
+ vo: Marokän
+ wa: Marok
+ wo: Marok
+ yi: מאראקא
+ yo: Mòrókò
+ zh: 摩洛哥
+ zu: IMorokho
--- /dev/null
+name:
+ default: Monaco
+ af: Monaco
+ ak: Mɔnako
+ am: ሞናኮ
+ an: Múnegu
+ ar: موناكو
+ az: Monako
+ ba: Монако
+ be: Манака
+ bg: Монако
+ bi: Monaco
+ bm: Monako
+ bn: মোনাকো
+ bo: མོ་ན་ཁོ།
+ br: Monako
+ bs: Monako
+ ca: Mònaco
+ ce: Монако
+ cs: Monako
+ cu: Монако
+ cv: Монако
+ cy: Monaco
+ da: Monaco
+ de: Monaco
+ dv: މޮނާކޯ
+ dz: མོ་ན་ཀོ
+ ee: Monaco
+ el: Μονακό
+ en: Monaco
+ eo: Monako
+ es: Mónaco
+ et: Monaco
+ eu: Monako
+ fa: موناکو
+ ff: Monaakoo
+ fi: Monaco
+ fo: Monako
+ fr: Monaco
+ fy: Monako
+ ga: Monacó
+ gd: Monaco
+ gl: Mónaco
+ gu: મોનૅકો
+ gv: Monaco
+ ha: Monako
+ he: מונקו
+ hi: मोनैको
+ hr: Monako
+ ht: Monako
+ hu: Monaco
+ hy: Մոնակո
+ ia: Monaco
+ id: Monako
+ ie: Mónaco
+ io: Monako
+ is: Mónakó
+ it: Monaco
+ ja: モナコ
+ jv: Monako
+ ka: მონაკო
+ kg: Monako
+ ki: Monako
+ kk: Монако
+ kl: Monaco
+ km: ម៉ូណាកូ
+ kn: ಮೊನಾಕೊ
+ ko: 모나코
+ ks: موناکو
+ ku: Monako
+ kv: Монако
+ kw: Monako
+ la: Monoecus
+ lb: Monaco
+ lg: Monako
+ li: Monaco
+ ln: Monaco
+ lo: ໂມນາໂກ
+ lt: Monakas
+ lv: Monako
+ mg: Mônakô
+ mi: Manako
+ mk: Монако
+ ml: മൊണാക്കോ
+ mn: Монако
+ mr: मोनॅको
+ ms: Monaco
+ mt: Monako
+ my: နိုင်ငံ
+ na: Monako
+ ne: मोनाको
+ nl: Monaco
+ nn: Monaco
+ "no": Monaco
+ oc: Mónegue
+ or: ମୋନାକୋ
+ os: Монако
+ pa: ਮੋਨਾਕੋ
+ pl: Monako
+ pt: Mónaco
+ qu: Munaku
+ rm: Monaco
+ rn: Monako
+ ro: Monaco
+ ru: Монако
+ rw: Monako
+ sa: मोनाको
+ se: Monaco
+ sg: Monaköo
+ sh: Monako
+ si: මොනාකෝව
+ sk: Monako
+ sl: Monako
+ so: Monako
+ sq: Monako
+ sr: Монако
+ ss: IMonakho
+ su: Monako
+ sv: Monaco
+ sw: Monako
+ ta: மொனாக்கோ
+ te: మొనాకో
+ tg: Монако
+ th: ประเทศโมนาโก
+ ti: ሞናኮ
+ tk: Monako
+ tl: Monako
+ to: Manako
+ tr: Monako
+ tt: Монако
+ tw: Monako
+ ug: موناكو
+ uk: Монако
+ ur: موناکو
+ uz: Monako
+ vi: Monaco
+ vo: Monakän
+ wo: Monaako
+ yi: מאנאקא
+ yo: Mónakò
+ zh: 摩纳哥
+ zu: i-Monaco
--- /dev/null
+name:
+ default: Moldova
+ ab: Молдова
+ af: Moldowa
+ am: ሞልዶቫ
+ an: Moldavia
+ ar: مولدوفا
+ az: Moldova
+ ba: Молдова
+ be: Малдова
+ bg: Молдова
+ bi: Moldova
+ bn: মলদোভা
+ bo: མོལ་དོ་ཝ།
+ br: Moldova
+ bs: Moldavija
+ ca: Moldàvia
+ ce: Молдави
+ co: Moldavia
+ cs: Moldavsko
+ cu: Молдова
+ cv: Молдави
+ cy: Moldofa
+ da: Moldova
+ de: Moldawien
+ dv: މޮލްޑޯވާ
+ ee: Moldova
+ el: Μολδαβία
+ en: Moldova
+ eo: Moldavio
+ es: Moldavia
+ et: Moldova
+ eu: Moldavia
+ fa: مولداوی
+ fi: Moldova
+ fo: Moldova
+ fr: Moldavie
+ fy: Moldaavje
+ ga: An Mholdóiv
+ gd: Moldàibhia
+ gl: Moldavia
+ gu: મોલ્દોવા
+ gv: Moldova
+ he: מולדובה
+ hi: मॉल्डोवा
+ hr: Moldova
+ ht: Moldavi
+ hu: Moldova
+ hy: Մոլդովա
+ ia: Moldova
+ id: Moldova
+ ie: Moldavia
+ io: Moldova
+ is: Moldóva
+ it: Moldavia
+ ja: モルドバ
+ jv: Moldova
+ ka: მოლდოვა
+ kg: Moldova
+ kk: Молдова
+ kl: Moldova
+ kn: ಮಾಲ್ಡೋವ
+ ko: 몰도바
+ ku: Moldova
+ kv: Молдова
+ kw: Moldova
+ ky: Молдова
+ la: Moldavia
+ lb: Moldawien
+ li: Moldavië
+ lt: Moldavija
+ lv: Moldova
+ mi: Te Whenua o Morotawa
+ mk: Молдавија
+ ml: മൊൾഡോവ
+ mn: Молдав
+ mo: Мoldova
+ mr: मोल्दोव्हा
+ ms: Moldova
+ mt: Moldova
+ my: မော်လ်ဒိုဗာနိုင်ငံ
+ na: Mordowa
+ ne: मोल्दोवा
+ nl: Moldavië
+ nn: Moldova
+ "no": Moldova
+ oc: Moldàvia
+ or: ମାଲଡୋଭା
+ os: Молдави
+ pa: ਮੋਲਦੋਵਾ
+ pl: Mołdawia
+ pt: Moldávia
+ qu: Mulduwa
+ ro: Moldova
+ ru: Молдавия
+ rw: Molidova
+ sa: मोल्दोवा
+ se: Moldova
+ sh: Moldavija
+ sk: Moldavsko
+ sl: Moldavija
+ so: Moldofa
+ sq: Moldavia
+ sr: Молдавија
+ ss: IMolidiva
+ st: Moldova
+ su: Moldova
+ sv: Moldavien
+ sw: Moldova
+ ta: மல்தோவா
+ te: మోల్డోవా
+ tg: Молдова
+ th: ประเทศมอลโดวา
+ tk: Moldawiýa
+ tl: Moldavia
+ tr: Moldova
+ tt: Молдавия
+ ug: مولدوۋا
+ uk: Молдова
+ ur: مالدووا
+ uz: Moldova
+ vi: Moldova
+ vo: Moldovän
+ wo: Moldaawi
+ yi: מאלדאווע
+ yo: Móldófà
+ zh: 摩尔多瓦
--- /dev/null
+name:
+ default: Crna Gora / Црна Гора
+ af: Montenegro
+ am: ሞንቴኔግሮ
+ an: Montenegro
+ ar: الجبل الأسود
+ av: Чеэраб Меэр
+ az: Monteneqro
+ ba: Черногория
+ be: Чарнагорыя
+ bg: Черна гора
+ bi: Montenegro
+ bn: মন্টিনিগ্রো
+ bo: མོན་ཊེནིག་རོ།
+ br: Montenegro
+ bs: Crna Gora
+ ca: Montenegro
+ ce: Iаьржалаьмни
+ cs: Černá Hora
+ cu: Чрьна Гора
+ cv: Черногори
+ cy: Montenegro
+ da: Montenegro
+ de: Montenegro
+ dv: މޮންޓެނީގުރޯ
+ ee: Montenegro
+ el: Μαυροβούνιο
+ en: Montenegro
+ eo: Montenegro
+ es: Montenegro
+ et: Montenegro
+ eu: Montenegro
+ fa: مونتهنگرو
+ fi: Montenegro
+ fo: Montenegro
+ fr: Monténégro
+ fy: Montenegro
+ ga: Montainéagró
+ gd: Am Monadh Neagrach
+ gl: Montenegro
+ gu: મોન્ટેનીગ્રો
+ gv: Montenegro
+ he: מונטנגרו
+ hr: Crna Gora
+ ht: Montenegwo
+ hu: Montenegró
+ hy: Չեռնոգորիա
+ ia: Montenegro
+ id: Montenegro
+ ie: Montenegro
+ io: Montenegro
+ is: Svartfjallaland
+ it: Montenegro
+ ja: モンテネグロ
+ jv: Montenégro
+ ka: ჩერნოგორია
+ kg: Monte Negro
+ kk: Черногория
+ kl: Montenegro
+ kn: ಮಾಂಟೆನೆಗ್ರೊ
+ ko: 몬테네그로
+ ku: Montenegro
+ kv: Черногория
+ kw: Montenegro
+ ky: Монтенегро
+ la: Mons Niger
+ lb: Montenegro
+ li: Montenegro
+ ln: Montenegro
+ lt: Juodkalnija
+ lv: Melnkalne
+ mi: Monotenīkoro
+ mk: Црна Гора
+ ml: മോണ്ടെനെഗ്രൊ
+ mn: Монтенегро
+ mr: माँटेनिग्रो
+ ms: Montenegro
+ mt: Montenegro
+ my: မွန်တီနီဂရိုးနိုင်ငံ
+ na: Montenegro
+ ne: मोन्टेनेग्रो
+ nl: Montenegro
+ nn: Montenegro
+ "no": Montenegro
+ nv: Dziłizhin Bikéyah
+ oc: Montenegro
+ or: ମୋଣ୍ଟେନେଗ୍ରୋ
+ os: Черногори
+ pa: ਮੋਂਟੇਨੇਗਰੋ
+ pl: Czarnogóra
+ ps: مانتېنېګرو
+ pt: Montenegro
+ qu: Yanaurqu
+ ro: Muntenegru
+ ru: Черногория
+ rw: Montenegoro
+ sc: Montenegro
+ se: Montenegro
+ sh: Crna Gora
+ sk: Čierna Hora
+ sl: Črna gora
+ sm: Montenegro
+ so: Montenegro
+ sq: Mali i Zi
+ sr: Црна Гора
+ ss: IMonthenekho
+ su: Monténégro
+ sv: Montenegro
+ sw: Montenegro
+ ta: மொண்டெனேகுரோ
+ tg: Монтенегро
+ th: ประเทศมอนเตเนโกร
+ tk: Çernogoriýa
+ tl: Montenegro
+ tr: Karadağ
+ tt: Монтенегро
+ ug: چېرنوگورىيە
+ uk: Чорногорія
+ ur: مونٹینیگرو
+ uz: Chernogoriya
+ vi: Montenegro
+ vo: Montenegrän
+ wo: Montenegro
+ yi: מאנטענעגרא
+ yo: Montenẹ́grò
+ zh: 蒙特內哥羅
--- /dev/null
+name:
+ default: Saint Martin
--- /dev/null
+name:
+ default: Madagasikara
+ af: Madagaskar
+ am: ማዳጋስካር
+ an: Madagascar
+ ar: مدغشقر
+ az: Madaqaskar
+ ba: Мадагаскар
+ be: Мадагаскар
+ bg: Мадагаскар
+ bm: Madagaskar
+ bn: মাদাগাস্কার
+ bo: མ་ད་གཱ་སི་ཀར།
+ br: Madagaskar
+ bs: Madagaskar
+ ca: Madagascar
+ ce: Мадагаскар
+ cs: Madagaskar
+ cv: Мадагаскар
+ cy: Madagascar
+ da: Madagaskar
+ de: Madagaskar
+ dv: މަޑަގަސްކަރަ
+ ee: Madagascar
+ el: Μαδαγασκάρη
+ en: Madagascar
+ eo: Madagaskaro
+ es: Madagascar
+ et: Madagaskar
+ eu: Madagaskar
+ fa: ماداگاسکار
+ fi: Madagaskar
+ fj: Madagasikar
+ fo: Madagaskar
+ fr: Madagascar
+ fy: Madagaskar
+ ga: Madagascar
+ gd: Madagascar
+ gl: Madagascar
+ gn: Madagaka
+ gu: મડાગાસ્કર
+ gv: Madagascar
+ he: מדגסקר
+ hi: मेडागास्कर
+ hr: Madagaskar
+ ht: Madagaskar
+ hu: Madagaszkár
+ hy: Մադագասկար
+ ia: Madagascar
+ id: Madagaskar
+ ie: Madagascar
+ io: Madagaskar
+ is: Madagaskar
+ it: Madagascar
+ ja: マダガスカル
+ jv: Madagaskar
+ ka: მადაგასკარი
+ kg: Malagasi
+ ki: Madagascar
+ kk: Мадагаскар
+ kl: Madagascar
+ kn: ಮಡಾಗಾಸಿಕರ
+ ko: 마다가스카르
+ ku: Madagaskar
+ kw: Madagaskar
+ ky: Мадагаскар
+ la: Madagascaria
+ lb: Madagaskar
+ li: Madagaskar
+ ln: Madagasikari
+ lt: Madagaskaras
+ lv: Madagaskara
+ mg: Madagasikara
+ mi: Marakāhia
+ mk: Мадагаскар
+ ml: മഡഗാസ്കർ
+ mn: Мадагаскар
+ mr: मादागास्कर
+ ms: Madagaskar
+ mt: Madagaskar
+ my: မဒါဂတ်စကားနိုင်ငံ
+ nl: Madagaskar
+ nn: Madagaskar
+ "no": Madagaskar
+ nv: Madaʼgéésgáá
+ oc: Madagascar
+ om: Madagascar
+ or: ମେଡାଗାସ୍କର
+ os: Мадагаскар
+ pa: ਮਾਦਾਗਾਸਕਰ
+ pl: Madagaskar
+ ps: مادغاسکر
+ pt: Madagáscar
+ qu: Madagaskar
+ ro: Madagascar
+ ru: Мадагаскар
+ rw: Madagasikari
+ sa: मडगास्कर
+ sc: Madagascàr
+ se: Madagaskar
+ sg: Madagaskära
+ sh: Madagaskar
+ si: මැඩගස්කරය
+ sk: Madagaskar
+ sl: Madagaskar
+ sm: Madagascar
+ sn: Madagascar
+ so: Madagaskar
+ sq: Madagaskari
+ sr: Мадагаскар
+ ss: IMadagasikha
+ su: Madagaskar
+ sv: Madagaskar
+ sw: Madagaska
+ ta: மடகாசுகர்
+ te: మడగాస్కర్
+ tg: Мадагаскар
+ th: ประเทศมาดากัสการ์
+ ti: ማዳጋስካር
+ tk: Madagaskar
+ tl: Madagaskar
+ tr: Madagaskar
+ ts: Madagascar
+ tt: Мадагаскар
+ ty: Madagascar
+ ug: ماداگاسكار
+ uk: Мадагаскар
+ ur: مڈغاسکر
+ uz: Madagaskar
+ vi: Madagascar
+ vo: Malagaseän
+ wo: Madagaskaar
+ yi: מאדאגאסקאר
+ yo: Madagáskàr
+ zh: 马达加斯加
+ zu: IMadagasika
--- /dev/null
+name:
+ default: Ṃajeḷ
+ af: Marshalleilande
+ ar: جزر مارشال
+ be: Маршалавы астравы
+ br: Inizi Marshall
+ ca: Illes Marshall
+ cy: Ynysoedd Marshall
+ da: Marshalløerne
+ de: Marshallinseln
+ en: Marshall Islands
+ eo: Marŝaloj
+ es: Islas Marshall
+ et: Marshalli Saared
+ fa: جزایر مارشال
+ fi: Marshallinsaaret
+ fr: Îles Marshall
+ fy: de Marshalleilannen
+ ga: Oileáin Marshall
+ gd: Na h-Eileanan Mharshall
+ he: איי מרשל
+ hr: Maršalovi Otoci
+ hu: Marshall-szigetek
+ ia: Insulas Marshall
+ id: Kepulauan Marshall
+ io: Insuli Marshall
+ is: Marshalleyjar
+ it: Isole Marshall
+ la: Insulae Marsalienses
+ lb: Marshallinselen
+ li: Marshall-eilen
+ lt: Maršalo salos
+ lv: Māršala salas
+ mk: Маршалски Острови
+ mn: Маршаллын арлууд
+ nl: Marshalleilanden
+ oc: Illas Marshall
+ pl: Wyspy Marshalla
+ pt: Ilhas Marshall
+ ru: Маршалловы Острова
+ se: Marshallsullot
+ sk: Mashallove ostrovy
+ sl: Marshallovi otoki
+ sv: Marshallöarna
+ ta: மார்சல் தீவுகள்
+ th: สาธารณรัฐหมู่เกาะมาร์แชลล์
+ tr: Marshall Adaları
+ uk: Маршаллові Острови
+ vi: Quần đảo Marshall
+ vo: Marjaluäns
+ zh: 马绍尔群岛
--- /dev/null
+name:
+ default: Северна Македонија
+ af: Masedonië
+ ak: Masedonia
+ am: ማሴዶንያ
+ an: Republica de Macedonia
+ ar: شمال مقدونيا
+ az: Masedoniya
+ ba: Македония Республикаһы
+ be: Македонія
+ bg: Северна Македония
+ bi: Macedonia
+ bm: Macedɔni
+ bn: মেসিডোনিয়া[FYROM]
+ bo: མ་སེ་ཌོ་ནིཡ། (རྒྱལ་ཁབ།)
+ br: Makedonia
+ bs: Sjeverna Makedonija
+ ca: Macedònia del Nord
+ ce: Македони
+ cs: Severní Makedonie
+ cu: Макєдонїꙗ
+ cv: Македони Республики
+ cy: Gogledd Macedonia
+ da: Nordmakedonien
+ de: Nordmazedonien
+ dv: މެސެޑޯނިއާ
+ dz: མ་སེ་ཌོ་ནི་ཡ་ [ཡུ་གོ་སླཱ་བི་ཡ]
+ ee: Makedonia
+ el: Βόρεια Μακεδονία
+ en: North Macedonia
+ eo: Nord-Makedonio
+ es: Macedonia del Norte
+ et: Põhja-Makedoonia
+ eu: Ipar Mazedonia
+ fa: مقدونیه شمالی
+ ff: Meceduwaan
+ fi: Makedonia
+ fo: Makedónia
+ fr: Macédoine du Nord
+ fy: Noard-Masedoanje
+ ga: An Mhacadóin
+ gd: Masadoinia a Tuath
+ gl: Macedonia do Norte
+ gn: Masendoña
+ gu: મેસેડોનિયા
+ gv: Massadoan Hwoaie
+ ha: Masedoniya
+ he: מקדוניה הצפונית
+ hi: उत्तर मेसीडोनिया
+ hr: Sjeverna Makedonija
+ ht: Repiblik d Masedoni
+ hu: Észak-Macedónia
+ hy: Մակեդոնիայի Հանրապետություն
+ ia: Macedonia
+ id: Republik Makedonia
+ ie: Macedonia
+ io: Republiko Macedonia
+ is: Makedónía
+ it: Macedonia del Nord
+ ja: 北マケドニア
+ jv: Républik Makedonia
+ ka: მაკედონია
+ kg: Makedonia
+ ki: Masedonia
+ kk: Македония Республикасы
+ kl: Makedonia
+ km: ម៉ាសេដ្វាន
+ kn: ಮ್ಯಾಸಿಡೋನಿಯ
+ ko: 북마케도니아
+ ks: مٮ۪سوڑونِیا
+ ku: Komara Makedonyayê
+ kv: Македония Республика
+ kw: Repoblek Makedoni
+ la: Macedonia Septentrionalis
+ lb: Nordmazedonien
+ lg: Masedoniya
+ li: Noord-Macedonië
+ ln: Masedoni
+ lo: ມາຊີໂດເນຍ
+ lt: Šiaurės Makedonija
+ lv: Ziemeļmaķedonija
+ mg: Makedonia
+ mi: Makerōnia
+ mk: Северна Македонија
+ ml: റിപ്പബ്ലിക് ഓഫ് മാസിഡോണിയ
+ mn: Бүгд Найрамдах Македон Улс
+ mr: मॅसिडोनिया
+ ms: Republik Macedonia
+ mt: Repubblika tal-Maċedonja
+ my: မက်စီဒိုးနီးယားနိုင်ငံ
+ na: Matedoniya
+ ne: म्यासेडोनिया
+ nl: Noord-Macedonië
+ nn: Nord-Makedonia
+ "no": Nord-Makedonia
+ oc: Republica de Macedònia
+ or: ମାସିଡୋନିଆ
+ os: Республикæ Македони
+ pa: ਮਕਦੂਨੀਆ ਗਣਰਾਜ
+ pl: Macedonia Północna
+ ps: د مقدونيې ولسمشريزه
+ pt: Macedónia do Norte
+ qu: Makidunya
+ rm: Macedonia
+ rn: Masedoniya
+ ro: Macedonia de Nord
+ ru: Северная Македония
+ rw: Masedoniya
+ sa: मेसेडोनिया
+ sc: Matzedònia
+ se: Davvi-Makedonia
+ sg: Maseduäni
+ sh: Severna Makedonija
+ si: මැසිඩෝනියාන [FYROM]
+ sk: Severné Macedónsko
+ sl: Makedonija
+ sn: Macedonia
+ so: Makedonia
+ sq: Maqedonia e Veriut
+ sr: Северна Македонија
+ ss: IMakhedoniya
+ su: Makédonia
+ sv: Nordmakedonien
+ sw: Jamhuri ya Masedonia
+ ta: மாக்கடோனியக் குடியரசு
+ te: మేసిడోనియా
+ tg: Ҷумҳурии Мақдуния
+ th: ประเทศมาซิโดเนีย
+ ti: ማከዶኒያ
+ tk: Makedoniýa Respublikasy
+ tl: Republika ng Masedonya
+ to: Masitōnia [FYROM]
+ tr: Kuzey Makedonya
+ tt: Македония Җөмһүрияте
+ ug: ماكېدونىيە
+ uk: Північна Македонія
+ ur: شمالی مقدونیہ
+ uz: Makedoniya Respublikasi
+ vi: Bắc Macedonia
+ vo: Nolüda-Makedoniyän
+ wo: Réewum Maseduwaan
+ yi: רעפובליק פון מאקעדאניע
+ yo: Orílẹ̀-èdè Olómìnira ilẹ̀ Makẹdóníà
+ zh: 北马其顿共和国
+ zu: isi-Macedonia [FYROM]
--- /dev/null
+name:
+ default: Mali
+ af: Mali
+ am: ማሊ
+ an: Mali
+ ar: مالي
+ az: Mali
+ ba: Мали
+ be: Малі
+ bg: Мали
+ bm: Mali
+ bn: মালি
+ bo: མ་ལི།
+ br: Mali
+ bs: Mali
+ ca: Mali
+ ce: Мали
+ cs: Mali
+ cv: Мали
+ cy: Mali
+ da: Mali
+ de: Mali
+ dv: މާލީ
+ ee: Mali
+ el: Μάλι
+ en: Mali
+ eo: Malio
+ es: Malí
+ et: Mali
+ eu: Mali
+ fa: مالی
+ ff: Maali
+ fi: Mali
+ fo: Mali
+ fr: Mali
+ fy: Maly
+ ga: Mailí
+ gd: Màili
+ gl: Malí
+ gv: Malee
+ ha: Mali
+ he: מאלי
+ hi: माली
+ hr: Mali
+ ht: Mali
+ hu: Mali
+ hy: Մալի
+ ia: Mali
+ id: Mali
+ ie: Mali
+ io: Mali
+ is: Malí
+ it: Mali
+ ja: マリ共和国
+ jv: Mali
+ ka: მალი
+ kg: Mali
+ kk: Мали
+ kn: ಮಾಲಿ
+ ko: 말리
+ ku: Malî
+ kw: Mali
+ la: Malium
+ lb: Mali
+ li: Mali
+ ln: Mali
+ lt: Malis
+ lv: Mali
+ mi: Māri
+ mk: Мали
+ ml: മാലി
+ mn: Мали
+ mr: माली
+ ms: Mali
+ mt: Mali
+ my: မာလီနိုင်ငံ
+ nl: Mali
+ nn: Mali
+ "no": Mali
+ oc: Mali
+ or: ମାଲି
+ os: Мали
+ pa: ਮਾਲੀ
+ pl: Mali
+ ps: مالي
+ pt: Mali
+ qu: Mali
+ ro: Mali
+ ru: Мали
+ rw: Mali
+ sa: माली
+ sc: Mali
+ se: Mali
+ sg: Malïi
+ sh: Mali
+ si: මාලි
+ sk: Mali
+ sl: Mali
+ sn: Mali
+ so: Maali
+ sq: Mali
+ sr: Мали
+ ss: IMali
+ st: Mali
+ su: Mali
+ sv: Mali
+ sw: Mali
+ ta: மாலி
+ tg: Малӣ
+ th: ประเทศมาลี
+ ti: ማሊ
+ tk: Mali
+ tl: Mali
+ tr: Mali
+ ts: Mali
+ tt: Мали
+ ug: مالى
+ uk: Малі
+ ur: مالی
+ uz: Mali
+ vi: Mali
+ vo: Maliyän
+ wa: Mali
+ wo: Mali
+ yi: מאלי
+ yo: Málì
+ zh: 马里共和国
+ zu: IMali
--- /dev/null
+name:
+ default: မြန်မာ
+ af: Mianmar
+ am: ምየንማ
+ an: Myanmar
+ ar: بورما
+ az: Myanma
+ ba: Мьянма
+ be: М'янма
+ bg: Мианмар
+ bi: Burma
+ bn: মায়ানমার
+ bo: བྷར་མ།
+ br: Myanmar
+ bs: Mijanmar
+ ca: Myanmar
+ ce: Мьянма
+ cs: Myanmar
+ cv: Мьянма
+ cy: Myanmar
+ da: Myanmar
+ de: Myanmar
+ dv: ބަރުމާ
+ dz: མེ་མར་
+ el: Μιανμάρ
+ en: Myanmar
+ eo: Birmo / Mjanmao
+ es: Myanmar
+ et: Birma
+ eu: Myanmar
+ fa: میانمار
+ fi: Myanmar
+ fo: Burma
+ fr: Birmanie
+ fy: Birma
+ ga: Maenmar
+ gd: Mianmar
+ gl: Myanmar
+ gu: બર્મા
+ gv: Myanmar
+ he: מיאנמר
+ hi: म्यान्मार
+ hr: Mijanmar
+ ht: Bimani
+ hu: Mianmar
+ hy: Մյանմա
+ ia: Birmania
+ id: Myanmar
+ ie: Myanmar
+ io: Myanmar
+ is: Búrma
+ it: Birmania
+ ja: ミャンマー
+ jv: Myanmar
+ ka: მიანმარი
+ ki: Myanmar
+ kk: Мианма
+ km: មីយ៉ាន់ម៉ា
+ kn: ಮಯನ್ಮಾರ್
+ ko: 미얀마
+ ku: Myanmar
+ kv: Мьянма
+ kw: Byrmani
+ ky: Мьянма
+ la: Birmania
+ lb: Myanmar
+ li: Myanmar
+ lo: ປະເທດມຽນມາ
+ lt: Mianmaras
+ lv: Mjanma
+ mg: Myanmara
+ mi: Pēma
+ mk: Мјанмар
+ ml: മ്യാന്മാർ
+ mn: Мьянмар
+ mr: म्यानमार
+ ms: Myanmar
+ mt: Myanmar
+ my: မြန်မာ
+ na: Miyanmar
+ ne: म्यानमार
+ nl: Myanmar
+ nn: Myanmar
+ "no": Myanmar
+ oc: Birmania
+ or: ବର୍ମା
+ os: Мьянмæ
+ pa: ਮਿਆਂਮਾਰ
+ pl: Mjanma
+ ps: ميانمار
+ pt: Birmânia
+ qu: Myanmar
+ ro: Birmania
+ ru: Мьянма
+ rw: Mayanimari
+ sa: म्यान्मार
+ sc: Birmania
+ se: Myanmar
+ sh: Mianmar
+ si: බුරුමය
+ sk: Mjanmarsko
+ sl: Mjanmar
+ so: Myanmar
+ sq: Birmania
+ sr: Мјанмар
+ ss: IMayanima
+ su: Myanmar
+ sv: Myanmar
+ sw: Myanmar
+ ta: மியான்மர்
+ te: మయన్మార్
+ tg: Мянма
+ th: ประเทศพม่า
+ tk: Mýanma
+ tl: Myanmar
+ tr: Myanmar
+ tt: Мьянма
+ ug: بىرما
+ uk: М'янма
+ ur: میانمار
+ uz: Birma
+ vi: Myanma
+ vo: Mianmarän
+ wo: Miyanmaar
+ yi: מיאנמאר
+ yo: Myanmar
+ za: Mienjdien
+ zh: 缅甸
--- /dev/null
+name:
+ default: Монгол улс ᠮᠤᠩᠭᠤᠯ ᠤᠯᠤᠰ
+ af: Mongolië
+ am: ሞንጎልያ
+ an: Mongolia
+ ar: منغوليا
+ as: মঙ্গোলিয়া
+ az: Monqolustan
+ ba: Монголия
+ be: Манголія
+ bg: Монголия
+ bn: মঙ্গোলিয়া
+ bo: མོང་གོལ།
+ br: Mongolia
+ bs: Mongolija
+ ca: Mongòlia
+ ce: Монголи
+ cs: Mongolsko
+ cu: Мѫголи
+ cv: Монголи
+ cy: Mongolia
+ da: Mongoliet
+ de: Mongolei
+ dv: މޮންގޯލިއާ
+ dz: སོག་པོ་
+ ee: Mongolia
+ el: Μογγολία
+ en: Mongolia
+ eo: Mongolio
+ es: Mongolia
+ et: Mongoolia
+ eu: Mongolia
+ fa: مغولستان
+ fi: Mongolia
+ fo: Mongolia
+ fr: Mongolie
+ fy: Mongoalje
+ ga: An Mhongóil
+ gd: Mongòilia
+ gl: Mongolia
+ gn: Mongolia
+ gu: મંગોલિયા
+ gv: Yn Vongoil
+ he: מונגוליה
+ hi: मंगोलिया
+ hr: Mongolija
+ ht: Mongoli
+ hu: Mongólia
+ hy: Մոնղոլիա
+ ia: Mongolia
+ id: Mongolia
+ ie: Mongolia
+ io: Mongolia
+ is: Mongólía
+ it: Mongolia
+ ja: モンゴル国
+ jv: Mongolia
+ ka: მონღოლეთი
+ kk: Моңғолия
+ kl: Mongolia
+ km: ម៉ុងហ្គោលី
+ kn: ಮಂಗೋಲಿಯ
+ ko: 몽골
+ ku: Mongolya
+ kv: Монголия
+ kw: Mongoli
+ ky: Моңголстан
+ la: Mongolia
+ lb: Mongolei
+ li: Mongolië
+ ln: Mongolí
+ lt: Mongolija
+ lv: Mongolija
+ mi: Mongōria
+ mk: Монголија
+ ml: മംഗോളിയ
+ mn: Монгол улс ᠮᠤᠩᠭᠤᠯ ᠤᠯᠤᠰ
+ mo: Монголия
+ mr: मंगोलिया
+ ms: Mongolia
+ my: မွန်ဂိုးလီးယားနိုင်ငံ
+ na: Mongoriya
+ ne: मङ्गोलिया
+ nl: Mongolië
+ nn: Mongolia
+ "no": Mongolia
+ nv: Chʼah Diʼilii Bikéyah
+ oc: Mongolia
+ or: ମଙ୍ଗୋଲିଆ
+ os: Мангол
+ pa: ਮੰਗੋਲੀਆ
+ pl: Mongolia
+ ps: مغولستان
+ pt: Mongólia
+ qu: Mungul suyu
+ ro: Mongolia
+ ru: Монголия
+ rw: Mongoliya
+ sa: मंगोलिया
+ se: Mongolia
+ sh: Mongolija
+ si: මොංගෝලියාව
+ sk: Mongolsko
+ sl: Mongolija
+ sm: Mogitolia
+ so: Mongolia
+ sq: Mongolia
+ sr: Монголија
+ ss: IMongoliya
+ su: Mongolia
+ sv: Mongoliet
+ sw: Mongolia
+ ta: மங்கோலியா
+ te: మంగోలియా
+ tg: Муғулистон
+ th: ประเทศมองโกเลีย
+ tk: Mongoliýa
+ tl: Monggolya
+ tr: Moğolistan
+ tt: Монголия
+ ug: موڭغۇلىيە
+ uk: Монголія
+ ur: منگولیا
+ uz: Moʻgʻuliston
+ vi: Mông Cổ
+ vo: Mongolän
+ wo: Mongoli
+ yi: מאנגאליי
+ yo: Mòngólíà
+ za: Mungzguj
+ zh: 蒙古国
--- /dev/null
+name:
+ default: Macao
--- /dev/null
+name:
+ default: Northern Mariana Islands
--- /dev/null
+name:
+ default: Martinique
+ ar: مارتينيك
+ be: Марцініка
+ br: Martinik
+ ca: Martinica
+ da: Martinique
+ el: Μαρτινίκα
+ en: Martinique
+ eo: Martiniko
+ es: Martinica
+ fa: مارتینیک
+ fi: Martinique
+ fr: Martinique
+ fy: Martinyk
+ he: מרטיניק
+ hr: Martinik
+ hu: Martinique
+ id: Martinik
+ is: Martinique
+ it: Martinica
+ la: Martinica
+ lt: Martinika
+ lv: Martinika
+ mn: Мартиник
+ pl: Martynika
+ ru: Мартиника
+ sv: Martinique
+ uk: Мартиніка
+ zh: 馬提尼克
--- /dev/null
+name:
+ default: موريتانيا
+ af: Mauritanië
+ am: ሞሪታኒያ
+ an: Mauritania
+ ar: موريتانيا
+ az: Mavritaniya
+ be: Маўрытанія
+ bg: Мавритания
+ bm: Moritani
+ bn: মৌরিতানিয়া
+ bo: མའུ་རི་ཏ་ནི་ཡ།
+ br: Maouritania
+ bs: Mauritanija
+ ca: Mauritània
+ ce: Мавритани
+ cs: Mauritánie
+ cv: Мавритани
+ cy: Mauritania
+ da: Mauretanien
+ de: Mauretanien
+ dv: މޮރިޓާނިއާ
+ ee: Mauritania
+ el: Μαυριτανία
+ en: Mauritania
+ eo: Maŭritanio
+ es: Mauritania
+ et: Mauritaania
+ eu: Mauritania
+ fa: موریتانی
+ ff: Muritani
+ fi: Mauritania
+ fo: Móritania
+ fr: Mauritanie
+ fy: Mauritaanje
+ ga: An Mháratáin
+ gd: Moratainia
+ gl: Mauritania
+ gv: Yn Varitaan
+ ha: Muritaniya
+ he: מאוריטניה
+ hi: मॉरीतानिया
+ hr: Mauretanija
+ ht: Moritani
+ hu: Mauritánia
+ hy: Մավրիտանիա
+ ia: Mauritania
+ id: Mauritania
+ ie: Mauritania
+ io: Mauritania
+ is: Máritanía
+ it: Mauritania
+ ja: モーリタニア
+ jv: Mauritania
+ ka: მავრიტანია
+ kg: Muritania
+ kk: Мавритания
+ kn: ಮಾರಿಟಾನಿಯ
+ ko: 모리타니
+ ku: Morîtanya
+ kw: Moritani
+ la: Mauritania
+ lb: Mauretanien
+ li: Mauritanië
+ ln: Moritani
+ lt: Mauritanija
+ lv: Mauritānija
+ mg: Maoritania
+ mi: Mauritānia
+ mk: Мавританија
+ ml: മൗറിത്താനിയ
+ mn: Мавритан
+ mr: मॉरिटानिया
+ ms: Mauritania
+ mt: Mawritanja
+ my: မော်ရီတေးနီးယားနိုင်ငံ
+ nl: Mauritanië
+ nn: Mauritania
+ "no": Mauritania
+ nv: Moowitéínya
+ oc: Mauritània
+ or: ମୋରିତାନିଆ
+ os: Мавритани
+ pa: ਮੌਰੀਤਾਨੀਆ
+ pl: Mauretania
+ ps: موریتاني
+ pt: Mauritânia
+ qu: Muritanya
+ ro: Mauritania
+ ru: Мавритания
+ rw: Moritaniya
+ sa: मारिटेनिया
+ sc: Mauritània
+ se: Mauritánia
+ sg: Moritanïi
+ sk: Mauritánia
+ sl: Mavretanija
+ sn: Mauritania
+ so: Mauritania
+ sq: Mauritania
+ sr: Мауританија
+ ss: IMolithaniya
+ st: Mauritania
+ su: Mauritania
+ sv: Mauretanien
+ sw: Mauritania
+ ta: மூரித்தானியா
+ te: మౌరిటానియ
+ tg: Мавритания
+ th: ประเทศมอริเตเนีย
+ ti: ሞሪታኒያ
+ tk: Mawritaniýa
+ tl: Mauritania
+ tr: Moritanya
+ ts: Maritana
+ tt: Мавритания
+ ug: ماۋرىتانىيە
+ uk: Мавританія
+ ur: موریتانیہ
+ uz: Mavritaniya
+ vi: Mauritanie
+ vo: Moritän
+ wa: Moritanreye
+ wo: Gànnaar
+ xh: Mauritania
+ yi: מאריטאניע
+ yo: Mauritáníà
+ zh: 毛里塔尼亚
+ zu: IMoritaniya
--- /dev/null
+name:
+ default: Montserrat
+ af: Montserrat
+ an: Isla de Montserrat
+ ar: مونتسرات
+ az: Montserrat
+ ba: Монтсеррат
+ be: Мантсерат
+ bg: Монсерат
+ br: Enez Montserrat
+ bs: Monserat
+ ca: Illa de Montserrat
+ cs: Montserrat
+ cy: Montserrat
+ da: Montserrat
+ de: Montserrat
+ dv: މޮންސެރާޓު
+ el: Μοντσερράτ
+ en: Montserrat
+ eo: Moncerato
+ es: Montserrat
+ et: Montserrat
+ eu: Montserrat
+ fa: مونتسرات
+ fi: Montserrat
+ fr: Montserrat
+ ga: Montsarat
+ gl: Illa Montserrat
+ he: מונטסראט
+ hi: मॉण्टसेराट
+ hr: Montserrat
+ ht: Montserrat
+ hu: Montserrat
+ hy: Մոնտսերատ
+ id: Montserrat
+ io: Montserrat
+ is: Montserrat
+ it: Montserrat
+ ja: モントセラト
+ jv: Montserrat
+ ka: მონსერატი
+ ko: 몬트세랫
+ kw: Montserrat
+ la: Montserrat
+ lb: Montserrat
+ li: Montserrat
+ lt: Montseratas
+ lv: Montserrata
+ mk: Монтсерат
+ mn: Монтсеррат
+ mr: माँटसेराट
+ ms: Montserrat
+ nl: Montserrat
+ nn: Montserrat
+ "no": Montserrat
+ oc: Montserrat
+ pa: ਮਾਂਟਸਰਾਤ
+ pl: Montserrat
+ pt: Montserrat
+ ro: Montserrat
+ ru: Монтсеррат
+ rw: Monserati
+ sh: Montserrat
+ sk: Montserrat
+ sl: Montserrat
+ sq: Montserrati
+ sr: Монтсерат
+ su: Montserrat
+ sv: Montserrat
+ ta: மொன்செராட்
+ th: มอนต์เซอร์รัต
+ tl: Montserrat
+ tr: Montserrat
+ ug: مونتسەررات
+ uk: Монтсеррат
+ ur: مانٹسریٹ
+ vi: Montserrat
+ wo: Montserrat
+ yo: Montserrat
+ zh: 蒙塞拉特島
--- /dev/null
+name:
+ default: Malta
+ ak: Mɔlta
+ am: ማልታ
+ ar: مالطا
+ be: Мальта
+ bg: Малта
+ bm: Malti
+ bn: মাল্টা
+ bo: མལ་ཊ།
+ br: Malta
+ ca: Malta
+ cs: Malta
+ de: Malta
+ dz: མཱལ་ཊ
+ ee: Malta nutome
+ el: Μάλτα
+ en: Malta
+ eo: Malto
+ es: Malta
+ fa: مالت
+ ff: Malte
+ fi: Malta
+ fr: Malte
+ ga: Málta
+ gu: માલ્ટા
+ gv: Yn Valta
+ he: מלטה
+ hi: माल्टा
+ hr: Malta
+ hu: Málta
+ hy: Մալթա
+ ia: Malta
+ io: Malta
+ is: Malta
+ it: Malta
+ ja: マルタ
+ ka: მალტა
+ km: ម៉ាល់តា
+ kn: ಮಾಲ್ಟಾ
+ ko: 몰타
+ ks: مالٹا
+ ku: Malta
+ la: Melita
+ lg: Malita
+ ln: Malitɛ
+ lo: ມັນຕາ
+ lv: Malta
+ mk: Малта
+ ml: മാൾട്ട
+ mn: Мальта
+ mr: माल्टा
+ ne: माल्टा
+ "no": Malta
+ or: ମାଲ୍ଟା
+ pl: Malta
+ rn: Malita
+ ru: Мальта
+ se: Malta
+ sg: Mâlta
+ si: මෝල්ටාව
+ sk: Malta
+ so: Maalda
+ sq: Maltë
+ sr: Малта
+ sv: Malta
+ ta: மால்டா
+ te: మాల్టా
+ tg: Малта
+ th: ประเทศมอลตา
+ ti: ማልታ
+ to: Malita
+ uk: Мальта
+ ur: مالٹا
+ vi: Malta
+ vo: Malteän
+ yo: Orílẹ́ède Malata
+ zh: 马尔他
+ zu: i-Malta
--- /dev/null
+name:
+ default: Mauritius
+ af: Mauritius
+ am: ሞሪሸስ
+ an: Mauricio
+ ar: موريشيوس
+ az: Mavriki
+ be: Маўрыкій
+ bg: Мавриций
+ bn: মরিশাস
+ bo: མའུ་རི་ཊིའུ་སུ།
+ br: Maoris
+ bs: Mauricijus
+ ca: Maurici
+ cs: Mauricius
+ cv: Маврики
+ da: Mauritius
+ de: Mauritius
+ dv: މޮރިޝަސް
+ el: Μαυρίκιος
+ en: Mauritius
+ eo: Maŭricio
+ es: Mauricio
+ eu: Maurizio
+ fa: موریس
+ fi: Mauritius
+ fo: Móritius
+ fr: Maurice
+ fy: Mauritsius
+ ga: Oileán Mhuirís
+ gd: Na h-Eileanan Mhoiriseas
+ gl: Mauricio - Maurice
+ gv: Ellan Wirrish
+ he: מאוריציוס
+ hi: मॉरिशस
+ hr: Mauricijus
+ ht: Moris
+ hu: Mauritius
+ hy: Մավրիկիոս
+ ia: Mauritio
+ io: Maurico
+ is: Máritíus
+ ja: モーリシャス
+ ka: მავრიკი
+ kk: Маврикий
+ kn: ಮಾರಿಷಸ್
+ ko: 모리셔스
+ ku: Maurîtius
+ kw: Ynys Morrys
+ la: Mauritia
+ ln: Morisi
+ lt: Mauricijus
+ lv: Maurīcija
+ mg: Maorisy
+ mk: Маврициус
+ ml: മൗറീഷ്യസ്
+ mn: Маврикий
+ mr: मॉरिशस
+ mt: Mawrizji
+ my: မောရစ်ရှနိုင်ငံ
+ ne: मौरिसस
+ nl: Mauritius
+ oc: Maurici
+ or: ମରିସସ
+ os: Маврикий
+ pa: ਮਾਰੀਸ਼ਸ
+ pl: Mauritius
+ ps: ماوریتوس
+ pt: Maurícia
+ qu: Mawrisyu
+ ru: Маврикий
+ rw: Morise
+ sa: मारिषस्
+ sc: Mauritzius
+ se: Mauritius
+ sg: Mörîsi
+ si: මුරුසි සමුහාණ්ඩුව
+ sk: Maurícius
+ sl: Mavricij
+ sq: Mauritiusi
+ sr: Маурицијус
+ ss: IMorishiyasi
+ sv: Mauritius
+ sw: Morisi
+ ta: மொரிசியசு
+ te: మారిషస్
+ tg: Маврикия
+ th: ประเทศมอริเชียส
+ tk: Mawrikiý
+ tl: Maurisyo
+ tt: Маврикий
+ ug: ماۋرىتىئۇس
+ uk: Маврикій
+ ur: موریشس
+ uz: Mavritsiya
+ vo: Moriseän
+ wo: Móoris
+ yo: Mọ́rísì
+ zh: 毛里求斯
+ zu: IMorishisi
--- /dev/null
+name:
+ default: ދިވެހިރާއްޖެ
+ af: Maldive
+ am: ማልዲቭስ
+ ar: ملديف
+ az: Maldiv
+ be: Мальдывы
+ bg: Малдиви
+ bm: Maldivi
+ bn: মালদ্বীপ
+ bo: མལ་དྭིབ།
+ br: Maldivez
+ bs: Maldivi
+ ca: Maldives
+ cs: Maledivy
+ da: Maldiverne
+ de: Malediven
+ dv: ދިވެހިރާއްޖެ
+ dz: མཱལ་དིབས
+ ee: maldivesdukɔ
+ el: Μαλδίβες
+ en: Maldives
+ eo: Maldivoj
+ es: Maldivas
+ et: Maldiivid
+ eu: Maldivak
+ fa: مالدیو
+ ff: Maldiiwe
+ fi: Malediivit
+ fo: Maldivuoyggjarnar
+ fr: Maldives
+ fy: de Maldiven
+ ga: Oileáin Mhaildíve
+ gd: Na h-Eileanan Mhaladaibh
+ gl: Maldivas
+ gu: માલદિવ્સ
+ gv: Ny Maldeevaghyn
+ ha: Maldibi
+ he: מלדיבים
+ hi: मालदीव
+ hr: Maldivi
+ hu: Maldív-szigetek
+ hy: Մալդիվներ
+ id: Maladewa
+ ig: Maldivesa
+ io: Maldivi
+ is: Maldíveyjar
+ it: Maldive
+ ka: მალდივის კუნძულები
+ ki: Modivu
+ km: ម៉ាល់ឌីវ
+ kn: ಮಾಲ್ಡಿವ್ಸ್
+ ks: مالدیٖو
+ ku: Maldîv
+ la: Insulae Maldivae
+ lb: Malediven
+ lg: Bizinga by'eMalidive
+ ln: Madívɛ
+ lo: ມັນດິຟ
+ lt: Maldyvai
+ lv: Maldīvija
+ mg: Maldiva
+ mk: Малдиви
+ ml: മാലിദ്വീപ്
+ mn: Мальдив
+ mr: मालदीव्ज
+ ms: Maldiv
+ my: မော်လဒိုက်
+ ne: माल्दिभ्स
+ nl: Malediven
+ nn: Maldivane
+ "no": Maldivene
+ or: ମାଳଦ୍ବୀପ
+ pl: Malediwy
+ pt: Maldivas
+ rm: Maldivas
+ rn: Moludave
+ ro: Maldive
+ ru: Мальдивы
+ se: Malediivvat
+ sg: Maldîva
+ si: මාල දිවයින
+ sk: Maledivy
+ sl: Maldivi
+ so: Maaldiqeen
+ sq: Maldivit
+ sr: Малдиви
+ sv: Maldiverna
+ sw: Modivu
+ ta: மாலத்தீவு
+ te: మాల్దీవులు
+ th: ประเทศมัลดีฟส์
+ ti: ማልዲቭስ
+ to: Malativisi
+ tr: Maldivler
+ tt: Мальдивлар
+ uk: Мальдіви
+ ur: مالدیو
+ vo: Maldivuäns
+ yo: Orílẹ́ède Maladifi
+ zh: 马尔代夫/馬爾地夫
+ zu: i-Maldives
--- /dev/null
+name:
+ default: Malawi
+ af: Malawi
+ am: ማላዊ
+ an: Malawi
+ ar: مالاوي
+ az: Malavi
+ ba: Малави
+ be: Малаві
+ bg: Малави
+ bm: Malawi
+ bn: মালাউই
+ bo: མ་ལ་ཝི།
+ br: Malawi
+ bs: Malavi
+ ca: Malawi
+ ce: Малави
+ cs: Malawi
+ cv: Малави
+ cy: Malawi
+ da: Malawi
+ de: Malawi
+ dv: މަލާވީ
+ ee: Malawi
+ el: Μαλάουι
+ en: Malawi
+ eo: Malavio
+ es: Malaui
+ et: Malawi
+ eu: Malawi
+ fa: مالاوی
+ fi: Malawi
+ fo: Malavi
+ fr: Malawi
+ fy: Malawy
+ ga: An Mhaláiv
+ gd: Malabhaidh
+ gl: Malaui - Malawi
+ gv: Malawi
+ he: מלאווי
+ hi: मलावी
+ hr: Malavi
+ ht: Malawi
+ hu: Malawi
+ hy: Մալավի
+ ia: Malawi
+ id: Malawi
+ ie: Malawi
+ io: Malawi
+ is: Malaví
+ it: Malawi
+ ja: マラウイ
+ jv: Malawi
+ ka: მალავი
+ kg: Malawi
+ ki: Malawi
+ kk: Малави
+ kn: ಮಲಾವಿ
+ ko: 말라위
+ ku: Malavî
+ kw: Malawi
+ la: Malavium
+ lb: Malawi
+ li: Malawi
+ ln: Malawi
+ lt: Malavis
+ lv: Malāvija
+ mg: Malawi
+ mi: Marāwi
+ mk: Малави
+ ml: മലാവി
+ mn: Малави
+ mr: मलावी
+ ms: Malawi
+ mt: Malawi
+ my: မာလဝီနိုင်ငံ
+ nl: Malawi
+ nn: Malawi
+ "no": Malawi
+ nv: Malááwii
+ ny: Malaŵi
+ oc: Malawi
+ os: Малави
+ pa: ਮਲਾਵੀ
+ pl: Malawi
+ ps: مالاوي
+ pt: Malawi
+ qu: Malawi
+ ro: Malawi
+ ru: Малави
+ rw: Malawi
+ sa: मलावी
+ sc: Malawi
+ se: Malawi
+ sg: Malawïi
+ sh: Malavi
+ sk: Malawi
+ sl: Malavi
+ sn: Malawi
+ so: Malaawi
+ sq: Malavi
+ sr: Малави
+ ss: IMalawi
+ su: Malawi
+ sv: Malawi
+ sw: Malawi
+ ta: மலாவி
+ tg: Малави
+ th: ประเทศมาลาวี
+ ti: ማላዊ
+ tk: Malawi
+ tl: Malawi
+ tr: Malavi
+ ts: Malawi
+ ug: مالاۋى
+ uk: Малаві
+ ur: ملاوی
+ uz: Malavi
+ vi: Malawi
+ vo: Malaviyän
+ wo: Malawi
+ yi: מאלאווי
+ yo: Màláwì
+ zh: 马拉维
+ zu: IMalawi
--- /dev/null
+name:
+ default: México
+ af: Meksiko
+ am: ሜክሲኮ
+ an: Mexico
+ ar: المكسيك
+ ay: Mïxiku
+ az: Meksika
+ ba: Мексика
+ be: Мексіка
+ bg: Мексико
+ bi: Mexico
+ bm: Mɛkisiki
+ bn: মেক্সিকো
+ bo: མེག་སི་ཀོ།
+ br: Mec'hiko
+ bs: Meksiko
+ ca: Mèxic
+ ce: Мексика
+ co: Messicu
+ cs: Mexiko
+ cv: Мексика
+ cy: Mexico
+ da: Mexico
+ de: Mexiko
+ dv: މެކްސިކޯ
+ dz: མེཀ་སི་ཀོ
+ ee: Mexico
+ el: Μεξικό
+ en: Mexico
+ eo: Meksiko
+ es: México
+ et: Mehhiko
+ eu: Mexiko
+ fa: مکزیک
+ fi: Meksiko
+ fo: Meksiko
+ fr: Mexique
+ fy: Meksiko
+ ga: Meicsiceo
+ gd: Meagsago
+ gl: México
+ gn: Méjiko
+ gu: મેક્સિકો
+ gv: Meksico
+ he: מקסיקו
+ hi: मेक्सिको
+ hr: Meksiko
+ ht: Meksik
+ hu: Mexikó
+ hy: Մեքսիկա
+ ia: Mexico
+ id: Meksiko
+ ik: Mexiqo
+ io: Mexikia
+ is: Mexíkó
+ it: Messico
+ iu: ᒦᒃᓰᖂ
+ ja: メキシコ
+ jv: Mèksiko
+ ka: მექსიკა
+ kk: Мексика
+ kl: Mexico
+ km: ម៉ិកស៊ិក
+ kn: ಮೆಕ್ಸಿಕೋ
+ ko: 멕시코
+ ku: Meksîk
+ kv: Мексика
+ kw: Meksiko
+ ky: Мексика
+ la: Mexicum
+ lb: Mexiko
+ li: Mexico
+ ln: Mexiko
+ lt: Meksika
+ lv: Meksika
+ mg: Meksika
+ mi: Mēhiko
+ mk: Мексико
+ ml: മെക്സിക്കോ
+ mn: Мексик
+ mr: मेक्सिको
+ ms: Mexico
+ mt: Messiku
+ my: မက္ကဆီကိုနိုင်ငံ
+ na: Meketiko
+ ne: मेक्सिको
+ nl: Mexico
+ nn: Mexico
+ "no": Mexico
+ nv: Méhigo
+ oc: Mexic
+ or: ମେକ୍ସିକୋ
+ os: Мексикæ
+ pa: ਮੈਕਸੀਕੋ
+ pl: Meksyk
+ pt: México
+ qu: Mishiku
+ rm: Mexico
+ ro: Mexic
+ ru: Мексика
+ rw: Megizike
+ sc: Mèssico
+ se: Meksiko
+ sh: Meksiko
+ sk: Mexiko
+ sl: Mehika
+ sm: Mexico
+ sn: Mexico
+ so: Meksiko
+ sq: Meksika
+ sr: Мексико
+ ss: IMekisikho
+ su: Méksiko
+ sv: Mexico
+ sw: Mexiko
+ ta: மெக்சிக்கோ
+ te: మెక్సికో
+ tg: Мексика
+ th: ประเทศเม็กซิโก
+ tk: Meksika
+ tl: Mehiko
+ tr: Meksika
+ tt: Мексика
+ tw: Mexico
+ ug: مېكسىكا
+ uk: Мексика
+ ur: میکسیکو
+ uz: Meksika
+ vi: México
+ vo: Mäxikän
+ wo: Meksik
+ yi: מעקסיקא
+ yo: Mẹ́ksíkò
+ zh: 墨西哥
+ zu: IMekisiko
--- /dev/null
+name:
+ default: Malaysia
+ af: Maleisië
+ am: ማሌዢያ
+ an: Malaisia
+ ar: ماليزيا
+ az: Malayziya
+ ba: Малайзия
+ be: Малайзія
+ bg: Малайзия
+ bn: মালয়েশিয়া
+ bo: མ་ལ་ཤི་ཡ།
+ br: Malaysia
+ bs: Malezija
+ ca: Malàisia
+ ce: Малайзи
+ cs: Malajsie
+ cv: Малайзи
+ cy: Malaysia
+ da: Malaysia
+ de: Malaysia
+ dv: މެލޭޝިޔާ
+ dz: མ་ལེ་ཤི་ཡ་
+ el: Μαλαισία
+ en: Malaysia
+ eo: Malajzio
+ es: Malasia
+ et: Malaisia
+ eu: Malaysia
+ fa: مالزی
+ fi: Malesia
+ fo: Maleisia
+ fr: Malaisie
+ fy: Maleizje
+ ga: An Mhalaeisia
+ gd: Malaidhsia
+ gl: Malaisia
+ gu: મલેશિયા
+ gv: Yn Valaysia
+ he: מלזיה
+ hi: मलेशिया
+ hr: Malezija
+ ht: Malezi
+ hu: Malajzia
+ hy: Մալազիա
+ ia: Malaysia
+ id: Malaysia
+ ie: Malaysia
+ io: Malaizia
+ is: Malasía
+ it: Malesia
+ ja: マレーシア
+ jv: Malaysia
+ ka: მალაიზია
+ ki: Malaysia
+ kk: Малайзия
+ km: ម៉ាឡេស៊ី
+ kn: ಮಲೇಶಿಯ
+ ko: 말레이시아
+ ku: Malezya
+ kv: Малайзия
+ kw: Malaysi
+ ky: Малайзия
+ la: Malaesia
+ lb: Malaysia
+ li: Maleisië
+ lo: ປະເທດມາເລເຊຍ
+ lt: Malaizija
+ lv: Malaizija
+ mi: Marēhia
+ mk: Малезија
+ ml: മലേഷ്യ
+ mn: Малайз
+ mr: मलेशिया
+ ms: Maleisië
+ mt: Malażja
+ my: မလေးရှားနိုင်ငံ
+ na: Maraidja
+ ne: मलेशिया
+ nl: Maleisië
+ nn: Malaysia
+ "no": Malaysia
+ nv: Maléízha
+ oc: Malàisia
+ or: ମାଲେସିଆ
+ os: Малайзи
+ pa: ਮਲੇਸ਼ੀਆ
+ pl: Malezja
+ pt: Malásia
+ qu: Malasya
+ ro: Malaezia
+ ru: Малайзия
+ rw: Malesiya
+ sa: मलयेशिया
+ se: Malesia
+ sg: Malezïi
+ sh: Malezija
+ sk: Malajzia
+ sl: Malezija
+ so: Malaysiya
+ sq: Malajzia
+ sr: Малезија
+ ss: IMaleshiya
+ su: Malaysia
+ sv: Malaysia
+ sw: Malaysia
+ ta: மலேசியா
+ te: మలేషియా
+ tg: Малайзия
+ th: ประเทศมาเลเซีย
+ tk: Malaýziýa
+ tl: Malasya
+ tr: Malezya
+ tt: Малайзия
+ tw: Malaysia
+ ug: مالايسىيا
+ uk: Малайзія
+ ur: ملائیشیا
+ uz: Malayziya
+ vi: Malaysia
+ vo: Malaysiyän
+ wo: Maleesi
+ yi: מאלייזיע
+ yo: Malaysia
+ za: Majlaizsihya
+ zh: 马来西亚
--- /dev/null
+name:
+ default: Moçambique
+ af: Mosambiek
+ am: ሞዛምቢክ
+ an: Mozambique
+ ar: موزمبيق
+ az: Mozambik
+ ba: Мозамбик
+ be: Мазамбік
+ bg: Мозамбик
+ bm: Mozanbik
+ bn: মোজাম্বিক
+ bo: མོ་ཛམ་བིཀ།
+ br: Mozambik
+ bs: Mozambik
+ ca: Moçambic
+ ce: Мозамбик
+ co: Mozambicu
+ cs: Mosambik
+ cv: Мозамбик
+ cy: Mosambic
+ da: Mozambique
+ de: Mosambik
+ dv: މުސިންބީ
+ el: Μοζαμβίκη
+ en: Mozambique
+ eo: Mozambiko
+ es: Mozambique
+ et: Mosambiik
+ eu: Mozambike
+ fa: موزامبیک
+ fi: Mosambik
+ fo: Mosambik
+ fr: Mozambique
+ fy: Mozambyk
+ ga: Poblacht Mhósaimbíc
+ gd: Mòsaimbic
+ gl: Mozambique
+ gn: Mosambike
+ gv: Yn Vosambeeck
+ he: מוזמביק
+ hi: मोज़ाम्बीक
+ hr: Mozambik
+ ht: Mozanbik
+ hu: Mozambik
+ hy: Մոզամբիկ
+ ia: Mozambique
+ id: Mozambik
+ ie: Mozambique
+ io: Mozambik
+ is: Mósambík
+ it: Mozambico
+ ja: モザンビーク
+ jv: Mozambik
+ ka: მოზამბიკი
+ kg: Musambiki
+ kk: Мозамбик
+ kn: ಮೊಜಾಂಬಿಕ್
+ ko: 모잠비크
+ ku: Mozambîk
+ kw: Mosambik
+ la: Mozambicum
+ lb: Mosambik
+ li: Mozambique
+ ln: Mozambíki
+ lt: Mozambikas
+ lv: Mozambika
+ mg: Mozambika
+ mi: Mohapiki
+ mk: Мозамбик
+ ml: മൊസാംബിക്ക്
+ mn: Мозамбик
+ mr: मोझांबिक
+ ms: Mozambique
+ mt: Możambik
+ my: မိုဇမ်ဘစ်နိုင်ငံ
+ nl: Mozambique
+ nn: Mosambik
+ "no": Mosambik
+ ny: Mozambique
+ oc: Moçambic
+ or: ମୋଜାମ୍ବିକ
+ os: Мозамбик
+ pa: ਮੋਜ਼ੈਂਬੀਕ
+ pl: Mozambik
+ ps: موزمبيق
+ pt: Moçambique
+ qu: Musambik
+ ro: Mozambic
+ ru: Мозамбик
+ rw: Mozambike
+ sa: मोजम्बीक
+ sc: Mozambico
+ se: Mosambik
+ sg: Mözämbîka
+ sh: Mozambik
+ sk: Mozambik
+ sl: Mozambik
+ sn: Mozambique
+ so: Musanbiig
+ sq: Mozambiku
+ sr: Мозамбик
+ ss: IMozambikhi
+ su: Mosambik
+ sv: Moçambique
+ sw: Msumbiji
+ ta: மொசாம்பிக்
+ tg: Мозамбик
+ th: ประเทศโมซัมบิก
+ ti: ሞዛምቢክ
+ tk: Mozambik
+ tl: Musambik
+ tr: Mozambik
+ ts: Mozambique
+ ug: موزامبىك
+ uk: Мозамбік
+ ur: موزمبیق
+ uz: Mozambik
+ ve: Mozambikwi
+ vi: Mozambique
+ vo: Mozambikän
+ wo: Mosambik
+ yi: מאזאמביק
+ yo: Mòsámbìk
+ zh: 莫桑比克
+ zu: IMozambiki
--- /dev/null
+name:
+ default: Namibia
+ af: Namibië
+ am: ናሚቢያ
+ an: Namibia
+ ar: ناميبيا
+ az: Namibiya
+ ba: Намибия
+ be: Намібія
+ bg: Намибия
+ bm: Namibia
+ bn: নামিবিয়া
+ bo: ན་མི་བྷི་ཡ།
+ br: Namibia
+ bs: Namibija
+ ca: Namíbia
+ ce: Намиби
+ cs: Namibie
+ cv: Намиби
+ cy: Namibia
+ da: Namibia
+ de: Namibia
+ el: Ναμίμπια
+ en: Namibia
+ eo: Namibio
+ es: Namibia
+ et: Namiibia
+ eu: Namibia
+ fa: نامیبیا
+ fi: Namibia
+ fo: Namibia
+ fr: Namibie
+ fy: Namybje
+ ga: An Namaib
+ gd: Naimibia
+ gl: Namibia
+ gv: Yn Nameeb
+ he: נמיביה
+ hi: नामीबिया
+ hr: Namibija
+ ht: Namibi
+ hu: Namíbia
+ hy: Նամիբիա
+ ia: Namibia
+ id: Namibia
+ ie: Namibia
+ io: Namibia
+ is: Namibía
+ it: Namibia
+ ja: ナミビア
+ jv: Namibia
+ ka: ნამიბია
+ kg: Namibia
+ ki: Namibia
+ kk: Намибия
+ kn: ನಮೀಬಿಯ
+ ko: 나미비아
+ ku: Namîbya
+ kw: Namibi
+ la: Namibia
+ lb: Namibien
+ li: Namibië
+ ln: Namibia
+ lt: Namibija
+ lv: Namībija
+ mg: Namibia
+ mi: Namīpia
+ mk: Намибија
+ ml: നമീബിയ
+ mn: Намиби
+ mr: नामिबिया
+ ms: Namibia
+ mt: Namibja
+ my: နမီးဘီးယားနိုင်ငံ
+ nl: Namibië
+ nn: Namibia
+ "no": Namibia
+ nv: Namííbya
+ oc: Namibia
+ or: ନାମିବିଆ
+ os: Намиби
+ pa: ਨਮੀਬੀਆ
+ pl: Namibia
+ ps: نېمبیا
+ pt: Namíbia
+ qu: Namiwya
+ rm: Namibia
+ ro: Namibia
+ ru: Намибия
+ rw: Namibiya
+ sa: नमीबिया
+ sc: Namìbia
+ se: Namibia
+ sg: Namibùii
+ sh: Namibija
+ sk: Namíbia
+ sl: Namibija
+ sn: Namibia
+ so: Nambiya
+ sq: Namibia
+ sr: Намибија
+ ss: INamibiya
+ st: Namibia
+ su: Namibia
+ sv: Namibia
+ sw: Namibia
+ ta: நமீபியா
+ te: నమీబియా
+ tg: Намибия
+ th: ประเทศนามิเบีย
+ ti: ናሚቢያ
+ tk: Namibiýa
+ tl: Namibya
+ tn: Namibia
+ tr: Namibya
+ ts: Namibia
+ tt: Намибия
+ ug: نامىبىيە
+ uk: Намібія
+ ur: نمیبیا
+ uz: Namibiya
+ ve: Namibia
+ vi: Namibia
+ vo: Namibiyän
+ wo: Namibi
+ yi: נאמיביע
+ yo: Nàmíbíà
+ zh: 纳米比亚
+ zu: INamibhiya
--- /dev/null
+name:
+ default: Nouvelle-Calédonie
+ af: Nieu-Caledonia
+ ar: كاليدونيا الجديدة
+ be: Новая Каледонія
+ br: Kaledonia Nevez
+ ca: Nova Caledònia
+ cy: Caledonia Newydd
+ da: Ny Kaledonien
+ de: Neukaledonien
+ el: Νέα Καληδονία
+ en: New Caledonia
+ eo: Nov-Kaledonio
+ es: Nueva Caledonia
+ fa: کالدونیای جدید
+ fi: Uusi-Kaledonia
+ fr: Nouvelle-Calédonie
+ ga: An Nua-Chaladóin
+ he: קלדוניה החדשה
+ hr: Nova Kaledonija
+ hu: Új-Kaledónia
+ id: Kaledonia Baru
+ is: Nýja-Kaledónía
+ it: Nuova Caledonia
+ la: Nova Caledonia
+ lt: Naujoji Kaledonija
+ lv: Jaunkaledonija
+ mn: Шинэ Каледони
+ nl: Nieuw-Caledonië
+ pl: Nowa Kaledonia
+ ru: Новая Каледония
+ sl: Nova Kaledonija
+ sv: Nya Kaledonien
+ th: นิวแคลิโดเนีย
+ tr: Yeni Kaledonya
+ uk: Нова Каледонія
+ zh: 新喀里多尼亚
--- /dev/null
+name:
+ default: Niger
+ af: Niger
+ am: ኒጄር
+ an: Nícher
+ ar: النيجر
+ az: Niger
+ ba: Нигер
+ be: Нігер
+ bg: Нигер
+ bm: Nijer
+ bn: নাইজার
+ bo: ནི་ཇར།
+ br: Niger
+ bs: Niger
+ ca: Níger
+ ce: Нигер
+ cs: Niger
+ cy: Niger
+ da: Niger
+ de: Niger
+ dv: ނީޖަރު
+ ee: Niger
+ el: Νίγηρας
+ en: Niger
+ eo: Niĝero
+ es: Níger
+ et: Niger
+ eu: Niger
+ fa: نیجر
+ fi: Niger
+ fo: Niger
+ fr: Niger
+ fy: Niger
+ ga: An Nígir
+ gd: Nìgeir
+ gl: Níxer
+ gu: નાઈજર
+ gv: Yn Neegeyr
+ ha: Nijar
+ he: ניז'ר
+ hi: नाइजर
+ hr: Niger
+ ht: Nijè
+ hu: Niger
+ hy: Նիգեր
+ ia: Niger
+ id: Niger
+ ie: Niger
+ ig: Niger
+ io: Nijer
+ is: Níger
+ it: Niger
+ ja: ニジェール
+ jv: Niger
+ ka: ნიგერი
+ kg: Nijer
+ kk: Нигер
+ ko: 니제르
+ ku: Nîjer
+ kw: Pow Nijer
+ la: Niger
+ lb: Niger
+ li: Niger
+ ln: Nizer
+ lt: Nigeris
+ lv: Nigēra
+ mi: Ngāika
+ mk: Нигер
+ ml: നീഷർ
+ mn: Нигер
+ mr: नायजर
+ ms: Niger
+ mt: Niġer
+ my: နိုင်ဂျာနိုင်ငံ
+ nl: Niger
+ nn: Niger
+ "no": Niger
+ oc: Nigèr
+ or: ନାଇଜର
+ os: Нигер
+ pa: ਨਾਈਜਰ
+ pl: Niger
+ ps: نایجېر
+ pt: Níger
+ qu: Niqir
+ ro: Niger
+ ru: Нигер
+ rw: Nigeri
+ sa: नीजे
+ sc: Nixèr
+ se: Niger
+ sg: Nizëre
+ sh: Niger
+ si: නයිජර්
+ sk: Niger
+ sl: Niger
+ sn: Niger
+ so: Nayjar
+ sq: Nigeri
+ sr: Нигер
+ ss: INayijari
+ su: Niger
+ sv: Niger
+ sw: Niger
+ ta: நைஜர்
+ te: నైజర్
+ tg: Ниҷер
+ th: ประเทศไนเจอร์
+ ti: ናይጀር
+ tk: Niger
+ tl: Niyer
+ tr: Nijer
+ ts: Niger
+ ug: نىگېر
+ uk: Нігер
+ ur: نائجر
+ uz: Niger
+ vi: Niger
+ vo: Nigerän
+ wo: Niseer
+ yi: ניזשער
+ yo: Nìjẹ̀r
+ zh: 尼日尔
+ zu: INayighe
--- /dev/null
+name:
+ default: Norfolk Island
+ af: Norfolkeiland
+ ar: جزيرة نورفولك
+ be: Норфалк
+ br: Enez Norfolk
+ ca: Illa Norfolk
+ cy: Ynys Norfolk
+ da: Norfolk-øen
+ de: Norfolkinsel
+ en: Norfolk Island
+ eo: Norfolkinsulo
+ es: Isla Norfolk
+ et: Norfolki saar
+ fi: Norfolkinsaari
+ fr: Île Norfolk
+ fy: Norfolk
+ ga: Oileán Norfolk
+ he: האי נורפוק
+ hr: Otok Norfolk
+ hu: Norfolk-sziget
+ id: Pulau Norfolk
+ is: Norfolkeyja
+ it: Isola Norfolk
+ la: Insula Norfolcia
+ lt: Norfolko sala
+ lv: Norfolkas sala
+ mn: Норфолк Арал
+ nl: Norfolk
+ pl: Wyspa Norfolk
+ ru: Остров Норфолк
+ sv: Norfolkön
+ tr: Norfolk Adası
+ uk: Острів Норфолк
+ vi: Đảo Norfolk
+ zh: 诺福克岛
--- /dev/null
+name:
+ default: Nigeria
+ af: Nigerië
+ ak: Nigeria
+ am: ናይጄሪያ
+ an: Nicheria
+ ar: نيجيريا
+ az: Nigeriya
+ ba: Нигерия
+ be: Нігерыя
+ bg: Нигерия
+ bm: Nijeria
+ bn: নাইজেরিয়া
+ bo: ནི་ཇི་རི་ཡ།
+ br: Nigeria
+ bs: Nigerija
+ ca: Nigèria
+ ce: Нигери
+ cs: Nigérie
+ cv: Нигери
+ cy: Nigeria
+ da: Nigeria
+ de: Nigeria
+ dv: ނައިޖީރިއާ
+ ee: Nigeria
+ el: Νιγηρία
+ en: Nigeria
+ eo: Niĝerio
+ es: Nigeria
+ et: Nigeeria
+ eu: Nigeria
+ fa: نیجریه
+ ff: Niiseriya
+ fi: Nigeria
+ fo: Nigeria
+ fr: Nigéria
+ fy: Nigearia
+ ga: An Nigéir
+ gd: Nìgeiria
+ gl: Nixeria
+ gn: Niheria
+ gu: નાઈજેરિયા
+ gv: Yn Naigeer
+ ha: Nijeriya
+ he: ניגריה
+ hi: नाईजीरिया
+ hr: Nigerija
+ ht: Nijerya
+ hu: Nigéria
+ hy: Նիգերիա
+ ia: Nigeria
+ id: Nigeria
+ ie: Nigeria
+ ig: Naigeria
+ io: Nigeria
+ is: Nígería
+ it: Nigeria
+ ja: ナイジェリア
+ jv: Nigeria
+ ka: ნიგერია
+ kg: Nizeria
+ kk: Нигерия
+ kn: ನೈಜೀರಿಯ
+ ko: 나이지리아
+ ks: نایجیرِیا
+ ku: Nîjerya
+ kw: Nijeri
+ la: Nigeria
+ lb: Nigeria
+ li: Nigeria
+ ln: Nizeria
+ lt: Nigerija
+ lv: Nigērija
+ mg: Nizeria
+ mi: Ngāitiria
+ mk: Нигерија
+ ml: നൈജീരിയ
+ mn: Нигери
+ mr: नायजेरिया
+ ms: Nigeria
+ mt: Niġerja
+ my: နိုင်ဂျီးရီးယားနိုင်ငံ
+ ne: नाइजेरिया
+ nl: Nigeria
+ nn: Nigeria
+ "no": Nigeria
+ oc: Nigèria
+ or: ନାଇଜେରିଆ
+ os: Нигери
+ pa: ਨਾਈਜੀਰੀਆ
+ pl: Nigeria
+ ps: نايجېريا
+ pt: Nigéria
+ qu: Niqirya
+ ro: Nigeria
+ ru: Нигерия
+ rw: Nijeriya
+ sa: नैजीरिया
+ sc: Nigéria
+ se: Nigeria
+ sg: Nizerïa
+ sh: Nigerija
+ sk: Nigéria
+ sl: Nigerija
+ sn: Nigeria
+ so: Nayjeeriya
+ sq: Nigeria
+ sr: Нигерија
+ ss: INayijeriya
+ su: Nigeria
+ sv: Nigeria
+ sw: Nigeria
+ ta: நைஜீரியா
+ te: నైజీరియా
+ tg: Ниҷерия
+ th: ประเทศไนจีเรีย
+ ti: ናይጂሪያ
+ tk: Nigeriýa
+ tl: Nigerya
+ tr: Nijerya
+ ts: Nigeria
+ tt: Нигерия
+ ug: نىگېرىيە
+ uk: Нігерія
+ ur: نائجیریا
+ uz: Nigeriya
+ vi: Nigeria
+ vo: Nigeriyän
+ wa: Nidjeria
+ xh: INigeria
+ yi: ניגעריע
+ yo: Nàìjíríà
+ za: Nizywlihya
+ zh: 奈及利亞
+ zu: INigeria
--- /dev/null
+name:
+ default: Nicaragua
+ af: Nicaragua
+ am: ኒካራጓ
+ an: Nicaragua
+ ar: نيكاراجوا
+ ay: Nikarwa
+ az: Nikaraqua
+ ba: Никарагуа
+ be: Нікарагуа
+ bg: Никарагуа
+ bm: Nikaragwa
+ bn: নিকারাগুয়া
+ bo: ནི་ཀ་ར་གུ་ཝ།
+ br: Nicaragua
+ bs: Nikaragva
+ ca: Nicaragua
+ ce: Никарагуа
+ cs: Nikaragua
+ cy: Nicaragua
+ da: Nicaragua
+ de: Nicaragua
+ dv: ނިކަރާގުއާ
+ ee: Nicaragua
+ el: Νικαράγουα
+ en: Nicaragua
+ eo: Nikaragvo
+ es: Nicaragua
+ et: Nicaragua
+ eu: Nikaragua
+ fa: نیکاراگوئه
+ fi: Nicaragua
+ fo: Nikaragua
+ fr: Nicaragua
+ fy: Nikaragûa
+ ga: Nicearagua
+ gd: Niocaragua
+ gl: Nicaragua
+ gn: Nikaragua
+ gv: Yn Nickeraag
+ he: ניקרגואה
+ hi: निकारागुआ
+ hr: Nikaragva
+ ht: Nikaragwa
+ hu: Nicaragua
+ hy: Նիկարագուա
+ ia: Nicaragua
+ id: Nikaragua
+ ie: Nicaragua
+ io: Nikaragua
+ is: Níkaragva
+ it: Nicaragua
+ ja: ニカラグア
+ jv: Nikaragua
+ ka: ნიკარაგუა
+ kk: Никарагуа
+ ko: 니카라과
+ ku: Nîkaragua
+ kv: Никарагуа
+ kw: Nikaragwa
+ la: Nicaragua
+ lb: Nicaragua
+ li: Nicaragua
+ ln: Nikalagwa
+ lt: Nikaragva
+ lv: Nikaragva
+ mg: Nicaragua
+ mi: Nikarāhua
+ mk: Никарагва
+ ml: നിക്കരാഗ്വ
+ mn: Никарагуа
+ mr: निकाराग्वा
+ ms: Nicaragua
+ mt: Nikaragwa
+ my: နီကာရာဂွါနိုင်ငံ
+ ne: निकाराग्वा
+ nl: Nicaragua
+ nn: Nicaragua
+ "no": Nicaragua
+ oc: Nicaragua
+ or: ନିକାରାଗୁଆ
+ os: Никарагуæ
+ pa: ਨਿਕਾਰਾਗੁਆ
+ pl: Nikaragua
+ ps: نیکاراګوا
+ pt: Nicarágua
+ qu: Nikarawa
+ ro: Nicaragua
+ ru: Никарагуа
+ rw: Nikaragwa
+ sa: निकारगुवा
+ se: Nicaragua
+ sh: Nikaragva
+ sk: Nikaragua
+ sl: Nikaragva
+ so: Nikaragua
+ sq: Nikaraguaja
+ sr: Никарагва
+ ss: INikhalaga
+ su: Nikaragua
+ sv: Nicaragua
+ sw: Nikaragua
+ ta: நிக்கராகுவா
+ tg: Никарагуа
+ th: ประเทศนิการากัว
+ tl: Nicaragua
+ tr: Nikaragua
+ tt: Никарагуа
+ ug: نىكاراگۇئا
+ uk: Нікарагуа
+ ur: نکاراگوا
+ uz: Nikaragua
+ vi: Nicaragua
+ vo: Nikaraguvän
+ wo: Nikaraaguwa
+ yi: ניקאראגוא
+ yo: Nikarágúà
+ zh: 尼加拉瓜
+ zu: Nicaragua
--- /dev/null
+name:
+ default: Nederland
+ af: Nederland
+ am: ሆላንድ
+ an: Países Baixos
+ ar: هولندا
+ ay: Aynacha Jach'a Markanaka
+ az: Niderland
+ ba: Нидерландтар
+ be: Нідэрланды
+ bg: Нидерландия
+ bh: एम्सटर्डम
+ bi: Netherlands
+ bn: নেদারল্যান্ডস
+ bo: ཧོ་ལན།
+ br: Izelvroioù
+ bs: Holandija
+ ca: Països Baixos
+ ce: Нидерландаш
+ co: Paesi Bassi
+ cs: Nizozemsko
+ cu: Нидєрландꙑ
+ cv: Нидерландсем
+ cy: Yr Iseldiroedd
+ da: Holland
+ de: Niederlande
+ dv: ނެދަލޭންޑު
+ dz: ནེ་དར་ལེནཌསི་
+ ee: Netherlands
+ el: Κάτω Χώρες
+ en: Netherlands
+ eo: Nederlando
+ es: Países Bajos
+ et: Holland
+ eu: Herbehereak
+ fa: هلند
+ ff: Holannda
+ fi: Alankomaat
+ fo: Niðurlond
+ fr: Pays-Bas
+ fy: Nederlân
+ ga: An Ísiltír
+ gd: Na Tìrean Ìsle
+ gl: Países Baixos
+ gn: Tetãnguéra Yvýi
+ gu: નેધરલેંડ
+ gv: Yn Çheer Injil
+ he: הולנד
+ hi: नीदरलैण्ड
+ hr: Nizozemska
+ ht: Peyiba
+ hu: Hollandia
+ hy: Նիդերլանդներ
+ ia: Pais Basse
+ id: Belanda
+ ie: Nederland
+ io: Nederlando
+ is: Holland
+ it: Paesi Bassi
+ ja: オランダ
+ jv: Walanda
+ ka: ნიდერლანდი
+ kg: Pays-Bas
+ kk: Нидерланд
+ kl: Hollandi
+ kn: ನೆದರ್ಲ್ಯಾಂಡ್ಸ್
+ ko: 네덜란드
+ ks: नेदरलैंड्स
+ ku: Holenda
+ kv: Нидерландъяс
+ kw: Iseldiryow
+ ky: Нидерландтар
+ la: Nederlandia
+ lb: Holland
+ li: Nederland
+ ln: Holanda
+ lt: Nyderlandai
+ lv: Nīderlande
+ mi: Hōrana
+ mk: Холандија
+ ml: നെതർലന്റ്സ്
+ mn: Нидерланд
+ mr: नेदरलँड्स
+ ms: Belanda
+ mt: Pajjiżi l-Baxxi
+ my: နယ်သာလန်နိုင်ငံ
+ na: Eben Eyong
+ ne: नेदरल्याण्ड्स
+ nl: Nederland
+ nn: Nederland
+ "no": Nederland
+ nv: Tsin Bikeeʼ Dineʼé Bikéyah
+ oc: Païses Basses
+ os: Нидерландтæ
+ pa: ਨੀਦਰਲੈਂਡ
+ pl: Królestwo Niderlandów
+ ps: هالنډ
+ pt: Países Baixos
+ qu: Urasuyu
+ rm: Pajais Bass
+ ro: Țările de Jos
+ ru: Нидерланды
+ rw: Ubuholandi
+ sa: नेदरलैंड्स
+ sc: Logos Bascios
+ se: Vuolleeatnamat
+ sh: Holandija
+ si: නෙදර්ලන්තය
+ sk: Holandsko
+ sl: Nizozemska
+ so: Holland
+ sq: Holanda
+ sr: Холандија
+ ss: IDashi
+ st: Hôlanê
+ su: Walanda
+ sv: Nederländerna
+ sw: Uholanzi
+ ta: நெதர்லாந்து
+ te: నెదర్లాండ్
+ tg: Нидерланд
+ th: ประเทศเนเธอร์แลนด์
+ tk: Niderlandlar
+ tl: Olanda
+ to: Holani
+ tr: Hollanda
+ tt: Нидерландлар
+ ug: گوللاندىيە
+ uk: Нідерланди
+ ur: ہالینڈ
+ uz: Niderlandlar
+ vi: Hà Lan
+ vo: Nedän
+ wa: Bas Payis
+ wo: Olaand
+ xh: ENetherlands
+ yi: האלאנד
+ yo: Nẹ́dálándì
+ zh: 荷蘭
+ zu: Netherlands
--- /dev/null
+name:
+ default: Norge
+ af: Noorweë
+ am: ኖርዌይ
+ an: Noruega
+ ar: النرويج
+ ay: Nurweka
+ az: Norveç
+ ba: Норвегия
+ be: Нарвегія
+ bg: Норвегия
+ bi: Norway
+ bm: Norwij
+ bn: নরওয়ে
+ bo: ནོར་ཝེ།
+ br: Norvegia
+ bs: Norveška
+ ca: Noruega
+ ce: Норвеги
+ co: Nurvegia
+ cs: Norsko
+ cu: Норєгъ
+ cv: Норвеги
+ cy: Norwy
+ da: Norge
+ de: Norwegen
+ dv: ނޯވޭ
+ dz: ནོ་ཝེ་
+ ee: Norway
+ el: Νορβηγία
+ en: Norway
+ eo: Norvegio
+ es: Noruega
+ et: Norra
+ eu: Norvegia
+ fa: نروژ
+ fi: Norja
+ fo: Noregur
+ fr: Norvège
+ fy: Noarwegen
+ ga: An Iorua
+ gd: Nirribhidh
+ gl: Noruega
+ gn: Noruega
+ gu: નોર્વે
+ gv: Norlynn
+ he: נורבגיה
+ hi: नॉर्वे
+ hr: Norveška
+ ht: Nòvèj
+ hu: Norvégia
+ hy: Նորվեգիա
+ ia: Norvegia
+ id: Norwegia
+ ie: Norvegia
+ io: Norvegia
+ is: Noregur
+ it: Norvegia
+ iu: ᓄᕐᒋ
+ ja: ノルウェー
+ jv: Norwégia
+ ka: ნორვეგია
+ kg: Norge
+ kk: Норвегия
+ kl: Norge
+ kn: ನಾರ್ವೇ
+ ko: 노르웨이
+ ku: Norwêc
+ kv: Норвегия
+ kw: Norgagh
+ ky: Норвегия
+ la: Norvegia
+ lb: Norwegen
+ li: Noorwege
+ ln: Norvej
+ lt: Norvegija
+ lv: Norvēģija
+ mg: Norvezy
+ mi: Nōwei
+ mk: Норвешка
+ ml: നോർവെ
+ mn: Норвеги
+ mr: नॉर्वे
+ ms: Norway
+ mt: Norveġja
+ my: နော်ဝေနိုင်ငံ
+ na: Norwei
+ nb: Norge
+ ne: नर्वे
+ nl: Noorwegen
+ nn: Noreg
+ "no": Norge
+ oc: Norvègia
+ om: Norway
+ or: ନରୱେ
+ os: Норвеги
+ pa: ਨਾਰਵੇ
+ pl: Norwegia
+ ps: ناروې
+ pt: Noruega
+ qu: Nurwiga
+ rm: Norvegia
+ rn: Noruega
+ ro: Norvegia
+ ru: Норвегия
+ rw: Noruveje
+ sa: नार्वे
+ sc: Norvegia
+ se: Norga
+ sh: Norveška
+ sk: Nórsko
+ sl: Norveška
+ so: Norway
+ sq: Norvegjia
+ sr: Норвешка
+ ss: INoweyi
+ su: Norwégia
+ sv: Norge
+ sw: Norwei
+ ta: நோர்வே
+ te: నార్వే
+ tg: Норвегия
+ th: ประเทศนอร์เวย์
+ tk: Norwegiýa
+ tl: Noruwega
+ tr: Norveç
+ ts: Norge
+ tt: Норвегия
+ ug: نورۋېگىيە
+ uk: Норвегія
+ ur: ناروے
+ uz: Norvegiya
+ vi: Na Uy
+ vo: Norgän
+ wa: Norvedje
+ wo: Noorwees
+ yi: נארוועגיע
+ yo: Nọ́rwèy
+ za: Nozveih
+ zh: 挪威
+ zu: INoki
+
--- /dev/null
+name:
+ default: Nepal
+ ar: نيبال
+ be: Непал
+ br: Nepal
+ el: Νεπάλ
+ en: Nepal
+ eo: Nepalo
+ fa: نپال
+ fi: Nepal
+ fr: Népal
+ ga: Neipeal
+ gd: Neapàl
+ he: נפאל
+ hu: Nepál
+ is: Nepal
+ it: Nepal
+ ja: ネパール
+ la: Nepalia
+ lt: Nepalas
+ lv: Nepāla
+ mn: Балба
+ ne: नेपाल
+ pl: Nepal
+ ru: Непал
+ sv: Nepal
+ th: ประเทศเนปาล
+ uk: Непал
+ zh: 尼泊尔
--- /dev/null
+name:
+ default: Naoero
+ am: ናውሩ
+ ar: ناورو
+ be: Наўру
+ bg: Науру
+ bn: নাউরু
+ br: Nauru
+ cs: Nauru
+ da: Nauru
+ de: Nauru
+ dv: ނައުރޫ
+ el: Ναουρού
+ en: Nauru
+ eo: Nauro
+ fa: نائورو
+ fi: Nauru
+ fr: Nauru
+ fy: Naurû
+ ga: Nárú
+ he: נאורו
+ hi: नाउरु
+ hr: Nauru
+ hu: Nauru
+ is: Nárú
+ ja: ナウル
+ li: Naoeroe
+ lv: Nauru
+ ml: നൗറു
+ mn: Науру
+ mt: Nawru
+ pl: Nauru
+ ru: Науру
+ se: Nauru
+ sk: Nauru
+ sq: Naurua
+ sv: Nauru
+ ta: நவூரு
+ th: ประเทศนาอูรู
+ uk: Науру
+ ur: ناورو
+ vo: Naureän
+ zh: 諾魯
--- /dev/null
+name:
+ default: Niuē
+ ar: نييوي
+ be: Ніуэ
+ bg: Ниуе
+ br: Niue
+ cs: Niue
+ da: Niue
+ de: Niue
+ dv: ނީއު
+ el: Νιούε
+ en: Niue
+ eo: Niuo
+ es: Niue
+ fa: نیووی
+ fi: Niue
+ fr: Niue
+ fy: Niûé
+ ga: Niue
+ he: ניואה
+ hr: Niue
+ hu: Niue
+ is: Niue
+ ja: ニウエ
+ ka: ნიუე
+ kk: Ниуе
+ ko: 니우에
+ ku: Niûe
+ lt: Niujė
+ lv: Niue
+ mk: Ниуе
+ ml: നിയുവെ
+ mn: Ниуэ
+ mr: न्युए
+ os: Ниуэ
+ pl: Niue
+ ru: Ниуэ
+ rw: Niyuwe
+ sk: Niue
+ sr: Нијуе
+ sv: Niue
+ ta: நியுவே
+ th: นีอูเอ
+ ug: Niué Arili
+ uk: Ніуе
+ ur: نیووے
+ wo: Niwe
+ zh: 紐埃
--- /dev/null
+name:
+ default: New Zealand / Aotearoa
+ af: Nieu-Seeland
+ am: ኒው ዚላንድ
+ an: Nueva Zelanda
+ ar: نيوزيلندا
+ az: Yeni Zelandiya
+ ba: Яңы Зеландия
+ be: Новая Зеландыя
+ bg: Нова Зеландия
+ bi: Niu Zilan
+ bm: New Zealand
+ bn: নিউজিল্যান্ড
+ bo: ནིའུ་ཛི་ལེན་ཌི།
+ br: Zeland-Nevez
+ bs: Novi Zeland
+ ca: Nova Zelanda
+ cs: Nový Zéland
+ cv: Çĕнĕ Зеланди
+ cy: Seland Newydd
+ da: New Zealand
+ de: Neuseeland
+ dv: ނިއުޒިލޭންޑު
+ dz: ནིའུ་ཛི་ལེནཌ་
+ el: Νέα Ζηλανδία
+ en: New Zealand
+ eo: Nov-Zelando
+ es: Nueva Zelanda
+ et: Uus-Meremaa
+ eu: Zeelanda Berria
+ fa: نیوزیلند
+ fi: Uusi-Seelanti
+ fo: Nýsæland
+ fr: Nouvelle-Zélande
+ fy: Nij-Seelân
+ ga: An Nua-Shéalainn
+ gd: Sealainn Nuadh
+ gl: Nova Zelandia
+ gv: Yn Teelynn Noa
+ he: ניו זילנד
+ hi: न्यूज़ीलैण्ड
+ hr: Novi Zeland
+ ht: Nouvèl Zelann
+ hu: Új-Zéland
+ hy: Նոր Զելանդիա
+ ia: Nove Zelanda
+ id: Selandia Baru
+ ie: Nov-Zeland
+ io: Nova-Zelando
+ is: Nýja-Sjáland
+ it: Nuova Zelanda
+ ja: ニュージーランド
+ jv: Sélandia Anyar
+ ka: ახალი ზელანდია
+ kk: Жаңа Зеландия
+ kl: New Zealand
+ km: នូវែលសេឡង់
+ kn: ನ್ಯೂ ಜೀಲ್ಯಾಂಡ್
+ ko: 뉴질랜드
+ ku: Nû Zelenda
+ kv: Выль Зеландия
+ kw: Mordir Nowydh
+ la: Nova Zelandia
+ lb: Neiséiland
+ li: Nui-Zieland
+ lo: ປະເທດນູແວນ ເຊລັງ
+ lt: Naujoji Zelandija
+ lv: Jaunzēlande
+ mi: Aotearoa
+ mk: Нов Зеланд
+ ml: ന്യൂസീലൻഡ്
+ mn: Шинэ Зеланд
+ mr: न्यू झीलँड
+ ms: New Zealand
+ mt: New Zealand
+ my: နယူးဇီလန်နိုင်ငံ
+ na: Niu Djiran
+ ne: न्यू जील्याण्ड
+ nl: Nieuw-Zeeland
+ nn: New Zealand
+ "no": New Zealand
+ oc: Nòva Zelanda
+ or: ନିଉଜିଲ୍ୟାଣ୍ଡ
+ os: Ног Зеланди
+ pa: ਨਿਊਜ਼ੀਲੈਂਡ
+ pl: Nowa Zelandia
+ pt: Nova Zelândia
+ qu: Musuq Silanda
+ rm: Nova Zelanda
+ ro: Noua Zeelandă
+ ru: Новая Зеландия
+ rw: Nuveli Zelande
+ sa: न्यू-जीलैंड
+ se: Aotearoa
+ sh: Novi Zeland
+ sk: Nový Zéland
+ sl: Nova Zelandija
+ sm: Niu Sila
+ so: New Zealand
+ sq: Zelanda e Re
+ sr: Нови Зеланд
+ su: Selandia Anyar
+ sv: Nya Zeeland
+ sw: New Zealand
+ ta: நியூசிலாந்து
+ te: న్యూజీలాండ్
+ tg: Зеландияи Нав
+ th: ประเทศนิวซีแลนด์
+ tk: Täze Zelandiýa
+ tl: New Zealand
+ tr: Yeni Zelanda
+ tt: Яңа Зеландия
+ ty: Aotearoa
+ ug: يېڭى زېلاندىيە
+ uk: Нова Зеландія
+ ur: نیوزی لینڈ
+ uz: Yangi Zelandiya
+ vi: New Zealand
+ vo: Nula-Seleäns
+ wa: Nouve Zelande
+ wo: Seland-Gu-Bees
+ yi: ניו זילאנד
+ yo: New Zealand
+ za: Saen Saelanz
+ zh: 新西兰
+ zu: INyuzilandi
--- /dev/null
+name:
+ default: عمان
+ af: Oman
+ am: ኦማን
+ an: Omán
+ ar: عمان
+ az: Oman
+ ba: Оман
+ be: Аман
+ bg: Оман
+ bn: ওমান
+ bo: ཨོ་མན།
+ br: Oman
+ bs: Oman
+ ca: Oman
+ ce: Оман
+ cs: Omán
+ cv: Оман
+ cy: Oman
+ da: Oman
+ de: Oman
+ dv: ޢުމާން
+ el: Ομάν
+ en: Oman
+ eo: Omano
+ es: Omán
+ et: Omaan
+ eu: Oman
+ fa: عمان
+ fi: Oman
+ fr: Oman
+ fy: Oman
+ ga: Óman
+ gd: Omàn
+ gl: Omán
+ gn: Omã
+ gu: ઓમાન
+ gv: Yn Omaan
+ he: עומאן
+ hi: ओमान
+ hr: Oman
+ ht: Omàn
+ hu: Omán
+ hy: Օման
+ ia: Oman
+ id: Oman
+ ie: Oman
+ io: Oman
+ is: Óman
+ it: Oman
+ ja: オマーン
+ jv: Oman
+ ka: ომანი
+ kk: Оман
+ kl: Oman
+ kn: ಒಮಾನ್
+ ko: 오만
+ ku: Oman
+ kv: Оман
+ kw: Oman
+ la: Omania
+ lb: Oman
+ li: Omaan
+ ln: Oman
+ lt: Omanas
+ lv: Omāna
+ mi: Omāna
+ mk: Оман
+ ml: ഒമാൻ
+ mn: Оман
+ mr: ओमान
+ ms: Oman
+ my: အိုမန်နိုင်ငံ
+ na: Oman
+ nl: Oman
+ nn: Oman
+ "no": Oman
+ nv: Omą́ą́
+ oc: Oman
+ or: ଓମାନ
+ os: Оман
+ pa: ਓਮਾਨ
+ pl: Oman
+ ps: عمان
+ pt: Omã
+ qu: Uman
+ ro: Oman
+ ru: Оман
+ rw: Omani
+ sa: ओमान
+ se: Oman
+ sh: Oman
+ si: ඕමානය
+ sk: Omán
+ sl: Oman
+ so: Cumaan
+ sq: Omani
+ sr: Оман
+ ss: IMani
+ su: Oman
+ sv: Oman
+ sw: Omani
+ ta: ஓமான்
+ te: ఒమన్
+ tg: Оман
+ th: ประเทศโอมาน
+ tk: Oman
+ tl: Oman
+ tr: Umman
+ tt: Оман
+ ug: ئومان
+ uk: Оман
+ ur: سلطنت عمان
+ uz: Oman
+ vi: Oman
+ vo: Lomän
+ wo: Omaan
+ yi: אמאן
+ yo: Oman
+ zh: 阿曼
--- /dev/null
+name:
+ default: Panamá
+ af: Panama
+ am: ፓናማ
+ an: Panamá
+ ar: بنما
+ ay: Panama
+ az: Panama
+ ba: Панама
+ be: Панама
+ bg: Панама
+ bm: Panama
+ bn: পানামা
+ bo: པ་ན་མ།
+ br: Panamá
+ bs: Panama
+ ca: Panamà
+ ce: Панама
+ cs: Panama
+ cv: Панама
+ cy: Panama
+ da: Panama
+ de: Panama
+ dv: ޕެނަމާ
+ ee: Panama
+ el: Παναμάς
+ en: Panama
+ eo: Panamo
+ es: Panamá
+ et: Panama
+ eu: Panama
+ fa: پاناما
+ fi: Panama
+ fo: Panama
+ fr: Panamá
+ fy: Panama
+ ga: Panama
+ gd: Panama
+ gl: Panamá
+ gn: Panama
+ gu: પનામા
+ gv: Yn Phanamaa
+ he: פנמה
+ hi: पनामा
+ hr: Panama
+ ht: Panama
+ hu: Panama
+ hy: Պանամա
+ ia: Panama
+ id: Panama
+ ie: Panamá
+ io: Panama
+ is: Panama
+ it: Panamá
+ ja: パナマ
+ jv: Panama
+ ka: პანამა
+ ki: Panama
+ kk: Панама
+ kn: ಪನಾಮಾ
+ ko: 파나마
+ ku: Panama
+ kw: Panama
+ la: Panama
+ lb: Panama
+ li: Panama
+ ln: Panama
+ lt: Panama
+ lv: Panama
+ mg: Panama
+ mi: Panama
+ mk: Панама
+ ml: പനാമ
+ mn: Панам
+ mr: पनामा
+ ms: Panama
+ mt: Panama
+ my: ပနားမားနိုင်ငံ
+ ne: पानामा
+ nl: Panama
+ nn: Panama
+ "no": Panama
+ oc: Panamà
+ or: ପାନାମା
+ os: Панамæ
+ pa: ਪਨਾਮਾ
+ pl: Panama
+ ps: پاناما
+ pt: Panamá
+ qu: Panama
+ ro: Panama
+ ru: Панама
+ rw: Panama
+ sa: पानामा
+ se: Panama
+ sh: Panama
+ sk: Panama
+ sl: Panama
+ so: Banama
+ sq: Panamaja
+ sr: Панама
+ ss: IPhanama
+ su: Panama
+ sv: Panama
+ sw: Panama
+ ta: பனாமா
+ te: పనామా
+ tg: Панама
+ th: ประเทศปานามา
+ tl: Panama
+ tr: Panama
+ tt: Панама
+ ug: پاناما
+ uk: Панама
+ ur: پاناما
+ uz: Panama
+ vi: Panama
+ vo: Panamän
+ wo: Panamaa
+ yi: פאנאמא
+ yo: Panamá
+ zh: 巴拿马
+ zu: Panama
--- /dev/null
+name:
+ default: Perú
+ ab: Перу
+ af: Peru
+ ak: Peru
+ am: ፔሩ
+ an: Perú
+ ar: بيرو
+ ay: Piruw
+ az: Peru
+ ba: Перу
+ be: Перу
+ bg: Перу
+ bi: Peru
+ bm: Peru
+ bn: পেরু
+ bo: པེ་རུ།
+ br: Perou
+ bs: Peru
+ ca: Perú
+ ce: Перу
+ ch: Perú
+ co: Perù
+ cs: Peru
+ cv: Перу
+ cy: Periw
+ da: Peru
+ de: Peru
+ dv: ޕެރޫ
+ ee: Peru
+ el: Περού
+ en: Peru
+ eo: Peruo
+ es: Perú
+ et: Peruu
+ eu: Peru
+ fa: پرو
+ ff: Peru
+ fi: Peru
+ fo: Peru
+ fr: Pérou
+ fy: Perû
+ ga: Peiriú
+ gd: Pearù
+ gl: Perú
+ gn: Perũ
+ gu: પેરુ
+ gv: Yn Pheroo
+ he: פרו
+ hi: पेरू
+ hr: Peru
+ ht: Pewou
+ hu: Peru
+ hy: Պերու
+ ia: Peru
+ id: Peru
+ ie: Perú
+ io: Peru
+ is: Perú
+ it: Perù
+ iu: ᐱᕉ
+ ja: ペルー
+ jv: Peru
+ ka: პერუ
+ ki: Peru
+ kk: Перу
+ kl: Peru
+ kn: ಪೆರು
+ ko: 페루
+ ku: Perû
+ kv: Перу
+ kw: Perou
+ ky: Перу
+ la: Peruvia
+ lb: Peru
+ li: Peru
+ ln: Peru
+ lt: Peru
+ lv: Peru
+ mi: Perū
+ mk: Перу
+ ml: പെറു
+ mn: Перу
+ mr: पेरू
+ ms: Peru
+ mt: Perù
+ my: ပီရူးနိုင်ငံ
+ na: Peru
+ ne: पेरू
+ nl: Peru
+ nn: Peru
+ "no": Peru
+ oc: Peró
+ or: ପେରୁ
+ os: Перу
+ pa: ਪੇਰੂ
+ pl: Peru
+ ps: پيرو
+ pt: Peru
+ qu: Piruw
+ rm: Peru
+ ro: Peru
+ ru: Перу
+ rw: Peru
+ sa: पेरु
+ se: Peru
+ sh: Peru
+ si: පේරූ
+ sk: Peru
+ sl: Peru
+ sn: Peru
+ so: Peru
+ sq: Peruja
+ sr: Перу
+ ss: IPheru
+ su: Péru
+ sv: Peru
+ sw: Peru
+ ta: பெரு
+ te: పెరూ
+ tg: Перу
+ th: ประเทศเปรู
+ tk: Peru
+ tl: Peru
+ tr: Peru
+ tt: Перу
+ ug: پېرۇ
+ uk: Перу
+ ur: پیرو
+ uz: Peru
+ vi: Peru
+ vo: Peruvän
+ wo: Peru
+ yi: פערו
+ yo: Perú
+ zh: 秘鲁
+ zu: Peru
--- /dev/null
+name:
+ default: Polynésie française
+ af: Franse Polynesië
+ an: Polinesia Franzesa
+ ar: بولونيزيا الفرنسية
+ az: Fransa Polineziyası
+ be: Французская Палінезія
+ bg: Френска Полинезия
+ br: Polinezia Frañs
+ bs: Francuska Polinezija
+ ca: Polinèsia Francesa
+ cs: Francouzská Polynésie
+ cy: Polynesia Ffrengig
+ da: Fransk Polynesien
+ de: Französisch-Polynesien
+ dv: ފަރަންސޭސި ޕޮލިނޭޝިއާ
+ el: Γαλλική Πολυνησία
+ en: French Polynesia
+ eo: Franca Polinezio
+ es: Polinesia Francesa
+ et: Prantsuse Polüneesia
+ eu: Frantziar Polinesia
+ fa: پلینزی فرانسه
+ fi: Ranskan Polynesia
+ fr: Polynésie française
+ fy: Frânsk Polyneezje
+ ga: Polainéis na Fraince
+ gd: French Polynesia
+ gl: Polinesia francesa
+ he: פולינזיה הצרפתית
+ hi: फ्रेंच पोलीनेशिया
+ hr: Francuska Polinezija
+ hu: Francia Polinézia
+ id: Polinesia Perancis
+ io: Franca Polinezia
+ is: Franska Pólýnesía
+ it: Polinesia francese
+ ja: フランス領ポリネシア
+ jv: Polinesia Perancis
+ kk: Франция Полинезиясы
+ ko: 프랑스령 폴리네시아
+ kw: Polynesi Frynkek
+ la: Polynesia Francica
+ lb: Franséisch-Polynesien
+ lt: Prancūzijos Polinezija
+ lv: Franču Polinēzija
+ mi: Porinīhia Wīwī
+ mk: Француска Полинезија
+ mn: Францын Полинез
+ mr: फ्रेंच पॉलिनेशिया
+ ms: Polinesia Perancis
+ nl: Frans-Polynesië
+ nn: Fransk Polynesia
+ "no": Fransk Polynesia
+ oc: Polinesia Francesa
+ os: Францы Полинези
+ pl: Polinezja Francuska
+ pt: Polinésia Francesa
+ qu: Phransis Pulinisya
+ ro: Polinezia Franceză
+ ru: Французская Полинезия
+ se: Frankriikka Polynesia
+ sh: Francuska Polinezija
+ sk: Francúzska Polynézia
+ sl: Francoska Polinezija
+ sr: Француска Полинезија
+ sv: Franska Polynesien
+ sw: Polynesia ya Kifaransa
+ ta: பிரெஞ்சு பொலினீசியா
+ th: เฟรนช์โปลินีเซีย
+ tr: Fransız Polinezyası
+ ty: Pōrīnetia Farāni
+ ug: Fransiyige Qarashliq Polinéziye
+ uk: Французька Полінезія
+ vi: Polynésie thuộc Pháp
+ wo: Polineesi gu Faraas
+ zh: 法属波利尼西亚
--- /dev/null
+name:
+ default: Papua Niugini
+ af: Papoea-Nieu-Guinee
+ am: ፓፑዋ ኒው ጊኒ
+ an: Papua y Nueva Guinea
+ ar: بابوا غينيا الجديدة
+ az: Papua-Yeni Qvineya
+ ba: Папуа — Яңы Гвинея
+ be: Папуа — Новая Гвінея
+ bg: Папуа Нова Гвинея
+ bi: Papua New Guinea
+ bn: পাপুয়া নিউ গিনি
+ bo: པ་པུ་འ་ནིའུ་གི་ནེ།
+ br: Papoua Ginea-Nevez
+ bs: Papua Nova Gvineja
+ ca: Papua Nova Guinea
+ ce: Папуа — Керла Гвине
+ cs: Papua Nová Guinea
+ cu: Папоуа · Нова Гвинєꙗ
+ cy: Papua Guinea Newydd
+ da: Papua Ny Guinea
+ de: Papua-Neuguinea
+ dv: ޕަޕުއާ ނިއު ގިނީ
+ el: Παπούα Νέα Γουινέα
+ en: Papua New Guinea
+ eo: Papuo-Nov-Gvineo
+ es: Papua-Nueva Guinea
+ et: Paapua Uus-Guinea
+ eu: Papua Ginea Berria
+ fa: پاپوآ گینه نو
+ fi: Papua-Uusi-Guinea
+ fo: Papua Nýguinea
+ fr: Papouasie-Nouvelle-Guinée
+ fy: Papoea Nij-Guineä
+ ga: Nua-Ghuine Phapua
+ gd: Gini Nuadh Phaputhach
+ gl: Papúa Nova Guinea
+ gv: Papooey Guinea Noa
+ he: פפואה גינאה החדשה
+ hi: पापुआ न्यू गिनी
+ hr: Papua Nova Gvineja
+ ht: Papwazi-Nouvèl-Gine
+ hu: Pápua Új-Guinea
+ hy: Պապուա Նոր Գվինեա
+ ia: Papua Nove Guinea
+ id: Papua Nugini
+ io: Papua-Nova-Guinea
+ is: Papúa Nýja-Gínea
+ it: Papua Nuova Guinea
+ ja: パプアニューギニア
+ jv: Papua Nugini
+ ka: პაპუა-ახალი გვინეა
+ kk: Папуа Жаңа Гвинея
+ kn: ಪಾಪುಅ ನ್ಯೂ ಗಿನಿ
+ ko: 파푸아 뉴기니
+ ku: Papua Gîneya Nû
+ ky: Папуа-Жаӊы-Гвинея.
+ la: Papua Nova Guinea
+ lb: Papua-Neiguinea
+ li: Papoea-Nui-Guinea
+ lt: Papua Naujoji Gvinėja
+ lv: Papua-Jaungvineja
+ mi: Papua Nūkini
+ mk: Папуа Нова Гвинеја
+ ml: പാപുവ ന്യൂ ഗിനിയ
+ mn: Папуа-Шинэ Гвиней
+ mr: पापुआ न्यू गिनी
+ ms: Papua New Guinea
+ mt: Papwa Gwinea l-Ġdida
+ my: ပါပူအာနယူးဂီနီနိုင်ငံ
+ na: Papua New Guinea
+ nl: Papoea-Nieuw-Guinea
+ nn: Papua Ny-Guinea
+ "no": Papua Ny-Guinea
+ nv: Páápowa Bigíní Ániidí
+ oc: Papoa-Nòva Guinèa
+ os: Папуæ — Ног Гвиней
+ pa: ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ
+ pl: Papua-Nowa Gwinea
+ pt: Papua-Nova Guiné
+ qu: Papwa Ñukini
+ ro: Papua Noua Guinee
+ ru: Папуа - Новая Гвинея
+ rw: Papuwa Nuveli Gineya
+ sa: पपुवा न्यू गिनी
+ se: Papua-Ođđa-Guinea
+ sg: Papû Finî Ginëe
+ sh: Papua Nova Gvineja
+ sk: Papua-Nová Guinea
+ sl: Papua Nova Gvineja
+ sm: Papua
+ sq: Papua Guinea e Re
+ sr: Папуа Нова Гвинеја
+ su: Papua Nugini
+ sv: Papua Nya Guinea
+ sw: Papua Guinea Mpya
+ ta: பப்புவா நியூ கினி
+ th: ประเทศปาปัวนิวกินี
+ tl: Papua Bagong Ginea
+ tr: Papua Yeni Gine
+ tt: Папуа — Яңа Гвинея
+ ug: پاپۇئا يېڭى گۋىنېيە
+ uk: Папуа Нова Ґвінея
+ ur: پاپوا نیو گنی
+ uz: Papua Yangi Gvineya
+ vi: Papua New Guinea
+ vo: Papuveän Nula-Gineyän
+ wo: Papuwaasi-Gine-Gu-Bees
+ yo: Papua Guinea Titun
+ zh: 巴布亚新几内亚 / 巴布亞紐幾內亞 / 巴布亞新畿內亞
--- /dev/null
+name:
+ default: Philippines
+ af: Filippyne
+ am: ፊሊፒንስ
+ an: Filipinas
+ ar: الفلبين
+ az: Filippin
+ be: Філіпіны
+ bg: Филипини
+ bn: ফিলিপাইন
+ bo: ཧྥི་ལི་པིན།
+ br: Filipinez
+ bs: Filipini
+ ca: Filipines
+ ce: Филиппин
+ cs: Filipíny
+ cv: Филиппин
+ cy: Pilipinas
+ da: Filippinerne
+ de: Philippinen
+ dv: ފިލިޕީންސް
+ el: Φιλιππίνες
+ en: Philippines
+ eo: Filipinoj
+ es: Filipinas
+ et: Filipiinid
+ eu: Filipinak
+ fa: فیلیپین
+ fi: Filippiinit
+ fo: Filipsoyggjar
+ fr: Philippines
+ fy: Filipinen
+ ga: Na hOileáin Fhilipíneacha
+ gd: Na h-Eileanan Filipineach
+ gl: Filipinas
+ gn: Filipina
+ gu: ફીલીપાઈન્સ
+ gv: Ny h-Ellanyn Philippeenagh
+ he: הפיליפינים
+ hi: फ़िलीपीन्स
+ hr: Filipini
+ ht: Filipin
+ hu: Fülöp-szigetek
+ hy: Ֆիլիպիններ
+ ia: Philippinas
+ id: Filipina
+ ie: Filipines
+ io: Filipini
+ is: Filippseyjar
+ it: Filippine
+ ja: フィリピン
+ jv: Filipina
+ ka: ფილიპინები
+ kk: Филиппиндер
+ kl: Philippines
+ km: ហ្វីលីពីន
+ kn: ಫಿಲಿಪ್ಪೀನ್ಸ್
+ ko: 필리핀
+ ku: Filîpîn
+ kv: Филиппинъяс
+ kw: Filipinys
+ la: Philippinae
+ lb: Philippinen
+ li: Filipiene
+ lt: Filipinai
+ lv: Filipīnas
+ mg: Filipina
+ mi: Piripīni
+ mk: Филипини
+ ml: ഫിലിപ്പീൻസ്
+ mn: Филиппин
+ mr: फिलिपाईन्स
+ ms: Filipina
+ my: ဖိလစ်ပိုင်နိုင်ငံ
+ na: Eben Piripin
+ ne: फिलिपिन्स
+ nl: Filipijnen
+ nn: Filippinane
+ "no": Filippinene
+ nv: Kéyah Dańlíinii
+ oc: Filipinas
+ or: ଫିଲିପାଇନ୍ସ
+ os: Филиппинтæ
+ pa: ਫ਼ਿਲਪੀਨਜ਼
+ pl: Filipiny
+ ps: فلېپين
+ pt: Filipinas
+ qu: Philipinakuna
+ ro: Filipine
+ ru: Филиппины
+ rw: Filipine
+ sa: कलिंगद्वीप
+ se: Filippiinnat
+ sg: Filipîni
+ sh: Filipini
+ si: පිලිපීනය
+ sk: Filipíny
+ sl: Filipini
+ sm: Filipaina
+ so: Filibiin
+ sq: Filipinet
+ sr: Филипини
+ ss: IFiliphayi
+ su: Pilipina
+ sv: Filippinerna
+ sw: Ufilipino
+ ta: பிலிப்பீன்சு
+ te: ఫిలిప్పీన్స్
+ tg: Филиппин
+ th: ประเทศฟิลิปปินส์
+ tk: Filippinler
+ tl: Pilipinas
+ tr: Filipinler
+ tt: Филиппиннар
+ ug: فىلىپپىن
+ uk: Філіппіни
+ ur: فلپائن
+ uz: Filippin
+ vi: Philippines
+ vo: Filipuäns
+ wa: Filipenes
+ wo: Filipiin
+ yi: פיליפינען
+ yo: Filipínì
+ za: Feihlizbinh
+ zh: 菲律宾 / 菲律賓
--- /dev/null
+name:
+ default: پاکستان
+ af: Pakistan
+ am: ፓኪስታን
+ an: Pakistán
+ ar: باكستان
+ as: পাকিস্তান
+ az: Pakistan
+ ba: Пакистан
+ be: Пакістан
+ bg: Пакистан
+ bh: पाकिस्तान
+ bn: পাকিস্তান
+ bo: པ་ཀི་སི་ཐན
+ br: Pakistan
+ bs: Pakistan
+ ca: Pakistan
+ ce: Пакистан
+ cs: Pákistán
+ cv: Пакистан
+ cy: Pakistan
+ da: Pakistan
+ de: Pakistan
+ dv: ޕާކިސްތާން
+ el: Πακιστάν
+ en: Pakistan
+ eo: Pakistano
+ es: Pakistán
+ et: Pakistan
+ eu: Pakistan
+ fa: پاکستان
+ fi: Pakistan
+ fo: Pakistan
+ fr: Pakistan
+ fy: Pakistan
+ ga: An Phacastáin
+ gd: Pagastàn
+ gl: Paquistán
+ gn: Pakistán
+ gu: પાકિસ્તાન
+ gv: Yn Phakistaan
+ ha: Pakistan
+ he: פקיסטן
+ hi: पाकिस्तान
+ hr: Pakistan
+ ht: Pakistan
+ hu: Pakisztán
+ hy: Պակիստան
+ ia: Pakistan
+ id: Pakistan
+ ie: Pakistan
+ io: Pakistan
+ is: Pakistan
+ it: Pakistan
+ iu: ᐸᑭᔅᑕᓐ
+ ja: パキスタン
+ jv: Pakistan
+ ka: პაკისტანი
+ ki: Pakistan
+ kk: Пәкістан
+ kl: Pakistan
+ km: ប៉ាគីស្ថាន
+ kn: ಪಾಕಿಸ್ತಾನ
+ ko: 파키스탄
+ ks: پاکِستان
+ ku: Pakistan
+ kv: Пакистан
+ kw: Pakistan
+ ky: Пакистан
+ la: Pakistania
+ lb: Pakistan
+ li: Pakistan
+ ln: Pakistáni
+ lt: Pakistanas
+ lv: Pakistāna
+ mi: Pakitāne
+ mk: Пакистан
+ ml: പാകിസ്താൻ
+ mn: Пакистан
+ mr: पाकिस्तान
+ ms: Pakistan
+ mt: Pakistan
+ my: ပါကစ္စတန်နိုင်ငံ
+ na: Pakistan
+ nb: Pakistan
+ ne: पाकिस्तान
+ nl: Pakistan
+ nn: Pakistan
+ "no": Pakistan
+ nv: Eʼeʼaahjí Naakaii Dootłʼizhí Bikéyah
+ oc: Paquistan
+ or: ପାକିସ୍ଥାନ
+ os: Пакистан
+ pa: ਪਾਕਿਸਤਾਨ
+ pl: Pakistan
+ ps: پاکستان
+ pt: Paquistão
+ qu: Pakistan
+ ro: Pakistan
+ ru: Пакистан
+ rw: Pakisitani
+ sa: पाकिस्तानम्
+ sd: پاڪستان
+ se: Pakistan
+ sh: Pakistan
+ si: පාකිස්ථානය
+ sk: Pakistan
+ sl: Pakistan
+ so: Bakistaan
+ sq: Pakistani
+ sr: Пакистан
+ ss: IPhakhistani
+ su: Pakistan
+ sv: Pakistan
+ sw: Pakistan
+ ta: பாக்கித்தான்
+ te: పాకిస్తాన్
+ tg: Покистон
+ th: ประเทศปากีสถาน
+ tk: Päkistan
+ tl: Pakistan
+ tr: Pakistan
+ tt: Пакъстан
+ ug: پاكىستان
+ uk: Пакистан
+ ur: پاکستان
+ uz: Pokiston
+ vi: Pakistan
+ vo: Pakistän
+ wa: Pakistan
+ wo: Pakistaan
+ yi: פאקיסטאן
+ yo: Pakístàn
+ zh: 巴基斯坦
+ zu: IPakistani
--- /dev/null
+name:
+ default: Polska
+ ab: Полша
+ af: Pole
+ ak: Poland
+ am: ፖላንድ
+ an: Polonia
+ ar: بولندا
+ ay: Puluña
+ az: Polşa
+ ba: Польша
+ be: Польшча
+ bg: Полша
+ bi: Poland
+ bn: পোল্যান্ড
+ bo: ཕོ་ལན།
+ br: Polonia
+ bs: Poljska
+ ca: Polònia
+ ce: Польша
+ co: Polonia
+ cs: Polsko
+ cu: Пол҄ьска
+ cv: Польша
+ cy: Gwlad Pwyl
+ da: Polen
+ de: Polen
+ dv: ޕޮލެންޑު
+ ee: Poland
+ el: Πολωνία
+ en: Poland
+ eo: Pollando
+ es: Polonia
+ et: Poola
+ eu: Polonia
+ fa: لهستان
+ ff: Poloonya
+ fi: Puola
+ fo: Pólland
+ fr: Pologne
+ fy: Poalen
+ ga: An Pholainn
+ gd: A' Phòlainn
+ gl: Polonia
+ gn: Poloña
+ gu: પોલેંડ
+ gv: Yn Pholynn
+ ha: Poland
+ he: פולין
+ hi: पोलैंड
+ hr: Poljska
+ ht: Polòy
+ hu: Lengyelország
+ hy: Լեհաստան
+ ia: Polonia
+ id: Polandia
+ ie: Polonia
+ ig: Poland
+ io: Polonia
+ is: Pólland
+ it: Polonia
+ iu: ᐳᓚᓐᑦ
+ ja: ポーランド
+ jv: Polandia
+ ka: პოლონეთი
+ kg: Pologne
+ kk: Польша
+ kl: Poleni
+ km: ប្រទេសប៉ូឡូញ
+ kn: ಪೋಲೆಂಡ್
+ ko: 폴란드
+ ku: Polonya
+ kv: Польша
+ kw: Poloni
+ ky: Польша
+ la: Polonia
+ lb: Polen
+ lg: Bupoolo
+ li: Pole
+ ln: Poloni
+ lt: Lenkija
+ lv: Polija
+ mg: Polonia
+ mi: Pōrana
+ mk: Полска
+ ml: പോളണ്ട്
+ mn: Польш
+ mr: पोलंड
+ ms: Poland
+ mt: Polonja
+ my: ပိုလန်နိုင်ငံ
+ na: Poran
+ ne: पोल्याण्ड
+ nl: Polen
+ nn: Polen
+ "no": Polen
+ nv: Póolish Dineʼé Bikéyah
+ oc: Polonha
+ or: ପୋଲାଣ୍ଡ
+ os: Польшæ
+ pa: ਪੋਲੈਂਡ
+ pl: Polska
+ ps: پولنډ
+ pt: Polónia
+ qu: Pulunya
+ rm: Pologna
+ rn: Polonia
+ ro: Polonia
+ ru: Польша
+ rw: Polonye
+ sa: पोलैंड
+ sc: Polonia
+ se: Polska
+ sg: Pölôni
+ sh: Poljska
+ si: පෝලන්තය
+ sk: Poľsko
+ sl: Poljska
+ sm: Polagi
+ so: Boland
+ sq: Polonia
+ sr: Пољска
+ ss: IPholandi
+ st: Poland
+ su: Polandia
+ sv: Polen
+ sw: Poland
+ ta: போலந்து
+ te: పోలాండ్
+ tg: Лаҳистон
+ th: ประเทศโปแลนด์
+ tk: Polşa
+ tl: Polonya
+ tr: Polonya
+ tt: Польша
+ ug: پولشا
+ uk: Польща
+ ur: پولینڈ
+ uz: Polsha
+ vi: Ba Lan
+ vo: Polän
+ wa: Pologne
+ wo: Poloñ
+ yi: פוילן
+ yo: Polandi
+ zh: 波兰
+ zu: IPolandi
--- /dev/null
+name:
+ default: Saint-Pierre-et-Miquelon
+ af: Saint-Pierre et Miquelon
+ be: Святы П’ер і Міквелон
+ da: Saint Pierre og Miquelon
+ de: Saint-Pierre und Miquelon
+ en: Saint Pierre and Miquelon
+ eo: Sankta-Piero kaj Mikelono
+ es: San Pedro y Miguelón
+ fi: Saint-Pierre ja Miquelon
+ fr: Saint-Pierre-et-Miquelon
+ hr: Sveti Petar i Mikelon
+ hu: Saint-Pierre és Miquelon
+ lt: Sen Pjeras ir Mikelonas
+ lv: Senpjēra un Mikelona
+ mn: Сент Пьер ба Микелон
+ sv: Saint-Pierre och Miquelon
+ tr: Saint-Pierre ve Miquelon
+ uk: Сен-П'єр і Мікелон
--- /dev/null
+name:
+ default: Pitcairn Islands
+ ar: بتكايرن
+ be: Піткерн
+ br: Inizi Pitcairn
+ ca: Illes Pitcairn
+ cs: Pitcairnovy ostrovy
+ cy: Ynysoedd Pitcairn
+ da: Pitcairn
+ de: Pitcairninseln
+ el: Νήσοι Πίτκαιρν
+ en: Pitcairn Islands
+ eo: Pitkarna Insularo
+ es: Islas Pitcairn
+ fa: پیتکرن
+ fi: Pitcairn
+ fr: Îles Pitcairn
+ fy: de Pitcairneilannen
+ ga: Oileán Pitcairn
+ gd: Eilean Pitcairn
+ he: פיטקרן
+ hr: Pitcairnovo Otočje
+ hu: Pitcairn-szigetek
+ id: Kepulauan Pitcairn
+ is: Pitcairn
+ it: Isole Pitcairn
+ la: Pitcairn Insulae
+ lt: Pitkerno salos
+ lv: Pitkērna
+ mi: Pitikeina
+ mk: Питкерн
+ mn: Питкэрн Арлууд
+ nl: Pitcairneilanden
+ pl: Wyspy Pitcairn
+ ru: Острова Питкэрн
+ sl: Pitcairnovi otoki
+ sv: Pitcairnöarna
+ th: หมู่เกาะพิตแคร์น
+ tr: Pitcairn Adaları
+ uk: Острови Піткерн
+ vi: Quần đảo Pitcairn
+ zh: 皮特凯恩群岛
--- /dev/null
+name:
+ default: Puerto Rico
--- /dev/null
+name:
+ default: Palestinian Territory
--- /dev/null
+name:
+ default: Portugal
+ af: Portugal
+ am: ፖርቱጋል
+ an: Portugal
+ ar: البرتغال
+ ay: Purtuwal
+ az: Portuqaliya
+ ba: Португалия
+ be: Партугалія
+ bg: Португалия
+ bi: Portugal
+ bn: পর্তুগাল
+ bo: པོ་ཅུ་གྷལ།
+ br: Portugal
+ bs: Portugal
+ ca: Portugal
+ ce: Португали
+ co: Portugallu
+ cs: Portugalsko
+ cu: Портогалїꙗ
+ cv: Португали
+ cy: Portiwgal
+ da: Portugal
+ de: Portugal
+ dv: ޕޯޗުގަލް
+ dz: པོར་ཅུ་གལ་
+ ee: Portugal
+ el: Πορτογαλία
+ en: Portugal
+ eo: Portugalio
+ es: Portugal
+ et: Portugal
+ eu: Portugal
+ fa: پرتغال
+ fi: Portugali
+ fo: Portugal
+ fr: Portugal
+ fy: Portegal
+ ga: An Phortaingéil
+ gd: A' Phortagail
+ gl: Portugal
+ gn: Poytuga
+ gu: પોર્ટુગલ
+ gv: Yn Phortiugal
+ he: פורטוגל
+ hi: पुर्तगाल
+ hr: Portugal
+ ht: Pòtigal
+ hu: Portugália
+ hy: Պորտուգալիա
+ ia: Portugal
+ id: Portugal
+ ie: Portugal
+ io: Portugal
+ is: Portúgal
+ it: Portogallo
+ ja: ポルトガル
+ jv: Portugal
+ ka: პორტუგალია
+ kg: Mputulukesi
+ kk: Португалия
+ kl: Portugal
+ km: ប្រទេស ព័រទុយហ្គាល់
+ kn: ಪೋರ್ಚುಗಲ್
+ ko: 포르투갈
+ ku: Portûgal
+ kv: Португалия
+ kw: Portyngal
+ ky: Португалия
+ la: Portugallia
+ lb: Portugal
+ li: Portugal
+ ln: Pulutugal
+ lt: Portugalija
+ lv: Portugāle
+ mg: Pôrtogaly
+ mi: Potukara
+ mk: Португалија
+ ml: പോർച്ചുഗൽ
+ mn: Португал
+ mr: पोर्तुगाल
+ ms: Portugal
+ mt: Portugall
+ my: ပေါ်တူဂီနိုင်ငံ
+ na: Portsiugar
+ ne: पोर्चुगल
+ nl: Portugal
+ nn: Portugal
+ "no": Portugal
+ oc: Portugal
+ or: ପର୍ତ୍ତୁଗାଲ
+ os: Португали
+ pl: Portugalia
+ ps: پرتګال
+ pt: Portugal
+ qu: Purtugal
+ rm: Portugal
+ rn: Portugal
+ ro: Portugalia
+ ru: Португалия
+ rw: Porutigali
+ sa: पुर्तगाल
+ sc: Portogallo
+ se: Portugal
+ sh: Portugal
+ si: පෘතුගාලය
+ sk: Portugalsko
+ sl: Portugalska
+ sm: Portugal
+ so: Bortuqaal
+ sq: Portugalia
+ sr: Португалија
+ ss: IPhuthukezi
+ st: Portugal
+ su: Portugal
+ sv: Portugal
+ sw: Ureno
+ ta: போர்த்துகல்
+ te: పోర్చుగల్
+ tg: Португалия
+ th: ประเทศโปรตุเกส
+ tk: Portugaliýa
+ tl: Portugal
+ tr: Portekiz
+ tt: Португалия
+ ty: Pōtītī
+ ug: Portugaliye
+ uk: Португалія
+ ur: پرتگال
+ uz: Portugaliya
+ vi: Bồ Đào Nha
+ vo: Portugän
+ wa: Portugal
+ wo: Portugaal
+ yi: פארטוגאל
+ yo: Pọ́rtúgàl
+ zh: 葡萄牙
+ zu: IPhothugali
--- /dev/null
+name:
+ default: Belau
+ ar: بالاو
+ cs: Palau
+ de: Palau
+ en: Palau
+ eo: Palaŭo
+ fr: Palaos
+ hr: Palau
+ ia: Palau
+ io: Palau
+ lt: Palau
+ mi: Pārau
+ oc: Belau
+ pl: Palau
+ ru: Палау
+ se: Palau
+ sk: Palau
+ sl: Palau
+ sr: Палау
+ ta: பலாவு
+ uk: Палау
+ vi: Palau
+ vo: Palauäns
+ zh: 帕劳 / 帛琉
--- /dev/null
+name:
+ default: Paraguay
+ af: Paraguay
+ am: ፓራጓይ
+ an: Paraguai
+ ar: باراغواي
+ ay: Parawayi
+ az: Paraqvay
+ ba: Парагвай
+ be: Парагвай
+ bg: Парагвай
+ bi: Paraguay
+ bn: প্যারাগুয়ে
+ bo: པ་ར་གུ་ཡེ།
+ br: Paraguay
+ bs: Paragvaj
+ ca: Paraguai
+ ce: Парагвай
+ co: Paraguay
+ cs: Paraguay
+ cv: Парагвай
+ cy: Paraguay
+ da: Paraguay
+ de: Paraguay
+ dv: ޕެރަގުއޭ
+ ee: Paraguay
+ el: Παραγουάη
+ en: Paraguay
+ eo: Paragvajo
+ es: Paraguay
+ et: Paraguay
+ eu: Paraguai
+ fa: پاراگوئه
+ fi: Paraguay
+ fo: Paraguei
+ fr: Paraguay
+ fy: Paraguay
+ ga: Paragua
+ gd: Paraguaidh
+ gl: Paraguai
+ gn: Paraguái
+ gv: Yn Pharaguay
+ he: פרגוואי
+ hi: पैराग्वे
+ hr: Paragvaj
+ ht: Paragwe
+ hu: Paraguay
+ hy: Պարագվայ
+ ia: Paraguay
+ id: Paraguay
+ ie: Paraguay
+ io: Paraguay
+ is: Paragvæ
+ it: Paraguay
+ ja: パラグアイ
+ jv: Paraguay
+ ka: პარაგვაი
+ kk: Парагвай
+ kl: Paraguay
+ kn: ಪೆರಗ್ವೆ
+ ko: 파라과이
+ ku: Paraguay
+ kw: Paragway
+ la: Paraquaria
+ lb: Paraguay
+ li: Paraguay
+ ln: Palagway
+ lt: Paragvajus
+ lv: Paragvaja
+ mk: Парагвај
+ ml: പരഗ്വെ
+ mn: Парагвай
+ mr: पेराग्वे
+ ms: Paraguay
+ mt: Paragwaj
+ my: ပါရာဂွေးနိုင်ငံ
+ ne: पाराग्वे
+ nl: Paraguay
+ nn: Paraguay
+ "no": Paraguay
+ oc: Paraguai
+ or: ପାରାଗୁଏ
+ os: Парагвай
+ pa: ਪੈਰਾਗੁਏ
+ pl: Paragwaj
+ pt: Paraguai
+ qu: Parawayi
+ rm: Paraguay
+ ro: Paraguay
+ ru: Парагвай
+ rw: Paragwe
+ sa: पेरेग्वाय
+ se: Paraguay
+ sh: Paragvaj
+ sk: Paraguaj
+ sl: Paragvaj
+ so: Paraguay
+ sq: Paraguaji
+ sr: Парагвај
+ su: Paraguay
+ sv: Paraguay
+ sw: Paraguay
+ ta: பரகுவை
+ tg: Парагвай
+ th: ประเทศปารากวัย
+ tl: Paraguay
+ tr: Paraguay
+ tt: Парагвай
+ ug: پاراگۋاي
+ uk: Парагвай
+ ur: پیراگوئے
+ uz: Paragvay
+ vi: Paraguay
+ vo: Paragvän
+ wo: Paraguwaay
+ yi: פאראגוויי
+ yo: Paragúáì
+ zh: 巴拉圭
--- /dev/null
+name:
+ default: قطر
+ af: Katar
+ am: ቃጣር
+ an: Qatar
+ ar: قطر
+ as: কাটাৰ
+ az: Qətər
+ be: Катар
+ bg: Катар
+ bn: কাতার
+ bo: ཁ་ཏར།
+ br: Katar
+ bs: Katar
+ ca: Qatar
+ ce: Катар
+ cs: Katar
+ cv: Катар
+ cy: Qatar
+ da: Qatar
+ de: Katar
+ dv: ޤަޠަރު
+ dz: ཀ་ཏར་
+ ee: Qatar
+ el: Κατάρ
+ en: Qatar
+ eo: Kataro
+ es: Catar
+ et: Katar
+ eu: Qatar
+ fa: قطر
+ fi: Qatar
+ fo: Katar
+ fr: Qatar
+ fy: Katar
+ ga: Catar
+ gd: Catar
+ gl: Qatar - قطر
+ gu: કતાર (અરબસ્તાન)
+ gv: Yn Chatar
+ he: קטאר
+ hi: क़तर
+ hr: Katar
+ ht: Katar
+ hu: Katar
+ hy: Քաթար
+ id: Qatar
+ ie: Katar
+ io: Katar
+ is: Katar
+ it: Qatar
+ ja: カタール
+ jv: Qatar
+ ka: კატარი
+ kk: Катар
+ kl: Qatar
+ kn: ಕಟಾರ್
+ ko: 카타르
+ ku: Qeter
+ kv: Катар
+ kw: Katar
+ la: Quataria
+ lb: Katar
+ li: Katar
+ ln: Katar
+ lt: Kataras
+ lv: Katara
+ mi: Katā
+ mk: Катар
+ ml: ഖത്തർ
+ mn: Катар
+ mr: कतार
+ ms: Qatar
+ mt: Qatar
+ my: ကာတာနိုင်ငံ
+ na: Qatar
+ nl: Qatar
+ nn: Qatar
+ "no": Qatar
+ nv: Kʼatár
+ oc: Qatar
+ or: କତର
+ os: Катар
+ pa: ਕਤਰ
+ pl: Katar
+ ps: قطر
+ pt: Catar
+ qu: Qatar
+ ro: Qatar
+ ru: Катар
+ rw: Katari
+ sa: कतार
+ se: Qatar
+ sk: Katar (štát)
+ sl: Katar
+ so: Qatar
+ sq: Katari
+ sr: Катар
+ ss: IKhathari
+ su: Qatar
+ sv: Qatar
+ sw: Qatar
+ ta: கத்தார்
+ te: కతర్
+ tg: Қатар
+ th: ประเทศกาตาร์
+ tk: Katar
+ tl: Katar
+ tr: Katar
+ tt: Катар
+ ug: قاتار
+ uk: Катар
+ ur: قطر
+ uz: Qatar
+ vi: Qatar
+ vo: Katarän
+ wo: Kataar
+ yi: קאטאר
+ yo: Katar
+ zh: 卡塔尔
--- /dev/null
+name:
+ default: Réunion
+ af: Réunion
+ ar: ريونيون
+ be: Руньён
+ br: Ar Reunion
+ ca: Illa de la Reunió
+ da: Reunion
+ el: Ρεϊνιόν
+ eo: Reunio
+ es: La Reunión
+ fa: رئونیون
+ fi: Réunion
+ fr: La Réunion
+ he: ראוניון
+ hu: Réunion
+ is: Réunion
+ it: Riunione
+ la: Reunio
+ lt: Reunionas
+ lv: Reinjona
+ mn: Реюньон
+ pl: Reunion
+ ru: Реюньон
+ sl: Reunion
+ sv: Réunion
+ th: เรอูนียง
+ uk: Реюньйон
+ zh: 留尼汪
--- /dev/null
+name:
+ default: România
+ af: Roemenië
+ am: ሮማንያ
+ an: Rumanía
+ ar: رومانيا
+ ay: Rumanya
+ az: Rumıniya
+ ba: Румыния
+ be: Румынія
+ bg: Румъния
+ bi: Romania
+ bn: রোমানিয়া
+ bo: རོ་མ་ནི་ཡ།
+ br: Roumania
+ bs: Rumunija
+ ca: Romania
+ ce: Румыни
+ co: Romania
+ cs: Rumunsko
+ cu: Роумꙑнїꙗ
+ cv: Румыни
+ cy: Rwmania
+ da: Rumænien
+ de: Rumänien
+ dv: ރުމޭނިއާ
+ ee: Romania
+ el: Ρουμανία
+ en: Romania
+ eo: Rumanio
+ es: Rumanía
+ et: Rumeenia
+ eu: Errumania
+ fa: رومانی
+ fi: Romania
+ fo: Rumenia
+ fr: Roumanie
+ fy: Roemeenje
+ ga: An Rómáin
+ gd: Romàinia
+ gl: Romanía
+ gn: Rrumaña
+ gu: રોમાનિયા
+ gv: Yn Romaan
+ he: רומניה
+ hi: रोमानिया
+ hr: Rumunjska
+ ht: Woumani
+ hu: Románia
+ hy: Ռումինիա
+ ia: Romania
+ id: Rumania
+ ie: Rumania
+ io: Rumania
+ is: Rúmenía
+ it: Romania
+ ja: ルーマニア
+ jv: Rumania
+ ka: რუმინეთი
+ kg: Romania
+ kk: Румыния
+ kl: Rumænia
+ kn: ರೊಮಾನಿಯ
+ ko: 루마니아
+ ku: Romanya
+ kv: Румыния
+ kw: Roumani
+ ky: Румыния
+ la: Romania
+ lb: Rumänien
+ li: Roemenië
+ ln: Rumania
+ lt: Rumunija
+ lv: Rumānija
+ mi: Romeinia
+ mk: Романија
+ ml: റൊമാനിയ
+ mn: Румын
+ mr: रोमेनिया
+ ms: Romania
+ mt: Rumanija
+ my: ရိုမေးနီးယားနိုင်ငံ
+ na: Romania
+ ne: रोमानिया
+ nl: Roemenië
+ nn: Romania
+ "no": Romania
+ nv: Wooméiniya
+ oc: Romania
+ or: ରୋମାନିଆ
+ os: Румыни
+ pa: ਰੋਮਾਨੀਆ
+ pl: Rumunia
+ ps: رومانیا
+ pt: Roménia
+ qu: Rumanya
+ rm: Rumenia
+ ro: România
+ ru: Румыния
+ rw: Romaniya
+ sc: Romania
+ se: Romania
+ sh: Rumunija
+ si: රුමේනියාව
+ sk: Rumunsko
+ sl: Romunija
+ sm: Romania
+ so: Romania
+ sq: Rumania
+ sr: Румунија
+ ss: IRomaniya
+ su: Romania
+ sv: Rumänien
+ sw: Romania
+ ta: உருமேனியா
+ te: రొమేనియా
+ tg: Руминия
+ th: ประเทศโรมาเนีย
+ tk: Rumyniýa
+ tl: Rumanya
+ tr: Romanya
+ tt: Румыния
+ ug: Ruminiye
+ uk: Румунія
+ ur: رومانیہ
+ uz: Ruminiya
+ vi: Romania
+ vo: Rumän
+ wa: Roumaneye
+ wo: Romaani
+ yi: רומעניע
+ yo: Románíà
+ zh: 羅馬尼亞
--- /dev/null
+name:
+ default: Србија
+ af: Serwië
+ am: ሰርቢያ
+ an: Serbia
+ ar: صربيا
+ ay: Sirwiya
+ az: Serbiya
+ ba: Сербия
+ be: Сербія
+ bg: Сърбия
+ bi: Serbia
+ bn: সার্বিয়া
+ bo: སེར་བྷི་ཡ།
+ br: Serbia
+ bs: Srbija
+ ca: Sèrbia
+ ce: Серби
+ co: Serbia
+ cs: Srbsko
+ cu: Срьбїꙗ
+ cv: Серби
+ cy: Serbia
+ da: Serbien
+ de: Serbien
+ dv: ސާބިއާ
+ ee: Serbia
+ el: Σερβία
+ en: Serbia
+ eo: Serbio
+ es: Serbia
+ et: Serbia
+ eu: Serbia
+ fa: صربستان
+ fi: Serbia
+ fo: Serbia
+ fr: Serbie
+ fy: Servje
+ ga: An tSeirbia
+ gd: An t-Sèirb
+ gl: Serbia
+ gn: Sevia
+ gv: Yn Serb
+ he: סרביה
+ hi: सर्बिया
+ hr: Srbija
+ ht: Sèbi
+ hu: Szerbia
+ hy: Սերբիա
+ ia: Serbia
+ id: Serbia
+ ie: Serbia
+ io: Serbia
+ is: Serbía
+ it: Serbia
+ ja: セルビア
+ jv: Serbia
+ ka: სერბეთი
+ kg: Serbie
+ kk: Сербия
+ kl: Serbia
+ ko: 세르비아
+ ku: Serbistan
+ kv: Сербия
+ kw: Serbi
+ ky: Сербия
+ la: Serbia
+ lb: Serbien
+ li: Servië
+ ln: Serbia
+ lt: Serbija
+ lv: Serbija
+ mg: Serbia
+ mi: Serbia
+ mk: Србија
+ ml: സെർബിയ
+ mn: Серби
+ mr: सर्बिया
+ ms: Serbia
+ mt: Serbja
+ my: ဆားဘီးယားနိုင်ငံ
+ na: Terbiya
+ nb: Serbia
+ ne: सर्बिया
+ nl: Servië
+ nn: Serbia
+ "no": Serbia
+ oc: Serbia
+ or: ସର୍ବିଆ
+ os: Серби
+ pa: ਸਰਬੀਆ
+ pl: Serbia
+ ps: سربيا
+ pt: Sérvia
+ qu: Sirbya
+ rm: Serbia
+ ro: Serbia
+ ru: Сербия
+ rw: Seribiya
+ sa: सर्बिया
+ sc: Sèrbia
+ se: Serbia
+ sh: Srbija
+ sk: Srbsko
+ sl: Srbija
+ sm: Serbia
+ so: Serbia
+ sq: Serbia
+ sr: Србија
+ ss: ISebhiya
+ st: Serbia
+ su: Sérbia
+ sv: Serbien
+ sw: Serbia
+ ta: செர்பியா
+ te: సెర్బియా
+ tg: Сербия
+ th: ประเทศเซอร์เบีย
+ tk: Serbiýa
+ tl: Serbiya
+ tr: Sırbistan
+ tt: Сербия
+ tw: Serbia
+ ty: Terepia
+ ug: Sérbiye
+ uk: Сербія
+ ur: سربیا
+ uz: Serbiya
+ vi: Serbia
+ vo: Särbän
+ wo: Seerbi
+ yi: סערביע
+ yo: Sérbíà
+ zh: 塞爾維亞
+ zu: ISerbiya
--- /dev/null
+name:
+ default: Россия
+ ab: Урыстәыла
+ af: Rusland
+ ak: Russia
+ am: ሩሲያ
+ an: Rusia
+ ar: روسيا
+ as: ৰুশিযা
+ av: Россиялъул Федерация
+ ay: Rusiya
+ az: Rusiya
+ ba: Рәсәй
+ be: Расія
+ bg: Русия
+ bi: Rusia
+ bm: Risila
+ bn: রাশিয়া
+ bo: ཨུ་རུ་སུ།
+ br: Rusia
+ bs: Rusija
+ ca: Rússia
+ ce: Росси
+ ch: Russia
+ co: Russia
+ cs: Rusko
+ cu: Рѡсїꙗ
+ cv: Раççей Патшалăхĕ
+ cy: Rwsia
+ da: Rusland
+ de: Russland
+ dv: ރޫސީވިލާތް
+ dz: ར་ཤི་ཡཱན་ཕེ་ཌི་རེ་ཤཱན
+ ee: Russia
+ el: Ρωσία
+ en: Russia
+ eo: Rusio
+ es: Rusia
+ et: Venemaa
+ eu: Errusia
+ fa: روسیه
+ ff: Roosiya
+ fi: Venäjä
+ fo: Russland
+ fr: Russie
+ fy: Ruslân
+ ga: An Rúis
+ gd: An Ruis
+ gl: Rusia
+ gn: Rrúsia
+ gu: રશિયા
+ gv: Yn Roosh
+ ha: Rasha
+ he: רוסיה
+ hi: रूस
+ hr: Ruska Federacija
+ ht: Risi
+ hu: Oroszország
+ hy: Ռուսաստան
+ ia: Russia
+ id: Rusia
+ ie: Russia
+ ig: Mpaghara Russia
+ ik: Russia
+ io: Rusia
+ is: Rússland
+ it: Russia
+ iu: ᐅᓛᓴ
+ ja: ロシア
+ jv: Rusia
+ ka: რუსეთი
+ kg: Rusia
+ ki: Russia
+ kk: Ресей
+ kl: Ruslandi
+ km: រុស្ស៊ី
+ kn: ರಷ್ಯಾ
+ ko: 러시아
+ ks: روٗس
+ ku: Rûsya
+ kv: Рочму
+ kw: Russi
+ ky: Орусия
+ la: Russia
+ lb: Russland
+ lg: Rwasha
+ li: Rusland
+ ln: Rusí
+ lo: ລັດເຊັຽ
+ lt: Rusija
+ lv: Krievija
+ mg: Rosia
+ mi: Ruhia
+ mk: Русија
+ ml: റഷ്യ
+ mn: Оросын Холбооны Улс
+ mo: Русия
+ mr: रशिया
+ ms: Rusia
+ mt: Russja
+ my: ရုရှားနိုင်ငံ
+ na: Ratsiya
+ ne: रुस
+ nl: Rusland
+ nn: Russland
+ "no": Russland
+ nv: Biʼééʼ Łichííʼí Bikéyah
+ ny: Russia
+ oc: Russia
+ om: Raashiyaa
+ or: ଋଷିଆ
+ os: Уæрæсе
+ pa: ਰੂਸ
+ pl: Rosja
+ ps: روسیه
+ pt: Rússia
+ qu: Rusiya
+ rm: Russia
+ rn: Uburusiya
+ ro: Rusia
+ ru: Россия
+ rw: Uburusiya
+ sc: Rùssia
+ sd: روس
+ se: Ruošša
+ sg: Rusïi
+ sh: Rusija
+ si: රුසියාව
+ sk: Rusko
+ sl: Rusija
+ sm: Lusia
+ sn: Russia
+ so: Ruushka
+ sq: Rusia
+ sr: Русија
+ ss: IRashiya
+ st: Russia
+ su: Rusia
+ sv: Ryssland
+ sw: Shirikisho la Urusi
+ ta: உருசியா
+ te: రష్యా
+ tg: Русия
+ th: ประเทศรัสเซีย
+ ti: ራሻ
+ tk: Russiýa
+ tl: Pederasyong Ruso
+ to: Lūsia
+ tr: Rusya Federasyonu
+ ts: Russia
+ tt: Русия
+ tw: Russia
+ ty: Rūtia
+ ug: روسىيە
+ uk: Росія
+ ur: روس
+ uz: Rossiya Federatsiyasi
+ ve: Rashia
+ vi: Liên bang Nga
+ vo: Rusän
+ wa: Federåcion d' Rûsseye
+ wo: Federaasioŋ bu Riisi
+ xh: IRashiya
+ yi: רוסלאנד
+ yo: Rọ́síà
+ za: Ezlozswh Lienzbangh
+ zh: 俄罗斯/俄羅斯
+ zu: IRashiya
--- /dev/null
+name:
+ default: Rwanda
+ af: Rwanda
+ am: ሩዋንዳ
+ an: Ruanda
+ ar: رواندا
+ az: Ruanda
+ ba: Руанда
+ be: Руанда
+ bg: Руанда
+ bm: Rwanda
+ bn: রুয়ান্ডা
+ bo: རུ་ཝན་ཌ།
+ br: Rwanda
+ bs: Ruanda
+ ca: Rwanda
+ ce: Руанда
+ cs: Rwanda
+ cv: Руанда
+ cy: Rwanda
+ da: Rwanda
+ de: Ruanda
+ dv: ރުވާންޑާ
+ ee: Rwanda
+ el: Ρουάντα
+ en: Rwanda
+ eo: Ruando
+ es: Ruanda
+ et: Rwanda
+ eu: Ruanda
+ fa: رواندا
+ fi: Ruanda
+ fo: Ruanda
+ fr: Rwanda
+ fy: Rûanda
+ ga: Ruanda
+ gd: Rubhanda
+ gl: Ruanda
+ gv: Rooandey
+ he: רואנדה
+ hi: रवाण्डा
+ hr: Ruanda
+ ht: Rwanda
+ hu: Ruanda
+ hy: Ռուանդա
+ ia: Ruanda
+ id: Rwanda
+ ie: Rwanda
+ io: Ruanda
+ is: Rúanda
+ it: Ruanda
+ ja: ルワンダ
+ jv: Rwanda
+ ka: რუანდა
+ kg: Rwanda
+ ki: Rwanda
+ kk: Руанда
+ kn: ರ್ವಾಂಡ
+ ko: 르완다
+ ku: Rwanda
+ kw: Rwanda
+ la: Ruanda
+ lb: Ruanda
+ li: Rwanda
+ ln: Rwanda
+ lt: Ruanda
+ lv: Ruanda
+ mk: Руанда
+ ml: റുവാണ്ട
+ mn: Руанда
+ mr: ऱ्वान्डा
+ ms: Rwanda
+ mt: Rwanda
+ my: ရဝမ်ဒါနိုင်ငံ
+ ne: रुवाण्डा
+ nl: Rwanda
+ nn: Rwanda
+ "no": Rwanda
+ nv: Wánda Dineʼé Bikéyah
+ oc: Rwanda
+ or: ରଵାଣ୍ଡା
+ os: Руандæ
+ pa: ਰਵਾਂਡਾ
+ pl: Rwanda
+ ps: راونډا
+ pt: Ruanda
+ qu: Rwanda
+ rn: Rwanda
+ ro: Rwanda
+ ru: Руанда
+ rw: Rwanda
+ sa: रवाण्डा
+ sc: Ruanda
+ se: Rwanda
+ sg: Ruandäa
+ sh: Ruanda
+ si: රුවන්ඩා ජනරජය
+ sk: Rwanda
+ sl: Ruanda
+ sn: Rwanda
+ so: Ruwanda
+ sq: Ruanda
+ sr: Руанда
+ ss: IRuwanda
+ su: Rwanda
+ sv: Rwanda
+ sw: Rwanda
+ ta: ருவாண்டா
+ te: రువాండా
+ tg: Руанда
+ th: ประเทศรวันดา
+ ti: ሩዋንዳ
+ tk: Ruanda
+ tl: Ruwanda
+ tr: Ruanda
+ ts: Rwanda
+ tt: Руанда
+ ug: رۋاندا
+ uk: Руанда
+ ur: روانڈا
+ uz: Ruanda
+ vi: Rwanda
+ vo: Ruandän
+ wo: Ruwandaa
+ yi: רוואנדע
+ yo: Rùwándà
+ zh: 卢旺达
+ zu: IRuwanda
--- /dev/null
+name:
+ default: السعودية
+ af: Saoedi-Arabië
+ am: ሳዑዲ አረቢያ
+ an: Arabia Saudí
+ ar: السعودية
+ av: СагIудиязул ГIарабия
+ az: Səudiyyə Ərəbistanı
+ ba: Сәғүд Ғәрәбстаны
+ be: Саудаўская Аравія
+ bg: Саудитска Арабия
+ bm: Saudia Arabu ka Faamamara
+ bn: সৌদি আরব
+ bo: སའུ་དི་ཨ་ར་པི་ཡ།
+ br: Arabia Saoudat
+ bs: Saudijska Arabija
+ ca: Aràbia Saudita
+ ce: СаӀудийн Ӏаьрбийчоь
+ cs: Saúdská Arábie
+ cv: Сауд Аравийĕ
+ cy: Saudi Arabia
+ da: Saudi-Arabien
+ de: Saudi-Arabien
+ dv: ސައޫދީ އަރަބިއްޔާ
+ dz: སའུ་དི་ཨེ་ར་སྦི་ཡ་
+ el: Σαουδική Αραβία
+ en: Saudi Arabia
+ eo: Sauda Arabio
+ es: Arabia Saudita
+ et: Saudi Araabia
+ eu: Saudi Arabia
+ fa: عربستان سعودی
+ fi: Saudi-Arabia
+ fo: Saudi-Arabia
+ fr: Arabie saoudite
+ fy: Saûdy-Araabje
+ ga: An Araib Shádach
+ gd: Aràibia nan Sabhd
+ gl: Arabia Saudí
+ gn: Aravia Saudíta
+ gu: સાઉદી અરેબિયા
+ gv: Yn Araab Saudi
+ he: ערב הסעודית
+ hi: सउदी अरब
+ hr: Saudijska Arabija
+ ht: Arabi Sawoudit
+ hu: Szaúd-Arábia
+ hy: Սաուդյան Արաբիա
+ ia: Arabia Saudita
+ id: Arab Saudi
+ ie: Saudi Arabia
+ io: Saudia Arabia
+ is: Sádí-Arabía
+ it: Arabia Saudita
+ ja: サウジアラビア
+ jv: Arab Saudi
+ ka: საუდის არაბეთი
+ kk: Сауд Арабиясы
+ kl: Saudi Arabia
+ km: អារ៉ាប៊ីសាអូឌីត
+ kn: ಸೌದಿ ಅರೆಬಿಯ
+ ko: 사우디아라비아
+ ku: Erebistana Siyûdî
+ kv: Саудса Аравия
+ kw: Arabi Saoudek
+ ky: Сауд Арабия Падышалыгы
+ la: Arabia Saudiana
+ lb: Saudi-Arabien
+ li: Saoedi-Arabië
+ ln: Saudi Arabia
+ lt: Saudo Arabija
+ lv: Saūda Arābija
+ mk: Саудиска Арабија
+ ml: സൗദി അറേബ്യ
+ mn: Саудын Араб
+ mr: सौदी अरेबिया
+ ms: Arab Saudi
+ mt: Arabja Sawdija
+ my: ဆော်ဒီအာရေဗျနိုင်ငံ
+ na: Taudiarabiya
+ ne: साउदी अरब
+ nl: Saoedi-Arabië
+ nn: Saudi-Arabia
+ "no": Saudi-Arabia
+ nv: Ásáí Bikéyah Saʼoodí
+ oc: Arabia Saudita
+ or: ସାଉଦି ଆରବ
+ os: Сауды Арави
+ pa: ਸਉਦੀ ਅਰਬ
+ pl: Arabia Saudyjska
+ ps: سعودي عربستان
+ pt: Arábia Saudita
+ qu: Sawud Arabya
+ rm: Arabia Saudita
+ ro: Arabia Saudită
+ ru: Саудовская Аравия
+ rw: Arabiya Sawudite
+ sa: सऊदी अरब
+ se: Saudi-Arábia
+ sh: Saudijska Arabija
+ si: සවුදි අරාබියාව
+ sk: Saudská Arábia
+ sl: Saudova Arabija
+ so: Sacuudi Carabiya
+ sq: Arabia Saudite
+ sr: Саудијска Арабија
+ ss: I-Arabhiya
+ su: Saudi Arabia
+ sv: Saudiarabien
+ sw: Saudia
+ ta: சவூதி அரேபியா
+ te: సౌదీ అరేబియా
+ tg: Арабистони Саудӣ
+ th: ประเทศซาอุดีอาระเบีย
+ tk: Saud Arabystany
+ tl: Arabyang Saudi
+ tr: Suudi Arabistan
+ tt: Согуд Гарәбстаны
+ ug: سەئۇدى ئەرەبىستان
+ uk: Саудівська Аравія
+ ur: سعودی عرب
+ uz: Saudiya Arabistoni
+ vi: Ả Rập Saudi
+ vo: Sauda-Larabän
+ wo: Araabi Sawdit
+ yi: סאודי אראביע
+ yo: Sáúdí Arábíà
+ zh: 沙特阿拉伯
--- /dev/null
+name:
+ default: Solomon Islands
+ af: Solomoneilande
+ am: ሰለሞን ደሴቶች
+ an: Islas Salomón
+ ar: جزر سليمان
+ az: Solomon adaları
+ be: Саламонавы Астравы
+ bg: Соломонови острови
+ bn: সলোমন দ্বীপপুঞ্জ
+ bo: སོ་ལོ་མོན་གླིང་ཕྲན་ཚོ་ཁག
+ br: Inizi Solomon
+ bs: Solomonska Ostrva
+ ca: Salomó
+ ce: Соломонан гӀайреш
+ cs: Šalomounovy ostrovy
+ cv: Соломон Утравĕсем
+ cy: Ynysoedd Solomon
+ da: Salomonøerne
+ de: Salomonen
+ dv: ސޮލޮމޮން ޖަޒީރާ
+ el: Νήσοι Σολομώντα
+ en: Solomon Islands
+ eo: Salomonoj
+ es: Islas Salomón
+ et: Saalomoni Saared
+ eu: Salomon Uharteak
+ fa: جزایر سلیمان
+ fi: Salomonsaaret
+ fo: Sálomonoyggjarnar
+ fr: Salomon
+ fy: Salomonseilannen
+ ga: Oileáin Sholamón
+ gd: Na h-Eileanan Sholaimh
+ gl: Illas Salomón
+ gv: Ny h-Ellanyn Holomon
+ he: איי שלמה
+ hi: सोलोमन द्वीपसमूह
+ hr: Solomonski Otoci
+ ht: Salomon
+ hu: Salamon-szigetek
+ hy: Սողոմոնյան Կղզիներ
+ id: Kepulauan Solomon
+ io: Salomon Insuli
+ is: Salómonseyjar
+ it: Isole Salomone
+ ja: ソロモン諸島
+ jv: Kapuloan Solomon
+ ka: სოლომონის კუნძულები
+ kk: Соломон Аралдары
+ kn: ಸಾಲೊಮನ್ ದ್ವೀಪಗಳು
+ ko: 솔로몬 제도
+ ku: Giravên Salomon
+ kw: Ynysow Salamon
+ la: Insulae Salomonis
+ lb: Salomonen
+ li: Salomonseilen
+ lt: Saliamono Salos
+ lv: Zālamana Salas
+ mk: Соломонски Острови
+ ml: സോളമൻ ദ്വീപുകൾ
+ mr: सॉलोमन द्वीपसमूह
+ ms: Kepulauan Solomon
+ mt: Gżejjer Solomon
+ my: ဆော်လမွန်အိုင်းလန်းနိုင်ငံ
+ ne: सोलोमन द्धीप
+ nl: Salomonseilanden
+ nn: Salomonøyane
+ "no": Salomonøyene
+ nv: Sólomon Tó Bináhaazyínígíí
+ oc: Illas Salamon
+ or: ସୋଲୋମନ ଆୟରଲ୍ୟାଣ୍ଡ
+ os: Соломоны сакъадæхтæ
+ pa: ਸੋਲੋਮਨ ਟਾਪੂ
+ pl: Wyspy Salomona
+ pt: Ilhas Salomão
+ qu: Salumun wat'akuna
+ ro: Insulele Solomon
+ ru: Соломоновы Острова
+ rw: Ibirwa bya Solomoni
+ sa: सोलोमन-द्वीप
+ se: Salomonsullot
+ sh: Solomonski Otoci
+ si: සොලමන් දුපත්
+ sk: Šalamúnove ostrovy
+ sl: Salomonovi otoki
+ sm: Solomon Islands
+ so: Jasiiradaha Solomon
+ sq: Ishujt Solomon
+ sr: Соломонска Острва
+ su: Kapuloan Solomon
+ sv: Salomonöarna
+ sw: Visiwa vya Solomon
+ ta: சொலமன் தீவுகள்
+ te: సోలమన్ దీవులు
+ tg: Ҷазираҳои Соломон
+ th: หมู่เกาะโซโลมอน
+ tl: Kapuluang Solomon
+ tr: Solomon Adaları
+ ug: سولومون تاقىم ئاراللىرى
+ uk: Соломонові Острови
+ ur: جزائر سلیمان
+ uz: Solomon Orollari
+ vi: Quần đảo Solomon
+ vo: Solomonuäns
+ wo: Duni Solomon
+ yo: Àwọn Erékùsù Sólómọ́nì
+ zh: 所罗门群岛
--- /dev/null
+name:
+ default: Sesel
+ af: Seychelle
+ am: ሲሸልስ
+ an: Seychelles
+ ar: سيشيل
+ az: Seyşel adaları
+ be: Сейшэльскія Астравы
+ bg: Сейшели
+ bm: Seshel
+ bn: সেশেল
+ bo: སེ་ཞེལ།
+ br: Sechelez
+ bs: Sejšeli
+ ca: Seychelles
+ ce: Сейшелан гlайреш
+ cs: Seychely
+ cv: Сейшел утравĕсем
+ cy: Seychelles
+ da: Seychellerne
+ de: Seychellen
+ dv: ތޭންގަދީބު
+ el: Σεϋχέλλες
+ en: Seychelles
+ eo: Sejŝeloj
+ es: Seychelles
+ et: Seišellid
+ eu: Seychelleak
+ fa: سیشل
+ fi: Seychellit
+ fo: Seyskelloyggjar
+ fr: Seychelles
+ fy: Seysjellen
+ ga: Na Séiséil
+ gd: Na h-Eileanan Sheiseall
+ gl: Seixeles - Seychelles
+ gv: Ny h-Ellanyn Heshell
+ he: סיישל
+ hi: सेशेल्स
+ hr: Sejšeli
+ ht: Sechèl
+ hu: Seychelle-szigetek
+ ia: Seychelles
+ id: Seychelles
+ ie: Seychelles
+ io: Seycheli
+ is: Seychelles-eyjar
+ it: Seychelles
+ ja: セーシェル
+ jv: Seychelles
+ ka: სეიშელის კუნძულები
+ kg: Seychell
+ kk: Сейшель Аралдары
+ kn: ಸೆಶೆಲ್ಸ್
+ ko: 세이셸
+ ku: Seyşel
+ kw: Seychellys
+ la: Insulae Seisellenses
+ lb: Seychellen
+ li: Seychelle
+ ln: Seyshel
+ lt: Seišeliai
+ lv: Seišelas
+ mg: Seychelles
+ mk: Сејшели
+ ml: സെയ്ഷെൽസ്
+ mn: Сейшелийн арлууд
+ mr: सेशेल्स
+ ms: Seychelles
+ mt: Seychelles
+ my: ဆေးရှဲနိုင်ငံ
+ nl: Seychellen
+ nn: Seychellane
+ "no": Seychellene
+ nv: Seishel
+ oc: Seichèlas
+ or: ସେସେଲଜ
+ os: Сейшелтæ
+ pa: ਸੇਸ਼ੈਲ
+ pl: Seszele
+ ps: سیشل
+ pt: Seychelles
+ qu: Sichillakuna
+ rm: Seychellas
+ ro: Seychelles
+ ru: Сейшелы
+ rw: Seyishele
+ sa: सेशेल
+ sc: Seychelles
+ se: Seychellat
+ sg: Sëyshêle
+ sk: Seychely
+ sl: Sejšeli
+ sn: Seychelles
+ so: Seyshelles
+ sq: Sejshellet
+ sr: Сејшели
+ ss: ISeyishelesi
+ su: Seychéll
+ sv: Seychellerna
+ sw: Shelisheli
+ ta: சீசெல்சு
+ tg: Ҷазираҳои Сейшел
+ th: ประเทศเซเชลส์
+ tk: Seýşel Adalary
+ tl: Seyshels
+ tr: Seyşeller
+ ts: Seychelles
+ tt: Сейшел утраулары
+ ug: سېيشېل ئاراللىرى
+ uk: Сейшельські Острови
+ ur: سیچیلیس
+ uz: Seyshell orollari
+ vi: Seychelles
+ vo: Säceluäns
+ wo: Seysel
+ yo: Ṣèíhẹ́lẹ́sì
+ zh: 塞舌尔
+ zu: IsiSeyisheli
--- /dev/null
+name:
+ default: السودان
+ af: Soedan
+ ak: Sudan
+ am: ሱዳን
+ an: Sudán
+ ar: السودان
+ az: Sudan
+ ba: Судан
+ be: Судан
+ bg: Судан
+ bm: Sudan
+ bn: সুদান
+ bo: སུའུ་ཏན།
+ br: Soudan
+ bs: Sudan
+ ca: Sudan
+ ce: Судан
+ cs: Súdán
+ cv: Судан
+ cy: Sudan
+ da: Sudan
+ de: Sudan
+ dv: ސޫދާން
+ ee: Sudan
+ el: Σουδάν
+ en: Sudan
+ eo: Sudano
+ es: Sudán
+ et: Sudaan
+ eu: Sudan
+ fa: سودان
+ fi: Sudan
+ fo: Sudan
+ fr: Soudan
+ fy: Sûdan
+ ga: An tSúdáin
+ gd: Sudan
+ gl: Sudán
+ gn: Sudano
+ gu: સુદાન
+ gv: Yn Toodaan
+ ha: Sudan
+ he: סודאן
+ hi: सूडान
+ hr: Sudan
+ ht: Soudan
+ hu: Szudán
+ hy: Սուդան
+ ia: Sudan
+ id: Sudan
+ ie: Sudan
+ ig: Sudan
+ io: Sudan
+ is: Súdan
+ it: Sudan
+ ja: スーダン
+ jv: Sudan
+ ka: სუდანი
+ kg: Sudan
+ ki: Sũdana
+ kk: Судан
+ kn: ಸುಡಾನ್
+ ko: 수단
+ ku: Sûdan
+ kw: Soudan
+ ky: Судан
+ la: Sudania
+ lb: Sudan
+ li: Soedan
+ ln: Sudani
+ lt: Sudanas
+ lv: Sudāna
+ mi: Hūtāne
+ mk: Судан
+ ml: സുഡാൻ
+ mn: Судан
+ mr: सुदान
+ ms: Sudan
+ mt: Sudan
+ my: ဆူဒန်နိုင်ငံ
+ na: Tudan
+ nl: Soedan
+ nn: Sudan
+ "no": Sudan
+ nv: Soodą́ą
+ ny: Sudan
+ oc: Sodan
+ om: Sudaan
+ or: ସୁଦାନ
+ os: Судан
+ pa: ਸੁਡਾਨ
+ pl: Sudan
+ ps: سوډان
+ pt: Sudão
+ qu: Sudan
+ rm: Sudan
+ ro: Sudan
+ ru: Судан
+ rw: Sudani
+ sa: सूडान
+ sc: Sudan
+ sd: سوڊان
+ se: Sudan
+ sg: Sudäan
+ sh: Sudan
+ sk: Sudán
+ sl: Sudan
+ sm: Sudan
+ sn: Sudan
+ so: Suudaan
+ sq: Sudani
+ sr: Судан
+ ss: ISudani
+ su: Sudan
+ sv: Sudan
+ sw: Sudan
+ ta: சூடான்
+ te: సూడాన్
+ tg: Судон
+ th: ประเทศซูดาน
+ ti: ሱዳን
+ tk: Sudan
+ tl: Sudan
+ tr: Sudan
+ ts: Sudan
+ tt: Судан
+ ug: سۇدان
+ uk: Судан
+ ur: سوڈان
+ uz: Sudan
+ vi: Sudan
+ vo: Sudän
+ wo: Sudaan
+ yi: סודאן
+ yo: Sudan
+ zh: 苏丹共和国
--- /dev/null
+name:
+ default: Sverige
+ ab: Швециа
+ af: Swede
+ ak: Sweden
+ am: ስዊድን
+ an: Suecia
+ ar: السويد
+ az: İsveç
+ ba: Швеция
+ be: Швецыя
+ bg: Швеция
+ bi: Sweden
+ bm: Swedi
+ bn: সুইডেন
+ bo: སི་ཝེ་དེན།
+ br: Sveden
+ bs: Švedska
+ ca: Suècia
+ ce: Швеци
+ co: Svezia
+ cs: Švédsko
+ cu: Свєньско
+ cv: Швеци
+ cy: Sweden
+ da: Sverige
+ de: Schweden
+ dv: ސުވިޑަން
+ dz: སུའི་ཌན་
+ ee: Sweden
+ el: Σουηδία
+ en: Sweden
+ eo: Svedio
+ es: Suecia
+ et: Rootsi
+ eu: Suedia
+ fa: سوئد
+ fi: Ruotsi
+ fo: Svøríki
+ fr: Suède
+ fy: Sweden
+ ga: An tSualainn
+ gd: An t-Suain
+ gl: Suecia
+ gn: Suesia
+ gu: સ્વિડન
+ gv: Yn Toolynn
+ he: שבדיה
+ hi: स्वीडन
+ hr: Švedska
+ ht: Syèd
+ hu: Svédország
+ hy: Շվեդիա
+ ia: Svedia
+ id: Swedia
+ ie: Svedia
+ io: Suedia
+ is: Svíþjóð
+ it: Svezia
+ iu: ᔅᕗᕆᑭ
+ ja: スウェーデン
+ jv: Swédia
+ ka: შვედეთი
+ kg: Suedi
+ ki: Sweden
+ kk: Швеция
+ kl: Svenskit Nunaat
+ km: ស៊ុយអែត
+ kn: ಸ್ವೀಡನ್
+ ko: 스웨덴
+ ku: Swêd
+ kv: Швеция
+ kw: Swedherwyk
+ ky: Швеция
+ la: Suecia
+ lb: Schweden
+ lg: Swiiden
+ li: Zwede
+ ln: Swédi
+ lt: Švedija
+ lv: Zviedrija
+ mg: Soeda
+ mi: Huītene
+ mk: Шведска
+ ml: സ്വീഡൻ
+ mn: Швед
+ mr: स्वीडन
+ ms: Sweden
+ mt: Żvezja
+ my: ဆွီဒင်နိုင်ငံ
+ na: Widen
+ ne: स्वीडेन
+ nl: Zweden
+ nn: Sverige
+ "no": Sverige
+ oc: Suècia
+ or: ସ୍ଵିଡେନ
+ os: Швеци
+ pa: ਸਵੀਡਨ
+ pl: Szwecja
+ ps: سويډن
+ pt: Suécia
+ qu: Suwidsuyu
+ rm: Svezia
+ ro: Suedia
+ ru: Швеция
+ rw: Suwede
+ sa: स्वीडन
+ sc: Isvetzia
+ se: Ruoŧŧa
+ sh: Švedska
+ sk: Švédsko
+ sl: Švedska
+ sm: Sweden
+ so: Iswiidhan
+ sq: Suedia
+ sr: Шведска
+ ss: ISwideni
+ su: Swédia
+ sv: Sverige
+ sw: Uswidi
+ ta: சுவீடன்
+ te: స్వీడన్
+ tg: Шветсия
+ th: ประเทศสวีเดน
+ tk: Şwesiýa
+ tl: Suwesya
+ tr: İsveç
+ tt: Швеция
+ tw: Sweden
+ ug: شۋېتسىيە
+ uk: Швеція
+ ur: سویڈن
+ uz: Shvetsiya
+ vi: Thụy Điển
+ vo: Svedän
+ wa: Suwedwesse
+ wo: Suweed
+ yi: שוועדן
+ yo: Swídìn
+ zh: 瑞典
+ zu: ISwidi
--- /dev/null
+name:
+ default: Singapore
+ af: Singapoer
+ am: ሲንጋፖር
+ an: Singapur
+ ar: سنغافورة
+ az: Sinqapur
+ ba: Сингапур
+ be: Сінгапур
+ bg: Сингапур
+ bi: Singapore
+ bn: সিঙ্গাপুর
+ bo: སེང་ག་ཕོར།
+ br: Singapour
+ bs: Singapur
+ ca: Singapur
+ ce: Сингапур
+ cs: Singapur
+ cv: Сингапур
+ cy: Singapore
+ da: Singapore
+ de: Singapur
+ dv: ސިންގަޕޫރު
+ el: Σιγκαπούρη
+ en: Singapore
+ eo: Singapuro
+ es: Singapur
+ et: Singapur
+ eu: Singapur
+ fa: سنگاپور
+ ff: Sinngapuur
+ fi: Singapore
+ fo: Singapor
+ fr: Singapour
+ fy: Singapoer
+ ga: Singeapór
+ gd: Singeapòr
+ gl: Singapur
+ gu: સિંગાપુર
+ gv: Singapore
+ ha: Singapore
+ he: סינגפור
+ hi: सिंगापुर
+ hr: Singapur
+ ht: Sengapou
+ hu: Szingapúr
+ hy: Սինգապուրի Հանրապետություն
+ ia: Singapur
+ id: Singapura
+ ie: Singapor
+ io: Singapur
+ is: Singapúr
+ it: Singapore
+ ja: シンガポール
+ jv: Singapura
+ ka: სინგაპური
+ ki: Singapore
+ kk: Сингапур
+ kl: Singapore
+ km: សិង្ហបុរី
+ kn: ಸಿಂಗಾಪುರ್
+ ko: 싱가포르
+ ku: Singapûr
+ kv: Сингапур
+ kw: Singapour
+ ky: Сингапур
+ la: Singapura
+ lb: Singapur
+ li: Singapore
+ ln: Singapur
+ lt: Singapūras
+ lv: Singapūra
+ mg: Singapaoro
+ mi: Hingapoa
+ mk: Сингапур
+ ml: സിംഗപ്പൂർ
+ mn: Сингапур
+ mr: सिंगापूर
+ ms: Singapura
+ mt: Singapor
+ my: စင်ကာပူနိုင်ငံ
+ na: Tsingapoar
+ ne: सिंगापुर
+ nl: Singapore
+ nn: Singapore
+ "no": Singapore
+ nv: Sį́ʼgaboo
+ oc: Singapor
+ or: ସିଙ୍ଗାପୁର
+ os: Сингапур
+ pa: ਸਿੰਘਾਪੁਰ
+ pl: Singapur
+ ps: سينګاپور
+ pt: Singapura
+ qu: Singapur
+ ro: Singapore
+ ru: Сингапур
+ rw: Singapore
+ sa: सिङ्गापुरम्
+ se: Singapore
+ sg: Sïngäpûru
+ sh: Singapur
+ sk: Singapur
+ sl: Singapur
+ sm: Sigapoa
+ so: Singabuur
+ sq: Singapori
+ sr: Сингапур
+ ss: ISingapholo
+ su: Singapura
+ sv: Singapore
+ sw: Singapuri
+ ta: சிங்கப்பூர்
+ te: సింగపూరు
+ tg: Сингапур
+ th: ประเทศสิงคโปร์
+ tk: Singapur
+ tl: Singapore
+ tr: Singapur
+ tt: Сингапур
+ ug: سىنگاپور
+ uk: Сінгапур
+ ur: سنگاپور
+ uz: Singapur
+ vi: Singapore
+ vo: Singapurän
+ wo: Singapoor
+ yi: סינגאפור
+ yo: Singapore
+ zh: 新加坡
--- /dev/null
+name:
+ default: Saint Helena, Ascension and Tristan da Cunha
+ ar: سانت هيلينا، أسينسيون وتريستان دا كونها
+ cs: Svatá Helena, Ascension a Tristan da Cunha
+ de: St. Helena, Ascension und Tristan da Cunha
+ el: Αγία Ελένη, Ασενσιόν και Τριστάν ντα Κούνια
+ en: Saint Helena, Ascension and Tristan da Cunha
+ eo: Sankta Heleno, Ascension kaj Tristan da Cunha
+ es: Santa Elena, Ascensión y Tristán de Acuña
+ fa: سنت هلنا، اسنشن و تریستان دا کونا
+ fr: Sainte-Hélène, Ascension et Tristan da Cunha
+ hr: Sveta Helena
+ hu: Szent Ilona, Ascension és Tristan da Cunha
+ it: Sant'Elena, Ascensione e Tristan da Cunha
+ lt: Šventoji Elena, Dangun Žengimo ir Tristanas da Kunja
+ mk: Света Елена, Успение и Тристан да Куња
+ nl: Sint-Helena, Ascension en Tristan da Cunha
+ pt: Santa Helena, Ascensão e Tristão da Cunha
+ ru: Острова Святой Елены, Вознесения и Тристан-да-Кунья
+ sk: Svätá Helena, Ascension a Tristan da Cunha
+ sr: Света Хелена, Асенсион, и Тристан да Куња
+ tr: Saint Helena, Ascension ve Tristan da Cunha
+ uk: Острови Святої Єлени, Вознесіння і Тристан-да-Кунья
+ vi: Saint Helena, Ascension và Tristan da Cunha
+ zh: 圣赫勒拿、阿森松和特里斯坦-达库尼亚
--- /dev/null
+name:
+ default: Slovenija
+ af: Slowenië
+ am: ስሎቬኒያ
+ an: Eslovenia
+ ar: سلوفينيا
+ az: Sloveniya
+ ba: Словения
+ be: Славенія
+ bg: Словения
+ bi: Slovenia
+ bn: স্লোভেনিয়া
+ bo: སི་ལོ་ཝེ་ནི་ཡ།
+ br: Slovenia
+ bs: Slovenija
+ ca: Eslovènia
+ ce: Словени
+ co: Sluvenia
+ cs: Slovinsko
+ cu: Їллѷрїиска Словѣнїꙗ
+ cv: Словени
+ cy: Slofenia
+ da: Slovenien
+ de: Slowenien
+ dv: ސުލޮވީނިއާ
+ ee: Slovenia
+ el: Σλοβενία
+ en: Slovenia
+ eo: Slovenio
+ es: Eslovenia
+ et: Sloveenia
+ eu: Eslovenia
+ fa: اسلوونی
+ fi: Slovenia
+ fo: Slovenia
+ fr: Slovénie
+ fy: Sloveenje
+ ga: An tSlóivéin
+ gd: Sloibhìnia
+ gl: Eslovenia
+ gn: Eloveña
+ gu: સ્લોવેનિયા
+ gv: Yn Clovean
+ he: סלובניה
+ hi: स्लोवेनिया
+ hr: Slovenija
+ ht: Sloveni
+ hu: Szlovénia
+ hy: Սլովենիա
+ ia: Slovenia
+ id: Slovenia
+ ie: Slovenia
+ io: Slovenia
+ is: Slóvenía
+ it: Slovenia
+ ja: スロベニア
+ jv: Slovénia
+ ka: სლოვენია
+ kg: Slovenia
+ kk: Словения
+ kl: Slovenia
+ ko: 슬로베니아
+ ku: Slovenya
+ kv: Словения
+ kw: Sloveni
+ la: Slovenia
+ lb: Slowenien
+ li: Slovenië
+ ln: Slovenia
+ lt: Slovėnija
+ lv: Slovēnija
+ mi: Horowinia
+ mk: Словенија
+ ml: സ്ലൊവീന്യ
+ mn: Словен
+ mr: स्लोव्हेनिया
+ ms: Slovenia
+ mt: Slovenja
+ my: ဆလိုဗေးနီးယားနိုင်ငံ
+ na: Tsirobeniya
+ ne: स्लोभेनिया
+ nl: Slovenië
+ nn: Slovenia
+ "no": Slovenia
+ nv: Słobíín Bikéyah
+ oc: Eslovènia
+ or: ସ୍ଲୋଭେନିଆ
+ os: Словени
+ pl: Słowenia
+ ps: سلووانیا
+ pt: Eslovénia
+ qu: Isluwinya
+ rm: Slovenia
+ ro: Slovenia
+ ru: Словения
+ rw: Siloveniya
+ sa: स्लोवीनिया
+ sc: Islovènia
+ se: Slovenia
+ sh: Slovenija
+ sk: Slovinsko
+ sl: Slovenija
+ sm: Slovenia
+ so: Isloveeniya
+ sq: Sllovenia
+ sr: Словенија
+ ss: Siloveni
+ st: Slovenia
+ su: Slovénia
+ sv: Slovenien
+ sw: Slovenia
+ ta: சுலோவீனியா
+ te: స్లోవేనియా
+ tg: Словения
+ th: ประเทศสโลวีเนีย
+ tk: Sloweniýa
+ tl: Eslobenya
+ tr: Slovenya
+ tt: Словения
+ ug: Slowéniye
+ uk: Словенія
+ ur: سلووینیا
+ uz: Sloveniya
+ vi: Slovenia
+ vo: Sloveniyän
+ wo: Esloweeni
+ yi: סלאוועניע
+ yo: Sloféníà
+ zh: 斯洛文尼亞
--- /dev/null
+name:
+ default: Svalbard and Jan Mayen
--- /dev/null
+name:
+ default: Slovensko
+ af: Slowakye
+ am: ስሎቫኪያ
+ an: Eslovaquia
+ ar: سلوفاكيا
+ az: Slovakiya
+ ba: Словакия
+ be: Славакія
+ bg: Словакия
+ bi: Slovakia
+ bn: স্লোভাকিয়া
+ bo: སི་ལོ་ཕ་ཁེ།
+ br: Slovakia
+ bs: Slovačka
+ ca: Eslovàquia
+ ce: Словаки
+ co: Sluvacchia
+ cs: Slovensko
+ cu: Словѣньско
+ cv: Словаки
+ cy: Slofacia
+ da: Slovakiet
+ de: Slowakei
+ dv: ސުލޮވާކިއާ
+ ee: Slovakia
+ el: Σλοβακία
+ en: Slovakia
+ eo: Slovakio
+ es: Eslovaquia
+ et: Slovakkia
+ eu: Eslovakia
+ fa: اسلواکی
+ fi: Slovakia
+ fo: Slovakia
+ fr: Slovaquie
+ fy: Slowakije
+ ga: An tSlóvaic
+ gd: An t-Slòbhac
+ gl: Eslovaquia
+ gn: Elovakia
+ gu: સ્લોવાકિયા
+ gv: Yn Clovack
+ he: סלובקיה
+ hi: स्लोवाकिया
+ hr: Slovačka
+ ht: Slovaki
+ hu: Szlovákia
+ hy: Սլովակիա
+ ia: Slovachia
+ id: Slowakia
+ ie: Slovacia
+ io: Slovakia
+ is: Slóvakía
+ it: Slovacchia
+ ja: スロバキア
+ jv: Slowakia
+ ka: სლოვაკეთი
+ kg: Slovakia
+ kk: Словакия
+ kl: Slovakia
+ ko: 슬로바키아
+ ku: Slovakya
+ kv: Словакия
+ kw: Slovaki
+ ky: Словакия
+ la: Slovacia
+ lb: Slowakei
+ li: Slowakieë
+ ln: Slovakia
+ lt: Slovakija
+ lv: Slovākija
+ mi: Horowākia
+ mk: Словачка
+ ml: സ്ലോവാക്യ
+ mn: Словак
+ mr: स्लोव्हाकिया
+ ms: Slovakia
+ mt: Slovakkja
+ my: ဆလိုဗားကီးယားနိုင်ငံ
+ na: Slowakia
+ ne: स्लोभाकिया
+ nl: Slowakije
+ nn: Slovakia
+ "no": Slovakia
+ nv: Słóbaʼ Bikéyah
+ oc: Eslovaquia
+ or: ସ୍ଲୋଭାକିଆ
+ os: Словаки
+ pl: Słowacja
+ ps: سلواکيا
+ pt: Eslováquia
+ qu: Isluwakya
+ rm: Slovachia
+ ro: Slovacia
+ ru: Словакия
+ rw: Silovakiya
+ sa: स्लोवाकिया
+ se: Slovakia
+ sh: Slovačka
+ sk: Slovensko
+ sl: Slovaška
+ so: Islofaakiya
+ sq: Sllovakia
+ sr: Словачка
+ ss: Silovakhi
+ st: Slovakia
+ su: Slovakia
+ sv: Slovakien
+ sw: Slovakia
+ ta: சிலோவாக்கியா
+ tg: Словакия
+ th: ประเทศสโลวาเกีย
+ tk: Slowakiýa
+ tl: Eslobakya
+ tr: Slovakya
+ tt: Словакия
+ ug: سلوۋاكىيە
+ uk: Словаччина
+ ur: سلوواکیہ
+ uz: Slovakiya
+ vi: Slovakia
+ vo: Slovakiyän
+ wo: Eslowaaki
+ yi: סלאוואקיי
+ yo: Slofákíà
+ zh: 斯洛伐克
+ zu: ISlovaki
--- /dev/null
+name:
+ default: Sierra Leone
+ af: Sierra Leone
+ ak: Sierra Leone
+ am: ሴየራ ሌዎን
+ an: Sierra Leone
+ ar: سيراليون
+ az: Syerra-Leone
+ ba: Сьерра-Леоне
+ be: Сьера-Леонэ
+ bg: Сиера Леоне
+ bm: Sera Leon
+ bn: সিয়েরা লিওন
+ bo: སི་ར་ལེ་ཨོན།
+ br: Sierra Leone
+ bs: Sijera Leone
+ ca: Sierra Leone
+ ce: Сьерра-Леоне
+ cs: Sierra Leone
+ cy: Sierra Leone
+ da: Sierra Leone
+ de: Sierra Leone
+ dv: ސެރެލިއޯން
+ ee: Sierra Leone
+ el: Σιέρα Λεόνε
+ en: Sierra Leone
+ eo: Siera-Leono
+ es: Sierra Leona
+ et: Sierra Leone
+ eu: Sierra Leona
+ fa: سیرالئون
+ ff: Sarliyon
+ fi: Sierra Leone
+ fo: Sierra Leona
+ fr: Sierra Leone
+ fy: Sierra Leöane
+ ga: Siarra Leon
+ gd: Siarra Leòmhann
+ gl: Serra Leoa
+ gv: Sierra Leone
+ he: סיירה לאונה
+ hi: सिएरा लियोन
+ hr: Sijera Leone
+ ht: Syera Leòn
+ hu: Sierra Leone
+ hy: Սիերա Լեոնե
+ id: Sierra Leone
+ ie: Sierra Leone
+ io: Sierra Leone
+ is: Síerra Leóne
+ it: Sierra Leone
+ ja: シエラレオネ
+ jv: Sierra Leone
+ ka: სიერა-ლეონე
+ kg: Siera Leone
+ kk: Сиерра-Леоне
+ kn: ಸಿಯೆರ್ರಾ ಲಿಯೋನ್
+ ko: 시에라리온
+ ku: Sierra Leone
+ kw: Sierra Leon
+ la: Mons Leoninus
+ lb: Sierra Leone
+ li: Sierra Leone
+ ln: Sierra Leone
+ lt: Siera Leonė
+ lv: Sjerraleone
+ mi: Te Araone
+ mk: Сиера Леоне
+ ml: സീറാ ലിയോൺ
+ mn: Сьерра-Леоне
+ mr: सियेरा लिओन
+ ms: Sierra Leone
+ mt: Sierra Leone
+ my: ဆီရာလီယွန်နိုင်ငံ
+ nl: Sierra Leone
+ nn: Sierra Leone
+ "no": Sierra Leone
+ nv: Náshdóítsoh Bitsiijįʼ Daditłʼooʼígíí Bidził
+ oc: Sierra Leone
+ or: ସିଏରା ଲିଓନ
+ os: Сьеррæ-Леоне
+ pa: ਸਿਏਰਾ ਲਿਓਨ
+ pl: Sierra Leone
+ ps: سېرالیون
+ pt: Serra Leoa
+ qu: Liyun Urqu
+ ro: Sierra Leone
+ ru: Сьерра-Леоне
+ rw: Siyera Lewone
+ sa: सियारा-लियोन
+ sc: Sierra Leone
+ se: Sierra Leone
+ sg: Sierä-Leône
+ sh: Sijera Leone
+ si: සියෙරා ලියෝන්
+ sk: Sierra Leone
+ sl: Sierra Leone
+ sn: Sierra Leone
+ so: Sierra Leone
+ sq: Siera Leone
+ sr: Сијера Леоне
+ ss: ISiriya-Liyoni
+ su: Sierra Leone
+ sv: Sierra Leone
+ sw: Sierra Leone
+ ta: சியேரா லியோனி
+ tg: Сиерра Леоне
+ th: ประเทศเซียร์ราลีโอน
+ tk: Sýerra-Leone
+ tl: Bulubunduking Leona
+ tr: Sierra Leone
+ ts: Siyera Liyona
+ tw: Sierra Leone
+ ug: سيېررا لېئونې
+ uk: Сьєрра-Леоне
+ ur: سیرالیون
+ uz: Syerra Leone
+ vi: Sierra Leone
+ vo: Sieraleonän
+ wo: Siraa Leyoon
+ yi: סיערע לעאנע
+ yo: Siẹrra Léònè
+ zh: 塞拉利昂
+ zu: ISiera Liyoni
--- /dev/null
+name:
+ default: San Marino
+ ar: سان مارينو
+ be: Сан-Марына
+ bg: Сан Марино
+ br: San Marino
+ cs: San Marino
+ da: San Marino
+ de: San Marino
+ el: Άγιος Μαρίνος
+ en: San Marino
+ eo: San-Marino
+ fa: سان مارینو
+ fi: San Marino
+ fr: Saint-Marin
+ fy: San Marino
+ ga: San Mairíne
+ he: סן מרינו
+ hr: San Marino
+ hu: San Marino
+ ia: San Marino
+ io: San Marino
+ is: San Marínó
+ it: San Marino
+ la: Sancti Marini
+ lt: San Marinas
+ mi: Hato Marino
+ mn: Сан-Марино
+ nl: San Marino
+ pl: San Marino
+ pt: San Marino
+ ru: Сан-Марино
+ se: San Marino
+ sk: San Maríno
+ sv: San Marino
+ ta: சான் மரீனோ
+ th: ประเทศซานมารีโน
+ uk: Сан-Маріно
+ vo: Sanmarinän
+ zh: 圣马力诺
--- /dev/null
+name:
+ default: Sénégal
+ af: Senegal
+ am: ሴኔጋል
+ an: Senegal
+ ar: السنغال
+ az: Seneqal
+ ba: Сенегал
+ be: Сенегал
+ bg: Сенегал
+ bm: Senegal
+ bn: সেনেগাল
+ bo: སི་ནི་གཱལ།
+ br: Senegal
+ bs: Senegal
+ ca: Senegal
+ ce: Сенегал
+ cs: Senegal
+ cv: Сенегал
+ cy: Sénégal
+ da: Senegal
+ de: Senegal
+ dv: ސެނެގާލް
+ ee: Senegal
+ el: Σενεγάλη
+ en: Senegal
+ eo: Senegalo
+ es: Senegal
+ et: Senegal
+ eu: Senegal
+ fa: سنگال
+ ff: Senegaal
+ fi: Senegal
+ fo: Senegal
+ fr: Sénégal
+ fy: Senegal
+ ga: An tSeineagáil
+ gd: Seanagal
+ gl: Senegal
+ gv: Yn Tenegaal
+ ha: Senegal
+ he: סנגל
+ hi: सेनेगल
+ hr: Senegal
+ ht: Senegal
+ hu: Szenegál
+ hy: Սենեգալ
+ ia: Senegal
+ id: Senegal
+ ie: Senegal
+ io: Senegal
+ is: Senegal
+ it: Senegal
+ ja: セネガル
+ jv: Senegal
+ ka: სენეგალი
+ kg: Senangale
+ kk: Сенегал
+ kn: ಸೆನೆಗಲ್
+ ko: 세네갈
+ ku: Senegal
+ kw: Senegal
+ ky: Сенегал
+ la: Senegalia
+ lb: Senegal
+ li: Senegal
+ ln: Senegale
+ lt: Senegalas
+ lv: Senegāla
+ mi: Henekara
+ mk: Сенегал
+ ml: സെനെഗൽ
+ mn: Сенегал
+ mr: सेनेगाल
+ ms: Senegal
+ mt: Senegal
+ my: ဆီနီဂေါနိုင်ငံ
+ na: Senegal
+ nl: Senegal
+ nn: Senegal
+ "no": Senegal
+ oc: Senegal
+ or: ସେନେଗାଲ
+ os: Сенегал
+ pa: ਸੇਨੇਗਲ
+ pl: Senegal
+ ps: سېنېګال
+ pt: Senegal
+ qu: Sinigal
+ ro: Senegal
+ ru: Сенегал
+ rw: Senegali
+ sa: सेनेगल
+ sc: Senegàl
+ sd: سينيگال
+ se: Senegal
+ sg: Senegäle
+ sh: Senegal
+ sk: Senegal
+ sl: Senegal
+ sn: Senegal
+ so: Sinigaal
+ sq: Senegali
+ sr: Сенегал
+ st: Senegal
+ su: Sénégal
+ sv: Senegal
+ sw: Senegal
+ ta: செனிகல்
+ te: సెనెగల్
+ tg: Сенегал
+ th: ประเทศเซเนกัล
+ ti: ሴኔጋል
+ tk: Senegal
+ tl: Senegal
+ tr: Senegal
+ ts: Senegal
+ tt: Сенегал
+ ug: سېنېگال
+ uk: Сенегал
+ ur: سینیگال
+ uz: Senegal
+ vi: Sénégal
+ vo: Senegalän
+ wa: Senegal
+ wo: Senegaal
+ yi: סענעגאל
+ yo: Sẹ̀nẹ̀gàl
+ zh: 塞内加尔
+ zu: ISenegal
--- /dev/null
+name:
+ default: Soomaaliya الصومال
+ af: Somalië
+ am: ሶማሊያ
+ an: Somalia
+ ar: الصومال
+ az: Somali
+ ba: Сомали
+ be: Самалі
+ bg: Сомалия
+ bn: সোমালিয়া
+ bo: སོ་མ་ལི།
+ br: Somalia
+ bs: Somalija
+ ca: Somàlia
+ ce: Сомали
+ cs: Somálsko
+ cy: Somalia
+ da: Somalia
+ de: Somalia
+ dv: ސޯމާލިއާ
+ ee: Somalia
+ el: Σομαλία
+ en: Somalia
+ eo: Somalio
+ es: Somalia
+ et: Somaalia
+ eu: Somalia
+ fa: سومالی
+ fi: Somalia
+ fo: Somalia
+ fr: Somalie
+ fy: Somaalje
+ ga: An tSomáil
+ gd: Somàilia
+ gl: Somalia
+ gv: Yn Tomaal
+ he: סומליה
+ hi: सोमालिया
+ hr: Somalija
+ ht: Somali
+ hu: Szomália
+ hy: Սոմալի
+ ia: Somalia
+ id: Somalia
+ ie: Somalia
+ io: Somalia
+ is: Sómalía
+ it: Somalia
+ ja: ソマリア
+ jv: Somalia
+ ka: სომალი
+ kg: Sômâlia
+ ki: Somalia
+ kk: Сомали
+ kn: ಸೊಮಾಲಿಯ
+ ko: 소말리아
+ ku: Somalya
+ kw: Somali
+ la: Somalia
+ lb: Somalia
+ li: Somalië
+ ln: Somalia
+ lt: Somalis
+ lv: Somālija
+ mg: Somalia
+ mi: Hūmārie
+ mk: Сомалија
+ ml: സൊമാലിയ
+ mn: Сомали
+ mr: सोमालिया प्रजासत्ताक
+ ms: Somalia
+ mt: Somalja
+ my: ဆိုမာလီယာနိုင်ငံ
+ na: Tomariya
+ nl: Somalië
+ nn: Somalia
+ "no": Somalia
+ nv: Soomáálii Bikéyah
+ oc: Somalia
+ om: Somaaliyaa
+ or: ସୋମାଲିଆ
+ os: Сомали
+ pa: ਸੋਮਾਲੀਆ
+ pl: Somalia
+ ps: سومالیا
+ pt: Somália
+ qu: Sumalya
+ rm: Somalia
+ ro: Somalia
+ ru: Сомали
+ rw: Somaliya
+ sa: सोमालिया
+ sc: Somàlia
+ se: Somália
+ sg: Somalïi
+ sh: Somalija
+ si: සෝමාලියාව
+ sk: Somálsko
+ sl: Somalija
+ sm: Somalia
+ sn: Somalia
+ so: Soomaaliya
+ sq: Somalia
+ sr: Сомалија
+ ss: ISomaliya
+ st: Somalia
+ su: Somalia
+ sv: Somalia
+ sw: Somalia
+ ta: சோமாலியா
+ te: సొమాలియా
+ tg: Сумолӣ
+ th: ประเทศโซมาเลีย
+ ti: ሶማሊያ
+ tk: Somali
+ tl: Somalya
+ tr: Somali
+ ts: Somalia
+ tt: Сомали
+ ug: سومالى
+ uk: Сомалі
+ ur: صومالیہ
+ uz: Somali
+ vi: Somalia
+ vo: Somalän
+ wo: Somali
+ yi: סאמאליע
+ yo: Sòmálíà
+ zh: 索马里
+ zu: ISomalia
--- /dev/null
+name:
+ default: Suriname
+ af: Suriname
+ am: ሱሪናም
+ an: Surinam
+ ar: سورينام
+ ay: Suriname
+ az: Surinam
+ ba: Суринам
+ be: Сурынам
+ bg: Суринам
+ bn: সুরিনাম
+ bo: སུ་རི་ནེམ།
+ br: Surinam
+ bs: Surinam
+ ca: Surinam
+ ce: Суринам
+ cs: Surinam
+ cv: Суринам
+ cy: Suriname
+ da: Surinam
+ de: Suriname
+ dv: ސުރިނާމް
+ ee: Suriname
+ el: Σουρινάμ
+ en: Suriname
+ eo: Surinamo
+ es: Surinam
+ et: Suriname
+ eu: Surinam
+ fa: سورینام
+ fi: Suriname
+ fo: Surinam
+ fr: Suriname
+ fy: Suriname
+ ga: Suranam
+ gd: Suranam
+ gl: Suriname
+ gn: Surinam
+ gu: સુરીનામ
+ gv: Yn Toorinam
+ he: סורינאם
+ hi: सूरीनाम
+ hr: Surinam
+ ht: Sirinam
+ hu: Suriname
+ hy: Սուրինամ
+ id: Suriname
+ ie: Surinam
+ io: Surinam
+ is: Súrínam
+ it: Suriname
+ ja: スリナム
+ jv: Suriname
+ ka: სურინამი
+ kk: Суринам
+ kl: Suriname
+ kn: ಸುರಿನಾಮ್
+ ko: 수리남
+ ku: Sûrînam
+ kw: Surinam
+ la: Surinamia
+ lb: Surinam
+ li: Suriname
+ ln: Suriname
+ lt: Surinamas
+ lv: Surinama
+ mi: Hurināme
+ mk: Суринам
+ ml: സുരിനാം
+ mn: Суринам
+ mr: सुरिनाम
+ ms: Suriname
+ mt: Surinam
+ my: ဆူရာနမ်နိုင်ငံ
+ nl: Suriname
+ nn: Surinam
+ "no": Surinam
+ nv: Sówinam
+ oc: Surinam
+ or: ସରିନମ
+ os: Суринам
+ pa: ਸੂਰੀਨਾਮ
+ pl: Surinam
+ ps: سورينام
+ pt: Suriname
+ qu: Surinam
+ rm: Suriname
+ ro: Surinam
+ ru: Суринам
+ rw: Surinamu
+ se: Suriname
+ sh: Surinam
+ sk: Surinam
+ sl: Surinam
+ so: Surinam
+ sq: Surinami
+ sr: Суринам
+ su: Suriname
+ sv: Surinam
+ sw: Surinam
+ ta: சுரிநாம்
+ te: సురినామ్
+ th: ประเทศซูรินาเม
+ tl: Surinam
+ tr: Surinam
+ tt: Суринам
+ ug: سۇرىنام
+ uk: Суринам
+ ur: سرینام
+ uz: Surinam
+ vi: Suriname
+ vo: Surinän
+ wo: Surinaam
+ yi: סורינאם
+ yo: Sùrìnámù
+ zh: 蘇利南
--- /dev/null
+name:
+ default: South Sudan
+ af: Suid-Soedan
+ am: ደቡብ ሱዳን
+ an: Sudán d'o Sud
+ ar: جنوب السودان
+ av: Югалъулаб Судан
+ az: Cənubi Sudan
+ be: Паўднёвы Судан
+ bg: Южен Судан
+ bn: দক্ষিণ সুদান
+ br: Soudan ar Su
+ bs: Južni Sudan
+ ca: Sudan del Sud
+ cs: Jižní Súdán
+ cv: Кăнтăр Судан
+ cy: De Sudan
+ da: Sydsudan
+ de: Südsudan
+ el: Νότιο Σουδάν
+ en: South Sudan
+ eo: Suda Sudano
+ es: Sudán del Sur
+ et: Lõuna-Sudaan
+ eu: Hego Sudan
+ fa: سودان جنوبی
+ fi: Etelä-Sudan
+ fo: Suðursudan
+ fr: Sud-Soudan
+ fy: Súd-Sûdan
+ ga: An tSúdáin Theas
+ gd: Sudàn a Deas
+ gl: Sudán do Sur
+ gv: Yn Toodaan Yiass
+ he: דרום סודאן
+ hi: दक्षिण सूडान
+ hr: Južni Sudan
+ hu: Dél-Szudán
+ hy: Հարավային Սուդան
+ ia: Sudan del Sud
+ id: Sudan Selatan
+ ie: Sud-Sudan
+ io: Sud-Sudan
+ is: Suður-Súdan
+ it: Sudan del Sud
+ ja: 南部スーダン
+ jv: Sudan Kidul
+ ka: სამხრეთი სუდანი
+ kk: Оңтүстік Судан
+ ko: 남수단
+ ku: Sûdana Başûr
+ kv: Лунвыв Судан
+ kw: Soudan Soth
+ ky: Түштүк Судан
+ la: Sudania Australis
+ lb: Südsudan
+ li: Zuid-Soedan
+ lt: Pietų Sudanas
+ lv: Dienvidsudāna
+ mk: Јужен Судан
+ ml: ദക്ഷിണ സുഡാൻ
+ mr: दक्षिण सुदान
+ ms: Sudan Selatan
+ my: တောင်ဆူဒန်နိုင်ငံ
+ na: South Sudan
+ nl: Zuid-Soedan
+ nn: Sør-Sudan
+ "no": Sør-Sudan
+ nv: Shádiʼááhjí Soodą́ą
+ oc: Sodan del Sud
+ or: ଦକ୍ଷିନ ସୁଦାନ
+ pa: ਦੱਖਣੀ ਸੁਡਾਨ
+ pl: Sudan Południowy
+ ps: سوېلي سوډان
+ pt: Sudão do Sul
+ qu: Urin Sudan
+ rm: Sudan dal Sid
+ ro: Sudanul de Sud
+ ru: Южный Судан
+ sc: Sudan Meridionali
+ se: Lulli-Sudan
+ sg: Sudäan-Mbongo
+ sh: Južni Sudan
+ sk: Južný Sudán
+ sl: Južni Sudan
+ sn: South Sudan
+ so: Koonfur Suudaan
+ sq: Sudani i Jugut
+ sr: Јужни Судан
+ su: Sudan Kidul
+ sv: Sydsudan
+ sw: Sudan Kusini
+ ta: தெற்கு சூடான்
+ te: దక్షిణ సూడాన్
+ th: ประเทศเซาท์ซูดาน
+ tk: Günorta Sudan
+ tl: Timog Sudan
+ tr: Güney Sudan
+ tt: Көньяк Судан
+ uk: Південний Судан
+ ur: جنوبی سوڈان
+ uz: Janubiy Sudan
+ vi: Nam Sudan
+ vo: Sulüda-Sudän
+ yi: דרום סודאן
+ yo: Gúúsù Sudan
+ zh: 南蘇丹
+ zu: ISudan yaseNingizimu
--- /dev/null
+name:
+ default: São Tomé e Príncipe
+ af: São Tomé en Principe
+ ar: سان تومي وبرينسيبي
+ br: São Tomé ha Príncipe
+ ca: São Tomé i Príncipe
+ cs: Svatý Tomáš a Princův ostrov
+ cy: São Tomé a Príncipe
+ da: São Tomé og Príncipe
+ de: São Tomé und Príncipe
+ el: Σάο Τομέ και Πρίνσιπε
+ en: São Tomé and Príncipe
+ eo: Sao-Tomeo kaj Principeo
+ es: Santo Tomé y Príncipe
+ et: São Tomé ja Príncipe
+ fa: سائوتومه و پرینسیپ
+ fi: São Tomé ja Príncipe
+ fr: Sao Tomé-et-Principe
+ fy: Sao Tomee en Prinsipe
+ ga: São Tomé agus Príncipe
+ gd: São Tomé agus Príncipe
+ he: סאו טומה ופרינסיפה
+ hr: Sveti Toma i Princip
+ hu: São Tomé és Príncipe
+ id: Sao Tome dan Principe
+ io: San-Tome e Principe
+ is: Saó Tóme og Prinsípe
+ la: Insulae Sancti Thomae et Principis
+ lb: São Tomé a Príncipe
+ li: São Tomé en Príncipe
+ lt: Sao Tomė ir Prinsipė
+ mn: Сан-Томе ба Принсипи
+ nl: Sao Tomé en Principe
+ pl: Wyspy Świętego Tomasza i Książęca
+ pt: São Tomé e Príncipe
+ ru: Сан-Томе и Принсипи
+ se: São Tomé ja Príncipe
+ sk: Svätý Tomáš a Princov ostrov
+ sl: Sveti Tomaž in Princ
+ sr: Сао Томе и Принсипе
+ sv: São Tomé och Príncipe
+ ta: சாவோ தொமே மற்றும் பிரின்சிப்பி
+ th: ประเทศเซาตูเมและปรินซิปี
+ tr: São Tomé ve Príncipe
+ uk: Сан-Томе і Принсіпі
+ vi: São Tomé và Príncipe
+ vo: Saluda-Tomeän e Prinsipeän
+ zh: 圣多美和普林西比
--- /dev/null
+name:
+ default: El Salvador
+ af: El Salvador
+ am: ኤል ሳልቫዶር
+ an: El Salvador
+ ar: السلفادور
+ ay: El Salvador
+ az: Salvador
+ ba: Сальвадор
+ be: Сальвадор
+ bg: Салвадор
+ bm: El Salvador
+ bn: এল সালভাদোর
+ bo: ཨིལ་སལ་ཝ་ཌོར།
+ br: El Salvador
+ bs: El Salvador
+ ca: El Salvador
+ ce: Сальвадор
+ cs: Salvador
+ cy: El Salvador
+ da: El Salvador
+ de: El Salvador
+ dv: އެލްސެލްވަޑޯރު
+ ee: El Salvador
+ el: Ελ Σαλβαδόρ
+ en: El Salvador
+ eo: Salvadoro
+ es: República de El Salvador
+ et: El Salvador
+ eu: El Salvador
+ fa: السالوادور
+ fi: El Salvador
+ fo: El Salvador
+ fr: Salvador
+ fy: El Salvador
+ ga: An tSalvadóir
+ gd: El Salbhador
+ gl: O Salvador
+ gn: Salvador
+ gv: Yn Salvador
+ he: אל סלוודור
+ hi: अल साल्वाडोर
+ hr: Salvador
+ ht: Salvadò
+ hu: Salvador
+ hy: Սալվադոր
+ ia: El Salvador
+ id: El Salvador
+ io: Salvadoria
+ is: El Salvador
+ it: El Salvador
+ ja: エルサルバドル
+ jv: El Salvador
+ ka: სალვადორი
+ kk: Эль-Сальвадор Республикасы
+ kn: ಎಲ್ ಸಾಲ್ವಡಾರ್
+ ko: 엘살바도르
+ ku: El Salvador
+ kw: El Salvador
+ la: Salvatoria
+ lb: El Salvador
+ li: El Salvador
+ ln: El Salvador
+ lt: Salvadoras
+ lv: Salvadora
+ mi: Te Whakaora
+ mk: Ел Салвадор
+ ml: എൽ സാൽവദോർ
+ mn: Эль Сальвадор
+ mr: एल साल्व्हाडोर
+ ms: El Salvador
+ mt: El Salvador
+ my: အယ်ဆာဗေဒိုနိုင်ငံ
+ na: Ersarbador
+ ne: एल साल्भादोर
+ nl: El Salvador
+ nn: El Salvador
+ "no": El Salvador
+ oc: Lo Salvador
+ or: ଏଲ ସାଲଭାଡୋର
+ os: Сальвадор
+ pa: ਸਾਲਵਾਦੋਰ
+ pl: Salwador
+ ps: اېلسلوادور
+ pt: El Salvador
+ qu: Salwadur
+ ro: El Salvador
+ ru: Сальвадор
+ rw: Saluvadoro
+ sa: एल-साल्वाडोर
+ se: El Salvador
+ sh: Salvador
+ si: එල් සැල්වඩෝ
+ sk: Salvádor
+ sl: Salvador
+ so: El Salfador
+ sq: Salvadori
+ sr: Салвадор
+ ss: ISalivado
+ su: Él Salvador
+ sv: El Salvador
+ sw: El Salvador
+ ta: எல் சால்வடோர்
+ tg: Салвадор
+ th: ประเทศเอลซัลวาดอร์
+ tl: El Salvador
+ tr: El Salvador
+ tt: Сальвадор
+ ug: ئەل سالۋادور
+ uk: Сальвадор
+ ur: ایل سیلواڈور
+ uz: El Salvador
+ vi: El Salvador
+ vo: Salvadorän
+ wo: Salbadoor
+ yi: על סאלוואדאר
+ yo: El Salfador
+ zh: 萨尔瓦多
+ zu: El Salvador
--- /dev/null
+name:
+ default: Sint Maarten
--- /dev/null
+name:
+ default: سوريا
+ af: Sirië
+ am: ሶርያ
+ an: Siria
+ ar: سوريا
+ av: Сирия
+ az: Suriya
+ ba: Сирия
+ be: Сірыя
+ bg: Сирия
+ bm: Suriya
+ bn: সিরিয়া
+ bo: སི་རི་ཡ།
+ br: Siria
+ bs: Sirija
+ ca: República Àrab Siriana
+ ce: Шема
+ cs: Sýrie
+ cu: Сѷрїꙗ
+ cv: Сири
+ cy: Syria
+ da: Syrien
+ de: Syrien
+ dv: ސޫރިޔާ
+ el: Συρία
+ en: Syria
+ eo: Sirio
+ es: Siria
+ et: Süüria
+ eu: Siria
+ fa: سوریه
+ fi: Syyria
+ fo: Sýria
+ fr: Syrie
+ fy: Syrje
+ ga: An tSiria
+ gd: Siria
+ gl: Siria - سورية
+ gu: સિરિયા
+ gv: Yn Teer
+ he: סוריה
+ hi: सीरिया
+ hr: Sirija
+ ht: Siri
+ hu: Szíria
+ hy: Սիրիա
+ ia: Syria
+ id: Suriah
+ ie: Siria
+ io: Siria
+ is: Sýrland
+ it: Siria
+ ja: シリア
+ jv: Suriah
+ ka: სირია
+ ki: Syria
+ kk: Сирия
+ kl: Syria
+ kn: ಸಿರಿಯಾ
+ ko: 시리아
+ ku: Sûrî
+ kv: Сирия
+ kw: Syri
+ ky: Сирия
+ la: Syria
+ lb: Syrien
+ li: Syrië
+ ln: Sirí
+ lt: Sirija
+ lv: Sīrija
+ mg: Siria
+ mi: Hiria
+ mk: Сирија
+ ml: സിറിയ
+ mn: Сири
+ mr: सीरिया
+ ms: Syria
+ my: ဆီးရီးယားနိုင်ငံ
+ na: Syria
+ ne: सीरिया
+ nl: Syrië
+ nn: Syria
+ "no": Syria
+ nv: Sííwiya
+ oc: Siria
+ or: ସିରିଆ
+ os: Сири
+ pa: ਸੀਰੀਆ
+ pl: Syria
+ ps: سوريه
+ pt: Síria
+ qu: Sirya
+ ro: Siria
+ ru: Сирия
+ rw: Siriya
+ sa: सिरिया
+ sc: Siria
+ sd: شام
+ se: Syria
+ sh: Sirija
+ sk: Sýria
+ sl: Sirija
+ so: Suuriya
+ sq: Siria
+ sr: Сирија
+ ss: ISiriya
+ su: Suriah
+ sv: Syrien
+ sw: Syria
+ ta: சிரியா
+ te: సిరియా
+ tg: Сурия
+ th: ประเทศซีเรีย
+ tk: Siriýa
+ tl: Sirya
+ tr: Suriye
+ tt: Сүрия
+ ug: سۇرىيە
+ uk: Сирія
+ ur: شام
+ uz: Suriya
+ vi: Syria
+ vo: Süriyän
+ wa: Sireye
+ wo: Siri
+ yi: סיריע
+ yo: Síríà
+ zh: 叙利亚/敘利亞
--- /dev/null
+name:
+ default: eSwatini
+ af: Swaziland
+ am: ስዋዚላንድ
+ an: Swazilandia
+ ar: سوازيلاند
+ ay: Suasïsuiu
+ az: Svazilend
+ ba: Свазиленд
+ be: Эсваціні
+ bg: Есватини
+ bm: Swazilandi
+ bn: সোয়াজিল্যান্ড
+ bo: སུ་ཝ་ཛི་ལནཌ།
+ br: Swaziland
+ bs: Svazilend
+ ca: Swazilàndia
+ cs: Svazijsko
+ cy: Gwlad Swazi
+ da: Swaziland
+ de: Eswatini
+ dv: ސުވާޒިލޭންޑު
+ dz: སུ་ཝ་ཛི་ལེནཌ
+ ee: Swaziland
+ el: Σουαζιλάνδη
+ en: Eswatini
+ eo: Svazilando
+ es: Suazilandia
+ et: Svaasimaa
+ eu: Swazilandia
+ fa: سوازیلند
+ ff: Swaasilannda
+ fi: Swazimaa
+ fo: Svasiland
+ fr: Swaziland
+ fy: Swazilân
+ ga: An tSuasalainn
+ gd: Dùthaich nan Suasaidh
+ gl: Suacilandia - Swaziland
+ gu: સ્વાઝીલેન્ડ
+ gv: Yn Çheer Swassee
+ ha: Suwazilan
+ he: סווזילנד
+ hi: स्वाज़ीलैण्ड
+ hr: Svazi
+ ht: Swazilann
+ hu: Szváziföld
+ hy: Սվազիլենդ
+ ia: Swazilandia
+ id: Swaziland
+ ie: Swaziland
+ io: Swazilando
+ is: Svasíland
+ it: Swaziland
+ ja: スワジランド
+ jv: Swaziland
+ ka: სვაზილენდი
+ kg: Swati
+ ki: Uswazi
+ kk: Суазиланд
+ kl: Swazilandi
+ km: សូហ្ស៉ីឡង់
+ kn: ಸ್ವಾಜಿಲ್ಯಾಂಡ್
+ ko: 스와질란드
+ ks: سُوزِلینٛڑ
+ ku: Swaziland
+ kw: Pow Swati
+ la: Swazia
+ lb: Swasiland
+ lg: Swazirandi
+ li: Swaziland
+ ln: Swaziland
+ lo: ສະວາຊິແລນ
+ lt: Svazilandas
+ lv: Svazilenda
+ mg: Soazilandy
+ mi: Warerangi
+ mk: Свазиленд
+ ml: സ്വാസിലാന്റ്
+ mn: Свазиланд
+ mr: स्वाझीलँड
+ ms: Swaziland
+ mt: Sważiland
+ my: ဆွာဇီလန်နိုင်ငံ
+ ne: स्वाजिल्याण्ड
+ nl: Swaziland
+ nn: Eswatini
+ "no": Eswatini
+ nv: Swáazi Dineʼé Bikéyah
+ oc: Swaziland
+ or: ସ୍ଵାଜିଲ୍ୟାଣ୍ଡ
+ os: Свазиленд
+ pa: ਸਵਾਜ਼ੀਲੈਂਡ
+ pl: Eswatini
+ ps: سوازيلانډ
+ pt: eSwatini
+ qu: Swasisuyu
+ rn: Suwazilandi
+ ro: eSwatini
+ ru: Эсватини
+ rw: Swazilande
+ sa: स्वाजीलैंड
+ sc: Swaziland
+ se: Swazieana
+ sg: Swäzïlânde
+ sh: Svazilend
+ si: ස්වාසිලන්තය
+ sk: Svazijsko
+ sl: Esvatini
+ sn: Swaziland
+ so: Swasiland
+ sq: Suazilendi
+ sr: Есватини
+ ss: eSwatini
+ su: Swaziland
+ sv: Swaziland
+ sw: Uswazi
+ ta: சுவாசிலாந்து
+ te: స్వాజీలేండ్
+ tg: Свазиленд
+ th: ประเทศสวาซิแลนด์
+ ti: ስዋዚላንድ
+ tk: Swazilend
+ tl: Suwasilandya
+ to: Suasileni
+ tr: Esvatini
+ ts: Swaziland
+ tt: Свазиленд
+ ug: سۋازىلېند
+ uk: Есватіні
+ ur: سوازی لینڈ
+ uz: Svazilend
+ ve: Swazini
+ vi: Eswatini
+ vo: Svasiyän
+ wo: Suwaasilaand
+ yi: סוואזילאנד
+ yo: Swásílándì
+ zh: 斯威士兰/斯威士蘭/史瓦濟蘭
+ zu: ISwazilandi
--- /dev/null
+name:
+ default: Turks and Caicos Islands
+ af: Turks en Caicos Eilande
+ an: Islas Turcas e Caicos
+ ar: جزر تركس وكايكوس
+ bg: Търкс и Кайкос
+ bn: টার্কস্ ও কেইকোস দ্বীপপুঞ্জ
+ br: Inizi Turks ha Caicos
+ bs: Ostrva Turks i Caicos
+ ca: Illes Turks i Caicos
+ cs: Turks a Caicos
+ cv: Тĕркс тата Кайкос
+ cy: Ynysoedd Turks a Caicos
+ da: Turks- og Caicosøerne
+ de: Turks- und Caicosinseln
+ dv: ޓާކަސް އަދި ކައިކޯ ޖަޒީރާ
+ el: Τερκς και Κάικος
+ en: Turks and Caicos Islands
+ eo: Turkoj kaj Kajkoj
+ es: Islas Turcas y Caicos
+ et: Turks ja Caicos
+ eu: Turks eta Caicos uharteak
+ fa: جزایر تورکس و کایکوس
+ fi: Turks- ja Caicossaaret
+ fr: Îles Turques-et-Caïques
+ fy: Turks- en Kaikoseilannen
+ ga: Oileáin na dTurcach agus Caicos
+ gd: Oileáin na dTurcach agus Caicos
+ gl: Turks e Caicos
+ he: איי טרקס וקייקוס
+ hi: टर्क्स और केकोस द्वीप-समूह
+ hr: Otočje Turks i Caicos
+ hu: Turks- és Caicos-szigetek
+ id: Kepulauan Turks dan Caicos
+ io: Turks e Kaikos-Insuli
+ is: Turks- og Caicoseyjar
+ it: Turks e Caicos
+ ja: タークス・カイコス諸島
+ jv: Kapuloan Turks lan Caicos
+ ko: 터크스 케이커스 제도
+ kw: Turks ha Kaykos
+ lt: Terksas ir Kaikosas
+ lv: Tērksas un Kaikosas
+ mn: Туркс ба Кайкосын Арлууд
+ mr: टर्क्स आणि कैकास द्वीपसमूह
+ ms: Kepulauan Turks dan Caicos
+ nl: Turks- en Caicoseilanden
+ nn: Turks- og Caicosøyane
+ "no": Turks- og Caicosøyene
+ pl: Turks i Caicos
+ pt: Ilhas Turcas e Caicos
+ ro: Insulele Turks şi Caicos
+ ru: Тёркс и Кайкос
+ sh: Turks i Caicos Otoci
+ sk: Turks a Caicos
+ sl: Otoki Turks in Caicos
+ sq: Turks dhe Kaikos
+ sr: Туркс и Кајкос
+ sv: Turks- och Caicosöarna
+ sw: Visiwa vya Turks na Caicos
+ ta: துர்கசு கைகோசு தீவுகள்
+ th: หมู่เกาะเติร์กและไคคอส
+ tr: Turks ve Caicos Adaları
+ ug: Turks we Kaykos Taqim Aralliri
+ uk: Острови Теркс і Кайкос
+ vi: Quần đảo Turks và Caicos
+ wo: Turks and Caicos Islands
+ zh: 特克斯和凱科斯群島
--- /dev/null
+name:
+ default: Tchad تشاد
+ af: Tsjad
+ am: ቻድ
+ an: Chad
+ ar: تشاد
+ az: Çad
+ ba: Чад
+ be: Чад
+ bg: Чад
+ bm: Cad
+ bn: চাদ
+ bo: ཆཱ་ཌ།
+ br: Tchad
+ bs: Čad
+ ca: Txad
+ ce: Чад
+ cs: Čad
+ cv: Чад
+ cy: Tchad
+ da: Tchad
+ de: Tschad
+ dv: ޝާދު
+ ee: Chad
+ el: Τσαντ
+ en: Chad
+ eo: Ĉado
+ es: Chad
+ et: Tšaad
+ eu: Txad
+ fa: چاد
+ fi: Tšad
+ fo: Kjad
+ fr: Tchad
+ fy: Tsjaad
+ ga: Sead
+ gd: An t-Siad
+ gl: Chad - Tchad
+ gu: ચૅડ
+ gv: Shad
+ ha: Cadi
+ he: צ'אד
+ hi: चाड
+ hr: Čad
+ ht: Tchad
+ hu: Csád
+ hy: Չադ
+ ia: Tchad
+ id: Chad
+ ie: Chad
+ ig: Chad
+ io: Chad
+ is: Tsjad
+ it: Ciad
+ ja: チャド
+ jv: Chad
+ ka: ჩადი
+ kg: Tasadi
+ kk: Чад
+ ko: 차드
+ ku: Çad
+ kw: Chad
+ la: Tzadia
+ lb: Tschad
+ li: Tsjaad
+ ln: Tshadi
+ lt: Čadas
+ lv: Čada
+ mi: Kāta
+ mk: Чад
+ ml: ഛാഡ്
+ mn: Чад
+ mr: चाड
+ ms: Chad
+ mt: Ċad
+ my: ချဒ်သမ္မတနိုင်ငံ
+ na: Tsiad
+ nl: Tsjaad
+ nn: Tsjad
+ "no": Tsjad
+ oc: Chad
+ or: ଚାଡ
+ os: Чад
+ pa: ਚਾਡ
+ pl: Czad
+ ps: چاډ
+ pt: Chade
+ qu: Chad
+ rm: Tschad
+ ro: Ciad
+ ru: Чад
+ rw: Cade
+ sa: चाड
+ sc: Chad
+ se: Chad
+ sg: Sâde
+ sh: Čad
+ si: චෑඩ්
+ sk: Čad
+ sl: Čad
+ sn: Chad
+ so: Jad
+ sq: Çadi
+ sr: Чад
+ ss: IShedi
+ su: Chad
+ sv: Tchad
+ sw: Chad
+ ta: சாட்
+ te: చాద్
+ tg: Чад
+ th: ประเทศชาด
+ ti: ቻድ
+ tk: Çad
+ tl: Tsad
+ tr: Çad
+ ts: Chad
+ tt: Чад
+ ug: چاد
+ uk: Чад
+ ur: چاڈ
+ uz: Chad
+ vi: Tchad
+ vo: Tjadän
+ wa: Tchad
+ wo: Cadd
+ yi: טשאד
+ yo: Tsad
+ zh: 乍得
+ zu: ITshedi
--- /dev/null
+name:
+ default: Terres australes et antarctiques françaises
+ af: Franse Suidelike en Antarktiese Gebiede
+ an: Territorios Australs Franzeses
+ ar: الأراضي الجنوبية الفرنسية
+ be: Французскія Паўднёвыя тэрыторыі
+ bg: Френски южни и антарктически територии
+ br: Douaroù Aostral hag Antarktikel Frañs
+ ca: Terres Australs i Antàrtiques Franceses
+ cs: Francouzská jižní a antarktická území
+ da: Franske sydlige og Antarktiske territorier
+ de: Französische Süd- und Antarktisgebiete
+ el: Γαλλικά νότια και ανταρκτικά εδάφη
+ en: French Southern Lands
+ eo: Francaj Sudaj Teritorioj
+ es: Tierras Australes y Antárticas Francesas
+ eu: Frantziaren lurralde austral eta antartikoak
+ fi: Ranskan eteläiset ja antarktiset alueet
+ fr: Terres australes et antarctiques françaises
+ fy: Frânske Súdlike en Antarktyske Lannen
+ gl: Terras Austrais e Antárticas Francesas
+ hr: Francuski južni i antarktički teritoriji
+ hu: Francia déli és antarktiszi területek
+ id: Daratan Selatan dan Antarktika Perancis
+ is: Frönsku suðlægu landsvæðin
+ it: Terre Australi e Antartiche Francesi
+ ja: フランス領南方・南極地域
+ ko: 프랑스령 남부와 남극 지역
+ kw: Tiryow Deghow hag Antarktik Frynkek
+ lt: Prancūzijos Pietų Sritys
+ lv: Francijas Dienvidjūru un Antarktikas Zemes
+ nl: Franse Zuidelijke en Antarctische Gebieden
+ "no": De franske sørterritorier
+ oc: Tèrras Australas e Antarticas Francesas
+ pl: Francuskie Terytoria Południowe i Antarktyczne
+ pt: Terras Austrais e Antárticas Francesas
+ ro: Teritoriile australe şi antarctice franceze
+ ru: Французские Южные и Антарктические территории
+ sh: Francuske Južne Teritorije
+ sk: Francúzske južné a antarktické územia
+ sl: Francoske južne in antarktične dežele
+ sr: Француске јужне и антарктичке земље
+ sv: Franska sydterritorierna
+ ta: பிரெஞ்சு தென்னக நிலங்களும் அண்டாடிக் நிலமும்
+ tr: Fransız Güney ve Antarktika Toprakları
+ uk: Французькі Південні та Антарктичні території
+ vi: Vùng đất phía Nam và châu Nam Cực thuộc Pháp
+ zh: 法属南部领地
--- /dev/null
+name:
+ default: Togo
+ af: Togo
+ ak: Togo
+ am: ቶጎ
+ an: Togo
+ ar: توغو
+ az: Toqo
+ ba: Того
+ be: Тога
+ bg: Того
+ bm: Togo
+ bn: টোগো
+ bo: ཊོ་གོ
+ br: Togo
+ bs: Togo
+ ca: Togo
+ ce: Того
+ cs: Togo
+ cv: Того
+ cy: Togo
+ da: Togo
+ de: Togo
+ dv: ޓޯގޯ
+ ee: Togo
+ el: Τόγκο
+ en: Togo
+ eo: Togolando
+ es: Togo
+ et: Togo
+ eu: Togo
+ fa: توگو
+ fi: Togo
+ fr: Togo
+ fy: Togo
+ ga: Tóga
+ gd: Tògo
+ gl: Togo
+ gu: ટોગો
+ gv: Yn Togo
+ ha: Togo
+ he: טוגו
+ hi: टोगो
+ hr: Togo
+ ht: Togo
+ hu: Togo
+ hy: Տոգո
+ id: Togo
+ ie: Togo
+ ig: Togo
+ io: Togo
+ is: Tógó
+ it: Togo
+ ja: トーゴ
+ jv: Togo
+ ka: ტოგო
+ kk: Того
+ kn: ಟೊಗೊ
+ ko: 토고
+ ku: Togo
+ kw: Togo
+ la: Togum
+ lb: Togo
+ li: Togo
+ ln: Togo
+ lt: Togas
+ lv: Togo
+ mi: Toko
+ mk: Того
+ ml: ടോഗോ
+ mn: Того
+ mr: टोगो
+ ms: Togo
+ mt: Togo
+ my: တိုဂိုနိုင်ငံ
+ na: Togo
+ nl: Togo
+ nn: Togo
+ "no": Togo
+ nv: Tʼóogo
+ oc: Tògo
+ or: ଟୋଗୋ
+ os: Того
+ pa: ਟੋਗੋ
+ pl: Togo
+ pt: Togo
+ qu: Tugu
+ rm: Togo
+ ro: Togo
+ ru: Того
+ rw: Togo
+ sa: टोगो
+ sc: Togo
+ se: Togo
+ sg: Togö
+ sh: Togo
+ si: ටෝගෝ
+ sk: Togo
+ sl: Togo
+ sn: Togo
+ so: Togo
+ sq: Togo
+ sr: Того
+ ss: IThogo
+ st: Togo
+ su: Togo
+ sv: Togo
+ sw: Togo
+ ta: டோகோ
+ tg: Того
+ th: ประเทศโตโก
+ ti: ቶጎ
+ tk: Togo
+ tl: Togo
+ tr: Togo
+ ts: Togo
+ tw: Togo
+ ug: توگو
+ uk: Того
+ ur: ٹوگو
+ uz: Togo
+ vi: Togo
+ vo: Togoän
+ wo: Togóo
+ yi: טאגא
+ yo: Tógò
+ zh: 多哥
+ zu: ITogo
--- /dev/null
+name:
+ default: ประเทศไทย
+ af: Thailand
+ am: ታይላንድ
+ an: Tailandia
+ ar: تايلاند
+ as: থাইলেণ্ড
+ az: Tailand
+ ba: Таиланд
+ be: Тайланд
+ bg: Тайланд
+ bn: থাইল্যান্ড
+ bo: ཐའི་ལེན།
+ br: Thailand
+ bs: Tajland
+ ca: Tailàndia
+ ce: Таиланд
+ cs: Thajsko
+ cv: Таиланд
+ cy: Gwlad Thai
+ da: Thailand
+ de: Thailand
+ dv: ސިޔާމު
+ dz: ཐཱའི་ལེནཌ
+ el: Ταϊλάνδη
+ en: Thailand
+ eo: Tajlando
+ es: Tailandia
+ et: Tai
+ eu: Thailandia
+ fa: تایلند
+ fi: Thaimaa
+ fo: Teiland
+ fr: Thaïlande
+ fy: Tailân
+ ga: An Téalainn
+ gd: Dùthaich nan Tàidh
+ gl: Tailandia
+ gn: Tailandia
+ gu: થાઇલેન્ડ
+ gv: Yn Çheer Thai
+ he: תאילנד
+ hi: थाईलैण्ड
+ hr: Tajland
+ ht: Tayilann
+ hu: Thaiföld
+ hy: Թաիլանդ
+ ia: Thailanda
+ id: Thailand
+ ie: Thailand
+ io: Tailando
+ is: Taíland
+ it: Thailandia
+ ja: タイ王国
+ jv: Thailand
+ ka: ტაილანდი
+ ki: Thailand
+ kk: Тайланд
+ kl: Thailandi
+ km: ថៃ
+ kn: ಥೈಲ್ಯಾಂಡ್
+ ko: 태국
+ ks: تھائی لینڈ
+ ku: Taylenda
+ kv: Таиланд
+ kw: Pow Tay
+ la: Thailandia
+ lb: Thailand
+ li: Thailand
+ lo: ປະເທດໄທ
+ lt: Tailandas
+ lv: Taizeme
+ mg: Tailandy
+ mi: Tairana
+ mk: Тајланд
+ ml: തായ്ലാന്റ്
+ mn: Тайланд
+ mr: थायलंड
+ ms: Thailand
+ my: ထိုင်းနိုင်ငံ
+ na: Thailand
+ ne: थाइल्याण्ड
+ nl: Thailand
+ nn: Thailand
+ "no": Thailand
+ nv: Tʼáí Bikéyah
+ oc: Tailàndia
+ or: ଥାଇଲାଣ୍ଡ
+ os: Таиланд
+ pa: ਥਾਈਲੈਂਡ
+ pl: Tajlandia
+ ps: تايلنډ
+ pt: Tailândia
+ qu: Thaysuyu
+ ro: Thailanda
+ ru: Таиланд
+ rw: Tayilande
+ sa: श्यामदेश
+ sd: ٿائيلينڊ
+ se: Thaieana
+ sg: Tailânde
+ sh: Tajland
+ sk: Thajsko
+ sl: Tajska
+ so: Tayland
+ sq: Tajlanda
+ sr: Тајланд
+ ss: IThayilandi
+ su: Thailand
+ sv: Thailand
+ sw: Uthai
+ ta: தாய்லாந்து
+ te: థాయిలాండ్
+ tg: Таиланд
+ th: Muang Thai
+ tk: Tailand
+ tl: Taylandiya
+ tr: Tayland
+ tt: Таиланд
+ tw: Thailand
+ ug: تايلاند
+ uk: Таїланд
+ ur: تھائی لینڈ
+ uz: Tailand
+ vi: Thái Lan
+ vo: Tayän
+ wo: Taaylaand
+ yi: טיילאנד
+ yo: Tháílàndì
+ za: Daigoz
+ zh: 泰国
--- /dev/null
+name:
+ default: Тоҷикистон
+ af: Tadjikistan
+ am: ታጂኪስታን
+ an: Tachiquistán
+ ar: طاجيكستان
+ ay: Tayiksuyu
+ az: Tacikistan
+ ba: Тажикстан
+ be: Таджыкістан
+ bg: Таджикистан
+ bn: তাজিকিস্তান
+ bo: ཐ་ཇི་ཁེ་སི་ཏན།
+ br: Tadjikistan
+ bs: Tadžikistan
+ ca: Tadjikistan
+ ce: Таджикистан
+ cs: Tádžikistán
+ cu: Таджикистанъ
+ cv: Таджикистан
+ cy: Tajikistan
+ da: Tadsjikistan
+ de: Tadschikistan
+ dv: ތަޖިކިސްތާން
+ dz: ཏ་ཇག་ཀིསི་ཏཱན་
+ ee: Tajikistan
+ el: Τατζικιστάν
+ en: Tajikistan
+ eo: Taĝikio
+ es: Tayikistán
+ et: Tadžikistan
+ eu: Tajikistan
+ fa: تاجیکستان
+ fi: Tadžikistan
+ fo: Tadsjikistan
+ fr: Tadjikistan
+ fy: Tadzjikistan
+ ga: An Táidsíceastáin
+ gd: Taidigeastàn
+ gl: Taxiquistán
+ gu: તાજિકિસ્તાન
+ gv: Yn Tajikistaan
+ he: טג'יקיסטן
+ hi: ताजिकिस्तान
+ hr: Tadžikistan
+ ht: Tadjikistan
+ hu: Tádzsikisztán
+ hy: Տաջիկստան
+ ia: Tajikistan
+ id: Tajikistan
+ ie: Tadjikistan
+ io: Tajikistan
+ is: Tadsjikistan
+ it: Tagikistan
+ ja: タジキスタン
+ jv: Tajikistan
+ ka: ტაჯიკეთი
+ kk: Тәжікстан
+ km: តាជីគីស្ថាន
+ kn: ತಜಿಕಿಸ್ತಾನ್
+ ko: 타지키스탄
+ ku: Tacîkistan
+ kv: Таджикистан
+ kw: Pow Tajik
+ ky: Тажикстан
+ la: Tadzikistania
+ lb: Tadjikistan
+ li: Tadzjikistan
+ lt: Tadžikija
+ lv: Tadžikistāna
+ mk: Таџикистан
+ ml: താജിക്കിസ്ഥാൻ
+ mn: Тажикистан
+ mr: ताजिकिस्तान
+ ms: Tajikistan
+ my: တာဂျစ်ကစ္စတန်နိုင်ငံ
+ na: Tadjikitan
+ nl: Tadzjikistan
+ nn: Tadsjikistan
+ "no": Tadsjikistan
+ nv: Tʼajiʼ Bikéyah
+ oc: Tatgiquistan
+ or: ତାଜିକିସ୍ତାନ
+ os: Таджикистан
+ pl: Tadżykistan
+ ps: تاجيکستان
+ pt: Tajiquistão
+ qu: Tayiksuyu
+ ro: Tadjikistan
+ ru: Таджикистан
+ rw: Tajikisitani
+ sa: ताजिकिस्थान
+ se: Tažikistan
+ sh: Tadžikistan
+ si: ටජිකිස්ථාන්
+ sk: Tadžikistan
+ sl: Tadžikistan
+ so: Tadsjikistan
+ sq: Taxhikistani
+ sr: Таџикистан
+ ss: IThajiki
+ su: Tajikistan
+ sv: Tadzjikistan
+ sw: Tajikistan
+ ta: தஜிகிஸ்தான்
+ te: తజికిస్తాన్
+ tg: Тоҷикистон
+ th: ประเทศทาจิกิสถาน
+ tk: Täjigistan
+ tl: Tayikistan
+ tr: Tacikistan
+ tt: Таҗикстан
+ ug: تاجىكىستان
+ uk: Таджикистан
+ ur: تاجکستان
+ uz: Tojikiston
+ vi: Tajikistan
+ vo: Tacikistän
+ wo: Tajikistaan
+ yi: טאדזשיקיסטאן
+ yo: Tajikistan
+ zh: 塔吉克斯坦
--- /dev/null
+name:
+ default: Tokelau
+ am: ቶክላው
+ ar: توكلو
+ be: Такелаў
+ bg: Токелау
+ bm: Tokelo
+ bn: টোকেলাউ
+ br: Tokelau
+ ca: Tokelau
+ cs: Tokelau
+ da: Tokelau
+ de: Tokelau
+ dz: ཏོ་ཀེ་ལའུ་ མཚོ་གླིང
+ ee: Tokelau nutome
+ el: Τοκελάου
+ en: Tokelau
+ eo: Tokelao
+ es: Tokelau
+ fa: توکلائو
+ ff: Tokelaaw
+ fi: Tokelau
+ fr: Tokelau
+ fy: Tokelaû
+ ga: Oileáin Tócalá
+ gu: ટોકેલાઉ
+ ha: Takelau
+ he: טוקלאו
+ hi: तोकेलाउ
+ hr: Tokelau
+ hu: Tokelau-szigetek
+ is: Tókelá
+ ja: トケラウ
+ km: តូខេឡៅ
+ kn: ಟೊಕೆಲಾವ್
+ ko: 토켈라우
+ ks: توکیلاو
+ ku: Tokelau
+ lg: Tokelawu
+ lo: ໂຕເກເລົາ
+ lt: Tokelau
+ lv: Tokelau
+ mg: Tokelao
+ mk: Токелау
+ ml: ടൊകെലാവു
+ mn: Токелау
+ mr: तोकेलाउ
+ mt: Tokelaw
+ ne: तोगो
+ "no": Tokelau
+ or: ଟୋକେଲାଉ
+ pl: Tokelau
+ pt: Toquelau
+ rn: Tokelawu
+ ru: Токелау
+ si: ටොකලාවු
+ sk: Tokelau
+ sr: Токелау
+ sv: Tokelauöarna
+ ta: டோகேலோ
+ te: టోకేలావ్
+ th: โตเกเลา
+ ti: ቶክላው
+ uk: Токелау
+ ur: ٹوکیلاؤ
+ vi: Tokelau
+ yo: Orílẹ́ède Tokelau
+ zh: 托克劳
+ zu: i-Tokelau
--- /dev/null
+name:
+ default: Timór Lorosa'e
+ af: Oos-Timor
+ ar: جمهورية تيمور
+ br: Timor ar Reter
+ ca: Timor Oriental
+ cs: Východní Timor
+ cy: Dwyrain Timor
+ da: Østtimor
+ de: Osttimor
+ el: Ανατολικό Τιμόρ
+ en: East Timor
+ eo: Orienta Timoro
+ es: Timor Oriental
+ et: Ida-Timor
+ fa: تیمور شرقی
+ fi: Itä-Timor
+ fr: Timor oriental
+ fy: East-Timor
+ ga: An Tíomór Thoir
+ gd: Tiomor an Ear
+ he: מזרח טימור
+ hr: Istočni Timor
+ hu: Kelet-Timor
+ id: Timor Leste
+ is: Austur-Tímor
+ it: Timor Est
+ la: Timoria Orientalis
+ li: Oos-Timor
+ lt: Rytų Timoras
+ mn: Зүүн Тимор
+ ms: Timor Timur
+ nl: Oost-Timor
+ "no": Øst-Timor
+ pl: Timor Wschodni
+ pt: Timor-Leste
+ ru: Восточный Тимор
+ se: Nuorta-Timor
+ sk: Východný Timor
+ sl: Vzhodni Timor
+ sv: Östtimor
+ ta: கிழக்குத் திமோர்
+ th: ประเทศติมอร์ตะวันออก
+ tl: Silangan Timor
+ tr: Doğu Timor
+ tt: Көнчыгыш Тимор
+ uk: Східний Тимор
+ vi: Đông Timor
+ zh: 东帝汶 / 東帝汶
--- /dev/null
+name:
+ default: Türkmenistan
+ af: Turkmenistan
+ am: ቱርክመኒስታን
+ an: Turkmenistán
+ ar: تركمانستان
+ av: Туркменистан
+ az: Türkmənistan
+ ba: Төрөкмәнстан
+ be: Туркменістан
+ bg: Туркменистан
+ bn: তুর্কমেনিস্তান
+ bo: ཏུརཀ་མེ་ནི་སུཏན།
+ br: Turkmenistan
+ bs: Turkmenistan
+ ca: Turkmenistan
+ co: Turkmenistan
+ cs: Turkmenistán
+ cv: Туркменистан
+ cy: Turkmenistan
+ da: Turkmenistan
+ de: Turkmenistan
+ dv: ތުރުކުމެނިސްތާން
+ ee: Turkmenistan
+ el: Τουρκμενιστάν
+ en: Turkmenistan
+ eo: Turkmenio
+ es: Turkmenistán
+ et: Türkmenistan
+ eu: Turkmenistan
+ fa: ترکمنستان
+ fi: Turkmenistan
+ fo: Turkmenistan
+ fr: Turkménistan
+ fy: Turkmenistan
+ ga: An Tuircméanastáin
+ gd: Turcmanastàn
+ gl: Turcomenistán
+ gu: તુર્કમેનિસ્તાન
+ gv: Yn Turkmenistaan
+ he: טורקמניסטן
+ hi: तुर्कमेनिस्तान
+ hr: Turkmenistan
+ ht: Tirkmenistan
+ hu: Türkmenisztán
+ hy: Թուրքմենստան
+ ia: Turkmenistan
+ id: Turkmenistan
+ ie: Turkmenistan
+ io: Turkmenistan
+ is: Túrkmenistan
+ it: Turkmenistan
+ ja: トルクメニスタン
+ jv: Turkmenistan
+ ka: თურქმენეთი
+ kk: Түрікменстан
+ km: តួរមិនីស្ថាន
+ kn: ತುರ್ಕಮೆನಿಸ್ತಾನ್
+ ko: 투르크메니스탄
+ ku: Tirkmenistan
+ kv: Туркменистан
+ kw: Pow Turkmen
+ ky: Түркмөнстан
+ la: Turcomannia
+ li: Turkmenistan
+ ln: Turkmenistáni
+ lt: Turkmėnija
+ lv: Turkmenistāna
+ mk: Туркменистан
+ ml: തുർക്മെനിസ്ഥാൻ
+ mn: Туркменистан
+ mr: तुर्कमेनिस्तान
+ ms: Turkmenistan
+ my: တာ့ခ်မင်နစ္စတန်နိုင်ငံ
+ na: Turkmenistan
+ ne: तुर्कमेनिस्तान
+ nl: Turkmenistan
+ nn: Turkmenistan
+ "no": Turkmenistan
+ nv: Tʼóokmen Bikéyah
+ oc: Turcmenistan
+ or: ତୁର୍କମେନିସ୍ଥାନ
+ os: Туркмени
+ pa: ਤੁਰਕਮੇਨਸਤਾਨ
+ pl: Turkmenistan
+ ps: ترکمنستان
+ pt: Turquemenistão
+ qu: Turkminsuyu
+ ro: Turkmenistan
+ ru: Туркменистан
+ rw: Turukimenisitani
+ sa: तुर्कमिनिस्थान
+ se: Turkmenistan
+ sh: Turkmenistan
+ sk: Turkménsko
+ sl: Turkmenistan
+ so: Turkmenistan
+ sq: Turkmenistani
+ sr: Туркменистан
+ ss: IThumekhi
+ su: Turkménistan
+ sv: Turkmenistan
+ sw: Turkmenistan
+ ta: துருக்மெனிஸ்தான்
+ te: తుర్కమేనిస్తాన్
+ tg: Туркманистон
+ th: ประเทศเติร์กเมนิสถาน
+ tk: Türkmenistan
+ tl: Turkmenistan
+ tr: Türkmenistan
+ tt: Төрекмәнстан
+ ug: تۈركمەنىستان
+ uk: Туркменістан
+ ur: ترکمانستان
+ uz: Turkmaniston
+ vi: Turkmenistan
+ vo: Turkmenän
+ wo: Turkumenistaan
+ yi: טורקמעניסטאן
+ yo: Turkmẹ́nìstán
+ zh: 土库曼斯坦
--- /dev/null
+name:
+ default: تونس
+ af: Tunisië
+ am: ቱኒዚያ
+ an: Tunicia
+ ar: تونس
+ az: Tunis
+ ba: Тунис
+ be: Туніс
+ bg: Тунис
+ bm: Tunizi
+ bn: তিউনিসিয়া
+ bo: ཏུ་ནི་ཤི་ཡ།
+ br: Tunizia
+ bs: Tunis
+ ca: Tunísia
+ ce: Тунис
+ cs: Tunisko
+ cv: Тунис
+ cy: Tunisia
+ da: Tunesien
+ de: Tunesien
+ dv: ތޫނިސް
+ ee: Tunisia
+ el: Τυνησία
+ en: Tunisia
+ eo: Tunizio
+ es: Túnez
+ et: Tuneesia
+ eu: Tunisia
+ fa: تونس
+ fi: Tunisia
+ fo: Tunesia
+ fr: Tunisie
+ fy: Tuneezje
+ ga: An Túinéis
+ gd: Tuinisia
+ gl: Tunisia
+ gu: ટ્યુનિશિયા
+ gv: Yn Tooneesh
+ he: תוניסיה
+ hi: ट्यूनिशिया
+ hr: Tunis
+ ht: Tinizi
+ hu: Tunézia
+ hy: Թունիս
+ id: Tunisia
+ ie: Tunisia
+ io: Tunizia
+ is: Túnis
+ it: Tunisia
+ ja: チュニジア
+ jv: Tunisia
+ ka: ტუნისი
+ kg: Tunisia
+ kk: Тунис
+ kn: ಟುನೀಶಿಯ
+ ko: 튀니지
+ ks: تونس
+ ku: Tûnis
+ kw: Tunisi
+ ky: Тунис
+ la: Tunesia
+ lb: Tunesien
+ li: Tunesië
+ ln: Tunisia
+ lt: Tunisas
+ lv: Tunisija
+ mg: Tonizia
+ mi: Tūnihia
+ mk: Тунис
+ ml: ടുണീഷ്യ
+ mn: Тунис
+ mr: ट्युनिसिया
+ ms: Tunisia
+ mt: Tuneżija
+ my: တူနီးရှားနိုင်ငံ
+ nl: Tunesië
+ nn: Tunisia
+ "no": Tunisia
+ oc: Tunisia
+ or: ଟ୍ୟୁନିସିଆ
+ os: Тунис
+ pa: ਤੁਨੀਸੀਆ
+ pl: Tunezja
+ ps: تونس
+ pt: Tunísia
+ qu: Tunisya
+ rm: Tunesia
+ ro: Tunisia
+ ru: Тунис
+ rw: Tunisiya
+ sa: टुनिशिया
+ sc: Tunisia
+ se: Tunisia
+ sg: Tunizïi
+ sh: Tunis
+ sk: Tunisko
+ sl: Tunizija
+ sn: Tunisia
+ so: Tunisiya
+ sq: Tunizia
+ sr: Тунис
+ ss: IThunisiya
+ su: Tunisia
+ sv: Tunisien
+ sw: Tunisia
+ ta: துனீசியா
+ te: ట్యునీషియా
+ tg: Тунис
+ th: ประเทศตูนิเซีย
+ ti: ቱኒዢያ
+ tk: Tunis
+ tl: Tunisya
+ tr: Tunus
+ ts: Tunisia
+ tt: Тунис
+ ug: تۇنىس
+ uk: Туніс
+ ur: تونس
+ uz: Tunis
+ vi: Tunisia
+ vo: Tünisän
+ wa: Tunizeye
+ wo: Tiniisi
+ yi: טוניסיע
+ yo: Tùnísíà
+ zh: 突尼西亞
+ zu: ITunisia
--- /dev/null
+name:
+ default: Tonga
+ af: Tonga
+ am: ቶንጋ
+ an: Tonga
+ ar: تونجا
+ az: Tonqa
+ ba: Тонга
+ be: Тонга
+ bg: Тонга
+ bn: টোঙ্গা
+ bo: ཊོང་ག
+ br: Tonga
+ bs: Tonga
+ ca: Tonga
+ ce: Тонга
+ cs: Tonga
+ cu: Тонга
+ cy: Tonga
+ da: Tonga
+ de: Tonga
+ dv: ޓޮންގާ
+ el: Τόνγκα
+ en: Tonga
+ eo: Tongo
+ es: Tonga
+ et: Tonga
+ eu: Tonga
+ fa: تونگا
+ fi: Tonga
+ fo: Tonga
+ fr: Tonga
+ fy: Tonga
+ ga: Tonga
+ gd: Tonga
+ gl: Tonga
+ gv: Yn Tongey
+ he: טונגה
+ hi: टोंगा
+ hr: Tonga
+ ht: Tonga
+ hu: Tonga
+ hy: Տոնգա
+ ia: Tonga
+ id: Tonga
+ io: Tonga
+ is: Tonga
+ it: Tonga
+ ja: トンガ
+ jv: Tonga
+ ka: ტონგა
+ kk: Тонга
+ kn: ಟೋಂಗಾ
+ ko: 통가
+ ku: Tonga
+ kw: Tonga
+ la: Tonga
+ lb: Tonga
+ li: Tonga
+ lt: Tonga
+ lv: Tonga
+ mk: Тонга
+ ml: ടോങ്ക
+ mn: Тонга
+ mr: टोंगा
+ ms: Tonga
+ mt: Tonga
+ my: တုံဂါနိုင်ငံ
+ nl: Tonga
+ nn: Tonga
+ "no": Tonga
+ nv: Tʼónga
+ oc: Tònga
+ or: ଟୋଙ୍ଗା
+ os: Тонгæ
+ pa: ਟੋਂਗਾ
+ pl: Tonga
+ pt: Tonga
+ qu: Tunqa
+ rm: Tonga
+ ro: Tonga
+ ru: Тонга
+ rw: Tonga
+ sa: टोंगा
+ se: Tonga
+ sh: Tonga
+ sk: Tonga
+ sl: Tonga
+ sm: Toga
+ sq: Tonga
+ sr: Тонга
+ su: Tonga
+ sv: Tonga
+ sw: Tonga
+ ta: தொங்கா
+ tg: Тонга
+ th: ประเทศตองกา
+ tl: Tonga
+ to: Tonga
+ tr: Tonga
+ ts: Tonga
+ tw: Tonga
+ ty: To’a
+ ug: Ton’ga
+ uk: Тонга
+ ur: ٹونگا
+ uz: Tonga
+ vi: Tonga
+ vo: Tonguäns
+ wo: Tonga
+ yo: Tóngà
+ zh: 東加
--- /dev/null
+name:
+ default: Türkiye
+ ab: Ҭырқәтәыла
+ af: Turkye
+ ak: Turki
+ am: ቱርክ
+ an: Turquía
+ ar: تركيا
+ av: Туркия
+ ay: Turkiya
+ az: Türkiyə
+ ba: Төркиә
+ be: Турцыя
+ bg: Турция
+ bi: Turkey
+ bn: তুরস
+ bo: ཏུར་ཀི།
+ br: Turkia
+ bs: Turska
+ ca: Turquia
+ ce: Туркойчоь
+ cs: Turecko
+ cu: Тѷрци
+ cv: Турци
+ cy: Twrci
+ da: Tyrkiet
+ de: Türkei
+ dv: ތުރުކީވިލާތް
+ ee: Turkey
+ el: Τουρκία
+ en: Turkey
+ eo: Turkio
+ es: Turquía
+ et: Türgi
+ eu: Turkia
+ fa: ترکیه
+ fi: Turkki
+ fo: Turkaland
+ fr: Turquie
+ fy: Turkije
+ ga: An Tuirc
+ gd: An Tuirc
+ gl: Turquía
+ gn: Tuykia
+ gu: તુર્કસ્તાન
+ gv: Yn Turkee
+ ha: Turkiyya
+ he: טורקיה
+ hi: तुर्की
+ hr: Turska
+ ht: Tiki
+ hu: Törökország
+ hy: Թուրքիա
+ ia: Turchia
+ id: Turki
+ ie: Turcia
+ ik: Turkey
+ io: Turkia
+ is: Tyrkland
+ it: Turchia
+ ja: トルコ
+ jv: Turki
+ ka: თურქეთი
+ kg: Turki
+ ki: Turkey
+ kk: Түркия
+ kl: Tyrkia
+ kn: ಟರ್ಕಿ
+ ko: 터키
+ ku: Tirkiye
+ kv: Турция
+ kw: Turki
+ ky: Түркия Республикасы
+ la: Turcia
+ lb: Tierkei
+ lg: Buturuki
+ li: Turkije
+ ln: Turkí
+ lt: Turkija
+ lv: Turcija
+ mg: Torkia
+ mi: Tākei
+ mk: Турција
+ ml: തുർക്കി
+ mn: Турк
+ mr: तुर्कस्तान
+ ms: Turki
+ mt: Turkija
+ my: တူရကီနိုင်ငံ
+ na: Terki
+ ne: टर्की
+ nl: Turkije
+ nn: Tyrkia
+ "no": Tyrkia
+ nv: Tʼóok Bikéyah
+ oc: Turquia
+ or: ତୁର୍କୀ
+ os: Турк
+ pa: ਤੁਰਕੀ
+ pl: Turcja
+ ps: تورکيه
+ pt: Turquia
+ qu: Turkiya
+ rm: Tirchia
+ rn: Turukiya
+ ro: Turcia
+ ru: Турция
+ rw: Turukiya
+ sa: तुर्की
+ sc: Turkia
+ se: Durka
+ sh: Turska
+ si: තුර්කිය
+ sk: Turecko
+ sl: Turčija
+ so: Turki
+ sq: Turqia
+ sr: Турска
+ ss: IThekhi
+ su: Turki
+ sv: Turkiet
+ sw: Uturuki
+ ta: துருக்கி
+ te: టర్కీ
+ tg: Туркия
+ th: ประเทศตุรกี
+ tk: Türkiýe
+ tl: Turkiya
+ tr: Türkiye
+ tt: Төркия
+ tw: Turkey
+ ug: تۈركىيە جۇمھۇرىيىتى
+ uk: Туреччина
+ ur: ترکی
+ uz: Turkiya
+ vi: Thổ Nhĩ Kỳ
+ vo: Türkän
+ wa: Tourkeye
+ wo: Tirki
+ yi: טערקיי
+ yo: Túrkì
+ za: Dujwjgiz
+ zh: 土耳其
+ zu: ITheki
--- /dev/null
+name:
+ default: Trinidad and Tobago
+ af: Trinidad en Tobago
+ ar: ترينيداد وتوباغو
+ be: Трынідад і Табага
+ br: Trinidad-ha-Tobago
+ ca: Trinitat i Tobago
+ cs: Trinidad a Tobago
+ cy: Trinidad a Tobago
+ da: Trinidad og Tobago
+ de: Trinidad und Tobago
+ en: Trinidad and Tobago
+ eo: Trinidado kaj Tobago
+ es: Trinidad y Tobago
+ et: Trinidad ja Tobago
+ fa: ترینیداد و توباگو
+ fi: Trinidad ja Tobago
+ fr: Trinité-et-Tobago
+ fy: Trinidad en Tobago
+ ga: Oileán na Tríonóide agus Tobága
+ gd: Trianaid agus Tobago
+ he: טרינידד וטובגו
+ hr: Trinidad i Tobago
+ hu: Trinidad és Tobago
+ id: Trinidad dan Tobago
+ is: Trínidad og Tóbagó
+ it: Trinidad e Tobago
+ ja: トリニダード・トバゴ
+ la: Trinitas et Tabacum
+ lt: Trinidadas ir Tobagas
+ mn: Тринидад ба Тобаго
+ nl: Trinidad en Tobago
+ pl: Trynidad i Tobago
+ pt: Trindade e Tobago
+ ru: Тринидад и Тобаго
+ se: Trinidad ja Tobago
+ sk: Trinidad a Tobago
+ sl: Trinidad in Tobago
+ sv: Trinidad och Tobago
+ ta: டிரினிடாட் மற்றும் டொபாகோ
+ th: ประเทศตรินิแดดและโตเบโก
+ tr: Trinidad ve Tobago
+ uk: Тринідад і Тобаго
+ vi: Trinidad và Tobago
+ vo: Trinidadeän e Tobageäns
+ zh: 特立尼达和多巴哥
--- /dev/null
+name:
+ default: Tuvalu
+ am: ቱቫሉ
+ ar: توفالو
+ be: Тувалу
+ bg: Тувалу
+ bn: টুভালু
+ bo: ཐུ་ཝ་ལུ།
+ br: Tuvalu
+ ca: Tuvalu
+ cs: Tuvalu
+ cy: Twfalw
+ da: Tuvalu
+ de: Tuvalu
+ dz: ཏུ་ཝ་ལུ
+ ee: Tuvalu nutome
+ el: Τουβαλού
+ en: Tuvalu
+ eo: Tuvalo
+ es: Tuvalu
+ fa: تووالو
+ ff: Tuwaluu
+ fi: Tuvalu
+ fr: Tuvalu
+ fy: Tûvalû
+ ga: Tuvalu
+ gd: Tubhalu
+ gu: તુવાલુ
+ gv: Tuvalu
+ ha: Tubalu
+ he: טובלו
+ hi: तुवालु
+ hr: Tuvalu
+ hu: Tuvalu
+ hy: Տուվալու
+ is: Túvalú
+ ja: ツバル
+ ka: ტუვალუ
+ km: ទូវ៉ាលូ
+ kn: ಟುವಾಲು
+ ko: 투발루
+ ks: توٗوالوٗ
+ ku: Tûvalû
+ lo: ຕູວາລູ
+ lt: Tuvalu
+ lv: Tuvalu
+ mg: Tovalò
+ mk: Тувалу
+ ml: തുവാലു
+ mn: Тувалу
+ mr: टुवालु
+ ne: तुभालु
+ "no": Tuvalu
+ oc: Tuvalu
+ or: ଟୁଭାଲୁ
+ pl: Tuvalu
+ pt: Tuvalu
+ ru: Тувалу
+ se: Tuvalu
+ sg: Tüvalü
+ si: ටුවාලූ
+ sk: Tuvalu
+ sr: Тувалу
+ sv: Tuvalu
+ ta: துவாலூ
+ te: టువాలు
+ th: ประเทศตูวาลู
+ ti: ቱቫሉ
+ to: Tūvalu
+ uk: Тувалу
+ ur: ٹووالو
+ vo: Tuvaluäns
+ yo: Orílẹ́ède Tufalu
+ zh: 吐瓦鲁
+ zu: i-Tuvalu
--- /dev/null
+name:
+ default: 臺灣
+ af: Taiwan
+ ak: Taiwan
+ am: ታይዋን
+ an: Taiwán
+ ar: تايوان
+ as: টাইৱান
+ az: Tayvan
+ be: Тайв́ань
+ bg: Тайван
+ bh: ताइवान
+ bm: Tayiwani
+ bn: তাইওয়ান
+ bo: ཐེ་ཝན
+ br: Taiwan
+ bs: Tajvan
+ ca: Taiwan
+ ce: Тайвань
+ cs: Tchaj-wan
+ cv: Тайва́нь
+ cy: Taiwan
+ da: Taiwan
+ de: Taiwan
+ dv: ޖުމްހޫރީ ޗައިނާ
+ dz: ཏའི་ཝཱན་
+ ee: Taiwan
+ el: Ταϊβάν
+ en: Taiwan
+ eo: Tajvano
+ es: Taiwán
+ et: Taiwan
+ eu: Taiwan
+ fa: تایوان
+ ff: Taywaan
+ fi: Taiwan
+ fo: Teivan
+ fr: Taïwan
+ fy: Taiwan
+ ga: an Téaváin
+ gd: Taidh-Bhàn
+ gl: Taiwán
+ gu: તાઇવાન
+ gv: yn Taiwaan
+ he: טאיוואן
+ hi: ताइवान
+ hr: Tajvan
+ ht: Taywann
+ hu: Tajvan
+ hy: Թայվան
+ ia: Taiwan
+ id: Taiwan
+ ie: Taiwan
+ io: Taiwan
+ is: Taívan
+ it: Taiwan
+ ja: 台湾
+ jv: Taiwan
+ ka: ტაივანი
+ ki: Taiwani
+ kk: Тайвань
+ kl: Taiwan
+ km: តៃវ៉ាន់
+ kn: ಟೈವಾನ್
+ ko: 타이완
+ ku: Taywan
+ kw: Taywan
+ ky: Тайвань
+ la: Taivania
+ lb: Taiwan
+ lg: Tayiwani
+ li: Taiwan
+ ln: Taiwan
+ lo: ໄຕ້ຫວັນ
+ lt: Taivanas
+ lv: Taivāna
+ mg: Taiwan
+ mi: Taiwana
+ mk: Тајван
+ ml: തായ്വാൻ
+ mn: Тайвань
+ mr: तैवान
+ ms: Taiwan
+ mt: Tajwan
+ my: ထိုင်ဝမ်
+ ne: ताइवान
+ nl: Taiwan
+ nn: Taiwan
+ "no": Taiwan
+ oc: Taiwan
+ or: ତାଇୱାନ
+ os: Тайван
+ pa: ਤਾਈਵਾਨ
+ pi: तैवान
+ pl: Tajwan
+ ps: تایوان
+ pt: Taiwan
+ qu: Taiwán
+ rm: Taiwan
+ rn: Tayiwani
+ ro: Taiwan
+ ru: Тайвань
+ rw: Tayiwani
+ sa: तैवान
+ se: Taiwan
+ sg: Tâiwâni
+ sh: Tajvan
+ si: තායිවානය
+ sk: Taiwan
+ sl: Tajvan
+ sn: Taiwan
+ so: Taywan
+ sq: Tajvani
+ sr: Тајван
+ ss: iThayiwani
+ su: Tiongkok
+ sv: Taiwan
+ sw: Taiwan
+ te: తైవాన్
+ tg: Тайва́н
+ th: ไต้หวัน
+ tk: Taýwan
+ tl: Taiwan
+ to: Taiuani
+ tr: Tayvan
+ tt: Тайва́нь
+ ug: تەيۋەن
+ uk: Тайва́нь
+ ur: تائیوان
+ uz: Tayvan
+ vi: Đài Loan
+ vo: Tayvän
+ wo: Taaywaan
+ yi: טייוואַן
+ yo: Taiwan
+ za: Daizvanh
+ zh: 臺灣
+ zu: i-Taiwan
--- /dev/null
+name:
+ default: Tanzania
+ af: Tanzanië
+ ak: Tanzania
+ am: ታንዛኒያ
+ an: Tanzania
+ ar: تنزانيا
+ az: Tanzaniya
+ ba: Танзания
+ be: Танзанія
+ bg: Танзания
+ bm: Tanzania
+ bn: তানজানিয়া
+ bo: ཏན་ཛ་ནི་ཡ།
+ br: Tanzania
+ bs: Tanzanija
+ ca: Tanzània
+ ce: Танзани
+ cs: Tanzanie
+ cv: Танзани
+ cy: Tanzania
+ da: Tanzania
+ de: Tansania
+ dv: ޓެންޒޭނިއާ
+ ee: Tanzania
+ el: Τανζανία
+ en: Tanzania
+ eo: Tanzanio
+ es: Tanzania
+ et: Tansaania
+ eu: Tanzania
+ fa: تانزانیا
+ fi: Tansania
+ fo: Tansania
+ fr: Tanzanie
+ fy: Tanzania
+ ga: An Tansáin
+ gd: Tansainìa
+ gl: Tanzania
+ gu: ટાન્ઝાનિયા
+ gv: Tanzania
+ he: טנזניה
+ hi: तंज़ानिया
+ hr: Tanzanija
+ ht: Tanzani
+ hu: Tanzánia
+ hy: Տանզանիա
+ ia: Tanzania
+ id: Tanzania
+ ie: Tanzania
+ io: Tanzania
+ is: Tansanía
+ it: Tanzania
+ ja: タンザニア
+ jv: Tanzania
+ ka: ტანზანია
+ kg: Tanzania
+ ki: Tanzania
+ kk: Танзания
+ kl: Tanzania
+ kn: ಟಾಂಜಾನಿಯ
+ ko: 탄자니아
+ ku: Tanzanya
+ kw: Tanzania
+ la: Tanzania
+ lb: Tansania
+ li: Tanzania
+ ln: Tanzania
+ lt: Tanzanija
+ lv: Tanzānija
+ mg: Tanzania
+ mi: Tānahia
+ mk: Танзанија
+ ml: ടാൻസാനിയ
+ mn: Танзани
+ mr: टांझानिया
+ ms: Tanzania
+ mt: Tanżanija
+ my: တန်ဇေးနီးယားနိုင်ငံ
+ ne: तन्जानिया
+ nl: Tanzania
+ nn: Tanzania
+ "no": Tanzania
+ nv: Tʼanzanííya
+ ny: Tanzania
+ oc: Tanzania
+ om: Tanzania
+ or: ତାଞ୍ଜାନିଆ
+ os: Танзани
+ pa: ਤਨਜ਼ਾਨੀਆ
+ pl: Tanzania
+ pt: Tanzânia
+ qu: Tansanya
+ rm: Tansania
+ rn: Tanzaniya
+ ro: Tanzania
+ ru: Танзания
+ rw: Tanzaniya
+ sa: टंजानिया
+ sc: Tanzània
+ se: Tanzania
+ sg: Tanzanïi
+ sh: Tanzanija
+ sk: Tanzánia
+ sl: Tanzanija
+ sn: Tanzania
+ so: Tansaaniya
+ sq: Tanzania
+ sr: Танзанија
+ ss: IThanzaniya
+ st: Tanzania
+ su: Tanzania
+ sv: Tanzania
+ sw: Tanzania
+ ta: தன்சானியா
+ te: టాంజానియా
+ tg: Танзания
+ th: ประเทศแทนซาเนีย
+ ti: ታንዛኒያ
+ tk: Tanzaniýa
+ tl: Tanzania
+ tr: Tanzanya
+ ts: Tanzania
+ tt: Танзания
+ tw: Tanzania
+ ug: تانزانىيە
+ uk: Танзанія
+ ur: تنزانیہ
+ uz: Tanzaniya
+ vi: Tanzania
+ vo: Tansanän
+ wo: Tansani
+ yi: טאנזאניע
+ yo: Tànsáníà
+ zh: 坦桑尼亚
+ zu: ITanzania
--- /dev/null
+name:
+ default: Україна
+ ab: Украина
+ af: Oekraïne
+ am: ዩክሬን
+ an: Ucraína
+ ar: أوكرانيا
+ az: Ukrayna
+ ba: Украина
+ be: Украіна
+ bg: Украйна
+ bi: Ukraine
+ bn: ইউক্রেন
+ bo: ཨུཀ་རཡི་ནི།
+ br: Ukraina
+ bs: Ukrajina
+ ca: Ucraïna
+ ce: Украина
+ cs: Ukrajina
+ cu: Оукраина
+ cv: Украина
+ cy: Wcráin
+ da: Ukraine
+ de: Ukraine
+ dv: ޔުކްރެއިން
+ ee: Ukraine
+ el: Ουκρανία
+ en: Ukraine
+ eo: Ukrainio
+ es: Ucrania
+ et: Ukraina
+ eu: Ukraina
+ fa: اوکراین
+ fi: Ukraina
+ fo: Ukraina
+ fr: Ukraine
+ fy: Oekraïne
+ ga: An Úcráin
+ gd: An Ucràin
+ gl: Ucraína
+ gn: Ukyaña
+ gu: યુક્રેન
+ gv: Yn Ookraan
+ he: אוקראינה
+ hi: युक्रेन
+ hr: Ukrajina
+ ht: Ikrèn
+ hu: Ukrajna
+ hy: Ուկրաինա
+ ia: Ukraina
+ id: Ukraina
+ ie: Ucraina
+ ig: Yukrain
+ io: Ukrainia
+ is: Úkraína
+ it: Ucraina
+ ja: ウクライナ
+ jv: Ukraina
+ ka: უკრაინა
+ kg: Ukrayina
+ kk: Украина
+ kl: Ukraine
+ km: អ៊ុយក្រែន
+ kn: ಯುಕ್ರೇನ್
+ ko: 우크라이나
+ ku: Ûkrayna
+ kv: Украина
+ kw: Ukrayn
+ ky: Украина
+ la: Ucraina
+ lb: Ukrain
+ li: Oekraïne
+ ln: Ukraine
+ lt: Ukraina
+ lv: Ukraina
+ mg: Okraina
+ mi: Ūkareinga
+ mk: Украина
+ ml: ഉക്രൈൻ
+ mn: Украйн
+ mr: युक्रेन
+ ms: Ukraine
+ mt: Ukrajna
+ my: ယူကရိန်းနိုင်ငံ
+ na: Ukraine
+ ne: युक्रेन
+ nl: Oekraïne
+ nn: Ukraina
+ "no": Ukraina
+ nv: Yóókwein
+ oc: Ucraïna
+ or: ୟୁକ୍ରେନ
+ os: Украинæ
+ pa: ਯੂਕ੍ਰੇਨ
+ pl: Ukraina
+ ps: اوکراین
+ pt: Ucrânia
+ qu: Ukranya
+ rm: Ucraina
+ ro: Ucraina
+ ru: Украина
+ rw: Ikerene
+ sc: Ucraina
+ se: Ukraina
+ sh: Ukrajina
+ sk: Ukrajina
+ sl: Ukrajina
+ sm: Ukraine
+ sn: Ukraine
+ so: Ukrain
+ sq: Ukraina
+ sr: Украјина
+ ss: IYukhureni
+ su: Ukraina
+ sv: Ukraina
+ sw: Ukraine
+ ta: உக்ரைன்
+ te: ఉక్రెయిన్
+ tg: Украйина
+ th: ประเทศยูเครน
+ tk: Ukraina
+ tl: Ukranya
+ tr: Ukrayna
+ ts: Ukraine
+ tt: Украина
+ tw: Ukraine
+ ug: ئۇكرائىنا
+ uk: Україна
+ ur: یوکرین
+ uz: Ukraina
+ vi: Ukraina
+ vo: Lukrayän
+ wa: Oucrinne
+ wo: Ukreen
+ yi: אוקראינע
+ yo: Ukréìn
+ zh: 乌克兰/烏克蘭
--- /dev/null
+name:
+ default: Uganda
+ af: Uganda
+ am: ዩጋንዳ
+ an: Uganda
+ ar: أوغندا
+ az: Uqanda
+ ba: Уганда
+ be: Уганда
+ bg: Уганда
+ bm: Uganda
+ bn: উগান্ডা
+ bo: ཨུ་གན་ད།
+ br: Ouganda
+ bs: Uganda
+ ca: Uganda
+ ce: Уганда
+ cs: Uganda
+ cv: Уганда
+ cy: Uganda
+ da: Uganda
+ de: Uganda
+ dv: ޔުގެންޑާ
+ ee: Uganda
+ el: Ουγκάντα
+ en: Uganda
+ eo: Ugando
+ es: Uganda
+ et: Uganda
+ eu: Uganda
+ fa: اوگاندا
+ fi: Uganda
+ fo: Uganda
+ fr: Ouganda
+ fy: Uganda
+ ga: Uganda
+ gd: Uganda
+ gl: Uganda
+ gv: Ooganda
+ ha: Uganda
+ he: אוגנדה
+ hi: युगाण्डा
+ hr: Uganda
+ ht: Ouganda
+ hu: Uganda
+ hy: Ուգանդա
+ ia: Uganda
+ id: Uganda
+ ie: Uganda
+ io: Uganda
+ is: Úganda
+ it: Uganda
+ ja: ウガンダ
+ jv: Uganda
+ ka: უგანდა
+ kg: Uganda
+ ki: Uganda
+ kk: Уганда
+ kl: Uganda
+ kn: ಉಗಾಂಡ
+ ko: 우간다
+ ku: Ûganda
+ kw: Ouganda
+ la: Uganda
+ lb: Uganda
+ lg: Yuganda
+ li: Oeganda
+ ln: Uganda
+ lt: Uganda
+ lv: Uganda
+ mi: Ukānga
+ mk: Уганда
+ ml: ഉഗാണ്ട
+ mn: Уганда
+ mr: युगांडा
+ ms: Uganda
+ mt: Uganda
+ my: ယူဂန်းဒါးနိုင်ငံ
+ nl: Oeganda
+ nn: Uganda
+ "no": Uganda
+ nv: Yogénda
+ oc: Oganda
+ or: ଉଗାଣ୍ଡା
+ os: Угандæ
+ pa: ਯੁਗਾਂਡਾ
+ pl: Uganda
+ pt: Uganda
+ qu: Uganda
+ rm: Uganda
+ ro: Uganda
+ ru: Уганда
+ rw: Ubugande
+ sc: Uganda
+ se: Uganda
+ sg: Ugandäa
+ sh: Uganda
+ sk: Uganda
+ sl: Uganda
+ sn: Uganda
+ so: Yugandha
+ sq: Uganda
+ sr: Уганда
+ ss: IBuganda
+ su: Uganda
+ sv: Uganda
+ sw: Uganda
+ ta: உகாண்டா
+ te: ఉగాండా
+ tg: Уганда
+ th: ประเทศยูกันดา
+ tk: Uganda
+ tl: Uganda
+ tr: Uganda
+ ts: Uganda
+ tt: Уганда
+ ug: ئۇگاندا
+ uk: Уганда
+ ur: یوگنڈا
+ uz: Uganda
+ vi: Uganda
+ vo: Lugandayän
+ wo: Ugandaa
+ yi: אוגאנדע
+ yo: Ùgándà
+ zh: 乌干达
+ zu: IYuganda
--- /dev/null
+name:
+ default: United States Minor Outlying Islands
--- /dev/null
+short_name:
+ default: USA
+name:
+ default: United States
+ ab: Америка Еиду Аштатқәа
+ af: Verenigde State van Amerika
+ am: የተባበሩት የአሜሪካ ግዛቶች
+ an: Estatos Unitos d'America
+ ar: الولايات المتّحدة الأمريكيّة
+ as: মাৰ্কিন যুক্তৰাষ্ট্ৰ
+ av: Америкалъул Цолъарал Штатал
+ ay: Istadus Unidus
+ az: Amerika Birləşmiş Ştatları
+ ba: Америка Ҡушма Штаттары
+ be: Злучаныя Штаты Амерыкі
+ bg: Съединени американски щати
+ bi: Yunaeted Stet blong Amerika
+ bm: Amerika ka Kelenyalen Jamanaw
+ bn: মার্কিন যুক্তরাষ্ট্র
+ bo: ཨ་མེ་རི་ཁ་རྒྱལ་ཕྲན་མཉམ་འབྲེལ་རྒྱལ་ཁབ།
+ br: Stadoù-Unanet Amerika
+ bs: Sjedinjene Američke Države
+ ca: Estats Units d'Amèrica
+ ce: Iамерка пачхьалк
+ co: Stati Uniti d'America
+ cs: Spojené státy americké
+ cu: Амєрика́ньскꙑ Ѥдьнѥнꙑ́ Дрьжа́вꙑ
+ cv: Америкăри Пĕрлешӳллĕ Штатсем
+ cy: Unol Daleithiau America
+ da: Amerikas Forenede Stater
+ de: Vereinigte Staaten von Amerika
+ dv: އެމެރިކާ
+ dz: ཡུ་ནའིཊེཊ་སི་ཊེས
+ ee: United States
+ el: Ηνωμένες Πολιτείες της Αμερικής
+ en: United States
+ eo: Usono
+ es: Estados Unidos de América
+ et: Ameerika Ühendriigid
+ eu: Ameriketako Estatu Batuak
+ fa: ایالات متحده آمریکا
+ ff: Dowlaaji Dentuɗi
+ fi: Amerikan yhdysvallat
+ fo: Sambandsríkið Amerika
+ fr: États-Unis d'Amérique
+ fy: Feriene Steaten fan Amearika
+ ga: Stáit Aontaithe Mheiriceá
+ gd: Na Stàitean Aonaichte
+ gl: Estados Unidos de América
+ gn: Tetã peteĩ reko Amérikagua
+ gu: સંયુક્ત રાજ્ય અમેરિકા
+ gv: Steatyn Unnaneysit America
+ ha: kunkiyar taraiyar Amurika
+ he: ארצות הברית
+ hi: संयुक्त राज्य अमेरिका
+ hr: Sjedinjene Američke Države
+ ht: Etazini
+ hu: Amerikai Egyesült Államok
+ hy: Ամերիկայի Միացյալ Նահանգներ
+ ia: Statos Unite de America
+ id: Amerika Serikat
+ ie: Unit States de America
+ ig: Njikota Obodo Amerika
+ ik: United States of America
+ io: Unionita Stati di Amerika
+ is: Bandaríki Norður-Ameríku
+ it: Stati Uniti d'America
+ iu: ᐊᒥᐊᓕᑲ
+ ja: アメリカ合衆国
+ jv: Amérika Sarékat
+ ka: ამერიკის შეერთებული შტატები
+ ki: United States
+ kk: Америка Құрама Штаттары
+ kl: Naalagaaffeqatigiit
+ km: សហរដ្ឋអាមេរិក
+ kn: ಅಮೇರಿಕ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನ
+ ko: 미국
+ ks: संयुक्त राज्य अमेरिका
+ ku: Dewletên Yekbûyî yên Amerîkayê
+ kv: Америкаса Ӧтувтӧм Штатъяс
+ kw: Statys Unys Amerika
+ ky: Америка Кошмо Штаттары
+ la: Civitates Foederatae Americae
+ lb: Vereenegt Staate vun Amerika
+ lg: Amereka
+ li: Vereinegde State van Amerika
+ ln: Lisangá lya Ameríka
+ lo: ສະຫະລັດອາເມລິກາ
+ lt: Jungtinės Amerikos Valstijos
+ lv: Amerikas Savienotās Valstis
+ mg: Etazonia
+ mi: Amerika
+ mk: Соединети Американски Држави
+ ml: അമേരിക്കന് ഐക്യനാടുകള്
+ mn: Америкийн Нэгдсэн Улс
+ mo: Стателе Уните але Америчий
+ mr: अमेरिकेची संयुक्त संस्थाने
+ ms: Amerika Syarikat
+ mt: Stati Uniti tal-Amerika
+ my: အမေရိကန်ပြည်ထောင်စု
+ na: Eben Merika
+ nb: USA
+ ne: संयुक्त राज्य अमेरिका
+ nl: Verenigde Staten
+ nn: USA
+ "no": Amerikas forente stater
+ nv: Wááshindoon Bikéyah Ałhidadiidzooígíí
+ oc: Estats Units d'America
+ om: USA
+ or: ଯୁକ୍ତରାଷ୍ଟ୍ର ଆମେରିକା
+ os: Америкæйы Иугонд Штаттæ
+ pa: ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ
+ pl: Stany Zjednoczone
+ ps: د امريکا متحده ايالات
+ pt: Estados Unidos da América
+ qu: Hukllachasqa Amirika Suyukuna
+ rm: Stadis Unids da l'America
+ rn: Leta Zunze Ubumwe za Amerika
+ ro: Statele Unite ale Americii
+ ru: Соединённые Штаты Америки
+ rw: Leta Zunze Ubumwe z’Amerika
+ sa: संयुक्तानि राज्यानि
+ sc: Istados Unidos de America
+ sd: آمريڪا
+ se: Amerihká ovttastuvvan stáhtat
+ sg: ÂKödörö-ôko tî Amerîka
+ sh: Sjedinjene Američke Države
+ si: අ'මෙරිකාවේ එක්සත් රාජ්යයන්
+ sk: Spojené štáty americké
+ sl: Združene države Amerike
+ sm: Iunaite Sitete o Amerika
+ sn: United States of America
+ so: Mareykanka
+ sq: Shtetet e Bashkuara të Amerikës
+ sr: Сједињене Америчке Државе
+ ss: IMelika
+ su: Amérika Sarikat
+ sv: Amerikas Förenta Stater
+ sw: Muungano wa Madola ya Amerika
+ ta: அமெரிக்க ஐக்கிய நாடு
+ te: అమెరికా సంయుక్త రాష్ట్రాలు
+ tg: Иёлоти Муттаҳидаи Амрико
+ th: สหรัฐอเมริกา
+ tk: Amerikanyň Birleşen Ştatlary
+ tl: Estados Unidos
+ tn: USA
+ to: Puleʻanga Fakataha 'o 'Amelika
+ tr: Amerika Birleşik Devletleri
+ ts: United States
+ tt: Америка Кушма Штатлары
+ tw: USA
+ ty: Fenua Marite
+ ug: ئامېرىكا قوشما شتاتلىرى
+ uk: Сполучені Штати Америки
+ ur: ریاستہائے متحدہ امریکہ
+ uz: Amerika Qoʻshma Shtatlari
+ vi: Hoa Kỳ
+ vo: Lamerikän
+ wa: Estats Unis d' Amerike
+ wo: Diwaan-yu-Bennoo yu Aamerig
+ xh: IYunayithedi Steyitsi
+ yi: פאראייניקטע שטאטן פון אמעריקע
+ yo: Àwọn Ìpínlẹ̀ Aṣọ̀kan Amẹ́ríkà
+ za: Meijgoz
+ zh: 美利坚合众国/美利堅合眾國
+ zu: IMelika
--- /dev/null
+name:
+ default: Uruguay
+ af: Uruguay
+ ak: Yurugwae
+ am: ኡራጓይ
+ an: Uruguai
+ ar: أوروغواي
+ ay: Uruwayi
+ az: Uruqvay
+ ba: Уругвай
+ be: Уругвай
+ bg: Уругвай
+ bi: Uruguay
+ bm: Urugwayi
+ bn: উরুগুয়ে
+ bo: ཨུ་རུ་གུ་ཡེ།
+ br: Uruguay
+ bs: Urugvaj
+ ca: Uruguai
+ ce: Уругвай
+ co: Uruguay
+ cs: Uruguay
+ cu: Оуроугваи
+ cv: Уругвай
+ cy: Uruguay
+ da: Uruguay
+ de: Uruguay
+ dv: އުރުގުއޭ
+ dz: ཡུ་རུ་གུ་ཝའི
+ ee: uruguaydukɔ
+ el: Ουρουγουάη
+ en: Uruguay
+ eo: Urugvajo
+ es: Uruguay
+ et: Uruguay
+ eu: Uruguai
+ fa: اروگوئه
+ ff: Uruguwaay
+ fi: Uruguay
+ fo: Uruguei
+ fr: Uruguay
+ fy: Urûguay
+ ga: Uragua
+ gd: Uruguaidh
+ gl: Uruguai
+ gn: Uruguái
+ gu: ઉરુગ્વે
+ gv: Yn Ooraguay
+ ha: Yurugai
+ he: אורוגוואי
+ hi: उरुग्वे
+ hr: Urugvaj
+ ht: Irigwe
+ hu: Uruguay
+ hy: Ուրուգվայ
+ ia: Uruguay
+ id: Uruguay
+ ie: Uruguay
+ io: Uruguay
+ is: Úrúgvæ
+ it: Uruguay
+ ja: ウルグアイ
+ jv: Uruguay
+ ka: ურუგვაი
+ ki: Urugwai
+ kk: Уругвай
+ kl: Uruguay
+ km: អ៊ុយរុយហ្គាយ
+ kn: ಉರುಗ್ವೆ
+ ko: 우루과이
+ ks: یوٗروگے
+ ku: Ûrûguay
+ kw: Urugway
+ la: Uraquaria
+ lb: Uruguay
+ lg: Wurugwayi
+ li: Urugay
+ ln: Ulugwai
+ lo: ອຸລຸກວຍ
+ lt: Urugvajus
+ lv: Urugvaja
+ mg: Orogoay
+ mi: Urukoi
+ mk: Уругвај
+ ml: ഉറുഗ്വേ
+ mn: Уругвай
+ mr: उरुग्वे
+ ms: Uruguay
+ mt: Urugwaj
+ my: ဥရုဂွေးနိုင်ငံ
+ ne: उरुग्वाइ
+ nl: Uruguay
+ nn: Uruguay
+ "no": Uruguay
+ nv: Táłtłʼááh Chʼosh Bitooh (Kéyah Dah Siʼánígíí)
+ oc: Uruguai
+ or: ଉରୁଗୁଏ
+ os: Уругвай
+ pa: ਉਰੂਗੁਏ
+ pl: Urugwaj
+ ps: یوروګوای
+ pt: Uruguai
+ qu: Uruwayi
+ rm: Uruguay
+ rn: Irigwe
+ ro: Uruguay
+ ru: Уругвай
+ rw: Irigwe
+ sa: उरुग्वाय
+ sc: Uruguay
+ se: Uruguay
+ sg: Uruguëe
+ sh: Urugvaj
+ si: උරුගුවායි
+ sk: Uruguaj
+ sl: Urugvaj
+ so: Uruguwaay
+ sq: Uruguaji
+ sr: Уругвај
+ su: Uruguay
+ sv: Uruguay
+ sw: Urugwai
+ ta: உருகுவை
+ te: ఉరుగువే
+ tg: Уругуай
+ th: ประเทศอุรุกวัย
+ ti: ኡራጓይ
+ tl: Urugway
+ to: ʻUlukuei
+ tr: Uruguay
+ tt: Уругвай
+ ug: ئۇرۇگۋاي
+ uk: Уругвай
+ ur: یوراگوئے
+ uz: Urugvay
+ vi: Uruguay
+ vo: Luruguyän
+ wa: Ourougway
+ wo: Uruguwaay
+ yi: אורוגוויי
+ yo: Urugúáì
+ zh: 乌拉圭
+ zu: i-Uruguay
--- /dev/null
+name:
+ default: Oʻzbekiston
+ af: Oesbekistan
+ am: ኡዝቤኪስታን
+ an: Uzbekistán
+ ar: أوزبكستان
+ az: Özbəkistan
+ ba: Үзбәкстан
+ be: Узбекістан
+ bg: Узбекистан
+ bn: উজবেকিস্তান
+ bo: ཨུ་ཟ་བྷེ་ཁི་སི་ཐན།
+ br: Ouzbekistan
+ bs: Uzbekistan
+ ca: Uzbekistan
+ ce: Узбекистан
+ cs: Uzbekistán
+ cv: Ӳспекстан
+ cy: Uzbekistan
+ da: Usbekistan
+ de: Usbekistan
+ dv: އުޒްބެކިސްތާން
+ dz: ཨུཛ་བེ་ཀིསི་ཏཱན་
+ ee: Uzbekistan
+ el: Ουζμπεκιστάν
+ en: Uzbekistan
+ eo: Uzbekio
+ es: Uzbekistán
+ et: Usbekistan
+ eu: Uzbekistan
+ fa: ازبکستان
+ fi: Uzbekistan
+ fo: Usbekistan
+ fr: Ouzbékistan
+ fy: Oezbekistan
+ ga: An Úisbéiceastáin
+ gd: Usbagastàn
+ gl: Uzbequistán
+ gu: ઉઝબેકિસ્તાન
+ gv: Yn Oosbeckistaan
+ he: אוזבקיסטן
+ hi: उज़्बेकिस्तान
+ hr: Uzbekistan
+ ht: Ouzbekistan
+ hu: Üzbegisztán
+ hy: Ուզբեկստան
+ ia: Uzbekistan
+ id: Uzbekistan
+ ie: Uzbekistan
+ io: Uzbekistan
+ is: Úsbekistan
+ it: Uzbekistan
+ ja: ウズベキスタン
+ jv: Uzbekistan
+ ka: უზბეკეთი
+ kk: Өзбекстан
+ kn: ಉಜ್ಬೇಕಿಸ್ಥಾನ್
+ ko: 우즈베키스탄
+ ku: Ûzbêkistan
+ kv: Узбекистан
+ kw: Pow Ousbek
+ ky: Өзбекстан
+ la: Uzbecia
+ lb: Usbekistan
+ li: Oesbekistan
+ ln: Uzbekistáni
+ lt: Uzbekija
+ lv: Uzbekistāna
+ mk: Узбекистан
+ ml: ഉസ്ബെക്കിസ്ഥാൻ
+ mn: Узбекистан
+ mr: उझबेकिस्तान
+ ms: Uzbekistan
+ my: ဥဇဘက်ကစ္စတန်နိုင်ငံ
+ na: Uzbekistan
+ nl: Oezbekistan
+ nn: Usbekistan
+ "no": Usbekistan
+ nv: Ózbeʼ Bikéyah
+ oc: Ozbequistan
+ or: ଉଜବେକିସ୍ଥାନ
+ os: Узбекистан
+ pa: ਉਜ਼ਬੇਕਿਸਤਾਨ
+ pl: Uzbekistan
+ ps: اوزبکستان
+ pt: Uzbequistão
+ qu: Usbiksuyu
+ ro: Uzbekistan
+ ru: Узбекистан
+ rw: Uzubekisitani
+ sa: उजबेकिस्थान
+ sd: ازبڪستان
+ se: Uzbekistan
+ sh: Uzbekistan
+ sk: Uzbekistan
+ sl: Uzbekistan
+ so: Usbekistan
+ sq: Uzbekistani
+ sr: Узбекистан
+ ss: IZubekhi
+ su: Uzbékistan
+ sv: Uzbekistan
+ sw: Uzbekistan
+ ta: உசுபெக்கிசுத்தான்
+ te: ఉజ్బెకిస్తాన్
+ tg: Ӯзбакистон
+ th: ประเทศอุซเบกิสถาน
+ tk: Özbegistan
+ tl: Uzbekistan
+ tr: Özbekistan
+ tt: Үзбәкстан
+ ug: ئۆزبېكىستان
+ uk: Узбекистан
+ ur: ازبکستان
+ uz: Oʻzbekiston
+ vi: Uzbekistan
+ vo: Lusbekän
+ wo: Usbekistaan
+ yi: אוזבעקיסטאן
+ yo: Ùsbẹ̀kìstán
+ zh: 乌兹别克斯坦
--- /dev/null
+name:
+ default: Civitas Vaticana
+ af: Vatikaanstad
+ am: ቫቲካን ከተማ
+ an: Ciudat d'o Vaticano
+ ar: الفاتيكان
+ az: Vatikan
+ ba: Ватикан
+ be: Ватыкан
+ bg: Ватикан
+ bi: Vatican Siti
+ bn: ভ্যাটিকান সিটি
+ bo: ཝ་ཏི་ཀན་གྲོང་ཁྱོར།
+ br: Keoded ar Vatikan
+ bs: Vatikan
+ ca: Ciutat del Vaticà
+ ce: Ватикан
+ co: Cità di u Vaticanu
+ cs: Vatikán
+ cu: Ватиканъ
+ cv: Ватикан
+ cy: Y Fatican
+ da: Vatikanstaten
+ de: Staat Vatikanstadt
+ dv: ވެޓިކަން ސިޓީ
+ dz: བ་ཊི་ཀཱན།
+ ee: Vatican City
+ el: Βατικανό
+ en: Vatican City
+ eo: Vatikano
+ es: Ciudad del Vaticano
+ et: Vatikan
+ eu: Vatikano Hiria
+ fa: واتیکان
+ fi: Vatikaanivaltio
+ fo: Vatikanið
+ fr: Cité du Vatican
+ fy: Fatikaanstêd
+ ga: Cathair na Vatacáine
+ gd: Cathair na Bhatacain
+ gl: Cidade do Vaticano
+ gn: Táva Vatikano
+ gv: Ard-valley yn Phaab
+ he: קריית הוותיקן
+ hi: वैटिकन सिटी
+ hr: Vatikan
+ ht: Vatikan
+ hu: Vatikán
+ hy: Վատիկան
+ ia: Citate Vatican
+ id: Vatikan
+ ie: Vaticano
+ io: Vatikano
+ is: Vatíkanið
+ it: Città del Vaticano
+ ja: バチカン
+ jv: Vatikan
+ ka: ვატიკანი
+ kg: Vatican
+ kk: Ватикан
+ kl: Vatikani
+ km: បុរីវ៉ាទីកង់
+ kn: ವ್ಯಾಟಿಕನ್ ನಗರ
+ ko: 바티칸 시국
+ ku: Vatîkan
+ kv: Ватикан
+ kw: Cita Vatikan
+ ky: Ватикан
+ la: Status Civitatis Vaticanæ
+ lb: Vatikanstad
+ li: Vaticaanstad
+ ln: Vatikáni
+ lt: Vatikanas
+ lv: Vatikāns
+ mi: Poho o Pita
+ mk: Ватикан
+ ml: വത്തിക്കാൻ നഗരം
+ mn: Ватикан
+ mr: व्हॅटिकन सिटी
+ ms: Kota Vatican
+ mt: Belt tal-Vatikan
+ my: ဗာတီကန်စီးတီး
+ na: Batikan
+ ne: भ्याटिकन सिटी
+ nl: Vaticaanstad
+ nn: Vatikanstaten
+ "no": Vatikanstaten
+ nv: Bádikin Sídii
+ oc: Vatican
+ or: ଭାଟିକାନ ସିଟି
+ os: Ватикан
+ pa: ਵੈਟੀਕਨ ਸ਼ਹਿਰ
+ pl: Watykan
+ ps: واټيکان ښار
+ pt: Vaticano
+ qu: Watikanu llaqta
+ rm: Citad dal Vatican
+ ro: Vatican
+ ru: Ватикан
+ rw: Vatikani
+ sa: वैटिकन
+ sc: Tzitade de su Vaticanu
+ se: Vatikána
+ sh: Vatikan
+ si: වතිකානුව
+ sk: Vatikán
+ sl: Vatikan
+ so: Faatikan
+ sq: Vatikani
+ sr: Ватикан
+ ss: IVathikhi
+ su: Vatikan
+ sv: Vatikanstaten
+ sw: Vatikani
+ ta: வத்திக்கான் நகர்
+ te: వాటికన్ నగరం
+ tg: Вотикон
+ th: นครรัฐวาติกัน
+ tk: Watikan
+ tl: Lungsod ng Vaticano
+ tr: Vatikan
+ tt: Ватикан
+ ug: Watikan Shehiri
+ uk: Ватикан
+ ur: ویٹیکن سٹی
+ uz: Vatikan shahri
+ vi: Thành Vatican
+ vo: Vatikän
+ wo: Watikaa
+ yi: וואטיקאן
+ yo: Ìlú Fatikan
+ zh: 梵蒂冈
+ zu: Indolobha yaseVathikhani
--- /dev/null
+name:
+ default: Saint Vincent and the Grenadines
+ af: Sint Vincent en die Grenadines
+ ar: سانت فنسنت وجزر غرينادين
+ be: Святы Вінцэнт і Грэнадзіны
+ br: Sant-Visant hag ar Grenadinez
+ ca: Saint Vincent i les Grenadines
+ cs: Svatý Vincent a Grenadiny
+ cy: Saint Vincent a'r Grenadines
+ da: Saint Vincent og Grenadinerne
+ de: St. Vincent und die Grenadinen
+ el: Άγιος Βικέντιος και Γρεναδίνες
+ en: Saint Vincent and the Grenadines
+ eo: Sankta Vincento kaj Grenadinoj
+ es: San Vicente y las Granadinas
+ fa: سنت وینسنت و گرنادین
+ fi: Saint Vincent ja Grenadiinit
+ fr: Saint-Vincent-et-les Grenadines
+ fy: Sint Finsint en de Grenadinen
+ ga: San Uinseann agus na Greanáidíní
+ gd: Naomh Bhionsant agus Eileanan Greanadach
+ he: סנט וינסנט והגרנדינים
+ hr: Sveti Vincent i Grenadini
+ hu: Saint Vincent és a Grenadine-szigetek
+ id: Saint Vincent dan Grenadines
+ is: Sankti Vinsent og Grenadíneyjar
+ it: Saint Vincent e Grenadine
+ ja: セントビンセント及びグレナディーン諸島
+ lb: Saint Vincent an d’Grenadinen
+ li: Saint-Vincent
+ lt: Sent Vinsentas ir Grenadinai
+ mn: Сент-Винсент ба Гренадин
+ nl: Saint Vincent en de Grenadines
+ pl: Saint Vincent i Grenadyny
+ pt: São Vicente e Granadinas
+ ru: Сент-Винсент и Гренадины
+ se: Saint Vincent ja Grenadiinnat
+ sk: Svätý Vincent a Grenadíny
+ sl: Sveti Vincencij in Grenadine
+ sv: Saint Vincent och Grenadinerna
+ ta: செயின்ட் வின்செண்டு மற்றும் கிரெனடீன்கள்
+ th: ประเทศเซนต์วินเซนต์และเกรนาดีนส์
+ tr: Saint Vincent ve Grenadinler
+ uk: Сент-Вінсент і Гренадини
+ vi: Saint Vincent và Grenadines
+ vo: Saluda-Vinsenteän e Grenadineäns
+ zh: 圣文森特和格林纳丁斯
--- /dev/null
+name:
+ default: Venezuela
+ af: Venezuela
+ am: ቬኔዝዌላ
+ an: Venezuela
+ ar: فنزويلا
+ av: Венесуэла
+ ay: Winïxwila
+ az: Venesuela
+ ba: Венесуэла
+ be: Венесуэла
+ bg: Венецуела
+ bi: Venezuela
+ bm: Venezuela
+ bn: ভেনেজুয়েলা
+ bo: ཝེ་ནེ་ཟུའེ་ལ།
+ br: Venezuela
+ bs: Venecuela
+ ca: Veneçuela
+ ce: Венесуэла
+ co: Venezuela
+ cs: Venezuela
+ cv: Венесуэла
+ cy: Venezuela
+ da: Venezuela
+ de: Venezuela
+ dv: ވެނެޒުއޭލާ
+ ee: Venezuela
+ el: Βενεζουέλα
+ en: Venezuela
+ eo: Venezuelo
+ es: Venezuela
+ et: Venezuela
+ eu: Venezuela
+ fa: ونزوئلا
+ fi: Venezuela
+ fo: Venesuela
+ fr: Venezuela
+ fy: Fenezuëla
+ ga: Veiniséala
+ gd: A' Bheiniseala
+ gl: Venezuela
+ gn: Venesuéla
+ gu: વેનેઝુએલા
+ gv: Yn Veneswaaley
+ he: ונצואלה
+ hi: वेनेज़ुएला
+ hr: Venezuela
+ ht: Venezwela
+ hu: Venezuela
+ hy: Վենեսուելա
+ ia: Venezuela
+ id: Venezuela
+ ie: Venezuela
+ io: Venezuela
+ is: Venesúela
+ it: Venezuela
+ ja: ベネズエラ
+ jv: Venezuela
+ ka: ვენესუელა
+ kk: Венесуэла
+ kn: ವೆನೆಜುವೆಲಾ
+ ko: 베네수엘라
+ ku: Venezuela
+ kw: Veneswela
+ la: Venetiola
+ lb: Venezuela
+ li: Venezuela
+ ln: Venezwela
+ lt: Venesuela
+ lv: Venecuēla
+ mg: Venezoela
+ mi: Wenehūera
+ mk: Венецуела
+ ml: വെനിസ്വേല
+ mn: Венесуэл
+ mr: व्हेनेझुएला
+ ms: Venezuela
+ mt: Veneżwela
+ my: ဗင်နီဇွဲလားနိုင်ငံ
+ ne: भेनेजुएला
+ nl: Venezuela
+ nn: Venezuela
+ "no": Venezuela
+ nv: Táłkááʼ Bighan Dineʼé Bikéyah
+ oc: Veneçuèla
+ or: ଭେନେଜୁଏଲା
+ os: Венесуэлæ
+ pa: ਵੈਨੇਜ਼ੁਏਲਾ
+ pl: Wenezuela
+ pt: Venezuela
+ qu: Winisuyla
+ rm: Venezuela
+ rn: Venezuela
+ ro: Venezuela
+ ru: Венесуэла
+ rw: Venezuwela
+ sa: वेनेज्वेला
+ se: Venezuela
+ sh: Venezuela
+ sk: Venezuela
+ sl: Venezuela
+ sm: Venesuela
+ so: Fanansuwela
+ sq: Venezuela
+ sr: Венецуела
+ su: Vénézuéla
+ sv: Venezuela
+ sw: Venezuela
+ ta: வெனிசுவேலா
+ tg: Венесуэла
+ th: ประเทศเวเนซุเอลา
+ tk: Wenesuela
+ tl: Venezuela
+ tr: Venezuela
+ tt: Венесуэла
+ ug: ۋېنېسۇئېلا
+ uk: Венесуела
+ ur: وینیزویلا
+ uz: Venesuela
+ ve: Venezuela
+ vi: Venezuela
+ vo: Venesolän
+ wa: Venezwela
+ wo: Benesuwela
+ yi: ווענעזועלע
+ yo: Fenesuela
+ zh: 委內瑞拉
+ zu: Venezuela
--- /dev/null
+name:
+ default: British Virgin Islands
+ af: Brits-Maagde-eilande
+ ar: جزر فيرجن البريطانية
+ be: Брытанскія Вірджынскія астравы
+ br: Inizi Gwerc’h Breizhveuriat
+ ca: Illes Verges Britàniques
+ cs: Britské Panenské ostrovy
+ da: Britiske Jomfruøer
+ de: Britische Jungferninseln
+ en: British Virgin Islands
+ eo: Britaj Virgulinsuloj
+ es: Islas Vírgenes Británicas
+ et: Briti Neitsisaared
+ eu: Birjina uharte britainiarrak
+ fa: جزایر ویرجین بریتانیا
+ fi: Brittiläiset Neitsytsaaret
+ fr: Îles Vierges britanniques
+ ga: Oileáin Bhriotanacha na Maighdean
+ he: איי הבתולה הבריטיים
+ hr: Britanski Djevičanski Otoci
+ hu: Brit Virgin-szigetek
+ id: Kepulauan Virgin Britania Raya
+ is: Bresku Jómfrúaeyjar
+ it: Isole Vergini Britanniche
+ ja: イギリス領ヴァージン諸島
+ la: Britannicae Virginis Insulae
+ lb: Britesch Joffereninselen
+ lt: Britų Mergelių salos
+ lv: Britu Virdžīnu salas
+ mk: Британски Девствени Острови
+ mn: Виржиний Арлууд, Британийн
+ nl: Britse Maagdeneilanden
+ pl: Brytyjskie Wyspy Dziewicze
+ pt: Ilhas Virgens Britânicas
+ ru: Британские Виргинские острова
+ sk: Britské Panenské ostrovy
+ sl: Britanski Deviški otoki
+ sr: Британска Девичанска Острва
+ sv: Brittiska Jungfruöarna
+ th: หมู่เกาะบริติชเวอร์จิน
+ tr: Birleşik Krallık Virgin Adaları
+ uk: Британські Віргінські острови
+ vi: Quần đảo Virgin thuộc Anh
+ zh: 英属维尔京群岛
--- /dev/null
+name:
+ default: United States Virgin Islands
--- /dev/null
+name:
+ default: Việt Nam
+ af: Viëtnam
+ ak: Vietnam
+ am: ቬት ናም
+ an: Vietnam
+ ar: فيتنام
+ av: Вьетнам
+ ay: Vietnam
+ az: Vyetnam
+ ba: Вьетнам
+ be: В'етнам
+ bg: Виетнам
+ bi: Vietnam
+ bm: Vietnam
+ bn: ভিয়েতনাম
+ bo: ཝི་ཏི་ནམ།
+ br: Viêt Nam
+ bs: Vijetnam
+ ca: Vietnam
+ ce: Вьетнам
+ ch: Vietnam
+ cs: Vietnam
+ cv: Вьетнам
+ cy: Fietnam
+ da: Vietnam
+ de: Vietnam
+ dv: ވިއެޓުނާމު
+ ee: Vietnam
+ el: Βιετνάμ
+ en: Vietnam
+ eo: Vjetnamio
+ es: Vietnam
+ et: Vietnam
+ eu: Vietnam
+ fa: ویتنام
+ ff: Vietnam
+ fi: Vietnam
+ fo: Vjetnam
+ fr: Viêt Nam
+ fy: Fjetnam
+ ga: Vítneam
+ gd: Bhiet-Nam
+ gl: Vietnam
+ gn: Vietnam
+ gu: વિયેતનામ
+ gv: Yn Vietnam
+ he: וייטנאם
+ hi: वियतनाम
+ hr: Vijetnam
+ ht: Vyetnam
+ hu: Vietnám
+ hy: Վիետնամ
+ ia: Vietnam
+ id: Vietnam
+ ie: Viet-Nam
+ ik: Vietnam
+ io: Vietnam
+ is: Víetnam
+ it: Vietnam
+ ja: ベトナム
+ jv: Viètnam
+ ka: ვიეტნამი
+ kg: Vietnam
+ ki: Vietnam
+ kk: Вьетнам
+ kl: Vietnam
+ km: វៀតណាម
+ kn: ವಿಯೆಟ್ನಾಮ್
+ ko: 베트남
+ ku: Viyetnam
+ kv: Вьетнам
+ kw: Vietnam
+ ky: Вьетнам
+ la: Vietnamia
+ lb: Vietnam
+ li: Vietnam
+ ln: Vietnami
+ lo: ປະເທດຫວຽດນາມ
+ lt: Vietnamas
+ lv: Vjetnama
+ mg: Vietnam
+ mi: Witināma
+ mk: Виетнам
+ ml: വിയറ്റ്നാം
+ mn: Вьетнам
+ mr: व्हियेतनाम
+ ms: Vietnam
+ mt: Vjetnam
+ my: ဗီယက်နမ်နိုင်ငံ
+ na: Bitinam
+ ne: भियतनाम
+ nl: Vietnam
+ nn: Vietnam
+ "no": Vietnam
+ nv: Biʼednam
+ oc: Vietnam
+ om: Veetinaam
+ or: ଭିଏତନାମ
+ os: Вьетнам
+ pa: ਵੀਅਤਨਾਮ
+ pl: Wietnam
+ pt: Vietname
+ qu: Witnam
+ rm: Vietnam
+ rn: Vietnam
+ ro: Vietnam
+ ru: Вьетнам
+ rw: Viyetinamu
+ sa: चम्पादेश
+ sc: Vietnam
+ se: Vietnam
+ sh: Vijetnam
+ si: වියට්නාමය
+ sk: Vietnam
+ sl: Vietnam
+ sm: Vietnam
+ sn: Vietnam
+ so: Fiyetnam
+ sq: Vietnami
+ sr: Вијетнам
+ ss: IViyethina
+ st: Vietnam
+ su: Viétnam
+ sv: Vietnam
+ sw: Vietnam
+ ta: வியட்நாம்
+ te: వియత్నాం
+ tg: Ветнам
+ th: ประเทศเวียดนาม
+ tk: Wýetnam
+ tl: Vietnam
+ tr: Vietnam
+ tt: Вьетнам
+ tw: Vietnam
+ ug: ۋيېتنام
+ uk: В'єтнам
+ ur: ویتنام
+ uz: Vyetnam
+ ve: Viëtnam
+ vi: Việt Nam
+ vo: Vietnamän
+ wa: Vietnam
+ wo: Wiyetnaam
+ yi: וויעטנאם
+ yo: Fiẹtnám
+ za: Yiednamz
+ zh: 越南
+ zu: IViyetnami
--- /dev/null
+name:
+ default: Vanuatu
+ ab: Вануату
+ ar: فانواتو
+ be: Вануату
+ bg: Вануату
+ bn: ভানুয়াটু
+ bo: ཝ་ནུའ་ཏུ།
+ br: Vanuatu
+ ce: Вануату
+ cs: Vanuatu
+ da: Vanuatu
+ de: Vanuatu
+ dv: ވަނުއާޓޫ
+ el: Βανουάτου
+ en: Vanuatu
+ eo: Vanuatuo
+ es: Vanuatu
+ fa: وانواتو
+ fi: Vanuatu
+ fr: Vanuatu
+ fy: Fanuatû
+ ga: Vanuatú
+ gd: Bhanuatu
+ he: ונואטו
+ hi: वानूअतु
+ hr: Vanuatu
+ ht: Vanwatou
+ hu: Vanuatu
+ hy: Վանուատու
+ is: Vanúatú
+ ja: バヌアツ
+ ka: ვანუატუ
+ kk: Вануату
+ kn: ವನುವಾಟು
+ ko: 바누아투
+ ku: Vanûatû
+ ky: Вануату
+ lt: Vanuatu
+ mk: Вануату
+ ml: വാനുവാടു
+ mn: Вануату
+ mr: व्हानुआतू
+ mt: Vanwatu
+ my: ဗနွားတူနိုင်ငံ
+ na: Banuatu
+ ne: भानुअटु
+ nv: Banoʼáátʼoo
+ oc: Vanuatu
+ or: ଭାନୁଆଟୁ
+ os: Вануату
+ pa: ਵਨੁਆਤੂ
+ pl: Vanuatu
+ pt: Vanuatu
+ qu: Wanwatu
+ ru: Вануату
+ rw: Vanuwatu
+ se: Vanuatu
+ sk: Vanuatu
+ sr: Вануату
+ sv: Vanuatu
+ ta: வனுவாட்டு
+ te: వనాటు
+ tg: Вануату
+ th: ประเทศวานูอาตู
+ tt: Вануату
+ ug: ۋانۇئاتۇ
+ uk: Вануату
+ ur: وانواتو
+ vo: Vanuatuäns
+ wo: Wanuatu
+ yo: Fanuatu
+ zh: 瓦努阿图
--- /dev/null
+name:
+ default: Wallis-et-Futuna
+ af: Wallis-en-Futuna
+ an: Wallis e Futuna
+ ar: جزر واليس وفوتونا
+ be: Уоліс і Футуна
+ bg: Уолис и Футуна
+ br: Wallis ha Futuna
+ ca: Wallis i Futuna
+ cs: Wallis a Futuna
+ cy: Wallis a Futuna
+ da: Wallis og Futuna
+ de: Wallis und Futuna
+ dv: ވާލީ އަދި ފުތޫނާ
+ el: Ουώλλις και Φουτούνα
+ en: Wallis and Futuna Islands
+ eo: Valiso kaj Futuno
+ es: Wallis y Futuna
+ et: Wallis ja Futuna
+ eu: Wallis eta Futuna
+ fa: والیس و فوتونا
+ fi: Wallis- ja Futunasaaret
+ fr: Wallis-et-Futuna
+ fy: Wallis en Fûtûna
+ ga: Vailís agus Futúna
+ gl: Wallis e Futuna
+ he: ואליס ופוטונה
+ hr: Wallis i Futuna
+ hu: Wallis és Futuna
+ id: Wallis dan Futuna
+ io: Wallis e Futuna Insuli
+ is: Wallis- og Fútúnaeyjar
+ it: Wallis e Futuna
+ ja: ウォリス・フツナ
+ jv: Wallis lan Futuna
+ ko: 왈리스 퓌튀나
+ kw: Wallis ha Futuna
+ la: Vallis et Futuna
+ lb: Wallis a Futuna
+ lt: Walliso ir Futuna salos
+ lv: Volisa un Futuna
+ mn: Уоллис ба Футуна
+ mr: वालिस व फुतुना
+ ms: Wallis dan Futuna
+ nl: Wallis en Futuna
+ nn: Wallis- og Futunaøyane
+ "no": Wallis- og Futunaøyene
+ oc: Wallis e Futuna
+ pl: Wallis i Futuna
+ pt: Wallis e Futuna
+ ro: Wallis şi Futuna
+ ru: Уоллис и Футуна
+ se: Wallis ja Futuna
+ sh: Wallis i Futuna
+ sk: Wallis a Futuna
+ sl: Wallis in Futuna
+ sm: Wallis and Futuna
+ sr: Валис и Футуна
+ sv: Wallis- och Futunaöarna
+ sw: Wallis na Futuna
+ ta: வலிசும் புட்டூனாவும்
+ th: หมู่เกาะวาลลิสและหมู่เกาะฟุตูนา
+ tr: Wallis ve Futuna Adaları
+ ug: Wallis we Futuna Taqim Aralliri
+ uk: Волліс і Футуна
+ vi: Wallis và Futuna
+ wo: Wallis ak Futuna
+ zh: 瓦利斯和富图纳群岛
--- /dev/null
+name:
+ default: Sāmoa
+ am: ሳሞአ
+ ar: ساموا
+ be: Самоа
+ bg: Самоа
+ bm: Samowa
+ bn: সামোয়া
+ bo: ནུ་བ་ས་མོ་འ།
+ br: Samoa
+ ca: Samoa
+ cs: Samoa
+ da: Samoa
+ de: Samoa
+ dz: ས་མོ་ཨ
+ ee: Samoa nutome
+ el: Σαμόα
+ en: Samoa
+ eo: Samoo
+ es: Samoa
+ et: Samoa
+ fa: ساموآ
+ ff: Samowaa
+ fi: Samoa
+ fo: Sámoa
+ fr: Samoa
+ fy: Samoä
+ ga: Samó
+ gd: Samotha
+ gu: સમોઆ
+ gv: Samoa
+ ha: Samowa
+ he: סמואה
+ hi: समोआ
+ hr: Samoa
+ hu: Szamoa
+ hy: Սամոա
+ ia: Samoa
+ io: Samoa
+ is: Samóa
+ it: Samoa
+ ja: サモア
+ ka: სამოა
+ km: សាមូអា
+ kn: ಸಮೋವಾ
+ ko: 사모아
+ ks: سیمووا
+ ku: Samoa
+ lg: Samowa
+ li: Samoa
+ lo: ຊາມົວ
+ lv: Samoa
+ mi: Hāmoa
+ mk: Самоа
+ ml: സാമോവ
+ mn: Самоа
+ mr: सामोआ
+ ne: सामोआ
+ nl: Samoa
+ "no": Samoa
+ or: ସାମୋଆ
+ pl: Samoa
+ rn: Samowa
+ ru: Самоа
+ se: Samoa
+ sg: Samoäa
+ si: සැමෝවා
+ sk: Samoa
+ sl: Samoa
+ sr: Самоа
+ sv: Samoa
+ ta: சமோவா
+ te: సమోవా
+ th: ประเทศซามัว
+ ti: ሳሞአ
+ to: Haʻamoa
+ uk: Самоа
+ ur: ساموآ
+ vo: Samovuäns
+ yo: Orílẹ́ède Samọ
+ zh: 萨摩亚
+ zu: i-Samoa
--- /dev/null
+name:
+ default: Kosova / Kosovo
+ af: Kosovo
+ am: ኮሶቮ
+ an: Kosovo
+ ar: كوسوفو
+ ay: Kusuwu
+ az: Kosovo
+ ba: Косово
+ be: Косава
+ bg: Косово
+ bn: কসোভো
+ bo: ཁོ་སོ་ཝོ།
+ br: Kosovo
+ bs: Kosovo
+ ca: Kosovo
+ ce: Косово
+ cs: Kosovo
+ cv: Косово
+ cy: Cosofo
+ da: Kosovo
+ de: Kosovo
+ el: Κοσσυφοπέδιο
+ en: Kosovo
+ eo: Kosovo
+ es: Kosovo
+ et: Kosovo
+ eu: Kosovo
+ fa: کوزوو
+ fi: Kosovo
+ fo: Kosovo
+ fr: Kosovo
+ fy: Kosovo
+ ga: An Chosaiv
+ gd: Cosobho
+ gl: Kosovo
+ gn: Kosovo
+ gv: Kosovo
+ he: קוסובו
+ hi: कोसोवो गणराज्य
+ hr: Kosovo
+ hu: Koszovó
+ hy: Կոսովոն
+ ia: Kosovo
+ id: Kosovo
+ ie: Kosovo
+ ig: Kosovo
+ io: Kosovo
+ is: Kosóvó
+ it: Kosovo
+ ja: コソボ
+ jv: Kosovo
+ ka: კოსოვო
+ kk: Косово
+ kl: Kosovo
+ kn: ಕೊಸೊವೊ
+ ko: 코소보
+ ku: Kosova
+ kv: Косово
+ kw: Kosova
+ ky: Косово
+ la: Kosovia
+ lb: Kosovo
+ li: Kosovo
+ lo: ປະເທດໂກໂຊໂວ
+ lt: Kosovas
+ lv: Kosova
+ mk: Косово
+ ml: കൊസോവോ
+ mn: Косово
+ mr: कोसोव्हो
+ ms: Kosovo
+ mt: Kosovo
+ my: ကိုဆိုဗို
+ na: Kosovo
+ nl: Kosovo
+ nn: Kosovo
+ "no": Kosovo
+ ny: Kosovo
+ oc: Kosova
+ os: Косово
+ pa: ਕੋਸੋਵੋ ਗਣਰਾਜ
+ pl: Kosowo
+ pt: Kosovo
+ qu: Kusuwu
+ rm: Cosovo
+ ro: Kosovo
+ ru: Косово
+ rw: Kosovo
+ sc: Kòssovu
+ sh: Kosovo
+ si: කොසෝවො
+ sk: Kosovo
+ sl: Kosovo
+ sm: Kosovo
+ sn: Kosovo
+ so: Kosofo
+ sq: Kosovo
+ sr: Косово
+ su: Kosovo
+ sv: Kosovo
+ sw: Kosovo
+ ta: கொசோவோ
+ te: కొసావో
+ th: ประเทศคอซอวอ
+ tl: Kosovo
+ tr: Kosova
+ ts: Kosovo
+ tt: Косово Җөмһүрияте
+ uk: Косово
+ ur: کوسووہ
+ uz: Kosovo
+ vi: Kosovo
+ vo: Kosovän
+ yo: Kósófò
+ zh: 科索沃
--- /dev/null
+name:
+ default: اليمن
+ af: Jemen
+ am: የመን (አገር)
+ an: Yemen
+ ar: اليمن
+ az: Yəmən
+ ba: Йемен
+ be: Емен
+ bg: Йемен
+ bn: ইয়েমেন
+ bo: ཡེ་མེན།
+ br: Yemen
+ bs: Jemen
+ ca: Iemen
+ ce: Йемен
+ co: Yemen
+ cs: Jemen
+ cv: Йемен
+ cy: Yemen
+ da: Yemen
+ de: Jemen
+ dv: ޔަމަން
+ el: Υεμένη
+ en: Yemen
+ eo: Jemeno
+ es: Yemen
+ et: Jeemen
+ eu: Yemen
+ fa: یمن
+ fi: Jemen
+ fo: Jemen
+ fr: Yémen
+ fy: Jemen
+ ga: Poblacht Éimin
+ gd: Iemen
+ gl: Iemen - اليمن
+ gn: Jemẽ
+ gu: યેમેન
+ gv: Yn Yeaman
+ he: תימן
+ hi: यमन
+ hr: Jemen
+ ht: Yemèn
+ hu: Jemen
+ hy: Եմեն
+ ia: Yemen
+ id: Yaman
+ ie: Yemen
+ io: Yemen
+ is: Jemen
+ it: Yemen
+ ja: イエメン
+ jv: Yaman
+ ka: იემენი
+ ki: Yemen
+ kk: Йемен
+ kl: Yemen
+ kn: ಯೆಮೆನ್
+ ko: 예멘
+ ks: یَمَن
+ ku: Yemen
+ kv: Йемен
+ kw: Yemen
+ ky: Йемен
+ la: Iemenia
+ lb: Jemen
+ li: Jeme
+ ln: Yeméni
+ lt: Jemenas
+ lv: Jemena
+ mk: Јемен
+ ml: യെമൻ
+ mn: Йемен
+ mr: येमेनचे प्रजासत्ताक
+ ms: Yaman
+ mt: Jemen
+ my: ယီမင်နိုင်ငံ
+ na: Yemen
+ ne: गणतन्त्र यमन
+ nl: Jemen
+ nn: Jemen
+ "no": Jemen
+ nv: Shádiʼááhjí Ásáí Bikéyah
+ oc: Iemèn
+ or: ୟେମେନ
+ os: Йемен
+ pa: ਯਮਨ
+ pl: Jemen
+ ps: یمن
+ pt: Iémen
+ qu: Yaman
+ ro: Yemen
+ ru: Йемен
+ rw: Yemeni
+ sa: यमन
+ sd: يمن
+ se: Jemen
+ sh: Jemen
+ sk: Jemen
+ sl: Jemen
+ so: Yemen
+ sq: Jemeni
+ sr: Јемен
+ ss: IYemeni
+ su: Yaman
+ sv: Jemen
+ sw: Yemen
+ ta: யெமன்
+ te: యెమన్
+ tg: Яман
+ th: ประเทศเยเมน
+ tk: Ýemen
+ tl: Yemen
+ tr: Yemen
+ tt: Йәмән
+ ug: يەمەن
+ uk: Ємен
+ ur: یمن
+ uz: Yaman
+ vi: Yemen
+ vo: Yämän
+ wo: Yaman
+ yi: תימן
+ yo: Yemen
+ zh: 也门
+ zu: IYemen
--- /dev/null
+name:
+ default: Mayotte
--- /dev/null
+name:
+ default: South Africa
+ af: Suid-Afrika
+ ak: Afrika Anaafo
+ am: ደቡብ አፍሪካ
+ an: Sudafrica
+ ar: جنوب أفريقيا
+ az: Cənub Afrika
+ be: Паўднёва-Афрыканская Рэспубліка
+ bg: Южна Африка
+ bm: Worodugu Afriki
+ bn: দক্ষিণ আফ্রিকা
+ bo: ལྷོ་ ཨཕྲི་ཀ།
+ br: Suafrika
+ bs: Južna Afrika
+ ca: Sud-àfrica
+ ce: Къилба-Африкин Республика
+ cs: Jižní Afrika
+ cv: Кăнтăр Африка
+ cy: De Affrica
+ da: Sydafrika
+ de: Südafrika
+ dv: ދެކުނު އެފްރިކާ
+ dz: སཱའུཐ་ ཨཕ་རི་ཀ
+ ee: Anyiehe Afrika nutome
+ el: Νότια Αφρική
+ en: South Africa
+ eo: Sud-Afriko
+ es: Sudáfrica
+ et: Lõuna-Aafrika Vabariik
+ eu: Hegoafrika
+ fa: آفریقای جنوبی
+ ff: Afrik bŋ Worgo
+ fi: Etelä-Afrikka
+ fo: Suðurafrika
+ fr: Afrique du Sud
+ fy: Súd-Afrika
+ ga: An Afraic Theas
+ gd: Afraga a Deas
+ gl: Suráfrica
+ gn: Yvyafrika
+ gu: દક્ષિણ આફ્રિકા
+ gv: Yn Affrick Yiass
+ ha: Afirka ta Kudu
+ he: דרום אפריקה
+ hi: दक्षिण अफ़्रीका
+ hr: Južna Afrika
+ ht: Afrik disid
+ hu: Dél-Afrika
+ hy: Հարավային Աֆրիկա
+ ia: Africa del Sud
+ id: Afrika Selatan
+ ie: Sudafrica
+ io: Sud-Afrika
+ is: Suður-Afríka
+ it: Sudafrica
+ ja: 南アフリカ
+ jv: Afrika Kidul
+ ka: სამხრეთ აფრიკა
+ kg: Afelika ya Sudi
+ ki: Abĩrika Kusini
+ kk: Оңтүстік Африка
+ km: អាព្រិកភាគខាងត្បូង
+ kn: ದಕ್ಷಿಣ ಆಫ್ರಿಕಾ
+ ko: 남아프리카
+ ks: جَنوٗبی اَفریٖکا
+ ku: Afrîkaya Başûr
+ kv: Лунвыв Африкаса Республика
+ kw: Afrika Dhyhow
+ ky: Африкаанс тили
+ la: Africa Australis
+ lb: Südafrika
+ lg: Sawusafirika
+ li: Zuud-Afrika
+ ln: Sidafríka
+ lo: ອາຟະລິກາໃຕ້
+ lt: Pietų Afrika
+ lv: Dienvidāfrika
+ mg: Afrika Atsimo
+ mi: Awherika ki te Tonga
+ mk: Јужна Африка
+ ml: ദക്ഷിണാഫ്രിക്ക
+ mn: Өмнөд Африк
+ mr: दक्षिण अफ्रिका
+ ms: Afrika Selatan
+ mt: Afrika t’Isfel
+ my: တောင်အာဖရိက
+ ne: दक्षिण अफ्रिका
+ nl: Zuid-Afrika
+ nn: Sør-Afrika
+ "no": Sør-Afrika
+ nv: Kéyah Naakai Łizhinii Bikéyah Shádiʼááhjí Siʼánígíí
+ ny: South Africa
+ oc: Sud d'Africa
+ or: ଦକ୍ଷିଣ ଆଫ୍ରିକା
+ os: Хуссар Африкæйы
+ pa: ਦੱਖਣੀ ਅਫ਼ਰੀਕਾ
+ pl: Republika Południowej Afryki
+ ps: سویلي افریقا
+ pt: África do Sul
+ qu: Urin Aphrika
+ rm: Africa dal Sid
+ rn: Afurika y'Epfo
+ ro: Africa de Sud
+ ru: Южная Африка
+ rw: Afurika y’Epfo
+ sa: दक्षिण-आफ्रिका
+ sc: Sudàfrica
+ se: Lulli-Afrihká
+ sg: Afrîka-Mbongo
+ sh: Južna Afrika
+ si: දකුණු අප්රිකාව
+ sk: Južná Afrika
+ sl: Južna Afrika
+ sn: South Africa
+ so: Koonfur Afrika
+ sq: Afrika e Jugut
+ sr: Јужна Африка
+ ss: INingizimu Afrika
+ st: Afrika Borwa
+ su: Afrika Kidul
+ sv: Sydafrika
+ sw: Afrika Kusini
+ ta: தென் ஆப்பிரிக்கா
+ te: దక్షిణ ఆఫ్రికా రాజ్యం
+ tg: Африқои Ҷанубӣ
+ th: แอฟริกาใต้
+ ti: ደቡብ አፍሪካ
+ tk: Günorta Afrika
+ tl: Timog Aprika
+ tn: Aferika Borwa
+ to: ʻAfilika tonga
+ tr: Güney Afrika
+ ts: Afrika-Dzonga
+ tt: Көньяк Африка
+ ug: جەنۇبىي ئافرىقا
+ uk: Південна Африка
+ ur: جنوبی افریقہ
+ uz: Janubiy Afrika
+ ve: Afurika Tshipembe
+ vi: Nam Phi
+ vo: Sulüdafrikän
+ wa: Nonne-Afrike
+ wo: Afrig gu Bëj-saalum
+ xh: uMzantsi Afrika
+ yi: דרום אפריקע
+ yo: Gúúsù Áfríkà
+ zh: 南非
+ zu: iNingizimu Afrika
--- /dev/null
+name:
+ default: Zambia
+ af: Zambië
+ am: ዛምቢያ
+ an: Zambia
+ ar: زامبيا
+ az: Zambiya
+ ba: Замбия
+ be: Замбія
+ bg: Замбия
+ bm: Zanbia
+ bn: জাম্বিয়া
+ bo: ཛམ་བི་ཡ།
+ br: Zambia
+ bs: Zambija
+ ca: Zàmbia
+ ce: Замби
+ cs: Zambie
+ cv: Замби
+ cy: Zambia
+ da: Zambia
+ de: Sambia
+ dv: ޒެމްބިއާ
+ ee: Zambia
+ el: Ζάμπια
+ en: Zambia
+ eo: Zambio
+ es: Zambia
+ et: Sambia
+ eu: Zambia
+ fa: زامبیا
+ fi: Sambia
+ fo: Sambia
+ fr: Zambie
+ fy: Sambia
+ ga: An tSaimbia
+ gd: Saimbia
+ gl: Zambia
+ gv: Yn Tambia
+ he: זמביה
+ hi: ज़ाम्बिया
+ hr: Zambija
+ ht: Zanbi
+ hu: Zambia
+ hy: Զամբիա
+ id: Zambia
+ ie: Zambia
+ io: Zambia
+ is: Sambía
+ it: Zambia
+ ja: ザンビア
+ jv: Zambia
+ ka: ზამბია
+ kg: Zambia
+ kk: Замбия
+ km: ប្រទេសហ្សំប៊ី
+ ko: 잠비아
+ ku: Zambiya
+ kw: Zambi
+ la: Zambia
+ lb: Sambia
+ li: Zambia
+ ln: Zambia
+ lt: Zambija
+ lv: Zambija
+ mi: Tāmipia
+ mk: Замбија
+ ml: സാംബിയ
+ mn: Замби
+ mr: झांबिया
+ ms: Zambia
+ mt: Żambja
+ my: ဇမ်ဘီယာနိုင်ငံ
+ nl: Zambia
+ nn: Zambia
+ "no": Zambia
+ ny: Zambia
+ oc: Zambia
+ or: ଜାମ୍ବିଆ
+ os: Замби
+ pa: ਜ਼ਾਂਬੀਆ
+ pl: Zambia
+ ps: زېمبيا
+ pt: Zâmbia
+ qu: Sambya
+ ro: Zambia
+ ru: Замбия
+ rw: Zambiya
+ sa: जाम्बिया
+ sc: Zàmbia
+ se: Zambia
+ sg: Zambïi
+ sh: Zambija
+ sk: Zambia
+ sl: Zambija
+ sn: Zambia
+ so: Saambiya
+ sq: Zambia
+ sr: Замбија
+ ss: IZambiya
+ su: Zambia
+ sv: Zambia
+ sw: Zambia
+ ta: சாம்பியா
+ te: జాంబియా
+ tg: Замбия
+ th: ประเทศแซมเบีย
+ ti: ዛምቢያ
+ tk: Zambiýa
+ tl: Sambya
+ tn: Zambia
+ tr: Zambiya
+ ts: Zambia
+ tt: Замбия
+ ug: زامبىيە
+ uk: Замбія
+ ur: زیمبیا
+ uz: Zambiya
+ vi: Zambia
+ vo: Zambiyän
+ wo: Saambi
+ yi: זאמביע
+ yo: Sámbíà
+ zh: 赞比亚
+ zu: IZambiya
--- /dev/null
+name:
+ default: Zimbabwe
+ af: Zimbabwe
+ am: ዚምባብዌ
+ an: Zimbabwe
+ ar: زيمبابوي
+ az: Zimbabve
+ ba: Зимбабве
+ be: Зімбабвэ
+ bg: Зимбабве
+ bm: Zimbabwe
+ bn: জিম্বাবুয়ে
+ bo: ཛིམ་བབ་ཝི།
+ br: Zimbabwe
+ bs: Zimbabve
+ ca: Zimbabwe
+ ce: Зимбабве
+ cs: Zimbabwe
+ cv: Зимбабве
+ cy: Zimbabwe
+ da: Zimbabwe
+ de: Simbabwe
+ dv: ޒިމްބާބުވޭ
+ dz: ཛིམ་བབ་ཝེ་
+ ee: Zimbabwe
+ el: Ζιμπάμπουε
+ en: Zimbabwe
+ eo: Zimbabvo
+ es: Zimbabue
+ et: Zimbabwe
+ eu: Zimbabwe
+ fa: زیمبابوه
+ fi: Zimbabwe
+ fo: Simbabvi
+ fr: Zimbabwe
+ fy: Simbabwe
+ ga: An tSiombáib
+ gd: Siombabue
+ gl: Cimbabue
+ gv: Yn Çhimbabwe
+ he: זימבבואה
+ hi: ज़िम्बाब्वे
+ hr: Zimbabve
+ ht: Zimbabwe
+ hu: Zimbabwe
+ hy: Զիմբաբվե
+ id: Zimbabwe
+ ie: Zimbabwe
+ io: Zimbabwe
+ is: Simbabve
+ it: Zimbabwe
+ ja: ジンバブエ
+ jv: Zimbabwe
+ ka: ზიმბაბვე
+ kg: Zimbabwe
+ ki: Zimbabwe
+ kk: Зимбабве
+ kn: ಜಿಂಬಾಬ್ವೆ
+ ko: 짐바브웨
+ ku: Zîmbabwe
+ kw: Zimbabwe
+ la: Zimbabua
+ lb: Simbabwe
+ li: Zimbabwe
+ ln: Zimbabwe
+ lt: Zimbabvė
+ lv: Zimbabve
+ mi: Timuwawe
+ mk: Зимбабве
+ ml: സിംബാബ്വെ
+ mn: Зимбабве
+ mr: झिंबाब्वे
+ ms: Zimbabwe
+ mt: Żimbabwe
+ my: ဇင်ဘာဘွေနိုင်ငံ
+ ne: जिम्बाब्वे
+ nl: Zimbabwe
+ nn: Zimbabwe
+ "no": Zimbabwe
+ nv: Hooghan Tsé Bee Ádaalyaaí Bikéyah
+ ny: Zimbabwe
+ oc: Zimbabwe
+ or: ଜିମ୍ବାୱେ
+ os: Зимбабве
+ pa: ਜ਼ਿੰਬਾਬਵੇ
+ pl: Zimbabwe
+ ps: زېمبابوې
+ pt: Zimbabué
+ qu: Simbabwi
+ ro: Zimbabwe
+ ru: Зимбабве
+ rw: Zimbabwe
+ sa: जिम्बाबवे
+ sc: Zimbabwe
+ se: Zimbabwe
+ sg: Zimbäbwe
+ sh: Zimbabve
+ si: සිම්බාබ්වේ
+ sk: Zimbabwe
+ sl: Zimbabve
+ sn: Zimbabwe
+ so: Simbaabwi
+ sq: Zimbabveja
+ sr: Зимбабве
+ ss: IZimbabhwe
+ su: Zimbabwé
+ sv: Zimbabwe
+ sw: Zimbabwe
+ ta: சிம்பாப்வே
+ te: జింబాబ్వే
+ tg: Зимбабве
+ th: ประเทศซิมบับเว
+ ti: ዚምባብዌ
+ tk: Zimbabwe
+ tl: Simbabwe
+ tn: Zimbabwe
+ tr: Zimbabve
+ ts: Zimbabwe
+ tt: Зимбабве
+ ug: زىمبابۋې
+ uk: Зімбабве
+ ur: زمبابوے
+ uz: Zimbabve
+ ve: Zimbagwe
+ vi: Zimbabwe
+ vo: Zimbabiyän
+ wo: Simbaawee
+ yi: זימבאבווע
+ yo: Sìmbábúè
+ zh: 辛巴威
+ zu: IZimbabwe
ad:
partition: 35
languages: ca
+ names: !include country-names/ad.yaml
+ postcode:
+ pattern: "(ddd)"
+ output: AD\1
+
# United Arab Emirates (الإمارات العربية المتحدة)
ae:
partition: 83
languages: ar
+ names: !include country-names/ae.yaml
+ postcode: no
+
# Afghanistan (افغانستان)
af:
partition: 30
languages: fa, ps
+ names: !include country-names/af.yaml
+ postcode:
+ pattern: "dddd"
+
# Antigua and Barbuda (Antigua and Barbuda)
ag:
partition: 205
languages: en
+ names: !include country-names/ag.yaml
+ postcode: no
+
# Anguilla (Anguilla)
ai:
partition: 175
languages: en
+ names: !include country-names/ai.yaml
+ postcode:
+ pattern: "2640"
+ output: AI-2640
+
# Albania (Shqipëria)
al:
partition: 9
languages: sq
+ names: !include country-names/al.yaml
+ postcode:
+ pattern: "dddd"
+
# Armenia (Հայաստան)
am:
partition: 33
languages: hy
+ names: !include country-names/am.yaml
+ postcode:
+ pattern: "dddd"
+
# Netherlands Antilles (De Nederlandse Antillen)
an:
partition: 58
languages: nl, en, pap
+ names: !include country-names/an.yaml
+
# Angola (Angola)
ao:
partition: 85
languages: pt
+ names: !include country-names/ao.yaml
+ postcode: no
+
# (Antarctica)
aq:
partition: 181
languages: en, es, fr, ru
+ names: !include country-names/aq.yaml
+ postcode: no
+
# Argentina (Argentina)
ar:
partition: 39
languages: es
+ names: !include country-names/ar.yaml
+ postcode:
+ pattern: "l?dddd(?:lll)?"
+
# (American Samoa)
as:
partition: 182
languages: en, sm
+ names: !include country-names/as.yaml
+
# Austria (Österreich)
at:
partition: 245
languages: de
+ names: !include country-names/at.yaml
+ postcode:
+ pattern: "dddd"
+
# Australia (Australia)
au:
partition: 139
languages: en
+ names: !include country-names/au.yaml
+ postcode:
+ pattern: "dddd"
+
# (Aruba)
aw:
partition: 183
languages: nl, pap
+ names: !include country-names/aw.yaml
+ postcode: no
+
# (Aland Islands)
ax:
partition: 184
languages: sv
+ names: !include country-names/ax.yaml
+
# Azerbaijan (Azərbaycan)
az:
partition: 119
languages: az
+ names: !include country-names/az.yaml
+ postcode:
+ pattern: "dddd"
+
# Bosnia and Herzegovina (Bosna i Hercegovina / Босна и Херцеговина)
ba:
partition: 6
languages: bs, hr, sr
+ names: !include country-names/ba.yaml
+ postcode:
+ pattern: "ddddd"
+
# Barbados (Barbados)
bb:
partition: 206
languages: en
+ names: !include country-names/bb.yaml
+ postcode:
+ pattern: "(ddddd)"
+ output: BB\1
+
# Bangladesh (Bangladesh)
bd:
partition: 158
languages: bn
+ names: !include country-names/bd.yaml
+ postcode:
+ pattern: "dddd"
+
# Belgium (België / Belgique / Belgien)
be:
partition: 15
languages: nl, fr, de
+ names: !include country-names/be.yaml
+ postcode:
+ pattern: "dddd"
+
# Burkina Faso (Burkina Faso)
bf:
partition: 225
languages: fr
+ names: !include country-names/bf.yaml
+ postcode: no
+
# Bulgaria (Бългaрия)
bg:
partition: 140
languages: bg
+ names: !include country-names/bg.yaml
+ postcode:
+ pattern: "dddd"
+
# Bahrain (البحرين)
bh:
partition: 62
languages: ar
+ names: !include country-names/bh.yaml
+ postcode:
+ pattern: "d?ddd"
+
# Burundi (Burundi)
bi:
partition: 61
languages: fr
+ names: !include country-names/bi.yaml
+ postcode: no
+
# Benin (Bénin)
bj:
partition: 224
languages: fr
+ names: !include country-names/bj.yaml
+ postcode: no
+
# (Saint Barthélemy)
bl:
partition: 204
languages: fr
+ names: !include country-names/bl.yaml
+
# Bermuda (Bermuda)
bm:
partition: 176
languages: en
+ names: !include country-names/bm.yaml
+ postcode:
+ pattern: "(ll)[ -]?(dd)"
+ output: \1 \2
+
# Brunei (Brunei)
bn:
partition: 86
languages: ms
+ names: !include country-names/bn.yaml
+ postcode:
+ pattern: "(ll) ?(dddd)"
+ output: \1\2
+
# Bolivia (Bolivia)
bo:
partition: 120
languages: es, qu, gn, ay
+ names: !include country-names/bo.yaml
+ postcode: no
+
# Caribbean Netherlands (Caribisch Nederland)
bq:
partition: 250
languages: nl
+ names: !include country-names/bq.yaml
+
# Brazil (Brasil)
br:
partition: 121
languages: pt
+ names: !include country-names/br.yaml
+ postcode:
+ pattern: "(ddddd)-?(ddd)"
+ output: \1-\2
+
# The Bahamas (The Bahamas)
bs:
partition: 207
languages: en
+ names: !include country-names/bs.yaml
+ postcode: no
+
# Bhutan (འབྲུག་ཡུལ་)
bt:
partition: 87
languages: dz
+ names: !include country-names/bt.yaml
+ postcode:
+ pattern: "ddddd"
+
# (Bouvet Island)
bv:
partition: 185
languages: "no"
+ names: !include country-names/bv.yaml
+
# Botswana (Botswana)
bw:
partition: 122
languages: en, tn
+ names: !include country-names/bw.yaml
+ postcode: no
+
# Belarus (Беларусь)
by:
partition: 40
languages: be, ru
+ names: !include country-names/by.yaml
+ postcode:
+ pattern: "dddddd"
+
# Belize (Belize)
bz:
partition: 208
languages: en
+ names: !include country-names/bz.yaml
+ postcode: no
+
# Canada (Canada)
ca:
partition: 244
languages: en, fr
+ names: !include country-names/ca.yaml
+ postcode:
+ pattern: "(ldl) ?(dld)"
+ output: \1 \2
+
# Cocos (Keeling) Islands (Cocos (Keeling) Islands)
cc:
partition: 118
languages: en
+ names: !include country-names/cc.yaml
+
# Democratic Republic of the Congo (République démocratique du Congo)
cd:
partition: 229
languages: fr
+ names: !include country-names/cd.yaml
+ postcode: no
+
# Central African Republic (Ködörösêse tî Bêafrîka - République Centrafricaine)
cf:
partition: 227
- languages: fr,sg
+ languages: fr, sg
+ names: !include country-names/cf.yaml
+ postcode: no
+
# Congo-Brazzaville (Congo)
cg:
partition: 230
languages: fr
+ names: !include country-names/cg.yaml
+ postcode: no
+
# Switzerland (Schweiz/Suisse/Svizzera/Svizra)
ch:
partition: 5
languages: de, fr, it, rm
+ names: !include country-names/ch.yaml
+ postcode:
+ pattern: "dddd"
+
# Côte d'Ivoire (Côte d’Ivoire)
ci:
partition: 228
languages: fr
+ names: !include country-names/ci.yaml
+ postcode: no
+
# Cook Islands (Kūki 'Āirani)
ck:
partition: 41
languages: en, rar
+ names: !include country-names/ck.yaml
+ postcode: no
+
# Chile (Chile)
cl:
partition: 88
languages: es
+ names: !include country-names/cl.yaml
+ postcode:
+ pattern: "ddddddd"
+
# Cameroon (Cameroun)
cm:
partition: 141
languages: fr, en
+ names: !include country-names/cm.yaml
+ postcode: no
+
# China (中国)
cn:
partition: 117
languages: zh
+ names: !include country-names/cn.yaml
+ postcode:
+ pattern: "dddddd"
+
# Colombia (Colombia)
co:
partition: 133
languages: es
+ names: !include country-names/co.yaml
+ postcode:
+ pattern: "dddddd"
+
# Costa Rica (Costa Rica)
cr:
partition: 64
languages: es
+ names: !include country-names/cr.yaml
+ postcode:
+ pattern: "ddddd"
+
# Cuba (Cuba)
cu:
partition: 42
languages: es
+ names: !include country-names/cu.yaml
+ postcode:
+ pattern: "ddddd"
+
# Cape Verde (Cabo Verde)
cv:
partition: 89
languages: pt
+ names: !include country-names/cv.yaml
+ postcode:
+ pattern: "dddd"
+
# Curaçao (Curaçao)
cw:
partition: 248
languages: nl, en
+ names: !include country-names/cw.yaml
+
# Christmas Island (Christmas Island)
cx:
partition: 177
languages: en
+ names: !include country-names/cx.yaml
+
# Cyprus (Κύπρος - Kıbrıs)
cy:
partition: 114
languages: el, tr
+ names: !include country-names/cy.yaml
+ postcode:
+ pattern: "(?:99|d)ddd"
+
# Czechia (Česko)
cz:
partition: 124
languages: cs
+ names: !include country-names/cz.yaml
+ postcode:
+ pattern: "(ddd) ?(dd)"
+ output: \1 \2
+
# Germany (Deutschland)
de:
partition: 3
languages: de
+ names: !include country-names/de.yaml
+ postcode:
+ pattern: "ddddd"
+
# Djibouti (Djibouti جيبوتي)
dj:
partition: 43
languages: fr, ar, so, aa
+ names: !include country-names/dj.yaml
+ postcode: no
+
# Denmark (Danmark)
dk:
partition: 160
languages: da
+ names: !include country-names/dk.yaml
+ postcode:
+ pattern: "dddd"
+
# Dominica (Dominica)
dm:
partition: 209
languages: en
+ names: !include country-names/dm.yaml
+ postcode: no
+
# Dominican Republic (República Dominicana)
do:
partition: 37
languages: es
+ names: !include country-names/do.yaml
+ postcode:
+ pattern: "ddddd"
+
# Algeria (Algérie / ⵍⵣⵣⴰⵢⴻⵔ / الجزائر)
dz:
partition: 19
languages: ar, ber, fr
+ names: !include country-names/dz.yaml
+ postcode:
+ pattern: "ddddd"
+
# Ecuador (Ecuador)
ec:
partition: 78
languages: es
+ names: !include country-names/ec.yaml
+ postcode:
+ pattern: "dddddd"
+
# Estonia (Eesti)
ee:
partition: 125
languages: et
+ names: !include country-names/ee.yaml
+ postcode:
+ pattern: "ddddd"
+
# Egypt (مصر)
eg:
partition: 16
languages: ar
+ names: !include country-names/eg.yaml
+ postcode:
+ pattern: "ddddd"
+
# Sahrawi Arab Democratic Republic (الجمهورية العربية الصحراوية الديمقراطية)
eh:
partition: 186
languages: ar, es, fr
+ names: !include country-names/eh.yaml
+
# Eritrea (ኤርትራ Eritrea إرتريا)
er:
partition: 142
languages: ti, ar, en
+ names: !include country-names/er.yaml
+ postcode: no
+
# Spain (España)
es:
partition: 31
languages: es, ast, ca, eu, gl
+ names: !include country-names/es.yaml
+ postcode:
+ pattern: "ddddd"
+
# Ethiopia (ኢትዮጵያ)
et:
partition: 90
languages: am, om
+ names: !include country-names/et.yaml
+ postcode:
+ pattern: "dddd"
+
# Finland (Suomi)
fi:
partition: 20
languages: fi, sv, se
+ names: !include country-names/fi.yaml
+ postcode:
+ pattern: "ddddd"
+
# Fiji (Viti)
fj:
partition: 210
languages: en
+ names: !include country-names/fj.yaml
+ postcode: no
+
# Falkland Islands (Falkland Islands)
fk:
partition: 91
languages: en
+ names: !include country-names/fk.yaml
+ postcode:
+ pattern: "FIQQ 1ZZ"
+
# Federated States of Micronesia (Micronesia)
fm:
partition: 217
languages: en
+ names: !include country-names/fm.yaml
+ postcode:
+ pattern: "ddddd"
+
# Faroe Islands (Føroyar)
fo:
partition: 10
languages: fo, da
+ names: !include country-names/fo.yaml
+ postcode:
+ pattern: "ddd"
+
# France (France)
fr:
partition: 4
languages: fr
+ names: !include country-names/fr.yaml
+ postcode:
+ pattern: "ddddd"
+
# Gabon (Gabon)
ga:
partition: 239
languages: fr
+ names: !include country-names/ga.yaml
+ postcode: no
+
# United Kingdom (United Kingdom)
gb:
partition: 1
languages: en
+ names: !include country-names/gb.yaml
+ postcode:
+ pattern: "(l?ld[A-Z0-9]?) ?(dll)"
+ output: \1 \2
+
# Grenada (Grenada)
gd:
partition: 143
languages: en
+ names: !include country-names/gd.yaml
+ postcode: no
+
# Georgia (საქართველო)
ge:
partition: 21
languages: ka
+ names: !include country-names/ge.yaml
+ postcode:
+ pattern: "dddd"
+
# French Guiana (Guyane Française)
gf:
partition: 231
languages: fr
+ names: !include country-names/gf.yaml
+
# Guernsey (Guernsey)
gg:
partition: 77
languages: en
+ names: !include country-names/gg.yaml
+ postcode:
+ pattern: "(GYdd?) ?(dll)"
+ output: \1 \2
+
# Ghana (Ghana)
gh:
partition: 211
languages: en
+ names: !include country-names/gh.yaml
+ postcode:
+ pattern: "ll-d?ddd-dddd"
+
# Gibraltar (Gibraltar)
gi:
partition: 138
languages: en
+ names: !include country-names/gi.yaml
+ postcode:
+ pattern: "(GX11) ?(1AA)"
+ output: GX11 1AA
+
# Greenland (Kalaallit Nunaat)
gl:
partition: 111
languages: kl, da
+ names: !include country-names/gl.yaml
+ postcode:
+ pattern: "dddd"
+
# The Gambia (Gambia)
gm:
partition: 212
languages: en
+ names: !include country-names/gm.yaml
+ postcode: no
+
# Guinea (Guinée)
gn:
partition: 240
languages: fr
+ names: !include country-names/gn.yaml
+ postcode:
+ pattern: "ddd"
+
# Guadeloupe (Guadeloupe)
gp:
partition: 232
languages: fr
+ names: !include country-names/gp.yaml
+
# Equatorial Guinea (Guinea Ecuatorial)
gq:
partition: 12
languages: es, fr, pt
+ names: !include country-names/gq.yaml
+ postcode: no
+
# Greece (Ελλάς)
gr:
partition: 22
languages: el
+ names: !include country-names/gr.yaml
+ postcode:
+ pattern: "(ddd) ?(dd)"
+ output: \1 \2
+
# South Georgia and the South Sandwich Islands (South Georgia and the South Sandwich Islands)
gs:
partition: 44
languages: en
+ names: !include country-names/gs.yaml
+ postcode:
+ pattern: "(SIQQ) ?(1ZZ)"
+ output: \1 \2
+
# Guatemala (Guatemala)
gt:
partition: 57
languages: es
+ names: !include country-names/gt.yaml
+ postcode:
+ pattern: "ddddd"
+
# Guam (Guam)
gu:
partition: 187
languages: en, ch
+ names: !include country-names/gu.yaml
+
# Guinea-Bissau (Guiné-Bissau)
gw:
partition: 8
languages: pt
+ names: !include country-names/gw.yaml
+ postcode:
+ pattern: "dddd"
+
# Guyana (Guyana)
gy:
partition: 213
languages: en
+ names: !include country-names/gy.yaml
+ postcode: no
+
# (Hong Kong)
hk:
partition: 188
languages: zh-hant, en
+ names: !include country-names/hk.yaml
+
# (Heard Island and MaxDonald Islands)
hm:
partition: 189
languages: en
+ names: !include country-names/hm.yaml
+
# Honduras (Honduras)
hn:
partition: 56
languages: es
+ names: !include country-names/hn.yaml
+ postcode:
+ pattern: "ddddd"
+
# Croatia (Hrvatska)
hr:
partition: 92
languages: hr
+ names: !include country-names/hr.yaml
+ postcode:
+ pattern: "ddddd"
+
# Haiti (Ayiti)
ht:
partition: 29
languages: fr, ht
+ names: !include country-names/ht.yaml
+ postcode:
+ pattern: "dddd"
+
# Hungary (Magyarország)
hu:
partition: 45
languages: hu
+ names: !include country-names/hu.yaml
+ postcode:
+ pattern: "dddd"
+
# Indonesia (Indonesia)
id:
partition: 110
languages: id
+ names: !include country-names/id.yaml
+ postcode:
+ pattern: "ddddd"
+
# Ireland (Éire / Ireland)
ie:
partition: 46
languages: en, ga
+ names: !include country-names/ie.yaml
+ postcode:
+ pattern: "(ldd) ?([0123456789ACDEFHKNPRTVWXY]{4})"
+ output: \1 \2
+
# Israel (ישראל)
il:
partition: 65
languages: he
+ names: !include country-names/il.yaml
+ postcode:
+ pattern: "ddddddd"
+
# Isle of Man (Isle of Man)
im:
partition: 190
languages: en
+ names: !include country-names/im.yaml
+ postcode:
+ pattern: "(IMdd?) ?(dll)"
+ output: \1 \2
+
# India (India)
in:
partition: 128
languages: hi, en
+ names: !include country-names/in.yaml
+ postcode:
+ pattern: "(ddd) ?(ddd)"
+ output: \1\2
+
# British Indian Ocean Territory (British Indian Ocean Territory)
io:
partition: 13
languages: en
+ names: !include country-names/io.yaml
+ postcode:
+ pattern: "(BBND) ?(1ZZ)"
+ output: \1 \2
+
# Iraq (العراق)
iq:
partition: 144
languages: ar, ku
+ names: !include country-names/iq.yaml
+ postcode:
+ pattern: "ddddd"
+
# Iran (ایران)
ir:
partition: 80
languages: fa
+ names: !include country-names/ir.yaml
+ postcode:
+ pattern: "(ddddd)[-_ ]?(ddddd)"
+ output: \1-\2
+
# Iceland (Ísland)
is:
partition: 134
languages: is
+ names: !include country-names/is.yaml
+ postcode:
+ pattern: "ddd"
+
# Italy (Italia)
it:
partition: 28
languages: it, de, fr
+ names: !include country-names/it.yaml
+ postcode:
+ pattern: "ddddd"
+
# Jersey (Jersey)
je:
partition: 123
languages: en
+ names: !include country-names/je.yaml
+ postcode:
+ pattern: "(JEdd?) ?(dll)"
+ output: \1 \2
+
# Jamaica (Jamaica)
jm:
partition: 214
languages: en
+ names: !include country-names/jm.yaml
+ postcode: no
+
# Jordan (الأردن)
jo:
partition: 17
languages: ar
+ names: !include country-names/jo.yaml
+ postcode:
+ pattern: "ddddd"
+
# Japan (日本)
jp:
partition: 11
languages: ja
+ names: !include country-names/jp.yaml
+ postcode:
+ pattern: "(ddd)-?(dddd)"
+ output: \1-\2
+
# Kenya (Kenya)
ke:
partition: 126
languages: sw, en
+ names: !include country-names/ke.yaml
+ postcode:
+ pattern: "ddddd"
+
# Kyrgyzstan (Кыргызстан)
kg:
partition: 93
languages: ky, ru
+ names: !include country-names/kg.yaml
+ postcode:
+ pattern: "dddddd"
+
# Cambodia (ព្រះរាជាណាចក្រកម្ពុជា)
kh:
partition: 159
languages: km
+ names: !include country-names/kh.yaml
+ postcode:
+ pattern: "dddddd"
+
# Kiribati (Kiribati)
ki:
partition: 215
languages: en
+ names: !include country-names/ki.yaml
+ postcode: no
+
# Comoros (Comores Komori جزر القمر)
km:
partition: 47
languages: ar, fr, sw
+ names: !include country-names/km.yaml
+ postcode: no
+
# Saint Kitts and Nevis (Saint Kitts and Nevis)
kn:
partition: 84
languages: en
+ names: !include country-names/kn.yaml
+ postcode:
+ pattern: "dddd"
+
# North Korea (조선민주주의인민공화국)
kp:
partition: 48
languages: ko
+ names: !include country-names/kp.yaml
+ postcode: no
+
# South Korea (대한민국)
kr:
partition: 49
languages: ko, en
+ names: !include country-names/kr.yaml
+ postcode:
+ pattern: "ddddd"
+
# Kuwait (الكويت)
kw:
partition: 127
languages: ar
+ names: !include country-names/kw.yaml
+ postcode:
+ pattern: "ddddd"
+
# Cayman Islands (Cayman Islands)
ky:
partition: 38
languages: en
+ names: !include country-names/ky.yaml
+ postcode:
+ pattern: "(d)-(dddd)"
+ output: KY\1-\2
+
# Kazakhstan (Қазақстан)
kz:
partition: 94
languages: kk, ru
+ names: !include country-names/kz.yaml
+ postcode:
+ pattern: "(?:lddldld|dddddd)"
+
# Laos (ປະເທດລາວ)
la:
partition: 145
languages: lo
+ names: !include country-names/la.yaml
+ postcode:
+ pattern: "ddddd"
+
# Lebanon (لبنان)
lb:
partition: 66
languages: ar, fr
+ names: !include country-names/lb.yaml
+ postcode:
+ pattern: "(dddd)(?: ?dddd)?"
+
# Saint Lucia (Saint Lucia)
lc:
partition: 146
languages: en
+ names: !include country-names/lc.yaml
+ postcode:
+ pattern: "(dd) ?(ddd)"
+ output: LC\1 \2
+
# Liechtenstein (Liechtenstein)
li:
partition: 246
languages: de
+ names: !include country-names/li.yaml
+ postcode:
+ pattern: "dddd"
+
# Sri Lanka (ශ්රී ලංකාව இலங்கை)
lk:
partition: 95
languages: si, ta
+ names: !include country-names/lk.yaml
+ postcode:
+ pattern: "ddddd"
+
# Liberia (Liberia)
lr:
partition: 216
languages: en
+ names: !include country-names/lr.yaml
+ postcode:
+ pattern: "dddd"
+
# Lesotho (Lesotho)
ls:
partition: 136
languages: en, st
+ names: !include country-names/ls.yaml
+ postcode:
+ pattern: "ddd"
+
# Lithuania (Lietuva)
lt:
partition: 67
languages: lt
+ names: !include country-names/lt.yaml
+ postcode:
+ pattern: "ddddd"
+
# Luxembourg (Lëtzebuerg)
lu:
partition: 74
languages: lb, fr, de
+ names: !include country-names/lu.yaml
+ postcode:
+ pattern: "dddd"
+
# Latvia (Latvija)
lv:
partition: 162
languages: lv
+ names: !include country-names/lv.yaml
+ postcode:
+ pattern: "(dddd)"
+ output: LV-\1
+
# Libya (ليبيا)
ly:
partition: 163
languages: ar
+ names: !include country-names/ly.yaml
+ postcode: no
+
# Morocco (Maroc ⵍⵎⵖⵔⵉⴱ المغرب)
ma:
partition: 23
languages: fr, zgh, ar
+ names: !include country-names/ma.yaml
+ postcode:
+ pattern: "ddddd"
+
# Monaco (Monaco)
mc:
partition: 242
languages: fr
+ names: !include country-names/mc.yaml
+ postcode:
+ pattern: "980dd"
+
# Moldova (Moldova)
md:
partition: 147
languages: ro, ru, uk
+ names: !include country-names/md.yaml
+ postcode:
+ pattern: "(dddd)"
+ output: MD-\1
+
# Montenegro (Crna Gora / Црна Гора)
me:
partition: 180
languages: srp, sr, hr, bs, sq
+ names: !include country-names/me.yaml
+ postcode:
+ pattern: "ddddd"
+
# Saint Martin (Saint Martin)
mf:
partition: 203
languages: fr
+ names: !include country-names/mf.yaml
+
# Madagascar (Madagasikara)
mg:
partition: 164
languages: mg, fr
+ names: !include country-names/mg.yaml
+ postcode:
+ pattern: "ddd"
+
# Marshall Islands (Ṃajeḷ)
mh:
partition: 105
languages: en, mh
+ names: !include country-names/mh.yaml
+ postcode:
+ pattern: "ddddd"
+
# North Macedonia (Северна Македонија)
mk:
partition: 69
languages: mk
+ names: !include country-names/mk.yaml
+ postcode:
+ pattern: "dddd"
+
# Mali (Mali)
ml:
partition: 241
languages: fr
+ names: !include country-names/ml.yaml
+ postcode: no
+
# Myanmar (မြန်မာ)
mm:
partition: 148
languages: my
+ names: !include country-names/mm.yaml
+ postcode:
+ pattern: "ddddd"
+
# Mongolia (Монгол улс ᠮᠤᠩᠭᠤᠯ ᠤᠯᠤᠰ)
mn:
partition: 167
languages: mn
+ names: !include country-names/mn.yaml
+ postcode:
+ pattern: "ddddd"
+
# Macao (Macao)
mo:
partition: 191
languages: zh-hant, pt
+ names: !include country-names/mo.yaml
+ postcode: no
+
# Northern Mariana Islands (Northern Mariana Islands)
mp:
partition: 192
languages: ch, en
+ names: !include country-names/mp.yaml
+
# Martinique (Martinique)
mq:
partition: 233
languages: fr
+ names: !include country-names/mq.yaml
+
# Mauritania (موريتانيا)
mr:
partition: 149
languages: ar, fr
+ names: !include country-names/mr.yaml
+ postcode: no
+
# Montserrat (Montserrat)
ms:
partition: 73
languages: en
+ names: !include country-names/ms.yaml
+
# Malta (Malta)
mt:
partition: 165
languages: mt, en
+ names: !include country-names/mt.yaml
+ postcode:
+ pattern: "(lll) ?(dddd)"
+ output: \1 \2
+
# Mauritius (Mauritius)
mu:
partition: 150
languages: mfe, fr, en
+ names: !include country-names/mu.yaml
+ postcode:
+ pattern: "ddddd"
+
# Maldives (ދިވެހިރާއްޖެ)
mv:
partition: 96
languages: dv
+ names: !include country-names/mv.yaml
+ postcode:
+ pattern: "ddddd"
+
# Malawi (Malawi)
mw:
partition: 97
languages: en, ny
+ names: !include country-names/mw.yaml
+ postcode: no
+
# Mexico (México)
mx:
partition: 166
languages: es
+ names: !include country-names/mx.yaml
+ postcode:
+ pattern: "ddddd"
+
# Malaysia (Malaysia)
my:
partition: 7
languages: ms
+ names: !include country-names/my.yaml
+ postcode:
+ pattern: "ddddd"
+
# Mozambique (Moçambique)
mz:
partition: 98
languages: pt
+ names: !include country-names/mz.yaml
+ postcode:
+ pattern: "(dddd)(?:-dd)?"
+
# Namibia (Namibia)
na:
partition: 99
languages: en, sf, de
+ names: !include country-names/na.yaml
+ postcode:
+ pattern: "ddddd"
+
# New Caledonia (Nouvelle-Calédonie)
nc:
partition: 234
languages: fr
+ names: !include country-names/nc.yaml
+
# Niger (Niger)
ne:
partition: 226
languages: fr
+ names: !include country-names/ne.yaml
+ postcode:
+ pattern: "dddd"
+
# Norfolk Island (Norfolk Island)
nf:
partition: 100
languages: en, pih
+ names: !include country-names/nf.yaml
+
# Nigeria (Nigeria)
ng:
partition: 218
languages: en
+ names: !include country-names/ng.yaml
+ postcode:
+ pattern: "dddddd"
+
# Nicaragua (Nicaragua)
ni:
partition: 151
languages: es
+ names: !include country-names/ni.yaml
+ postcode:
+ pattern: "ddddd"
+
# Netherlands (Nederland)
nl:
partition: 63
languages: nl
+ names: !include country-names/nl.yaml
+ postcode:
+ pattern: "(dddd) ?(ll)"
+ output: \1 \2
+
# Norway (Norge)
"no":
partition: 60
languages: nb, nn, no, se
+ names: !include country-names/no.yaml
+ postcode:
+ pattern: "dddd"
+
# Nepal (Nepal)
np:
partition: 50
languages: ne
+ names: !include country-names/np.yaml
+ postcode:
+ pattern: "ddddd"
+
# Nauru (Naoero)
nr:
partition: 70
languages: na, en
+ names: !include country-names/nr.yaml
+ postcode: no
+
# Niue (Niuē)
nu:
partition: 178
languages: niu, en
+ names: !include country-names/nu.yaml
+ postcode: no
+
# New Zealand (New Zealand / Aotearoa)
nz:
partition: 27
languages: mi, en
+ names: !include country-names/nz.yaml
+ postcode:
+ pattern: "dddd"
+
# Oman (عمان)
om:
partition: 137
languages: ar
+ names: !include country-names/om.yaml
+ postcode:
+ pattern: "ddd"
+
# Panama (Panamá)
pa:
partition: 152
languages: es
+ names: !include country-names/pa.yaml
+ postcode:
+ pattern: "dddd"
+
# Peru (Perú)
pe:
partition: 51
languages: es
+ names: !include country-names/pe.yaml
+ postcode:
+ pattern: "ddddd"
+
# French Polynesia (Polynésie française)
pf:
partition: 202
languages: fr
+ names: !include country-names/pf.yaml
+
# Papua New Guinea (Papua Niugini)
pg:
partition: 71
languages: en, tpi, ho
+ names: !include country-names/pg.yaml
+ postcode:
+ pattern: "ddd"
+
# Philippines (Philippines)
ph:
partition: 26
languages: en, tl
+ names: !include country-names/ph.yaml
+ postcode:
+ pattern: "dddd"
+
# Pakistan (پاکستان)
pk:
partition: 14
- languages: en, ur
+ languages: en, ur, pnb, sd, ps, bal
+ names: !include country-names/pk.yaml
+ postcode:
+ pattern: "ddddd"
+
# Poland (Polska)
pl:
partition: 168
languages: pl
+ names: !include country-names/pl.yaml
+ postcode:
+ pattern: "(dd)[ -]?(ddd)"
+ output: \1-\2
+
# Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)
pm:
partition: 236
languages: fr
+ names: !include country-names/pm.yaml
+
# Pitcairn Islands (Pitcairn Islands)
pn:
partition: 113
languages: en, pih
+ names: !include country-names/pn.yaml
+ postcode:
+ pattern: "(PCRN) ?(1ZZ)"
+ output: \1 \2
+
# Puerto Rico (Puerto Rico)
pr:
partition: 193
languages: es, en
+ names: !include country-names/pr.yaml
+
# Palestinian Territory (Palestinian Territory)
ps:
partition: 194
languages: ar, he
+ names: !include country-names/ps.yaml
+ postcode:
+ pattern: "ddd"
+
# Portugal (Portugal)
pt:
partition: 34
languages: pt
+ names: !include country-names/pt.yaml
+ postcode:
+ pattern: "dddd(?:-ddd)?"
+
# Palau (Belau)
pw:
partition: 195
languages: en, pau, ja, sov, tox
+ names: !include country-names/pw.yaml
+ postcode:
+ pattern: "969(39|40)"
+
# Paraguay (Paraguay)
py:
partition: 101
languages: es, gn
+ names: !include country-names/py.yaml
+ postcode:
+ pattern: "dddddd"
+
# Qatar (قطر)
qa:
partition: 169
languages: ar
+ names: !include country-names/qa.yaml
+ postcode: no
+
# (Réunion)
re:
partition: 235
languages: fr
+ names: !include country-names/re.yaml
+
# Romania (România)
ro:
partition: 170
languages: ro
+ names: !include country-names/ro.yaml
+ postcode:
+ pattern: "dddddd"
+
# Serbia (Србија)
rs:
partition: 59
languages: sr
+ names: !include country-names/rs.yaml
+ postcode:
+ pattern: "ddddd"
+
# Russia (Россия)
ru:
partition: 135
languages: ru
+ names: !include country-names/ru.yaml
+ postcode:
+ pattern: "dddddd"
+
# Rwanda (Rwanda)
rw:
partition: 102
languages: rw, fr, en
+ names: !include country-names/rw.yaml
+ postcode: no
+
# Saudi Arabia (السعودية)
sa:
partition: 52
languages: ar
+ names: !include country-names/sa.yaml
+ postcode:
+ pattern: "ddddd(?:-dddd)?"
+
# Solomon Islands (Solomon Islands)
sb:
partition: 201
languages: en
+ names: !include country-names/sb.yaml
+ postcode: no
+
# Seychelles (Sesel)
sc:
partition: 79
languages: fr, en, crs
+ names: !include country-names/sc.yaml
+ postcode: no
+
# Sudan (السودان)
sd:
partition: 72
languages: ar, en
+ names: !include country-names/sd.yaml
+ postcode:
+ pattern: "ddddd"
+
# Sweden (Sverige)
se:
partition: 112
languages: sv
+ names: !include country-names/se.yaml
+ postcode:
+ pattern: "(ddd) ?(dd)"
+ output: \1 \2
+
# Singapore (Singapore)
sg:
partition: 115
languages: zh-hans, en, ms, ta
+ names: !include country-names/sg.yaml
+ postcode:
+ pattern: "dddddd"
+
# Saint Helena, Ascension and Tristan da Cunha (Saint Helena, Ascension and Tristan da Cunha)
sh:
partition: 196
languages: en
+ names: !include country-names/sh.yaml
+ postcode:
+ pattern: "(ASCN|STHL|TDCU) ?(1ZZ)"
+ output: \1 \2
+
# Slovenia (Slovenija)
si:
partition: 36
languages: sl
+ names: !include country-names/si.yaml
+ postcode:
+ pattern: "dddd"
+
# (Svalbard and Jan Mayen)
sj:
partition: 197
languages: "no"
+ names: !include country-names/sj.yaml
+
# Slovakia (Slovensko)
sk:
partition: 172
languages: sk
+ names: !include country-names/sk.yaml
+ postcode:
+ pattern: "(ddd) ?(dd)"
+ output: \1 \2
+
# Sierra Leone (Sierra Leone)
sl:
partition: 219
languages: en
+ names: !include country-names/sl.yaml
+ postcode: no
+
# San Marino (San Marino)
sm:
partition: 153
languages: it
+ names: !include country-names/sm.yaml
+ postcode:
+ pattern: "4789d"
+
# Senegal (Sénégal)
sn:
partition: 237
languages: fr
+ names: !include country-names/sn.yaml
+ postcode:
+ pattern: "ddddd"
+
# Somalia (Soomaaliya الصومال)
so:
partition: 154
languages: so, ar
+ names: !include country-names/so.yaml
+ postcode:
+ pattern: "(ll) ?(ddddd)"
+ output: \1 \2
+
# Suriname (Suriname)
sr:
partition: 24
languages: nl
+ names: !include country-names/sr.yaml
+ postcode: no
+
# South Sudan (South Sudan)
ss:
partition: 247
languages: en
+ names: !include country-names/ss.yaml
+ postcode: no
+
# São Tomé and Príncipe (São Tomé e Príncipe)
st:
partition: 53
languages: pt
+ names: !include country-names/st.yaml
+ postcode: no
+
# El Salvador (El Salvador)
sv:
partition: 103
languages: es
+ names: !include country-names/sv.yaml
+ postcode:
+ pattern: "dddd"
+
# (Sint Maarten)
sx:
partition: 249
languages: nl, en
+ names: !include country-names/sx.yaml
+
# Syria (سوريا)
sy:
partition: 104
languages: ar
+ names: !include country-names/sy.yaml
+ postcode: no
+
# Eswatini (eSwatini)
sz:
partition: 82
languages: en, ss
+ names: !include country-names/sz.yaml
+ postcode:
+ pattern: "lddd"
+
# Turks and Caicos Islands (Turks and Caicos Islands)
tc:
partition: 106
languages: en
+ names: !include country-names/tc.yaml
+ postcode:
+ pattern: "(TKCA) ?(1ZZ)"
+ output: \1 \2
+
# Chad (Tchad تشاد)
td:
partition: 68
languages: fr, ar
+ names: !include country-names/td.yaml
+ postcode: no
+
# French Southern Lands (Terres australes et antarctiques françaises)
tf:
partition: 132
languages: fr
+ names: !include country-names/tf.yaml
+
# Togo (Togo)
tg:
partition: 243
languages: fr
+ names: !include country-names/tg.yaml
+ postcode: no
+
# Thailand (ประเทศไทย)
th:
partition: 32
languages: th
+ names: !include country-names/th.yaml
+ postcode:
+ pattern: "ddddd"
+
# Tajikistan (Тоҷикистон)
tj:
partition: 129
languages: tg, ru
+ names: !include country-names/tj.yaml
+ postcode:
+ pattern: "dddddd"
+
# Tokelau (Tokelau)
tk:
partition: 179
languages: tkl, en, sm
+ names: !include country-names/tk.yaml
+ postcode: no
+
# East Timor (Timór Lorosa'e)
tl:
partition: 161
languages: pt, tet
+ names: !include country-names/tl.yaml
+ postcode: no
+
# Turkmenistan (Türkmenistan)
tm:
partition: 54
languages: tk
+ names: !include country-names/tm.yaml
+ postcode:
+ pattern: "dddddd"
+
# Tunisia (تونس)
tn:
partition: 18
languages: ar, fr
+ names: !include country-names/tn.yaml
+ postcode:
+ pattern: "dddd"
+
# Tonga (Tonga)
to:
partition: 220
languages: en
+ names: !include country-names/to.yaml
+ postcode: no
+
# Turkey (Türkiye)
tr:
partition: 81
languages: tr
+ names: !include country-names/tr.yaml
+ postcode:
+ pattern: "ddddd"
+
# Trinidad and Tobago (Trinidad and Tobago)
tt:
partition: 221
languages: en
+ names: !include country-names/tt.yaml
+ postcode:
+ pattern: "dddddd"
+
# Tuvalu (Tuvalu)
tv:
partition: 156
languages: en
+ names: !include country-names/tv.yaml
+ postcode: no
+
# Taiwan (臺灣)
tw:
partition: 25
languages: zh-hant
+ names: !include country-names/tw.yaml
+ postcode:
+ pattern: "ddd(?:ddd?)?"
+
# Tanzania (Tanzania)
tz:
partition: 130
languages: sw, en
+ names: !include country-names/tz.yaml
+ postcode:
+ pattern: "ddddd"
+
# Ukraine (Україна)
ua:
partition: 173
languages: uk
+ names: !include country-names/ua.yaml
+ postcode:
+ pattern: "d?ddddd"
+
# Uganda (Uganda)
ug:
partition: 155
languages: en, sw
+ names: !include country-names/ug.yaml
+ postcode: no
+
# (United States Minor Outlying Islands)
um:
partition: 198
languages: en
+ names: !include country-names/um.yaml
+ postcode:
+ pattern: "96898"
+
# United States (United States)
us:
partition: 2
languages: en
+ names: !include country-names/us.yaml
+ postcode:
+ pattern: "ddddd"
+
# Uruguay (Uruguay)
uy:
partition: 174
languages: es
+ names: !include country-names/uy.yaml
+ postcode:
+ pattern: "ddddd"
+
# Uzbekistan (Oʻzbekiston)
uz:
partition: 157
languages: uz, kaa
+ names: !include country-names/uz.yaml
+ postcode:
+ pattern: "dddddd"
+
# Vatican City (Civitas Vaticana)
va:
partition: 107
languages: it
+ names: !include country-names/va.yaml
+ postcode:
+ pattern: "00120"
+
# Saint Vincent and the Grenadines (Saint Vincent and the Grenadines)
vc:
partition: 171
languages: en
+ names: !include country-names/vc.yaml
+ postcode:
+ pattern: "(dddd)"
+ output: VC\1
+
# Venezuela (Venezuela)
ve:
partition: 108
languages: es
+ names: !include country-names/ve.yaml
+ postcode:
+ pattern: "dddd"
+
# British Virgin Islands (British Virgin Islands)
vg:
partition: 109
languages: en
+ names: !include country-names/vg.yaml
+ postcode:
+ pattern: "(dddd)"
+ output: VG\1
+
# (United States Virgin Islands)
vi:
partition: 199
languages: en
+ names: !include country-names/vi.yaml
+
# Vietnam (Việt Nam)
vn:
partition: 75
languages: vi
+ names: !include country-names/vn.yaml
+ postcode:
+ pattern: "ddddd"
+
# Vanuatu (Vanuatu)
vu:
partition: 116
languages: bi, en, fr
+ names: !include country-names/vu.yaml
+ postcode: no
+
# Wallis and Futuna Islands (Wallis-et-Futuna)
wf:
partition: 238
languages: fr
+ names: !include country-names/wf.yaml
+
# Samoa (Sāmoa)
ws:
partition: 131
languages: sm, en
+ names: !include country-names/ws.yaml
+
# Kosovo (Kosova / Kosovo)
xk:
partition: 59
languages: sq, sr
+ names: !include country-names/xk.yaml
+ postcode:
+ pattern: "ddddd"
+
# Yemen (اليمن)
ye:
partition: 55
languages: ar
+ names: !include country-names/ye.yaml
+ postcode: no
+
# Mayotte (Mayotte)
yt:
partition: 200
languages: fr
+ names: !include country-names/yt.yaml
+
# South Africa (South Africa)
za:
partition: 76
languages: en, af, st, tn, xh, zu
+ names: !include country-names/za.yaml
+ postcode:
+ pattern: "dddd"
+
# Zambia (Zambia)
zm:
partition: 222
languages: en
+ names: !include country-names/zm.yaml
+ postcode:
+ pattern: "dddd"
+
# Zimbabwe (Zimbabwe)
zw:
partition: 223
languages: en, sn, nd
-
+ names: !include country-names/zw.yaml
+ postcode: no
# Tokenizer used for normalizing and parsing queries and names.
# The tokenizer is set up during import and cannot be changed afterwards
# without a reimport.
-# Currently available tokenizers: legacy
-NOMINATIM_TOKENIZER="legacy"
+# Currently available tokenizers: icu, legacy
+NOMINATIM_TOKENIZER="icu"
# Number of occurrences of a word before it is considered frequent.
# Similar to the concept of stop words. Frequent partial words get ignored
# HTTPS_PROXY="http://user:pass@10.10.1.10:1080"
# Location of the osm2pgsql binary.
-# When empty, osm2pgsql is expected to reside in the osm2pgsql directory in
-# the project directory.
# EXPERT ONLY. You should usually use the supplied osm2pgsql.
NOMINATIM_OSM2PGSQL_BINARY=
- "'nº' > 'no'"
- "ª > a"
- "º > o"
- - "[[:Punctuation:][:Symbol:]] > ' '"
- - "ß > 'ss'" # German szet is unimbigiously equal to double ss
- - "[^[:Letter:] [:Number:] [:Space:]] >"
+ - "[[:Punctuation:][:Symbol:]\u02bc] > ' '"
+ - "ß > 'ss'" # German szet is unambiguously equal to double ss
+ - "[^[:alnum:] [:Canonical_Combining_Class=Virama:] [:Space:]] >"
- "[:Lm:] >"
- ":: [[:Number:]] Latin ()"
- ":: [[:Number:]] Ascii ();"
- "[^a-z0-9[:Space:]] >"
- ":: NFC ()"
sanitizers:
+ - step: clean-housenumbers
+ filter-kind:
+ - housenumber
+ - conscriptionnumber
+ - streetnumber
+ convert-to-name:
+ - (\A|.*,)[^\d,]{3,}(,.*|\Z)
+ - step: clean-postcodes
+ convert-to-address: yes
+ default-pattern: "[A-Z0-9- ]{3,12}"
- step: split-name-list
- step: strip-brace-terms
- step: tag-analyzer-by-language
mode: append
token-analysis:
- analyzer: generic
+ - id: "@housenumber"
+ analyzer: housenumbers
+ - id: "@postcode"
+ analyzer: postcodes
- id: bg
analyzer: generic
mode: variant-only
mode: variant-only
variants:
- !include icu-rules/variants-de.yaml
+ mutations:
+ - pattern: ä
+ replacements: ["ä", "ae"]
+ - pattern: ö
+ replacements: ["ö", "oe"]
+ - pattern: ü
+ replacements: ["ü", "ue"]
- id: el
analyzer: generic
mode: variant-only
}
},
{
- "keys" : ["name:prefix", "name:suffix", "name:prefix:*", "name:suffix:*",
- "name:etymology", "name:signed", "name:botanical", "*wikidata"],
+ "keys" : ["*:prefix", "*:suffix", "name:prefix:*", "name:suffix:*",
+ "name:etymology", "name:signed", "name:botanical", "*:wikidata",
+ "addr:street:name", "addr:street:type"],
"values" : {
"" : "skip"
}
},
{
"keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
- "iata", "icao", "pcode"],
+ "iata", "icao", "pcode", "ISO3166-2"],
"values" : {
"" : "ref"
}
}
},
{
- "keys" : ["name:prefix", "name:suffix", "name:prefix:*", "name:suffix:*",
- "name:etymology", "name:signed", "name:botanical", "*wikidata"],
+ "keys" : ["*:prefix", "*:suffix", "name:prefix:*", "name:suffix:*",
+ "name:etymology", "name:signed", "name:botanical", "*:wikidata",
+ "addr:street:name", "addr:street:type"],
"values" : {
"" : "skip"
}
},
{
"keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
- "iata", "icao", "pcode"],
+ "iata", "icao", "pcode", "ISO3166-2"],
"values" : {
"" : "ref"
}
}
},
{
- "keys" : ["name:prefix", "name:suffix", "name:prefix:*", "name:suffix:*",
- "name:etymology", "name:signed", "name:botanical", "wikidata", "*:wikidata"],
+ "keys" : ["*:prefix", "*:suffix", "name:prefix:*", "name:suffix:*",
+ "name:etymology", "name:signed", "name:botanical", "wikidata", "*:wikidata",
+ "addr:street:name", "addr:street:type"],
"values" : {
"" : "extra"
}
},
{
"keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
- "iata", "icao", "pcode", "pcode:*"],
+ "iata", "icao", "pcode", "pcode:*", "ISO3166-2"],
"values" : {
"" : "ref"
}
"" : "main,with_name"
}
},
-{
- "keys" : ["amenity"],
- "values" : {
- "restaurant" : "main,operator",
- "fuel" : "main,operator"
- }
-},
{
"keys" : ["aeroway", "amenity", "club", "craft", "leisure",
"office", "mountain_pass"],
"keys" : ["shop"],
"values" : {
"no" : "skip",
- "" : "main,operator"
+ "" : "main"
}
},
{
"values" : {
"yes" : "skip",
"no" : "skip",
- "" : "main,operator"
+ "" : "main"
}
},
{
}
},
{
- "keys" : ["junction"],
+ "keys" : ["junction", "healthcare"],
"values" : {
"" : "main,fallback,with_name"
}
}
},
{
- "keys" : ["name:prefix", "name:suffix", "name:prefix:*", "name:suffix:*",
- "name:etymology", "name:signed", "name:botanical", "wikidata", "*:wikidata"],
+ "keys" : ["*:prefix", "*:suffix", "name:prefix:*", "name:suffix:*",
+ "name:etymology", "name:signed", "name:botanical", "wikidata", "*:wikidata",
+ "addr:street:name", "addr:street:type"],
"values" : {
"" : "extra"
}
},
{
"keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
- "iata", "icao", "pcode", "pcode:*"],
+ "iata", "icao", "pcode", "pcode:*", "ISO3166-2"],
"values" : {
"" : "ref"
}
"" : "main,with_name"
}
},
-{
- "keys" : ["amenity"],
- "values" : {
- "restaurant" : "main,operator",
- "fuel" : "main,operator"
- }
-},
{
"keys" : ["aeroway", "amenity", "club", "craft", "leisure",
"office", "mountain_pass"],
"keys" : ["shop"],
"values" : {
"no" : "skip",
- "" : "main,operator"
+ "" : "main"
}
},
{
"values" : {
"yes" : "skip",
"no" : "skip",
- "" : "main,operator"
+ "" : "main"
}
},
{
}
},
{
- "keys" : ["junction"],
+ "keys" : ["junction", "healthcare"],
"values" : {
"" : "main,fallback,with_name"
}
}
},
{
- "keys" : ["name:prefix", "name:suffix", "name:prefix:*", "name:suffix:*",
- "name:etymology", "name:signed", "name:botanical", "*wikidata"],
+ "keys" : ["*:prefix", "*:suffix", "name:prefix:*", "name:suffix:*",
+ "name:etymology", "name:signed", "name:botanical", "*:wikidata",
+ "addr:street:name", "addr:street:type"],
"values" : {
"" : "skip"
}
},
{
"keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
- "iata", "icao", "pcode"],
+ "iata", "icao", "pcode", "ISO3166-2"],
"values" : {
"" : "ref"
}
[behave]
show_skipped=False
-tags=~@Fail
+default_tags=~@Fail
| way | place | house |
And result addresses contain
| house_number | road | postcode | country_code |
- | 697 | Upper Kingston Road | 36067 | us |
+ | 707 | Upper Kingston Road | 36067 | us |
@Tiger
Scenario: No TIGER house number for zoom < 18
| postcode | 9495 |
| country | Liechtenstein |
| country_code | li |
+ | ISO3166-2-lvl8 | LI-09 |
Examples:
| format |
| Triesenberg |
+ Scenario: Array parameters are ignored
+ When sending json search query "Vaduz" with address
+ | countrycodes[] | polygon_svg[] | limit[] | polygon_threshold[] |
+ | IT | 1 | 3 | 3.4 |
+ Then result addresses contain
+ | ID | country_code |
+ | 0 | li |
| postcode | 9497 |
| country | Liechtenstein |
| country_code | li |
+ | ISO3166-2-lvl8 | LI-10 |
Scenario: House number interpolation
When sending json search query "Grosssteg 1023, Triesenberg" with address
| town | Triesenberg |
| country | Liechtenstein |
| country_code | li |
+ | ISO3166-2-lvl8 | LI-10 |
Scenario Outline: Housenumber 0 can be found
When sending <format> search query "Gnalpstrasse 0" with address
Scenario: boundary areas are preferred over place nodes in the address
Given the grid
- | 1 | | | | | | 3 |
- | | 5 | | | | | |
- | | 6 | | | | | |
- | 2 | | | | | | 4 |
+ | 1 | | | | 10 | | 3 |
+ | | 5 | | | | | |
+ | | 6 | | | | | |
+ | 2 | | | | 11 | | 4 |
And the named places
- | osm | class | type | admin | geometry |
- | N1 | place | square | 15 | 5 |
- | N2 | place | city | 15 | 6 |
- | R1 | place | city | 8 | (1,2,4,3,1) |
+ | osm | class | type | admin | geometry |
+ | N1 | place | square | 15 | 5 |
+ | N2 | place | city | 15 | 6 |
+ | R1 | place | city | 8 | (1,2,4,3,1) |
+ | R2 | boundary | administrative | 9 | (1,10,11,2,1) |
When importing
Then place_addressline contains
| object | address | isaddress | cached_rank_address |
| N1 | R1 | True | 16 |
- | N1 | N2 | False | 16 |
+ | N1 | R2 | True | 18 |
+ | N1 | N2 | False | 18 |
Scenario: place nodes outside a smaller ranked area are ignored
Given the grid
| W1 | W10 |
Scenario: buildings with only addr:postcodes do not appear in the address of a way
- Given the scene admin-areas
+ Given the grid with origin DE
+ | 1 | | | | | 8 | | 6 | | 2 |
+ | |10 |11 | | | | | | | |
+ | |13 |12 | | | | | | | |
+ | 20| | | 21| | | | | | |
+ | | | | | | | | | | |
+ | | | | | | 9 | | | | |
+ | 4 | | | | | | | 7 | | 3 |
And the named places
- | osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
- | R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
+ | osm | class | type | admin | addr+postcode | geometry |
+ | R1 | boundary | administrative | 6 | 10000 | (1,2,3,4,1)|
+ | R34 | boundary | administrative | 8 | 11200 | (1,6,7,4,1)|
+ | R4 | boundary | administrative | 10 | 11230 | (1,8,9,4,1)|
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
+ | W93 | highway | residential | 20,21 |
And the places
| osm | class | type | addr+postcode | geometry |
- | W22 | place | postcode | 445023 | :building:w2N |
+ | W22 | place | postcode | 11234 | (10,11,12,13,10) |
When importing
Then place_addressline doesn't contain
| object | address |
| W93 | W22 |
Scenario: postcode boundaries do appear in the address of a way
- Given the scene admin-areas
+ Given the grid with origin DE
+ | 1 | | | | | 8 | | 6 | | 2 |
+ | |10 |11 | | | | | | | |
+ | |13 |12 | | | | | | | |
+ | 20| | | 21| | | | | | |
+ | | | | | | | | | | |
+ | | | | | | 9 | | | | |
+ | 4 | | | | | | | 7 | | 3 |
And the named places
- | osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
+ | osm | class | type | admin | addr+postcode | geometry |
+ | R1 | boundary | administrative | 6 | 10000 | (1,2,3,4,1) |
+ | R34 | boundary | administrative | 8 | 11000 | (1,6,7,4,1) |
And the places
| osm | class | type | addr+postcode | geometry |
- | R4 | boundary | postal_code | 112 DE 34 | :b2:N |
+ | R4 | boundary | postal_code | 11200 | (1,8,9,4,1) |
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
+ | W93 | highway | residential | 20,21 |
And the places
| osm | class | type | addr+postcode | geometry |
- | W22 | place | postcode | 445023 | :building:w2N |
+ | W22 | place | postcode | 11234 | (10,11,12,13,10) |
When importing
Then place_addressline contains
| object | address |
Then results contain
| osm | display_name |
| N2 | Leftside, Wonderway, Left |
+
+
+ Scenario: addr:* tags always match the closer area
+ Given the grid
+ | 1 | | | | 2 | | 5 |
+ | | | | | | | |
+ | | 10| 11| | | | |
+ | 4 | | | | 3 | | 6 |
+ And the places
+ | osm | class | type | admin | name | geometry |
+ | R1 | boundary | administrative | 8 | Left | (1,2,3,4,1) |
+ | R2 | boundary | administrative | 8 | Left | (2,3,6,5,2) |
+ And the places
+ | osm | class | type | name | addr+city | geometry |
+ | W1 | highway | primary | Wonderway | Left | 10,11 |
+ When importing
+ Then place_addressline doesn't contain
+ | object | address |
+ | W1 | R2 |
+
| osm | display_name |
| N1 | Wenig, Loudou |
Scenario: OSM country relations outside expected boundaries are ignored
+ Given the grid
+ | 1 | | 2 |
+ | 4 | | 3 |
Given the places
| osm | class | type | admin | name+name:xy | country | geometry |
- | R1 | boundary | administrative | 2 | Loudou | de | poly-area:0.1 |
+ | R1 | boundary | administrative | 2 | Loudou | de | (1,2,3,4,1) |
Given the places
| osm | class | type | name | geometry |
| N1 | place | town | Wenig | country:de |
| osm | display_name |
| N1 | Wenig, Germany |
Scenario: Pre-defined country names are used
+ Given the grid with origin CH
+ | 1 |
Given the places
| osm | class | type | name | geometry |
- | N1 | place | town | Ingb | country:ch |
+ | N1 | place | town | Ingb | 1 |
When importing
And sending search query "Ingb"
| accept-language |
Tests that interpolated addresses are added correctly
Scenario: Simple even interpolation line with two points
+ Given the grid with origin 1,1
+ | 1 | | 9 | | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 6 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001 |
+ | W1 | place | houses | even | 1,2 |
And the ways
| id | nodes |
| 1 | 1,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 6 | 1 1, 1 1.001 |
+ | 4 | 4 | 9 |
Scenario: Backwards even two point interpolation line
+ Given the grid with origin 1,1
+ | 1 | 8 | 9 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 6 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 8 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1.001, 1 1 |
+ | W1 | place | houses | even | 1,2 |
And the ways
| id | nodes |
| 1 | 2,1 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 6 | 1 1, 1 1.001 |
+ | 4 | 6 | 8,9 |
Scenario: Simple odd two point interpolation
+ Given the grid with origin 1,1
+ | 1 | 8 | | | 9 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 1 | 1 1 |
- | N2 | place | house | 11 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 1 |
+ | N2 | place | house | 11 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | odd | 1 1, 1 1.001 |
+ | W1 | place | houses | odd | 1,2 |
And the ways
| id | nodes |
| 1 | 1,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 1 | 11 | 1 1, 1 1.001 |
+ | 3 | 9 | 8,9 |
Scenario: Simple all two point interpolation
+ Given the grid with origin 1,1
+ | 1 | 8 | 9 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 1 | 1 1 |
- | N2 | place | house | 3 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 1 |
+ | N2 | place | house | 4 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | all | 1 1, 1 1.001 |
+ | W1 | place | houses | all | 1,2 |
And the ways
| id | nodes |
| 1 | 1,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 1 | 3 | 1 1, 1 1.001 |
+ | 2 | 3 | 8,9 |
Scenario: Even two point interpolation line with intermediate empty node
+ Given the grid
+ | 1 | 8 | | 3 | 9 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 10 | 1.001 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 12 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001 |
+ | W1 | place | houses | even | 1,3,2 |
And the ways
| id | nodes |
| 1 | 1,3,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 10 | 1 1, 1 1.001, 1.001 1.001 |
+ | 4 | 10 | 8,3,9 |
Scenario: Even two point interpolation line with intermediate duplicated empty node
+ Given the grid
+ | 1 | 8 | 3 | 9 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 10 | 1.001 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 10 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001 |
+ | W1 | place | houses | even | 1,3,2 |
And the ways
| id | nodes |
| 1 | 1,3,3,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 10 | 1 1, 1 1.001, 1.001 1.001 |
+ | 4 | 8 | 8,3,9 |
Scenario: Simple even three point interpolation line
+ Given the grid
+ | 1 | 8 | | 9 | 3 | 7 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 14 | 1.001 1.001 |
- | N3 | place | house | 10 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 14 |
+ | N3 | place | house | 10 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001 |
+ | W1 | place | houses | even | 1,3,2 |
And the ways
| id | nodes |
| 1 | 1,3,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 10 | 1 1, 1 1.001 |
- | 10 | 14 | 1 1.001, 1.001 1.001 |
+ | 4 | 8 | 8,9 |
+ | 12 | 12 | 7 |
Scenario: Simple even four point interpolation line
+ Given the grid
+ | 1 | 10 | | 11 | 3 |
+ | | | | | 12|
+ | | | 4 | 13 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 14 | 1.001 1.001 |
- | N3 | place | house | 10 | 1 1.001 |
- | N4 | place | house | 18 | 1.001 1.002 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 14 |
+ | N3 | place | house | 10 |
+ | N4 | place | house | 18 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001, 1.001 1.002 |
+ | W1 | place | houses | even | 1,3,2,4 |
And the ways
| id | nodes |
| 1 | 1,3,2,4 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 10 | 1 1, 1 1.001 |
- | 10 | 14 | 1 1.001, 1.001 1.001 |
- | 14 | 18 | 1.001 1.001, 1.001 1.002 |
+ | 4 | 8 | 10,11 |
+ | 12 | 12 | 12 |
+ | 16 | 16 | 13 |
Scenario: Reverse simple even three point interpolation line
+ Given the grid
+ | 1 | 8 | | 9 | 3 | 7 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 14 | 1.001 1.001 |
- | N3 | place | house | 10 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 14 |
+ | N3 | place | house | 10 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1.001 1.001, 1 1.001, 1 1 |
+ | W1 | place | houses | even | 2,3,1 |
And the ways
| id | nodes |
| 1 | 2,3,1 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 10 | 1 1, 1 1.001 |
- | 10 | 14 | 1 1.001, 1.001 1.001 |
+ | 4 | 8 | 8,9 |
+ | 12 | 12 | 7 |
Scenario: Even three point interpolation line with odd center point
+ Given the grid
+ | 1 | | 10 | | | 11 | 3 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 1 1 |
- | N2 | place | house | 8 | 1.001 1.001 |
- | N3 | place | house | 7 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 8 |
+ | N3 | place | house | 7 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001, 1.001 1.001 |
+ | W1 | place | houses | even | 1,3,2 |
And the ways
| id | nodes |
| 1 | 1,3,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 7 | 1 1, 1 1.001 |
- | 7 | 8 | 1 1.001, 1.001 1.001 |
+ | 4 | 6 | 10,11 |
Scenario: Interpolation line with self-intersecting way
+ Given the grid
+ | 1 | 9 | 2 |
+ | | | 8 |
+ | | | 3 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 0 0 |
- | N2 | place | house | 6 | 0 0.001 |
- | N3 | place | house | 10 | 0 0.002 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
+ | N3 | place | house | 10 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 0 0, 0 0.001, 0 0.002, 0 0.001 |
+ | W1 | place | houses | even | 1,2,3,2 |
And the ways
| id | nodes |
| 1 | 1,2,3,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 6 | 0 0, 0 0.001 |
- | 6 | 10 | 0 0.001, 0 0.002 |
- | 6 | 10 | 0 0.001, 0 0.002 |
+ | 4 | 4 | 9 |
+ | 8 | 8 | 8 |
+ | 8 | 8 | 8 |
Scenario: Interpolation line with self-intersecting way II
+ Given the grid
+ | 1 | 9 | 2 |
+ | | | 3 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | 0 0 |
- | N2 | place | house | 6 | 0 0.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 0 0, 0 0.001, 0 0.002, 0 0.001 |
+ | W1 | place | houses | even | 1,2,3,2 |
And the ways
| id | nodes |
| 1 | 1,2,3,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 6 | 0 0, 0 0.001 |
+ | 4 | 4 | 9 |
Scenario: addr:street on interpolation way
- Given the scene parallel-road
+ Given the grid
+ | | 1 | | 2 | |
+ | 10 | | | | 11 |
+ | 20 | | | | 21 |
And the places
| osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
- | N3 | place | house | 12 | :n-middle-w |
- | N4 | place | house | 16 | :n-middle-e |
+ | N1 | place | house | 2 | 1 |
+ | N2 | place | house | 6 | 2 |
+ | N3 | place | house | 12 | 1 |
+ | N4 | place | house | 16 | 2 |
And the places
| osm | class | type | addr+interpolation | street | geometry |
- | W10 | place | houses | even | | :w-middle |
- | W11 | place | houses | even | Cloud Street | :w-middle |
+ | W10 | place | houses | even | | 1,2 |
+ | W11 | place | houses | even | Cloud Street | 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | tertiary | Sun Way | :w-north |
- | W3 | highway | tertiary | Cloud Street | :w-south |
+ | W2 | highway | tertiary | Sun Way | 10,11 |
+ | W3 | highway | tertiary | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
- | 11 | 3,200,201,202,4 |
+ | 10 | 1,2 |
+ | 11 | 3,4 |
When importing
Then placex contains
| object | parent_place_id |
| N4 | W3 |
Then W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
Then W11 expands to interpolation
| parent_place_id | start | end |
- | W3 | 12 | 16 |
+ | W3 | 14 | 14 |
When sending search query "16 Cloud Street"
Then results contain
| ID | osm_type | osm_id |
| 0 | W | 11 |
Scenario: addr:street on housenumber way
- Given the scene parallel-road
+ Given the grid
+ | | 1 | | 2 | |
+ | 10 | | | | 11 |
+ | 20 | | | | 21 |
And the places
| osm | class | type | housenr | street | geometry |
- | N1 | place | house | 2 | | :n-middle-w |
- | N2 | place | house | 6 | | :n-middle-e |
- | N3 | place | house | 12 | Cloud Street | :n-middle-w |
- | N4 | place | house | 16 | Cloud Street | :n-middle-e |
+ | N1 | place | house | 2 | | 1 |
+ | N2 | place | house | 6 | | 2 |
+ | N3 | place | house | 12 | Cloud Street | 1 |
+ | N4 | place | house | 16 | Cloud Street | 2 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W10 | place | houses | even | :w-middle |
- | W11 | place | houses | even | :w-middle |
+ | W10 | place | houses | even | 1,2 |
+ | W11 | place | houses | even | 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | tertiary | Sun Way | :w-north |
- | W3 | highway | tertiary | Cloud Street | :w-south |
+ | W2 | highway | tertiary | Sun Way | 10,11 |
+ | W3 | highway | tertiary | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
- | 11 | 3,200,201,202,4 |
+ | 10 | 1,2 |
+ | 11 | 3,4 |
When importing
Then placex contains
| object | parent_place_id |
| N4 | W3 |
Then W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
Then W11 expands to interpolation
| parent_place_id | start | end |
- | W3 | 12 | 16 |
+ | W3 | 14 | 14 |
When sending search query "16 Cloud Street"
Then results contain
| ID | osm_type | osm_id |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 2 | 6 | 144.9629794 -37.7630755, 144.9630541 -37.7628174 |
- | 6 | 10 | 144.9630541 -37.7628174, 144.9632341 -37.76163 |
+ | 4 | 4 | 144.963016 -37.762946 |
+ | 8 | 8 | 144.963144 -37.7622237 |
Scenario: Place with missing address information
Given the grid
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 23 | 29 | 1,2,3 |
+ | 25 | 27 | 0.000016 0,0.00002 0,0.000033 0 |
Scenario: Ways without node entries are ignored
Given the places
When importing
Then W1 expands to no interpolation
- Scenario: Ways without nodes without housenumbers are ignored
+ Scenario: Ways with nodes without housenumbers are ignored
+ Given the grid
+ | 1 | | 2 |
+ Given the places
+ | osm | class | type |
+ | N1 | place | house |
+ | N2 | place | house |
Given the places
| osm | class | type | housenr | geometry |
- | N1 | place | house | | 1 1 |
- | N2 | place | house | | 1 1.001 |
- | W1 | place | houses | even | 1 1, 1 1.001 |
+ | W1 | place | houses | even | 1,2 |
When importing
Then W1 expands to no interpolation
Scenario: Two point interpolation starting at 0
+ Given the grid with origin 1,1
+ | 1 | 10 | | | 11 | 2 |
Given the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 0 | 1 1 |
- | N2 | place | house | 2 | 1 1.001 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 0 |
+ | N2 | place | house | 10 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | 1 1, 1 1.001 |
+ | W1 | place | houses | even | 1,2 |
And the ways
| id | nodes |
| 1 | 1,2 |
When importing
Then W1 expands to interpolation
| start | end | geometry |
- | 0 | 2 | 1 1, 1 1.001 |
+ | 2 | 8 | 10,11 |
When sending jsonv2 reverse coordinates 1,1
Then results contain
| ID | osm_type | osm_id | type | display_name |
- | 0 | way | 1 | house | 0 |
-
+ | 0 | node | 1 | house | 0 |
Tests for correctly determining linked places
Scenario: Only address-describing places can be linked
- Given the scene way-area-with-center
+ Given the grid
+ | 1 | | | | 2 |
+ | | | 9 | | |
+ | 4 | | | | 3 |
And the places
| osm | class | type | name | geometry |
- | R13 | landuse | forest | Garbo | :area |
- | N256 | natural | peak | Garbo | :inner-C |
+ | R13 | landuse | forest | Garbo | (1,2,3,4,1) |
+ | N256 | natural | peak | Garbo | 9 |
When importing
Then placex contains
| object | linked_place_id |
| N256 | - |
Scenario: Postcode areas cannot be linked
- Given the grid
+ Given the grid with origin US
| 1 | | 2 |
| | 9 | |
| 4 | | 3 |
And the named places
| osm | class | type | addr+postcode | extra+wikidata | geometry |
- | R13 | boundary | postal_code | 123 | Q87493 | (1,2,3,4,1) |
- | N25 | place | suburb | 123 | Q87493 | 9 |
+ | R13 | boundary | postal_code | 12345 | Q87493 | (1,2,3,4,1) |
+ | N25 | place | suburb | 12345 | Q87493 | 9 |
When importing
Then placex contains
| object | linked_place_id |
| N25 | - |
Scenario: Waterways are linked when in waterway relations
- Given the scene split-road
+ Given the grid
+ | 1 | | | | 3 | 4 | | | | 6 |
+ | | | 2 | | | 10 | | 5 | | |
+ | | | | | | 11 | | | | |
And the places
| osm | class | type | name | geometry |
- | W1 | waterway | river | Rhein | :w-2 |
- | W2 | waterway | river | Rhein | :w-3 |
- | R13 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
- | R23 | waterway | river | Limmat| :w-4a |
+ | W1 | waterway | river | Rhein | 1,2,3 |
+ | W2 | waterway | river | Rhein | 3,4,5 |
+ | R13 | waterway | river | Rhein | 1,2,3,4,5,6 |
+ | R23 | waterway | river | Limmat| 4,10,11 |
And the relations
| id | members | tags+type |
| 13 | R23:tributary,W1,W2:main_stream | waterway |
| R |
Scenario: Relations are not linked when in waterway relations
- Given the scene split-road
+ Given the grid
+ | 1 | | | | 3 | 4 | | | | 6 |
+ | | | 2 | | | 10 | | 5 | | |
+ | | | | | | 11 | | | | |
And the places
| osm | class | type | name | geometry |
- | W1 | waterway | stream | Rhein | :w-2 |
- | W2 | waterway | river | Rhein | :w-3 |
- | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
- | R2 | waterway | river | Limmat| :w-4a |
+ | W1 | waterway | stream | Rhein | 1,2,3,4 |
+ | W2 | waterway | river | Rhein | 4,5,6 |
+ | R1 | waterway | river | Rhein | 1,2,3,4 |
+ | R2 | waterway | river | Limmat| 4,10,11 |
And the relations
| id | members | tags+type |
| 1 | R2 | waterway |
| W2 | - |
| R1 | - |
| R2 | - |
+ When sending search query "rhein"
+ Then results contain
+ | ID | osm_type |
+ | 0 | R |
+ | 1 | W |
+
Scenario: Empty waterway relations are handled correctly
- Given the scene split-road
+ Given the grid
+ | 1 | | | | 3 |
And the places
| osm | class | type | name | geometry |
- | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
+ | R1 | waterway | river | Rhein | 1,3 |
And the relations
| id | members | tags+type |
| 1 | | waterway |
| R1 | - |
Scenario: Waterways are not linked when the way type is not a river feature
- Given the scene split-road
+ Given the grid
+ | 1 | | 2 |
+ | | | |
+ | 3 | | 4 |
And the places
| osm | class | type | name | geometry |
- | W1 | waterway | lock | Rhein | :w-2 |
- | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
+ | W1 | waterway | lock | Rhein | 3,4 |
+ | R1 | landuse | meadow | Rhein | (3,1,2,4,3) |
And the relations
- | id | members | tags+type |
- | 1 | N23,N34,W1,R45 | multipolygon |
+ | id | members | tags+type |
+ | 1 | W1,W2 | multipolygon |
When importing
Then placex contains
| object | linked_place_id |
| W1 | - |
| R1 | - |
- When sending search query "rhein"
- Then results contain
- | ID | osm_type |
- | 0 | R |
- | 1 | W |
Scenario: Side streams are linked only when they have the same name
- Given the scene split-road
+ Given the grid
+ | | | | | 8 | | | |
+ | 1 | | 2 | 3 | | 4 | 5 | 6|
+ | | | | | | 9 | | |
And the places
| osm | class | type | name | geometry |
- | W1 | waterway | river | Rhein2 | :w-2 |
- | W2 | waterway | river | Rhein | :w-3 |
- | R1 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
+ | W1 | waterway | river | Rhein2 | 2,8,4 |
+ | W2 | waterway | river | Rhein | 3,9,5 |
+ | R1 | waterway | river | Rhein | 1,2,3,4,5,6 |
And the relations
| id | members | tags+type |
- | 1 | W1:side_stream,W2:side_stream | waterway |
+ | 1 | W1:side_stream,W2:side_stream,W3 | waterway |
When importing
Then placex contains
| object | linked_place_id |
# github #573
Scenario: Boundaries should only be linked to places
+ Given the 0.05 grid
+ | 1 | | 2 |
+ | | 9 | |
+ | 4 | | 3 |
Given the named places
- | osm | class | type | extra+wikidata | admin | geometry |
- | R1 | boundary | administrative | 34 | 8 | poly-area:0.1 |
+ | osm | class | type | extra+wikidata | admin | geometry |
+ | R1 | boundary | administrative | 34 | 8 | (1,2,3,4,1) |
And the named places
- | osm | class | type | geometry |
- | N3 | natural | island | 0.00001 0 |
- | N3 | place | city | 0.00001 0 |
+ | osm | class | type |
+ | N9 | natural | island |
+ | N9 | place | city |
And the relations
| id | members |
- | 1 | N3:label |
+ | 1 | N9:label |
When importing
Then placex contains
| object | linked_place_id |
- | N3:natural | - |
- | N3:place | R1 |
+ | N9:natural | - |
+ | N9:place | R1 |
Scenario: Nodes with 'role' label are always linked
+ Given the 0.05 grid
+ | 1 | | 2 |
+ | | 9 | |
+ | 4 | | 3 |
Given the places
- | osm | class | type | admin | name | geometry |
- | R13 | boundary | administrative | 6 | Garbo | poly-area:0.1 |
- | N2 | place | hamlet | 15 | Vario | 0.006 0.00001 |
+ | osm | class | type | admin | name | geometry |
+ | R13 | boundary | administrative | 6 | Garbo | (1,2,3,4,1) |
+ | N2 | place | hamlet | 15 | Vario | 9 |
And the relations
| id | members | tags+type |
| 13 | N2:label | boundary |
| object | linked_place_id |
| N2 | R13 |
And placex contains
- | object | centroid | name+name | extratags+linked_place |
- | R13 | 0.006 0.00001 | Garbo | hamlet |
+ | object | centroid | name+name | extratags+linked_place |
+ | R13 | 9 | Garbo | hamlet |
Scenario: Boundaries with place tags are linked against places with same type
+ Given the 0.01 grid
+ | 1 | | 2 |
+ | | 9 | |
+ | 4 | | 3 |
Given the places
- | osm | class | type | admin | name | extra+place | geometry |
- | R13 | boundary | administrative | 4 | Berlin | city |poly-area:0.1 |
+ | osm | class | type | admin | name | extra+place | geometry |
+ | R13 | boundary | administrative | 4 | Berlin | city | (1,2,3,4,1) |
And the places
| osm | class | type | name | geometry |
- | N2 | place | city | Berlin | 0.006 0.00001 |
+ | N2 | place | city | Berlin | 9 |
When importing
Then placex contains
| object | linked_place_id |
Scenario: Boundaries without place tags only link against same admin level
+ Given the 0.05 grid
+ | 1 | | 2 |
+ | | 9 | |
+ | 4 | | 3 |
Given the places
| osm | class | type | admin | name | geometry |
- | R13 | boundary | administrative | 4 | Berlin |poly-area:0.1 |
+ | R13 | boundary | administrative | 4 | Berlin | (1,2,3,4,1) |
And the places
| osm | class | type | name | geometry |
- | N2 | place | city | Berlin | 0.006 0.00001 |
+ | N2 | place | city | Berlin | 9 |
When importing
Then placex contains
| object | linked_place_id |
# github #1352
Scenario: Do not use linked centroid when it is outside the area
+ Given the 0.05 grid
+ | 1 | | 2 | |
+ | | | | 9 |
+ | 4 | | 3 | |
Given the named places
| osm | class | type | admin | geometry |
- | R13 | boundary | administrative | 4 | poly-area:0.01 |
+ | R13 | boundary | administrative | 4 | (1,2,3,4,1) |
And the named places
| osm | class | type | geometry |
- | N2 | place | city | 0.1 0.1 |
+ | N2 | place | city | 9 |
And the relations
| id | members | tags+type |
| 13 | N2:label | boundary |
| R13 | in geometry |
Scenario: Place nodes can only be linked once
+ Given the 0.02 grid
+ | 1 | | 2 | | 5 |
+ | | 9 | | | |
+ | 4 | | 3 | | 6 |
Given the named places
| osm | class | type | extra+wikidata | geometry |
- | N2 | place | city | Q1234 | 0 0 |
+ | N2 | place | city | Q1234 | 9 |
And the named places
- | osm | class | type | extra+wikidata | admin | geometry |
- | R1 | boundary | administrative | Q1234 | 8 | poly-area:0.1 |
- | R2 | boundary | administrative | Q1234 | 9 | poly-area:0.01 |
+ | osm | class | type | extra+wikidata | admin | geometry |
+ | R1 | boundary | administrative | Q1234 | 8 | (1,2,5,6,3,4,1) |
+ | R2 | boundary | administrative | Q1234 | 9 | (1,2,3,4,1) |
When importing
Then placex contains
| object | linked_place_id |
| រាជធានីភ្នំពេញ |
| 東京都 |
| ပုဗ္ဗသီရိ |
+
+
+ Scenario: German umlauts can be found when expanded
+ Given the places
+ | osm | class | type | name+name:de |
+ | N1 | place | city | Münster |
+ | N2 | place | city | Köln |
+ | N3 | place | city | Gräfenroda |
+ When importing
+ When sending search query "münster"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "muenster"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "munster"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Köln"
+ Then results contain
+ | osm |
+ | N2 |
+ When sending search query "Koeln"
+ Then results contain
+ | osm |
+ | N2 |
+ When sending search query "Koln"
+ Then results contain
+ | osm |
+ | N2 |
+ When sending search query "gräfenroda"
+ Then results contain
+ | osm |
+ | N3 |
+ When sending search query "graefenroda"
+ Then results contain
+ | osm |
+ | N3 |
+ When sending search query "grafenroda"
+ Then results contain
+ | osm |
+ | N3 |
Tests that the correct parent is chosen
Scenario: Address inherits postcode from its street unless it has a postcode
- Given the scene roads-with-pois
+ Given the grid with origin DE
+ | 10 | | | | | 11 |
+ | | | | | | |
+ | | 1 | | 2 | | |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 4 | :p-N1 |
+ | osm | class | type | housenr |
+ | N1 | place | house | 4 |
And the places
- | osm | class | type | housenr | postcode | geometry |
- | N2 | place | house | 5 | 99999 | :p-N1 |
+ | osm | class | type | housenr | postcode |
+ | N2 | place | house | 5 | 99999 |
And the places
| osm | class | type | name | postcode | geometry |
- | W1 | highway | residential | galoo | 12345 | :w-north |
+ | W1 | highway | residential | galoo | 12345 | 10,11 |
When importing
Then placex contains
| object | parent_place_id |
When sending search query "4 galoo"
Then results contain
| ID | osm_type | osm_id | display_name |
- | 0 | N | 1 | 4, galoo, 12345 |
+ | 0 | N | 1 | 4, galoo, 12345, Deutschland |
When sending search query "5 galoo"
Then results contain
| ID | osm_type | osm_id | display_name |
- | 0 | N | 2 | 5, galoo, 99999 |
+ | 0 | N | 2 | 5, galoo, 99999, Deutschland |
Scenario: Address without tags, closest street
- Given the scene roads-with-pois
- And the places
- | osm | class | type | geometry |
- | N1 | place | house | :p-N1 |
- | N2 | place | house | :p-N2 |
- | N3 | place | house | :p-S1 |
- | N4 | place | house | :p-S2 |
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | 2 | | | |
+ | | | | 3 | 4 | |
+ | 20 | | | | | 21 |
+ And the places
+ | osm | class | type |
+ | N1 | place | house |
+ | N2 | place | house |
+ | N3 | place | house |
+ | N4 | place | house |
And the named places
| osm | class | type | geometry |
- | W1 | highway | residential | :w-north |
- | W2 | highway | residential | :w-south |
+ | W1 | highway | residential | 10,11 |
+ | W2 | highway | residential | 20,21 |
When importing
Then placex contains
| object | parent_place_id |
| N4 | W2 |
Scenario: Address without tags avoids unnamed streets
- Given the scene roads-with-pois
- And the places
- | osm | class | type | geometry |
- | N1 | place | house | :p-N1 |
- | N2 | place | house | :p-N2 |
- | N3 | place | house | :p-S1 |
- | N4 | place | house | :p-S2 |
- | W1 | highway | residential | :w-north |
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | 2 | | | |
+ | | | | 3 | 4 | |
+ | 20 | | | | | 21 |
+ And the places
+ | osm | class | type |
+ | N1 | place | house |
+ | N2 | place | house |
+ | N3 | place | house |
+ | N4 | place | house |
+ And the places
+ | osm | class | type | geometry |
+ | W1 | highway | residential | 10,11 |
And the named places
| osm | class | type | geometry |
- | W2 | highway | residential | :w-south |
+ | W2 | highway | residential | 20,21 |
When importing
Then placex contains
| object | parent_place_id |
| N4 | W2 |
Scenario: addr:street tag parents to appropriately named street
- Given the scene roads-with-pois
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | 2 | | | |
+ | | | | 3 | 4 | |
+ | 20 | | | | | 21 |
+ And the places
+ | osm | class | type | street|
+ | N1 | place | house | south |
+ | N2 | place | house | north |
+ | N3 | place | house | south |
+ | N4 | place | house | north |
+ And the places
+ | osm | class | type | name | geometry |
+ | W1 | highway | residential | north | 10,11 |
+ | W2 | highway | residential | south | 20,21 |
+ When importing
+ Then placex contains
+ | object | parent_place_id |
+ | N1 | W2 |
+ | N2 | W1 |
+ | N3 | W2 |
+ | N4 | W1 |
+
+ @fail-legacy
+ Scenario: addr:street tag parents to appropriately named street, locale names
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | 2 | | | |
+ | | | | 3 | 4 | |
+ | 20 | | | | | 21 |
And the places
- | osm | class | type | street| geometry |
- | N1 | place | house | south | :p-N1 |
- | N2 | place | house | north | :p-N2 |
- | N3 | place | house | south | :p-S1 |
- | N4 | place | house | north | :p-S2 |
+ | osm | class | type | street| addr+street:de |
+ | N1 | place | house | south | Süd |
+ | N2 | place | house | north | Nord |
+ | N3 | place | house | south | Süd |
+ | N4 | place | house | north | Nord |
And the places
| osm | class | type | name | geometry |
- | W1 | highway | residential | north | :w-north |
- | W2 | highway | residential | south | :w-south |
+ | W1 | highway | residential | Nord | 10,11 |
+ | W2 | highway | residential | Süd | 20,21 |
+ When importing
+ Then placex contains
+ | object | parent_place_id |
+ | N1 | W2 |
+ | N2 | W1 |
+ | N3 | W2 |
+ | N4 | W1 |
+
+ Scenario: addr:street tag parents to appropriately named street with abbreviation
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | 2 | | | |
+ | | | | 3 | 4 | |
+ | 20 | | | | | 21 |
+ And the places
+ | osm | class | type | street |
+ | N1 | place | house | south st |
+ | N2 | place | house | north st |
+ | N3 | place | house | south st |
+ | N4 | place | house | north st |
+ And the places
+ | osm | class | type | name+name:en | geometry |
+ | W1 | highway | residential | north street | 10,11 |
+ | W2 | highway | residential | south street | 20,21 |
When importing
Then placex contains
| object | parent_place_id |
| N4 | W1 |
Scenario: addr:street tag parents to next named street
- Given the scene roads-with-pois
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | 2 | | | |
+ | | | | 3 | 4 | |
+ | 20 | | | | | 21 |
And the places
- | osm | class | type | street | geometry |
- | N1 | place | house | abcdef | :p-N1 |
- | N2 | place | house | abcdef | :p-N2 |
- | N3 | place | house | abcdef | :p-S1 |
- | N4 | place | house | abcdef | :p-S2 |
+ | osm | class | type | street |
+ | N1 | place | house | abcdef |
+ | N2 | place | house | abcdef |
+ | N3 | place | house | abcdef |
+ | N4 | place | house | abcdef |
And the places
| osm | class | type | name | geometry |
- | W1 | highway | residential | abcdef | :w-north |
- | W2 | highway | residential | abcdef | :w-south |
+ | W1 | highway | residential | abcdef | 10,11 |
+ | W2 | highway | residential | abcdef | 20,21 |
When importing
Then placex contains
| object | parent_place_id |
| N4 | W2 |
Scenario: addr:street tag without appropriately named street
- Given the scene roads-with-pois
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 1 | | | | |
+ | | | | 3 | | |
+ | 20 | | | | | 21 |
And the places
- | osm | class | type | street | geometry |
- | N1 | place | house | abcdef | :p-N1 |
- | N2 | place | house | abcdef | :p-N2 |
- | N3 | place | house | abcdef | :p-S1 |
- | N4 | place | house | abcdef | :p-S2 |
+ | osm | class | type | street |
+ | N1 | place | house | abcdef |
+ | N3 | place | house | abcdef |
And the places
| osm | class | type | name | geometry |
- | W1 | highway | residential | abcde | :w-north |
- | W2 | highway | residential | abcde | :w-south |
+ | W1 | highway | residential | abcde | 10,11 |
+ | W2 | highway | residential | abcde | 20,21 |
When importing
Then placex contains
| object | parent_place_id |
| N1 | W1 |
- | N2 | W1 |
| N3 | W2 |
- | N4 | W2 |
Scenario: addr:place address
- Given the scene road-with-alley
+ Given the grid
+ | 10 | | | |
+ | | 1 | | 2 |
+ | 11 | | | |
And the places
- | osm | class | type | addr_place | geometry |
- | N1 | place | house | myhamlet | :n-alley |
+ | osm | class | type | addr_place |
+ | N1 | place | house | myhamlet |
And the places
| osm | class | type | name | geometry |
- | N2 | place | hamlet | myhamlet | :n-main-west |
- | W1 | highway | residential | myhamlet | :w-main |
+ | N2 | place | hamlet | myhamlet | 2 |
+ | W1 | highway | residential | myhamlet | 10,11 |
When importing
Then placex contains
| object | parent_place_id |
| N1 | N2 |
Scenario: addr:street is preferred over addr:place
- Given the scene road-with-alley
+ Given the grid
+ | 10 | | | |
+ | | | 1 | 2 |
+ | 11 | | | |
And the places
- | osm | class | type | addr_place | street | geometry |
- | N1 | place | house | myhamlet | mystreet| :n-alley |
+ | osm | class | type | addr_place | street |
+ | N1 | place | house | myhamlet | mystreet|
And the places
| osm | class | type | name | geometry |
- | N2 | place | hamlet | myhamlet | :n-main-west |
- | W1 | highway | residential | mystreet | :w-main |
+ | N2 | place | hamlet | myhamlet | 2 |
+ | W1 | highway | residential | mystreet | 10,11 |
When importing
Then placex contains
| object | parent_place_id |
| N1 | W1 |
Scenario: Untagged address in simple associated street relation
- Given the scene road-with-alley
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 2 | | 3 | | |
+ | | | | | | |
+ | 12 | 1 | | | | |
And the places
- | osm | class | type | geometry |
- | N1 | place | house | :n-alley |
- | N2 | place | house | :n-corner |
- | N3 | place | house | :n-main-west |
+ | osm | class | type |
+ | N1 | place | house |
+ | N2 | place | house |
+ | N3 | place | house |
And the places
| osm | class | type | name | geometry |
- | W1 | highway | residential | foo | :w-main |
- | W2 | highway | service | bar | :w-alley |
+ | W1 | highway | residential | foo | 10,11 |
+ | W2 | highway | service | bar | 10,12 |
And the relations
| id | members | tags+type |
| 1 | W1:street,N1,N2,N3 | associatedStreet |
| N3 | W1 |
Scenario: Avoid unnamed streets in simple associated street relation
- Given the scene road-with-alley
+ Given the grid
+ | 10 | | | | | 11 |
+ | | 2 | | 3 | | |
+ | | | | | | |
+ | 12 | 1 | | | | |
And the places
- | osm | class | type | geometry |
- | N1 | place | house | :n-alley |
- | N2 | place | house | :n-corner |
- | N3 | place | house | :n-main-west |
- | W2 | highway | residential | :w-alley |
+ | osm | class | type |
+ | N1 | place | house |
+ | N2 | place | house |
+ | N3 | place | house |
+ And the places
+ | osm | class | type | geometry |
+ | W2 | highway | residential | 10,12 |
And the named places
| osm | class | type | geometry |
- | W1 | highway | residential | :w-main |
+ | W1 | highway | residential | 10,11 |
And the relations
| id | members | tags+type |
| 1 | N1,N2,N3,W2:street,W1:street | associatedStreet |
| N3 | W1 |
Scenario: Associated street relation overrides addr:street
- Given the scene road-with-alley
+ Given the grid
+ | 10 | | | | 11 |
+ | | | | | |
+ | | | 1 | | |
+ | | 20 | | 21 | |
And the places
- | osm | class | type | street | geometry |
- | N1 | place | house | bar | :n-alley |
+ | osm | class | type | street |
+ | N1 | place | house | bar |
And the places
| osm | class | type | name | geometry |
- | W1 | highway | residential | foo | :w-main |
- | W2 | highway | residential | bar | :w-alley |
+ | W1 | highway | residential | foo | 10,11 |
+ | W2 | highway | residential | bar | 20,21 |
And the relations
- | id | members | tags+type |
- | 1 | W1:street,N1,N2,N3 | associatedStreet |
+ | id | members | tags+type |
+ | 1 | W1:street,N1 | associatedStreet |
When importing
Then placex contains
| object | parent_place_id |
| N1 | W1 |
Scenario: Building without tags, closest street from center point
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | 11 |
+ | | | 1 | 2 | |
+ | 12 | | 4 | 3 | |
And the named places
- | osm | class | type | geometry |
- | W1 | building | yes | :w-building |
- | W2 | highway | primary | :w-WE |
- | W3 | highway | residential | :w-NS |
+ | osm | class | type | geometry |
+ | W1 | building | yes | (1,2,3,4,1) |
+ | W2 | highway | primary | 10,11 |
+ | W3 | highway | residential | 10,12 |
When importing
Then placex contains
| object | parent_place_id |
| W1 | W2 |
Scenario: Building with addr:street tags
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | 11 |
+ | | | 1 | 2 | |
+ | 12 | | 4 | 3 | |
And the named places
| osm | class | type | street | geometry |
- | W1 | building | yes | bar | :w-building |
+ | W1 | building | yes | foo | (1,2,3,4,1) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
When importing
Then placex contains
| object | parent_place_id |
- | W1 | W2 |
+ | W1 | W3 |
Scenario: Building with addr:place tags
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | |
+ | | 1 | 2 | | 9 |
+ | 11 | 4 | 3 | | |
And the places
| osm | class | type | name | geometry |
- | N1 | place | village | bar | :n-outer |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | N9 | place | village | bar | 9 |
+ | W2 | highway | primary | bar | 10,11 |
And the named places
- | osm | class | type | addr_place | geometry |
- | W1 | building | yes | bar | :w-building |
+ | osm | class | type | addr_place | geometry |
+ | W1 | building | yes | bar | (1,2,3,4,1) |
When importing
Then placex contains
| object | parent_place_id |
- | W1 | N1 |
+ | W1 | N9 |
Scenario: Building in associated street relation
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | 11 |
+ | | | 1 | 2 | |
+ | 12 | | 4 | 3 | |
And the named places
- | osm | class | type | geometry |
- | W1 | building | yes | :w-building |
+ | osm | class | type | geometry |
+ | W1 | building | yes | (1,2,3,4,1) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
And the relations
| id | members | tags+type |
- | 1 | W1:house,W2:street | associatedStreet |
+ | 1 | W1:house,W3:street | associatedStreet |
When importing
Then placex contains
| object | parent_place_id |
- | W1 | W2 |
+ | W1 | W3 |
Scenario: Building in associated street relation overrides addr:street
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | 11 |
+ | | | 1 | 2 | |
+ | 12 | | 4 | 3 | |
And the named places
- | osm | class | type | street | geometry |
- | W1 | building | yes | foo | :w-building |
+ | osm | class | type | street | geometry |
+ | W1 | building | yes | foo | (1,2,3,4,1) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
And the relations
| id | members | tags+type |
| 1 | W1:house,W2:street | associatedStreet |
| W1 | W2 |
Scenario: Wrong member in associated street relation is ignored
- Given the scene building-on-street-corner
- And the named places
+ Given the grid
+ | 10 | | | | | | | 11 |
+ | | 1 | | 3 | 4 | | | |
+ | | | | 6 | 5 | | | |
+ And the named places
| osm | class | type | geometry |
- | N1 | place | house | :n-outer |
+ | N1 | place | house | 11 |
And the named places
- | osm | class | type | street | geometry |
- | W1 | building | yes | foo | :w-building |
+ | osm | class | type | street | geometry |
+ | W1 | building | yes | foo | (3,4,5,6,3) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W3 | highway | residential | foo | 10,11 |
And the relations
| id | members | tags+type |
| 1 | N1:house,W1:street,W3:street | associatedStreet |
| object | parent_place_id |
| N1 | W3 |
+ Scenario: street member in associatedStreet relation can be a relation
+ Given the grid
+ | 1 | | | 2 |
+ | 3 | | | 4 |
+ | | | | |
+ | | 9 | | |
+ | 5 | | | 6 |
+ And the places
+ | osm | class | type | housenr | geometry |
+ | N9 | place | house | 34 | 9 |
+ And the named places
+ | osm | class | type | name | geometry |
+ | R14 | highway | pedestrian | Right St | (1,2,4,3,1) |
+ | W14 | highway | pedestrian | Left St | 5,6 |
+ And the relations
+ | id | members | tags+type |
+ | 1 | N9:house,R14:street | associatedStreet |
+ When importing
+ Then placex contains
+ | object | parent_place_id |
+ | N9 | R14 |
+
Scenario: POIs in building inherit address
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | | | 11 |
+ | | | 5 | 2 | 6 | | |
+ | | | 3 | 1 | | | |
+ | 12 | | 8 | | 7 | | |
And the named places
- | osm | class | type | geometry |
- | N1 | amenity | bank | :n-inner |
- | N2 | shop | bakery | :n-edge-NS |
- | N3 | shop | supermarket| :n-edge-WE |
+ | osm | class | type |
+ | N1 | amenity | bank |
+ | N2 | shop | bakery |
+ | N3 | shop | supermarket|
And the places
- | osm | class | type | street | addr_place | housenr | geometry |
- | W1 | building | yes | foo | nowhere | 3 | :w-building |
+ | osm | class | type | street | housenr | geometry |
+ | W1 | building | yes | foo | 3 | (5,6,7,8,5) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
When importing
Then placex contains
| object | parent_place_id | housenumber |
| N1 | W3 | 3 |
| N2 | W3 | 3 |
| N3 | W3 | 3 |
+ When sending geocodejson search query "3, foo" with address
+ Then results contain
+ | housenumber |
+ | 3 |
Scenario: POIs don't inherit from streets
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | 11 |
+ | | 5 | 1 | 6 | |
+ | | 8 | | 7 | |
And the named places
- | osm | class | type | geometry |
- | N1 | amenity | bank | :n-inner |
+ | osm | class | type |
+ | N1 | amenity | bank |
And the places
- | osm | class | type | street | addr_place | housenr | geometry |
- | W1 | highway | path | foo | nowhere | 3 | :w-building |
+ | osm | class | type | name | street | housenr | geometry |
+ | W1 | highway | path | bar | foo | 3 | (5,6,7,8,5) |
And the places
| osm | class | type | name | geometry |
- | W3 | highway | residential | foo | :w-NS |
+ | W3 | highway | residential | foo | 10,11 |
When importing
Then placex contains
| object | parent_place_id | housenumber |
- | N1 | W3 | None |
+ | N1 | W1 | None |
Scenario: POIs with own address do not inherit building address
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | | | 11 |
+ | | | 6 | 2 | 7 | | |
+ | | | 3 | 1 | | 5 | 4 |
+ | 12 | | 9 | | 8 | | |
And the named places
- | osm | class | type | street | geometry |
- | N1 | amenity | bank | bar | :n-inner |
+ | osm | class | type | street |
+ | N1 | amenity | bank | bar |
And the named places
- | osm | class | type | housenr | geometry |
- | N2 | shop | bakery | 4 | :n-edge-NS |
+ | osm | class | type | housenr |
+ | N2 | shop | bakery | 4 |
And the named places
- | osm | class | type | addr_place | geometry |
- | N3 | shop | supermarket| nowhere | :n-edge-WE |
+ | osm | class | type | addr_place |
+ | N3 | shop | supermarket| nowhere |
And the places
- | osm | class | type | name | geometry |
- | N4 | place | isolated_dwelling | theplace | :n-outer |
+ | osm | class | type | name |
+ | N4 | place | isolated_dwelling | theplace |
+ | N5 | place | isolated_dwelling | nowhere |
And the places
- | osm | class | type | addr_place | housenr | geometry |
- | W1 | building | yes | theplace | 3 | :w-building |
+ | osm | class | type | addr_place | housenr | geometry |
+ | W1 | building | yes | theplace | 3 | (6,7,8,9,6) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
When importing
Then placex contains
| object | parent_place_id | housenumber |
| W1 | N4 | 3 |
| N1 | W2 | None |
- | N2 | W3 | 4 |
- | N3 | N4 | None |
+ | N2 | W2 | 4 |
+ | N3 | N5 | None |
Scenario: POIs parent a road if they are attached to it
- Given the scene points-on-roads
+ Given the grid
+ | | 10 | |
+ | 20 | 1 | 21 |
+ | | 11 | |
And the named places
- | osm | class | type | street | geometry |
- | N1 | highway | bus_stop | North St | :n-SE |
- | N2 | highway | bus_stop | South St | :n-NW |
- | N3 | highway | bus_stop | North St | :n-S-unglued |
- | N4 | highway | bus_stop | South St | :n-N-unglued |
+ | osm | class | type |
+ | N1 | highway | bus_stop |
And the places
| osm | class | type | name | geometry |
- | W1 | highway | secondary | North St | :w-north |
- | W2 | highway | unclassified | South St | :w-south |
+ | W1 | highway | secondary | North St | 10,11 |
+ | W2 | highway | unclassified | South St | 20,1,21 |
And the ways
| id | nodes |
- | 1 | 100,101,2,103,104 |
- | 2 | 200,201,1,202,203 |
+ | 1 | 10,11 |
+ | 2 | 20,1,21 |
When importing
Then placex contains
| object | parent_place_id |
- | N1 | W1 |
- | N2 | W2 |
- | N3 | W1 |
- | N4 | W2 |
+ | N1 | W2 |
Scenario: POIs do not parent non-roads they are attached to
- Given the scene points-on-roads
+ Given the grid
+ | 10 | | 1 | | 11 | | 30 |
+ | 14 | | | | 15 | | |
+ | 13 | | 2 | | 12 | | 31 |
And the named places
- | osm | class | type | street | geometry |
- | N1 | highway | bus_stop | North St | :n-SE |
- | N2 | highway | bus_stop | South St | :n-NW |
+ | osm | class | type | street |
+ | N1 | highway | bus_stop | North St |
+ | N2 | highway | bus_stop | South St |
And the places
| osm | class | type | name | geometry |
- | W1 | landuse | residential | North St | :w-north |
- | W2 | waterway| river | South St | :w-south |
+ | W1 | landuse | residential | North St | (14,15,12,2,13,14) |
+ | W2 | waterway| river | South St | 10,1,11 |
+ | W3 | highway | residential | foo | 30,31 |
And the ways
| id | nodes |
- | 1 | 100,101,2,103,104 |
- | 2 | 200,201,1,202,203 |
+ | 1 | 10,11,12,2,13,10 |
+ | 2 | 10,1,11 |
When importing
Then placex contains
| object | parent_place_id |
- | N1 | 0 |
- | N2 | 0 |
+ | N1 | W3 |
+ | N2 | W3 |
Scenario: POIs on building outlines inherit associated street relation
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | 11 |
+ | | 5 | 1 | 6 | |
+ | 12 | 8 | | 7 | |
And the named places
- | osm | class | type | geometry |
- | N1 | place | house | :n-edge-NS |
- | W1 | building | yes | :w-building |
+ | osm | class | type | geometry |
+ | N1 | place | house | 1 |
+ | W1 | building | yes | (5,1,6,7,8,5)|
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
And the relations
| id | members | tags+type |
- | 1 | W1:house,W2:street | associatedStreet |
+ | 1 | W1:house,W3:street | associatedStreet |
And the ways
| id | nodes |
- | 1 | 100,1,101,102,100 |
+ | 1 | 5,1,6,7,8,5 |
When importing
Then placex contains
| object | parent_place_id |
- | N1 | W2 |
+ | N1 | W3 |
# github #1056
Scenario: Full names should be preferably matched for nearest road
Then placex has no entry for N1
Scenario: postcode boundary without postcode is dropped
+ Given the 0.01 grid
+ | 1 | 2 |
+ | 3 | |
Given the places
- | osm | class | type | name+ref | geometry |
- | R1 | boundary | postal_code | 554476 | poly-area:0.1 |
+ | osm | class | type | name+ref | geometry |
+ | R1 | boundary | postal_code | 554476 | (1,2,3,1) |
When importing
Then placex has no entry for R1
- Scenario: search and address ranks for GB post codes correctly assigned
- Given the places
- | osm | class | type | postcode | geometry |
- | N1 | place | postcode | E45 2CD | country:gb |
- | N2 | place | postcode | E45 2 | country:gb |
- | N3 | place | postcode | Y45 | country:gb |
- When importing
- Then placex contains
- | object | addr+postcode | country_code | rank_search | rank_address |
- | N1 | E45 2CD | gb | 25 | 5 |
- | N2 | E45 2 | gb | 23 | 5 |
- | N3 | Y45 | gb | 21 | 5 |
-
- Scenario: wrongly formatted GB postcodes are down-ranked
- Given the places
- | osm | class | type | postcode | geometry |
- | N1 | place | postcode | EA452CD | country:gb |
- | N2 | place | postcode | E45 23 | country:gb |
- When importing
- Then placex contains
- | object | country_code | rank_search | rank_address |
- | N1 | gb | 30 | 30 |
- | N2 | gb | 30 | 30 |
-
- Scenario: search and address rank for DE postcodes correctly assigned
- Given the places
- | osm | class | type | postcode | geometry |
- | N1 | place | postcode | 56427 | country:de |
- | N2 | place | postcode | 5642 | country:de |
- | N3 | place | postcode | 5642A | country:de |
- | N4 | place | postcode | 564276 | country:de |
- When importing
- Then placex contains
- | object | country_code | rank_search | rank_address |
- | N1 | de | 21 | 11 |
- | N2 | de | 30 | 30 |
- | N3 | de | 30 | 30 |
- | N4 | de | 30 | 30 |
-
- Scenario: search and address rank for other postcodes are correctly assigned
- Given the places
- | osm | class | type | postcode | geometry |
- | N1 | place | postcode | 1 | country:ca |
- | N2 | place | postcode | X3 | country:ca |
- | N3 | place | postcode | 543 | country:ca |
- | N4 | place | postcode | 54dc | country:ca |
- | N5 | place | postcode | 12345 | country:ca |
- | N6 | place | postcode | 55TT667 | country:ca |
- | N7 | place | postcode | 123-65 | country:ca |
- | N8 | place | postcode | 12 445 4 | country:ca |
- | N9 | place | postcode | A1:bc10 | country:ca |
- When importing
- Then placex contains
- | object | country_code | rank_search | rank_address |
- | N1 | ca | 21 | 11 |
- | N2 | ca | 21 | 11 |
- | N3 | ca | 21 | 11 |
- | N4 | ca | 21 | 11 |
- | N5 | ca | 21 | 11 |
- | N6 | ca | 21 | 11 |
- | N7 | ca | 25 | 11 |
- | N8 | ca | 25 | 11 |
- | N9 | ca | 25 | 11 |
-
Scenario: search and address ranks for boundaries are correctly assigned
Given the named places
| osm | class | type |
| R41 | 8 | 0 |
Scenario: search and address ranks for highways correctly assigned
- Given the scene roads-with-pois
+ Given the grid
+ | 10 | 1 | 11 | | 12 | | 13 | | 14 | | 15 | | 16 |
And the places
| osm | class | type |
| N1 | highway | bus_stop |
And the places
| osm | class | type | geometry |
- | W1 | highway | primary | :w-south |
- | W2 | highway | secondary | :w-south |
- | W3 | highway | tertiary | :w-south |
- | W4 | highway | residential | :w-north |
- | W5 | highway | unclassified | :w-north |
- | W6 | highway | something | :w-north |
+ | W1 | highway | primary | 10,11 |
+ | W2 | highway | secondary | 11,12 |
+ | W3 | highway | tertiary | 12,13 |
+ | W4 | highway | residential | 13,14 |
+ | W5 | highway | unclassified | 14,15 |
+ | W6 | highway | something | 15,16 |
When importing
Then placex contains
| object | rank_search | rank_address |
| W6 | 30 | 30 |
Scenario: rank and inclusion of landuses
+ Given the 0.4 grid
+ | 1 | 2 | | | | | | 5 |
+ | 4 | 3 | | | | | | 6 |
Given the named places
| osm | class | type |
| N2 | landuse | residential |
And the named places
- | osm | class | type | geometry |
- | W2 | landuse | residential | 1 1, 1 1.1 |
- | W4 | landuse | residential | poly-area:0.1 |
- | R2 | landuse | residential | poly-area:0.05 |
- | R3 | landuse | forrest | poly-area:0.5 |
+ | osm | class | type | geometry |
+ | W2 | landuse | residential | 1,2,5 |
+ | W4 | landuse | residential | (1,4,3,1) |
+ | R2 | landuse | residential | (1,2,3,4,1) |
+ | R3 | landuse | forrest | (1,5,6,4,1) |
When importing
Then placex contains
| object | rank_search | rank_address |
| R3 | 22 | 0 |
Scenario: rank and inclusion of naturals
+ Given the 0.4 grid
+ | 1 | 2 | | | | | | 5 |
+ | 4 | 3 | | | | | | 6 |
Given the named places
| osm | class | type |
| N2 | natural | peak |
| N4 | natural | volcano |
| N5 | natural | foobar |
And the named places
- | osm | class | type | geometry |
- | W2 | natural | mountain_range | 12 12,11 11 |
- | W3 | natural | foobar | 13 13,13.1 13 |
- | R3 | natural | volcano | poly-area:0.1 |
- | R4 | natural | foobar | poly-area:0.5 |
- | R5 | natural | sea | poly-area:5.0 |
- | R6 | natural | sea | poly-area:0.01 |
+ | osm | class | type | geometry |
+ | W2 | natural | mountain_range | 1,2,5 |
+ | W3 | natural | foobar | 2,3 |
+ | R3 | natural | volcano | (1,2,4,1) |
+ | R4 | natural | foobar | (1,2,3,4,1) |
+ | R5 | natural | sea | (1,2,5,6,3,4,1) |
+ | R6 | natural | sea | (2,3,4,2) |
When importing
Then placex contains
| object | rank_search | rank_address |
| W3 | 22 | 0 |
Scenario: boundary ways for countries and states are ignored
+ Given the 0.3 grid
+ | 1 | 2 |
+ | 4 | 3 |
Given the named places
| osm | class | type | admin | geometry |
- | W4 | boundary | administrative | 2 | poly-area:0.1 |
- | R4 | boundary | administrative | 2 | poly-area:0.1 |
- | W5 | boundary | administrative | 3 | poly-area:0.1 |
- | R5 | boundary | administrative | 3 | poly-area:0.1 |
- | W6 | boundary | administrative | 4 | poly-area:0.1 |
- | R6 | boundary | administrative | 4 | poly-area:0.1 |
- | W7 | boundary | administrative | 5 | poly-area:0.1 |
- | R7 | boundary | administrative | 5 | poly-area:0.1 |
+ | W4 | boundary | administrative | 2 | (1,2,3,4,1) |
+ | R4 | boundary | administrative | 2 | (1,2,3,4,1) |
+ | W5 | boundary | administrative | 3 | (1,2,3,4,1) |
+ | R5 | boundary | administrative | 3 | (1,2,3,4,1) |
+ | W6 | boundary | administrative | 4 | (1,2,3,4,1) |
+ | R6 | boundary | administrative | 4 | (1,2,3,4,1) |
+ | W7 | boundary | administrative | 5 | (1,2,3,4,1) |
+ | R7 | boundary | administrative | 5 | (1,2,3,4,1) |
When importing
Then placex contains exactly
| object |
Tests for postcode estimation
Scenario: Postcodes on the object are preferred over those on the address
- Given the scene admin-areas
+ Given the grid with origin FR
+ | 1 | | | | 4 | | 6 | | 8 |
+ | | 10 | | 11 | | | | | |
+ | | | 22 | | | | | | |
+ | 2 | | | | 3 | | 5 | | 7 |
And the named places
- | osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
- | R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
+ | osm | class | type | admin | addr+postcode | geometry |
+ | R1 | boundary | administrative | 6 | 10000 | (1,8,7,2,1) |
+ | R34 | boundary | administrative | 8 | 11000 | (1,6,5,2,1) |
+ | R4 | boundary | administrative | 10 | 11200 | (1,4,3,2,1) |
And the named places
| osm | class | type | addr+postcode | geometry |
- | W93 | highway | residential | 112 DE 344 | :w2N |
- | W22 | building | yes | 112 DE 344N | :building:w2N |
+ | W93 | highway | residential | 11250 | 10,11 |
+ | N22 | building | yes | 11254 | 22 |
When importing
Then placex contains
- | object | postcode |
- | W22 | 112 DE 344N |
- | W93 | 112 DE 344 |
- | R4 | 112 DE 34 |
- | R34 | 112 DE |
- | R1 | 112 |
+ | object | postcode |
+ | N22 | 11254 |
+ | W93 | 11250 |
+ | R4 | 11200 |
+ | R34 | 11000 |
+ | R1 | 10000 |
Scenario: Postcodes from a road are inherited by an attached building
- Given the scene admin-areas
+ Given the grid with origin DE
+ | 10 | | | | 11 |
+ | | 1 | 2 | | |
+ | | 4 | 3 | | |
And the named places
| osm | class | type | addr+postcode | geometry |
- | W93 | highway | residential | 86034 | :w2N |
+ | W93 | highway | residential | 86034 | 10,11 |
And the named places
- | osm | class | type | geometry |
- | W22 | building | yes | :building:w2N |
+ | osm | class | type | geometry |
+ | W22 | building | yes | (1,2,3,4,1) |
When importing
Then placex contains
| object | postcode | parent_place_id |
| W22 | 86034 | W93 |
Scenario: Postcodes from the lowest admin area are inherited by ways
- Given the scene admin-areas
+ Given the grid with origin FR
+ | 1 | | | | 4 | | 6 | | 8 |
+ | | 10 | | 11 | | | | | |
+ | 2 | | | | 3 | | 5 | | 7 |
And the named places
| osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
- | R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
+ | R1 | boundary | administrative | 6 | 10000 | (1,8,7,2,1) |
+ | R34 | boundary | administrative | 8 | 11000 | (1,6,5,2,1) |
+ | R4 | boundary | administrative | 10 | 11200 | (1,4,3,2,1) |
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
+ | W93 | highway | residential | 10,11 |
When importing
Then placex contains
- | object | postcode |
- | W93 | 112 DE 34 |
+ | object | postcode |
+ | W93 | 11200 |
Scenario: Postcodes from the lowest admin area with postcode are inherited by ways
- Given the scene admin-areas
+ Given the grid with origin FR
+ | 1 | | | | 4 | | 6 | | 8 |
+ | | 10 | | 11 | | | | | |
+ | 2 | | | | 3 | | 5 | | 7 |
And the named places
| osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
+ | R1 | boundary | administrative | 6 | 10000 | (1,8,7,2,1) |
+ | R34 | boundary | administrative | 8 | 11000 | (1,6,5,2,1) |
And the named places
- | osm | class | type | admin | geometry |
- | R4 | boundary | administrative | 10 | :b2:N |
+ | osm | class | type | admin | geometry |
+ | R4 | boundary | administrative | 10 | (1,4,3,2,1) |
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
+ | W93 | highway | residential | 10,11 |
When importing
Then placex contains
| object | postcode | parent_place_id |
- | W93 | 112 DE | R4 |
+ | W93 | 11000 | R4 |
Scenario: Postcodes from the lowest admin area are inherited by buildings
- Given the scene admin-areas
+ Given the grid with origin FR
+ | 1 | | | | 4 | | 6 | | 8 |
+ | | 10 | | 11 | | | | | |
+ | | 13 | | 12 | | | | | |
+ | 2 | | | | 3 | | 5 | | 7 |
And the named places
| osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
- | R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
+ | R1 | boundary | administrative | 6 | 10000 | (1,8,7,2,1) |
+ | R34 | boundary | administrative | 8 | 11000 | (1,6,5,2,1) |
+ | R4 | boundary | administrative | 10 | 11200 | (1,4,3,2,1) |
And the named places
| osm | class | type | geometry |
- | W22 | building | yes | :building:w2N |
+ | W22 | building | yes | (10,11,12,13,10) |
When importing
Then placex contains
- | object | postcode |
- | W22 | 112 DE 34 |
+ | object | postcode |
+ | W22 | 11200 |
Scenario: Roads get postcodes from nearby named buildings without other info
- Given the scene admin-areas
+ Given the grid with origin US
+ | 10 | | | | 11 |
+ | | 1 | 2 | | |
+ | | 4 | 3 | | |
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
+ | W93 | highway | residential | 10,11 |
And the named places
- | osm | class | type | addr+postcode | geometry |
- | W22 | building | yes | 445023 | :building:w2N |
+ | osm | class | type | addr+postcode | geometry |
+ | W22 | building | yes | 45023 | (1,2,3,4,1) |
When importing
Then placex contains
| object | postcode |
- | W93 | 445023 |
+ | W93 | 45023 |
Scenario: Roads get postcodes from nearby unnamed buildings without other info
- Given the scene admin-areas
+ Given the grid with origin US
+ | 10 | | | | 11 |
+ | | 1 | 2 | | |
+ | | 4 | 3 | | |
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
- And the named places
- | osm | class | type | addr+postcode | geometry |
- | W22 | place | postcode | 445023 | :building:w2N |
+ | W93 | highway | residential | 10,11 |
+ And the places
+ | osm | class | type | addr+postcode | geometry |
+ | W22 | place | postcode | 45023 | (1,2,3,4,1) |
When importing
Then placex contains
| object | postcode |
- | W93 | 445023 |
+ | W93 | 45023 |
Scenario: Postcodes from admin boundaries are preferred over estimated postcodes
- Given the scene admin-areas
+ Given the grid with origin FR
+ | 1 | | | | 4 | | 6 | | 8 |
+ | | 10 | | 11 | | | | | |
+ | | | 22 | | | | | | |
+ | 2 | | | | 3 | | 5 | | 7 |
And the named places
| osm | class | type | admin | addr+postcode | geometry |
- | R1 | boundary | administrative | 6 | 112 | :b0 |
- | R34 | boundary | administrative | 8 | 112 DE | :b1:E |
- | R4 | boundary | administrative | 10 | 112 DE 34 | :b2:N |
+ | R1 | boundary | administrative | 6 | 10000 | (1,8,7,2,1) |
+ | R34 | boundary | administrative | 8 | 11000 | (1,6,5,2,1) |
+ | R4 | boundary | administrative | 10 | 11200 | (1,4,3,2,1) |
And the named places
| osm | class | type | geometry |
- | W93 | highway | residential | :w2N |
+ | W93 | highway | residential | 10,1 |
And the named places
- | osm | class | type | addr+postcode | geometry |
- | W22 | building | yes | 445023 | :building:w2N |
+ | osm | class | type | addr+postcode |
+ | N22 | building | yes | 45023 |
When importing
Then placex contains
- | object | postcode |
- | W93 | 112 DE 34 |
+ | object | postcode |
+ | W93 | 11200 |
Scenario: Postcodes are added to the postcode and word table
Given the places
| de | 01982 | country:de |
And there are word tokens for postcodes 01982
- Scenario: Different postcodes with the same normalization can both be found
+
+ @Fail
+ Scenario: search and address ranks for GB post codes correctly assigned
Given the places
- | osm | class | type | addr+postcode | addr+housenumber | geometry |
- | N34 | place | house | EH4 7EA | 111 | country:gb |
- | N35 | place | house | E4 7EA | 111 | country:gb |
+ | osm | class | type | postcode | geometry |
+ | N1 | place | postcode | E45 2CD | country:gb |
+ | N2 | place | postcode | E45 2 | country:gb |
+ | N3 | place | postcode | Y45 | country:gb |
When importing
Then location_postcode contains exactly
- | country | postcode | geometry |
- | gb | EH4 7EA | country:gb |
- | gb | E4 7EA | country:gb |
- When sending search query "EH4 7EA"
- Then results contain
- | type | display_name |
- | postcode | EH4 7EA |
- When sending search query "E4 7EA"
+ | postcode | country | rank_search | rank_address |
+ | E45 2CD | gb | 25 | 5 |
+ | E45 2 | gb | 23 | 5 |
+ | Y45 | gb | 21 | 5 |
+
+ @fail-legacy
+ Scenario: Postcodes outside all countries are not added to the postcode and word table
+ Given the places
+ | osm | class | type | addr+postcode | addr+housenumber | addr+place | geometry |
+ | N34 | place | house | 01982 | 111 | Null Island | 0 0.00001 |
+ And the places
+ | osm | class | type | name | geometry |
+ | N1 | place | hamlet | Null Island | 0 0 |
+ When importing
+ Then location_postcode contains exactly
+ | country | postcode | geometry |
+ And there are no word tokens for postcodes 01982
+ When sending search query "111, 01982 Null Island"
Then results contain
- | type | display_name |
- | postcode | E4 7EA |
+ | osm | display_name |
+ | N34 | 111, Null Island, 01982 |
| N18 | place | city | 0 0 |
| N19 | place | island | 0 0 |
| N36 | place | house | 0 0 |
- | N38 | place | houses | 0 0 |
And the named places
| osm | class | type | extra+capital | geometry |
| N101 | place | city | yes | 0 0 |
| N19 | 17 | 0 |
| N101 | 15 | 16 |
| N36 | 30 | 30 |
- | N38 | 28 | 0 |
Scenario: Ranks for boundaries are assigned according to admin level
Given the named places
| N20 | R22 | 16 |
| N20 | R21 | 18 |
+ Scenario: Mixes of admin boundaries and place areas I
+ Given the grid
+ | 1 | | 10 | | | 2 |
+ | | 9 | | | | |
+ | 20| | 21 | | | |
+ | 4 | | 11 | | | 3 |
+ And the places
+ | osm | class | type | admin | name | geometry |
+ | R1 | boundary | administrative | 5 | Greater London | (1,2,3,4,1) |
+ | R2 | boundary | administrative | 8 | Kensington | (1,10,11,4,1) |
+ And the places
+ | osm | class | type | name | geometry |
+ | R10 | place | city | London | (1,2,3,4,1) |
+ | N9 | place | town | Fulham | 9 |
+ | W1 | highway | residential | Lots Grove | 20,21 |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R1 | 10 | 10 |
+ | R10 | 16 | 16 |
+ | R2 | 16 | 18 |
+ | N9 | 18 | 18 |
+ And place_addressline contains
+ | object | address | isaddress | cached_rank_address |
+ | W1 | R1 | True | 10 |
+ | W1 | R10 | True | 16 |
+ | W1 | R2 | True | 18 |
+ | W1 | N9 | False | 18 |
+
+
+ Scenario: Mixes of admin boundaries and place areas II
+ Given the grid
+ | 1 | | 10 | | 5 | 2 |
+ | | 9 | | | | |
+ | 20| | 21 | | | |
+ | 4 | | 11 | | 6 | 3 |
+ And the places
+ | osm | class | type | admin | name | geometry |
+ | R1 | boundary | administrative | 5 | Greater London | (1,2,3,4,1) |
+ | R2 | boundary | administrative | 8 | London | (1,5,6,4,1) |
+ And the places
+ | osm | class | type | name | geometry |
+ | R10 | place | city | Westminster | (1,10,11,4,1) |
+ | N9 | place | town | Fulham | 9 |
+ | W1 | highway | residential | Lots Grove | 20,21 |
+ When importing
+ Then placex contains
+ | object | rank_search | rank_address |
+ | R1 | 10 | 10 |
+ | R2 | 16 | 16 |
+ | R10 | 16 | 18 |
+ | N9 | 18 | 18 |
+ And place_addressline contains
+ | object | address | isaddress | cached_rank_address |
+ | W1 | R1 | True | 10 |
+ | W1 | R10 | True | 18 |
+ | W1 | R2 | True | 16 |
+ | W1 | N9 | False | 18 |
| N1 | #Halle Saale, #Halle |
Scenario: Unnamed POIs have no search entry
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | geometry |
- | N1 | place | house | :p-N1 |
+ | osm | class | type |
+ | N1 | place | house |
And the named places
| osm | class | type | geometry |
- | W1 | highway | residential | :w-north |
+ | W1 | highway | residential | 10,11 |
When importing
Then search_name has no entry for N1
Scenario: Unnamed POI has a search entry when it has unknown addr: tags
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | housenr | addr+city | geometry |
- | N1 | place | house | 23 | Walltown | :p-N1 |
+ | osm | class | type | housenr | addr+city |
+ | N1 | place | house | 23 | Walltown |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
+ | W1 | highway | residential | Rose Street | 10,11 |
When importing
Then search_name contains
| object | nameaddress_vector |
| N1 | 23, Rose Street |
Scenario: Searching for unknown addr: tags also works for multiple words
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | housenr | addr+city | geometry |
- | N1 | place | house | 23 | Little Big Town | :p-N1 |
+ | osm | class | type | housenr | addr+city |
+ | N1 | place | house | 23 | Little Big Town |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
+ | W1 | highway | residential | Rose Street | 10,11 |
When importing
Then search_name contains
| object | nameaddress_vector |
| N1 | 23, Rose Street |
Scenario: Unnamed POI has no search entry when it has known addr: tags
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | housenr | addr+city | geometry |
- | N1 | place | house | 23 | Walltown | :p-N1 |
+ | osm | class | type | housenr | addr+city |
+ | N1 | place | house | 23 | Walltown |
And the places
| osm | class | type | name+name | addr+city | geometry |
- | W1 | highway | residential | Rose Street | Walltown | :w-north |
+ | W1 | highway | residential | Rose Street | Walltown | 10,11 |
When importing
Then search_name has no entry for N1
When sending search query "23 Rose Street, Walltown"
| N1 | 23, Rose Street |
Scenario: Unnamed POI must have a house number to get a search entry
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | addr+city | geometry |
- | N1 | place | house | Walltown | :p-N1 |
+ | osm | class | type | addr+city |
+ | N1 | place | house | Walltown |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
+ | W1 | highway | residential | Rose Street | 10,11 |
When importing
Then search_name has no entry for N1
Scenario: Unnamed POIs inherit parent name when unknown addr:place is present
- Given the scene roads-with-pois
+ Given the grid
+ | 100 | | | | | 101 |
+ | | | 1 | | | |
+ | 103 | 10 | | | 11 | 102 |
And the places
- | osm | class | type | housenr | addr+place | geometry |
- | N1 | place | house | 23 | Walltown | :p-N1 |
+ | osm | class | type | housenr | addr+place |
+ | N1 | place | house | 23 | Walltown |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
- | N2 | place | city | Strange Town | :p-N1 |
+ | W1 | highway | residential | Rose Street | 10,11 |
+ | R1 | place | city | Strange Town | (100,101,102,103,100) |
When importing
Then placex contains
| object | parent_place_id |
- | N1 | N2 |
+ | N1 | R1 |
When sending search query "23 Rose Street"
Then exactly 1 results are returned
And results contain
| N1 | 23, Walltown, Strange Town |
Scenario: Named POIs can be searched by housenumber when unknown addr:place is present
- Given the scene roads-with-pois
+ Given the grid
+ | 100 | | | | | 101 |
+ | | | 1 | | | |
+ | 103 | 10 | | | 11 | 102 |
And the places
- | osm | class | type | name | housenr | addr+place | geometry |
- | N1 | place | house | Blue house | 23 | Walltown | :p-N1 |
+ | osm | class | type | name | housenr | addr+place |
+ | N1 | place | house | Blue house | 23 | Walltown |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
- | N2 | place | city | Strange Town | :p-N1 |
+ | W1 | highway | residential | Rose Street | 10,11 |
+ | R1 | place | city | Strange Town | (100,101,102,103,100) |
When importing
When sending search query "23 Walltown, Strange Town"
Then results contain
| N1 | Blue house, 23, Walltown, Strange Town |
Scenario: Named POIs can be found when unknown multi-word addr:place is present
- Given the scene roads-with-pois
+ Given the grid
+ | 100 | | | | | 101 |
+ | | | 1 | | | |
+ | 103 | 10 | | | 11 | 102 |
And the places
- | osm | class | type | name | housenr | addr+place | geometry |
- | N1 | place | house | Blue house | 23 | Moon sun | :p-N1 |
+ | osm | class | type | name | housenr | addr+place |
+ | N1 | place | house | Blue house | 23 | Moon sun |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
- | N2 | place | city | Strange Town | :p-N1 |
+ | W1 | highway | residential | Rose Street | 10,11 |
+ | R1 | place | city | Strange Town | (100,101,102,103,100) |
When importing
When sending search query "23 Moon Sun, Strange Town"
Then results contain
| N1 | Blue house, 23, Moon sun, Strange Town |
Scenario: Unnamed POIs doesn't inherit parent name when addr:place is present only in parent address
- Given the scene roads-with-pois
+ Given the grid
+ | 100 | | | | | 101 |
+ | | | 1 | | | |
+ | 103 | 10 | | | 11 | 102 |
And the places
- | osm | class | type | housenr | addr+place | geometry |
- | N1 | place | house | 23 | Walltown | :p-N1 |
+ | osm | class | type | housenr | addr+place |
+ | N1 | place | house | 23 | Walltown |
And the places
| osm | class | type | name+name | addr+city | geometry |
- | W1 | highway | residential | Rose Street | Walltown | :w-north |
- | N2 | place | suburb | Strange Town | Walltown | :p-N1 |
+ | W1 | highway | residential | Rose Street | Walltown | 10,11 |
+ | R1 | place | suburb | Strange Town | Walltown | (100,101,102,103,100) |
When importing
When sending search query "23 Rose Street, Walltown"
Then exactly 1 result is returned
| N1 | 23, Walltown, Strange Town |
Scenario: Unnamed POIs does inherit parent name when unknown addr:place and addr:street is present
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | housenr | addr+place | addr+street | geometry |
- | N1 | place | house | 23 | Walltown | Lily Street | :p-N1 |
+ | osm | class | type | housenr | addr+place | addr+street |
+ | N1 | place | house | 23 | Walltown | Lily Street |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
+ | W1 | highway | residential | Rose Street | 10,11 |
When importing
Then search_name has no entry for N1
When sending search query "23 Rose Street"
Then exactly 0 results are returned
Scenario: An unknown addr:street is ignored
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | housenr | addr+street | geometry |
- | N1 | place | house | 23 | Lily Street | :p-N1 |
+ | osm | class | type | housenr | addr+street |
+ | N1 | place | house | 23 | Lily Street |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
+ | W1 | highway | residential | Rose Street | 10,11 |
When importing
Then search_name has no entry for N1
When sending search query "23 Rose Street"
Then exactly 0 results are returned
Scenario: Named POIs get unknown address tags added in the search_name table
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | name+name | housenr | addr+city | geometry |
- | N1 | place | house | Green Moss | 26 | Walltown | :p-N1 |
+ | osm | class | type | name+name | housenr | addr+city |
+ | N1 | place | house | Green Moss | 26 | Walltown |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
+ | W1 | highway | residential | Rose Street | 10,11 |
When importing
Then search_name contains
| object | name_vector | nameaddress_vector |
| N1 | Green Moss, 26, Rose Street |
Scenario: Named POI doesn't inherit parent name when addr:place is present only in parent address
- Given the scene roads-with-pois
+ Given the grid
+ | 100 | | | | | 101 |
+ | | | 1 | | | |
+ | 103 | 10 | | | 11 | 102 |
And the places
- | osm | class | type | name+name | addr+place | geometry |
- | N1 | place | house | Green Moss | Walltown | :p-N1 |
+ | osm | class | type | name+name | addr+place |
+ | N1 | place | house | Green Moss | Walltown |
And the places
| osm | class | type | name+name | geometry |
- | W1 | highway | residential | Rose Street | :w-north |
- | N2 | place | suburb | Strange Town | :p-N1 |
+ | W1 | highway | residential | Rose Street | 10,11 |
+ | R1 | place | suburb | Strange Town | (100,101,102,103,100) |
When importing
When sending search query "Green Moss, Rose Street, Walltown"
Then exactly 0 result is returned
| N1 | Green Moss, Walltown, Strange Town |
Scenario: Named POIs inherit address from parent
- Given the scene roads-with-pois
+ Given the grid
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
| osm | class | type | name | geometry |
- | N1 | place | house | foo | :p-N1 |
- | W1 | highway | residential | the road | :w-north |
+ | N1 | place | house | foo | 1 |
+ | W1 | highway | residential | the road | 10,11 |
When importing
Then search_name contains
| object | name_vector | nameaddress_vector |
| N1 | foo | #the road |
Scenario: Some addr: tags are added to address
- Given the scene roads-with-pois
+ Given the grid
+ | | 2 | 3 | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | name | geometry |
- | N2 | place | city | bonn | 81 81 |
- | N3 | place | suburb | smalltown| 80 81 |
+ | osm | class | type | name |
+ | N2 | place | city | bonn |
+ | N3 | place | suburb | smalltown|
And the named places
| osm | class | type | addr+city | addr+municipality | addr+suburb | geometry |
- | W1 | highway | service | bonn | New York | Smalltown | :w-north |
+ | W1 | highway | service | bonn | New York | Smalltown | 10,11 |
When importing
Then search_name contains
| object | nameaddress_vector |
| W1 | bonn, new, york, smalltown |
Scenario: A known addr:* tag is added even if the name is unknown
- Given the scene roads-with-pois
+ Given the grid
+ | 10 | | | | 11 |
And the places
| osm | class | type | name | addr+city | geometry |
- | W1 | highway | residential | Road | Nandu | :w-north |
+ | W1 | highway | residential | Road | Nandu | 10,11 |
When importing
Then search_name contains
| object | nameaddress_vector |
| W1 | nandu |
Scenario: addr:postcode is not added to the address terms
- Given the scene roads-with-pois
+ Given the grid with origin DE
+ | | 1 | | |
+ | 10 | | | 11 |
And the places
- | osm | class | type | name+ref | geometry |
- | N1 | place | state | 12345 | 80 80 |
+ | osm | class | type | name+ref |
+ | N1 | place | state | 12345 |
And the named places
| osm | class | type | addr+postcode | geometry |
- | W1 | highway | residential | 12345 | :w-north |
+ | W1 | highway | residential | 12345 | 10,11 |
When importing
Then search_name contains not
| object | nameaddress_vector |
| W1 | 12345 |
Scenario: a linked place does not show up in search name
+ Given the 0.01 grid
+ | 10 | | 11 |
+ | | 2 | |
+ | 13 | | 12 |
Given the named places
| osm | class | type | admin | geometry |
- | R13 | boundary | administrative | 9 | poly-area:0.01 |
+ | R13 | boundary | administrative | 9 | (10,11,12,13,10) |
And the named places
- | osm | class | type | geometry |
- | N2 | place | city | 0.1 0.1 |
+ | osm | class | type |
+ | N2 | place | city |
And the relations
| id | members | tags+type |
| 13 | N2:label | boundary |
And search_name has no entry for N2
Scenario: a linked waterway does not show up in search name
- Given the scene split-road
+ Given the grid
+ | 1 | | 2 | | 3 |
And the places
| osm | class | type | name | geometry |
- | W1 | waterway | river | Rhein | :w-2 |
- | W2 | waterway | river | Rhein | :w-3 |
- | R13 | waterway | river | Rhein | :w-1 + :w-2 + :w-3 |
+ | W1 | waterway | river | Rhein | 1,2 |
+ | W2 | waterway | river | Rhein | 2,3 |
+ | R13 | waterway | river | Rhein | 1,2,3 |
And the relations
| id | members | tags+type |
| 13 | W1,W2:main_stream | waterway |
--- /dev/null
+@DB
+Feature: Searching of house numbers
+ Test for specialised treeatment of housenumbers
+
+ Background:
+ Given the grid
+ | 1 | | 2 | | 3 |
+ | | 9 | | | |
+ | | | | | 4 |
+
+
+ Scenario: A simple ascii digit housenumber is found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | 45 | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | North Road | 1,2,3 |
+ When importing
+ And sending search query "45, North Road"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "North Road 45"
+ Then results contain
+ | osm |
+ | N1 |
+
+
+ @fail-legacy
+ Scenario Outline: Numeral housenumbers in any script are found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <number> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | North Road | 1,2,3 |
+ When importing
+ And sending search query "45, North Road"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "North Road ④⑤"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "North Road 𑁪𑁫"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | number |
+ | 45 |
+ | ④⑤ |
+ | 𑁪𑁫 |
+
+
+ Scenario Outline: Each housenumber in a list is found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnrs> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Multistr | 1,2,3 |
+ When importing
+ When sending search query "2 Multistr"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "4 Multistr"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "12 Multistr"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | hnrs |
+ | 2;4;12 |
+ | 2,4,12 |
+ | 2, 4, 12 |
+
+
+ @fail-legacy
+ Scenario Outline: Housenumber - letter combinations are found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnr> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Multistr | 1,2,3 |
+ When importing
+ When sending search query "2A Multistr"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "2 a Multistr"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "2-A Multistr"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Multistr 2 A"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | hnr |
+ | 2a |
+ | 2 A |
+ | 2-a |
+ | 2/A |
+
+
+ Scenario Outline: Number - Number combinations as a housenumber are found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnr> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Chester St | 1,2,3 |
+ When importing
+ When sending search query "34-10 Chester St"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "34/10 Chester St"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "34 10 Chester St"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "3410 Chester St"
+ Then results contain
+ | osm |
+ | W10 |
+
+ Examples:
+ | hnr |
+ | 34-10 |
+ | 34 10 |
+ | 34/10 |
+
+
+ @fail-legacy
+ Scenario Outline: a bis housenumber is found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnr> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Rue Paris | 1,2,3 |
+ When importing
+ When sending search query "Rue Paris 45bis"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Rue Paris 45 BIS"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Rue Paris 45BIS"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Rue Paris 45 bis"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | hnr |
+ | 45bis |
+ | 45BIS |
+ | 45 BIS |
+ | 45 bis |
+
+
+ @fail-legacy
+ Scenario Outline: a ter housenumber is found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnr> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Rue du Berger | 1,2,3 |
+ When importing
+ When sending search query "Rue du Berger 45ter"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Rue du Berger 45 TER"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Rue du Berger 45TER"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Rue du Berger 45 ter"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | hnr |
+ | 45ter |
+ | 45TER |
+ | 45 ter |
+ | 45 TER |
+
+
+ @fail-legacy
+ Scenario Outline: a number - letter - number combination housenumber is found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnr> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Herengracht | 1,2,3 |
+ When importing
+ When sending search query "501-H 1 Herengracht"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "501H-1 Herengracht"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "501H1 Herengracht"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "501-H1 Herengracht"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | hnr |
+ | 501 H1 |
+ | 501H 1 |
+ | 501/H/1 |
+ | 501h1 |
+
+
+ @fail-legacy
+ Scenario Outline: Russian housenumbers are found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | <hnr> | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Голубинская улица | 1,2,3 |
+ When importing
+ When sending search query "Голубинская улица 55к3"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Голубинская улица 55 k3"
+ Then results contain
+ | osm |
+ | N1 |
+ When sending search query "Голубинская улица 55 к-3"
+ Then results contain
+ | osm |
+ | N1 |
+
+ Examples:
+ | hnr |
+ | 55к3 |
+ | 55 к3 |
+
+
+ Scenario: A name mapped as a housenumber is found
+ Given the places
+ | osm | class | type | housenr | geometry |
+ | N1 | building | yes | Warring | 9 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | path | Chester St | 1,2,3 |
+ When importing
+ When sending search query "Chester St Warring"
+ Then results contain
+ | osm |
+ | N1 |
+
+
+ Scenario: Interpolations are found according to their type
+ Given the grid
+ | 10 | | 11 |
+ | 100 | | 101 |
+ | 20 | | 21 |
+ And the places
+ | osm | class | type | name | geometry |
+ | W100 | highway | residential | Ringstr | 100, 101 |
+ And the places
+ | osm | class | type | addr+interpolation | geometry |
+ | W10 | place | houses | even | 10, 11 |
+ | W20 | place | houses | odd | 20, 21 |
+ And the places
+ | osm | class | type | housenr | geometry |
+ | N10 | place | house | 10 | 10 |
+ | N11 | place | house | 20 | 11 |
+ | N20 | place | house | 11 | 20 |
+ | N21 | place | house | 21 | 21 |
+ And the ways
+ | id | nodes |
+ | 10 | 10, 11 |
+ | 20 | 20, 21 |
+ When importing
+ When sending search query "Ringstr 12"
+ Then results contain
+ | osm |
+ | W10 |
+ When sending search query "Ringstr 13"
+ Then results contain
+ | osm |
+ | W20 |
--- /dev/null
+@DB
+Feature: Query of address interpolations
+ Tests that interpolated addresses can be queried correctly
+
+ Background:
+ Given the grid
+ | 1 | | 2 | | 3 |
+ | 10 | | 12 | | 13 |
+ | 7 | | 8 | | 9 |
+
+ Scenario: Find interpolations with single number
+ Given the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | primary | Nickway | 10,12,13 |
+ And the places
+ | osm | class | type | addr+interpolation | geometry |
+ | W1 | place | houses | odd | 1,3 |
+ And the places
+ | osm | class | type | housenr | geometry |
+ | N1 | place | house | 1 | 1 |
+ | N3 | place | house | 5 | 3 |
+ And the ways
+ | id | nodes |
+ | 1 | 1,3 |
+ When importing
+ When sending jsonv2 reverse point 2
+ Then results contain
+ | ID | display_name |
+ | 0 | 3, Nickway |
+ When sending search query "Nickway 3"
+ Then results contain
+ | osm | display_name |
+ | W1 | 3, Nickway |
+
+
+ Scenario: Find interpolations with multiple numbers
+ Given the places
+ | osm | class | type | name | geometry |
+ | W10 | highway | primary | Nickway | 10,12,13 |
+ And the places
+ | osm | class | type | addr+interpolation | geometry |
+ | W1 | place | houses | even | 1,3 |
+ And the places
+ | osm | class | type | housenr | geometry |
+ | N1 | place | house | 2 | 1 |
+ | N3 | place | house | 16 | 3 |
+ And the ways
+ | id | nodes |
+ | 1 | 1,3 |
+ When importing
+ When sending jsonv2 reverse point 2
+ Then results contain
+ | ID | display_name | centroid |
+ | 0 | 10, Nickway | 2 |
+ When sending search query "Nickway 10"
+ Then results contain
+ | osm | display_name | centroid |
+ | W1 | 10, Nickway | 2 |
Tests that information from linked places can be searched correctly
Scenario: Additional names from linked places are searchable
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 2 | |
+ | 13 | | 12 |
Given the places
| osm | class | type | admin | name | geometry |
- | R13 | boundary | administrative | 6 | Garbo | poly-area:0.1 |
+ | R13 | boundary | administrative | 6 | Garbo | (10,11,12,13,10) |
Given the places
- | osm | class | type | admin | name+name:it | geometry |
- | N2 | place | hamlet | 15 | Vario | 0.006 0.00001 |
+ | osm | class | type | admin | name+name:it |
+ | N2 | place | hamlet | 15 | Vario |
And the relations
| id | members | tags+type |
| 13 | N2:label | boundary |
| object | linked_place_id |
| N2 | R13 |
When sending search query "Vario"
+ | namedetails |
+ | 1 |
Then results contain
- | osm |
- | R13 |
+ | osm | display_name | namedetails |
+ | R13 | Garbo | "name": "Garbo", "name:it": "Vario" |
+ When sending search query "Vario"
+ | accept-language |
+ | it |
+ Then results contain
+ | osm | display_name |
+ | R13 | Vario |
+
+
+ Scenario: Differing names from linked places are searchable
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 2 | |
+ | 13 | | 12 |
+ Given the places
+ | osm | class | type | admin | name | geometry |
+ | R13 | boundary | administrative | 6 | Garbo | (10,11,12,13,10) |
+ Given the places
+ | osm | class | type | admin | name |
+ | N2 | place | hamlet | 15 | Vario |
+ And the relations
+ | id | members | tags+type |
+ | 13 | N2:label | boundary |
+ When importing
+ Then placex contains
+ | object | linked_place_id |
+ | N2 | R13 |
+ When sending search query "Vario"
+ | namedetails |
+ | 1 |
+ Then results contain
+ | osm | display_name | namedetails |
+ | R13 | Garbo | "name": "Garbo", "_place_name": "Vario" |
+ When sending search query "Garbo"
+ Then results contain
+ | osm | display_name |
+ | R13 | Garbo |
| 0 | N3 |
Scenario: Landuse with name are found
+ Given the grid
+ | 1 | 2 |
+ | 3 | |
Given the places
| osm | class | type | name | geometry |
- | R1 | natural | meadow | landuse1 | (0 0, 1 0, 1 1, 0 1, 0 0) |
- | R2 | landuse | industrial | landuse2 | (0 0, -1 0, -1 -1, 0 -1, 0 0) |
+ | R1 | natural | meadow | landuse1 | (1,2,3,1) |
+ | R2 | landuse | industrial | landuse2 | (2,3,1,2) |
When importing
When sending search query "landuse1"
Then results contain
| 0 | R2 |
Scenario: Postcode boundaries without ref
+ Given the grid with origin FR
+ | | 2 | |
+ | 1 | | 3 |
Given the places
| osm | class | type | postcode | geometry |
- | R1 | boundary | postal_code | 12345 | (0 0, 1 0, 1 1, 0 1, 0 0) |
+ | R1 | boundary | postal_code | 12345 | (1,2,3,1) |
When importing
When sending search query "12345"
Then results contain
| ID | osm |
| 0 | R1 |
- Scenario: Unprintable characters in postcodes are ignored
- Given the named places
- | osm | class | type | address |
- | N234 | amenity | prison | 'postcode' : u'1234\u200e' |
- When importing
- And sending search query "1234"
- Then result 0 has not attributes osm_type
-
Scenario Outline: Housenumbers with special characters are found
Given the grid
| 1 | | | | 2 |
--- /dev/null
+@DB
+Feature: Querying fo postcode variants
+
+ Scenario: Postcodes in Singapore (6-digit postcode)
+ Given the grid with origin SG
+ | 10 | | | | 11 |
+ And the places
+ | osm | class | type | name | addr+postcode | geometry |
+ | W1 | highway | path | Lorang | 399174 | 10,11 |
+ When importing
+ When sending search query "399174"
+ Then results contain
+ | ID | type | display_name |
+ | 0 | postcode | 399174 |
+
+
+ @fail-legacy
+ Scenario Outline: Postcodes in the Netherlands (mixed postcode with spaces)
+ Given the grid with origin NL
+ | 10 | | | | 11 |
+ And the places
+ | osm | class | type | name | addr+postcode | geometry |
+ | W1 | highway | path | De Weide | 3993 DX | 10,11 |
+ When importing
+ When sending search query "3993 DX"
+ Then results contain
+ | ID | type | display_name |
+ | 0 | postcode | 3993 DX |
+ When sending search query "3993dx"
+ Then results contain
+ | ID | type | display_name |
+ | 0 | postcode | 3993 DX |
+
+ Examples:
+ | postcode |
+ | 3993 DX |
+ | 3993DX |
+ | 3993 dx |
+
+
+ @fail-legacy
+ Scenario: Postcodes in Singapore (6-digit postcode)
+ Given the grid with origin SG
+ | 10 | | | | 11 |
+ And the places
+ | osm | class | type | name | addr+postcode | geometry |
+ | W1 | highway | path | Lorang | 399174 | 10,11 |
+ When importing
+ When sending search query "399174"
+ Then results contain
+ | ID | type | display_name |
+ | 0 | postcode | 399174 |
+
+
+ @fail-legacy
+ Scenario Outline: Postcodes in Andorra (with country code)
+ Given the grid with origin AD
+ | 10 | | | | 11 |
+ And the places
+ | osm | class | type | name | addr+postcode | geometry |
+ | W1 | highway | path | Lorang | <postcode> | 10,11 |
+ When importing
+ When sending search query "675"
+ Then results contain
+ | ID | type | display_name |
+ | 0 | postcode | AD675 |
+ When sending search query "AD675"
+ Then results contain
+ | ID | type | display_name |
+ | 0 | postcode | AD675 |
+
+ Examples:
+ | postcode |
+ | 675 |
+ | AD 675 |
+ | AD675 |
+
+
+ Scenario: Different postcodes with the same normalization can both be found
+ Given the places
+ | osm | class | type | addr+postcode | addr+housenumber | geometry |
+ | N34 | place | house | EH4 7EA | 111 | country:gb |
+ | N35 | place | house | E4 7EA | 111 | country:gb |
+ When importing
+ Then location_postcode contains exactly
+ | country | postcode | geometry |
+ | gb | EH4 7EA | country:gb |
+ | gb | E4 7EA | country:gb |
+ When sending search query "EH4 7EA"
+ Then results contain
+ | type | display_name |
+ | postcode | EH4 7EA |
+ When sending search query "E4 7EA"
+ Then results contain
+ | type | display_name |
+ | postcode | E4 7EA |
+
| 0 | N1 | place | village | 10 -10 |
Scenario: Updating postcode in postcode boundaries without ref
+ Given the grid
+ | 1 | 2 |
+ | 4 | 3 |
Given the places
| osm | class | type | postcode | geometry |
- | R1 | boundary | postal_code | 12345 | poly-area:1.0 |
+ | R1 | boundary | postal_code | 12345 | (1,2,3,4,1) |
When importing
And sending search query "12345"
Then results contain
| 0 | R1 |
When updating places
| osm | class | type | postcode | geometry |
- | R1 | boundary | postal_code | 54321 | poly-area:1.0 |
+ | R1 | boundary | postal_code | 54321 | (1,2,3,4,1) |
And sending search query "12345"
- Then result 0 has not attributes osm_type
+ Then exactly 0 results are returned
When sending search query "54321"
Then results contain
| ID | osm |
--- /dev/null
+@DB
+Feature: Country handling
+ Tests for update of country information
+
+ Background:
+ Given the 1.0 grid with origin DE
+ | 1 | | 2 |
+ | | 10 | |
+ | 4 | | 3 |
+
+ @fail-legacy
+ Scenario: When country names are changed old ones are no longer searchable
+ Given the places
+ | osm | class | type | admin | name+name:xy | country | geometry |
+ | R1 | boundary | administrative | 2 | Loudou | de | (1,2,3,4,1) |
+ Given the places
+ | osm | class | type | name |
+ | N10 | place | town | Wenig |
+ When importing
+ When sending search query "Wenig, Loudou"
+ Then results contain
+ | osm |
+ | N10 |
+ When updating places
+ | osm | class | type | admin | name+name:xy | country | geometry |
+ | R1 | boundary | administrative | 2 | Germany | de | (1,2,3,4,1) |
+ When sending search query "Wenig, Loudou"
+ Then exactly 0 results are returned
+
+ @fail-legacy
+ Scenario: When country names are deleted they are no longer searchable
+ Given the places
+ | osm | class | type | admin | name+name:xy | country | geometry |
+ | R1 | boundary | administrative | 2 | Loudou | de | (1,2,3,4,1) |
+ Given the places
+ | osm | class | type | name |
+ | N10 | place | town | Wenig |
+ When importing
+ When sending search query "Wenig, Loudou"
+ Then results contain
+ | osm |
+ | N10 |
+ When updating places
+ | osm | class | type | admin | name+name:en | country | geometry |
+ | R1 | boundary | administrative | 2 | Germany | de | (1,2,3,4,1) |
+ When sending search query "Wenig, Loudou"
+ Then exactly 0 results are returned
+ When sending search query "Wenig"
+ | accept-language |
+ | xy,en |
+ Then results contain
+ | osm | display_name |
+ | N10 | Wenig, Germany |
+
+
+ Scenario: Default country names are always searchable
+ Given the places
+ | osm | class | type | name |
+ | N10 | place | town | Wenig |
+ When importing
+ When sending search query "Wenig, Germany"
+ Then results contain
+ | osm |
+ | N10 |
+ When sending search query "Wenig, de"
+ Then results contain
+ | osm |
+ | N10 |
+ When updating places
+ | osm | class | type | admin | name+name:en | country | geometry |
+ | R1 | boundary | administrative | 2 | Lilly | de | (1,2,3,4,1) |
+ When sending search query "Wenig, Germany"
+ | accept-language |
+ | en,de |
+ Then results contain
+ | osm | display_name |
+ | N10 | Wenig, Lilly |
+ When sending search query "Wenig, de"
+ | accept-language |
+ | en,de |
+ Then results contain
+ | osm | display_name |
+ | N10 | Wenig, Lilly |
+
+
+ @fail-legacy
+ Scenario: When a localised name is deleted, the standard name takes over
+ Given the places
+ | osm | class | type | admin | name+name:de | country | geometry |
+ | R1 | boundary | administrative | 2 | Loudou | de | (1,2,3,4,1) |
+ Given the places
+ | osm | class | type | name |
+ | N10 | place | town | Wenig |
+ When importing
+ When sending search query "Wenig, Loudou"
+ | accept-language |
+ | de,en |
+ Then results contain
+ | osm | display_name |
+ | N10 | Wenig, Loudou |
+ When updating places
+ | osm | class | type | admin | name+name:en | country | geometry |
+ | R1 | boundary | administrative | 2 | Germany | de | (1,2,3,4,1) |
+ When sending search query "Wenig, Loudou"
+ Then exactly 0 results are returned
+ When sending search query "Wenig"
+ | accept-language |
+ | de,en |
+ Then results contain
+ | osm | display_name |
+ | N10 | Wenig, Deutschland |
+
Test the interpolated address are updated correctly
Scenario: new interpolation added to existing street
- Given the scene parallel-road
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | 99 | 2 | |
+ | | | | | |
+ | 20 | | | | 21 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Sun Way | :w-north |
- | W3 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Sun Way | 10,11 |
+ | W3 | highway | unclassified | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
+ | 10 | 1,2 |
When importing
Then W10 expands to no interpolation
When updating places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And updating places
| osm | class | type | addr+interpolation | geometry |
- | W10 | place | houses | even | :w-middle |
+ | W10 | place | houses | even | 1,2 |
Then placex contains
| object | parent_place_id |
| N1 | W2 |
| N2 | W2 |
And W10 expands to interpolation
- | parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | parent_place_id | start | end | geometry |
+ | W2 | 4 | 4 | 99 |
Scenario: addr:street added to interpolation
- Given the scene parallel-road
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | | | | |
+ | 20 | | | | 21 |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W10 | place | houses | even | :w-middle |
+ | W10 | place | houses | even | 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Sun Way | :w-north |
- | W3 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Sun Way | 10,11 |
+ | W3 | highway | unclassified | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
+ | 10 | 1,2 |
When importing
Then placex contains
| object | parent_place_id |
| N2 | W2 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
When updating places
| osm | class | type | addr+interpolation | street | geometry |
- | W10 | place | houses | even | Cloud Street | :w-middle |
+ | W10 | place | houses | even | Cloud Street | 1,2 |
Then placex contains
| object | parent_place_id |
| N1 | W3 |
| N2 | W3 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W3 | 2 | 6 |
+ | W3 | 4 | 4 |
Scenario: addr:street added to housenumbers
- Given the scene parallel-road
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | | | | |
+ | 20 | | | | 21 |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W10 | place | houses | even | :w-middle |
+ | W10 | place | houses | even | 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Sun Way | :w-north |
- | W3 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Sun Way | 10,11 |
+ | W3 | highway | unclassified | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
+ | 10 | 1,2 |
When importing
Then placex contains
| object | parent_place_id |
| N2 | W2 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
When updating places
- | osm | class | type | street | housenr | geometry |
- | N1 | place | house | Cloud Street| 2 | :n-middle-w |
- | N2 | place | house | Cloud Street| 6 | :n-middle-e |
+ | osm | class | type | street | housenr |
+ | N1 | place | house | Cloud Street| 2 |
+ | N2 | place | house | Cloud Street| 6 |
Then placex contains
| object | parent_place_id |
| N1 | W3 |
| N2 | W3 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W3 | 2 | 6 |
+ | W3 | 4 | 4 |
Scenario: interpolation tag removed
- Given the scene parallel-road
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | | | | |
+ | 20 | | | | 21 |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W10 | place | houses | even | :w-middle |
+ | W10 | place | houses | even | 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Sun Way | :w-north |
- | W3 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Sun Way | 10,11 |
+ | W3 | highway | unclassified | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
+ | 10 | 1,2 |
When importing
Then placex contains
| object | parent_place_id |
| N2 | W2 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
When marking for delete W10
Then W10 expands to no interpolation
And placex contains
| N2 | W2 |
Scenario: referenced road added
- Given the scene parallel-road
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | | | | |
+ | 20 | | | | 21 |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | street | geometry |
- | W10 | place | houses | even | Cloud Street| :w-middle |
+ | W10 | place | houses | even | Cloud Street| 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Sun Way | :w-north |
+ | W2 | highway | unclassified | Sun Way | 10,11 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
+ | 10 | 1,2 |
When importing
Then placex contains
| object | parent_place_id |
| N2 | W2 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
When updating places
| osm | class | type | name | geometry |
- | W3 | highway | unclassified | Cloud Street | :w-south |
+ | W3 | highway | unclassified | Cloud Street | 20,21 |
Then placex contains
| object | parent_place_id |
| N1 | W3 |
| N2 | W3 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W3 | 2 | 6 |
+ | W3 | 4 | 4 |
Scenario: referenced road deleted
- Given the scene parallel-road
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | | | | |
+ | 20 | | | | 21 |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-middle-w |
- | N2 | place | house | 6 | :n-middle-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | addr+interpolation | street | geometry |
- | W10 | place | houses | even | Cloud Street| :w-middle |
+ | W10 | place | houses | even | Cloud Street| 1,2 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Sun Way | :w-north |
- | W3 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Sun Way | 10,11 |
+ | W3 | highway | unclassified | Cloud Street | 20,21 |
And the ways
| id | nodes |
- | 10 | 1,100,101,102,2 |
+ | 10 | 1,2 |
When importing
Then placex contains
| object | parent_place_id |
| N2 | W3 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W3 | 2 | 6 |
+ | W3 | 4 | 4 |
When marking for delete W3
Then placex contains
| object | parent_place_id |
| N2 | W2 |
And W10 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
Scenario: building becomes interpolation
- Given the scene building-with-parallel-streets
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | 4 | | 3 | |
And the places
- | osm | class | type | housenr | geometry |
- | W1 | place | house | 3 | :w-building |
+ | osm | class | type | housenr | geometry |
+ | W1 | place | house | 3 | (1,2,3,4,1) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Cloud Street | 10,11 |
When importing
Then placex contains
| object | parent_place_id |
| W1 | W2 |
Given the ways
| id | nodes |
- | 1 | 1,100,101,102,2 |
+ | 1 | 1,2 |
When updating places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-north-w |
- | N2 | place | house | 6 | :n-north-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And updating places
| osm | class | type | addr+interpolation | street | geometry |
- | W1 | place | houses | even | Cloud Street| :w-north |
+ | W1 | place | houses | even | Cloud Street| 1,2 |
Then placex has no entry for W1
And W1 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
Scenario: interpolation becomes building
- Given the scene building-with-parallel-streets
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
+ | | 4 | | 3 | |
And the places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-north-w |
- | N2 | place | house | 6 | :n-north-e |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Cloud Street | 10,11 |
And the ways
| id | nodes |
- | 1 | 1,100,101,102,2 |
+ | 1 | 1,2 |
And the places
| osm | class | type | addr+interpolation | street | geometry |
- | W1 | place | houses | even | Cloud Street| :w-north |
+ | W1 | place | houses | even | Cloud Street| 1,2 |
When importing
Then placex has no entry for W1
And W1 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
When updating places
- | osm | class | type | housenr | geometry |
- | W1 | place | house | 3 | :w-building |
+ | osm | class | type | housenr | geometry |
+ | W1 | place | house | 3 | (1,2,3,4,1) |
Then placex contains
| object | parent_place_id |
| W1 | W2 |
+ And W1 expands to no interpolation
Scenario: housenumbers added to interpolation
- Given the scene building-with-parallel-streets
+ Given the grid
+ | 10 | | | | 11 |
+ | | 1 | | 2 | |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | unclassified | Cloud Street | :w-south |
+ | W2 | highway | unclassified | Cloud Street | 10,11 |
And the ways
| id | nodes |
- | 1 | 1,100,101,102,2 |
+ | 1 | 1,2 |
And the places
| osm | class | type | addr+interpolation | geometry |
- | W1 | place | houses | even | :w-north |
+ | W1 | place | houses | even | 1,2 |
When importing
Then W1 expands to no interpolation
When updating places
- | osm | class | type | housenr | geometry |
- | N1 | place | house | 2 | :n-north-w |
- | N2 | place | house | 6 | :n-north-e |
- And updating places
- | osm | class | type | addr+interpolation | street | geometry |
- | W1 | place | houses | even | Cloud Street| :w-north |
+ | osm | class | type | housenr |
+ | N1 | place | house | 2 |
+ | N2 | place | house | 6 |
Then W1 expands to interpolation
| parent_place_id | start | end |
- | W2 | 2 | 6 |
+ | W2 | 4 | 4 |
Scenario: housenumber added in middle of interpolation
Given the grid
| N5 | place | house | 10 |
When importing
Then W2 expands to interpolation
- | parent_place_id | start | end | geometry |
- | W1 | 2 | 10 | 3,4,5 |
+ | parent_place_id | start | end |
+ | W1 | 4 | 8 |
When updating places
| osm | class | type | housenr |
| N4 | place | house | 6 |
Then W2 expands to interpolation
- | parent_place_id | start | end | geometry |
- | W1 | 2 | 6 | 3,4 |
- | W1 | 6 | 10 | 4,5 |
+ | parent_place_id | start | end |
+ | W1 | 4 | 4 |
+ | W1 | 8 | 8 |
@Fail
Scenario: housenumber removed in middle of interpolation
| N5 | place | house | 10 |
When importing
Then W2 expands to interpolation
- | parent_place_id | start | end | geometry |
- | W1 | 2 | 6 | 3,4 |
- | W1 | 6 | 10 | 4,5 |
+ | parent_place_id | start | end |
+ | W1 | 4 | 4 |
+ | W1 | 8 | 8 |
When marking for delete N4
Then W2 expands to interpolation
- | parent_place_id | start | end | geometry |
- | W1 | 2 | 10 | 3,4,5 |
+ | parent_place_id | start | end |
+ | W1 | 4 | 8 |
Scenario: Change the start housenumber
Given the grid
| N4 | place | house | 6 |
When importing
Then W2 expands to interpolation
- | parent_place_id | start | end | geometry |
- | W1 | 2 | 6 | 3,4 |
+ | parent_place_id | start | end |
+ | W1 | 4 | 4 |
When updating places
| osm | class | type | housenr |
| N4 | place | house | 8 |
Then W2 expands to interpolation
- | parent_place_id | start | end | geometry |
- | W1 | 2 | 8 | 3,4 |
+ | parent_place_id | start | end |
+ | W1 | 4 | 6 |
Feature: Updates of linked places
Tests that linked places are correctly added and deleted.
+ Scenario: Linking is kept when boundary is updated
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
+ Given the places
+ | osm | class | type | name |
+ | N1 | place | city | foo |
+ And the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
+ When importing
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | R1 |
+ When updating places
+ | osm | class | type | name | name+name:de | admin | geometry |
+ | R1 | boundary | administrative | foo | Dingens | 8 | (10,11,12,13,10) |
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | R1 |
+
+
Scenario: Add linked place when linking relation is renamed
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
Given the places
- | osm | class | type | name | geometry |
- | N1 | place | city | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | city | foo |
And the places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
When importing
- And sending search query "foo"
+ Then placex contains
+ | object | linked_place_id |
+ | N1 | R1 |
+ When sending search query "foo"
| dups |
| 1 |
Then results contain
| R |
When updating places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foobar | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foobar | 8 | (10,11,12,13,10) |
Then placex contains
| object | linked_place_id |
| N1 | - |
| N |
Scenario: Add linked place when linking relation is removed
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
Given the places
- | osm | class | type | name | geometry |
- | N1 | place | city | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | city | foo |
And the places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
When importing
And sending search query "foo"
| dups |
| N |
Scenario: Remove linked place when linking relation is added
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
Given the places
- | osm | class | type | name | geometry |
- | N1 | place | city | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | city | foo |
When importing
And sending search query "foo"
| dups |
| N |
When updating places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
Then placex contains
| object | linked_place_id |
| N1 | R1 |
| R |
Scenario: Remove linked place when linking relation is renamed
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
Given the places
- | osm | class | type | name | geometry |
- | N1 | place | city | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | city | foo |
And the places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foobar | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foobar | 8 | (10,11,12,13,10) |
When importing
And sending search query "foo"
| dups |
| N |
When updating places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
Then placex contains
| object | linked_place_id |
| N1 | R1 |
| R |
Scenario: Update linking relation when linkee name is updated
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 3 | |
+ | 13 | | 12 |
Given the places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | rel | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | rel | 8 | (10,11,12,13,10) |
And the places
- | osm | class | type | name+name:de | admin | geometry |
- | N3 | place | city | pnt | 30 | 0.00001 0 |
+ | osm | class | type | name+name:de |
+ | N3 | place | city | pnt |
And the relations
| id | members |
| 1 | N3:label |
When importing
Then placex contains
- | object | linked_place_id | name+name:de |
+ | object | linked_place_id | name+_place_name:de |
| R1 | - | pnt |
+ And placex contains
+ | object | linked_place_id | name+name:de |
| N3 | R1 | pnt |
When updating places
- | osm | class | type | name+name:de | admin | geometry |
- | N3 | place | city | newname | 30 | 0.00001 0 |
+ | osm | class | type | name+name:de |
+ | N3 | place | city | newname |
Then placex contains
| object | linked_place_id | name+name:de |
| N3 | R1 | newname |
+ And placex contains
+ | object | linked_place_id | name+_place_name:de |
| R1 | - | newname |
+ Scenario: Update linking relation when linkee name is deleted
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 3 | |
+ | 13 | | 12 |
+ Given the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | rel | 8 | (10,11,12,13,10) |
+ And the places
+ | osm | class | type | name |
+ | N3 | place | city | pnt |
+ And the relations
+ | id | members |
+ | 1 | N3:label |
+ When importing
+ Then placex contains
+ | object | linked_place_id | name+_place_name | name+name |
+ | R1 | - | pnt | rel |
+ And placex contains
+ | object | linked_place_id | name+name |
+ | N3 | R1 | pnt |
+ When sending search query "pnt"
+ Then results contain
+ | osm |
+ | R1 |
+ When updating places
+ | osm | class | type | name+name:de |
+ | N3 | place | city | depnt |
+ Then placex contains
+ | object | linked_place_id | name+name:de |
+ | N3 | R1 | depnt |
+ And placex contains
+ | object | linked_place_id | name+_place_name:de | name+name |
+ | R1 | - | depnt | rel |
+ When sending search query "pnt"
+ Then exactly 0 results are returned
+
Scenario: Updating linkee extratags keeps linker's extratags
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 3 | |
+ | 13 | | 12 |
Given the named places
| osm | class | type | extra+wikidata | admin | geometry |
- | R1 | boundary | administrative | 34 | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | 34 | 8 | (10,11,12,13,10) |
And the named places
- | osm | class | type | geometry |
- | N3 | place | city | 0.00001 0 |
+ | osm | class | type |
+ | N3 | place | city |
And the relations
| id | members |
| 1 | N3:label |
| object | extratags |
| R1 | 'wikidata' : '34', 'linked_place' : 'city' |
When updating places
- | osm | class | type | name | extra+oneway | admin | geometry |
- | N3 | place | city | newname | yes | 30 | 0.00001 0 |
+ | osm | class | type | name | extra+oneway |
+ | N3 | place | city | newname | yes |
Then placex contains
| object | extratags |
| R1 | 'wikidata' : '34', 'oneway' : 'yes', 'linked_place' : 'city' |
Scenario: Remove linked_place info when linkee is removed
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
Given the places
- | osm | class | type | name | geometry |
- | N1 | place | city | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | city | foo |
And the places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
When importing
Then placex contains
| object | extratags |
| R1 | |
Scenario: Update linked_place info when linkee type changes
+ Given the 0.1 grid
+ | 10 | | 11 |
+ | | 1 | |
+ | 13 | | 12 |
Given the places
- | osm | class | type | name | geometry |
- | N1 | place | city | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | city | foo |
And the places
| osm | class | type | name | admin | geometry |
- | R1 | boundary | administrative | foo | 8 | poly-area:0.1 |
+ | R1 | boundary | administrative | foo | 8 | (10,11,12,13,10) |
When importing
Then placex contains
| object | extratags |
| R1 | 'linked_place' : 'city' |
When updating places
- | osm | class | type | name | geometry |
- | N1 | place | town | foo | 0 0 |
+ | osm | class | type | name |
+ | N1 | place | town | foo |
Then placex contains
| object | extratags |
| R1 | 'linked_place' : 'town' |
+
+
+ Scenario: Keep linking and ranks when place type changes
+ Given the grid
+ | 1 | | | 2 |
+ | | | 9 | |
+ | 4 | | | 3 |
+ And the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | (1,2,3,4,1) |
+ And the places
+ | osm | class | type | name | geometry |
+ | N1 | place | city | foo | 9 |
+ When importing
+ Then placex contains
+ | object | linked_place_id | rank_address |
+ | N1 | R1 | 16 |
+ | R1 | - | 16 |
+
+ When updating places
+ | osm | class | type | name | geometry |
+ | N1 | place | town | foo | 9 |
+ Then placex contains
+ | object | linked_place_id | rank_address |
+ | N1 | R1 | 16 |
+ | R1 | - | 16 |
+
+
+ Scenario: Invalidate surrounding place nodes when place type changes
+ Given the grid
+ | 1 | | | 2 |
+ | | 8 | 9 | |
+ | 4 | | | 3 |
+ And the places
+ | osm | class | type | name | admin | geometry |
+ | R1 | boundary | administrative | foo | 8 | (1,2,3,4,1) |
+ And the places
+ | osm | class | type | name | geometry |
+ | N1 | place | town | foo | 9 |
+ | N2 | place | city | bar | 8 |
+ And the relations
+ | id | members |
+ | 1 | N1:label |
+ When importing
+ Then placex contains
+ | object | linked_place_id | rank_address |
+ | N1 | R1 | 16 |
+ | R1 | - | 16 |
+ | N2 | - | 18 |
+
+ When updating places
+ | osm | class | type | name | geometry |
+ | N1 | place | suburb | foo | 9 |
+ Then placex contains
+ | object | linked_place_id | rank_address |
+ | N1 | R1 | 20 |
+ | R1 | - | 20 |
+ | N2 | - | 16 |
Test all naming related issues in updates
Scenario: Delete postcode from postcode boundaries without ref
+ Given the grid with origin DE
+ | 1 | 2 |
+ | 4 | 3 |
Given the places
| osm | class | type | postcode | geometry |
- | R1 | boundary | postal_code | 12345 | poly-area:0.5 |
+ | R1 | boundary | postal_code | 12345 | (1,2,3,4,1) |
When importing
And sending search query "12345"
Then results contain
| 0 | R1 |
When updating places
| osm | class | type | geometry |
- | R1 | boundary | postal_code | poly-area:0.5 |
+ | R1 | boundary | postal_code | (1,2,3,4,1) |
Then placex has no entry for R1
Feature: Update parenting of objects
Scenario: POI inside building inherits addr:street change
- Given the scene building-on-street-corner
+ Given the grid
+ | 10 | | | | | | | 11 |
+ | | | 5 | | | 6 | | |
+ | | | | | | | | |
+ | | | | | 1 | | | |
+ | 12 | | 8 | | | 7 | | |
And the named places
- | osm | class | type | geometry |
- | N1 | amenity | bank | :n-inner |
- | N2 | shop | bakery | :n-edge-NS |
- | N3 | shop | supermarket| :n-edge-WE |
+ | osm | class | type |
+ | N1 | amenity | bank |
And the places
| osm | class | type | street | housenr | geometry |
- | W1 | building | yes | nowhere | 3 | :w-building |
+ | W1 | building | yes | nowhere | 3 | (5,6,7,8,5) |
And the places
| osm | class | type | name | geometry |
- | W2 | highway | primary | bar | :w-WE |
- | W3 | highway | residential | foo | :w-NS |
+ | W2 | highway | primary | bar | 10,11 |
+ | W3 | highway | residential | foo | 10,12 |
When importing
Then placex contains
| object | parent_place_id | housenumber |
| W1 | W2 | 3 |
- | N1 | W3 | 3 |
- | N2 | W3 | 3 |
- | N3 | W2 | 3 |
+ | N1 | W2 | 3 |
When updating places
| osm | class | type | street | addr_place | housenr | geometry |
- | W1 | building | yes | foo | nowhere | 3 | :w-building |
+ | W1 | building | yes | foo | nowhere | 3 | (5,6,7,8,5) |
And updating places
- | osm | class | type | name | geometry |
- | N3 | shop | supermarket| well | :n-edge-WE |
+ | osm | class | type | name |
+ | N1 | amenity | bank | well |
Then placex contains
| object | parent_place_id | housenumber |
| W1 | W3 | 3 |
| N1 | W3 | 3 |
- | N2 | W3 | 3 |
- | N3 | W3 | 3 |
Scenario: Housenumber is reparented when street gets name matching addr:street
Given the places
| osm | class | type | addr+postcode | addr+housenumber | geometry |
| N34 | place | house | 01982 | 111 |country:de |
- | N35 | place | house | 01982 | 5 |country:ch |
+ | N35 | place | house | 01982 | 5 |country:fr |
When importing
And marking for delete N34
And updating postcodes
Then location_postcode contains exactly
| country | postcode | geometry |
- | ch | 01982 | country:ch |
+ | fr | 01982 | country:fr |
And there are word tokens for postcodes 01982
Scenario: Updating a postcode is reflected in postcode table
Testing simple updating functionality
Scenario: Do delete small boundary features
+ Given the 1.0 grid
+ | 1 | 2 |
+ | 4 | 3 |
Given the places
| osm | class | type | admin | geometry |
- | R1 | boundary | administrative | 3 | poly-area:1.0 |
+ | R1 | boundary | administrative | 3 | (1,2,3,4,1) |
When importing
Then placex contains
| object | rank_search |
Then placex has no entry for R1
Scenario: Do not delete large boundary features
+ Given the 2.0 grid
+ | 1 | 2 |
+ | 4 | 3 |
Given the places
| osm | class | type | admin | geometry |
- | R1 | boundary | administrative | 3 | poly-area:5.0 |
+ | R1 | boundary | administrative | 3 | (1,2,3,4,1) |
When importing
Then placex contains
| object | rank_search |
| R1 | 6 |
When marking for delete R1
- Then placex contains
+ Then placex contains
| object | rank_search |
| R1 | 6 |
Scenario: Do delete large features of low rank
+ Given the 2.0 grid
+ | 1 | 2 |
+ | 4 | 3 |
Given the named places
| osm | class | type | geometry |
- | W1 | place | house | poly-area:5.0 |
- | R1 | natural | wood | poly-area:5.0 |
- | R2 | highway | residential | poly-area:5.0 |
+ | W1 | place | house | (1,2,3,4,1) |
+ | R1 | natural | wood | (1,2,3,4,1) |
+ | R2 | highway | residential | (1,2,3,4,1) |
When importing
Then placex contains
| object | rank_address |
Scenario: remove postcode place when house number is added
Given the places
| osm | class | type | postcode | geometry |
- | N3 | place | postcode | 12345 | 1 -1 |
+ | N3 | place | postcode | 12345 | country:de |
When importing
- Then placex contains
- | object | class | type |
- | N3 | place | postcode |
+ Then placex has no entry for N3
When updating places
| osm | class | type | postcode | housenr | geometry |
- | N3 | place | house | 12345 | 13 | 1 -1 |
+ | N3 | place | house | 12345 | 13 | country:de |
Then placex contains
| object | class | type |
| N3 | place | house |
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
from pathlib import Path
from behave import *
context.nominatim.setup_api_db()
elif 'UNKNOWNDB' in context.tags:
context.nominatim.setup_unknown_db()
- context.scene = None
def after_scenario(context, scenario):
if 'DB' in context.tags:
context.nominatim.teardown_db(context)
+
+
+def before_tag(context, tag):
+ if tag == 'fail-legacy':
+ if context.config.userdata['TOKENIZER'] == 'legacy':
+ context.scenario.skip("Not implemented in legacy tokenizer")
Then place contains
| object | addr+country | name |
| R1 | XX | 'name' : 'Foo' |
-
- Scenario: Country boundary names are extended when country_code known
- When loading osm data
- """
- n200 Tamenity=prison x0 y0
- n201 x0 y0.0001
- n202 x0.0001 y0.0001
- n203 x0.0001 y0
- """
- And updating osm data
- """
- w1 Nn200,n201,n202,n203,n200
- r1 Ttype=boundary,boundary=administrative,name=Foo,country_code=ch,admin_level=2 Mw1@
- """
- Then place contains
- | object | addr+country | name+name:de | name+name |
- | R1 | ch | Schweiz | Foo |
-
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once 'SebastianBergmann/CodeCoverage/autoload.php';
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Collection of assertion functions used for the steps.
"""
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Collection of aliases for various world coordinates.
+"""
+
+ALIASES = {
+# Country aliases
+'AD': (1.58972, 42.54241),
+'AE': (54.61589, 24.82431),
+'AF': (65.90264, 34.84708),
+'AG': (-61.72430, 17.069),
+'AI': (-63.10571, 18.25461),
+'AL': (19.84941, 40.21232),
+'AM': (44.64229, 40.37821),
+'AO': (16.21924, -12.77014),
+'AQ': (44.99999, -75.65695),
+'AR': (-61.10759, -34.37615),
+'AS': (-170.68470, -14.29307),
+'AT': (14.25747, 47.36542),
+'AU': (138.23155, -23.72068),
+'AW': (-69.98255, 12.555),
+'AX': (19.91839, 59.81682),
+'AZ': (48.38555, 40.61639),
+'BA': (17.18514, 44.25582),
+'BB': (-59.53342, 13.19),
+'BD': (89.75989, 24.34205),
+'BE': (4.90078, 50.34682),
+'BF': (-0.56743, 11.90471),
+'BG': (24.80616, 43.09859),
+'BH': (50.52032, 25.94685),
+'BI': (29.54561, -2.99057),
+'BJ': (2.70062, 10.02792),
+'BL': (-62.79349, 17.907),
+'BM': (-64.77406, 32.30199),
+'BN': (114.52196, 4.28638),
+'BO': (-62.02473, -17.77723),
+'BQ': (-63.14322, 17.566),
+'BR': (-45.77065, -9.58685),
+'BS': (-77.60916, 23.8745),
+'BT': (90.01350, 27.28137),
+'BV': (3.35744, -54.4215),
+'BW': (23.51505, -23.48391),
+'BY': (26.77259, 53.15885),
+'BZ': (-88.63489, 16.33951),
+'CA': (-107.74817, 67.12612),
+'CC': (96.84420, -12.01734),
+'CD': (24.09544, -1.67713),
+'CF': (22.58701, 5.98438),
+'CG': (15.78875, 0.40388),
+'CH': (7.65705, 46.57446),
+'CI': (-6.31190, 6.62783),
+'CK': (-159.77835, -21.23349),
+'CL': (-70.41790, -53.77189),
+'CM': (13.26022, 5.94519),
+'CN': (96.44285, 38.04260),
+'CO': (-72.52951, 2.45174),
+'CR': (-83.83314, 9.93514),
+'CU': (-80.81673, 21.88852),
+'CV': (-24.50810, 14.929),
+'CW': (-68.96409, 12.1845),
+'CX': (105.62411, -10.48417),
+'CY': (32.95922, 35.37010),
+'CZ': (16.32098, 49.50692),
+'DE': (9.30716, 50.21289),
+'DJ': (42.96904, 11.41542),
+'DK': (9.18490, 55.98916),
+'DM': (-61.00358, 15.65470),
+'DO': (-69.62855, 18.58841),
+'DZ': (4.24749, 25.79721),
+'EC': (-77.45831, -0.98284),
+'EE': (23.94288, 58.43952),
+'EG': (28.95293, 28.17718),
+'EH': (-13.69031, 25.01241),
+'ER': (39.01223, 14.96033),
+'ES': (-2.59110, 38.79354),
+'ET': (38.61697, 7.71399),
+'FI': (26.89798, 63.56194),
+'FJ': (177.91853, -17.74237),
+'FK': (-58.99044, -51.34509),
+'FM': (151.95358, 8.5045),
+'FO': (-6.60483, 62.10000),
+'FR': (0.28410, 47.51045),
+'GA': (10.81070, -0.07429),
+'GB': (-0.92823, 52.01618),
+'GD': (-61.64524, 12.191),
+'GE': (44.16664, 42.00385),
+'GF': (-53.46524, 3.56188),
+'GG': (-2.50580, 49.58543),
+'GH': (-0.46348, 7.16051),
+'GI': (-5.32053, 36.11066),
+'GL': (-33.85511, 74.66355),
+'GM': (-16.40960, 13.25),
+'GN': (-13.83940, 10.96291),
+'GP': (-61.68712, 16.23049),
+'GQ': (10.23973, 1.43119),
+'GR': (23.17850, 39.06206),
+'GS': (-36.49430, -54.43067),
+'GT': (-90.74368, 15.20428),
+'GU': (144.73362, 13.44413),
+'GW': (-14.83525, 11.92486),
+'GY': (-58.45167, 5.73698),
+'HK': (114.18577, 22.34923),
+'HM': (73.68230, -53.22105),
+'HN': (-86.95414, 15.23820),
+'HR': (17.49966, 45.52689),
+'HT': (-73.51925, 18.32492),
+'HU': (20.35362, 47.51721),
+'ID': (123.34505, -0.83791),
+'IE': (-9.00520, 52.87725),
+'IL': (35.46314, 32.86165),
+'IM': (-4.86740, 54.023),
+'IN': (88.67620, 27.86155),
+'IO': (71.42743, -6.14349),
+'IQ': (42.58109, 34.26103),
+'IR': (56.09355, 30.46751),
+'IS': (-17.51785, 64.71687),
+'IT': (10.42639, 44.87904),
+'JE': (-2.19261, 49.12458),
+'JM': (-76.84020, 18.3935),
+'JO': (36.55552, 30.75741),
+'JP': (138.72531, 35.92099),
+'KE': (36.90602, 1.08512),
+'KG': (76.15571, 41.66497),
+'KH': (104.31901, 12.95555),
+'KI': (173.63353, 0.139),
+'KM': (44.31474, -12.241),
+'KN': (-62.69379, 17.2555),
+'KP': (126.65575, 39.64575),
+'KR': (127.27740, 36.41388),
+'KW': (47.30684, 29.69180),
+'KY': (-81.07455, 19.29949),
+'KZ': (72.00811, 49.88855),
+'LA': (102.44391, 19.81609),
+'LB': (35.48464, 33.41766),
+'LC': (-60.97894, 13.891),
+'LI': (9.54693, 47.15934),
+'LK': (80.38520, 8.41649),
+'LR': (-11.16960, 4.04122),
+'LS': (28.66984, -29.94538),
+'LT': (24.51735, 55.49293),
+'LU': (6.08649, 49.81533),
+'LV': (23.51033, 56.67144),
+'LY': (15.36841, 28.12177),
+'MA': (-4.03061, 33.21696),
+'MC': (7.47743, 43.62917),
+'MD': (29.61725, 46.66517),
+'ME': (19.72291, 43.02441),
+'MF': (-63.06666, 18.08102),
+'MG': (45.86378, -20.50245),
+'MH': (171.94982, 5.983),
+'MK': (21.42108, 41.08980),
+'ML': (-1.93310, 16.46993),
+'MM': (95.54624, 21.09620),
+'MN': (99.81138, 48.18615),
+'MO': (113.56441, 22.16209),
+'MP': (145.21345, 14.14902),
+'MQ': (-60.81128, 14.43706),
+'MR': (-9.42324, 22.59251),
+'MS': (-62.19455, 16.745),
+'MT': (14.38363, 35.94467),
+'MU': (57.55121, -20.41),
+'MV': (73.39292, 4.19375),
+'MW': (33.95722, -12.28218),
+'MX': (-105.89221, 25.86826),
+'MY': (112.71154, 2.10098),
+'MZ': (37.58689, -13.72682),
+'NA': (16.68569, -21.46572),
+'NC': (164.95322, -20.38889),
+'NE': (10.06041, 19.08273),
+'NF': (167.95718, -29.0645),
+'NG': (10.17781, 10.17804),
+'NI': (-85.87974, 13.21715),
+'NL': (-68.57062, 12.041),
+'NO': (23.11556, 70.09934),
+'NP': (83.36259, 28.13107),
+'NR': (166.93479, -0.5275),
+'NU': (-169.84873, -19.05305),
+'NZ': (167.97209, -45.13056),
+'OM': (56.86055, 20.47413),
+'PA': (-79.40160, 8.80656),
+'PE': (-78.66540, -7.54711),
+'PF': (-145.05719, -16.70862),
+'PG': (146.64600, -7.37427),
+'PH': (121.48359, 15.09965),
+'PK': (72.11347, 31.14629),
+'PL': (17.88136, 52.77182),
+'PM': (-56.19515, 46.78324),
+'PN': (-130.10642, -25.06955),
+'PR': (-65.88755, 18.37169),
+'PS': (35.39801, 32.24773),
+'PT': (-8.45743, 40.11154),
+'PW': (134.49645, 7.3245),
+'PY': (-59.51787, -22.41281),
+'QA': (51.49903, 24.99816),
+'RE': (55.77345, -21.36388),
+'RO': (26.37632, 45.36120),
+'RS': (20.40371, 44.56413),
+'RU': (116.44060, 59.06780),
+'RW': (29.57882, -1.62404),
+'SA': (47.73169, 22.43790),
+'SB': (164.63894, -10.23606),
+'SC': (46.36566, -9.454),
+'SD': (28.14720, 14.56423),
+'SE': (15.68667, 60.35568),
+'SG': (103.84187, 1.304),
+'SH': (-12.28155, -37.11546),
+'SI': (14.04738, 46.39085),
+'SJ': (15.27552, 79.23365),
+'SK': (20.41603, 48.86970),
+'SL': (-11.47773, 8.78156),
+'SM': (12.46062, 43.94279),
+'SN': (-15.37111, 14.99477),
+'SO': (46.93383, 9.34094),
+'SR': (-55.42864, 4.56985),
+'SS': (28.13573, 8.50933),
+'ST': (6.61025, 0.2215),
+'SV': (-89.36665, 13.43072),
+'SX': (-63.15393, 17.9345),
+'SY': (38.15513, 35.34221),
+'SZ': (31.78263, -26.14244),
+'TC': (-71.32554, 21.35),
+'TD': (17.42092, 13.46223),
+'TF': (137.5, -67.5),
+'TG': (1.06983, 7.87677),
+'TH': (102.00877, 16.42310),
+'TJ': (71.91349, 39.01527),
+'TK': (-171.82603, -9.20990),
+'TL': (126.22520, -8.72636),
+'TM': (57.71603, 39.92534),
+'TN': (9.04958, 34.84199),
+'TO': (-176.99320, -23.11104),
+'TR': (32.82002, 39.86350),
+'TT': (-60.70793, 11.1385),
+'TV': (178.77499, -9.41685),
+'TW': (120.30074, 23.17002),
+'TZ': (33.53892, -5.01840),
+'UA': (33.44335, 49.30619),
+'UG': (32.96523, 2.08584),
+'UM': (-169.50993, 16.74605),
+'US': (-116.39535, 40.71379),
+'UY': (-56.46505, -33.62658),
+'UZ': (61.35529, 42.96107),
+'VA': (12.33197, 42.04931),
+'VC': (-61.09905, 13.316),
+'VE': (-64.88323, 7.69849),
+'VG': (-64.62479, 18.419),
+'VI': (-64.88950, 18.32263),
+'VN': (104.20179, 10.27644),
+'VU': (167.31919, -15.88687),
+'WF': (-176.20781, -13.28535),
+'WS': (-172.10966, -13.85093),
+'YE': (45.94562, 16.16338),
+'YT': (44.93774, -12.60882),
+'ZA': (23.19488, -30.43276),
+'ZM': (26.38618, -14.39966),
+'ZW': (30.12419, -19.86907)
+}
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
from pathlib import Path
import os
+from steps.geometry_alias import ALIASES
+
class GeometryFactory:
- """ Provides functions to create geometries from scenes and data grids.
+ """ Provides functions to create geometries from coordinates and data grids.
"""
def __init__(self):
- defpath = Path(__file__) / '..' / '..' / '..' / 'scenes' / 'data'
- self.scene_path = os.environ.get('SCENE_PATH', defpath.resolve())
- self.scene_cache = {}
self.grid = {}
- def parse_geometry(self, geom, scene):
+ def parse_geometry(self, geom):
""" Create a WKT SQL term for the given geometry.
The function understands the following formats:
- [<scene>]:<name>
- Geometry from a scene. If the scene is omitted, use the
- default scene.
+ country:<country code>
+ Point geoemtry guaranteed to be in the given country
<P>
Point geometry
<P>,...,<P>
number. In the latter case it must refer to a point in
a previously defined grid.
"""
- if geom.find(':') >= 0:
- return "ST_SetSRID({}, 4326)".format(self.get_scene_geometry(scene, geom))
+ if geom.startswith('country:'):
+ ccode = geom[8:].upper()
+ assert ccode in ALIASES, "Geometry error: unknown country " + ccode
+ return "ST_SetSRID('POINT({} {})'::geometry, 4326)".format(*ALIASES[ccode])
if geom.find(',') < 0:
out = "POINT({})".format(self.mk_wkt_point(geom))
return "ST_SetSRID('{}'::geometry, 4326)".format(out)
+
def mk_wkt_point(self, point):
""" Parse a point description.
The point may either consist of 'x y' cooordinates or a number
assert pt is not None, "Scenario error: Point '{}' not found in grid".format(geom)
return "{} {}".format(*pt)
+
def mk_wkt_points(self, geom):
""" Parse a list of points.
The list must be a comma-separated list of points. Points
"""
return ','.join([self.mk_wkt_point(x) for x in geom.split(',')])
- def get_scene_geometry(self, default_scene, name):
- """ Load the geometry from a scene.
- """
- geoms = []
- for obj in name.split('+'):
- oname = obj.strip()
- if oname.startswith(':'):
- assert default_scene is not None, "Scenario error: You need to set a scene"
- defscene = self.load_scene(default_scene)
- wkt = defscene[oname[1:]]
- else:
- scene, obj = oname.split(':', 2)
- scene_geoms = self.load_scene(scene)
- wkt = scene_geoms[obj]
-
- geoms.append("'{}'::geometry".format(wkt))
-
- if len(geoms) == 1:
- return geoms[0]
-
- return 'ST_LineMerge(ST_Collect(ARRAY[{}]))'.format(','.join(geoms))
-
- def load_scene(self, name):
- """ Load a scene from a file.
- """
- if name in self.scene_cache:
- return self.scene_cache[name]
-
- scene = {}
- with open(Path(self.scene_path) / "{}.wkt".format(name), 'r') as fd:
- for line in fd:
- if line.strip():
- obj, wkt = line.split('|', 2)
- scene[obj.strip()] = wkt.strip()
- self.scene_cache[name] = scene
- return scene
-
- def set_grid(self, lines, grid_step):
+ def set_grid(self, lines, grid_step, origin=(0.0, 0.0)):
""" Replace the grid with one from the given lines.
"""
self.grid = {}
- y = 0
+ y = origin[1]
for line in lines:
- x = 0
+ x = origin[0]
for pt_id in line:
if pt_id.isdigit():
self.grid[int(pt_id)] = (x, y)
x += grid_step
y += grid_step
+
def grid_node(self, nodeid):
""" Get the coordinates for the given grid node.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Classes wrapping HTTP responses from the Nominatim API.
"""
self.header['json_func'] = m.group(1)
self.result = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(code)
if isinstance(self.result, OrderedDict):
- self.result = [self.result]
+ if 'error' in self.result:
+ self.result = []
+ else:
+ self.result = [self.result]
def _parse_geojson(self):
self._parse_json()
- if 'error' in self.result[0]:
- self.result = []
- else:
+ if self.result:
self.result = list(map(_geojson_result_to_json_result, self.result[0]['features']))
def _parse_geocodejson(self):
elif value.startswith("^"):
assert re.fullmatch(value, self.result[idx][field]), \
BadRowValueAssert(self, idx, field, value)
+ elif isinstance(self.result[idx][field], OrderedDict):
+ assert self.result[idx][field] == eval('{' + value + '}'), \
+ BadRowValueAssert(self, idx, field, value)
else:
assert str(self.result[idx][field]) == str(value), \
BadRowValueAssert(self, idx, field, value)
"\nBad value for row {} field '{}' in address. Expected: {}, got: {}.\nFull address: {}"""\
.format(idx, field, value, address[field], json.dumps(address, indent=4))
- def match_row(self, row):
+ def match_row(self, row, context=None):
""" Match the result fields against the given behave table row.
"""
if 'ID' in row.headings:
assert self.result[i]['osm_type'] in (OSM_TYPE[value[0]], value[0]), \
BadRowValueAssert(self, i, 'osm_type', value)
elif name == 'centroid':
- lon, lat = value.split(' ')
+ if ' ' in value:
+ lon, lat = value.split(' ')
+ elif context is not None:
+ lon, lat = context.osm.grid_node(int(value))
+ else:
+ raise RuntimeError("Context needed when using grid coordinates")
self.assert_field(i, 'lat', float(lat))
self.assert_field(i, 'lon', float(lon))
else:
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
from pathlib import Path
import sys
import tempfile
from nominatim import cli
from nominatim.config import Configuration
-from nominatim.db.connection import _Connection
+from nominatim.db.connection import Connection
from nominatim.tools import refresh
from nominatim.tokenizer import factory as tokenizer_factory
from steps.utils import run_script
dbargs['user'] = self.db_user
if self.db_pass:
dbargs['password'] = self.db_pass
- conn = psycopg2.connect(connection_factory=_Connection, **dbargs)
+ conn = psycopg2.connect(connection_factory=Connection, **dbargs)
return conn
def next_code_coverage_file(self):
self.test_env = dict(self.default_config)
self.test_env['NOMINATIM_DATABASE_DSN'] = dsn
+ self.test_env['NOMINATIM_LANGUAGES'] = 'en,de,fr,ja'
self.test_env['NOMINATIM_FLATNODE_FILE'] = ''
self.test_env['NOMINATIM_IMPORT_STYLE'] = 'full'
self.test_env['NOMINATIM_USE_US_TIGER_DATA'] = 'yes'
self.template_db_done = True
- if self._reuse_or_drop_db(self.template_db):
- return
-
self.write_nominatim_config(self.template_db)
- try:
- # execute nominatim import on an empty file to get the right tables
- with tempfile.NamedTemporaryFile(dir='/tmp', suffix='.xml') as fd:
- fd.write(b'<osm version="0.6"></osm>')
- fd.flush()
- self.run_nominatim('import', '--osm-file', fd.name,
- '--osm2pgsql-cache', '1',
- '--ignore-errors')
- except:
- self.db_drop_database(self.template_db)
- raise
+ if not self._reuse_or_drop_db(self.template_db):
+ try:
+ # execute nominatim import on an empty file to get the right tables
+ with tempfile.NamedTemporaryFile(dir='/tmp', suffix='.xml') as fd:
+ fd.write(b'<osm version="0.6"></osm>')
+ fd.flush()
+ self.run_nominatim('import', '--osm-file', fd.name,
+ '--osm2pgsql-cache', '1',
+ '--ignore-errors',
+ '--offline', '--index-noanalyse')
+ except:
+ self.db_drop_database(self.template_db)
+ raise
+
+ self.run_nominatim('refresh', '--functions')
def setup_api_db(self):
self.run_nominatim('add-data', '--tiger-data', str((testdata / 'tiger').resolve()))
self.run_nominatim('freeze')
- if self.tokenizer != 'icu':
+ if self.tokenizer == 'legacy':
phrase_file = str((testdata / 'specialphrases_testdb.sql').resolve())
run_script(['psql', '-d', self.api_test_db, '-f', phrase_file])
else:
self.db_drop_database(self.api_test_db)
raise
- tokenizer_factory.create_tokenizer(self.get_test_config(), init_db=False)
+ tokenizer_factory.get_tokenizer_for_db(self.get_test_config())
def setup_unknown_db(self):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Helper classes for filling the place table.
"""
self._add_hstore('address', 'country', value)
def _set_key_geometry(self, value):
- self.geometry = self.context.osm.parse_geometry(value, self.context.scene)
+ self.geometry = self.context.osm.parse_geometry(value)
assert self.geometry is not None, "Bad geometry: {}".format(value)
def _add_hstore(self, column, key, value):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
""" Steps that run queries against the API.
Queries may either be run directly via PHP using the query script
context.response = ReverseResponse(outp, fmt or 'xml', status)
+@when(u'sending (?P<fmt>\S+ )?reverse point (?P<nodeid>.+)')
+def website_reverse_request(context, fmt, nodeid):
+ params = {}
+ if fmt and fmt.strip() == 'debug':
+ params['debug'] = '1'
+ params['lon'], params['lat'] = (f'{c:f}' for c in context.osm.grid_node(int(nodeid)))
+
+
+ outp, status = send_api_query('reverse', params, fmt, context)
+
+ context.response = ReverseResponse(outp, fmt or 'xml', status)
+
+
+
@when(u'sending (?P<fmt>\S+ )?details query for (?P<query>.*)')
def website_details_request(context, fmt, query):
params = {}
context.execute_steps("then at least 1 result is returned")
for line in context.table:
- context.response.match_row(line)
+ context.response.match_row(line, context=context)
@then(u'result (?P<lid>\d+ )?has (?P<neg>not )?attributes (?P<attrs>.*)')
def validate_attributes(context, lid, neg, attrs):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
import logging
from itertools import chain
def check_database_integrity(context):
""" Check some generic constraints on the tables.
"""
- # place_addressline should not have duplicate (place_id, address_place_id)
- cur = context.db.cursor()
- cur.execute("""SELECT count(*) FROM
- (SELECT place_id, address_place_id, count(*) as c
- FROM place_addressline GROUP BY place_id, address_place_id) x
- WHERE c > 1""")
- assert cur.fetchone()[0] == 0, "Duplicates found in place_addressline"
+ with context.db.cursor() as cur:
+ # place_addressline should not have duplicate (place_id, address_place_id)
+ cur.execute("""SELECT count(*) FROM
+ (SELECT place_id, address_place_id, count(*) as c
+ FROM place_addressline GROUP BY place_id, address_place_id) x
+ WHERE c > 1""")
+ assert cur.fetchone()[0] == 0, "Duplicates found in place_addressline"
+
+ # word table must not have empty word_tokens
+ if context.nominatim.tokenizer != 'legacy':
+ cur.execute("SELECT count(*) FROM word WHERE word_token = ''")
+ assert cur.fetchone()[0] == 0, "Empty word tokens found in word table"
+
################################ GIVEN ##################################
def import_and_index_data_from_place_table(context):
""" Import data previously set up in the place table.
"""
- nctx = context.nominatim
-
- tokenizer = tokenizer_factory.create_tokenizer(nctx.get_test_config())
- context.nominatim.copy_from_place(context.db)
-
- # XXX use tool function as soon as it is ported
- with context.db.cursor() as cur:
- with (context.nominatim.src_dir / 'lib-sql' / 'postcode_tables.sql').open('r') as fd:
- cur.execute(fd.read())
- cur.execute("""
- INSERT INTO location_postcode
- (place_id, indexed_status, country_code, postcode, geometry)
- SELECT nextval('seq_place'), 1, country_code,
- upper(trim (both ' ' from address->'postcode')) as pc,
- ST_Centroid(ST_Collect(ST_Centroid(geometry)))
- FROM placex
- WHERE address ? 'postcode' AND address->'postcode' NOT SIMILAR TO '%(,|;)%'
- AND geometry IS NOT null
- GROUP BY country_code, pc""")
-
- # Call directly as the refresh function does not include postcodes.
- indexer.LOG.setLevel(logging.ERROR)
- indexer.Indexer(context.nominatim.get_libpq_dsn(), tokenizer, 1).index_full(analyse=False)
+ context.nominatim.run_nominatim('import', '--continue', 'load-data',
+ '--index-noanalyse', '-q',
+ '--offline')
check_database_integrity(context)
+ # Remove the output of the input, when all was right. Otherwise it will be
+ # output when there are errors that had nothing to do with the import
+ # itself.
+ context.log_capture.buffer.clear()
+
@when("updating places")
def update_place_table(context):
""" Update the place table with the given data. Also runs all triggers
context.nominatim.reindex_placex(context.db)
check_database_integrity(context)
+ # Remove the output of the input, when all was right. Otherwise it will be
+ # output when there are errors that had nothing to do with the import
+ # itself.
+ context.log_capture.buffer.clear()
+
+
@when("updating postcodes")
def update_postcodes(context):
""" Rerun the calculation of postcodes.
context.nominatim.reindex_placex(context.db)
+ # Remove the output of the input, when all was right. Otherwise it will be
+ # output when there are errors that had nothing to do with the import
+ # itself.
+ context.log_capture.buffer.clear()
+
################################ THEN ##################################
@then("(?P<table>placex|place) contains(?P<exact> exactly)?")
for row in context.table:
db_row = results.get((row['country'],row['postcode']))
assert db_row is not None, \
- "Missing row for country '{r['country']}' postcode '{r['postcode']}'.".format(r=row)
+ f"Missing row for country '{row['country']}' postcode '{row['postcode']}'."
db_row.assert_row(row, ('country', 'postcode'))
plist.sort()
with context.db.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
- if nctx.tokenizer == 'icu':
+ if nctx.tokenizer != 'legacy':
cur.execute("SELECT word FROM word WHERE type = 'P' and word = any(%s)",
(plist,))
else:
with context.db.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
for row in context.table:
pid = NominatimID(row['object']).get_place_id(cur)
- apid = NominatimID(row['address']).get_place_id(cur)
- cur.execute(""" SELECT * FROM place_addressline
- WHERE place_id = %s AND address_place_id = %s""",
- (pid, apid))
- assert cur.rowcount == 0, \
- "Row found for place %s and address %s" % (row['object'], row['address'])
+ apid = NominatimID(row['address']).get_place_id(cur, allow_empty=True)
+ if apid is not None:
+ cur.execute(""" SELECT * FROM place_addressline
+ WHERE place_id = %s AND address_place_id = %s""",
+ (pid, apid))
+ assert cur.rowcount == 0, \
+ "Row found for place %s and address %s" % (row['object'], row['address'])
@then("W(?P<oid>\d+) expands to(?P<neg> no)? interpolation")
def check_location_property_osmline(context, oid, neg):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
import tempfile
import random
import os
from nominatim.tools.exec_utils import run_osm2pgsql
+from geometry_alias import ALIASES
+
def get_osm2pgsql_options(nominatim_env, fname, append):
return dict(import_file=fname,
osm2pgsql=str(nominatim_env.build_dir / 'osm2pgsql' / 'osm2pgsql'),
return fd.name
-@given(u'the scene (?P<scene>.+)')
-def set_default_scene(context, scene):
- context.scene = scene
-
-@given(u'the ([0-9.]+ )?grid')
-def define_node_grid(context, grid_step):
+@given(u'the ([0-9.]+ )?grid(?: with origin (?P<origin>.*))?')
+def define_node_grid(context, grid_step, origin):
"""
Define a grid of node positions.
Use a table to define the grid. The nodes must be integer ids. Optionally
else:
grid_step = 0.00001
+ if origin:
+ if ',' in origin:
+ # TODO coordinate
+ coords = origin.split(',')
+ if len(coords) != 2:
+ raise RuntimeError('Grid origin expects orgin with x,y coordinates.')
+ origin = (float(coords[0]), float(coords[1]))
+ elif origin in ALIASES:
+ origin = ALIASES[origin]
+ else:
+ raise RuntimeError('Grid origin must be either coordinate or alias.')
+ else:
+ origin = (0.0, 0.0)
+
context.osm.set_grid([context.table.headings] + [list(h) for h in context.table],
- grid_step)
+ grid_step, origin)
@when(u'loading osm data')
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Functions to facilitate accessing and comparing the content of DB tables.
"""
','.join(['*'] + (extra_columns or [])), table)
cur.execute(query, (pid, ))
- def get_place_id(self, cur):
+ def get_place_id(self, cur, allow_empty=False):
""" Look up the place id for the ID. Throws an assertion if the ID
is not unique.
"""
self.query_osm_id(cur, "SELECT place_id FROM placex WHERE {}")
+ if cur.rowcount == 0 and allow_empty:
+ return None
+
assert cur.rowcount == 1, \
"Place ID {!s} not unique. Found {} entries.".format(self, cur.rowcount)
ST_SetSRID('{geomtxt}'::geometry, 4326))""".format(**self.db_row))
return cur.fetchone()[0]
- x, y = expected.split(' ')
+ if ' ' in expected:
+ x, y = expected.split(' ')
+ else:
+ x, y = self.context.osm.grid_node(int(expected))
+
return Almost(float(x)) == self.db_row['cx'] and Almost(float(y)) == self.db_row['cy']
def _has_geometry(self, expected):
- geom = self.context.osm.parse_geometry(expected, self.context.scene)
+ geom = self.context.osm.parse_geometry(expected)
with self.context.db.cursor() as cur:
cur.execute("""SELECT ST_Equals(ST_SnapToGrid({}, 0.00001, 0.00001),
ST_SnapToGrid(ST_SetSRID('{}'::geometry, 4326), 0.00001, 0.00001))""".format(
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Various smaller helps for step execution.
"""
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
'city' => 'London',
'state_district' => 'Greater London',
'state' => 'England',
+ 'ISO3166-2-lvl4' => 'GB-ENG',
+ 'ISO3166-2-lvl6' => 'GB-LND',
'postcode' => 'SW1A 2AA',
'country' => 'United Kingdom',
'country_code' => 'gb'
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$this->assertEquals($sQuery, $aRes[0]);
}
}
-
- private function closestHouseNumberEvenOddOther($startnumber, $endnumber, $fraction, $aExpected)
- {
- foreach (array('even', 'odd', 'other') as $itype) {
- $this->assertEquals(
- $aExpected[$itype],
- closestHouseNumber(array(
- 'startnumber' => $startnumber,
- 'endnumber' => $endnumber,
- 'fraction' => $fraction,
- 'interpolationtype' => $itype
- )),
- "$startnumber => $endnumber, $fraction, $itype"
- );
- }
- }
-
- public function testClosestHouseNumber()
- {
- $this->closestHouseNumberEvenOddOther(50, 100, 0.5, array('even' => 76, 'odd' => 75, 'other' => 75));
- // upper bound
- $this->closestHouseNumberEvenOddOther(50, 100, 1.5, array('even' => 100, 'odd' => 100, 'other' => 100));
- // lower bound
- $this->closestHouseNumberEvenOddOther(50, 100, -0.5, array('even' => 50, 'odd' => 50, 'other' => 50));
- // fraction 0
- $this->closestHouseNumberEvenOddOther(50, 100, 0, array('even' => 50, 'odd' => 51, 'other' => 50));
- // start == end
- $this->closestHouseNumberEvenOddOther(50, 50, 0.5, array('even' => 50, 'odd' => 50, 'other' => 50));
- }
}
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$this->assertSame('foo', $oParams->getSet('val1', array('foo', 'bar')));
$this->assertSame(false, $oParams->getSet('val2', array('foo', 'bar')));
- $this->assertSame(0, $oParams->getSet('val3', array('foo', 'bar')));
+ $this->assertSame(false, $oParams->getSet('val3', array('foo', 'bar')));
}
$oParams = new ParameterParser(array('accept-language' => ''));
$this->assertSame(array(
'name:default' => 'name:default',
+ '_place_name:default' => '_place_name:default',
'name' => 'name',
- 'brand' => 'brand',
- 'official_name:default' => 'official_name:default',
- 'short_name:default' => 'short_name:default',
- 'official_name' => 'official_name',
- 'short_name' => 'short_name',
- 'ref' => 'ref',
- 'type' => 'type'
- ), $oParams->getPreferredLanguages('default'));
+ '_place_name' => '_place_name'
+ ), array_slice($oParams->getPreferredLanguages('default'), 0, 4));
$oParams = new ParameterParser(array('accept-language' => 'de,en'));
$this->assertSame(array(
'name:de' => 'name:de',
+ '_place_name:de' => '_place_name:de',
'name:en' => 'name:en',
+ '_place_name:en' => '_place_name:en',
'name' => 'name',
- 'brand' => 'brand',
- 'official_name:de' => 'official_name:de',
- 'short_name:de' => 'short_name:de',
- 'official_name:en' => 'official_name:en',
- 'short_name:en' => 'short_name:en',
- 'official_name' => 'official_name',
- 'short_name' => 'short_name',
- 'ref' => 'ref',
- 'type' => 'type'
- ), $oParams->getPreferredLanguages('default'));
+ '_place_name' => '_place_name'
+ ), array_slice($oParams->getPreferredLanguages('default'), 0, 6));
$oParams = new ParameterParser(array('accept-language' => 'fr-ca,fr;q=0.8,en-ca;q=0.5,en;q=0.3'));
$this->assertSame(array(
'name:fr-ca' => 'name:fr-ca',
+ '_place_name:fr-ca' => '_place_name:fr-ca',
'name:fr' => 'name:fr',
+ '_place_name:fr' => '_place_name:fr',
'name:en-ca' => 'name:en-ca',
+ '_place_name:en-ca' => '_place_name:en-ca',
'name:en' => 'name:en',
+ '_place_name:en' => '_place_name:en',
'name' => 'name',
- 'brand' => 'brand',
- 'official_name:fr-ca' => 'official_name:fr-ca',
- 'short_name:fr-ca' => 'short_name:fr-ca',
- 'official_name:fr' => 'official_name:fr',
- 'short_name:fr' => 'short_name:fr',
- 'official_name:en-ca' => 'official_name:en-ca',
- 'short_name:en-ca' => 'short_name:en-ca',
- 'official_name:en' => 'official_name:en',
- 'short_name:en' => 'short_name:en',
- 'official_name' => 'official_name',
- 'short_name' => 'short_name',
- 'ref' => 'ref',
- 'type' => 'type',
- ), $oParams->getPreferredLanguages('default'));
+ '_place_name' => '_place_name'
+ ), array_slice($oParams->getPreferredLanguages('default'), 0, 10));
$oParams = new ParameterParser(array('accept-language' => 'ja_rm,zh_pinyin'));
$this->assertSame(array(
'name:ja_rm' => 'name:ja_rm',
+ '_place_name:ja_rm' => '_place_name:ja_rm',
'name:zh_pinyin' => 'name:zh_pinyin',
+ '_place_name:zh_pinyin' => '_place_name:zh_pinyin',
'name:ja' => 'name:ja',
+ '_place_name:ja' => '_place_name:ja',
'name:zh' => 'name:zh',
+ '_place_name:zh' => '_place_name:zh',
'name' => 'name',
- 'brand' => 'brand',
- 'official_name:ja_rm' => 'official_name:ja_rm',
- 'short_name:ja_rm' => 'short_name:ja_rm',
- 'official_name:zh_pinyin' => 'official_name:zh_pinyin',
- 'short_name:zh_pinyin' => 'short_name:zh_pinyin',
- 'official_name:ja' => 'official_name:ja',
- 'short_name:ja' => 'short_name:ja',
- 'official_name:zh' => 'official_name:zh',
- 'short_name:zh' => 'short_name:zh',
- 'official_name' => 'official_name',
- 'short_name' => 'short_name',
- 'ref' => 'ref',
- 'type' => 'type',
- ), $oParams->getPreferredLanguages('default'));
+ '_place_name' => '_place_name'
+ ), array_slice($oParams->getPreferredLanguages('default'), 0, 10));
}
public function testHasSetAny()
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
$oList = new SimpleWordList('a b c');
$this->assertEquals(
- '(a b c),(a|b c),(a b|c),(a|b|c)',
+ '(a b c),(a b|c),(a|b c),(a|b|c)',
$this->serializeSets($oList->getWordSets(new TokensFullSet()))
);
);
}
+ public function testCmpByArraylen()
+ {
+ // Array elements are phrases, we want to sort so longest phrases are first
+ $aList1 = array('hackney', 'bridge', 'london', 'england');
+ $aList2 = array('hackney', 'london', 'bridge');
+ $aList3 = array('bridge', 'hackney', 'london', 'england');
+
+ $this->assertEquals(0, \Nominatim\SimpleWordList::cmpByArraylen($aList1, $aList1));
+
+ // list2 "wins". Less array elements
+ $this->assertEquals(1, \Nominatim\SimpleWordList::cmpByArraylen($aList1, $aList2));
+ $this->assertEquals(-1, \Nominatim\SimpleWordList::cmpByArraylen($aList2, $aList3));
+
+ // list1 "wins". Same number of array elements but longer first element
+ $this->assertEquals(-1, \Nominatim\SimpleWordList::cmpByArraylen($aList1, $aList3));
+ }
public function testMaxWordSets()
{
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
@define('CONST_LibDir', '../../lib-php');
@define('CONST_DataDir', '../..');
{"place_id":193774423,
"osm_type":"R",
"osm_id":65606,
- "name":{"name": "London", "name:be": "Лондан", "name:ca": "Londres", "name:el": "Λονδίνο", "name:en": "London", "name:eo": "Londono", "name:es": "Londres", "name:fa": "لندن", "name:fi": "Lontoo", "name:fr": "Londres", "name:fy": "Londen", "name:gl": "Londres", "name:hi": "लंदन", "name:lt": "Londonas", "name:nl": "Londen", "name:pl": "Londyn", "name:pt": "Londres", "name:ru": "Лондон", "name:uk": "Лондон", "name:vi": "Luân Đôn", "name:zh": "伦敦", "int_name": "London", "name:szl": "Lůndůn", "name:tzl": "Londra", "name:be-tarask": "Лёндан"},
+ "name":{"name": "London", "ISO3166-2": "GB-LND", "name:be": "Лондан", "name:ca": "Londres", "name:el": "Λονδίνο", "name:en": "London", "name:eo": "Londono", "name:es": "Londres", "name:fa": "لندن", "name:fi": "Lontoo", "name:fr": "Londres", "name:fy": "Londen", "name:gl": "Londres", "name:hi": "लंदन", "name:lt": "Londonas", "name:nl": "Londen", "name:pl": "Londyn", "name:pt": "Londres", "name:ru": "Лондон", "name:uk": "Лондон", "name:vi": "Luân Đôn", "name:zh": "伦敦", "int_name": "London", "name:szl": "Lůndůn", "name:tzl": "Londra", "name:be-tarask": "Лёндан"},
"class":"place",
"type":"city",
"admin_level":6,
{"place_id":194325361,
"osm_type":"R",
"osm_id":58447,
- "name":{"name": "England", "name:be": "Англія", "name:br": "Bro-Saoz", "name:ca": "Anglaterra", "name:cs": "Anglie", "name:cy": "Lloegr", "name:de": "England", "name:el": "Αγγλία", "name:en": "England", "name:eo": "Anglujo", "name:es": "Inglaterra", "name:fi": "Englanti", "name:fr": "Angleterre", "name:fy": "Ingelân", "name:ga": "Sasana", "name:gd": "Sasainn", "name:gv": "Sostyn", "name:he": "אנגליה", "name:hu": "Anglia", "name:ia": "Anglaterra", "name:io": "Anglia", "name:it": "Inghilterra", "name:la": "Anglia", "name:lt": "Anglija", "name:nl": "Engeland", "name:pl": "Anglia", "name:pt": "Inglaterra", "name:ru": "Англия", "name:sk": "Anglicko", "name:sv": "England", "name:tr": "İngiltere", "name:uk": "Англія", "name:vi": "Anh", "name:vo": "Linglän", "name:zh": "英格蘭", "name:hsb": "Jendźelska", "name:nds": "England", "name:tok": "ma Inli", "name:tzl": "Anglatzara", "alt_name:eo": "Anglio", "alt_name:ia": "Anglia", "old_name:vi": "Anh Quốc", "alt_name:nds": "Ingland", "name:be-tarask": "Ангельшчына", "name:zh-classical": "英格蘭", "name:zh-simplified": "英格兰", "name:zh-traditional": "英格蘭"},
+ "name":{"ref": "ENG", "ISO3166-2": "GB-ENG", "name": "England", "name:be": "Англія", "name:br": "Bro-Saoz", "name:ca": "Anglaterra", "name:cs": "Anglie", "name:cy": "Lloegr", "name:de": "England", "name:el": "Αγγλία", "name:en": "England", "name:eo": "Anglujo", "name:es": "Inglaterra", "name:fi": "Englanti", "name:fr": "Angleterre", "name:fy": "Ingelân", "name:ga": "Sasana", "name:gd": "Sasainn", "name:gv": "Sostyn", "name:he": "אנגליה", "name:hu": "Anglia", "name:ia": "Anglaterra", "name:io": "Anglia", "name:it": "Inghilterra", "name:la": "Anglia", "name:lt": "Anglija", "name:nl": "Engeland", "name:pl": "Anglia", "name:pt": "Inglaterra", "name:ru": "Англия", "name:sk": "Anglicko", "name:sv": "England", "name:tr": "İngiltere", "name:uk": "Англія", "name:vi": "Anh", "name:vo": "Linglän", "name:zh": "英格蘭", "name:hsb": "Jendźelska", "name:nds": "England", "name:tok": "ma Inli", "name:tzl": "Anglatzara", "alt_name:eo": "Anglio", "alt_name:ia": "Anglia", "old_name:vi": "Anh Quốc", "alt_name:nds": "Ingland", "name:be-tarask": "Ангельшчына", "name:zh-classical": "英格蘭", "name:zh-simplified": "英格兰", "name:zh-traditional": "英格蘭"},
"class":"boundary",
"type":"administrative",
"admin_level":4,
"rank_address":4,
"distance":0,
"localname":"gb"}
-]
\ No newline at end of file
+]
<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
- backupStaticAttributes="false"
- colors="true"
- convertErrorsToExceptions="true"
- convertNoticesToExceptions="true"
- convertWarningsToExceptions="true"
- processIsolation="false"
- stopOnFailure="false"
- bootstrap="./bootstrap.php"
- beStrictAboutTestsThatDoNotTestAnything="true"
- >
- <php>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="false"
+ stopOnFailure="false"
+ bootstrap="./bootstrap.php"
+ beStrictAboutTestsThatDoNotTestAnything="true"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
+ <coverage>
+ <include>
+ <directory>../../lib-php/</directory>
+ </include>
+ </coverage>
+ <php>
</php>
- <testsuites>
- <testsuite name="Nominatim PHP Test Suite">
- <directory>./Nominatim</directory>
- </testsuite>
- </testsuites>
- <filter>
- <whitelist>
- <directory>../../lib-php/</directory>
- </whitelist>
- </filter>
-
+ <testsuites>
+ <testsuite name="Nominatim PHP Test Suite">
+ <directory>./Nominatim</directory>
+ </testsuite>
+ </testsuites>
</phpunit>
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
import pytest
import nominatim.cli
self.update_sql_functions_called = False
self.finalize_import_called = False
self.update_statistics_called = False
+ self.update_word_tokens_called = False
def update_sql_functions(self, *args):
self.update_sql_functions_called = True
def update_statistics(self):
self.update_statistics_called = True
+ def update_word_tokens(self):
+ self.update_word_tokens_called = True
+
@pytest.fixture
def cli_call(src_dir):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for command line interface wrapper.
captured = capsys.readouterr()
assert captured.out.startswith('usage:')
+def test_cli_version(cli_call, capsys):
+ """ Running nominatim tool --version prints a version string.
+ """
+ assert cli_call('--version') == 0
+
+ captured = capsys.readouterr()
+ assert captured.out.startswith('Nominatim version')
@pytest.mark.parametrize("name,oid", [('file', 'foo.osm'), ('diff', 'foo.osc')])
def test_cli_add_data_file_command(cli_call, mock_func_factory, name, oid):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Test for the command line interface wrapper admin subcommand.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for API access commands of command-line interface wrapper.
"""
@pytest.mark.parametrize("endpoint", (('search', 'reverse', 'lookup', 'details', 'status')))
def test_no_api_without_phpcgi(src_dir, endpoint):
- with pytest.raises(SystemExit):
- nominatim.cli.nominatim(module_dir='MODULE NOT AVAILABLE',
- osm2pgsql_path='OSM2PGSQL NOT AVAILABLE',
- phplib_dir=str(src_dir / 'lib-php'),
- data_dir=str(src_dir / 'data'),
- phpcgi_path=None,
- sqllib_dir=str(src_dir / 'lib-sql'),
- config_dir=str(src_dir / 'settings'),
- cli_args=[endpoint])
+ assert nominatim.cli.nominatim(module_dir='MODULE NOT AVAILABLE',
+ osm2pgsql_path='OSM2PGSQL NOT AVAILABLE',
+ phplib_dir=str(src_dir / 'lib-php'),
+ data_dir=str(src_dir / 'data'),
+ phpcgi_path=None,
+ sqllib_dir=str(src_dir / 'lib-sql'),
+ config_dir=str(src_dir / 'settings'),
+ cli_args=[endpoint]) == 1
@pytest.mark.parametrize("params", [('search', '--query', 'new'),
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for import command of the command-line interface wrapper.
"""
import pytest
import nominatim.tools.database_import
-import nominatim.tools.country_info
+import nominatim.data.country_info
import nominatim.tools.refresh
import nominatim.tools.postcodes
import nominatim.indexer.indexer
def test_import_full(self, mock_func_factory, with_updates, place_table, property_table):
mocks = [
mock_func_factory(nominatim.tools.database_import, 'setup_database_skeleton'),
- mock_func_factory(nominatim.tools.country_info, 'setup_country_tables'),
+ mock_func_factory(nominatim.data.country_info, 'setup_country_tables'),
mock_func_factory(nominatim.tools.database_import, 'import_osm_data'),
mock_func_factory(nominatim.tools.refresh, 'import_wikipedia_articles'),
mock_func_factory(nominatim.tools.database_import, 'truncate_data_tables'),
mock_func_factory(nominatim.tools.database_import, 'create_table_triggers'),
mock_func_factory(nominatim.tools.database_import, 'create_partition_tables'),
mock_func_factory(nominatim.tools.database_import, 'create_search_indices'),
- mock_func_factory(nominatim.tools.country_info, 'create_country_names'),
+ mock_func_factory(nominatim.data.country_info, 'create_country_names'),
mock_func_factory(nominatim.tools.refresh, 'load_address_levels_from_config'),
mock_func_factory(nominatim.tools.postcodes, 'update_postcodes'),
mock_func_factory(nominatim.indexer.indexer.Indexer, 'index_full'),
mock_func_factory(nominatim.tools.database_import, 'truncate_data_tables'),
mock_func_factory(nominatim.tools.database_import, 'load_data'),
mock_func_factory(nominatim.tools.database_import, 'create_search_indices'),
- mock_func_factory(nominatim.tools.country_info, 'create_country_names'),
+ mock_func_factory(nominatim.data.country_info, 'create_country_names'),
mock_func_factory(nominatim.tools.postcodes, 'update_postcodes'),
mock_func_factory(nominatim.indexer.indexer.Indexer, 'index_full'),
mock_func_factory(nominatim.tools.refresh, 'setup_website'),
temp_db_conn):
mocks = [
mock_func_factory(nominatim.tools.database_import, 'create_search_indices'),
- mock_func_factory(nominatim.tools.country_info, 'create_country_names'),
+ mock_func_factory(nominatim.data.country_info, 'create_country_names'),
mock_func_factory(nominatim.indexer.indexer.Indexer, 'index_full'),
mock_func_factory(nominatim.tools.refresh, 'setup_website'),
mock_func_factory(nominatim.db.properties, 'set_property')
def test_import_continue_postprocess(self, mock_func_factory):
mocks = [
mock_func_factory(nominatim.tools.database_import, 'create_search_indices'),
- mock_func_factory(nominatim.tools.country_info, 'create_country_names'),
+ mock_func_factory(nominatim.data.country_info, 'create_country_names'),
mock_func_factory(nominatim.tools.refresh, 'setup_website'),
mock_func_factory(nominatim.db.properties, 'set_property')
]
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for command line interface wrapper for refresk command.
"""
assert self.tokenizer_mock.update_statistics_called
+ def test_refresh_word_tokens(self):
+ assert self.call_nominatim('refresh', '--word-tokens') == 0
+ assert self.tokenizer_mock.update_word_tokens_called
+
+
def test_refresh_postcodes(self, mock_func_factory, place_table):
func_mock = mock_func_factory(nominatim.tools.postcodes, 'update_postcodes')
idx_mock = mock_func_factory(nominatim.indexer.indexer.Indexer, 'index_postcodes')
assert self.call_nominatim('refresh', '--importance', '--wiki-data') == 0
assert calls == ['import', 'update']
+
+ @pytest.mark.parametrize('params', [('--data-object', 'w234'),
+ ('--data-object', 'N23', '--data-object', 'N24'),
+ ('--data-area', 'R7723'),
+ ('--data-area', 'r7723', '--data-area', 'r2'),
+ ('--data-area', 'R9284425', '--data-object', 'n1234567894567')])
+ def test_refresh_objects(self, params, mock_func_factory):
+ func_mock = mock_func_factory(nominatim.tools.refresh, 'invalidate_osm_object')
+
+ assert self.call_nominatim('refresh', *params) == 0
+
+ assert func_mock.called == len(params)/2
+
+
+ @pytest.mark.parametrize('func', ('--data-object', '--data-area'))
+ @pytest.mark.parametrize('param', ('234', 'a55', 'R 453', 'Rel'))
+ def test_refresh_objects_bad_param(self, func, param, mock_func_factory):
+ func_mock = mock_func_factory(nominatim.tools.refresh, 'invalidate_osm_object')
+
+ self.call_nominatim('refresh', func, param) == 1
+ assert func_mock.called == 0
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for replication command of command-line interface wrapper.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Test for loading dotenv configuration.
"""
config.get_int('DATABASE_MODULE_PATH')
+@pytest.mark.parametrize("value,outlist", [('sd', ['sd']),
+ ('dd,rr', ['dd', 'rr']),
+ (' a , b ', ['a', 'b'])])
+def test_get_str_list_success(make_config, monkeypatch, value, outlist):
+ config = make_config()
+
+ monkeypatch.setenv('NOMINATIM_MYLIST', value)
+
+ assert config.get_str_list('MYLIST') == outlist
+
+
+def test_get_str_list_empty(make_config):
+ config = make_config()
+
+ assert config.get_str_list('LANGUAGES') is None
+
+
def test_get_path_empty(make_config):
config = make_config()
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Test for loading extra Python modules.
+"""
+from pathlib import Path
+import sys
+
+import pytest
+
+from nominatim.config import Configuration
+
+@pytest.fixture
+def test_config(src_dir, tmp_path):
+ """ Create a configuration object with project and config directories
+ in a temporary directory.
+ """
+ (tmp_path / 'project').mkdir()
+ (tmp_path / 'config').mkdir()
+ conf = Configuration(tmp_path / 'project', src_dir / 'settings')
+ conf.config_dir = tmp_path / 'config'
+ return conf
+
+
+def test_load_default_module(test_config):
+ module = test_config.load_plugin_module('version', 'nominatim')
+
+ assert isinstance(module.NOMINATIM_VERSION, tuple)
+
+def test_load_default_module_with_hyphen(test_config):
+ module = test_config.load_plugin_module('place-info', 'nominatim.data')
+
+ assert isinstance(module.PlaceInfo, object)
+
+
+def test_load_plugin_module(test_config, tmp_path):
+ (tmp_path / 'project' / 'testpath').mkdir()
+ (tmp_path / 'project' / 'testpath' / 'mymod.py')\
+ .write_text("def my_test_function():\n return 'gjwitlsSG42TG%'")
+
+ module = test_config.load_plugin_module('testpath/mymod.py', 'private.something')
+
+ assert module.my_test_function() == 'gjwitlsSG42TG%'
+
+ # also test reloading module
+ (tmp_path / 'project' / 'testpath' / 'mymod.py')\
+ .write_text("def my_test_function():\n return 'hjothjorhj'")
+
+ module = test_config.load_plugin_module('testpath/mymod.py', 'private.something')
+
+ assert module.my_test_function() == 'gjwitlsSG42TG%'
+
+
+def test_load_external_library_module(test_config, tmp_path, monkeypatch):
+ MODULE_NAME = 'foogurenqodr4'
+ pythonpath = tmp_path / 'priv-python'
+ pythonpath.mkdir()
+ (pythonpath / MODULE_NAME).mkdir()
+ (pythonpath / MODULE_NAME / '__init__.py').write_text('')
+ (pythonpath / MODULE_NAME / 'tester.py')\
+ .write_text("def my_test_function():\n return 'gjwitlsSG42TG%'")
+
+ monkeypatch.syspath_prepend(pythonpath)
+
+ module = test_config.load_plugin_module(f'{MODULE_NAME}.tester', 'private.something')
+
+ assert module.my_test_function() == 'gjwitlsSG42TG%'
+
+ # also test reloading module
+ (pythonpath / MODULE_NAME / 'tester.py')\
+ .write_text("def my_test_function():\n return 'dfigjreigj'")
+
+ module = test_config.load_plugin_module(f'{MODULE_NAME}.tester', 'private.something')
+
+ assert module.my_test_function() == 'gjwitlsSG42TG%'
+
+ del sys.modules[f'{MODULE_NAME}.tester']
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
import itertools
import sys
from pathlib import Path
country_code VARCHAR(2)""")
-@pytest.fixture
-def word_table(temp_db_conn):
- return mocks.MockWordTable(temp_db_conn)
-
-
@pytest.fixture
def sql_preprocessor_cfg(tmp_path, table_factory, temp_db_with_extensions):
table_factory('country_name', 'partition INT', ((0, ), (1, ), (2, )))
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Specialised psycopg2 cursor with shortcut functions useful for testing.
"""
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for function that handle country properties.
+"""
+from textwrap import dedent
+import pytest
+
+from nominatim.data import country_info
+
+@pytest.fixture
+def loaded_country(def_config):
+ country_info.setup_country_config(def_config)
+
+
+@pytest.fixture
+def env_with_country_config(project_env):
+
+ def _mk_config(cfg):
+ (project_env.project_dir / 'country_settings.yaml').write_text(dedent(cfg))
+
+ return project_env
+
+ return _mk_config
+
+
+@pytest.mark.parametrize("no_partitions", (True, False))
+def test_setup_country_tables(src_dir, temp_db_with_extensions, dsn, temp_db_cursor,
+ loaded_country, no_partitions):
+ country_info.setup_country_tables(dsn, src_dir / 'data', no_partitions)
+
+ assert temp_db_cursor.table_exists('country_name')
+ assert temp_db_cursor.table_rows('country_name') == \
+ temp_db_cursor.scalar(
+ 'SELECT count(DISTINCT country_code) FROM country_name')
+
+ partitions = temp_db_cursor.row_set(
+ "SELECT DISTINCT partition FROM country_name")
+ if no_partitions:
+ assert partitions == {(0, )}
+ else:
+ assert len(partitions) > 10
+
+ assert temp_db_cursor.table_exists('country_osm_grid')
+ assert temp_db_cursor.table_rows('country_osm_grid') > 100
+
+
+@pytest.mark.parametrize("languages", (None, ['fr', 'en']))
+def test_create_country_names(temp_db_with_extensions, temp_db_conn, temp_db_cursor,
+ table_factory, tokenizer_mock, languages, loaded_country):
+
+ table_factory('country_name', 'country_code varchar(2), name hstore',
+ content=(('us', '"name"=>"us1","name:af"=>"us2"'),
+ ('fr', '"name"=>"Fra", "name:en"=>"Fren"')))
+
+ assert temp_db_cursor.scalar("SELECT count(*) FROM country_name") == 2
+
+ tokenizer = tokenizer_mock()
+
+ country_info.create_country_names(temp_db_conn, tokenizer, languages)
+
+ assert len(tokenizer.analyser_cache['countries']) == 2
+
+ result_set = {k: set(v.values())
+ for k, v in tokenizer.analyser_cache['countries']}
+
+ if languages:
+ assert result_set == {'us': set(('us', 'us1')),
+ 'fr': set(('fr', 'Fra', 'Fren'))}
+ else:
+ assert result_set == {'us': set(('us', 'us1', 'us2')),
+ 'fr': set(('fr', 'Fra', 'Fren'))}
+
+
+def test_setup_country_names_prefixes(env_with_country_config):
+ config = env_with_country_config("""\
+ es:
+ names:
+ name:
+ en: Spain
+ de: Spanien
+ default: Espagñe
+ us:
+ names:
+ short_name:
+ default: USA
+ name:
+ default: United States
+ en: United States
+ """)
+ info = country_info._CountryInfo()
+ info.load(config)
+
+ assert info.get('es')['names'] == {"name": "Espagñe",
+ "name:en": "Spain",
+ "name:de": "Spanien"}
+ assert info.get('us')['names'] == {"name": "United States",
+ "name:en": "United States",
+ "short_name": "USA"}
+ assert 'names' not in info.get('xx')
+
+
+def test_setup_country_config_languages_not_loaded(env_with_country_config):
+ config = env_with_country_config("""\
+ de:
+ partition: 3
+ names:
+ name:
+ default: Deutschland
+ """)
+ info = country_info._CountryInfo()
+ info.load(config)
+ assert dict(info.items()) == {'de': {'partition': 3,
+ 'languages': [],
+ 'names': {'name': 'Deutschland'}}}
+
+
+def test_setup_country_config_name_not_loaded(env_with_country_config):
+ config = env_with_country_config("""\
+ de:
+ partition: 3
+ languages: de
+ names:
+ """)
+
+ info = country_info._CountryInfo()
+ info.load(config)
+
+ assert dict(info.items()) == {'de': {'partition': 3,
+ 'languages': ['de'],
+ 'names': {}
+ }}
+
+
+def test_setup_country_config_names_not_loaded(env_with_country_config):
+ config = env_with_country_config("""
+ de:
+ partition: 3
+ languages: de
+ """)
+
+ info = country_info._CountryInfo()
+ info.load(config)
+
+ assert dict(info.items()) == {'de': {'partition': 3,
+ 'languages': ['de'],
+ 'names': {}
+ }}
+
+
+def test_setup_country_config_special_character(env_with_country_config):
+ config = env_with_country_config("""
+ bq:
+ partition: 250
+ languages: nl
+ names:
+ name:
+ default: "\\N"
+ """)
+
+ info = country_info._CountryInfo()
+ info.load(config)
+
+ assert dict(info.items()) == {'bq': {'partition': 250,
+ 'languages': ['nl'],
+ 'names': {'name': '\x85'}
+ }}
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for function providing a non-blocking query interface towards PostgreSQL.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
-Tests for specialised conenction and cursor classes.
+Tests for specialised connection and cursor classes.
"""
import pytest
import psycopg2
assert db.table_exists('foobar')
+def test_has_column_no_table(db):
+ assert not db.table_has_column('sometable', 'somecolumn')
+
+
+@pytest.mark.parametrize('name,result', [('tram', True), ('car', False)])
+def test_has_column(db, table_factory, name, result):
+ table_factory('stuff', 'tram TEXT')
+
+ assert db.table_has_column('stuff', name) == result
+
def test_connection_index_exists(db, table_factory, temp_db_cursor):
assert not db.index_exists('some_index')
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for property table manpulation.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for SQL preprocessing.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for status table manipulation.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for DB utility functions in db.utils
"""
@pytest.fixture(autouse=True)
def setup_test_table(self, table_factory):
- table_factory(self.TABLE_NAME, 'colA INT, colB TEXT')
+ table_factory(self.TABLE_NAME, 'col_a INT, col_b TEXT')
def table_rows(self, cursor):
buf.add('foo')
buf.copy_out(temp_db_cursor, self.TABLE_NAME,
- columns=['colB'])
+ columns=['col_b'])
assert self.table_rows(temp_db_cursor) == {(None, 'foo')}
buf.add(' two ', 2)
buf.copy_out(temp_db_cursor, self.TABLE_NAME,
- columns=['colB', 'colA'])
+ columns=['col_b', 'col_a'])
assert self.table_rows(temp_db_cursor) == {(1, 'one'), (2, ' two ')}
buf.add('\\N')
buf.copy_out(temp_db_cursor, self.TABLE_NAME,
- columns=['colB'])
+ columns=['col_b'])
assert self.table_rows(temp_db_cursor) == {(None, 'foo\tbar'),
(None, 'sun\nson'),
@pytest.fixture(autouse=True)
def setup_test_table(self, table_factory):
- table_factory(self.TABLE_NAME, 'colA INT, colB JSONB')
+ table_factory(self.TABLE_NAME, 'col_a INT, col_b JSONB')
def table_rows(self, cursor):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tokenizer for testing.
"""
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
from nominatim.config import Configuration
def create(dsn, data_dir):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for running the indexing.
"""
SELECT count(*) FROM placex p WHERE rank_address > 0
AND indexed_date >= (SELECT min(indexed_date) FROM placex o
WHERE p.rank_address < o.rank_address)""") == 0
- # placex rank < 30 objects come before interpolations
+ # placex address ranked objects come before interpolations
assert test_db.scalar(
- """SELECT count(*) FROM placex WHERE rank_address < 30
+ """SELECT count(*) FROM placex WHERE rank_address > 0
AND indexed_date >
(SELECT min(indexed_date) FROM location_property_osmline)""") == 0
- # placex rank = 30 objects come after interpolations
+ # rank 0 comes after all other placex objects
assert test_db.scalar(
- """SELECT count(*) FROM placex WHERE rank_address = 30
- AND indexed_date <
- (SELECT max(indexed_date) FROM location_property_osmline)""") == 0
- # rank 0 comes after rank 29 and before rank 30
- assert test_db.scalar(
- """SELECT count(*) FROM placex WHERE rank_address < 30
+ """SELECT count(*) FROM placex WHERE rank_address > 0
AND indexed_date >
(SELECT min(indexed_date) FROM placex WHERE rank_address = 0)""") == 0
- assert test_db.scalar(
- """SELECT count(*) FROM placex WHERE rank_address = 30
- AND indexed_date <
- (SELECT max(indexed_date) FROM placex WHERE rank_address = 0)""") == 0
@pytest.mark.parametrize("threads", [1, 15])
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Legacy word table for testing with functions to prefil and test contents
of the table.
self.conn.commit()
+ def add_housenumber(self, word_id, word_tokens, word=None):
+ with self.conn.cursor() as cur:
+ if isinstance(word_tokens, str):
+ # old style without analyser
+ cur.execute("""INSERT INTO word (word_id, word_token, type)
+ VALUES (%s, %s, 'H')
+ """, (word_id, word_tokens))
+ else:
+ if word is None:
+ word = word_tokens[0]
+ for token in word_tokens:
+ cur.execute("""INSERT INTO word (word_id, word_token, type, word, info)
+ VALUES (%s, %s, 'H', %s, jsonb_build_object('lookup', %s))
+ """, (word_id, token, word, word_tokens[0]))
+
+ self.conn.commit()
+
+
def count(self):
with self.conn.cursor() as cur:
return cur.scalar("SELECT count(*) FROM word")
return cur.scalar("SELECT count(*) FROM word WHERE type = 'S'")
+ def count_housenumbers(self):
+ with self.conn.cursor() as cur:
+ return cur.scalar("SELECT count(*) FROM word WHERE type = 'H'")
+
+
def get_special(self):
with self.conn.cursor() as cur:
cur.execute("SELECT word_token, info, word FROM word WHERE type = 'S'")
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Legacy word table for testing with functions to prefil and test contents
of the table.
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Custom mocks for testing.
"""
from nominatim.db import properties
# This must always point to the mock word table for the default tokenizer.
-from mock_legacy_word_table import MockLegacyWordTable as MockWordTable
+from mock_icu_word_table import MockIcuWordTable as MockWordTable
class MockPlacexTable:
""" A placex table for testing.
admin_level smallint,
address hstore,
extratags hstore,
+ token_info jsonb,
geometry Geometry(Geometry,4326),
wikipedia TEXT,
country_code varchar(2),
--- /dev/null
+[pytest]
+markers =
+ sanitizer_params
\ No newline at end of file
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for the sanitizer that normalizes housenumbers.
+"""
+import pytest
+
+from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
+from nominatim.data.place_info import PlaceInfo
+
+@pytest.fixture
+def sanitize(request, def_config):
+ sanitizer_args = {'step': 'clean-housenumbers'}
+ for mark in request.node.iter_markers(name="sanitizer_params"):
+ sanitizer_args.update({k.replace('_', '-') : v for k,v in mark.kwargs.items()})
+
+ def _run(**kwargs):
+ place = PlaceInfo({'address': kwargs})
+ _, address = PlaceSanitizer([sanitizer_args], def_config).process_names(place)
+
+ return sorted([(p.kind, p.name) for p in address])
+
+ return _run
+
+
+def test_simple_number(sanitize):
+ assert sanitize(housenumber='34') == [('housenumber', '34')]
+
+
+@pytest.mark.parametrize('number', ['1;2;3', '1,2,3', '1; 3 ,2',
+ '2,,3,1', '1;2;3;;', ';3;2;1'])
+def test_housenumber_lists(sanitize, number):
+ assert sanitize(housenumber=number) == \
+ [('housenumber', '1'), ('housenumber', '2'), ('housenumber', '3')]
+
+
+@pytest.mark.sanitizer_params(filter_kind=('number', 'streetnumber'))
+def test_filter_kind(sanitize):
+ assert sanitize(housenumber='34', number='4', badnumber='65') == \
+ [('badnumber', '65'), ('housenumber', '34'), ('housenumber', '4')]
+
+
+@pytest.mark.parametrize('number', ('6523', 'n/a', '4'))
+def test_convert_to_name_converted(def_config, number):
+ sanitizer_args = {'step': 'clean-housenumbers',
+ 'convert-to-name': (r'\d+', 'n/a')}
+
+ place = PlaceInfo({'address': {'housenumber': number}})
+ names, address = PlaceSanitizer([sanitizer_args], def_config).process_names(place)
+
+ assert ('housenumber', number) in set((p.kind, p.name) for p in names)
+ assert 'housenumber' not in set(p.kind for p in address)
+
+
+@pytest.mark.parametrize('number', ('a54', 'n.a', 'bow'))
+def test_convert_to_name_unconverted(def_config, number):
+ sanitizer_args = {'step': 'clean-housenumbers',
+ 'convert-to-name': (r'\d+', 'n/a')}
+
+ place = PlaceInfo({'address': {'housenumber': number}})
+ names, address = PlaceSanitizer([sanitizer_args], def_config).process_names(place)
+
+ assert 'housenumber' not in set(p.kind for p in names)
+ assert ('housenumber', number) in set((p.kind, p.name) for p in address)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for the sanitizer that normalizes postcodes.
+"""
+import pytest
+
+from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
+from nominatim.data.place_info import PlaceInfo
+from nominatim.data import country_info
+
+@pytest.fixture
+def sanitize(def_config, request):
+ country_info.setup_country_config(def_config)
+ sanitizer_args = {'step': 'clean-postcodes'}
+ for mark in request.node.iter_markers(name="sanitizer_params"):
+ sanitizer_args.update({k.replace('_', '-') : v for k,v in mark.kwargs.items()})
+
+ def _run(country=None, **kwargs):
+ pi = {'address': kwargs}
+ if country is not None:
+ pi['country_code'] = country
+
+ _, address = PlaceSanitizer([sanitizer_args], def_config).process_names(PlaceInfo(pi))
+
+ return sorted([(p.kind, p.name) for p in address])
+
+ return _run
+
+
+@pytest.mark.parametrize("country", (None, 'ae'))
+def test_postcode_no_country(sanitize, country):
+ assert sanitize(country=country, postcode='23231') == [('unofficial_postcode', '23231')]
+
+
+@pytest.mark.parametrize("country", (None, 'ae'))
+@pytest.mark.sanitizer_params(convert_to_address=False)
+def test_postcode_no_country_drop(sanitize, country):
+ assert sanitize(country=country, postcode='23231') == []
+
+
+@pytest.mark.parametrize("postcode", ('12345', ' 12345 ', 'de 12345',
+ 'DE12345', 'DE 12345', 'DE-12345'))
+def test_postcode_pass_good_format(sanitize, postcode):
+ assert sanitize(country='de', postcode=postcode) == [('postcode', '12345')]
+
+
+@pytest.mark.parametrize("postcode", ('123456', '', ' ', '.....',
+ 'DE 12345', 'DEF12345', 'CH 12345'))
+@pytest.mark.sanitizer_params(convert_to_address=False)
+def test_postcode_drop_bad_format(sanitize, postcode):
+ assert sanitize(country='de', postcode=postcode) == []
+
+
+@pytest.mark.parametrize("postcode", ('1234', '9435', '99000'))
+def test_postcode_cyprus_pass(sanitize, postcode):
+ assert sanitize(country='cy', postcode=postcode) == [('postcode', postcode)]
+
+
+@pytest.mark.parametrize("postcode", ('91234', '99a45', '567'))
+@pytest.mark.sanitizer_params(convert_to_address=False)
+def test_postcode_cyprus_fail(sanitize, postcode):
+ assert sanitize(country='cy', postcode=postcode) == []
+
+
+@pytest.mark.parametrize("postcode", ('123456', 'A33F2G7'))
+def test_postcode_kazakhstan_pass(sanitize, postcode):
+ assert sanitize(country='kz', postcode=postcode) == [('postcode', postcode)]
+
+
+@pytest.mark.parametrize("postcode", ('V34T6Y923456', '99345'))
+@pytest.mark.sanitizer_params(convert_to_address=False)
+def test_postcode_kazakhstan_fail(sanitize, postcode):
+ assert sanitize(country='kz', postcode=postcode) == []
+
+
+@pytest.mark.parametrize("postcode", ('675 34', '67534', 'SE-675 34', 'SE67534'))
+def test_postcode_sweden_pass(sanitize, postcode):
+ assert sanitize(country='se', postcode=postcode) == [('postcode', '675 34')]
+
+
+@pytest.mark.parametrize("postcode", ('67 345', '671123'))
+@pytest.mark.sanitizer_params(convert_to_address=False)
+def test_postcode_sweden_fail(sanitize, postcode):
+ assert sanitize(country='se', postcode=postcode) == []
+
+
+@pytest.mark.parametrize("postcode", ('AB1', '123-456-7890', '1 as 44'))
+@pytest.mark.sanitizer_params(default_pattern='[A-Z0-9- ]{3,12}')
+def test_postcode_default_pattern_pass(sanitize, postcode):
+ assert sanitize(country='an', postcode=postcode) == [('postcode', postcode.upper())]
+
+
+@pytest.mark.parametrize("postcode", ('C', '12', 'ABC123DEF 456', '1234,5678', '11223;11224'))
+@pytest.mark.sanitizer_params(convert_to_address=False, default_pattern='[A-Z0-9- ]{3,12}')
+def test_postcode_default_pattern_fail(sanitize, postcode):
+ assert sanitize(country='an', postcode=postcode) == []
+
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for sanitizer configuration helper functions.
+"""
+import pytest
+
+from nominatim.errors import UsageError
+from nominatim.tokenizer.place_sanitizer import PlaceName
+from nominatim.tokenizer.sanitizers.config import SanitizerConfig
+
+def test_string_list_default_empty():
+ assert SanitizerConfig().get_string_list('op') == []
+
+
+def test_string_list_default_none():
+ assert SanitizerConfig().get_string_list('op', default=None) is None
+
+
+def test_string_list_default_something():
+ assert SanitizerConfig().get_string_list('op', default=['a', 'b']) == ['a', 'b']
+
+
+def test_string_list_value_string():
+ assert SanitizerConfig({'op': 't'}).get_string_list('op', default=['a', 'b']) == ['t']
+
+
+def test_string_list_value_list():
+ assert SanitizerConfig({'op': ['1', '2']}).get_string_list('op') == ['1', '2']
+
+
+def test_string_list_value_empty():
+ assert SanitizerConfig({'op': ''}).get_string_list('op', default=['a', 'b']) == []
+
+
+def test_string_list_value_dict():
+ with pytest.raises(UsageError):
+ SanitizerConfig({'op': {'1': 'a'}}).get_string_list('op')
+
+
+def test_string_list_value_int_list():
+ with pytest.raises(UsageError):
+ SanitizerConfig({'op': [1, 2]}).get_string_list('op')
+
+
+@pytest.mark.parametrize('inp', ('fg34', 'f\\f', 'morning [glory]', '56.78'))
+def test_create_split_regex_no_params_unsplit(inp):
+ regex = SanitizerConfig().get_delimiter()
+
+ assert list(regex.split(inp)) == [inp]
+
+
+@pytest.mark.parametrize('inp,outp', [('here,there', ['here', 'there']),
+ ('ying;;yang', ['ying', 'yang']),
+ (';a; ;c;d,', ['', 'a', '', 'c', 'd', '']),
+ ('1, 3 ,5', ['1', '3', '5'])
+ ])
+def test_create_split_regex_no_params_split(inp, outp):
+ regex = SanitizerConfig().get_delimiter()
+
+ assert list(regex.split(inp)) == outp
+
+
+@pytest.mark.parametrize('delimiter', ['.', '\\', '[]', ' ', '/.*+'])
+def test_create_split_regex_custom(delimiter):
+ regex = SanitizerConfig({'delimiters': delimiter}).get_delimiter()
+
+ assert list(regex.split(f'out{delimiter}house')) == ['out', 'house']
+ assert list(regex.split('out,house')) == ['out,house']
+
+
+def test_create_split_regex_empty_delimiter():
+ with pytest.raises(UsageError):
+ regex = SanitizerConfig({'delimiters': ''}).get_delimiter()
+
+
+@pytest.mark.parametrize('inp', ('name', 'name:de', 'na\\me', '.*'))
+def test_create_kind_filter_no_params(inp):
+ filt = SanitizerConfig().get_filter_kind()
+
+ assert filt(inp)
+
+
+@pytest.mark.parametrize('kind', ('de', 'name:de', 'ende'))
+def test_create_kind_filter_custom_regex_positive(kind):
+ filt = SanitizerConfig({'filter-kind': '.*de'}).get_filter_kind()
+
+ assert filt(kind)
+
+
+@pytest.mark.parametrize('kind', ('de ', '123', '', 'bedece'))
+def test_create_kind_filter_custom_regex_negative(kind):
+ filt = SanitizerConfig({'filter-kind': '.*de'}).get_filter_kind()
+
+ assert not filt(kind)
+
+
+@pytest.mark.parametrize('kind', ('name', 'fr', 'name:fr', 'frfr', '34'))
+def test_create_kind_filter_many_positive(kind):
+ filt = SanitizerConfig({'filter-kind': ['.*fr', 'name', r'\d+']}).get_filter_kind()
+
+ assert filt(kind)
+
+
+@pytest.mark.parametrize('kind', ('name:de', 'fridge', 'a34', '.*', '\\'))
+def test_create_kind_filter_many_negative(kind):
+ filt = SanitizerConfig({'filter-kind': ['.*fr', 'name', r'\d+']}).get_filter_kind()
+
+ assert not filt(kind)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
-Tests for the sanitizer that splitts multivalue lists.
+Tests for the sanitizer that splits multivalue lists.
"""
import pytest
from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
from nominatim.errors import UsageError
-def run_sanitizer_on(**kwargs):
- place = PlaceInfo({'name': kwargs})
- name, _ = PlaceSanitizer([{'step': 'split-name-list'}]).process_names(place)
+class TestSplitName:
- return sorted([(p.name, p.kind, p.suffix) for p in name])
+ @pytest.fixture(autouse=True)
+ def setup_country(self, def_config):
+ self.config = def_config
-def sanitize_with_delimiter(delimiter, name):
- place = PlaceInfo({'name': {'name': name}})
- san = PlaceSanitizer([{'step': 'split-name-list', 'delimiters': delimiter}])
- name, _ = san.process_names(place)
+ def run_sanitizer_on(self, **kwargs):
+ place = PlaceInfo({'name': kwargs})
+ name, _ = PlaceSanitizer([{'step': 'split-name-list'}], self.config).process_names(place)
- return sorted([p.name for p in name])
+ return sorted([(p.name, p.kind, p.suffix) for p in name])
-def test_simple():
- assert run_sanitizer_on(name='ABC') == [('ABC', 'name', None)]
- assert run_sanitizer_on(name='') == [('', 'name', None)]
+ def sanitize_with_delimiter(self, delimiter, name):
+ place = PlaceInfo({'name': {'name': name}})
+ san = PlaceSanitizer([{'step': 'split-name-list', 'delimiters': delimiter}],
+ self.config)
+ name, _ = san.process_names(place)
+ return sorted([p.name for p in name])
-def test_splits():
- assert run_sanitizer_on(name='A;B;C') == [('A', 'name', None),
- ('B', 'name', None),
- ('C', 'name', None)]
- assert run_sanitizer_on(short_name=' House, boat ') == [('House', 'short_name', None),
- ('boat', 'short_name', None)]
+ def test_simple(self):
+ assert self.run_sanitizer_on(name='ABC') == [('ABC', 'name', None)]
+ assert self.run_sanitizer_on(name='') == [('', 'name', None)]
-def test_empty_fields():
- assert run_sanitizer_on(name='A;;B') == [('A', 'name', None),
- ('B', 'name', None)]
- assert run_sanitizer_on(name='A; ,B') == [('A', 'name', None),
- ('B', 'name', None)]
- assert run_sanitizer_on(name=' ;B') == [('B', 'name', None)]
- assert run_sanitizer_on(name='B,') == [('B', 'name', None)]
+ def test_splits(self):
+ assert self.run_sanitizer_on(name='A;B;C') == [('A', 'name', None),
+ ('B', 'name', None),
+ ('C', 'name', None)]
+ assert self.run_sanitizer_on(short_name=' House, boat ') == [('House', 'short_name', None),
+ ('boat', 'short_name', None)]
-def test_custom_delimiters():
- assert sanitize_with_delimiter(':', '12:45,3') == ['12', '45,3']
- assert sanitize_with_delimiter('\\', 'a;\\b!#@ \\') == ['a;', 'b!#@']
- assert sanitize_with_delimiter('[]', 'foo[to]be') == ['be', 'foo', 'to']
- assert sanitize_with_delimiter(' ', 'morning sun') == ['morning', 'sun']
+ def test_empty_fields(self):
+ assert self.run_sanitizer_on(name='A;;B') == [('A', 'name', None),
+ ('B', 'name', None)]
+ assert self.run_sanitizer_on(name='A; ,B') == [('A', 'name', None),
+ ('B', 'name', None)]
+ assert self.run_sanitizer_on(name=' ;B') == [('B', 'name', None)]
+ assert self.run_sanitizer_on(name='B,') == [('B', 'name', None)]
-def test_empty_delimiter_set():
- with pytest.raises(UsageError):
- sanitize_with_delimiter('', 'abc')
+ def test_custom_delimiters(self):
+ assert self.sanitize_with_delimiter(':', '12:45,3') == ['12', '45,3']
+ assert self.sanitize_with_delimiter('\\', 'a;\\b!#@ \\') == ['a;', 'b!#@']
+ assert self.sanitize_with_delimiter('[]', 'foo[to]be') == ['be', 'foo', 'to']
+ assert self.sanitize_with_delimiter(' ', 'morning sun') == ['morning', 'sun']
-def test_no_name_list():
+
+ def test_empty_delimiter_set(self):
+ with pytest.raises(UsageError):
+ self.sanitize_with_delimiter('', 'abc')
+
+
+def test_no_name_list(def_config):
place = PlaceInfo({'address': {'housenumber': '3'}})
- name, address = PlaceSanitizer([{'step': 'split-name-list'}]).process_names(place)
+ name, address = PlaceSanitizer([{'step': 'split-name-list'}], def_config).process_names(place)
assert not name
assert len(address) == 1
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for the sanitizer that handles braced suffixes.
"""
import pytest
from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
-def run_sanitizer_on(**kwargs):
- place = PlaceInfo({'name': kwargs})
- name, _ = PlaceSanitizer([{'step': 'strip-brace-terms'}]).process_names(place)
+class TestStripBrace:
- return sorted([(p.name, p.kind, p.suffix) for p in name])
+ @pytest.fixture(autouse=True)
+ def setup_country(self, def_config):
+ self.config = def_config
+ def run_sanitizer_on(self, **kwargs):
+ place = PlaceInfo({'name': kwargs})
+ name, _ = PlaceSanitizer([{'step': 'strip-brace-terms'}], self.config).process_names(place)
-def test_no_braces():
- assert run_sanitizer_on(name='foo', ref='23') == [('23', 'ref', None),
- ('foo', 'name', None)]
+ return sorted([(p.name, p.kind, p.suffix) for p in name])
-def test_simple_braces():
- assert run_sanitizer_on(name='Halle (Saale)', ref='3')\
- == [('3', 'ref', None), ('Halle', 'name', None), ('Halle (Saale)', 'name', None)]
- assert run_sanitizer_on(name='ack ( bar')\
- == [('ack', 'name', None), ('ack ( bar', 'name', None)]
+ def test_no_braces(self):
+ assert self.run_sanitizer_on(name='foo', ref='23') == [('23', 'ref', None),
+ ('foo', 'name', None)]
-def test_only_braces():
- assert run_sanitizer_on(name='(maybe)') == [('(maybe)', 'name', None)]
+ def test_simple_braces(self):
+ assert self.run_sanitizer_on(name='Halle (Saale)', ref='3')\
+ == [('3', 'ref', None), ('Halle', 'name', None), ('Halle (Saale)', 'name', None)]
+ assert self.run_sanitizer_on(name='ack ( bar')\
+ == [('ack', 'name', None), ('ack ( bar', 'name', None)]
-def test_double_braces():
- assert run_sanitizer_on(name='a((b))') == [('a', 'name', None),
- ('a((b))', 'name', None)]
- assert run_sanitizer_on(name='a (b) (c)') == [('a', 'name', None),
- ('a (b) (c)', 'name', None)]
+ def test_only_braces(self):
+ assert self.run_sanitizer_on(name='(maybe)') == [('(maybe)', 'name', None)]
-def test_no_names():
+ def test_double_braces(self):
+ assert self.run_sanitizer_on(name='a((b))') == [('a', 'name', None),
+ ('a((b))', 'name', None)]
+ assert self.run_sanitizer_on(name='a (b) (c)') == [('a', 'name', None),
+ ('a (b) (c)', 'name', None)]
+
+
+def test_no_names(def_config):
place = PlaceInfo({'address': {'housenumber': '3'}})
- name, address = PlaceSanitizer([{'step': 'strip-brace-terms'}]).process_names(place)
+ name, address = PlaceSanitizer([{'step': 'strip-brace-terms'}], def_config).process_names(place)
assert not name
assert len(address) == 1
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for the sanitizer that enables language-dependent analyzers.
"""
import pytest
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
from nominatim.tokenizer.place_sanitizer import PlaceSanitizer
-from nominatim.tools.country_info import setup_country_config
+from nominatim.data.country_info import setup_country_config
class TestWithDefaults:
- @staticmethod
- def run_sanitizer_on(country, **kwargs):
+ @pytest.fixture(autouse=True)
+ def setup_country(self, def_config):
+ self.config = def_config
+
+
+ def run_sanitizer_on(self, country, **kwargs):
place = PlaceInfo({'name': {k.replace('_', ':'): v for k, v in kwargs.items()},
'country_code': country})
- name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language'}]).process_names(place)
+ name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language'}],
+ self.config).process_names(place)
return sorted([(p.name, p.kind, p.suffix, p.attr) for p in name])
class TestFilterKind:
- @staticmethod
- def run_sanitizer_on(filt, **kwargs):
+ @pytest.fixture(autouse=True)
+ def setup_country(self, def_config):
+ self.config = def_config
+
+
+ def run_sanitizer_on(self, filt, **kwargs):
place = PlaceInfo({'name': {k.replace('_', ':'): v for k, v in kwargs.items()},
'country_code': 'de'})
name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language',
- 'filter-kind': filt}]).process_names(place)
+ 'filter-kind': filt}],
+ self.config).process_names(place)
return sorted([(p.name, p.kind, p.suffix, p.attr) for p in name])
@pytest.fixture(autouse=True)
def setup_country(self, def_config):
setup_country_config(def_config)
+ self.config = def_config
+
- @staticmethod
- def run_sanitizer_append(mode, country, **kwargs):
+ def run_sanitizer_append(self, mode, country, **kwargs):
place = PlaceInfo({'name': {k.replace('_', ':'): v for k, v in kwargs.items()},
'country_code': country})
name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language',
'use-defaults': mode,
- 'mode': 'append'}]).process_names(place)
+ 'mode': 'append'}],
+ self.config).process_names(place)
assert all(isinstance(p.attr, dict) for p in name)
assert all(len(p.attr) <= 1 for p in name)
return sorted([(p.name, p.attr.get('analyzer', '')) for p in name])
- @staticmethod
- def run_sanitizer_replace(mode, country, **kwargs):
+ def run_sanitizer_replace(self, mode, country, **kwargs):
place = PlaceInfo({'name': {k.replace('_', ':'): v for k, v in kwargs.items()},
'country_code': country})
name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language',
'use-defaults': mode,
- 'mode': 'replace'}]).process_names(place)
+ 'mode': 'replace'}],
+ self.config).process_names(place)
assert all(isinstance(p.attr, dict) for p in name)
assert all(len(p.attr) <= 1 for p in name)
place = PlaceInfo({'name': {'name': 'something'}})
name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language',
'use-defaults': 'all',
- 'mode': 'replace'}]).process_names(place)
+ 'mode': 'replace'}],
+ self.config).process_names(place)
assert len(name) == 1
assert name[0].name == 'something'
class TestCountryWithWhitelist:
- @staticmethod
- def run_sanitizer_on(mode, country, **kwargs):
+ @pytest.fixture(autouse=True)
+ def setup_country(self, def_config):
+ self.config = def_config
+
+
+ def run_sanitizer_on(self, mode, country, **kwargs):
place = PlaceInfo({'name': {k.replace('_', ':'): v for k, v in kwargs.items()},
'country_code': country})
name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language',
'use-defaults': mode,
'mode': 'replace',
- 'whitelist': ['de', 'fr', 'ru']}]).process_names(place)
+ 'whitelist': ['de', 'fr', 'ru']}],
+ self.config).process_names(place)
assert all(isinstance(p.attr, dict) for p in name)
assert all(len(p.attr) <= 1 for p in name)
class TestWhiteList:
- @staticmethod
- def run_sanitizer_on(whitelist, **kwargs):
+ @pytest.fixture(autouse=True)
+ def setup_country(self, def_config):
+ self.config = def_config
+
+
+ def run_sanitizer_on(self, whitelist, **kwargs):
place = PlaceInfo({'name': {k.replace('_', ':'): v for k, v in kwargs.items()}})
name, _ = PlaceSanitizer([{'step': 'tag-analyzer-by-language',
'mode': 'replace',
- 'whitelist': whitelist}]).process_names(place)
+ 'whitelist': whitelist}],
+ self.config).process_names(place)
assert all(isinstance(p.attr, dict) for p in name)
assert all(len(p.attr) <= 1 for p in name)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for creating new tokenizers.
"""
assert tokenizer.init_state == "loaded"
- def test_load_no_tokenizer_dir(self):
+ def test_load_repopulate_tokenizer_dir(self):
factory.create_tokenizer(self.config)
- self.config.project_dir = self.config.project_dir / 'foo'
+ self.config.project_dir = self.config.project_dir
- with pytest.raises(UsageError):
- factory.get_tokenizer_for_db(self.config)
+ factory.get_tokenizer_for_db(self.config)
+ assert (self.config.project_dir / 'tokenizer').exists()
def test_load_missing_property(self, temp_db_cursor):
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for ICU tokenizer.
"""
import shutil
import yaml
+import itertools
import pytest
import nominatim.tokenizer.icu_rule_loader
from nominatim.db import properties
from nominatim.db.sql_preprocessor import SQLPreprocessor
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
from mock_icu_word_table import MockIcuWordTable
def _mk_analyser(norm=("[[:Punctuation:][:Space:]]+ > ' '",), trans=(':: upper()',),
variants=('~gasse -> gasse', 'street => st', ),
- sanitizers=[]):
+ sanitizers=[], with_housenumber=False,
+ with_postcode=False):
cfgstr = {'normalization': list(norm),
'sanitizers': sanitizers,
'transliteration': list(trans),
'token-analysis': [{'analyzer': 'generic',
'variants': [{'words': list(variants)}]}]}
+ if with_housenumber:
+ cfgstr['token-analysis'].append({'id': '@housenumber',
+ 'analyzer': 'housenumbers'})
+ if with_postcode:
+ cfgstr['token-analysis'].append({'id': '@postcode',
+ 'analyzer': 'postcodes'})
(test_config.project_dir / 'icu_tokenizer.yaml').write_text(yaml.dump(cfgstr))
tok.loader = nominatim.tokenizer.icu_rule_loader.ICURuleLoader(test_config)
anl.normalize_postcode('38 Б') == '38 Б'
-def test_update_postcodes_from_db_empty(analyzer, table_factory, word_table):
- table_factory('location_postcode', 'postcode TEXT',
- content=(('1234',), ('12 34',), ('AB23',), ('1234',)))
+class TestPostcodes:
- with analyzer() as anl:
- anl.update_postcodes_from_db()
+ @pytest.fixture(autouse=True)
+ def setup(self, analyzer, sql_functions):
+ sanitizers = [{'step': 'clean-postcodes'}]
+ with analyzer(sanitizers=sanitizers, with_postcode=True) as anl:
+ self.analyzer = anl
+ yield anl
- assert word_table.count() == 3
- assert word_table.get_postcodes() == {'1234', '12 34', 'AB23'}
+ def process_postcode(self, cc, postcode):
+ return self.analyzer.process_place(PlaceInfo({'country_code': cc,
+ 'address': {'postcode': postcode}}))
-def test_update_postcodes_from_db_add_and_remove(analyzer, table_factory, word_table):
- table_factory('location_postcode', 'postcode TEXT',
- content=(('1234',), ('45BC', ), ('XX45', )))
- word_table.add_postcode(' 1234', '1234')
- word_table.add_postcode(' 5678', '5678')
- with analyzer() as anl:
- anl.update_postcodes_from_db()
+ def test_update_postcodes_from_db_empty(self, table_factory, word_table):
+ table_factory('location_postcode', 'country_code TEXT, postcode TEXT',
+ content=(('de', '12345'), ('se', '132 34'),
+ ('bm', 'AB23'), ('fr', '12345')))
+
+ self.analyzer.update_postcodes_from_db()
+
+ assert word_table.count() == 5
+ assert word_table.get_postcodes() == {'12345', '132 34@132 34', 'AB 23@AB 23'}
+
+
+ def test_update_postcodes_from_db_ambigious(self, table_factory, word_table):
+ table_factory('location_postcode', 'country_code TEXT, postcode TEXT',
+ content=(('in', '123456'), ('sg', '123456')))
+
+ self.analyzer.update_postcodes_from_db()
+
+ assert word_table.count() == 3
+ assert word_table.get_postcodes() == {'123456', '123456@123 456'}
+
+
+ def test_update_postcodes_from_db_add_and_remove(self, table_factory, word_table):
+ table_factory('location_postcode', 'country_code TEXT, postcode TEXT',
+ content=(('ch', '1234'), ('bm', 'BC 45'), ('bm', 'XX45')))
+ word_table.add_postcode(' 1234', '1234')
+ word_table.add_postcode(' 5678', '5678')
+
+ self.analyzer.update_postcodes_from_db()
+
+ assert word_table.count() == 5
+ assert word_table.get_postcodes() == {'1234', 'BC 45@BC 45', 'XX 45@XX 45'}
+
+
+ def test_process_place_postcode_simple(self, word_table):
+ info = self.process_postcode('de', '12345')
+
+ assert info['postcode'] == '12345'
+
+ assert word_table.get_postcodes() == {'12345', }
+
+
+ def test_process_place_postcode_with_space(self, word_table):
+ info = self.process_postcode('in', '123 567')
+
+ assert info['postcode'] == '123567'
+
+ assert word_table.get_postcodes() == {'123567@123 567', }
- assert word_table.count() == 3
- assert word_table.get_postcodes() == {'1234', '45BC', 'XX45'}
def test_update_special_phrase_empty_table(analyzer, word_table):
@pytest.fixture(autouse=True)
def setup(self, analyzer, sql_functions):
- with analyzer(trans=(":: upper()", "'🜵' > ' '")) as anl:
+ hnr = {'step': 'clean-housenumbers',
+ 'filter-kind': ['housenumber', 'conscriptionnumber', 'streetnumber']}
+ with analyzer(trans=(":: upper()", "'🜵' > ' '"), sanitizers=[hnr]) as anl:
self.analyzer = anl
yield anl
assert word_table.get_postcodes() == {pcode, }
- @pytest.mark.parametrize('pcode', ['12:23', 'ab;cd;f', '123;836'])
- def test_process_place_bad_postcode(self, word_table, pcode):
- self.process_address(postcode=pcode)
-
- assert not word_table.get_postcodes()
-
-
@pytest.mark.parametrize('hnr', ['123a', '1', '101'])
def test_process_place_housenumbers_simple(self, hnr, getorcreate_hnr_id):
info = self.process_address(housenumber=hnr)
assert info['hnr_tokens'] == "{-1}"
- def test_process_place_housenumbers_lists(self, getorcreate_hnr_id):
- info = self.process_address(conscriptionnumber='1; 2;3')
-
- assert set(info['hnr'].split(';')) == set(('1', '2', '3'))
- assert info['hnr_tokens'] == "{-1,-2,-3}"
-
-
def test_process_place_housenumbers_duplicates(self, getorcreate_hnr_id):
info = self.process_address(housenumber='134',
conscriptionnumber='134',
def test_process_place_street(self):
+ self.analyzer.process_place(PlaceInfo({'name': {'name' : 'Grand Road'}}))
info = self.process_address(street='Grand Road')
- assert eval(info['street']) == self.name_token_set('GRAND', 'ROAD')
+ assert eval(info['street']) == self.name_token_set('#Grand Road')
+
+
+ def test_process_place_nonexisting_street(self):
+ info = self.process_address(street='Grand Road')
+
+ assert 'street' not in info
+
+
+ def test_process_place_multiple_street_tags(self):
+ self.analyzer.process_place(PlaceInfo({'name': {'name' : 'Grand Road',
+ 'ref': '05989'}}))
+ info = self.process_address(**{'street': 'Grand Road',
+ 'street:sym_ul': '05989'})
+
+ assert eval(info['street']) == self.name_token_set('#Grand Road', '#05989')
def test_process_place_street_empty(self):
assert 'street' not in info
+ def test_process_place_street_from_cache(self):
+ self.analyzer.process_place(PlaceInfo({'name': {'name' : 'Grand Road'}}))
+ self.process_address(street='Grand Road')
+
+ # request address again
+ info = self.process_address(street='Grand Road')
+
+ assert eval(info['street']) == self.name_token_set('#Grand Road')
+
+
def test_process_place_place(self):
info = self.process_address(place='Honu Lulu')
assert eval(info['place']) == self.name_token_set('HONU', 'LULU')
+ def test_process_place_place_extra(self):
+ info = self.process_address(**{'place:en': 'Honu Lulu'})
+
+ assert 'place' not in info
+
+
def test_process_place_place_empty(self):
info = self.process_address(place='🜵')
assert result == {'city': city, 'suburb': city, 'state': state}
+ def test_process_place_multiple_address_terms(self):
+ info = self.process_address(**{'city': 'Bruxelles', 'city:de': 'Brüssel'})
+
+ result = {k: eval(v) for k,v in info['addr'].items()}
+
+ assert result == {'city': self.name_token_set('Bruxelles')}
+
+
def test_process_place_address_terms_empty(self):
info = self.process_address(country='de', city=' ', street='Hauptstr',
full='right behind the church')
assert 'addr' not in info
+
+class TestPlaceHousenumberWithAnalyser:
+
+ @pytest.fixture(autouse=True)
+ def setup(self, analyzer, sql_functions):
+ hnr = {'step': 'clean-housenumbers',
+ 'filter-kind': ['housenumber', 'conscriptionnumber', 'streetnumber']}
+ with analyzer(trans=(":: upper()", "'🜵' > ' '"), sanitizers=[hnr], with_housenumber=True) as anl:
+ self.analyzer = anl
+ yield anl
+
+
+ @pytest.fixture
+ def getorcreate_hnr_id(self, temp_db_cursor):
+ temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION create_analyzed_hnr_id(norm_term TEXT, lookup_terms TEXT[])
+ RETURNS INTEGER AS $$
+ SELECT -nextval('seq_word')::INTEGER; $$ LANGUAGE SQL""")
+
+
+ def process_address(self, **kwargs):
+ return self.analyzer.process_place(PlaceInfo({'address': kwargs}))
+
+
+ def name_token_set(self, *expected_terms):
+ tokens = self.analyzer.get_word_token_info(expected_terms)
+ for token in tokens:
+ assert token[2] is not None, "No token for {0}".format(token)
+
+ return set((t[2] for t in tokens))
+
+
+ @pytest.mark.parametrize('hnr', ['123 a', '1', '101'])
+ def test_process_place_housenumbers_simple(self, hnr, getorcreate_hnr_id):
+ info = self.process_address(housenumber=hnr)
+
+ assert info['hnr'] == hnr.upper()
+ assert info['hnr_tokens'] == "{-1}"
+
+
+ def test_process_place_housenumbers_duplicates(self, getorcreate_hnr_id):
+ info = self.process_address(housenumber='134',
+ conscriptionnumber='134',
+ streetnumber='99a')
+
+ assert set(info['hnr'].split(';')) == set(('134', '99 A'))
+ assert info['hnr_tokens'] == "{-1,-2}"
+
+
+ def test_process_place_housenumbers_cached(self, getorcreate_hnr_id):
+ info = self.process_address(housenumber="45")
+ assert info['hnr_tokens'] == "{-1}"
+
+ info = self.process_address(housenumber="46")
+ assert info['hnr_tokens'] == "{-2}"
+
+ info = self.process_address(housenumber="41;45")
+ assert eval(info['hnr_tokens']) == {-1, -3}
+
+ info = self.process_address(housenumber="41")
+ assert eval(info['hnr_tokens']) == {-3}
+
+
+class TestUpdateWordTokens:
+
+ @pytest.fixture(autouse=True)
+ def setup(self, tokenizer_factory, table_factory, placex_table, word_table):
+ table_factory('search_name', 'place_id BIGINT, name_vector INT[]')
+ self.tok = tokenizer_factory()
+
+
+ @pytest.fixture
+ def search_entry(self, temp_db_cursor):
+ place_id = itertools.count(1000)
+
+ def _insert(*args):
+ temp_db_cursor.execute("INSERT INTO search_name VALUES (%s, %s)",
+ (next(place_id), list(args)))
+
+ return _insert
+
+
+ @pytest.fixture(params=['simple', 'analyzed'])
+ def add_housenumber(self, request, word_table):
+ if request.param == 'simple':
+ def _make(hid, hnr):
+ word_table.add_housenumber(hid, hnr)
+ elif request.param == 'analyzed':
+ def _make(hid, hnr):
+ word_table.add_housenumber(hid, [hnr])
+
+ return _make
+
+
+ @pytest.mark.parametrize('hnr', ('1a', '1234567', '34 5'))
+ def test_remove_unused_housenumbers(self, add_housenumber, word_table, hnr):
+ word_table.add_housenumber(1000, hnr)
+
+ assert word_table.count_housenumbers() == 1
+ self.tok.update_word_tokens()
+ assert word_table.count_housenumbers() == 0
+
+
+ def test_keep_unused_numeral_housenumbers(self, add_housenumber, word_table):
+ add_housenumber(1000, '5432')
+
+ assert word_table.count_housenumbers() == 1
+ self.tok.update_word_tokens()
+ assert word_table.count_housenumbers() == 1
+
+
+ def test_keep_housenumbers_from_search_name_table(self, add_housenumber, word_table, search_entry):
+ add_housenumber(9999, '5432a')
+ add_housenumber(9991, '9 a')
+ search_entry(123, 9999, 34)
+
+ assert word_table.count_housenumbers() == 2
+ self.tok.update_word_tokens()
+ assert word_table.count_housenumbers() == 1
+
+
+ def test_keep_housenumbers_from_placex_table(self, add_housenumber, word_table, placex_table):
+ add_housenumber(9999, '5432a')
+ add_housenumber(9990, '34z')
+ placex_table.add(housenumber='34z')
+ placex_table.add(housenumber='25432a')
+
+ assert word_table.count_housenumbers() == 2
+ self.tok.update_word_tokens()
+ assert word_table.count_housenumbers() == 1
+
+
+ def test_keep_housenumbers_from_placex_table_hnr_list(self, add_housenumber, word_table, placex_table):
+ add_housenumber(9991, '9 b')
+ add_housenumber(9990, '34z')
+ placex_table.add(housenumber='9 a;9 b;9 c')
+
+ assert word_table.count_housenumbers() == 2
+ self.tok.update_word_tokens()
+ assert word_table.count_housenumbers() == 1
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for converting a config file to ICU rules.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Test for legacy tokenizer.
"""
import pytest
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
from nominatim.tokenizer import legacy_tokenizer
from nominatim.db import properties
from nominatim.errors import UsageError
def test_config(project_env, tmp_path):
module_dir = tmp_path / 'module_src'
module_dir.mkdir()
- (module_dir / 'nominatim.so').write_text('TEST nomiantim.so')
+ (module_dir / 'nominatim.so').write_text('TEST nominatim.so')
project_env.lib_dir.module = module_dir
outfile = test_config.project_dir / 'module' / 'nominatim.so'
assert outfile.exists()
- assert outfile.read_text() == 'TEST nomiantim.so'
+ assert outfile.read_text() == 'TEST nominatim.so'
assert outfile.stat().st_mode == 33261
outfile = test_config.project_dir / 'module' / 'nominatim.so'
assert outfile.exists()
- assert outfile.read_text() == 'TEST nomiantim.so'
+ assert outfile.read_text() == 'TEST nominatim.so'
assert outfile.stat().st_mode == 33261
search_name_count > 0""") > 0
+def test_update_word_tokens(tokenizer_factory):
+ tok = tokenizer_factory()
+
+ # This is a noop and should just pass.
+ tok.update_word_tokens()
+
+
def test_normalize(analyzer):
assert analyzer.normalize('TEsT') == 'test'
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for execution of the sanitztion step.
"""
from nominatim.errors import UsageError
import nominatim.tokenizer.place_sanitizer as sanitizer
-from nominatim.indexer.place_info import PlaceInfo
+from nominatim.data.place_info import PlaceInfo
def test_placeinfo_clone_new_name():
assert not place.has_attr('whatever')
-def test_sanitizer_default():
- san = sanitizer.PlaceSanitizer([{'step': 'split-name-list'}])
+def test_sanitizer_default(def_config):
+ san = sanitizer.PlaceSanitizer([{'step': 'split-name-list'}], def_config)
name, address = san.process_names(PlaceInfo({'name': {'name:de:de': '1;2;3'},
'address': {'street': 'Bald'}}))
@pytest.mark.parametrize('rules', [None, []])
-def test_sanitizer_empty_list(rules):
- san = sanitizer.PlaceSanitizer(rules)
+def test_sanitizer_empty_list(def_config, rules):
+ san = sanitizer.PlaceSanitizer(rules, def_config)
name, address = san.process_names(PlaceInfo({'name': {'name:de:de': '1;2;3'}}))
assert all(isinstance(n, sanitizer.PlaceName) for n in name)
-def test_sanitizer_missing_step_definition():
+def test_sanitizer_missing_step_definition(def_config):
with pytest.raises(UsageError):
- san = sanitizer.PlaceSanitizer([{'id': 'split-name-list'}])
+ san = sanitizer.PlaceSanitizer([{'id': 'split-name-list'}], def_config)
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for special postcode analysis and variant generation.
+"""
+import pytest
+
+from icu import Transliterator
+
+import nominatim.tokenizer.token_analysis.postcodes as module
+from nominatim.data.place_name import PlaceName
+from nominatim.errors import UsageError
+
+DEFAULT_NORMALIZATION = """ :: NFD ();
+ '🜳' > ' ';
+ [[:Nonspacing Mark:] [:Cf:]] >;
+ :: lower ();
+ [[:Punctuation:][:Space:]]+ > ' ';
+ :: NFC ();
+ """
+
+DEFAULT_TRANSLITERATION = """ :: Latin ();
+ '🜵' > ' ';
+ """
+
+@pytest.fixture
+def analyser():
+ rules = { 'analyzer': 'postcodes'}
+ config = module.configure(rules, DEFAULT_NORMALIZATION)
+
+ trans = Transliterator.createFromRules("test_trans", DEFAULT_TRANSLITERATION)
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+
+ return module.create(norm, trans, config)
+
+
+def get_normalized_variants(proc, name):
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+ return proc.compute_variants(norm.transliterate(name).strip())
+
+
+@pytest.mark.parametrize('name,norm', [('12', '12'),
+ ('A 34 ', 'A 34'),
+ ('34-av', '34-AV')])
+def test_get_canonical_id(analyser, name, norm):
+ assert analyser.get_canonical_id(PlaceName(name=name, kind='', suffix='')) == norm
+
+
+@pytest.mark.parametrize('postcode,variants', [('12345', {'12345'}),
+ ('AB-998', {'ab 998', 'ab998'}),
+ ('23 FGH D3', {'23 fgh d3', '23fgh d3',
+ '23 fghd3', '23fghd3'})])
+def test_compute_variants(analyser, postcode, variants):
+ out = analyser.compute_variants(postcode)
+
+ assert len(out) == len(set(out))
+ assert set(out) == variants
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for import name normalisation and variant generation.
"""
rules = { 'analyzer': 'generic', 'variants': [{'words': variants}]}
if variant_only:
rules['mode'] = 'variant-only'
- config = module.configure(rules, DEFAULT_NORMALIZATION)
trans = Transliterator.createFromRules("test_trans", DEFAULT_TRANSLITERATION)
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+ config = module.configure(rules, norm, trans)
- return module.create(trans, config)
+ return module.create(norm, trans, config)
def get_normalized_variants(proc, name):
norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
- return proc.get_variants_ascii(norm.transliterate(name).strip())
+ return proc.compute_variants(norm.transliterate(name).strip())
def test_no_variants():
rules = { 'analyzer': 'generic' }
- config = module.configure(rules, DEFAULT_NORMALIZATION)
trans = Transliterator.createFromRules("test_trans", DEFAULT_TRANSLITERATION)
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+ config = module.configure(rules, norm, trans)
- proc = module.create(trans, config)
+ proc = module.create(norm, trans, config)
assert get_normalized_variants(proc, '大德!') == ['dà dé']
@staticmethod
def configure_rules(*variants):
rules = { 'analyzer': 'generic', 'variants': [{'words': variants}]}
- return module.configure(rules, DEFAULT_NORMALIZATION)
+ trans = Transliterator.createFromRules("test_trans", DEFAULT_TRANSLITERATION)
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+ return module.configure(rules, norm, trans)
def get_replacements(self, *variants):
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for generic token analysis, mutation part.
+"""
+import pytest
+
+from icu import Transliterator
+
+import nominatim.tokenizer.token_analysis.generic as module
+from nominatim.errors import UsageError
+
+DEFAULT_NORMALIZATION = """ '🜳' > ' ';
+ [[:Nonspacing Mark:] [:Cf:]] >;
+ :: lower ();
+ [[:Punctuation:][:Space:]]+ > ' '
+ """
+
+DEFAULT_TRANSLITERATION = """ :: Latin ();
+ '🜵' > ' ';
+ """
+
+class TestMutationNoVariants:
+
+ def make_analyser(self, *mutations):
+ rules = { 'analyzer': 'generic',
+ 'mutations': [ {'pattern': m[0], 'replacements': m[1]}
+ for m in mutations]
+ }
+ trans = Transliterator.createFromRules("test_trans", DEFAULT_TRANSLITERATION)
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+ config = module.configure(rules, norm, trans)
+
+ self.analysis = module.create(norm, trans, config)
+
+
+ def variants(self, name):
+ norm = Transliterator.createFromRules("test_norm", DEFAULT_NORMALIZATION)
+ return set(self.analysis.compute_variants(norm.transliterate(name).strip()))
+
+
+ @pytest.mark.parametrize('pattern', ('(capture)', ['a list']))
+ def test_bad_pattern(self, pattern):
+ with pytest.raises(UsageError):
+ self.make_analyser((pattern, ['b']))
+
+
+ @pytest.mark.parametrize('replacements', (None, 'a string'))
+ def test_bad_replacement(self, replacements):
+ with pytest.raises(UsageError):
+ self.make_analyser(('a', replacements))
+
+
+ def test_simple_replacement(self):
+ self.make_analyser(('a', ['b']))
+
+ assert self.variants('none') == {'none'}
+ assert self.variants('abba') == {'bbbb'}
+ assert self.variants('2 aar') == {'2 bbr'}
+
+
+ def test_multichar_replacement(self):
+ self.make_analyser(('1 1', ['1 1 1']))
+
+ assert self.variants('1 1456') == {'1 1 1456'}
+ assert self.variants('1 1 1') == {'1 1 1 1'}
+
+
+ def test_removement_replacement(self):
+ self.make_analyser((' ', [' ', '']))
+
+ assert self.variants('A 345') == {'a 345', 'a345'}
+ assert self.variants('a g b') == {'a g b', 'ag b', 'a gb', 'agb'}
+
+
+ def test_regex_pattern(self):
+ self.make_analyser(('[^a-z]+', ['XXX', ' ']))
+
+ assert self.variants('a-34n12') == {'aXXXnXXX', 'aXXXn', 'a nXXX', 'a n'}
+
+
+ def test_multiple_mutations(self):
+ self.make_analyser(('ä', ['ä', 'ae']), ('ö', ['ö', 'oe']))
+
+ assert self.variants('Längenöhr') == {'längenöhr', 'laengenöhr',
+ 'längenoehr', 'laengenoehr'}
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
import pytest
@pytest.fixture
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for functions to add additional data to the database.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for maintenance and analysis functions.
"""
from nominatim.errors import UsageError
from nominatim.tools import admin
+from nominatim.tokenizer import factory
@pytest.fixture(autouse=True)
-def create_placex_table(placex_table):
+def create_placex_table(project_env, tokenizer_mock, temp_db_cursor, placex_table):
""" All tests in this module require the placex table to be set up.
"""
+ temp_db_cursor.execute("DROP TYPE IF EXISTS prepare_update_info CASCADE")
+ temp_db_cursor.execute("""CREATE TYPE prepare_update_info AS (
+ name HSTORE,
+ address HSTORE,
+ rank_address SMALLINT,
+ country_code TEXT,
+ class TEXT,
+ type TEXT,
+ linked_place_id BIGINT
+ )""")
+ temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION placex_indexing_prepare(p placex,
+ OUT result prepare_update_info)
+ AS $$
+ BEGIN
+ result.address := p.address;
+ result.name := p.name;
+ result.class := p.class;
+ result.type := p.type;
+ result.country_code := p.country_code;
+ result.rank_address := p.rank_address;
+ END;
+ $$ LANGUAGE plpgsql STABLE;
+ """)
+ factory.create_tokenizer(project_env)
-def test_analyse_indexing_no_objects(temp_db_conn):
+def test_analyse_indexing_no_objects(project_env):
with pytest.raises(UsageError):
- admin.analyse_indexing(temp_db_conn)
+ admin.analyse_indexing(project_env)
@pytest.mark.parametrize("oid", ['1234', 'N123a', 'X123'])
-def test_analyse_indexing_bad_osmid(temp_db_conn, oid):
+def test_analyse_indexing_bad_osmid(project_env, oid):
with pytest.raises(UsageError):
- admin.analyse_indexing(temp_db_conn, osm_id=oid)
+ admin.analyse_indexing(project_env, osm_id=oid)
-def test_analyse_indexing_unknown_osmid(temp_db_conn):
+def test_analyse_indexing_unknown_osmid(project_env):
with pytest.raises(UsageError):
- admin.analyse_indexing(temp_db_conn, osm_id='W12345674')
+ admin.analyse_indexing(project_env, osm_id='W12345674')
-def test_analyse_indexing_with_place_id(temp_db_conn, temp_db_cursor):
+def test_analyse_indexing_with_place_id(project_env, temp_db_cursor):
temp_db_cursor.execute("INSERT INTO placex (place_id) VALUES(12345)")
- admin.analyse_indexing(temp_db_conn, place_id=12345)
+ admin.analyse_indexing(project_env, place_id=12345)
-def test_analyse_indexing_with_osm_id(temp_db_conn, temp_db_cursor):
+def test_analyse_indexing_with_osm_id(project_env, temp_db_cursor):
temp_db_cursor.execute("""INSERT INTO placex (place_id, osm_type, osm_id)
VALUES(9988, 'N', 10000)""")
- admin.analyse_indexing(temp_db_conn, osm_id='N10000')
+ admin.analyse_indexing(project_env, osm_id='N10000')
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for database integrity checks.
"""
+++ /dev/null
-"""
-Tests for function that handle country properties.
-"""
-
-import pytest
-
-from nominatim.tools import country_info
-
-@pytest.fixture(autouse=True)
-def read_config(def_config):
- country_info.setup_country_config(def_config)
-
-@pytest.mark.parametrize("no_partitions", (True, False))
-def test_setup_country_tables(src_dir, temp_db_with_extensions, dsn, temp_db_cursor,
- def_config, no_partitions):
- country_info.setup_country_tables(dsn, src_dir / 'data', no_partitions)
-
- assert temp_db_cursor.table_exists('country_name')
- assert temp_db_cursor.table_rows('country_name') == \
- temp_db_cursor.scalar('SELECT count(DISTINCT country_code) FROM country_name')
-
- partitions = temp_db_cursor.row_set("SELECT DISTINCT partition FROM country_name")
- if no_partitions:
- assert partitions == {(0, )}
- else:
- assert len(partitions) > 10
-
- assert temp_db_cursor.table_exists('country_osm_grid')
- assert temp_db_cursor.table_rows('country_osm_grid') > 100
-
-
-@pytest.mark.parametrize("languages", (None, ' fr,en'))
-def test_create_country_names(temp_db_with_extensions, temp_db_conn, temp_db_cursor,
- table_factory, tokenizer_mock, languages):
-
- table_factory('country_name', 'country_code varchar(2), name hstore',
- content=(('us', '"name"=>"us1","name:af"=>"us2"'),
- ('fr', '"name"=>"Fra", "name:en"=>"Fren"')))
-
- assert temp_db_cursor.scalar("SELECT count(*) FROM country_name") == 2
-
- tokenizer = tokenizer_mock()
-
- country_info.create_country_names(temp_db_conn, tokenizer, languages)
-
- assert len(tokenizer.analyser_cache['countries']) == 2
-
- result_set = {k: set(v.values()) for k, v in tokenizer.analyser_cache['countries']}
-
- if languages:
- assert result_set == {'us' : set(('us', 'us1', 'United States')),
- 'fr' : set(('fr', 'Fra', 'Fren'))}
- else:
- assert result_set == {'us' : set(('us', 'us1', 'us2', 'United States')),
- 'fr' : set(('fr', 'Fra', 'Fren'))}
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for functions to import a new database.
"""
@pytest.mark.parametrize("threads", (1, 5))
def test_load_data(dsn, place_row, placex_table, osmline_table,
- word_table, temp_db_cursor, threads):
+ temp_db_cursor, threads):
for func in ('precompute_words', 'getorcreate_housenumber_id', 'make_standard_name'):
temp_db_cursor.execute(f"""CREATE FUNCTION {func} (src TEXT)
RETURNS TEXT AS $$ SELECT 'a'::TEXT $$ LANGUAGE SQL
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for tools.exec_utils module.
"""
@staticmethod
def test_fail_on_error_output(tmp_path):
- (tmp_path / 'website' / 'bad.php').write_text("<?php\nfwrite(STDERR, 'WARNING'.PHP_EOL);")
+ # Starting PHP 8 the PHP CLI no longer has STDERR defined as constant
+ php = """
+ <?php
+ if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'wb'));
+ fwrite(STDERR, 'WARNING'.PHP_EOL);
+ """
+ (tmp_path / 'website' / 'bad.php').write_text(php)
assert exec_utils.run_api_script('bad', tmp_path) == 1
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for freeze functions (removing unused database parts).
"""
assert not temp_db_cursor.table_exists(table)
def test_drop_flatnode_file_no_file():
- freeze.drop_flatnode_file('')
+ freeze.drop_flatnode_file(None)
def test_drop_flatnode_file_file_already_gone(tmp_path):
- freeze.drop_flatnode_file(str(tmp_path / 'something.store'))
+ freeze.drop_flatnode_file(tmp_path / 'something.store')
def test_drop_flatnode_file_delte(tmp_path):
flatfile = tmp_path / 'flatnode.store'
flatfile.write_text('Some content')
- freeze.drop_flatnode_file(str(flatfile))
+ freeze.drop_flatnode_file(flatfile)
assert not flatfile.exists()
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for import special phrases methods
of the class SPImporter.
from cursor import CursorForTesting
@pytest.fixture
-def testfile_dir(src_dir):
- return src_dir / 'test' / 'testfiles'
-
-
-@pytest.fixture
-def sp_importer(temp_db_conn, def_config):
+def sp_importer(temp_db_conn, def_config, monkeypatch):
"""
Return an instance of SPImporter.
"""
- loader = SPWikiLoader(def_config, ['en'])
+ monkeypatch.setenv('NOMINATIM_LANGUAGES', 'en')
+ loader = SPWikiLoader(def_config)
return SPImporter(def_config, temp_db_conn, loader)
"""
pairs = set([('class1', 'type1'), ('class2', 'type2')])
- sp_importer._create_place_classtype_table_and_indexes(pairs)
+ sp_importer._create_classtype_table_and_indexes(pairs)
for pair in pairs:
assert check_table_exist(temp_db_conn, pair[0], pair[1])
table_factory('place_classtype_amenity_animal_shelter')
table_factory('place_classtype_wrongclass_wrongtype')
- monkeypatch.setattr('nominatim.tools.special_phrases.sp_wiki_loader.SPWikiLoader._get_wiki_content',
- lambda self, lang: xml_wiki_content)
+ monkeypatch.setattr('nominatim.tools.special_phrases.sp_wiki_loader._get_wiki_content',
+ lambda lang: xml_wiki_content)
tokenizer = tokenizer_mock()
sp_importer.import_phrases(tokenizer, should_replace)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for migration functions
"""
from nominatim.errors import UsageError
import nominatim.version
+from mock_legacy_word_table import MockLegacyWordTable
+
class DummyTokenizer:
def update_sql_functions(self, config):
monkeypatch.setattr(migration.tokenizer_factory, 'get_tokenizer_for_db',
lambda *args: DummyTokenizer())
+@pytest.fixture
+def legacy_word_table(temp_db_conn):
+ return MockLegacyWordTable(temp_db_conn)
+
def test_no_migration_old_versions(temp_db_with_extensions, table_factory, def_config):
table_factory('country_name', 'name HSTORE, country_code TEXT')
def test_change_housenumber_transliteration(temp_db_conn, temp_db_cursor,
- word_table, placex_table):
+ legacy_word_table, placex_table):
placex_table.add(housenumber='3A')
temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION make_standard_name(name TEXT)
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for functions to maintain the artificial postcode table.
"""
import pytest
from nominatim.tools import postcodes
+from nominatim.data import country_info
import dummy_tokenizer
class MockPostcodeTable:
def tokenizer():
return dummy_tokenizer.DummyTokenizer(None, None)
+
@pytest.fixture
-def postcode_table(temp_db_conn, placex_table, word_table):
+def postcode_table(def_config, temp_db_conn, placex_table):
+ country_info.setup_country_config(def_config)
return MockPostcodeTable(temp_db_conn)
+@pytest.fixture
+def insert_implicit_postcode(placex_table, place_row):
+ """
+ Inserts data into the placex and place table
+ which can then be used to compute one postcode.
+ """
+ def _insert_implicit_postcode(osm_id, country, geometry, address):
+ placex_table.add(osm_id=osm_id, country=country, geom=geometry)
+ place_row(osm_id=osm_id, geom='SRID=4326;'+geometry, address=address)
+
+ return _insert_implicit_postcode
+
+
def test_postcodes_empty(dsn, postcode_table, place_table,
tmp_path, tokenizer):
postcodes.update_postcodes(dsn, tmp_path, tokenizer)
table_factory('place')
assert postcodes.can_compute(dsn)
+
def test_no_placex_entry(dsn, tmp_path, temp_db_cursor, place_row, postcode_table, tokenizer):
#Rewrite the get_country_code function to verify its execution.
temp_db_cursor.execute("""
CREATE OR REPLACE FUNCTION get_country_code(place geometry)
RETURNS TEXT AS $$ BEGIN
- RETURN 'fr';
+ RETURN 'yy';
END; $$ LANGUAGE plpgsql;
""")
place_row(geom='SRID=4326;POINT(10 12)', address=dict(postcode='AB 4511'))
postcodes.update_postcodes(dsn, tmp_path, tokenizer)
- assert postcode_table.row_set == {('fr', 'AB 4511', 10, 12)}
+ assert postcode_table.row_set == {('yy', 'AB 4511', 10, 12)}
-@pytest.fixture
-def insert_implicit_postcode(placex_table, place_row):
- """
- Inserts data into the placex and place table
- which can then be used to compute one postcode.
- """
- def _insert_implicit_postcode(osm_id, country, geometry, address):
- placex_table.add(osm_id=osm_id, country=country, geom=geometry)
- place_row(osm_id=osm_id, geom='SRID=4326;'+geometry, address=address)
- return _insert_implicit_postcode
+def test_discard_badly_formatted_postcodes(dsn, tmp_path, temp_db_cursor, place_row, postcode_table, tokenizer):
+ #Rewrite the get_country_code function to verify its execution.
+ temp_db_cursor.execute("""
+ CREATE OR REPLACE FUNCTION get_country_code(place geometry)
+ RETURNS TEXT AS $$ BEGIN
+ RETURN 'fr';
+ END; $$ LANGUAGE plpgsql;
+ """)
+ place_row(geom='SRID=4326;POINT(10 12)', address=dict(postcode='AB 4511'))
+ postcodes.update_postcodes(dsn, tmp_path, tokenizer)
+
+ assert not postcode_table.row_set
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Test for various refresh functions.
"""
AS $$ SELECT 0.1::float, 'foo'::text $$ LANGUAGE SQL""")
refresh.recompute_importance(temp_db_conn)
+
+
+@pytest.mark.parametrize('osm_type', ('N', 'W', 'R'))
+def test_invalidate_osm_object_simple(placex_table, osm_type, temp_db_conn, temp_db_cursor):
+ placex_table.add(osm_type=osm_type, osm_id=57283)
+
+ refresh.invalidate_osm_object(osm_type, 57283, temp_db_conn, recursive=False)
+ temp_db_conn.commit()
+
+ assert 2 == temp_db_cursor.scalar("""SELECT indexed_status FROM placex
+ WHERE osm_type = %s and osm_id = %s""",
+ (osm_type, 57283))
+
+
+def test_invalidate_osm_object_nonexisting_simple(placex_table, temp_db_conn, temp_db_cursor):
+ placex_table.add(osm_type='W', osm_id=57283)
+
+ refresh.invalidate_osm_object('N', 57283, temp_db_conn, recursive=False)
+ temp_db_conn.commit()
+
+ assert 0 == temp_db_cursor.scalar("""SELECT count(*) FROM placex
+ WHERE indexed_status > 0""")
+
+
+@pytest.mark.parametrize('osm_type', ('N', 'W', 'R'))
+def test_invalidate_osm_object_recursive(placex_table, osm_type, temp_db_conn, temp_db_cursor):
+ placex_table.add(osm_type=osm_type, osm_id=57283)
+
+ temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION place_force_update(placeid BIGINT)
+ RETURNS BOOLEAN AS $$
+ BEGIN
+ UPDATE placex SET indexed_status = 522
+ WHERE place_id = placeid;
+ RETURN TRUE;
+ END;
+ $$
+ LANGUAGE plpgsql;""")
+
+ refresh.invalidate_osm_object(osm_type, 57283, temp_db_conn)
+ temp_db_conn.commit()
+
+ assert 522 == temp_db_cursor.scalar("""SELECT indexed_status FROM placex
+ WHERE osm_type = %s and osm_id = %s""",
+ (osm_type, 57283))
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for function for importing address ranks.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for creating PL/pgSQL functions for Nominatim.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for setting up the website scripts.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for replication functionality.
"""
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for methods of the SPCsvLoader class.
"""
from nominatim.errors import UsageError
from nominatim.tools.special_phrases.sp_csv_loader import SPCsvLoader
+from nominatim.tools.special_phrases.special_phrase import SpecialPhrase
-def test_parse_csv(sp_csv_loader):
+@pytest.fixture
+def sp_csv_loader(src_dir):
"""
- Test method parse_csv()
- Should return the right SpecialPhrase objects.
+ Return an instance of SPCsvLoader.
"""
- phrases = sp_csv_loader.parse_csv()
- assert check_phrases_content(phrases)
+ csv_path = (src_dir / 'test' / 'testdata' / 'sp_csv_test.csv').resolve()
+ loader = SPCsvLoader(csv_path)
+ return loader
+
-def test_next(sp_csv_loader):
+def test_generate_phrases(sp_csv_loader):
"""
- Test objects returned from the next() method.
- It should return all SpecialPhrases objects of
- the sp_csv_test.csv special phrases.
+ Test method parse_csv()
+ Should return the right SpecialPhrase objects.
"""
- phrases = next(sp_csv_loader)
- assert check_phrases_content(phrases)
+ phrases = list(sp_csv_loader.generate_phrases())
+
+ assert len(phrases) == 42
+ assert len(set(phrases)) == 41
+
+ assert SpecialPhrase('Billboard', 'advertising', 'billboard', '-') in phrases
+ assert SpecialPhrase('Zip Lines', 'aerialway', 'zip_line', '-') in phrases
-def test_check_csv_validity(sp_csv_loader):
+
+def test_invalid_cvs_file():
"""
Test method check_csv_validity()
It should raise an exception when file with a
different exception than .csv is given.
"""
- sp_csv_loader.csv_path = 'test.csv'
- sp_csv_loader.check_csv_validity()
- sp_csv_loader.csv_path = 'test.wrong'
- with pytest.raises(UsageError):
- assert sp_csv_loader.check_csv_validity()
-
-def check_phrases_content(phrases):
- """
- Asserts that the given phrases list contains
- the right phrases of the sp_csv_test.csv special phrases.
- """
- return len(phrases) > 1 \
- and any(p.p_label == 'Billboard'
- and p.p_class == 'advertising'
- and p.p_type == 'billboard'
- and p.p_operator == '-' for p in phrases) \
- and any(p.p_label == 'Zip Lines'
- and p.p_class == 'aerialway'
- and p.p_type == 'zip_line'
- and p.p_operator == '-' for p in phrases)
+ loader = SPCsvLoader('test.wrong')
-@pytest.fixture
-def sp_csv_loader(src_dir):
- """
- Return an instance of SPCsvLoader.
- """
- csv_path = (src_dir / 'test' / 'testdata' / 'sp_csv_test.csv').resolve()
- loader = SPCsvLoader(csv_path)
- return loader
+ with pytest.raises(UsageError, match='not a csv file'):
+ next(loader.generate_phrases())
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Tests for methods of the SPWikiLoader class.
"""
import pytest
from nominatim.tools.special_phrases.sp_wiki_loader import SPWikiLoader
-@pytest.fixture
-def xml_wiki_content(src_dir):
- """
- return the content of the static xml test file.
- """
- xml_test_content = src_dir / 'test' / 'testdata' / 'special_phrases_test_content.txt'
- return xml_test_content.read_text()
-
@pytest.fixture
-def sp_wiki_loader(monkeypatch, def_config, xml_wiki_content):
+def sp_wiki_loader(src_dir, monkeypatch, def_config):
"""
Return an instance of SPWikiLoader.
"""
- loader = SPWikiLoader(def_config, ['en'])
- monkeypatch.setattr('nominatim.tools.special_phrases.sp_wiki_loader.SPWikiLoader._get_wiki_content',
- lambda self, lang: xml_wiki_content)
- return loader
+ monkeypatch.setenv('NOMINATIM_LANGUAGES', 'en')
+ loader = SPWikiLoader(def_config)
+ def _mock_wiki_content(lang):
+ xml_test_content = src_dir / 'test' / 'testdata' / 'special_phrases_test_content.txt'
+ return xml_test_content.read_text()
-def test_parse_xml(sp_wiki_loader, xml_wiki_content):
- """
- Test method parse_xml()
- Should return the right SpecialPhrase objects.
- """
- phrases = sp_wiki_loader.parse_xml(xml_wiki_content)
- check_phrases_content(phrases)
+ monkeypatch.setattr('nominatim.tools.special_phrases.sp_wiki_loader._get_wiki_content',
+ _mock_wiki_content)
+ return loader
-def test_next(sp_wiki_loader):
+def test_generate_phrases(sp_wiki_loader):
"""
Test objects returned from the next() method.
It should return all SpecialPhrases objects of
the 'en' special phrases.
"""
- phrases = next(sp_wiki_loader)
- check_phrases_content(phrases)
+ phrases = list(sp_wiki_loader.generate_phrases())
-def check_phrases_content(phrases):
- """
- Asserts that the given phrases list contains
- the right phrases of the 'en' special phrases.
- """
assert set((p.p_label, p.p_class, p.p_type, p.p_operator) for p in phrases) ==\
{('Zip Line', 'aerialway', 'zip_line', '-'),
('Zip Lines', 'aerialway', 'zip_line', '-'),
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
"""
Test for tiger data function
"""
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
+"""
+Tests for centroid computation.
+"""
+import pytest
+
+from nominatim.utils.centroid import PointsCentroid
+
+def test_empty_set():
+ c = PointsCentroid()
+
+ with pytest.raises(ValueError, match='No points'):
+ c.centroid()
+
+
+@pytest.mark.parametrize("centroid", [(0,0), (-1, 3), [0.0000032, 88.4938]])
+def test_one_point_centroid(centroid):
+ c = PointsCentroid()
+
+ c += centroid
+
+ assert len(c.centroid()) == 2
+ assert c.centroid() == (pytest.approx(centroid[0]), pytest.approx(centroid[1]))
+
+
+def test_multipoint_centroid():
+ c = PointsCentroid()
+
+ c += (20.0, -10.0)
+ assert c.centroid() == (pytest.approx(20.0), pytest.approx(-10.0))
+ c += (20.2, -9.0)
+ assert c.centroid() == (pytest.approx(20.1), pytest.approx(-9.5))
+ c += (20.2, -9.0)
+ assert c.centroid() == (pytest.approx(20.13333), pytest.approx(-9.333333))
+
+
+def test_manypoint_centroid():
+ c = PointsCentroid()
+
+ for _ in range(10000):
+ c += (4.564732, -0.000034)
+
+ assert c.centroid() == (pytest.approx(4.564732), pytest.approx(-0.000034))
+
+
+@pytest.mark.parametrize("param", ["aa", None, 5, [1, 2, 3], (3, None), ("a", 3.9)])
+def test_add_non_tuple(param):
+ c = PointsCentroid()
+
+ with pytest.raises(ValueError, match='2-element tuples'):
+ c += param
+++ /dev/null
-CXXFLAGS += -O3
-#CXXFLAGS += -g
-CXXFLAGS += -std=c++11 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-CXXFLAGS += -I../../../../libosmium/include
-
-OS:=$(shell uname -s)
-ifeq ($(OS),Darwin)
-CXXFLAGS += -stdlib=libc++
-LDFLAGS += -stdlib=libc++
-endif
-
-CXXFLAGS_WARNINGS := -Wall -Wextra -pedantic -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wsign-promo -Wold-style-cast
-
-LIB_EXPAT := -lexpat
-LIB_PBF := -pthread -lz -lprotobuf-lite -losmpbf
-LIB_GZIP := -lz
-LIB_BZIP2 := -lbz2
-
-LIB_IO := $(LIB_EXPAT) $(LIB_PBF) $(LIB_GZIP) $(LIB_BZIP2)
-
-all:
-
-osm2wkt: osm2wkt.cc
- $(CXX) $(CXXFLAGS) $(CXXFLAGS_WARNINGS) -o $@ $< $(LDFLAGS) $(LIB_IO)
-
-scenarios: osm2wkt
- ./make_scenes.sh
+++ /dev/null
-#!/bin/bash -e
-#
-# Regenerates wkts for scenarios.
-#
-
-datadir="$( cd "$( dirname "$0" )" && cd ../data && pwd )"
-
-if [ ! -d "$datadir" ]; then
- echo "Cannot find data dir.";
- exit -1;
-fi
-
-echo "Using datadir $datadir"
-cd $datadir
-
-# remove old wkts
-rm -f $datadir/*.wkt
-
-# create wkts from SQL scripts
-for fl in *.sql; do
- echo "Processing $fl.."
- cat $fl | psql -d nominatim -t -o ${fl/.sql/.wkt}
-done
-
-# create wkts from .osm files
-for fl in *.osm; do
- echo "Processing $fl.."
- ../bin/osm2wkt $fl
-done
+++ /dev/null
-
-// The code in this file is released into the Public Domain.
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <unordered_map>
-
-#include <osmium/area/assembler.hpp>
-#include <osmium/area/multipolygon_manager.hpp>
-
-#include <osmium/geom/wkt.hpp>
-#include <osmium/handler.hpp>
-#include <osmium/handler/node_locations_for_ways.hpp>
-#include <osmium/io/any_input.hpp>
-#include <osmium/visitor.hpp>
-#include <osmium/object_pointer_collection.hpp>
-#include <osmium/index/map/sparse_mem_array.hpp>
-#include <osmium/osm/object_comparisons.hpp>
-
-typedef osmium::index::map::SparseMemArray<osmium::unsigned_object_id_type, osmium::Location> index_type;
-
-typedef osmium::handler::NodeLocationsForWays<index_type, index_type> location_handler_type;
-
-struct AbsoluteIdHandler : public osmium::handler::Handler {
-
- enum { BASE = 100000000 };
-
- void node(osmium::Node& o) {
- if (o.id() < 0)
- o.set_id(BASE-o.id());
- }
-
- void way(osmium::Way& o) {
- if (o.id() < 0)
- o.set_id(BASE-o.id());
-
- for (osmium::NodeRef &n: o.nodes())
- if (n.ref() < 0)
- n.set_ref(BASE-n.ref());
- }
-
- void relation(osmium::Relation& o) {
- if (o.id() < 0)
- o.set_id(BASE-o.id());
-
- for (auto &m : o.members())
- if (m.ref() < 0)
- m.set_ref(BASE-m.ref());
- }
-};
-
-
-class ExportToWKTHandler : public osmium::handler::Handler {
-
- osmium::geom::WKTFactory<> m_factory;
- std::unordered_map<std::string, std::ofstream> m_files;
-
-public:
-
- void node(const osmium::Node& node) {
- print_geometry(node.tags(), m_factory.create_point(node));
- }
-
- void way(const osmium::Way& way) {
- if (!way.nodes().empty()
- && (!way.is_closed() || !way.tags().get_value_by_key("area")))
- print_geometry(way.tags(), m_factory.create_linestring(way));
- }
-
- void area(const osmium::Area& area) {
- if (!area.from_way() || area.tags().get_value_by_key("area"))
- print_geometry(area.tags(), m_factory.create_multipolygon(area));
- }
-
- void close() {
- for (auto& fd : m_files)
- fd.second.close();
- }
-
-private:
- void print_geometry(const osmium::TagList& tags, const std::string& wkt) {
- const char* scenario = tags.get_value_by_key("test:section");
- const char* id = tags.get_value_by_key("test:id");
- if (scenario && id) {
- auto& fd = m_files[std::string(scenario)];
- if (!fd.is_open())
- fd.open(std::string(scenario) + ".wkt");
- fd << id << " | " << wkt << "\n";
- }
- }
-
-}; // class ExportToWKTHandler
-
-int main(int argc, char* argv[]) {
- if (argc != 2) {
- std::cerr << "Usage: " << argv[0] << " OSMFILE\n";
- exit(1);
- }
-
- osmium::io::File input_file{argv[1]};
-
- // need to sort the data first and make ids absolute
- std::cerr << "Read file...\n";
- osmium::io::Reader reader{input_file};
- std::vector<osmium::memory::Buffer> changes;
- osmium::ObjectPointerCollection objects;
- AbsoluteIdHandler abshandler;
- while (osmium::memory::Buffer buffer = reader.read()) {
- osmium::apply(buffer, abshandler, objects);
- changes.push_back(std::move(buffer));
- }
- reader.close();
-
- std::cerr << "Sort file...\n";
- objects.sort(osmium::object_order_type_id_version());
-
- osmium::area::Assembler::config_type assembler_config;
- osmium::area::MultipolygonManager<osmium::area::Assembler> mp_manager{assembler_config};
-
- std::cerr << "Pass 1...\n";
- index_type index_pos;
- index_type index_neg;
- location_handler_type location_handler(index_pos, index_neg);
- ExportToWKTHandler export_handler;
- osmium::apply(objects.begin(), objects.end(), location_handler,
- export_handler, mp_manager);
- mp_manager.prepare_for_lookup();
- std::cerr << "Pass 1 done\n";
-
-
- std::cerr << "Pass 2...\n";
- osmium::apply(objects.cbegin(), objects.cend(), mp_manager.handler([&export_handler](osmium::memory::Buffer&& buffer) {
- osmium::apply(buffer, export_handler);
- }));
-
- export_handler.close();
- std::cerr << "Pass 2 done\n";
-}
-
-
+++ /dev/null
-c1:N | POINT(73.8419358 60.0763887)
-c1:E | POINT(73.8393798 60.0488584)
-c0 | POINT(73.8679209 60.0588527)
-c2:N | POINT(73.896249 60.0631047)
-c2:S | POINT(73.8932671 60.0434346)
-c2:E | POINT(73.9162704 60.0471569)
-c1:W | POINT(73.8990179 60.055876)
-c2:W | POINT(73.8568453 60.0597032)
-w2N | LINESTRING(73.8836825 60.0612977,73.8880489 60.0598094,73.8953972 60.0601283,73.9033844 60.058959)
-w1W:2W | LINESTRING(73.8523722 60.0497092,73.85791 60.0520485,73.8617439 60.0573645,73.8706896 60.0554508)
-building:w2N | LINESTRING(73.8963618 60.0604955,73.8961463 60.0602249,73.8967091 60.0601132,73.8969246 60.0603838,73.8963618 60.0604955)
-b0 | MULTIPOLYGON(((73.8012539 60.0573645,73.8225532 60.0371591,73.8493903 60.035457,73.8843212 60.0356698,73.9049815 60.0358825,73.9192521 60.0356698,73.9260679 60.0514105,73.9216633 60.0591056,73.9141402 60.0722448,73.8804873 60.070332,73.8719676 60.0917916,73.8255351 60.0875433,73.8084956 60.0758576,73.8012539 60.0573645)))
-b1:N | MULTIPOLYGON(((73.8012539 60.0573645,73.8447045 60.0611915,73.8692843 60.0674706,73.8804873 60.070332,73.8719676 60.0917916,73.8255351 60.0875433,73.8084956 60.0758576,73.8012539 60.0573645)))
-b2:S | MULTIPOLYGON(((73.8694117 60.0507725,73.8843212 60.0356698,73.9049815 60.0358825,73.9075368 60.0523758,73.8830432 60.0517295,73.8694117 60.0507725)))
-b1:W | MULTIPOLYGON(((73.8012539 60.0573645,73.8225532 60.0371591,73.8493903 60.035457,73.8843212 60.0356698,73.8694117 60.0507725,73.8447045 60.0611915,73.8012539 60.0573645)))
-b1:E | MULTIPOLYGON(((73.8447045 60.0611915,73.8694117 60.0507725,73.8843212 60.0356698,73.9049815 60.0358825,73.9192521 60.0356698,73.9260679 60.0514105,73.9216633 60.0591056,73.9141402 60.0722448,73.8804873 60.070332,73.8692843 60.0674706,73.8447045 60.0611915)))
-b2:E | MULTIPOLYGON(((73.9049815 60.0358825,73.9192521 60.0356698,73.9260679 60.0514105,73.9216633 60.0591056,73.9075368 60.0523758,73.9049815 60.0358825)))
-b2:N | MULTIPOLYGON(((73.8692843 60.0674706,73.8830432 60.0517295,73.9075368 60.0523758,73.9216633 60.0591056,73.9141402 60.0722448,73.8804873 60.070332,73.8692843 60.0674706)))
-b2:W | MULTIPOLYGON(((73.8447045 60.0611915,73.8694117 60.0507725,73.8830432 60.0517295,73.8692843 60.0674706,73.8447045 60.0611915)))
+++ /dev/null
-<?xml version='1.0' encoding='UTF-8'?>
-<osm version='0.6' upload='false' generator='JOSM'>
- <node id='-30473' action='modify' lat='60.07585759191' lon='73.80849562007' />
- <node id='-30475' action='modify' lat='60.05736451143' lon='73.80125385169' />
- <node id='-30477' action='modify' lat='60.0371590755' lon='73.82255317047' />
- <node id='-30479' action='modify' lat='60.03545700058' lon='73.84939031213' />
- <node id='-30481' action='modify' lat='60.03566976474' lon='73.88432119493' />
- <node id='-30483' action='modify' lat='60.03566976474' lon='73.91925207773' />
- <node id='-30485' action='modify' lat='60.05141051018' lon='73.92606785974' />
- <node id='-30487' action='modify' lat='60.07224481634' lon='73.91414024122' />
- <node id='-30489' action='modify' lat='60.07033201023' lon='73.88048731755' />
- <node id='-30491' action='modify' lat='60.09179158393' lon='73.87196759004' />
- <node id='-30493' action='modify' lat='60.08754327238' lon='73.8255350751' />
- <node id='-30495' action='modify' lat='60.06119151655' lon='73.844704462' />
- <node id='-30497' action='modify' lat='60.05077251777' lon='73.86941167178' />
- <node id='-30499' action='modify' lat='60.05172950176' lon='73.8830432358' />
- <node id='-30501' action='modify' lat='60.06747055357' lon='73.86928433032' />
- <node id='-30503' action='modify' lat='60.05910557298' lon='73.92166332136' />
- <node id='-30505' action='modify' lat='60.05237575233' lon='73.90753676249' />
- <node id='-30507' action='modify' lat='60.03588252753' lon='73.90498153415' />
- <node id='-30509' action='modify' lat='60.07638874281' lon='73.84193576355'>
- <tag k='test:id' v='c1:N' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30511' action='modify' lat='60.04885836023' lon='73.8393798453'>
- <tag k='test:id' v='c1:E' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30513' action='modify' lat='60.05885273763' lon='73.86792093246'>
- <tag k='test:id' v='c0' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30515' action='modify' lat='60.06310474639' lon='73.89624902644'>
- <tag k='test:id' v='c2:N' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30517' action='modify' lat='60.04343461246' lon='73.89326712181'>
- <tag k='test:id' v='c2:S' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30519' action='modify' lat='60.04715688821' lon='73.91627038609'>
- <tag k='test:id' v='c2:E' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30521' action='modify' lat='60.05587600549' lon='73.89901793788'>
- <tag k='test:id' v='c1:W' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30523' action='modify' lat='60.05970318321' lon='73.8568452867'>
- <tag k='test:id' v='c2:W' />
- <tag k='test:section' v='admin-areas' />
- </node>
- <node id='-30525' action='modify' lat='60.06129765646' lon='73.88368253486' />
- <node id='-30527' action='modify' lat='60.05980943422' lon='73.88804889521' />
- <node id='-30529' action='modify' lat='60.06012834464' lon='73.89539716019' />
- <node id='-30531' action='modify' lat='60.05895899137' lon='73.90338440473' />
- <node id='-30533' action='modify' lat='60.04970916969' lon='73.85237221676' />
- <node id='-30535' action='modify' lat='60.05204849025' lon='73.85791003964' />
- <node id='-30537' action='modify' lat='60.05736451143' lon='73.86174391702' />
- <node id='-30539' action='modify' lat='60.05545084244' lon='73.87068963091' />
- <node id='-30541' action='modify' lat='60.06049547301' lon='73.89636177639' />
- <node id='-30543' action='modify' lat='60.06022493568' lon='73.89614625694' />
- <node id='-30545' action='modify' lat='60.06011324975' lon='73.89670909505' />
- <node id='-30547' action='modify' lat='60.060383788' lon='73.89692461449' />
- <node id='100000' action='delete' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' version='1' changeset='1' lat='3.0' lon='2.0' />
- <node id='100001' action='delete' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' version='1' changeset='1' lat='3.5' lon='2.0' />
- <node id='100002' action='delete' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' version='1' changeset='1' lat='3.5' lon='2.5' />
- <node id='100003' action='delete' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' version='1' changeset='1' lat='3.0' lon='2.5' />
- <way id='-30553' action='modify'>
- <nd ref='-30489' />
- <nd ref='-30491' />
- <nd ref='-30493' />
- <nd ref='-30473' />
- <nd ref='-30475' />
- </way>
- <way id='-30555' action='modify'>
- <nd ref='-30495' />
- <nd ref='-30501' />
- </way>
- <way id='-30557' action='modify'>
- <nd ref='-30495' />
- <nd ref='-30497' />
- </way>
- <way id='-30559' action='modify'>
- <nd ref='-30497' />
- <nd ref='-30499' />
- </way>
- <way id='-30561' action='modify'>
- <nd ref='-30499' />
- <nd ref='-30505' />
- </way>
- <way id='-30563' action='modify'>
- <nd ref='-30505' />
- <nd ref='-30507' />
- </way>
- <way id='-30565' action='modify'>
- <nd ref='-30503' />
- <nd ref='-30487' />
- <nd ref='-30489' />
- </way>
- <way id='-30567' action='modify'>
- <nd ref='-30507' />
- <nd ref='-30483' />
- <nd ref='-30485' />
- <nd ref='-30503' />
- </way>
- <way id='-30569' action='modify'>
- <nd ref='-30481' />
- <nd ref='-30507' />
- </way>
- <way id='-30571' action='modify'>
- <nd ref='-30475' />
- <nd ref='-30477' />
- <nd ref='-30479' />
- <nd ref='-30481' />
- </way>
- <way id='-30573' action='modify'>
- <nd ref='-30475' />
- <nd ref='-30495' />
- </way>
- <way id='-30575' action='modify'>
- <nd ref='-30501' />
- <nd ref='-30489' />
- </way>
- <way id='-30577' action='modify'>
- <nd ref='-30497' />
- <nd ref='-30481' />
- </way>
- <way id='-30579' action='modify'>
- <nd ref='-30505' />
- <nd ref='-30503' />
- </way>
- <way id='-30581' action='modify'>
- <nd ref='-30499' />
- <nd ref='-30501' />
- </way>
- <way id='-30583' action='modify'>
- <nd ref='-30525' />
- <nd ref='-30527' />
- <nd ref='-30529' />
- <nd ref='-30531' />
- <tag k='test:id' v='w2N' />
- <tag k='test:section' v='admin-areas' />
- </way>
- <way id='-30585' action='modify'>
- <nd ref='-30533' />
- <nd ref='-30535' />
- <nd ref='-30537' />
- <nd ref='-30539' />
- <tag k='test:id' v='w1W:2W' />
- <tag k='test:section' v='admin-areas' />
- </way>
- <way id='-30587' action='modify'>
- <nd ref='-30541' />
- <nd ref='-30543' />
- <nd ref='-30545' />
- <nd ref='-30547' />
- <nd ref='-30541' />
- <tag k='test:id' v='building:w2N' />
- <tag k='test:section' v='admin-areas' />
- </way>
- <way id='100000' action='delete' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' version='1' changeset='1'>
- <tag k='note' v='test area, do not leave' />
- </way>
- <relation id='-30590' action='modify'>
- <member type='way' ref='-30553' role='' />
- <member type='way' ref='-30571' role='' />
- <member type='way' ref='-30569' role='' />
- <member type='way' ref='-30567' role='' />
- <member type='way' ref='-30565' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b0' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30592' action='modify'>
- <member type='way' ref='-30553' role='' />
- <member type='way' ref='-30573' role='' />
- <member type='way' ref='-30555' role='' />
- <member type='way' ref='-30575' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b1:N' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30594' action='modify'>
- <member type='way' ref='-30571' role='' />
- <member type='way' ref='-30573' role='' />
- <member type='way' ref='-30557' role='' />
- <member type='way' ref='-30577' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b1:W' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30596' action='modify'>
- <member type='way' ref='-30565' role='' />
- <member type='way' ref='-30567' role='' />
- <member type='way' ref='-30569' role='' />
- <member type='way' ref='-30577' role='' />
- <member type='way' ref='-30557' role='' />
- <member type='way' ref='-30555' role='' />
- <member type='way' ref='-30575' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b1:E' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30598' action='modify'>
- <member type='way' ref='-30565' role='' />
- <member type='way' ref='-30579' role='' />
- <member type='way' ref='-30561' role='' />
- <member type='way' ref='-30581' role='' />
- <member type='way' ref='-30575' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b2:N' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30600' action='modify'>
- <member type='way' ref='-30555' role='' />
- <member type='way' ref='-30557' role='' />
- <member type='way' ref='-30559' role='' />
- <member type='way' ref='-30581' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b2:W' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30602' action='modify'>
- <member type='way' ref='-30577' role='' />
- <member type='way' ref='-30559' role='' />
- <member type='way' ref='-30561' role='' />
- <member type='way' ref='-30563' role='' />
- <member type='way' ref='-30569' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b2:S' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
- <relation id='-30604' action='modify'>
- <member type='way' ref='-30579' role='' />
- <member type='way' ref='-30567' role='' />
- <member type='way' ref='-30563' role='' />
- <tag k='boundary' v='administrative' />
- <tag k='test:id' v='b2:E' />
- <tag k='test:section' v='admin-areas' />
- <tag k='type' v='multipolygon' />
- </relation>
-</osm>
+++ /dev/null
-n-edge-NS | POINT(1.0040019 2.000324)
-n-inner | POINT(1.0039385 2.0003548)
-n-outer | POINT(1.0039478 2.0004676)
-n-edge-WE | POINT(1.0039599 2.0002345)
-w-WE | LINESTRING(1.0031759 2.0002316,1.0040361 2.0002211,1.0042735 2.0002264)
-w-NS | LINESTRING(1.0040414 2.0001051,1.0040361 2.0002211,1.0040364 2.0006377)
-w-building | MULTIPOLYGON(((1.0039037 2.0002347,1.0039599 2.0002345,1.0040016 2.0002344,1.0040019 2.000324,1.0040023 2.0004386,1.0039043 2.0004389,1.0039037 2.0002347)))
+++ /dev/null
-n-south-w | POINT(1.0031633 2.001023)
-n-south-e | POINT(1.0043359 2.0010068)
-n-north-w | POINT(1.0031511 2.0012655)
-n-north-e | POINT(1.0043238 2.0012493)
-w-south | LINESTRING(1.0031633 2.001023,1.0036943 2.0010149,1.0040717 2.0010203,1.0043359 2.0010068)
-w-north | LINESTRING(1.0031511 2.0012655,1.0036822 2.0012574,1.0040596 2.0012628,1.0043238 2.0012493)
-w-building | LINESTRING(1.0036157 2.0011891,1.0036166 2.0010787,1.0038457 2.0010805,1.0038448 2.001191,1.0036157 2.0011891)
+++ /dev/null
-select country_code, st_astext(st_pointonsurface(st_collect(geometry))) from country_osm_grid group by country_code order by country_code
+++ /dev/null
- ad | POINT(1.58972361752509 42.54241545)
- ae | POINT(54.6158905029297 24.8243131637573)
- af | POINT(65.9026412963867 34.8470859527588)
- ag | POINT(-61.7243069800293 17.069)
- ai | POINT(-63.1057155298182 18.2546197)
- al | POINT(19.8494176864624 40.2123275624912)
- am | POINT(44.6422958374023 40.3782157897949)
- ao | POINT(16.2192406654358 -12.7701482772827)
- aq | POINT(44.999999975 -75.6569557189941)
- ar | POINT(-61.1075973510742 -34.3761558532715)
- as | POINT(-170.684700024275 -14.2930755)
- at | POINT(14.2574706077576 47.3654232025146)
- au | POINT(138.231559753418 -23.7206888198853)
- aw | POINT(-69.98255055 12.555)
- ax | POINT(19.9183956313477 59.81682435)
- az | POINT(48.385555267334 40.6163997650146)
- ba | POINT(17.1851491928101 44.2558269500732)
- bb | POINT(-59.53342165 13.19)
- bd | POINT(89.759895324707 24.3420524597168)
- be | POINT(4.90078139305115 50.3468225048828)
- bf | POINT(-0.567435041069984 11.9047117233276)
- bg | POINT(24.8061628341675 43.0985908508301)
- bh | POINT(50.5203291219829 25.94685735)
- bi | POINT(29.5456137866089 -2.99057915)
- bj | POINT(2.70062518119812 10.0279288291931)
- bl | POINT(-62.7934947763772 17.907)
- bm | POINT(-64.7740692745195 32.30199165)
- bn | POINT(114.521968608887 4.2863885)
- bo | POINT(-62.0247344970703 -17.7772369384766)
- bq | POINT(-63.1432235610045 17.566)
- br | POINT(-45.7706508636475 -9.5868501663208)
- bs | POINT(-77.6091675884277 23.8745)
- bt | POINT(90.0135078430176 27.281379699707)
- bv | POINT(3.35744155625 -54.4215)
- bw | POINT(23.5150556564331 -23.4839134216309)
- by | POINT(26.7725925445557 53.1588516235352)
- bz | POINT(-88.6348991394043 16.3395160487277)
- ca | POINT(-107.74817276001 67.1261215209961)
- cc | POINT(96.8442066294247 -12.0173443)
- cd | POINT(24.0954418182373 -1.67713665962219)
- cf | POINT(22.5870132446289 5.98438787460327)
- cg | POINT(15.7887516021729 0.403886616230011)
- ch | POINT(7.65705513954163 46.5744686126709)
- ci | POINT(-6.31190967559814 6.6278383731842)
- ck | POINT(-159.778351359569 -21.23349585)
- cl | POINT(-70.4179039001465 -53.7718944549561)
- cm | POINT(13.260226726532 5.94519567489624)
- cn | POINT(96.4428558349609 38.0426063537598)
- co | POINT(-72.5295104980469 2.45174860954285)
- cr | POINT(-83.8331413269043 9.935142993927)
- cu | POINT(-80.8167381286621 21.8885278701782)
- cv | POINT(-24.508106575 14.929)
- cw | POINT(-68.9640918594077 12.1845)
- cx | POINT(105.624119513558 -10.48417)
- cy | POINT(32.959223486499 35.37010195)
- cz | POINT(16.3209805488586 49.5069274902344)
- de | POINT(9.30716800689697 50.2128944396973)
- dj | POINT(42.969040422876 11.41542855)
- dk | POINT(9.18490123748779 55.9891662597656)
- dm | POINT(-61.0035801928854 15.6547055)
- do | POINT(-69.6285591125488 18.5884169089722)
- dz | POINT(4.24749487638474 25.797215461731)
- ec | POINT(-77.4583168029785 -0.982844322919846)
- ee | POINT(23.9428863525391 58.439525604248)
- eg | POINT(28.952935218811 28.1771860122681)
- eh | POINT(-13.6903142929077 25.0124177932739)
- er | POINT(39.0122375488281 14.960337638855)
- es | POINT(-2.59110307693481 38.7935485839844)
- et | POINT(38.6169757843018 7.71399855613708)
- fi | POINT(26.8979873657227 63.5619449615479)
- fj | POINT(177.918533325195 -17.7423753738403)
- fk | POINT(-58.9904479980469 -51.3450936007813)
- fm | POINT(151.9535889125 8.5045)
- fo | POINT(-6.60483694084778 62.10000995)
- fr | POINT(0.284105718135834 47.5104522705078)
- ga | POINT(10.8107047080994 -0.0742915570735931)
- gb | POINT(-0.928231082856655 52.0161876678467)
- gd | POINT(-61.6452430375 12.191)
- ge | POINT(44.1666488647461 42.0038585662842)
- gf | POINT(-53.4652481079102 3.56188893318176)
- gg | POINT(-2.50580395030125 49.5854381)
- gh | POINT(-0.463488027453423 7.16051578521729)
- gi | POINT(-5.32053155848457 36.1106663)
- gl | POINT(-33.8551120758057 74.6635551452637)
- gm | POINT(-16.4096023535368 13.25)
- gn | POINT(-13.839409828186 10.9629158973694)
- gp | POINT(-61.6871265247053 16.23049055)
- gq | POINT(10.2397356033325 1.43119311332703)
- gr | POINT(23.1785039901733 39.0620670318604)
- gs | POINT(-36.4943086948773 -54.4306784)
- gt | POINT(-90.7436828613281 15.2042865753174)
- gu | POINT(144.733626445767 13.444138)
- gw | POINT(-14.8352527618408 11.9248690605164)
- gy | POINT(-58.4516773223877 5.73698806762695)
- hk | POINT(114.18577775 22.3492361)
- hm | POINT(73.6823082266602 -53.22105985)
- hn | POINT(-86.9541435241699 15.2382001876831)
- hr | POINT(17.499662399292 45.5268955230713)
- ht | POINT(-73.5192565917969 18.3249206691162)
- hu | POINT(20.3536291122437 47.5172100067139)
- id | POINT(123.345050811768 -0.837919592857361)
- ie | POINT(-9.00520038604736 52.8772506713867)
- il | POINT(35.4631499949707 32.86165655)
- im | POINT(-4.86740773691101 54.023)
- in | POINT(88.6762087020508 27.86155515)
- io | POINT(71.4274391359073 -6.14349685)
- iq | POINT(42.5810985565186 34.2610359191895)
- ir | POINT(56.0935573577881 30.4675178527832)
- is | POINT(-17.5178508758545 64.7168769836426)
- it | POINT(10.4263944625854 44.8790493011475)
- je | POINT(-2.19261599848299 49.1245833)
- jm | POINT(-76.8402003547852 18.3935)
- jo | POINT(36.5555210113525 30.7574186325073)
- jp | POINT(138.725311279297 35.9209995269775)
- ke | POINT(36.9060287475586 1.08512867614627)
- kg | POINT(76.1557197570801 41.6649742126465)
- kh | POINT(104.319019317627 12.9555516242981)
- ki | POINT(173.633537933333 0.139)
- km | POINT(44.3147485207764 -12.241)
- kn | POINT(-62.6937987175 17.2555)
- kp | POINT(126.655757904053 39.6457576751709)
- kr | POINT(127.277404785156 36.4138870239258)
- kw | POINT(47.3068407840576 29.6918055)
- ky | POINT(-81.0745526670982 19.2994923579778)
- kz | POINT(72.008113861084 49.8885555267334)
- la | POINT(102.443916320801 19.8160953521729)
- lb | POINT(35.4846443715483 33.4176673878926)
- lc | POINT(-60.978944125 13.891)
- li | POINT(9.54693948514429 47.15934115)
- lk | POINT(80.3852043151855 8.41649961471558)
- lr | POINT(-11.169605255127 4.04122126102448)
- ls | POINT(28.6698419546997 -29.9453849)
- lt | POINT(24.5173501968384 55.4929389953613)
- lu | POINT(6.08649672997471 49.81533445)
- lv | POINT(23.5103368759155 56.6714401245117)
- ly | POINT(15.3684158325195 28.1217727661133)
- ma | POINT(-4.0306156873703 33.2169628143311)
- mc | POINT(7.47743150426578 43.62917385)
- md | POINT(29.6172503477783 46.6651745)
- me | POINT(19.7229134314941 43.02441345)
- mf | POINT(-63.0666651534257 18.0810209)
- mg | POINT(45.8637886047363 -20.5024528503418)
- mh | POINT(171.949820566667 5.983)
- mk | POINT(21.421085357666 41.0898007597656)
- ml | POINT(-1.93310506641865 16.4699301719666)
- mm | POINT(95.5462455749512 21.0962018966675)
- mn | POINT(99.8113822937012 48.1861572265625)
- mo | POINT(113.564416766761 22.16209625)
- mp | POINT(145.213452483189 14.1490205)
- mq | POINT(-60.8112834227783 14.43706925)
- mr | POINT(-9.42324566841125 22.5925149917603)
- ms | POINT(-62.1945521583333 16.745)
- mt | POINT(14.3836306158583 35.9446731)
- mu | POINT(57.551211475 -20.41)
- mv | POINT(73.3929214477539 4.19375014305115)
- mw | POINT(33.9572296142578 -12.2821822166443)
- mx | POINT(-105.892219543457 25.8682699203491)
- my | POINT(112.711540222168 2.10098683834076)
- mz | POINT(37.5868968963623 -13.7268223762512)
- na | POINT(16.6856970787048 -21.4657220840454)
- nc | POINT(164.953224182129 -20.3888988494873)
- ne | POINT(10.060417175293 19.0827360153198)
- nf | POINT(167.95718166875 -29.0645)
- ng | POINT(10.1778125762939 10.1780409812927)
- ni | POINT(-85.8797492980957 13.2171587944031)
- nl | POINT(-68.5706209441406 12.041)
- no | POINT(23.1155624389648 70.0993499755859)
- np | POINT(83.3625984191895 28.1310758590698)
- nr | POINT(166.934792270833 -0.5275)
- nu | POINT(-169.848737911905 -19.05305275)
- nz | POINT(167.972099304199 -45.1305675506592)
- om | POINT(56.8605518341064 20.4741315841675)
- pa | POINT(-79.4016036987305 8.80656003952026)
- pe | POINT(-78.6654052734375 -7.54711985588074)
- pf | POINT(-145.057191213086 -16.7086236)
- pg | POINT(146.646003723145 -7.37427568435669)
- ph | POINT(121.483592987061 15.0996527671814)
- pk | POINT(72.1134796142578 31.1462965011597)
- pl | POINT(17.8813629150391 52.771821975708)
- pm | POINT(-56.1951589074841 46.7832469)
- pn | POINT(-130.106425528029 -25.0695595)
- pr | POINT(-65.8875553967285 18.3716905)
- ps | POINT(35.3980153741943 32.24773475)
- pt | POINT(-8.45743942260742 40.1115436553955)
- pw | POINT(134.496454875 7.3245)
- py | POINT(-59.5178718566895 -22.4128150939941)
- qa | POINT(51.4990362304443 24.9981677)
- re | POINT(55.7734550547607 -21.3638828)
- ro | POINT(26.3763284683228 45.3612003326416)
- rs | POINT(20.4037199020386 44.5641384124756)
- ru | POINT(116.440608978271 59.0678024291992)
- rw | POINT(29.5788261333252 -1.6240443)
- sa | POINT(47.7316932678223 22.4379062652588)
- sb | POINT(164.638946533203 -10.2360653877258)
- sc | POINT(46.3656697 -9.454)
- sd | POINT(28.1472072601318 14.5642309188843)
- se | POINT(15.6866798400879 60.3556804656982)
- sg | POINT(103.84187219299 1.304)
- sh | POINT(-12.2815573611979 -37.11546755)
- si | POINT(14.0473856628607 46.390855)
- sj | POINT(15.2755260467529 79.2336540222168)
- sk | POINT(20.416033744812 48.869701385498)
- sl | POINT(-11.4777312278748 8.78156280517578)
- sm | POINT(12.4606268797657 43.9427969)
- sn | POINT(-15.3711128234863 14.9947791099548)
- so | POINT(46.9338359832764 9.34094429016113)
- sr | POINT(-55.4286479949951 4.5698549747467)
- ss | POINT(28.1357345581055 8.50933408737183)
- st | POINT(6.61025854583333 0.2215)
- sv | POINT(-89.3666543301004 13.4307287)
- sx | POINT(-63.1539330807882 17.9345)
- sy | POINT(38.1551322937012 35.3422107696533)
- sz | POINT(31.782634398523 -26.14244365)
- tc | POINT(-71.325541342334 21.35)
- td | POINT(17.4209251403809 13.4622311592102)
- tf | POINT(137.5 -67.5)
- tg | POINT(1.0698350071907 7.87677597999573)
- th | POINT(102.008777618408 16.4231028556824)
- tj | POINT(71.9134941101074 39.0152739312988)
- tk | POINT(-171.826039878679 -9.209903)
- tl | POINT(126.225208282471 -8.72636747360229)
- tm | POINT(57.7160358428955 39.9253444671631)
- tn | POINT(9.04958724975586 34.8419933319092)
- to | POINT(-176.993202209473 -23.1110429763794)
- tr | POINT(32.8200283050537 39.8635063171387)
- tt | POINT(-60.70793924375 11.1385)
- tv | POINT(178.774993896484 -9.41685771942139)
- tw | POINT(120.300746917725 23.1700229644775)
- tz | POINT(33.5389289855957 -5.01840615272522)
- ua | POINT(33.4433536529541 49.3061904907227)
- ug | POINT(32.9652328491211 2.08584922552109)
- um | POINT(-169.509930872296 16.74605815)
- us | POINT(-116.395355224609 40.7137908935547)
- uy | POINT(-56.4650554656982 -33.6265888214111)
- uz | POINT(61.3552989959717 42.9610729217529)
- va | POINT(12.3319785703086 42.0493197)
- vc | POINT(-61.0990541737305 13.316)
- ve | POINT(-64.8832321166992 7.69849991798401)
- vg | POINT(-64.6247911940199 18.419)
- vi | POINT(-64.8895090795187 18.3226325)
- vn | POINT(104.201791331787 10.27644235)
- vu | POINT(167.319198608398 -15.8868751525879)
- wf | POINT(-176.207816222208 -13.28535775)
- ws | POINT(-172.109667323427 -13.850938)
- ye | POINT(45.945629119873 16.1633830070496)
- yt | POINT(44.9377459760742 -12.6088246)
- za | POINT(23.1948881149292 -30.4327602386475)
- zm | POINT(26.3861808776855 -14.3996663093567)
- zw | POINT(30.1241998672485 -19.8690795898438)
-
+++ /dev/null
-n-middle-w | POINT(1.0065316 2.0003381)
-n-middle-e | POINT(1.007236 2.0003408)
-w-south | LINESTRING(1.0065324 2.0001892,1.006676 2.0002786,1.0068195 2.0002786,1.0069171 2.0002515,1.0070417 2.0001892,1.0072422 2.000173)
-w-middle | LINESTRING(1.0065316 2.0003381,1.006686 2.0004248,1.0069 2.0004167,1.007236 2.0003408)
-w-north | LINESTRING(1.0065397 2.000418,1.0066833 2.0005074,1.0068269 2.0005074,1.0069244 2.0004803,1.007049 2.000418,1.0072495 2.0004018)
+++ /dev/null
-n-N-unglued | POINT(1.004922 2.0005155)
-n-S-unglued | POINT(1.0046259 2.0002949)
-n-NE | POINT(1.0050661 2.0006118)
-n-SE | POINT(1.0051339 2.0003349)
-n-NW | POINT(1.0047583 2.0004087)
-n-SW | POINT(1.0047275 2.0003564)
-w-north | LINESTRING(1.0044996 2.0004302,1.0046259 2.0003841,1.0047583 2.0004087,1.004922 2.0005155,1.0050661 2.0006118,1.0053155 2.0006241)
-w-south | LINESTRING(1.0045243 2.0002241,1.0046259 2.0002949,1.0047275 2.0003564,1.004826 2.0002918,1.0049368 2.0002641,1.0051339 2.0003349,1.0053278 2.0003687)
+++ /dev/null
-0.0001 | MULTIPOLYGON(((0 0,0.001 0,0.001 0.1,0 0.1,0 0)))
-0.0005 | MULTIPOLYGON(((0 0,0.005 0,0.005 0.1,0 0.1,0 0)))
-0.001 | MULTIPOLYGON(((0 0,0.01 0,0.01 0.1,0 0.1,0 0)))
-0.005 | MULTIPOLYGON(((0 0,0.05 0,0.05 0.1,0 0.1,0 0)))
-0.01 | MULTIPOLYGON(((0 0,0.1 0,0.1 0.1,0 0.1,0 0)))
-0.05 | MULTIPOLYGON(((0 0,0.5 0,0.5 0.1,0 0.1,0 0)))
-0.1 | MULTIPOLYGON(((0 0,0.1 0,0.1 1,0 1,0 0)))
-0.5 | MULTIPOLYGON(((0 0,0.5 0,0.5 1,0 1,0 0)))
-1.0 | MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)))
-2.0 | MULTIPOLYGON(((0 0,2 0,2 1,0 1,0 0)))
-5.0 | MULTIPOLYGON(((0 0,5 0,5 1,0 1,0 0)))
+++ /dev/null
-<?xml version='1.0' encoding='UTF-8'?>
-<osm version='0.6' upload='true' generator='JOSM'>
- <node id='-238' action='modify' visible='true' lat='-0.00661880152' lon='0.00356249245'>
- <tag k='test:id' v='inner-C' />
- <tag k='test:section' v='way-area-with-center' />
- </node>
- <node id='-231' action='modify' visible='true' lat='-0.00600066098' lon='0.0041244384'>
- <tag k='test:id' v='outer-C' />
- <tag k='test:section' v='way-area-with-center' />
- </node>
- <node id='-225' action='modify' visible='true' lat='-0.00236518426' lon='0.00188464186'>
- <tag k='test:id' v='inner-N' />
- <tag k='test:section' v='way-area-with-center' />
- </node>
- <node id='-166' action='modify' visible='true' lat='-0.00951758843' lon='0.00485156509'>
- <tag k='test:id' v='inner-S' />
- <tag k='test:section' v='way-area-with-center' />
- </node>
- <node id='-137' action='modify' visible='true' lat='-0.00215326117' lon='0.00501050741' />
- <node id='-135' action='modify' visible='true' lat='-0.00257710735' lon='0.00644098825' />
- <node id='-133' action='modify' visible='true' lat='-0.00400758819' lon='0.00750060369' />
- <node id='-131' action='modify' visible='true' lat='-0.00591489597' lon='0.00336810348' />
- <node id='-129' action='modify' visible='true' lat='-0.00766326144' lon='0.00516944972' />
- <node id='-127' action='modify' visible='true' lat='-0.00649768446' lon='0.00612310362' />
- <node id='-125' action='modify' visible='true' lat='-0.00496124208' lon='0.00686483443' />
- <node id='-123' action='modify' visible='true' lat='-0.00665662678' lon='0.00771252678' />
- <node id='-121' action='modify' visible='true' lat='-0.0099414346' lon='0.0065469498' />
- <node id='-119' action='modify' visible='true' lat='-0.01094806925' lon='0.0038979112' />
- <node id='-117' action='modify' visible='true' lat='-0.01057720386' lon='0.00267935344' />
- <node id='-115' action='modify' visible='true' lat='-0.00999441537' lon='0.00220252649' />
- <node id='-113' action='modify' visible='true' lat='-0.00919970381' lon='0.00262637267' />
- <node id='-111' action='modify' visible='true' lat='-0.00803412684' lon='0.00262637267' />
- <node id='-109' action='modify' visible='true' lat='-0.00655066523' lon='0.00193762263' />
- <node id='-107' action='modify' visible='true' lat='-0.00729239604' lon='0.00103694951' />
- <node id='-105' action='modify' visible='true' lat='-0.00607383829' lon='0.00050714179' />
- <node id='-103' action='modify' visible='true' lat='-0.00564999211' lon='0.00177868032' />
- <node id='-101' action='modify' visible='true' lat='-0.00421951128' lon='0.00050714179' />
- <node id='-99' action='modify' visible='true' lat='-0.00257710735' lon='0.00056012256' />
- <node id='-98' action='modify' visible='true' lat='-0.00151749191' lon='0.00130185337' />
- <node id='100' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='101' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.0' />
- <node id='102' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.001' />
- <node id='103' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.001' />
- <node id='200' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='201' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.0' />
- <node id='202' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.005' />
- <node id='203' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.005' />
- <node id='300' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='301' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.0' />
- <node id='302' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.01' />
- <node id='303' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.01' />
- <node id='400' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='401' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.0' />
- <node id='402' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.05' />
- <node id='403' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.05' />
- <node id='500' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='501' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.0' />
- <node id='502' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.1' />
- <node id='503' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.1' />
- <node id='600' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='601' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.0' />
- <node id='602' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.1' lon='0.5' />
- <node id='603' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.5' />
- <node id='700' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='701' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.0' />
- <node id='702' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.1' />
- <node id='703' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.1' />
- <node id='800' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='801' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.0' />
- <node id='802' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.5' />
- <node id='803' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.5' />
- <node id='900' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='901' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.0' />
- <node id='902' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='1.0' />
- <node id='903' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='1.0' />
- <node id='1000' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='1001' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.0' />
- <node id='1002' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='2.0' />
- <node id='1003' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='2.0' />
- <node id='1100' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='0.0' />
- <node id='1101' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='0.0' />
- <node id='1102' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='1.0' lon='5.0' />
- <node id='1103' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='0.0' lon='5.0' />
- <way id='-100' action='modify' visible='true'>
- <nd ref='-98' />
- <nd ref='-99' />
- <nd ref='-101' />
- <nd ref='-103' />
- <nd ref='-105' />
- <nd ref='-107' />
- <nd ref='-109' />
- <nd ref='-111' />
- <nd ref='-113' />
- <nd ref='-115' />
- <nd ref='-117' />
- <nd ref='-119' />
- <nd ref='-121' />
- <nd ref='-123' />
- <nd ref='-125' />
- <nd ref='-127' />
- <nd ref='-129' />
- <nd ref='-131' />
- <nd ref='-133' />
- <nd ref='-135' />
- <nd ref='-137' />
- <nd ref='-98' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='area' />
- <tag k='test:section' v='way-area-with-center' />
- </way>
- <way id='100' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='100' />
- <nd ref='101' />
- <nd ref='102' />
- <nd ref='103' />
- <nd ref='100' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.0001' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='200' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='200' />
- <nd ref='201' />
- <nd ref='202' />
- <nd ref='203' />
- <nd ref='200' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.0005' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='300' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='300' />
- <nd ref='301' />
- <nd ref='302' />
- <nd ref='303' />
- <nd ref='300' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.001' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='400' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='400' />
- <nd ref='401' />
- <nd ref='402' />
- <nd ref='403' />
- <nd ref='400' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.005' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='500' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='500' />
- <nd ref='501' />
- <nd ref='502' />
- <nd ref='503' />
- <nd ref='500' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.01' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='600' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='600' />
- <nd ref='601' />
- <nd ref='602' />
- <nd ref='603' />
- <nd ref='600' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.05' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='700' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='700' />
- <nd ref='701' />
- <nd ref='702' />
- <nd ref='703' />
- <nd ref='700' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.1' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='800' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='800' />
- <nd ref='801' />
- <nd ref='802' />
- <nd ref='803' />
- <nd ref='800' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='0.5' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='900' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='900' />
- <nd ref='901' />
- <nd ref='902' />
- <nd ref='903' />
- <nd ref='900' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='1.0' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='1000' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='1000' />
- <nd ref='1001' />
- <nd ref='1002' />
- <nd ref='1003' />
- <nd ref='1000' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='2.0' />
- <tag k='test:section' v='poly-area' />
- </way>
- <way id='1100' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='1100' />
- <nd ref='1101' />
- <nd ref='1102' />
- <nd ref='1103' />
- <nd ref='1100' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='5.0' />
- <tag k='test:section' v='poly-area' />
- </way>
-</osm>
+++ /dev/null
-n-main-east | POINT(1.0024481 2.0003542)
-n-main-west | POINT(1.001552 2.0002662)
-n-alley | POINT(1.0019235 2.0005463)
-n-corner | POINT(1.0019235 2.0003542)
-w-alley | LINESTRING(1.0019594 2.0003086,1.0019594 2.0005756)
-w-main | LINESTRING(1.0013435 2.0003118,1.0016759 2.0003053,1.0019594 2.0003086,1.0021255 2.0003151,1.0023699 2.0003118,1.0026078 2.0002988)
+++ /dev/null
-p-N2 | POINT(1.0003904 2.0003399)
-p-S1 | POINT(1.0008104 2.0002927)
-p-N1 | POINT(1.0005321 2.0005288)
-p-S2 | POINT(1.0006398 2.0001064)
-w-north | LINESTRING(1.0001174 2.0004055,1.0004298 2.0003976,1.0006608 2.0004579,1.0010624 2.0005419)
-w-south | LINESTRING(1.0001384 2.0001903,1.0007212 2.0001982,1.0010677 2.0002192)
+++ /dev/null
-<?xml version='1.0' encoding='UTF-8'?>
-<osm version='0.6' upload='false' generator='JOSM'>
- <node id='-11' action='modify' visible='true' lat='2.0006515863' lon='1.0057464449'>
- <tag k='name' v='split-road' />
- </node>
- <node id='-13' action='modify' visible='true' lat='2.00053508276' lon='1.00574909433' />
- <node id='-15' action='modify' visible='true' lat='2.00054302619' lon='1.00589746199' />
- <node id='-17' action='modify' visible='true' lat='2.00054302619' lon='1.0060511285' />
- <node id='-19' action='modify' visible='true' lat='2.00053243496' lon='1.00613061118' />
- <node id='-21' action='modify' visible='true' lat='2.00052449153' lon='1.00551064629' />
- <node id='-23' action='modify' visible='true' lat='2.00056685646' lon='1.00560867493' />
- <node id='-25' action='modify' visible='true' lat='2.00056156084' lon='1.00568550818' />
- <node id='-27' action='modify' visible='true' lat='2.00050066126' lon='1.00573584721' />
- <node id='-29' action='modify' visible='true' lat='2.00050595688' lon='1.0059107091' />
- <node id='-31' action='modify' visible='true' lat='2.00051125249' lon='1.00605377792' />
- <node id='-33' action='modify' visible='true' lat='2.00049536565' lon='1.00613591002' />
- <node id='-35' action='modify' visible='true' lat='2.0005139003' lon='1.00628427769' />
- <node id='-37' action='modify' visible='true' lat='2.00047153538' lon='1.00637170863' />
- <node id='-39' action='modify' visible='true' lat='2.00029678005' lon='1.00635846152' />
- <node id='-41' action='modify' visible='true' lat='2.00026235854' lon='1.00628162826' />
- <node id='-43' action='modify' visible='true' lat='2.00033914498' lon='1.00619949616' />
- <node id='-45' action='modify' visible='true' lat='2.00035767963' lon='1.00610411695' />
- <node id='-47' action='modify' visible='true' lat='2.00034973621' lon='1.00600343889' />
- <node id='-49' action='modify' visible='true' lat='2.00032590594' lon='1.0058868643' />
- <node id='-51' action='modify' visible='true' lat='2.0002808932' lon='1.00579413451' />
- <node id='-53' action='modify' visible='true' lat='2.00027824539' lon='1.00563516915' />
- <node id='-55' action='modify' visible='true' lat='2.00036032744' lon='1.00547090495' />
- <node id='-57' action='modify' visible='true' lat='2.00072654218' lon='1.00470543134'>
- <tag k='name' v='points-on-road' />
- </node>
- <node id='-59' action='modify' visible='true' lat='2.00051552538' lon='1.00492201384' />
- <node id='-61' action='modify' visible='true' lat='2.00051552538' lon='1.00492201384'>
- <tag k='test:id' v='n-N-unglued' />
- <tag k='test:section' v='points-on-roads' />
- </node>
- <node id='-63' action='modify' visible='true' lat='2.00029485534' lon='1.00462587591'>
- <tag k='test:id' v='n-S-unglued' />
- <tag k='test:section' v='points-on-roads' />
- </node>
- <node id='-65' action='modify' visible='true' lat='2.00029485534' lon='1.00462587591' />
- <node id='-67' action='modify' visible='true' lat='2.00061177404' lon='1.00506613814'>
- <tag k='test:id' v='n-NE' />
- <tag k='test:section' v='points-on-roads' />
- </node>
- <node id='-69' action='modify' visible='true' lat='2.00033485479' lon='1.00513387079'>
- <tag k='test:id' v='n-SE' />
- <tag k='test:section' v='points-on-roads' />
- </node>
- <node id='-71' action='modify' visible='true' lat='2.00062408156' lon='1.00531551745' />
- <node id='-73' action='modify' visible='true' lat='2.00040869993' lon='1.00475826245'>
- <tag k='test:id' v='n-NW' />
- <tag k='test:section' v='points-on-roads' />
- </node>
- <node id='-75' action='modify' visible='true' lat='2.00038408489' lon='1.00462587591' />
- <node id='-77' action='modify' visible='true' lat='2.00043023809' lon='1.00449964688' />
- <node id='-79' action='modify' visible='true' lat='2.00036870048' lon='1.00532783248' />
- <node id='-81' action='modify' visible='true' lat='2.00026408654' lon='1.00493683035' />
- <node id='-83' action='modify' visible='true' lat='2.00029177846' lon='1.00482599511' />
- <node id='-85' action='modify' visible='true' lat='2.00035639296' lon='1.00472747489'>
- <tag k='test:id' v='n-SW' />
- <tag k='test:section' v='points-on-roads' />
- </node>
- <node id='-87' action='modify' visible='true' lat='2.00022408708' lon='1.00452427693' />
- <node id='-89' action='modify' visible='true' lat='2.00071561841' lon='1.00183227343'>
- <tag k='name' v='road-with-alley' />
- </node>
- <node id='-91' action='modify' visible='true' lat='2.00072864414' lon='1.00046699629'>
- <tag k='name' v='roads-with-pois' />
- </node>
- <node id='-93' action='modify' visible='true' lat='2.00035415446' lon='1.00244811443'>
- <tag k='test:id' v='n-main-east' />
- <tag k='test:section' v='road-with-alley' />
- </node>
- <node id='-95' action='modify' visible='true' lat='2.00026623078' lon='1.00155204948'>
- <tag k='test:id' v='n-main-west' />
- <tag k='test:section' v='road-with-alley' />
- </node>
- <node id='-97' action='modify' visible='true' lat='2.00054628396' lon='1.00192350914'>
- <tag k='test:id' v='n-alley' />
- <tag k='test:section' v='road-with-alley' />
- </node>
- <node id='-99' action='modify' visible='true' lat='2.00035415446' lon='1.00192350914'>
- <tag k='test:id' v='n-corner' />
- <tag k='test:section' v='road-with-alley' />
- </node>
- <node id='-101' action='modify' visible='true' lat='2.00057559185' lon='1.00195935173' />
- <node id='-103' action='modify' visible='true' lat='2.00029879511' lon='1.00260777692' />
- <node id='-105' action='modify' visible='true' lat='2.00031182084' lon='1.0023699124' />
- <node id='-107' action='modify' visible='true' lat='2.00031507727' lon='1.00212553105' />
- <node id='-109' action='modify' visible='true' lat='2.00030856441' lon='1.00195935173' />
- <node id='-111' action='modify' visible='true' lat='2.00030530797' lon='1.00167586937' />
- <node id='-113' action='modify' visible='true' lat='2.00031182084' lon='1.00134351073' />
- <node id='-115' action='modify' visible='true' lat='2.00040546963' lon='1.00011736285'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-117' action='modify' visible='true' lat='2.00039759893' lon='1.00042975784'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-119' action='modify' visible='true' lat='2.000457941' lon='1.00066077263'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-121' action='modify' visible='true' lat='2.00054189517' lon='1.00106242333'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-123' action='modify' visible='true' lat='2.00019033703' lon='1.00013836419'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-125' action='modify' visible='true' lat='2.00019820773' lon='1.00072115149'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-127' action='modify' visible='true' lat='2.00021919628' lon='1.00106767367'>
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-129' action='modify' visible='true' lat='2.00033988043' lon='1.00039038032'>
- <tag k='test:id' v='p-N2' />
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-131' action='modify' visible='true' lat='2.0002926562' lon='1.0008104072'>
- <tag k='test:id' v='p-S1' />
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-133' action='modify' visible='true' lat='2.00052877733' lon='1.0005321394'>
- <tag k='test:id' v='p-N1' />
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-135' action='modify' visible='true' lat='2.00010638283' lon='1.00063977128'>
- <tag k='test:id' v='p-S2' />
- <tag k='test:section' v='roads-with-pois' />
- </node>
- <node id='-137' action='modify' visible='true' lat='2.00072116924' lon='1.00358286582'>
- <tag k='name' v='building-on-street-corner' />
- </node>
- <node id='-139' action='modify' visible='true' lat='2.00023163534' lon='1.00317592051' />
- <node id='-141' action='modify' visible='true' lat='2.00022108767' lon='1.00403607904' />
- <node id='-143' action='modify' visible='true' lat='2.0002263615' lon='1.00427354612' />
- <node id='-145' action='modify' visible='true' lat='2.00010506339' lon='1.00404135609' />
- <node id='-147' action='modify' visible='true' lat='2.00063772026' lon='1.00403639915' />
- <node id='-149' action='modify' visible='true' lat='2.00043885695' lon='1.0039042871' />
- <node id='-151' action='modify' visible='true' lat='2.00043855477' lon='1.00400225362' />
- <node id='-153' action='modify' visible='true' lat='2.0002343878' lon='1.00400162309' />
- <node id='-155' action='modify' visible='true' lat='2.00023468998' lon='1.00390365657' />
- <node id='-157' action='modify' visible='true' lat='2.00032403886' lon='1.00400189996'>
- <tag k='test:id' v='n-edge-NS' />
- <tag k='test:section' v='building-on-street-corner' />
- </node>
- <node id='-159' action='modify' visible='true' lat='2.00035479802' lon='1.00393848586'>
- <tag k='test:id' v='n-inner' />
- <tag k='test:section' v='building-on-street-corner' />
- </node>
- <node id='-161' action='modify' visible='true' lat='2.00046760515' lon='1.00394781445'>
- <tag k='test:id' v='n-outer' />
- <tag k='test:section' v='building-on-street-corner' />
- </node>
- <node id='-163' action='modify' visible='true' lat='2.00023451637' lon='1.00395994156'>
- <tag k='test:id' v='n-edge-WE' />
- <tag k='test:section' v='building-on-street-corner' />
- </node>
- <node id='-165' action='modify' visible='true' lat='2.0001892102' lon='1.00653236169' />
- <node id='-167' action='modify' visible='true' lat='2.00027856164' lon='1.00667595302' />
- <node id='-169' action='modify' visible='true' lat='2.00027856164' lon='1.00681954435' />
- <node id='-171' action='modify' visible='true' lat='2.00025148545' lon='1.00691707809' />
- <node id='-173' action='modify' visible='true' lat='2.0001892102' lon='1.00704170453' />
- <node id='-175' action='modify' visible='true' lat='2.00017296448' lon='1.00724219054' />
- <node id='-177' action='modify' visible='true' lat='2.00062243814' lon='1.00685396461'>
- <tag k='name' v='parallel-road' />
- </node>
- <node id='-179' action='modify' visible='true' lat='2.00033813812' lon='1.00653156143'>
- <tag k='test:id' v='n-middle-w' />
- <tag k='test:section' v='parallel-road' />
- </node>
- <node id='-181' action='modify' visible='true' lat='2.00042478194' lon='1.00668598984' />
- <node id='-183' action='modify' visible='true' lat='2.00041665908' lon='1.00690002221' />
- <node id='-185' action='modify' visible='true' lat='2.00034084574' lon='1.00723597174'>
- <tag k='test:id' v='n-middle-e' />
- <tag k='test:section' v='parallel-road' />
- </node>
- <node id='-187' action='modify' visible='true' lat='2.00041801289' lon='1.00653968924' />
- <node id='-189' action='modify' visible='true' lat='2.00050736432' lon='1.00668328057' />
- <node id='-191' action='modify' visible='true' lat='2.00050736432' lon='1.00682687191' />
- <node id='-193' action='modify' visible='true' lat='2.00048028813' lon='1.00692440564' />
- <node id='-195' action='modify' visible='true' lat='2.00041801289' lon='1.00704903208' />
- <node id='-197' action='modify' visible='true' lat='2.00040176717' lon='1.00724951809' />
- <node id='-199' action='modify' visible='true' lat='2.00102300625' lon='1.00316327416'>
- <tag k='test:id' v='n-south-w' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </node>
- <node id='-201' action='modify' visible='true' lat='2.00101492424' lon='1.00369431688' />
- <node id='-203' action='modify' visible='true' lat='2.00102031225' lon='1.00407170765' />
- <node id='-205' action='modify' visible='true' lat='2.00100684223' lon='1.00433588118'>
- <tag k='test:id' v='n-south-e' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </node>
- <node id='-207' action='modify' visible='true' lat='2.00148637497' lon='1.00362153438'>
- <tag k='name' v='building-with-parallel-streets' />
- </node>
- <node id='-209' action='modify' visible='true' lat='2.00126546664' lon='1.00315114374'>
- <tag k='test:id' v='n-north-w' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </node>
- <node id='-211' action='modify' visible='true' lat='2.00125738463' lon='1.00368218646' />
- <node id='-213' action='modify' visible='true' lat='2.00126277264' lon='1.00405957723' />
- <node id='-215' action='modify' visible='true' lat='2.00124930262' lon='1.00432375077'>
- <tag k='test:id' v='n-north-e' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </node>
- <node id='-217' action='modify' visible='true' lat='2.00118914388' lon='1.00361572227' />
- <node id='-219' action='modify' visible='true' lat='2.0010786539' lon='1.00361659971' />
- <node id='-221' action='modify' visible='true' lat='2.001080471' lon='1.003845694' />
- <node id='-223' action='modify' visible='true' lat='2.00119096098' lon='1.00384481656' />
- <node id='100000' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='2.0' lon='1.0' />
- <node id='100001' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='3.0' lon='1.0' />
- <node id='100002' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='3.0' lon='2.0' />
- <node id='100003' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1' lat='2.0' lon='2.0' />
- <way id='-229' action='modify' visible='true'>
- <nd ref='-25' />
- <nd ref='-23' />
- <nd ref='-21' />
- <tag k='test:id' v='w-5' />
- <tag k='test:section' v='split-road' />
- </way>
- <way id='-231' action='modify' visible='true'>
- <nd ref='-35' />
- <nd ref='-33' />
- <nd ref='-31' />
- <nd ref='-29' />
- <nd ref='-27' />
- <nd ref='-25' />
- <tag k='test:id' v='w-4a' />
- <tag k='test:section' v='split-road' />
- </way>
- <way id='-233' action='modify' visible='true'>
- <nd ref='-43' />
- <nd ref='-41' />
- <nd ref='-39' />
- <nd ref='-37' />
- <nd ref='-35' />
- <tag k='test:id' v='w-3' />
- <tag k='test:section' v='split-road' />
- </way>
- <way id='-235' action='modify' visible='true'>
- <nd ref='-51' />
- <nd ref='-49' />
- <nd ref='-47' />
- <nd ref='-45' />
- <nd ref='-43' />
- <tag k='test:id' v='w-2' />
- <tag k='test:section' v='split-road' />
- </way>
- <way id='-237' action='modify' visible='true'>
- <nd ref='-35' />
- <nd ref='-19' />
- <nd ref='-17' />
- <nd ref='-15' />
- <nd ref='-13' />
- <nd ref='-25' />
- <tag k='test:id' v='w-4b' />
- <tag k='test:section' v='split-road' />
- </way>
- <way id='-239' action='modify' visible='true'>
- <nd ref='-55' />
- <nd ref='-53' />
- <nd ref='-51' />
- <tag k='test:id' v='w-1' />
- <tag k='test:section' v='split-road' />
- </way>
- <way id='-241' action='modify' visible='true'>
- <nd ref='-77' />
- <nd ref='-75' />
- <nd ref='-73' />
- <nd ref='-59' />
- <nd ref='-67' />
- <nd ref='-71' />
- <tag k='test:id' v='w-north' />
- <tag k='test:section' v='points-on-roads' />
- </way>
- <way id='-243' action='modify' visible='true'>
- <nd ref='-87' />
- <nd ref='-65' />
- <nd ref='-85' />
- <nd ref='-83' />
- <nd ref='-81' />
- <nd ref='-69' />
- <nd ref='-79' />
- <tag k='test:id' v='w-south' />
- <tag k='test:section' v='points-on-roads' />
- </way>
- <way id='-245' action='modify' visible='true'>
- <nd ref='-109' />
- <nd ref='-101' />
- <tag k='test:id' v='w-alley' />
- <tag k='test:section' v='road-with-alley' />
- </way>
- <way id='-247' action='modify' visible='true'>
- <nd ref='-113' />
- <nd ref='-111' />
- <nd ref='-109' />
- <nd ref='-107' />
- <nd ref='-105' />
- <nd ref='-103' />
- <tag k='test:id' v='w-main' />
- <tag k='test:section' v='road-with-alley' />
- </way>
- <way id='-249' action='modify' visible='true'>
- <nd ref='-115' />
- <nd ref='-117' />
- <nd ref='-119' />
- <nd ref='-121' />
- <tag k='test:id' v='w-north' />
- <tag k='test:section' v='roads-with-pois' />
- </way>
- <way id='-251' action='modify' visible='true'>
- <nd ref='-123' />
- <nd ref='-125' />
- <nd ref='-127' />
- <tag k='test:id' v='w-south' />
- <tag k='test:section' v='roads-with-pois' />
- </way>
- <way id='-253' action='modify' visible='true'>
- <nd ref='-139' />
- <nd ref='-141' />
- <nd ref='-143' />
- <tag k='test:id' v='w-WE' />
- <tag k='test:section' v='building-on-street-corner' />
- </way>
- <way id='-255' action='modify' visible='true'>
- <nd ref='-145' />
- <nd ref='-141' />
- <nd ref='-147' />
- <tag k='test:id' v='w-NS' />
- <tag k='test:section' v='building-on-street-corner' />
- </way>
- <way id='-257' action='modify' visible='true'>
- <nd ref='-149' />
- <nd ref='-151' />
- <nd ref='-157' />
- <nd ref='-153' />
- <nd ref='-163' />
- <nd ref='-155' />
- <nd ref='-149' />
- <tag k='area' v='yes' />
- <tag k='test:id' v='w-building' />
- <tag k='test:section' v='building-on-street-corner' />
- </way>
- <way id='-259' action='modify' visible='true'>
- <nd ref='-165' />
- <nd ref='-167' />
- <nd ref='-169' />
- <nd ref='-171' />
- <nd ref='-173' />
- <nd ref='-175' />
- <tag k='test:id' v='w-south' />
- <tag k='test:section' v='parallel-road' />
- </way>
- <way id='-261' action='modify' visible='true'>
- <nd ref='-179' />
- <nd ref='-181' />
- <nd ref='-183' />
- <nd ref='-185' />
- <tag k='test:id' v='w-middle' />
- <tag k='test:section' v='parallel-road' />
- </way>
- <way id='-263' action='modify' visible='true'>
- <nd ref='-187' />
- <nd ref='-189' />
- <nd ref='-191' />
- <nd ref='-193' />
- <nd ref='-195' />
- <nd ref='-197' />
- <tag k='test:id' v='w-north' />
- <tag k='test:section' v='parallel-road' />
- </way>
- <way id='-265' action='modify' visible='true'>
- <nd ref='-199' />
- <nd ref='-201' />
- <nd ref='-203' />
- <nd ref='-205' />
- <tag k='test:id' v='w-south' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </way>
- <way id='-267' action='modify' visible='true'>
- <nd ref='-209' />
- <nd ref='-211' />
- <nd ref='-213' />
- <nd ref='-215' />
- <tag k='test:id' v='w-north' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </way>
- <way id='-269' action='modify' visible='true'>
- <nd ref='-217' />
- <nd ref='-219' />
- <nd ref='-221' />
- <nd ref='-223' />
- <nd ref='-217' />
- <tag k='test:id' v='w-building' />
- <tag k='test:section' v='building-with-parallel-streets' />
- </way>
- <way id='100000' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' visible='true' version='1' changeset='1'>
- <nd ref='100000' />
- <nd ref='100001' />
- <nd ref='100002' />
- <nd ref='100003' />
- <nd ref='100000' />
- <tag k='note' v='test area, do not leave' />
- </way>
-</osm>
+++ /dev/null
-w-5 | LINESTRING(1.0056855 2.0005616,1.0056087 2.0005669,1.0055106 2.0005245)
-w-4a | LINESTRING(1.0062843 2.0005139,1.0061359 2.0004954,1.0060538 2.0005113,1.0059107 2.000506,1.0057358 2.0005007,1.0056855 2.0005616)
-w-3 | LINESTRING(1.0061995 2.0003391,1.0062816 2.0002624,1.0063585 2.0002968,1.0063717 2.0004715,1.0062843 2.0005139)
-w-2 | LINESTRING(1.0057941 2.0002809,1.0058869 2.0003259,1.0060034 2.0003497,1.0061041 2.0003577,1.0061995 2.0003391)
-w-4b | LINESTRING(1.0062843 2.0005139,1.0061306 2.0005324,1.0060511 2.000543,1.0058975 2.000543,1.0057491 2.0005351,1.0056855 2.0005616)
-w-1 | LINESTRING(1.0054709 2.0003603,1.0056352 2.0002782,1.0057941 2.0002809)
+++ /dev/null
-inner-S | POINT(0.0048516 -0.0095176)
-inner-N | POINT(0.0018846 -0.0023652)
-outer-C | POINT(0.0041244 -0.0060007)
-inner-C | POINT(0.0035625 -0.0066188)
-area | MULTIPOLYGON(((0.0005071 -0.0060738,0.0010369 -0.0072924,0.0019376 -0.0065507,0.0026264 -0.0080341,0.0026264 -0.0091997,0.0022025 -0.0099944,0.0026794 -0.0105772,0.0038979 -0.0109481,0.0065469 -0.0099414,0.0077125 -0.0066566,0.0068648 -0.0049612,0.0061231 -0.0064977,0.0051694 -0.0076633,0.0033681 -0.0059149,0.0075006 -0.0040076,0.006441 -0.0025771,0.0050105 -0.0021533,0.0013019 -0.0015175,0.0005601 -0.0025771,0.0005071 -0.0042195,0.0017787 -0.00565,0.0005071 -0.0060738)))
Ziplines near,aerialway,zip_line,near,Y
Zipwire,aerialway,zip_line,-,N
Zipwires,aerialway,zip_line,-,Y
+Zipwires,aerialway,zip_line,name,Y
Zipwire in,aerialway,zip_line,in,N
Zipwires in,aerialway,zip_line,in,Y
Zipwire near,aerialway,zip_line,near,N
<model>wikitext</model>
<format>text/x-wiki</format>
<text bytes="158218" sha1="cst5x7tt58izti1pxzgljf27tx8qjcj" xml:space="preserve">
-== en == {| class="wikitable sortable" |- ! Word / Phrase !! Key !! Value !! Operator !! Plural |- | Zip Line || aerialway || zip_line || - || N |- | Zip Lines || aerialway || zip_line || - || Y |- | Zip Line in || aerialway || zip_line || in || N |- | Zip Lines in || aerialway || zip_line || in || Y |- | Zip Line near || aerialway || zip_line || near || N |- | Animal shelter || amenity || animal_shelter || - || N |- | Animal shelters || amenity || animal_shelter || - || Y |- | Animal shelter in || amenity || animal_shelter || in || N |- | Animal shelters in || amenity || animal_shelter || in || Y |- | Animal shelter near || amenity || animal_shelter || near|| N |- | Animal shelters near || amenity || animal_shelter || NEAR|| Y |- | Drinking Water near || amenity || drinking_water || near || N |- | Water || amenity || drinking_water || - || N |- | Water in || amenity || drinking_water || In || N |- | Water near || amenity || drinking_water || near || N |- | Embassy || amenity || embassy || - || N |- | Embassys || amenity || embassy || - || Y |- | Embassies || amenity || embassy || - || Y |- |Coworkings near |amenity |coworking_space |near |Y |} [[Category:Word list]]
+== en == {| class="wikitable sortable" |- ! Word / Phrase !! Key !! Value !! Operator !! Plural |- | Zip Line || aerialway || zip_line || - || N |- | Zip Lines || aerialway || zip_line || - || Y |- | Zip Line in || aerialway || zip_line || in || N |- | Zip Lines in || aerialway || zip_line || in || Y |- | Zip Line near || aerialway || zip_line || near || N |- | Animal shelter || amenity || animal_shelter || - || N |- | Animal shelters || amenity || animal_shelter || - || Y |- | Animal shelter in || amenity || animal_shelter || in || N |- | Animal shelters in || amenity || animal_shelter || in || Y |- | Animal shelter near || amenity || animal_shelter || near|| N |- | Animal shelters near || amenity || animal_shelter || NEAR|| Y |- | Drinking Water near || amenity || drinking_water || near || N |- | Water || amenity || drinking_water || - || N |- | Water in || amenity || drinking_water || In || N |- | Water near || amenity || drinking_water || near || N |- | Embassy || amenity || embassy || - || N |- | Embassys || amenity || "embassy" || - || Y |- | Embassies || amenity || embassy || - || Y |- |Coworkings near |amenity |coworking_space |near |Y |} [[Category:Word list]]
</text>
<sha1>cst5x7tt58izti1pxzgljf27tx8qjcj</sha1>
</revision>
+++ /dev/null
-#!/bin/bash -ex
-#
-# *Note:* these installation instructions are also available in executable
-# form for use with vagrant under `vagrant/Install-on-Centos-8.sh`.
-#
-# Installing the Required Software
-# ================================
-#
-# These instructions expect that you have a freshly installed CentOS version 8.
-# Make sure all packages are up-to-date by running:
-#
- sudo dnf update -y
-
-# The standard CentOS repositories don't contain all the required packages,
-# you need to enable the EPEL repository as well. For example for SELinux
-# related redhat-hardened-cc1 package. To enable it on CentOS run:
-
- sudo dnf install -y epel-release redhat-rpm-config
-
-# EPEL contains Postgres 9.6 and 10, but not PostGIS. Postgres 9.4+/10/11/12
-# and PostGIS 2.4/2.5/3.0 are availble from postgresql.org. Enable these
-# repositories and make sure, the binaries can be found:
-
- sudo dnf -qy module disable postgresql
- sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- export PATH=/usr/pgsql-12/bin:$PATH
-
-# Now you can install all packages needed for Nominatim:
-
-#DOCS: :::sh
- sudo dnf --enablerepo=powertools install -y postgresql12-server \
- postgresql12-contrib postgresql12-devel postgis30_12 \
- wget git cmake make gcc gcc-c++ libtool policycoreutils-python-utils \
- llvm-toolset ccache clang-tools-extra \
- php-pgsql php php-intl php-json libpq-devel \
- bzip2-devel proj-devel boost-devel \
- python3-pip python3-setuptools python3-devel \
- python3-psycopg2 \
- expat-devel zlib-devel libicu-devel
-
- pip3 install --user python-dotenv psutil Jinja2 PyICU datrie pyyaml
-
-
-#
-# System Configuration
-# ====================
-#
-# The following steps are meant to configure a fresh CentOS installation
-# for use with Nominatim. You may skip some of the steps if you have your
-# OS already configured.
-#
-# Creating Dedicated User Accounts
-# --------------------------------
-#
-# Nominatim will run as a global service on your machine. It is therefore
-# best to install it under its own separate user account. In the following
-# we assume this user is called nominatim and the installation will be in
-# /srv/nominatim. To create the user and directory run:
-#
-# sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim
-#
-# You may find a more suitable location if you wish.
-#
-# To be able to copy and paste instructions from this manual, export
-# user name and home directory now like this:
-#
-if [ "x$USERNAME" == "x" ]; then #DOCS:
- export USERNAME=vagrant #DOCS: export USERNAME=nominatim
- export USERHOME=/srv/nominatim
- sudo mkdir -p /srv/nominatim #DOCS:
- sudo chown vagrant /srv/nominatim #DOCS:
-fi #DOCS:
-#
-# **Never, ever run the installation as a root user.** You have been warned.
-#
-# Make sure that system servers can read from the home directory:
-
- chmod a+x $USERHOME
-
-# Setting up PostgreSQL
-# ---------------------
-#
-# CentOS does not automatically create a database cluster. Therefore, start
-# with initializing the database:
-
-if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
- sudo -u postgres /usr/pgsql-12/bin/pg_ctl initdb -D /var/lib/pgsql/12/data #DOCS:
- sudo mkdir /var/log/postgresql #DOCS:
- sudo chown postgres. /var/log/postgresql #DOCS:
-else #DOCS:
- sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
-fi #DOCS:
-#
-# Next tune the postgresql configuration, which is located in
-# `/var/lib/pgsql/12/data/postgresql.conf`. See section *Postgres Tuning* in
-# [the installation page](../admin/Installation.md#postgresql-tuning)
-# for the parameters to change.
-#
-# Now start the postgresql service after updating this config file:
-
-if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
- sudo -u postgres /usr/pgsql-12/bin/pg_ctl -D /var/lib/pgsql/12/data -l /var/log/postgresql/postgresql-12.log start #DOCS:
-else #DOCS:
- sudo systemctl enable postgresql-12
- sudo systemctl restart postgresql-12
-fi #DOCS:
-
-#
-# Finally, we need to add two postgres users: one for the user that does
-# the import and another for the webserver which should access the database
-# only for reading:
-#
-
- sudo -u postgres createuser -s $USERNAME
- sudo -u postgres createuser apache
-
-#
-# Installing Nominatim
-# ====================
-#
-# Building and Configuration
-# --------------------------
-#
-# Get the source code from Github and change into the source directory
-#
-if [ "x$1" == "xyes" ]; then #DOCS: :::sh
- cd $USERHOME
- git clone --recursive git://github.com/openstreetmap/Nominatim.git
- cd Nominatim
-else #DOCS:
- cd $USERHOME/Nominatim #DOCS:
-fi #DOCS:
-
-# When installing the latest source from github, you also need to
-# download the country grid:
-
-if [ ! -f data/country_osm_grid.sql.gz ]; then #DOCS: :::sh
- wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
-fi #DOCS:
-
-# The code must be built in a separate directory. Create this directory,
-# then configure and build Nominatim in there:
-
-#DOCS: :::sh
- mkdir $USERHOME/build
- cd $USERHOME/build
- cmake $USERHOME/Nominatim
- make
- sudo make install
-
-#
-# Setting up the Apache Webserver
-# -------------------------------
-#
-# The webserver should serve the php scripts from the website directory of your
-# [project directory](../admin/Import.md#creating-the-project-directory).
-# This directory needs to exist when the webserver is configured.
-# Therefore set up a project directory and create the website directory:
-#
- mkdir $USERHOME/nominatim-project
- mkdir $USERHOME/nominatim-project/website
-#
-# You need to create an alias to the website directory in your apache
-# configuration. Add a separate nominatim configuration to your webserver:
-
-#DOCS:```sh
-sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
-<Directory "$USERHOME/nominatim-project/website">
- Options FollowSymLinks MultiViews
- AddType text/html .php
- DirectoryIndex search.php
- Require all granted
-</Directory>
-
-Alias /nominatim $USERHOME/nominatim-project/website
-EOFAPACHECONF
-#DOCS:```
-
-sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
-
-#
-# Then reload apache:
-#
-
-if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
- sudo httpd #DOCS:
-else #DOCS:
- sudo systemctl enable httpd
- sudo systemctl restart httpd
-fi #DOCS:
-
-#
-# Adding SELinux Security Settings
-# --------------------------------
-#
-# It is a good idea to leave SELinux enabled and enforcing, particularly
-# with a web server accessible from the Internet. At a minimum the
-# following SELinux labeling should be done for Nominatim:
-
-if [ "x$HAVE_SELINUX" != "xno" ]; then #DOCS:
- sudo semanage fcontext -a -t httpd_sys_content_t "/usr/local/nominatim/lib/lib-php(/.*)?"
- sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/nominatim-project/website(/.*)?"
- sudo semanage fcontext -a -t lib_t "$USERHOME/nominatim-project/module/nominatim.so"
- sudo restorecon -R -v /usr/local/lib/nominatim
- sudo restorecon -R -v $USERHOME/nominatim-project
-fi #DOCS:
-
-# You need to create a minimal configuration file that tells nominatim
-# the name of your webserver user:
-
-#DOCS:```sh
-echo NOMINATIM_DATABASE_WEBUSER="apache" | tee $USERHOME/nominatim-project/.env
-#DOCS:```
-
-
-# Nominatim is now ready to use. Continue with
-# [importing a database from OSM data](../admin/Import.md).
sudo apt install -y php-cgi
sudo apt install -y build-essential cmake g++ libboost-dev libboost-system-dev \
libboost-filesystem-dev libexpat1-dev zlib1g-dev\
- libbz2-dev libpq-dev libproj-dev \
- postgresql-server-dev-10 postgresql-10-postgis-2.4 \
+ libbz2-dev libpq-dev \
+ postgresql-10-postgis-2.4 \
postgresql-contrib-10 postgresql-10-postgis-scripts \
- php php-pgsql php-intl libicu-dev python3-pip \
- python3-psutil python3-jinja2 python3-icu git
+ php-cli php-pgsql php-intl libicu-dev python3-pip \
+ python3-psutil python3-jinja2 python3-yaml python3-icu git
# Some of the Python packages that come with Ubuntu 18.04 are too old, so
# install the latest version from pip:
#
if [ "x$1" == "xyes" ]; then #DOCS: :::sh
cd $USERHOME
- git clone --recursive git://github.com/openstreetmap/Nominatim.git
+ git clone --recursive https://github.com/openstreetmap/Nominatim.git
cd Nominatim
else #DOCS:
cd $USERHOME/Nominatim #DOCS:
sudo apt install -y php-cgi
sudo apt install -y build-essential cmake g++ libboost-dev libboost-system-dev \
libboost-filesystem-dev libexpat1-dev zlib1g-dev \
- libbz2-dev libpq-dev libproj-dev \
- postgresql-server-dev-12 postgresql-12-postgis-3 \
+ libbz2-dev libpq-dev \
+ postgresql-12-postgis-3 \
postgresql-contrib-12 postgresql-12-postgis-3-scripts \
- php php-pgsql php-intl libicu-dev python3-dotenv \
+ php-cli php-pgsql php-intl libicu-dev python3-dotenv \
python3-psycopg2 python3-psutil python3-jinja2 \
- python3-icu python3-datrie git
+ python3-icu python3-datrie python3-yaml git
#
# System Configuration
#
if [ "x$1" == "xyes" ]; then #DOCS: :::sh
cd $USERHOME
- git clone --recursive git://github.com/openstreetmap/Nominatim.git
+ git clone --recursive https://github.com/openstreetmap/Nominatim.git
cd Nominatim
else #DOCS:
cd $USERHOME/Nominatim #DOCS:
#
if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
- sudo /usr/sbin/php-fpm7.3 --nodaemonize --fpm-config /etc/php/7.3/fpm/php-fpm.conf & #DOCS:
+ sudo /usr/sbin/php-fpm7.4 --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf & #DOCS:
sudo /usr/sbin/nginx & #DOCS:
else #DOCS:
sudo systemctl restart php7.4-fpm nginx
--- /dev/null
+#!/bin/bash -e
+#
+# hacks for broken vagrant box #DOCS:
+sudo rm -f /var/lib/dpkg/lock #DOCS:
+export APT_LISTCHANGES_FRONTEND=none #DOCS:
+export DEBIAN_FRONTEND=noninteractive #DOCS:
+
+# *Note:* these installation instructions are also available in executable
+# form for use with vagrant under vagrant/Install-on-Ubuntu-22.sh.
+#
+# Installing the Required Software
+# ================================
+#
+# These instructions expect that you have a freshly installed Ubuntu 22.04.
+#
+# Make sure all packages are up-to-date by running:
+#
+
+ sudo apt update -qq
+
+# Now you can install all packages needed for Nominatim:
+
+ sudo apt install -y php-cgi
+ sudo apt install -y build-essential cmake g++ libboost-dev libboost-system-dev \
+ libboost-filesystem-dev libexpat1-dev zlib1g-dev \
+ libbz2-dev libpq-dev \
+ postgresql-server-dev-14 postgresql-14-postgis-3 \
+ postgresql-contrib-14 postgresql-14-postgis-3-scripts \
+ php-cli php-pgsql php-intl libicu-dev python3-dotenv \
+ python3-psycopg2 python3-psutil python3-jinja2 \
+ python3-icu python3-datrie git
+
+#
+# System Configuration
+# ====================
+#
+# The following steps are meant to configure a fresh Ubuntu installation
+# for use with Nominatim. You may skip some of the steps if you have your
+# OS already configured.
+#
+# Creating Dedicated User Accounts
+# --------------------------------
+#
+# Nominatim will run as a global service on your machine. It is therefore
+# best to install it under its own separate user account. In the following
+# we assume this user is called nominatim and the installation will be in
+# /srv/nominatim. To create the user and directory run:
+#
+# sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim
+#
+# You may find a more suitable location if you wish.
+#
+# To be able to copy and paste instructions from this manual, export
+# user name and home directory now like this:
+#
+if [ "x$USERNAME" == "x" ]; then #DOCS:
+ export USERNAME=vagrant #DOCS: export USERNAME=nominatim
+ export USERHOME=/home/vagrant #DOCS: export USERHOME=/srv/nominatim
+fi #DOCS:
+#
+# **Never, ever run the installation as a root user.** You have been warned.
+#
+# Make sure that system servers can read from the home directory:
+
+ chmod a+x $USERHOME
+
+# Setting up PostgreSQL
+# ---------------------
+#
+# Tune the postgresql configuration, which is located in
+# `/etc/postgresql/14/main/postgresql.conf`. See section *Postgres Tuning* in
+# [the installation page](../admin/Installation.md#postgresql-tuning)
+# for the parameters to change.
+#
+# Restart the postgresql service after updating this config file.
+
+if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
+ sudo pg_ctlcluster 14 main start #DOCS:
+else #DOCS:
+ sudo systemctl restart postgresql
+fi #DOCS:
+#
+# Finally, we need to add two postgres users: one for the user that does
+# the import and another for the webserver which should access the database
+# for reading only:
+#
+
+ sudo -u postgres createuser -s $USERNAME
+ sudo -u postgres createuser www-data
+
+#
+# Installing Nominatim
+# ====================
+#
+# Building and Configuration
+# --------------------------
+#
+# Get the source code from Github and change into the source directory
+#
+if [ "x$1" == "xyes" ]; then #DOCS: :::sh
+ cd $USERHOME
+ git clone --recursive https://github.com/openstreetmap/Nominatim.git
+ cd Nominatim
+else #DOCS:
+ cd $USERHOME/Nominatim #DOCS:
+fi #DOCS:
+
+# When installing the latest source from github, you also need to
+# download the country grid:
+
+if [ ! -f data/country_osm_grid.sql.gz ]; then #DOCS: :::sh
+ wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
+fi #DOCS:
+
+# The code must be built in a separate directory. Create this directory,
+# then configure and build Nominatim in there:
+
+ mkdir $USERHOME/build
+ cd $USERHOME/build
+ cmake $USERHOME/Nominatim
+ make
+ sudo make install
+
+# Nominatim is now ready to use. You can continue with
+# [importing a database from OSM data](../admin/Import.md). If you want to set up
+# a webserver first, continue reading.
+#
+# Setting up a webserver
+# ======================
+#
+# The webserver should serve the php scripts from the website directory of your
+# [project directory](../admin/Import.md#creating-the-project-directory).
+# This directory needs to exist when being configured.
+# Therefore set up a project directory and create a website directory:
+
+ mkdir $USERHOME/nominatim-project
+ mkdir $USERHOME/nominatim-project/website
+
+# The import process will populate the directory later.
+
+#
+# Option 1: Using Apache
+# ----------------------
+#
+if [ "x$2" == "xinstall-apache" ]; then #DOCS:
+#
+# Apache has a PHP module that can be used to serve Nominatim. To install them
+# run:
+
+ sudo apt install -y apache2 libapache2-mod-php
+
+# You need to create an alias to the website directory in your apache
+# configuration. Add a separate nominatim configuration to your webserver:
+
+#DOCS:```sh
+sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
+<Directory "$USERHOME/nominatim-project/website">
+ Options FollowSymLinks MultiViews
+ AddType text/html .php
+ DirectoryIndex search.php
+ Require all granted
+</Directory>
+
+Alias /nominatim $USERHOME/nominatim-project/website
+EOFAPACHECONF
+#DOCS:```
+
+#
+# Then enable the configuration and restart apache
+#
+
+ sudo a2enconf nominatim
+if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
+ sudo apache2ctl start #DOCS:
+else #DOCS:
+ sudo systemctl restart apache2
+fi #DOCS:
+
+# The Nominatim API is now available at `http://localhost/nominatim/`.
+
+fi #DOCS:
+
+#
+# Option 2: Using nginx
+# ---------------------
+#
+if [ "x$2" == "xinstall-nginx" ]; then #DOCS:
+
+# Nginx has no native support for php scripts. You need to set up php-fpm for
+# this purpose. First install nginx and php-fpm:
+
+ sudo apt install -y nginx php-fpm
+
+# You need to configure php-fpm to listen on a Unix socket.
+
+#DOCS:```sh
+sudo tee /etc/php/8.1/fpm/pool.d/www.conf << EOF_PHP_FPM_CONF
+[www]
+; Replace the tcp listener and add the unix socket
+listen = /var/run/php8.1-fpm.sock
+
+; Ensure that the daemon runs as the correct user
+listen.owner = www-data
+listen.group = www-data
+listen.mode = 0666
+
+; Unix user of FPM processes
+user = www-data
+group = www-data
+
+; Choose process manager type (static, dynamic, ondemand)
+pm = ondemand
+pm.max_children = 5
+EOF_PHP_FPM_CONF
+#DOCS:```
+
+# Then create a Nginx configuration to forward http requests to that socket.
+
+#DOCS:```sh
+sudo tee /etc/nginx/sites-available/default << EOF_NGINX_CONF
+server {
+ listen 80 default_server;
+ listen [::]:80 default_server;
+
+ root $USERHOME/nominatim-project/website;
+ index search.php index.html;
+ location / {
+ try_files \$uri \$uri/ @php;
+ }
+
+ location @php {
+ fastcgi_param SCRIPT_FILENAME "\$document_root\$uri.php";
+ fastcgi_param PATH_TRANSLATED "\$document_root\$uri.php";
+ fastcgi_param QUERY_STRING \$args;
+ fastcgi_pass unix:/var/run/php8.1-fpm.sock;
+ fastcgi_index index.php;
+ include fastcgi_params;
+ }
+
+ location ~ [^/]\.php(/|$) {
+ fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+ if (!-f \$document_root\$fastcgi_script_name) {
+ return 404;
+ }
+ fastcgi_pass unix:/var/run/php7.4-fpm.sock;
+ fastcgi_index search.php;
+ include fastcgi.conf;
+ }
+}
+EOF_NGINX_CONF
+#DOCS:```
+
+# If you have some errors, make sure that php8.1-fpm.sock is well under
+# /var/run/ and not under /var/run/php. Otherwise change the Nginx configuration
+# to /var/run/php/php8.1-fpm.sock.
+#
+# Enable the configuration and restart Nginx
+#
+
+if [ "x$NOSYSTEMD" == "xyes" ]; then #DOCS:
+ sudo /usr/sbin/php-fpm8.1 --nodaemonize --fpm-config /etc/php/8.1/fpm/php-fpm.conf & #DOCS:
+ sudo /usr/sbin/nginx & #DOCS:
+else #DOCS:
+ sudo systemctl restart php8.1-fpm nginx
+fi #DOCS:
+
+# The Nominatim API is now available at `http://localhost/`.
+
+
+
+fi #DOCS: