Showing preview only (618K chars total). Download the full file or copy to clipboard to get everything.
Repository: fayder/restcountries
Branch: master
Commit: 85c3a55d8c96
Files: 35
Total size: 595.1 KB
Directory structure:
gitextract_8c1q055c/
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── eu/
│ │ └── fayder/
│ │ └── restcountries/
│ │ ├── domain/
│ │ │ ├── BaseCountry.java
│ │ │ ├── ICountryRestSymbols.java
│ │ │ └── ResponseEntity.java
│ │ ├── rest/
│ │ │ └── CountryServiceBase.java
│ │ ├── servlet/
│ │ │ ├── CORSFilter.java
│ │ │ ├── NotFoundExceptionMapper.java
│ │ │ └── RestApplication.java
│ │ ├── v1/
│ │ │ ├── domain/
│ │ │ │ ├── Country.java
│ │ │ │ └── CountryTranslations.java
│ │ │ └── rest/
│ │ │ ├── CountryRest.java
│ │ │ └── CountryService.java
│ │ └── v2/
│ │ ├── domain/
│ │ │ ├── Contribution.java
│ │ │ ├── Country.java
│ │ │ ├── Currency.java
│ │ │ ├── Language.java
│ │ │ ├── RegionalBloc.java
│ │ │ └── Translations.java
│ │ └── rest/
│ │ ├── CountryRest.java
│ │ ├── CountryService.java
│ │ └── StripeRest.java
│ ├── resources/
│ │ ├── countriesV1.json
│ │ ├── countriesV2.json
│ │ └── log4j.properties
│ └── webapp/
│ ├── flatdoc.md
│ ├── index.html
│ └── js/
│ └── restc.js
└── test/
├── java/
│ └── eu/
│ └── fayder/
│ └── restcountries/
│ ├── EmptyDataTest.java
│ ├── v1/
│ │ └── CountryServiceTest.java
│ └── v2/
│ └── CountryServiceTest.java
└── resources/
└── log4j.properties
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.classpath
.project
.settings
target/
*.DS_Store
*.sh
*.css
backup/
.idea/
*.iml
google*.html
================================================
FILE: .travis.yml
================================================
language: java
jdk:
- oraclejdk8
================================================
FILE: LICENSE
================================================
Mozilla Public License
Version 2.0
1. Definitions
1.1. “Contributor”
means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software.
1.2. “Contributor Version”
means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor’s Contribution.
1.3. “Contribution”
means Covered Software of a particular Contributor.
1.4. “Covered Software”
means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof.
1.5. “Incompatible With Secondary Licenses”
means
that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or
that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.
1.6. “Executable Form”
means any form of the work other than Source Code Form.
1.7. “Larger Work”
means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software.
1.8. “License”
means this document.
1.9. “Licensable”
means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License.
1.10. “Modifications”
means any of the following:
any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or
any new file in Source Code Form that contains any Covered Software.
1.11. “Patent Claims” of a Contributor
means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version.
1.12. “Secondary License”
means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses.
1.13. “Source Code Form”
means the form of the work preferred for making modifications.
1.14. “You” (or “Your”)
means an individual or a legal entity exercising rights under this License. For legal entities, “You” includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, “control” means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
2. License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and
under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor:
for any code that a Contributor has removed from Covered Software; or
for infringements caused by: (i) Your and any other third party’s modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or
under Patent Claims infringed by Covered Software in the absence of its Contributions.
This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1.
3. Responsibilities
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients’ rights in the Source Code Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and
You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients’ rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s).
3.4. Notices
You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction.
4. Inability to Comply Due to Statute or Regulation
If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
5. Termination
5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination.
6. Disclaimer of Warranty
Covered Software is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer.
7. Limitation of Liability
Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability for death or personal injury resulting from such party’s negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
8. Litigation
Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party’s ability to bring cross-claims or counter-claims.
9. Miscellaneous
This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor.
10. Versions of the License
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - “Incompatible With Secondary Licenses” Notice
This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.
================================================
FILE: README.md
================================================
REST Countries
=======
Get information about countries via a RESTful API https://restcountries.eu
[](https://travis-ci.org/fayder/restcountries)
Donate!
---------------
The restcountries project has been acquired by apilayer, one of the leading providers of API microservices. We will keep supporting restcountries and providing it as a free solution for developers. We will finance this project fully and have turned off the donations feature.
Users
---------------
RESTCountries has over 1200 users, including:
[TTÜ]
[Spotify International Pricing Index]
[Gorillaz]
[Wanderlust]
[Xero]
[FxPro]
[SKROSS]
[onefinestay]
[Much Better Adventures]
Stay up-to-date
---------------
Follow RESTCountries on [Twitter]
Or subscribe to the [mailing list]
API Endpoints
=======
Below are described the REST endpoints available that you can use to search for countries
All
---------------
``` html
https://restcountries.eu/rest/v2/all
```
Name
---------------
Search by country name. It can be the native name or partial name
``` javascript
https://restcountries.eu/rest/v2/name/{name}
```
``` html
https://restcountries.eu/rest/v2/name/eesti
```
``` html
https://restcountries.eu/rest/v2/name/united
```
Full Name
---------------
Search by country full name
``` javascript
https://restcountries.eu/rest/v2/name/{name}?fullText=true
```
``` html
https://restcountries.eu/rest/v2/name/aruba?fullText=true
```
Code
---------------
Search by ISO 3166-1 2-letter or 3-letter country code
``` javascript
https://restcountries.eu/rest/v2/alpha/{code}
```
``` html
https://restcountries.eu/rest/v2/alpha/co
```
``` html
https://restcountries.eu/rest/v2/alpha/col
```
List of codes
---------------
Search by list of ISO 3166-1 2-letter or 3-letter country codes
``` javascript
https://restcountries.eu/rest/v2/alpha?codes={code};{code};{code}
```
``` html
https://restcountries.eu/rest/v2/alpha?codes=col;no;ee
```
Currency
---------------
Search by ISO 4217 currency code
``` javascript
https://restcountries.eu/rest/v2/currency/{currency}
```
``` html
https://restcountries.eu/rest/v2/currency/cop
```
Language
---------------
Search by ISO 639-1 language code
``` javascript
https://restcountries.eu/rest/v2/lang/{et}
```
``` html
https://restcountries.eu/rest/v2/lang/es
```
Capital city
---------------
Search by capital city
``` javascript
https://restcountries.eu/rest/v2/capital/{capital}
```
``` html
https://restcountries.eu/rest/v2/capital/tallinn
```
Calling code
---------------
Search by calling code
``` javascript
https://restcountries.eu/rest/v2/callingcode/{callingcode}
```
``` html
https://restcountries.eu/rest/v2/callingcode/372
```
Region
---------------
Search by region: Africa, Americas, Asia, Europe, Oceania
``` javascript
https://restcountries.eu/rest/v2/region/{region}
```
``` html
https://restcountries.eu/rest/v2/region/europe
```
Regional Bloc
---------------
Search by regional bloc:
- EU (European Union)
- EFTA (European Free Trade Association)
- CARICOM (Caribbean Community)
- PA (Pacific Alliance)
- AU (African Union)
- USAN (Union of South American Nations)
- EEU (Eurasian Economic Union)
- AL (Arab League)
- ASEAN (Association of Southeast Asian Nations)
- CAIS (Central American Integration System)
- CEFTA (Central European Free Trade Agreement)
- NAFTA (North American Free Trade Agreement)
- SAARC (South Asian Association for Regional Cooperation)
``` javascript
https://restcountries.eu/rest/v2/regionalbloc/{regionalbloc}
```
``` html
https://restcountries.eu/rest/v2/regionalbloc/eu
```
Response Example
---------------
``` html
https://restcountries.eu/rest/v2/alpha/col
```
``` json
[[{
"name": "Colombia",
"topLevelDomain": [".co"],
"alpha2Code": "CO",
"alpha3Code": "COL",
"callingCodes": ["57"],
"capital": "Bogotá",
"altSpellings": ["CO", "Republic of Colombia", "República de Colombia"],
"region": "Americas",
"subregion": "South America",
"population": 48759958,
"latlng": [4.0, -72.0],
"demonym": "Colombian",
"area": 1141748.0,
"gini": 55.9,
"timezones": ["UTC-05:00"],
"borders": ["BRA", "ECU", "PAN", "PER", "VEN"],
"nativeName": "Colombia",
"numericCode": "170",
"currencies": [{
"code": "COP",
"name": "Colombian peso",
"symbol": "$"
}],
"languages": [{
"iso639_1": "es",
"iso639_2": "spa",
"name": "Spanish",
"nativeName": "Español"
}],
"translations": {
"de": "Kolumbien",
"es": "Colombia",
"fr": "Colombie",
"ja": "コロンビア",
"it": "Colombia",
"br": "Colômbia",
"pt": "Colômbia"
},
"flag": "https://restcountries.eu/data/col.svg",
"regionalBlocs": [{
"acronym": "PA",
"name": "Pacific Alliance",
"otherAcronyms": [],
"otherNames": ["Alianza del Pacífico"]
}, {
"acronym": "USAN",
"name": "Union of South American Nations",
"otherAcronyms": ["UNASUR", "UNASUL", "UZAN"],
"otherNames": ["Unión de Naciones Suramericanas", "União de Nações Sul-Americanas", "Unie van Zuid-Amerikaanse Naties", "South American Union"]
}]
}]
```
Filter Response
=======
You can filter the output of your request to include only the specified fields.
``` javascript
https://restcountries.eu/rest/v2/{service}?fields={field};{field};{field}
```
``` html
https://restcountries.eu/rest/v2/all?fields=name;capital;currencies
```
Sources
=======
* [@mledoze]
* [List of countries]
* [Languages]
* [Currencies]
* [Area]
Similar projects
=======
* [Countries of the world]
* [REST Countries Node.js]
* [REST Countries Ruby]
* [REST Countries Go]
* [REST Countries Python]
* [world-currencies]
* [REST Countries C#](https://github.com/egbakou/RESTCountries.NET)
License
=======
[Mozilla Public License] MPL 2.0
[dist]: https://github.com/fayder/restcountries/
[Twitter]: https://twitter.com/restcountries
[mailing list]: http://eepurl.com/cC-h2v
[Donate]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=V5AJAEMKE6A3E
[@mledoze]: https://github.com/mledoze/countries
[List of countries]: https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes
[Languages]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
[Currencies]: https://en.wikipedia.org/wiki/List_of_circulating_currencies
[Area]: https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area
[Population]: https://en.wikipedia.org/wiki/List_of_countries_by_population
[Gini coefficient]: http://en.wikipedia.org/wiki/List_of_countries_by_income_equality
[Mozilla Public License]: https://www.mozilla.org/en-US/MPL/2.0/
[world-currencies]: https://github.com/wiredmax/world-currencies
[REST Countries Node.js]: https://github.com/aredo/restcountries
[REST Countries Ruby]: https://github.com/davidesantangelo/restcountry
[REST Countries Go]: https://github.com/alediaferia/gocountries
[REST Countries Python]: https://github.com/SteinRobert/python-restcountries
[Countries of the world]: http://countries.petethompson.net
[TTÜ]: https://www.ttu.ee/studying/tut_admission/programmes-in-tut/ask-us/
[Spotify International Pricing Index]: http://mts.io/2014/05/07/spotify-pricing-index/
[Gorillaz]: http://www.gorillaz.com/
[Wanderlust]: https://wanderlust.com/
[Xero]: https://www.xero.com/
[FxPro]: http://www.fxpro.com/
[onefinestay]: https://www.onefinestay.com/
[Much Better Adventures]: https://www.muchbetteradventures.com
[SKROSS]: http://www.skross.com/en
================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>eu.fayder</groupId>
<artifactId>restcountries</artifactId>
<version>2.0.5</version>
<packaging>war</packaging>
<name>restcountries</name>
<description>REST interface to get data about countries</description>
<developers>
<developer>
<id>fayder</id>
<url>http://restcountries.eu</url>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<resteasy.version>3.1.4.Final</resteasy.version>
<gson.version>2.8.2</gson.version>
<stripe.version>3.5.0</stripe.version>
<slf4j.version>1.7.25</slf4j.version>
<servlet.version>4.0.0</servlet.version>
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${resteasy.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-servlet-initializer</artifactId>
<version>${resteasy.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<!-- stripe -->
<dependency>
<groupId>com.stripe</groupId>
<artifactId>stripe-java</artifactId>
<version>${stripe.version}</version>
</dependency>
<!-- logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<!-- test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.2.v20140723</version>
<configuration>
<webApp>
<contextPath>/</contextPath>
</webApp>
<useTestClasspath>true</useTestClasspath>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: src/main/java/eu/fayder/restcountries/domain/BaseCountry.java
================================================
package eu.fayder.restcountries.domain;
import java.util.List;
public class BaseCountry {
protected String name;
private List<String> topLevelDomain;
protected String alpha2Code;
private String alpha3Code;
private List<String> callingCodes;
protected String capital;
private List<String> altSpellings;
protected String region;
protected String subregion;
protected Integer population;
private List<Double> latlng;
private String demonym;
private Double area;
protected Double gini;
private List<String> timezones;
protected List<String> borders;
protected String nativeName;
private String numericCode;
public String getName() {
return name;
}
public List<String> getTopLevelDomain() {
return topLevelDomain;
}
public String getAlpha2Code() {
return alpha2Code;
}
public String getAlpha3Code() {
return alpha3Code;
}
public List<String> getCallingCodes() {
return callingCodes;
}
public String getCapital() {
return capital;
}
public List<String> getAltSpellings() {
return altSpellings;
}
public String getRegion() {
return region;
}
public String getSubregion() {
return subregion;
}
public Integer getPopulation() {
return population;
}
public List<Double> getLatlng() {
return latlng;
}
public String getDemonym() {
return demonym;
}
public Double getArea() {
return area;
}
public Double getGini() {
return gini;
}
public List<String> getTimezones() {
return timezones;
}
public List<String> getBorders() {
return borders;
}
public String getNativeName() {
return nativeName;
}
public String getNumericCode() {
return numericCode;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/domain/ICountryRestSymbols.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.domain;
public interface ICountryRestSymbols {
public static final String SEMICOLON = ";";
}
================================================
FILE: src/main/java/eu/fayder/restcountries/domain/ResponseEntity.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.domain;
public class ResponseEntity {
private final int status;
private final String message;
public ResponseEntity(int status, String message) {
this.status = status;
this.message = message;
}
public String getMessage() {
return message;
}
public int getStatus() {
return status;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/rest/CountryServiceBase.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.rest;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import eu.fayder.restcountries.domain.BaseCountry;
import eu.fayder.restcountries.domain.ICountryRestSymbols;
import org.apache.log4j.Logger;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.Normalizer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CountryServiceBase {
private static final Logger LOG = Logger.getLogger(CountryServiceBase.class);
protected <T extends BaseCountry> T getByAlpha(String alpha, List<T> countries) {
int alphaLength = alpha.length();
for (T country : countries) {
if (alphaLength == 2) {
if (country.getAlpha2Code().toLowerCase().equals(alpha.toLowerCase())) {
return country;
}
} else if (alphaLength == 3) {
if (country.getAlpha3Code().toLowerCase().equals(alpha.toLowerCase())) {
return country;
}
}
}
return null;
}
protected List<? extends BaseCountry> getByCodeList(String codeList, List<? extends BaseCountry> countries) {
List<BaseCountry> result = new ArrayList<>();
if(codeList == null) return result;
List<String> codes = Arrays.asList(codeList.split(ICountryRestSymbols.SEMICOLON));
for(String code : codes) {
BaseCountry country = getByAlpha(code, countries);
if(!result.contains(country))
result.add(country);
}
return result;
}
protected List<? extends BaseCountry> getByName(String name, boolean fullText, List<? extends BaseCountry> countries) {
if(fullText) {
return fulltextSearch(name, countries);
} else {
return substringSearch(name, countries);
}
}
protected List<? extends BaseCountry> getByCallingCode(String callingCode, List<? extends BaseCountry> countries) {
List<BaseCountry> result = new ArrayList<>();
for(BaseCountry country : countries) {
for(String c : country.getCallingCodes()) {
if(c.equals(callingCode))
result.add(country);
}
}
return result;
}
protected List<? extends BaseCountry> getByCapital(String capital, List<? extends BaseCountry> countries) {
List<BaseCountry> result = new ArrayList<>();
for(BaseCountry country : countries) {
if(normalize(country.getCapital().toLowerCase()).contains(normalize(capital.toLowerCase()))) {
result.add(country);
}
}
return result;
}
protected List<? extends BaseCountry> getByRegion(String region, List<? extends BaseCountry> countries) {
List<BaseCountry> result = new ArrayList<>();
for(BaseCountry country : countries) {
if(country.getRegion().toLowerCase().equals(region.toLowerCase())) {
result.add(country);
}
}
return result;
}
protected List<? extends BaseCountry> getBySubregion(String subregion, List<? extends BaseCountry> countries) {
List<BaseCountry> result = new ArrayList<>();
for(BaseCountry country : countries) {
if(country.getSubregion().toLowerCase().equals(subregion.toLowerCase())) {
result.add(country);
}
}
return result;
}
private List<? extends BaseCountry> fulltextSearch(String name, List<? extends BaseCountry> countries) {
// Using 2 different 'for' loops to give priority to 'name' matches over alternative spellings
List<BaseCountry> result = new ArrayList<>();
for (BaseCountry country : countries) {
if (normalize(country.getName().toLowerCase()).equals(normalize(name.toLowerCase()))) {
result.add(country);
}
}
for (BaseCountry country : countries) {
for (String alternative : country.getAltSpellings()) {
if (normalize(alternative.toLowerCase()).equals(normalize(name.toLowerCase()))
&& !result.contains(country)) {
result.add(country);
}
}
}
return result;
}
private List<? extends BaseCountry> substringSearch(String name, List<? extends BaseCountry> countries) {
// Using 2 different 'for' loops to give priority to 'name' matches over alternative spellings
List<BaseCountry> result = new ArrayList<>();
for(BaseCountry country : countries) {
if(normalize(country.getName().toLowerCase()).contains(normalize(name.toLowerCase()))) {
result.add(country);
}
}
for(BaseCountry country : countries) {
for (String alternative : country.getAltSpellings()) {
if( normalize(alternative.toLowerCase()).contains(normalize(name.toLowerCase()))
&& !result.contains(country) ) {
result.add(country);
}
}
}
return result;
}
protected String normalize(String string) {
return Normalizer.normalize(string, Normalizer.Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
protected List<? extends BaseCountry> loadJson(String filename, Class<? extends BaseCountry> clazz) {
LOG.debug("Loading JSON " + filename);
List<BaseCountry> countries = new ArrayList<>();
InputStream is = CountryServiceBase.class.getClassLoader().getResourceAsStream(filename);
Gson gson = new Gson();
JsonReader reader;
try {
reader = new JsonReader(new InputStreamReader(is, "UTF-8"));
reader.beginArray();
while(reader.hasNext()) {
BaseCountry country = gson.fromJson(reader, clazz);
countries.add(country);
}
} catch (Exception e) {
LOG.error("Could not load JSON " + filename);
}
return countries;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/servlet/CORSFilter.java
================================================
package eu.fayder.restcountries.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Created by fayder on 07/04/15.
*/
@WebFilter(filterName = "CORSFilter", urlPatterns = "/*")
public class CORSFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
((HttpServletResponse)response).addHeader("Access-Control-Allow-Origin", "*");
((HttpServletResponse)response).addHeader("Access-Control-Allow-Methods", "GET");
((HttpServletResponse)response).addHeader("Access-Control-Allow-Headers", "Accept, X-Requested-With");
((HttpServletResponse)response).addHeader("Cache-Control","public, max-age=86400");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/servlet/NotFoundExceptionMapper.java
================================================
package eu.fayder.restcountries.servlet;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import org.apache.log4j.Logger;
@Provider
public class NotFoundExceptionMapper implements ExceptionMapper<javax.ws.rs.NotFoundException> {
private static final Logger LOG = Logger.getLogger(NotFoundExceptionMapper.class);
@Override
public Response toResponse(javax.ws.rs.NotFoundException exception) {
LOG.error(exception.getMessage());
return Response.status(Status.NOT_FOUND).build();
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/servlet/RestApplication.java
================================================
package eu.fayder.restcountries.servlet;
import eu.fayder.restcountries.v1.rest.CountryRest;
import eu.fayder.restcountries.v2.rest.StripeRest;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;
@ApplicationPath("/rest")
public class RestApplication extends Application {
private Set<Object> singletons = new HashSet<>();
public RestApplication() {
singletons.add(new CountryRest());
singletons.add(new eu.fayder.restcountries.v2.rest.CountryRest());
singletons.add(new StripeRest());
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v1/domain/Country.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v1.domain;
import java.util.List;
import eu.fayder.restcountries.domain.BaseCountry;
public class Country extends BaseCountry {
private List<String> currencies;
private List<String> languages;
private CountryTranslations translations;
private String relevance;
public List<String> getCurrencies() {
return currencies;
}
public List<String> getLanguages() {
return languages;
}
public CountryTranslations getTranslations() {
return translations;
}
public String getRelevance() {
return relevance;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v1/domain/CountryTranslations.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v1.domain;
public class CountryTranslations {
private String de;
private String es;
private String fr;
private String ja;
private String it;
public String getDe() {
return de;
}
public void setDe(String de) {
this.de = de;
}
public String getEs() {
return es;
}
public void setEs(String es) {
this.es = es;
}
public String getFr() {
return fr;
}
public void setFr(String fr) {
this.fr = fr;
}
public String getJa() {
return ja;
}
public void setJa(String ja) {
this.ja = ja;
}
public String getIt() {
return it;
}
public void setIt(String it) {
this.it = it;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v1/rest/CountryRest.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v1.rest;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;
import eu.fayder.restcountries.domain.ResponseEntity;
import eu.fayder.restcountries.v1.domain.Country;
import org.apache.log4j.Logger;
import com.google.gson.Gson;
@Provider
@Path("/v1")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public class CountryRest {
private static final Logger LOG = Logger.getLogger(CountryRest.class);
@GET
@Path("all")
public Object getAllCountries() {
return this.getCountries();
}
@GET
public Object getCountries() {
LOG.info("Getting all");
return CountryService.getInstance().getAll();
}
@GET
@Path("alpha/{alphacode}")
public Object getByAlpha(@PathParam("alphacode") String alpha) {
LOG.info("Getting by alpha " + alpha);
if (isEmpty(alpha) || alpha.length() < 2 || alpha.length() > 3) {
return getResponse(Status.BAD_REQUEST);
}
Country country = CountryService.getInstance().getByAlpha(alpha);
if (country != null) {
return country;
}
return getResponse(Status.NOT_FOUND);
}
@GET
@Path("alpha/")
public Object getByAlphaList(@QueryParam("codes") String codes) {
LOG.info("Getting by list " + codes);
if (isEmpty(codes) || codes.length() < 2 || (codes.length() > 3 && !codes.contains(";"))) {
return getResponse(Status.BAD_REQUEST);
}
try {
List<Country> countries = CountryService.getInstance().getByCodeList(codes);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("currency/{currency}")
public Object getByCurrency(@PathParam("currency") String currency) {
LOG.info("Getting by currency " + currency);
if (isEmpty(currency) || currency.length() != 3) {
return getResponse(Status.BAD_REQUEST);
}
try {
List<Country> countries = CountryService.getInstance().getByCurrency(currency);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("name/{name}")
public Object getByName(@PathParam("name") String name, @QueryParam("fullText") boolean fullText) {
LOG.info("Getting by name " + name);
try {
List<Country> countries = CountryService.getInstance().getByName(name, fullText);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("callingcode/{callingcode}")
public Object getByCallingCode(@PathParam("callingcode") String callingcode) {
LOG.info("Getting by calling code " + callingcode);
try {
List<Country> countries = CountryService.getInstance().getByCallingCode(callingcode);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("capital/{capital}")
public Object getByCapital(@PathParam("capital") String capital) {
LOG.info("Getting by capital " + capital);
try {
List<Country> countries = CountryService.getInstance().getByCapital(capital);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("region/{region}")
public Object getByRegion(@PathParam("region") String region) {
LOG.info("Getting by region " + region);
try {
List<Country> countries = CountryService.getInstance().getByRegion(region);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("subregion/{subregion}")
public Object getBySubregion(@PathParam("subregion") String subregion) {
LOG.info("Getting by region " + subregion);
try {
List<Country> countries = CountryService.getInstance().getBySubregion(subregion);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("lang/{lang}")
public Object getByLanguage(@PathParam("lang") String language) {
LOG.info("Getting by language " + language);
try {
List<Country> countries = CountryService.getInstance().getByLanguage(language);
if (!countries.isEmpty()) {
return countries;
}
return getResponse(Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Status.INTERNAL_SERVER_ERROR);
}
}
@POST
public Object doPOST() {
LOG.info("Handling POST Request");
return getResponse(Status.METHOD_NOT_ALLOWED);
}
private Response getResponse(Status status) {
Gson gson = new Gson();
return Response
.status(status)
.entity(gson.toJson(new ResponseEntity(status.getStatusCode(),
status.getReasonPhrase()))).build();
}
private boolean isEmpty(String value) {
return value == null || value.isEmpty();
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v1/rest/CountryService.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v1.rest;
import eu.fayder.restcountries.rest.CountryServiceBase;
import eu.fayder.restcountries.v1.domain.Country;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
public class CountryService extends CountryServiceBase {
private static final Logger LOG = Logger.getLogger(CountryService.class);
private static List<Country> countries;
private CountryService() {
initialize();
}
private static class InstanceHolder {
private static final CountryService INSTANCE = new CountryService();
}
public static CountryService getInstance() {
return InstanceHolder.INSTANCE;
}
public List<Country> getAll() {
return countries;
}
public Country getByAlpha(String alpha) {
return super.getByAlpha(alpha, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByCodeList(String codeList) {
return (List<Country>) super.getByCodeList(codeList, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByName(String name, boolean isFullText) {
return (List<Country>) super.getByName(name, isFullText, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByCallingCode(String callingcode) {
return (List<Country>) super.getByCallingCode(callingcode, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByCapital(String capital) {
return (List<Country>) super.getByCapital(capital, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByRegion(String region) {
return (List<Country>) super.getByRegion(region, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getBySubregion(String subregion) {
return (List<Country>) super.getBySubregion(subregion, countries);
}
public List<Country> getByCurrency(String currency) {
List<Country> result = new ArrayList<>();
for (Country country : countries) {
for (String curr : country.getCurrencies()) {
if (curr.toLowerCase().equals(currency.toLowerCase())) {
result.add(country);
}
}
}
return result;
}
public List<Country> getByLanguage(String language) {
List<Country> result = new ArrayList<Country>();
for (Country country : countries) {
for (String lang : country.getLanguages()) {
if (lang.toLowerCase().equals(language.toLowerCase())) {
result.add(country);
}
}
}
return result;
}
@SuppressWarnings("unchecked")
private void initialize() {
countries = (List<Country>) super.loadJson("countriesV1.json", Country.class);
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Contribution.java
================================================
package eu.fayder.restcountries.v2.domain;
/**
* Created by fayder on 24/02/2017.
*/
public class Contribution {
private int amount;
private String token;
public int getAmount() {
return amount;
}
public String getToken() {
return token;
}
@Override
public String toString() {
return "Contribution{" +
"amount=" + amount +
'}';
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Country.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v2.domain;
import eu.fayder.restcountries.domain.BaseCountry;
import java.util.List;
public class Country extends BaseCountry {
private List<Currency> currencies;
private List<Language> languages;
private Translations translations;
private String flag;
private List<RegionalBloc> regionalBlocs;
private String cioc;
public List<Currency> getCurrencies() {
return currencies;
}
public List<Language> getLanguages() {
return languages;
}
public Translations getTranslations() {
return translations;
}
public String getFlag() {
return flag;
}
public List<RegionalBloc> getRegionalBlocs() {
return regionalBlocs;
}
public String getCioc() {
return cioc;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Currency.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v2.domain;
public class Currency {
private String code;
private String name;
private String symbol;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Language.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v2.domain;
public class Language {
private String iso639_1;
private String iso639_2;
private String name;
private String nativeName;
public String getIso639_1() {
return iso639_1;
}
public void setIso639_1(String code) {
this.iso639_1 = code;
}
public String getIso639_2() {
return iso639_2;
}
public void setIso639_2(String iso639_2) {
this.iso639_2 = iso639_2;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNativeName() {
return nativeName;
}
public void setNativeName(String nativeName) {
this.nativeName = nativeName;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/domain/RegionalBloc.java
================================================
package eu.fayder.restcountries.v2.domain;
import java.util.ArrayList;
import java.util.List;
/**
* Created by fayder on 30/04/2017.
*/
public class RegionalBloc {
private String acronym;
private String name;
private List<String> otherAcronyms;
private List<String> otherNames;
public String getAcronym() {
return acronym;
}
public String getName() {
return name;
}
public List<String> getOtherAcronyms() {
if (otherAcronyms == null) {
otherAcronyms = new ArrayList<>();
}
return otherAcronyms;
}
public List<String> getOtherNames() {
if (otherNames == null) {
otherNames = new ArrayList<>();
}
return otherNames;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Translations.java
================================================
package eu.fayder.restcountries.v2.domain;
import eu.fayder.restcountries.v1.domain.CountryTranslations;
/**
* Created by fayder on 05/03/2017.
*/
public class Translations extends CountryTranslations {
private String br;
private String pt;
private String nl;
private String hr;
private String fa;
public String getBr() {
return br;
}
public String getPt() {
return pt;
}
public String getNl() {
return nl;
}
public String getHr() {
return hr;
}
public String getFa() {
return fa;
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/rest/CountryRest.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v2.rest;
import com.google.gson.*;
import eu.fayder.restcountries.domain.ResponseEntity;
import eu.fayder.restcountries.v2.domain.Country;
import eu.fayder.restcountries.domain.ICountryRestSymbols;
import org.apache.log4j.Logger;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Provider
@Path("/v2")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public class CountryRest {
private static final Logger LOG = Logger.getLogger(CountryRest.class);
@GET
@Path("all")
public Object getAllCountries(@QueryParam("fields") String fields) {
return this.getCountries(fields);
}
@GET
public Object getCountries(@QueryParam("fields") String fields) {
LOG.info("Getting all");
List<Country> countries = CountryService.getInstance().getAll();
return parsedCountries(countries, fields);
}
@GET
@Path("alpha/{alphacode}")
public Object getByAlpha(@PathParam("alphacode") String alpha, @QueryParam("fields") String fields) {
LOG.info("Getting by alpha " + alpha);
if (isEmpty(alpha) || alpha.length() < 2 || alpha.length() > 3) {
return getResponse(Response.Status.BAD_REQUEST);
}
Country country = CountryService.getInstance().getByAlpha(alpha);
if (country != null) {
return parsedCountry(country, fields);
}
return getResponse(Response.Status.NOT_FOUND);
}
@GET
@Path("alpha/")
public Object getByAlphaList(@QueryParam("codes") String codes, @QueryParam("fields") String fields) {
LOG.info("Getting by list " + codes);
if (isEmpty(codes) || codes.length() < 2 || (codes.length() > 3 && !codes.contains(";"))) {
return getResponse(Response.Status.BAD_REQUEST);
}
try {
List<Country> countries = CountryService.getInstance().getByCodeList(codes);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("currency/{currency}")
public Object getByCurrency(@PathParam("currency") String currency, @QueryParam("fields") String fields) {
LOG.info("Getting by currency " + currency);
if (isEmpty(currency) || currency.length() != 3) {
return getResponse(Response.Status.BAD_REQUEST);
}
try {
List<Country> countries = CountryService.getInstance().getByCurrency(currency);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("name/{name}")
public Object getByName(@PathParam("name") String name, @QueryParam("fullText") boolean fullText, @QueryParam("fields") String fields) {
LOG.info("Getting by name " + name);
try {
List<Country> countries = CountryService.getInstance().getByName(name, fullText);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("callingcode/{callingcode}")
public Object getByCallingCode(@PathParam("callingcode") String callingcode, @QueryParam("fields") String fields) {
LOG.info("Getting by calling code " + callingcode);
try {
List<Country> countries = CountryService.getInstance().getByCallingCode(callingcode);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("capital/{capital}")
public Object getByCapital(@PathParam("capital") String capital, @QueryParam("fields") String fields) {
LOG.info("Getting by capital " + capital);
try {
List<Country> countries = CountryService.getInstance().getByCapital(capital);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("region/{region}")
public Object getByRegion(@PathParam("region") String region, @QueryParam("fields") String fields) {
LOG.info("Getting by region " + region);
try {
List<Country> countries = CountryService.getInstance().getByRegion(region);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("subregion/{subregion}")
public Object getBySubRegion(@PathParam("subregion") String subregion, @QueryParam("fields") String fields) {
LOG.info("Getting by sub region " + subregion);
try {
List<Country> countries = CountryService.getInstance().getBySubRegion(subregion);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("lang/{lang}")
public Object getByLanguage(@PathParam("lang") String language, @QueryParam("fields") String fields) {
LOG.info("Getting by language " + language);
try {
List<Country> countries = CountryService.getInstance().getByLanguage(language);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("demonym/{demonym}")
public Object getByDemonym(@PathParam("demonym") String demonym, @QueryParam("fields") String fields) {
LOG.info("Getting by demonym " + demonym);
try {
List<Country> countries = CountryService.getInstance().getByDemonym(demonym);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
@Path("regionalbloc/{regionalbloc}")
public Object getByRegionalBloc(@PathParam("regionalbloc") String regionalBlock, @QueryParam("fields") String fields) {
LOG.info("Getting by regional bloc " + regionalBlock);
try {
List<Country> countries = CountryService.getInstance().getByRegionalBloc(regionalBlock);
if (!countries.isEmpty()) {
return parsedCountries(countries, fields);
}
return getResponse(Response.Status.NOT_FOUND);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.INTERNAL_SERVER_ERROR);
}
}
@POST
public Object doPOST() {
LOG.info("Handling POST Request");
return getResponse(Response.Status.METHOD_NOT_ALLOWED);
}
private Response getResponse(Response.Status status) {
Gson gson = new Gson();
return Response
.status(status)
.entity(gson.toJson(new ResponseEntity(status.getStatusCode(),
status.getReasonPhrase()))).build();
}
private Object parsedCountry(Country country, String fields) {
if (fields == null || fields.isEmpty()) {
return country;
} else {
return getCountryJson(country, Arrays.asList(fields.split(ICountryRestSymbols.SEMICOLON)));
}
}
private Object parsedCountries(List<Country> countries, String excludedFields) {
if (excludedFields == null || excludedFields.isEmpty()) {
return countries;
} else {
return getCountriesJson(countries, Arrays.asList(excludedFields.split(ICountryRestSymbols.SEMICOLON)));
}
}
private String getCountryJson(Country country, List<String> fields) {
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(gson.toJson(country)).getAsJsonObject();
List<String> excludedFields = getExcludedFields(fields);
for (String field : excludedFields) {
jsonObject.remove(field);
}
return jsonObject.toString();
}
private String getCountriesJson(List<Country> countries, List<String> fields) {
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray jsonArray = parser.parse(gson.toJson(countries)).getAsJsonArray();
JsonArray resultArray = new JsonArray();
for (int i = 0; i < jsonArray.size(); i++) {
JsonObject jsonObject = (JsonObject) jsonArray.get(i);
List<String> excludedFields = getExcludedFields(fields);
for (String excludedField : excludedFields) {
jsonObject.remove(excludedField);
}
resultArray.add(jsonObject);
}
return resultArray.toString();
}
private List<String> getExcludedFields(List<String> fields) {
List<String> excludedFields = new ArrayList<>(Arrays.asList(COUNTRY_FIELDS));
excludedFields.removeAll(fields);
return excludedFields;
}
private static final String[] COUNTRY_FIELDS = new String[]{
"name",
"topLevelDomain",
"alpha2Code",
"alpha3Code",
"callingCodes",
"capital",
"altSpellings",
"region",
"subregion",
"translations",
"population",
"latlng",
"demonym",
"area",
"gini",
"timezones",
"borders",
"nativeName",
"numericCode",
"currencies",
"languages",
"flag",
"regionalBlocs",
"cioc"
};
private boolean isEmpty(String value) {
return value == null || value.isEmpty();
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/rest/CountryService.java
================================================
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package eu.fayder.restcountries.v2.rest;
import eu.fayder.restcountries.v2.domain.Country;
import eu.fayder.restcountries.v2.domain.Language;
import eu.fayder.restcountries.rest.CountryServiceBase;
import eu.fayder.restcountries.v2.domain.Currency;
import eu.fayder.restcountries.v2.domain.RegionalBloc;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
public class CountryService extends CountryServiceBase {
private static final Logger LOG = Logger.getLogger(CountryService.class);
private static List<Country> countries;
private CountryService() {
initialize();
}
private static class InstanceHolder {
private static final CountryService INSTANCE = new CountryService();
}
public static CountryService getInstance() {
return InstanceHolder.INSTANCE;
}
public List<Country> getAll() {
return countries;
}
public Country getByAlpha(String alpha) {
return super.getByAlpha(alpha, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByCodeList(String codeList) {
return (List<Country>) super.getByCodeList(codeList, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByName(String name, boolean isFullText) {
return (List<Country>) super.getByName(name, isFullText, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByCallingCode(String callingcode) {
return (List<Country>) super.getByCallingCode(callingcode, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByCapital(String capital) {
return (List<Country>) super.getByCapital(capital, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getByRegion(String region) {
return (List<Country>) super.getByRegion(region, countries);
}
@SuppressWarnings("unchecked")
public List<Country> getBySubRegion(String subregion) {
return (List<Country>) super.getBySubregion(subregion, countries);
}
public List<Country> getByCurrency(String currency) {
List<Country> result = new ArrayList<>();
for (Country country : countries) {
for (Currency curr : country.getCurrencies()) {
if (curr.getCode() != null && currency.toLowerCase().equals(curr.getCode().toLowerCase())) {
result.add(country);
}
}
}
return result;
}
public List<Country> getByLanguage(String language) {
List<Country> result = new ArrayList<>();
if (language.length() == 2) {
for (Country country : countries) {
for (Language lang : country.getLanguages()) {
if (language.toLowerCase().equals(lang.getIso639_1())) {
result.add(country);
}
}
}
} else if (language.length() == 3) {
for (Country country : countries) {
for (Language lang : country.getLanguages()) {
if (language.toLowerCase().equals(lang.getIso639_2())) {
result.add(country);
}
}
}
}
return result;
}
public List<Country> getByDemonym(String demonym) {
List<Country> result = new ArrayList<>();
for (Country country : countries) {
if (country.getDemonym().toLowerCase().equals(normalize(demonym.toLowerCase()))) {
result.add(country);
}
}
return result;
}
public List<Country> getByRegionalBloc(String regionalBloc) {
List<Country> result = new ArrayList<>();
for (Country country : countries) {
for (RegionalBloc countryRegionalBloc : country.getRegionalBlocs()) {
if (countryRegionalBloc.getAcronym().toUpperCase().equals(regionalBloc.toUpperCase())
|| countryRegionalBloc.getOtherAcronyms().contains(regionalBloc.toUpperCase())) {
result.add(country);
}
}
}
return result;
}
@SuppressWarnings("unchecked")
private void initialize() {
countries = (List<Country>) super.loadJson("countriesV2.json", Country.class);
}
}
================================================
FILE: src/main/java/eu/fayder/restcountries/v2/rest/StripeRest.java
================================================
package eu.fayder.restcountries.v2.rest;
import com.google.gson.Gson;
import com.stripe.Stripe;
import com.stripe.exception.*;
import com.stripe.model.Charge;
import eu.fayder.restcountries.domain.ResponseEntity;
import eu.fayder.restcountries.v2.domain.Contribution;
import org.apache.http.util.TextUtils;
import org.apache.log4j.Logger;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import java.util.HashMap;
import java.util.Map;
/**
* Created by fayder on 24/02/2017.
*/
@Provider
@Path("/contribute")
@Consumes("application/json;charset=utf-8")
public class StripeRest {
private static final Logger LOG = Logger.getLogger(StripeRest.class);
@POST
public Object contribute(Contribution contribution) {
LOG.debug("Contribution: " + contribution);
if (contribution == null || TextUtils.isBlank(contribution.getToken())) {
return getResponse(Response.Status.BAD_REQUEST);
}
Stripe.apiKey = "";
Map<String, Object> params = new HashMap<>();
params.put("amount", contribution.getAmount());
params.put("currency", "eur");
params.put("description", "REST Countries");
params.put("source", contribution.getToken());
try {
Charge.create(params);
} catch (AuthenticationException | InvalidRequestException | CardException | APIConnectionException | APIException e) {
LOG.error(e.getMessage(), e);
return getResponse(Response.Status.BAD_REQUEST);
}
return getResponse(Response.Status.ACCEPTED);
}
private Response getResponse(Response.Status status) {
Gson gson = new Gson();
return Response
.status(status)
.entity(gson.toJson(new ResponseEntity(status.getStatusCode(),
status.getReasonPhrase()))).build();
}
}
================================================
FILE: src/main/resources/countriesV1.json
================================================
[{"name":"Afghanistan","nativeName":"\u0627\u0641\u063a\u0627\u0646\u0633\u062a\u0627\u0646","topLevelDomain":[".af"],"alpha2Code":"AF","numericCode":"004","alpha3Code":"AFG","currencies":["AFN"],"callingCodes":["93"],"capital":"Kabul","altSpellings":["AF","Af\u0121\u0101nist\u0101n"],"relevance":"0","region":"Asia","subregion":"Southern Asia","language":["Pashto","Dari"],"languages":["ps","uz","tk"],"translations":{"de":"Afghanistan","es":"Afganist\u00e1n","fr":"Afghanistan","it":"Afghanistan","ja":"\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3","nl":"Afghanistan","hr":"Afganistan"},"population":26023100,"latlng":[33,65],"demonym":"Afghan","borders":["IRN","PAK","TKM","UZB","TJK","CHN"],"area":652230,"gini":27.8,"timezones":["UTC+04:30"]},{"name":"\u00c5land Islands","nativeName":"\u00c5land","topLevelDomain":[".ax"],"alpha2Code":"AX","numericCode":"248","alpha3Code":"ALA","currencies":["EUR"],"callingCodes":["358"],"capital":"Mariehamn","altSpellings":["AX","Aaland","Aland","Ahvenanmaa"],"relevance":"0","region":"Europe","subregion":"Northern Europe","language":["Swedish"],"languages":["sv"],"translations":{"de":"\u00c5land","es":"Alandia","fr":"\u00c5land","it":"Isole Aland","ja":"\u30aa\u30fc\u30e9\u30f3\u30c9\u8af8\u5cf6","nl":"\u00c5landeilanden","hr":"\u00c5landski otoci"},"population":28875,"latlng":[60.116667,19.9],"demonym":"\u00c5landish","borders":[],"area":1580,"timezones":["UTC+02:00"]},{"name":"Albania","nativeName":"Shqip\u00ebria","topLevelDomain":[".al"],"alpha2Code":"AL","numericCode":"008","alpha3Code":"ALB","currencies":["ALL"],"callingCodes":["355"],"capital":"Tirana","altSpellings":["AL","Shqip\u00ebri","Shqip\u00ebria","Shqipnia"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Albanian"],"languages":["sq"],"translations":{"de":"Albanien","es":"Albania","fr":"Albanie","it":"Albania","ja":"\u30a2\u30eb\u30d0\u30cb\u30a2","nl":"Albani\u00eb","hr":"Albanija"},"population":2893005,"latlng":[41,20],"demonym":"Albanian","borders":["MNE","GRC","MKD","KOS"],"area":28748,"gini":34.5,"timezones":["UTC+01:00"]},{"name":"Algeria","nativeName":"\u0627\u0644\u062c\u0632\u0627\u0626\u0631","topLevelDomain":[".dz"],"alpha2Code":"DZ","numericCode":"012","alpha3Code":"DZA","currencies":["DZD"],"callingCodes":["213"],"capital":"Algiers","altSpellings":["DZ","Dzayer","Alg\u00e9rie"],"relevance":"0","region":"Africa","subregion":"Northern Africa","language":["Arabic"],"languages":["ar"],"translations":{"de":"Algerien","es":"Argelia","fr":"Alg\u00e9rie","it":"Algeria","ja":"\u30a2\u30eb\u30b8\u30a7\u30ea\u30a2","nl":"Algerije","hr":"Al\u017eir"},"population":39500000,"latlng":[28,3],"demonym":"Algerian","borders":["TUN","LBY","NER","ESH","MRT","MLI","MAR"],"area":2381741,"gini":35.3,"timezones":["UTC+01:00"]},{"name":"American Samoa","nativeName":"American Samoa","topLevelDomain":[".as"],"alpha2Code":"AS","numericCode":"016","alpha3Code":"ASM","currencies":["USD"],"callingCodes":["1"],"capital":"Pago Pago","altSpellings":["AS","Amerika S\u0101moa","Amelika S\u0101moa","S\u0101moa Amelika"],"relevance":"0.5","region":"Oceania","subregion":"Polynesia","language":["English","Samoan"],"languages":["en","sm"],"translations":{"de":"Amerikanisch-Samoa","es":"Samoa Americana","fr":"Samoa am\u00e9ricaines","it":"Samoa Americane","ja":"\u30a2\u30e1\u30ea\u30ab\u9818\u30b5\u30e2\u30a2","nl":"Amerikaans Samoa","hr":"Ameri\u010dka Samoa"},"population":55519,"latlng":[-14.33333333,-170],"demonym":"American Samoan","borders":[],"area":199,"timezones":["UTC-11:00"]},{"name":"Andorra","nativeName":"Andorra","topLevelDomain":[".ad"],"alpha2Code":"AD","numericCode":"020","alpha3Code":"AND","currencies":["EUR"],"callingCodes":["376"],"capital":"Andorra la Vella","altSpellings":["AD","Principality of Andorra","Principat d'Andorra"],"relevance":"0.5","region":"Europe","subregion":"Southern Europe","language":["Catalan"],"languages":["ca"],"translations":{"de":"Andorra","es":"Andorra","fr":"Andorre","it":"Andorra","ja":"\u30a2\u30f3\u30c9\u30e9","nl":"Andorra","hr":"Andora"},"population":76949,"latlng":[42.5,1.5],"demonym":"Andorran","borders":["FRA","ESP"],"area":468,"timezones":["UTC+01:00"]},{"name":"Angola","nativeName":"Angola","topLevelDomain":[".ao"],"alpha2Code":"AO","numericCode":"024","alpha3Code":"AGO","currencies":["AOA"],"callingCodes":["244"],"capital":"Luanda","altSpellings":["AO","Rep\u00fablica de Angola","\u0281\u025bpublika de an'\u0261\u0254la"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["Portuguese"],"languages":["pt"],"translations":{"de":"Angola","es":"Angola","fr":"Angola","it":"Angola","ja":"\u30a2\u30f3\u30b4\u30e9","nl":"Angola","hr":"Angola"},"population":24383301,"latlng":[-12.5,18.5],"demonym":"Angolan","borders":["COG","COD","ZMB","NAM"],"area":1246700,"gini":58.6,"timezones":["UTC+01:00"]},{"name":"Anguilla","nativeName":"Anguilla","topLevelDomain":[".ai"],"alpha2Code":"AI","numericCode":"660","alpha3Code":"AIA","currencies":["XCD"],"callingCodes":["1"],"capital":"The Valley","altSpellings":["AI"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Anguilla","es":"Anguilla","fr":"Anguilla","it":"Anguilla","ja":"\u30a2\u30f3\u30ae\u30e9","nl":"Anguilla","hr":"Angvila"},"population":13452,"latlng":[18.25,-63.16666666],"demonym":"Anguillian","borders":[],"area":91,"timezones":["UTC-04:00"]},{"name":"Antarctica","nativeName":"Antarctica","topLevelDomain":[".aq"],"alpha2Code":"AQ","alpha3Code":"ATA","numericCode":"010","currencies":["AUD","GBP"],"callingCodes":["672"],"capital":"","altSpellings":[],"relevance":"0","region":"Polar","subregion":"","language":["English"],"languages":["en"],"translations":{"de":"Antarktika","es":"Antártida","fr":"Antarctique","it":"Antartide","ja":"\u5357\u6975\u5927\u9678","nl":"Antarctica","hr":"Antarktika"},"population":1000,"latlng":[-74.65,4.48],"demonym":"","borders":[],"area":14000000,"timezones":["UTC-03:00","UTC+03:00","UTC+05:00","UTC+06:00","UTC+07:00","UTC+08:00","UTC+10:00","UTC+12:00"]},{"name":"Antigua and Barbuda","nativeName":"Antigua and Barbuda","topLevelDomain":[".ag"],"alpha2Code":"AG","numericCode":"028","alpha3Code":"ATG","currencies":["XCD"],"callingCodes":["1"],"capital":"Saint John's","altSpellings":["AG"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Antigua und Barbuda","es":"Antigua y Barbuda","fr":"Antigua-et-Barbuda","it":"Antigua e Barbuda","ja":"\u30a2\u30f3\u30c6\u30a3\u30b0\u30a2\u30fb\u30d0\u30fc\u30d6\u30fc\u30c0","nl":"Antigua en Barbuda","hr":"Antigva i Barbuda"},"population":86295,"latlng":[17.05,-61.8],"demonym":"Antiguan, Barbudan","borders":[],"area":442,"timezones":["UTC-04:00"]},{"name":"Argentina","nativeName":"Argentina","topLevelDomain":[".ar"],"alpha2Code":"AR","numericCode":"032","alpha3Code":"ARG","currencies":["ARS"],"callingCodes":["54"],"capital":"Buenos Aires","altSpellings":["AR","Argentine Republic","Rep\u00fablica Argentina"],"relevance":"0","region":"Americas","subregion":"South America","language":["Spanish"],"languages":["es","gn"],"translations":{"de":"Argentinien","es":"Argentina","fr":"Argentine","it":"Argentina","ja":"\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3","nl":"Argentini\u00eb","hr":"Argentina"},"population":43131966,"latlng":[-34,-64],"demonym":"Argentinean","borders":["BOL","BRA","CHL","PRY","URY"],"area":2780400,"gini":44.5,"timezones":["UTC-03:00"]},{"name":"Armenia","nativeName":"\u0540\u0561\u0575\u0561\u057d\u057f\u0561\u0576","topLevelDomain":[".am"],"alpha2Code":"AM","numericCode":"051","alpha3Code":"ARM","currencies":["AMD"],"callingCodes":["374"],"capital":"Yerevan","altSpellings":["AM","Hayastan","Republic of Armenia","\u0540\u0561\u0575\u0561\u057d\u057f\u0561\u0576\u056b \u0540\u0561\u0576\u0580\u0561\u057a\u0565\u057f\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Armenian"],"languages":["hy","ru"],"translations":{"de":"Armenien","es":"Armenia","fr":"Arm\u00e9nie","it":"Armenia","ja":"\u30a2\u30eb\u30e1\u30cb\u30a2","nl":"Armeni\u00eb","hr":"Armenija"},"population":3006800,"latlng":[40,45],"demonym":"Armenian","borders":["AZE","GEO","IRN","TUR"],"area":29743,"gini":30.9,"timezones":["UTC+04:00"]},{"name":"Aruba","nativeName":"Aruba","topLevelDomain":[".aw"],"alpha2Code":"AW","numericCode":"533","alpha3Code":"ABW","currencies":["AWG"],"callingCodes":["297"],"capital":"Oranjestad","altSpellings":["AW"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["Dutch","Papiamento"],"languages":["nl","pa"],"translations":{"de":"Aruba","es":"Aruba","fr":"Aruba","it":"Aruba","ja":"\u30a2\u30eb\u30d0","nl":"Aruba","hr":"Aruba"},"population":107394,"latlng":[12.5,-69.96666666],"demonym":"Aruban","borders":[],"area":180,"timezones":["UTC-04:00"]},{"name":"Australia","nativeName":"Australia","topLevelDomain":[".au"],"alpha2Code":"AU","numericCode":"036","alpha3Code":"AUS","currencies":["AUD"],"callingCodes":["61"],"capital":"Canberra","altSpellings":["AU"],"relevance":"1.5","region":"Oceania","subregion":"Australia and New Zealand","language":["English"],"languages":["en"],"translations":{"de":"Australien","es":"Australia","fr":"Australie","it":"Australia","ja":"\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2","nl":"Australi\u00eb","hr":"Australija"},"population":23868800,"latlng":[-27,133],"demonym":"Australian","borders":[],"area":7692024,"gini":30.5,"timezones":["UTC+05:00","UTC+06:30","UTC+07:00","UTC+08:00","UTC+09:30","UTC+10:00","UTC+10:30","UTC+11:30"]},{"name":"Austria","nativeName":"\u00d6sterreich","topLevelDomain":[".at"],"alpha2Code":"AT","numericCode":"040","alpha3Code":"AUT","currencies":["EUR"],"callingCodes":["43"],"capital":"Vienna","altSpellings":["AT","\u00d6sterreich","Osterreich","Oesterreich"],"relevance":"0","region":"Europe","subregion":"Western Europe","language":["German"],"languages":["de"],"translations":{"de":"\u00d6sterreich","es":"Austria","fr":"Autriche","it":"Austria","ja":"\u30aa\u30fc\u30b9\u30c8\u30ea\u30a2","nl":"Oostenrijk","hr":"Austrija"},"population":8602112,"latlng":[47.33333333,13.33333333],"demonym":"Austrian","borders":["CZE","DEU","HUN","ITA","LIE","SVK","SVN","CHE"],"area":83871,"gini":26.0,"timezones":["UTC+01:00"]},{"name":"Azerbaijan","nativeName":"Az\u0259rbaycan","topLevelDomain":[".az"],"alpha2Code":"AZ","numericCode":"031","alpha3Code":"AZE","currencies":["AZN"],"callingCodes":["994"],"capital":"Baku","altSpellings":["AZ","Republic of Azerbaijan","Az\u0259rbaycan Respublikas\u0131"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Azerbaijani"],"languages":["az"],"translations":{"de":"Aserbaidschan","es":"Azerbaiy\u00e1n","fr":"Azerba\u00efdjan","it":"Azerbaijan","ja":"\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3","nl":"Azerbeidzjan","hr":"Azerbajd\u017ean"},"population":9636300,"latlng":[40.5,47.5],"demonym":"Azerbaijani","borders":["ARM","GEO","IRN","RUS","TUR"],"area":86600,"gini":33.7,"timezones":["UTC+04:00"]},{"name":"The Bahamas","nativeName":"Bahamas","topLevelDomain":[".bs"],"alpha2Code":"BS","numericCode":"044","alpha3Code":"BHS","currencies":["BSD"],"callingCodes":["1"],"capital":"Nassau","altSpellings":["BS","Commonwealth of the Bahamas"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Bahamas","es":"Bahamas","fr":"Bahamas","it":"Bahamas","ja":"\u30d0\u30cf\u30de","nl":"Bahama\u2019s","hr":"Bahami"},"population":368390,"latlng":[24.25,-76],"demonym":"Bahamian","borders":[],"area":13943,"timezones":["UTC-05:00"]},{"name":"Bahrain","nativeName":"\u200f\u0627\u0644\u0628\u062d\u0631\u064a\u0646","topLevelDomain":[".bh"],"alpha2Code":"BH","numericCode":"048","alpha3Code":"BHR","currencies":["BHD"],"callingCodes":["973"],"capital":"Manama","altSpellings":["BH","Kingdom of Bahrain","Mamlakat al-Ba\u1e25rayn"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic"],"languages":["ar"],"translations":{"de":"Bahrain","es":"Bahrein","fr":"Bahre\u00efn","it":"Bahrein","ja":"\u30d0\u30fc\u30ec\u30fc\u30f3","nl":"Bahrein","hr":"Bahrein"},"population":1359800,"latlng":[26,50.55],"demonym":"Bahraini","borders":[],"area":765,"gini":null,"timezones":["UTC+03:00"]},{"name":"Bangladesh","nativeName":"Bangladesh","topLevelDomain":[".bd"],"alpha2Code":"BD","numericCode":"050","alpha3Code":"BGD","currencies":["BDT"],"callingCodes":["880"],"capital":"Dhaka","altSpellings":["BD","People's Republic of Bangladesh","G\u00f4n\u00f4pr\u00f4jat\u00f4ntri Bangladesh"],"relevance":"2","region":"Asia","subregion":"Southern Asia","language":["Bangla"],"languages":["bn"],"translations":{"de":"Bangladesch","es":"Bangladesh","fr":"Bangladesh","it":"Bangladesh","ja":"\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5","nl":"Bangladesh","hr":"Banglade\u0161"},"population":158875000,"latlng":[24,90],"demonym":"Bangladeshi","borders":["MMR","IND"],"area":147570,"gini":32.1,"timezones":["UTC+06:00"]},{"name":"Barbados","nativeName":"Barbados","topLevelDomain":[".bb"],"alpha2Code":"BB","numericCode":"052","alpha3Code":"BRB","currencies":["BBD"],"callingCodes":["1"],"capital":"Bridgetown","altSpellings":["BB"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Barbados","es":"Barbados","fr":"Barbade","it":"Barbados","ja":"\u30d0\u30eb\u30d0\u30c9\u30b9","nl":"Barbados","hr":"Barbados"},"population":285000,"latlng":[13.16666666,-59.53333333],"demonym":"Barbadian","borders":[],"area":430,"timezones":["UTC-04:00"]},{"name":"Belarus","nativeName":"\u0411\u0435\u043b\u0430\u0440\u0443\u0301\u0441\u044c","topLevelDomain":[".by"],"alpha2Code":"BY","numericCode":"112","alpha3Code":"BLR","currencies":["BYR"],"callingCodes":["375"],"capital":"Minsk","altSpellings":["BY","Bielaru\u015b","Republic of Belarus","\u0411\u0435\u043b\u043e\u0440\u0443\u0441\u0441\u0438\u044f","\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0411\u0435\u043b\u0430\u0440\u0443\u0441\u044c","Belorussiya","Respublika Belarus\u2019"],"relevance":"0","region":"Europe","subregion":"Eastern Europe","language":["Belarusian","Russian"],"languages":["be","ru"],"translations":{"de":"Wei\u00dfrussland","es":"Bielorrusia","fr":"Bi\u00e9lorussie","it":"Bielorussia","ja":"\u30d9\u30e9\u30eb\u30fc\u30b7","nl":"Wit-Rusland","hr":"Bjelorusija"},"population":9485300,"latlng":[53,28],"demonym":"Belarusian","borders":["LVA","LTU","POL","RUS","UKR"],"area":207600,"gini":26.5,"timezones":["UTC+03:00"]},{"name":"Belgium","nativeName":"Belgi\u00eb","topLevelDomain":[".be"],"alpha2Code":"BE","numericCode":"056","alpha3Code":"BEL","currencies":["EUR"],"callingCodes":["32"],"capital":"Brussels","altSpellings":["BE","Belgi\u00eb","Belgie","Belgien","Belgique","Kingdom of Belgium","Koninkrijk Belgi\u00eb","Royaume de Belgique","K\u00f6nigreich Belgien"],"relevance":"1.5","region":"Europe","subregion":"Western Europe","language":["Dutch","French","German"],"languages":["nl","fr","de"],"translations":{"de":"Belgien","es":"B\u00e9lgica","fr":"Belgique","it":"Belgio","ja":"\u30d9\u30eb\u30ae\u30fc","nl":"Belgi\u00eb","hr":"Belgija"},"population":11248330,"latlng":[50.83333333,4],"demonym":"Belgian","borders":["FRA","DEU","LUX","NLD"],"area":30528,"gini":33.0,"timezones":["UTC+01:00"]},{"name":"Belize","nativeName":"Belize","topLevelDomain":[".bz"],"alpha2Code":"BZ","numericCode":"084","alpha3Code":"BLZ","currencies":["BZD"],"callingCodes":["501"],"capital":"Belmopan","altSpellings":["BZ"],"relevance":"0","region":"Americas","subregion":"Central America","language":["English"],"languages":["en","es"],"translations":{"de":"Belize","es":"Belice","fr":"Belize","it":"Belize","ja":"\u30d9\u30ea\u30fc\u30ba","nl":"Belize","hr":"Belize"},"population":368310,"latlng":[17.25,-88.75],"demonym":"Belizean","borders":["GTM","MEX"],"area":22966,"gini":53.1,"timezones":["UTC-06:00"]},{"name":"Benin","nativeName":"B\u00e9nin","topLevelDomain":[".bj"],"alpha2Code":"BJ","numericCode":"204","alpha3Code":"BEN","currencies":["XOF"],"callingCodes":["229"],"capital":"Porto-Novo","altSpellings":["BJ","Republic of Benin","R\u00e9publique du B\u00e9nin"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["French"],"languages":["fr"],"translations":{"de":"Benin","es":"Ben\u00edn","fr":"B\u00e9nin","it":"Benin","ja":"\u30d9\u30ca\u30f3","nl":"Benin","hr":"Benin"},"population":10315244,"latlng":[9.5,2.25],"demonym":"Beninese","borders":["BFA","NER","NGA","TGO"],"area":112622,"gini":38.6,"timezones":["UTC+01:00"]},{"name":"Bermuda","nativeName":"Bermuda","topLevelDomain":[".bm"],"alpha2Code":"BM","numericCode":"060","alpha3Code":"BMU","currencies":["BMD"],"callingCodes":["1"],"capital":"Hamilton","altSpellings":["BM","The Islands of Bermuda","The Bermudas","Somers Isles"],"relevance":"0.5","region":"Americas","subregion":"Northern America","language":["English"],"languages":["en"],"translations":{"de":"Bermuda","es":"Bermudas","fr":"Bermudes","it":"Bermuda","ja":"\u30d0\u30df\u30e5\u30fc\u30c0","nl":"Bermuda","hr":"Bermudi"},"population":64237,"latlng":[32.33333333,-64.75],"demonym":"Bermudian","borders":[],"area":54,"timezones":["UTC-04:00"]},{"name":"Bhutan","nativeName":"\u02bcbrug-yul","topLevelDomain":[".bt"],"alpha2Code":"BT","numericCode":"064","alpha3Code":"BTN","currencies":["BTN","INR"],"callingCodes":["975"],"capital":"Thimphu","altSpellings":["BT","Kingdom of Bhutan"],"relevance":"0","region":"Asia","subregion":"Southern Asia","language":["Dzongkha"],"languages":["dz"],"translations":{"de":"Bhutan","es":"But\u00e1n","fr":"Bhoutan","it":"Bhutan","ja":"\u30d6\u30fc\u30bf\u30f3","nl":"Bhutan","hr":"Butan"},"population":763920,"latlng":[27.5,90.5],"demonym":"Bhutanese","borders":["CHN","IND"],"area":38394,"gini":38.1,"timezones":["UTC+06:00"]},{"name":"Bolivia","nativeName":"Bolivia","topLevelDomain":[".bo"],"alpha2Code":"BO","numericCode":"068","alpha3Code":"BOL","currencies":["BOB","BOV"],"callingCodes":["591"],"capital":"Sucre","altSpellings":["BO","Buliwya","Wuliwya","Plurinational State of Bolivia","Estado Plurinacional de Bolivia","Buliwya Mamallaqta","Wuliwya Suyu","Tet\u00e3 Vol\u00edvia"],"relevance":"0","region":"Americas","subregion":"South America","language":["Spanish","Quechua","Aymara","Guaran\u00ed"],"languages":["es","ay","qu"],"translations":{"de":"Bolivien","es":"Bolivia","fr":"Bolivie","it":"Bolivia","ja":"\u30dc\u30ea\u30d3\u30a2\u591a\u6c11\u65cf\u56fd","nl":"Bolivia","hr":"Bolivija"},"population":11410651,"latlng":[-17,-65],"demonym":"Bolivian","borders":["ARG","BRA","CHL","PRY","PER"],"area":1098581,"gini":56.3,"timezones":["UTC-04:00"]},{"name":"Bonaire","nativeName":"Bonaire","topLevelDomain":[".an",".nl"],"alpha2Code":"BQ","numericCode":"535","alpha3Code":"BES","currencies":["USD"],"callingCodes":["599"],"capital":"Kralendijk","altSpellings":["BQ","Boneiru"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["Dutch"],"languages":["nl"],"translations":{},"population":17408,"latlng":[12.15,-68.266667],"demonym":"Dutch","borders":[],"area":294,"timezones":["UTC-04:00"]},{"name":"Bosnia and Herzegovina","nativeName":"Bosna i Hercegovina","topLevelDomain":[".ba"],"alpha2Code":"BA","numericCode":"070","alpha3Code":"BIH","currencies":["BAM"],"callingCodes":["387"],"capital":"Sarajevo","altSpellings":["BA","Bosnia-Herzegovina","\u0411\u043e\u0441\u043d\u0430 \u0438 \u0425\u0435\u0440\u0446\u0435\u0433\u043e\u0432\u0438\u043d\u0430"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Bosnian","Croatian","Serbian"],"languages":["bs","hr","sr"],"translations":{"de":"Bosnien und Herzegowina","es":"Bosnia y Herzegovina","fr":"Bosnie-Herz\u00e9govine","it":"Bosnia ed Erzegovina","ja":"\u30dc\u30b9\u30cb\u30a2\u30fb\u30d8\u30eb\u30c4\u30a7\u30b4\u30d3\u30ca","nl":"Bosni\u00eb en Herzegovina","hr":"Bosna i Hercegovina"},"population":3791622,"latlng":[44,18],"demonym":"Bosnian, Herzegovinian","borders":["HRV","MNE","SRB"],"area":51209,"gini":36.2,"timezones":["UTC+01:00"]},{"name":"Botswana","nativeName":"Botswana","topLevelDomain":[".bw"],"alpha2Code":"BW","numericCode":"072","alpha3Code":"BWA","currencies":["BWP"],"callingCodes":["267"],"capital":"Gaborone","altSpellings":["BW","Republic of Botswana","Lefatshe la Botswana"],"relevance":"0","region":"Africa","subregion":"Southern Africa","language":["English","Setswana"],"languages":["en","tn"],"translations":{"de":"Botswana","es":"Botswana","fr":"Botswana","it":"Botswana","ja":"\u30dc\u30c4\u30ef\u30ca","nl":"Botswana","hr":"Bocvana"},"population":2070984,"latlng":[-22,24],"demonym":"Motswana","borders":["NAM","ZAF","ZMB","ZWE"],"area":582000,"gini":61.0,"timezones":["UTC+02:00"]},{"name":"Bouvet Island","nativeName":"Bouvet\u00f8ya","topLevelDomain":[".bv"],"alpha2Code":"BV","numericCode":"074","alpha3Code":"BVT","currencies":["NOK"],"callingCodes":["47"],"capital":"","altSpellings":["BV","Bouvet\u00f8ya","Bouvet-\u00f8ya"],"relevance":"0","region":"","subregion":"","language":[""],"languages":[],"translations":{"de":"Bouvetinsel","es":"Isla Bouvet","fr":"\u00cele Bouvet","it":"Isola Bouvet","ja":"\u30d6\u30fc\u30d9\u5cf6","nl":"Bouveteiland","hr":"Otok Bouvet"},"population":0,"latlng":[-54.43333333,3.4],"demonym":"","borders":[],"area":49,"timezones":["UTC+01:00"]},{"name":"Brazil","nativeName":"Brasil","topLevelDomain":[".br"],"alpha2Code":"BR","numericCode":"076","alpha3Code":"BRA","currencies":["BRL"],"callingCodes":["55"],"capital":"Bras\u00edlia","altSpellings":["BR","Brasil","Federative Republic of Brazil","Rep\u00fablica Federativa do Brasil"],"relevance":"2","region":"Americas","subregion":"South America","language":["Portuguese"],"languages":["pt"],"translations":{"de":"Brasilien","es":"Brasil","fr":"Br\u00e9sil","it":"Brasile","ja":"\u30d6\u30e9\u30b8\u30eb","nl":"Brazili\u00eb","hr":"Brazil"},"population":204772000,"latlng":[-10,-55],"demonym":"Brazilian","borders":["ARG","BOL","COL","GUF","GUY","PRY","PER","SUR","URY","VEN"],"area":8515767,"gini":54.7,"timezones":["UTC-05:00","UTC-04:00","UTC-03:00","UTC-02:00"]},{"name":"British Indian Ocean Territory","nativeName":"British Indian Ocean Territory","topLevelDomain":[".io"],"alpha2Code":"IO","numericCode":"086","alpha3Code":"IOT","currencies":["USD"],"callingCodes":["246"],"capital":"Diego Garcia","altSpellings":["IO"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["English"],"languages":["en"],"translations":{"de":"Britisches Territorium im Indischen Ozean","es":"Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico","fr":"Territoire britannique de l'oc\u00e9an Indien","it":"Territorio britannico dell'oceano indiano","ja":"\u30a4\u30ae\u30ea\u30b9\u9818\u30a4\u30f3\u30c9\u6d0b\u5730\u57df","nl":"Britse Gebieden in de Indische Oceaan","hr":"Britanski Indijskooceanski teritorij"},"population":3000,"latlng":[-6,71.5],"demonym":"Indian","borders":[],"area":60,"timezones":["UTC+06:00"]},{"name":"United States Minor Outlying Islands","nativeName":"United States Minor Outlying Islands","topLevelDomain":[".us"],"alpha2Code":"UM","numericCode":"581","alpha3Code":"UMI","currencies":["USD"],"callingCodes":["1"],"capital":"","altSpellings":["UM"],"relevance":"0","region":"Americas","subregion":"Northern America","language":["English"],"languages":["en"],"translations":{"de":"Kleinere Inselbesitzungen der Vereinigten Staaten","es":"Islas Ultramarinas Menores de Estados Unidos","fr":"\u00celes mineures \u00e9loign\u00e9es des \u00c9tats-Unis","it":"Isole minori esterne degli Stati Uniti d'America","ja":"\u5408\u8846\u56fd\u9818\u6709\u5c0f\u96e2\u5cf6","nl":"Kleine afgelegen eilanden van de Verenigde Staten","hr":"Mali udaljeni otoci SAD-a"},"population":300,"latlng":[],"demonym":"American","borders":[],"timezones":["UTC-11:00","UTC-10:00","UTC+12:00"]},{"name":"Virgin Islands (British)","nativeName":"British Virgin Islands","topLevelDomain":[".vg"],"alpha2Code":"VG","numericCode":"092","alpha3Code":"VGB","currencies":["USD"],"callingCodes":["1"],"capital":"Road Town","altSpellings":["VG"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Britische Jungferninseln","es":"Islas V\u00edrgenes del Reino Unido","fr":"\u00celes Vierges britanniques","it":"Isole Vergini Britanniche","ja":"\u30a4\u30ae\u30ea\u30b9\u9818\u30f4\u30a1\u30fc\u30b8\u30f3\u8af8\u5cf6","nl":"Britse Maagdeneilanden","hr":"Britanski Djevi\u010danski Otoci"},"population":28054,"latlng":[18.431383,-64.62305],"demonym":"Virgin Islander","borders":[],"area":151,"timezones":["UTC-04:00"]},{"name":"Virgin Islands (U.S.)","nativeName":"Virgin Islands of the United States","topLevelDomain":[".vi"],"alpha2Code":"VI","numericCode":"850","alpha3Code":"VIR","currencies":["USD"],"callingCodes":["1"],"capital":"Charlotte Amalie","altSpellings":["VI","USVI","American Virgin Islands","U.S. Virgin Islands"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Amerikanische Jungferninseln","es":"Islas Vírgenes de los Estados Unidos","fr":"Îles Vierges des États-Unis","it":"Isole Vergini americane","ja":"\u30A2\u30E1\u30EA\u30AB\u9818\u30F4\u30A1\u30FC\u30B8\u30F3\u8AF8\u5CF6","nl":"Verenigde Staten Maagdeneilanden"},"population":114743,"latlng":[18.34,-64.93],"demonym":"Virgin Islander","borders":[],"area":346.36,"timezones":["UTC-04:00"]},{"name":"Brunei","nativeName":"Negara Brunei Darussalam","topLevelDomain":[".bn"],"alpha2Code":"BN","numericCode":"096","alpha3Code":"BRN","currencies":["BND"],"callingCodes":["673"],"capital":"Bandar Seri Begawan","altSpellings":["BN","Nation of Brunei"," the Abode of Peace"],"relevance":"0","region":"Asia","subregion":"South-Eastern Asia","language":["Malay"],"languages":["ms"],"translations":{"fr":"Brunei","nl":"Brunei","de":"Brunei","it":"Brunei","ja":"\u30d6\u30eb\u30cd\u30a4\u30fb\u30c0\u30eb\u30b5\u30e9\u30fc\u30e0","es":"Brunei","hr":"Brunej"},"population":393372,"latlng":[4.5,114.66666666],"demonym":"Bruneian","borders":["MYS"],"area":5765,"timezones":["UTC+08:00"]},{"name":"Bulgaria","nativeName":"\u0411\u044a\u043b\u0433\u0430\u0440\u0438\u044f","topLevelDomain":[".bg"],"alpha2Code":"BG","numericCode":"100","alpha3Code":"BGR","currencies":["BGN"],"callingCodes":["359"],"capital":"Sofia","altSpellings":["BG","Republic of Bulgaria","\u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0411\u044a\u043b\u0433\u0430\u0440\u0438\u044f"],"relevance":"0","region":"Europe","subregion":"Eastern Europe","language":["Bulgarian"],"languages":["bg"],"translations":{"de":"Bulgarien","es":"Bulgaria","fr":"Bulgarie","it":"Bulgaria","ja":"\u30d6\u30eb\u30ac\u30ea\u30a2","nl":"Bulgarije","hr":"Bugarska"},"population":7202198,"latlng":[43,25],"demonym":"Bulgarian","borders":["GRC","MKD","ROU","SRB","TUR"],"area":110879,"gini":28.2,"timezones":["UTC+02:00"]},{"name":"Burkina Faso","nativeName":"Burkina Faso","topLevelDomain":[".bf"],"alpha2Code":"BF","numericCode":"854","alpha3Code":"BFA","currencies":["XOF"],"callingCodes":["226"],"capital":"Ouagadougou","altSpellings":["BF"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["French"],"languages":["fr","ff"],"translations":{"de":"Burkina Faso","es":"Burkina Faso","fr":"Burkina Faso","it":"Burkina Faso","ja":"\u30d6\u30eb\u30ad\u30ca\u30d5\u30a1\u30bd","nl":"Burkina Faso","hr":"Burkina Faso"},"population":18450494,"latlng":[13,-2],"demonym":"Burkinabe","borders":["BEN","CIV","GHA","MLI","NER","TGO"],"area":272967,"gini":39.8,"timezones":["UTC"]},{"name":"Burundi","nativeName":"Burundi","topLevelDomain":[".bi"],"alpha2Code":"BI","numericCode":"108","alpha3Code":"BDI","currencies":["BIF"],"callingCodes":["257"],"capital":"Bujumbura","altSpellings":["BI","Republic of Burundi","Republika y'Uburundi","R\u00e9publique du Burundi"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Kirundi","French"],"languages":["fr","rn"],"translations":{"de":"Burundi","es":"Burundi","fr":"Burundi","it":"Burundi","ja":"\u30d6\u30eb\u30f3\u30b8","nl":"Burundi","hr":"Burundi"},"population":9823827,"latlng":[-3.5,30],"demonym":"Burundian","borders":["COD","RWA","TZA"],"area":27834,"gini":33.3,"timezones":["UTC+02:00"]},{"name":"Cambodia","nativeName":"K\u00e2mp\u016dch\u00e9a","topLevelDomain":[".kh"],"alpha2Code":"KH","numericCode":"116","alpha3Code":"KHM","currencies":["KHR"],"callingCodes":["855"],"capital":"Phnom Penh","altSpellings":["KH","Kingdom of Cambodia"],"relevance":"0","region":"Asia","subregion":"South-Eastern Asia","language":["Khmer"],"languages":["km"],"translations":{"fr":"Cambodge","nl":"Cambodja","de":"Kambodscha","it":"Cambogia","ja":"\u30ab\u30f3\u30dc\u30b8\u30a2","es":"Camboya","hr":"Kambod\u017ea"},"population":15405157,"latlng":[13,105],"demonym":"Cambodian","borders":["LAO","THA","VNM"],"area":181035,"gini":37.9,"timezones":["UTC+07:00"]},{"name":"Cameroon","nativeName":"Cameroon","topLevelDomain":[".cm"],"alpha2Code":"CM","numericCode":"120","alpha3Code":"CMR","currencies":["XAF"],"callingCodes":["237"],"capital":"Yaound\u00e9","altSpellings":["CM","Republic of Cameroon","R\u00e9publique du Cameroun"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["French","English"],"languages":["en","fr"],"translations":{"de":"Kamerun","es":"Camer\u00fan","fr":"Cameroun","it":"Camerun","ja":"\u30ab\u30e1\u30eb\u30fc\u30f3","nl":"Kameroen","hr":"Kamerun"},"population":23344000,"latlng":[6,12],"demonym":"Cameroonian","borders":["CAF","TCD","COG","GNQ","GAB","NGA"],"area":475442,"gini":38.9,"timezones":["UTC+01:00"]},{"name":"Canada","nativeName":"Canada","topLevelDomain":[".ca"],"alpha2Code":"CA","numericCode":"124","alpha3Code":"CAN","currencies":["CAD"],"callingCodes":["1"],"capital":"Ottawa","altSpellings":["CA"],"relevance":"2","region":"Americas","subregion":"Northern America","language":["English","French"],"languages":["en","fr"],"translations":{"de":"Kanada","es":"Canad\u00e1","fr":"Canada","it":"Canada","ja":"\u30ab\u30ca\u30c0","nl":"Canada","hr":"Kanada"},"population":35749600,"latlng":[60,-95],"demonym":"Canadian","borders":["USA"],"area":9984670,"gini":32.6,"timezones":["UTC-08:00","UTC-07:00","UTC-06:00","UTC-05:00","UTC-04:00","UTC-03:30"]},{"name":"Cape Verde","nativeName":"Cabo Verde","topLevelDomain":[".cv"],"alpha2Code":"CV","numericCode":"132","alpha3Code":"CPV","currencies":["CVE"],"callingCodes":["238"],"capital":"Praia","altSpellings":["CV","Republic of Cabo Verde","Rep\u00fablica de Cabo Verde"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["Portuguese"],"languages":["pt"],"translations":{"de":"Kap Verde","es":"Cabo Verde","fr":"Cap Vert","it":"Capo Verde","ja":"\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7","nl":"Kaapverdi\u00eb","hr":"Zelenortska Republika"},"population":524833,"latlng":[16,-24],"demonym":"Cape Verdian","borders":[],"area":4033,"gini":50.5,"timezones":["UTC-01:00"]},{"name":"Cayman Islands","nativeName":"Cayman Islands","topLevelDomain":[".ky"],"alpha2Code":"KY","numericCode":"136","alpha3Code":"CYM","currencies":["KYD"],"callingCodes":["1"],"capital":"George Town","altSpellings":["KY"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Kaimaninseln","es":"Islas Caim\u00e1n","fr":"\u00celes Ca\u00efmans","it":"Isole Cayman","ja":"\u30b1\u30a4\u30de\u30f3\u8af8\u5cf6","nl":"Caymaneilanden","hr":"Kajmanski otoci"},"population":58238,"latlng":[19.5,-80.5],"demonym":"Caymanian","borders":[],"area":264,"timezones":["UTC-05:00"]},{"name":"Central African Republic","nativeName":"K\u00f6d\u00f6r\u00f6s\u00ease t\u00ee B\u00eaafr\u00eeka","topLevelDomain":[".cf"],"alpha2Code":"CF","numericCode":"140","alpha3Code":"CAF","currencies":["XAF"],"callingCodes":["236"],"capital":"Bangui","altSpellings":["CF","Central African Republic","R\u00e9publique centrafricaine"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["Sango","French"],"languages":["fr","sg"],"translations":{"de":"Zentralafrikanische Republik","es":"Rep\u00fablica Centroafricana","fr":"R\u00e9publique centrafricaine","it":"Repubblica Centrafricana","ja":"\u4e2d\u592e\u30a2\u30d5\u30ea\u30ab\u5171\u548c\u56fd","nl":"Centraal-Afrikaanse Republiek","hr":"Srednjoafri\u010dka Republika"},"population":4900000,"latlng":[7,21],"demonym":"Central African","borders":["CMR","TCD","COD","COG","SSD","SDN"],"area":622984,"gini":56.3,"timezones":["UTC+01:00"]},{"name":"Chad","nativeName":"Tchad","topLevelDomain":[".td"],"alpha2Code":"TD","numericCode":"148","alpha3Code":"TCD","currencies":["XAF"],"callingCodes":["235"],"capital":"N'Djamena","altSpellings":["TD","Tchad","Republic of Chad","R\u00e9publique du Tchad"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["French","Arabic"],"languages":["fr","ar"],"translations":{"de":"Tschad","es":"Chad","fr":"Tchad","it":"Ciad","ja":"\u30c1\u30e3\u30c9","nl":"Tsjaad","hr":"\u010cad"},"population":14037000,"latlng":[15,19],"demonym":"Chadian","borders":["CMR","CAF","LBY","NER","NGA","SSD"],"area":1284000,"gini":39.8,"timezones":["UTC+01:00"]},{"name":"Chile","nativeName":"Chile","topLevelDomain":[".cl"],"alpha2Code":"CL","numericCode":"152","alpha3Code":"CHL","currencies":["CLF","CLP"],"callingCodes":["56"],"capital":"Santiago","altSpellings":["CL","Republic of Chile","Rep\u00fablica de Chile"],"relevance":"0","region":"Americas","subregion":"South America","language":["Spanish"],"languages":["es"],"translations":{"de":"Chile","es":"Chile","fr":"Chili","it":"Cile","ja":"\u30c1\u30ea","nl":"Chili","hr":"\u010cile"},"population":18006407,"latlng":[-30,-71],"demonym":"Chilean","borders":["ARG","BOL","PER"],"area":756102,"gini":52.1,"timezones":["UTC-06:00","UTC-04:00"]},{"name":"China","nativeName":"\u4e2d\u56fd","topLevelDomain":[".cn"],"alpha2Code":"CN","numericCode":"156","alpha3Code":"CHN","currencies":["CNY"],"callingCodes":["86"],"capital":"Beijing","altSpellings":["CN","Zh\u014dnggu\u00f3","Zhongguo","Zhonghua","People's Republic of China","\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd","Zh\u014dnghu\u00e1 R\u00e9nm\u00edn G\u00f2ngh\u00e9gu\u00f3"],"relevance":"0","region":"Asia","subregion":"Eastern Asia","language":["Standard Chinese"],"languages":["zh"],"translations":{"de":"China","es":"China","fr":"Chine","it":"Cina","ja":"\u4e2d\u56fd","nl":"China","hr":"Kina"},"population":1371590000,"latlng":[35,105],"demonym":"Chinese","borders":["AFG","BTN","MMR","HKG","IND","KAZ","PRK","KGZ","LAO","MAC","MNG","PAK","RUS","TJK","VNM"],"area":9640011,"gini":47.0,"timezones":["UTC+08:00"]},{"name":"Christmas Island","nativeName":"Christmas Island","topLevelDomain":[".cx"],"alpha2Code":"CX","numericCode":"162","alpha3Code":"CXR","currencies":["AUD"],"callingCodes":["61"],"capital":"Flying Fish Cove","altSpellings":["CX","Territory of Christmas Island"],"relevance":"0.5","region":"Oceania","subregion":"Australia and New Zealand","language":["English"],"languages":["en"],"translations":{"fr":"\u00cele Christmas","nl":"Christmaseiland","de":"Weihnachtsinsel","it":"Isola di Natale","ja":"\u30af\u30ea\u30b9\u30de\u30b9\u5cf6","es":"Isla de Navidad","hr":"Bo\u017ei\u0107ni otok"},"population":2072,"latlng":[-10.5,105.66666666],"demonym":"Christmas Island","borders":[],"area":135,"timezones":["UTC+07:00"]},{"name":"Cocos (Keeling) Islands","nativeName":"Cocos (Keeling) Islands","topLevelDomain":[".cc"],"alpha2Code":"CC","numericCode":"166","alpha3Code":"CCK","currencies":["AUD"],"callingCodes":["61"],"capital":"West Island","altSpellings":["CC","Territory of the Cocos (Keeling) Islands","Keeling Islands"],"relevance":"0","region":"Oceania","subregion":"Australia and New Zealand","language":["English"],"languages":["en"],"translations":{"fr":"\u00celes Cocos","nl":"Cocoseilanden","de":"Kokosinseln","it":"Isole Cocos e Keeling","ja":"\u30b3\u30b3\u30b9\uff08\u30ad\u30fc\u30ea\u30f3\u30b0\uff09\u8af8\u5cf6","es":"Islas Cocos o Islas Keeling","hr":"Kokosovi Otoci"},"population":550,"latlng":[-12.5,96.83333333],"demonym":"Cocos Islander","borders":[],"area":14,"timezones":["UTC+06:30"]},{"name":"Colombia","nativeName":"Colombia","topLevelDomain":[".co"],"alpha2Code":"CO","numericCode":"170","alpha3Code":"COL","currencies":["COP"],"callingCodes":["57"],"capital":"Bogot\u00e1","altSpellings":["CO","Republic of Colombia","Rep\u00fablica de Colombia"],"relevance":"0","region":"Americas","subregion":"South America","language":["Spanish"],"languages":["es"],"translations":{"de":"Kolumbien","es":"Colombia","fr":"Colombie","it":"Colombia","ja":"\u30b3\u30ed\u30f3\u30d3\u30a2","nl":"Colombia","hr":"Kolumbija"},"population":48266600,"latlng":[4,-72],"demonym":"Colombian","borders":["BRA","ECU","PAN","PER","VEN"],"area":1141748,"gini":55.9,"timezones":["UTC-05:00"]},{"name":"Comoros","nativeName":"Komori","topLevelDomain":[".km"],"alpha2Code":"KM","numericCode":"174","alpha3Code":"COM","currencies":["KMF"],"callingCodes":["269"],"capital":"Moroni","altSpellings":["KM","Union of the Comoros","Union des Comores","Udzima wa Komori","al-Itti\u1e25\u0101d al-Qumur\u012b"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Comorian","Arabic","French"],"languages":["ar","fr"],"translations":{"de":"Union der Komoren","es":"Comoras","fr":"Comores","it":"Comore","ja":"\u30b3\u30e2\u30ed","nl":"Comoren","hr":"Komori"},"population":784745,"latlng":[-12.16666666,44.25],"demonym":"Comoran","borders":[],"area":1862,"gini":64.3,"timezones":["UTC+03:00"]},{"name":"Republic of the Congo","nativeName":"R\u00e9publique du Congo","topLevelDomain":[".cg"],"alpha2Code":"CG","numericCode":"178","alpha3Code":"COG","currencies":["XAF"],"callingCodes":["242"],"capital":"Brazzaville","altSpellings":["CG","Congo-Brazzaville"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["French"],"languages":["fr","ln"],"translations":{"de":"Kongo","es":"Congo","fr":"Congo","it":"Congo","ja":"\u30b3\u30f3\u30b4\u5171\u548c\u56fd","nl":"Congo [Republiek]","hr":"Kongo"},"population":4620000,"latlng":[-1,15],"demonym":"Congolese","borders":["AGO","CMR","CAF","COD","GAB"],"area":342000,"gini":47.3,"timezones":["UTC+01:00"]},{"name":"Democratic Republic of the Congo","nativeName":"R\u00e9publique d\u00e9mocratique du Congo","topLevelDomain":[".cd"],"alpha2Code":"CD","numericCode":"180","alpha3Code":"COD","currencies":["CDF"],"callingCodes":["243"],"capital":"Kinshasa","altSpellings":["CD","DR Congo","Congo-Kinshasa","DRC"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["French"],"languages":["fr","ln","kg","sw","lu"],"translations":{"de":"Kongo (Dem. Rep.)","es":"Congo (Rep. Dem.)","fr":"Congo (R\u00e9p. d\u00e9m.)","it":"Congo (Rep. Dem.)","ja":"\u30b3\u30f3\u30b4\u6c11\u4e3b\u5171\u548c\u56fd","nl":"Congo [DRC]","hr":"Kongo, Demokratska Republika"},"population":77267000,"latlng":[0,25],"demonym":"Congolese","borders":["AGO","BDI","CAF","COG","RWA","SSD","TZA","UGA","ZMB"],"area":2344858,"timezones":["UTC+01:00","UTC+02:00"]},{"name":"Cook Islands","nativeName":"Cook Islands","topLevelDomain":[".ck"],"alpha2Code":"CK","numericCode":"184","alpha3Code":"COK","currencies":["NZD"],"callingCodes":["682"],"capital":"Avarua","altSpellings":["CK","K\u016bki '\u0100irani"],"relevance":"0.5","region":"Oceania","subregion":"Polynesia","language":["English","Cook Islands M\u0101ori"],"languages":["en"],"translations":{"de":"Cookinseln","es":"Islas Cook","fr":"\u00celes Cook","it":"Isole Cook","ja":"\u30af\u30c3\u30af\u8af8\u5cf6","nl":"Cookeilanden","hr":"Cookovo Oto\u010dje"},"population":14974,"latlng":[-21.23333333,-159.76666666],"demonym":"Cook Islander","borders":[],"area":236,"timezones":["UTC-10:00"]},{"name":"Costa Rica","nativeName":"Costa Rica","topLevelDomain":[".cr"],"alpha2Code":"CR","numericCode":"188","alpha3Code":"CRI","currencies":["CRC"],"callingCodes":["506"],"capital":"San Jos\u00e9","altSpellings":["CR","Republic of Costa Rica","Rep\u00fablica de Costa Rica"],"relevance":"0","region":"Americas","subregion":"Central America","language":["Spanish"],"languages":["es"],"translations":{"de":"Costa Rica","es":"Costa Rica","fr":"Costa Rica","it":"Costa Rica","ja":"\u30b3\u30b9\u30bf\u30ea\u30ab","nl":"Costa Rica","hr":"Kostarika"},"population":4773130,"latlng":[10,-84],"demonym":"Costa Rican","borders":["NIC","PAN"],"area":51100,"gini":50.7,"timezones":["UTC-06:00"]},{"name":"Croatia","nativeName":"Hrvatska","topLevelDomain":[".hr"],"alpha2Code":"HR","numericCode":"191","alpha3Code":"HRV","currencies":["HRK"],"callingCodes":["385"],"capital":"Zagreb","altSpellings":["HR","Hrvatska","Republic of Croatia","Republika Hrvatska"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Croatian"],"languages":["hr"],"translations":{"de":"Kroatien","es":"Croacia","fr":"Croatie","it":"Croazia","ja":"\u30af\u30ed\u30a2\u30c1\u30a2","nl":"Kroati\u00eb","hr":"Hrvatska"},"population":4246800,"latlng":[45.16666666,15.5],"demonym":"Croatian","borders":["BIH","HUN","MNE","SRB","SVN"],"area":56594,"gini":33.7,"timezones":["UTC+01:00"]},{"name":"Cuba","nativeName":"Cuba","topLevelDomain":[".cu"],"alpha2Code":"CU","numericCode":"192","alpha3Code":"CUB","currencies":["CUC","CUP"],"callingCodes":["53"],"capital":"Havana","altSpellings":["CU","Republic of Cuba","Rep\u00fablica de Cuba"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["Spanish"],"languages":["es"],"translations":{"de":"Kuba","es":"Cuba","fr":"Cuba","it":"Cuba","ja":"\u30ad\u30e5\u30fc\u30d0","nl":"Cuba","hr":"Kuba"},"population":11238317,"latlng":[21.5,-80],"demonym":"Cuban","borders":[],"area":109884,"gini":null,"timezones":["UTC-05:00"]},{"name":"Cura\u00e7ao","nativeName":"Cura\u00e7ao","topLevelDomain":[".cw"],"alpha2Code":"CW","numericCode":"531","alpha3Code":"CUW","currencies":["ANG"],"callingCodes":["599"],"capital":"Willemstad","altSpellings":["CW","Curacao","K\u00f2rsou","Country of Cura\u00e7ao","Land Cura\u00e7ao","Pais K\u00f2rsou"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["Dutch","Papiamentu","English"],"languages":["nl","pa","en"],"translations":{"nl":"Cura\u00e7ao"},"population":154843,"latlng":[12.116667,-68.933333],"demonym":"Dutch","borders":[],"area":444,"timezones":["UTC-04:00"]},{"name":"Cyprus","nativeName":"\u039a\u03cd\u03c0\u03c1\u03bf\u03c2","topLevelDomain":[".cy"],"alpha2Code":"CY","numericCode":"196","alpha3Code":"CYP","currencies":["EUR"],"callingCodes":["357"],"capital":"Nicosia","altSpellings":["CY","K\u00fdpros","K\u0131br\u0131s","Republic of Cyprus","\u039a\u03c5\u03c0\u03c1\u03b9\u03b1\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1","K\u0131br\u0131s Cumhuriyeti"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Greek","Turkish"],"languages":["el","tr","hy"],"translations":{"de":"Zypern","es":"Chipre","fr":"Chypre","it":"Cipro","ja":"\u30ad\u30d7\u30ed\u30b9","nl":"Cyprus","hr":"Cipar"},"population":858000,"latlng":[35,33],"demonym":"Cypriot","borders":["GBR"],"area":9251,"gini":null,"timezones":["UTC+02:00"]},{"name":"Czech Republic","nativeName":"\u010cesk\u00e1 republika","topLevelDomain":[".cz"],"alpha2Code":"CZ","numericCode":"203","alpha3Code":"CZE","currencies":["CZK"],"callingCodes":["420"],"capital":"Prague","altSpellings":["CZ","\u010cesk\u00e1 republika","\u010cesko"],"relevance":"0","region":"Europe","subregion":"Eastern Europe","language":["Czech"],"languages":["cs","sk"],"translations":{"de":"Tschechische Republik","es":"Rep\u00fablica Checa","fr":"R\u00e9publique tch\u00e8que","it":"Repubblica Ceca","ja":"\u30c1\u30a7\u30b3","nl":"Tsjechi\u00eb","hr":"\u010ce\u0161ka"},"population":10537818,"latlng":[49.75,15.5],"demonym":"Czech","borders":["AUT","DEU","POL","SVK"],"area":78865,"gini":26.0,"timezones":["UTC+01:00"]},{"name":"Denmark","nativeName":"Danmark","topLevelDomain":[".dk"],"alpha2Code":"DK","numericCode":"208","alpha3Code":"DNK","currencies":["DKK"],"callingCodes":["45"],"capital":"Copenhagen","altSpellings":["DK","Danmark","Kingdom of Denmark","Kongeriget Danmark"],"relevance":"1.5","region":"Europe","subregion":"Northern Europe","language":["Danish"],"languages":["da"],"translations":{"de":"D\u00e4nemark","es":"Dinamarca","fr":"Danemark","it":"Danimarca","ja":"\u30c7\u30f3\u30de\u30fc\u30af","nl":"Denemarken","hr":"Danska"},"population":5678348,"latlng":[56,10],"demonym":"Danish","borders":["DEU"],"area":43094,"gini":24.0,"timezones":["UTC-04:00","UTC-03:00","UTC-01:00","UTC","UTC+01:00"]},{"name":"Djibouti","nativeName":"Djibouti","topLevelDomain":[".dj"],"alpha2Code":"DJ","numericCode":"262","alpha3Code":"DJI","currencies":["DJF"],"callingCodes":["253"],"capital":"Djibouti","altSpellings":["DJ","Jabuuti","Gabuuti","Republic of Djibouti","R\u00e9publique de Djibouti","Gabuutih Ummuuno","Jamhuuriyadda Jabuuti"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["French","Arabic"],"languages":["fr","ar"],"translations":{"de":"Dschibuti","es":"Yibuti","fr":"Djibouti","it":"Gibuti","ja":"\u30b8\u30d6\u30c1","nl":"Djibouti","hr":"D\u017eibuti"},"population":888000,"latlng":[11.5,43],"demonym":"Djibouti","borders":["ERI","ETH","SOM"],"area":23200,"gini":40.0,"timezones":["UTC+03:00"]},{"name":"Dominica","nativeName":"Dominica","topLevelDomain":[".dm"],"alpha2Code":"DM","numericCode":"212","alpha3Code":"DMA","currencies":["XCD"],"callingCodes":["1"],"capital":"Roseau","altSpellings":["DM","Dominique","Wai\u2018tu kubuli","Commonwealth of Dominica"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Dominica","es":"Dominica","fr":"Dominique","it":"Dominica","ja":"\u30c9\u30df\u30cb\u30ab\u56fd","nl":"Dominica","hr":"Dominika"},"population":71293,"latlng":[15.41666666,-61.33333333],"demonym":"Dominican","borders":[],"area":751,"timezones":["UTC-04:00"]},{"name":"Dominican Republic","nativeName":"Rep\u00fablica Dominicana","topLevelDomain":[".do"],"alpha2Code":"DO","numericCode":"214","alpha3Code":"DOM","currencies":["DOP"],"callingCodes":["1"],"capital":"Santo Domingo","altSpellings":["DO"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["Spanish"],"languages":["es"],"translations":{"de":"Dominikanische Republik","es":"Rep\u00fablica Dominicana","fr":"R\u00e9publique dominicaine","it":"Repubblica Dominicana","ja":"\u30c9\u30df\u30cb\u30ab\u5171\u548c\u56fd","nl":"Dominicaanse Republiek","hr":"Dominikanska Republika"},"population":10528000,"latlng":[19,-70.66666666],"demonym":"Dominican","borders":["HTI"],"area":48671,"gini":47.2,"timezones":["UTC-04:00"]},{"name":"Ecuador","nativeName":"Ecuador","topLevelDomain":[".ec"],"alpha2Code":"EC","numericCode":"218","alpha3Code":"ECU","currencies":["USD"],"callingCodes":["593"],"capital":"Quito","altSpellings":["EC","Republic of Ecuador","Rep\u00fablica del Ecuador"],"relevance":"0","region":"Americas","subregion":"South America","language":["Spanish"],"languages":["es"],"translations":{"de":"Ecuador","es":"Ecuador","fr":"\u00c9quateur","it":"Ecuador","ja":"\u30a8\u30af\u30a2\u30c9\u30eb","nl":"Ecuador","hr":"Ekvador"},"population":16027500,"latlng":[-2,-77.5],"demonym":"Ecuadorean","borders":["COL","PER"],"area":276841,"gini":49.3,"timezones":["UTC-06:00","UTC-05:00"]},{"name":"Egypt","nativeName":"\u0645\u0635\u0631\u200e","topLevelDomain":[".eg"],"alpha2Code":"EG","numericCode":"818","alpha3Code":"EGY","currencies":["EGP"],"callingCodes":["20"],"capital":"Cairo","altSpellings":["EG","Arab Republic of Egypt"],"relevance":"1.5","region":"Africa","subregion":"Northern Africa","language":["Arabic"],"languages":["ar"],"translations":{"de":"\u00c4gypten","es":"Egipto","fr":"\u00c9gypte","it":"Egitto","ja":"\u30a8\u30b8\u30d7\u30c8","nl":"Egypte","hr":"Egipat"},"population":89335600,"latlng":[27,30],"demonym":"Egyptian","borders":["ISR","LBY","SDN"],"area":1002450,"gini":30.8,"timezones":["UTC+02:00"]},{"name":"El Salvador","nativeName":"El Salvador","topLevelDomain":[".sv"],"alpha2Code":"SV","numericCode":"222","alpha3Code":"SLV","currencies":["SVC","USD"],"callingCodes":["503"],"capital":"San Salvador","altSpellings":["SV","Republic of El Salvador","Rep\u00fablica de El Salvador"],"relevance":"0","region":"Americas","subregion":"Central America","language":["Castilian"],"languages":["es"],"translations":{"de":"El Salvador","es":"El Salvador","fr":"Salvador","it":"El Salvador","ja":"\u30a8\u30eb\u30b5\u30eb\u30d0\u30c9\u30eb","nl":"El Salvador","hr":"Salvador"},"population":6401240,"latlng":[13.83333333,-88.91666666],"demonym":"Salvadoran","borders":["GTM","HND"],"area":21041,"gini":48.3,"timezones":["UTC-06:00"]},{"name":"Equatorial Guinea","nativeName":"Guinea Ecuatorial","topLevelDomain":[".gq"],"alpha2Code":"GQ","numericCode":"226","alpha3Code":"GNQ","currencies":["XAF"],"callingCodes":["240"],"capital":"Malabo","altSpellings":["GQ","Republic of Equatorial Guinea","Rep\u00fablica de Guinea Ecuatorial","R\u00e9publique de Guin\u00e9e \u00e9quatoriale","Rep\u00fablica da Guin\u00e9 Equatorial"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["Spanish","French","Portuguese"],"languages":["es","fr"],"translations":{"de":"\u00c4quatorial-Guinea","es":"Guinea Ecuatorial","fr":"Guin\u00e9e-\u00c9quatoriale","it":"Guinea Equatoriale","ja":"\u8d64\u9053\u30ae\u30cb\u30a2","nl":"Equatoriaal-Guinea","hr":"Ekvatorijalna Gvineja"},"population":1430000,"latlng":[2,10],"demonym":"Equatorial Guinean","borders":["CMR","GAB"],"area":28051,"gini":null,"timezones":["UTC+01:00"]},{"name":"Eritrea","nativeName":"\u12a4\u122d\u1275\u122b","topLevelDomain":[".er"],"alpha2Code":"ER","numericCode":"232","alpha3Code":"ERI","currencies":["ERN"],"callingCodes":["291"],"capital":"Asmara","altSpellings":["ER","State of Eritrea","\u1203\u1308\u1228 \u12a4\u122d\u1275\u122b","Dawlat Iritriy\u00e1","\u02beErtr\u0101","Iritriy\u0101",""],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Tigrinya","Arabic","English"],"languages":["ti","ar","en"],"translations":{"de":"Eritrea","es":"Eritrea","fr":"\u00c9rythr\u00e9e","it":"Eritrea","ja":"\u30a8\u30ea\u30c8\u30ea\u30a2","nl":"Eritrea","hr":"Eritreja"},"population":5228000,"latlng":[15,39],"demonym":"Eritrean","borders":["DJI","ETH","SDN"],"area":117600,"timezones":["UTC+03:00"]},{"name":"Estonia","nativeName":"Eesti","topLevelDomain":[".ee"],"alpha2Code":"EE","numericCode":"233","alpha3Code":"EST","currencies":["EUR"],"callingCodes":["372"],"capital":"Tallinn","altSpellings":["EE","Eesti","Republic of Estonia","Eesti Vabariik"],"relevance":"0","region":"Europe","subregion":"Northern Europe","language":["Estonian"],"languages":["et"],"translations":{"de":"Estland","es":"Estonia","fr":"Estonie","it":"Estonia","ja":"\u30a8\u30b9\u30c8\u30cb\u30a2","nl":"Estland","hr":"Estonija"},"population":1313271,"latlng":[59,26],"demonym":"Estonian","borders":["LVA","RUS"],"area":45227,"gini":36.0,"timezones":["UTC+02:00"]},{"name":"Ethiopia","nativeName":"\u12a2\u1275\u12ee\u1335\u12eb","topLevelDomain":[".et"],"alpha2Code":"ET","numericCode":"231","alpha3Code":"ETH","currencies":["ETB"],"callingCodes":["251"],"capital":"Addis Ababa","altSpellings":["ET","\u02be\u012aty\u014d\u1e57\u1e57y\u0101","Federal Democratic Republic of Ethiopia","\u12e8\u12a2\u1275\u12ee\u1335\u12eb \u134c\u12f4\u122b\u120b\u12ca \u12f2\u121e\u12ad\u122b\u1232\u12eb\u12ca \u122a\u1350\u1265\u120a\u12ad"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Amharic"],"languages":["am"],"translations":{"de":"\u00c4thiopien","es":"Etiop\u00eda","fr":"\u00c9thiopie","it":"Etiopia","ja":"\u30a8\u30c1\u30aa\u30d4\u30a2","nl":"Ethiopi\u00eb","hr":"Etiopija"},"population":90076012,"latlng":[8,38],"demonym":"Ethiopian","borders":["DJI","ERI","KEN","SOM","SSD","SDN"],"area":1104300,"gini":29.8,"timezones":["UTC+03:00"]},{"name":"Falkland Islands","nativeName":"Falkland Islands","topLevelDomain":[".fk"],"alpha2Code":"FK","numericCode":"238","alpha3Code":"FLK","currencies":["FKP"],"callingCodes":["500"],"capital":"Stanley","altSpellings":["FK","Islas Malvinas"],"relevance":"0.5","region":"Americas","subregion":"South America","language":["English"],"languages":["en"],"translations":{"de":"Falklandinseln","es":"Islas Malvinas","fr":"\u00celes Malouines","it":"Isole Falkland o Isole Malvine","ja":"\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\uff08\u30de\u30eb\u30d3\u30ca\u30b9\uff09\u8af8\u5cf6","nl":"Falklandeilanden [Islas Malvinas]","hr":"Falklandski Otoci"},"population":3000,"latlng":[-51.75,-59],"demonym":"Falkland Islander","borders":[],"area":12173,"timezones":["UTC-04:00"]},{"name":"Faroe Islands","nativeName":"F\u00f8royar","topLevelDomain":[".fo"],"alpha2Code":"FO","numericCode":"234","alpha3Code":"FRO","currencies":["DKK"],"callingCodes":["298"],"capital":"T\u00f3rshavn","altSpellings":["FO","F\u00f8royar","F\u00e6r\u00f8erne"],"relevance":"0.5","region":"Europe","subregion":"Northern Europe","language":["Faroese","Danish"],"languages":["fo"],"translations":{"de":"F\u00e4r\u00f6er-Inseln","es":"Islas Faroe","fr":"\u00celes F\u00e9ro\u00e9","it":"Isole Far Oer","ja":"\u30d5\u30a7\u30ed\u30fc\u8af8\u5cf6","nl":"Faer\u00f6er","hr":"Farski Otoci"},"population":48846,"latlng":[62,-7],"demonym":"Faroese","borders":[],"area":1393,"timezones":["UTC+00:00"]},{"name":"Fiji","nativeName":"Fiji","topLevelDomain":[".fj"],"alpha2Code":"FJ","numericCode":"242","alpha3Code":"FJI","currencies":["FJD"],"callingCodes":["679"],"capital":"Suva","altSpellings":["FJ","Viti","Republic of Fiji","Matanitu ko Viti","Fij\u012b Ga\u1e47ar\u0101jya"],"relevance":"0","region":"Oceania","subregion":"Melanesia","language":["English","Fijian","Fiji Hindi"],"languages":["en","fj","hi","ur"],"translations":{"de":"Fidschi","es":"Fiyi","fr":"Fidji","it":"Figi","ja":"\u30d5\u30a3\u30b8\u30fc","nl":"Fiji","hr":"Fi\u0111i"},"population":859178,"latlng":[-18,175],"demonym":"Fijian","borders":[],"area":18272,"gini":42.8,"timezones":["UTC+12:00"]},{"name":"Finland","nativeName":"Suomi","topLevelDomain":[".fi"],"alpha2Code":"FI","numericCode":"246","alpha3Code":"FIN","currencies":["EUR"],"callingCodes":["358"],"capital":"Helsinki","altSpellings":["FI","Suomi","Republic of Finland","Suomen tasavalta","Republiken Finland"],"relevance":"0.5","region":"Europe","subregion":"Northern Europe","language":["Finnish","Swedish"],"languages":["fi","sv"],"translations":{"de":"Finnland","es":"Finlandia","fr":"Finlande","it":"Finlandia","ja":"\u30d5\u30a3\u30f3\u30e9\u30f3\u30c9","nl":"Finland","hr":"Finska"},"population":5485215,"latlng":[64,26],"demonym":"Finnish","borders":["NOR","SWE","RUS"],"area":338424,"gini":26.9,"timezones":["UTC+02:00"]},{"name":"France","nativeName":"France","topLevelDomain":[".fr"],"alpha2Code":"FR","numericCode":"250","alpha3Code":"FRA","currencies":["EUR"],"callingCodes":["33"],"capital":"Paris","altSpellings":["FR","French Republic","R\u00e9publique fran\u00e7aise"],"relevance":"2.5","region":"Europe","subregion":"Western Europe","language":["French"],"languages":["fr"],"translations":{"de":"Frankreich","es":"Francia","fr":"France","it":"Francia","ja":"\u30d5\u30e9\u30f3\u30b9","nl":"Frankrijk","hr":"Francuska"},"population":66186000,"latlng":[46,2],"demonym":"French","borders":["AND","BEL","DEU","ITA","LUX","MCO","ESP","CHE"],"area":640679,"gini":32.7,"timezones":["UTC-10:00","UTC-09:30","UTC-09:00","UTC-08:00","UTC-04:00","UTC-03:00","UTC+01:00","UTC+03:00","UTC+04:00","UTC+05:00","UTC+11:00","UTC+12:00"]},{"name":"French Guiana","nativeName":"Guyane fran\u00e7aise","topLevelDomain":[".gf"],"alpha2Code":"GF","numericCode":"254","alpha3Code":"GUF","currencies":["EUR"],"callingCodes":["594"],"capital":"Cayenne","altSpellings":["GF","Guiana","Guyane"],"relevance":"0","region":"Americas","subregion":"South America","language":["French"],"languages":["fr"],"translations":{"de":"Franz\u00f6sisch Guyana","es":"Guayana Francesa","fr":"Guayane","it":"Guyana francese","ja":"\u30d5\u30e9\u30f3\u30b9\u9818\u30ae\u30a2\u30ca","nl":"Frans-Guyana","hr":"Francuska Gvajana"},"population":239648,"latlng":[4,-53],"demonym":"","borders":["BRA","SUR"],"timezones":["UTC-03:00"]},{"name":"French Polynesia","nativeName":"Polyn\u00e9sie fran\u00e7aise","topLevelDomain":[".pf"],"alpha2Code":"PF","numericCode":"258","alpha3Code":"PYF","currencies":["XPF"],"callingCodes":["689"],"capital":"Papeet\u0113","altSpellings":["PF","Polyn\u00e9sie fran\u00e7aise","French Polynesia","P\u014dr\u012bnetia Far\u0101ni"],"relevance":"0","region":"Oceania","subregion":"Polynesia","language":["French"],"languages":["fr"],"translations":{"de":"Franz\u00f6sisch-Polynesien","es":"Polinesia Francesa","fr":"Polyn\u00e9sie fran\u00e7aise","it":"Polinesia Francese","ja":"\u30d5\u30e9\u30f3\u30b9\u9818\u30dd\u30ea\u30cd\u30b7\u30a2","nl":"Frans-Polynesi\u00eb","hr":"Francuska Polinezija"},"population":268270,"latlng":[-15,-140],"demonym":"French Polynesian","borders":[],"area":4167,"timezones":["UTC-10:00","UTC-09:30","UTC-09:00"]},{"name":"French Southern and Antarctic Lands","nativeName":"Territoire des Terres australes et antarctiques fran\u00e7aises","topLevelDomain":[".tf"],"alpha2Code":"TF","numericCode":"260","alpha3Code":"ATF","currencies":["EUR"],"callingCodes":["262"],"capital":"Port-aux-Fran\u00e7ais","altSpellings":["TF"],"relevance":"0","region":"Africa","subregion":"Southern Africa","language":["French"],"languages":["fr"],"translations":{"de":"Franz\u00f6sische S\u00fcd- und Antarktisgebiete","es":"Tierras Australes y Ant\u00e1rticas Francesas","fr":"Terres australes et antarctiques fran\u00e7aises","it":"Territori Francesi del Sud","ja":"\u30d5\u30e9\u30f3\u30b9\u9818\u5357\u65b9\u30fb\u5357\u6975\u5730\u57df","nl":"Franse Gebieden in de zuidelijke Indische Oceaan","hr":"Francuski ju\u017eni i antarkti\u010dki teritoriji"},"population":140,"latlng":[-49.25,69.167],"demonym":"French","borders":[],"area":7747,"timezones":["UTC+05:00"]},{"name":"Gabon","nativeName":"Gabon","topLevelDomain":[".ga"],"alpha2Code":"GA","numericCode":"266","alpha3Code":"GAB","currencies":["XAF"],"callingCodes":["241"],"capital":"Libreville","altSpellings":["GA","Gabonese Republic","R\u00e9publique Gabonaise"],"relevance":"0","region":"Africa","subregion":"Middle Africa","language":["French"],"languages":["fr"],"translations":{"de":"Gabun","es":"Gab\u00f3n","fr":"Gabon","it":"Gabon","ja":"\u30ac\u30dc\u30f3","nl":"Gabon","hr":"Gabon"},"population":1725000,"latlng":[-1,11.75],"demonym":"Gabonese","borders":["CMR","COG","GNQ"],"area":267668,"gini":41.5,"timezones":["UTC+01:00"]},{"name":"The Gambia","nativeName":"Gambia","topLevelDomain":[".gm"],"alpha2Code":"GM","numericCode":"270","alpha3Code":"GMB","currencies":["GMD"],"callingCodes":["220"],"capital":"Banjul","altSpellings":["GM","Republic of the Gambia"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["English"],"languages":["en"],"translations":{"de":"Gambia","es":"Gambia","fr":"Gambie","it":"Gambia","ja":"\u30ac\u30f3\u30d3\u30a2","nl":"Gambia","hr":"Gambija"},"population":1882450,"latlng":[13.46666666,-16.56666666],"demonym":"Gambian","borders":["SEN"],"area":11295,"timezones":["UTC+00:00"]},{"name":"Georgia","nativeName":"\u10e1\u10d0\u10e5\u10d0\u10e0\u10d7\u10d5\u10d4\u10da\u10dd","topLevelDomain":[".ge"],"alpha2Code":"GE","numericCode":"268","alpha3Code":"GEO","currencies":["GEL"],"callingCodes":["995"],"capital":"Tbilisi","altSpellings":["GE","Sakartvelo"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Georgian"],"languages":["ka"],"translations":{"de":"Georgien","es":"Georgia","fr":"G\u00e9orgie","it":"Georgia","ja":"\u30b0\u30eb\u30b8\u30a2","nl":"Georgi\u00eb","hr":"Gruzija"},"population":3729500,"latlng":[42,43.5],"demonym":"Georgian","borders":["ARM","AZE","RUS","TUR"],"gini":41.3,"area":69700,"timezones":["UTC-05:00"]},{"name":"Germany","nativeName":"Deutschland","topLevelDomain":[".de"],"alpha2Code":"DE","numericCode":"276","alpha3Code":"DEU","currencies":["EUR"],"callingCodes":["49"],"capital":"Berlin","altSpellings":["DE","Federal Republic of Germany","Bundesrepublik Deutschland"],"relevance":"3","region":"Europe","subregion":"Western Europe","language":["German"],"languages":["de"],"translations":{"de":"Deutschland","es":"Alemania","fr":"Allemagne","it":"Germania","ja":"\u30c9\u30a4\u30c4","nl":"Duitsland","hr":"Njema\u010dka"},"population":81083600,"latlng":[51,9],"demonym":"German","borders":["AUT","BEL","CZE","DNK","FRA","LUX","NLD","POL","CHE"],"area":357114,"gini":28.3,"timezones":["UTC+01:00"]},{"name":"Ghana","nativeName":"Ghana","topLevelDomain":[".gh"],"alpha2Code":"GH","numericCode":"288","alpha3Code":"GHA","currencies":["GHS"],"callingCodes":["233"],"capital":"Accra","altSpellings":["GH"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["English"],"languages":["en"],"translations":{"de":"Ghana","es":"Ghana","fr":"Ghana","it":"Ghana","ja":"\u30ac\u30fc\u30ca","nl":"Ghana","hr":"Gana"},"population":27043093,"latlng":[8,-2],"demonym":"Ghanaian","borders":["BFA","CIV","TGO"],"area":238533,"gini":42.8,"timezones":["UTC"]},{"name":"Gibraltar","nativeName":"Gibraltar","topLevelDomain":[".gi"],"alpha2Code":"GI","numericCode":"292","alpha3Code":"GIB","currencies":["GIP"],"callingCodes":["350"],"capital":"Gibraltar","altSpellings":["GI"],"relevance":"0.5","region":"Europe","subregion":"Southern Europe","language":["English"],"languages":["en"],"translations":{"de":"Gibraltar","es":"Gibraltar","fr":"Gibraltar","it":"Gibilterra","ja":"\u30b8\u30d6\u30e9\u30eb\u30bf\u30eb","nl":"Gibraltar","hr":"Gibraltar"},"population":32734,"latlng":[36.13333333,-5.35],"demonym":"Gibraltar","borders":["ESP"],"area":6,"timezones":["UTC+01:00"]},{"name":"Greece","nativeName":"\u0395\u03bb\u03bb\u03ac\u03b4\u03b1","topLevelDomain":[".gr"],"alpha2Code":"GR","numericCode":"300","alpha3Code":"GRC","currencies":["EUR"],"callingCodes":["30"],"capital":"Athens","altSpellings":["GR","Ell\u00e1da","Hellenic Republic","\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1"],"relevance":"1.5","region":"Europe","subregion":"Southern Europe","language":["Greek"],"languages":["el"],"translations":{"de":"Griechenland","es":"Grecia","fr":"Gr\u00e8ce","it":"Grecia","ja":"\u30ae\u30ea\u30b7\u30e3","nl":"Griekenland","hr":"Gr\u010dka"},"population":10846979,"latlng":[39,22],"demonym":"Greek","borders":["ALB","BGR","TUR","MKD"],"area":131990,"gini":34.3,"timezones":["UTC+02:00"]},{"name":"Greenland","nativeName":"Kalaallit Nunaat","topLevelDomain":[".gl"],"alpha2Code":"GL","numericCode":"304","alpha3Code":"GRL","currencies":["DKK"],"callingCodes":["299"],"capital":"Nuuk","altSpellings":["GL","Gr\u00f8nland"],"relevance":"0.5","region":"Americas","subregion":"Northern America","language":["Greenlandic"],"languages":["kl"],"translations":{"de":"Gr\u00f6nland","es":"Groenlandia","fr":"Groenland","it":"Groenlandia","ja":"\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9","nl":"Groenland","hr":"Grenland"},"population":56114,"latlng":[72,-40],"demonym":"Greenlandic","borders":[],"area":2166086,"timezones":["UTC-04:00","UTC-03:00","UTC-01:00","UTC+00:00"]},{"name":"Grenada","nativeName":"Grenada","topLevelDomain":[".gd"],"alpha2Code":"GD","numericCode":"308","alpha3Code":"GRD","currencies":["XCD"],"callingCodes":["1"],"capital":"St. George's","altSpellings":["GD"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Grenada","es":"Grenada","fr":"Grenade","it":"Grenada","ja":"\u30b0\u30ec\u30ca\u30c0","nl":"Grenada","hr":"Grenada"},"population":103328,"latlng":[12.11666666,-61.66666666],"demonym":"Grenadian","borders":[],"area":344,"timezones":["UTC-04:00"]},{"name":"Guadeloupe","nativeName":"Guadeloupe","topLevelDomain":[".gp"],"alpha2Code":"GP","numericCode":"312","alpha3Code":"GLP","currencies":["EUR"],"callingCodes":["590"],"capital":"Basse-Terre","altSpellings":["GP","Gwadloup"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["French"],"languages":["fr"],"translations":{"de":"Guadeloupe","es":"Guadalupe","fr":"Guadeloupe","it":"Guadeloupa","ja":"\u30b0\u30a2\u30c9\u30eb\u30fc\u30d7","nl":"Guadeloupe","hr":"Gvadalupa"},"population":403750,"latlng":[16.25,-61.583333],"demonym":"Guadeloupian","borders":[],"timezones":["UTC-04:00"]},{"name":"Guam","nativeName":"Guam","topLevelDomain":[".gu"],"alpha2Code":"GU","numericCode":"316","alpha3Code":"GUM","currencies":["USD"],"callingCodes":["1"],"capital":"Hag\u00e5t\u00f1a","altSpellings":["GU","Gu\u00e5h\u00e5n"],"relevance":"0","region":"Oceania","subregion":"Micronesia","language":["English","Chamorro"],"languages":["en","ch","es"],"translations":{"de":"Guam","es":"Guam","fr":"Guam","it":"Guam","ja":"\u30b0\u30a2\u30e0","nl":"Guam","hr":"Guam"},"population":159358,"latlng":[13.46666666,144.78333333],"demonym":"Guamanian","borders":[],"area":549,"timezones":["UTC+10:00"]},{"name":"Guatemala","nativeName":"Guatemala","topLevelDomain":[".gt"],"alpha2Code":"GT","numericCode":"320","alpha3Code":"GTM","currencies":["GTQ"],"callingCodes":["502"],"capital":"Guatemala City","altSpellings":["GT"],"relevance":"0","region":"Americas","subregion":"Central America","language":["Spanish"],"languages":["es"],"translations":{"de":"Guatemala","es":"Guatemala","fr":"Guatemala","it":"Guatemala","ja":"\u30b0\u30a2\u30c6\u30de\u30e9","nl":"Guatemala","hr":"Gvatemala"},"population":16176133,"latlng":[15.5,-90.25],"demonym":"Guatemalan","borders":["BLZ","SLV","HND","MEX"],"area":108889,"gini":55.9,"timezones":["UTC-06:00"]},{"name":"Guernsey","nativeName":"Guernsey","topLevelDomain":[".gg"],"alpha2Code":"GG","numericCode":"831","alpha3Code":"GGY","currencies":["GBP"],"callingCodes":["44"],"capital":"St. Peter Port","altSpellings":["GG","Bailiwick of Guernsey","Bailliage de Guernesey"],"relevance":"0.5","region":"Europe","subregion":"Northern Europe","language":["English","French"],"languages":["en","fr"],"translations":{"de":"Guernsey","es":"Guernsey","fr":"Guernesey","it":"Guernsey","ja":"\u30ac\u30fc\u30f3\u30b8\u30fc","nl":"Guernsey","hr":"Guernsey"},"population":65150,"latlng":[49.46666666,-2.58333333],"demonym":"Channel Islander","borders":[],"area":78,"timezones":["UTC+00:00"]},{"name":"Guinea","nativeName":"Guin\u00e9e","topLevelDomain":[".gn"],"alpha2Code":"GN","numericCode":"324","alpha3Code":"GIN","currencies":["GNF"],"callingCodes":["224"],"capital":"Conakry","altSpellings":["GN","Republic of Guinea","R\u00e9publique de Guin\u00e9e"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["French"],"languages":["fr","ff"],"translations":{"de":"Guinea","es":"Guinea","fr":"Guin\u00e9e","it":"Guinea","ja":"\u30ae\u30cb\u30a2","nl":"Guinee","hr":"Gvineja"},"population":10628972,"latlng":[11,-10],"demonym":"Guinean","borders":["CIV","GNB","LBR","MLI","SEN","SLE"],"area":245857,"gini":39.4,"timezones":["UTC"]},{"name":"Guinea-Bissau","nativeName":"Guin\u00e9-Bissau","topLevelDomain":[".gw"],"alpha2Code":"GW","numericCode":"624","alpha3Code":"GNB","currencies":["XOF"],"callingCodes":["245"],"capital":"Bissau","altSpellings":["GW","Republic of Guinea-Bissau","Rep\u00fablica da Guin\u00e9-Bissau"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["Portuguese"],"languages":["pt"],"translations":{"de":"Guinea-Bissau","es":"Guinea-Bis\u00e1u","fr":"Guin\u00e9e-Bissau","it":"Guinea-Bissau","ja":"\u30ae\u30cb\u30a2\u30d3\u30b5\u30a6","nl":"Guinee-Bissau","hr":"Gvineja Bisau"},"population":1844000,"latlng":[12,-15],"demonym":"Guinea-Bissauan","borders":["GIN","SEN"],"area":36125,"gini":35.5,"timezones":["UTC"]},{"name":"Guyana","nativeName":"Guyana","topLevelDomain":[".gy"],"alpha2Code":"GY","numericCode":"328","alpha3Code":"GUY","currencies":["GYD"],"callingCodes":["592"],"capital":"Georgetown","altSpellings":["GY","Co-operative Republic of Guyana"],"relevance":"0","region":"Americas","subregion":"South America","language":["English"],"languages":["en"],"translations":{"de":"Guyana","es":"Guyana","fr":"Guyane","it":"Guyana","ja":"\u30ac\u30a4\u30a2\u30ca","nl":"Guyana","hr":"Gvajana"},"population":746900,"latlng":[5,-59],"demonym":"Guyanese","borders":["BRA","SUR","VEN"],"area":214969,"gini":44.5,"timezones":["UTC-04:00"]},{"name":"Haiti","nativeName":"Ha\u00efti","topLevelDomain":[".ht"],"alpha2Code":"HT","numericCode":"332","alpha3Code":"HTI","currencies":["HTG","USD"],"callingCodes":["509"],"capital":"Port-au-Prince","altSpellings":["HT","Republic of Haiti","R\u00e9publique d'Ha\u00efti","Repiblik Ayiti"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["French","Haitian Creole"],"languages":["fr","ht"],"translations":{"de":"Haiti","es":"Haiti","fr":"Ha\u00efti","it":"Haiti","ja":"\u30cf\u30a4\u30c1","nl":"Ha\u00efti","hr":"Haiti"},"population":10911819,"latlng":[19,-72.41666666],"demonym":"Haitian","borders":["DOM"],"area":27750,"gini":59.2,"timezones":["UTC-05:00"]},{"name":"Heard Island and McDonald Islands","nativeName":"Heard Island and McDonald Islands","topLevelDomain":[".hm",".aq"],"alpha2Code":"HM","numericCode":"334","alpha3Code":"HMD","currencies":["AUD"],"callingCodes":["672"],"capital":"","altSpellings":["HM"],"relevance":"0","region":"","subregion":"","language":[""],"languages":["en"],"translations":{"de":"Heard und die McDonaldinseln","es":"Islas Heard y McDonald","fr":"\u00celes Heard-et-MacDonald","it":"Isole Heard e McDonald","ja":"\u30cf\u30fc\u30c9\u5cf6\u3068\u30de\u30af\u30c9\u30ca\u30eb\u30c9\u8af8\u5cf6","nl":"Heard- en McDonaldeilanden","hr":"Otok Heard i oto\u010dje McDonald"},"population":0,"latlng":[-53.1,72.51666666],"demonym":"Heard and McDonald Islander","borders":[],"area":412,"timezones":["UTC+05:00"]},{"name":"Holy See","nativeName":"Sancta Sedes","topLevelDomain":[".va"],"alpha2Code":"VA","alpha3Code":"VAT","currencies":["EUR"],"callingCodes":["379"],"capital":"Rome","altSpellings":["Sancta Sedes","Vatican","The Vatican"],"region":"Europe","subregion":"Southern Europe","language":["Latin","Italian","French","German"],"languages":["la","it","fr","de"],"translations":{"de":"Heiliger Stuhl","es":"Santa Sede","fr":"voir Saint","it":"Santa Sede","ja":"\u8056\u5EA7","nl":"Heilige Stoel","hr":"Sveta Stolica"},"population":451,"latlng":[41.90,12.45],"demonym":"","borders":["ITA"],"area":0.44,"gini":null,"timezones":["UTC+01:00"]},{"name":"Honduras","nativeName":"Honduras","topLevelDomain":[".hn"],"alpha2Code":"HN","numericCode":"340","alpha3Code":"HND","currencies":["HNL"],"callingCodes":["504"],"capital":"Tegucigalpa","altSpellings":["HN","Republic of Honduras","Rep\u00fablica de Honduras"],"relevance":"0","region":"Americas","subregion":"Central America","language":["Spanish"],"languages":["es"],"translations":{"de":"Honduras","es":"Honduras","fr":"Honduras","it":"Honduras","ja":"\u30db\u30f3\u30b8\u30e5\u30e9\u30b9","nl":"Honduras","hr":"Honduras"},"population":8725111,"latlng":[15,-86.5],"demonym":"Honduran","borders":["GTM","SLV","NIC"],"area":112492,"gini":57.0,"timezones":["UTC-06:00"]},{"name":"Hong Kong","nativeName":"\u9999\u6e2f","topLevelDomain":[".hk"],"alpha2Code":"HK","numericCode":"344","alpha3Code":"HKG","currencies":["HKD"],"callingCodes":["852"],"capital":"City of Victoria","altSpellings":["HK","\u9999\u6e2f"],"relevance":"0","region":"Asia","subregion":"Eastern Asia","language":["English","Chinese"],"languages":["en","zh"],"translations":{"de":"Hong Kong","es":"Hong Kong","fr":"Hong Kong","it":"Hong Kong","ja":"\u9999\u6e2f","nl":"Hongkong","hr":"Hong Kong"},"population":7298600,"latlng":[22.25,114.16666666],"demonym":"Chinese","borders":["CHN"],"area":1104,"gini":53.3,"timezones":["UTC+08:00"]},{"name":"Hungary","nativeName":"Magyarorsz\u00e1g","topLevelDomain":[".hu"],"alpha2Code":"HU","numericCode":"348","alpha3Code":"HUN","currencies":["HUF"],"callingCodes":["36"],"capital":"Budapest","altSpellings":["HU"],"relevance":"0","region":"Europe","subregion":"Eastern Europe","language":["Hungarian"],"languages":["hu"],"translations":{"de":"Ungarn","es":"Hungr\u00eda","fr":"Hongrie","it":"Ungheria","ja":"\u30cf\u30f3\u30ac\u30ea\u30fc","nl":"Hongarije","hr":"Ma\u0111arska"},"population":9849000,"latlng":[47,20],"demonym":"Hungarian","borders":["AUT","HRV","ROU","SRB","SVK","SVN","UKR"],"area":93028,"gini":31.2,"timezones":["UTC+01:00"]},{"name":"Iceland","nativeName":"\u00cdsland","topLevelDomain":[".is"],"alpha2Code":"IS","numericCode":"352","alpha3Code":"ISL","currencies":["ISK"],"callingCodes":["354"],"capital":"Reykjavík","altSpellings":["IS","Island","Republic of Iceland","L\u00fd\u00f0veldi\u00f0 \u00cdsland"],"relevance":"0","region":"Europe","subregion":"Northern Europe","language":["Icelandic"],"languages":["is"],"translations":{"de":"Island","es":"Islandia","fr":"Islande","it":"Islanda","ja":"\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9","nl":"IJsland","hr":"Island"},"population":330610,"latlng":[65,-18],"demonym":"Icelander","borders":[],"area":103000,"gini":null,"timezones":["UTC"]},{"name":"India","nativeName":"\u092d\u093e\u0930\u0924","topLevelDomain":[".in"],"alpha2Code":"IN","numericCode":"356","alpha3Code":"IND","currencies":["INR"],"callingCodes":["91"],"capital":"New Delhi","altSpellings":["IN","Bh\u0101rat","Republic of India","Bharat Ganrajya"],"relevance":"3","region":"Asia","subregion":"Southern Asia","language":["Hindi","English"],"languages":["hi","en"],"translations":{"de":"Indien","es":"India","fr":"Inde","it":"India","ja":"\u30a4\u30f3\u30c9","nl":"India","hr":"Indija"},"population":1275840000,"latlng":[20,77],"demonym":"Indian","borders":["AFG","BGD","BTN","MMR","CHN","NPL","PAK","LKA"],"area":3287590,"gini":33.4,"timezones":["UTC+05:30"]},{"name":"Indonesia","nativeName":"Indonesia","topLevelDomain":[".id"],"alpha2Code":"ID","numericCode":"360","alpha3Code":"IDN","currencies":["IDR"],"callingCodes":["62"],"capital":"Jakarta","altSpellings":["ID","Republic of Indonesia","Republik Indonesia"],"relevance":"2","region":"Asia","subregion":"South-Eastern Asia","language":["Indonesian"],"languages":["id"],"translations":{"fr":"Indon\u00e9sie","nl":"Indonesi\u00eb","de":"Indonesien","it":"Indonesia","ja":"\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2","es":"Indonesia","hr":"Indonezija"},"population":255461700,"latlng":[-5,120],"demonym":"Indonesian","borders":["TLS","MYS","PNG"],"area":1904569,"gini":34.0,"timezones":["UTC+07:00","UTC+08:00","UTC+09:00"]},{"name":"Ivory Coast","nativeName":"C\u00f4te d'Ivoire","topLevelDomain":[".ci"],"alpha2Code":"CI","numericCode":"384","alpha3Code":"CIV","currencies":["XOF"],"callingCodes":["225"],"capital":"Yamoussoukro","altSpellings":["CI","Ivory Coast","Republic of C\u00f4te d'Ivoire","R\u00e9publique de C\u00f4te d'Ivoire"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["French"],"languages":["fr"],"translations":{"de":"Elfenbeink\u00fcste","es":"Costa de Marfil","fr":"C\u00f4te d'Ivoire","it":"Costa D'Avorio","ja":"\u30b3\u30fc\u30c8\u30b8\u30dc\u30ef\u30fc\u30eb","nl":"Ivoorkust","hr":"Obala Bjelokosti"},"population":22671331,"latlng":[8,-5],"demonym":"Ivorian","borders":["BFA","GHA","GIN","LBR","MLI"],"area":322463,"gini":41.5,"timezones":["UTC"]},{"name":"Iran","nativeName":"\u0627\u06CC\u0631\u0627\u0646","topLevelDomain":[".ir"],"alpha2Code":"IR","numericCode":"364","alpha3Code":"IRN","currencies":["IRR"],"callingCodes":["98"],"capital":"Tehran","altSpellings":["IR","Islamic Republic of Iran","Jomhuri-ye Esl\u0101mi-ye Ir\u0101n"],"relevance":"0","region":"Asia","subregion":"Southern Asia","language":["Persian"],"languages":["fa"],"translations":{"de":"Iran","es":"Iran","fr":"Iran","ja":"\u30a4\u30e9\u30f3\u30fb\u30a4\u30b9\u30e9\u30e0\u5171\u548c\u56fd","nl":"Iran","hr":"Iran"},"population":78572500,"latlng":[32,53],"demonym":"Iranian","borders":["AFG","ARM","AZE","IRQ","PAK","TUR","TKM"],"area":1648195,"gini":38.3,"timezones":["UTC+03:30"]},{"name":"Iraq","nativeName":"\u0627\u0644\u0639\u0631\u0627\u0642","topLevelDomain":[".iq"],"alpha2Code":"IQ","numericCode":"368","alpha3Code":"IRQ","currencies":["IQD"],"callingCodes":["964"],"capital":"Baghdad","altSpellings":["IQ","Republic of Iraq","Jumh\u016briyyat al-\u2018Ir\u0101q"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic","Kurdish","Syriac"],"languages":["ar","ku"],"translations":{"de":"Irak","es":"Irak","fr":"Irak","it":"Iraq","ja":"\u30a4\u30e9\u30af","nl":"Irak","hr":"Irak"},"population":36004552,"latlng":[33,44],"demonym":"Iraqi","borders":["IRN","JOR","KWT","SAU","SYR","TUR"],"area":438317,"gini":30.9,"timezones":["UTC+03:00"]},{"name":"Republic of Ireland","nativeName":"\u00c9ire","topLevelDomain":[".ie"],"alpha2Code":"IE","numericCode":"372","alpha3Code":"IRL","currencies":["EUR"],"callingCodes":["353"],"capital":"Dublin","altSpellings":["IE","\u00c9ire","Republic of Ireland","Poblacht na h\u00c9ireann"],"relevance":"1.2","region":"Europe","subregion":"Northern Europe","language":["Irish","English"],"languages":["ga","en"],"translations":{"de":"Irland","es":"Irlanda","fr":"Irlande","it":"Irlanda","ja":"\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9","nl":"Ierland","hr":"Irska"},"population":6378000,"latlng":[53,-8],"demonym":"Irish","borders":["GBR"],"area":70273,"gini":34.3,"timezones":["UTC"]},{"name":"Isle of Man","nativeName":"Isle of Man","topLevelDomain":[".im"],"alpha2Code":"IM","numericCode":"833","alpha3Code":"IMN","currencies":["GBP"],"callingCodes":["44"],"capital":"Douglas","altSpellings":["IM","Ellan Vannin","Mann","Mannin"],"relevance":"0.5","region":"Europe","subregion":"Northern Europe","language":["English","Manx"],"languages":["en","gv"],"translations":{"de":"Insel Man","es":"Isla de Man","fr":"\u00cele de Man","it":"Isola di Man","ja":"\u30de\u30f3\u5cf6","nl":"Isle of Man","hr":"Otok Man"},"population":84497,"latlng":[54.25,-4.5],"demonym":"Manx","borders":[],"area":572,"timezones":["UTC+00:00"]},{"name":"Israel","nativeName":"\u05d9\u05b4\u05e9\u05b0\u05c2\u05e8\u05b8\u05d0\u05b5\u05dc","topLevelDomain":[".il"],"alpha2Code":"IL","numericCode":"376","alpha3Code":"ISR","currencies":["ILS"],"callingCodes":["972"],"capital":"Jerusalem","altSpellings":["IL","State of Israel","Med\u012bnat Yisr\u0101'el"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Hebrew","Arabic"],"languages":["he","ar"],"translations":{"de":"Israel","es":"Israel","fr":"Isra\u00ebl","it":"Israele","ja":"\u30a4\u30b9\u30e9\u30a8\u30eb","nl":"Isra\u00ebl","hr":"Izrael"},"population":8371600,"latlng":[31.5,34.75],"demonym":"Israeli","borders":["EGY","JOR","LBN","SYR"],"area":20770,"gini":39.2,"timezones":["UTC+02:00"]},{"name":"Italy","nativeName":"Italia","topLevelDomain":[".it"],"alpha2Code":"IT","numericCode":"380","alpha3Code":"ITA","currencies":["EUR"],"callingCodes":["39"],"capital":"Rome","altSpellings":["IT","Italian Republic","Repubblica italiana"],"relevance":"2","region":"Europe","subregion":"Southern Europe","language":["Italian"],"languages":["it"],"translations":{"de":"Italien","es":"Italia","fr":"Italie","it":"Italia","ja":"\u30a4\u30bf\u30ea\u30a2","nl":"Itali\u00eb","hr":"Italija"},"population":60753794,"latlng":[42.83333333,12.83333333],"demonym":"Italian","borders":["AUT","FRA","SMR","SVN","CHE","VAT"],"area":301336,"gini":36.0,"timezones":["UTC+01:00"]},{"name":"Jamaica","nativeName":"Jamaica","topLevelDomain":[".jm"],"alpha2Code":"JM","numericCode":"388","alpha3Code":"JAM","currencies":["JMD"],"callingCodes":["1"],"capital":"Kingston","altSpellings":["JM"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["Jamaican English"],"languages":["en"],"translations":{"de":"Jamaika","es":"Jamaica","fr":"Jama\u00efque","it":"Giamaica","ja":"\u30b8\u30e3\u30de\u30a4\u30ab","nl":"Jamaica","hr":"Jamajka"},"population":2717991,"latlng":[18.25,-77.5],"demonym":"Jamaican","borders":[],"area":10991,"gini":45.5,"timezones":["UTC-05:00"]},{"name":"Japan","nativeName":"\u65e5\u672c","topLevelDomain":[".jp"],"alpha2Code":"JP","numericCode":"392","alpha3Code":"JPN","currencies":["JPY"],"callingCodes":["81"],"capital":"Tokyo","altSpellings":["JP","Nippon","Nihon"],"relevance":"2.5","region":"Asia","subregion":"Eastern Asia","language":["Japanese"],"languages":["ja"],"translations":{"de":"Japan","es":"Jap\u00f3n","fr":"Japon","it":"Giappone","ja":"\u65e5\u672c","nl":"Japan","hr":"Japan"},"population":126865000,"latlng":[36,138],"demonym":"Japanese","borders":[],"area":377930,"gini":38.1,"timezones":["UTC+09:00"]},{"name":"Jersey","nativeName":"Jersey","topLevelDomain":[".je"],"alpha2Code":"JE","numericCode":"832","alpha3Code":"JEY","currencies":["GBP"],"callingCodes":["44"],"capital":"Saint Helier","altSpellings":["JE","Bailiwick of Jersey","Bailliage de Jersey","Bailliage d\u00e9 J\u00e8rri"],"relevance":"0.5","region":"Europe","subregion":"Northern Europe","language":["English","French"],"languages":["en","fr"],"translations":{"de":"Jersey","es":"Jersey","fr":"Jersey","it":"Isola di Jersey","ja":"\u30b8\u30e3\u30fc\u30b8\u30fc","nl":"Jersey","hr":"Jersey"},"population":99000,"latlng":[49.25,-2.16666666],"demonym":"Channel Islander","borders":[],"area":116,"timezones":["UTC+01:00"]},{"name":"Jordan","nativeName":"\u0627\u0644\u0623\u0631\u062f\u0646","topLevelDomain":[".jo"],"alpha2Code":"JO","numericCode":"400","alpha3Code":"JOR","currencies":["JOD"],"callingCodes":["962"],"capital":"Amman","altSpellings":["JO","Hashemite Kingdom of Jordan","al-Mamlakah al-Urdun\u012byah al-H\u0101shim\u012byah"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic"],"languages":["ar"],"translations":{"de":"Jordanien","es":"Jordania","fr":"Jordanie","it":"Giordania","ja":"\u30e8\u30eb\u30c0\u30f3","nl":"Jordani\u00eb","hr":"Jordan"},"population":6767600,"latlng":[31,36],"demonym":"Jordanian","borders":["IRQ","ISR","SAU","SYR"],"area":89342,"gini":35.4,"timezones":["UTC+03:00"]},{"name":"Kazakhstan","nativeName":"\u049a\u0430\u0437\u0430\u049b\u0441\u0442\u0430\u043d","topLevelDomain":[".kz",".\u049b\u0430\u0437"],"alpha2Code":"KZ","numericCode":"398","alpha3Code":"KAZ","currencies":["KZT"],"callingCodes":["76","77"],"capital":"Astana","altSpellings":["KZ","Qazaqstan","\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d","Republic of Kazakhstan","\u049a\u0430\u0437\u0430\u049b\u0441\u0442\u0430\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0441\u044b","Qazaqstan Respubl\u00efkas\u0131","\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d","Respublika Kazakhstan"],"relevance":"0","region":"Asia","subregion":"Central Asia","language":["Kazakh","Russian"],"languages":["kk","ru"],"translations":{"de":"Kasachstan","es":"Kazajist\u00e1n","fr":"Kazakhstan","it":"Kazakistan","ja":"\u30ab\u30b6\u30d5\u30b9\u30bf\u30f3","nl":"Kazachstan","hr":"Kazahstan"},"population":17541200,"latlng":[48,68],"demonym":"Kazakhstani","borders":["CHN","KGZ","RUS","TKM","UZB"],"area":2724900,"gini":29.0,"timezones":["UTC+05:00","UTC+06:00"]},{"name":"Kenya","nativeName":"Kenya","topLevelDomain":[".ke"],"alpha2Code":"KE","numericCode":"404","alpha3Code":"KEN","currencies":["KES"],"callingCodes":["254"],"capital":"Nairobi","altSpellings":["KE","Republic of Kenya","Jamhuri ya Kenya"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Swahili","English"],"languages":["en","sw"],"translations":{"de":"Kenia","es":"Kenia","fr":"Kenya","it":"Kenya","ja":"\u30b1\u30cb\u30a2","nl":"Kenia","hr":"Kenija"},"population":46050000,"latlng":[1,38],"demonym":"Kenyan","borders":["ETH","SOM","SSD","TZA","UGA"],"area":580367,"gini":47.7,"timezones":["UTC+03:00"]},{"name":"Kiribati","nativeName":"Kiribati","topLevelDomain":[".ki"],"alpha2Code":"KI","numericCode":"296","alpha3Code":"KIR","currencies":["AUD"],"callingCodes":["686"],"capital":"South Tarawa","altSpellings":["KI","Republic of Kiribati","Ribaberiki Kiribati"],"relevance":"0","region":"Oceania","subregion":"Micronesia","language":["English","Gilbertese"],"languages":["en"],"translations":{"de":"Kiribati","es":"Kiribati","fr":"Kiribati","it":"Kiribati","ja":"\u30ad\u30ea\u30d0\u30b9","nl":"Kiribati","hr":"Kiribati"},"population":106461,"latlng":[1.41666666,173],"demonym":"I-Kiribati","borders":[],"area":811,"timezones":["UTC+12:00","UTC+13:00","UTC+14:00"]},{"name":"Kuwait","nativeName":"\u0627\u0644\u0643\u0648\u064a\u062a","topLevelDomain":[".kw"],"alpha2Code":"KW","numericCode":"414","alpha3Code":"KWT","currencies":["KWD"],"callingCodes":["965"],"capital":"Kuwait City","altSpellings":["KW","State of Kuwait","Dawlat al-Kuwait"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic"],"languages":["ar"],"translations":{"de":"Kuwait","es":"Kuwait","fr":"Kowe\u00eft","it":"Kuwait","ja":"\u30af\u30a6\u30a7\u30fc\u30c8","nl":"Koeweit","hr":"Kuvajt"},"population":3268431,"latlng":[29.5,45.75],"demonym":"Kuwaiti","borders":["IRN","SAU"],"area":17818,"gini":null,"timezones":["UTC+03:00"]},{"name":"Kyrgyzstan","nativeName":"\u041a\u044b\u0440\u0433\u044b\u0437\u0441\u0442\u0430\u043d","topLevelDomain":[".kg"],"alpha2Code":"KG","numericCode":"417","alpha3Code":"KGZ","currencies":["KGS"],"callingCodes":["996"],"capital":"Bishkek","altSpellings":["KG","\u041a\u0438\u0440\u0433\u0438\u0437\u0438\u044f","Kyrgyz Republic","\u041a\u044b\u0440\u0433\u044b\u0437 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0441\u044b","Kyrgyz Respublikasy"],"relevance":"0","region":"Asia","subregion":"Central Asia","language":["Kyrgyz","Russian"],"languages":["ky","ru"],"translations":{"de":"Kirgisistan","es":"Kirguizist\u00e1n","fr":"Kirghizistan","it":"Kirghizistan","ja":"\u30ad\u30eb\u30ae\u30b9","nl":"Kirgizi\u00eb","hr":"Kirgistan"},"population":5944400,"latlng":[41,75],"demonym":"Kirghiz","borders":["CHN","KAZ","TJK","UZB"],"area":199951,"gini":36.2,"timezones":["UTC+06:00"]},{"name":"Laos","nativeName":"\u0eaa\u0e9b\u0e9b\u0ea5\u0eb2\u0ea7","topLevelDomain":[".la"],"alpha2Code":"LA","numericCode":"418","alpha3Code":"LAO","currencies":["LAK"],"callingCodes":["856"],"capital":"Vientiane","altSpellings":["LA","Lao","Lao People's Democratic Republic","Sathalanalat Paxathipatai Paxaxon Lao"],"relevance":"0","region":"Asia","subregion":"South-Eastern Asia","language":["Lao"],"languages":["lo"],"translations":{"fr":"Laos","nl":"Laos","de":"Laos","it":"Laos","ja":"\u30e9\u30aa\u30b9\u4eba\u6c11\u6c11\u4e3b\u5171\u548c\u56fd","es":"Laos","hr":"Laos"},"population":6802000,"latlng":[18,105],"demonym":"Laotian","borders":["MMR","KHM","CHN","THA","VNM"],"area":236800,"gini":36.7,"timezones":["UTC+07:00"]},{"name":"Latvia","nativeName":"Latvija","topLevelDomain":[".lv"],"alpha2Code":"LV","numericCode":"428","alpha3Code":"LVA","currencies":["EUR"],"callingCodes":["371"],"capital":"Riga","altSpellings":["LV","Republic of Latvia","Latvijas Republika"],"relevance":"0","region":"Europe","subregion":"Northern Europe","language":["Latvian"],"languages":["lv"],"translations":{"de":"Lettland","es":"Letonia","fr":"Lettonie","it":"Lettonia","ja":"\u30e9\u30c8\u30d3\u30a2","nl":"Letland","hr":"Latvija"},"population":1980700,"latlng":[57,25],"demonym":"Latvian","borders":["BLR","EST","LTU","RUS"],"area":64559,"gini":36.6,"timezones":["UTC+02:00"]},{"name":"Lebanon","nativeName":"\u0644\u0628\u0646\u0627\u0646","topLevelDomain":[".lb"],"alpha2Code":"LB","numericCode":"422","alpha3Code":"LBN","currencies":["LBP"],"callingCodes":["961"],"capital":"Beirut","altSpellings":["LB","Lebanese Republic","Al-Jumh\u016br\u012byah Al-Libn\u0101n\u012byah"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic","French"],"languages":["ar","fr"],"translations":{"de":"Libanon","es":"L\u00edbano","fr":"Liban","it":"Libano","ja":"\u30ec\u30d0\u30ce\u30f3","nl":"Libanon","hr":"Libanon"},"population":4104000,"latlng":[33.83333333,35.83333333],"demonym":"Lebanese","borders":["ISR","SYR"],"area":10452,"gini":null,"timezones":["UTC+02:00"]},{"name":"Lesotho","nativeName":"Lesotho","topLevelDomain":[".ls"],"alpha2Code":"LS","numericCode":"426","alpha3Code":"LSO","currencies":["LSL","ZAR"],"callingCodes":["266"],"capital":"Maseru","altSpellings":["LS","Kingdom of Lesotho","Muso oa Lesotho"],"relevance":"0","region":"Africa","subregion":"Southern Africa","language":["Sesotho","English"],"languages":["en","st"],"translations":{"de":"Lesotho","es":"Lesotho","fr":"Lesotho","it":"Lesotho","ja":"\u30ec\u30bd\u30c8","nl":"Lesotho","hr":"Lesoto"},"population":2135000,"latlng":[-29.5,28.5],"demonym":"Mosotho","borders":["ZAF"],"area":30355,"gini":52.5,"timezones":["UTC+02:00"]},{"name":"Liberia","nativeName":"Liberia","topLevelDomain":[".lr"],"alpha2Code":"LR","numericCode":"430","alpha3Code":"LBR","currencies":["LRD"],"callingCodes":["231"],"capital":"Monrovia","altSpellings":["LR","Republic of Liberia"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["English"],"languages":["en"],"translations":{"de":"Liberia","es":"Liberia","fr":"Liberia","it":"Liberia","ja":"\u30ea\u30d9\u30ea\u30a2","nl":"Liberia","hr":"Liberija"},"population":4503000,"latlng":[6.5,-9.5],"demonym":"Liberian","borders":["GIN","CIV","SLE"],"area":111369,"gini":38.2,"timezones":["UTC"]},{"name":"Libya","nativeName":"\u200f\u0644\u064a\u0628\u064a\u0627","topLevelDomain":[".ly"],"alpha2Code":"LY","numericCode":"434","alpha3Code":"LBY","currencies":["LYD"],"callingCodes":["218"],"capital":"Tripoli","altSpellings":["LY","State of Libya","Dawlat Libya"],"relevance":"0","region":"Africa","subregion":"Northern Africa","language":["Arabic"],"languages":["ar"],"translations":{"de":"Libyen","es":"Libia","fr":"Libye","it":"Libia","ja":"\u30ea\u30d3\u30a2","nl":"Libi\u00eb","hr":"Libija"},"population":6278000,"latlng":[25,17],"demonym":"Libyan","borders":["DZA","TCD","EGY","NER","SDN","TUN"],"area":1759540,"gini":null,"timezones":["UTC+01:00"]},{"name":"Liechtenstein","nativeName":"Liechtenstein","topLevelDomain":[".li"],"alpha2Code":"LI","numericCode":"438","alpha3Code":"LIE","currencies":["CHF"],"callingCodes":["423"],"capital":"Vaduz","altSpellings":["LI","Principality of Liechtenstein","F\u00fcrstentum Liechtenstein"],"relevance":"0","region":"Europe","subregion":"Western Europe","language":["German"],"languages":["de"],"translations":{"de":"Liechtenstein","es":"Liechtenstein","fr":"Liechtenstein","it":"Liechtenstein","ja":"\u30ea\u30d2\u30c6\u30f3\u30b7\u30e5\u30bf\u30a4\u30f3","nl":"Liechtenstein","hr":"Lihten\u0161tajn"},"population":37370,"latlng":[47.26666666,9.53333333],"demonym":"Liechtensteiner","borders":["AUT","CHE"],"area":160,"timezones":["UTC+01:00"]},{"name":"Lithuania","nativeName":"Lietuva","topLevelDomain":[".lt"],"alpha2Code":"LT","numericCode":"440","alpha3Code":"LTU","currencies":["EUR"],"callingCodes":["370"],"capital":"Vilnius","altSpellings":["LT","Republic of Lithuania","Lietuvos Respublika"],"relevance":"0","region":"Europe","subregion":"Northern Europe","language":["Lithuanian"],"languages":["lt"],"translations":{"de":"Litauen","es":"Lituania","fr":"Lituanie","it":"Lituania","ja":"\u30ea\u30c8\u30a2\u30cb\u30a2","nl":"Litouwen","hr":"Litva"},"population":2900787,"latlng":[56,24],"demonym":"Lithuanian","borders":["BLR","LVA","POL","RUS"],"area":65300,"gini":37.6,"timezones":["UTC+02:00"]},{"name":"Luxembourg","nativeName":"Luxembourg","topLevelDomain":[".lu"],"alpha2Code":"LU","numericCode":"442","alpha3Code":"LUX","currencies":["EUR"],"callingCodes":["352"],"capital":"Luxembourg","altSpellings":["LU","Grand Duchy of Luxembourg","Grand-Duch\u00e9 de Luxembourg","Gro\u00dfherzogtum Luxemburg","Groussherzogtum L\u00ebtzebuerg"],"relevance":"0","region":"Europe","subregion":"Western Europe","language":["French","German","Luxembourgish"],"languages":["fr","de","lb"],"translations":{"de":"Luxemburg","es":"Luxemburgo","fr":"Luxembourg","it":"Lussemburgo","ja":"\u30eb\u30af\u30bb\u30f3\u30d6\u30eb\u30af","nl":"Luxemburg","hr":"Luksemburg"},"population":562958,"latlng":[49.75,6.16666666],"demonym":"Luxembourger","borders":["BEL","FRA","DEU"],"area":2586,"gini":30.8,"timezones":["UTC+01:00"]},{"name":"Macau","nativeName":"\u6fb3\u9580","topLevelDomain":[".mo"],"alpha2Code":"MO","numericCode":"446","alpha3Code":"MAC","currencies":["MOP"],"callingCodes":["853"],"capital":"","altSpellings":["MO","\u6fb3\u95e8","Macao Special Administrative Region of the People's Republic of China","\u4e2d\u83ef\u4eba\u6c11\u5171\u548c\u570b\u6fb3\u9580\u7279\u5225\u884c\u653f\u5340","Regi\u00e3o Administrativa Especial de Macau da Rep\u00fablica Popular da China"],"relevance":"0","region":"Asia","subregion":"Eastern Asia","language":["Traditional Chinese","Portuguese"],"languages":["zh","pt"],"translations":{"de":"Macao","es":"Macao","fr":"Macao","it":"Macao","ja":"\u30de\u30ab\u30aa","nl":"Macao","hr":"Makao"},"population":642900,"latlng":[22.16666666,113.55],"demonym":"Chinese","borders":["CHN"],"area":30,"timezones":["UTC+08:00"]},{"name":"Republic of Macedonia","nativeName":"\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0438\u0458\u0430","topLevelDomain":[".mk"],"alpha2Code":"MK","numericCode":"807","alpha3Code":"MKD","currencies":["MKD"],"callingCodes":["389"],"capital":"Skopje","altSpellings":["MK","Republic of Macedonia","\u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0438\u0458\u0430"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Macedonian"],"languages":["mk"],"translations":{"de":"Mazedonien","es":"Macedonia","fr":"Mac\u00e9doine","it":"Macedonia","ja":"\u30de\u30b1\u30c9\u30cb\u30a2\u65e7\u30e6\u30fc\u30b4\u30b9\u30e9\u30d3\u30a2\u5171\u548c\u56fd","nl":"Macedoni\u00eb","hr":"Makedonija"},"population":2058539,"latlng":[41.83333333,22],"demonym":"Macedonian","borders":["ALB","BGR","GRC","KOS","SRB"],"area":25713,"gini":43.2,"timezones":["UTC+01:00"]},{"name":"Madagascar","nativeName":"Madagasikara","topLevelDomain":[".mg"],"alpha2Code":"MG","numericCode":"450","alpha3Code":"MDG","currencies":["MGA"],"callingCodes":["261"],"capital":"Antananarivo","altSpellings":["MG","Republic of Madagascar","Repoblikan'i Madagasikara","R\u00e9publique de Madagascar"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Malagasy","French"],"languages":["fr","mg"],"translations":{"de":"Madagaskar","es":"Madagascar","fr":"Madagascar","it":"Madagascar","ja":"\u30de\u30c0\u30ac\u30b9\u30ab\u30eb","nl":"Madagaskar","hr":"Madagaskar"},"population":22434363,"latlng":[-20,47],"demonym":"Malagasy","borders":[],"area":587041,"gini":44.1,"timezones":["UTC+03:00"]},{"name":"Malawi","nativeName":"Malawi","topLevelDomain":[".mw"],"alpha2Code":"MW","numericCode":"454","alpha3Code":"MWI","currencies":["MWK"],"callingCodes":["265"],"capital":"Lilongwe","altSpellings":["MW","Republic of Malawi"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Chichewa","English"],"languages":["en","ny"],"translations":{"de":"Malawi","es":"Malawi","fr":"Malawi","it":"Malawi","ja":"\u30de\u30e9\u30a6\u30a4","nl":"Malawi","hr":"Malavi"},"population":16310431,"latlng":[-13.5,34],"demonym":"Malawian","borders":["MOZ","TZA","ZMB"],"area":118484,"gini":39.0,"timezones":["UTC+02:00"]},{"name":"Malaysia","nativeName":"Malaysia","topLevelDomain":[".my"],"alpha2Code":"MY","numericCode":"458","alpha3Code":"MYS","currencies":["MYR"],"callingCodes":["60"],"capital":"Kuala Lumpur","altSpellings":["MY"],"relevance":"0","region":"Asia","subregion":"South-Eastern Asia","language":["Malaysian"],"languages":["ms"],"translations":{"fr":"Malaisie","nl":"Maleisi\u00eb","de":"Malaysia","it":"Malesia","ja":"\u30de\u30ec\u30fc\u30b7\u30a2","es":"Malasia","hr":"Malezija"},"population":30678800,"latlng":[2.5,112.5],"demonym":"Malaysian","borders":["BRN","IDN","THA"],"area":330803,"gini":46.2,"timezones":["UTC+08:00"]},{"name":"Maldives","nativeName":"Maldives","topLevelDomain":[".mv"],"alpha2Code":"MV","numericCode":"462","alpha3Code":"MDV","currencies":["MVR"],"callingCodes":["960"],"capital":"Mal\u00e9","altSpellings":["MV","Maldive Islands","Republic of the Maldives","Dhivehi Raajjeyge Jumhooriyya"],"relevance":"0","region":"Asia","subregion":"Southern Asia","language":["Maldivian"],"languages":["dv"],"translations":{"de":"Malediven","es":"Maldivas","fr":"Maldives","it":"Maldive","ja":"\u30e2\u30eb\u30c7\u30a3\u30d6","nl":"Maldiven","hr":"Maldivi"},"population":341256,"latlng":[3.25,73],"demonym":"Maldivan","borders":[],"area":300,"gini":37.4,"timezones":["UTC+05:00"]},{"name":"Mali","nativeName":"Mali","topLevelDomain":[".ml"],"alpha2Code":"ML","numericCode":"466","alpha3Code":"MLI","currencies":["XOF"],"callingCodes":["223"],"capital":"Bamako","altSpellings":["ML","Republic of Mali","R\u00e9publique du Mali"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["French"],"languages":["fr"],"translations":{"de":"Mali","es":"Mali","fr":"Mali","it":"Mali","ja":"\u30de\u30ea","nl":"Mali","hr":"Mali"},"population":17600000,"latlng":[17,-4],"demonym":"Malian","borders":["DZA","BFA","GIN","CIV","MRT","NER","SEN"],"area":1240192,"gini":33.0,"timezones":["UTC"]},{"name":"Malta","nativeName":"Malta","topLevelDomain":[".mt"],"alpha2Code":"MT","numericCode":"470","alpha3Code":"MLT","currencies":["EUR"],"callingCodes":["356"],"capital":"Valletta","altSpellings":["MT","Republic of Malta","Repubblika ta' Malta"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Maltese","English"],"languages":["mt","en"],"translations":{"de":"Malta","es":"Malta","fr":"Malte","it":"Malta","ja":"\u30de\u30eb\u30bf","nl":"Malta","hr":"Malta"},"population":445426,"latlng":[35.83333333,14.58333333],"demonym":"Maltese","borders":[],"area":316,"gini":null,"timezones":["UTC+01:00"]},{"name":"Marshall Islands","nativeName":"M\u0327aje\u013c","topLevelDomain":[".mh"],"alpha2Code":"MH","numericCode":"584","alpha3Code":"MHL","currencies":["USD"],"callingCodes":["692"],"capital":"Majuro","altSpellings":["MH","Republic of the Marshall Islands","Aolep\u0101n Aor\u014dkin M\u0327aje\u013c"],"relevance":"0.5","region":"Oceania","subregion":"Micronesia","language":["Marshallese","English"],"languages":["en","mh"],"translations":{"de":"Marshallinseln","es":"Islas Marshall","fr":"\u00celes Marshall","it":"Isole Marshall","ja":"\u30de\u30fc\u30b7\u30e3\u30eb\u8af8\u5cf6","nl":"Marshalleilanden","hr":"Mar\u0161alovi Otoci"},"population":56086,"latlng":[9,168],"demonym":"Marshallese","borders":[],"area":181,"timezones":["UTC+12:00"]},{"name":"Martinique","nativeName":"Martinique","topLevelDomain":[".mq"],"alpha2Code":"MQ","numericCode":"474","alpha3Code":"MTQ","currencies":["EUR"],"callingCodes":["596"],"capital":"Fort-de-France","altSpellings":["MQ"],"relevance":"0","region":"Americas","subregion":"Caribbean","language":["French"],"languages":["fr"],"translations":{"de":"Martinique","es":"Martinica","fr":"Martinique","it":"Martinica","ja":"\u30de\u30eb\u30c6\u30a3\u30cb\u30fc\u30af","nl":"Martinique","hr":"Martinique"},"population":381326,"latlng":[14.666667,-61],"demonym":"French","borders":[],"timezones":["UTC-04:00"]},{"name":"Mauritania","nativeName":"\u0645\u0648\u0631\u064a\u062a\u0627\u0646\u064a\u0627","topLevelDomain":[".mr"],"alpha2Code":"MR","numericCode":"478","alpha3Code":"MRT","currencies":["MRO"],"callingCodes":["222"],"capital":"Nouakchott","altSpellings":["MR","Islamic Republic of Mauritania","al-Jumh\u016briyyah al-\u02beIsl\u0101miyyah al-M\u016br\u012bt\u0101niyyah"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["Arabic"],"languages":["ar"],"translations":{"de":"Mauretanien","es":"Mauritania","fr":"Mauritanie","it":"Mauritania","ja":"\u30e2\u30fc\u30ea\u30bf\u30cb\u30a2","nl":"Mauritani\u00eb","hr":"Mauritanija"},"population":3631775,"latlng":[20,-12],"demonym":"Mauritanian","borders":["DZA","MLI","SEN","ESH"],"area":1030700,"gini":40.5,"timezones":["UTC"]},{"name":"Mauritius","nativeName":"Maurice","topLevelDomain":[".mu"],"alpha2Code":"MU","numericCode":"480","alpha3Code":"MUS","currencies":["MUR"],"callingCodes":["230"],"capital":"Port Louis","altSpellings":["MU","Republic of Mauritius","R\u00e9publique de Maurice"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["French"],"languages":["en"],"translations":{"de":"Mauritius","es":"Mauricio","fr":"\u00cele Maurice","it":"Mauritius","ja":"\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9","nl":"Mauritius","hr":"Mauricijus"},"population":1261208,"latlng":[-20.28333333,57.55],"demonym":"Mauritian","borders":[],"area":2040,"gini":null,"timezones":["UTC+04:00"]},{"name":"Mayotte","nativeName":"Mayotte","topLevelDomain":[".yt"],"alpha2Code":"YT","numericCode":"175","alpha3Code":"MYT","currencies":["EUR"],"callingCodes":["262"],"capital":"Mamoudzou","altSpellings":["YT","Department of Mayotte","D\u00e9partement de Mayotte"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["French"],"languages":["fr"],"translations":{"de":"Mayotte","es":"Mayotte","fr":"Mayotte","it":"Mayotte","ja":"\u30de\u30e8\u30c3\u30c8","nl":"Mayotte","hr":"Mayotte"},"population":212645,"latlng":[-12.83333333,45.16666666],"demonym":"French","borders":[],"timezones":["UTC+03:00"]},{"name":"Mexico","nativeName":"M\u00e9xico","topLevelDomain":[".mx"],"alpha2Code":"MX","numericCode":"484","alpha3Code":"MEX","currencies":["MXN"],"callingCodes":["52"],"capital":"Mexico City","altSpellings":["MX","Mexicanos","United Mexican States","Estados Unidos Mexicanos"],"relevance":"1.5","region":"Americas","subregion":"Central America","language":["Spanish"],"languages":["es"],"translations":{"de":"Mexiko","es":"M\u00e9xico","fr":"Mexique","it":"Messico","ja":"\u30e1\u30ad\u30b7\u30b3","nl":"Mexico","hr":"Meksiko"},"population":121740000,"latlng":[23,-102],"demonym":"Mexican","borders":["BLZ","GTM","USA"],"area":1964375,"gini":47.0,"timezones":["UTC-08:00","UTC-07:00","UTC-06:00"]},{"name":"Federated States of Micronesia","nativeName":"Micronesia","topLevelDomain":[".fm"],"alpha2Code":"FM","numericCode":"583","alpha3Code":"FSM","currencies":["USD"],"callingCodes":["691"],"capital":"Palikir","altSpellings":["FM","Federated States of Micronesia"],"relevance":"0","region":"Oceania","subregion":"Micronesia","language":["English"],"languages":["en"],"translations":{"de":"Mikronesien","es":"Micronesia","fr":"Micron\u00e9sie","it":"Micronesia","ja":"\u30df\u30af\u30ed\u30cd\u30b7\u30a2\u9023\u90a6","nl":"Micronesi\u00eb","hr":"Mikronezija"},"population":101351,"latlng":[6.91666666,158.25],"demonym":"Micronesian","borders":[],"area":702,"timezones":["UTC+10:00","UTC+11"]},{"name":"Moldova","nativeName":"Moldova","topLevelDomain":[".md"],"alpha2Code":"MD","numericCode":"498","alpha3Code":"MDA","currencies":["MDL"],"callingCodes":["373"],"capital":"Chi\u0219in\u0103u","altSpellings":["MD","Republic of Moldova","Republica Moldova"],"relevance":"0","region":"Europe","subregion":"Eastern Europe","language":["Moldovan"],"languages":["ro"],"translations":{"de":"Moldawie","es":"Moldavia","fr":"Moldavie","it":"Moldavia","ja":"\u30e2\u30eb\u30c9\u30d0\u5171\u548c\u56fd","nl":"Moldavi\u00eb","hr":"Moldova"},"population":3555200,"latlng":[47,29],"demonym":"Moldovan","borders":["ROU","UKR"],"area":33846,"gini":33.0,"timezones":["UTC+02:00"]},{"name":"Monaco","nativeName":"Monaco","topLevelDomain":[".mc"],"alpha2Code":"MC","numericCode":"492","alpha3Code":"MCO","currencies":["EUR"],"callingCodes":["377"],"capital":"Monaco","altSpellings":["MC","Principality of Monaco","Principaut\u00e9 de Monaco"],"relevance":"0","region":"Europe","subregion":"Western Europe","language":["French"],"languages":["fr"],"translations":{"de":"Monaco","es":"M\u00f3naco","fr":"Monaco","it":"Principato di Monaco","ja":"\u30e2\u30ca\u30b3","nl":"Monaco","hr":"Monako"},"population":37800,"latlng":[43.73333333,7.4],"demonym":"Monegasque","borders":["FRA"],"area":2.02,"timezones":["UTC+01:00"]},{"name":"Mongolia","nativeName":"\u041c\u043e\u043d\u0433\u043e\u043b \u0443\u043b\u0441","topLevelDomain":[".mn"],"alpha2Code":"MN","numericCode":"496","alpha3Code":"MNG","currencies":["MNT"],"callingCodes":["976"],"capital":"Ulan Bator","altSpellings":["MN"],"relevance":"0","region":"Asia","subregion":"Eastern Asia","language":["Mongolian"],"languages":["mn"],"translations":{"de":"Mongolei","es":"Mongolia","fr":"Mongolie","it":"Mongolia","ja":"\u30e2\u30f3\u30b4\u30eb","nl":"Mongoli\u00eb","hr":"Mongolija"},"population":3031099,"latlng":[46,105],"demonym":"Mongolian","borders":["CHN","RUS"],"area":1564110,"gini":36.5,"timezones":["UTC+07:00","UTC+08:00"]},{"name":"Montenegro","nativeName":"\u0426\u0440\u043d\u0430 \u0413\u043e\u0440\u0430","topLevelDomain":[".me"],"alpha2Code":"ME","numericCode":"499","alpha3Code":"MNE","currencies":["EUR"],"callingCodes":["382"],"capital":"Podgorica","altSpellings":["ME","Crna Gora"],"relevance":"0","region":"Europe","subregion":"Southern Europe","language":["Montenegrin"],"languages":["sr","bs","sq","hr"],"translations":{"de":"Montenegro","es":"Montenegro","fr":"Mont\u00e9n\u00e9gro","it":"Montenegro","ja":"\u30e2\u30f3\u30c6\u30cd\u30b0\u30ed","nl":"Montenegro","hr":"Crna Gora"},"population":621207,"latlng":[42.5,19.3],"demonym":"Montenegrin","borders":["ALB","BIH","HRV","KOS","SRB"],"area":13812,"gini":30.0,"timezones":["UTC+01:00"]},{"name":"Montserrat","nativeName":"Montserrat","topLevelDomain":[".ms"],"alpha2Code":"MS","numericCode":"500","alpha3Code":"MSR","currencies":["XCD"],"callingCodes":["1"],"capital":"Plymouth","altSpellings":["MS"],"relevance":"0.5","region":"Americas","subregion":"Caribbean","language":["English"],"languages":["en"],"translations":{"de":"Montserrat","es":"Montserrat","fr":"Montserrat","it":"Montserrat","ja":"\u30e2\u30f3\u30c8\u30bb\u30e9\u30c8","nl":"Montserrat","hr":"Montserrat"},"population":4922,"latlng":[16.75,-62.2],"demonym":"Montserratian","borders":[],"area":102,"timezones":["UTC-04:00"]},{"name":"Morocco","nativeName":"\u0627\u0644\u0645\u063a\u0631\u0628","topLevelDomain":[".ma"],"alpha2Code":"MA","numericCode":"504","alpha3Code":"MAR","currencies":["MAD"],"callingCodes":["212"],"capital":"Rabat","altSpellings":["MA","Kingdom of Morocco","Al-Mamlakah al-Ma\u0121ribiyah"],"relevance":"0","region":"Africa","subregion":"Northern Africa","language":["Arabic","Berber"],"languages":["ar"],"translations":{"de":"Marokko","es":"Marruecos","fr":"Maroc","it":"Marocco","ja":"\u30e2\u30ed\u30c3\u30b3","nl":"Marokko","hr":"Maroko"},"population":33337529,"latlng":[32,-5],"demonym":"Moroccan","borders":["DZA","ESH","ESP"],"area":446550,"gini":40.9,"timezones":["UTC"]},{"name":"Mozambique","nativeName":"Mo\u00e7ambique","topLevelDomain":[".mz"],"alpha2Code":"MZ","numericCode":"508","alpha3Code":"MOZ","currencies":["MZN"],"callingCodes":["258"],"capital":"Maputo","altSpellings":["MZ","Republic of Mozambique","Rep\u00fablica de Mo\u00e7ambique"],"relevance":"0","region":"Africa","subregion":"Eastern Africa","language":["Portuguese"],"languages":["pt"],"translations":{"de":"Mosambik","es":"Mozambique","fr":"Mozambique","it":"Mozambico","ja":"\u30e2\u30b6\u30f3\u30d3\u30fc\u30af","nl":"Mozambique","hr":"Mozambik"},"population":25727911,"latlng":[-18.25,35],"demonym":"Mozambican","borders":["MWI","ZAF","SWZ","TZA","ZMB","ZWE"],"area":801590,"gini":45.7,"timezones":["UTC+02:00"]},{"name":"Myanmar","nativeName":"Myanma","topLevelDomain":[".mm"],"alpha2Code":"MM","numericCode":"104","alpha3Code":"MMR","currencies":["MMK"],"callingCodes":["95"],"capital":"Naypyidaw","altSpellings":["MM","Burma","Republic of the Union of Myanmar","Pyidaunzu Thanm\u0103da My\u0103ma Nainngandaw"],"relevance":"0","region":"Asia","subregion":"South-Eastern Asia","language":["Burmese"],"languages":["my"],"translations":{"fr":"Myanmar","nl":"Myanmar","de":"Myanmar","it":"Birmania","ja":"\u30df\u30e3\u30f3\u30de\u30fc","es":"Myanmar","hr":"Mijanmar"},"population":53897000,"latlng":[22,98],"demonym":"Burmese","borders":["BGD","CHN","IND","LAO","THA"],"gini":null,"timezones":["UTC+06:30"],"area":676578},{"name":"Namibia","nativeName":"Namibia","topLevelDomain":[".na"],"alpha2Code":"NA","numericCode":"516","alpha3Code":"NAM","currencies":["NAD","ZAR"],"callingCodes":["264"],"capital":"Windhoek","altSpellings":["NA","Namibi\u00eb","Republic of Namibia"],"relevance":"0","region":"Africa","subregion":"Southern Africa","language":["English"],"languages":["en","af"],"translations":{"de":"Namibia","es":"Namibia","fr":"Namibie","it":"Namibia","ja":"\u30ca\u30df\u30d3\u30a2","nl":"Namibi\u00eb","hr":"Namibija"},"population":2280700,"latlng":[-22,17],"demonym":"Namibian","borders":["AGO","BWA","ZAF","ZMB"],"area":825615,"gini":63.9,"timezones":["UTC+01:00"]},{"name":"Nauru","nativeName":"Nauru","topLevelDomain":[".nr"],"alpha2Code":"NR","numericCode":"520","alpha3Code":"NRU","currencies":["AUD"],"callingCodes":["674"],"capital":"Yaren","altSpellings":["NR","Naoero","Pleasant Island","Republic of Nauru","Ripublik Naoero"],"relevance":"0.5","region":"Oceania","subregion":"Micronesia","language":["Nauruan","English"],"languages":["en","na"],"translations":{"de":"Nauru","es":"Nauru","fr":"Nauru","it":"Nauru","ja":"\u30ca\u30a6\u30eb","nl":"Nauru","hr":"Nauru"},"population":10084,"latlng":[-0.53333333,166.91666666],"demonym":"Nauruan","borders":[],"area":21,"timezones":["UTC+12:00"]},{"name":"Nepal","nativeName":"\u0928\u0947\u092a\u093e\u0932","topLevelDomain":[".np"],"alpha2Code":"NP","numericCode":"524","alpha3Code":"NPL","currencies":["NPR"],"callingCodes":["977"],"capital":"Kathmandu","altSpellings":["NP","Federal Democratic Republic of Nepal","Lokt\u0101ntrik Ganatantra Nep\u0101l"],"relevance":"0","region":"Asia","subregion":"Southern Asia","language":["Nepali"],"languages":["ne"],"translations":{"de":"N\u00e9pal","es":"Nepal","fr":"N\u00e9pal","it":"Nepal","ja":"\u30cd\u30d1\u30fc\u30eb","nl":"Nepal","hr":"Nepal"},"population":28037904,"latlng":[28,84],"demonym":"Nepalese","borders":["CHN","IND"],"area":147181,"gini":32.8,"timezones":["UTC+05:45"]},{"name":"Netherlands","nativeName":"Nederland","topLevelDomain":[".nl"],"alpha2Code":"NL","numericCode":"528","alpha3Code":"NLD","currencies":["EUR"],"callingCodes":["31"],"capital":"Amsterdam","altSpellings":["NL","Holland","Nederland"],"relevance":"1.5","region":"Europe","subregion":"Western Europe","language":["Dutch"],"languages":["nl"],"translations":{"de":"Niederlande","es":"Pa\u00edses Bajos","fr":"Pays-Bas","it":"Paesi Bassi","ja":"\u30aa\u30e9\u30f3\u30c0","nl":"Nederland","hr":"Nizozemska"},"population":16916000,"latlng":[52.5,5.75],"demonym":"Dutch","borders":["BEL","DEU"],"area":41850,"gini":30.9,"timezones":["UTC-04:00","UTC+01:00"]},{"name":"New Caledonia","nativeName":"Nouvelle-Cal\u00e9donie","topLevelDomain":[".nc"],"alpha2Code":"NC","numericCode":"540","alpha3Code":"NCL","currencies":["XPF"],"callingCodes":["687"],"capital":"Noum\u00e9a","altSpellings":["NC"],"relevance":"0.5","region":"Oceania","subregion":"Melanesia","language":["French"],"languages":["fr"],"translations":{"de":"Neukaledonien","es":"Nueva Caledonia","fr":"Nouvelle-Cal\u00e9donie","it":"Nuova Caledonia","ja":"\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2","nl":"Nieuw-Caledoni\u00eb","hr":"Nova Kaledonija"},"population":268767,"latlng":[-21.5,165.5],"demonym":"New Caledonian","borders":[],"area":18575,"timezones":["UTC+11:00"]},{"name":"New Zealand","nativeName":"New Zealand","topLevelDomain":[".nz"],"alpha2Code":"NZ","numericCode":"554","alpha3Code":"NZL","currencies":["NZD"],"callingCodes":["64"],"capital":"Wellington","altSpellings":["NZ","Aotearoa"],"relevance":"1.0","region":"Oceania","subregion":"Australia and New Zealand","language":["English","M\u0101ori","New Zealand Sign Language"],"languages":["en","mi"],"translations":{"fr":"Nouvelle-Z\u00e9lande","nl":"Nieuw-Zeeland","de":"Neuseeland","it":"Nuova Zelanda","ja":"\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9","es":"Nueva Zelanda","hr":"Novi Zeland"},"population":4609440,"latlng":[-41,174],"demonym":"New Zealander","borders":[],"area":270467,"gini":36.2,"timezones":["UTC-11:00","UTC-10:00","UTC+12:00","UTC+12:45","UTC+13:00"]},{"name":"Nicaragua","nativeName":"Nicaragua","topLevelDomain":[".ni"],"alpha2Code":"NI","numericCode":"558","alpha3Code":"NIC","currencies":["NIO"],"callingCodes":["505"],"capital":"Managua","altSpellings":["NI","Republic of Nicaragua","Rep\u00fablica de Nicaragua"],"relevance":"0","region":"Americas","subregion":"Central America","language":["Spanish"],"languages":["es"],"translations":{"de":"Nicaragua","es":"Nicaragua","fr":"Nicaragua","it":"Nicaragua","ja":"\u30cb\u30ab\u30e9\u30b0\u30a2","nl":"Nicaragua","hr":"Nikaragva"},"population":6198154,"latlng":[13,-85],"demonym":"Nicaraguan","borders":["CRI","HND"],"area":130373,"gini":40.5,"timezones":["UTC-06:00"]},{"name":"Niger","nativeName":"Niger","topLevelDomain":[".ne"],"alpha2Code":"NE","numericCode":"562","alpha3Code":"NER","currencies":["XOF"],"callingCodes":["227"],"capital":"Niamey","altSpellings":["NE","Nijar","Republic of Niger","R\u00e9publique du Niger"],"relevance":"0","region":"Africa","subregion":"Western Africa","language":["French"],"languages":["fr"],"translations":{"de":"Niger","es":"N\u00edger","fr":"Niger","it":"Niger","ja":"\u30cb\u30b8\u30a7\u30fc\u30eb","nl":"Niger","hr":"Niger"},"population":19899000,"latlng":[16,8],"demonym":"Nigerien","borders":["DZA","BEN","BFA","TCD","LBY","MLI","NGA"],"area":1267000,"gini":34.6,"timezones":["UTC+01:00"]},{"name":"Nigeria","nativeName":"Nigeria","topLevelDomain":[".ng"],"alpha2Code":"NG","numericCode":"566","alpha3Code":"NGA","currencies":["NGN"],"callingCodes":["234"],"capital":"Abuja","altSpellings":["NG","Nijeriya","Na\u00edj\u00edr\u00ed\u00e0","Federal Republic of Nigeria"],"relevance":"1.5","region":"Africa","subregion":"Western Africa","language":["English"],"languages":["en"],"translations":{"de":"Nigeria","es":"Nigeria","fr":"Nig\u00e9ria","it":"Nigeria","ja":"\u30ca\u30a4\u30b8\u30a7\u30ea\u30a2","nl":"Nigeria","hr":"Nigerija"},"population":182202000,"latlng":[10,8],"demonym":"Nigerian","borders":["BEN","CMR","TCD","NER"],"area":923768,"gini":48.8,"timezones":["UTC+01:00"]},{"name":"Niue","nativeName":"Niu\u0113","topLevelDomain":[".nu"],"alpha2Code":"NU","numericCode":"570","alpha3Code":"NIU","currencies":["NZD"],"callingCodes":["683"],"capital":"Alofi","altSpellings":["NU"],"relevance":"0.5","region":"Oceania","subregion":"Polynesia","language":["Niuean","English"],"languages":["en"],"translations":{"de":"Niue","es":"Niue","fr":"Niue","it":"Niue","ja":"\u30cb\u30a6\u30a8","nl":"Niue","hr":"Niue"},"population":1613,"latlng":[-19.03333333,-169.86666666],"demonym":"Niuean","borders":[],"area":260,"timezones":["UTC-11:00"]},{"name":"Norfolk Island","nativeName":"Norfolk Island","topLevelDomain":[".nf"],"alpha2Code":"NF","numericCode":"574","alpha3Code":"NFK","currencies":["AUD"],"callingCodes":["672"],"capital":"Kingston","altSpellings":["NF","Territory of Norfolk Island","Teratri of Norf'k Ailen"],"relevance":"0.5","region":"Oceania","subregion":"Australia and New Zealand","language":["English","Norfuk"],"languages":["en"],"translations":{"fr":"\u00cele de Norfolk","nl":"Norfolkeiland","de":"Norfolkinsel","it":"Isola Norfolk","ja":"\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u5cf6","es":"Isla de Norfolk","hr":"Otok Norfolk"},"population":2302,"latlng":[-29.03333333,167.95],"demonym":"Norfolk Islander","borders":[],"area":36,"timezones":["UTC+11:30"]},{"name":"North Korea","nativeName":"\ubd81\ud55c","topLevelDomain":[".kp"],"alpha2Code":"KP","numericCode":"408","alpha3Code":"PRK","currencies":["KPW"],"callingCodes":["850"],"capital":"Pyongyang","altSpellings":["KP","Democratic People's Republic of Korea","\uc870\uc120\ubbfc\uc8fc\uc8fc\uc758\uc778\ubbfc\uacf5\ud654\uad6d","Chos\u014fn Minjuju\u016di Inmin Konghwaguk"],"relevance":"0","region":"Asia","subregion":"Eastern Asia","language":["Korean"],"languages":["ko"],"translations":{"de":"Nordkorea","es":"Corea del Norte","fr":"Cor\u00e9e du Nord","it":"Corea del Nord","ja":"\u671d\u9bae\u6c11\u4e3b\u4e3b\u7fa9\u4eba\u6c11\u5171\u548c\u56fd","nl":"Noord-Korea","hr":"Sjeverna Koreja"},"population":25155000,"latlng":[40,127],"demonym":"North Korean","borders":["CHN","KOR","RUS"],"area":120538,"gini":null,"timezones":["UTC+09:00"]},{"name":"Northern Mariana Islands","nativeName":"Northern Mariana Islands","topLevelDomain":[".mp"],"alpha2Code":"MP","numericCode":"580","alpha3Code":"MNP","currencies":["USD"],"callingCodes":["1"],"capital":"Saipan","altSpellings":["MP","Commonwealth of the Northern Mariana Islands","Sankattan Siha Na Islas Mari\u00e5nas"],"relevance":"0.5","region":"Oceania","subregion":"Micronesia","language":["English","Chamorro","Carolinian"],"languages":["en","ch"],"translations":{"de":"N\u00f6rdliche Marianen","es":"Islas Marianas del Norte","fr":"\u00celes Mariannes du Nord","it":"Isole Marianne Settentrionali","ja":"\u5317\u30de\u30ea\u30a2\u30ca\u8af8\u5cf6","nl":"Noordelijke Marianeneilanden","hr":"Sjevernomarijanski otoci"},"population":53883,"latlng":[15.2,145.75],"demonym":"American","borders":[],"area":464,"timezones":["UTC+10:00"]},{"name":"Norway","nativeName":"Norge","topLevelDomain":[".no"],"alpha2Code":"NO","numericCode":"578","alpha3Code":"NOR","currencies":["NOK"],"callingCodes":["47"],"capital":"Oslo","altSpellings":["NO","Norge","Noreg","Kingdom of Norway","Kongeriket Norge","Kongeriket Noreg"],"relevance":"1.5","region":"Europe","subregion":"Northern Europe","language":["Norwegian"],"languages":["no","nb","nn"],"translations":{"de":"Norwegen","es":"Noruega","fr":"Norv\u00e8ge","it":"Norvegia","ja":"\u30ce\u30eb\u30a6\u30a7\u30fc","nl":"Noorwegen","hr":"Norve\u0161ka"},"population":5176998,"latlng":[62,10],"demonym":"Norwegian","borders":["FIN","SWE","RUS"],"area":323802,"gini":25.8,"timezones":["UTC+01:00"]},{"name":"Oman","nativeName":"\u0639\u0645\u0627\u0646","topLevelDomain":[".om"],"alpha2Code":"OM","numericCode":"512","alpha3Code":"OMN","currencies":["OMR"],"callingCodes":["968"],"capital":"Muscat","altSpellings":["OM","Sultanate of Oman","Sal\u1e6danat \u02bbUm\u0101n"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic"],"languages":["ar"],"translations":{"de":"Oman","es":"Om\u00e1n","fr":"Oman","it":"oman","ja":"\u30aa\u30de\u30fc\u30f3","nl":"Oman","hr":"Oman"},"population":4185440,"latlng":[21,57],"demonym":"Omani","borders":["SAU","ARE","YEM"],"area":309500,"gini":null,"timezones":["UTC+04:00"]},{"name":"Pakistan","nativeName":"Pakistan","topLevelDomain":[".pk"],"alpha2Code":"PK","numericCode":"586","alpha3Code":"PAK","currencies":["PKR"],"callingCodes":["92"],"capital":"Islamabad","altSpellings":["PK","P\u0101kist\u0101n","Islamic Republic of Pakistan","Isl\u0101m\u012b Jumh\u016briya'eh P\u0101kist\u0101n"],"relevance":"2","region":"Asia","subregion":"Southern Asia","language":["English","Urdu"],"languages":["en","ur"],"translations":{"de":"Pakistan","es":"Pakist\u00e1n","fr":"Pakistan","it":"Pakistan","ja":"\u30d1\u30ad\u30b9\u30bf\u30f3","nl":"Pakistan","hr":"Pakistan"},"population":190668000,"latlng":[30,70],"demonym":"Pakistani","borders":["AFG","CHN","IND","IRN"],"area":881912,"gini":30.0,"timezones":["UTC+05:00"]},{"name":"Palau","nativeName":"Palau","topLevelDomain":[".pw"],"alpha2Code":"PW","numericCode":"585","alpha3Code":"PLW","currencies":["USD"],"callingCodes":["680"],"capital":"Ngerulmud","altSpellings":["PW","Republic of Palau","Beluu er a Belau"],"relevance":"0.5","region":"Oceania","subregion":"Micronesia","language":["English","Palauan"],"languages":["en"],"translations":{"de":"Palau","es":"Palau","fr":"Palaos","it":"Palau","ja":"\u30d1\u30e9\u30aa","nl":"Palau","hr":"Palau"},"population":20901,"latlng":[7.5,134.5],"demonym":"Palauan","borders":[],"area":459,"timezones":["UTC+09:00"]},{"name":"Palestine","nativeName":"\u0641\u0644\u0633\u0637\u064a\u0646","topLevelDomain":[".ps"],"alpha2Code":"PS","numericCode":"275","alpha3Code":"PSE","currencies":["ILS"],"callingCodes":["970"],"capital":"Ramallah","altSpellings":["PS","State of Palestine","Dawlat Filas\u1e6din"],"relevance":"0","region":"Asia","subregion":"Western Asia","language":["Arabic"],"languages":["ar"],"translations":{"de":"Pal\u00e4stina","es":"Palestina","fr":"Palestine","it":"Palestina","ja":"\u30d1\u30ec\u30b9\u30c1\u30ca","nl":"Palestijnse gebieden","hr":"Palestina"},"population":4682467,"latlng":[31.9,35.2],"demonym":"Palestinian","borders":["ISR","EGY","JOR"],"gini":35.5,"timezones":["UTC+02:00"]},{"name":"Panama","nativeName":"Panam\u00e1","topLevelDomain":[".pa"],"alpha2Code":"PA","numericCode":"591","alpha3Code":"PAN","currencies":["PAB","USD"],"callingCodes":["507"],"capital":"Panama City","altSpellings":["PA","Republic of Panama","Rep\u00fablica de Panam\u00e1"],"relevance":"0","region":"Americas","subregion":"Central America","language":["Spanish"],"languages":["es"],"translations":{"de":"Panama","es":"Panam\u00e1","fr":"Panama","it":"Panama","ja":"\u30d1\u30ca\u30de","nl":"Panama","hr":"Panama"},"population":3764166,"latlng":[9,-80],"demonym":"Panamanian","borders":["COL","CRI"],"area":75417,"gini":51.9,"timezones":["UTC-05:00"]},{"name":"Papua New Guinea","nativeName":"Papua Niugini","topLevelDomain":[".pg"],"alpha2Code":"PG","numericCode":"598","alpha3Code":"PNG","currencies":["PGK"],"callingCodes":["675"],"capital":"Port Moresby","altSpellings":["PG","Independent State of Papua New Guinea","Independen Stet bilong Papua Niugini"],"relevance":"0","region":"Oceania","subregion":"Melanesia","language":["Hiri Motu","Tok Pisin","English"],"languages":["en"],"translations":{"de":"Papua-Neuguinea","es":"Pap\u00faa Nueva Guinea","fr":"Papouasie-Nouvelle-Guin\u00e9e","it":"Papua Nuova Guinea","ja":"\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2","nl":"Papoea-Nieuw-Guinea","hr":"Papua Nova Gvineja"},"population":7398500,"latlng":[-6,147],"demonym":"Papua New Guinean","borders":["IDN"],"area":462840,"gini":50.9,"timezones":["UTC+10:00"]},{"name":"Paraguay","nativeName":"Paraguay","topLevelDomain":[".py"],"alpha2Code":"PY","numericCode":"600","alpha3Code":"PRY","currencies":["PYG"],"callingCodes":["595"],"capital":"Asunci\u00f3n","altSpellings":["PY","Republic of Paraguay","Rep\u00fablica del Paraguay","Tet\u00e3 Paragu\u00e1i"],"relevance":"0","region":"Americas","subregion":"South America","language":["Spanish","Guaran\u00ed"],"languages":["es","gn"],"translations":{"de":"Paraguay","es":"Paraguay","fr":"Paraguay","it":"Paraguay","ja":"\u30d1\u30e9\u30b0\u30a2\u30a4","nl":"Paraguay","hr":"Paragvaj"},"population":7003406,"latlng":[-23,-58],"demonym":"Paraguayan","borders":["ARG","BOL","BRA"],"area":406752,"gini":52.4,"timezones":["UTC-04:00"]},{"name":"Peru","nativeName":"Per\u00fa","topLevelDomain":[".pe"],"alpha2Code":"PE","numericCode":"604","alpha3Code":"PER","currencies":["PEN"],"callingCodes":["51"],"capital":"Lima","altSpellings":["PE","Re
gitextract_8c1q055c/
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── eu/
│ │ └── fayder/
│ │ └── restcountries/
│ │ ├── domain/
│ │ │ ├── BaseCountry.java
│ │ │ ├── ICountryRestSymbols.java
│ │ │ └── ResponseEntity.java
│ │ ├── rest/
│ │ │ └── CountryServiceBase.java
│ │ ├── servlet/
│ │ │ ├── CORSFilter.java
│ │ │ ├── NotFoundExceptionMapper.java
│ │ │ └── RestApplication.java
│ │ ├── v1/
│ │ │ ├── domain/
│ │ │ │ ├── Country.java
│ │ │ │ └── CountryTranslations.java
│ │ │ └── rest/
│ │ │ ├── CountryRest.java
│ │ │ └── CountryService.java
│ │ └── v2/
│ │ ├── domain/
│ │ │ ├── Contribution.java
│ │ │ ├── Country.java
│ │ │ ├── Currency.java
│ │ │ ├── Language.java
│ │ │ ├── RegionalBloc.java
│ │ │ └── Translations.java
│ │ └── rest/
│ │ ├── CountryRest.java
│ │ ├── CountryService.java
│ │ └── StripeRest.java
│ ├── resources/
│ │ ├── countriesV1.json
│ │ ├── countriesV2.json
│ │ └── log4j.properties
│ └── webapp/
│ ├── flatdoc.md
│ ├── index.html
│ └── js/
│ └── restc.js
└── test/
├── java/
│ └── eu/
│ └── fayder/
│ └── restcountries/
│ ├── EmptyDataTest.java
│ ├── v1/
│ │ └── CountryServiceTest.java
│ └── v2/
│ └── CountryServiceTest.java
└── resources/
└── log4j.properties
SYMBOL INDEX (215 symbols across 23 files)
FILE: src/main/java/eu/fayder/restcountries/domain/BaseCountry.java
class BaseCountry (line 5) | public class BaseCountry {
method getName (line 43) | public String getName() {
method getTopLevelDomain (line 47) | public List<String> getTopLevelDomain() {
method getAlpha2Code (line 51) | public String getAlpha2Code() {
method getAlpha3Code (line 55) | public String getAlpha3Code() {
method getCallingCodes (line 59) | public List<String> getCallingCodes() {
method getCapital (line 63) | public String getCapital() {
method getAltSpellings (line 67) | public List<String> getAltSpellings() {
method getRegion (line 71) | public String getRegion() {
method getSubregion (line 75) | public String getSubregion() {
method getPopulation (line 79) | public Integer getPopulation() {
method getLatlng (line 83) | public List<Double> getLatlng() {
method getDemonym (line 87) | public String getDemonym() {
method getArea (line 91) | public Double getArea() {
method getGini (line 95) | public Double getGini() {
method getTimezones (line 99) | public List<String> getTimezones() {
method getBorders (line 103) | public List<String> getBorders() {
method getNativeName (line 107) | public String getNativeName() {
method getNumericCode (line 111) | public String getNumericCode() {
FILE: src/main/java/eu/fayder/restcountries/domain/ICountryRestSymbols.java
type ICountryRestSymbols (line 7) | public interface ICountryRestSymbols {
FILE: src/main/java/eu/fayder/restcountries/domain/ResponseEntity.java
class ResponseEntity (line 6) | public class ResponseEntity {
method ResponseEntity (line 11) | public ResponseEntity(int status, String message) {
method getMessage (line 16) | public String getMessage() {
method getStatus (line 20) | public int getStatus() {
FILE: src/main/java/eu/fayder/restcountries/rest/CountryServiceBase.java
class CountryServiceBase (line 19) | public class CountryServiceBase {
method getByAlpha (line 23) | protected <T extends BaseCountry> T getByAlpha(String alpha, List<T> c...
method getByCodeList (line 39) | protected List<? extends BaseCountry> getByCodeList(String codeList, L...
method getByName (line 52) | protected List<? extends BaseCountry> getByName(String name, boolean f...
method getByCallingCode (line 60) | protected List<? extends BaseCountry> getByCallingCode(String callingC...
method getByCapital (line 71) | protected List<? extends BaseCountry> getByCapital(String capital, Lis...
method getByRegion (line 81) | protected List<? extends BaseCountry> getByRegion(String region, List<...
method getBySubregion (line 91) | protected List<? extends BaseCountry> getBySubregion(String subregion,...
method fulltextSearch (line 101) | private List<? extends BaseCountry> fulltextSearch(String name, List<?...
method substringSearch (line 120) | private List<? extends BaseCountry> substringSearch(String name, List<...
method normalize (line 139) | protected String normalize(String string) {
method loadJson (line 144) | protected List<? extends BaseCountry> loadJson(String filename, Class<...
FILE: src/main/java/eu/fayder/restcountries/servlet/CORSFilter.java
class CORSFilter (line 11) | @WebFilter(filterName = "CORSFilter", urlPatterns = "/*")
method init (line 13) | @Override
method doFilter (line 18) | @Override
method destroy (line 27) | @Override
FILE: src/main/java/eu/fayder/restcountries/servlet/NotFoundExceptionMapper.java
class NotFoundExceptionMapper (line 10) | @Provider
method toResponse (line 15) | @Override
FILE: src/main/java/eu/fayder/restcountries/servlet/RestApplication.java
class RestApplication (line 11) | @ApplicationPath("/rest")
method RestApplication (line 15) | public RestApplication() {
method getSingletons (line 21) | @Override
FILE: src/main/java/eu/fayder/restcountries/v1/domain/Country.java
class Country (line 10) | public class Country extends BaseCountry {
method getCurrencies (line 17) | public List<String> getCurrencies() {
method getLanguages (line 21) | public List<String> getLanguages() {
method getTranslations (line 25) | public CountryTranslations getTranslations() {
method getRelevance (line 29) | public String getRelevance() {
FILE: src/main/java/eu/fayder/restcountries/v1/domain/CountryTranslations.java
class CountryTranslations (line 6) | public class CountryTranslations {
method getDe (line 14) | public String getDe() {
method setDe (line 17) | public void setDe(String de) {
method getEs (line 20) | public String getEs() {
method setEs (line 23) | public void setEs(String es) {
method getFr (line 26) | public String getFr() {
method setFr (line 29) | public void setFr(String fr) {
method getJa (line 32) | public String getJa() {
method setJa (line 35) | public void setJa(String ja) {
method getIt (line 38) | public String getIt() {
method setIt (line 41) | public void setIt(String it) {
FILE: src/main/java/eu/fayder/restcountries/v1/rest/CountryRest.java
class CountryRest (line 25) | @Provider
method getAllCountries (line 32) | @GET
method getCountries (line 38) | @GET
method getByAlpha (line 44) | @GET
method getByAlphaList (line 58) | @GET
method getByCurrency (line 77) | @GET
method getByName (line 96) | @GET
method getByCallingCode (line 112) | @GET
method getByCapital (line 128) | @GET
method getByRegion (line 144) | @GET
method getBySubregion (line 160) | @GET
method getByLanguage (line 176) | @GET
method doPOST (line 192) | @POST
method getResponse (line 198) | private Response getResponse(Status status) {
method isEmpty (line 206) | private boolean isEmpty(String value) {
FILE: src/main/java/eu/fayder/restcountries/v1/rest/CountryService.java
class CountryService (line 13) | public class CountryService extends CountryServiceBase {
method CountryService (line 19) | private CountryService() {
class InstanceHolder (line 23) | private static class InstanceHolder {
method getInstance (line 27) | public static CountryService getInstance() {
method getAll (line 31) | public List<Country> getAll() {
method getByAlpha (line 35) | public Country getByAlpha(String alpha) {
method getByCodeList (line 39) | @SuppressWarnings("unchecked")
method getByName (line 44) | @SuppressWarnings("unchecked")
method getByCallingCode (line 50) | @SuppressWarnings("unchecked")
method getByCapital (line 55) | @SuppressWarnings("unchecked")
method getByRegion (line 60) | @SuppressWarnings("unchecked")
method getBySubregion (line 65) | @SuppressWarnings("unchecked")
method getByCurrency (line 70) | public List<Country> getByCurrency(String currency) {
method getByLanguage (line 82) | public List<Country> getByLanguage(String language) {
method initialize (line 94) | @SuppressWarnings("unchecked")
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Contribution.java
class Contribution (line 6) | public class Contribution {
method getAmount (line 11) | public int getAmount() {
method getToken (line 15) | public String getToken() {
method toString (line 19) | @Override
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Country.java
class Country (line 10) | public class Country extends BaseCountry {
method getCurrencies (line 19) | public List<Currency> getCurrencies() {
method getLanguages (line 23) | public List<Language> getLanguages() {
method getTranslations (line 27) | public Translations getTranslations() {
method getFlag (line 31) | public String getFlag() {
method getRegionalBlocs (line 35) | public List<RegionalBloc> getRegionalBlocs() {
method getCioc (line 39) | public String getCioc() {
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Currency.java
class Currency (line 6) | public class Currency {
method getCode (line 12) | public String getCode() {
method setCode (line 16) | public void setCode(String code) {
method getName (line 20) | public String getName() {
method setName (line 24) | public void setName(String name) {
method getSymbol (line 28) | public String getSymbol() {
method setSymbol (line 32) | public void setSymbol(String symbol) {
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Language.java
class Language (line 6) | public class Language {
method getIso639_1 (line 13) | public String getIso639_1() {
method setIso639_1 (line 17) | public void setIso639_1(String code) {
method getIso639_2 (line 21) | public String getIso639_2() {
method setIso639_2 (line 25) | public void setIso639_2(String iso639_2) {
method getName (line 29) | public String getName() {
method setName (line 33) | public void setName(String name) {
method getNativeName (line 37) | public String getNativeName() {
method setNativeName (line 41) | public void setNativeName(String nativeName) {
FILE: src/main/java/eu/fayder/restcountries/v2/domain/RegionalBloc.java
class RegionalBloc (line 9) | public class RegionalBloc {
method getAcronym (line 16) | public String getAcronym() {
method getName (line 20) | public String getName() {
method getOtherAcronyms (line 24) | public List<String> getOtherAcronyms() {
method getOtherNames (line 31) | public List<String> getOtherNames() {
FILE: src/main/java/eu/fayder/restcountries/v2/domain/Translations.java
class Translations (line 8) | public class Translations extends CountryTranslations {
method getBr (line 16) | public String getBr() {
method getPt (line 20) | public String getPt() {
method getNl (line 24) | public String getNl() {
method getHr (line 28) | public String getHr() {
method getFa (line 32) | public String getFa() {
FILE: src/main/java/eu/fayder/restcountries/v2/rest/CountryRest.java
class CountryRest (line 20) | @Provider
method getAllCountries (line 27) | @GET
method getCountries (line 33) | @GET
method getByAlpha (line 40) | @GET
method getByAlphaList (line 54) | @GET
method getByCurrency (line 73) | @GET
method getByName (line 92) | @GET
method getByCallingCode (line 108) | @GET
method getByCapital (line 124) | @GET
method getByRegion (line 140) | @GET
method getBySubRegion (line 156) | @GET
method getByLanguage (line 172) | @GET
method getByDemonym (line 188) | @GET
method getByRegionalBloc (line 204) | @GET
method doPOST (line 220) | @POST
method getResponse (line 226) | private Response getResponse(Response.Status status) {
method parsedCountry (line 234) | private Object parsedCountry(Country country, String fields) {
method parsedCountries (line 242) | private Object parsedCountries(List<Country> countries, String exclude...
method getCountryJson (line 250) | private String getCountryJson(Country country, List<String> fields) {
method getCountriesJson (line 262) | private String getCountriesJson(List<Country> countries, List<String> ...
method getExcludedFields (line 279) | private List<String> getExcludedFields(List<String> fields) {
method isEmpty (line 312) | private boolean isEmpty(String value) {
FILE: src/main/java/eu/fayder/restcountries/v2/rest/CountryService.java
class CountryService (line 16) | public class CountryService extends CountryServiceBase {
method CountryService (line 22) | private CountryService() {
class InstanceHolder (line 26) | private static class InstanceHolder {
method getInstance (line 30) | public static CountryService getInstance() {
method getAll (line 34) | public List<Country> getAll() {
method getByAlpha (line 38) | public Country getByAlpha(String alpha) {
method getByCodeList (line 42) | @SuppressWarnings("unchecked")
method getByName (line 47) | @SuppressWarnings("unchecked")
method getByCallingCode (line 52) | @SuppressWarnings("unchecked")
method getByCapital (line 57) | @SuppressWarnings("unchecked")
method getByRegion (line 62) | @SuppressWarnings("unchecked")
method getBySubRegion (line 67) | @SuppressWarnings("unchecked")
method getByCurrency (line 72) | public List<Country> getByCurrency(String currency) {
method getByLanguage (line 84) | public List<Country> getByLanguage(String language) {
method getByDemonym (line 106) | public List<Country> getByDemonym(String demonym) {
method getByRegionalBloc (line 116) | public List<Country> getByRegionalBloc(String regionalBloc) {
method initialize (line 129) | @SuppressWarnings("unchecked")
FILE: src/main/java/eu/fayder/restcountries/v2/rest/StripeRest.java
class StripeRest (line 23) | @Provider
method contribute (line 30) | @POST
method getResponse (line 55) | private Response getResponse(Response.Status status) {
FILE: src/test/java/eu/fayder/restcountries/EmptyDataTest.java
class EmptyDataTest (line 18) | public class EmptyDataTest {
method before (line 22) | @Before
method emptyBorders (line 38) | @Test
method emptyAreas (line 48) | @Test
method emptyGini (line 58) | @Test
method emptyNumericCode (line 68) | @Test
method emptyPopulation (line 78) | @Test
method emptyRegion (line 88) | @Test
method emptyTimezones (line 98) | @Test
FILE: src/test/java/eu/fayder/restcountries/v1/CountryServiceTest.java
class CountryServiceTest (line 14) | public class CountryServiceTest {
method singletonTest (line 16) | @Test
method getAll (line 28) | @Test
method getByAlpha2 (line 36) | @Test
method getByAlpha3 (line 43) | @Test
method getByCodeList (line 50) | @Test
method getByCurrency (line 62) | @Test
method getByName (line 72) | @Test
method getByNamePriority (line 80) | @Test
method getByNameAlt (line 93) | @Test
method getByNameFullText (line 101) | @Test
method getByNameFullTextNotFound (line 109) | @Test
method getByCallingCode (line 116) | @Test
method getByCapital (line 125) | @Test
method getByRegion (line 135) | @Test
method getBySubregion (line 145) | @Test
method getByLanguageCode (line 155) | @Test
FILE: src/test/java/eu/fayder/restcountries/v2/CountryServiceTest.java
class CountryServiceTest (line 10) | public class CountryServiceTest {
method getAll (line 12) | @Test
method getByAlpha2 (line 19) | @Test
method getByAlpha3 (line 26) | @Test
method getByCodeList (line 33) | @Test
method getByCurrency (line 45) | @Test
method getByName (line 57) | @Test
method getByNamePriority (line 65) | @Test
method getByNameAlt (line 78) | @Test
method getByNameFullText (line 86) | @Test
method getByNameFullTextNotFound (line 94) | @Test
method getByCallingCode (line 101) | @Test
method getByCapital (line 110) | @Test
method getByRegion (line 120) | @Test
method getByLanguageCode (line 130) | @Test
method getByDemonym (line 145) | @Test
method getByRegionalBloc (line 155) | @Test
method translations (line 170) | @Test
Condensed preview — 35 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (711K chars).
[
{
"path": ".gitignore",
"chars": 93,
"preview": ".classpath\n.project\n.settings\ntarget/\n*.DS_Store\n*.sh\n*.css\nbackup/\n.idea/\n*.iml\ngoogle*.html"
},
{
"path": ".travis.yml",
"chars": 35,
"preview": "language: java\njdk:\n - oraclejdk8\n"
},
{
"path": "LICENSE",
"chars": 14887,
"preview": "Mozilla Public License\nVersion 2.0\n1. Definitions\n\n1.1. “Contributor”\n\n means each individual or legal entity that cr"
},
{
"path": "README.md",
"chars": 7387,
"preview": "REST Countries\n=======\n\nGet information about countries via a RESTful API https://restcountries.eu\n\n[. The extraction includes 35 files (595.1 KB), approximately 205.9k tokens, and a symbol index with 215 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.