{"version":3,"file":"CbTltSDf.js","sources":["../../../../node_modules/country-codes-list/utils/groupBy.js","../../../../node_modules/country-codes-list/utils/supplant.js","../../../../node_modules/country-codes-list/countriesData.js","../../../../node_modules/country-codes-list/index.js","../../../../node_modules/sales-tax/node_modules/node-fetch/browser.js","../../../../node_modules/unenv/runtime/node/url/index.mjs","../../../../node_modules/validate-vat/lib/index.js","../../../../node_modules/jsvat/lib/es6/lib/countries/andorra.js","../../../../node_modules/jsvat/lib/es6/lib/countries/austria.js","../../../../node_modules/jsvat/lib/es6/lib/countries/belgium.js","../../../../node_modules/jsvat/lib/es6/lib/countries/brazil.js","../../../../node_modules/jsvat/lib/es6/lib/countries/bulgaria.js","../../../../node_modules/jsvat/lib/es6/lib/countries/croatiat.js","../../../../node_modules/jsvat/lib/es6/lib/countries/cyprus.js","../../../../node_modules/jsvat/lib/es6/lib/countries/czechRepublic.js","../../../../node_modules/jsvat/lib/es6/lib/countries/denmark.js","../../../../node_modules/jsvat/lib/es6/lib/countries/estonia.js","../../../../node_modules/jsvat/lib/es6/lib/countries/europe.js","../../../../node_modules/jsvat/lib/es6/lib/countries/finland.js","../../../../node_modules/jsvat/lib/es6/lib/countries/france.js","../../../../node_modules/jsvat/lib/es6/lib/countries/germany.js","../../../../node_modules/jsvat/lib/es6/lib/countries/greece.js","../../../../node_modules/jsvat/lib/es6/lib/countries/hungary.js","../../../../node_modules/jsvat/lib/es6/lib/countries/ireland.js","../../../../node_modules/jsvat/lib/es6/lib/countries/italy.js","../../../../node_modules/jsvat/lib/es6/lib/countries/latvia.js","../../../../node_modules/jsvat/lib/es6/lib/countries/lithuania.js","../../../../node_modules/jsvat/lib/es6/lib/countries/luxembourg.js","../../../../node_modules/jsvat/lib/es6/lib/countries/malta.js","../../../../node_modules/jsvat/lib/es6/lib/countries/netherlands.js","../../../../node_modules/jsvat/lib/es6/lib/countries/norway.js","../../../../node_modules/jsvat/lib/es6/lib/countries/poland.js","../../../../node_modules/jsvat/lib/es6/lib/countries/portugal.js","../../../../node_modules/jsvat/lib/es6/lib/countries/romania.js","../../../../node_modules/jsvat/lib/es6/lib/countries/russia.js","../../../../node_modules/jsvat/lib/es6/lib/countries/serbia.js","../../../../node_modules/jsvat/lib/es6/lib/countries/slovakiaRepublic.js","../../../../node_modules/jsvat/lib/es6/lib/countries/slovenia.js","../../../../node_modules/jsvat/lib/es6/lib/countries/spain.js","../../../../node_modules/jsvat/lib/es6/lib/countries/sweden.js","../../../../node_modules/jsvat/lib/es6/lib/countries/switzerland.js","../../../../node_modules/jsvat/lib/es6/lib/countries/unitedKingdom.js","../../../../node_modules/jsvat/lib/es6/lib/jsvat.js","../../../../node_modules/jsvat/lib/es6/index.js","../../../../node_modules/ein-validator/dist/src/index.js","../../../../node_modules/sales-tax/lib/sales_tax.js"],"sourcesContent":["'use strict'\n\n/**\n * groupBy() groups an array by the given key. A transformation may be passed to be applied when each value is concatenated\n * to the grouped component.\n * @param {string} key - The key to use to group the array\n * @param {array} array - The array to group\n * @param {function} transform - A transformation to apply to the grouped value\n */\nmodule.exports = function groupBy (key, array, transform) { \n return array.reduce((objectsByKeyValue, obj) => {\n const value = obj[key];\n let val = obj\n if (typeof transform === 'function') {\n val = transform(val)\n }\n objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(val);\n return objectsByKeyValue;\n }, {})\n};","'use strict'\n\n/**\n * supplant() does variable substitution on the string. It scans through the string looking for\n * expressions enclosed in { } braces. If an expression is found, use it as a key on the object,\n * and if the key has a string value or number value, it is substituted for the bracket expression\n * and it repeats.\n * @param {string} stringVal - The string that needs supplanting\n * @param {object} replacements - key/value object with the keys to be replaced by the corresponding values\n */\nmodule.exports = function (stringVal, replacements) {\n return stringVal.replace(/{([^{}]*)}/g, function (a, b) {\n let r = replacements[b]\n return typeof r === 'string' || typeof r === 'number' ? r : a\n })\n}\n","module.exports = [\n {\n \"countryNameEn\": \"Andorra\",\n \"countryNameLocal\": \"Andorra\",\n \"countryCode\": \"AD\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ca\",\n \"officialLanguageNameEn\": \"Catalan, Valencian\",\n \"officialLanguageNameLocal\": \"Català, Valencià\",\n \"countryCallingCode\": \"376\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇦🇩\"\n },\n {\n \"countryNameEn\": \"Afghanistan\",\n \"countryNameLocal\": \"د افغانستان اسلامي دولتدولت اسلامی افغانستان, جمهوری اسلامی افغانستان\",\n \"countryCode\": \"AF\",\n \"currencyCode\": \"AFN\",\n \"currencyNameEn\": \"Afghan afghani\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fa\",\n \"officialLanguageNameEn\": \"Persian\",\n \"officialLanguageNameLocal\": \"فارسی\",\n \"countryCallingCode\": \"93\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇦🇫\"\n },\n {\n \"countryNameEn\": \"Antigua and Barbuda\",\n \"countryNameLocal\": \"Antigua and Barbuda\",\n \"countryCode\": \"AG\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1268\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇦🇬\"\n },\n {\n \"countryNameEn\": \"Anguilla\",\n \"countryNameLocal\": \"Anguilla\",\n \"countryCode\": \"AI\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1264\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇦🇮\"\n },\n {\n \"countryNameEn\": \"Albania\",\n \"countryNameLocal\": \"Shqipëria\",\n \"countryCode\": \"AL\",\n \"currencyCode\": \"ALL\",\n \"currencyNameEn\": \"Albanian lek\",\n \"tinType\": \"NIPT\",\n \"tinName\": \"Numri i Identifikimit për Personin e Tatueshëm\",\n \"officialLanguageCode\": \"sq\",\n \"officialLanguageNameEn\": \"Albanian\",\n \"officialLanguageNameLocal\": \"Shqip\",\n \"countryCallingCode\": \"355\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇦🇱\"\n },\n {\n \"countryNameEn\": \"Armenia\",\n \"countryNameLocal\": \"Հայաստան\",\n \"countryCode\": \"AM\",\n \"currencyCode\": \"AMD\",\n \"currencyNameEn\": \"Armenian dram\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"hy\",\n \"officialLanguageNameEn\": \"Armenian\",\n \"officialLanguageNameLocal\": \"Հայերեն\",\n \"countryCallingCode\": \"374\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇦🇲\"\n },\n {\n \"countryNameEn\": \"Angola\",\n \"countryNameLocal\": \"Angola\",\n \"countryCode\": \"AO\",\n \"currencyCode\": \"AOA\",\n \"currencyNameEn\": \"Angolan kwanza\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"244\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇦🇴\"\n },\n {\n \"countryNameEn\": \"Antarctica\",\n \"countryNameLocal\": \"Antarctica, Antártico, Antarctique, Антарктике\",\n \"countryCode\": \"AQ\",\n \"currencyCode\": \"\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"672\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇦🇶\"\n },\n {\n \"countryNameEn\": \"Argentina\",\n \"countryNameLocal\": \"Argentina\",\n \"countryCode\": \"AR\",\n \"currencyCode\": \"ARS\",\n \"currencyNameEn\": \"Argentine peso\",\n \"tinType\": \"CUIT\",\n \"tinName\": \"Código Único de Identificación Tributaria\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"54\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇦🇷\"\n },\n {\n \"countryNameEn\": \"American Samoa\",\n \"countryNameLocal\": \"American Samoa\",\n \"countryCode\": \"AS\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1684\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇦🇸\"\n },\n {\n \"countryNameEn\": \"Austria\",\n \"countryNameLocal\": \"Österreich\",\n \"countryCode\": \"AT\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"UID\",\n \"tinName\": \"Umsatzsteuer-Identifikationsnummer\",\n \"officialLanguageCode\": \"de\",\n \"officialLanguageNameEn\": \"German\",\n \"officialLanguageNameLocal\": \"Deutsch\",\n \"countryCallingCode\": \"43\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇦🇹\"\n },\n {\n \"countryNameEn\": \"Australia\",\n \"countryNameLocal\": \"Australia\",\n \"countryCode\": \"AU\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"ABN\",\n \"tinName\": \"Australian Business Number\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"61\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇦🇺\"\n },\n {\n \"countryNameEn\": \"Aruba\",\n \"countryNameLocal\": \"Aruba\",\n \"countryCode\": \"AW\",\n \"currencyCode\": \"AWG\",\n \"currencyNameEn\": \"Aruban florin\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"297\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇦🇼\"\n },\n {\n \"countryNameEn\": \"Åland Islands\",\n \"countryNameLocal\": \"Åland\",\n \"countryCode\": \"AX\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"sv\",\n \"officialLanguageNameEn\": \"Swedish\",\n \"officialLanguageNameLocal\": \"Svenska\",\n \"countryCallingCode\": \"358\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇦🇽\"\n },\n {\n \"countryNameEn\": \"Azerbaijan\",\n \"countryNameLocal\": \"Azərbaycan\",\n \"countryCode\": \"AZ\",\n \"currencyCode\": \"AZN\",\n \"currencyNameEn\": \"Azerbaijani manat\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"az\",\n \"officialLanguageNameEn\": \"Azerbaijani\",\n \"officialLanguageNameLocal\": \"azərbaycan dili\",\n \"countryCallingCode\": \"994\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇦🇿\"\n },\n {\n \"countryNameEn\": \"Bosnia and Herzegovina\",\n \"countryNameLocal\": \"Bosna i Hercegovina\",\n \"countryCode\": \"BA\",\n \"currencyCode\": \"BAM\",\n \"currencyNameEn\": \"Bosnia and Herzegovina convertible mark\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"bs\",\n \"officialLanguageNameEn\": \"Bosnian\",\n \"officialLanguageNameLocal\": \"bosanski jezik\",\n \"countryCallingCode\": \"387\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇧🇦\"\n },\n {\n \"countryNameEn\": \"Barbados\",\n \"countryNameLocal\": \"Barbados\",\n \"countryCode\": \"BB\",\n \"currencyCode\": \"BBD\",\n \"currencyNameEn\": \"Barbados dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1246\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇧🇧\"\n },\n {\n \"countryNameEn\": \"Bangladesh\",\n \"countryNameLocal\": \"গণপ্রজাতন্ত্রী বাংলাদেশ\",\n \"countryCode\": \"BD\",\n \"currencyCode\": \"BDT\",\n \"currencyNameEn\": \"Bangladeshi taka\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"bn\",\n \"officialLanguageNameEn\": \"Bengali\",\n \"officialLanguageNameLocal\": \"বাংলা\",\n \"countryCallingCode\": \"880\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇧🇩\"\n },\n {\n \"countryNameEn\": \"Belgium\",\n \"countryNameLocal\": \"België, Belgique, Belgien\",\n \"countryCode\": \"BE\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"n° TVABTW-nr Mwst-nr\",\n \"tinName\": \"BTW identificatienummer / Numéro de TVA\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"32\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇧🇪\"\n },\n {\n \"countryNameEn\": \"Burkina Faso\",\n \"countryNameLocal\": \"Burkina Faso\",\n \"countryCode\": \"BF\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"226\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇧🇫\"\n },\n {\n \"countryNameEn\": \"Bulgaria\",\n \"countryNameLocal\": \"България\",\n \"countryCode\": \"BG\",\n \"currencyCode\": \"BGN\",\n \"currencyNameEn\": \"Bulgarian lev\",\n \"tinType\": \"ДДС номер\",\n \"tinName\": \"Идентификационен номер по ДДС\",\n \"officialLanguageCode\": \"bg\",\n \"officialLanguageNameEn\": \"Bulgarian\",\n \"officialLanguageNameLocal\": \"български език\",\n \"countryCallingCode\": \"359\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇧🇬\"\n },\n {\n \"countryNameEn\": \"Bahrain\",\n \"countryNameLocal\": \"البحرين\",\n \"countryCode\": \"BH\",\n \"currencyCode\": \"BHD\",\n \"currencyNameEn\": \"Bahraini dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"973\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇧🇭\"\n },\n {\n \"countryNameEn\": \"Burundi\",\n \"countryNameLocal\": \"Burundi\",\n \"countryCode\": \"BI\",\n \"currencyCode\": \"BIF\",\n \"currencyNameEn\": \"Burundian franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"257\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇧🇮\"\n },\n {\n \"countryNameEn\": \"Benin\",\n \"countryNameLocal\": \"Bénin\",\n \"countryCode\": \"BJ\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"229\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇧🇯\"\n },\n {\n \"countryNameEn\": \"Saint Barthélemy\",\n \"countryNameLocal\": \"Saint-Barthélemy\",\n \"countryCode\": \"BL\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"590\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇧🇱\"\n },\n {\n \"countryNameEn\": \"Bermuda\",\n \"countryNameLocal\": \"Bermuda\",\n \"countryCode\": \"BM\",\n \"currencyCode\": \"BMD\",\n \"currencyNameEn\": \"Bermudian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1441\",\n \"areaCodes\": [],\n \"region\": \"North America\",\n \"flag\": \"🇧🇲\"\n },\n {\n \"countryNameEn\": \"Brunei Darussalam\",\n \"countryNameLocal\": \"Brunei Darussalam\",\n \"countryCode\": \"BN\",\n \"currencyCode\": \"BND\",\n \"currencyNameEn\": \"Brunei dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ms\",\n \"officialLanguageNameEn\": \"Malay\",\n \"officialLanguageNameLocal\": \"Bahasa Melayu, بهاس ملايو\",\n \"countryCallingCode\": \"673\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇧🇳\"\n },\n {\n \"countryNameEn\": \"Bolivia (Plurinational State of)\",\n \"countryNameLocal\": \"Bolivia, Bulibiya, Volívia, Wuliwya\",\n \"countryCode\": \"BO\",\n \"currencyCode\": \"BOP\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"NIT\",\n \"tinName\": \"Número de Identificación Tributaria\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"591\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇧🇴\"\n },\n {\n \"countryNameEn\": \"Bonaire, Sint Eustatius and Saba\",\n \"countryNameLocal\": \"Caribisch Nederland\",\n \"countryCode\": \"BQ\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"5997\",\n \"areaCodes\": [],\n \"region\": \"Unknown\",\n \"flag\": \"🇧🇶\"\n },\n {\n \"countryNameEn\": \"Brazil\",\n \"countryNameLocal\": \"Brasil\",\n \"countryCode\": \"BR\",\n \"currencyCode\": \"BRL\",\n \"currencyNameEn\": \"Brazilian real\",\n \"tinType\": \"CNPJ\",\n \"tinName\": \"Cadastro Nacional de Pessoa Jurídica\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"55\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇧🇷\"\n },\n {\n \"countryNameEn\": \"Bhutan\",\n \"countryNameLocal\": \"འབྲུག་ཡུལ\",\n \"countryCode\": \"BT\",\n \"currencyCode\": \"BTN\",\n \"currencyNameEn\": \"Bhutanese ngultrum\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"dz\",\n \"officialLanguageNameEn\": \"Dzongkha\",\n \"officialLanguageNameLocal\": \"རྫོང་ཁ\",\n \"countryCallingCode\": \"975\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇧🇹\"\n },\n {\n \"countryNameEn\": \"Bouvet Island\",\n \"countryNameLocal\": \"Bouvetøya\",\n \"countryCode\": \"BV\",\n \"currencyCode\": \"NOK\",\n \"currencyNameEn\": \"Norwegian krone\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"no\",\n \"officialLanguageNameEn\": \"Norwegian\",\n \"officialLanguageNameLocal\": \"Norsk\",\n \"countryCallingCode\": \"47\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇧🇻\"\n },\n {\n \"countryNameEn\": \"Botswana\",\n \"countryNameLocal\": \"Botswana\",\n \"countryCode\": \"BW\",\n \"currencyCode\": \"BWP\",\n \"currencyNameEn\": \"Botswana pula\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"267\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇧🇼\"\n },\n {\n \"countryNameEn\": \"Belarus\",\n \"countryNameLocal\": \"Беларусь\",\n \"countryCode\": \"BY\",\n \"currencyCode\": \"BYR\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"УНП (UNP)\",\n \"tinName\": \"Учетный номер плательщика\",\n \"officialLanguageCode\": \"be\",\n \"officialLanguageNameEn\": \"Belarusian\",\n \"officialLanguageNameLocal\": \"беларуская мова\",\n \"countryCallingCode\": \"375\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇧🇾\"\n },\n {\n \"countryNameEn\": \"Belize\",\n \"countryNameLocal\": \"Belize\",\n \"countryCode\": \"BZ\",\n \"currencyCode\": \"BZD\",\n \"currencyNameEn\": \"Belize dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"501\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇧🇿\"\n },\n {\n \"countryNameEn\": \"Canada\",\n \"countryNameLocal\": \"Canada\",\n \"countryCode\": \"CA\",\n \"currencyCode\": \"CAD\",\n \"currencyNameEn\": \"Canadian dollar\",\n \"tinType\": \"BN / NE\",\n \"tinName\": \"Business Number\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1\",\n \"areaCodes\": [\"403\", \"587\", \"780\", \"825\", \"236\", \"250\", \"604\", \"672\", \"778\", \"204\", \"431\", \"506\", \"709\", \"782\", \"902\", \"226\", \"249\", \"289\", \"343\", \"365\", \"416\", \"437\", \"519\", \"548\", \"613\", \"647\", \"705\", \"807\", \"905\", \"367\", \"418\", \"438\", \"450\", \"514\", \"579\", \"581\", \"819\", \"873\", \"306\", \"639\", \"867\"],\n \"region\": \"North America\",\n \"flag\": \"🇨🇦\"\n },\n {\n \"countryNameEn\": \"Switzerland\",\n \"countryNameLocal\": \"Schweiz, Suisse, Svizzera, Svizra\",\n \"countryCode\": \"CH\",\n \"currencyCode\": \"CHE\",\n \"currencyNameEn\": \"WIR Euro (complementary currency)\",\n \"tinType\": \"MWST/TVA/IVA\",\n \"tinName\": \"Mehrwertsteuernummer\",\n \"officialLanguageCode\": \"de\",\n \"officialLanguageNameEn\": \"German\",\n \"officialLanguageNameLocal\": \"Deutsch\",\n \"countryCallingCode\": \"41\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇨🇭\"\n },\n {\n \"countryNameEn\": \"Côte d'Ivoire\",\n \"countryNameLocal\": \"Côte d'Ivoire\",\n \"countryCode\": \"CI\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"225\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇨🇮\"\n },\n {\n \"countryNameEn\": \"Chile\",\n \"countryNameLocal\": \"Chile\",\n \"countryCode\": \"CL\",\n \"currencyCode\": \"CLP\",\n \"currencyNameEn\": \"Chilean peso\",\n \"tinType\": \"RUT\",\n \"tinName\": \"Rol Único Tributario\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"56\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇨🇱\"\n },\n {\n \"countryNameEn\": \"Cameroon\",\n \"countryNameLocal\": \"Cameroun, Cameroon\",\n \"countryCode\": \"CM\",\n \"currencyCode\": \"XAF\",\n \"currencyNameEn\": \"CFA franc BEAC\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"237\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇨🇲\"\n },\n {\n \"countryNameEn\": \"China\",\n \"countryNameLocal\": \"中国\",\n \"countryCode\": \"CN\",\n \"currencyCode\": \"CNY\",\n \"currencyNameEn\": \"Renminbi (Chinese) yuan\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"zh-hans\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"86\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇨🇳\"\n },\n {\n \"countryNameEn\": \"Colombia\",\n \"countryNameLocal\": \"Colombia\",\n \"countryCode\": \"CO\",\n \"currencyCode\": \"COP\",\n \"currencyNameEn\": \"Colombian peso\",\n \"tinType\": \"NIT\",\n \"tinName\": \"Número De Identificación Tributaria\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"57\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇨🇴\"\n },\n {\n \"countryNameEn\": \"Costa Rica\",\n \"countryNameLocal\": \"Costa Rica\",\n \"countryCode\": \"CR\",\n \"currencyCode\": \"CRC\",\n \"currencyNameEn\": \"Costa Rican colon\",\n \"tinType\": \"\",\n \"tinName\": \"Cédula Jurídica\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"506\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇨🇷\"\n },\n {\n \"countryNameEn\": \"Cuba\",\n \"countryNameLocal\": \"Cuba\",\n \"countryCode\": \"CU\",\n \"currencyCode\": \"CUC\",\n \"currencyNameEn\": \"Cuban convertible peso\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"53\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇨🇺\"\n },\n {\n \"countryNameEn\": \"Cabo Verde\",\n \"countryNameLocal\": \"Cabo Verde\",\n \"countryCode\": \"CV\",\n \"currencyCode\": \"CVE\",\n \"currencyNameEn\": \"Cape Verdean escudo\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"238\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇨🇻\"\n },\n {\n \"countryNameEn\": \"Curaçao\",\n \"countryNameLocal\": \"Curaçao\",\n \"countryCode\": \"CW\",\n \"currencyCode\": \"ANG\",\n \"currencyNameEn\": \"Netherlands Antillean guilder\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"599\",\n \"areaCodes\": [],\n \"region\": \"Unknown\",\n \"flag\": \"🇨🇼\"\n },\n {\n \"countryNameEn\": \"Christmas Island\",\n \"countryNameLocal\": \"Christmas Island\",\n \"countryCode\": \"CX\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"61\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇨🇽\"\n },\n {\n \"countryNameEn\": \"Cyprus\",\n \"countryNameLocal\": \"Κύπρος, Kibris\",\n \"countryCode\": \"CY\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"ΦΠΑ\",\n \"tinName\": \"Αριθμός Εγγραφής Φ.Π.Α.\",\n \"officialLanguageCode\": \"el\",\n \"officialLanguageNameEn\": \"Greek, Modern (1453-)\",\n \"officialLanguageNameLocal\": \"ελληνικά\",\n \"countryCallingCode\": \"357\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇨🇾\"\n },\n {\n \"countryNameEn\": \"Germany\",\n \"countryNameLocal\": \"Deutschland\",\n \"countryCode\": \"DE\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"USt-IdNr.\",\n \"tinName\": \"Umsatzsteuer-Identifikationsnummer\",\n \"officialLanguageCode\": \"de\",\n \"officialLanguageNameEn\": \"German\",\n \"officialLanguageNameLocal\": \"Deutsch\",\n \"countryCallingCode\": \"49\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇩🇪\"\n },\n {\n \"countryNameEn\": \"Djibouti\",\n \"countryNameLocal\": \"Djibouti, جيبوتي, Jabuuti, Gabuutih\",\n \"countryCode\": \"DJ\",\n \"currencyCode\": \"DJF\",\n \"currencyNameEn\": \"Djiboutian franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"253\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇩🇯\"\n },\n {\n \"countryNameEn\": \"Denmark\",\n \"countryNameLocal\": \"Danmark\",\n \"countryCode\": \"DK\",\n \"currencyCode\": \"DKK\",\n \"currencyNameEn\": \"Danish krone\",\n \"tinType\": \"CVR\",\n \"tinName\": \"Momsregistreringsnummer\",\n \"officialLanguageCode\": \"da\",\n \"officialLanguageNameEn\": \"Danish\",\n \"officialLanguageNameLocal\": \"dansk\",\n \"countryCallingCode\": \"45\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇩🇰\"\n },\n {\n \"countryNameEn\": \"Dominica\",\n \"countryNameLocal\": \"Dominica\",\n \"countryCode\": \"DM\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"767\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇩🇲\"\n },\n {\n \"countryNameEn\": \"Algeria\",\n \"countryNameLocal\": \"الجزائر\",\n \"countryCode\": \"DZ\",\n \"currencyCode\": \"DZD\",\n \"currencyNameEn\": \"Algerian dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"213\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇩🇿\"\n },\n {\n \"countryNameEn\": \"Ecuador\",\n \"countryNameLocal\": \"Ecuador\",\n \"countryCode\": \"EC\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"RUC\",\n \"tinName\": \"Número de Registro Unico de Contribuyentes\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"593\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇪🇨\"\n },\n {\n \"countryNameEn\": \"Estonia\",\n \"countryNameLocal\": \"Eesti\",\n \"countryCode\": \"EE\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"KMKR\",\n \"tinName\": \"Käibemaksukohustuslase number\",\n \"officialLanguageCode\": \"et\",\n \"officialLanguageNameEn\": \"Estonian\",\n \"officialLanguageNameLocal\": \"eesti, eesti keel\",\n \"countryCallingCode\": \"372\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇪🇪\"\n },\n {\n \"countryNameEn\": \"Egypt\",\n \"countryNameLocal\": \"مصر\",\n \"countryCode\": \"EG\",\n \"currencyCode\": \"EGP\",\n \"currencyNameEn\": \"Egyptian pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"20\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇪🇬\"\n },\n {\n \"countryNameEn\": \"Western Sahara\",\n \"countryNameLocal\": \"Sahara Occidental\",\n \"countryCode\": \"EH\",\n \"currencyCode\": \"MAD\",\n \"currencyNameEn\": \"Moroccan dirham\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"212\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇪🇭\"\n },\n {\n \"countryNameEn\": \"Eritrea\",\n \"countryNameLocal\": \"ኤርትራ, إرتريا, Eritrea\",\n \"countryCode\": \"ER\",\n \"currencyCode\": \"ERN\",\n \"currencyNameEn\": \"Eritrean nakfa\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ti\",\n \"officialLanguageNameEn\": \"Tigrinya\",\n \"officialLanguageNameLocal\": \"ትግርኛ\",\n \"countryCallingCode\": \"291\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇪🇷\"\n },\n {\n \"countryNameEn\": \"Spain\",\n \"countryNameLocal\": \"España\",\n \"countryCode\": \"ES\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"NIF (CIF)\",\n \"tinName\": \"Número de Identificación Fiscal (formerly named Código de Identificación Fiscal)\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"34\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇪🇸\"\n },\n {\n \"countryNameEn\": \"Ethiopia\",\n \"countryNameLocal\": \"ኢትዮጵያ, Itoophiyaa\",\n \"countryCode\": \"ET\",\n \"currencyCode\": \"ETB\",\n \"currencyNameEn\": \"Ethiopian birr\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"am\",\n \"officialLanguageNameEn\": \"Amharic\",\n \"officialLanguageNameLocal\": \"አማርኛ\",\n \"countryCallingCode\": \"251\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇪🇹\"\n },\n {\n \"countryNameEn\": \"Finland\",\n \"countryNameLocal\": \"Suomi\",\n \"countryCode\": \"FI\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"ALV nro\",\n \"tinName\": \"Arvonlisäveronumero\",\n \"officialLanguageCode\": \"fi\",\n \"officialLanguageNameEn\": \"Finnish\",\n \"officialLanguageNameLocal\": \"suomi, suomen kieli\",\n \"countryCallingCode\": \"358\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇫🇮\"\n },\n {\n \"countryNameEn\": \"Fiji\",\n \"countryNameLocal\": \"Fiji\",\n \"countryCode\": \"FJ\",\n \"currencyCode\": \"FJD\",\n \"currencyNameEn\": \"Fiji dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"679\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇫🇯\"\n },\n {\n \"countryNameEn\": \"Micronesia (Federated States of)\",\n \"countryNameLocal\": \"Micronesia\",\n \"countryCode\": \"FM\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"691\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇫🇲\"\n },\n {\n \"countryNameEn\": \"France\",\n \"countryNameLocal\": \"France\",\n \"countryCode\": \"FR\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"n° TVA\",\n \"tinName\": \"Numéro d'identification à la taxe sur la valeur ajoutée / Numéro de TVA intracommunautaire\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"33\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇫🇷\"\n },\n {\n \"countryNameEn\": \"Gabon\",\n \"countryNameLocal\": \"Gabon\",\n \"countryCode\": \"GA\",\n \"currencyCode\": \"XAF\",\n \"currencyNameEn\": \"CFA franc BEAC\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"241\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇬🇦\"\n },\n {\n \"countryNameEn\": \"Grenada\",\n \"countryNameLocal\": \"Grenada\",\n \"countryCode\": \"GD\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1473\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇬🇩\"\n },\n {\n \"countryNameEn\": \"Georgia\",\n \"countryNameLocal\": \"საქართველო\",\n \"countryCode\": \"GE\",\n \"currencyCode\": \"GEL\",\n \"currencyNameEn\": \"Georgian lari\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ka\",\n \"officialLanguageNameEn\": \"Georgian\",\n \"officialLanguageNameLocal\": \"ქართული\",\n \"countryCallingCode\": \"995\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇬🇪\"\n },\n {\n \"countryNameEn\": \"French Guiana\",\n \"countryNameLocal\": \"Guyane française\",\n \"countryCode\": \"GF\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"594\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇬🇫\"\n },\n {\n \"countryNameEn\": \"Guernsey\",\n \"countryNameLocal\": \"Guernsey\",\n \"countryCode\": \"GG\",\n \"currencyCode\": \"GBP\",\n \"currencyNameEn\": \"Pound sterling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"44\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇬🇬\"\n },\n {\n \"countryNameEn\": \"Ghana\",\n \"countryNameLocal\": \"Ghana\",\n \"countryCode\": \"GH\",\n \"currencyCode\": \"GHS\",\n \"currencyNameEn\": \"Ghanaian cedi\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"233\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇬🇭\"\n },\n {\n \"countryNameEn\": \"Gibraltar\",\n \"countryNameLocal\": \"Gibraltar\",\n \"countryCode\": \"GI\",\n \"currencyCode\": \"GIP\",\n \"currencyNameEn\": \"Gibraltar pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"350\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇬🇮\"\n },\n {\n \"countryNameEn\": \"Greenland\",\n \"countryNameLocal\": \"Kalaallit Nunaat, Grønland\",\n \"countryCode\": \"GL\",\n \"currencyCode\": \"DKK\",\n \"currencyNameEn\": \"Danish krone\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"kl\",\n \"officialLanguageNameEn\": \"Kalaallisut, Greenlandic\",\n \"officialLanguageNameLocal\": \"kalaallisut, kalaallit oqaasii\",\n \"countryCallingCode\": \"299\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇬🇱\"\n },\n {\n \"countryNameEn\": \"Guinea\",\n \"countryNameLocal\": \"Guinée\",\n \"countryCode\": \"GN\",\n \"currencyCode\": \"GNF\",\n \"currencyNameEn\": \"Guinean franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"224\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇬🇳\"\n },\n {\n \"countryNameEn\": \"Guadeloupe\",\n \"countryNameLocal\": \"Guadeloupe\",\n \"countryCode\": \"GP\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"590\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇬🇵\"\n },\n {\n \"countryNameEn\": \"Equatorial Guinea\",\n \"countryNameLocal\": \"Guiena ecuatorial, Guinée équatoriale, Guiné Equatorial\",\n \"countryCode\": \"GQ\",\n \"currencyCode\": \"XAF\",\n \"currencyNameEn\": \"CFA franc BEAC\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"240\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇬🇶\"\n },\n {\n \"countryNameEn\": \"Greece\",\n \"countryNameLocal\": \"Ελλάδα\",\n \"countryCode\": \"GR\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"el\",\n \"officialLanguageNameEn\": \"Greek, Modern (1453-)\",\n \"officialLanguageNameLocal\": \"ελληνικά\",\n \"countryCallingCode\": \"30\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇬🇷\"\n },\n {\n \"countryNameEn\": \"South Georgia and the South Sandwich Islands\",\n \"countryNameLocal\": \"South Georgia and the South Sandwich Islands\",\n \"countryCode\": \"GS\",\n \"currencyCode\": \"\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"500\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇬🇸\"\n },\n {\n \"countryNameEn\": \"Guatemala\",\n \"countryNameLocal\": \"Guatemala\",\n \"countryCode\": \"GT\",\n \"currencyCode\": \"GTQ\",\n \"currencyNameEn\": \"Guatemalan quetzal\",\n \"tinType\": \"NIT\",\n \"tinName\": \"Número de Identificación Tributaria\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"502\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇬🇹\"\n },\n {\n \"countryNameEn\": \"Guam\",\n \"countryNameLocal\": \"Guam, Guåhån\",\n \"countryCode\": \"GU\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇬🇺\"\n },\n {\n \"countryNameEn\": \"Guinea-Bissau\",\n \"countryNameLocal\": \"Guiné-Bissau\",\n \"countryCode\": \"GW\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"245\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇬🇼\"\n },\n {\n \"countryNameEn\": \"Guyana\",\n \"countryNameLocal\": \"Guyana\",\n \"countryCode\": \"GY\",\n \"currencyCode\": \"GYD\",\n \"currencyNameEn\": \"Guyanese dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"592\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇬🇾\"\n },\n {\n \"countryNameEn\": \"Hong Kong\",\n \"countryNameLocal\": \"香港, Hong Kong\",\n \"countryCode\": \"HK\",\n \"currencyCode\": \"HKD\",\n \"currencyNameEn\": \"Hong Kong dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"zh-hant\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"852\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇭🇰\"\n },\n {\n \"countryNameEn\": \"Honduras\",\n \"countryNameLocal\": \"Honduras\",\n \"countryCode\": \"HN\",\n \"currencyCode\": \"HNL\",\n \"currencyNameEn\": \"Honduran lempira\",\n \"tinType\": \"RTN\",\n \"tinName\": \"Registro Tributario Nacional\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"504\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇭🇳\"\n },\n {\n \"countryNameEn\": \"Croatia\",\n \"countryNameLocal\": \"Hrvatska\",\n \"countryCode\": \"HR\",\n \"currencyCode\": \"HRK\",\n \"currencyNameEn\": \"Croatian kuna\",\n \"tinType\": \"PDV-ID; OIB\",\n \"tinName\": \"PDV Id. Broj OIB\",\n \"officialLanguageCode\": \"hr\",\n \"officialLanguageNameEn\": \"Croatian\",\n \"officialLanguageNameLocal\": \"hrvatski jezik\",\n \"countryCallingCode\": \"385\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇭🇷\"\n },\n {\n \"countryNameEn\": \"Haiti\",\n \"countryNameLocal\": \"Haïti, Ayiti\",\n \"countryCode\": \"HT\",\n \"currencyCode\": \"HTG\",\n \"currencyNameEn\": \"Haitian gourde\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"509\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇭🇹\"\n },\n {\n \"countryNameEn\": \"Hungary\",\n \"countryNameLocal\": \"Magyarország\",\n \"countryCode\": \"HU\",\n \"currencyCode\": \"HUF\",\n \"currencyNameEn\": \"Hungarian forint\",\n \"tinType\": \"ANUM\",\n \"tinName\": \"Közösségi adószám\",\n \"officialLanguageCode\": \"hu\",\n \"officialLanguageNameEn\": \"Hungarian\",\n \"officialLanguageNameLocal\": \"magyar\",\n \"countryCallingCode\": \"36\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇭🇺\"\n },\n {\n \"countryNameEn\": \"Indonesia\",\n \"countryNameLocal\": \"Indonesia\",\n \"countryCode\": \"ID\",\n \"currencyCode\": \"IDR\",\n \"currencyNameEn\": \"Indonesian rupiah\",\n \"tinType\": \"NPWP\",\n \"tinName\": \"Nomor Pokok Wajib Pajak\",\n \"officialLanguageCode\": \"id\",\n \"officialLanguageNameEn\": \"Indonesian\",\n \"officialLanguageNameLocal\": \"Bahasa Indonesia\",\n \"countryCallingCode\": \"62\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇮🇩\"\n },\n {\n \"countryNameEn\": \"Ireland\",\n \"countryNameLocal\": \"Ireland, Éire\",\n \"countryCode\": \"IE\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"VAT or CBL\",\n \"tinName\": \"Value added tax identification no.\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"353\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇮🇪\"\n },\n {\n \"countryNameEn\": \"Israel\",\n \"countryNameLocal\": \"ישראל\",\n \"countryCode\": \"IL\",\n \"currencyCode\": \"ILS\",\n \"currencyNameEn\": \"Israeli new shekel\",\n \"tinType\": \"\",\n \"tinName\": \"מס' עוסק מורשה / ח\\\"פ\",\n \"officialLanguageCode\": \"he\",\n \"officialLanguageNameEn\": \"Hebrew\",\n \"officialLanguageNameLocal\": \"עברית\",\n \"countryCallingCode\": \"972\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇮🇱\"\n },\n {\n \"countryNameEn\": \"Isle of Man\",\n \"countryNameLocal\": \"Isle of Man\",\n \"countryCode\": \"IM\",\n \"currencyCode\": \"GBP\",\n \"currencyNameEn\": \"Pound sterling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"44\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇮🇲\"\n },\n {\n \"countryNameEn\": \"India\",\n \"countryNameLocal\": \"भारत, India\",\n \"countryCode\": \"IN\",\n \"currencyCode\": \"INR\",\n \"currencyNameEn\": \"Indian rupee\",\n \"tinType\": \"VAT TIN / CST TIN\",\n \"tinName\": \"Value Added Tax - Taxpayer Identification Number / Central Sales Tax - Taxpayer Identification Number (In most states)Not applicable\",\n \"officialLanguageCode\": \"hi\",\n \"officialLanguageNameEn\": \"Hindi\",\n \"officialLanguageNameLocal\": \"हिन्दी, हिंदी\",\n \"countryCallingCode\": \"91\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇮🇳\"\n },\n {\n \"countryNameEn\": \"British Indian Ocean Territories\",\n \"countryNameLocal\": \"British Indian Ocean Territories\",\n \"countryCode\": \"IO\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"246\",\n \"areaCodes\": [],\n \"region\": \"Indian Ocean\",\n \"flag\": \"🇮🇴\",\n },\n {\n \"countryNameEn\": \"Iraq\",\n \"countryNameLocal\": \"العراق, Iraq\",\n \"countryCode\": \"IQ\",\n \"currencyCode\": \"IQD\",\n \"currencyNameEn\": \"Iraqi dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"964\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇮🇶\"\n },\n {\n \"countryNameEn\": \"Iran (Islamic Republic of)\",\n \"countryNameLocal\": \"ایران\",\n \"countryCode\": \"IR\",\n \"currencyCode\": \"IRR\",\n \"currencyNameEn\": \"Iranian rial\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fa\",\n \"officialLanguageNameEn\": \"Persian\",\n \"officialLanguageNameLocal\": \"فارسی\",\n \"countryCallingCode\": \"98\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇮🇷\"\n },\n {\n \"countryNameEn\": \"Iceland\",\n \"countryNameLocal\": \"Ísland\",\n \"countryCode\": \"IS\",\n \"currencyCode\": \"ISK\",\n \"currencyNameEn\": \"Icelandic króna\",\n \"tinType\": \"VSK / VASK\",\n \"tinName\": \"Virðisaukaskattsnúmer\",\n \"officialLanguageCode\": \"is\",\n \"officialLanguageNameEn\": \"Icelandic\",\n \"officialLanguageNameLocal\": \"Íslenska\",\n \"countryCallingCode\": \"354\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇮🇸\"\n },\n {\n \"countryNameEn\": \"Italy\",\n \"countryNameLocal\": \"Italia\",\n \"countryCode\": \"IT\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"P.IVA\",\n \"tinName\": \"Partita IVA(IVA = Imposta sul Valore Aggiunto)\",\n \"officialLanguageCode\": \"it\",\n \"officialLanguageNameEn\": \"Italian\",\n \"officialLanguageNameLocal\": \"Italiano\",\n \"countryCallingCode\": \"39\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇮🇹\"\n },\n {\n \"countryNameEn\": \"Jersey\",\n \"countryNameLocal\": \"Jersey\",\n \"countryCode\": \"JE\",\n \"currencyCode\": \"GBP\",\n \"currencyNameEn\": \"Pound sterling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"44\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇯🇪\"\n },\n {\n \"countryNameEn\": \"Jamaica\",\n \"countryNameLocal\": \"Jamaica\",\n \"countryCode\": \"JM\",\n \"currencyCode\": \"JMD\",\n \"currencyNameEn\": \"Jamaican dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"876\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇯🇲\"\n },\n {\n \"countryNameEn\": \"Jordan\",\n \"countryNameLocal\": \"الأُرْدُن\",\n \"countryCode\": \"JO\",\n \"currencyCode\": \"JOD\",\n \"currencyNameEn\": \"Jordanian dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"962\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇯🇴\"\n },\n {\n \"countryNameEn\": \"Japan\",\n \"countryNameLocal\": \"日本\",\n \"countryCode\": \"JP\",\n \"currencyCode\": \"JPY\",\n \"currencyNameEn\": \"Japanese yen\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ja\",\n \"officialLanguageNameEn\": \"Japanese\",\n \"officialLanguageNameLocal\": \"日本語 (にほんご)\",\n \"countryCallingCode\": \"81\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇯🇵\"\n },\n {\n \"countryNameEn\": \"Kenya\",\n \"countryNameLocal\": \"Kenya\",\n \"countryCode\": \"KE\",\n \"currencyCode\": \"KES\",\n \"currencyNameEn\": \"Kenyan shilling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"sw\",\n \"officialLanguageNameEn\": \"Swahili\",\n \"officialLanguageNameLocal\": \"Kiswahili\",\n \"countryCallingCode\": \"254\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇰🇪\"\n },\n {\n \"countryNameEn\": \"Kyrgyzstan\",\n \"countryNameLocal\": \"Кыргызстан, Киргизия\",\n \"countryCode\": \"KG\",\n \"currencyCode\": \"KGS\",\n \"currencyNameEn\": \"Kyrgyzstani som\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ky\",\n \"officialLanguageNameEn\": \"Kirghiz, Kyrgyz\",\n \"officialLanguageNameLocal\": \"Кыргызча, Кыргыз тили\",\n \"countryCallingCode\": \"996\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇰🇬\"\n },\n {\n \"countryNameEn\": \"Cambodia\",\n \"countryNameLocal\": \"កម្ពុជា\",\n \"countryCode\": \"KH\",\n \"currencyCode\": \"KHR\",\n \"currencyNameEn\": \"Cambodian riel\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"km\",\n \"officialLanguageNameEn\": \"Central Khmer\",\n \"officialLanguageNameLocal\": \"ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ\",\n \"countryCallingCode\": \"855\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇰🇭\"\n },\n {\n \"countryNameEn\": \"North Korea\",\n \"countryNameLocal\": \"조선민주주의인민공화국\",\n \"countryCode\": \"KP\",\n \"currencyCode\": \"KPW\",\n \"currencyNameEn\": \"North Korean won\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ko\",\n \"officialLanguageNameEn\": \"Korean\",\n \"officialLanguageNameLocal\": \"조선어\",\n \"countryCallingCode\": \"850\",\n \"areaCodes\": [],\n \"region\": \"Asia\",\n \"flag\": \"🇰🇵\"\n },\n {\n \"countryNameEn\": \"South Korea\",\n \"countryNameLocal\": \"대한민국\",\n \"countryCode\": \"KR\",\n \"currencyCode\": \"KRW\",\n \"currencyNameEn\": \"South Korean won\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ko\",\n \"officialLanguageNameEn\": \"Korean\",\n \"officialLanguageNameLocal\": \"한국어\",\n \"countryCallingCode\": \"82\",\n \"areaCodes\": [],\n \"region\": \"Asia\",\n \"flag\": \"🇰🇷\"\n },\n {\n \"countryNameEn\": \"Kiribati\",\n \"countryNameLocal\": \"Kiribati\",\n \"countryCode\": \"KI\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"686\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇰🇮\"\n },\n {\n \"countryNameEn\": \"Saint Kitts and Nevis\",\n \"countryNameLocal\": \"Saint Kitts and Nevis\",\n \"countryCode\": \"KN\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1869\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇰🇳\"\n },\n {\n \"countryNameEn\": \"Kuwait\",\n \"countryNameLocal\": \"الكويت\",\n \"countryCode\": \"KW\",\n \"currencyCode\": \"KWD\",\n \"currencyNameEn\": \"Kuwaiti dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"965\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇰🇼\"\n },\n {\n \"countryNameEn\": \"Kazakhstan\",\n \"countryNameLocal\": \"Қазақстан, Казахстан\",\n \"countryCode\": \"KZ\",\n \"currencyCode\": \"KZT\",\n \"currencyNameEn\": \"Kazakhstani tenge\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"kk\",\n \"officialLanguageNameEn\": \"Kazakh\",\n \"officialLanguageNameLocal\": \"қазақ тілі\",\n \"countryCallingCode\": \"7\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇰🇿\"\n },\n {\n \"countryNameEn\": \"Lebanon\",\n \"countryNameLocal\": \"لبنان, Liban\",\n \"countryCode\": \"LB\",\n \"currencyCode\": \"LBP\",\n \"currencyNameEn\": \"Lebanese pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"961\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇱🇧\"\n },\n {\n \"countryNameEn\": \"Saint Lucia\",\n \"countryNameLocal\": \"Saint Lucia\",\n \"countryCode\": \"LC\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1758\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇱🇨\"\n },\n {\n \"countryNameEn\": \"Liechtenstein\",\n \"countryNameLocal\": \"Liechtenstein\",\n \"countryCode\": \"LI\",\n \"currencyCode\": \"CHF\",\n \"currencyNameEn\": \"Swiss franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"de\",\n \"officialLanguageNameEn\": \"German\",\n \"officialLanguageNameLocal\": \"Deutsch\",\n \"countryCallingCode\": \"423\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇱🇮\"\n },\n {\n \"countryNameEn\": \"Sri Lanka\",\n \"countryNameLocal\": \"ශ්රී ලංකා, இலங்கை\",\n \"countryCode\": \"LK\",\n \"currencyCode\": \"LKR\",\n \"currencyNameEn\": \"Sri Lankan rupee\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"si\",\n \"officialLanguageNameEn\": \"Sinhala, Sinhalese\",\n \"officialLanguageNameLocal\": \"සිංහල\",\n \"countryCallingCode\": \"94\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇱🇰\"\n },\n {\n \"countryNameEn\": \"Liberia\",\n \"countryNameLocal\": \"Liberia\",\n \"countryCode\": \"LR\",\n \"currencyCode\": \"LRD\",\n \"currencyNameEn\": \"Liberian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"231\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇱🇷\"\n },\n {\n \"countryNameEn\": \"Lesotho\",\n \"countryNameLocal\": \"Lesotho\",\n \"countryCode\": \"LS\",\n \"currencyCode\": \"LSL\",\n \"currencyNameEn\": \"Lesotho loti\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"266\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇱🇸\"\n },\n {\n \"countryNameEn\": \"Lithuania\",\n \"countryNameLocal\": \"Lietuva\",\n \"countryCode\": \"LT\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"PVM kodas\",\n \"tinName\": \"PVM (abbrev. Pridėtinės vertės mokestis) mokėtojo kodas\",\n \"officialLanguageCode\": \"lt\",\n \"officialLanguageNameEn\": \"Lithuanian\",\n \"officialLanguageNameLocal\": \"lietuvių kalba\",\n \"countryCallingCode\": \"370\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇱🇹\"\n },\n {\n \"countryNameEn\": \"Luxembourg\",\n \"countryNameLocal\": \"Lëtzebuerg, Luxembourg, Luxemburg\",\n \"countryCode\": \"LU\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"No. TVA\",\n \"tinName\": \"Numéro d'identification à la taxe sur la valeur ajoutée\",\n \"officialLanguageCode\": \"lb\",\n \"officialLanguageNameEn\": \"Luxembourgish, Letzeburgesch\",\n \"officialLanguageNameLocal\": \"Lëtzebuergesch\",\n \"countryCallingCode\": \"352\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇱🇺\"\n },\n {\n \"countryNameEn\": \"Latvia\",\n \"countryNameLocal\": \"Latvija\",\n \"countryCode\": \"LV\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"PVN\",\n \"tinName\": \"Pievienotās vērtības nodokļa (PVN) reģistrācijas numurs\",\n \"officialLanguageCode\": \"lv\",\n \"officialLanguageNameEn\": \"Latvian\",\n \"officialLanguageNameLocal\": \"latviešu valoda\",\n \"countryCallingCode\": \"371\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇱🇻\"\n },\n {\n \"countryNameEn\": \"Libya\",\n \"countryNameLocal\": \"ليبيا\",\n \"countryCode\": \"LY\",\n \"currencyCode\": \"LYD\",\n \"currencyNameEn\": \"Libyan dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"218\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇱🇾\"\n },\n {\n \"countryNameEn\": \"Morocco\",\n \"countryNameLocal\": \"Maroc, ⵍⵎⵖⵔⵉⴱ, المغرب\",\n \"countryCode\": \"MA\",\n \"currencyCode\": \"MAD\",\n \"currencyNameEn\": \"Moroccan dirham\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"212\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇲🇦\"\n },\n {\n \"countryNameEn\": \"Monaco\",\n \"countryNameLocal\": \"Monaco\",\n \"countryCode\": \"MC\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"377\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇲🇨\"\n },\n {\n \"countryNameEn\": \"Montenegro\",\n \"countryNameLocal\": \"Crna Gora, Црна Гора\",\n \"countryCode\": \"ME\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"srp\",\n \"officialLanguageNameEn\": \"српски језик\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"382\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇲🇪\"\n },\n {\n \"countryNameEn\": \"Saint Martin (French part)\",\n \"countryNameLocal\": \"Saint-Martin\",\n \"countryCode\": \"MF\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"590\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇲🇫\"\n },\n {\n \"countryNameEn\": \"Madagascar\",\n \"countryNameLocal\": \"Madagasikara, Madagascar\",\n \"countryCode\": \"MG\",\n \"currencyCode\": \"MGA\",\n \"currencyNameEn\": \"Malagasy ariary\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"mg\",\n \"officialLanguageNameEn\": \"Malagasy\",\n \"officialLanguageNameLocal\": \"fiteny malagasy\",\n \"countryCallingCode\": \"261\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇲🇬\"\n },\n {\n \"countryNameEn\": \"Mali\",\n \"countryNameLocal\": \"Mali\",\n \"countryCode\": \"ML\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"223\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇲🇱\"\n },\n {\n \"countryNameEn\": \"Myanmar\",\n \"countryNameLocal\": \"မြန်မာ\",\n \"countryCode\": \"MM\",\n \"currencyCode\": \"MMK\",\n \"currencyNameEn\": \"Myanmar kyat\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"my\",\n \"officialLanguageNameEn\": \"Burmese\",\n \"officialLanguageNameLocal\": \"ဗမာစာ\",\n \"countryCallingCode\": \"95\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇲🇲\"\n },\n {\n \"countryNameEn\": \"Mongolia\",\n \"countryNameLocal\": \"Монгол Улс\",\n \"countryCode\": \"MN\",\n \"currencyCode\": \"MNT\",\n \"currencyNameEn\": \"Mongolian tögrög\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"mn\",\n \"officialLanguageNameEn\": \"Mongolian\",\n \"officialLanguageNameLocal\": \"Монгол хэл\",\n \"countryCallingCode\": \"976\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇲🇳\"\n },\n {\n \"countryNameEn\": \"Macao\",\n \"countryNameLocal\": \"澳門, Macau\",\n \"countryCode\": \"MO\",\n \"currencyCode\": \"MOP\",\n \"currencyNameEn\": \"Macanese pataca\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"zh-hant\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"853\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇲🇴\"\n },\n {\n \"countryNameEn\": \"Martinique\",\n \"countryNameLocal\": \"Martinique\",\n \"countryCode\": \"MQ\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"596\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇲🇶\"\n },\n {\n \"countryNameEn\": \"Mauritania\",\n \"countryNameLocal\": \"موريتانيا, Mauritanie\",\n \"countryCode\": \"MR\",\n \"currencyCode\": \"MRU\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"222\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇲🇷\"\n },\n {\n \"countryNameEn\": \"Montserrat\",\n \"countryNameLocal\": \"Montserrat\",\n \"countryCode\": \"MS\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1664\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇲🇸\"\n },\n {\n \"countryNameEn\": \"Malta\",\n \"countryNameLocal\": \"Malta\",\n \"countryCode\": \"MT\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"Vat No.\",\n \"tinName\": \"Vat reg. no.\",\n \"officialLanguageCode\": \"mt\",\n \"officialLanguageNameEn\": \"Maltese\",\n \"officialLanguageNameLocal\": \"Malti\",\n \"countryCallingCode\": \"356\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇲🇹\"\n },\n {\n \"countryNameEn\": \"Mauritius\",\n \"countryNameLocal\": \"Maurice, Mauritius\",\n \"countryCode\": \"MU\",\n \"currencyCode\": \"MUR\",\n \"currencyNameEn\": \"Mauritian rupee\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"mfe\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"230\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇲🇺\"\n },\n {\n \"countryNameEn\": \"Maldives\",\n \"countryNameLocal\": \"\",\n \"countryCode\": \"MV\",\n \"currencyCode\": \"MVR\",\n \"currencyNameEn\": \"Maldivian rufiyaa\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"dv\",\n \"officialLanguageNameEn\": \"Divehi, Dhivehi, Maldivian\",\n \"officialLanguageNameLocal\": \"ދިވެހި\",\n \"countryCallingCode\": \"960\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇲🇻\"\n },\n {\n \"countryNameEn\": \"Malawi\",\n \"countryNameLocal\": \"Malawi\",\n \"countryCode\": \"MW\",\n \"currencyCode\": \"MWK\",\n \"currencyNameEn\": \"Malawian kwacha\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"265\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇲🇼\"\n },\n {\n \"countryNameEn\": \"Mexico\",\n \"countryNameLocal\": \"México\",\n \"countryCode\": \"MX\",\n \"currencyCode\": \"MXN\",\n \"currencyNameEn\": \"Mexican peso\",\n \"tinType\": \"RFC\",\n \"tinName\": \"Registro Federal de Contribuyentes\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"52\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇲🇽\"\n },\n {\n \"countryNameEn\": \"Malaysia\",\n \"countryNameLocal\": \"\",\n \"countryCode\": \"MY\",\n \"currencyCode\": \"MYR\",\n \"currencyNameEn\": \"Malaysian ringgit\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ms\",\n \"officialLanguageNameEn\": \"Malay\",\n \"officialLanguageNameLocal\": \"Bahasa Melayu, بهاس ملايو\",\n \"countryCallingCode\": \"60\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇲🇾\"\n },\n {\n \"countryNameEn\": \"Mozambique\",\n \"countryNameLocal\": \"Mozambique\",\n \"countryCode\": \"MZ\",\n \"currencyCode\": \"MZN\",\n \"currencyNameEn\": \"Mozambican metical\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"258\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇲🇿\"\n },\n {\n \"countryNameEn\": \"Namibia\",\n \"countryNameLocal\": \"Namibia\",\n \"countryCode\": \"NA\",\n \"currencyCode\": \"NAD\",\n \"currencyNameEn\": \"Namibian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"264\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇳🇦\"\n },\n {\n \"countryNameEn\": \"New Caledonia\",\n \"countryNameLocal\": \"Nouvelle-Calédonie\",\n \"countryCode\": \"NC\",\n \"currencyCode\": \"XPF\",\n \"currencyNameEn\": \"CFP franc (franc Pacifique)\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"687\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇳🇨\"\n },\n {\n \"countryNameEn\": \"Norfolk Island\",\n \"countryNameLocal\": \"Norfolk Island\",\n \"countryCode\": \"NF\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"672\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇳🇫\"\n },\n {\n \"countryNameEn\": \"Nigeria\",\n \"countryNameLocal\": \"Nigeria\",\n \"countryCode\": \"NG\",\n \"currencyCode\": \"NGN\",\n \"currencyNameEn\": \"Nigerian naira\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"234\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇳🇬\"\n },\n {\n \"countryNameEn\": \"Nicaragua\",\n \"countryNameLocal\": \"Nicaragua\",\n \"countryCode\": \"NI\",\n \"currencyCode\": \"NIO\",\n \"currencyNameEn\": \"Nicaraguan córdoba\",\n \"tinType\": \"RUC\",\n \"tinName\": \"Registro Unico de Contribuyentes\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"505\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇳🇮\"\n },\n {\n \"countryNameEn\": \"Norway\",\n \"countryNameLocal\": \"Norge, Noreg\",\n \"countryCode\": \"NO\",\n \"currencyCode\": \"NOK\",\n \"currencyNameEn\": \"Norwegian krone\",\n \"tinType\": \"Orgnr\",\n \"tinName\": \"Organisasjonsnummer\",\n \"officialLanguageCode\": \"nb\",\n \"officialLanguageNameEn\": \"Norwegian Bokmål\",\n \"officialLanguageNameLocal\": \"Norsk Bokmål\",\n \"countryCallingCode\": \"47\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇳🇴\"\n },\n {\n \"countryNameEn\": \"Nepal\",\n \"countryNameLocal\": \"\",\n \"countryCode\": \"NP\",\n \"currencyCode\": \"NPR\",\n \"currencyNameEn\": \"Nepalese rupee\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ne\",\n \"officialLanguageNameEn\": \"Nepali\",\n \"officialLanguageNameLocal\": \"नेपाली\",\n \"countryCallingCode\": \"977\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇳🇵\"\n },\n {\n \"countryNameEn\": \"Nauru\",\n \"countryNameLocal\": \"Nauru\",\n \"countryCode\": \"NR\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"na\",\n \"officialLanguageNameEn\": \"Nauru\",\n \"officialLanguageNameLocal\": \"Dorerin Naoero\",\n \"countryCallingCode\": \"674\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇳🇷\"\n },\n {\n \"countryNameEn\": \"Niue\",\n \"countryNameLocal\": \"Niue\",\n \"countryCode\": \"NU\",\n \"currencyCode\": \"NZD\",\n \"currencyNameEn\": \"New Zealand dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"niu\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"683\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇳🇺\"\n },\n {\n \"countryNameEn\": \"New Zealand\",\n \"countryNameLocal\": \"New Zealand\",\n \"countryCode\": \"NZ\",\n \"currencyCode\": \"NZD\",\n \"currencyNameEn\": \"New Zealand dollar\",\n \"tinType\": \"NZBN\",\n \"tinName\": \"NZ Business Number\",\n \"officialLanguageCode\": \"mi\",\n \"officialLanguageNameEn\": \"Maori\",\n \"officialLanguageNameLocal\": \"te reo Māori\",\n \"countryCallingCode\": \"64\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇳🇿\"\n },\n {\n \"countryNameEn\": \"Oman\",\n \"countryNameLocal\": \"سلطنة عُمان\",\n \"countryCode\": \"OM\",\n \"currencyCode\": \"OMR\",\n \"currencyNameEn\": \"Omani rial\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"968\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇴🇲\"\n },\n {\n \"countryNameEn\": \"Panama\",\n \"countryNameLocal\": \"Panama\",\n \"countryCode\": \"PA\",\n \"currencyCode\": \"PAB\",\n \"currencyNameEn\": \"Panamanian balboa\",\n \"tinType\": \"RUC\",\n \"tinName\": \"Registro Unico de Contribuyentes\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"507\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇵🇦\"\n },\n {\n \"countryNameEn\": \"Peru\",\n \"countryNameLocal\": \"Perú\",\n \"countryCode\": \"PE\",\n \"currencyCode\": \"PEN\",\n \"currencyNameEn\": \"Peruvian sol\",\n \"tinType\": \"RUC\",\n \"tinName\": \"Registro Unico de Contribuyentes\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"51\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇵🇪\"\n },\n {\n \"countryNameEn\": \"French Polynesia\",\n \"countryNameLocal\": \"Polynésie française\",\n \"countryCode\": \"PF\",\n \"currencyCode\": \"XPF\",\n \"currencyNameEn\": \"CFP franc (franc Pacifique)\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"689\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇵🇫\"\n },\n {\n \"countryNameEn\": \"Papua New Guinea\",\n \"countryNameLocal\": \"Papua New Guinea\",\n \"countryCode\": \"PG\",\n \"currencyCode\": \"PGK\",\n \"currencyNameEn\": \"Papua New Guinean kina\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"675\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇵🇬\"\n },\n {\n \"countryNameEn\": \"Pakistan\",\n \"countryNameLocal\": \"پاکستان\",\n \"countryCode\": \"PK\",\n \"currencyCode\": \"PKR\",\n \"currencyNameEn\": \"Pakistani rupee\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"92\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇵🇰\"\n },\n {\n \"countryNameEn\": \"Poland\",\n \"countryNameLocal\": \"Polska\",\n \"countryCode\": \"PL\",\n \"currencyCode\": \"PLN\",\n \"currencyNameEn\": \"Polish złoty\",\n \"tinType\": \"NIP\",\n \"tinName\": \"numer identyfikacji podatkowej\",\n \"officialLanguageCode\": \"pl\",\n \"officialLanguageNameEn\": \"Polish\",\n \"officialLanguageNameLocal\": \"język polski, polszczyzna\",\n \"countryCallingCode\": \"48\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇵🇱\"\n },\n {\n \"countryNameEn\": \"Saint Pierre and Miquelon\",\n \"countryNameLocal\": \"Saint-Pierre-et-Miquelon\",\n \"countryCode\": \"PM\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"508\",\n \"areaCodes\": [],\n \"region\": \"North America\",\n \"flag\": \"🇵🇲\"\n },\n {\n \"countryNameEn\": \"Pitcairn\",\n \"countryNameLocal\": \"Pitcairn\",\n \"countryCode\": \"PN\",\n \"currencyCode\": \"NZD\",\n \"currencyNameEn\": \"New Zealand dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"64\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇵🇳\"\n },\n {\n \"countryNameEn\": \"Puerto Rico\",\n \"countryNameLocal\": \"Puerto Rico\",\n \"countryCode\": \"PR\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"1\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇵🇷\"\n },\n {\n \"countryNameEn\": \"Palestine, State of\",\n \"countryNameLocal\": \"Palestinian Territory\",\n \"countryCode\": \"PS\",\n \"currencyCode\": \"\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"970\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇵🇸\"\n },\n {\n \"countryNameEn\": \"Portugal\",\n \"countryNameLocal\": \"Portugal\",\n \"countryCode\": \"PT\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"NIPC\",\n \"tinName\": \"Número de Identificação de Pessoa Coletiva (NIPC)\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"351\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇵🇹\"\n },\n {\n \"countryNameEn\": \"Palau\",\n \"countryNameLocal\": \"Palau\",\n \"countryCode\": \"PW\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"680\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇵🇼\"\n },\n {\n \"countryNameEn\": \"Paraguay\",\n \"countryNameLocal\": \"Paraguay\",\n \"countryCode\": \"PY\",\n \"currencyCode\": \"PYG\",\n \"currencyNameEn\": \"Paraguayan guaraní\",\n \"tinType\": \"RUC\",\n \"tinName\": \"Registro Unico de Contribuyentes\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"595\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇵🇾\"\n },\n {\n \"countryNameEn\": \"Qatar\",\n \"countryNameLocal\": \"قطر\",\n \"countryCode\": \"QA\",\n \"currencyCode\": \"QAR\",\n \"currencyNameEn\": \"Qatari riyal\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"974\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇶🇦\"\n },\n {\n \"countryNameEn\": \"Réunion\",\n \"countryNameLocal\": \"La Réunion\",\n \"countryCode\": \"RE\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"262\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇷🇪\"\n },\n {\n \"countryNameEn\": \"Romania\",\n \"countryNameLocal\": \"România\",\n \"countryCode\": \"RO\",\n \"currencyCode\": \"RON\",\n \"currencyNameEn\": \"Romanian leu\",\n \"tinType\": \"CIF\",\n \"tinName\": \"Codul de identificare fiscală\",\n \"officialLanguageCode\": \"ro\",\n \"officialLanguageNameEn\": \"Romanian, Moldavian, Moldovan\",\n \"officialLanguageNameLocal\": \"Română\",\n \"countryCallingCode\": \"40\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇷🇴\"\n },\n {\n \"countryNameEn\": \"Serbia\",\n \"countryNameLocal\": \"Србија\",\n \"countryCode\": \"RS\",\n \"currencyCode\": \"RSD\",\n \"currencyNameEn\": \"Serbian dinar\",\n \"tinType\": \"PIB\",\n \"tinName\": \"Poreski identifikacioni broj\",\n \"officialLanguageCode\": \"sr\",\n \"officialLanguageNameEn\": \"Serbian\",\n \"officialLanguageNameLocal\": \"српски језик\",\n \"countryCallingCode\": \"381\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇷🇸\"\n },\n {\n \"countryNameEn\": \"Russia\",\n \"countryNameLocal\": \"Россия\",\n \"countryCode\": \"RU\",\n \"currencyCode\": \"RUB\",\n \"currencyNameEn\": \"Russian ruble\",\n \"tinType\": \"ИНН\",\n \"tinName\": \"Идентификационный номер налогоплательщика\",\n \"officialLanguageCode\": \"ru\",\n \"officialLanguageNameEn\": \"Russian\",\n \"officialLanguageNameLocal\": \"русский\",\n \"countryCallingCode\": \"7\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇷🇺\"\n },\n {\n \"countryNameEn\": \"Rwanda\",\n \"countryNameLocal\": \"Rwanda\",\n \"countryCode\": \"RW\",\n \"currencyCode\": \"RWF\",\n \"currencyNameEn\": \"Rwandan franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"rw\",\n \"officialLanguageNameEn\": \"Kinyarwanda\",\n \"officialLanguageNameLocal\": \"Ikinyarwanda\",\n \"countryCallingCode\": \"250\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇷🇼\"\n },\n {\n \"countryNameEn\": \"Saudi Arabia\",\n \"countryNameLocal\": \"السعودية\",\n \"countryCode\": \"SA\",\n \"currencyCode\": \"SAR\",\n \"currencyNameEn\": \"Saudi riyal\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"966\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇸🇦\"\n },\n {\n \"countryNameEn\": \"Solomon Islands\",\n \"countryNameLocal\": \"Solomon Islands\",\n \"countryCode\": \"SB\",\n \"currencyCode\": \"SBD\",\n \"currencyNameEn\": \"Solomon Islands dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"677\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇸🇧\"\n },\n {\n \"countryNameEn\": \"Seychelles\",\n \"countryNameLocal\": \"Seychelles\",\n \"countryCode\": \"SC\",\n \"currencyCode\": \"SCR\",\n \"currencyNameEn\": \"Seychelles rupee\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"248\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇨\"\n },\n {\n \"countryNameEn\": \"Sweden\",\n \"countryNameLocal\": \"Sverige\",\n \"countryCode\": \"SE\",\n \"currencyCode\": \"SEK\",\n \"currencyNameEn\": \"Swedish krona/kronor\",\n \"tinType\": \"Momsnr.\",\n \"tinName\": \"VAT-nummer\",\n \"officialLanguageCode\": \"sv\",\n \"officialLanguageNameEn\": \"Swedish\",\n \"officialLanguageNameLocal\": \"Svenska\",\n \"countryCallingCode\": \"46\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇸🇪\"\n },\n {\n \"countryNameEn\": \"Singapore\",\n \"countryNameLocal\": \"Singapore\",\n \"countryCode\": \"SG\",\n \"currencyCode\": \"SGD\",\n \"currencyNameEn\": \"Singapore dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"zh-hans\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"65\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇸🇬\"\n },\n {\n \"countryNameEn\": \"Saint Helena, Ascension and Tristan da Cunha\",\n \"countryNameLocal\": \"Saint Helena\",\n \"countryCode\": \"SH\",\n \"currencyCode\": \"SHP\",\n \"currencyNameEn\": \"Saint Helena pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"290\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇭\"\n },\n {\n \"countryNameEn\": \"Slovenia\",\n \"countryNameLocal\": \"Slovenija\",\n \"countryCode\": \"SI\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"ID za DDV\",\n \"tinName\": \"Davčna številka\",\n \"officialLanguageCode\": \"sl\",\n \"officialLanguageNameEn\": \"Slovenian\",\n \"officialLanguageNameLocal\": \"Slovenski Jezik, Slovenščina\",\n \"countryCallingCode\": \"386\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇸🇮\"\n },\n {\n \"countryNameEn\": \"Svalbard and Jan Mayen\",\n \"countryNameLocal\": \"Svalbard and Jan Mayen\",\n \"countryCode\": \"SJ\",\n \"currencyCode\": \"NOK\",\n \"currencyNameEn\": \"Norwegian krone\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"no\",\n \"officialLanguageNameEn\": \"Norwegian\",\n \"officialLanguageNameLocal\": \"Norsk\",\n \"countryCallingCode\": \"4779\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇸🇯\"\n },\n {\n \"countryNameEn\": \"Slovakia\",\n \"countryNameLocal\": \"Slovensko\",\n \"countryCode\": \"SK\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"IČ DPH\",\n \"tinName\": \"Identifikačné číslo pre daň z pridanej hodnoty\",\n \"officialLanguageCode\": \"sk\",\n \"officialLanguageNameEn\": \"Slovak\",\n \"officialLanguageNameLocal\": \"Slovenčina, Slovenský Jazyk\",\n \"countryCallingCode\": \"421\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇸🇰\"\n },\n {\n \"countryNameEn\": \"Sierra Leone\",\n \"countryNameLocal\": \"Sierra Leone\",\n \"countryCode\": \"SL\",\n \"currencyCode\": \"SLL\",\n \"currencyNameEn\": \"Sierra Leonean leone\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"232\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇱\"\n },\n {\n \"countryNameEn\": \"Republic of San Marino\",\n \"countryNameLocal\": \"Repubblica di San Marino\",\n \"countryCode\": \"SM\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"C.O.E.\",\n \"tinName\": \"Codice operatore economico\",\n \"officialLanguageCode\": \"it\",\n \"officialLanguageNameEn\": \"Italian\",\n \"officialLanguageNameLocal\": \"Italiano\",\n \"countryCallingCode\": \"378\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇸🇲\"\n },\n {\n \"countryNameEn\": \"Senegal\",\n \"countryNameLocal\": \"Sénégal\",\n \"countryCode\": \"SN\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"221\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇳\"\n },\n {\n \"countryNameEn\": \"Somalia\",\n \"countryNameLocal\": \"Somalia, الصومال\",\n \"countryCode\": \"SO\",\n \"currencyCode\": \"SOS\",\n \"currencyNameEn\": \"Somali shilling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"so\",\n \"officialLanguageNameEn\": \"Somali\",\n \"officialLanguageNameLocal\": \"Soomaaliga, af Soomaali\",\n \"countryCallingCode\": \"252\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇸🇴\"\n },\n {\n \"countryNameEn\": \"Suriname\",\n \"countryNameLocal\": \"Suriname\",\n \"countryCode\": \"SR\",\n \"currencyCode\": \"SRD\",\n \"currencyNameEn\": \"Surinamese dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"597\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇸🇷\"\n },\n {\n \"countryNameEn\": \"South Sudan\",\n \"countryNameLocal\": \"South Sudan\",\n \"countryCode\": \"SS\",\n \"currencyCode\": \"SSP\",\n \"currencyNameEn\": \"South Sudanese pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"211\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇸\"\n },\n {\n \"countryNameEn\": \"Sao Tome and Principe\",\n \"countryNameLocal\": \"São Tomé e Príncipe\",\n \"countryCode\": \"ST\",\n \"currencyCode\": \"STN\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"239\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇹\"\n },\n {\n \"countryNameEn\": \"El Salvador\",\n \"countryNameLocal\": \"El Salvador\",\n \"countryCode\": \"SV\",\n \"currencyCode\": \"SVC\",\n \"currencyNameEn\": \"Salvadoran colón\",\n \"tinType\": \"NIT\",\n \"tinName\": \"Número de Identificación Tributaria\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"503\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇸🇻\"\n },\n {\n \"countryNameEn\": \"Sint Maarten (Dutch part)\",\n \"countryNameLocal\": \"Sint Maarten\",\n \"countryCode\": \"SX\",\n \"currencyCode\": \"ANG\",\n \"currencyNameEn\": \"Netherlands Antillean guilder\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"1721\",\n \"areaCodes\": [],\n \"region\": \"Unknown\",\n \"flag\": \"🇸🇽\"\n },\n {\n \"countryNameEn\": \"Syrian Arab Republic\",\n \"countryNameLocal\": \"سوريا, Sūriyya\",\n \"countryCode\": \"SY\",\n \"currencyCode\": \"SYP\",\n \"currencyNameEn\": \"Syrian pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"963\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇸🇾\"\n },\n {\n \"countryNameEn\": \"Chad\",\n \"countryNameLocal\": \"Tchad, تشاد\",\n \"countryCode\": \"TD\",\n \"currencyCode\": \"XAF\",\n \"currencyNameEn\": \"CFA franc BEAC\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"235\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇹🇩\"\n },\n {\n \"countryNameEn\": \"Togo\",\n \"countryNameLocal\": \"Togo\",\n \"countryCode\": \"TG\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"228\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇹🇬\"\n },\n {\n \"countryNameEn\": \"Thailand\",\n \"countryNameLocal\": \"ประเทศไทย\",\n \"countryCode\": \"TH\",\n \"currencyCode\": \"THB\",\n \"currencyNameEn\": \"Thai baht\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"th\",\n \"officialLanguageNameEn\": \"Thai\",\n \"officialLanguageNameLocal\": \"ไทย\",\n \"countryCallingCode\": \"66\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇭\"\n },\n {\n \"countryNameEn\": \"Tajikistan\",\n \"countryNameLocal\": \",\",\n \"countryCode\": \"TJ\",\n \"currencyCode\": \"TJS\",\n \"currencyNameEn\": \"Tajikistani somoni\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"tg\",\n \"officialLanguageNameEn\": \"Tajik\",\n \"officialLanguageNameLocal\": \"тоҷикӣ, toçikī, تاجیکی\",\n \"countryCallingCode\": \"992\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇯\"\n },\n {\n \"countryNameEn\": \"Tokelau\",\n \"countryNameLocal\": \"Tokelau\",\n \"countryCode\": \"TK\",\n \"currencyCode\": \"NZD\",\n \"currencyNameEn\": \"New Zealand dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"tkl\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"690\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇰\"\n },\n {\n \"countryNameEn\": \"Timor-Leste\",\n \"countryNameLocal\": \"Timor-Leste, Timor Lorosa'e\",\n \"countryCode\": \"TL\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"pt\",\n \"officialLanguageNameEn\": \"Portuguese\",\n \"officialLanguageNameLocal\": \"Português\",\n \"countryCallingCode\": \"670\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇱\"\n },\n {\n \"countryNameEn\": \"Turkmenistan\",\n \"countryNameLocal\": \"Türkmenistan\",\n \"countryCode\": \"TM\",\n \"currencyCode\": \"TMT\",\n \"currencyNameEn\": \"Turkmenistan manat\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"tk\",\n \"officialLanguageNameEn\": \"Turkmen\",\n \"officialLanguageNameLocal\": \"Türkmen, Түркмен\",\n \"countryCallingCode\": \"993\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇲\"\n },\n {\n \"countryNameEn\": \"Tunisia\",\n \"countryNameLocal\": \"تونس, Tunisie\",\n \"countryCode\": \"TN\",\n \"currencyCode\": \"TND\",\n \"currencyNameEn\": \"Tunisian dinar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"216\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇹🇳\"\n },\n {\n \"countryNameEn\": \"Tonga\",\n \"countryNameLocal\": \"Tonga\",\n \"countryCode\": \"TO\",\n \"currencyCode\": \"TOP\",\n \"currencyNameEn\": \"Tongan paʻanga\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"676\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇴\"\n },\n {\n \"countryNameEn\": \"Turkey\",\n \"countryNameLocal\": \"Türkiye\",\n \"countryCode\": \"TR\",\n \"currencyCode\": \"TRY\",\n \"currencyNameEn\": \"Turkish lira\",\n \"tinType\": \"KDV\",\n \"tinName\": \"Vergi Kimlik Numarası\",\n \"officialLanguageCode\": \"tr\",\n \"officialLanguageNameEn\": \"Turkish\",\n \"officialLanguageNameLocal\": \"Türkçe\",\n \"countryCallingCode\": \"90\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇹🇷\"\n },\n {\n \"countryNameEn\": \"Trinidad and Tobago\",\n \"countryNameLocal\": \"Trinidad and Tobago\",\n \"countryCode\": \"TT\",\n \"currencyCode\": \"TTD\",\n \"currencyNameEn\": \"Trinidad and Tobago dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"868\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇹🇹\"\n },\n {\n \"countryNameEn\": \"Tuvalu\",\n \"countryNameLocal\": \"Tuvalu\",\n \"countryCode\": \"TV\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"688\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇻\"\n },\n {\n \"countryNameEn\": \"United Republic of Tanzania\",\n \"countryNameLocal\": \"Tanzania\",\n \"countryCode\": \"TZ\",\n \"currencyCode\": \"TZS\",\n \"currencyNameEn\": \"Tanzanian shilling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"sw\",\n \"officialLanguageNameEn\": \"Swahili\",\n \"officialLanguageNameLocal\": \"Kiswahili\",\n \"countryCallingCode\": \"255\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇹🇿\"\n },\n {\n \"countryNameEn\": \"Ukraine\",\n \"countryNameLocal\": \"Україна\",\n \"countryCode\": \"UA\",\n \"currencyCode\": \"UAH\",\n \"currencyNameEn\": \"Ukrainian hryvnia\",\n \"tinType\": \"ІНПП\",\n \"tinName\": \"Ідентифікаційний номер платника податків\",\n \"officialLanguageCode\": \"uk\",\n \"officialLanguageNameEn\": \"Ukrainian\",\n \"officialLanguageNameLocal\": \"Українська\",\n \"countryCallingCode\": \"380\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇺🇦\"\n },\n {\n \"countryNameEn\": \"Uganda\",\n \"countryNameLocal\": \"Uganda\",\n \"countryCode\": \"UG\",\n \"currencyCode\": \"UGX\",\n \"currencyNameEn\": \"Ugandan shilling\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"256\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇺🇬\"\n },\n {\n \"countryNameEn\": \"United States of America\",\n \"countryNameLocal\": \"United States of America\",\n \"countryCode\": \"US\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"EIN\",\n \"tinName\": \"Tax Identification Number\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1\",\n \"areaCodes\": [],\n \"region\": \"North America\",\n \"flag\": \"🇺🇸\"\n },\n {\n \"countryNameEn\": \"Uruguay\",\n \"countryNameLocal\": \"Uruguay\",\n \"countryCode\": \"UY\",\n \"currencyCode\": \"UYU\",\n \"currencyNameEn\": \"Uruguayan peso\",\n \"tinType\": \"RUT\",\n \"tinName\": \"Registro Único Tributario\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"598\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇺🇾\"\n },\n {\n \"countryNameEn\": \"Uzbekistan\",\n \"countryNameLocal\": \"\",\n \"countryCode\": \"UZ\",\n \"currencyCode\": \"UZS\",\n \"currencyNameEn\": \"Uzbekistan som\",\n \"tinType\": \"СТИР\",\n \"tinName\": \"Солиқ тўловчиларнинг идентификация рақами\",\n \"officialLanguageCode\": \"uz\",\n \"officialLanguageNameEn\": \"Uzbek\",\n \"officialLanguageNameLocal\": \"Oʻzbek, Ўзбек, أۇزبېك\",\n \"countryCallingCode\": \"998\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇺🇿\"\n },\n {\n \"countryNameEn\": \"Saint Vincent and the Grenadines\",\n \"countryNameLocal\": \"Saint Vincent and the Grenadines\",\n \"countryCode\": \"VC\",\n \"currencyCode\": \"XCD\",\n \"currencyNameEn\": \"East Caribbean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1784\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇻🇨\"\n },\n {\n \"countryNameEn\": \"Venezuela (Bolivarian Republic of)\",\n \"countryNameLocal\": \"Venezuela\",\n \"countryCode\": \"VE\",\n \"currencyCode\": \"VES\",\n \"currencyNameEn\": \"\",\n \"tinType\": \"RIF\",\n \"tinName\": \"Registro de Informacion Fiscal\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"58\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇻🇪\"\n },\n {\n \"countryNameEn\": \"Virgin Islands (British)\",\n \"countryNameLocal\": \"British Virgin Islands\",\n \"countryCode\": \"VG\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1284\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇻🇬\"\n },\n {\n \"countryNameEn\": \"Virgin Islands (U.S.)\",\n \"countryNameLocal\": \"United States Virgin Islands\",\n \"countryCode\": \"VI\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1340\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇻🇮\"\n },\n {\n \"countryNameEn\": \"Vietnam\",\n \"countryNameLocal\": \"Việt Nam\",\n \"countryCode\": \"VN\",\n \"currencyCode\": \"VND\",\n \"currencyNameEn\": \"Vietnamese đồng\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"vi\",\n \"officialLanguageNameEn\": \"Vietnamese\",\n \"officialLanguageNameLocal\": \"Tiếng Việt\",\n \"countryCallingCode\": \"84\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇻🇳\"\n },\n {\n \"countryNameEn\": \"Vanuatu\",\n \"countryNameLocal\": \"Vanuatu\",\n \"countryCode\": \"VU\",\n \"currencyCode\": \"VUV\",\n \"currencyNameEn\": \"Vanuatu vatu\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"bi\",\n \"officialLanguageNameEn\": \"Bislama\",\n \"officialLanguageNameLocal\": \"Bislama\",\n \"countryCallingCode\": \"678\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇻🇺\"\n },\n {\n \"countryNameEn\": \"Wallis and Futuna\",\n \"countryNameLocal\": \"Wallis-et-Futuna\",\n \"countryCode\": \"WF\",\n \"currencyCode\": \"XPF\",\n \"currencyNameEn\": \"CFP franc (franc Pacifique)\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"681\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇼🇫\"\n },\n {\n \"countryNameEn\": \"Samoa\",\n \"countryNameLocal\": \"Samoa\",\n \"countryCode\": \"WS\",\n \"currencyCode\": \"WST\",\n \"currencyNameEn\": \"Samoan tala\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"sm\",\n \"officialLanguageNameEn\": \"Samoan\",\n \"officialLanguageNameLocal\": \"gagana fa'a Samoa\",\n \"countryCallingCode\": \"685\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇼🇸\"\n },\n {\n \"countryNameEn\": \"Yemen\",\n \"countryNameLocal\": \"اليَمَن\",\n \"countryCode\": \"YE\",\n \"currencyCode\": \"YER\",\n \"currencyNameEn\": \"Yemeni rial\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"967\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇾🇪\"\n },\n {\n \"countryNameEn\": \"Mayotte\",\n \"countryNameLocal\": \"Mayotte\",\n \"countryCode\": \"YT\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"262\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇾🇹\"\n },\n {\n \"countryNameEn\": \"South Africa\",\n \"countryNameLocal\": \"South Africa\",\n \"countryCode\": \"ZA\",\n \"currencyCode\": \"ZAR\",\n \"currencyNameEn\": \"South African rand\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"27\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇿🇦\"\n },\n {\n \"countryNameEn\": \"Zambia\",\n \"countryNameLocal\": \"Zambia\",\n \"countryCode\": \"ZM\",\n \"currencyCode\": \"ZMW\",\n \"currencyNameEn\": \"Zambian kwacha\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"260\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇿🇲\"\n },\n {\n \"countryNameEn\": \"Zimbabwe\",\n \"countryNameLocal\": \"Zimbabwe\",\n \"countryCode\": \"ZW\",\n \"currencyCode\": \"ZWL\",\n \"currencyNameEn\": \"Zimbabwean dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"263\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇿🇼\"\n },\n {\n \"countryNameEn\": \"Eswatini\",\n \"countryNameLocal\": \"Swaziland\",\n \"countryCode\": \"SZ\",\n \"currencyCode\": \"SZL\",\n \"currencyNameEn\": \"Swazi lilangeni\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"268\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇸🇿\"\n },\n {\n \"countryNameEn\": \"North Macedonia\",\n \"countryNameLocal\": \"Македонија\",\n \"countryCode\": \"MK\",\n \"currencyCode\": \"MKD\",\n \"currencyNameEn\": \"Macedonian denar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"mk\",\n \"officialLanguageNameEn\": \"Macedonian\",\n \"officialLanguageNameLocal\": \"македонски јазик\",\n \"countryCallingCode\": \"389\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇲🇰\"\n },\n {\n \"countryNameEn\": \"Philippines\",\n \"countryNameLocal\": \"Philippines\",\n \"countryCode\": \"PH\",\n \"currencyCode\": \"PHP\",\n \"currencyNameEn\": \"Philippine peso\",\n \"tinType\": \"TIN\",\n \"tinName\": \"Tax Identification Number\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"63\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇵🇭\"\n },\n {\n \"countryNameEn\": \"Netherlands\",\n \"countryNameLocal\": \"Nederland\",\n \"countryCode\": \"NL\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"Btw-nr.\",\n \"tinName\": \"Btw-nummer\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"31\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇳🇱\"\n },\n {\n \"countryNameEn\": \"United Arab Emirates\",\n \"countryNameLocal\": \"دولة الإمارات العربيّة المتّحدة\",\n \"countryCode\": \"AE\",\n \"currencyCode\": \"AED\",\n \"currencyNameEn\": \"United Arab Emirates dirham\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"971\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇦🇪\"\n },\n {\n \"countryNameEn\": \"Republic of Moldova\",\n \"countryNameLocal\": \"Moldova, Молдавия\",\n \"countryCode\": \"MD\",\n \"currencyCode\": \"MDL\",\n \"currencyNameEn\": \"Moldovan leu\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ro\",\n \"officialLanguageNameEn\": \"Romanian, Moldavian, Moldovan\",\n \"officialLanguageNameLocal\": \"Română\",\n \"countryCallingCode\": \"373\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇲🇩\"\n },\n {\n \"countryNameEn\": \"Gambia\",\n \"countryNameLocal\": \"The Gambia\",\n \"countryCode\": \"GM\",\n \"currencyCode\": \"GMD\",\n \"currencyNameEn\": \"Gambian dalasi\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"220\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇬🇲\"\n },\n {\n \"countryNameEn\": \"Dominican Republic\",\n \"countryNameLocal\": \"República Dominicana\",\n \"countryCode\": \"DO\",\n \"currencyCode\": \"DOP\",\n \"currencyNameEn\": \"Dominican peso\",\n \"tinType\": \"RNC\",\n \"tinName\": \"Registro Nacional del Contribuyente\",\n \"officialLanguageCode\": \"es\",\n \"officialLanguageNameEn\": \"Spanish, Castilian\",\n \"officialLanguageNameLocal\": \"Español\",\n \"countryCallingCode\": \"1\",\n \"areaCodes\": [],\n \"region\": \"South/Latin America\",\n \"flag\": \"🇩🇴\"\n },\n {\n \"countryNameEn\": \"Sudan\",\n \"countryNameLocal\": \"السودان\",\n \"countryCode\": \"SD\",\n \"currencyCode\": \"SDG\",\n \"currencyNameEn\": \"Sudanese pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"ar\",\n \"officialLanguageNameEn\": \"Arabic\",\n \"officialLanguageNameLocal\": \"العربية\",\n \"countryCallingCode\": \"249\",\n \"areaCodes\": [],\n \"region\": \"Arab States\",\n \"flag\": \"🇸🇩\"\n },\n {\n \"countryNameEn\": \"Lao People's Democratic Republic\",\n \"countryNameLocal\": \"ປະຊາຊົນລາວ\",\n \"countryCode\": \"LA\",\n \"currencyCode\": \"LAK\",\n \"currencyNameEn\": \"Lao kip\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"lo\",\n \"officialLanguageNameEn\": \"Lao\",\n \"officialLanguageNameLocal\": \"ພາສາລາວ\",\n \"countryCallingCode\": \"856\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇱🇦\"\n },\n {\n \"countryNameEn\": \"Taiwan, Province of China\",\n \"countryNameLocal\": \"Taiwan\",\n \"countryCode\": \"TW\",\n \"currencyCode\": \"TWD\",\n \"currencyNameEn\": \"New Taiwan dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"zh-hant\",\n \"officialLanguageNameEn\": \"\",\n \"officialLanguageNameLocal\": \"\",\n \"countryCallingCode\": \"886\",\n \"areaCodes\": [],\n \"region\": \"Asia & Pacific\",\n \"flag\": \"🇹🇼\"\n },\n {\n \"countryNameEn\": \"Republic of the Congo\",\n \"countryNameLocal\": \"République du Congo\",\n \"countryCode\": \"CG\",\n \"currencyCode\": \"XAF\",\n \"currencyNameEn\": \"CFA franc BEAC\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"242\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇨🇬\"\n },\n {\n \"countryNameEn\": \"Czechia\",\n \"countryNameLocal\": \"Česká republika\",\n \"countryCode\": \"CZ\",\n \"currencyCode\": \"CZK\",\n \"currencyNameEn\": \"Czech koruna\",\n \"tinType\": \"DIČ\",\n \"tinName\": \"Daňové identifikační číslo\",\n \"officialLanguageCode\": \"cs\",\n \"officialLanguageNameEn\": \"Czech\",\n \"officialLanguageNameLocal\": \"Čeština\",\n \"countryCallingCode\": \"420\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇨🇿\"\n },\n {\n \"countryNameEn\": \"United Kingdom\",\n \"countryNameLocal\": \"Great Britain\",\n \"countryCode\": \"GB\",\n \"currencyCode\": \"GBP\",\n \"currencyNameEn\": \"Pound sterling\",\n \"tinType\": \"VAT Reg No\",\n \"tinName\": \"Value added tax registration number\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"44\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇬🇧\"\n },\n {\n \"countryNameEn\": \"Niger\",\n \"countryNameLocal\": \"Niger\",\n \"countryCode\": \"NE\",\n \"currencyCode\": \"XOF\",\n \"currencyNameEn\": \"CFA franc BCEAO\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"227\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇳🇪\"\n },\n {\n \"countryNameEn\": \"Democratic Republic of the Congo\",\n \"countryNameLocal\": \"Democratic Republic of the Congo\",\n \"countryCode\": \"CD\",\n \"currencyCode\": \"CDF\",\n \"currencyNameEn\": \"Congolese franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"243\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇨🇩\",\n },\n {\n \"countryNameEn\": \"Commonwealth of The Bahamas\",\n \"countryNameLocal\": \"Commonwealth of The Bahamas\",\n \"countryCode\": \"BS\",\n \"currencyCode\": \"BSD\",\n \"currencyNameEn\": \"Bahamian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1 242\",\n \"areaCodes\": [],\n \"region\": \"Caribbean\",\n \"flag\": \"🇧🇸\",\n },\n {\n \"countryNameEn\": \"Cocos (Keeling) Islands\",\n \"countryNameLocal\": \"Pulu Kokos (Keeling)\",\n \"countryCode\": \"CC\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"61 891\",\n \"areaCodes\": [],\n \"region\": \"Australia\",\n \"flag\": \"🇨🇨\",\n },\n {\n \"countryNameEn\": \"Central African Republic\",\n \"countryNameLocal\": \"République centrafricaine\",\n \"countryCode\": \"CF\",\n \"currencyCode\": \"XAF\",\n \"currencyNameEn\": \"Central African CFA\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"236\",\n \"areaCodes\": [],\n \"region\": \"Africa\",\n \"flag\": \"🇨🇫\",\n },\n {\n \"countryNameEn\": \"Cook Islands\",\n \"countryNameLocal\": \"Kūki 'Āirani\",\n \"countryCode\": \"CK\",\n \"currencyCode\": \"NZD\",\n \"currencyNameEn\": \"New Zealand dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"682\",\n \"areaCodes\": [],\n \"region\": \"South Pacific Ocean\",\n \"flag\": \"🇨🇰\",\n },\n {\n \"countryNameEn\": \"Falkland Islands\",\n \"countryNameLocal\": \"Falkland Islands\",\n \"countryCode\": \"FK\",\n \"currencyCode\": \"FKP\",\n \"currencyNameEn\": \"Falklands pound\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"500\",\n \"areaCodes\": [],\n \"region\": \"South Atlantic Ocean\",\n \"flag\": \"🇫🇰\",\n },\n {\n \"countryNameEn\": \"Faroe Islands\",\n \"countryNameLocal\": \"Færøerne\",\n \"countryCode\": \"FO\",\n \"currencyCode\": \"DKK\",\n \"currencyNameEn\": \"Faroese króna\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"da\",\n \"officialLanguageNameEn\": \"Danish\",\n \"officialLanguageNameLocal\": \"dansk\",\n \"countryCallingCode\": \"298\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇫🇴\",\n },\n {\n \"countryNameEn\": \"Territory of Heard Island and McDonald Islands\",\n \"countryNameLocal\": \"Territory of Heard Island and McDonald Islands\",\n \"countryCode\": \"HM\",\n \"currencyCode\": \"AUD\",\n \"currencyNameEn\": \"Australian dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"672\",\n \"areaCodes\": [],\n \"region\": \"Indian Ocean\",\n \"flag\": \"🇭🇲\",\n },\n {\n \"countryNameEn\": \"British Indian Ocean Territory\",\n \"countryNameLocal\": \"British Indian Ocean Territory\",\n \"countryCode\": \"IO\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States Dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"246\",\n \"areaCodes\": [],\n \"region\": \"Indian Ocean\",\n \"flag\": \"🇮🇴\",\n },\n {\n \"countryNameEn\": \"Comoros\",\n \"countryNameLocal\": \"Umoja wa Komori\",\n \"countryCode\": \"KM\",\n \"currencyCode\": \"KMF\",\n \"currencyNameEn\": \"Comorian franc\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"269\",\n \"areaCodes\": [],\n \"region\": \"Indian Ocean\",\n \"flag\": \"🇰🇲\",\n },\n {\n \"countryNameEn\": \"Cayman Islands\",\n \"countryNameLocal\": \"Cayman Islands\",\n \"countryCode\": \"KY\",\n \"currencyCode\": \"KYD\",\n \"currencyNameEn\": \"Cayman Islands dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1 345\",\n \"areaCodes\": [],\n \"region\": \"Caribbean Sea\",\n \"flag\": \"🇰🇾\",\n },\n {\n \"countryNameEn\": \"Republic of the Marshall Islands\",\n \"countryNameLocal\": \"Aolepān Aorōkin Ṃajeḷ\",\n \"countryCode\": \"MH\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"692\",\n \"areaCodes\": [],\n \"region\": \"Pacific Ocean\",\n \"flag\": \"🇲🇭\",\n },\n {\n \"countryNameEn\": \"Commonwealth of the Northern Mariana Islands\",\n \"countryNameLocal\": \"Sankattan Siha Na Islas Mariånas\",\n \"countryCode\": \"MP\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1 670\",\n \"areaCodes\": [],\n \"region\": \"Pacific Ocean\",\n \"flag\": \"🇲🇵\",\n },\n {\n \"countryNameEn\": \"Turks and Caicos Islands\",\n \"countryNameLocal\": \"Turks and Caicos Islands\",\n \"countryCode\": \"TC\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1 649\",\n \"areaCodes\": [],\n \"region\": \"Atlantic Ocean\",\n \"flag\": \"🇹🇨\",\n },\n {\n \"countryNameEn\": \"French Southern and Antarctic Lands\",\n \"countryNameLocal\": \"Terres australes et antarctiques françaises\",\n \"countryCode\": \"TF\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"fr\",\n \"officialLanguageNameEn\": \"French\",\n \"officialLanguageNameLocal\": \"Français\",\n \"countryCallingCode\": \"672\",\n \"areaCodes\": [],\n \"region\": \"Indian Ocean\",\n \"flag\": \"🇹🇫\",\n },\n {\n \"countryNameEn\": \"United States Minor Outlying Islands\",\n \"countryNameLocal\": \"United States Minor Outlying Islands\",\n \"countryCode\": \"UM\",\n \"currencyCode\": \"USD\",\n \"currencyNameEn\": \"United States dollar\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"en\",\n \"officialLanguageNameEn\": \"English\",\n \"officialLanguageNameLocal\": \"English\",\n \"countryCallingCode\": \"1\",\n \"areaCodes\": [],\n \"region\": \"Pacific Ocean\",\n \"flag\": \"🇺🇲\",\n },\n {\n \"countryNameEn\": \"Holy See\",\n \"countryNameLocal\": \"Sancta Sedes\",\n \"countryCode\": \"VA\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"la\",\n \"officialLanguageNameEn\": \"Latin\",\n \"officialLanguageNameLocal\": \"lingua latīna\",\n \"countryCallingCode\": \"39\",\n \"areaCodes\": [],\n \"region\": \"Europe\",\n \"flag\": \"🇻🇦\",\n },\n {\n \"countryNameEn\": \"Republic of Kosovo\",\n \"countryNameLocal\": \"Republika e Kosovës\",\n \"countryCode\": \"XK\",\n \"currencyCode\": \"EUR\",\n \"currencyNameEn\": \"Euro\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"sq\",\n \"officialLanguageNameEn\": \"Albanian\",\n \"officialLanguageNameLocal\": \"Shqip\",\n \"countryCallingCode\": \"383\",\n \"region\": \"Europe\",\n \"flag\": \"🇽🇰\",\n },\n {\n \"countryNameEn\": \"Netherlands Antilles\",\n \"countryNameLocal\": \"Nederlandse Antillen\",\n \"countryCode\": \"AN\",\n \"currencyCode\": \"ANG\",\n \"currencyNameEn\": \"Netherlands Antillean guilder\",\n \"tinType\": \"\",\n \"tinName\": \"\",\n \"officialLanguageCode\": \"nl\",\n \"officialLanguageNameEn\": \"Dutch, Flemish\",\n \"officialLanguageNameLocal\": \"Nederlands, Vlaams\",\n \"countryCallingCode\": \"599\",\n \"region\": \"Europe\",\n \"flag\": \"🇧🇶\",\n },\n]\n","const groupBy = require('./utils/groupBy')\nconst supplant = require('./utils/supplant')\nconst countriesData = require('./countriesData')\n\nmodule.exports = { \n /**\n * Returns some module utils\n */\n utils: {\n groupBy: groupBy\n },\n\n /**\n * Returns the list with all the countries data\n */\n all: function () {\n return countriesData\n },\n /**\n * Filters the list of countries and returns those matching with the filter criteria\n * @param {String} countryProperty - The property to use in the filter. Must be any of the country properties (countryCode, currencyCode, etc)\n * @param {String} value - The value to use in the filter\n */\n filter: function (countryProperty, value) {\n return countriesData.filter(countryData => countryData[countryProperty] === value)\n },\n /**\n * Find a country by a property and return the first match\n * @param {String} countryProperty - The property to use in the search. Must be any of the country properties (countryCode, currencyCode, etc)\n * @param {String} value - The value to use in the filter\n */\n findOne: function (countryProperty, value) {\n return countriesData.find(countryData => countryData[countryProperty] === value)\n },\n /**\n * Returns a collection with fields mapped as requested\n * @param {*} fields - Map of fields and placeholders \n */\n customArray: function (fields = { name: '{countryNameEn} ({countryCode})', value: '{countryCode}'}, { sortBy, sortDataBy, filter } = {}) {\n const finalCollection = []\n\n let data = countriesData\n if (typeof filter === 'function') {\n data = data.filter(filter)\n }\n\n if (sortDataBy) {\n // ignore upper and lowercase\n const collator = new Intl.Collator([], { sensitivity:'accent' })\n data.sort((a, b) => collator.compare(a[sortDataBy], b[sortDataBy]))\n }\n\n data.forEach(countryData => {\n let collectionObject = {}\n for (const field in fields) {\n collectionObject[field] = supplant(fields[field], countryData)\n }\n finalCollection.push(collectionObject)\n })\n\n if (sortBy && fields[sortBy]) {\n // ignore upper and lowercase\n const collator = new Intl.Collator([], {sensitivity:'accent'})\n finalCollection.sort((a, b) => collator.compare(a[sortBy], b[sortBy]))\n }\n\n return finalCollection\n },\n /**\n * Returns a custom object with the passed key as object key and a value made up with\n * values set in the placeholders of the label variable\n * @param {*} key - Key used to construct the object to return\n * @param {*} label - Placeholder like string, with all the fields that you want to use\n */\n customList: function (key = 'countryCode', label = '{countryNameEn} ({countryCode})', { filter } = {}) {\n const finalObject = {}\n let data = countriesData\n if (typeof filter === 'function') {\n data = data.filter(filter)\n }\n data.forEach(countryData => {\n const value = supplant(label, countryData)\n finalObject[countryData[key]] = value\n })\n\n return finalObject\n }\n}\n","\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar globalObject = getGlobal();\n\nmodule.exports = exports = globalObject.fetch;\n\n// Needed for TypeScript and Webpack.\nif (globalObject.fetch) {\n\texports.default = globalObject.fetch.bind(globalObject);\n}\n\nexports.Headers = globalObject.Headers;\nexports.Request = globalObject.Request;\nexports.Response = globalObject.Response;\n","export const URL = globalThis.URL;\nexport const URLSearchParams = globalThis.URLSearchParams;\nexport const parse = function(urlString, parseQueryString, slashesDenoteHost) {\n const url = new URL(urlString);\n if (!parseQueryString && !slashesDenoteHost) {\n return url;\n }\n throw new Error(\"parseQueryString and slashesDenoteHost are unsupported\");\n};\nexport const resolve = function(from, to) {\n const resolvedUrl = new URL(to, new URL(from, \"resolve://\"));\n if (resolvedUrl.protocol === \"resolve:\") {\n const { pathname, search, hash } = resolvedUrl;\n return pathname + search + hash;\n }\n return resolvedUrl.toString();\n};\nexport const urlToHttpOptions = function(url) {\n return {\n protocol: url.protocol,\n hostname: url.hostname,\n hash: url.hash,\n search: url.search,\n pathname: url.pathname,\n path: url.pathname + url.search || \"\",\n href: url.href,\n port: url.port,\n // eslint-disable-next-line unicorn/prefer-logical-operator-over-ternary\n auth: url.username ? url.username + url.password ? \":\" + url.password : \"\" : \"\"\n };\n};\nexport const format = function(urlInput, options) {\n let url;\n if (typeof urlInput === \"string\") {\n url = new URL(urlInput);\n } else if (urlInput instanceof URL) {\n url = urlInput;\n } else {\n throw new TypeError(\"format urlObject is not supported\");\n }\n if (options) {\n if (options.auth === false) {\n url.username = \"\";\n url.password = \"\";\n }\n if (options.fragment === false) {\n url.hash = \"\";\n }\n if (options.search === false) {\n url.search = \"\";\n }\n }\n return url.toString();\n};\nexport const domainToASCII = function(domain) {\n return domain;\n};\nexport const domainToUnicode = function(domain) {\n return domain;\n};\nexport const pathToFileURL = function(path) {\n return new URL(path);\n};\nexport const fileURLToPath = function(url) {\n if (typeof url === \"string\") {\n url = new URL(url);\n }\n return url.pathname;\n};\nexport default {\n URL,\n URLSearchParams,\n domainToASCII,\n domainToUnicode,\n fileURLToPath,\n format,\n parse,\n pathToFileURL,\n resolve,\n urlToHttpOptions\n};\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var ERROR_MSG, EU_COUNTRIES_CODES, exports, getReadableErrorMsg, headers, https, parseSoapResponse, parsedUrl, serviceUrl, soapBodyTemplate, url,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n url = require('url');\n\n https = require('https');\n\n serviceUrl = 'https://ec.europa.eu/taxation_customs/vies/services/checkVatService';\n\n parsedUrl = url.parse(serviceUrl);\n\n soapBodyTemplate = '\\n \\n \\n \\n \\n _country_code_placeholder_\\n _vat_number_placeholder_\\n \\n \\n';\n\n EU_COUNTRIES_CODES = ['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'EL', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'XI'];\n\n ERROR_MSG = {\n 'INVALID_INPUT': 'The provided CountryCode is invalid or the VAT number is empty',\n 'SERVICE_UNAVAILABLE': 'The VIES VAT service is unavailable, please try again later',\n 'MS_UNAVAILABLE': 'The VAT database of the requested member country is unavailable, please try again later',\n 'MS_MAX_CONCURRENT_REQ': 'The VAT database of the requested member country has had too many requests, please try again later',\n 'TIMEOUT': 'The request to VAT database of the requested member country has timed out, please try again later',\n 'SERVER_BUSY': 'The service cannot process your request, please try again later',\n 'UNKNOWN': 'Unknown error'\n };\n\n headers = {\n 'Content-Type': 'text/xml; charset=utf-8',\n 'User-Agent': 'node-soap',\n 'Accept': 'text/html,application/xhtml+xml,application/xml,text/xml;q=0.9,*/*;q=0.8',\n 'Accept-Encoding': 'none',\n 'Accept-Charset': 'utf-8',\n 'Connection': 'close',\n 'Host': parsedUrl.hostname\n };\n\n getReadableErrorMsg = function(faultstring) {\n if (ERROR_MSG[faultstring] != null) {\n return ERROR_MSG[faultstring];\n } else {\n return ERROR_MSG['UNKNOWN'];\n }\n };\n\n parseSoapResponse = function(soapMessage) {\n var hasFault, parseField, ret;\n parseField = function(field) {\n var err, match, regex;\n regex = new RegExp(\"<\" + field + \">\\((\\.|\\\\s)\\*?\\)\" + field + \">\", 'gm');\n match = regex.exec(soapMessage);\n if (!match) {\n err = new Error(\"Failed to parseField \" + field);\n err.soapMessage = soapMessage;\n throw err;\n }\n return match[1];\n };\n hasFault = soapMessage.match(/\\S+<\\/env:Fault>/g);\n if (hasFault) {\n ret = {\n faultCode: parseField('faultcode'),\n faultString: parseField('faultstring')\n };\n } else {\n ret = {\n countryCode: parseField('ns2:countryCode'),\n vatNumber: parseField('ns2:vatNumber'),\n requestDate: parseField('ns2:requestDate'),\n valid: parseField('ns2:valid') === 'true',\n name: parseField('ns2:name'),\n address: parseField('ns2:address').replace(/\\n/g, ', ')\n };\n }\n return ret;\n };\n\n module.exports = exports = function(countryCode, vatNumber, timeout, callback) {\n var options, req, xml;\n if (typeof countryCode === 'string') {\n countryCode = countryCode.toUpperCase();\n }\n if (typeof timeout === 'function') {\n callback = timeout;\n timeout = null;\n }\n if (indexOf.call(EU_COUNTRIES_CODES, countryCode) < 0 || !(vatNumber != null ? vatNumber.length : void 0)) {\n return process.nextTick(function() {\n return callback(new Error(ERROR_MSG['INVALID_INPUT']));\n });\n }\n xml = soapBodyTemplate.replace('_country_code_placeholder_', countryCode).replace('_vat_number_placeholder_', vatNumber).replace('\\n', '').trim();\n headers['Content-Length'] = Buffer.byteLength(xml, 'utf8');\n options = {\n host: parsedUrl.host,\n method: 'POST',\n path: parsedUrl.path,\n headers: headers,\n family: 4\n };\n req = https.request(options, function(res) {\n var str;\n res.setEncoding('utf8');\n str = '';\n res.on('data', function(chunk) {\n return str += chunk;\n });\n return res.on('end', function() {\n var data, err, ref;\n try {\n data = parseSoapResponse(str);\n } catch (error) {\n err = error;\n return callback(err);\n }\n if ((ref = data.faultString) != null ? ref.length : void 0) {\n err = new Error(getReadableErrorMsg(data.faultString));\n err.code = data.faultCode;\n return callback(err);\n }\n return callback(null, data);\n });\n });\n if (timeout) {\n req.setTimeout(timeout, function() {\n return req.abort();\n });\n }\n req.on('error', callback);\n req.write(xml);\n return req.end();\n };\n\n}).call(this);\n","export const andorra = {\r\n name: 'Andorra',\r\n codes: ['AD', 'AND', '020'],\r\n calcFn: (vat) => {\r\n return vat.length === 8;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\\d{6}[fealecdgopuFEALECDGOPU]{1})$/]\r\n }\r\n};\r\n","export const austria = {\r\n name: 'Austria',\r\n codes: ['AT', 'AUT', '040'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n for (let i = 0; i < 7; i++) {\r\n const temp = Number(vat.charAt(i)) * austria.rules.multipliers.common[i];\r\n if (temp > 9) {\r\n total += Math.floor(temp / 10) + (temp % 10);\r\n }\r\n else {\r\n total += temp;\r\n }\r\n }\r\n total = 10 - ((total + 4) % 10);\r\n if (total === 10)\r\n total = 0;\r\n return total === Number(vat.slice(7, 8));\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [1, 2, 1, 2, 1, 2, 1]\r\n },\r\n regex: [/^(AT)U(\\d{8})$/]\r\n }\r\n};\r\n","export const belgium = {\r\n name: 'Belgium',\r\n codes: ['BE', 'BEL', '056'],\r\n calcFn: (vat) => {\r\n const newVat = vat.length === 9 ? '0' + vat : vat;\r\n if (Number(newVat.slice(1, 2)) === 0)\r\n return false;\r\n const check = 97 - (Number(newVat.slice(0, 8)) % 97);\r\n return check === Number(newVat.slice(8, 10));\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(BE)(0?\\d{9})$/]\r\n }\r\n};\r\n","/**\r\n * Generate check sums. Multiply numbers to validators and sum them to generate\r\n * check sums, they're used to check if numbers are valid.\r\n * @param numbers - Numbers used to generate checkers.\r\n * @param validators - Validators used to generate checkers.\r\n */\r\nconst generateCheckSums = (numbers, validators) => {\r\n const initialCheckSums = [0, 0];\r\n return validators.reduce(([checkerA, checkerB], validator, index) => [index === 0 ? 0 : checkerA + numbers[index - 1] * validator, checkerB + numbers[index] * validator], initialCheckSums);\r\n};\r\nconst isRepeatedArray = (varNumbers) => varNumbers.every((varNumber) => varNumbers[0] === varNumber);\r\n/**\r\n * Get remaining of 11 or `0` if lower than 2.\r\n * @param value - Value used remaining.\r\n */\r\nconst getRemaining = (value) => (value % 11 < 2 ? 0 : 11 - (value % 11));\r\nexport const brazil = {\r\n name: 'Brazil',\r\n codes: ['BR', 'BRA', '076'],\r\n calcFn: (vat) => {\r\n const numbers = vat.split('').map(Number);\r\n if (isRepeatedArray(numbers)) {\r\n return false;\r\n }\r\n const validators = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n const checkers = generateCheckSums(numbers, validators);\r\n return numbers[12] === getRemaining(checkers[0]) && numbers[13] === getRemaining(checkers[1]);\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(BR)?(\\d{14}|\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4}-\\d{2})$/]\r\n }\r\n};\r\n","export const bulgaria = {\r\n name: 'Bulgaria',\r\n codes: ['BG', 'BGR', '100'],\r\n calcFn: (vat) => {\r\n if (vat.length === 9)\r\n return _checkNineLengthVat(vat);\r\n const { multipliers } = bulgaria.rules;\r\n return (_isPhysicalPerson(vat, multipliers.physical) ||\r\n _isForeigner(vat, multipliers) ||\r\n _miscellaneousVAT(vat, multipliers));\r\n },\r\n rules: {\r\n multipliers: {\r\n physical: [2, 4, 8, 5, 10, 9, 7, 3, 6],\r\n foreigner: [21, 19, 17, 13, 11, 9, 7, 3, 1],\r\n miscellaneous: [4, 3, 2, 7, 6, 5, 4, 3, 2]\r\n },\r\n regex: [/^(BG)(\\d{9,10})$/]\r\n }\r\n};\r\nfunction _increase(value, vat, from, to, incr) {\r\n let result = value;\r\n for (let i = from; i < to; i++) {\r\n result += Number(vat.charAt(i)) * (i + incr);\r\n }\r\n return result;\r\n}\r\nfunction _increase2(value, vat, from, to, multipliers) {\r\n let result = value;\r\n for (let i = from; i < to; i++) {\r\n result += Number(vat.charAt(i)) * multipliers[i];\r\n }\r\n return result;\r\n}\r\nfunction _checkNineLengthVat(vat) {\r\n let total;\r\n let temp = _increase(0, vat, 0, 8, 1);\r\n const expect = Number(vat.slice(8));\r\n total = temp % 11;\r\n if (total !== 10)\r\n return total === expect;\r\n temp = _increase(0, vat, 0, 8, 3);\r\n total = temp % 11;\r\n if (total === 10)\r\n total = 0;\r\n return total === expect;\r\n}\r\nfunction _isPhysicalPerson(vat, physicalMultipliers) {\r\n // 10 digit VAT code - see if it relates to a standard physical person\r\n if (/^\\d\\d[0-5]\\d[0-3]\\d\\d{4}$/.test(vat)) {\r\n // Check month\r\n const month = Number(vat.slice(2, 4));\r\n if ((month > 0 && month < 13) || (month > 20 && month < 33) || (month > 40 && month < 53)) {\r\n let total = _increase2(0, vat, 0, 9, physicalMultipliers);\r\n // Establish check digit.\r\n total = total % 11;\r\n if (total === 10)\r\n total = 0;\r\n // Check to see if the check digit given is correct, If not, try next type of person\r\n if (total === Number(vat.substr(9, 1)))\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _isForeigner(vat, multipliers) {\r\n // Extract the next digit and multiply by the counter.\r\n const total = _increase2(0, vat, 0, 9, multipliers.foreigner);\r\n // Check to see if the check digit given is correct, If not, try next type of person\r\n return total % 10 === Number(vat.substr(9, 1));\r\n}\r\nfunction _miscellaneousVAT(vat, multipliers) {\r\n // Finally, if not yet identified, see if it conforms to a miscellaneous VAT number\r\n let total = _increase2(0, vat, 0, 9, multipliers.miscellaneous);\r\n // Establish check digit.\r\n total = 11 - (total % 11);\r\n if (total === 10)\r\n return false;\r\n if (total === 11)\r\n total = 0;\r\n // Check to see if the check digit given is correct, If not, we have an error with the VAT number\r\n const expect = Number(vat.substr(9, 1));\r\n return total === expect;\r\n}\r\n","export const croatia = {\r\n name: 'Croatia',\r\n codes: ['HR', 'HRV', '191'],\r\n calcFn: (vat) => {\r\n // Checks the check digits of a Croatian VAT number using ISO 7064, MOD 11-10 for check digit.\r\n let product = 10;\r\n let sum = 0;\r\n for (let i = 0; i < 10; i++) {\r\n // Extract the next digit and implement the algorithm\r\n sum = (Number(vat.charAt(i)) + product) % 10;\r\n if (sum === 0) {\r\n sum = 10;\r\n }\r\n product = (2 * sum) % 11;\r\n }\r\n // Now check that we have the right check digit\r\n const expect = Number(vat.slice(10, 11));\r\n return (product + expect) % 10 === 1;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(HR)(\\d{11})$/]\r\n }\r\n};\r\n","export const cyprus = {\r\n name: 'Cyprus',\r\n codes: ['CY', 'CYP', '196'],\r\n calcFn: (vat) => {\r\n // Not allowed to start with '12'\r\n if (Number(vat.slice(0, 2)) === 12)\r\n return false;\r\n // Extract the next digit and multiply by the counter.\r\n let total = extractAndMultiplyByCounter(vat, 0);\r\n // Establish check digit using modulus 26, and translate to char. equivalent.\r\n total = total % 26;\r\n total = String.fromCharCode(total + 65);\r\n // Check to see if the check digit given is correct\r\n const expect = vat.substr(8, 1);\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(CY)([0-59]\\d{7}[A-Z])$/]\r\n }\r\n};\r\nfunction extractAndMultiplyByCounter(vat, total) {\r\n let result = total;\r\n for (let i = 0; i < 8; i++) {\r\n let temp = Number(vat.charAt(i));\r\n if (i % 2 === 0) {\r\n switch (temp) {\r\n case 0:\r\n temp = 1;\r\n break;\r\n case 1:\r\n temp = 0;\r\n break;\r\n case 2:\r\n temp = 5;\r\n break;\r\n case 3:\r\n temp = 7;\r\n break;\r\n case 4:\r\n temp = 9;\r\n break;\r\n default:\r\n temp = temp * 2 + 3;\r\n }\r\n }\r\n result += temp;\r\n }\r\n return result;\r\n}\r\n","export const czechRepublic = {\r\n name: 'Czech Republic',\r\n codes: ['CZ', 'CZE', '203'],\r\n calcFn: (vat) => {\r\n const { rules } = czechRepublic;\r\n const { multipliers, additional, lookup } = rules;\r\n if (!additional)\r\n return false;\r\n return (isLegalEntities(vat, multipliers.common, additional) ||\r\n isIndividualType2(vat, multipliers.common, additional, lookup) ||\r\n isIndividualType3(vat, additional) ||\r\n isIndividualType1(vat, additional));\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [8, 7, 6, 5, 4, 3, 2]\r\n },\r\n lookup: [8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8],\r\n regex: [/^(CZ)(\\d{8,10})(\\d{3})?$/],\r\n additional: [/^\\d{8}$/, /^[0-5][0-9][0|1|5|6]\\d[0-3]\\d\\d{3}$/, /^6\\d{8}$/, /^\\d{2}[0-3|5-8]\\d[0-3]\\d\\d{4}$/]\r\n }\r\n};\r\nfunction isLegalEntities(vat, multipliers, additional) {\r\n let total = 0;\r\n if (additional[0].test(vat)) {\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 7; i++) {\r\n total += Number(vat.charAt(i)) * multipliers[i];\r\n }\r\n // Establish check digit.\r\n total = 11 - (total % 11);\r\n if (total === 10)\r\n total = 0;\r\n if (total === 11)\r\n total = 1;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(7, 8));\r\n return total === expect;\r\n }\r\n return false;\r\n}\r\nfunction isIndividualType1(vat, additional) {\r\n if (additional[1].test(vat)) {\r\n return Number(vat.slice(0, 2)) <= 62;\r\n }\r\n return false;\r\n}\r\nfunction isIndividualType2(vat, multipliers, additional, lookup) {\r\n let total = 0;\r\n if (additional[2].test(vat)) {\r\n // Extract the next digit and multiply by the counter.\r\n for (let j = 0; j < 7; j++) {\r\n total += Number(vat.charAt(j + 1)) * multipliers[j];\r\n }\r\n // Establish check digit.\r\n let a;\r\n if (total % 11 === 0) {\r\n a = total + 11;\r\n }\r\n else {\r\n a = Math.ceil(total / 11) * 11;\r\n }\r\n const pointer = a - total - 1;\r\n // Convert calculated check digit according to a lookup table\r\n const expect = Number(vat.slice(8, 9));\r\n if (!lookup)\r\n return false;\r\n return lookup[pointer] === expect;\r\n }\r\n return false;\r\n}\r\nfunction isIndividualType3(vat, additional) {\r\n if (additional[3].test(vat)) {\r\n const temp = Number(vat.slice(0, 2)) +\r\n Number(vat.slice(2, 4)) +\r\n Number(vat.slice(4, 6)) +\r\n Number(vat.slice(6, 8)) +\r\n Number(vat.slice(8));\r\n const expect = Number(vat) % 11 === 0;\r\n return !!(temp % 11 === 0 && expect);\r\n }\r\n return false;\r\n}\r\n","export const denmark = {\r\n name: 'Denmark',\r\n codes: ['DK', 'DNK', '208'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(vat.charAt(i)) * denmark.rules.multipliers.common[i];\r\n }\r\n return total % 11 === 0;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [2, 7, 6, 5, 4, 3, 2, 1]\r\n },\r\n regex: [/^(DK)(\\d{8})$/]\r\n }\r\n};\r\n","export const estonia = {\r\n name: 'Estonia',\r\n codes: ['EE', 'EST', '233'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n let expect;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(vat.charAt(i)) * estonia.rules.multipliers.common[i];\r\n }\r\n // Establish check digits using modulus 10.\r\n total = 10 - (total % 10);\r\n if (total === 10)\r\n total = 0;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n expect = Number(vat.slice(8, 9));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [3, 7, 1, 3, 7, 1, 3, 7]\r\n },\r\n regex: [/^(EE)(10\\d{7})$/]\r\n }\r\n};\r\n","export const europe = {\r\n name: 'Europe',\r\n codes: ['EU', 'EUR', '000'],\r\n calcFn: () => {\r\n // We know little about EU numbers apart from the fact that the first 3 digits represent the\r\n // country, and that there are nine digits in total.\r\n return true;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(EU)(\\d{9})$/]\r\n }\r\n};\r\n","export const finland = {\r\n name: 'Finland',\r\n codes: ['FI', 'FIN', '246'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 7; i++)\r\n total += Number(vat.charAt(i)) * finland.rules.multipliers.common[i];\r\n // Establish check digit.\r\n total = 11 - (total % 11);\r\n if (total > 9) {\r\n total = 0;\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(7, 8));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [7, 9, 10, 5, 8, 4, 2]\r\n },\r\n regex: [/^(FI)(\\d{8})$/]\r\n }\r\n};\r\n","export const france = {\r\n name: 'France',\r\n codes: ['FR', 'FRA', '250'],\r\n calcFn: (vat) => {\r\n let total;\r\n // Checks the check digits of a French VAT number.\r\n if (!/^\\d{11}$/.test(vat))\r\n return true;\r\n // Extract the last nine digits as an integer.\r\n total = Number(vat.substring(2));\r\n // Establish check digit.\r\n total = (total * 100 + 12) % 97;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(0, 2));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(FR)(\\d{11})$/, /^(FR)([A-HJ-NP-Z]\\d{10})$/, /^(FR)(\\d[A-HJ-NP-Z]\\d{9})$/, /^(FR)([A-HJ-NP-Z]{2}\\d{9})$/]\r\n }\r\n};\r\n","export const germany = {\r\n name: 'Germany',\r\n codes: ['DE', 'DEU', '276'],\r\n calcFn: (vat) => {\r\n // Checks the check digits of a German VAT number.\r\n let product = 10;\r\n let sum = 0;\r\n let checkDigit = 0;\r\n let expect;\r\n for (let i = 0; i < 8; i++) {\r\n // Extract the next digit and implement peculiar algorithm!.\r\n sum = (Number(vat.charAt(i)) + product) % 10;\r\n if (sum === 0) {\r\n sum = 10;\r\n }\r\n product = (2 * sum) % 11;\r\n }\r\n // Establish check digit.\r\n if (11 - product === 10) {\r\n checkDigit = 0;\r\n }\r\n else {\r\n checkDigit = 11 - product;\r\n }\r\n // Compare it with the last two characters of the VAT number. If the same, then it is a valid\r\n // check digit.\r\n expect = Number(vat.slice(8, 9));\r\n return checkDigit === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(DE)([1-9]\\d{8})$/]\r\n }\r\n};\r\n","export const greece = {\r\n name: 'Greece',\r\n codes: ['GR', 'GRC', '300'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // eight character numbers should be prefixed with an 0.\r\n const newVat = vat.length === 8 ? '0' + vat : vat;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(newVat.charAt(i)) * greece.rules.multipliers.common[i];\r\n }\r\n // Establish check digit.\r\n total = total % 11;\r\n total = total > 9 ? 0 : total;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(newVat.slice(8, 9));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [256, 128, 64, 32, 16, 8, 4, 2]\r\n },\r\n regex: [/^(EL)(\\d{9})$/]\r\n }\r\n};\r\n","export const hungary = {\r\n name: 'Hungary',\r\n codes: ['HU', 'HUN', '348'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 7; i++) {\r\n total += Number(vat.charAt(i)) * hungary.rules.multipliers.common[i];\r\n }\r\n // Establish check digit.\r\n total = 10 - (total % 10);\r\n if (total === 10)\r\n total = 0;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(7, 8));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [9, 7, 3, 1, 9, 7, 3]\r\n },\r\n regex: [/^(HU)(\\d{8})$/]\r\n }\r\n};\r\n","export const ireland = {\r\n name: 'Ireland',\r\n codes: ['IE', 'IRL', '372'],\r\n calcFn: (vat) => {\r\n const { typeFormats, multipliers } = ireland.rules;\r\n if (!typeFormats || !typeFormats.first)\r\n return false;\r\n let total = 0;\r\n let newVat = vat;\r\n // If the code is type 1 format, we need to convert it to the new before performing the validation.\r\n if (typeFormats.first.test(vat)) {\r\n newVat = '0' + vat.substring(2, 7) + vat.substring(0, 1) + vat.substring(7, 8);\r\n }\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 7; i++) {\r\n total += Number(newVat.charAt(i)) * multipliers.common[i];\r\n }\r\n // If the number is type 3 then we need to include the trailing A or H in the calculation\r\n if (typeFormats.third.test(newVat)) {\r\n // Add in a multiplier for the character A (1*9=9) or H (8*9=72)\r\n total += newVat.charAt(8) === 'H' ? 72 : 9;\r\n }\r\n // Establish check digit using modulus 23, and translate to char. equivalent.\r\n total = total % 23;\r\n total = total === 0 ? 'W' : String.fromCharCode(total + 64);\r\n // Compare it with the eighth character of the VAT number. If it's the same, then it's valid.\r\n const expect = newVat.slice(7, 8);\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [8, 7, 6, 5, 4, 3, 2]\r\n },\r\n typeFormats: {\r\n first: /^\\d[A-Z*+]/,\r\n third: /^\\d{7}[A-Z][AH]$/\r\n },\r\n regex: [/^(IE)(\\d{7}[A-W])$/, /^(IE)([7-9][A-Z*+)]\\d{5}[A-W])$/, /^(IE)(\\d{7}[A-W][AH])$/]\r\n }\r\n};\r\n","export const italy = {\r\n name: 'Italy',\r\n codes: ['IT', 'ITA', '380'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n let temp;\r\n // The last three digits are the issuing office, and cannot exceed more 201, unless 999 or 888\r\n if (Number(vat.slice(0, 7)) === 0) {\r\n return false;\r\n }\r\n temp = Number(vat.slice(7, 10));\r\n if (temp < 1 || (temp > 201 && temp !== 999 && temp !== 888)) {\r\n return false;\r\n }\r\n // Extract the next digit and multiply by the appropriate\r\n for (let i = 0; i < 10; i++) {\r\n temp = Number(vat.charAt(i)) * italy.rules.multipliers.common[i];\r\n if (temp > 9)\r\n total += Math.floor(temp / 10) + (temp % 10);\r\n else\r\n total += temp;\r\n }\r\n // Establish check digit.\r\n total = 10 - (total % 10);\r\n if (total > 9) {\r\n total = 0;\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(10, 11));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]\r\n },\r\n regex: [/^(IT)(\\d{11})$/]\r\n }\r\n};\r\n","export const latvia = {\r\n name: 'Latvia',\r\n codes: ['LV', 'LVA', '428'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Differentiate between legal entities and natural bodies. For the latter we simply check that\r\n // the first six digits correspond to valid DDMMYY dates.\r\n if (/^[0-3]/.test(vat)) {\r\n return Boolean(/^[0-3][0-9][0-1][0-9]/.test(vat));\r\n }\r\n else {\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 10; i++) {\r\n total += Number(vat.charAt(i)) * latvia.rules.multipliers.common[i];\r\n }\r\n // Establish check digits by getting modulus 11.\r\n if (total % 11 === 4 && Number(vat[0]) === 9)\r\n total = total - 45;\r\n if (total % 11 === 4) {\r\n total = 4 - (total % 11);\r\n }\r\n else if (total % 11 > 4) {\r\n total = 14 - (total % 11);\r\n }\r\n else if (total % 11 < 4) {\r\n total = 3 - (total % 11);\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(10, 11));\r\n return total === expect;\r\n }\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [9, 1, 4, 8, 3, 10, 2, 5, 7, 6]\r\n },\r\n regex: [/^(LV)(\\d{11})$/]\r\n }\r\n};\r\n","export const lithuania = {\r\n name: 'Lithuania',\r\n codes: ['LT', 'LTU', '440'],\r\n calcFn: (vat) => {\r\n return _check9DigitVat(vat, lithuania.rules) || _check12DigitVat(vat, lithuania.rules);\r\n },\r\n rules: {\r\n multipliers: {\r\n short: [3, 4, 5, 6, 7, 8, 9, 1],\r\n med: [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2],\r\n alt: [3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4]\r\n },\r\n check: /^\\d{10}1/,\r\n regex: [/^(LT)(\\d{9}|\\d{12})$/]\r\n }\r\n};\r\nfunction _extractDigit(vat, multiplierList, key) {\r\n return Number(vat.charAt(key)) * multiplierList[key];\r\n}\r\nfunction _doubleCheckCalculation(vat, total, rules) {\r\n let result = total;\r\n if (result % 11 === 10) {\r\n result = 0;\r\n for (let i = 0; i < 8; i++) {\r\n result += _extractDigit(vat, rules.multipliers.short, i);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction extractDigit(vat, total) {\r\n let result = total;\r\n for (let i = 0; i < 8; i++) {\r\n result += Number(vat.charAt(i)) * (i + 1);\r\n }\r\n return result;\r\n}\r\nfunction checkDigit(total) {\r\n let result = total % 11;\r\n if (result === 10) {\r\n result = 0;\r\n }\r\n return result;\r\n}\r\nfunction _check9DigitVat(vat, rules) {\r\n // 9 character VAT numbers are for legal persons\r\n let total = 0;\r\n if (vat.length === 9) {\r\n // 8th character must be one\r\n if (!/^\\d{7}1/.test(vat))\r\n return false;\r\n // Extract the next digit and multiply by the counter+1.\r\n total = extractDigit(vat, total);\r\n // Can have a double check digit calculation!\r\n total = _doubleCheckCalculation(vat, total, rules);\r\n // Establish check digit.\r\n total = checkDigit(total);\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(8, 9));\r\n return total === expect;\r\n }\r\n return false;\r\n}\r\nfunction extractDigit12(vat, total, rules) {\r\n let result = total;\r\n for (let k = 0; k < 11; k++) {\r\n result += _extractDigit(vat, rules.multipliers.med, k);\r\n }\r\n return result;\r\n}\r\nfunction _doubleCheckCalculation12(vat, total, rules) {\r\n let result = total;\r\n if (total % 11 === 10) {\r\n result = 0;\r\n for (let l = 0; l < 11; l++) {\r\n result += _extractDigit(vat, rules.multipliers.alt, l);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _check12DigitVat(vat, rules) {\r\n let total = 0;\r\n // 12 character VAT numbers are for temporarily registered taxpayers\r\n if (vat.length === 12) {\r\n if (!rules.check)\r\n return false;\r\n // 11th character must be one\r\n if (!rules.check.test(vat))\r\n return false;\r\n // Extract the next digit and multiply by the counter+1.\r\n total = extractDigit12(vat, total, rules);\r\n // Can have a double check digit calculation!\r\n total = _doubleCheckCalculation12(vat, total, rules);\r\n // Establish check digit.\r\n total = checkDigit(total);\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(11, 12));\r\n return total === expect;\r\n }\r\n return false;\r\n}\r\n","export const luxembourg = {\r\n name: 'Luxembourg',\r\n codes: ['LU', 'LUX', '442'],\r\n calcFn: (vat) => {\r\n const expect = Number(vat.slice(6, 8));\r\n const checkDigit = Number(vat.slice(0, 6)) % 89;\r\n // Checks the check digits of a Luxembourg VAT number.\r\n return checkDigit === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(LU)(\\d{8})$/]\r\n }\r\n};\r\n","export const malta = {\r\n name: 'Malta',\r\n codes: ['MT', 'MLT', '470'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 6; i++) {\r\n total += Number(vat.charAt(i)) * malta.rules.multipliers.common[i];\r\n }\r\n // Establish check digits by getting modulus 37.\r\n total = 37 - (total % 37);\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(6, 8));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [3, 4, 6, 7, 8, 9]\r\n },\r\n regex: [/^(MT)([1-9]\\d{7})$/]\r\n }\r\n};\r\n","export const netherlands = {\r\n name: 'Netherlands',\r\n codes: ['NL', 'NLD', '528'],\r\n calcFn: (input) => {\r\n const vat = input.replace(/[\\ \\-\\_]/g, '').toUpperCase();\r\n const { additional, multipliers } = netherlands.rules;\r\n if (!additional)\r\n return false;\r\n const match = vat.match(additional[0]);\r\n if (!match || !match[1])\r\n return false;\r\n const numb = match[1];\r\n const characterValues = `NL${vat}`.split('').map(getCharValue);\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(numb.charAt(i)) * multipliers.common[i];\r\n }\r\n // Establish check digits by getting modulus 11.\r\n total = total % 11;\r\n if (total > 9) {\r\n total = 0;\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(numb.slice(8, 9));\r\n // is either 11 proof or 97 mod proof.\r\n return total === expect || isNinetySevenMod(characterValues.join(''));\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [9, 8, 7, 6, 5, 4, 3, 2]\r\n },\r\n regex: [/^(NL)(\\d{9}B\\d{2})$/],\r\n additional: [/^(\\d{9})B\\d{2}$/]\r\n }\r\n};\r\nfunction getCharValue(char) {\r\n // if one of these set values\r\n if (char === '+')\r\n return 36;\r\n if (char === '*')\r\n return 37;\r\n // if A...Z return code VAL -55\r\n const code = char.charCodeAt(0) - 55;\r\n if (code > 9 && code < 91)\r\n return code;\r\n return parseInt(char, 10);\r\n}\r\nfunction isNinetySevenMod(value) {\r\n const remainder = mod(value, 97);\r\n return remainder === 1;\r\n}\r\n// custom module function, to check module on values above Number limit\r\nfunction mod(value, divisor) {\r\n // Initialize result\r\n let res = 0;\r\n for (const char of value.split('')) {\r\n res = (res * 10 + +char) % divisor;\r\n }\r\n return res;\r\n}\r\n","export const norway = {\r\n name: 'Norway',\r\n codes: ['NO', 'NOR', '578'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // See http://www.brreg.no/english/coordination/number.html\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(vat.charAt(i)) * norway.rules.multipliers.common[i];\r\n }\r\n // Establish check digits by getting modulus 11. Check digits > 9 are invalid\r\n total = 11 - (total % 11);\r\n if (total === 11) {\r\n total = 0;\r\n }\r\n if (total < 10) {\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(8, 9));\r\n return total === expect;\r\n }\r\n return false;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [3, 2, 7, 6, 5, 4, 3, 2]\r\n },\r\n regex: [/^(NO)(\\d{9})(MVA)?$/]\r\n }\r\n};\r\n","export const poland = {\r\n name: 'Poland',\r\n codes: ['PL', 'POL', '616'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 9; i++) {\r\n total += Number(vat.charAt(i)) * poland.rules.multipliers.common[i];\r\n }\r\n // Establish check digits subtracting modulus 11 from 11.\r\n total = total % 11;\r\n if (total > 9) {\r\n total = 0;\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(9, 10));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [6, 5, 7, 2, 3, 4, 5, 6, 7]\r\n },\r\n regex: [/^(PL)(\\d{10})$/]\r\n }\r\n};\r\n","export const portugal = {\r\n name: 'Portugal',\r\n codes: ['PT', 'PRT', '620'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(vat.charAt(i)) * portugal.rules.multipliers.common[i];\r\n }\r\n // Establish check digits subtracting modulus 11 from 11.\r\n total = 11 - (total % 11);\r\n if (total > 9) {\r\n total = 0;\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(8, 9));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [9, 8, 7, 6, 5, 4, 3, 2]\r\n },\r\n regex: [/^(PT)(\\d{9})$/]\r\n }\r\n};\r\n","export const romania = {\r\n name: 'Romania',\r\n codes: ['RO', 'ROU', '642'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n const vatLength = vat.length;\r\n const multipliers = romania.rules.multipliers.common.slice(10 - vatLength);\r\n for (let i = 0; i < vat.length - 1; i++) {\r\n total += Number(vat.charAt(i)) * multipliers[i];\r\n }\r\n // Establish check digits by getting modulus 11.\r\n total = (10 * total) % 11;\r\n if (total === 10)\r\n total = 0;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(vat.length - 1, vat.length));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [7, 5, 3, 2, 1, 7, 5, 3, 2]\r\n },\r\n regex: [/^(RO)([1-9]\\d{1,9})$/]\r\n }\r\n};\r\n","export const russia = {\r\n name: 'Russian Federation',\r\n codes: ['RU', 'RUS', '643'],\r\n calcFn: (vat) => {\r\n // See http://russianpartner.biz/test_inn.html for algorithm\r\n return _check10DigitINN(vat, russia.rules) || _check12DigitINN(vat, russia.rules);\r\n },\r\n rules: {\r\n multipliers: {\r\n m_1: [2, 4, 10, 3, 5, 9, 4, 6, 8, 0],\r\n m_2: [7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0],\r\n m_3: [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0]\r\n },\r\n regex: [/^(RU)(\\d{10}|\\d{12})$/]\r\n }\r\n};\r\nfunction _check10DigitINN(vat, rules) {\r\n let total = 0;\r\n if (vat.length === 10) {\r\n for (let i = 0; i < 10; i++) {\r\n total += Number(vat.charAt(i)) * rules.multipliers.m_1[i];\r\n }\r\n total = total % 11;\r\n if (total > 9) {\r\n total = total % 10;\r\n }\r\n // Compare it with the last character of the VAT number. If it is the same, then it's valid\r\n const expect = Number(vat.slice(9, 10));\r\n return total === expect;\r\n }\r\n return false;\r\n}\r\nfunction _check12DigitINN(vat, rules) {\r\n let total1 = 0;\r\n let total2 = 0;\r\n if (vat.length === 12) {\r\n for (let j = 0; j < 11; j++) {\r\n total1 += Number(vat.charAt(j)) * rules.multipliers.m_2[j];\r\n }\r\n total1 = total1 % 11;\r\n if (total1 > 9) {\r\n total1 = total1 % 10;\r\n }\r\n for (let k = 0; k < 11; k++) {\r\n total2 += Number(vat.charAt(k)) * rules.multipliers.m_3[k];\r\n }\r\n total2 = total2 % 11;\r\n if (total2 > 9) {\r\n total2 = total2 % 10;\r\n }\r\n // Compare the first check with the 11th character and the second check with the 12th and last\r\n // character of the VAT number. If they're both the same, then it's valid\r\n const expect = total1 === Number(vat.slice(10, 11));\r\n const expect2 = total2 === Number(vat.slice(11, 12));\r\n return expect && expect2;\r\n }\r\n return false;\r\n}\r\n","export const serbia = {\r\n name: 'Serbia',\r\n codes: ['RS', 'SRB', '688'],\r\n calcFn: (vat) => {\r\n // Checks the check digits of a Serbian VAT number using ISO 7064, MOD 11-10 for check digit.\r\n let product = 10;\r\n let sum = 0;\r\n for (let i = 0; i < 8; i++) {\r\n // Extract the next digit and implement the algorithm\r\n sum = (Number(vat.charAt(i)) + product) % 10;\r\n if (sum === 0) {\r\n sum = 10;\r\n }\r\n product = (2 * sum) % 11;\r\n }\r\n // Now check that we have the right check digit\r\n const expect = 1;\r\n const checkDigit = (product + Number(vat.slice(8, 9))) % 10;\r\n return checkDigit === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(RS)(\\d{9})$/]\r\n }\r\n};\r\n","export const slovakiaRepublic = {\r\n name: 'Slovakia Republic',\r\n codes: ['SK', 'SVK', '703'],\r\n calcFn: (vat) => {\r\n const expect = 0;\r\n const checkDigit = Number(vat) % 11;\r\n return checkDigit === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(SK)([1-9]\\d[2346-9]\\d{7})$/]\r\n }\r\n};\r\n","export const slovenia = {\r\n name: 'Slovenia',\r\n codes: ['SI', 'SVN', '705'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 7; i++) {\r\n total += Number(vat.charAt(i)) * slovenia.rules.multipliers.common[i];\r\n }\r\n // Establish check digits using modulus 11\r\n total = 11 - (total % 11);\r\n if (total === 10) {\r\n total = 0;\r\n }\r\n // Compare the number with the last character of the VAT number. If it is the\r\n // same, then it's a valid check digit.\r\n const expect = Number(vat.slice(7, 8));\r\n return !!(total !== 11 && total === expect);\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [8, 7, 6, 5, 4, 3, 2]\r\n },\r\n regex: [/^(SI)([1-9]\\d{7})$/]\r\n }\r\n};\r\n","export const spain = {\r\n name: 'Spain',\r\n codes: ['ES', 'ESP', '724'],\r\n calcFn: (vat) => {\r\n const { additional, multipliers } = spain.rules;\r\n if (!additional)\r\n return false;\r\n // National juridical entities\r\n if (additional[0].test(vat))\r\n return isNationalJuridicalEntities(vat, multipliers.common);\r\n // Juridical entities other than national ones\r\n if (additional[1].test(vat))\r\n return isNonNationalJuridical(vat, multipliers.common);\r\n // Personal number (NIF) (starting with numeric of Y or Z)\r\n if (additional[2].test(vat))\r\n return isPersonalYtoZ(vat);\r\n // Personal number (NIF) (starting with K, L, M, or X)\r\n if (additional[3].test(vat))\r\n return isPersonalKtoX(vat);\r\n return false;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [2, 1, 2, 1, 2, 1, 2]\r\n },\r\n regex: [\r\n /^(ES)([A-Z]\\d{8})$/,\r\n /^(ES)([A-HN-SW]\\d{7}[A-J])$/,\r\n /^(ES)([0-9YZ]\\d{7}[A-Z])$/,\r\n /^(ES)([KLMX]\\d{7}[A-Z])$/\r\n ],\r\n additional: [/^[A-H|J|U|V]\\d{8}$/, /^[A-H|N-S|W]\\d{7}[A-J]$/, /^[0-9|Y|Z]\\d{7}[A-Z]$/, /^[K|L|M|X]\\d{7}[A-Z]$/]\r\n }\r\n};\r\nfunction extractDigitAndMultiplyByCounter(vat, multipliers, total) {\r\n let temp;\r\n let result = total;\r\n for (let i = 0; i < 7; i++) {\r\n temp = Number(vat.charAt(i + 1)) * multipliers[i];\r\n if (temp > 9) {\r\n result += Math.floor(temp / 10) + (temp % 10);\r\n }\r\n else {\r\n result += temp;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction isNationalJuridicalEntities(vat, multipliers) {\r\n let total = extractDigitAndMultiplyByCounter(vat, multipliers, 0);\r\n // Now calculate the check digit itself.\r\n total = 10 - (total % 10);\r\n if (total === 10) {\r\n total = 0;\r\n }\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = Number(vat.slice(8, 9));\r\n return total === expect;\r\n}\r\nfunction isNonNationalJuridical(vat, multipliers) {\r\n let total = extractDigitAndMultiplyByCounter(vat, multipliers, 0);\r\n // Now calculate the check digit itself.\r\n total = 10 - (total % 10);\r\n const totalStr = String.fromCharCode(total + 64);\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n const expect = vat.slice(8, 9);\r\n return totalStr === expect;\r\n}\r\nfunction isPersonalYtoZ(vat) {\r\n let tempNumber = vat;\r\n if (tempNumber.substring(0, 1) === 'Y')\r\n tempNumber = tempNumber.replace(/Y/, '1');\r\n if (tempNumber.substring(0, 1) === 'Z')\r\n tempNumber = tempNumber.replace(/Z/, '2');\r\n const expect = 'TRWAGMYFPDXBNJZSQVHLCKE'.charAt(+tempNumber.substring(0, 8) % 23);\r\n return tempNumber.charAt(8) === expect;\r\n}\r\nfunction isPersonalKtoX(vat) {\r\n const expect = 'TRWAGMYFPDXBNJZSQVHLCKE'.charAt(Number(vat.substring(1, 8)) % 23);\r\n return vat.charAt(8) === expect;\r\n}\r\n","export const sweden = {\r\n name: 'Sweden',\r\n codes: ['SE', 'SWE', '752'],\r\n calcFn: (vat) => {\r\n let expect;\r\n // Calculate R where R = R1 + R3 + R5 + R7 + R9, and Ri = INT(Ci/5) + (Ci*2) modulo 10\r\n let R = 0;\r\n for (let i = 0; i < 9; i = i + 2) {\r\n const digit = Number(vat.charAt(i));\r\n R += Math.floor(digit / 5) + ((digit * 2) % 10);\r\n }\r\n // Calculate S where S = C2 + C4 + C6 + C8\r\n let S = 0;\r\n for (let j = 1; j < 9; j = j + 2) {\r\n S += Number(vat.charAt(j));\r\n }\r\n const checkDigit = (10 - ((R + S) % 10)) % 10;\r\n // Compare it with the last character of the VAT number. If it's the same, then it's valid.\r\n expect = Number(vat.slice(9, 10));\r\n return checkDigit === expect;\r\n },\r\n rules: {\r\n multipliers: {},\r\n regex: [/^(SE)(\\d{10}01)$/]\r\n }\r\n};\r\n","export const switzerland = {\r\n name: 'Switzerland',\r\n codes: ['CH', 'CHE', '756'],\r\n calcFn: (vat) => {\r\n let total = 0;\r\n for (let i = 0; i < 8; i++) {\r\n total += Number(vat.charAt(i)) * switzerland.rules.multipliers.common[i];\r\n }\r\n // Establish check digit.s\r\n total = 11 - (total % 11);\r\n if (total === 10)\r\n return false;\r\n if (total === 11)\r\n total = 0;\r\n // Check to see if the check digit given is correct, If not, we have an error with the VAT number\r\n const expect = Number(vat.substr(8, 1));\r\n return total === expect;\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [5, 4, 3, 2, 7, 6, 5, 4]\r\n },\r\n regex: [/^(CHE)(\\d{9})(MWST|TVA|IVA)?$/]\r\n }\r\n};\r\n","export const unitedKingdom = {\r\n name: 'United Kingdom',\r\n codes: ['GB', 'GBR', '826'],\r\n calcFn: (vat) => {\r\n // Government departments\r\n if (vat.substr(0, 2) === 'GD')\r\n return isGovernmentDepartment(vat);\r\n // Health authorities\r\n if (vat.substr(0, 2) === 'HA')\r\n return isHealthAuthorities(vat);\r\n // Standard and commercial numbers\r\n return isStandardOrCommercialNumber(vat, unitedKingdom.rules.multipliers.common);\r\n },\r\n rules: {\r\n multipliers: {\r\n common: [8, 7, 6, 5, 4, 3, 2]\r\n },\r\n regex: [/^(GB)?(\\d{9})$/, /^(GB)?(\\d{12})$/, /^(GB)?(GD\\d{3})$/, /^(GB)?(HA\\d{3})$/]\r\n }\r\n};\r\nfunction isGovernmentDepartment(vat) {\r\n const expect = 500;\r\n return Number(vat.substr(2, 3)) < expect;\r\n}\r\nfunction isHealthAuthorities(vat) {\r\n const expect = 499;\r\n return Number(vat.substr(2, 3)) > expect;\r\n}\r\nfunction isStandardOrCommercialNumber(vat, multipliers) {\r\n let total = 0;\r\n // 0 VAT numbers disallowed!\r\n if (Number(vat.slice(0)) === 0)\r\n return false;\r\n // Check range is OK for modulus 97 calculation\r\n const no = Number(vat.slice(0, 7));\r\n // Extract the next digit and multiply by the counter.\r\n for (let i = 0; i < 7; i++) {\r\n total += Number(vat.charAt(i)) * multipliers[i];\r\n }\r\n // Old numbers use a simple 97 modulus, but new numbers use an adaptation of that (less 55). Our\r\n // VAT number could use either system, so we check it against both.\r\n // Establish check digits by subtracting 97 from total until negative.\r\n let checkDigit = total;\r\n while (checkDigit > 0) {\r\n checkDigit = checkDigit - 97;\r\n }\r\n // Get the absolute value and compare it with the last two characters of the VAT number. If the\r\n // same, then it is a valid traditional check digit. However, even then the number must fit within\r\n // certain specified ranges.\r\n checkDigit = Math.abs(checkDigit);\r\n if (checkDigit === Number(vat.slice(7, 9)) &&\r\n no < 9990001 &&\r\n (no < 100000 || no > 999999) &&\r\n (no < 9490001 || no > 9700000)) {\r\n return true;\r\n }\r\n // Now try the new method by subtracting 55 from the check digit if we can - else add 42\r\n if (checkDigit >= 55) {\r\n checkDigit = checkDigit - 55;\r\n }\r\n else {\r\n checkDigit = checkDigit + 42;\r\n }\r\n const expect = Number(vat.slice(7, 9));\r\n return Boolean(checkDigit === expect && no > 1000000);\r\n}\r\n","import { brazil } from './countries';\r\nfunction makeResult(vat, isValid, country) {\r\n return {\r\n value: vat || undefined,\r\n isValid: Boolean(isValid),\r\n isValidFormat: country ? isVatValidToRegexp(vat, country.rules.regex).isValid : false,\r\n isSupportedCountry: Boolean(country),\r\n country: !country\r\n ? undefined\r\n : {\r\n name: country.name,\r\n isoCode: {\r\n short: country.codes[0],\r\n long: country.codes[1],\r\n numeric: country.codes[2]\r\n }\r\n }\r\n };\r\n}\r\nfunction removeExtraChars(vat = '') {\r\n return vat\r\n .toString()\r\n .toUpperCase()\r\n .replace(/(\\s|-|\\.|\\/)+/g, '');\r\n}\r\nfunction getCountryCodes(country) {\r\n return [...country.codes, country.name === 'Greece' ? 'EL' : undefined].filter(Boolean);\r\n}\r\nconst countriesVATDoesNotStartWithCountryCode = [brazil.name];\r\nfunction isVATStartWithCountryCode(countryName) {\r\n return !countriesVATDoesNotStartWithCountryCode.includes(countryName);\r\n}\r\nfunction isVATStartWithNumber(vat) {\r\n return !!vat.match(/^\\d{2}/);\r\n}\r\nfunction getCountry(vat, countriesList) {\r\n for (const country of countriesList) {\r\n if (startsWithCode(vat, country) || (!isVATStartWithCountryCode(country.name) && isVATStartWithNumber(vat))) {\r\n return { ...country };\r\n }\r\n }\r\n return undefined;\r\n}\r\nfunction startsWithCode(vat, country) {\r\n const countryCodes = getCountryCodes(country);\r\n return countryCodes.filter((code) => vat.startsWith(code)).length > 0;\r\n}\r\nfunction isVatValidToRegexp(vat, regexArr) {\r\n for (const regex of regexArr) {\r\n const isValid = regex.test(vat);\r\n if (isValid)\r\n return { isValid: true, regex: regex };\r\n }\r\n return { isValid: false, regex: undefined };\r\n}\r\nfunction isVatValid(vat, country) {\r\n const regexpValidRes = isVatValidToRegexp(vat, country.rules.regex);\r\n if (!regexpValidRes.isValid || !regexpValidRes.regex)\r\n return false;\r\n const regexResult = regexpValidRes.regex.exec(vat);\r\n if (!regexResult)\r\n return false;\r\n return country.calcFn(regexResult[2]);\r\n}\r\nexport function checkVAT(vat, countriesList = []) {\r\n if (!vat)\r\n return makeResult(vat, false);\r\n const cleanVAT = removeExtraChars(vat);\r\n const country = getCountry(cleanVAT, countriesList);\r\n const isValid = country ? isVatValid(cleanVAT, country) : false;\r\n return makeResult(cleanVAT, isValid, country);\r\n}\r\n","import { andorra, austria, belgium, brazil, bulgaria, croatia, cyprus, czechRepublic, denmark, estonia, europe, finland, france, germany, greece, hungary, ireland, italy, latvia, lithuania, luxembourg, malta, netherlands, norway, poland, portugal, romania, russia, serbia, slovakiaRepublic, slovenia, spain, sweden, switzerland, unitedKingdom } from './lib/countries';\r\nexport const countries = [\r\n andorra,\r\n austria,\r\n belgium,\r\n brazil,\r\n bulgaria,\r\n croatia,\r\n cyprus,\r\n czechRepublic,\r\n denmark,\r\n estonia,\r\n europe,\r\n finland,\r\n france,\r\n germany,\r\n greece,\r\n hungary,\r\n ireland,\r\n italy,\r\n latvia,\r\n lithuania,\r\n luxembourg,\r\n malta,\r\n netherlands,\r\n norway,\r\n poland,\r\n portugal,\r\n romania,\r\n russia,\r\n serbia,\r\n slovakiaRepublic,\r\n slovenia,\r\n spain,\r\n sweden,\r\n switzerland,\r\n unitedKingdom\r\n];\r\nexport { andorra, austria, belgium, brazil, bulgaria, croatia, cyprus, czechRepublic, denmark, estonia, europe, finland, france, germany, greece, hungary, ireland, italy, latvia, lithuania, luxembourg, malta, netherlands, norway, poland, portugal, romania, russia, serbia, slovakiaRepublic, slovenia, spain, sweden, switzerland, unitedKingdom } from './lib/countries';\r\nexport { checkVAT } from './lib/jsvat';\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValid = isValid;\nexports.mask = mask;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n/**\n * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number, is used to identify a business entity.\n *\n * NOTES:\n * - Prefix 47 is being reserved for future use\n * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus.\n *\n * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes` for more information.\n */\n\n/**\n * Campus prefixes.\n */\n\nvar campus = {\n andover: ['10', '12'],\n atlanta: ['60', '67'],\n austin: ['50', '53'],\n brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],\n cincinnati: ['30', '32', '35', '36', '37', '38', '61'],\n fresno: ['15', '24'],\n internet: ['20', '26', '27', '45', '46', '47', '81', '82', '83', '84', '85'],\n kansas: ['40', '44'],\n memphis: ['94', '95'],\n ogden: ['80', '90'],\n philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '86', '87', '88', '91', '92', '93', '98', '99'],\n sba: ['31']\n};\n\n/**\n * Cache all available prefixes.\n */\n\nvar prefixes = [];\n\nfor (var location in campus) {\n prefixes.push.apply(prefixes, _toConsumableArray(campus[location]));\n}\n\nprefixes.sort();\n\n/**\n * Expression.\n */\n\nvar expression = /^\\d{2}[- ]{0,1}\\d{7}$/;\n\n/**\n * Validate function.\n */\n\nfunction isValid(value) {\n if (!expression.test(value)) {\n return false;\n }\n\n return prefixes.indexOf(value.substr(0, 2)) !== -1;\n}\n\n/**\n * Mask the EIN with \"X\" placeholders to protect sensitive data,\n * while keeping some of the original digits for contextual recognition.\n *\n * E.g. \"123456789\" -> \"XXXXX6789\", \"12-3456789\" -> \"XX-XXX6789\".\n */\n\nfunction mask(value) {\n if (!isValid(value)) {\n throw new Error('Invalid Employer Identification Number');\n }\n\n return '' + value.substr(0, value.length - 4).replace(/[\\w]/g, 'X') + value.substr(-4);\n}","/*\n * node-sales-tax\n *\n * Copyright 2017, Valerian Saliou\n * Author: Valerian Saliou \n */\n\n\n\"use strict\";\n\n\nvar fetch = require(\"node-fetch\").default;\nvar check_fraud_eu_vat = require(\"validate-vat\");\nvar validate_eu_vat = require(\"jsvat\");\nvar validate_us_vat = require(\"ein-validator\");\n\nvar regex_whitespace = /\\s/g;\nvar regex_eu_vat = /^([A-Z]{2})(.+)$/;\nvar regex_gb_vat = /^GB([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})$/;\nvar regex_ca_vat = /^[0-9]{9}$/;\n\nvar validate_gb_vat_url = (\n \"https://api.service.hmrc.gov.uk/organisations/vat/check-vat-number/lookup\"\n);\n\nvar tax_rates = require(\"../res/sales_tax_rates.json\");\nvar region_countries = require(\"../res/region_countries.json\");\n\nvar tax_default_object = {\n type : \"none\",\n rate : 0.00,\n currency : null\n};\n\n\n/**\n * SalesTax\n * @class\n * @classdesc Instanciates a new sales tax object\n */\nvar SalesTax = function() {\n this.taxOriginCountry = null;\n this.useRegionalTax = true;\n this.enabledTaxNumberValidation = true;\n this.enabledTaxNumberFraudCheck = false;\n};\n\n\n/**\n * SalesTax.prototype.hasSalesTax\n * @public\n * @param {string} countryCode\n * @return {boolean} Whether country has sales tax\n */\nSalesTax.prototype.hasSalesTax = function(\n countryCode\n) {\n countryCode = (countryCode || \"\").toUpperCase();\n\n return (\n (((this.__readCurrentTaxRates(countryCode) || {}).rate || 0.00) > 0) ?\n true : false\n );\n};\n\n\n/**\n * SalesTax.prototype.hasStateSalesTax\n * @public\n * @param {string} countryCode\n * @param {string} stateCode\n * @return {boolean} Whether country state has sales tax\n */\nSalesTax.prototype.hasStateSalesTax = function(\n countryCode, stateCode\n) {\n countryCode = (countryCode || \"\").toUpperCase();\n stateCode = (stateCode || \"\").toUpperCase();\n\n var stateTax = (\n ((this.__readCurrentTaxRates(countryCode) || {}).states || {})[stateCode]\n );\n\n return (\n (((stateTax || {}).rate || 0.00) > 0) ? true : false\n );\n};\n\n\n/**\n * SalesTax.prototype.getSalesTax\n * @public\n * @param {string} countryCode\n * @param {string} [stateCode]\n * @param {string} [taxNumber]\n * @return {object} Promise object (returns the sales tax from 0 to 1)\n */\nSalesTax.prototype.getSalesTax = function(\n countryCode, stateCode, taxNumber\n) {\n var self = this;\n\n countryCode = (countryCode || \"\").toUpperCase();\n stateCode = (stateCode || \"\").toUpperCase();\n taxNumber = (taxNumber || null);\n\n // Acquire target tax area\n var targetArea = self.__getTargetArea(countryCode);\n\n // Acquire sales tax for country, or default (if no known sales tax)\n // Notice: if regional tax is ignored, force national tax \\\n // (eg. EU w/o VAT MOSS)\n var countryTax, stateTax;\n\n if (targetArea === \"regional\" && this.useRegionalTax === false &&\n this.taxOriginCountry !== null) {\n countryTax = (\n this.__readCurrentTaxRates(this.taxOriginCountry) || tax_default_object\n );\n\n stateTax = tax_default_object;\n } else {\n countryTax = (\n this.__readCurrentTaxRates(countryCode) || tax_default_object\n );\n\n stateTax = ((countryTax.states || {})[stateCode] || tax_default_object);\n }\n\n if (countryTax.rate > 0 || stateTax.rate > 0) {\n return self.getTaxExchangeStatus(countryCode, stateCode, taxNumber)\n .then(function(exchangeStatus) {\n return Promise.resolve(\n self.__buildSalesTaxContext(countryTax, stateTax, exchangeStatus)\n );\n });\n }\n\n return Promise.resolve(\n self.__buildSalesTaxContext(countryTax, stateTax)\n );\n};\n\n\n/**\n * SalesTax.prototype.getAmountWithSalesTax\n * @public\n * @param {string} countryCode\n * @param {string} [stateCode]\n * @param {number} [amount]\n * @param {string} [taxNumber]\n * @return {object} Promise object (returns the total tax amount)\n */\nSalesTax.prototype.getAmountWithSalesTax = function(\n countryCode, stateCode, amount, taxNumber\n) {\n var self = this;\n\n countryCode = (countryCode || \"\").toUpperCase();\n stateCode = (stateCode || \"\").toUpperCase();\n amount = (amount || 0.00);\n taxNumber = (taxNumber || null);\n\n // Acquire sales tax, then process amount.\n return self.getSalesTax(countryCode, stateCode, taxNumber)\n .then(function(tax) {\n // Generate amount details (list of all sub-amounts from each sub-tax \\\n // rate)\n var amountDetails = [];\n\n for (var i = 0; i < tax.details.length; i++) {\n amountDetails.push({\n type : tax.details[i].type,\n rate : tax.details[i].rate,\n amount : tax.details[i].rate * amount\n });\n }\n\n // Return total amount with sales tax\n return Promise.resolve({\n type : tax.type,\n rate : tax.rate,\n currency : tax.currency,\n price : amount,\n total : (1.00 + tax.rate) * amount,\n area : tax.area,\n exchange : tax.exchange,\n charge : tax.charge,\n details : amountDetails\n });\n });\n};\n\n\n/**\n * SalesTax.prototype.validateTaxNumber\n * @public\n * @param {string} countryCode\n * @param {string} taxNumber\n * @return {object} Promise object (returns a boolean for validity)\n */\nSalesTax.prototype.validateTaxNumber = function(\n countryCode, taxNumber\n) {\n var self = this;\n\n countryCode = (countryCode || \"\").toUpperCase();\n\n if (self.enabledTaxNumberValidation === true) {\n // Normalize tax number (eg. remove spaces)\n var cleanTaxNumber = (taxNumber || \"\").replace(regex_whitespace, \"\");\n\n if (cleanTaxNumber) {\n // United States\n if (countryCode === \"US\") {\n // Validate US EIN\n return Promise.resolve(\n validate_us_vat.isValid(cleanTaxNumber) && true\n );\n }\n\n // Canada\n if (countryCode === \"CA\") {\n // Validate CA BN\n return Promise.resolve(\n regex_ca_vat.test(cleanTaxNumber) && true\n );\n }\n\n // United Kingdom\n if (countryCode === \"GB\") {\n // Validate GB VAT number\n var splitMatch = cleanTaxNumber.match(regex_gb_vat);\n var isValid = ((splitMatch && splitMatch[1]) ? true : false);\n\n // Check number for fraud? (online check)\n if (isValid === true && self.enabledTaxNumberFraudCheck === true) {\n // Query UK HMRC validation API\n return fetch(\n validate_gb_vat_url + \"/\" + splitMatch[1]\n )\n .then(function(response) {\n return Promise.resolve(\n (response.status >= 200 && response.status <= 299) ?\n true : false\n );\n })\n .catch(function(error) {\n return Promise.reject(error);\n });\n }\n\n return Promise.resolve(isValid);\n }\n\n // European Union member states (sourced from dynamic list)\n if ((region_countries.EU || []).indexOf(countryCode) !== -1) {\n return new Promise(function(resolve, reject) {\n // Validate EU VAT number (offline check)\n var validationInfo = validate_eu_vat.checkVAT(\n cleanTaxNumber, validate_eu_vat.countries\n );\n\n // Check if VAT number is valid\n var isValid = (validationInfo.isValid && true);\n\n // No country match?\n if (isValid === true &&\n ((validationInfo.country || {}).isoCode || {}).short !==\n countryCode) {\n isValid = false;\n }\n\n // Check number for fraud? (online check)\n if (isValid === true && self.enabledTaxNumberFraudCheck === true) {\n // Split VAT number (n extract actual VAT number)\n var splitMatch = cleanTaxNumber.match(regex_eu_vat);\n\n // Check fraud on EU VAT number?\n // Notice: use country code from VAT number during the check, \\\n // since some country codes are different there, eg. Greece. It \\\n // is still deemed safe to use the country code from the VAT \\\n // number, since we performed an offline check of the country \\\n // code match with the provided country code right before.\n if (splitMatch && splitMatch[1] && splitMatch[2]) {\n check_fraud_eu_vat(\n splitMatch[1], splitMatch[2],\n\n function(error, fraudInfo) {\n if (error) {\n return reject(error);\n }\n\n // Return whether valid or not\n return resolve(fraudInfo.valid && true);\n }\n );\n } else {\n return resolve(false);\n }\n } else {\n return resolve(isValid);\n }\n });\n }\n }\n\n // Consider as invalid tax number (tax number country not recognized, \\\n // or no tax number provided)\n return Promise.resolve(false);\n }\n\n // Consider all tax numbers as valid\n return Promise.resolve(true);\n};\n\n\n/**\n * SalesTax.prototype.getTaxExchangeStatus\n * @public\n * @param {string} countryCode\n * @param {string} [stateCode]\n * @param {string} [taxNumber]\n * @return {object} Promise object (returns an exchange status object)\n */\nSalesTax.prototype.getTaxExchangeStatus = function(\n countryCode, stateCode, taxNumber\n) {\n var self = this;\n\n countryCode = (countryCode || \"\").toUpperCase();\n stateCode = ((stateCode || \"\").toUpperCase() || null);\n taxNumber = (taxNumber || null);\n\n var targetArea = self.__getTargetArea(countryCode);\n\n // Country or state (if any) has any sales tax?\n if (self.__hasTotalSalesTax(countryCode, stateCode) === true) {\n // Check for tax-exempt status? (if tax number is provided)\n if (taxNumber) {\n return self.validateTaxNumber(countryCode, taxNumber)\n .then(function(isValid) {\n // Consider valid numbers as tax-exempt (overrides exempt status if \\\n // area is national)\n if (isValid === true) {\n return Promise.resolve({\n exchange : \"business\",\n area : targetArea,\n exempt : (targetArea !== \"national\" && true)\n });\n }\n\n return Promise.resolve({\n exchange : \"consumer\",\n area : targetArea,\n exempt : false\n });\n });\n }\n\n // Consider as non tax-exempt\n return Promise.resolve({\n exchange : \"consumer\",\n area : targetArea,\n exempt : false\n });\n }\n\n // Consider as tax-exempt (country has no sales tax)\n return Promise.resolve({\n exchange : \"consumer\",\n area : targetArea,\n exempt : true\n });\n};\n\n\n/**\n * SalesTax.prototype.setTaxOriginCountry\n * @public\n * @param {string} countryCode\n * @return {undefined}\n */\nSalesTax.prototype.setTaxOriginCountry = function(\n countryCode, useRegionalTax\n) {\n this.taxOriginCountry = ((countryCode || \"\").toUpperCase() || null);\n\n if (typeof useRegionalTax === \"boolean\") {\n this.useRegionalTax = useRegionalTax;\n }\n};\n\n\n/**\n * SalesTax.prototype.toggleEnabledTaxNumberValidation\n * @public\n * @param {boolean} enabled\n * @return {undefined}\n */\nSalesTax.prototype.toggleEnabledTaxNumberValidation = function(\n enabled\n) {\n this.enabledTaxNumberValidation = (enabled && true);\n};\n\n\n/**\n * SalesTax.prototype.toggleEnabledTaxNumberFraudCheck\n * @public\n * @param {boolean} enabled\n * @return {undefined}\n */\nSalesTax.prototype.toggleEnabledTaxNumberFraudCheck = function(\n enabled\n) {\n this.enabledTaxNumberFraudCheck = (enabled && true);\n};\n\n\n/**\n * SalesTax.prototype.__getTargetArea\n * @private\n * @param {string} countryCode\n * @return {string} Target area\n */\nSalesTax.prototype.__getTargetArea = function(\n countryCode\n) {\n // Default to worldwide\n var targetArea = \"worldwide\";\n\n if (this.taxOriginCountry !== null) {\n if (this.taxOriginCountry === countryCode) {\n // Same country (national)\n targetArea = \"national\";\n } else {\n // Same economic community? (regional)\n for (var region in region_countries) {\n var regionCountries = region_countries[region];\n\n if (regionCountries.indexOf(this.taxOriginCountry) !== -1 &&\n regionCountries.indexOf(countryCode) !== -1) {\n targetArea = \"regional\";\n\n break;\n }\n }\n }\n }\n\n return targetArea;\n};\n\n\n/**\n * SalesTax.prototype.__buildSalesTaxContext\n * @private\n * @param {object} countryTax\n * @param {object} stateTax\n * @param {object} [exchangeStatus]\n * @return {object} Sales tax context object\n */\nSalesTax.prototype.__buildSalesTaxContext = function(\n countryTax, stateTax, exchangeStatus\n) {\n // Acquire exchange + exempt + area\n var taxExchange = ((exchangeStatus || {}).exchange || \"consumer\");\n var taxArea = ((exchangeStatus || {}).area || \"worldwide\");\n var isExempt = ((exchangeStatus || {}).exempt || false);\n var fullRate = (countryTax.rate + stateTax.rate);\n\n // Generate tax type (multiple sales tax may apply, eg. country + state)\n var type = countryTax.type;\n\n if (stateTax.rate > 0) {\n if (countryTax.rate > 0) {\n type = type + \"+\" + stateTax.type;\n } else {\n type = stateTax.type;\n }\n }\n\n // Build charge object\n var taxCharge = {};\n\n if (type !== \"none\") {\n taxCharge.direct = !isExempt;\n taxCharge.reverse = (isExempt && fullRate > 0 && true);\n } else {\n taxCharge.direct = false;\n taxCharge.reverse = false;\n }\n\n // Build details object (list of all sub-taxes that make up the total rate)\n var taxDetails = [];\n\n if (isExempt !== true) {\n if (countryTax.rate > 0) {\n taxDetails.push({\n type : countryTax.type,\n rate : countryTax.rate\n });\n }\n if (stateTax.rate > 0) {\n taxDetails.push({\n type : stateTax.type,\n rate : stateTax.rate\n });\n }\n }\n\n // Build sales tax context\n return {\n type : type,\n rate : (isExempt === true) ? 0.00 : fullRate,\n currency : (countryTax.currency || null),\n area : taxArea,\n exchange : taxExchange,\n charge : taxCharge,\n details : taxDetails\n };\n};\n\n\n/**\n * SalesTax.prototype.__readCurrentTaxRates\n * @private\n * @param {object} countryCode\n * @return {object} Current tax rates\n */\nSalesTax.prototype.__readCurrentTaxRates = function(\n countryCode\n) {\n var countryTaxRates = tax_rates[countryCode];\n\n // Check tax rates before date? (if any defined)\n if (typeof (countryTaxRates || {}).before === \"object\") {\n var nowDate = this.__getCurrentDate();\n\n var lowestBeforeDateString = null;\n var lowestBeforeDate = null;\n\n for (var beforeDateString in countryTaxRates.before) {\n // Parse date string to an actual date object\n // Notice: the date string uses an UTC+00:00 timezone, which gets parsed \\\n // into the runtime-local timezone, and compared against current date.\n var beforeDate = (new Date(beforeDateString));\n\n // Date is invalid? Throw an error, as we need to be clear that the \\\n // tax rates object is invalid.\n if (isNaN(beforeDate.getTime()) === true) {\n throw new Error(\"Invalid 'before' date string: \" + beforeDateString);\n }\n\n // Are we still in the past relative to this country sales tax \\\n // rates? Then, pickup this tax rate (until we get past-date, and \\\n // then we can use the latest/master tax rate)\n if (nowDate < beforeDate) {\n // New lowest before date? (or none previously-defined)\n // Notice: pick the lowest found before date, as multiple 'before' \\\n // dates can be defined as to schedule multiple tax rate changes in \\\n // the future. Thus, we do not want to pick the first 'before' match.\n if (lowestBeforeDate === null || beforeDate < lowestBeforeDate) {\n lowestBeforeDate = beforeDate;\n lowestBeforeDateString = beforeDateString;\n }\n }\n }\n\n if (lowestBeforeDateString !== null) {\n return countryTaxRates.before[lowestBeforeDateString];\n }\n }\n\n return countryTaxRates;\n};\n\n\n/**\n * SalesTax.prototype.__hasTotalSalesTax\n * @private\n * @param {string} countryCode\n * @param {string} stateCode\n * @return {boolean} Whether country and state added result in a tax or not\n */\nSalesTax.prototype.__hasTotalSalesTax = function(\n countryCode, stateCode\n) {\n countryCode = (countryCode || \"\").toUpperCase();\n stateCode = (stateCode || \"\").toUpperCase();\n\n var taxRates = (this.__readCurrentTaxRates(countryCode) || {});\n\n var countryTax = (taxRates.rate || 0.00);\n var stateTax = 0.0;\n\n if (stateCode) {\n stateTax = (((taxRates.states || {})[stateCode] || {}).rate || 0.00);\n }\n\n return (\n ((countryTax + stateTax) > 0) ? true : false\n );\n};\n\n\n/**\n * SalesTax.prototype.__getCurrentDate\n * @private\n * @return {object} Current date\n */\nSalesTax.prototype.__getCurrentDate = function() {\n // Return current date\n // Notice: this function is useless as-is, though it comes handy when \\\n // unit-testing the library, as it lets us override current date with \\\n // an hardcoded date, eg. to test the automated sales tax change feature.\n return (new Date());\n};\n\n\nmodule.exports = new SalesTax();\n"],"names":["groupBy","key","array","transform","objectsByKeyValue","obj","value","val","supplant","stringVal","replacements","a","b","countriesData","require$$0","require$$1","require$$2","countryCodesList","countryProperty","countryData","fields","sortBy","sortDataBy","filter","finalCollection","data","collator","collectionObject","field","label","finalObject","getGlobal","global","globalObject","module","exports","URL","URLSearchParams","parse","urlString","parseQueryString","slashesDenoteHost","url","resolve","from","to","resolvedUrl","pathname","search","hash","urlToHttpOptions","format","urlInput","options","domainToASCII","domain","domainToUnicode","pathToFileURL","path","fileURLToPath","index","ERROR_MSG","EU_COUNTRIES_CODES","getReadableErrorMsg","headers","https","parseSoapResponse","parsedUrl","serviceUrl","soapBodyTemplate","indexOf","item","i","l","faultstring","soapMessage","hasFault","parseField","ret","err","match","regex","libModule","countryCode","vatNumber","timeout","callback","req","xml","res","str","chunk","ref","error","this","andorra","vat","austria","total","temp","belgium","newVat","generateCheckSums","numbers","validators","initialCheckSums","checkerA","checkerB","validator","isRepeatedArray","varNumbers","varNumber","getRemaining","brazil","checkers","bulgaria","_checkNineLengthVat","multipliers","_isPhysicalPerson","_isForeigner","_miscellaneousVAT","_increase","incr","result","_increase2","expect","physicalMultipliers","month","croatia","product","sum","cyprus","extractAndMultiplyByCounter","czechRepublic","rules","additional","lookup","isLegalEntities","isIndividualType2","isIndividualType3","isIndividualType1","j","pointer","denmark","estonia","europe","finland","france","germany","checkDigit","greece","hungary","ireland","typeFormats","italy","latvia","lithuania","_check9DigitVat","_check12DigitVat","_extractDigit","multiplierList","_doubleCheckCalculation","extractDigit","extractDigit12","k","_doubleCheckCalculation12","luxembourg","malta","netherlands","input","numb","characterValues","getCharValue","isNinetySevenMod","char","code","mod","divisor","norway","poland","portugal","romania","vatLength","russia","_check10DigitINN","_check12DigitINN","total1","total2","expect2","serbia","slovakiaRepublic","slovenia","spain","isNationalJuridicalEntities","isNonNationalJuridical","isPersonalYtoZ","isPersonalKtoX","extractDigitAndMultiplyByCounter","totalStr","tempNumber","sweden","R","digit","S","switzerland","unitedKingdom","isGovernmentDepartment","isHealthAuthorities","isStandardOrCommercialNumber","no","makeResult","isValid","country","isVatValidToRegexp","removeExtraChars","getCountryCodes","countriesVATDoesNotStartWithCountryCode","isVATStartWithCountryCode","countryName","isVATStartWithNumber","getCountry","countriesList","startsWithCode","regexArr","isVatValid","regexpValidRes","regexResult","checkVAT","cleanVAT","countries","src","mask","_toConsumableArray","arr","arr2","campus","prefixes","location","expression","fetch","check_fraud_eu_vat","validate_eu_vat","validate_us_vat","require$$3","regex_whitespace","regex_eu_vat","regex_gb_vat","regex_ca_vat","validate_gb_vat_url","tax_rates","require$$4","region_countries","require$$5","tax_default_object","SalesTax","stateCode","stateTax","taxNumber","self","targetArea","countryTax","exchangeStatus","amount","tax","amountDetails","cleanTaxNumber","splitMatch","response","reject","validationInfo","fraudInfo","useRegionalTax","enabled","region","regionCountries","taxExchange","taxArea","isExempt","fullRate","type","taxCharge","taxDetails","countryTaxRates","nowDate","lowestBeforeDateString","lowestBeforeDate","beforeDateString","beforeDate","taxRates","sales_tax"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45]}