Merge branch '1.1'

This commit will revert the update of subdivision codes [1] since the
way we store this data is very different from the merged branch.

[1]: 8b8f7db713

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
This commit is contained in:
Henrique Moody 2019-05-29 23:14:30 +02:00
commit 2d0f56d9cb
No known key found for this signature in database
GPG key ID: 221E9281655813A6
10 changed files with 744 additions and 669 deletions

40
bin/update-currency-codes Executable file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Usage: {script} TLD_FILENAME
# Update list of TLD
set -euo pipefail
declare -r IFS=$'\n'
declare -r URL="https://www.currency-iso.org/dam/downloads/lists/list_one.xml"
declare -r RULE="${1}"
declare -r TEMPORARY_XML=$(mktemp)
download_list()
{
echo "Downloading list from '${URL}'"
curl --silent --location "${1}" --output "${2}"
}
update_currency_codes()
{
local -r filename_rule="${1}"
local -r filename_xml="${2}"
local -r number_of_items=$(grep "<CcyNtry>" "${filename_xml}" | wc --lines)
local -r temporary_rule=$(mktemp)
echo "Updating list in '${filename_rule}'"
{
sed -n '/^</,/ private/p' "${filename_rule}"
for index in $(seq 1 ${number_of_items}); do
local name=$(xml sel -t -v "//CcyNtry[${index}]/CcyNm" < "${filename_xml}")
local code=$(xml sel -t -v "//CcyNtry[${index}]/Ccy" < "${filename_xml}")
echo " '${code}', // ${name}"
done
sed -n '/^ ]/,/^}/p' "${filename_rule}"
} > "${temporary_rule}"
mv "${temporary_rule}" "${filename_rule}"
}
download_list "${URL}" "${TEMPORARY_XML}"
update_currency_codes "${RULE}" "${TEMPORARY_XML}"

98
bin/update-iso-codes Executable file
View file

@ -0,0 +1,98 @@
#!/usr/bin/env bash
# Usage: {script} TLD_FILENAME
# Update list of TLD
set -euo pipefail
declare -r IFS=$'\n'
declare -r REPOSITORY_URL="https://salsa.debian.org/iso-codes-team/iso-codes.git"
declare -r REPOSITORY_DIRECTORY=$(mktemp --directory)
declare -r LIBRARY_DIRECTORY="${1}"
clone_repository()
{
echo "Cloning repository ${REPOSITORY_URL}"
git clone --quiet "${REPOSITORY_URL}" "${REPOSITORY_DIRECTORY}"
}
list_iso_3166()
{
local -r number_of_items=${1}
local -r filename=${2}
for index in $(seq 0 ${number_of_items}); do
local json=$(jq ".[][${index}]" < "${filename}")
local alpha_2=$(jq ".alpha_2" <<< "${json}" | tr '"' "'")
local alpha_3=$(jq ".alpha_3" <<< "${json}" | tr '"' "'")
local numeric=$(jq ".numeric" <<< "${json}" | tr '"' "'")
local name=$(jq -r ".name" <<< "${json}")
echo " [${alpha_2}, ${alpha_3}, ${numeric}], // ${name}"
done
}
update_country_codes()
{
local -r iso_3166_1_filename="${REPOSITORY_DIRECTORY}/data/iso_3166-1.json"
local -r iso_3166_1_count=$(grep "alpha_3" "${iso_3166_1_filename}" | wc --lines)
local -r iso_3166_3_filename="${REPOSITORY_DIRECTORY}/data/iso_3166-3.json"
local -r iso_3166_3_count=$(grep "alpha_3" "${iso_3166_3_filename}" | wc --lines)
local -r temporary_filename=$(mktemp)
local -r country_rule_filename="${LIBRARY_DIRECTORY}/Rules/CountryCode.php"
echo "Updating country codes using ISO 3166-1 and ISO 3166-3"
{
sed -n '/^</,/ protected/p' "${country_rule_filename}"
{
list_iso_3166 $[iso_3166_1_count - 1] ${iso_3166_1_filename}
list_iso_3166 $[iso_3166_3_count - 1] ${iso_3166_3_filename}
} | sort
sed -n '/^ ]/,/^}/p' "${country_rule_filename}"
} > "${temporary_filename}"
mv "${temporary_filename}" "${country_rule_filename}"
}
rule_from_country_code()
{
local country_code=${1,,}
echo "${LIBRARY_DIRECTORY}/Rules/SubdivisionCode/${country_code^}SubdivisionCode.php"
}
update_subdivision_codes()
{
local -r iso_3166_2_filename="${REPOSITORY_DIRECTORY}/data/iso_3166-2.json"
local -r iso_3166_2_count=$(grep --word-regexp "code" "${iso_3166_2_filename}" | wc --lines)
local -r temporary_filename=$(mktemp)
local last_country_code=""
local last_country_rule=""
echo "Updating subdivision codes using ISO 3166-2"
for index in $(seq 0 $[iso_3166_2_count - 1]); do
local json=$(jq ".[][${index}]" < "${iso_3166_2_filename}")
local code=$(jq -r ".code" <<< "${json}")
local name=$(jq -r ".name" <<< "${json}")
local current_country_code=$(cut --delimiter "-" --fields 1 <<< "${code}")
local current_country_rule=$(rule_from_country_code ${current_country_code})
if [[ ${last_country_code} != ${current_country_code} ]] && [[ ! -z "${last_country_code}" ]]; then
sed -n '/^ \]/,/^}/p' "${last_country_rule}" >> "${temporary_filename}"
cat "${temporary_filename}" > "${last_country_rule}"
fi
if [[ ${last_country_code} != ${current_country_code} ]]; then
echo "- Updating ${current_country_code}"
sed -n '/^</,/public \$haystack = \[/p' "${current_country_rule}" > "${temporary_filename}"
fi
echo " '$(cut --delimiter "-" --fields 2 <<< ${code})', // ${name}" >> "${temporary_filename}"
last_country_code=${current_country_code}
last_country_rule=${current_country_rule}
done
}
clone_repository
update_country_codes
update_subdivision_codes

40
bin/update-language-codes Executable file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Usage: {script} RULE_FILENAME
# Update list of language codes (ISO-639-2)
set -euo pipefail
declare -r IFS=$'\n'
declare -r URL="http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt"
declare -r RULE_FILENAME="${1}"
declare -r TEMPORARY_LIST=$(mktemp)
download_list()
{
echo "Downloading list from '${URL}'"
curl --silent --location "${1}" --output "${2}"
}
update_currency_codes()
{
local -r filename_rule="${1}"
local -r filename_list="${2}"
local -r temporary_rule=$(mktemp)
echo "Updating list in '${filename_rule}'"
{
sed -n '/^</,/ protected/p' "${filename_rule}"
while read line; do
local alpha_3=$(cut --delimiter '|' --fields 1 <<< "${line}" | tr -cd '[a-z]' | tr '[a-z]' '[A-Z]')
local alpha_2=$(cut --delimiter '|' --fields 3 <<< "${line}" | tr '[a-z]' '[A-Z]')
local name=$(cut --delimiter '|' --fields 4 <<< "${line}")
echo " ['${alpha_2}', '${alpha_3}'], // ${name}"
done < "${filename_list}"
sed -n '/^ ]/,/^}/p' "${filename_rule}"
} > "${temporary_rule}"
mv "${temporary_rule}" "${filename_rule}"
}
download_list "${URL}" "${TEMPORARY_LIST}"
update_currency_codes "${RULE_FILENAME}" "${TEMPORARY_LIST}"

34
bin/update-tld Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env bash
# Usage: {script} TLD_FILENAME
# Update list of TLD
set -euo pipefail
declare -r IFS=$'\n'
declare -r URL="https://data.iana.org/TLD/tlds-alpha-by-domain.txt"
declare -r TEMPORARY_LIST_FILE=$(mktemp)
declare -r TEMPORARY_RULE_FILE=$(mktemp)
declare -r TLD_FILENAME="${1}"
echo "Downloading '${URL}'"
curl -s -L "${URL}" -o "${TEMPORARY_LIST_FILE}"
echo "Updating '${TLD_FILENAME}'"
{
sed -nE '/^</,/^\{/p' "${TLD_FILENAME}"
echo " // List extracted from ${URL}"
grep '^#' "${TEMPORARY_LIST_FILE}" | sed 's,#, //,'
echo " protected \$tldList = ["
grep -v '^#' "${TEMPORARY_LIST_FILE}" |
tr '[A-Z]' '[a-z]' |
sed -E "s,^,',; s/$/', /" |
tr -d '\n' |
fold -w 72 -s |
sed 's,^, ,g; s, $,,g'
echo
echo " ];"
echo
sed -nE '/^ public function/,/^}/p' "${TLD_FILENAME}"
} > "${TEMPORARY_RULE_FILE}"
mv "${TEMPORARY_RULE_FILE}" "${TLD_FILENAME}"

View file

@ -21,6 +21,8 @@ This rule supports the three sets of country codes:
When no set is defined the rule uses `'alpha-2'` (`CountryCode::ALPHA2`).
This rules uses data from [iso-codes][].
## Categorization
- ISO codes
@ -43,3 +45,4 @@ See also:
- [Tld](Tld.md)
[ISO 3166-1]: https://wikipedia.org/wiki/ISO_3166-1
[iso-codes]: https://salsa.debian.org/iso-codes-team/iso-codes

View file

