/*
Copyright 2017 Vector Creations Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

import { _td } from './languageHandler';

const PHONE_NUMBER_REGEXP = /^[0-9 -.]+$/;

/*
 * Do basic validation to determine if the given input could be
 * a valid phone number.
 *
 * @param {String} phoneNumber The string to validate. This could be
 *     either an international format number (MSISDN or e.164) or
 *     a national-format number.
 * @return True if the number could be a valid phone number, otherwise false.
 */
export function looksValid(phoneNumber: string) {
    return PHONE_NUMBER_REGEXP.test(phoneNumber);
}

// Regional Indicator Symbol Letter A
const UNICODE_BASE = 127462 - 'A'.charCodeAt(0);
// Country code should be exactly 2 uppercase characters
const COUNTRY_CODE_REGEX = /^[A-Z]{2}$/;

export const getEmojiFlag = (countryCode: string) => {
    if (!COUNTRY_CODE_REGEX.test(countryCode)) return '';
    // Rip the country code out of the emoji and use that
    return String.fromCodePoint(...countryCode.split('').map(l => UNICODE_BASE + l.charCodeAt(0)));
};

export interface PhoneNumberCountryDefinition {
    iso2: string;
    name: string;
    prefix: string;
}

export const COUNTRIES: PhoneNumberCountryDefinition[] = [
    {
        "iso2": "GB",
        "name": _td("United Kingdom"),
        "prefix": "44",
    },
    {
        "iso2": "US",
        "name": _td("United States"),
        "prefix": "1",
    },
    {
        "iso2": "AF",
        "name": _td("Afghanistan"),
        "prefix": "93",
    },
    {
        "iso2": "AX",
        "name": _td("\u00c5land Islands"),
        "prefix": "358",
    },
    {
        "iso2": "AL",
        "name": _td("Albania"),
        "prefix": "355",
    },
    {
        "iso2": "DZ",
        "name": _td("Algeria"),
        "prefix": "213",
    },
    {
        "iso2": "AS",
        "name": _td("American Samoa"),
        "prefix": "1",
    },
    {
        "iso2": "AD",
        "name": _td("Andorra"),
        "prefix": "376",
    },
    {
        "iso2": "AO",
        "name": _td("Angola"),
        "prefix": "244",
    },
    {
        "iso2": "AI",
        "name": _td("Anguilla"),
        "prefix": "1",
    },
    {
        "iso2": "AQ",
        "name": _td("Antarctica"),
        "prefix": "672",
    },
    {
        "iso2": "AG",
        "name": _td("Antigua & Barbuda"),
        "prefix": "1",
    },
    {
        "iso2": "AR",
        "name": _td("Argentina"),
        "prefix": "54",
    },
    {
        "iso2": "AM",
        "name": _td("Armenia"),
        "prefix": "374",
    },
    {
        "iso2": "AW",
        "name": _td("Aruba"),
        "prefix": "297",
    },
    {
        "iso2": "AU",
        "name": _td("Australia"),
        "prefix": "61",
    },
    {
        "iso2": "AT",
        "name": _td("Austria"),
        "prefix": "43",
    },
    {
        "iso2": "AZ",
        "name": _td("Azerbaijan"),
        "prefix": "994",
    },
    {
        "iso2": "BS",
        "name": _td("Bahamas"),
        "prefix": "1",
    },
    {
        "iso2": "BH",
        "name": _td("Bahrain"),
        "prefix": "973",
    },
    {
        "iso2": "BD",
        "name": _td("Bangladesh"),
        "prefix": "880",
    },
    {
        "iso2": "BB",
        "name": _td("Barbados"),
        "prefix": "1",
    },
    {
        "iso2": "BY",
        "name": _td("Belarus"),
        "prefix": "375",
    },
    {
        "iso2": "BE",
        "name": _td("Belgium"),
        "prefix": "32",
    },
    {
        "iso2": "BZ",
        "name": _td("Belize"),
        "prefix": "501",
    },
    {
        "iso2": "BJ",
        "name": _td("Benin"),
        "prefix": "229",
    },
    {
        "iso2": "BM",
        "name": _td("Bermuda"),
        "prefix": "1",
    },
    {
        "iso2": "BT",
        "name": _td("Bhutan"),
        "prefix": "975",
    },
    {
        "iso2": "BO",
        "name": _td("Bolivia"),
        "prefix": "591",
    },
    {
        "iso2": "BA",
        "name": _td("Bosnia"),
        "prefix": "387",
    },
    {
        "iso2": "BW",
        "name": _td("Botswana"),
        "prefix": "267",
    },
    {
        "iso2": "BV",
        "name": _td("Bouvet Island"),
        "prefix": "47",
    },
    {
        "iso2": "BR",
        "name": _td("Brazil"),
        "prefix": "55",
    },
    {
        "iso2": "IO",
        "name": _td("British Indian Ocean Territory"),
        "prefix": "246",
    },
    {
        "iso2": "VG",
        "name": _td("British Virgin Islands"),
        "prefix": "1",
    },
    {
        "iso2": "BN",
        "name": _td("Brunei"),
        "prefix": "673",
    },
    {
        "iso2": "BG",
        "name": _td("Bulgaria"),
        "prefix": "359",
    },
    {
        "iso2": "BF",
        "name": _td("Burkina Faso"),
        "prefix": "226",
    },
    {
        "iso2": "BI",
        "name": _td("Burundi"),
        "prefix": "257",
    },
    {
        "iso2": "KH",
        "name": _td("Cambodia"),
        "prefix": "855",
    },
    {
        "iso2": "CM",
        "name": _td("Cameroon"),
        "prefix": "237",
    },
    {
        "iso2": "CA",
        "name": _td("Canada"),
        "prefix": "1",
    },
    {
        "iso2": "CV",
        "name": _td("Cape Verde"),
        "prefix": "238",
    },
    {
        "iso2": "BQ",
        "name": _td("Caribbean Netherlands"),
        "prefix": "599",
    },
    {
        "iso2": "KY",
        "name": _td("Cayman Islands"),
        "prefix": "1",
    },
    {
        "iso2": "CF",
        "name": _td("Central African Republic"),
        "prefix": "236",
    },
    {
        "iso2": "TD",
        "name": _td("Chad"),
        "prefix": "235",
    },
    {
        "iso2": "CL",
        "name": _td("Chile"),
        "prefix": "56",
    },
    {
        "iso2": "CN",
        "name": _td("China"),
        "prefix": "86",
    },
    {
        "iso2": "CX",
        "name": _td("Christmas Island"),
        "prefix": "61",
    },
    {
        "iso2": "CC",
        "name": _td("Cocos (Keeling) Islands"),
        "prefix": "61",
    },
    {
        "iso2": "CO",
        "name": _td("Colombia"),
        "prefix": "57",
    },
    {
        "iso2": "KM",
        "name": _td("Comoros"),
        "prefix": "269",
    },
    {
        "iso2": "CG",
        "name": _td("Congo - Brazzaville"),
        "prefix": "242",
    },
    {
        "iso2": "CD",
        "name": _td("Congo - Kinshasa"),
        "prefix": "243",
    },
    {
        "iso2": "CK",
        "name": _td("Cook Islands"),
        "prefix": "682",
    },
    {
        "iso2": "CR",
        "name": _td("Costa Rica"),
        "prefix": "506",
    },
    {
        "iso2": "HR",
        "name": _td("Croatia"),
        "prefix": "385",
    },
    {
        "iso2": "CU",
        "name": _td("Cuba"),
        "prefix": "53",
    },
    {
        "iso2": "CW",
        "name": _td("Cura\u00e7ao"),
        "prefix": "599",
    },
    {
        "iso2": "CY",
        "name": _td("Cyprus"),
        "prefix": "357",
    },
    {
        "iso2": "CZ",
        "name": _td("Czech Republic"),
        "prefix": "420",
    },
    {
        "iso2": "CI",
        "name": _td("C\u00f4te d\u2019Ivoire"),
        "prefix": "225",
    },
    {
        "iso2": "DK",
        "name": _td("Denmark"),
        "prefix": "45",
    },
    {
        "iso2": "DJ",
        "name": _td("Djibouti"),
        "prefix": "253",
    },
    {
        "iso2": "DM",
        "name": _td("Dominica"),
        "prefix": "1",
    },
    {
        "iso2": "DO",
        "name": _td("Dominican Republic"),
        "prefix": "1",
    },
    {
        "iso2": "EC",
        "name": _td("Ecuador"),
        "prefix": "593",
    },
    {
        "iso2": "EG",
        "name": _td("Egypt"),
        "prefix": "20",
    },
    {
        "iso2": "SV",
        "name": _td("El Salvador"),
        "prefix": "503",
    },
    {
        "iso2": "GQ",
        "name": _td("Equatorial Guinea"),
        "prefix": "240",
    },
    {
        "iso2": "ER",
        "name": _td("Eritrea"),
        "prefix": "291",
    },
    {
        "iso2": "EE",
        "name": _td("Estonia"),
        "prefix": "372",
    },
    {
        "iso2": "ET",
        "name": _td("Ethiopia"),
        "prefix": "251",
    },
    {
        "iso2": "FK",
        "name": _td("Falkland Islands"),
        "prefix": "500",
    },
    {
        "iso2": "FO",
        "name": _td("Faroe Islands"),
        "prefix": "298",
    },
    {
        "iso2": "FJ",
        "name": _td("Fiji"),
        "prefix": "679",
    },
    {
        "iso2": "FI",
        "name": _td("Finland"),
        "prefix": "358",
    },
    {
        "iso2": "FR",
        "name": _td("France"),
        "prefix": "33",
    },
    {
        "iso2": "GF",
        "name": _td("French Guiana"),
        "prefix": "594",
    },
    {
        "iso2": "PF",
        "name": _td("French Polynesia"),
        "prefix": "689",
    },
    {
        "iso2": "TF",
        "name": _td("French Southern Territories"),
        "prefix": "262",
    },
    {
        "iso2": "GA",
        "name": _td("Gabon"),
        "prefix": "241",
    },
    {
        "iso2": "GM",
        "name": _td("Gambia"),
        "prefix": "220",
    },
    {
        "iso2": "GE",
        "name": _td("Georgia"),
        "prefix": "995",
    },
    {
        "iso2": "DE",
        "name": _td("Germany"),
        "prefix": "49",
    },
    {
        "iso2": "GH",
        "name": _td("Ghana"),
        "prefix": "233",
    },
    {
        "iso2": "GI",
        "name": _td("Gibraltar"),
        "prefix": "350",
    },
    {
        "iso2": "GR",
        "name": _td("Greece"),
        "prefix": "30",
    },
    {
        "iso2": "GL",
        "name": _td("Greenland"),
        "prefix": "299",
    },
    {
        "iso2": "GD",
        "name": _td("Grenada"),
        "prefix": "1",
    },
    {
        "iso2": "GP",
        "name": _td("Guadeloupe"),
        "prefix": "590",
    },
    {
        "iso2": "GU",
        "name": _td("Guam"),
        "prefix": "1",
    },
    {
        "iso2": "GT",
        "name": _td("Guatemala"),
        "prefix": "502",
    },
    {
        "iso2": "GG",
        "name": _td("Guernsey"),
        "prefix": "44",
    },
    {
        "iso2": "GN",
        "name": _td("Guinea"),
        "prefix": "224",
    },
    {
        "iso2": "GW",
        "name": _td("Guinea-Bissau"),
        "prefix": "245",
    },
    {
        "iso2": "GY",
        "name": _td("Guyana"),
        "prefix": "592",
    },
    {
        "iso2": "HT",
        "name": _td("Haiti"),
        "prefix": "509",
    },
    {
        "iso2": "HM",
        "name": _td("Heard & McDonald Islands"),
        "prefix": "672",
    },
    {
        "iso2": "HN",
        "name": _td("Honduras"),
        "prefix": "504",
    },
    {
        "iso2": "HK",
        "name": _td("Hong Kong"),
        "prefix": "852",
    },
    {
        "iso2": "HU",
        "name": _td("Hungary"),
        "prefix": "36",
    },
    {
        "iso2": "IS",
        "name": _td("Iceland"),
        "prefix": "354",
    },
    {
        "iso2": "IN",
        "name": _td("India"),
        "prefix": "91",
    },
    {
        "iso2": "ID",
        "name": _td("Indonesia"),
        "prefix": "62",
    },
    {
        "iso2": "IR",
        "name": _td("Iran"),
        "prefix": "98",
    },
    {
        "iso2": "IQ",
        "name": _td("Iraq"),
        "prefix": "964",
    },
    {
        "iso2": "IE",
        "name": _td("Ireland"),
        "prefix": "353",
    },
    {
        "iso2": "IM",
        "name": _td("Isle of Man"),
        "prefix": "44",
    },
    {
        "iso2": "IL",
        "name": _td("Israel"),
        "prefix": "972",
    },
    {
        "iso2": "IT",
        "name": _td("Italy"),
        "prefix": "39",
    },
    {
        "iso2": "JM",
        "name": _td("Jamaica"),
        "prefix": "1",
    },
    {
        "iso2": "JP",
        "name": _td("Japan"),
        "prefix": "81",
    },
    {
        "iso2": "JE",
        "name": _td("Jersey"),
        "prefix": "44",
    },
    {
        "iso2": "JO",
        "name": _td("Jordan"),
        "prefix": "962",
    },
    {
        "iso2": "KZ",
        "name": _td("Kazakhstan"),
        "prefix": "7",
    },
    {
        "iso2": "KE",
        "name": _td("Kenya"),
        "prefix": "254",
    },
    {
        "iso2": "KI",
        "name": _td("Kiribati"),
        "prefix": "686",
    },
    {
        "iso2": "XK",
        "name": _td("Kosovo"),
        "prefix": "383",
    },
    {
        "iso2": "KW",
        "name": _td("Kuwait"),
        "prefix": "965",
    },
    {
        "iso2": "KG",
        "name": _td("Kyrgyzstan"),
        "prefix": "996",
    },
    {
        "iso2": "LA",
        "name": _td("Laos"),
        "prefix": "856",
    },
    {
        "iso2": "LV",
        "name": _td("Latvia"),
        "prefix": "371",
    },
    {
        "iso2": "LB",
        "name": _td("Lebanon"),
        "prefix": "961",
    },
    {
        "iso2": "LS",
        "name": _td("Lesotho"),
        "prefix": "266",
    },
    {
        "iso2": "LR",
        "name": _td("Liberia"),
        "prefix": "231",
    },
    {
        "iso2": "LY",
        "name": _td("Libya"),
        "prefix": "218",
    },
    {
        "iso2": "LI",
        "name": _td("Liechtenstein"),
        "prefix": "423",
    },
    {
        "iso2": "LT",
        "name": _td("Lithuania"),
        "prefix": "370",
    },
    {
        "iso2": "LU",
        "name": _td("Luxembourg"),
        "prefix": "352",
    },
    {
        "iso2": "MO",
        "name": _td("Macau"),
        "prefix": "853",
    },
    {
        "iso2": "MK",
        "name": _td("Macedonia"),
        "prefix": "389",
    },
    {
        "iso2": "MG",
        "name": _td("Madagascar"),
        "prefix": "261",
    },
    {
        "iso2": "MW",
        "name": _td("Malawi"),
        "prefix": "265",
    },
    {
        "iso2": "MY",
        "name": _td("Malaysia"),
        "prefix": "60",
    },
    {
        "iso2": "MV",
        "name": _td("Maldives"),
        "prefix": "960",
    },
    {
        "iso2": "ML",
        "name": _td("Mali"),
        "prefix": "223",
    },
    {
        "iso2": "MT",
        "name": _td("Malta"),
        "prefix": "356",
    },
    {
        "iso2": "MH",
        "name": _td("Marshall Islands"),
        "prefix": "692",
    },
    {
        "iso2": "MQ",
        "name": _td("Martinique"),
        "prefix": "596",
    },
    {
        "iso2": "MR",
        "name": _td("Mauritania"),
        "prefix": "222",
    },
    {
        "iso2": "MU",
        "name": _td("Mauritius"),
        "prefix": "230",
    },
    {
        "iso2": "YT",
        "name": _td("Mayotte"),
        "prefix": "262",
    },
    {
        "iso2": "MX",
        "name": _td("Mexico"),
        "prefix": "52",
    },
    {
        "iso2": "FM",
        "name": _td("Micronesia"),
        "prefix": "691",
    },
    {
        "iso2": "MD",
        "name": _td("Moldova"),
        "prefix": "373",
    },
    {
        "iso2": "MC",
        "name": _td("Monaco"),
        "prefix": "377",
    },
    {
        "iso2": "MN",
        "name": _td("Mongolia"),
        "prefix": "976",
    },
    {
        "iso2": "ME",
        "name": _td("Montenegro"),
        "prefix": "382",
    },
    {
        "iso2": "MS",
        "name": _td("Montserrat"),
        "prefix": "1",
    },
    {
        "iso2": "MA",
        "name": _td("Morocco"),
        "prefix": "212",
    },
    {
        "iso2": "MZ",
        "name": _td("Mozambique"),
        "prefix": "258",
    },
    {
        "iso2": "MM",
        "name": _td("Myanmar"),
        "prefix": "95",
    },
    {
        "iso2": "NA",
        "name": _td("Namibia"),
        "prefix": "264",
    },
    {
        "iso2": "NR",
        "name": _td("Nauru"),
        "prefix": "674",
    },
    {
        "iso2": "NP",
        "name": _td("Nepal"),
        "prefix": "977",
    },
    {
        "iso2": "NL",
        "name": _td("Netherlands"),
        "prefix": "31",
    },
    {
        "iso2": "NC",
        "name": _td("New Caledonia"),
        "prefix": "687",
    },
    {
        "iso2": "NZ",
        "name": _td("New Zealand"),
        "prefix": "64",
    },
    {
        "iso2": "NI",
        "name": _td("Nicaragua"),
        "prefix": "505",
    },
    {
        "iso2": "NE",
        "name": _td("Niger"),
        "prefix": "227",
    },
    {
        "iso2": "NG",
        "name": _td("Nigeria"),
        "prefix": "234",
    },
    {
        "iso2": "NU",
        "name": _td("Niue"),
        "prefix": "683",
    },
    {
        "iso2": "NF",
        "name": _td("Norfolk Island"),
        "prefix": "672",
    },
    {
        "iso2": "KP",
        "name": _td("North Korea"),
        "prefix": "850",
    },
    {
        "iso2": "MP",
        "name": _td("Northern Mariana Islands"),
        "prefix": "1",
    },
    {
        "iso2": "NO",
        "name": _td("Norway"),
        "prefix": "47",
    },
    {
        "iso2": "OM",
        "name": _td("Oman"),
        "prefix": "968",
    },
    {
        "iso2": "PK",
        "name": _td("Pakistan"),
        "prefix": "92",
    },
    {
        "iso2": "PW",
        "name": _td("Palau"),
        "prefix": "680",
    },
    {
        "iso2": "PS",
        "name": _td("Palestine"),
        "prefix": "970",
    },
    {
        "iso2": "PA",
        "name": _td("Panama"),
        "prefix": "507",
    },
    {
        "iso2": "PG",
        "name": _td("Papua New Guinea"),
        "prefix": "675",
    },
    {
        "iso2": "PY",
        "name": _td("Paraguay"),
        "prefix": "595",
    },
    {
        "iso2": "PE",
        "name": _td("Peru"),
        "prefix": "51",
    },
    {
        "iso2": "PH",
        "name": _td("Philippines"),
        "prefix": "63",
    },
    {
        "iso2": "PN",
        "name": _td("Pitcairn Islands"),
        "prefix": "870",
    },
    {
        "iso2": "PL",
        "name": _td("Poland"),
        "prefix": "48",
    },
    {
        "iso2": "PT",
        "name": _td("Portugal"),
        "prefix": "351",
    },
    {
        "iso2": "PR",
        "name": _td("Puerto Rico"),
        "prefix": "1",
    },
    {
        "iso2": "QA",
        "name": _td("Qatar"),
        "prefix": "974",
    },
    {
        "iso2": "RO",
        "name": _td("Romania"),
        "prefix": "40",
    },
    {
        "iso2": "RU",
        "name": _td("Russia"),
        "prefix": "7",
    },
    {
        "iso2": "RW",
        "name": _td("Rwanda"),
        "prefix": "250",
    },
    {
        "iso2": "RE",
        "name": _td("R\u00e9union"),
        "prefix": "262",
    },
    {
        "iso2": "WS",
        "name": _td("Samoa"),
        "prefix": "685",
    },
    {
        "iso2": "SM",
        "name": _td("San Marino"),
        "prefix": "378",
    },
    {
        "iso2": "SA",
        "name": _td("Saudi Arabia"),
        "prefix": "966",
    },
    {
        "iso2": "SN",
        "name": _td("Senegal"),
        "prefix": "221",
    },
    {
        "iso2": "RS",
        "name": _td("Serbia"),
        "prefix": "381 p",
    },
    {
        "iso2": "SC",
        "name": _td("Seychelles"),
        "prefix": "248",
    },
    {
        "iso2": "SL",
        "name": _td("Sierra Leone"),
        "prefix": "232",
    },
    {
        "iso2": "SG",
        "name": _td("Singapore"),
        "prefix": "65",
    },
    {
        "iso2": "SX",
        "name": _td("Sint Maarten"),
        "prefix": "1",
    },
    {
        "iso2": "SK",
        "name": _td("Slovakia"),
        "prefix": "421",
    },
    {
        "iso2": "SI",
        "name": _td("Slovenia"),
        "prefix": "386",
    },
    {
        "iso2": "SB",
        "name": _td("Solomon Islands"),
        "prefix": "677",
    },
    {
        "iso2": "SO",
        "name": _td("Somalia"),
        "prefix": "252",
    },
    {
        "iso2": "ZA",
        "name": _td("South Africa"),
        "prefix": "27",
    },
    {
        "iso2": "GS",
        "name": _td("South Georgia & South Sandwich Islands"),
        "prefix": "500",
    },
    {
        "iso2": "KR",
        "name": _td("South Korea"),
        "prefix": "82",
    },
    {
        "iso2": "SS",
        "name": _td("South Sudan"),
        "prefix": "211",
    },
    {
        "iso2": "ES",
        "name": _td("Spain"),
        "prefix": "34",
    },
    {
        "iso2": "LK",
        "name": _td("Sri Lanka"),
        "prefix": "94",
    },
    {
        "iso2": "BL",
        "name": _td("St. Barth\u00e9lemy"),
        "prefix": "590",
    },
    {
        "iso2": "SH",
        "name": _td("St. Helena"),
        "prefix": "290 n",
    },
    {
        "iso2": "KN",
        "name": _td("St. Kitts & Nevis"),
        "prefix": "1",
    },
    {
        "iso2": "LC",
        "name": _td("St. Lucia"),
        "prefix": "1",
    },
    {
        "iso2": "MF",
        "name": _td("St. Martin"),
        "prefix": "590",
    },
    {
        "iso2": "PM",
        "name": _td("St. Pierre & Miquelon"),
        "prefix": "508",
    },
    {
        "iso2": "VC",
        "name": _td("St. Vincent & Grenadines"),
        "prefix": "1",
    },
    {
        "iso2": "SD",
        "name": _td("Sudan"),
        "prefix": "249",
    },
    {
        "iso2": "SR",
        "name": _td("Suriname"),
        "prefix": "597",
    },
    {
        "iso2": "SJ",
        "name": _td("Svalbard & Jan Mayen"),
        "prefix": "47",
    },
    {
        "iso2": "SZ",
        "name": _td("Swaziland"),
        "prefix": "268",
    },
    {
        "iso2": "SE",
        "name": _td("Sweden"),
        "prefix": "46",
    },
    {
        "iso2": "CH",
        "name": _td("Switzerland"),
        "prefix": "41",
    },
    {
        "iso2": "SY",
        "name": _td("Syria"),
        "prefix": "963",
    },
    {
        "iso2": "ST",
        "name": _td("S\u00e3o Tom\u00e9 & Pr\u00edncipe"),
        "prefix": "239",
    },
    {
        "iso2": "TW",
        "name": _td("Taiwan"),
        "prefix": "886",
    },
    {
        "iso2": "TJ",
        "name": _td("Tajikistan"),
        "prefix": "992",
    },
    {
        "iso2": "TZ",
        "name": _td("Tanzania"),
        "prefix": "255",
    },
    {
        "iso2": "TH",
        "name": _td("Thailand"),
        "prefix": "66",
    },
    {
        "iso2": "TL",
        "name": _td("Timor-Leste"),
        "prefix": "670",
    },
    {
        "iso2": "TG",
        "name": _td("Togo"),
        "prefix": "228",
    },
    {
        "iso2": "TK",
        "name": _td("Tokelau"),
        "prefix": "690",
    },
    {
        "iso2": "TO",
        "name": _td("Tonga"),
        "prefix": "676",
    },
    {
        "iso2": "TT",
        "name": _td("Trinidad & Tobago"),
        "prefix": "1",
    },
    {
        "iso2": "TN",
        "name": _td("Tunisia"),
        "prefix": "216",
    },
    {
        "iso2": "TR",
        "name": _td("Turkey"),
        "prefix": "90",
    },
    {
        "iso2": "TM",
        "name": _td("Turkmenistan"),
        "prefix": "993",
    },
    {
        "iso2": "TC",
        "name": _td("Turks & Caicos Islands"),
        "prefix": "1",
    },
    {
        "iso2": "TV",
        "name": _td("Tuvalu"),
        "prefix": "688",
    },
    {
        "iso2": "VI",
        "name": _td("U.S. Virgin Islands"),
        "prefix": "1",
    },
    {
        "iso2": "UG",
        "name": _td("Uganda"),
        "prefix": "256",
    },
    {
        "iso2": "UA",
        "name": _td("Ukraine"),
        "prefix": "380",
    },
    {
        "iso2": "AE",
        "name": _td("United Arab Emirates"),
        "prefix": "971",
    },
    {
        "iso2": "UY",
        "name": _td("Uruguay"),
        "prefix": "598",
    },
    {
        "iso2": "UZ",
        "name": _td("Uzbekistan"),
        "prefix": "998",
    },
    {
        "iso2": "VU",
        "name": _td("Vanuatu"),
        "prefix": "678",
    },
    {
        "iso2": "VA",
        "name": _td("Vatican City"),
        "prefix": "39",
    },
    {
        "iso2": "VE",
        "name": _td("Venezuela"),
        "prefix": "58",
    },
    {
        "iso2": "VN",
        "name": _td("Vietnam"),
        "prefix": "84",
    },
    {
        "iso2": "WF",
        "name": _td("Wallis & Futuna"),
        "prefix": "681",
    },
    {
        "iso2": "EH",
        "name": _td("Western Sahara"),
        "prefix": "212",
    },
    {
        "iso2": "YE",
        "name": _td("Yemen"),
        "prefix": "967",
    },
    {
        "iso2": "ZM",
        "name": _td("Zambia"),
        "prefix": "260",
    },
    {
        "iso2": "ZW",
        "name": _td("Zimbabwe"),
        "prefix": "263",
    },
];