@ -11,265 +11,7 @@ v::subdivisionCode('BR')->validate('SP'); // true
v::subdivisionCode('US')->validate('CA'); // true
```
This rule is case sensitive.
## Available country codes
- `AD`: Andorra
- `AE`: United Arab Emirates
- `AF`: Afghanistan
- `AG`: Antigua and Barbuda
- `AI`: Anguilla
- `AL`: Albania
- `AM`: Armenia
- `AN`: AN.html
- `AO`: Angola
- `AQ`: Antarctica
- `AR`: Argentina
- `AS`: American Samoa
- `AT`: Austria
- `AU`: Australia
- `AW`: Aruba
- `AX`: Åland
- `AZ`: Azerbaijan
- `BA`: Bosnia and Herzegovina
- `BB`: Barbados
- `BD`: Bangladesh
- `BE`: Belgium
- `BF`: Burkina Faso
- `BG`: Bulgaria
- `BH`: Bahrain
- `BI`: Burundi
- `BJ`: Benin
- `BL`: Saint Barthélemy
- `BM`: Bermuda
- `BN`: Brunei
- `BO`: Bolivia
- `BQ`: Bonaire
- `BR`: Brazil
- `BS`: Bahamas
- `BT`: Bhutan
- `BV`: Bouvet Island
- `BW`: Botswana
- `BY`: Belarus
- `BZ`: Belize
- `CA`: Canada
- `CC`: Cocos [Keeling] Islands
- `CD`: Democratic Republic of the Congo
- `CF`: Central African Republic
- `CG`: Republic of the Congo
- `CH`: Switzerland
- `CI`: Ivory Coast
- `CK`: Cook Islands
- `CL`: Chile
- `CM`: Cameroon
- `CN`: China
- `CO`: Colombia
- `CR`: Costa Rica
- `CS`: CS.html
- `CU`: Cuba
- `CV`: Cape Verde
- `CW`: Curacao
- `CX`: Christmas Island
- `CY`: Cyprus
- `CZ`: Czech Republic
- `DE`: Germany
- `DJ`: Djibouti
- `DK`: Denmark
- `DM`: Dominica
- `DO`: Dominican Republic
- `DZ`: Algeria
- `EC`: Ecuador
- `EE`: Estonia
- `EG`: Egypt
- `EH`: Western Sahara
- `ER`: Eritrea
- `ES`: Spain
- `ET`: Ethiopia
- `FI`: Finland
- `FJ`: Fiji
- `FK`: Falkland Islands
- `FM`: Micronesia
- `FO`: Faroe Islands
- `FR`: France
- `GA`: Gabon
- `GB`: United Kingdom
- `GD`: Grenada
- `GE`: Georgia
- `GF`: French Guiana
- `GG`: Guernsey
- `GH`: Ghana
- `GI`: Gibraltar
- `GL`: Greenland
- `GM`: Gambia
- `GN`: Guinea
- `GP`: Guadeloupe
- `GQ`: Equatorial Guinea
- `GR`: Greece
- `GS`: South Georgia and the South Sandwich Islands
- `GT`: Guatemala
- `GU`: Guam
- `GW`: Guinea-Bissau
- `GY`: Guyana
- `HK`: Hong Kong
- `HM`: Heard Island and McDonald Islands
- `HN`: Honduras
- `HR`: Croatia
- `HT`: Haiti
- `HU`: Hungary
- `ID`: Indonesia
- `IE`: Ireland
- `IL`: Israel
- `IM`: Isle of Man
- `IN`: India
- `IO`: British Indian Ocean Territory
- `IQ`: Iraq
- `IR`: Iran
- `IS`: Iceland
- `IT`: Italy
- `JE`: Jersey
- `JM`: Jamaica
- `JO`: Jordan
- `JP`: Japan
- `KE`: Kenya
- `KG`: Kyrgyzstan
- `KH`: Cambodia
- `KI`: Kiribati
- `KM`: Comoros
- `KN`: Saint Kitts and Nevis
- `KP`: North Korea
- `KR`: South Korea
- `KW`: Kuwait
- `KY`: Cayman Islands
- `KZ`: Kazakhstan
- `LA`: Laos
- `LB`: Lebanon
- `LC`: Saint Lucia
- `LI`: Liechtenstein
- `LK`: Sri Lanka
- `LR`: Liberia
- `LS`: Lesotho
- `LT`: Lithuania
- `LU`: Luxembourg
- `LV`: Latvia
- `LY`: Libya
- `MA`: Morocco
- `MC`: Monaco
- `MD`: Moldova
- `ME`: Montenegro
- `MF`: Saint Martin
- `MG`: Madagascar
- `MH`: Marshall Islands
- `MK`: Macedonia
- `ML`: Mali
- `MM`: Myanmar [Burma]
- `MN`: Mongolia
- `MO`: Macao
- `MP`: Northern Mariana Islands
- `MQ`: Martinique
- `MR`: Mauritania
- `MS`: Montserrat
- `MT`: Malta
- `MU`: Mauritius
- `MV`: Maldives
- `MW`: Malawi
- `MX`: Mexico
- `MY`: Malaysia
- `MZ`: Mozambique
- `NA`: Namibia
- `NC`: New Caledonia
- `NE`: Niger
- `NF`: Norfolk Island
- `NG`: Nigeria
- `NI`: Nicaragua
- `NL`: Netherlands
- `NO`: Norway
- `NP`: Nepal
- `NR`: Nauru
- `NU`: Niue
- `NZ`: New Zealand
- `OM`: Oman
- `PA`: Panama
- `PE`: Peru
- `PF`: French Polynesia
- `PG`: Papua New Guinea
- `PH`: Philippines
- `PK`: Pakistan
- `PL`: Poland
- `PM`: Saint Pierre and Miquelon
- `PN`: Pitcairn Islands
- `PR`: Puerto Rico
- `PS`: Palestine
- `PT`: Portugal
- `PW`: Palau
- `PY`: Paraguay
- `QA`: Qatar
- `RE`: Réunion
- `RO`: Romania
- `RS`: Serbia
- `RU`: Russia
- `RW`: Rwanda
- `SA`: Saudi Arabia
- `SB`: Solomon Islands
- `SC`: Seychelles
- `SD`: Sudan
- `SE`: Sweden
- `SG`: Singapore
- `SH`: Saint Helena
- `SI`: Slovenia
- `SJ`: Svalbard and Jan Mayen
- `SK`: Slovakia
- `SL`: Sierra Leone
- `SM`: San Marino
- `SN`: Senegal
- `SO`: Somalia
- `SR`: Suriname
- `SS`: South Sudan
- `ST`: São Tomé and Príncipe
- `SV`: El Salvador
- `SX`: Sint Maarten
- `SY`: Syria
- `SZ`: Swaziland
- `TC`: Turks and Caicos Islands
- `TD`: Chad
- `TF`: French Southern Territories
- `TG`: Togo
- `TH`: Thailand
- `TJ`: Tajikistan
- `TK`: Tokelau
- `TL`: East Timor
- `TM`: Turkmenistan
- `TN`: Tunisia
- `TO`: Tonga
- `TR`: Turkey
- `TT`: Trinidad and Tobago
- `TV`: Tuvalu
- `TW`: Taiwan
- `TZ`: Tanzania
- `UA`: Ukraine
- `UG`: Uganda
- `UM`: U.S. Minor Outlying Islands
- `US`: United States
- `UY`: Uruguay
- `UZ`: Uzbekistan
- `VA`: Vatican City
- `VC`: Saint Vincent and the Grenadines
- `VE`: Venezuela
- `VG`: British Virgin Islands
- `VI`: U.S. Virgin Islands
- `VN`: Vietnam
- `VU`: Vanuatu
- `WF`: Wallis and Futuna
- `WS`: Samoa
- `XK`: Kosovo
- `YE`: Yemen
- `YT`: Mayotte
- `ZA`: South Africa
- `ZM`: Zambia
- `ZW`: Zimbabwe
All data was extrated from [GeoNames][] which is licensed under a
[Creative Commons Attribution 3.0 License][].
This rules uses data from [iso-codes][].
## Categorization
@ -293,7 +35,6 @@ See also:
- [PolishIdCard](PolishIdCard.md)
- [Tld](Tld.md)
[Creative Commons Attribution 3.0 License]: http://creativecommons.org/licenses/by/3.0 "Creative Commons Attribution 3.0 License"
[GeoNames]: http://www.geonames.org "GetNames"
[iso-codes]: https://salsa.debian.org/iso-codes-team/iso-codes
[ISO 3166-1 alpha-2]: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 "ISO 3166-1 alpha-2"
[ISO 3166-2]: http://en.wikipedia.org/wiki/ISO_3166-2 "ISO 3166-2"

View file

@ -33,25 +33,21 @@ final class CountryCode extends AbstractSearcher
{
/**
* The ISO representation of a country code.
*
*/
public const ALPHA2 = 'alpha-2';
/**
* The ISO3 representation of a country code.
*
*/
public const ALPHA3 = 'alpha-3';
/**
* The ISO-number representation of a country code.
*
*/
public const NUMERIC = 'numeric';
/**
* Position of the indexes of each set in the list of country codes.
*
*/
private const SET_INDEXES = [
self::ALPHA2 => 0,
@ -60,14 +56,14 @@ final class CountryCode extends AbstractSearcher
];
/**
* @see http://download.geonames.org/export/dump/countryInfo.txt
*
* @see https://salsa.debian.org/iso-codes-team/iso-codes
*/
private const COUNTRY_CODES = [
['AD', 'AND', '020'], // Andorra
['AE', 'ARE', '784'], // United Arab Emirates
['AF', 'AFG', '004'], // Afghanistan
['AG', 'ATG', '028'], // Antigua and Barbuda
['AI', 'AFI', '262'], // French Afars and Issas
['AI', 'AIA', '660'], // Anguilla
['AL', 'ALB', '008'], // Albania
['AM', 'ARM', '051'], // Armenia
@ -79,7 +75,7 @@ final class CountryCode extends AbstractSearcher
['AT', 'AUT', '040'], // Austria
['AU', 'AUS', '036'], // Australia
['AW', 'ABW', '533'], // Aruba
['AX', 'ALA', '248'], // Aland Islands
['AX', 'ALA', '248'], // Åland Islands
['AZ', 'AZE', '031'], // Azerbaijan
['BA', 'BIH', '070'], // Bosnia and Herzegovina
['BB', 'BRB', '052'], // Barbados
@ -90,43 +86,50 @@ final class CountryCode extends AbstractSearcher
['BH', 'BHR', '048'], // Bahrain
['BI', 'BDI', '108'], // Burundi
['BJ', 'BEN', '204'], // Benin
['BL', 'BLM', '652'], // Saint Barthelemy
['BL', 'BLM', '652'], // Saint Barthélemy
['BM', 'BMU', '060'], // Bermuda
['BN', 'BRN', '096'], // Brunei
['BO', 'BOL', '068'], // Bolivia
['BQ', 'BES', '535'], // Bonaire, Saint Eustatius and Saba
['BN', 'BRN', '096'], // Brunei Darussalam
['BO', 'BOL', '068'], // Bolivia, Plurinational State of
['BQ', 'ATB', null], // British Antarctic Territory
['BQ', 'BES', '535'], // Bonaire, Sint Eustatius and Saba
['BR', 'BRA', '076'], // Brazil
['BS', 'BHS', '044'], // Bahamas
['BT', 'BTN', '064'], // Bhutan
['BU', 'BUR', '104'], // Burma, Socialist Republic of the Union of
['BV', 'BVT', '074'], // Bouvet Island
['BW', 'BWA', '072'], // Botswana
['BY', 'BLR', '112'], // Belarus
['BY', 'BYS', '112'], // Byelorussian SSR Soviet Socialist Republic
['BZ', 'BLZ', '084'], // Belize
['CA', 'CAN', '124'], // Canada
['CC', 'CCK', '166'], // Cocos Islands
['CD', 'COD', '180'], // Democratic Republic of the Congo
['CC', 'CCK', '166'], // Cocos (Keeling) Islands
['CD', 'COD', '180'], // Congo, The Democratic Republic of the
['CF', 'CAF', '140'], // Central African Republic
['CG', 'COG', '178'], // Republic of the Congo
['CG', 'COG', '178'], // Congo
['CH', 'CHE', '756'], // Switzerland
['CI', 'CIV', '384'], // Ivory Coast
['CI', 'CIV', '384'], // Côte d'Ivoire
['CK', 'COK', '184'], // Cook Islands
['CL', 'CHL', '152'], // Chile
['CM', 'CMR', '120'], // Cameroon
['CN', 'CHN', '156'], // China
['CO', 'COL', '170'], // Colombia
['CR', 'CRI', '188'], // Costa Rica
['CS', 'CSK', '200'], // Czechoslovakia, Czechoslovak Socialist Republic
['CS', 'SCG', '891'], // Serbia and Montenegro
['CT', 'CTE', '128'], // Canton and Enderbury Islands
['CU', 'CUB', '192'], // Cuba
['CV', 'CPV', '132'], // Cape Verde
['CW', 'CUW', '531'], // Curacao
['CV', 'CPV', '132'], // Cabo Verde
['CW', 'CUW', '531'], // Curaçao
['CX', 'CXR', '162'], // Christmas Island
['CY', 'CYP', '196'], // Cyprus
['CZ', 'CZE', '203'], // Czech Republic
['CZ', 'CZE', '203'], // Czechia
['DD', 'DDR', '278'], // German Democratic Republic
['DE', 'DEU', '276'], // Germany
['DJ', 'DJI', '262'], // Djibouti
['DK', 'DNK', '208'], // Denmark
['DM', 'DMA', '212'], // Dominica
['DO', 'DOM', '214'], // Dominican Republic
['DY', 'DHY', '204'], // Dahomey
['DZ', 'DZA', '012'], // Algeria
['EC', 'ECU', '218'], // Ecuador
['EE', 'EST', '233'], // Estonia
@ -137,13 +140,16 @@ final class CountryCode extends AbstractSearcher
['ET', 'ETH', '231'], // Ethiopia
['FI', 'FIN', '246'], // Finland
['FJ', 'FJI', '242'], // Fiji
['FK', 'FLK', '238'], // Falkland Islands
['FM', 'FSM', '583'], // Micronesia
['FK', 'FLK', '238'], // Falkland Islands (Malvinas)
['FM', 'FSM', '583'], // Micronesia, Federated States of
['FO', 'FRO', '234'], // Faroe Islands
['FQ', 'ATF', null], // French Southern and Antarctic Territories
['FR', 'FRA', '250'], // France
['FX', 'FXX', '249'], // France, Metropolitan
['GA', 'GAB', '266'], // Gabon
['GB', 'GBR', '826'], // United Kingdom
['GD', 'GRD', '308'], // Grenada
['GE', 'GEL', '296'], // Gilbert and Ellice Islands
['GE', 'GEO', '268'], // Georgia
['GF', 'GUF', '254'], // French Guiana
['GG', 'GGY', '831'], // Guernsey
@ -166,6 +172,7 @@ final class CountryCode extends AbstractSearcher
['HR', 'HRV', '191'], // Croatia
['HT', 'HTI', '332'], // Haiti
['HU', 'HUN', '348'], // Hungary
['HV', 'HVO', '854'], // Upper Volta, Republic of
['ID', 'IDN', '360'], // Indonesia
['IE', 'IRL', '372'], // Ireland
['IL', 'ISR', '376'], // Israel
@ -173,25 +180,26 @@ final class CountryCode extends AbstractSearcher
['IN', 'IND', '356'], // India
['IO', 'IOT', '086'], // British Indian Ocean Territory
['IQ', 'IRQ', '368'], // Iraq
['IR', 'IRN', '364'], // Iran
['IR', 'IRN', '364'], // Iran, Islamic Republic of
['IS', 'ISL', '352'], // Iceland
['IT', 'ITA', '380'], // Italy
['JE', 'JEY', '832'], // Jersey
['JM', 'JAM', '388'], // Jamaica
['JO', 'JOR', '400'], // Jordan
['JP', 'JPN', '392'], // Japan
['JT', 'JTN', '396'], // Johnston Island
['KE', 'KEN', '404'], // Kenya
['KG', 'KGZ', '417'], // Kyrgyzstan
['KH', 'KHM', '116'], // Cambodia
['KI', 'KIR', '296'], // Kiribati
['KM', 'COM', '174'], // Comoros
['KN', 'KNA', '659'], // Saint Kitts and Nevis
['KP', 'PRK', '408'], // North Korea
['KR', 'KOR', '410'], // South Korea
['KP', 'PRK', '408'], // Korea, Democratic People's Republic of
['KR', 'KOR', '410'], // Korea, Republic of
['KW', 'KWT', '414'], // Kuwait
['KY', 'CYM', '136'], // Cayman Islands
['KZ', 'KAZ', '398'], // Kazakhstan
['LA', 'LAO', '418'], // Laos
['LA', 'LAO', '418'], // Lao People's Democratic Republic
['LB', 'LBN', '422'], // Lebanon
['LC', 'LCA', '662'], // Saint Lucia
['LI', 'LIE', '438'], // Liechtenstein
@ -204,12 +212,13 @@ final class CountryCode extends AbstractSearcher
['LY', 'LBY', '434'], // Libya
['MA', 'MAR', '504'], // Morocco
['MC', 'MCO', '492'], // Monaco
['MD', 'MDA', '498'], // Moldova
['MD', 'MDA', '498'], // Moldova, Republic of
['ME', 'MNE', '499'], // Montenegro
['MF', 'MAF', '663'], // Saint Martin
['MF', 'MAF', '663'], // Saint Martin (French part)
['MG', 'MDG', '450'], // Madagascar
['MH', 'MHL', '584'], // Marshall Islands
['MK', 'MKD', '807'], // Macedonia
['MI', 'MID', '488'], // Midway Islands
['MK', 'MKD', '807'], // North Macedonia
['ML', 'MLI', '466'], // Mali
['MM', 'MMR', '104'], // Myanmar
['MN', 'MNG', '496'], // Mongolia
@ -230,15 +239,19 @@ final class CountryCode extends AbstractSearcher
['NE', 'NER', '562'], // Niger
['NF', 'NFK', '574'], // Norfolk Island
['NG', 'NGA', '566'], // Nigeria
['NH', 'NHB', '548'], // New Hebrides
['NI', 'NIC', '558'], // Nicaragua
['NL', 'NLD', '528'], // Netherlands
['NO', 'NOR', '578'], // Norway
['NP', 'NPL', '524'], // Nepal
['NQ', 'ATN', '216'], // Dronning Maud Land
['NR', 'NRU', '520'], // Nauru
['NT', 'NTZ', '536'], // Neutral Zone
['NU', 'NIU', '570'], // Niue
['NZ', 'NZL', '554'], // New Zealand
['OM', 'OMN', '512'], // Oman
['PA', 'PAN', '591'], // Panama
['PC', 'PCI', '582'], // Pacific Islands (trust territory)
['PE', 'PER', '604'], // Peru
['PF', 'PYF', '258'], // French Polynesia
['PG', 'PNG', '598'], // Papua New Guinea
@ -248,15 +261,18 @@ final class CountryCode extends AbstractSearcher
['PM', 'SPM', '666'], // Saint Pierre and Miquelon
['PN', 'PCN', '612'], // Pitcairn
['PR', 'PRI', '630'], // Puerto Rico
['PS', 'PSE', '275'], // Palestinian Territory
['PS', 'PSE', '275'], // Palestine, State of
['PT', 'PRT', '620'], // Portugal
['PU', 'PUS', '849'], // US Miscellaneous Pacific Islands
['PW', 'PLW', '585'], // Palau
['PY', 'PRY', '600'], // Paraguay
['PZ', 'PCZ', null], // Panama Canal Zone
['QA', 'QAT', '634'], // Qatar
['RE', 'REU', '638'], // Reunion
['RE', 'REU', '638'], // Réunion
['RH', 'RHO', '716'], // Southern Rhodesia
['RO', 'ROU', '642'], // Romania
['RS', 'SRB', '688'], // Serbia
['RU', 'RUS', '643'], // Russia
['RU', 'RUS', '643'], // Russian Federation
['RW', 'RWA', '646'], // Rwanda
['SA', 'SAU', '682'], // Saudi Arabia
['SB', 'SLB', '090'], // Solomon Islands
@ -264,9 +280,10 @@ final class CountryCode extends AbstractSearcher
['SD', 'SDN', '729'], // Sudan
['SE', 'SWE', '752'], // Sweden
['SG', 'SGP', '702'], // Singapore
['SH', 'SHN', '654'], // Saint Helena
['SH', 'SHN', '654'], // Saint Helena, Ascension and Tristan da Cunha
['SI', 'SVN', '705'], // Slovenia
['SJ', 'SJM', '744'], // Svalbard and Jan Mayen
['SK', 'SKM', null], // Sikkim
['SK', 'SVK', '703'], // Slovakia
['SL', 'SLE', '694'], // Sierra Leone
['SM', 'SMR', '674'], // San Marino
@ -275,10 +292,11 @@ final class CountryCode extends AbstractSearcher
['SR', 'SUR', '740'], // Suriname
['SS', 'SSD', '728'], // South Sudan
['ST', 'STP', '678'], // Sao Tome and Principe
['SU', 'SUN', '810'], // USSR, Union of Soviet Socialist Republics
['SV', 'SLV', '222'], // El Salvador
['SX', 'SXM', '534'], // Sint Maarten
['SY', 'SYR', '760'], // Syria
['SZ', 'SWZ', '748'], // Swaziland
['SX', 'SXM', '534'], // Sint Maarten (Dutch part)
['SY', 'SYR', '760'], // Syrian Arab Republic
['SZ', 'SWZ', '748'], // Eswatini
['TC', 'TCA', '796'], // Turks and Caicos Islands
['TD', 'TCD', '148'], // Chad
['TF', 'ATF', '260'], // French Southern Territories
@ -286,35 +304,40 @@ final class CountryCode extends AbstractSearcher
['TH', 'THA', '764'], // Thailand
['TJ', 'TJK', '762'], // Tajikistan
['TK', 'TKL', '772'], // Tokelau
['TL', 'TLS', '626'], // East Timor
['TL', 'TLS', '626'], // Timor-Leste
['TM', 'TKM', '795'], // Turkmenistan
['TN', 'TUN', '788'], // Tunisia
['TO', 'TON', '776'], // Tonga
['TP', 'TMP', '626'], // East Timor
['TR', 'TUR', '792'], // Turkey
['TT', 'TTO', '780'], // Trinidad and Tobago
['TV', 'TUV', '798'], // Tuvalu
['TW', 'TWN', '158'], // Taiwan
['TZ', 'TZA', '834'], // Tanzania
['TW', 'TWN', '158'], // Taiwan, Province of China
['TZ', 'TZA', '834'], // Tanzania, United Republic of
['UA', 'UKR', '804'], // Ukraine
['UG', 'UGA', '800'], // Uganda
['UM', 'UMI', '581'], // United States Minor Outlying Islands
['US', 'USA', '840'], // United States
['UY', 'URY', '858'], // Uruguay
['UZ', 'UZB', '860'], // Uzbekistan
['VA', 'VAT', '336'], // Vatican
['VA', 'VAT', '336'], // Holy See (Vatican City State)
['VC', 'VCT', '670'], // Saint Vincent and the Grenadines
['VE', 'VEN', '862'], // Venezuela
['VG', 'VGB', '092'], // British Virgin Islands
['VI', 'VIR', '850'], // U.S. Virgin Islands
['VN', 'VNM', '704'], // Vietnam
['VD', 'VDR', null], // Viet-Nam, Democratic Republic of
['VE', 'VEN', '862'], // Venezuela, Bolivarian Republic of
['VG', 'VGB', '092'], // Virgin Islands, British
['VI', 'VIR', '850'], // Virgin Islands, U.S.
['VN', 'VNM', '704'], // Viet Nam
['VU', 'VUT', '548'], // Vanuatu
['WF', 'WLF', '876'], // Wallis and Futuna
['WK', 'WAK', '872'], // Wake Island
['WS', 'WSM', '882'], // Samoa
['XK', 'XKX', '0'], // Kosovo
['YD', 'YMD', '720'], // Yemen, Democratic, People's Democratic Republic of
['YE', 'YEM', '887'], // Yemen
['YT', 'MYT', '175'], // Mayotte
['YU', 'YUG', '891'], // Yugoslavia, Socialist Federal Republic of
['ZA', 'ZAF', '710'], // South Africa
['ZM', 'ZMB', '894'], // Zambia
['ZR', 'ZAR', '180'], // Zaire, Republic of
['ZW', 'ZWE', '716'], // Zimbabwe
];

View file

@ -24,191 +24,289 @@ namespace Respect\Validation\Rules;
final class CurrencyCode extends AbstractSearcher
{
/**
* @see @see http://www.currency-iso.org/en/home/tables/table-a1.html
* @see http://www.currency-iso.org/en/home/tables/table-a1.html
*
* {@inheritDoc}
*/
protected function getDataSource(): array
{
return [
'AED', // UAE Dirham
'AFN', // Afghani
'EUR', // Euro
'ALL', // Lek
'AMD', // Armenian Dram
'ANG', // Netherlands Antillean Guilder
'DZD', // Algerian Dinar
'USD', // US Dollar
'EUR', // Euro
'AOA', // Kwanza
'XCD', // East Caribbean Dollar
'XCD', // East Caribbean Dollar
'ARS', // Argentine Peso
'AUD', // Australian Dollar
'AMD', // Armenian Dram
'AWG', // Aruban Florin
'AZN', // Azerbaijanian Manat
'BAM', // Convertible Mark
'BBD', // Barbados Dollar
'BDT', // Taka
'BGN', // Bulgarian Lev
'AUD', // Australian Dollar
'EUR', // Euro
'AZN', // Azerbaijan Manat
'BSD', // Bahamian Dollar
'BHD', // Bahraini Dinar
'BIF', // Burundi Franc
'BDT', // Taka
'BBD', // Barbados Dollar
'BYN', // Belarusian Ruble
'EUR', // Euro
'BZD', // Belize Dollar
'XOF', // CFA Franc BCEAO
'BMD', // Bermudian Dollar
'BND', // Brunei Dollar
'INR', // Indian Rupee
'BTN', // Ngultrum
'BOB', // Boliviano
'BOV', // Mvdol
'BRL', // Brazilian Real
'BSD', // Bahamian Dollar
'BTN', // Ngultrum
'USD', // US Dollar
'BAM', // Convertible Mark
'BWP', // Pula
'BYN', // Belarussian Ruble
'BZD', // Belize Dollar
'NOK', // Norwegian Krone
'BRL', // Brazilian Real
'USD', // US Dollar
'BND', // Brunei Dollar
'BGN', // Bulgarian Lev
'XOF', // CFA Franc BCEAO
'BIF', // Burundi Franc
'CVE', // Cabo Verde Escudo
'KHR', // Riel
'XAF', // CFA Franc BEAC
'CAD', // Canadian Dollar
'CDF', // Congolese Franc
'CHE', // WIR Euro
'CHF', // Swiss Franc
'CHW', // WIR Franc
'CLF', // Unidad de Fomento
'KYD', // Cayman Islands Dollar
'XAF', // CFA Franc BEAC
'XAF', // CFA Franc BEAC
'CLP', // Chilean Peso
'CLF', // Unidad de Fomento
'CNY', // Yuan Renminbi
'AUD', // Australian Dollar
'AUD', // Australian Dollar
'COP', // Colombian Peso
'COU', // Unidad de Valor Real
'KMF', // Comorian Franc
'CDF', // Congolese Franc
'XAF', // CFA Franc BEAC
'NZD', // New Zealand Dollar
'CRC', // Costa Rican Colon
'CUC', // Peso Convertible
'XOF', // CFA Franc BCEAO
'HRK', // Kuna
'CUP', // Cuban Peso
'CVE', // Cabo Verde Escudo
'CUC', // Peso Convertible
'ANG', // Netherlands Antillean Guilder
'EUR', // Euro
'CZK', // Czech Koruna
'DJF', // Djibouti Franc
'DKK', // Danish Krone
'DJF', // Djibouti Franc
'XCD', // East Caribbean Dollar
'DOP', // Dominican Peso
'DZD', // Algerian Dinar
'USD', // US Dollar
'EGP', // Egyptian Pound
'SVC', // El Salvador Colon
'USD', // US Dollar
'XAF', // CFA Franc BEAC
'ERN', // Nakfa
'EUR', // Euro
'ETB', // Ethiopian Birr
'EUR', // Euro
'FJD', // Fiji Dollar
'FKP', // Falkland Islands Pound
'GBP', // Pound Sterling
'DKK', // Danish Krone
'FJD', // Fiji Dollar
'EUR', // Euro
'EUR', // Euro
'EUR', // Euro
'XPF', // CFP Franc
'EUR', // Euro
'XAF', // CFA Franc BEAC
'GMD', // Dalasi
'GEL', // Lari
'EUR', // Euro
'GHS', // Ghana Cedi
'GIP', // Gibraltar Pound
'GMD', // Dalasi
'GNF', // Guinea Franc
'EUR', // Euro
'DKK', // Danish Krone
'XCD', // East Caribbean Dollar
'EUR', // Euro
'USD', // US Dollar
'GTQ', // Quetzal
'GBP', // Pound Sterling
'GNF', // Guinean Franc
'XOF', // CFA Franc BCEAO
'GYD', // Guyana Dollar
'HKD', // Hong Kong Dollar
'HNL', // Lempira
'HRK', // Kuna
'HTG', // Gourde
'USD', // US Dollar
'AUD', // Australian Dollar
'EUR', // Euro
'HNL', // Lempira
'HKD', // Hong Kong Dollar
'HUF', // Forint
'IDR', // Rupiah
'ILS', // New Israeli Sheqel
'INR', // Indian Rupee
'IQD', // Iraqi Dinar
'IRR', // Iranian Rial
'ISK', // Iceland Krona
'INR', // Indian Rupee
'IDR', // Rupiah
'XDR', // SDR (Special Drawing Right)
'IRR', // Iranian Rial
'IQD', // Iraqi Dinar
'EUR', // Euro
'GBP', // Pound Sterling
'ILS', // New Israeli Sheqel
'EUR', // Euro
'JMD', // Jamaican Dollar
'JOD', // Jordanian Dinar
'JPY', // Yen
'GBP', // Pound Sterling
'JOD', // Jordanian Dinar
'KZT', // Tenge
'KES', // Kenyan Shilling
'KGS', // Som
'KHR', // Riel
'KMF', // Comoro Franc
'AUD', // Australian Dollar
'KPW', // North Korean Won
'KRW', // Won
'KWD', // Kuwaiti Dinar
'KYD', // Cayman Islands Dollar
'KZT', // Tenge
'LAK', // Kip
'KGS', // Som
'LAK', // Lao Kip
'EUR', // Euro
'LBP', // Lebanese Pound
'LKR', // Sri Lanka Rupee
'LRD', // Liberian Dollar
'LSL', // Loti
'ZAR', // Rand
'LRD', // Liberian Dollar
'LYD', // Libyan Dinar
'MAD', // Moroccan Dirham
'MDL', // Moldovan Leu
'MGA', // Malagasy Ariary
'MKD', // Denar
'MMK', // Kyat
'MNT', // Tugrik
'CHF', // Swiss Franc
'EUR', // Euro
'EUR', // Euro
'MOP', // Pataca
'MRO', // Ouguiya
'MUR', // Mauritius Rupee
'MVR', // Rufiyaa
'MWK', // Kwacha
'MXN', // Mexican Peso
'MXV', // Mexican Unidad de Inversion - UDI
'MKD', // Denar
'MGA', // Malagasy Ariary
'MWK', // Malawi Kwacha
'MYR', // Malaysian Ringgit
'MVR', // Rufiyaa
'XOF', // CFA Franc BCEAO
'EUR', // Euro
'USD', // US Dollar
'EUR', // Euro
'MRU', // Ouguiya
'MUR', // Mauritius Rupee
'EUR', // Euro
'XUA', // ADB Unit of Account
'MXN', // Mexican Peso
'MXV', // Mexican Unidad de Inversion (UDI)
'USD', // US Dollar
'MDL', // Moldovan Leu
'EUR', // Euro
'MNT', // Tugrik
'EUR', // Euro
'XCD', // East Caribbean Dollar
'MAD', // Moroccan Dirham
'MZN', // Mozambique Metical
'MMK', // Kyat
'NAD', // Namibia Dollar
'NGN', // Naira
'NIO', // Cordoba Oro
'NOK', // Norwegian Krone
'ZAR', // Rand
'AUD', // Australian Dollar
'NPR', // Nepalese Rupee
'EUR', // Euro
'XPF', // CFP Franc
'NZD', // New Zealand Dollar
'NIO', // Cordoba Oro
'XOF', // CFA Franc BCEAO
'NGN', // Naira
'NZD', // New Zealand Dollar
'AUD', // Australian Dollar
'USD', // US Dollar
'NOK', // Norwegian Krone
'OMR', // Rial Omani
'PAB', // Balboa
'PEN', // Nuevo Sol
'PGK', // Kina
'PHP', // Philippine Peso
'PKR', // Pakistan Rupee
'PLN', // Zloty
'USD', // US Dollar
'PAB', // Balboa
'USD', // US Dollar
'PGK', // Kina
'PYG', // Guarani
'PEN', // Sol
'PHP', // Philippine Peso
'NZD', // New Zealand Dollar
'PLN', // Zloty
'EUR', // Euro
'USD', // US Dollar
'QAR', // Qatari Rial
'EUR', // Euro
'RON', // Romanian Leu
'RSD', // Serbian Dinar
'RUB', // Russian Ruble
'RWF', // Rwanda Franc
'SAR', // Saudi Riyal
'SBD', // Solomon Islands Dollar
'SCR', // Seychelles Rupee
'SDG', // Sudanese Pound
'SEK', // Swedish Krona
'SGD', // Singapore Dollar
'EUR', // Euro
'SHP', // Saint Helena Pound
'SLL', // Leone
'SOS', // Somali Shilling
'SRD', // Surinam Dollar
'SSP', // South Sudanese Pound
'STD', // Dobra
'SVC', // El Salvador Colon
'SYP', // Syrian Pound
'SZL', // Lilangeni
'THB', // Baht
'TJS', // Somoni
'TMT', // Turkmenistan New Manat
'TND', // Tunisian Dinar
'TOP', // Paanga
'TRY', // Turkish Lira
'TTD', // Trinidad and Tobago Dollar
'TWD', // New Taiwan Dollar
'TZS', // Tanzanian Shilling
'UAH', // Hryvnia
'UGX', // Uganda Shilling
'USD', // US Dollar
'USN', // US Dollar - Next day
'UYI', // Uruguay Peso en Unidades Indexadas - URUIURUI
'UYU', // Peso Uruguayo
'UZS', // Uzbekistan Sum
'VEF', // Bolivar
'VND', // Dong
'VUV', // Vatu
'WST', // Tala
'XAF', // CFA Franc BEAC
'XAG', // Silver
'XAU', // Gold
'XBA', // Bond Markets Unit European Composite Unit - EURCO
'XBB', // Bond Markets Unit European Monetary Unit - E.M.U.-6
'XBC', // Bond Markets Unit European Unit of Account 9 - E.U.A.-9
'XBD', // Bond Markets Unit European Unit of Account 17 - E.U.A.-17
'XCD', // East Caribbean Dollar
'XDR', // SDR - Special Drawing Right
'XCD', // East Caribbean Dollar
'EUR', // Euro
'EUR', // Euro
'XCD', // East Caribbean Dollar
'WST', // Tala
'EUR', // Euro
'STN', // Dobra
'SAR', // Saudi Riyal
'XOF', // CFA Franc BCEAO
'XPD', // Palladium
'XPF', // CFP Franc
'XPT', // Platinum
'RSD', // Serbian Dinar
'SCR', // Seychelles Rupee
'SLL', // Leone
'SGD', // Singapore Dollar
'ANG', // Netherlands Antillean Guilder
'XSU', // Sucre
'XTS', // Codes specifically reserved for testing purposes
'XUA', // ADB Unit of Account
'XXX', // The codes assigned for transactions where no currency is involved
'YER', // Yemeni Rial
'EUR', // Euro
'EUR', // Euro
'SBD', // Solomon Islands Dollar
'SOS', // Somali Shilling
'ZAR', // Rand
'SSP', // South Sudanese Pound
'EUR', // Euro
'LKR', // Sri Lanka Rupee
'SDG', // Sudanese Pound
'SRD', // Surinam Dollar
'NOK', // Norwegian Krone
'SZL', // Lilangeni
'SEK', // Swedish Krona
'CHF', // Swiss Franc
'CHE', // WIR Euro
'CHW', // WIR Franc
'SYP', // Syrian Pound
'TWD', // New Taiwan Dollar
'TJS', // Somoni
'TZS', // Tanzanian Shilling
'THB', // Baht
'USD', // US Dollar
'XOF', // CFA Franc BCEAO
'NZD', // New Zealand Dollar
'TOP', // Paanga
'TTD', // Trinidad and Tobago Dollar
'TND', // Tunisian Dinar
'TRY', // Turkish Lira
'TMT', // Turkmenistan New Manat
'USD', // US Dollar
'AUD', // Australian Dollar
'UGX', // Uganda Shilling
'UAH', // Hryvnia
'AED', // UAE Dirham
'GBP', // Pound Sterling
'USD', // US Dollar
'USD', // US Dollar
'USN', // US Dollar (Next day)
'UYU', // Peso Uruguayo
'UYI', // Uruguay Peso en Unidades Indexadas (UI)
'UYW', // Unidad Previsional
'UZS', // Uzbekistan Sum
'VUV', // Vatu
'VES', // Bolívar Soberano
'VND', // Dong
'USD', // US Dollar
'USD', // US Dollar
'XPF', // CFP Franc
'MAD', // Moroccan Dirham
'YER', // Yemeni Rial
'ZMW', // Zambian Kwacha
'ZWL', // Zimbabwe Dollar
'XBA', // Bond Markets Unit European Composite Unit (EURCO)
'XBB', // Bond Markets Unit European Monetary Unit (E.M.U.-6)
'XBC', // Bond Markets Unit European Unit of Account 9 (E.U.A.-9)
'XBD', // Bond Markets Unit European Unit of Account 17 (E.U.A.-17)
'XTS', // Codes specifically reserved for testing purposes
'XXX', // The codes assigned for transactions where no currency is involved
'XAU', // Gold
'XPD', // Palladium
'XPT', // Platinum
'XAG', // Silver
];
}
}

View file

@ -37,16 +37,15 @@ final class LanguageCode extends AbstractEnvelope
/**
* @see http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt
*
*/
public const LANGUAGE_CODES = [
['aa', 'aar'], // Afar
['aa', 'aar'], // Afar
['ab', 'abk'], // Abkhazian
['', 'ace'], // Achinese
['', 'ach'], // Acoli
['', 'ada'], // Adangme
['', 'ady'], // Adyghe; Adygei
['', 'afa'], // Afro-asiatic languages
['', 'afa'], // Afro-Asiatic languages
['', 'afh'], // Afrihili
['af', 'afr'], // Afrikaans
['', 'ain'], // Ainu
@ -55,13 +54,13 @@ final class LanguageCode extends AbstractEnvelope
['sq', 'alb'], // Albanian
['', 'ale'], // Aleut
['', 'alg'], // Algonquian languages
['', 'alt'], // Southern altai
['', 'alt'], // Southern Altai
['am', 'amh'], // Amharic
['', 'ang'], // English, old - ca.450-1100
['', 'ang'], // English, Old (ca.450-1100)
['', 'anp'], // Angika
['', 'apa'], // Apache languages
['ar', 'ara'], // Arabic
['', 'arc'], // Official aramaic - 700-300 bce; Imperial aramaic - 700-300 bce
['', 'arc'], // Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)
['an', 'arg'], // Aragonese
['hy', 'arm'], // Armenian
['', 'arn'], // Mapudungun; Mapuche
@ -97,7 +96,7 @@ final class LanguageCode extends AbstractEnvelope
['', 'bin'], // Bini; Edo
['bi', 'bis'], // Bislama
['', 'bla'], // Siksika
['', 'bnt'], // Bantu - other
['', 'bnt'], // Bantu - Other
['bs', 'bos'], // Bosnian
['', 'bra'], // Braj
['br', 'bre'], // Breton
@ -108,8 +107,8 @@ final class LanguageCode extends AbstractEnvelope
['my', 'bur'], // Burmese
['', 'byn'], // Blin; Bilin
['', 'cad'], // Caddo
['', 'cai'], // Central american indian languages
['', 'car'], // Galibi carib
['', 'cai'], // Central American Indian languages
['', 'car'], // Galibi Carib
['ca', 'cat'], // Catalan; Valencian
['', 'cau'], // Caucasian languages
['', 'ceb'], // Cebuano
@ -123,20 +122,21 @@ final class LanguageCode extends AbstractEnvelope
['', 'chm'], // Mari
['', 'chn'], // Chinook jargon
['', 'cho'], // Choctaw
['', 'chp'], // Chipewyan; Dene suline
['', 'chp'], // Chipewyan; Dene Suline
['', 'chr'], // Cherokee
['cu', 'chu'], // Church slavic; Old slavonic; Church slavonic; Old bulgarian; Old church slavonic
['cu', 'chu'], // Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic
['cv', 'chv'], // Chuvash
['', 'chy'], // Cheyenne
['', 'cmc'], // Chamic languages
['', 'cnr'], // Montenegrin
['', 'cop'], // Coptic
['kw', 'cor'], // Cornish
['co', 'cos'], // Corsican
['', 'cpe'], // Creoles and pidgins, english based
['', 'cpf'], // Creoles and pidgins, french-based
['', 'cpp'], // Creoles and pidgins, portuguese-based
['', 'cpe'], // Creoles and pidgins, English based
['', 'cpf'], // Creoles and pidgins, French-based
['', 'cpp'], // Creoles and pidgins, Portuguese-based
['cr', 'cre'], // Cree
['', 'crh'], // Crimean tatar; Crimean turkish
['', 'crh'], // Crimean Tatar; Crimean Turkish
['', 'crp'], // Creoles and pidgins
['', 'csb'], // Kashubian
['', 'cus'], // Cushitic languages
@ -144,26 +144,26 @@ final class LanguageCode extends AbstractEnvelope
['', 'dak'], // Dakota
['da', 'dan'], // Danish
['', 'dar'], // Dargwa
['', 'day'], // Land dayak languages
['', 'day'], // Land Dayak languages
['', 'del'], // Delaware
['', 'den'], // Slave - athapascan
['', 'den'], // Slave - Athapascan
['', 'dgr'], // Dogrib
['', 'din'], // Dinka
['dv', 'div'], // Divehi; Dhivehi; Maldivian
['', 'doi'], // Dogri
['', 'dra'], // Dravidian languages
['', 'dsb'], // Lower sorbian
['', 'dsb'], // Lower Sorbian
['', 'dua'], // Duala
['', 'dum'], // Dutch, middle - ca.1050-1350
['', 'dum'], // Dutch, Middle - ca.1050-1350
['nl', 'dut'], // Dutch; Flemish
['', 'dyu'], // Dyula
['dz', 'dzo'], // Dzongkha
['', 'efi'], // Efik
['', 'egy'], // Egyptian - ancient
['', 'egy'], // Egyptian - Ancient
['', 'eka'], // Ekajuk
['', 'elx'], // Elamite
['en', 'eng'], // English
['', 'enm'], // English, middle - 1100-1500
['', 'enm'], // English, Middle - 1100-1500
['eo', 'epo'], // Esperanto
['et', 'est'], // Estonian
['ee', 'ewe'], // Ewe
@ -174,14 +174,14 @@ final class LanguageCode extends AbstractEnvelope
['fj', 'fij'], // Fijian
['', 'fil'], // Filipino; Pilipino
['fi', 'fin'], // Finnish
['', 'fiu'], // Finno-ugrian languages
['', 'fiu'], // Finno-Ugrian languages
['', 'fon'], // Fon
['fr', 'fre'], // French
['', 'frm'], // French, middle - ca.1400-1600
['', 'fro'], // French, old - 842-ca.1400
['', 'frr'], // Northern frisian
['', 'frs'], // Eastern frisian
['fy', 'fry'], // Western frisian
['', 'frm'], // French, Middle - ca.1400-1600
['', 'fro'], // French, Old - 842-ca.1400
['', 'frr'], // Northern Frisian
['', 'frs'], // Eastern Frisian
['fy', 'fry'], // Western Frisian
['ff', 'ful'], // Fulah
['', 'fur'], // Friulian
['', 'gaa'], // Ga
@ -192,51 +192,51 @@ final class LanguageCode extends AbstractEnvelope
['de', 'ger'], // German
['', 'gez'], // Geez
['', 'gil'], // Gilbertese
['gd', 'gla'], // Gaelic; Scottish gaelic
['gd', 'gla'], // Gaelic; Scottish Gaelic
['ga', 'gle'], // Irish
['gl', 'glg'], // Galician
['gv', 'glv'], // Manx
['', 'gmh'], // German, middle high - ca.1050-1500
['', 'goh'], // German, old high - ca.750-1050
['', 'gmh'], // German, Middle High - ca.1050-1500
['', 'goh'], // German, Old High - ca.750-1050
['', 'gon'], // Gondi
['', 'gor'], // Gorontalo
['', 'got'], // Gothic
['', 'grb'], // Grebo
['', 'grc'], // Greek, ancient - to 1453
['el', 'gre'], // Greek, modern - 1453-
['', 'grc'], // Greek, Ancient - to 1453
['el', 'gre'], // Greek, Modern - 1453-
['gn', 'grn'], // Guarani
['', 'gsw'], // Swiss german; Alemannic; Alsatian
['', 'gsw'], // Swiss German; Alemannic; Alsatian
['gu', 'guj'], // Gujarati
['', 'gwi'], // Gwich'in
['', 'hai'], // Haida
['ht', 'hat'], // Haitian; Haitian creole
['ht', 'hat'], // Haitian; Haitian Creole
['ha', 'hau'], // Hausa
['', 'haw'], // Hawaiian
['he', 'heb'], // Hebrew
['hz', 'her'], // Herero
['', 'hil'], // Hiligaynon
['', 'him'], // Himachali languages; Western pahari languages
['', 'him'], // Himachali languages; Western Pahari languages
['hi', 'hin'], // Hindi
['', 'hit'], // Hittite
['', 'hmn'], // Hmong; Mong
['ho', 'hmo'], // Hiri motu
['ho', 'hmo'], // Hiri Motu
['hr', 'hrv'], // Croatian
['', 'hsb'], // Upper sorbian
['', 'hsb'], // Upper Sorbian
['hu', 'hun'], // Hungarian
['', 'hup'], // Hupa
['', 'iba'], // Iban
['ig', 'ibo'], // Igbo
['is', 'ice'], // Icelandic
['io', 'ido'], // Ido
['ii', 'iii'], // Sichuan yi; Nuosu
['ii', 'iii'], // Sichuan Yi; Nuosu
['', 'ijo'], // Ijo languages
['iu', 'iku'], // Inuktitut
['ie', 'ile'], // Interlingue; Occidental
['', 'ilo'], // Iloko
['ia', 'ina'], // Interlingua - international auxiliary language association
['ia', 'ina'], // Interlingua - International Auxiliary Language Association
['', 'inc'], // Indic languages
['id', 'ind'], // Indonesian
['', 'ine'], // Indo-european languages
['', 'ine'], // Indo-European languages
['', 'inh'], // Ingush
['ik', 'ipk'], // Inupiaq
['', 'ira'], // Iranian languages
@ -245,9 +245,9 @@ final class LanguageCode extends AbstractEnvelope
['jv', 'jav'], // Javanese
['', 'jbo'], // Lojban
['ja', 'jpn'], // Japanese
['', 'jpr'], // Judeo-persian
['', 'jrb'], // Judeo-arabic
['', 'kaa'], // Kara-kalpak
['', 'jpr'], // Judeo-Persian
['', 'jrb'], // Judeo-Arabic
['', 'kaa'], // Kara-Kalpak
['', 'kab'], // Kabyle
['', 'kac'], // Kachin; Jingpho
['kl', 'kal'], // Kalaallisut; Greenlandic
@ -261,7 +261,7 @@ final class LanguageCode extends AbstractEnvelope
['', 'kbd'], // Kabardian
['', 'kha'], // Khasi
['', 'khi'], // Khoisan languages
['km', 'khm'], // Central khmer
['km', 'khm'], // Central Khmer
['', 'kho'], // Khotanese; Sakan
['ki', 'kik'], // Kikuyu; Gikuyu
['rw', 'kin'], // Kinyarwanda
@ -273,7 +273,7 @@ final class LanguageCode extends AbstractEnvelope
['ko', 'kor'], // Korean
['', 'kos'], // Kosraean
['', 'kpe'], // Kpelle
['', 'krc'], // Karachay-balkar
['', 'krc'], // Karachay-Balkar
['', 'krl'], // Karelian
['', 'kro'], // Kru languages
['', 'kru'], // Kurukh
@ -294,12 +294,12 @@ final class LanguageCode extends AbstractEnvelope
['', 'lol'], // Mongo
['', 'loz'], // Lozi
['lb', 'ltz'], // Luxembourgish; Letzeburgesch
['', 'lua'], // Luba-lulua
['lu', 'lub'], // Luba-katanga
['', 'lua'], // Luba-Lulua
['lu', 'lub'], // Luba-Katanga
['lg', 'lug'], // Ganda
['', 'lui'], // Luiseno
['', 'lun'], // Lunda
['', 'luo'], // Luo - kenya and tanzania
['', 'luo'], // Luo - Kenya and Tanzania
['', 'lus'], // Lushai
['mk', 'mac'], // Macedonian
['', 'mad'], // Madurese
@ -317,11 +317,11 @@ final class LanguageCode extends AbstractEnvelope
['', 'mdf'], // Moksha
['', 'mdr'], // Mandar
['', 'men'], // Mende
['', 'mga'], // Irish, middle - 900-1200
['', 'mga'], // Irish, Middle - 900-1200
['', 'mic'], // Mi'kmaq; Micmac
['', 'min'], // Minangkabau
['', 'mis'], // Uncoded languages
['', 'mkh'], // Mon-khmer languages
['', 'mkh'], // Mon-Khmer languages
['mg', 'mlg'], // Malagasy
['mt', 'mlt'], // Maltese
['', 'mnc'], // Manchu
@ -338,40 +338,40 @@ final class LanguageCode extends AbstractEnvelope
['', 'myn'], // Mayan languages
['', 'myv'], // Erzya
['', 'nah'], // Nahuatl languages
['', 'nai'], // North american indian languages
['', 'nai'], // North American Indian languages
['', 'nap'], // Neapolitan
['na', 'nau'], // Nauru
['nv', 'nav'], // Navajo; Navaho
['nr', 'nbl'], // Ndebele, south; South ndebele
['nd', 'nde'], // Ndebele, north; North ndebele
['nr', 'nbl'], // Ndebele, South; South Ndebele
['nd', 'nde'], // Ndebele, North; North Ndebele
['ng', 'ndo'], // Ndonga
['', 'nds'], // Low german; Low saxon; German, low; Saxon, low
['', 'nds'], // Low German; Low Saxon; German, Low; Saxon, Low
['ne', 'nep'], // Nepali
['', 'new'], // Nepal bhasa; Newari
['', 'new'], // Nepal Bhasa; Newari
['', 'nia'], // Nias
['', 'nic'], // Niger-kordofanian languages
['', 'nic'], // Niger-Kordofanian languages
['', 'niu'], // Niuean
['nn', 'nno'], // Norwegian nynorsk; Nynorsk, norwegian
['nb', 'nob'], // Bokmål, norwegian; Norwegian bokmål
['nn', 'nno'], // Norwegian Nynorsk; Nynorsk, Norwegian
['nb', 'nob'], // Bokmål, Norwegian; Norwegian Bokmål
['', 'nog'], // Nogai
['', 'non'], // Norse, old
['', 'non'], // Norse, Old
['no', 'nor'], // Norwegian
['', 'nqo'], // N'ko
['', 'nso'], // Pedi; Sepedi; Northern sotho
['', 'nqo'], // N'Ko
['', 'nso'], // Pedi; Sepedi; Northern Sotho
['', 'nub'], // Nubian languages
['', 'nwc'], // Classical newari; Old newari; Classical nepal bhasa
['', 'nwc'], // Classical Newari; Old Newari; Classical Nepal Bhasa
['ny', 'nya'], // Chichewa; Chewa; Nyanja
['', 'nym'], // Nyamwezi
['', 'nyn'], // Nyankole
['', 'nyo'], // Nyoro
['', 'nzi'], // Nzima
['oc', 'oci'], // Occitan - post 1500; Provençal
['oc', 'oci'], // Occitan - post 1500); Provença
['oj', 'oji'], // Ojibwa
['or', 'ori'], // Oriya
['om', 'orm'], // Oromo
['', 'osa'], // Osage
['os', 'oss'], // Ossetian; Ossetic
['', 'ota'], // Turkish, ottoman - 1500-1928
['', 'ota'], // Turkish, Ottoman - 1500-1928
['', 'oto'], // Otomian languages
['', 'paa'], // Papuan languages
['', 'pag'], // Pangasinan
@ -380,7 +380,7 @@ final class LanguageCode extends AbstractEnvelope
['pa', 'pan'], // Panjabi; Punjabi
['', 'pap'], // Papiamento
['', 'pau'], // Palauan
['', 'peo'], // Persian, old - ca.600-400 b.c.
['', 'peo'], // Persian, Old - ca.600-400 B.C.
['fa', 'per'], // Persian
['', 'phi'], // Philippine languages
['', 'phn'], // Phoenician
@ -389,26 +389,26 @@ final class LanguageCode extends AbstractEnvelope
['', 'pon'], // Pohnpeian
['pt', 'por'], // Portuguese
['', 'pra'], // Prakrit languages
['', 'pro'], // Provençal, old - to 1500
['', 'pro'], // Provençal, Old - to 1500
['ps', 'pus'], // Pushto; Pashto
['', 'qaa-qtz'], // Reserved for local use
['', 'qaaqtz'], // Reserved for local use
['qu', 'que'], // Quechua
['', 'raj'], // Rajasthani
['', 'rap'], // Rapanui
['', 'rar'], // Rarotongan; Cook islands maori
['', 'rar'], // Rarotongan; Cook Islands Maori
['', 'roa'], // Romance languages
['rm', 'roh'], // Romansh
['', 'rom'], // Romany
['ro', 'rum'], // Romanian; Moldavian; Moldovan
['rn', 'run'], // Rundi
['', 'rup'], // Aromanian; Arumanian; Macedo-romanian
['', 'rup'], // Aromanian; Arumanian; Macedo-Romanian
['ru', 'rus'], // Russian
['', 'sad'], // Sandawe
['sg', 'sag'], // Sango
['', 'sah'], // Yakut
['', 'sai'], // South american indian - other
['', 'sai'], // South American Indian - Other
['', 'sal'], // Salishan languages
['', 'sam'], // Samaritan aramaic
['', 'sam'], // Samaritan Aramaic
['sa', 'san'], // Sanskrit
['', 'sas'], // Sasak
['', 'sat'], // Santali
@ -416,36 +416,36 @@ final class LanguageCode extends AbstractEnvelope
['', 'sco'], // Scots
['', 'sel'], // Selkup
['', 'sem'], // Semitic languages
['', 'sga'], // Irish, old - to 900
['', 'sgn'], // Sign languages
['', 'sga'], // Irish, Old - to 900
['', 'sgn'], // Sign Languages
['', 'shn'], // Shan
['', 'sid'], // Sidamo
['si', 'sin'], // Sinhala; Sinhalese
['', 'sio'], // Siouan languages
['', 'sit'], // Sino-tibetan languages
['', 'sit'], // Sino-Tibetan languages
['', 'sla'], // Slavic languages
['sk', 'slo'], // Slovak
['sl', 'slv'], // Slovenian
['', 'sma'], // Southern sami
['se', 'sme'], // Northern sami
['', 'sma'], // Southern Sami
['se', 'sme'], // Northern Sami
['', 'smi'], // Sami languages
['', 'smj'], // Lule sami
['', 'smn'], // Inari sami
['', 'smj'], // Lule Sami
['', 'smn'], // Inari Sami
['sm', 'smo'], // Samoan
['', 'sms'], // Skolt sami
['', 'sms'], // Skolt Sami
['sn', 'sna'], // Shona
['sd', 'snd'], // Sindhi
['', 'snk'], // Soninke
['', 'sog'], // Sogdian
['so', 'som'], // Somali
['', 'son'], // Songhai languages
['st', 'sot'], // Sotho, southern
['st', 'sot'], // Sotho, Southern
['es', 'spa'], // Spanish; Castilian
['sc', 'srd'], // Sardinian
['', 'srn'], // Sranan tongo
['', 'srn'], // Sranan Tongo
['sr', 'srp'], // Serbian
['', 'srr'], // Serer
['', 'ssa'], // Nilo-saharan languages
['', 'ssa'], // Nilo-Saharan languages
['ss', 'ssw'], // Swati
['', 'suk'], // Sukuma
['su', 'sun'], // Sundanese
@ -453,7 +453,7 @@ final class LanguageCode extends AbstractEnvelope
['', 'sux'], // Sumerian
['sw', 'swa'], // Swahili
['sv', 'swe'], // Swedish
['', 'syc'], // Classical syriac
['', 'syc'], // Classical Syriac
['', 'syr'], // Syriac
['ty', 'tah'], // Tahitian
['', 'tai'], // Tai languages
@ -471,12 +471,12 @@ final class LanguageCode extends AbstractEnvelope
['ti', 'tir'], // Tigrinya
['', 'tiv'], // Tiv
['', 'tkl'], // Tokelau
['', 'tlh'], // Klingon; Tlhingan-hol
['', 'tlh'], // Klingon; tlhIngan-Hol
['', 'tli'], // Tlingit
['', 'tmh'], // Tamashek
['', 'tog'], // Tonga - nyasa
['to', 'ton'], // Tonga - tonga islands
['', 'tpi'], // Tok pisin
['', 'tog'], // Tonga - Nyasa
['to', 'ton'], // Tonga - Tonga Islands
['', 'tpi'], // Tok Pisin
['', 'tsi'], // Tsimshian
['tn', 'tsn'], // Tswana
['ts', 'tso'], // Tsonga
@ -519,13 +519,12 @@ final class LanguageCode extends AbstractEnvelope
['', 'zap'], // Zapotec
['', 'zbl'], // Blissymbols; Blissymbolics; Bliss
['', 'zen'], // Zenaga
['', 'zgh'], // Standard moroccan tamazight
['', 'zgh'], // Standard Moroccan Tamazight
['za', 'zha'], // Zhuang; Chuang
['', 'znd'], // Zande languages
['zu', 'zul'], // Zulu
['', 'zun'], // Zuni
['', 'zxx'], // No linguistic content; Not applicable
['', 'zza'], // Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki
];
/**

View file

@ -28,16 +28,15 @@ use function mb_strtoupper;
final class Tld extends AbstractRule
{
/**
* List extracted from http://data.iana.org/TLD/tlds-alpha-by-domain.txt
* Version 2018100800, Last Updated Mon Oct 8 07:07:01 2018 UTC
*
* List extracted from https://data.iana.org/TLD/tlds-alpha-by-domain.txt
* Version 2019052600, Last Updated Sun May 26 07:07:02 2019 UTC
*/
private const TLD_LIST = [
'AAA', 'AARP', 'ABARTH', 'ABB', 'ABBOTT', 'ABBVIE', 'ABC', 'ABLE',
'ABOGADO', 'ABUDHABI', 'AC', 'ACADEMY', 'ACCENTURE', 'ACCOUNTANT',
'ACCOUNTANTS', 'ACO', 'ACTIVE', 'ACTOR', 'AD', 'ADAC', 'ADS', 'ADULT',
'AE', 'AEG', 'AERO', 'AETNA', 'AF', 'AFAMILYCOMPANY', 'AFL', 'AFRICA',
'AG', 'AGAKHAN', 'AGENCY', 'AI', 'AIG', 'AIGO', 'AIRBUS', 'AIRFORCE',
'ACCOUNTANTS', 'ACO', 'ACTOR', 'AD', 'ADAC', 'ADS', 'ADULT', 'AE',
'AEG', 'AERO', 'AETNA', 'AF', 'AFAMILYCOMPANY', 'AFL', 'AFRICA', 'AG',
'AGAKHAN', 'AGENCY', 'AI', 'AIG', 'AIGO', 'AIRBUS', 'AIRFORCE',
'AIRTEL', 'AKDN', 'AL', 'ALFAROMEO', 'ALIBABA', 'ALIPAY', 'ALLFINANZ',
'ALLSTATE', 'ALLY', 'ALSACE', 'ALSTOM', 'AM', 'AMERICANEXPRESS',
'AMERICANFAMILY', 'AMEX', 'AMFAM', 'AMICA', 'AMSTERDAM', 'ANALYTICS',
@ -52,101 +51,101 @@ final class Tld extends AbstractRule
'BBT', 'BBVA', 'BCG', 'BCN', 'BD', 'BE', 'BEATS', 'BEAUTY', 'BEER',
'BENTLEY', 'BERLIN', 'BEST', 'BESTBUY', 'BET', 'BF', 'BG', 'BH',
'BHARTI', 'BI', 'BIBLE', 'BID', 'BIKE', 'BING', 'BINGO', 'BIO', 'BIZ',
'BJ', 'BLACK', 'BLACKFRIDAY', 'BLANCO', 'BLOCKBUSTER', 'BLOG',
'BLOOMBERG', 'BLUE', 'BM', 'BMS', 'BMW', 'BN', 'BNL', 'BNPPARIBAS',
'BO', 'BOATS', 'BOEHRINGER', 'BOFA', 'BOM', 'BOND', 'BOO', 'BOOK',
'BOOKING', 'BOSCH', 'BOSTIK', 'BOSTON', 'BOT', 'BOUTIQUE', 'BOX', 'BR',
'BRADESCO', 'BRIDGESTONE', 'BROADWAY', 'BROKER', 'BROTHER', 'BRUSSELS',
'BS', 'BT', 'BUDAPEST', 'BUGATTI', 'BUILD', 'BUILDERS', 'BUSINESS',
'BUY', 'BUZZ', 'BV', 'BW', 'BY', 'BZ', 'BZH', 'CA', 'CAB', 'CAFE',
'CAL', 'CALL', 'CALVINKLEIN', 'CAM', 'CAMERA', 'CAMP',
'CANCERRESEARCH', 'CANON', 'CAPETOWN', 'CAPITAL', 'CAPITALONE', 'CAR',
'CARAVAN', 'CARDS', 'CARE', 'CAREER', 'CAREERS', 'CARS', 'CARTIER',
'CASA', 'CASE', 'CASEIH', 'CASH', 'CASINO', 'CAT', 'CATERING',
'CATHOLIC', 'CBA', 'CBN', 'CBRE', 'CBS', 'CC', 'CD', 'CEB', 'CENTER',
'CEO', 'CERN', 'CF', 'CFA', 'CFD', 'CG', 'CH', 'CHANEL', 'CHANNEL',
'CHARITY', 'CHASE', 'CHAT', 'CHEAP', 'CHINTAI', 'CHRISTMAS', 'CHROME',
'CHRYSLER', 'CHURCH', 'CI', 'CIPRIANI', 'CIRCLE', 'CISCO', 'CITADEL',
'CITI', 'CITIC', 'CITY', 'CITYEATS', 'CK', 'CL', 'CLAIMS', 'CLEANING',
'CLICK', 'CLINIC', 'CLINIQUE', 'CLOTHING', 'CLOUD', 'CLUB', 'CLUBMED',
'CM', 'CN', 'CO', 'COACH', 'CODES', 'COFFEE', 'COLLEGE', 'COLOGNE',
'COM', 'COMCAST', 'COMMBANK', 'COMMUNITY', 'COMPANY', 'COMPARE',
'COMPUTER', 'COMSEC', 'CONDOS', 'CONSTRUCTION', 'CONSULTING',
'CONTACT', 'CONTRACTORS', 'COOKING', 'COOKINGCHANNEL', 'COOL', 'COOP',
'CORSICA', 'COUNTRY', 'COUPON', 'COUPONS', 'COURSES', 'CR', 'CREDIT',
'CREDITCARD', 'CREDITUNION', 'CRICKET', 'CROWN', 'CRS', 'CRUISE',
'CRUISES', 'CSC', 'CU', 'CUISINELLA', 'CV', 'CW', 'CX', 'CY', 'CYMRU',
'CYOU', 'CZ', 'DABUR', 'DAD', 'DANCE', 'DATA', 'DATE', 'DATING',
'DATSUN', 'DAY', 'DCLK', 'DDS', 'DE', 'DEAL', 'DEALER', 'DEALS',
'DEGREE', 'DELIVERY', 'DELL', 'DELOITTE', 'DELTA', 'DEMOCRAT',
'DENTAL', 'DENTIST', 'DESI', 'DESIGN', 'DEV', 'DHL', 'DIAMONDS',
'DIET', 'DIGITAL', 'DIRECT', 'DIRECTORY', 'DISCOUNT', 'DISCOVER',
'DISH', 'DIY', 'DJ', 'DK', 'DM', 'DNP', 'DO', 'DOCS', 'DOCTOR',
'DODGE', 'DOG', 'DOHA', 'DOMAINS', 'DOT', 'DOWNLOAD', 'DRIVE', 'DTV',
'DUBAI', 'DUCK', 'DUNLOP', 'DUNS', 'DUPONT', 'DURBAN', 'DVAG', 'DVR',
'DZ', 'EARTH', 'EAT', 'EC', 'ECO', 'EDEKA', 'EDU', 'EDUCATION', 'EE',
'EG', 'EMAIL', 'EMERCK', 'ENERGY', 'ENGINEER', 'ENGINEERING',
'ENTERPRISES', 'EPOST', 'EPSON', 'EQUIPMENT', 'ER', 'ERICSSON', 'ERNI',
'ES', 'ESQ', 'ESTATE', 'ESURANCE', 'ET', 'ETISALAT', 'EU',
'EUROVISION', 'EUS', 'EVENTS', 'EVERBANK', 'EXCHANGE', 'EXPERT',
'EXPOSED', 'EXPRESS', 'EXTRASPACE', 'FAGE', 'FAIL', 'FAIRWINDS',
'FAITH', 'FAMILY', 'FAN', 'FANS', 'FARM', 'FARMERS', 'FASHION', 'FAST',
'FEDEX', 'FEEDBACK', 'FERRARI', 'FERRERO', 'FI', 'FIAT', 'FIDELITY',
'FIDO', 'FILM', 'FINAL', 'FINANCE', 'FINANCIAL', 'FIRE', 'FIRESTONE',
'FIRMDALE', 'FISH', 'FISHING', 'FIT', 'FITNESS', 'FJ', 'FK', 'FLICKR',
'FLIGHTS', 'FLIR', 'FLORIST', 'FLOWERS', 'FLY', 'FM', 'FO', 'FOO',
'FOOD', 'FOODNETWORK', 'FOOTBALL', 'FORD', 'FOREX', 'FORSALE', 'FORUM',
'FOUNDATION', 'FOX', 'FR', 'FREE', 'FRESENIUS', 'FRL', 'FROGANS',
'FRONTDOOR', 'FRONTIER', 'FTR', 'FUJITSU', 'FUJIXEROX', 'FUN', 'FUND',
'FURNITURE', 'FUTBOL', 'FYI', 'GA', 'GAL', 'GALLERY', 'GALLO',
'GALLUP', 'GAME', 'GAMES', 'GAP', 'GARDEN', 'GB', 'GBIZ', 'GD', 'GDN',
'GE', 'GEA', 'GENT', 'GENTING', 'GEORGE', 'GF', 'GG', 'GGEE', 'GH',
'GI', 'GIFT', 'GIFTS', 'GIVES', 'GIVING', 'GL', 'GLADE', 'GLASS',
'GLE', 'GLOBAL', 'GLOBO', 'GM', 'GMAIL', 'GMBH', 'GMO', 'GMX', 'GN',
'GODADDY', 'GOLD', 'GOLDPOINT', 'GOLF', 'GOO', 'GOODYEAR', 'GOOG',
'GOOGLE', 'GOP', 'GOT', 'GOV', 'GP', 'GQ', 'GR', 'GRAINGER',
'GRAPHICS', 'GRATIS', 'GREEN', 'GRIPE', 'GROCERY', 'GROUP', 'GS', 'GT',
'GU', 'GUARDIAN', 'GUCCI', 'GUGE', 'GUIDE', 'GUITARS', 'GURU', 'GW',
'GY', 'HAIR', 'HAMBURG', 'HANGOUT', 'HAUS', 'HBO', 'HDFC', 'HDFCBANK',
'HEALTH', 'HEALTHCARE', 'HELP', 'HELSINKI', 'HERE', 'HERMES', 'HGTV',
'HIPHOP', 'HISAMITSU', 'HITACHI', 'HIV', 'HK', 'HKT', 'HM', 'HN',
'HOCKEY', 'HOLDINGS', 'HOLIDAY', 'HOMEDEPOT', 'HOMEGOODS', 'HOMES',
'HOMESENSE', 'HONDA', 'HONEYWELL', 'HORSE', 'HOSPITAL', 'HOST',
'HOSTING', 'HOT', 'HOTELES', 'HOTELS', 'HOTMAIL', 'HOUSE', 'HOW', 'HR',
'HSBC', 'HT', 'HU', 'HUGHES', 'HYATT', 'HYUNDAI', 'IBM', 'ICBC', 'ICE',
'ICU', 'ID', 'IE', 'IEEE', 'IFM', 'IKANO', 'IL', 'IM', 'IMAMAT',
'IMDB', 'IMMO', 'IMMOBILIEN', 'IN', 'INC', 'INDUSTRIES', 'INFINITI',
'INFO', 'ING', 'INK', 'INSTITUTE', 'INSURANCE', 'INSURE', 'INT',
'INTEL', 'INTERNATIONAL', 'INTUIT', 'INVESTMENTS', 'IO', 'IPIRANGA',
'IQ', 'IR', 'IRISH', 'IS', 'ISELECT', 'ISMAILI', 'IST', 'ISTANBUL',
'IT', 'ITAU', 'ITV', 'IVECO', 'JAGUAR', 'JAVA', 'JCB', 'JCP', 'JE',
'JEEP', 'JETZT', 'JEWELRY', 'JIO', 'JLL', 'JM', 'JMP', 'JNJ', 'JO',
'JOBS', 'JOBURG', 'JOT', 'JOY', 'JP', 'JPMORGAN', 'JPRS', 'JUEGOS',
'JUNIPER', 'KAUFEN', 'KDDI', 'KE', 'KERRYHOTELS', 'KERRYLOGISTICS',
'KERRYPROPERTIES', 'KFH', 'KG', 'KH', 'KI', 'KIA', 'KIM', 'KINDER',
'KINDLE', 'KITCHEN', 'KIWI', 'KM', 'KN', 'KOELN', 'KOMATSU', 'KOSHER',
'KP', 'KPMG', 'KPN', 'KR', 'KRD', 'KRED', 'KUOKGROUP', 'KW', 'KY',
'KYOTO', 'KZ', 'LA', 'LACAIXA', 'LADBROKES', 'LAMBORGHINI', 'LAMER',
'LANCASTER', 'LANCIA', 'LANCOME', 'LAND', 'LANDROVER', 'LANXESS',
'LASALLE', 'LAT', 'LATINO', 'LATROBE', 'LAW', 'LAWYER', 'LB', 'LC',
'LDS', 'LEASE', 'LECLERC', 'LEFRAK', 'LEGAL', 'LEGO', 'LEXUS', 'LGBT',
'LI', 'LIAISON', 'LIDL', 'LIFE', 'LIFEINSURANCE', 'LIFESTYLE',
'LIGHTING', 'LIKE', 'LILLY', 'LIMITED', 'LIMO', 'LINCOLN', 'LINDE',
'LINK', 'LIPSY', 'LIVE', 'LIVING', 'LIXIL', 'LK', 'LLC', 'LOAN',
'LOANS', 'LOCKER', 'LOCUS', 'LOFT', 'LOL', 'LONDON', 'LOTTE', 'LOTTO',
'LOVE', 'LPL', 'LPLFINANCIAL', 'LR', 'LS', 'LT', 'LTD', 'LTDA', 'LU',
'LUNDBECK', 'LUPIN', 'LUXE', 'LUXURY', 'LV', 'LY', 'MA', 'MACYS',
'MADRID', 'MAIF', 'MAISON', 'MAKEUP', 'MAN', 'MANAGEMENT', 'MANGO',
'MAP', 'MARKET', 'MARKETING', 'MARKETS', 'MARRIOTT', 'MARSHALLS',
'MASERATI', 'MATTEL', 'MBA', 'MC', 'MCKINSEY', 'MD', 'ME', 'MED',
'MEDIA', 'MEET', 'MELBOURNE', 'MEME', 'MEMORIAL', 'MEN', 'MENU',
'MERCKMSD', 'METLIFE', 'MG', 'MH', 'MIAMI', 'MICROSOFT', 'MIL', 'MINI',
'MINT', 'MIT', 'MITSUBISHI', 'MK', 'ML', 'MLB', 'MLS', 'MM', 'MMA',
'MN', 'MO', 'MOBI', 'MOBILE', 'MOBILY', 'MODA', 'MOE', 'MOI', 'MOM',
'MONASH', 'MONEY', 'MONSTER', 'MOPAR', 'MORMON', 'MORTGAGE', 'MOSCOW',
'MOTO', 'MOTORCYCLES', 'MOV', 'MOVIE', 'MOVISTAR', 'MP', 'MQ', 'MR',
'MS', 'MSD', 'MT', 'MTN', 'MTR', 'MU', 'MUSEUM', 'MUTUAL', 'MV', 'MW',
'MX', 'MY', 'MZ', 'NA', 'NAB', 'NADEX', 'NAGOYA', 'NAME', 'NATIONWIDE',
'BJ', 'BLACK', 'BLACKFRIDAY', 'BLOCKBUSTER', 'BLOG', 'BLOOMBERG',
'BLUE', 'BM', 'BMS', 'BMW', 'BN', 'BNL', 'BNPPARIBAS', 'BO', 'BOATS',
'BOEHRINGER', 'BOFA', 'BOM', 'BOND', 'BOO', 'BOOK', 'BOOKING', 'BOSCH',
'BOSTIK', 'BOSTON', 'BOT', 'BOUTIQUE', 'BOX', 'BR', 'BRADESCO',
'BRIDGESTONE', 'BROADWAY', 'BROKER', 'BROTHER', 'BRUSSELS', 'BS', 'BT',
'BUDAPEST', 'BUGATTI', 'BUILD', 'BUILDERS', 'BUSINESS', 'BUY', 'BUZZ',
'BV', 'BW', 'BY', 'BZ', 'BZH', 'CA', 'CAB', 'CAFE', 'CAL', 'CALL',
'CALVINKLEIN', 'CAM', 'CAMERA', 'CAMP', 'CANCERRESEARCH', 'CANON',
'CAPETOWN', 'CAPITAL', 'CAPITALONE', 'CAR', 'CARAVAN', 'CARDS', 'CARE',
'CAREER', 'CAREERS', 'CARS', 'CARTIER', 'CASA', 'CASE', 'CASEIH',
'CASH', 'CASINO', 'CAT', 'CATERING', 'CATHOLIC', 'CBA', 'CBN', 'CBRE',
'CBS', 'CC', 'CD', 'CEB', 'CENTER', 'CEO', 'CERN', 'CF', 'CFA', 'CFD',
'CG', 'CH', 'CHANEL', 'CHANNEL', 'CHARITY', 'CHASE', 'CHAT', 'CHEAP',
'CHINTAI', 'CHRISTMAS', 'CHROME', 'CHRYSLER', 'CHURCH', 'CI',
'CIPRIANI', 'CIRCLE', 'CISCO', 'CITADEL', 'CITI', 'CITIC', 'CITY',
'CITYEATS', 'CK', 'CL', 'CLAIMS', 'CLEANING', 'CLICK', 'CLINIC',
'CLINIQUE', 'CLOTHING', 'CLOUD', 'CLUB', 'CLUBMED', 'CM', 'CN', 'CO',
'COACH', 'CODES', 'COFFEE', 'COLLEGE', 'COLOGNE', 'COM', 'COMCAST',
'COMMBANK', 'COMMUNITY', 'COMPANY', 'COMPARE', 'COMPUTER', 'COMSEC',
'CONDOS', 'CONSTRUCTION', 'CONSULTING', 'CONTACT', 'CONTRACTORS',
'COOKING', 'COOKINGCHANNEL', 'COOL', 'COOP', 'CORSICA', 'COUNTRY',
'COUPON', 'COUPONS', 'COURSES', 'CR', 'CREDIT', 'CREDITCARD',
'CREDITUNION', 'CRICKET', 'CROWN', 'CRS', 'CRUISE', 'CRUISES', 'CSC',
'CU', 'CUISINELLA', 'CV', 'CW', 'CX', 'CY', 'CYMRU', 'CYOU', 'CZ',
'DABUR', 'DAD', 'DANCE', 'DATA', 'DATE', 'DATING', 'DATSUN', 'DAY',
'DCLK', 'DDS', 'DE', 'DEAL', 'DEALER', 'DEALS', 'DEGREE', 'DELIVERY',
'DELL', 'DELOITTE', 'DELTA', 'DEMOCRAT', 'DENTAL', 'DENTIST', 'DESI',
'DESIGN', 'DEV', 'DHL', 'DIAMONDS', 'DIET', 'DIGITAL', 'DIRECT',
'DIRECTORY', 'DISCOUNT', 'DISCOVER', 'DISH', 'DIY', 'DJ', 'DK', 'DM',
'DNP', 'DO', 'DOCS', 'DOCTOR', 'DODGE', 'DOG', 'DOMAINS', 'DOT',
'DOWNLOAD', 'DRIVE', 'DTV', 'DUBAI', 'DUCK', 'DUNLOP', 'DUNS',
'DUPONT', 'DURBAN', 'DVAG', 'DVR', 'DZ', 'EARTH', 'EAT', 'EC', 'ECO',
'EDEKA', 'EDU', 'EDUCATION', 'EE', 'EG', 'EMAIL', 'EMERCK', 'ENERGY',
'ENGINEER', 'ENGINEERING', 'ENTERPRISES', 'EPSON', 'EQUIPMENT', 'ER',
'ERICSSON', 'ERNI', 'ES', 'ESQ', 'ESTATE', 'ESURANCE', 'ET',
'ETISALAT', 'EU', 'EUROVISION', 'EUS', 'EVENTS', 'EVERBANK',
'EXCHANGE', 'EXPERT', 'EXPOSED', 'EXPRESS', 'EXTRASPACE', 'FAGE',
'FAIL', 'FAIRWINDS', 'FAITH', 'FAMILY', 'FAN', 'FANS', 'FARM',
'FARMERS', 'FASHION', 'FAST', 'FEDEX', 'FEEDBACK', 'FERRARI',
'FERRERO', 'FI', 'FIAT', 'FIDELITY', 'FIDO', 'FILM', 'FINAL',
'FINANCE', 'FINANCIAL', 'FIRE', 'FIRESTONE', 'FIRMDALE', 'FISH',
'FISHING', 'FIT', 'FITNESS', 'FJ', 'FK', 'FLICKR', 'FLIGHTS', 'FLIR',
'FLORIST', 'FLOWERS', 'FLY', 'FM', 'FO', 'FOO', 'FOOD', 'FOODNETWORK',
'FOOTBALL', 'FORD', 'FOREX', 'FORSALE', 'FORUM', 'FOUNDATION', 'FOX',
'FR', 'FREE', 'FRESENIUS', 'FRL', 'FROGANS', 'FRONTDOOR', 'FRONTIER',
'FTR', 'FUJITSU', 'FUJIXEROX', 'FUN', 'FUND', 'FURNITURE', 'FUTBOL',
'FYI', 'GA', 'GAL', 'GALLERY', 'GALLO', 'GALLUP', 'GAME', 'GAMES',
'GAP', 'GARDEN', 'GB', 'GBIZ', 'GD', 'GDN', 'GE', 'GEA', 'GENT',
'GENTING', 'GEORGE', 'GF', 'GG', 'GGEE', 'GH', 'GI', 'GIFT', 'GIFTS',
'GIVES', 'GIVING', 'GL', 'GLADE', 'GLASS', 'GLE', 'GLOBAL', 'GLOBO',
'GM', 'GMAIL', 'GMBH', 'GMO', 'GMX', 'GN', 'GODADDY', 'GOLD',
'GOLDPOINT', 'GOLF', 'GOO', 'GOODYEAR', 'GOOG', 'GOOGLE', 'GOP', 'GOT',
'GOV', 'GP', 'GQ', 'GR', 'GRAINGER', 'GRAPHICS', 'GRATIS', 'GREEN',
'GRIPE', 'GROCERY', 'GROUP', 'GS', 'GT', 'GU', 'GUARDIAN', 'GUCCI',
'GUGE', 'GUIDE', 'GUITARS', 'GURU', 'GW', 'GY', 'HAIR', 'HAMBURG',
'HANGOUT', 'HAUS', 'HBO', 'HDFC', 'HDFCBANK', 'HEALTH', 'HEALTHCARE',
'HELP', 'HELSINKI', 'HERE', 'HERMES', 'HGTV', 'HIPHOP', 'HISAMITSU',
'HITACHI', 'HIV', 'HK', 'HKT', 'HM', 'HN', 'HOCKEY', 'HOLDINGS',
'HOLIDAY', 'HOMEDEPOT', 'HOMEGOODS', 'HOMES', 'HOMESENSE', 'HONDA',
'HONEYWELL', 'HORSE', 'HOSPITAL', 'HOST', 'HOSTING', 'HOT', 'HOTELES',
'HOTELS', 'HOTMAIL', 'HOUSE', 'HOW', 'HR', 'HSBC', 'HT', 'HU',
'HUGHES', 'HYATT', 'HYUNDAI', 'IBM', 'ICBC', 'ICE', 'ICU', 'ID', 'IE',
'IEEE', 'IFM', 'IKANO', 'IL', 'IM', 'IMAMAT', 'IMDB', 'IMMO',
'IMMOBILIEN', 'IN', 'INC', 'INDUSTRIES', 'INFINITI', 'INFO', 'ING',
'INK', 'INSTITUTE', 'INSURANCE', 'INSURE', 'INT', 'INTEL',
'INTERNATIONAL', 'INTUIT', 'INVESTMENTS', 'IO', 'IPIRANGA', 'IQ', 'IR',
'IRISH', 'IS', 'ISELECT', 'ISMAILI', 'IST', 'ISTANBUL', 'IT', 'ITAU',
'ITV', 'IVECO', 'JAGUAR', 'JAVA', 'JCB', 'JCP', 'JE', 'JEEP', 'JETZT',
'JEWELRY', 'JIO', 'JLL', 'JM', 'JMP', 'JNJ', 'JO', 'JOBS', 'JOBURG',
'JOT', 'JOY', 'JP', 'JPMORGAN', 'JPRS', 'JUEGOS', 'JUNIPER', 'KAUFEN',
'KDDI', 'KE', 'KERRYHOTELS', 'KERRYLOGISTICS', 'KERRYPROPERTIES',
'KFH', 'KG', 'KH', 'KI', 'KIA', 'KIM', 'KINDER', 'KINDLE', 'KITCHEN',
'KIWI', 'KM', 'KN', 'KOELN', 'KOMATSU', 'KOSHER', 'KP', 'KPMG', 'KPN',
'KR', 'KRD', 'KRED', 'KUOKGROUP', 'KW', 'KY', 'KYOTO', 'KZ', 'LA',
'LACAIXA', 'LADBROKES', 'LAMBORGHINI', 'LAMER', 'LANCASTER', 'LANCIA',
'LANCOME', 'LAND', 'LANDROVER', 'LANXESS', 'LASALLE', 'LAT', 'LATINO',
'LATROBE', 'LAW', 'LAWYER', 'LB', 'LC', 'LDS', 'LEASE', 'LECLERC',
'LEFRAK', 'LEGAL', 'LEGO', 'LEXUS', 'LGBT', 'LI', 'LIAISON', 'LIDL',
'LIFE', 'LIFEINSURANCE', 'LIFESTYLE', 'LIGHTING', 'LIKE', 'LILLY',
'LIMITED', 'LIMO', 'LINCOLN', 'LINDE', 'LINK', 'LIPSY', 'LIVE',
'LIVING', 'LIXIL', 'LK', 'LLC', 'LOAN', 'LOANS', 'LOCKER', 'LOCUS',
'LOFT', 'LOL', 'LONDON', 'LOTTE', 'LOTTO', 'LOVE', 'LPL',
'LPLFINANCIAL', 'LR', 'LS', 'LT', 'LTD', 'LTDA', 'LU', 'LUNDBECK',
'LUPIN', 'LUXE', 'LUXURY', 'LV', 'LY', 'MA', 'MACYS', 'MADRID', 'MAIF',
'MAISON', 'MAKEUP', 'MAN', 'MANAGEMENT', 'MANGO', 'MAP', 'MARKET',
'MARKETING', 'MARKETS', 'MARRIOTT', 'MARSHALLS', 'MASERATI', 'MATTEL',
'MBA', 'MC', 'MCKINSEY', 'MD', 'ME', 'MED', 'MEDIA', 'MEET',
'MELBOURNE', 'MEME', 'MEMORIAL', 'MEN', 'MENU', 'MERCKMSD', 'METLIFE',
'MG', 'MH', 'MIAMI', 'MICROSOFT', 'MIL', 'MINI', 'MINT', 'MIT',
'MITSUBISHI', 'MK', 'ML', 'MLB', 'MLS', 'MM', 'MMA', 'MN', 'MO',
'MOBI', 'MOBILE', 'MOBILY', 'MODA', 'MOE', 'MOI', 'MOM', 'MONASH',
'MONEY', 'MONSTER', 'MOPAR', 'MORMON', 'MORTGAGE', 'MOSCOW', 'MOTO',
'MOTORCYCLES', 'MOV', 'MOVIE', 'MOVISTAR', 'MP', 'MQ', 'MR', 'MS',
'MSD', 'MT', 'MTN', 'MTR', 'MU', 'MUSEUM', 'MUTUAL', 'MV', 'MW', 'MX',
'MY', 'MZ', 'NA', 'NAB', 'NADEX', 'NAGOYA', 'NAME', 'NATIONWIDE',
'NATURA', 'NAVY', 'NBA', 'NC', 'NE', 'NEC', 'NET', 'NETBANK',
'NETFLIX', 'NETWORK', 'NEUSTAR', 'NEW', 'NEWHOLLAND', 'NEWS', 'NEXT',
'NEXTDIRECT', 'NEXUS', 'NF', 'NFL', 'NG', 'NGO', 'NHK', 'NI', 'NICO',
@ -186,46 +185,46 @@ final class Tld extends AbstractRule
'SK', 'SKI', 'SKIN', 'SKY', 'SKYPE', 'SL', 'SLING', 'SM', 'SMART',
'SMILE', 'SN', 'SNCF', 'SO', 'SOCCER', 'SOCIAL', 'SOFTBANK',
'SOFTWARE', 'SOHU', 'SOLAR', 'SOLUTIONS', 'SONG', 'SONY', 'SOY',
'SPACE', 'SPIEGEL', 'SPORT', 'SPOT', 'SPREADBETTING', 'SR', 'SRL',
'SRT', 'ST', 'STADA', 'STAPLES', 'STAR', 'STARHUB', 'STATEBANK',
'STATEFARM', 'STC', 'STCGROUP', 'STOCKHOLM', 'STORAGE', 'STORE',
'STREAM', 'STUDIO', 'STUDY', 'STYLE', 'SU', 'SUCKS', 'SUPPLIES',
'SUPPLY', 'SUPPORT', 'SURF', 'SURGERY', 'SUZUKI', 'SV', 'SWATCH',
'SWIFTCOVER', 'SWISS', 'SX', 'SY', 'SYDNEY', 'SYMANTEC', 'SYSTEMS',
'SZ', 'TAB', 'TAIPEI', 'TALK', 'TAOBAO', 'TARGET', 'TATAMOTORS',
'TATAR', 'TATTOO', 'TAX', 'TAXI', 'TC', 'TCI', 'TD', 'TDK', 'TEAM',
'TECH', 'TECHNOLOGY', 'TEL', 'TELEFONICA', 'TEMASEK', 'TENNIS', 'TEVA',
'TF', 'TG', 'TH', 'THD', 'THEATER', 'THEATRE', 'TIAA', 'TICKETS',
'TIENDA', 'TIFFANY', 'TIPS', 'TIRES', 'TIROL', 'TJ', 'TJMAXX', 'TJX',
'TK', 'TKMAXX', 'TL', 'TM', 'TMALL', 'TN', 'TO', 'TODAY', 'TOKYO',
'TOOLS', 'TOP', 'TORAY', 'TOSHIBA', 'TOTAL', 'TOURS', 'TOWN', 'TOYOTA',
'TOYS', 'TR', 'TRADE', 'TRADING', 'TRAINING', 'TRAVEL',
'TRAVELCHANNEL', 'TRAVELERS', 'TRAVELERSINSURANCE', 'TRUST', 'TRV',
'TT', 'TUBE', 'TUI', 'TUNES', 'TUSHU', 'TV', 'TVS', 'TW', 'TZ', 'UA',
'UBANK', 'UBS', 'UCONNECT', 'UG', 'UK', 'UNICOM', 'UNIVERSITY', 'UNO',
'UOL', 'UPS', 'US', 'UY', 'UZ', 'VA', 'VACATIONS', 'VANA', 'VANGUARD',
'VC', 'VE', 'VEGAS', 'VENTURES', 'VERISIGN', 'VERSICHERUNG', 'VET',
'VG', 'VI', 'VIAJES', 'VIDEO', 'VIG', 'VIKING', 'VILLAS', 'VIN', 'VIP',
'VIRGIN', 'VISA', 'VISION', 'VISTAPRINT', 'VIVA', 'VIVO', 'VLAANDEREN',
'VN', 'VODKA', 'VOLKSWAGEN', 'VOLVO', 'VOTE', 'VOTING', 'VOTO',
'VOYAGE', 'VU', 'VUELOS', 'WALES', 'WALMART', 'WALTER', 'WANG',
'WANGGOU', 'WARMAN', 'WATCH', 'WATCHES', 'WEATHER', 'WEATHERCHANNEL',
'WEBCAM', 'WEBER', 'WEBSITE', 'WED', 'WEDDING', 'WEIBO', 'WEIR', 'WF',
'WHOSWHO', 'WIEN', 'WIKI', 'WILLIAMHILL', 'WIN', 'WINDOWS', 'WINE',
'WINNERS', 'WME', 'WOLTERSKLUWER', 'WOODSIDE', 'WORK', 'WORKS',
'WORLD', 'WOW', 'WS', 'WTC', 'WTF', 'XBOX', 'XEROX', 'XFINITY',
'XIHUAN', 'XIN', 'XN--11B4C3D', 'XN--1CK2E1B', 'XN--1QQW23A',
'XN--2SCRJ9C', 'XN--30RR7Y', 'XN--3BST00M', 'XN--3DS443G',
'XN--3E0B707E', 'XN--3HCRJ9C', 'XN--3OQ18VL8PN36A', 'XN--3PXU8K',
'XN--42C2D9A', 'XN--45BR5CYL', 'XN--45BRJ9C', 'XN--45Q11C',
'XN--4GBRIM', 'XN--54B7FTA0CC', 'XN--55QW42G', 'XN--55QX5D',
'XN--5SU34J936BGSG', 'XN--5TZM5G', 'XN--6FRZ82G', 'XN--6QQ986B3XL',
'XN--80ADXHKS', 'XN--80AO21A', 'XN--80AQECDR1A', 'XN--80ASEHDB',
'XN--80ASWG', 'XN--8Y0A063A', 'XN--90A3AC', 'XN--90AE', 'XN--90AIS',
'XN--9DBQ2A', 'XN--9ET52U', 'XN--9KRT00A', 'XN--B4W605FERD',
'XN--BCK1B9A5DRE4C', 'XN--C1AVG', 'XN--C2BR7G', 'XN--CCK2B3B',
'XN--CG4BKI', 'XN--CLCHC0EA0B2G2A9GCD', 'XN--CZR694B', 'XN--CZRS0T',
'XN--CZRU2D', 'XN--D1ACJ3B', 'XN--D1ALF', 'XN--E1A4C', 'XN--ECKVDTC9D',
'SPACE', 'SPORT', 'SPOT', 'SPREADBETTING', 'SR', 'SRL', 'SRT', 'SS',
'ST', 'STADA', 'STAPLES', 'STAR', 'STARHUB', 'STATEBANK', 'STATEFARM',
'STC', 'STCGROUP', 'STOCKHOLM', 'STORAGE', 'STORE', 'STREAM', 'STUDIO',
'STUDY', 'STYLE', 'SU', 'SUCKS', 'SUPPLIES', 'SUPPLY', 'SUPPORT',
'SURF', 'SURGERY', 'SUZUKI', 'SV', 'SWATCH', 'SWIFTCOVER', 'SWISS',
'SX', 'SY', 'SYDNEY', 'SYMANTEC', 'SYSTEMS', 'SZ', 'TAB', 'TAIPEI',
'TALK', 'TAOBAO', 'TARGET', 'TATAMOTORS', 'TATAR', 'TATTOO', 'TAX',
'TAXI', 'TC', 'TCI', 'TD', 'TDK', 'TEAM', 'TECH', 'TECHNOLOGY', 'TEL',
'TELEFONICA', 'TEMASEK', 'TENNIS', 'TEVA', 'TF', 'TG', 'TH', 'THD',
'THEATER', 'THEATRE', 'TIAA', 'TICKETS', 'TIENDA', 'TIFFANY', 'TIPS',
'TIRES', 'TIROL', 'TJ', 'TJMAXX', 'TJX', 'TK', 'TKMAXX', 'TL', 'TM',
'TMALL', 'TN', 'TO', 'TODAY', 'TOKYO', 'TOOLS', 'TOP', 'TORAY',
'TOSHIBA', 'TOTAL', 'TOURS', 'TOWN', 'TOYOTA', 'TOYS', 'TR', 'TRADE',
'TRADING', 'TRAINING', 'TRAVEL', 'TRAVELCHANNEL', 'TRAVELERS',
'TRAVELERSINSURANCE', 'TRUST', 'TRV', 'TT', 'TUBE', 'TUI', 'TUNES',
'TUSHU', 'TV', 'TVS', 'TW', 'TZ', 'UA', 'UBANK', 'UBS', 'UCONNECT',
'UG', 'UK', 'UNICOM', 'UNIVERSITY', 'UNO', 'UOL', 'UPS', 'US', 'UY',
'UZ', 'VA', 'VACATIONS', 'VANA', 'VANGUARD', 'VC', 'VE', 'VEGAS',
'VENTURES', 'VERISIGN', 'VERSICHERUNG', 'VET', 'VG', 'VI', 'VIAJES',
'VIDEO', 'VIG', 'VIKING', 'VILLAS', 'VIN', 'VIP', 'VIRGIN', 'VISA',
'VISION', 'VISTAPRINT', 'VIVA', 'VIVO', 'VLAANDEREN', 'VN', 'VODKA',
'VOLKSWAGEN', 'VOLVO', 'VOTE', 'VOTING', 'VOTO', 'VOYAGE', 'VU',
'VUELOS', 'WALES', 'WALMART', 'WALTER', 'WANG', 'WANGGOU', 'WARMAN',
'WATCH', 'WATCHES', 'WEATHER', 'WEATHERCHANNEL', 'WEBCAM', 'WEBER',
'WEBSITE', 'WED', 'WEDDING', 'WEIBO', 'WEIR', 'WF', 'WHOSWHO', 'WIEN',
'WIKI', 'WILLIAMHILL', 'WIN', 'WINDOWS', 'WINE', 'WINNERS', 'WME',
'WOLTERSKLUWER', 'WOODSIDE', 'WORK', 'WORKS', 'WORLD', 'WOW', 'WS',
'WTC', 'WTF', 'XBOX', 'XEROX', 'XFINITY', 'XIHUAN', 'XIN',
'XN--11B4C3D', 'XN--1CK2E1B', 'XN--1QQW23A', 'XN--2SCRJ9C',
'XN--30RR7Y', 'XN--3BST00M', 'XN--3DS443G', 'XN--3E0B707E',
'XN--3HCRJ9C', 'XN--3OQ18VL8PN36A', 'XN--3PXU8K', 'XN--42C2D9A',
'XN--45BR5CYL', 'XN--45BRJ9C', 'XN--45Q11C', 'XN--4GBRIM',
'XN--54B7FTA0CC', 'XN--55QW42G', 'XN--55QX5D', 'XN--5SU34J936BGSG',
'XN--5TZM5G', 'XN--6FRZ82G', 'XN--6QQ986B3XL', 'XN--80ADXHKS',
'XN--80AO21A', 'XN--80AQECDR1A', 'XN--80ASEHDB', 'XN--80ASWG',
'XN--8Y0A063A', 'XN--90A3AC', 'XN--90AE', 'XN--90AIS', 'XN--9DBQ2A',
'XN--9ET52U', 'XN--9KRT00A', 'XN--B4W605FERD', 'XN--BCK1B9A5DRE4C',
'XN--C1AVG', 'XN--C2BR7G', 'XN--CCK2B3B', 'XN--CG4BKI',
'XN--CLCHC0EA0B2G2A9GCD', 'XN--CZR694B', 'XN--CZRS0T', 'XN--CZRU2D',
'XN--D1ACJ3B', 'XN--D1ALF', 'XN--E1A4C', 'XN--ECKVDTC9D',
'XN--EFVY88H', 'XN--ESTV75G', 'XN--FCT429K', 'XN--FHBEI',
'XN--FIQ228C5HS', 'XN--FIQ64B', 'XN--FIQS8S', 'XN--FIQZ9S',
'XN--FJQ720A', 'XN--FLW351E', 'XN--FPCRJ9C3D', 'XN--FZC2C9E2C',
@ -237,24 +236,24 @@ final class Tld extends AbstractRule
'XN--KPU716F', 'XN--KPUT3I', 'XN--L1ACC', 'XN--LGBBAT1AD8J',
'XN--MGB9AWBF', 'XN--MGBA3A3EJT', 'XN--MGBA3A4F16A',
'XN--MGBA7C0BBN0A', 'XN--MGBAAKC7DVF', 'XN--MGBAAM7A8H',
'XN--MGBAB2BD', 'XN--MGBAI9AZGQP6J', 'XN--MGBAYH7GPA',
'XN--MGBB9FBPOB', 'XN--MGBBH1A', 'XN--MGBBH1A71E', 'XN--MGBC0A9AZCG',
'XN--MGBCA7DZDO', 'XN--MGBERP4A5D4AR', 'XN--MGBGU82A',
'XN--MGBI4ECEXP', 'XN--MGBPL2FH', 'XN--MGBT3DHD', 'XN--MGBTX2B',
'XN--MGBX4CD0AB', 'XN--MIX891F', 'XN--MK1BU44C', 'XN--MXTQ1M',
'XN--NGBC5AZD', 'XN--NGBE9E0A', 'XN--NGBRX', 'XN--NODE', 'XN--NQV7F',
'XN--NQV7FS00EMA', 'XN--NYQY26A', 'XN--O3CW4H', 'XN--OGBPF8FL',
'XN--OTU796D', 'XN--P1ACF', 'XN--P1AI', 'XN--PBT977C', 'XN--PGBS0DH',
'XN--PSSY2U', 'XN--Q9JYB4C', 'XN--QCKA1PMC', 'XN--QXAM', 'XN--RHQV96G',
'XN--ROVU88B', 'XN--RVC1E0AM3E', 'XN--S9BRJ9C', 'XN--SES554G',
'XN--T60B56A', 'XN--TCKWE', 'XN--TIQ49XQYJ', 'XN--UNUP4Y',
'XN--VERMGENSBERATER-CTB', 'XN--VERMGENSBERATUNG-PWB', 'XN--VHQUV',
'XN--VUQ861B', 'XN--W4R85EL8FHU5DNRA', 'XN--W4RS40L', 'XN--WGBH1C',
'XN--WGBL6A', 'XN--XHQ521B', 'XN--XKC2AL3HYE2A', 'XN--XKC2DL3A5EE0H',
'XN--Y9A3AQ', 'XN--YFRO4I67O', 'XN--YGBI2AMMX', 'XN--ZFR164B', 'XXX',
'XYZ', 'YACHTS', 'YAHOO', 'YAMAXUN', 'YANDEX', 'YE', 'YODOBASHI',
'YOGA', 'YOKOHAMA', 'YOU', 'YOUTUBE', 'YT', 'YUN', 'ZA', 'ZAPPOS',
'ZARA', 'ZERO', 'ZIP', 'ZIPPO', 'ZM', 'ZONE', 'ZUERICH', 'ZW',
'XN--MGBAB2BD', 'XN--MGBAH1A3HJKRD', 'XN--MGBAI9AZGQP6J',
'XN--MGBAYH7GPA', 'XN--MGBB9FBPOB', 'XN--MGBBH1A', 'XN--MGBBH1A71E',
'XN--MGBC0A9AZCG', 'XN--MGBCA7DZDO', 'XN--MGBERP4A5D4AR',
'XN--MGBGU82A', 'XN--MGBI4ECEXP', 'XN--MGBPL2FH', 'XN--MGBT3DHD',
'XN--MGBTX2B', 'XN--MGBX4CD0AB', 'XN--MIX891F', 'XN--MK1BU44C',
'XN--MXTQ1M', 'XN--NGBC5AZD', 'XN--NGBE9E0A', 'XN--NGBRX', 'XN--NODE',
'XN--NQV7F', 'XN--NQV7FS00EMA', 'XN--NYQY26A', 'XN--O3CW4H',
'XN--OGBPF8FL', 'XN--OTU796D', 'XN--P1ACF', 'XN--P1AI', 'XN--PBT977C',
'XN--PGBS0DH', 'XN--PSSY2U', 'XN--Q9JYB4C', 'XN--QCKA1PMC', 'XN--QXAM',
'XN--RHQV96G', 'XN--ROVU88B', 'XN--RVC1E0AM3E', 'XN--S9BRJ9C',
'XN--SES554G', 'XN--T60B56A', 'XN--TCKWE', 'XN--TIQ49XQYJ',
'XN--UNUP4Y', 'XN--VERMGENSBERATER-CTB', 'XN--VERMGENSBERATUNG-PWB',
'XN--VHQUV', 'XN--VUQ861B', 'XN--W4R85EL8FHU5DNRA', 'XN--W4RS40L',
'XN--WGBH1C', 'XN--WGBL6A', 'XN--XHQ521B', 'XN--XKC2AL3HYE2A',
'XN--XKC2DL3A5EE0H', 'XN--Y9A3AQ', 'XN--YFRO4I67O', 'XN--YGBI2AMMX',
'XN--ZFR164B', 'XXX', 'XYZ', 'YACHTS', 'YAHOO', 'YAMAXUN', 'YANDEX',
'YE', 'YODOBASHI', 'YOGA', 'YOKOHAMA', 'YOU', 'YOUTUBE', 'YT', 'YUN',
'ZA', 'ZAPPOS', 'ZARA', 'ZERO', 'ZIP', 'ZM', 'ZONE', 'ZUERICH', 'ZW',
];
/**