cpan/List-Util/t/weak.t Scalar::Util
cpan/List-Util/XS.pp List::Util
cpan/Locale-Codes/ChangeLog Locale::Codes
+cpan/Locale-Codes/examples/README.examples Locale::Codes
+cpan/Locale-Codes/internal/build.yaml Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.country.pl Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.currency.pl Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.language.pl Locale::Codes maintainer file
+cpan/Locale-Codes/internal/data.script.pl Locale::Codes maintainer file
+cpan/Locale-Codes/internal/get_codes Locale::Codes maintainer file
+cpan/Locale-Codes/internal/ispell.isp Locale::Codes maintainer file
+cpan/Locale-Codes/internal/NOTES Locale::Codes maintainer file
+cpan/Locale-Codes/internal/VERSION Locale::Codes maintainer file
+cpan/Locale-Codes/lib/Locale/Codes/Changes.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Country.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Currency.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Language.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pm Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Script.pm Locale::Codes
cpan/Locale-Codes/lib/Locale/Constants.pm Locale::Codes
cpan/Locale-Codes/lib/Locale/Constants.pod Locale::Codes documentation
cpan/Locale-Codes/lib/Locale/Country.pm Locale::Codes
cpan/Locale-Codes/lib/Locale/Language.pod Locale::Codes documentation
cpan/Locale-Codes/lib/Locale/Script.pm Locale::Codes
cpan/Locale-Codes/lib/Locale/Script.pod Locale::Codes documentation
-cpan/Locale-Codes/Makefile.PL
-cpan/Locale-Codes/README Locale::Codes
-cpan/Locale-Codes/t/all.t See if Locale::Codes work
-cpan/Locale-Codes/t/constants.t See if Locale::Codes work
-cpan/Locale-Codes/t/country.t See if Locale::Codes work
-cpan/Locale-Codes/t/currency.t See if Locale::Codes work
-cpan/Locale-Codes/t/language.t See if Locale::Codes work
-cpan/Locale-Codes/t/rename.t See if Locale::Codes work
-cpan/Locale-Codes/t/script.t See if Locale::Codes work
-cpan/Locale-Codes/t/uk.t See if Locale::Codes work
+cpan/Locale-Codes/LICENSE Locale::Codes
+cpan/Locale-Codes/README.first Locale::Codes
+cpan/Locale-Codes/t/alias_code.t Locale::Codes tests
+cpan/Locale-Codes/t/code2country.t Locale::Codes tests
+cpan/Locale-Codes/t/code2currency.t Locale::Codes tests
+cpan/Locale-Codes/t/code2language.t Locale::Codes tests
+cpan/Locale-Codes/t/code2script.t Locale::Codes tests
+cpan/Locale-Codes/t/country2code.t Locale::Codes tests
+cpan/Locale-Codes/t/country_code2code.t Locale::Codes tests
+cpan/Locale-Codes/t/country.t Locale::Codes tests
+cpan/Locale-Codes/t/currency2code.t Locale::Codes tests
+cpan/Locale-Codes/t/language2code.t Locale::Codes tests
+cpan/Locale-Codes/t/language.t Locale::Codes tests
+cpan/Locale-Codes/t/script2code.t Locale::Codes tests
+cpan/Locale-Codes/t/testfunc.pl Locale::Codes tests
cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm Locale::Simple
cpan/Locale-Maketext-Simple/t/0-signature.t Locale::Simple tests
cpan/Locale-Maketext-Simple/t/1-basic.t Locale::Simple tests
'Locale-Codes' =>
{
'MAINTAINER' => 'sbeck',
- 'DISTRIBUTION' => 'NEILB/Locale-Codes-2.07.tar.gz',
+ 'DISTRIBUTION' => 'SBECK/Locale-Codes-3.12.tar.gz',
'FILES' => q[cpan/Locale-Codes],
+ 'EXCLUDED' => [ qw{t/pod_coverage.t t/pod.t}, qr{^t/runtests} ],
'CPAN' => 1,
'UPSTREAM' => 'cpan',
},
ChangeLog for Locale-Codes Distribution
+As of 3.00, the codes are autogenerated from the standards. With each release, codes will
+be re-generated and tested to see if any code changed. Any time there are any changes to
+the codes, it will be flagged below with a change: NEW CODE(s).
+
+3.13
+
+3.12 2010-04-06 sbeck
+ * NEW CODE(s)
+ * Renamed test.pl to testfunc.pl to avoid causing an error
+ when built as part of perl.
+
+3.11 2010-03-01 sbeck
+ * NEW CODE(s)
+ * Added the IANA domain names to Country
+ * Fixed a problem that produced warnings with perl 5.11.5.
+ Jerry D. Hedden
+
+3.10 2010-02-18 sbeck
+ * NEW CODE(s)
+ * Moved support files into the Locale::Codes namespace.
+ * The work done in each of the Locale::XXX modules was
+ virtually identical to each other. It has all
+ been moved to a central module and the
+ Locale::XXX moduels are now just wrappers.
+ * The XXX_code2code functions would return undef if the
+ same codeset were passed in for both the 2nd and
+ 3rd arguments. This doesn't make sense and has
+ been changed.
+ * Added all semi-private routines (except for the
+ couple that were already present):
+ rename_XXX
+ add_XXX
+ delete_XXX
+ add_XXX_alias
+ delete_XXX_alias
+ rename_XXX_code
+ add_XXX_code_alias
+ delete_XXX_code_alias
+ * Added "UK" alias. Steve Hay
+
+3.01 2010-02-15 sbeck
+ * Fixed Makefile.PL and Build.PL to install as core
+ modules.
+
+3.00 2010-02-10 sbeck
+ * NEW CODE(s)
+ * Took over maintenance of the code
+ * All codes and country names come from the official
+ standards
+ * code2country now returns the name of the country specified
+ in the standard (if the different standards refer
+ to the country by different variations in the name,
+ the results will differe based on the CODESET)
+ * Added code sets
+ FIPS 10 country codes
+ Alpha-3 and Term language codes
+ Numeric currency codes
+ * The rename_country funcion from 2.07 would guess the
+ CODESET (unlike all other functions which used
+ a default of LOCALE_CODE_ALPHA_2). The guess can
+ cause problems since (with the addition of FIPS)
+ codes may appear in different codesets for different
+ countries. The behavior has been changed to be
+ the same as other functions (default to
+ LOCALE_CODE_ALPHA_2).
+ * Dropped support for _alias_code
+ * Added language_code2code, currency_code2code
+
2.07 2004-06-10 neilb
* made $_ local in the initialisation code for each module
change back-propagated from Perl distribution
--- /dev/null
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+++ /dev/null
-use strict;
-use ExtUtils::MakeMaker;
-
-WriteMakefile (
- NAME => 'Locale-Codes',
- DISTNAME => 'Locale-Codes',
- VERSION => '2.07',
- AUTHOR => 'Neil Bowers <neil@bowers.com>',
- ABSTRACT => 'modules for ISO codes identifying countries, languages, currencies, and scripts',
-);
+++ /dev/null
-
- Locale-Codes Distribution
- v2.07
-
-For changes in this release, please see the ChangeLog file.
-
-This distribution contains four Perl modules which can be used to process
-ISO codes for identifying languages, countries, scripts,
-and currencies & funds.
-
- Locale::Language
- Two letter codes for language identification (ISO 639).
- For example, 'en' is the code for 'English'.
-
- Locale::Country
- Codes for country identification (ISO 3166). This module
- supports the three different code sets defined by the
- standard: alpha-2, alpha-3, and numeric codes.
- For example, 'bo' is the code for 'Bolivia'.
-
- Locale::Currency
- Three letter codes for currency and fund identification (ISO 4217).
- For example, 'sek' is the code for 'Swedish Krona'.
-
- Locale::Script
- Codes for script identification (ISO 15924). This module supports
- the three different code sets defined by the standard:
- alpha-2, alpha-3, and numeric codes.
-
-To install these modules, you should just have to run the following:
-
- % perl Makefile.PL
- % make
- % make test
- % make install
-
-The modules are documented using pod. When you "make install", you
-will get four man-pages: Locale::Language, Locale::Country,
-Locale::Currency, Locale::Script.
-
-The first version of Locale::Currency was written by Michael Hennecke,
-with modifications for inclusion by me. Kudos to Michael.
-
-Please let me know if you experience any problems with these modules,
-or have any ideas for additions.
-
-
-Neil Bowers
-<neil@bowers.com>
--- /dev/null
+
+ Locale-Codes Distribution
+
+For changes in this release, please refer to the Locale::Changes
+man-page.
+
+For changes prior to 3.00, please see the ChangeLog file.
+
+This distribution contains Perl modules which can be used to process
+ISO codes for identifying languages, countries, scripts,
+and currencies & funds.
+
+ Locale::Language
+
+ Codes for language identification including ISO 639.
+
+ For example, 'en' is the code for 'English'.
+
+ Locale::Country
+
+ Codes for country identification including ISO 3166
+ and FIPS 10.
+
+ For example, 'us' is the code for 'United States'.
+
+ Locale::Currency
+
+ Codes for currency and fund identification including
+ ISO 4217.
+
+ For example, 'sek' is the code for 'Swedish Krona'.
+
+ Locale::Script
+
+ Codes for script identification including ISO 15924.
+
+ For example, 'Phnx' is the code for 'Phoenician'.
+
+The modules are documented using pod. When you "make install", you
+will get man-pages: Local::Codes and each of the modules listed above.
+
+The first version of Locale::Currency was written by Michael Hennecke,
+with modifications by Neil Bowers for inclusion.
+
+The first versions of Locale::Language, Locale::Country, and Locale::Script
+were written by Neil Bowers.
+
+Please let me know if you experience any problems with these modules,
+or have any ideas for additions.
+
+Also, I plan on releasing a new version a couple of times a year to make
+sure that all of the codes are current. If a code changes in any standard,
+and you want a new release, just email me and I'll put out a new release.
+
--- /dev/null
+Please refer to the ../t directory for examples of how to use this
+module.
+
+The tests are organized fairly simply. In each .t file (except for
+pod and pod_coverage) is a line of the form:
+
+ test_Func(\&FUNC,$tests,$runtests,ARGS)
+
+FUNC is the name of one of the functions available in the module,
+or some function defined in the test script which calls one or more
+of the module functions.
+
+Also in the file are a series of tests organized as:
+
+ $tests = "
+ TEST1
+
+ TEST2
+
+ ...
+ ";
+
+or
+
+ $tests = [
+ TEST1,
+
+ TEST2,
+
+ ... ];
+
+
+In the first case, a test is a list of strings, some of which are used
+as arguments for the function being called, and some are expected results.
+If the expected result is a simple scalar, each TEST may be a simple list
+of space separated strings, the last of which is treated as the expected
+output.
+
+For example, if the following line appears in the test script:
+
+ test_Func(\&somefunc,$tests,$runtests);
+
+and one of the tests is:
+
+ A B C
+
+then the following behavior is expected:
+
+ somefunc(A,B)
+ => C
+
+The list of strings may also be given on separate lines as:
+
+ A
+ B
+ C
+
+If the expected results are a list of values, then the arguments
+to the function and the expected results are separated by a tilde (~).
+So if the following behavior is expected:
+
+ somefunc(A,B)
+ => (C,D)
+
+the test could be written in either of the following ways:
+
+ A B ~ C D
+
+ A
+ B
+ ~
+ C
+ D
+
+In all cases, leading spaces are ignored. Also, the strings may include
+spaces if (and only if) they are given one per line.
+
+Two special strings "_undef_" and "_blank_" may be included in the list
+to have the values undef or "" repectively included as either an argument
+or an expected return value.
+
+
+In the second method of entering tests, tests are given as a list reference
+with two values. The first is a list reference containing arguments, and
+the second is a list reference containing the expected return value(s). The
+expected values should be simple strings.
+
+So, a test could be entered as:
+
+ [ [ qw(A B) ],
+ [ qw(C D) ] ]
+
+and be equivalent to:
+
+ A B ~ C D
+
--- /dev/null
+The files in this directory are for primary use by me, the maintainer
+of Locale::Codes to prepare a new release.
+
+There is no reason for an end user to need to do this. However, it
+is documented for the sake of completeness, and to remind me of the
+steps I need to do.
+
+It's also available in case someone ever chooses to fork the
+module (though I hope that won't be necessary).
+
+#########################################################################
+Before every release, spellcheck the documents:
+
+ for i in `find lib -type f -name \*.pod` ;do
+ podspell $i > $i.txt
+ ispell -p internal/ispell.isp $i.txt
+ rm -f $i.txt $i.txt.bak
+ done
+
+#########################################################################
+Get the newest codes:
+
+ ./internal/get_codes -c
+ diff lib/Locale/Codes/Country.pm{.bak,}
+
+ ./internal/get_codes -l
+ diff lib/Locale/Codes/Language.pm{.bak,}
+
+ ./internal/get_codes -r
+ diff lib/Locale/Codes/Currency.pm{.bak,}
+
+ ./internal/get_codes -s
+ diff lib/Locale/Codes/Script.pm{.bak,}
+
+ ./internal/get_codes -C
+ rm lib/Locale/Codes/*.bak
+
+#########################################################################
+Set the release version
+
+ v=`cat internal/VERSION`
+ for i in \
+ internal/get_codes \
+ `find lib -name \*.pm` \
+ ;do
+ sed -e "s,VERSION *=.*;,VERSION='$v';," $i > z
+ mv z $i
+ done
+
+#########################################################################
+Update the history file with the date
+
+#########################################################################
+Update the copyright
+
+ y=`date '+%Y'`
+ for i in `find . -type f | xargs egrep -l 'Copyright \(c\) ....\-.... Sullivan Beck'` ;do
+ sed -e "s,\(Copyright (c) ....\)\-.... \(Sullivan Beck\),\1-$y \2," $i > z
+ mv z $i
+ done
+
+#########################################################################
+Regenerate the MANIFEST, Build.PL, Makefile.PL
+Run the kwalitee tests
--- /dev/null
+---
+core: 5.007003
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+# This is used to match country names from one source with those from
+# an existing source.
+#
+%country_alias =
+ (
+ "Bahamas, The" => "Bahamas",
+ "Bolivia (Plurinational State of)" => "Bolivia, Plurinational State of",
+ "Bolivia" => "Bolivia, Plurinational State of",
+ "British Virgin Islands" => "Virgin Islands, British",
+ "Brunei" => "Brunei Darussalam",
+ "Burma" => "Myanmar",
+ "China, Hong Kong Special Administrative Region" => "Hong Kong",
+ "China, Macao Special Administrative Region" => "Macao",
+ "Cocos Islands" => "Cocos (Keeling) Islands",
+ "Congo (Brazzaville)" => "Congo",
+ "Democratic People's Republic of Korea" => "Korea, Democratic People's Republic of",
+ "Democratic Republic of the Congo" => "Congo, The Democratic Republic of the",
+ "East Timor" => "Timor-Leste",
+ "Faeroe Islands" => "Faroe Islands",
+ "Falkland Islands (Islas Malvinas)" => "Falkland Islands (Malvinas)",
+ "Federated States of Micronesia" => "Micronesia, Federated States of",
+ "French Southern and Antarctic Lands" => "French Southern Territories",
+ "Gambia, The" => "Gambia",
+ "Golan Heights (Israeli-occupied)" => "Syrian Arab Republic",
+ "Great Britain" => "United Kingdom",
+ "Holy See" => "Holy See (Vatican City State)",
+ "Hong Kong S.A.R." => "Hong Kong",
+ "Hong Kong Special Administrative Region of China" => "Hong Kong",
+ "Iran (Islamic Republic of)" => "Iran, Islamic Republic of",
+ "Iran" => "Iran, Islamic Republic of",
+ "Kazakstan" => "Kazakhstan",
+ "Keeling Islands" => "Cocos (Keeling) Islands",
+ "Libya" => "Libyan Arab Jamahiriya",
+ "Macao Special Administrative Region of China" => "Macao",
+ "Macau S.A.R" => "Macao",
+ "Macau S.A.R." => "Macao",
+ "Macedonia" => "Macedonia, The Former Yugoslav Republic of",
+ "Macedonia, Former Yugoslav Republic of" => "Macedonia, The Former Yugoslav Republic of",
+ "Micronesia (Federated States of)" => "Micronesia, Federated States of",
+ "North Korea" => "Korea, Democratic People's Republic of",
+ "Occupied Palestinian Territory" => "Palestinian Territory, Occupied",
+ "Pitcairn Island" => "Pitcairn",
+ "Pitcairn Islands" => "Pitcairn",
+ "Republic of Korea" => "Korea, Republic of",
+ "Republic of Moldova" => "Moldova, Republic of",
+ "Saint Helena" => "Saint Helena, Ascension and Tristan da Cunha",
+ "Saint-Barthelemy" => "Saint Barthelemy",
+ "Saint-Martin (French part)" => "Saint Martin",
+ "South Korea" => "Korea, Republic of",
+ "Svalbard and Jan Mayen Islands" => "Svalbard and Jan Mayen",
+ "Taiwan" => "Taiwan, Province of China",
+ "The Bahamas" => "Bahamas",
+ "The Democratic Republic of the Congo" => "Congo, The Democratic Republic of the",
+ "The Republic of the Congo" => "Congo",
+ "The former Yugoslav Republic of Macedonia" => "Macedonia, The Former Yugoslav Republic of",
+ "UK" => "United Kingdom",
+ "US" => "United States",
+ "USA" => "United States",
+ "United Kingdom of Great Britain and Northern Ireland" => "United Kingdom",
+ "United Republic of Tanzania" => "Tanzania, United Republic of",
+ "United States Virgin Islands" => "Virgin Islands, U.S.",
+ "United States of America" => "United States",
+ "Vatican City" => "Holy See (Vatican City State)",
+ "Venezuela (Bolivarian Republic of)" => "Venezuela, Bolivarian Republic of",
+ "Venezuela" => "Venezuela, Bolivarian Republic of",
+ "Vietnam" => "Viet Nam",
+ "Virgin Islands (UK)" => "Virgin Islands, British",
+ "Virgin Islands (US)" => "Virgin Islands, U.S.",
+ "Virgin Islands" => "Virgin Islands, U.S.",
+ "Wallis and Futuna Islands" => "Wallis and Futuna",
+ );
+
+# From v. 2.xx:
+# Zaire
+# Serbia and Montenegro
+# Yugoslavia
+# Jan Mayen
+# Svalbard
+
+################################################################################
+# ISO 3166-1 countries
+
+%country_iso_orig =
+ (
+ "AFGHANISTAN" => "Afghanistan",
+ "Ã…LAND ISLANDS" => "Aland Islands",
+ "ALBANIA" => "Albania",
+ "ALGERIA" => "Algeria",
+ "AMERICAN SAMOA" => "American Samoa",
+ "ANDORRA" => "Andorra",
+ "ANGOLA" => "Angola",
+ "ANGUILLA" => "Anguilla",
+ "ANTARCTICA" => "Antarctica",
+ "ANTIGUA AND BARBUDA" => "Antigua and Barbuda",
+ "ARGENTINA" => "Argentina",
+ "ARMENIA" => "Armenia",
+ "ARUBA" => "Aruba",
+ "AUSTRALIA" => "Australia",
+ "AUSTRIA" => "Austria",
+ "AZERBAIJAN" => "Azerbaijan",
+ "BAHAMAS" => "Bahamas",
+ "BAHRAIN" => "Bahrain",
+ "BANGLADESH" => "Bangladesh",
+ "BARBADOS" => "Barbados",
+ "BELARUS" => "Belarus",
+ "BELGIUM" => "Belgium",
+ "BELIZE" => "Belize",
+ "BENIN" => "Benin",
+ "BERMUDA" => "Bermuda",
+ "BHUTAN" => "Bhutan",
+ "BOLIVIA, PLURINATIONAL STATE OF" => "Bolivia, Plurinational State of",
+ "BOSNIA AND HERZEGOVINA" => "Bosnia and Herzegovina",
+ "BOTSWANA" => "Botswana",
+ "BOUVET ISLAND" => "Bouvet Island",
+ "BRAZIL" => "Brazil",
+ "BRITISH INDIAN OCEAN TERRITORY" => "British Indian Ocean Territory",
+ "BRUNEI DARUSSALAM" => "Brunei Darussalam",
+ "BULGARIA" => "Bulgaria",
+ "BURKINA FASO" => "Burkina Faso",
+ "BURUNDI" => "Burundi",
+ "CAMBODIA" => "Cambodia",
+ "CAMEROON" => "Cameroon",
+ "CANADA" => "Canada",
+ "CAPE VERDE" => "Cape Verde",
+ "CAYMAN ISLANDS" => "Cayman Islands",
+ "CENTRAL AFRICAN REPUBLIC" => "Central African Republic",
+ "CHAD" => "Chad",
+ "CHILE" => "Chile",
+ "CHINA" => "China",
+ "CHRISTMAS ISLAND" => "Christmas Island",
+ "COCOS (KEELING) ISLANDS" => "Cocos (Keeling) Islands",
+ "COLOMBIA" => "Colombia",
+ "COMOROS" => "Comoros",
+ "CONGO" => "Congo",
+ "CONGO, THE DEMOCRATIC REPUBLIC OF THE" => "Congo, The Democratic Republic of the",
+ "COOK ISLANDS" => "Cook Islands",
+ "COSTA RICA" => "Costa Rica",
+ "CÔTE D'IVOIRE" => "Cote d'Ivoire",
+ "CROATIA" => "Croatia",
+ "CUBA" => "Cuba",
+ "CYPRUS" => "Cyprus",
+ "CZECH REPUBLIC" => "Czech Republic",
+ "DENMARK" => "Denmark",
+ "DJIBOUTI" => "Djibouti",
+ "DOMINICA" => "Dominica",
+ "DOMINICAN REPUBLIC" => "Dominican Republic",
+ "ECUADOR" => "Ecuador",
+ "EGYPT" => "Egypt",
+ "EL SALVADOR" => "El Salvador",
+ "EQUATORIAL GUINEA" => "Equatorial Guinea",
+ "ERITREA" => "Eritrea",
+ "ESTONIA" => "Estonia",
+ "ETHIOPIA" => "Ethiopia",
+ "FALKLAND ISLANDS (MALVINAS)" => "Falkland Islands (Malvinas)",
+ "FAROE ISLANDS" => "Faroe Islands",
+ "FIJI" => "Fiji",
+ "FINLAND" => "Finland",
+ "FRANCE" => "France",
+ "FRENCH GUIANA" => "French Guiana",
+ "FRENCH POLYNESIA" => "French Polynesia",
+ "FRENCH SOUTHERN TERRITORIES" => "French Southern Territories",
+ "GABON" => "Gabon",
+ "GAMBIA" => "Gambia",
+ "GEORGIA" => "Georgia",
+ "GERMANY" => "Germany",
+ "GHANA" => "Ghana",
+ "GIBRALTAR" => "Gibraltar",
+ "GREECE" => "Greece",
+ "GREENLAND" => "Greenland",
+ "GRENADA" => "Grenada",
+ "GUADELOUPE" => "Guadeloupe",
+ "GUAM" => "Guam",
+ "GUATEMALA" => "Guatemala",
+ "GUERNSEY" => "Guernsey",
+ "GUINEA" => "Guinea",
+ "GUINEA-BISSAU" => "Guinea-Bissau",
+ "GUYANA" => "Guyana",
+ "HAITI" => "Haiti",
+ "HEARD ISLAND AND MCDONALD ISLANDS" => "Heard Island and Mcdonald Islands",
+ "HOLY SEE (VATICAN CITY STATE)" => "Holy See (Vatican City State)",
+ "HONDURAS" => "Honduras",
+ "HONG KONG" => "Hong Kong",
+ "HUNGARY" => "Hungary",
+ "ICELAND" => "Iceland",
+ "INDIA" => "India",
+ "INDONESIA" => "Indonesia",
+ "IRAN, ISLAMIC REPUBLIC OF" => "Iran, Islamic Republic of",
+ "IRAQ" => "Iraq",
+ "IRELAND" => "Ireland",
+ "ISLE OF MAN" => "Isle of Man",
+ "ISRAEL" => "Israel",
+ "ITALY" => "Italy",
+ "JAMAICA" => "Jamaica",
+ "JAPAN" => "Japan",
+ "JERSEY" => "Jersey",
+ "JORDAN" => "Jordan",
+ "KAZAKHSTAN" => "Kazakhstan",
+ "KENYA" => "Kenya",
+ "KIRIBATI" => "Kiribati",
+ "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF" => "Korea, Democratic People's Republic of",
+ "KOREA, REPUBLIC OF" => "Korea, Republic of",
+ "KUWAIT" => "Kuwait",
+ "KYRGYZSTAN" => "Kyrgyzstan",
+ "LAO PEOPLE'S DEMOCRATIC REPUBLIC" => "Lao People's Democratic Republic",
+ "LATVIA" => "Latvia",
+ "LEBANON" => "Lebanon",
+ "LESOTHO" => "Lesotho",
+ "LIBERIA" => "Liberia",
+ "LIBYAN ARAB JAMAHIRIYA" => "Libyan Arab Jamahiriya",
+ "LIECHTENSTEIN" => "Liechtenstein",
+ "LITHUANIA" => "Lithuania",
+ "LUXEMBOURG" => "Luxembourg",
+ "MACAO" => "Macao",
+ "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF" => "Macedonia, The Former Yugoslav Republic of",
+ "MADAGASCAR" => "Madagascar",
+ "MALAWI" => "Malawi",
+ "MALAYSIA" => "Malaysia",
+ "MALDIVES" => "Maldives",
+ "MALI" => "Mali",
+ "MALTA" => "Malta",
+ "MARSHALL ISLANDS" => "Marshall Islands",
+ "MARTINIQUE" => "Martinique",
+ "MAURITANIA" => "Mauritania",
+ "MAURITIUS" => "Mauritius",
+ "MAYOTTE" => "Mayotte",
+ "MEXICO" => "Mexico",
+ "MICRONESIA, FEDERATED STATES OF" => "Micronesia, Federated States of",
+ "MOLDOVA, REPUBLIC OF" => "Moldova, Republic of",
+ "MONACO" => "Monaco",
+ "MONGOLIA" => "Mongolia",
+ "MONTENEGRO" => "Montenegro",
+ "MONTSERRAT" => "Montserrat",
+ "MOROCCO" => "Morocco",
+ "MOZAMBIQUE" => "Mozambique",
+ "MYANMAR" => "Myanmar",
+ "NAMIBIA" => "Namibia",
+ "NAURU" => "Nauru",
+ "NEPAL" => "Nepal",
+ "NETHERLANDS" => "Netherlands",
+ "NETHERLANDS ANTILLES" => "Netherlands Antilles",
+ "NEW CALEDONIA" => "New Caledonia",
+ "NEW ZEALAND" => "New Zealand",
+ "NICARAGUA" => "Nicaragua",
+ "NIGER" => "Niger",
+ "NIGERIA" => "Nigeria",
+ "NIUE" => "Niue",
+ "NORFOLK ISLAND" => "Norfolk Island",
+ "NORTHERN MARIANA ISLANDS" => "Northern Mariana Islands",
+ "NORWAY" => "Norway",
+ "OMAN" => "Oman",
+ "PAKISTAN" => "Pakistan",
+ "PALAU" => "Palau",
+ "PALESTINIAN TERRITORY, OCCUPIED" => "Palestinian Territory, Occupied",
+ "PANAMA" => "Panama",
+ "PAPUA NEW GUINEA" => "Papua New Guinea",
+ "PARAGUAY" => "Paraguay",
+ "PERU" => "Peru",
+ "PHILIPPINES" => "Philippines",
+ "PITCAIRN" => "Pitcairn",
+ "POLAND" => "Poland",
+ "PORTUGAL" => "Portugal",
+ "PUERTO RICO" => "Puerto Rico",
+ "QATAR" => "Qatar",
+ "RÉUNION" => "Reunion",
+ "ROMANIA" => "Romania",
+ "RUSSIAN FEDERATION" => "Russian Federation",
+ "RWANDA" => "Rwanda",
+ "SAINT BARTHÉLEMY" => "Saint Barthelemy",
+ "SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA" => "Saint Helena, Ascension and Tristan da Cunha",
+ "SAINT KITTS AND NEVIS" => "Saint Kitts and Nevis",
+ "SAINT LUCIA" => "Saint Lucia",
+ "SAINT MARTIN" => "Saint Martin",
+ "SAINT PIERRE AND MIQUELON" => "Saint Pierre and Miquelon",
+ "SAINT VINCENT AND THE GRENADINES" => "Saint Vincent and the Grenadines",
+ "SAMOA" => "Samoa",
+ "SAN MARINO" => "San Marino",
+ "SAO TOME AND PRINCIPE" => "Sao Tome and Principe",
+ "SAUDI ARABIA" => "Saudi Arabia",
+ "SENEGAL" => "Senegal",
+ "SERBIA" => "Serbia",
+ "SEYCHELLES" => "Seychelles",
+ "SIERRA LEONE" => "Sierra Leone",
+ "SINGAPORE" => "Singapore",
+ "SLOVAKIA" => "Slovakia",
+ "SLOVENIA" => "Slovenia",
+ "SOLOMON ISLANDS" => "Solomon Islands",
+ "SOMALIA" => "Somalia",
+ "SOUTH AFRICA" => "South Africa",
+ "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS" => "South Georgia and the South Sandwich Islands",
+ "SPAIN" => "Spain",
+ "SRI LANKA" => "Sri Lanka",
+ "SUDAN" => "Sudan",
+ "SURINAME" => "Suriname",
+ "SVALBARD AND JAN MAYEN" => "Svalbard and Jan Mayen",
+ "SWAZILAND" => "Swaziland",
+ "SWEDEN" => "Sweden",
+ "SWITZERLAND" => "Switzerland",
+ "SYRIAN ARAB REPUBLIC" => "Syrian Arab Republic",
+ "TAIWAN, PROVINCE OF CHINA" => "Taiwan, Province of China",
+ "TAJIKISTAN" => "Tajikistan",
+ "TANZANIA, UNITED REPUBLIC OF" => "Tanzania, United Republic of",
+ "THAILAND" => "Thailand",
+ "TIMOR-LESTE" => "Timor-Leste",
+ "TOGO" => "Togo",
+ "TOKELAU" => "Tokelau",
+ "TONGA" => "Tonga",
+ "TRINIDAD AND TOBAGO" => "Trinidad and Tobago",
+ "TUNISIA" => "Tunisia",
+ "TURKEY" => "Turkey",
+ "TURKMENISTAN" => "Turkmenistan",
+ "TURKS AND CAICOS ISLANDS" => "Turks and Caicos Islands",
+ "TUVALU" => "Tuvalu",
+ "UGANDA" => "Uganda",
+ "UKRAINE" => "Ukraine",
+ "UNITED ARAB EMIRATES" => "United Arab Emirates",
+ "UNITED KINGDOM" => "United Kingdom",
+ "UNITED STATES" => "United States",
+ "UNITED STATES MINOR OUTLYING ISLANDS" => "United States Minor Outlying Islands",
+ "URUGUAY" => "Uruguay",
+ "UZBEKISTAN" => "Uzbekistan",
+ "VANUATU" => "Vanuatu",
+ "VENEZUELA, BOLIVARIAN REPUBLIC OF" => "Venezuela, Bolivarian Republic of",
+ "VIET NAM" => "Viet Nam",
+ "VIRGIN ISLANDS, BRITISH" => "Virgin Islands, British",
+ "VIRGIN ISLANDS, U.S." => "Virgin Islands, U.S.",
+ "WALLIS AND FUTUNA" => "Wallis and Futuna",
+ "WESTERN SAHARA" => "Western Sahara",
+ "YEMEN" => "Yemen",
+ "ZAMBIA" => "Zambia",
+ "ZIMBABWE" => "Zimbabwe",
+ );
+
+################################################################################
+# United Nations (source of alpha-3 and numeric codes)
+
+%country_un_orig =
+ (
+ 'Åland Islands' => "Aland Islands",
+ 'Côte d'."'Ivoire" => "Cote d'Ivoire",
+ 'Réunion' => "Reunion",
+ 'Saint-Barthélemy' => "Saint-Barthelemy",
+ );
+
+################################################################################
+# NGA (source of FIPS 10 codes)
+
+%country_nga_orig =
+ (
+ );
+
+%country_nga_ignore =
+ (
+ "Golan Heights (Israeli-occupied)" => 1,
+ );
+
+################################################################################
+# IANA (source of top level domains)
+
+%country_iana_orig =
+ (
+ );
+
+################################################################################
+# CIA World Factbook (checks for codes)
+
+%country_cia_orig =
+ (
+ );
+
+%country_cia_ignore =
+ (
+ "Western Samoa" => 1,
+ "World" => 1,
+ "Zaire" => 1,
+ );
+
+%country_cia_codes =
+ (
+ "alpha2" => {"Gaza Strip" => "-",
+ "West Bank" => "-",
+ "Svalbard" => "-",
+ },
+ "alpha3" => {"Gaza Strip" => "-",
+ "West Bank" => "-",
+ "Svalbard" => "-",
+ },
+ "num" => {"Gaza Strip" => "-",
+ "West Bank" => "-",
+ "Svalbard" => "-",
+ },
+ "fips" => {
+ },
+ "dom" => {"Gaza Strip" => "-",
+ "West Bank" => "-",
+ "Svalbard" => "-",
+ },
+ );
+
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+%currency_alias =
+ (
+ );
+
+%currency_iso_orig =
+ (
+ );
+
+%currency_iso_ignore =
+ (
+ "XTS" => 1,
+ "XXX" => 1,
+ );
+
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+%language_alias =
+ (
+ "Greek" => 'Greek, Modern (1453-)',
+ "Tonga" => 'Tonga (Tonga Islands)',
+ );
+
+%language_iso_orig =
+ (
+ "Bokm\x{e5}l, Norwegian; Norwegian Bokm\x{e5}l"
+ => 'Bokmal, Norwegian; Norwegian Bokmal',
+ "Occitan (post 1500); Proven\x{e7}al"
+ => 'Occitan (post 1500); Provencal',
+ "Proven\x{e7}al, Old (to 1500)" => 'Provencal, Old (to 1500)',
+ "Volap\x{fc}k" => 'Volapuk',
+ );
+
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+%script_alias =
+ (
+ );
+
+%script_iso_orig =
+ (
+ "Ethiopic (Ge\x{2bb}ez)" => "Ethiopic (Geez)",
+ "Hangul (Hang\x{16d}l, Hangeul)" => "Hangul (Hangul, Hangeul)",
+ "Hanunoo (Hanun\x{f3}o)" => "Hanunoo (Hanunoo)",
+ "Lepcha (R\x{f3}ng)" => "Lepcha (Rong)",
+ "Nakhi Geba ('Na-'Khi \x{b2}Gg\x{14f}-\x{b9}baw, Naxi Geba)" =>
+ "Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)",
+ "N\x{2019}Ko" => "N'Ko",
+ "Ol Chiki (Ol Cemet\x{2019}, Ol, Santali)" =>
+ "Ol Chiki (Ol Cemet, Ol, Santali)",
+ );
+
+%script_iso_ignore =
+ (
+ "Zxxx" => 1,
+ "Zyyy" => 1,
+ "Zzzz" => 1,
+ );
+1;
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright (c) 2010-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+###############################################################################
+###############################################################################
+# This script is used to automatically generate the Locale::Codes module
+# which contain the actual codes.
+
+require 5.000000;
+use YAML;
+use IO::File;
+use strict;
+use warnings;
+use Archive::Zip;
+
+use lib "./internal";
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+use vars qw($DEBUG);
+$DEBUG = 0;
+
+###############################################################################
+# GLOBAL VARIABLES
+###############################################################################
+
+# We need to create the following variables:
+#
+# %Country{COUNTRY_ID} => [ COUNTRY, COUNTRY, ... ]
+# A list of all valid country names that
+# correspond to a given COUNTRY_ID.
+# The names are all real (i.e. correct
+# spelling and capitalization).
+# %CountryAlias{ALIAS} => [ COUNTRY_ID, I ]
+# A hash of all aliases for a country.
+# Aliases are all lowercase.
+# %Code2CountryID{CODESET}{CODE} => [ COUNTRY_ID, I ]
+# In a given CODESET, CODE corresponds to
+# the I'th entry list of countries.
+# %CountryID2Code{CODESET}{COUNTRY_ID} => CODE
+# In the given CODESET, the COUNTRY_ID
+# corresponds to the given CODE.
+
+use vars qw( $CountryID %Country %CountryAlias %Code2CountryID %CountryID2Code );
+use vars qw(%country_alias);
+
+$CountryID = "0001";
+
+use vars qw( $ModDir $CountryModule );
+
+$ModDir = "lib/Locale/Codes";
+$CountryModule = "Country";
+
+#
+# We'll first read data from the official ISO 3166.
+#
+# Data available consists only of the country names and 2-character
+# codes. Country names include non-ASCII characters encoded in
+# ISO-8859-1. Also, they're all uppercase! Every line in the file ends
+# with one unprintable character. In other words, they're distributed
+# in the most unfriendly fashion you could ask for! We'll store the
+# first country for error checking.
+#
+
+use vars qw($country_iso_url $country_iso_file $country_iso_1st);
+use vars qw(%country_iso_orig);
+
+$country_iso_url = "http://www.iso.org/iso/list-en1-semic-3.txt";
+$country_iso_1st = "AFGHANISTAN";
+($country_iso_file) = $country_iso_url =~ m,/([^/]*)$,;
+
+#
+# The UN Stats Division contains some (but not all) of the ISO 3166
+# 3-character codes and 3-digit codes. Since they are the maintainers
+# of this data, this is an official source.
+#
+
+use vars qw($country_un_url $country_un_file);
+use vars qw(%country_un_orig);
+
+$country_un_url = "http://unstats.un.org/unsd/methods/m49/m49alpha.htm";
+($country_un_file) = $country_un_url =~ m,/([^/]*)$,;
+
+#
+# The National Geospatial-Intelligence Agency is the official source
+# for FIPS 10 codes.
+#
+
+use vars qw($country_nga_url $country_nga_file);
+use vars qw(%country_nga_orig %country_nga_ignore);
+
+$country_nga_url = "http://earth-info.nga.mil/gns/html/digraphs.htm";
+($country_nga_file) = $country_nga_url =~ m,/([^/]*)$,;
+
+#
+# IANA domains
+#
+
+use vars qw($country_iana_url $country_iana_file);
+use vars qw(%country_iana_orig);
+
+$country_iana_url = "http://www.iana.org/domains/root/db/index.html";
+($country_iana_file) = $country_iana_url =~ m,/([^/]*)$,;
+
+#
+# This is the CIA World Factbook, which is assumed to be a reliable
+# source of this data. Due to the complexity of the data, we'll store
+# the last country so we know when to stop.
+#
+# We have to force-override some codes.
+#
+
+use vars qw($country_cia_url $country_cia_file $country_cia_last);
+use vars qw(%country_cia_ignore %country_cia_orig %country_cia_codes);
+
+$country_cia_url = "https://www.cia.gov/library/publications/the-world-factbook/appendix/print_appendix-d.html";
+($country_cia_file) = $country_cia_url =~ m,/([^/]*)$,;
+$country_cia_last = "Zimbabwe";
+
+require "data.country.pl";
+
+########################################
+
+# We need to create the following variables:
+#
+# %Language{LANGUAGE_ID} => [ LANGUAGE, LANGUAGE, ... ]
+# A list of all valid language names that
+# correspond to a given LANGUAGE_ID.
+# The names are all real (i.e. correct
+# spelling and capitalization).
+# %LanguageAlias{ALIAS} => [ LANGUAGE_ID, I ]
+# A hash of all aliases for a language.
+# Aliases are all lowercase.
+# %Code2LanguageID{CODESET}{CODE} => [ LANGUAGE_ID, I ]
+# In a given CODESET, CODE corresponds to
+# the I'th entry in the list of languages.
+# %LanguageID2Code{CODESET}{LANGUAGE_ID} => CODE
+# In the given CODESET, the LANGUAGE_ID
+# corresponds to the given CODE.
+
+use vars qw( $LanguageID %Language %LanguageAlias %Code2LanguageID %LanguageID2Code );
+use vars qw(%language_alias);
+
+$LanguageID = "0001";
+
+use vars qw( $LanguageModule );
+
+$LanguageModule = "Language";
+
+#
+# We'll first read data from the official ISO 639.
+#
+# Data available consists of the language names and 2-letter and
+# 3-letter codes. Language names include non-ASCII characters encoded in
+# UTF-8. And (amazingly enough) it's available in a field delimited file!!!
+#
+
+use vars qw($language_iso_url $language_iso_file);
+use vars qw(%language_iso_orig);
+
+$language_iso_url = "http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt";
+($language_iso_file) = $language_iso_url =~ m,/([^/]*)$,;
+
+require "data.language.pl";
+
+########################################
+
+# We need to create the following variables:
+#
+# %Currency{CURRENCY_ID} => [ CURRENCY, CURRENCY, ... ]
+# A list of all valid currency names that
+# correspond to a given CURRENCY_ID.
+# The names are all real (i.e. correct
+# spelling and capitalization).
+# %CurrencyAlias{ALIAS} => [ CURRENCY_ID, I ]
+# A hash of all aliases for a currency.
+# Aliases are all lowercase.
+# %Code2CurrencyID{CODESET}{CODE} => [ CURRENCY_ID, I ]
+# In a given CODESET, CODE corresponds to
+# the I'th entry in the list of currencies.
+# %CurrencyID2Code{CODESET}{CURRENCY_ID} => CODE
+# In the given CODESET, the CURRENCY_ID
+# corresponds to the given CODE.
+
+use vars qw( $CurrencyID %Currency %CurrencyAlias %Code2CurrencyID %CurrencyID2Code );
+use vars qw(%currency_alias);
+
+$CurrencyID = "0001";
+
+use vars qw( $CurrencyModule );
+
+$CurrencyModule = "Currency";
+
+#
+# We'll first read data from the official ISO 4217.
+#
+
+use vars qw($currency_iso_url $currency_iso_file $currency_iso_last);
+use vars qw(%currency_iso_orig %currency_iso_ignore);
+
+$currency_iso_url = "http://www.iso.org/iso/support/currency_codes_list-1.htm";
+($currency_iso_file) = $currency_iso_url =~ m,/([^/]*)$,;
+$currency_iso_last = "XXX";
+
+require "data.currency.pl";
+
+########################################
+
+# We need to create the following variables:
+#
+# %Script{SCRIPT_ID} => [ SCRIPT, SCRIPT, ... ]
+# A list of all valid script names that
+# correspond to a given SCRIPT_ID.
+# The names are all real (i.e. correct
+# spelling and capitalization).
+# %ScriptAlias{ALIAS} => [ SCRIPT_ID, I ]
+# A hash of all aliases for a script.
+# Aliases are all lowercase.
+# %Code2ScriptID{CODESET}{CODE} => [ SCRIPT_ID, I ]
+# In a given CODESET, CODE corresponds to
+# the I'th entry in the list of scripts.
+# %ScriptID2Code{CODESET}{SCRIPT_ID} => CODE
+# In the given CODESET, the SCRIPT_ID
+# corresponds to the given CODE.
+
+use vars qw( $ScriptID %Script %ScriptAlias %Code2ScriptID %ScriptID2Code );
+use vars qw(%script_alias);
+
+$ScriptID = "0001";
+
+use vars qw( $ScriptModule );
+
+$ScriptModule = "Script";
+
+#
+# We'll first read data from the official ISO 15924.
+#
+# Data available consists of the script names and 2-letter and
+# 3-letter codes. Script names include non-ASCII characters encoded in
+# UTF-8. And (amazingly enough) it's available in a field delimited file!!!
+#
+
+use vars qw($script_iso_url $script_iso_file $script_iso_tmp);
+use vars qw(%script_iso_orig %script_iso_ignore);
+
+$script_iso_url = "http://www.unicode.org/iso15924/iso15924.txt.zip";
+($script_iso_file) = $script_iso_url =~ m,/([^/]*)$,;
+$script_iso_tmp = "iso15924.txt";
+
+require "data.script.pl";
+
+###############################################################################
+# HELP
+###############################################################################
+
+use vars qw($usage);
+my $COM = $0;
+$COM =~ s/^.*\///;
+
+$usage=
+ "usage: $COM OPTIONS
+ -h/--help : Print help.
+
+ -a/--all : Do all steps
+
+ -c/--country : Get the country codes
+ -l/--language : Get the language codes
+ -r/--currency : Get the currency codes
+ -s/--script : Get the script codes
+ -C/--clean : Clean up all temporary files
+";
+
+###############################################################################
+# PARSE ARGUMENTS
+###############################################################################
+
+my $do_all = 0;
+my $do_country = 0;
+my $do_language = 0;
+my $do_currency = 0;
+my $do_script = 0;
+my $do_clean = 0;
+
+while ($_ = shift) {
+
+ (print $usage), exit if ($_ eq "-h" || $_ eq "--help");
+
+ $do_all = 1, next if ($_ eq "-a" || $_ eq "--all");
+
+ $do_country = 1, next if ($_ eq "-c" || $_ eq "--country");
+ $do_language = 1, next if ($_ eq "-l" || $_ eq "--language");
+ $do_currency = 1, next if ($_ eq "-r" || $_ eq "--currency");
+ $do_script = 1, next if ($_ eq "-s" || $_ eq "--script");
+ $do_clean = 1, next if ($_ eq "-C" || $_ eq "--clean");
+}
+
+############################################################################
+# MAIN PROGRAM
+############################################################################
+
+do_country() if ($do_all || $do_country);
+do_language() if ($do_all || $do_language);
+do_currency() if ($do_all || $do_currency);
+do_script() if ($do_all || $do_script);
+do_clean() if ($do_all || $do_clean);
+
+############################################################################
+# DO_COUNTRY
+############################################################################
+
+sub do_country {
+ print "Country codes...\n";
+
+ do_country_iso();
+ print_table("country") if ($DEBUG == 2);
+
+ do_country_un();
+ print_table("country") if ($DEBUG == 2);
+
+ do_country_nga();
+ print_table("country") if ($DEBUG == 2);
+
+ do_country_iana();
+ print_table("country") if ($DEBUG == 2);
+
+ do_country_cia();
+ print_table("country") if ($DEBUG == 2);
+
+ # Go through all aliases to pick up any that haven't already been
+ # added (since some aliases are for human convenience rather than
+ # dealing with variations between codesets).
+ do_aliases("country");
+ print_table("country") if ($DEBUG);
+
+ write_module("country");
+}
+
+########################################
+sub do_country_iso {
+
+ ###
+ ### The first set we'll do is the ISO 3166-1 2-character
+ ### codes. These country names must be adjusted (since they're all
+ ### uppercase). Also, the lines all end with some strange
+ ### unprintable character.
+ ###
+
+ my $codeset = "alpha2";
+
+ system("wget -N -q $country_iso_url");
+ my @in = `cat $country_iso_file`;
+ chomp(@in);
+ chop(@in);
+
+ # File is a line of text followed by a blank line followed by the
+ # codes as ORIGNAME;CODE .
+
+ if ($in[1] || $in[2] !~ /^$country_iso_1st;/) {
+ die "ERROR [iso]: country code file format changed!\n";
+ }
+
+ shift(@in);
+ shift(@in);
+
+ foreach my $line (@in) {
+ if ($line !~ /^(.*);(.*)$/) {
+ die "ERROR [iso]: line invalid\n" .
+ " $line\n";
+ }
+ my($country,$code) = ($1,$2);
+ $code = lc($code);
+ if (exists $country_iso_orig{$country}) {
+ $country = $country_iso_orig{$country};
+ } else {
+ print "WARNING [iso]: unknown country: $country\n";
+ next;
+ }
+
+ my $countryID = $CountryID++;
+
+ $Country{$countryID} = [ $country ];
+ $CountryAlias{lc($country)} = [ $countryID, 0 ];
+ $Code2CountryID{$codeset}{$code} = [ $countryID, 0 ];
+ $CountryID2Code{$codeset}{$countryID} = $code;
+ }
+}
+
+########################################
+sub do_country_un {
+
+ print "\nINFO [un]: expect Channel Islands\n";
+
+ ###
+ ### The UN data contains most of the alpha-3 and numeric code sets.
+ ###
+
+ system("wget -N -q $country_un_url");
+ my @in = `cat $country_un_file`;
+ chomp(@in);
+ my $in = join("",@in);
+
+ # Clean up some things that could cause problems in parsing:
+
+ strip_tags(\$in,1,"br","p","strong","div");
+ $in =~ s,\ , ,g;
+ $in =~ s,\s+, ,g;
+
+ # Look for a table who's first row has the header:
+ # ISO ALPHA-3 code
+
+ my $found = jump_to_row(\$in,"ISO ALPHA-3 code");
+ if (! $found) {
+ die "ERROR [un]: country code file format changed!\n";
+ }
+
+ while (1) {
+ my @row = get_row("un",\$in);
+ last if (! @row);
+
+ my($num,$country,$alpha3) = @row;
+ $alpha3 = lc($alpha3);
+
+ if ($num) {
+ if ($num !~ /^\d+$/ || length($num) > 3) {
+ print "WARNING [un]: Invalid numeric code: $country => $num\n";
+ next;
+ }
+ }
+
+ if ($alpha3 && $alpha3 !~ /^[a-z][a-z][a-z]$/) {
+ print "WARNING [un]: Invalid alpha-3 code: $country => $alpha3\n";
+ next;
+ }
+
+ if (exists $country_un_orig{$country}) {
+ $country = $country_un_orig{$country};
+ }
+
+ my($err,$countryID,$i,$t) = get_countryID("un",$country);
+ next if ($err);
+
+ if ($t eq "new") {
+ print "INFO [un]: new country: $alpha3/$num\t$country\n";
+ }
+
+ if ($num) {
+ $num = "0$num" while (length($num) < 3);
+ $Code2CountryID{"num"}{$num} = [ $countryID, $i ];
+ $CountryID2Code{"num"}{$countryID} = $num;
+ }
+
+ if ($alpha3) {
+ $Code2CountryID{"alpha3"}{$alpha3} = [ $countryID, $i ];
+ $CountryID2Code{"alpha3"}{$countryID} = $alpha3;
+ }
+ }
+}
+
+########################################
+sub do_country_nga {
+
+ print "\nINFO [nga]: expect Serbia, Ashmore, Baker, Bassas, Clipperton,\n" .
+ " Coral, Europa, Gaza, Glorioso, Howland, Jan Mayen,\n" .
+ " Jarvis, Johnston, Juan, Kingman, Midway, Navassa, Palmyra,\n" .
+ " Paracel, Spratly, Svalbard, Tromelin, Wake, West\n";
+
+ ###
+ ### The NGA data contains the FIPS 10 codes
+ ###
+
+ system("wget -N -q $country_nga_url");
+ my @in = `cat $country_nga_file`;
+ chomp(@in);
+ my $in = join("",@in);
+
+ # Clean up some things that could cause problems in parsing:
+
+ strip_tags(\$in,1,"br","p","strong","div");
+ $in =~ s,\Q[United States}\E,,; # A horrible typo in the HTML
+ $in =~ s,\ , ,g;
+ $in =~ s,Other:, ,g;
+ $in =~ s,\(see note[^\)]*\), ,g;
+ $in =~ s,\[[^\]]*\], ,g;
+ $in =~ s,\s+, ,g;
+
+ # Look for a table who's first row has the header:
+ # SHORT FORM NAME
+ # and then a table with the header:
+ # Short Form Name
+
+ foreach my $table ("SHORT FORM NAME","Short Form Name") {
+ my $found = jump_to_row(\$in,$table);
+ if (! $found) {
+ die "ERROR [nga]: country code file format changed!\n";
+ }
+
+ while (1) {
+ my @row = get_row("nga",\$in);
+ last if (! @row);
+
+ my($short,$long,$code) = @row;
+ $code = uc($code);
+ next if ($code eq "N/A");
+ next if (exists $country_nga_ignore{$short});
+
+ if ($code !~ /^[A-Z][A-Z]$/) {
+ print "WARNING [nga]: Invalid code: $short => $code\n";
+ }
+
+ if ($short eq "None") {
+ print "ERROR [nga]: no short definition: $code $long\n";
+ next;
+ }
+ $long = "" if ($long eq "None");
+
+ if (exists $country_nga_orig{$short}) {
+ $short = $country_nga_orig{$short};
+ }
+ if (exists $country_nga_orig{$long}) {
+ $long = $country_nga_orig{$long};
+ }
+
+ my($countryID,$i);
+ my($err,$c,$ii,$t) = get_countryID("nga",$short,1);
+ next if ($err);
+
+ if ($t ne "new") {
+ ($countryID,$i) = ($c,$ii);
+ } else {
+ ($err,$c,$ii,$t) = get_countryID("nga",$long,1);
+ ($countryID,$i) = ($c,-1);
+ if ($t eq "new") {
+ print "INFO [nga]: new country: $code\t$short\n";
+ }
+ }
+
+ if ($countryID == -1) {
+ # New country
+ $countryID = $CountryID++;
+ $i = 0;
+ $Country{$countryID} = [ $short ];
+ $CountryAlias{lc($short)} = [ $countryID, $i ];
+
+ } elsif ($i == -1) {
+ # $short is a new alias
+ push @{ $Country{$countryID} },$short;
+ $i = $#{ $Country{$countryID} };
+ $CountryAlias{lc($short)} = [ $countryID, $i ];
+ }
+
+ if ($long &&
+ ! exists $CountryAlias{lc($long)}) {
+ # $long is a new alias
+ push @{ $Country{$countryID} },$long;
+ $i = $#{ $Country{$countryID} };
+ $CountryAlias{lc($long)} = [ $countryID, $i ];
+ }
+
+ $Code2CountryID{"fips"}{$code} = [ $countryID, $i ];
+ $CountryID2Code{"fips"}{$countryID} = $code;
+ }
+ }
+}
+
+########################################
+sub do_country_iana {
+
+ print "\nINFO [iana]: expect Acension, European, Soviet, Portuguese\n";
+
+ ###
+ ### The IANA data contains the domain names
+ ###
+
+ system("wget -N -q $country_iana_url");
+ my @in = `cat $country_iana_file`;
+ chomp(@in);
+ my $in = join("",@in);
+
+ # Clean up some things that could cause problems in parsing:
+
+ strip_tags(\$in,1,"a");
+ $in =~ s,\ , ,g;
+ $in =~ s,\(being phased out\), ,g;
+ $in =~ s,\s+, ,g;
+
+ # Look for a table who's first row has the header:
+ # Sponsoring Organisation
+
+ my $found = jump_to_row(\$in,"Sponsoring Organisation");
+ if (! $found) {
+ die "ERROR [iana]: country code file format changed!\n";
+ }
+
+ while (1) {
+ my @row = get_row("iana",\$in);
+ last if (! @row);
+
+ my($dom,$type,$country) = @row;
+ next unless ($type eq "country-code");
+ $dom =~ s/^\.//;
+ $country =~ s,<br.*,,;
+
+ if (exists $country_un_orig{$country}) {
+ $country = $country_un_orig{$country};
+ }
+
+ my($err,$countryID,$i,$t) = get_countryID("iana",$country);
+ next if ($err);
+
+ if ($t eq "new") {
+ print "INFO [iana]: new country: $dom\t$country\n";
+ }
+
+ $Code2CountryID{"dom"}{$dom} = [ $countryID, $i ];
+ $CountryID2Code{"dom"}{$countryID} = $dom;
+ }
+}
+
+########################################
+sub do_country_cia {
+
+ print "\nINFO [cia]: expect Antarctica, Bouvet, British, Christmas, Cocos,\n" .
+ " France (Metro), French, Heard, Kosovo, Montenegro,\n" .
+ " Saint Barth, Saint Martin, Serbia, Taiwan, US\n";
+
+ ###
+ ### The CIA data is used to check:
+ ### alpha-2, alpha-3, numeric, fips 10
+ ###
+
+ system("wget -N -q $country_cia_url");
+ my @in = `cat $country_cia_file`;
+ chomp(@in);
+ my $in = join("",@in);
+ $in =~ s/\015/ /sg;
+
+ # Clean up some things that could cause problems in parsing:
+
+ strip_tags(\$in,1,"br","p","strong","div","a","b","img");
+ $in =~ s,\ , ,g;
+ $in =~ s,\s+, ,g;
+
+ # Move to a table with "Entity" as one of the entries. This
+ # table is followed by the entires.
+
+ my $found = jump_to_entry(\$in,"Entity");
+ if (! $found) {
+ die "ERROR [cia]: country code file format changed!\n";
+ }
+
+ # Each entry is quite complicated. Each is a single table (with a
+ # table nested in it) of the form:
+ #
+ # <table>
+ # <tr>
+ # <td>COUNTRY</td>
+ # <td>FIPS</td>
+ # <td>
+ # <table>
+ # <tr>
+ # <td>ALPHA-2</td>
+ # <td>ALPHA-3</td>
+ # <td>NUMERIC</td>
+ # </table>
+ # </td>
+ # ...
+ # </tr>
+ # ...
+ # </table>
+ #
+ # After all of the "A" entries, a special table containing the headers
+ # is given again.
+
+ while (1) {
+
+ #
+ # Read the next entry
+ #
+
+ my($country,$fips,$alpha2,$alpha3,$num,$stanag,$dom);
+
+ my $found = jump_to_table(\$in);
+ if (! $found) {
+ print "ERROR [cia]: malformed file\n";
+ last;
+ }
+ $country = get_entry(\$in);
+ if (! $country) {
+ # The first entry is empty if it's at the end of the entries
+ # for a given letter.
+ $found = jump_to_entry(\$in,"Entity");
+ if (! $found) {
+ die "ERROR [cia]: country code file format changed!\n";
+ }
+ next;
+ }
+
+ if (exists $country_cia_orig{$country}) {
+ $country = $country_cia_orig{$country};
+ }
+
+ $fips = uc(get_entry(\$in));
+ $found = jump_to_table(\$in);
+ if (! $found) {
+ print "ERROR [cia]: malformed file\n";
+ last;
+ }
+ $alpha2 = lc(get_entry(\$in));
+ $alpha3 = lc(get_entry(\$in));
+ $num = get_entry(\$in);
+ $stanag = get_entry(\$in);
+ $dom = uc(get_entry(\$in));
+ $dom =~ s/^\.//;
+
+ next if (exists $country_cia_ignore{$country});
+
+ $alpha2 = $country_cia_codes{"alpha2"}{$country}
+ if (exists $country_cia_codes{"alpha2"}{$country});
+ $alpha3 = $country_cia_codes{"alpha3"}{$country}
+ if (exists $country_cia_codes{"alpha3"}{$country});
+ $num = $country_cia_codes{"num"}{$country}
+ if (exists $country_cia_codes{"num"}{$country});
+ $fips = $country_cia_codes{"fips"}{$country}
+ if (exists $country_cia_codes{"fips"}{$country});
+ $dom = $country_cia_codes{"dom"}{$country}
+ if (exists $country_cia_codes{"dom"}{$country});
+
+ #
+ # Get the countryID if the country or ANY of the codes match.
+ #
+
+ my($err,$countryID,$i,$type) = get_countryID("cia",$country,1);
+ next if ($err);
+
+ if ($countryID == -1 && $alpha2 ne "-") {
+ if (exists $Code2CountryID{"alpha2"}{$alpha2}) {
+ ($countryID,$i) = @{ $Code2CountryID{"alpha2"}{$alpha2} };
+ }
+ }
+
+ if ($countryID == -1 && $alpha3 ne "-") {
+ if (exists $Code2CountryID{"alpha3"}{$alpha3}) {
+ ($countryID,$i) = @{ $Code2CountryID{"alpha3"}{$alpha3} };
+ }
+ }
+
+ if ($countryID == -1 && $num ne "-") {
+ if (exists $Code2CountryID{"num"}{$num}) {
+ ($countryID,$i) = @{ $Code2CountryID{"num"}{$num} };
+ }
+ }
+
+ if ($countryID == -1 && $fips ne "-") {
+ if (exists $Code2CountryID{"fips"}{$fips}) {
+ ($countryID,$i) = @{ $Code2CountryID{"fips"}{$fips} };
+ }
+ }
+
+ if ($countryID == -1 && $dom ne "-") {
+ if (exists $Code2CountryID{"dom"}{$dom}) {
+ ($countryID,$i) = @{ $Code2CountryID{"dom"}{$dom} };
+ }
+ }
+
+ if ($countryID == -1) {
+ $countryID = $CountryID++;
+ $i = 0;
+ $Country{$countryID} = [ $country ];
+ $CountryAlias{lc($country)} = [ $countryID, $i ];
+ }
+
+ #
+ # Now check that any previously defined values match the
+ # CIA data.
+ #
+
+ if ($alpha2 ne "-") {
+ my $err = check_code("cia","alpha2",$alpha2,$country,$countryID);
+ next if ($err);
+ }
+
+ if ($alpha3 ne "-") {
+ my $err = check_code("cia","alpha3",$alpha3,$country,$countryID);
+ next if ($err);
+ }
+
+ if ($num ne "-") {
+ my $err = check_code("cia","num",$num,$country,$countryID);
+ next if ($err);
+ }
+
+ if ($fips ne "-") {
+ my $err = check_code("cia","fips",$fips,$country,$countryID);
+ next if ($err);
+ }
+
+ if ($dom ne "-") {
+ my $err = check_code("cia","dom",$dom,$country,$countryID);
+ next if ($err);
+ }
+
+ last if ($country eq $country_cia_last);
+ }
+}
+
+########################################
+sub check_code {
+ my($type,$codeset,$code,$country,$countryID) = @_;
+
+ # Check to make sure that the code is defined.
+
+ if (exists $Code2CountryID{$codeset}{$code}) {
+ return _check_code_exists($type,$codeset,$code,$country,$countryID);
+ } else {
+ return _check_code_new($type,$codeset,$code,$country,$countryID);
+ }
+}
+
+sub _check_code_exists {
+ my($type,$codeset,$code,$country,$countryID) = @_;
+
+ # Check the countryID for the code. It must be the same as the one
+ # passed in.
+
+ my $old_countryID = $Code2CountryID{$codeset}{$code}[0];
+ if ($countryID != $old_countryID) {
+ print "ERROR [$type]: countryID mismatch in code: [$codeset, $country, $code, $countryID != $old_countryID ]\n";
+ return 1;
+ }
+
+ # If the country is defined, it must be the same CountryID. If it
+ # is not, create a new alias.
+
+ if (exists $CountryAlias{lc($country)}) {
+
+ my $alt_countryID = $CountryAlias{lc($country)}[0];
+
+ if ($countryID != $alt_countryID) {
+ print "ERROR [$type]: countryID mismatch in country: [$codeset, $country, $code, $countryID != $alt_countryID ]\n";
+ return 1;
+ }
+
+ } else {
+ push @{ $Country{$countryID} },$country;
+ my $i = $#{ $Country{$countryID} };
+ $CountryAlias{lc($country)} = [ $countryID, $i ];
+ }
+}
+
+# This is a new code.
+sub _check_code_new {
+ my($type,$codeset,$code,$country,$countryID) = @_;
+
+ print "INFO [$type]: New code: $codeset [$code] => $country\n";
+
+ # If this country name isn't defined, create it.
+
+ my $i;
+ if (exists $CountryAlias{lc($country)}) {
+ $i = $CountryAlias{lc($country)}[1];
+ } else {
+ push @{ $Country{$countryID} },$country;
+ $i = $#{ $Country{$countryID} };
+ $CountryAlias{lc($country)} = [ $countryID, $i ];
+ }
+
+ # This country name is the canonical name for the code.
+
+ $CountryID2Code{$codeset}{$countryID} = $code;
+ $Code2CountryID{$codeset}{$code} = [ $countryID, $i ];
+
+ return 0;
+}
+
+########################################
+sub get_countryID {
+ my($type,$country,$no_create) = @_;
+
+ my($countryID,$i,$t);
+ if (exists $CountryAlias{lc($country)}) {
+ # The country is the same name as one previously defined
+ ($countryID,$i) = @{ $CountryAlias{lc($country)} };
+ $t = "same";
+
+ } elsif (exists $country_alias{$country}) {
+ # It's a new alias for an existing country
+ my $c = $country_alias{$country};
+ if (! exists $CountryAlias{lc($c)}) {
+ print "WARNING [$type]: alias referenced before it is defined: $country => $c\n";
+ return (1);
+ }
+ $countryID = $CountryAlias{lc($c)}[0];
+ push @{ $Country{$countryID} },$country;
+ $i = $#{ $Country{$countryID} };
+ $CountryAlias{lc($country)} = [ $countryID, $i ];
+ $t = "alias";
+
+ } else {
+ # It's a new country.
+ if ($no_create) {
+ return(0,-1,-1,"new");
+ }
+ $countryID = $CountryID++;
+ $i = 0;
+ $Country{$countryID} = [ $country ];
+ $CountryAlias{lc($country)} = [ $countryID, $i ];
+ $t = "new";
+ }
+
+ return(0,$countryID,$i,$t);
+}
+
+############################################################################
+# DO_LANGUAGE
+############################################################################
+
+sub do_language {
+ print "Language codes...\n";
+
+ do_language_iso();
+ print_table("language") if ($DEBUG == 2);
+
+ # Go through all aliases to pick up any that haven't already been
+ # added (since some aliases are for human convenience rather than
+ # dealing with variations between codesets).
+ do_aliases("language");
+ print_table("language") if ($DEBUG);
+
+ write_module("language");
+}
+
+########################################
+sub do_language_iso {
+ ###
+ ### The first set we'll do is the ISO codes.
+ ###
+
+ system("wget -N -q $language_iso_url");
+ open(my $in,'<:encoding(utf8)',$language_iso_file);
+ my @in = <$in>;
+ close($in);
+ chomp(@in);
+
+ # File is a set of lines of fields delimited by "|". Fields are:
+ #
+ # alpha3
+ # term
+ # alpha2
+ # English names (semicolon separated list)
+ # French name
+
+ foreach my $line (@in) {
+ my($alpha3,$term,$alpha2,$english,$french) = split(/\|/,$line);
+ # The first line has some binary characters at the start.
+ if (length($alpha3)>3) {
+ $alpha3 = substr($alpha3,length($alpha3)-3);
+ }
+
+ if (exists $language_iso_orig{$english}) {
+ $english = $language_iso_orig{$english};
+ }
+ my $languageID = $LanguageID++;
+ my @language = split(/\s*;\s*/,$english);
+
+ $Language{$languageID} = [ @language ];
+ for (my $i=0; $i<=$#language; $i++) {
+ my $language = $language[$i];
+ $LanguageAlias{lc($language)} = [ $languageID, $i ];
+ }
+
+ if ($alpha3) {
+ $Code2LanguageID{"alpha3"}{$alpha3} = [ $languageID, 0 ];
+ $LanguageID2Code{"alpha3"}{$languageID} = $alpha3;
+ }
+
+ if ($term) {
+ $Code2LanguageID{"term"}{$term} = [ $languageID, 0 ];
+ $LanguageID2Code{"term"}{$languageID} = $term;
+ }
+
+ if ($alpha2) {
+ $Code2LanguageID{"alpha2"}{$alpha2} = [ $languageID, 0 ];
+ $LanguageID2Code{"alpha2"}{$languageID} = $alpha2;
+ }
+ }
+}
+
+############################################################################
+# DO_CURRENCY
+############################################################################
+
+sub do_currency {
+ print "Currency codes...\n";
+
+ do_currency_iso();
+ print_table("currency") if ($DEBUG == 2);
+
+ # Go through all aliases to pick up any that haven't already been
+ # added (since some aliases are for human convenience rather than
+ # dealing with variations between codesets).
+ do_aliases("currency");
+ print_table("currency") if ($DEBUG);
+
+ write_module("currency");
+}
+
+########################################
+sub do_currency_iso {
+ ###
+ ### The first set we'll do is the ISO 4217 codes.
+ ###
+
+ system("wget -N -q $currency_iso_url");
+ my @in = `cat $currency_iso_file`;
+ chomp(@in);
+ my $in = join("",@in);
+
+ # Clean up some things that could cause problems in parsing:
+
+ strip_tags(\$in,1,"p","a","strong","div");
+ $in =~ s,\ , ,g;
+ $in =~ s,†,,g;
+ $in =~ s,‡,,g;
+ $in =~ s,\s+, ,g;
+
+ # Look for a table who's first row has the header:
+ # Entity
+
+ my $found = jump_to_row(\$in,"Entity");
+ if (! $found) {
+ die "ERROR [iso]: currency code file format changed!\n";
+ }
+
+ LINE: while (1) {
+ my @row = get_row("iso",\$in);
+ last if (! @row);
+
+ my($ent,$currencies,$alphas,$nums) = @row;
+ $nums = "" if ($nums eq "Nil");
+ next if (! $alphas && ! $nums);
+
+ my(@currency,@num,@alpha,$done);
+ @currency = split(/<br\s*\/><br\s*\/>/,$currencies);
+ @num = split(/<br\s*\/><br\s*\/>/,$nums);
+ @alpha = split(/<br\s*\/><br\s*\/>/,$alphas);
+
+ if ( ($nums && $#num != $#currency) ||
+ ($alphas && $#alpha != $#currency) ) {
+ print "WARNING [iso]: Invalid line: $currencies => $alphas, $nums\n";
+ next;
+ }
+
+ for (my $i=0; $i<=$#currency; $i++) {
+ my $currency = $currency[$i];
+ my $num = (@num ? $num[$i] : "");
+ my $alpha = (@alpha ? $alpha[$i] : "");
+ $done = 1 if ($alpha eq $currency_iso_last);
+
+ if (exists $currency_iso_orig{$currency}) {
+ $currency = $currency_iso_orig{$currency};
+ }
+
+ if ($num) {
+ if ($num !~ /^\d+$/ || length($num) > 3) {
+ print "WARNING [iso]: Invalid numeric code: $currency => $num\n";
+ next LINE;
+ }
+ }
+
+ $alpha = uc($alpha);
+ if ($alpha && $alpha !~ /^[A-Z][A-Z][A-Z]$/) {
+ print "WARNING [iso]: Invalid alpha code: $currency => $alpha\n";
+ next LINE;
+ }
+
+ next if (exists $currency_iso_ignore{$alpha});
+
+ # There's a lot of duplication, so make sure that if this code
+ # exists, it is consistant.
+
+ my $new = 1;
+ my @currencyID;
+ if (exists $Code2CurrencyID{"num"}{$num}) {
+ $new = 0;
+ my($currencyID,$i) = @{ $Code2CurrencyID{"num"}{$num} };
+ push(@currencyID,$currencyID);
+ }
+ if (exists $Code2CurrencyID{"alpha"}{$alpha}) {
+ $new = 0;
+ my($currencyID,$i) = @{ $Code2CurrencyID{"alpha"}{$alpha} };
+ push(@currencyID,$currencyID);
+ }
+
+ if ($#currencyID == 1) {
+ if ($currencyID[0] != $currencyID[1]) {
+ print "WARNING [iso]: CurrencyID mismatch: $currency => $alpha,$num\n";
+ next LINE;
+ }
+ }
+
+ my $currencyID;
+ if ($new) {
+ $currencyID = $CurrencyID++;
+ $Currency{$currencyID} = [ $currency ];
+ $CurrencyAlias{lc($currency)} = [ $currencyID, 0 ]
+ } else {
+ $currencyID = $currencyID[0];
+ }
+
+ if ($num) {
+ $num = "0$num" while (length($num) < 3);
+ $Code2CurrencyID{"num"}{$num} = [ $currencyID, 0 ];
+ $CurrencyID2Code{"num"}{$currencyID} = $num;
+ }
+
+ if ($alpha) {
+ $Code2CurrencyID{"alpha"}{$alpha} = [ $currencyID, 0 ];
+ $CurrencyID2Code{"alpha"}{$currencyID} = $alpha;
+ }
+
+ }
+
+ last if ($done);
+ }
+}
+
+############################################################################
+# DO_SCRIPT
+############################################################################
+
+sub do_script {
+ print "Script codes...\n";
+
+ do_script_iso();
+ print_table("script") if ($DEBUG == 2);
+
+ # Go through all aliases to pick up any that haven't already been
+ # added (since some aliases are for human convenience rather than
+ # dealing with variations between codesets).
+ do_aliases("script");
+ print_table("script") if ($DEBUG);
+
+ write_module("script");
+}
+
+########################################
+sub do_script_iso {
+ ###
+ ### The first set we'll do is the ISO 15924 codes. We
+ ### can get a zip file which contains the data.
+ ###
+
+ system("wget -N -q $script_iso_url");
+ my $zip = Archive::Zip->new($script_iso_file);
+
+ my @members = grep(/^iso15924.*\.txt/,$zip->memberNames());
+ if (@members != 1) {
+ die "ERROR [iso]: zip file changed format\n";
+ }
+ my($file) = @members;
+ $zip->extractMember($file,$script_iso_tmp);
+
+ #
+ # The zip file contains a series of lines in the form:
+ # alpha;numeric;english;...
+ # The data is in UTF-8.
+ #
+ # Every line has an unprintable character at the end.
+ #
+
+ open(my $in,'<:encoding(utf8)',$script_iso_tmp);
+ my @in = <$in>;
+ close($in);
+ chomp(@in);
+ chop(@in);
+
+ foreach my $line (@in) {
+ next if (! $line || $line =~ /^\043/);
+ my($alpha,$num,$script) = split(/;/,$line);
+ $alpha = ucfirst(lc($alpha));
+ next if (exists $script_iso_ignore{$alpha});
+
+ if (exists $script_iso_orig{$script}) {
+ $script = $script_iso_orig{$script};
+ }
+ my $scriptID = $ScriptID++;
+
+ $Script{$scriptID} = [ $script ];
+ $ScriptAlias{lc($script)} = [ $scriptID, 0 ];
+
+ $Code2ScriptID{"alpha"}{$alpha} = [ $scriptID, 0 ];
+ $ScriptID2Code{"alpha"}{$scriptID} = $alpha;
+
+ $Code2ScriptID{"num"}{$num} = [ $scriptID, 0 ];
+ $ScriptID2Code{"num"}{$scriptID} = $num;
+ }
+}
+
+############################################################################
+# PRINT_TABLE
+############################################################################
+
+sub _type_hashes {
+ my($caller) = @_;
+
+ my ($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID);
+
+ if ($caller eq "country") {
+ $type_alias = \%country_alias;
+ $TypeAlias = \%CountryAlias;
+ $Type = \%Country;
+ $TypeID2Code = \%CountryID2Code;
+ $Code2TypeID = \%Code2CountryID;
+
+ } elsif ($caller eq "language") {
+ $type_alias = \%language_alias;
+ $TypeAlias = \%LanguageAlias;
+ $Type = \%Language;
+ $TypeID2Code = \%LanguageID2Code;
+ $Code2TypeID = \%Code2LanguageID;
+
+ } elsif ($caller eq "currency") {
+ $type_alias = \%currency_alias;
+ $TypeAlias = \%CurrencyAlias;
+ $Type = \%Currency;
+ $TypeID2Code = \%CurrencyID2Code;
+ $Code2TypeID = \%Code2CurrencyID;
+
+ } elsif ($caller eq "script") {
+ $type_alias = \%script_alias;
+ $TypeAlias = \%ScriptAlias;
+ $Type = \%Script;
+ $TypeID2Code = \%ScriptID2Code;
+ $Code2TypeID = \%Code2ScriptID;
+ }
+
+ return($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID);
+}
+
+sub print_table {
+ my($caller) = @_;
+
+ my ($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID)
+ = _type_hashes($caller);
+
+ foreach my $typeID (sort keys %$Type) {
+ my @type = @{ $$Type{$typeID} };
+ my $i = 0;
+
+ my $type = shift(@type);
+ if (length($type) < 40) {
+ $type .= " "x(40-length($type));
+ } else {
+ $type = substr($type,0,40);
+ }
+
+ print "${typeID}[$i] = $type ";
+ foreach my $codeset (keys %$Code2TypeID) {
+ my $field = "";
+ if (exists $$TypeID2Code{$codeset}{$typeID}) {
+ my $code = $$TypeID2Code{$codeset}{$typeID};
+ my($code_id,$code_i) = @{ $$Code2TypeID{$codeset}{$code} };
+ $field = "$code [$code_id,$code_i]";
+ $field .= " ERR" if ($code_id != $typeID);
+ }
+ $field = $field . " "x(18-length($field));
+ print $field;
+ }
+ print "\n";
+ foreach $type (@type) {
+ $i++;
+ if (length($type) > 40) {
+ $type = substr($type,0,40);
+ }
+ print " [$i] = $type\n";
+ }
+ }
+}
+
+############################################################################
+# DO_ALIASES
+############################################################################
+
+sub do_aliases {
+ my($caller) = @_;
+
+ my ($type_alias,$TypeAlias,$Type,$TypeID2Code,$Code2TypeID)
+ = _type_hashes($caller);
+
+ # Add remaining aliases.
+
+ foreach my $alias (keys %$type_alias) {
+ my $type = $$type_alias{$alias};
+
+ next if (exists $$TypeAlias{lc($type)} &&
+ exists $$TypeAlias{lc($alias)});
+
+ if (! exists $$TypeAlias{lc($type)} &&
+ ! exists $$TypeAlias{lc($alias)}) {
+ print "WARNING: unused type in alias list: $type\n";
+ print "WARNING: unused type in alias list: $alias\n";
+ next;
+ }
+
+ my ($typeID);
+ if (exists $$TypeAlias{lc($type)}) {
+ $typeID = $$TypeAlias{lc($type)}[0];
+ $type = $alias;
+ } else {
+ $typeID = $$TypeAlias{lc($alias)}[0];
+ }
+
+ push @{ $$Type{$typeID} },$type;
+ my $i = $#{ $$Type{$typeID} };
+ $$TypeAlias{lc($type)} = [ $typeID, $i ];
+ }
+}
+
+############################################################################
+# WRITE_MODULE
+############################################################################
+
+sub write_module {
+ my($type) = @_;
+
+ my($module,%hashes,$id);
+
+ if ($type eq "country") {
+ $module = $CountryModule;
+ %hashes = ("id2names" => "Country",
+ "alias2id" => "CountryAlias",
+ "code2id" => "Code2CountryID",
+ "id2code" => "CountryID2Code");
+ $id = $CountryID;
+ } elsif ($type eq "language") {
+ $module = $LanguageModule;
+ %hashes = ("id2names" => "Language",
+ "alias2id" => "LanguageAlias",
+ "code2id" => "Code2LanguageID",
+ "id2code" => "LanguageID2Code");
+ $id = $LanguageID;
+ } elsif ($type eq "currency") {
+ $module = $CurrencyModule;
+ %hashes = ("id2names" => "Currency",
+ "alias2id" => "CurrencyAlias",
+ "code2id" => "Code2CurrencyID",
+ "id2code" => "CurrencyID2Code");
+ $id = $CurrencyID;
+ } elsif ($type eq "script") {
+ $module = $ScriptModule;
+ %hashes = ("id2names" => "Script",
+ "alias2id" => "ScriptAlias",
+ "code2id" => "Code2ScriptID",
+ "id2code" => "ScriptID2Code");
+ $id = $ScriptID;
+ }
+
+ my $file = "$ModDir/$module.pm";
+ if (-f $file) {
+ system("mv $file $file.bak");
+ }
+
+ my $out = new IO::File;
+ $out->open(">$file");
+ my $timestamp = `date`;
+ chomp($timestamp);
+
+ my $podstr = '=pod'; # so the CPAN indexer won't treat this as a POD file
+
+ print $out "package Locale::Codes::$module;
+
+# This file was automatically generated. Any changes to this file will
+# be lost the next time 'get_codes' is run.
+# Generated on: $timestamp
+
+$podstr
+
+=head1 NAME
+
+Locale::Codes::$module - $type codes for the Locale::$module module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::$module module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck\@cpan.org).
+
+=head1 COPYRIGHT
+
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw(\$VERSION);
+\$VERSION='3.12';
+
+\$Locale::Codes::Data{'$type'}{'id'} = '$id';
+
+";
+
+ foreach my $h qw(id2names alias2id code2id id2code) {
+ my $hash = $hashes{$h};
+ print $out "\$Locale::Codes::Data{'$type'}{'$h'} = {\n";
+ _write_hash($out,$hash);
+
+ print $out "};\n\n";
+ }
+
+ print $out "1;\n";
+
+ $out->close();
+}
+
+sub _write_hash {
+ my($out,$hashname) = @_;
+
+ no strict 'refs';
+ my %hash = %$hashname;
+ use strict 'refs';
+ _write_subhash($out,3,\%hash);
+}
+
+sub _write_subhash {
+ my($out,$indent,$hashref) = @_;
+
+ my %hash = %$hashref;
+ my $ind = " "x$indent;
+
+ foreach my $key (sort keys %hash) {
+ my $val = $hash{$key};
+ if (ref($val) eq "HASH") {
+ print $out "${ind}q($key) => {\n";
+ _write_subhash($out,$indent+3,$val);
+ print $out "${ind} },\n";
+ } elsif (ref($val) eq "ARRAY") {
+ print $out "${ind}q($key) => [\n";
+ _write_sublist($out,$indent+3,$val);
+ print $out "${ind} ],\n";
+ } else {
+ print $out "${ind}q($key) => q($val),\n";
+ }
+ }
+}
+
+sub _write_sublist {
+ my($out,$indent,$listref) = @_;
+
+ my @list = @$listref;
+ my $ind = " "x$indent;
+
+ foreach my $val (@list) {
+ if (ref($val) eq "HASH") {
+ print $out "${ind}{\n";
+ _write_subhash($out,$indent+3,$val);
+ print $out "${ind}},\n";
+ } elsif (ref($val) eq "ARRAY") {
+ print $out "${ind}[\n";
+ _write_sublist($out,$indent+3,$val);
+ print $out "${ind}],\n";
+ } else {
+ print $out "${ind}q($val),\n";
+ }
+ }
+}
+
+############################################################################
+# DO_CLEAN
+############################################################################
+
+sub do_clean {
+ print "Cleaning...\n";
+
+ system("rm -f $country_iso_file");
+ system("rm -f $country_un_file");
+ system("rm -f $country_nga_file");
+ system("rm -f $country_cia_file");
+ system("rm -f $country_iana_file");
+ system("rm -f $language_iso_file");
+ system("rm -f $currency_iso_file");
+ system("rm -f $script_iso_file");
+ system("rm -f $script_iso_tmp");
+ system("rm -rf __MACOSX");
+}
+
+############################################################################
+# HTML SCRAPING
+############################################################################
+
+sub get_row {
+ my($type,$inref) = @_;
+
+ return () if ($$inref !~ m,^\s*<tr,);
+
+ if ($$inref !~ s,^(.*?)</tr[^>]*>,,) {
+ die "ERROR [$type]: malformed HTML\n";
+ }
+ my $row = $1;
+
+ if ($row =~ m,<table,) {
+ die "ERROR [$type]: embedded table\n";
+ }
+
+ my @row;
+ while ($row =~ s,(?:.*?)<(td|th)[^>]*>\s*(.*?)\s*</\1[^>]*>,,) {
+ my $val = $2;
+ push(@row,$val);
+ }
+
+ return @row;
+}
+
+sub jump_to_row {
+ my($inref,$header) = @_;
+
+ if ($$inref =~ s,(.*?)\Q$header\E(.*?)</tr[^>]*>(.*?)(?=<tr),,) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub jump_to_entry {
+ my($inref,$value) = @_;
+
+ if ($$inref =~ s,(.*?)(?=<(?:td|th)[^>]*>\s*\Q$value\E\s*),,) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub jump_to_table {
+ my($inref) = @_;
+
+ if ($$inref =~ s,(.*?)(?=<table),,) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub get_entry {
+ my($inref) = @_;
+
+ if ($$inref =~ s,.*?<td[^>]*>\s*(.*?)\s*</td[^>]*>,,) {
+ return $1;
+ }
+ return "";
+}
+
+sub strip_tags {
+ my($inref,$close,@tags) = @_;
+
+ foreach my $tag (@tags) {
+ if ($close) {
+ $$inref =~ s,</?$tag[^>]*>, ,g;
+ } else {
+ $$inref =~ s,<$tag[^>]*>, ,g;
+ }
+ }
+}
+
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+bo
+bol
+Bower's
+bR
+br
+brb
+Centre
+CODESET
+CODESETs
+CPAN
+CRE
+EUR
+Factbook
+fi
+fips
+Geospatial
+gf
+heb
+Hennecke
+IANA
+num
+Phnx
+Plurinational
+terminologic
+tv
+uk
+XTS
+Zxxx
+Zyyy
+Zzzz
--- /dev/null
+package Locale::Codes;
+# Copyright (C) 2001 Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+require 5.002;
+
+use Carp;
+
+#=======================================================================
+# Public Global Variables
+#=======================================================================
+
+# This module is not called directly... %Data is filled in by the
+# calling modules.
+
+use vars qw($VERSION %Data);
+
+# $Data{ TYPE }{ code2id }{ CODESET } { CODE } = [ ID, I ]
+# { id2code }{ CODESET } { ID } = CODE
+# { id2names }{ ID } = [ NAME, NAME, ... ]
+# { alias2id }{ NAME } = [ ID, I ]
+# { id } = FIRST_UNUSED_ID
+# { codealias }{ CODESET } { ALIAS } = CODE
+
+$VERSION='3.12';
+
+#=======================================================================
+#
+# _code2name ( TYPE,CODE,CODESET )
+#
+#=======================================================================
+
+sub _code2name {
+ my($type,$code,$codeset) = @_;
+
+ $code = $Data{$type}{'codealias'}{$codeset}{$code}
+ if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+ if (exists $Data{$type}{'code2id'}{$codeset} &&
+ exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+ my ($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+ my $name = $Data{$type}{'id2names'}{$id}[$i];
+ return $name;
+ } else {
+ #---------------------------------------------------------------
+ # no such code!
+ #---------------------------------------------------------------
+ return undef;
+ }
+}
+
+#=======================================================================
+#
+# _name2code ( TYPE,NAME,CODESET )
+#
+#=======================================================================
+
+sub _name2code {
+ my($type,$name,$codeset) = @_;
+ $name = "" if (! $name);
+ $name = lc($name);
+
+ if (exists $Data{$type}{'alias2id'}{$name}) {
+ my $id = $Data{$type}{'alias2id'}{$name}[0];
+ if (exists $Data{$type}{'id2code'}{$codeset}{$id}) {
+ return $Data{$type}{'id2code'}{$codeset}{$id};
+ }
+ }
+
+ #---------------------------------------------------------------
+ # no such name!
+ #---------------------------------------------------------------
+ return undef;
+ }
+
+#=======================================================================
+#
+# _code2code ( TYPE,CODE,CODESET )
+#
+#=======================================================================
+
+sub _code2code {
+ my($type,$code,$inset,$outset) = @_;
+
+ my $name = _code2name($type,$code,$inset);
+ my $outcode = _name2code($type,$name,$outset);
+ return $outcode;
+}
+
+#=======================================================================
+#
+# _all_codes ( TYPE,CODESET )
+#
+#=======================================================================
+
+sub _all_codes {
+ my($type,$codeset) = @_;
+
+ if (! exists $Data{$type}{'code2id'}{$codeset}) {
+ return ();
+ }
+ my @codes = keys %{ $Data{$type}{'code2id'}{$codeset} };
+ return (sort @codes);
+}
+
+#=======================================================================
+#
+# _all_names ( TYPE,CODESET )
+#
+#=======================================================================
+
+sub _all_names {
+ my($type,$codeset) = @_;
+
+ my @codes = _all_codes($type,$codeset);
+ return () if (! @codes);
+ my @names;
+
+ foreach my $code (@codes) {
+ my($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+ my $name = $Data{$type}{'id2names'}{$id}[$i];
+ push(@names,$name);
+ }
+ return (sort @names);
+}
+
+#=======================================================================
+#
+# _rename ( TYPE,CODE,NAME,CODESET )
+#
+# Change the official name for a code. The original is retained
+# as an alias, but the new name will be returned if you lookup the
+# name from code.
+#
+#=======================================================================
+
+sub _rename {
+ my($type,$code,$new_name,$codeset,$nowarn) = @_;
+
+ if (! $codeset) {
+ carp "rename_$type(): unknown codeset\n" unless ($nowarn);
+ return 0;
+ }
+
+ $code = $Data{$type}{'codealias'}{$codeset}{$code}
+ if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+ # Check that $code exists in the codeset.
+
+ my $id;
+ if (exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+ $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+ } else {
+ carp "rename_$type(): unknown code: $code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Cases:
+ # 1. Renaming to a name which exists with a different ID
+ # Error
+ #
+ # 2. Renaming to a name which exists with the same ID
+ # Just change code2id (I value)
+ #
+ # 3. Renaming to a new name
+ # Create a new alias
+ # Change code2id (I value)
+
+ if (exists $Data{$type}{'alias2id'}{lc($new_name)}) {
+ # Existing name (case 1 and 2)
+
+ my ($new_id,$i) = @{ $Data{$type}{'alias2id'}{lc($new_name)} };
+ if ($new_id != $id) {
+ # Case 1
+ carp "rename_$type(): rename to an existing $type not allowed\n"
+ unless ($nowarn);
+ return 0;
+ }
+
+ # Case 2
+
+ $Data{$type}{'code2id'}{$codeset}{$code}[1] = $i;
+
+ } else {
+
+ # Case 3
+
+ push @{ $Data{$type}{'id2names'}{$id} },$new_name;
+ my $i = $#{ $Data{$type}{'id2names'}{$id} };
+ $Data{$type}{'alias2id'}{lc($new_name)} = [ $id,$i ];
+ $Data{$type}{'code2id'}{$codeset}{$code}[1] = $i;
+ }
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _add_code ( TYPE,CODE,NAME,CODESET )
+#
+# Add a new code to the codeset. Both CODE and NAME must be
+# unused in the code set.
+#
+#=======================================================================
+
+sub _add_code {
+ my($type,$code,$name,$codeset,$nowarn) = @_;
+
+ if (! $codeset) {
+ carp "add_$type(): unknown codeset\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Check that $code is unused.
+
+ if (exists $Data{$type}{'code2id'}{$codeset}{$code} ||
+ exists $Data{$type}{'codealias'}{$codeset}{$code}) {
+ carp "add_$type(): code already in use: $code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Check to see that $name is unused in this code set. If it is
+ # used (but not in this code set), we'll use that ID. Otherwise,
+ # we'll need to get the next available ID.
+
+ my ($id,$i);
+ if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+ ($id,$i) = @{ $Data{$type}{'alias2id'}{lc($name)} };
+ if (exists $Data{$type}{'id2code'}{$codeset}{$id}) {
+ carp "add_$type(): name already in use: $name\n" unless ($nowarn);
+ return 0;
+ }
+
+ } else {
+ $id = $Data{$type}{'id'}++;
+ $i = 0;
+ $Data{$type}{'alias2id'}{lc($name)} = [ $id,$i ];
+ $Data{$type}{'id2names'}{$id} = [ $name ];
+ }
+
+ # Add the new code
+
+ $Data{$type}{'code2id'}{$codeset}{$code} = [ $id,$i ];
+ $Data{$type}{'id2code'}{$codeset}{$id} = $code;
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _delete_code ( TYPE,CODE,CODESET )
+#
+# Delete a code from the codeset.
+#
+#=======================================================================
+
+sub _delete_code {
+ my($type,$code,$codeset,$nowarn) = @_;
+
+ if (! $codeset) {
+ carp "delete_$type(): unknown codeset\n" unless ($nowarn);
+ return 0;
+ }
+
+ $code = $Data{$type}{'codealias'}{$codeset}{$code}
+ if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+ # Check that $code is valid.
+
+ if (! exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+ carp "delete_$type(): code does not exist: $code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Delete the code
+
+ my $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+ delete $Data{$type}{'code2id'}{$codeset}{$code};
+ delete $Data{$type}{'id2code'}{$codeset}{$id};
+
+ # Delete any aliases that are linked to this code
+
+ foreach my $alias (keys %{ $Data{$type}{'codealias'}{$codeset} }) {
+ next if ($Data{$type}{'codealias'}{$codeset}{$alias} ne $code);
+ delete $Data{$type}{'codealias'}{$codeset}{$alias};
+ }
+
+ # If this ID is not used in any other codeset, delete it completely.
+
+ foreach my $c (keys %{ $Data{$type}{'id2code'} }) {
+ return 1 if (exists $Data{$type}{'id2code'}{$c}{$id});
+ }
+
+ my @names = @{ $Data{$type}{'id2names'}{$id} };
+ delete $Data{$type}{'id2names'}{$id};
+
+ foreach my $name (@names) {
+ delete $Data{$type}{'alias2id'}{lc($name)};
+ }
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _add_alias ( TYPE,NAME,NEW_NAME )
+#
+# Add a new alias. NAME must exist, and NEW_NAME must be unused.
+#
+#=======================================================================
+
+sub _add_alias {
+ my($type,$name,$new_name,$nowarn) = @_;
+
+ # Check that $name is used and $new_name is new.
+
+ my($id);
+ if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+ $id = $Data{$type}{'alias2id'}{lc($name)}[0];
+ } else {
+ carp "add_${type}_alias(): name does not exist: $name\n" unless ($nowarn);
+ return 0;
+ }
+
+ if (exists $Data{$type}{'alias2id'}{lc($new_name)}) {
+ carp "add_${type}_alias(): alias already in use: $new_name\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Add the new alias
+
+ push @{ $Data{$type}{'id2names'}{$id} },$new_name;
+ my $i = $#{ $Data{$type}{'id2names'}{$id} };
+ $Data{$type}{'alias2id'}{lc($new_name)} = [ $id,$i ];
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _delete_alias ( TYPE,NAME )
+#
+# This deletes a name from the list of names used by an element.
+# NAME must be used, but must NOT be the only name in the list.
+#
+# Any id2name that references this name will be changed to
+# refer to the first name in the list.
+#
+#=======================================================================
+
+sub _delete_alias {
+ my($type,$name,$nowarn) = @_;
+
+ # Check that $name is used.
+
+ my($id,$i);
+ if (exists $Data{$type}{'alias2id'}{lc($name)}) {
+ ($id,$i) = @{ $Data{$type}{'alias2id'}{lc($name)} };
+ } else {
+ carp "delete_${type}_alias(): name does not exist: $name\n" unless ($nowarn);
+ return 0;
+ }
+
+ my $n = $#{ $Data{$type}{'id2names'}{$id} };
+ if ($n == 1) {
+ carp "delete_${type}_alias(): only one name defined (use _delete_${type} instead)\n"
+ unless ($nowarn);
+ return 0;
+ }
+
+ # Delete the alias.
+
+ splice (@{ $Data{$type}{'id2names'}{$id} },$i,1);
+ delete $Data{$type}{'alias2id'}{lc($name)};
+
+ # Every element that refers to this ID:
+ # Ignore if I < $i
+ # Set to 0 if I = $i
+ # Decrement if I > $i
+
+ foreach my $codeset (keys %{ $Data{'code2id'} }) {
+ foreach my $code (keys %{ $Data{'code2id'}{$codeset} }) {
+ my($jd,$j) = @{ $Data{'code2id'}{$codeset}{$code} };
+ next if ($jd ne $id ||
+ $j < $i);
+ if ($i == $j) {
+ $Data{'code2id'}{$codeset}{$code}[1] = 0;
+ } else {
+ $Data{'code2id'}{$codeset}{$code}[1]--;
+ }
+ }
+ }
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _rename_code ( TYPE,CODE,NEW_CODE,CODESET )
+#
+# Change the official code. The original is retained as an alias, but
+# the new name will be returned if you lookup the code from name.
+#
+#=======================================================================
+
+sub _rename_code {
+ my($type,$code,$new_code,$codeset,$nowarn) = @_;
+
+ if (! $codeset) {
+ carp "rename_$type(): unknown codeset\n" unless ($nowarn);
+ return 0;
+ }
+
+ $code = $Data{$type}{'codealias'}{$codeset}{$code}
+ if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+ # Check that $code exists in the codeset.
+
+ if (! exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+ carp "rename_$type(): unknown code: $code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Cases:
+ # 1. Renaming code to an existing alias of this code:
+ # Make the alias real and the code an alias
+ #
+ # 2. Renaming code to some other existing alias:
+ # Error
+ #
+ # 3. Renaming code to some other code:
+ # Error (
+ #
+ # 4. Renaming code to a new code:
+ # Make code into an alias
+ # Replace code with new_code.
+
+ if (exists $Data{$type}{'codealias'}{$codeset}{$new_code}) {
+ # Cases 1 and 2
+ if ($Data{$type}{'codealias'}{$codeset}{$new_code} eq $code) {
+ # Case 1
+
+ delete $Data{$type}{'codealias'}{$codeset}{$new_code};
+
+ } else {
+ # Case 2
+ carp "rename_$type(): new code already in use: $new_code\n" unless ($nowarn);
+ return 0;
+ }
+
+ } elsif (exists $Data{$type}{'code2id'}{$codeset}{$new_code}) {
+ # Case 3
+ carp "rename_$type(): new code already in use: $new_code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Cases 1 and 4
+
+ $Data{$type}{'codealias'}{$codeset}{$code} = $new_code;
+
+ my $id = $Data{$type}{'code2id'}{$codeset}{$code}[0];
+ $Data{$type}{'code2id'}{$codeset}{$new_code} = $Data{$type}{'code2id'}{$codeset}{$code};
+ delete $Data{$type}{'code2id'}{$codeset}{$code};
+
+ $Data{$type}{'id2code'}{$codeset}{$id} = $new_code;
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _add_code_alias ( TYPE,CODE,NEW_CODE,CODESET )
+#
+# Adds an alias for the code.
+#
+#=======================================================================
+
+sub _add_code_alias {
+ my($type,$code,$new_code,$codeset,$nowarn) = @_;
+
+ if (! $codeset) {
+ carp "add_${type}_code_alias(): unknown codeset\n" unless ($nowarn);
+ return 0;
+ }
+
+ $code = $Data{$type}{'codealias'}{$codeset}{$code}
+ if (exists $Data{$type}{'codealias'}{$codeset}{$code});
+
+ # Check that $code exists in the codeset and that $new_code
+ # does not exist.
+
+ if (! exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+ carp "add_${type}_code_alias(): unknown code: $code\n" unless ($nowarn);
+ return 0;
+ }
+
+ if (exists $Data{$type}{'code2id'}{$codeset}{$new_code} ||
+ exists $Data{$type}{'codealias'}{$codeset}{$new_code}) {
+ carp "add_${type}_code_alias(): code already in use: $new_code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Add the alias
+
+ $Data{$type}{'codealias'}{$codeset}{$new_code} = $code;
+
+ return 1;
+}
+
+#=======================================================================
+#
+# _delete_code_alias ( TYPE,CODE,CODESET )
+#
+# Deletes an alias for the code.
+#
+#=======================================================================
+
+sub _delete_code_alias {
+ my($type,$code,$codeset,$nowarn) = @_;
+
+ if (! $codeset) {
+ carp "delete_${type}_code_alias(): unknown codeset\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Check that $code exists in the codeset as an alias.
+
+ if (! exists $Data{$type}{'codealias'}{$codeset}{$code}) {
+ carp "delete_${type}_code_alias(): no alias defined: $code\n" unless ($nowarn);
+ return 0;
+ }
+
+ # Delete the alias
+
+ delete $Data{$type}{'codealias'}{$codeset}{$code};
+
+ return 1;
+}
+
+#=======================================================================
+#
+# alias_code ( ALIAS => CODE [ , CODESET ] )
+#
+# Add an alias for an existing code. If the CODESET isn't specified,
+# then we use the default (currently the alpha-2 codeset).
+#
+# Locale::Country::alias_code('uk' => 'gb');
+#
+#=======================================================================
+
+# sub alias_code {
+# my $nowarn = 0;
+# $nowarn = 1, pop if ($_[$#_] eq "nowarn");
+# my $alias = shift;
+# my $code = shift;
+# my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
+
+# return 0 if ($codeset !~ /^\d+$/);
+
+# if ($codeset == LOCALE_CODE_ALPHA_2) {
+# $codeset = "alpha2";
+# $alias = lc($alias);
+# } elsif ($codeset == LOCALE_CODE_ALPHA_3) {
+# $codeset = "alpha3";
+# $alias = lc($alias);
+# } elsif ($codeset == LOCALE_CODE_FIPS) {
+# $codeset = "fips";
+# $alias = uc($alias);
+# } elsif ($codeset == LOCALE_CODE_NUMERIC) {
+# $codeset = "num";
+# return undef if ($alias =~ /\D/);
+# $alias = sprintf("%.3d", $alias);
+# } else {
+# carp "rename_country(): unknown codeset\n" unless ($nowarn);
+# return 0;
+# }
+
+# # Check that $code exists in the codeset.
+
+# my ($id,$i);
+# if (exists $Data{$type}{'code2id'}{$codeset}{$code}) {
+# ($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
+# } else {
+# carp "alias_code: attempt to alias \"$alias\" to unknown country code \"$code\"\n"
+# unless ($nowarn);
+# return 0;
+# }
+
+# # Cases:
+# # The alias already exists.
+# # Error
+# #
+# # It's new
+# # Create a new entry in Code2CountryID
+# # Replace the entiry in CountryID2Code
+# # Regenerate %Codes
+
+# if (exists $Data{$type}{'code2id'}{$codeset}{$alias}) {
+# carp "alias_code: attempt to alias \"$alias\" which is already in use\n"
+# unless ($nowarn);
+# return 0;
+# }
+
+# $Data{$type}{'code2id'}{$codeset}{$alias} = [ $id, $i ];
+# $Data{$type}{'id2names'}ID2Code{$codeset}{$id} = $alias;
+
+# my @codes = keys %{ $Data{$type}{'code2id'}{$codeset} };
+# $Locale::CountryCodes::Codes{$codeset} = [ sort @codes ];
+
+# return $alias;
+# }
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+=pod
+
+=head1 NAME
+
+Locale::Codes - a distribution of modules to handle locale codes
+
+=head1 DESCRIPTION
+
+B<Locale::Codes> is a distribution containing a set of modules. The
+modules each deal with different types of codes which identify parts
+of the locale including languages, countries, currency, etc.
+
+Currently, the following modules are included:
+
+=over 4
+
+=item B<Locale::Country>
+
+This includes support for country codes (such as those listed in ISO-3166)
+to specify the country.
+
+=item B<Locale::Language>
+
+This includes support for language codes (such as those listed in ISO-639)
+to specify the language.
+
+=item B<Locale::Currency>
+
+This includes support for currency codes (such as those listed in ISO-4217)
+to specify the currency.
+
+=item B<Locale::Script>
+
+This includes support for script codes (such as those listed in ISO-15924)
+to specify the script.
+
+=back
+
+Each module can support an arbitrary number of code sets, and it it
+not required that the relationship between these code sets be
+one-to-one. For example, the Locale::Country module supports code
+sets from ISO-3166 and the FIPS 10 standard, and they do not break the
+world down into exactly the same sets of countries. This does not
+cause any problem (though converting codes from ISO-3166 to FIPS or
+back will not work except for countries that are one-to-one).
+
+All data in all of these modules comes directly from the original
+standards (or as close to direct as possible), so it should be
+up-to-date at the time of release.
+
+I plan on releasing a new version a couple of times a year to
+incorporate any changes made in the standards. However, I don't always
+know about changes that occur, so if any of the standards change, and
+you want a new release sooner, just email me and I'll get one out.
+
+=head1 NEW CODE SETS
+
+I'm always open to suggestions for new code sets.
+
+In order for me to add a code set, I want the following criteria
+to be met:
+
+=over 4
+
+=item B<General-use code set>
+
+If a code set is not general use, I'm not likely to spend the time
+to add and support it.
+
+=item B<An official source of data>
+
+I require an official (or at least, a NEARLY official) source where I
+can get the data on a regular basis.
+
+Ideally, I'd only get data from an official source, but sometimes that
+is not possible. For example the ISO standards are not typically
+available for free, so I may have to get some of that data from
+alternate sources that I'm confident are getting their data from the
+official source.
+
+As an example, I get some country data from the CIA World
+Factbook. Given the nature of the source, I'm sure they're updating
+data from the official sources and I consider it "nearly" official.
+
+There are many 3rd party sites which maintain lists (many of which are
+actually in a more convenient form than the official sites).
+Unfortunately, I will reject most of them since I have no feel for how
+"official" they are.
+
+=item B<A free source of the data>
+
+Obviously, the data must be free-of-charge. I'm not interested in
+paying for the data (and I'm not interested in the overhead of having
+someone else pay for the data for me).
+
+=item B<A reliable source of data>
+
+The source of data must come from a source that I can reasonably expect
+to exist for the foreseeable future since I will be extremely reluctant
+to drop support for a data set once it's included.
+
+I am also reluctant to accept data sent to me by an individual.
+Although I appreciate the offer, it is simply not practical to consider
+an individual contribution as a reliable source of data. The source
+should be an official agency of some sort.
+
+=back
+
+These requirements are open to discussion. If you have a code set
+you'd like to see added, but which may not meet all of the above
+requirements, feel free to email me and we'll discuss it. Depending
+on circumstances, I may be willing to waive some of these criteria.
+
+=head1 COMMON ALIASES
+
+As of version 2.00, the modules supported common variants of names.
+
+For example, Locale::Country supports variant names for countries, and
+a few of the most common ones are included in the data. The country
+code for "United States" is "us", so:
+
+ country2code('United States');
+ => "us"
+
+Now the following will also return 'us':
+
+ country2code('United States of America');
+ country2code('USA');
+
+Any number of common aliases may be included in the data, in addition
+to the names that come directly from the standards. If you have a
+common alias for a country, language, or any other of the types of
+codes, let me know and I'll add it, with some restrictions.
+
+For example, the country name "North Korea" never appeared in any of
+the official sources (instead, it was "Korea, North" or "Korea,
+Democratic People's Republic of". I would honor a request to add an
+alias "North Korea" since that's a very common way to specify the
+country (please don't request this... I've already added it).
+
+On the other hand, a request to add Zaire as an alias for "Congo, The
+Democratic Republic of" may not be honored. The country's official
+name is not Zaire, so adding it as an alias violates the standard.
+Zaire was kept as an alias in versions prior to 3.00, but it has been
+removed. Other aliases (if any) which no longer appear in any standard
+have also been removed.
+
+=head1 ROUTINES
+
+As of 3.10, the interface for all of the modules listed above are
+identical (as a matter of fact, they are all just wrappers around a
+central module which does all the real work).
+
+In order to maintain the documentation for the modules consistently,
+the functions are all documented here, rather than in the documentation
+for the separate modules.
+
+The name of the function depends on the module. For example, every module
+contains a function "code2XXX" where XXX refers to the type of data
+(country, language, currency, or script). So, the Locale::Country module
+contains the function code2country, the Locale::Language module contains
+the function code2language, etc.
+
+In all of the functions below, CODE refers to a code for one element in
+the code set. For example, in the two-letter country codes from ISO 3166-1,
+the code 'fi' is used to refer to the country Finland. CODE is always
+case insensitive (though when a code is returned, it will always be in
+the case as used in the standard), so 'fi', 'FI', and 'Fi' would all
+be equivalent.
+
+CODESET refers to a constant specified in the documentation for each
+module to label the various code sets. For example, in the
+Locale::Language module, CODESET could be LOCALE_CODE_ALPHA_2 or
+LOCALE_CODE_ALPHA_3 (among others). Most functions have a default one,
+so they do not need to be specified. So the following calls are valid:
+
+ code2country("fi");
+ code2country("fi",LOCALE_CODE_ALPHA_2);
+ code2country("fin",LOCALE_CODE_ALPHA_3);
+
+Since LOCALE_CODE_ALPHA_2 is the default code set, the first two are
+identical.
+
+=over 4
+
+=item B<code2country ( CODE [,CODESET] )>
+
+=item B<code2language( CODE [,CODESET] )>
+
+=item B<code2currency( CODE [,CODESET] )>
+
+=item B<code2script ( CODE [,CODESET] )>
+
+These functions take a code and returns a string which contains
+the name of the element identified. If the code is not a valid
+code in the CODESET specified then C<undef> will be returned.
+
+The name of the element is the name as specified in the standard,
+and as a result, different variations of an element name may
+be returned for different values of CODESET.
+
+For example, the B<alpha-2> country code set defines the two-letter
+code "bo" to be "Bolivia, Plurinational State of", whereas the
+B<alpha-3> code set defines the code 'bol' to be the country "Bolivia
+(Plurinational State of)". So:
+
+ code2country('bo',LOCALE_CODE_ALPHA_2);
+ => 'Bolivia, Plurinational State of'
+
+ code2country('bol',LOCALE_CODE_ALPHA_3);
+ => 'Bolivia (Plurinational State of)'
+
+=item B<country2code ( NAME [,CODESET] )>
+
+=item B<language2code( NAME [,CODESET] )>
+
+=item B<currency2code( NAME [,CODESET] )>
+
+=item B<script2code ( NAME [,CODESET] )>
+
+These functions takes the name of an element (or any of it's aliases)
+and returns the code that corresponds to it, if it exists. If NAME
+could not be identified as the name of one of the elements, then
+C<undef> will be returned.
+
+The name is not case sensitive. Also, any known variation of a name
+may be passed in.
+
+For example, even though the country name returned using
+LOCALE_CODE_ALPHA_2 and LOCALE_CODE_ALPHA_3 country codes for Bolivia is different,
+either country name may be passed in since for each code set, in addition to
+the alias 'Bolivia'. So:
+
+ country2code('Bolivia, Plurinational State of',
+ LOCALE_CODE_ALPHA_2);
+ => bo
+
+ country2code('Bolivia (Plurinational State of)',
+ LOCALE_CODE_ALPHA_2);
+ => bo
+
+ country2code('Bolivia',LOCALE_CODE_ALPHA_2);
+ => bo
+
+=item B<country_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<language_code2code( CODE ,CODESET ,CODESET2 )>
+
+=item B<currency_code2code( CODE ,CODESET ,CODESET2 )>
+
+=item B<script_code2code ( CODE ,CODESET ,CODESET2 )>
+
+These functions takes a a code from one code set, and returns the
+corresponding code from another code set. CODE must exists in the code
+set specified by CODESET and must have a corresponding code in the
+code set specified by CODESET2 or C<undef> will be returned.
+
+Both CODESETs must be explicitly entered.
+
+ country_code2code('fin', LOCALE_CODE_ALPHA_3,
+ LOCALE_CODE_ALPHA_2);
+ => 'fi'
+
+=item B<all_country_codes ( [CODESET] )>
+
+=item B<all_language_codes( [CODESET] )>
+
+=item B<all_currency_codes( [CODESET] )>
+
+=item B<all_script_codes ( [CODESET] )>
+
+These returns a list of all code in the code set. The codes will be
+sorted.
+
+=item B<all_country_names ( [CODESET] )>
+
+=item B<all_language_names( [CODESET] )>
+
+=item B<all_currency_names( [CODESET] )>
+
+=item B<all_script_names ( [CODESET] )>
+
+These return a list of all elements names for which there is a
+corresponding code in the specified code set.
+
+The names returned are exactly as they are specified in the standard,
+and are sorted.
+
+Since not all elements are listed in all code sets, the list of
+elements may differ depending on the code set specified.
+
+=back
+
+=head1 SEMI-PRIVATE ROUTINES
+
+Additional semi-private routines which may be used to modify the
+internal data are also available. Given their status, they aren't
+exported, and so need to be called by prefixing the function name with
+the package name.
+
+=over 4
+
+=item B<Locale::Country::rename_country ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Language::rename_language( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Currency::rename_currency( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Script::rename_script ( CODE ,NEW_NAME [,CODESET] )>
+
+These routines are used to change the official name of an element. At
+that point, the name returned by the code2XXX routine would be
+NEW_NAME instead of the name specified in the standard.
+
+The original name will remain as an alias.
+
+For example, the official country name for code 'gb' is 'United
+Kingdom'. If you want to change that, you might call:
+
+ Locale::Country::rename_country('gb', 'Great Britain');
+
+This means that calling code2country('gb') will now return 'Great
+Britain' instead of 'United Kingdom'.
+
+If any error occurs, a warning is issued and 0 is returned. An error
+occurs if CODE doesn't exist in the specified code set, or if
+NEW_NAME is already in use but for a different element.
+
+If the routine succeeds, 1 is returned.
+
+=item B<Locale::Country::add_country ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Language::add_language( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Currency::add_currency( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Script::add_script ( CODE ,NAME [,CODESET] )>
+
+These routines are used to add a new code and name to the data.
+
+Both CODE and NAME must be unused in the data set or an error
+occurs (though NAME may be used in a different data set).
+
+For example, to create the fictitious country named "Duchy of
+Grand Fenwick" with codes "gf" and "fen", use the following:
+
+ Locale::Country::add_country("fe","Duchy of Grand Fenwick",
+ LOCALE_CODE_ALPHA_2);
+
+ Locale::Country::add_country("fen","Duchy of Grand Fenwick",
+ LOCALE_CODE_ALPHA_3);
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::delete_country ( CODE [,CODESET] )>
+
+=item B<Locale::Language::delete_language( CODE [,CODESET] )>
+
+=item B<Locale::Currency::delete_currency( CODE [,CODESET] )>
+
+=item B<Locale::Script::delete_script ( CODE [,CODESET] )>
+
+These routines are used to delete a code from the data.
+
+CODE must refer to an existing code in the code set.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::add_country_alias ( NAME ,NEW_NAME )>
+
+=item B<Locale::Language::add_language_alias( NAME ,NEW_NAME )>
+
+=item B<Locale::Currency::add_currency_alias( NAME ,NEW_NAME )>
+
+=item B<Locale::Script::add_script_alias ( NAME ,NEW_NAME )>
+
+These routines are used to add a new alias to the data. They do
+not alter the return value of the code2XXX function.
+
+NAME must be an existing element name, and NEW_NAME must
+be unused or an error occurs.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::delete_country_alias ( NAME )>
+
+=item B<Locale::Language::delete_language_alias( NAME )>
+
+=item B<Locale::Currency::delete_currency_alias( NAME )>
+
+=item B<Locale::Script::delete_script_alias ( NAME )>
+
+These routines are used to delete an alias from the data. Once
+removed, the element may not be referred to by NAME.
+
+NAME must be one of a list of at least two names that may be used to
+specify an element. If the element may only be referred to by a single
+name, you'll need to use the add_XXX_alias function to add a new alias
+first, or the remove_XXX function to remove the element entirely.
+
+If the alias is used as the name in any code set, one of the other
+names will be used instead. Predicting exactly which one will
+be used requires you to know the order in which the standards
+were read, which is not reliable, so you may want to use the
+rename_XXX function to force one of the alternate names to be
+used.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<Locale::Country::rename_country_code ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Language::rename_language_code( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Currency::rename_currency_code( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Script::rename_script_code ( CODE ,NEW_CODE [,CODESET] )>
+
+These routines are used to change the official code for an element. At
+that point, the code returned by the XXX2code routine would be
+NEW_CODE instead of the code specified in the standard.
+
+NEW_CODE may either be a code that is not in use, or it may be an
+alias for CODE (in which case, CODE becomes and alias and NEW_CODE
+becomes the "real" code).
+
+The original code is kept as an alias, so that the code2XXX routines
+will work with either the code from the standard or the new code.
+
+However, the all_XXX_codes routine will only return the codes which
+are considered "real" (which means that the list of codes will now
+contain NEW_CODE, but will not contain CODE).
+
+=item B<Locale::Country::add_country_code_alias ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Language::add_language_code_alias( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Currency::add_currency_code_alias( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Script::add_script_code_alias ( CODE ,NEW_CODE [,CODESET] )>
+
+These routines add an alias for the code. At that point, NEW_CODE and CODE
+will both work in the code2XXX routines. However, the XXX2code routines will
+still return the original code.
+
+=item B<Locale::Country::delete_country_code_alias ( CODE [,CODESET] )>
+
+=item B<Locale::Language::delete_language_code_alias( CODE [,CODESET] )>
+
+=item B<Locale::Currency::delete_currency_code_alias( CODE [,CODESET] )>
+
+=item B<Locale::Script::delete_script_code_alias ( CODE [,CODESET] )>
+
+These routines delete an alias for the code.
+
+These will only work if CODE is actually an alias. If it is the "real"
+code, it will not be deleted. You will need to use the rename_XXX_code
+function to switch the real code with one of the aliases, and then
+delete the alias.
+
+=back
+
+=head1 KNOWN BUGS AND LIMITATIONS
+
+=over 4
+
+=item B<*>
+
+Because each code set uses a slightly different list of elements, and
+they are not necessarily one-to-one, there may be some confusion
+about the relationship between codes from different code sets.
+
+For example, ISO 3166 assigns one code to the country "United States
+Minor Outlying Islands", but the FIPS 10 codes give different codes
+to different islands (Baker Island, Howland Island, etc.).
+
+This may cause some confusion... I've done the best that I could do
+to minimize it.
+
+=item B<*>
+
+Currently all names must be all ASCII. I plan on relaxing that
+limitation in the future.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Constants>
+
+Constants for Locale codes.
+
+=item B<Locale::Country>
+
+Codes for identification of countries.
+
+=item B<Locale::Language>
+
+Codes for identification of languages.
+
+=item B<Locale::Script>
+
+Codes for identification of scripts.
+
+=item B<Locale::Currency>
+
+Codes for identification of currencies and funds.
+
+=back
+
+=head1 AUTHOR
+
+Locale::Country and Locale::Language were originally written by Neil
+Bowers at the Canon Research Centre Europe (CRE). They maintained the
+distribution from 1997 to 2001.
+
+Locale::Currency was originally written by Michael Hennecke.
+
+From 2001 to 2004, maintenance was continued by Neil Bowers. He
+modified Locale::Currency for inclusion in the distribution. He also
+added Locale::Constants and Locale::Script.
+
+From 2004-2009, the module was unmaintained.
+
+In 2010, maintenance was taken over by Sullivan Beck (sbeck@cpan.org)
+with Neil Bower's permission.
+
+=head1 COPYRIGHT
+
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001 Michael Hennecke (Locale::Currency)
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
--- /dev/null
+=pod
+
+=head1 NAME
+
+Locale::Codes::Changes - details important changes after 2.07
+
+=head1 3.10
+
+=over 4
+
+=item B<Changed XXX_code2code behavior slightly>
+
+In previous versions, passing in the same code set for both code set
+arguments would automatically return undef. For example:
+
+ country_code2code('bo',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
+ => undef
+
+This doesn't seem like reasonable behavior, so it has been changed
+to allow the same code set:
+
+ country_code2code('bo',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
+ => 'bo'
+
+Note that if an invalid code is passed in, undef will still be
+returned:
+
+ country_code2code('bol',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
+ => undef
+
+=item B<Added many semi-private routines>
+
+Previous versions had only two semi-private routines: rename_country
+and alias_code which had the ability to modify the internal data in
+a couple very limited ways. It was requested (in an anonymous posting
+by someone named Steve and also by Steve Hay) that better support
+for modifying internal data, so a full set of routines were added.
+
+The full set of routines includes:
+
+ rename_country
+ rename_language
+ rename_currency
+ rename_script
+
+ add_country
+ add_language
+ add_currency
+ add_script
+
+ delete_country
+ delete_language
+ delete_currency
+ delete_script
+
+ add_country_alias
+ add_language_alias
+ add_currency_alias
+ add_script_alias
+
+ delete_country_alias
+ delete_language_alias
+ delete_currency_alias
+ delete_script_alias
+
+ rename_country_code
+ rename_language_code
+ rename_currency_code
+ rename_script_code
+
+ add_country_code_alias
+ add_language_code_alias
+ add_currency_code_alias
+ add_script_code_alias
+
+ delete_country_code_alias
+ delete_language_code_alias
+ delete_currency_code_alias
+ delete_script_code_alias
+
+=back
+
+=head1 3.00
+
+=over 4
+
+=item B<New maintainer>
+
+From 1997 to 2004, Locale::Codes was maintained by Neil
+Bowers. Unfortunately, no updates were made from June 2004 to January
+2010. During that time, a number of changes have been made to the
+standards since then, so the data included was out-of-date.
+
+I contacted Neil to get his permission to assume maintenance of
+the module, and he kindly agreed.
+
+=item B<All codes are generated from standards>
+
+All of the values returned by the various functions are now values
+directly from the standards. This means that the values returned in
+the 2.xx series are not necessarily the same as the values returned
+here.
+
+As an example, the ISO 3166 standard which lists country codes refers
+to the country associated with the code "bo" as "Bolivia,
+Plurinational State of", so that is what is returned. In the 2.xx
+series, "Bolivia" was returned. Also, the country names vary from one
+standard to another. So the code "bol" which is maintained by the
+United Nations returns the name of the country as "Bolivia
+(Plurinational State of)". Some common aliases have been added, so you
+can still request a code associated with a county name "Bolivia".
+
+Since the data comes from the standards, some "incorrect" values are
+no longer supported. For example, 2.07 treated "Zaire" as an alias for
+"Congo", but the country changed it's name, and "Zaire" is not in the
+standard, so it has been dropped in 3.00.
+
+=item B<Added several code sets from standards>
+
+I've added the following code sets:
+
+ FIPS 10 country codes
+ Alpha-3 and Term language codes
+ Numeric currency codes
+
+=item B<Locale::Script changed>
+
+In 2.xx, Locale::Script assigned scripts to country codes, which is NOT
+how it is done currently in the standards. It appears that an older version
+of ISO 15924 did this, but I haven't found an old version to confirm
+that, and in any case, that is not the case in the current standards.
+
+As a result, the Locale::Script module is completely incompatible with
+the 2.xx version with respect to the types of codes it supports. None of
+the old codes will work.
+
+=item B<Added missing functions>
+
+I've added in some functions which were "missing" previously (since there was
+only one set of codes supported, the code2code functions didn't apply):
+
+ language_code2code
+ currency_code2code
+
+so the interfaces for each type of codes are consistent.
+
+=item B<Dropped support for _alias_code>
+
+In Locale::Country, _alias_code was an allowed, but deprecated function
+which was documented to be supported in the 2.xx series. I've removed it.
+
+=back
+
+=head1 SEE ALSO
+
+Locale::Codes
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
--- /dev/null
+package Locale::Codes::Country;
+
+# This file was automatically generated. Any changes to this file will
+# be lost the next time 'get_codes' is run.
+# Generated on: Mon Apr 5 15:40:50 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Country - country codes for the Locale::Country module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Country module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'country'}{'id'} = '0278';
+
+$Locale::Codes::Data{'country'}{'id2names'} = {
+ q(0001) => [
+ q(Afghanistan),
+ q(Islamic State of Afghanistan),
+ ],
+ q(0002) => [
+ q(Aland Islands),
+ ],
+ q(0003) => [
+ q(Albania),
+ q(Republic of Albania),
+ ],
+ q(0004) => [
+ q(Algeria),
+ q(People's Democratic Republic of Algeria),
+ ],
+ q(0005) => [
+ q(American Samoa),
+ q(Territory of American Samoa),
+ ],
+ q(0006) => [
+ q(Andorra),
+ q(Principality of Andorra),
+ ],
+ q(0007) => [
+ q(Angola),
+ q(Republic of Angola),
+ ],
+ q(0008) => [
+ q(Anguilla),
+ ],
+ q(0009) => [
+ q(Antarctica),
+ ],
+ q(0010) => [
+ q(Antigua and Barbuda),
+ ],
+ q(0011) => [
+ q(Argentina),
+ q(Argentine Republic),
+ ],
+ q(0012) => [
+ q(Armenia),
+ q(Republic of Armenia),
+ ],
+ q(0013) => [
+ q(Aruba),
+ ],
+ q(0014) => [
+ q(Australia),
+ q(Commonwealth of Australia),
+ ],
+ q(0015) => [
+ q(Austria),
+ q(Republic of Austria),
+ ],
+ q(0016) => [
+ q(Azerbaijan),
+ q(Republic of Azerbaijan),
+ ],
+ q(0017) => [
+ q(Bahamas),
+ q(Bahamas, The),
+ q(Commonwealth of the Bahamas),
+ q(The Bahamas),
+ ],
+ q(0018) => [
+ q(Bahrain),
+ q(State of Bahrain),
+ ],
+ q(0019) => [
+ q(Bangladesh),
+ q(People's Republic of Bangladesh),
+ ],
+ q(0020) => [
+ q(Barbados),
+ ],
+ q(0021) => [
+ q(Belarus),
+ q(Republic of Belarus),
+ ],
+ q(0022) => [
+ q(Belgium),
+ q(Kingdom of Belgium),
+ ],
+ q(0023) => [
+ q(Belize),
+ ],
+ q(0024) => [
+ q(Benin),
+ q(Republic of Benin),
+ ],
+ q(0025) => [
+ q(Bermuda),
+ ],
+ q(0026) => [
+ q(Bhutan),
+ q(Kingdom of Bhutan),
+ ],
+ q(0027) => [
+ q(Bolivia, Plurinational State of),
+ q(Bolivia (Plurinational State of)),
+ q(Bolivia),
+ q(Republic of Bolivia),
+ ],
+ q(0028) => [
+ q(Bosnia and Herzegovina),
+ ],
+ q(0029) => [
+ q(Botswana),
+ q(Republic of Botswana),
+ ],
+ q(0030) => [
+ q(Bouvet Island),
+ ],
+ q(0031) => [
+ q(Brazil),
+ q(Federative Republic of Brazil),
+ ],
+ q(0032) => [
+ q(British Indian Ocean Territory),
+ ],
+ q(0033) => [
+ q(Brunei Darussalam),
+ q(Brunei),
+ q(Negara Brunei Darussalam),
+ ],
+ q(0034) => [
+ q(Bulgaria),
+ ],
+ q(0035) => [
+ q(Burkina Faso),
+ ],
+ q(0036) => [
+ q(Burundi),
+ q(Republic of Burundi),
+ ],
+ q(0037) => [
+ q(Cambodia),
+ q(Kingdom of Cambodia),
+ ],
+ q(0038) => [
+ q(Cameroon),
+ q(Republic of Cameroon),
+ ],
+ q(0039) => [
+ q(Canada),
+ ],
+ q(0040) => [
+ q(Cape Verde),
+ q(Republic of Cape Verde),
+ ],
+ q(0041) => [
+ q(Cayman Islands),
+ ],
+ q(0042) => [
+ q(Central African Republic),
+ ],
+ q(0043) => [
+ q(Chad),
+ q(Republic of Chad),
+ ],
+ q(0044) => [
+ q(Chile),
+ q(Republic of Chile),
+ ],
+ q(0045) => [
+ q(China),
+ q(People's Republic of China),
+ ],
+ q(0046) => [
+ q(Christmas Island),
+ q(Territory of Christmas Island),
+ ],
+ q(0047) => [
+ q(Cocos (Keeling) Islands),
+ q(Territory of Cocos (Keeling) Islands),
+ q(Keeling Islands),
+ q(Cocos Islands),
+ ],
+ q(0048) => [
+ q(Colombia),
+ q(Republic of Colombia),
+ ],
+ q(0049) => [
+ q(Comoros),
+ q(Federal Islamic Republic of the Comoros),
+ ],
+ q(0050) => [
+ q(Congo),
+ q(Congo (Brazzaville)),
+ q(Republic of the Congo),
+ q(Congo, Republic of the),
+ q(The Republic of the Congo),
+ ],
+ q(0051) => [
+ q(Congo, The Democratic Republic of the),
+ q(Democratic Republic of the Congo),
+ q(Congo (Kinshasa)),
+ q(Congo, Democratic Republic of the),
+ q(The Democratic Republic of the Congo),
+ ],
+ q(0052) => [
+ q(Cook Islands),
+ ],
+ q(0053) => [
+ q(Costa Rica),
+ q(Republic of Costa Rica),
+ ],
+ q(0054) => [
+ q(Cote d'Ivoire),
+ q(Republic of Cote D'Ivoire),
+ ],
+ q(0055) => [
+ q(Croatia),
+ q(Republic of Croatia),
+ ],
+ q(0056) => [
+ q(Cuba),
+ q(Republic of Cuba),
+ ],
+ q(0057) => [
+ q(Cyprus),
+ q(Republic of Cyprus),
+ ],
+ q(0058) => [
+ q(Czech Republic),
+ ],
+ q(0059) => [
+ q(Denmark),
+ q(Kingdom of Denmark),
+ ],
+ q(0060) => [
+ q(Djibouti),
+ q(Republic of Djibouti),
+ ],
+ q(0061) => [
+ q(Dominica),
+ q(Commonwealth of Dominica),
+ ],
+ q(0062) => [
+ q(Dominican Republic),
+ ],
+ q(0063) => [
+ q(Ecuador),
+ q(Republic of Ecuador),
+ ],
+ q(0064) => [
+ q(Egypt),
+ q(Arab Republic of Egypt),
+ ],
+ q(0065) => [
+ q(El Salvador),
+ q(Republic of El Salvador),
+ ],
+ q(0066) => [
+ q(Equatorial Guinea),
+ q(Republic of Equatorial Guinea),
+ ],
+ q(0067) => [
+ q(Eritrea),
+ q(State of Eritrea),
+ ],
+ q(0068) => [
+ q(Estonia),
+ q(Republic of Estonia),
+ ],
+ q(0069) => [
+ q(Ethiopia),
+ q(Federal Democratic Republic of Ethiopia),
+ ],
+ q(0070) => [
+ q(Falkland Islands (Malvinas)),
+ q(Falkland Islands (Islas Malvinas)),
+ ],
+ q(0071) => [
+ q(Faroe Islands),
+ q(Faeroe Islands),
+ ],
+ q(0072) => [
+ q(Fiji),
+ q(Republic of the Fiji Islands),
+ ],
+ q(0073) => [
+ q(Finland),
+ q(Republic of Finland),
+ ],
+ q(0074) => [
+ q(France),
+ q(French Republic),
+ ],
+ q(0075) => [
+ q(French Guiana),
+ q(Department of Guiana),
+ ],
+ q(0076) => [
+ q(French Polynesia),
+ q(Territory of French Polynesia),
+ ],
+ q(0077) => [
+ q(French Southern Territories),
+ q(French Southern and Antarctic Lands),
+ q(Territory of the French Southern and Antarctic Lands),
+ ],
+ q(0078) => [
+ q(Gabon),
+ q(Gabonese Republic),
+ ],
+ q(0079) => [
+ q(Gambia),
+ q(Gambia, The),
+ q(Republic of the Gambia),
+ ],
+ q(0080) => [
+ q(Georgia),
+ ],
+ q(0081) => [
+ q(Germany),
+ q(Federal Republic of Germany),
+ ],
+ q(0082) => [
+ q(Ghana),
+ q(Republic of Ghana),
+ ],
+ q(0083) => [
+ q(Gibraltar),
+ ],
+ q(0084) => [
+ q(Greece),
+ q(Hellenic Republic),
+ ],
+ q(0085) => [
+ q(Greenland),
+ ],
+ q(0086) => [
+ q(Grenada),
+ ],
+ q(0087) => [
+ q(Guadeloupe),
+ q(Department of Guadeloupe),
+ ],
+ q(0088) => [
+ q(Guam),
+ q(Territory of Guam),
+ ],
+ q(0089) => [
+ q(Guatemala),
+ q(Republic of Guatemala),
+ ],
+ q(0090) => [
+ q(Guernsey),
+ q(Bailiwick of Guernsey),
+ ],
+ q(0091) => [
+ q(Guinea),
+ q(Republic of Guinea),
+ ],
+ q(0092) => [
+ q(Guinea-Bissau),
+ q(Republic of Guinea-Bissau),
+ ],
+ q(0093) => [
+ q(Guyana),
+ q(Co-operative Republic of Guyana),
+ ],
+ q(0094) => [
+ q(Haiti),
+ q(Republic of Haiti),
+ ],
+ q(0095) => [
+ q(Heard Island and Mcdonald Islands),
+ q(Territory of Heard Island and McDonald Islands),
+ ],
+ q(0096) => [
+ q(Holy See (Vatican City State)),
+ q(Holy See),
+ q(Vatican City),
+ q(State of the Vatican City),
+ q(Holy See (Vatican City)),
+ ],
+ q(0097) => [
+ q(Honduras),
+ q(Republic of Honduras),
+ ],
+ q(0098) => [
+ q(Hong Kong),
+ q(China, Hong Kong Special Administrative Region),
+ q(Hong Kong S.A.R.),
+ q(Hong Kong Special Administrative Region),
+ q(Hong Kong Special Administrative Region of China),
+ ],
+ q(0099) => [
+ q(Hungary),
+ q(Republic of Hungary),
+ ],
+ q(0100) => [
+ q(Iceland),
+ q(Republic of Iceland),
+ ],
+ q(0101) => [
+ q(India),
+ q(Republic of India),
+ ],
+ q(0102) => [
+ q(Indonesia),
+ q(Republic of Indonesia),
+ ],
+ q(0103) => [
+ q(Iran, Islamic Republic of),
+ q(Iran (Islamic Republic of)),
+ q(Iran),
+ q(Islamic Republic of Iran),
+ ],
+ q(0104) => [
+ q(Iraq),
+ q(Republic of Iraq),
+ ],
+ q(0105) => [
+ q(Ireland),
+ ],
+ q(0106) => [
+ q(Isle of Man),
+ ],
+ q(0107) => [
+ q(Israel),
+ q(State of Israel),
+ ],
+ q(0108) => [
+ q(Italy),
+ q(Italian Republic),
+ ],
+ q(0109) => [
+ q(Jamaica),
+ ],
+ q(0110) => [
+ q(Japan),
+ ],
+ q(0111) => [
+ q(Jersey),
+ q(Bailiwick of Jersey),
+ ],
+ q(0112) => [
+ q(Jordan),
+ q(Hashemite Kingdom of Jordan),
+ ],
+ q(0113) => [
+ q(Kazakhstan),
+ q(Republic of Kazakhstan),
+ q(Kazakstan),
+ ],
+ q(0114) => [
+ q(Kenya),
+ q(Republic of Kenya),
+ ],
+ q(0115) => [
+ q(Kiribati),
+ q(Republic of Kiribati),
+ ],
+ q(0116) => [
+ q(Korea, Democratic People's Republic of),
+ q(Democratic People's Republic of Korea),
+ q(Korea, North),
+ q(North Korea),
+ ],
+ q(0117) => [
+ q(Korea, Republic of),
+ q(Republic of Korea),
+ q(Korea, South),
+ q(South Korea),
+ ],
+ q(0118) => [
+ q(Kuwait),
+ q(State of Kuwait),
+ ],
+ q(0119) => [
+ q(Kyrgyzstan),
+ q(Kyrgyz Republic),
+ ],
+ q(0120) => [
+ q(Lao People's Democratic Republic),
+ q(Laos),
+ ],
+ q(0121) => [
+ q(Latvia),
+ q(Republic of Latvia),
+ ],
+ q(0122) => [
+ q(Lebanon),
+ q(Lebanese Republic),
+ ],
+ q(0123) => [
+ q(Lesotho),
+ q(Republic of Lesotho),
+ ],
+ q(0124) => [
+ q(Liberia),
+ q(Republic of Liberia),
+ ],
+ q(0125) => [
+ q(Libyan Arab Jamahiriya),
+ q(Libya),
+ q(Great Socialist People's Libyan Arab Jamahiriya),
+ ],
+ q(0126) => [
+ q(Liechtenstein),
+ q(Principality of Liechtenstein),
+ ],
+ q(0127) => [
+ q(Lithuania),
+ q(Republic of Lithuania),
+ ],
+ q(0128) => [
+ q(Luxembourg),
+ q(Grand Duchy of Luxembourg),
+ ],
+ q(0129) => [
+ q(Macao),
+ q(China, Macao Special Administrative Region),
+ q(Macau S.A.R),
+ q(Macau Special Administrative Region),
+ q(Macau),
+ q(Macau S.A.R.),
+ q(Macao Special Administrative Region of China),
+ ],
+ q(0130) => [
+ q(Macedonia, The Former Yugoslav Republic of),
+ q(The former Yugoslav Republic of Macedonia),
+ q(Macedonia),
+ q(Republic of Macedonia),
+ q(Macedonia, Former Yugoslav Republic of),
+ ],
+ q(0131) => [
+ q(Madagascar),
+ q(Republic of Madagascar),
+ ],
+ q(0132) => [
+ q(Malawi),
+ q(Republic of Malawi),
+ ],
+ q(0133) => [
+ q(Malaysia),
+ ],
+ q(0134) => [
+ q(Maldives),
+ q(Republic of Maldives),
+ ],
+ q(0135) => [
+ q(Mali),
+ q(Republic of Mali),
+ ],
+ q(0136) => [
+ q(Malta),
+ q(Republic of Malta),
+ ],
+ q(0137) => [
+ q(Marshall Islands),
+ q(Republic of the Marshall Islands),
+ ],
+ q(0138) => [
+ q(Martinique),
+ q(Department of Martinique),
+ ],
+ q(0139) => [
+ q(Mauritania),
+ q(Islamic Republic of Mauritania),
+ ],
+ q(0140) => [
+ q(Mauritius),
+ q(Republic of Mauritius),
+ ],
+ q(0141) => [
+ q(Mayotte),
+ q(Territorial Collectivity of Mayotte),
+ ],
+ q(0142) => [
+ q(Mexico),
+ q(United Mexican States),
+ ],
+ q(0143) => [
+ q(Micronesia, Federated States of),
+ q(Micronesia (Federated States of)),
+ q(Federated States of Micronesia),
+ ],
+ q(0144) => [
+ q(Moldova, Republic of),
+ q(Republic of Moldova),
+ q(Moldova),
+ ],
+ q(0145) => [
+ q(Monaco),
+ q(Principality of Monaco),
+ ],
+ q(0146) => [
+ q(Mongolia),
+ ],
+ q(0147) => [
+ q(Montenegro),
+ ],
+ q(0148) => [
+ q(Montserrat),
+ ],
+ q(0149) => [
+ q(Morocco),
+ q(Kingdom of Morocco),
+ ],
+ q(0150) => [
+ q(Mozambique),
+ q(Republic of Mozambique),
+ ],
+ q(0151) => [
+ q(Myanmar),
+ q(Burma),
+ q(Union of Burma),
+ ],
+ q(0152) => [
+ q(Namibia),
+ q(Republic of Namibia),
+ ],
+ q(0153) => [
+ q(Nauru),
+ q(Republic of Nauru),
+ ],
+ q(0154) => [
+ q(Nepal),
+ q(Kingdom of Nepal),
+ ],
+ q(0155) => [
+ q(Netherlands),
+ q(Kingdom of the Netherlands),
+ ],
+ q(0156) => [
+ q(Netherlands Antilles),
+ ],
+ q(0157) => [
+ q(New Caledonia),
+ q(Territory of New Caledonia and Dependencies),
+ ],
+ q(0158) => [
+ q(New Zealand),
+ ],
+ q(0159) => [
+ q(Nicaragua),
+ q(Republic of Nicaragua),
+ ],
+ q(0160) => [
+ q(Niger),
+ q(Republic of Niger),
+ ],
+ q(0161) => [
+ q(Nigeria),
+ q(Federal Republic of Nigeria),
+ ],
+ q(0162) => [
+ q(Niue),
+ ],
+ q(0163) => [
+ q(Norfolk Island),
+ q(Territory of Norfolk Island),
+ ],
+ q(0164) => [
+ q(Northern Mariana Islands),
+ q(Commonwealth of the Northern Mariana Islands),
+ ],
+ q(0165) => [
+ q(Norway),
+ q(Kingdom of Norway),
+ ],
+ q(0166) => [
+ q(Oman),
+ q(Sultanate of Oman),
+ ],
+ q(0167) => [
+ q(Pakistan),
+ q(Islamic Republic of Pakistan),
+ ],
+ q(0168) => [
+ q(Palau),
+ q(Republic of Palau),
+ ],
+ q(0169) => [
+ q(Palestinian Territory, Occupied),
+ q(Occupied Palestinian Territory),
+ ],
+ q(0170) => [
+ q(Panama),
+ q(Republic of Panama),
+ ],
+ q(0171) => [
+ q(Papua New Guinea),
+ q(Independent State of Papua New Guinea),
+ ],
+ q(0172) => [
+ q(Paraguay),
+ q(Republic of Paraguay),
+ ],
+ q(0173) => [
+ q(Peru),
+ q(Republic of Peru),
+ ],
+ q(0174) => [
+ q(Philippines),
+ q(Republic of the Philippines),
+ ],
+ q(0175) => [
+ q(Pitcairn),
+ q(Pitcairn Islands),
+ q(Pitcairn, Henderson, Ducie and Oeno Islands),
+ q(Pitcairn Island),
+ ],
+ q(0176) => [
+ q(Poland),
+ q(Republic of Poland),
+ ],
+ q(0177) => [
+ q(Portugal),
+ q(Portuguese Republic),
+ ],
+ q(0178) => [
+ q(Puerto Rico),
+ q(Commonwealth of Puerto Rico),
+ ],
+ q(0179) => [
+ q(Qatar),
+ q(State of Qatar),
+ ],
+ q(0180) => [
+ q(Reunion),
+ q(Department of Reunion),
+ ],
+ q(0181) => [
+ q(Romania),
+ ],
+ q(0182) => [
+ q(Russian Federation),
+ q(Russia),
+ ],
+ q(0183) => [
+ q(Rwanda),
+ q(Rwandese Republic),
+ ],
+ q(0184) => [
+ q(Saint Barthelemy),
+ q(Saint-Barthelemy),
+ ],
+ q(0185) => [
+ q(Saint Helena, Ascension and Tristan da Cunha),
+ q(Saint Helena),
+ ],
+ q(0186) => [
+ q(Saint Kitts and Nevis),
+ q(Federation of Saint Kitts and Nevis),
+ ],
+ q(0187) => [
+ q(Saint Lucia),
+ ],
+ q(0188) => [
+ q(Saint Martin),
+ q(Saint-Martin (French part)),
+ ],
+ q(0189) => [
+ q(Saint Pierre and Miquelon),
+ q(Territorial Collectivity of Saint Pierre and Miquelon),
+ ],
+ q(0190) => [
+ q(Saint Vincent and the Grenadines),
+ ],
+ q(0191) => [
+ q(Samoa),
+ q(Independent State of Samoa),
+ ],
+ q(0192) => [
+ q(San Marino),
+ q(Republic of San Marino),
+ ],
+ q(0193) => [
+ q(Sao Tome and Principe),
+ q(Democratic Republic of Sao Tome and Principe),
+ ],
+ q(0194) => [
+ q(Saudi Arabia),
+ q(Kingdom of Saudi Arabia),
+ ],
+ q(0195) => [
+ q(Senegal),
+ q(Republic of Senegal),
+ ],
+ q(0196) => [
+ q(Serbia),
+ ],
+ q(0197) => [
+ q(Seychelles),
+ q(Republic of Seychelles),
+ ],
+ q(0198) => [
+ q(Sierra Leone),
+ q(Republic of Sierra Leone),
+ ],
+ q(0199) => [
+ q(Singapore),
+ q(Republic of Singapore),
+ ],
+ q(0200) => [
+ q(Slovakia),
+ q(Slovak Republic),
+ ],
+ q(0201) => [
+ q(Slovenia),
+ q(Republic of Slovenia),
+ ],
+ q(0202) => [
+ q(Solomon Islands),
+ ],
+ q(0203) => [
+ q(Somalia),
+ ],
+ q(0204) => [
+ q(South Africa),
+ q(Republic of South Africa),
+ ],
+ q(0205) => [
+ q(South Georgia and the South Sandwich Islands),
+ q(South Georgia and the Islands),
+ ],
+ q(0206) => [
+ q(Spain),
+ q(Kingdom of Spain),
+ ],
+ q(0207) => [
+ q(Sri Lanka),
+ q(Democratic Socialist Republic of Sri Lanka),
+ ],
+ q(0208) => [
+ q(Sudan),
+ q(Republic of the Sudan),
+ ],
+ q(0209) => [
+ q(Suriname),
+ q(Republic of Suriname),
+ ],
+ q(0210) => [
+ q(Svalbard and Jan Mayen),
+ q(Svalbard and Jan Mayen Islands),
+ ],
+ q(0211) => [
+ q(Swaziland),
+ q(Kingdom of Swaziland),
+ ],
+ q(0212) => [
+ q(Sweden),
+ q(Kingdom of Sweden),
+ ],
+ q(0213) => [
+ q(Switzerland),
+ q(Swiss Confederation),
+ ],
+ q(0214) => [
+ q(Syrian Arab Republic),
+ q(Syria),
+ q(Golan Heights (Israeli-occupied)),
+ ],
+ q(0215) => [
+ q(Taiwan, Province of China),
+ q(Taiwan),
+ ],
+ q(0216) => [
+ q(Tajikistan),
+ q(Republic of Tajikistan),
+ ],
+ q(0217) => [
+ q(Tanzania, United Republic of),
+ q(United Republic of Tanzania),
+ q(Tanzania),
+ ],
+ q(0218) => [
+ q(Thailand),
+ q(Kingdom of Thailand),
+ ],
+ q(0219) => [
+ q(Timor-Leste),
+ q(East Timor),
+ ],
+ q(0220) => [
+ q(Togo),
+ q(Togolese Republic),
+ ],
+ q(0221) => [
+ q(Tokelau),
+ ],
+ q(0222) => [
+ q(Tonga),
+ q(Kingdom of Tonga),
+ ],
+ q(0223) => [
+ q(Trinidad and Tobago),
+ q(Republic of Trinidad and Tobago),
+ ],
+ q(0224) => [
+ q(Tunisia),
+ q(Republic of Tunisia),
+ ],
+ q(0225) => [
+ q(Turkey),
+ q(Republic of Turkey),
+ ],
+ q(0226) => [
+ q(Turkmenistan),
+ ],
+ q(0227) => [
+ q(Turks and Caicos Islands),
+ ],
+ q(0228) => [
+ q(Tuvalu),
+ ],
+ q(0229) => [
+ q(Uganda),
+ ],
+ q(0230) => [
+ q(Ukraine),
+ ],
+ q(0231) => [
+ q(United Arab Emirates),
+ ],
+ q(0232) => [
+ q(United Kingdom),
+ q(United Kingdom of Great Britain and Northern Ireland),
+ q(Great Britain),
+ q(UK),
+ ],
+ q(0233) => [
+ q(United States),
+ q(United States of America),
+ q(US),
+ q(USA),
+ ],
+ q(0234) => [
+ q(United States Minor Outlying Islands),
+ ],
+ q(0235) => [
+ q(Uruguay),
+ q(Oriental Republic of Uruguay),
+ ],
+ q(0236) => [
+ q(Uzbekistan),
+ q(Republic of Uzbekistan),
+ ],
+ q(0237) => [
+ q(Vanuatu),
+ q(Republic of Vanuatu),
+ ],
+ q(0238) => [
+ q(Venezuela, Bolivarian Republic of),
+ q(Venezuela (Bolivarian Republic of)),
+ q(Venezuela),
+ q(Bolivarian Republic of Venezuela),
+ ],
+ q(0239) => [
+ q(Viet Nam),
+ q(Vietnam),
+ q(Socialist Republic of Vietnam),
+ ],
+ q(0240) => [
+ q(Virgin Islands, British),
+ q(British Virgin Islands),
+ q(Virgin Islands (UK)),
+ ],
+ q(0241) => [
+ q(Virgin Islands, U.S.),
+ q(United States Virgin Islands),
+ q(Virgin Islands),
+ q(Virgin Islands of the United States),
+ q(Virgin Islands (US)),
+ ],
+ q(0242) => [
+ q(Wallis and Futuna),
+ q(Wallis and Futuna Islands),
+ q(Territory of the Wallis and Futuna Islands),
+ ],
+ q(0243) => [
+ q(Western Sahara),
+ ],
+ q(0244) => [
+ q(Yemen),
+ q(Republic of Yemen),
+ ],
+ q(0245) => [
+ q(Zambia),
+ q(Republic of Zambia),
+ ],
+ q(0246) => [
+ q(Zimbabwe),
+ q(Republic of Zimbabwe),
+ ],
+ q(0247) => [
+ q(Channel Islands),
+ ],
+ q(0248) => [
+ q(Serbia and Montenegro),
+ ],
+ q(0249) => [
+ q(Ashmore and Cartier Islands),
+ q(Territory of Ashmore and Cartier Islands),
+ ],
+ q(0250) => [
+ q(Baker Island),
+ ],
+ q(0251) => [
+ q(Bassas da India),
+ ],
+ q(0252) => [
+ q(Clipperton Island),
+ ],
+ q(0253) => [
+ q(Coral Sea Islands),
+ q(Coral Sea Islands Territory),
+ ],
+ q(0254) => [
+ q(Europa Island),
+ ],
+ q(0255) => [
+ q(Gaza Strip),
+ ],
+ q(0256) => [
+ q(Glorioso Islands),
+ ],
+ q(0257) => [
+ q(Howland Island),
+ ],
+ q(0258) => [
+ q(Jan Mayen),
+ ],
+ q(0259) => [
+ q(Jarvis Island),
+ ],
+ q(0260) => [
+ q(Johnston Atoll),
+ ],
+ q(0261) => [
+ q(Juan De Nova Island),
+ ],
+ q(0262) => [
+ q(Kingman Reef),
+ ],
+ q(0263) => [
+ q(Midway Islands),
+ ],
+ q(0264) => [
+ q(Navassa Island),
+ ],
+ q(0265) => [
+ q(Palmyra Atoll),
+ ],
+ q(0266) => [
+ q(Paracel Islands),
+ ],
+ q(0267) => [
+ q(Spratly Islands),
+ ],
+ q(0268) => [
+ q(Svalbard),
+ ],
+ q(0269) => [
+ q(Tromelin Island),
+ ],
+ q(0270) => [
+ q(Wake Atoll),
+ q(Wake Island),
+ ],
+ q(0271) => [
+ q(West Bank),
+ ],
+ q(0272) => [
+ q(Ascension Island),
+ ],
+ q(0273) => [
+ q(European Union),
+ ],
+ q(0274) => [
+ q(Soviet Union ),
+ ],
+ q(0275) => [
+ q(Portuguese Timor ),
+ ],
+ q(0276) => [
+ q(France, Metropolitan),
+ ],
+ q(0277) => [
+ q(Kosovo),
+ ],
+};
+
+$Locale::Codes::Data{'country'}{'alias2id'} = {
+ q(afghanistan) => [
+ q(0001),
+ q(0),
+ ],
+ q(aland islands) => [
+ q(0002),
+ q(0),
+ ],
+ q(albania) => [
+ q(0003),
+ q(0),
+ ],
+ q(algeria) => [
+ q(0004),
+ q(0),
+ ],
+ q(american samoa) => [
+ q(0005),
+ q(0),
+ ],
+ q(andorra) => [
+ q(0006),
+ q(0),
+ ],
+ q(angola) => [
+ q(0007),
+ q(0),
+ ],
+ q(anguilla) => [
+ q(0008),
+ q(0),
+ ],
+ q(antarctica) => [
+ q(0009),
+ q(0),
+ ],
+ q(antigua and barbuda) => [
+ q(0010),
+ q(0),
+ ],
+ q(arab republic of egypt) => [
+ q(0064),
+ q(1),
+ ],
+ q(argentina) => [
+ q(0011),
+ q(0),
+ ],
+ q(argentine republic) => [
+ q(0011),
+ q(1),
+ ],
+ q(armenia) => [
+ q(0012),
+ q(0),
+ ],
+ q(aruba) => [
+ q(0013),
+ q(0),
+ ],
+ q(ascension island) => [
+ q(0272),
+ q(0),
+ ],
+ q(ashmore and cartier islands) => [
+ q(0249),
+ q(0),
+ ],
+ q(australia) => [
+ q(0014),
+ q(0),
+ ],
+ q(austria) => [
+ q(0015),
+ q(0),
+ ],
+ q(azerbaijan) => [
+ q(0016),
+ q(0),
+ ],
+ q(bahamas) => [
+ q(0017),
+ q(0),
+ ],
+ q(bahamas, the) => [
+ q(0017),
+ q(1),
+ ],
+ q(bahrain) => [
+ q(0018),
+ q(0),
+ ],
+ q(bailiwick of guernsey) => [
+ q(0090),
+ q(1),
+ ],
+ q(bailiwick of jersey) => [
+ q(0111),
+ q(1),
+ ],
+ q(baker island) => [
+ q(0250),
+ q(0),
+ ],
+ q(bangladesh) => [
+ q(0019),
+ q(0),
+ ],
+ q(barbados) => [
+ q(0020),
+ q(0),
+ ],
+ q(bassas da india) => [
+ q(0251),
+ q(0),
+ ],
+ q(belarus) => [
+ q(0021),
+ q(0),
+ ],
+ q(belgium) => [
+ q(0022),
+ q(0),
+ ],
+ q(belize) => [
+ q(0023),
+ q(0),
+ ],
+ q(benin) => [
+ q(0024),
+ q(0),
+ ],
+ q(bermuda) => [
+ q(0025),
+ q(0),
+ ],
+ q(bhutan) => [
+ q(0026),
+ q(0),
+ ],
+ q(bolivarian republic of venezuela) => [
+ q(0238),
+ q(3),
+ ],
+ q(bolivia) => [
+ q(0027),
+ q(2),
+ ],
+ q(bolivia (plurinational state of)) => [
+ q(0027),
+ q(1),
+ ],
+ q(bolivia, plurinational state of) => [
+ q(0027),
+ q(0),
+ ],
+ q(bosnia and herzegovina) => [
+ q(0028),
+ q(0),
+ ],
+ q(botswana) => [
+ q(0029),
+ q(0),
+ ],
+ q(bouvet island) => [
+ q(0030),
+ q(0),
+ ],
+ q(brazil) => [
+ q(0031),
+ q(0),
+ ],
+ q(british indian ocean territory) => [
+ q(0032),
+ q(0),
+ ],
+ q(british virgin islands) => [
+ q(0240),
+ q(1),
+ ],
+ q(brunei) => [
+ q(0033),
+ q(1),
+ ],
+ q(brunei darussalam) => [
+ q(0033),
+ q(0),
+ ],
+ q(bulgaria) => [
+ q(0034),
+ q(0),
+ ],
+ q(burkina faso) => [
+ q(0035),
+ q(0),
+ ],
+ q(burma) => [
+ q(0151),
+ q(1),
+ ],
+ q(burundi) => [
+ q(0036),
+ q(0),
+ ],
+ q(cambodia) => [
+ q(0037),
+ q(0),
+ ],
+ q(cameroon) => [
+ q(0038),
+ q(0),
+ ],
+ q(canada) => [
+ q(0039),
+ q(0),
+ ],
+ q(cape verde) => [
+ q(0040),
+ q(0),
+ ],
+ q(cayman islands) => [
+ q(0041),
+ q(0),
+ ],
+ q(central african republic) => [
+ q(0042),
+ q(0),
+ ],
+ q(chad) => [
+ q(0043),
+ q(0),
+ ],
+ q(channel islands) => [
+ q(0247),
+ q(0),
+ ],
+ q(chile) => [
+ q(0044),
+ q(0),
+ ],
+ q(china) => [
+ q(0045),
+ q(0),
+ ],
+ q(china, hong kong special administrative region) => [
+ q(0098),
+ q(1),
+ ],
+ q(china, macao special administrative region) => [
+ q(0129),
+ q(1),
+ ],
+ q(christmas island) => [
+ q(0046),
+ q(0),
+ ],
+ q(clipperton island) => [
+ q(0252),
+ q(0),
+ ],
+ q(co-operative republic of guyana) => [
+ q(0093),
+ q(1),
+ ],
+ q(cocos (keeling) islands) => [
+ q(0047),
+ q(0),
+ ],
+ q(cocos islands) => [
+ q(0047),
+ q(3),
+ ],
+ q(colombia) => [
+ q(0048),
+ q(0),
+ ],
+ q(commonwealth of australia) => [
+ q(0014),
+ q(1),
+ ],
+ q(commonwealth of dominica) => [
+ q(0061),
+ q(1),
+ ],
+ q(commonwealth of puerto rico) => [
+ q(0178),
+ q(1),
+ ],
+ q(commonwealth of the bahamas) => [
+ q(0017),
+ q(2),
+ ],
+ q(commonwealth of the northern mariana islands) => [
+ q(0164),
+ q(1),
+ ],
+ q(comoros) => [
+ q(0049),
+ q(0),
+ ],
+ q(congo) => [
+ q(0050),
+ q(0),
+ ],
+ q(congo (brazzaville)) => [
+ q(0050),
+ q(1),
+ ],
+ q(congo (kinshasa)) => [
+ q(0051),
+ q(2),
+ ],
+ q(congo, democratic republic of the) => [
+ q(0051),
+ q(3),
+ ],
+ q(congo, republic of the) => [
+ q(0050),
+ q(3),
+ ],
+ q(congo, the democratic republic of the) => [
+ q(0051),
+ q(0),
+ ],
+ q(cook islands) => [
+ q(0052),
+ q(0),
+ ],
+ q(coral sea islands) => [
+ q(0253),
+ q(0),
+ ],
+ q(coral sea islands territory) => [
+ q(0253),
+ q(1),
+ ],
+ q(costa rica) => [
+ q(0053),
+ q(0),
+ ],
+ q(cote d'ivoire) => [
+ q(0054),
+ q(0),
+ ],
+ q(croatia) => [
+ q(0055),
+ q(0),
+ ],
+ q(cuba) => [
+ q(0056),
+ q(0),
+ ],
+ q(cyprus) => [
+ q(0057),
+ q(0),
+ ],
+ q(czech republic) => [
+ q(0058),
+ q(0),
+ ],
+ q(democratic people's republic of korea) => [
+ q(0116),
+ q(1),
+ ],
+ q(democratic republic of sao tome and principe) => [
+ q(0193),
+ q(1),
+ ],
+ q(democratic republic of the congo) => [
+ q(0051),
+ q(1),
+ ],
+ q(democratic socialist republic of sri lanka) => [
+ q(0207),
+ q(1),
+ ],
+ q(denmark) => [
+ q(0059),
+ q(0),
+ ],
+ q(department of guadeloupe) => [
+ q(0087),
+ q(1),
+ ],
+ q(department of guiana) => [
+ q(0075),
+ q(1),
+ ],
+ q(department of martinique) => [
+ q(0138),
+ q(1),
+ ],
+ q(department of reunion) => [
+ q(0180),
+ q(1),
+ ],
+ q(djibouti) => [
+ q(0060),
+ q(0),
+ ],
+ q(dominica) => [
+ q(0061),
+ q(0),
+ ],
+ q(dominican republic) => [
+ q(0062),
+ q(0),
+ ],
+ q(east timor) => [
+ q(0219),
+ q(1),
+ ],
+ q(ecuador) => [
+ q(0063),
+ q(0),
+ ],
+ q(egypt) => [
+ q(0064),
+ q(0),
+ ],
+ q(el salvador) => [
+ q(0065),
+ q(0),
+ ],
+ q(equatorial guinea) => [
+ q(0066),
+ q(0),
+ ],
+ q(eritrea) => [
+ q(0067),
+ q(0),
+ ],
+ q(estonia) => [
+ q(0068),
+ q(0),
+ ],
+ q(ethiopia) => [
+ q(0069),
+ q(0),
+ ],
+ q(europa island) => [
+ q(0254),
+ q(0),
+ ],
+ q(european union) => [
+ q(0273),
+ q(0),
+ ],
+ q(faeroe islands) => [
+ q(0071),
+ q(1),
+ ],
+ q(falkland islands (islas malvinas)) => [
+ q(0070),
+ q(1),
+ ],
+ q(falkland islands (malvinas)) => [
+ q(0070),
+ q(0),
+ ],
+ q(faroe islands) => [
+ q(0071),
+ q(0),
+ ],
+ q(federal democratic republic of ethiopia) => [
+ q(0069),
+ q(1),
+ ],
+ q(federal islamic republic of the comoros) => [
+ q(0049),
+ q(1),
+ ],
+ q(federal republic of germany) => [
+ q(0081),
+ q(1),
+ ],
+ q(federal republic of nigeria) => [
+ q(0161),
+ q(1),
+ ],
+ q(federated states of micronesia) => [
+ q(0143),
+ q(2),
+ ],
+ q(federation of saint kitts and nevis) => [
+ q(0186),
+ q(1),
+ ],
+ q(federative republic of brazil) => [
+ q(0031),
+ q(1),
+ ],
+ q(fiji) => [
+ q(0072),
+ q(0),
+ ],
+ q(finland) => [
+ q(0073),
+ q(0),
+ ],
+ q(france) => [
+ q(0074),
+ q(0),
+ ],
+ q(france, metropolitan) => [
+ q(0276),
+ q(0),
+ ],
+ q(french guiana) => [
+ q(0075),
+ q(0),
+ ],
+ q(french polynesia) => [
+ q(0076),
+ q(0),
+ ],
+ q(french republic) => [
+ q(0074),
+ q(1),
+ ],
+ q(french southern and antarctic lands) => [
+ q(0077),
+ q(1),
+ ],
+ q(french southern territories) => [
+ q(0077),
+ q(0),
+ ],
+ q(gabon) => [
+ q(0078),
+ q(0),
+ ],
+ q(gabonese republic) => [
+ q(0078),
+ q(1),
+ ],
+ q(gambia) => [
+ q(0079),
+ q(0),
+ ],
+ q(gambia, the) => [
+ q(0079),
+ q(1),
+ ],
+ q(gaza strip) => [
+ q(0255),
+ q(0),
+ ],
+ q(georgia) => [
+ q(0080),
+ q(0),
+ ],
+ q(germany) => [
+ q(0081),
+ q(0),
+ ],
+ q(ghana) => [
+ q(0082),
+ q(0),
+ ],
+ q(gibraltar) => [
+ q(0083),
+ q(0),
+ ],
+ q(glorioso islands) => [
+ q(0256),
+ q(0),
+ ],
+ q(golan heights (israeli-occupied)) => [
+ q(0214),
+ q(2),
+ ],
+ q(grand duchy of luxembourg) => [
+ q(0128),
+ q(1),
+ ],
+ q(great britain) => [
+ q(0232),
+ q(2),
+ ],
+ q(great socialist people's libyan arab jamahiriya) => [
+ q(0125),
+ q(2),
+ ],
+ q(greece) => [
+ q(0084),
+ q(0),
+ ],
+ q(greenland) => [
+ q(0085),
+ q(0),
+ ],
+ q(grenada) => [
+ q(0086),
+ q(0),
+ ],
+ q(guadeloupe) => [
+ q(0087),
+ q(0),
+ ],
+ q(guam) => [
+ q(0088),
+ q(0),
+ ],
+ q(guatemala) => [
+ q(0089),
+ q(0),
+ ],
+ q(guernsey) => [
+ q(0090),
+ q(0),
+ ],
+ q(guinea) => [
+ q(0091),
+ q(0),
+ ],
+ q(guinea-bissau) => [
+ q(0092),
+ q(0),
+ ],
+ q(guyana) => [
+ q(0093),
+ q(0),
+ ],
+ q(haiti) => [
+ q(0094),
+ q(0),
+ ],
+ q(hashemite kingdom of jordan) => [
+ q(0112),
+ q(1),
+ ],
+ q(heard island and mcdonald islands) => [
+ q(0095),
+ q(0),
+ ],
+ q(hellenic republic) => [
+ q(0084),
+ q(1),
+ ],
+ q(holy see) => [
+ q(0096),
+ q(1),
+ ],
+ q(holy see (vatican city state)) => [
+ q(0096),
+ q(0),
+ ],
+ q(holy see (vatican city)) => [
+ q(0096),
+ q(4),
+ ],
+ q(honduras) => [
+ q(0097),
+ q(0),
+ ],
+ q(hong kong) => [
+ q(0098),
+ q(0),
+ ],
+ q(hong kong s.a.r.) => [
+ q(0098),
+ q(2),
+ ],
+ q(hong kong special administrative region) => [
+ q(0098),
+ q(3),
+ ],
+ q(hong kong special administrative region of china) => [
+ q(0098),
+ q(4),
+ ],
+ q(howland island) => [
+ q(0257),
+ q(0),
+ ],
+ q(hungary) => [
+ q(0099),
+ q(0),
+ ],
+ q(iceland) => [
+ q(0100),
+ q(0),
+ ],
+ q(independent state of papua new guinea) => [
+ q(0171),
+ q(1),
+ ],
+ q(independent state of samoa) => [
+ q(0191),
+ q(1),
+ ],
+ q(india) => [
+ q(0101),
+ q(0),
+ ],
+ q(indonesia) => [
+ q(0102),
+ q(0),
+ ],
+ q(iran) => [
+ q(0103),
+ q(2),
+ ],
+ q(iran (islamic republic of)) => [
+ q(0103),
+ q(1),
+ ],
+ q(iran, islamic republic of) => [
+ q(0103),
+ q(0),
+ ],
+ q(iraq) => [
+ q(0104),
+ q(0),
+ ],
+ q(ireland) => [
+ q(0105),
+ q(0),
+ ],
+ q(islamic republic of iran) => [
+ q(0103),
+ q(3),
+ ],
+ q(islamic republic of mauritania) => [
+ q(0139),
+ q(1),
+ ],
+ q(islamic republic of pakistan) => [
+ q(0167),
+ q(1),
+ ],
+ q(islamic state of afghanistan) => [
+ q(0001),
+ q(1),
+ ],
+ q(isle of man) => [
+ q(0106),
+ q(0),
+ ],
+ q(israel) => [
+ q(0107),
+ q(0),
+ ],
+ q(italian republic) => [
+ q(0108),
+ q(1),
+ ],
+ q(italy) => [
+ q(0108),
+ q(0),
+ ],
+ q(jamaica) => [
+ q(0109),
+ q(0),
+ ],
+ q(jan mayen) => [
+ q(0258),
+ q(0),
+ ],
+ q(japan) => [
+ q(0110),
+ q(0),
+ ],
+ q(jarvis island) => [
+ q(0259),
+ q(0),
+ ],
+ q(jersey) => [
+ q(0111),
+ q(0),
+ ],
+ q(johnston atoll) => [
+ q(0260),
+ q(0),
+ ],
+ q(jordan) => [
+ q(0112),
+ q(0),
+ ],
+ q(juan de nova island) => [
+ q(0261),
+ q(0),
+ ],
+ q(kazakhstan) => [
+ q(0113),
+ q(0),
+ ],
+ q(kazakstan) => [
+ q(0113),
+ q(2),
+ ],
+ q(keeling islands) => [
+ q(0047),
+ q(2),
+ ],
+ q(kenya) => [
+ q(0114),
+ q(0),
+ ],
+ q(kingdom of belgium) => [
+ q(0022),
+ q(1),
+ ],
+ q(kingdom of bhutan) => [
+ q(0026),
+ q(1),
+ ],
+ q(kingdom of cambodia) => [
+ q(0037),
+ q(1),
+ ],
+ q(kingdom of denmark) => [
+ q(0059),
+ q(1),
+ ],
+ q(kingdom of morocco) => [
+ q(0149),
+ q(1),
+ ],
+ q(kingdom of nepal) => [
+ q(0154),
+ q(1),
+ ],
+ q(kingdom of norway) => [
+ q(0165),
+ q(1),
+ ],
+ q(kingdom of saudi arabia) => [
+ q(0194),
+ q(1),
+ ],
+ q(kingdom of spain) => [
+ q(0206),
+ q(1),
+ ],
+ q(kingdom of swaziland) => [
+ q(0211),
+ q(1),
+ ],
+ q(kingdom of sweden) => [
+ q(0212),
+ q(1),
+ ],
+ q(kingdom of thailand) => [
+ q(0218),
+ q(1),
+ ],
+ q(kingdom of the netherlands) => [
+ q(0155),
+ q(1),
+ ],
+ q(kingdom of tonga) => [
+ q(0222),
+ q(1),
+ ],
+ q(kingman reef) => [
+ q(0262),
+ q(0),
+ ],
+ q(kiribati) => [
+ q(0115),
+ q(0),
+ ],
+ q(korea, democratic people's republic of) => [
+ q(0116),
+ q(0),
+ ],
+ q(korea, north) => [
+ q(0116),
+ q(2),
+ ],
+ q(korea, republic of) => [
+ q(0117),
+ q(0),
+ ],
+ q(korea, south) => [
+ q(0117),
+ q(2),
+ ],
+ q(kosovo) => [
+ q(0277),
+ q(0),
+ ],
+ q(kuwait) => [
+ q(0118),
+ q(0),
+ ],
+ q(kyrgyz republic) => [
+ q(0119),
+ q(1),
+ ],
+ q(kyrgyzstan) => [
+ q(0119),
+ q(0),
+ ],
+ q(lao people's democratic republic) => [
+ q(0120),
+ q(0),
+ ],
+ q(laos) => [
+ q(0120),
+ q(1),
+ ],
+ q(latvia) => [
+ q(0121),
+ q(0),
+ ],
+ q(lebanese republic) => [
+ q(0122),
+ q(1),
+ ],
+ q(lebanon) => [
+ q(0122),
+ q(0),
+ ],
+ q(lesotho) => [
+ q(0123),
+ q(0),
+ ],
+ q(liberia) => [
+ q(0124),
+ q(0),
+ ],
+ q(libya) => [
+ q(0125),
+ q(1),
+ ],
+ q(libyan arab jamahiriya) => [
+ q(0125),
+ q(0),
+ ],
+ q(liechtenstein) => [
+ q(0126),
+ q(0),
+ ],
+ q(lithuania) => [
+ q(0127),
+ q(0),
+ ],
+ q(luxembourg) => [
+ q(0128),
+ q(0),
+ ],
+ q(macao) => [
+ q(0129),
+ q(0),
+ ],
+ q(macao special administrative region of china) => [
+ q(0129),
+ q(6),
+ ],
+ q(macau) => [
+ q(0129),
+ q(4),
+ ],
+ q(macau s.a.r) => [
+ q(0129),
+ q(2),
+ ],
+ q(macau s.a.r.) => [
+ q(0129),
+ q(5),
+ ],
+ q(macau special administrative region) => [
+ q(0129),
+ q(3),
+ ],
+ q(macedonia) => [
+ q(0130),
+ q(2),
+ ],
+ q(macedonia, former yugoslav republic of) => [
+ q(0130),
+ q(4),
+ ],
+ q(macedonia, the former yugoslav republic of) => [
+ q(0130),
+ q(0),
+ ],
+ q(madagascar) => [
+ q(0131),
+ q(0),
+ ],
+ q(malawi) => [
+ q(0132),
+ q(0),
+ ],
+ q(malaysia) => [
+ q(0133),
+ q(0),
+ ],
+ q(maldives) => [
+ q(0134),
+ q(0),
+ ],
+ q(mali) => [
+ q(0135),
+ q(0),
+ ],
+ q(malta) => [
+ q(0136),
+ q(0),
+ ],
+ q(marshall islands) => [
+ q(0137),
+ q(0),
+ ],
+ q(martinique) => [
+ q(0138),
+ q(0),
+ ],
+ q(mauritania) => [
+ q(0139),
+ q(0),
+ ],
+ q(mauritius) => [
+ q(0140),
+ q(0),
+ ],
+ q(mayotte) => [
+ q(0141),
+ q(0),
+ ],
+ q(mexico) => [
+ q(0142),
+ q(0),
+ ],
+ q(micronesia (federated states of)) => [
+ q(0143),
+ q(1),
+ ],
+ q(micronesia, federated states of) => [
+ q(0143),
+ q(0),
+ ],
+ q(midway islands) => [
+ q(0263),
+ q(0),
+ ],
+ q(moldova) => [
+ q(0144),
+ q(2),
+ ],
+ q(moldova, republic of) => [
+ q(0144),
+ q(0),
+ ],
+ q(monaco) => [
+ q(0145),
+ q(0),
+ ],
+ q(mongolia) => [
+ q(0146),
+ q(0),
+ ],
+ q(montenegro) => [
+ q(0147),
+ q(0),
+ ],
+ q(montserrat) => [
+ q(0148),
+ q(0),
+ ],
+ q(morocco) => [
+ q(0149),
+ q(0),
+ ],
+ q(mozambique) => [
+ q(0150),
+ q(0),
+ ],
+ q(myanmar) => [
+ q(0151),
+ q(0),
+ ],
+ q(namibia) => [
+ q(0152),
+ q(0),
+ ],
+ q(nauru) => [
+ q(0153),
+ q(0),
+ ],
+ q(navassa island) => [
+ q(0264),
+ q(0),
+ ],
+ q(negara brunei darussalam) => [
+ q(0033),
+ q(2),
+ ],
+ q(nepal) => [
+ q(0154),
+ q(0),
+ ],
+ q(netherlands) => [
+ q(0155),
+ q(0),
+ ],
+ q(netherlands antilles) => [
+ q(0156),
+ q(0),
+ ],
+ q(new caledonia) => [
+ q(0157),
+ q(0),
+ ],
+ q(new zealand) => [
+ q(0158),
+ q(0),
+ ],
+ q(nicaragua) => [
+ q(0159),
+ q(0),
+ ],
+ q(niger) => [
+ q(0160),
+ q(0),
+ ],
+ q(nigeria) => [
+ q(0161),
+ q(0),
+ ],
+ q(niue) => [
+ q(0162),
+ q(0),
+ ],
+ q(norfolk island) => [
+ q(0163),
+ q(0),
+ ],
+ q(north korea) => [
+ q(0116),
+ q(3),
+ ],
+ q(northern mariana islands) => [
+ q(0164),
+ q(0),
+ ],
+ q(norway) => [
+ q(0165),
+ q(0),
+ ],
+ q(occupied palestinian territory) => [
+ q(0169),
+ q(1),
+ ],
+ q(oman) => [
+ q(0166),
+ q(0),
+ ],
+ q(oriental republic of uruguay) => [
+ q(0235),
+ q(1),
+ ],
+ q(pakistan) => [
+ q(0167),
+ q(0),
+ ],
+ q(palau) => [
+ q(0168),
+ q(0),
+ ],
+ q(palestinian territory, occupied) => [
+ q(0169),
+ q(0),
+ ],
+ q(palmyra atoll) => [
+ q(0265),
+ q(0),
+ ],
+ q(panama) => [
+ q(0170),
+ q(0),
+ ],
+ q(papua new guinea) => [
+ q(0171),
+ q(0),
+ ],
+ q(paracel islands) => [
+ q(0266),
+ q(0),
+ ],
+ q(paraguay) => [
+ q(0172),
+ q(0),
+ ],
+ q(people's democratic republic of algeria) => [
+ q(0004),
+ q(1),
+ ],
+ q(people's republic of bangladesh) => [
+ q(0019),
+ q(1),
+ ],
+ q(people's republic of china) => [
+ q(0045),
+ q(1),
+ ],
+ q(peru) => [
+ q(0173),
+ q(0),
+ ],
+ q(philippines) => [
+ q(0174),
+ q(0),
+ ],
+ q(pitcairn) => [
+ q(0175),
+ q(0),
+ ],
+ q(pitcairn island) => [
+ q(0175),
+ q(3),
+ ],
+ q(pitcairn islands) => [
+ q(0175),
+ q(1),
+ ],
+ q(pitcairn, henderson, ducie and oeno islands) => [
+ q(0175),
+ q(2),
+ ],
+ q(poland) => [
+ q(0176),
+ q(0),
+ ],
+ q(portugal) => [
+ q(0177),
+ q(0),
+ ],
+ q(portuguese republic) => [
+ q(0177),
+ q(1),
+ ],
+ q(portuguese timor ) => [
+ q(0275),
+ q(0),
+ ],
+ q(principality of andorra) => [
+ q(0006),
+ q(1),
+ ],
+ q(principality of liechtenstein) => [
+ q(0126),
+ q(1),
+ ],
+ q(principality of monaco) => [
+ q(0145),
+ q(1),
+ ],
+ q(puerto rico) => [
+ q(0178),
+ q(0),
+ ],
+ q(qatar) => [
+ q(0179),
+ q(0),
+ ],
+ q(republic of albania) => [
+ q(0003),
+ q(1),
+ ],
+ q(republic of angola) => [
+ q(0007),
+ q(1),
+ ],
+ q(republic of armenia) => [
+ q(0012),
+ q(1),
+ ],
+ q(republic of austria) => [
+ q(0015),
+ q(1),
+ ],
+ q(republic of azerbaijan) => [
+ q(0016),
+ q(1),
+ ],
+ q(republic of belarus) => [
+ q(0021),
+ q(1),
+ ],
+ q(republic of benin) => [
+ q(0024),
+ q(1),
+ ],
+ q(republic of bolivia) => [
+ q(0027),
+ q(3),
+ ],
+ q(republic of botswana) => [
+ q(0029),
+ q(1),
+ ],
+ q(republic of burundi) => [
+ q(0036),
+ q(1),
+ ],
+ q(republic of cameroon) => [
+ q(0038),
+ q(1),
+ ],
+ q(republic of cape verde) => [
+ q(0040),
+ q(1),
+ ],
+ q(republic of chad) => [
+ q(0043),
+ q(1),
+ ],
+ q(republic of chile) => [
+ q(0044),
+ q(1),
+ ],
+ q(republic of colombia) => [
+ q(0048),
+ q(1),
+ ],
+ q(republic of costa rica) => [
+ q(0053),
+ q(1),
+ ],
+ q(republic of cote d'ivoire) => [
+ q(0054),
+ q(1),
+ ],
+ q(republic of croatia) => [
+ q(0055),
+ q(1),
+ ],
+ q(republic of cuba) => [
+ q(0056),
+ q(1),
+ ],
+ q(republic of cyprus) => [
+ q(0057),
+ q(1),
+ ],
+ q(republic of djibouti) => [
+ q(0060),
+ q(1),
+ ],
+ q(republic of ecuador) => [
+ q(0063),
+ q(1),
+ ],
+ q(republic of el salvador) => [
+ q(0065),
+ q(1),
+ ],
+ q(republic of equatorial guinea) => [
+ q(0066),
+ q(1),
+ ],
+ q(republic of estonia) => [
+ q(0068),
+ q(1),
+ ],
+ q(republic of finland) => [
+ q(0073),
+ q(1),
+ ],
+ q(republic of ghana) => [
+ q(0082),
+ q(1),
+ ],
+ q(republic of guatemala) => [
+ q(0089),
+ q(1),
+ ],
+ q(republic of guinea) => [
+ q(0091),
+ q(1),
+ ],
+ q(republic of guinea-bissau) => [
+ q(0092),
+ q(1),
+ ],
+ q(republic of haiti) => [
+ q(0094),
+ q(1),
+ ],
+ q(republic of honduras) => [
+ q(0097),
+ q(1),
+ ],
+ q(republic of hungary) => [
+ q(0099),
+ q(1),
+ ],
+ q(republic of iceland) => [
+ q(0100),
+ q(1),
+ ],
+ q(republic of india) => [
+ q(0101),
+ q(1),
+ ],
+ q(republic of indonesia) => [
+ q(0102),
+ q(1),
+ ],
+ q(republic of iraq) => [
+ q(0104),
+ q(1),
+ ],
+ q(republic of kazakhstan) => [
+ q(0113),
+ q(1),
+ ],
+ q(republic of kenya) => [
+ q(0114),
+ q(1),
+ ],
+ q(republic of kiribati) => [
+ q(0115),
+ q(1),
+ ],
+ q(republic of korea) => [
+ q(0117),
+ q(1),
+ ],
+ q(republic of latvia) => [
+ q(0121),
+ q(1),
+ ],
+ q(republic of lesotho) => [
+ q(0123),
+ q(1),
+ ],
+ q(republic of liberia) => [
+ q(0124),
+ q(1),
+ ],
+ q(republic of lithuania) => [
+ q(0127),
+ q(1),
+ ],
+ q(republic of macedonia) => [
+ q(0130),
+ q(3),
+ ],
+ q(republic of madagascar) => [
+ q(0131),
+ q(1),
+ ],
+ q(republic of malawi) => [
+ q(0132),
+ q(1),
+ ],
+ q(republic of maldives) => [
+ q(0134),
+ q(1),
+ ],
+ q(republic of mali) => [
+ q(0135),
+ q(1),
+ ],
+ q(republic of malta) => [
+ q(0136),
+ q(1),
+ ],
+ q(republic of mauritius) => [
+ q(0140),
+ q(1),
+ ],
+ q(republic of moldova) => [
+ q(0144),
+ q(1),
+ ],
+ q(republic of mozambique) => [
+ q(0150),
+ q(1),
+ ],
+ q(republic of namibia) => [
+ q(0152),
+ q(1),
+ ],
+ q(republic of nauru) => [
+ q(0153),
+ q(1),
+ ],
+ q(republic of nicaragua) => [
+ q(0159),
+ q(1),
+ ],
+ q(republic of niger) => [
+ q(0160),
+ q(1),
+ ],
+ q(republic of palau) => [
+ q(0168),
+ q(1),
+ ],
+ q(republic of panama) => [
+ q(0170),
+ q(1),
+ ],
+ q(republic of paraguay) => [
+ q(0172),
+ q(1),
+ ],
+ q(republic of peru) => [
+ q(0173),
+ q(1),
+ ],
+ q(republic of poland) => [
+ q(0176),
+ q(1),
+ ],
+ q(republic of san marino) => [
+ q(0192),
+ q(1),
+ ],
+ q(republic of senegal) => [
+ q(0195),
+ q(1),
+ ],
+ q(republic of seychelles) => [
+ q(0197),
+ q(1),
+ ],
+ q(republic of sierra leone) => [
+ q(0198),
+ q(1),
+ ],
+ q(republic of singapore) => [
+ q(0199),
+ q(1),
+ ],
+ q(republic of slovenia) => [
+ q(0201),
+ q(1),
+ ],
+ q(republic of south africa) => [
+ q(0204),
+ q(1),
+ ],
+ q(republic of suriname) => [
+ q(0209),
+ q(1),
+ ],
+ q(republic of tajikistan) => [
+ q(0216),
+ q(1),
+ ],
+ q(republic of the congo) => [
+ q(0050),
+ q(2),
+ ],
+ q(republic of the fiji islands) => [
+ q(0072),
+ q(1),
+ ],
+ q(republic of the gambia) => [
+ q(0079),
+ q(2),
+ ],
+ q(republic of the marshall islands) => [
+ q(0137),
+ q(1),
+ ],
+ q(republic of the philippines) => [
+ q(0174),
+ q(1),
+ ],
+ q(republic of the sudan) => [
+ q(0208),
+ q(1),
+ ],
+ q(republic of trinidad and tobago) => [
+ q(0223),
+ q(1),
+ ],
+ q(republic of tunisia) => [
+ q(0224),
+ q(1),
+ ],
+ q(republic of turkey) => [
+ q(0225),
+ q(1),
+ ],
+ q(republic of uzbekistan) => [
+ q(0236),
+ q(1),
+ ],
+ q(republic of vanuatu) => [
+ q(0237),
+ q(1),
+ ],
+ q(republic of yemen) => [
+ q(0244),
+ q(1),
+ ],
+ q(republic of zambia) => [
+ q(0245),
+ q(1),
+ ],
+ q(republic of zimbabwe) => [
+ q(0246),
+ q(1),
+ ],
+ q(reunion) => [
+ q(0180),
+ q(0),
+ ],
+ q(romania) => [
+ q(0181),
+ q(0),
+ ],
+ q(russia) => [
+ q(0182),
+ q(1),
+ ],
+ q(russian federation) => [
+ q(0182),
+ q(0),
+ ],
+ q(rwanda) => [
+ q(0183),
+ q(0),
+ ],
+ q(rwandese republic) => [
+ q(0183),
+ q(1),
+ ],
+ q(saint barthelemy) => [
+ q(0184),
+ q(0),
+ ],
+ q(saint helena) => [
+ q(0185),
+ q(1),
+ ],
+ q(saint helena, ascension and tristan da cunha) => [
+ q(0185),
+ q(0),
+ ],
+ q(saint kitts and nevis) => [
+ q(0186),
+ q(0),
+ ],
+ q(saint lucia) => [
+ q(0187),
+ q(0),
+ ],
+ q(saint martin) => [
+ q(0188),
+ q(0),
+ ],
+ q(saint pierre and miquelon) => [
+ q(0189),
+ q(0),
+ ],
+ q(saint vincent and the grenadines) => [
+ q(0190),
+ q(0),
+ ],
+ q(saint-barthelemy) => [
+ q(0184),
+ q(1),
+ ],
+ q(saint-martin (french part)) => [
+ q(0188),
+ q(1),
+ ],
+ q(samoa) => [
+ q(0191),
+ q(0),
+ ],
+ q(san marino) => [
+ q(0192),
+ q(0),
+ ],
+ q(sao tome and principe) => [
+ q(0193),
+ q(0),
+ ],
+ q(saudi arabia) => [
+ q(0194),
+ q(0),
+ ],
+ q(senegal) => [
+ q(0195),
+ q(0),
+ ],
+ q(serbia) => [
+ q(0196),
+ q(0),
+ ],
+ q(serbia and montenegro) => [
+ q(0248),
+ q(0),
+ ],
+ q(seychelles) => [
+ q(0197),
+ q(0),
+ ],
+ q(sierra leone) => [
+ q(0198),
+ q(0),
+ ],
+ q(singapore) => [
+ q(0199),
+ q(0),
+ ],
+ q(slovak republic) => [
+ q(0200),
+ q(1),
+ ],
+ q(slovakia) => [
+ q(0200),
+ q(0),
+ ],
+ q(slovenia) => [
+ q(0201),
+ q(0),
+ ],
+ q(socialist republic of vietnam) => [
+ q(0239),
+ q(2),
+ ],
+ q(solomon islands) => [
+ q(0202),
+ q(0),
+ ],
+ q(somalia) => [
+ q(0203),
+ q(0),
+ ],
+ q(south africa) => [
+ q(0204),
+ q(0),
+ ],
+ q(south georgia and the islands) => [
+ q(0205),
+ q(1),
+ ],
+ q(south georgia and the south sandwich islands) => [
+ q(0205),
+ q(0),
+ ],
+ q(south korea) => [
+ q(0117),
+ q(3),
+ ],
+ q(soviet union ) => [
+ q(0274),
+ q(0),
+ ],
+ q(spain) => [
+ q(0206),
+ q(0),
+ ],
+ q(spratly islands) => [
+ q(0267),
+ q(0),
+ ],
+ q(sri lanka) => [
+ q(0207),
+ q(0),
+ ],
+ q(state of bahrain) => [
+ q(0018),
+ q(1),
+ ],
+ q(state of eritrea) => [
+ q(0067),
+ q(1),
+ ],
+ q(state of israel) => [
+ q(0107),
+ q(1),
+ ],
+ q(state of kuwait) => [
+ q(0118),
+ q(1),
+ ],
+ q(state of qatar) => [
+ q(0179),
+ q(1),
+ ],
+ q(state of the vatican city) => [
+ q(0096),
+ q(3),
+ ],
+ q(sudan) => [
+ q(0208),
+ q(0),
+ ],
+ q(sultanate of oman) => [
+ q(0166),
+ q(1),
+ ],
+ q(suriname) => [
+ q(0209),
+ q(0),
+ ],
+ q(svalbard) => [
+ q(0268),
+ q(0),
+ ],
+ q(svalbard and jan mayen) => [
+ q(0210),
+ q(0),
+ ],
+ q(svalbard and jan mayen islands) => [
+ q(0210),
+ q(1),
+ ],
+ q(swaziland) => [
+ q(0211),
+ q(0),
+ ],
+ q(sweden) => [
+ q(0212),
+ q(0),
+ ],
+ q(swiss confederation) => [
+ q(0213),
+ q(1),
+ ],
+ q(switzerland) => [
+ q(0213),
+ q(0),
+ ],
+ q(syria) => [
+ q(0214),
+ q(1),
+ ],
+ q(syrian arab republic) => [
+ q(0214),
+ q(0),
+ ],
+ q(taiwan) => [
+ q(0215),
+ q(1),
+ ],
+ q(taiwan, province of china) => [
+ q(0215),
+ q(0),
+ ],
+ q(tajikistan) => [
+ q(0216),
+ q(0),
+ ],
+ q(tanzania) => [
+ q(0217),
+ q(2),
+ ],
+ q(tanzania, united republic of) => [
+ q(0217),
+ q(0),
+ ],
+ q(territorial collectivity of mayotte) => [
+ q(0141),
+ q(1),
+ ],
+ q(territorial collectivity of saint pierre and miquelon) => [
+ q(0189),
+ q(1),
+ ],
+ q(territory of american samoa) => [
+ q(0005),
+ q(1),
+ ],
+ q(territory of ashmore and cartier islands) => [
+ q(0249),
+ q(1),
+ ],
+ q(territory of christmas island) => [
+ q(0046),
+ q(1),
+ ],
+ q(territory of cocos (keeling) islands) => [
+ q(0047),
+ q(1),
+ ],
+ q(territory of french polynesia) => [
+ q(0076),
+ q(1),
+ ],
+ q(territory of guam) => [
+ q(0088),
+ q(1),
+ ],
+ q(territory of heard island and mcdonald islands) => [
+ q(0095),
+ q(1),
+ ],
+ q(territory of new caledonia and dependencies) => [
+ q(0157),
+ q(1),
+ ],
+ q(territory of norfolk island) => [
+ q(0163),
+ q(1),
+ ],
+ q(territory of the french southern and antarctic lands) => [
+ q(0077),
+ q(2),
+ ],
+ q(territory of the wallis and futuna islands) => [
+ q(0242),
+ q(2),
+ ],
+ q(thailand) => [
+ q(0218),
+ q(0),
+ ],
+ q(the bahamas) => [
+ q(0017),
+ q(3),
+ ],
+ q(the democratic republic of the congo) => [
+ q(0051),
+ q(4),
+ ],
+ q(the former yugoslav republic of macedonia) => [
+ q(0130),
+ q(1),
+ ],
+ q(the republic of the congo) => [
+ q(0050),
+ q(4),
+ ],
+ q(timor-leste) => [
+ q(0219),
+ q(0),
+ ],
+ q(togo) => [
+ q(0220),
+ q(0),
+ ],
+ q(togolese republic) => [
+ q(0220),
+ q(1),
+ ],
+ q(tokelau) => [
+ q(0221),
+ q(0),
+ ],
+ q(tonga) => [
+ q(0222),
+ q(0),
+ ],
+ q(trinidad and tobago) => [
+ q(0223),
+ q(0),
+ ],
+ q(tromelin island) => [
+ q(0269),
+ q(0),
+ ],
+ q(tunisia) => [
+ q(0224),
+ q(0),
+ ],
+ q(turkey) => [
+ q(0225),
+ q(0),
+ ],
+ q(turkmenistan) => [
+ q(0226),
+ q(0),
+ ],
+ q(turks and caicos islands) => [
+ q(0227),
+ q(0),
+ ],
+ q(tuvalu) => [
+ q(0228),
+ q(0),
+ ],
+ q(uganda) => [
+ q(0229),
+ q(0),
+ ],
+ q(uk) => [
+ q(0232),
+ q(3),
+ ],
+ q(ukraine) => [
+ q(0230),
+ q(0),
+ ],
+ q(union of burma) => [
+ q(0151),
+ q(2),
+ ],
+ q(united arab emirates) => [
+ q(0231),
+ q(0),
+ ],
+ q(united kingdom) => [
+ q(0232),
+ q(0),
+ ],
+ q(united kingdom of great britain and northern ireland) => [
+ q(0232),
+ q(1),
+ ],
+ q(united mexican states) => [
+ q(0142),
+ q(1),
+ ],
+ q(united republic of tanzania) => [
+ q(0217),
+ q(1),
+ ],
+ q(united states) => [
+ q(0233),
+ q(0),
+ ],
+ q(united states minor outlying islands) => [
+ q(0234),
+ q(0),
+ ],
+ q(united states of america) => [
+ q(0233),
+ q(1),
+ ],
+ q(united states virgin islands) => [
+ q(0241),
+ q(1),
+ ],
+ q(uruguay) => [
+ q(0235),
+ q(0),
+ ],
+ q(us) => [
+ q(0233),
+ q(2),
+ ],
+ q(usa) => [
+ q(0233),
+ q(3),
+ ],
+ q(uzbekistan) => [
+ q(0236),
+ q(0),
+ ],
+ q(vanuatu) => [
+ q(0237),
+ q(0),
+ ],
+ q(vatican city) => [
+ q(0096),
+ q(2),
+ ],
+ q(venezuela) => [
+ q(0238),
+ q(2),
+ ],
+ q(venezuela (bolivarian republic of)) => [
+ q(0238),
+ q(1),
+ ],
+ q(venezuela, bolivarian republic of) => [
+ q(0238),
+ q(0),
+ ],
+ q(viet nam) => [
+ q(0239),
+ q(0),
+ ],
+ q(vietnam) => [
+ q(0239),
+ q(1),
+ ],
+ q(virgin islands) => [
+ q(0241),
+ q(2),
+ ],
+ q(virgin islands (uk)) => [
+ q(0240),
+ q(2),
+ ],
+ q(virgin islands (us)) => [
+ q(0241),
+ q(4),
+ ],
+ q(virgin islands of the united states) => [
+ q(0241),
+ q(3),
+ ],
+ q(virgin islands, british) => [
+ q(0240),
+ q(0),
+ ],
+ q(virgin islands, u.s.) => [
+ q(0241),
+ q(0),
+ ],
+ q(wake atoll) => [
+ q(0270),
+ q(0),
+ ],
+ q(wake island) => [
+ q(0270),
+ q(1),
+ ],
+ q(wallis and futuna) => [
+ q(0242),
+ q(0),
+ ],
+ q(wallis and futuna islands) => [
+ q(0242),
+ q(1),
+ ],
+ q(west bank) => [
+ q(0271),
+ q(0),
+ ],
+ q(western sahara) => [
+ q(0243),
+ q(0),
+ ],
+ q(yemen) => [
+ q(0244),
+ q(0),
+ ],
+ q(zambia) => [
+ q(0245),
+ q(0),
+ ],
+ q(zimbabwe) => [
+ q(0246),
+ q(0),
+ ],
+};
+
+$Locale::Codes::Data{'country'}{'code2id'} = {
+ q(alpha2) => {
+ q(ad) => [
+ q(0006),
+ q(0),
+ ],
+ q(ae) => [
+ q(0231),
+ q(0),
+ ],
+ q(af) => [
+ q(0001),
+ q(0),
+ ],
+ q(ag) => [
+ q(0010),
+ q(0),
+ ],
+ q(ai) => [
+ q(0008),
+ q(0),
+ ],
+ q(al) => [
+ q(0003),
+ q(0),
+ ],
+ q(am) => [
+ q(0012),
+ q(0),
+ ],
+ q(an) => [
+ q(0156),
+ q(0),
+ ],
+ q(ao) => [
+ q(0007),
+ q(0),
+ ],
+ q(aq) => [
+ q(0009),
+ q(0),
+ ],
+ q(ar) => [
+ q(0011),
+ q(0),
+ ],
+ q(as) => [
+ q(0005),
+ q(0),
+ ],
+ q(at) => [
+ q(0015),
+ q(0),
+ ],
+ q(au) => [
+ q(0014),
+ q(0),
+ ],
+ q(aw) => [
+ q(0013),
+ q(0),
+ ],
+ q(ax) => [
+ q(0002),
+ q(0),
+ ],
+ q(az) => [
+ q(0016),
+ q(0),
+ ],
+ q(ba) => [
+ q(0028),
+ q(0),
+ ],
+ q(bb) => [
+ q(0020),
+ q(0),
+ ],
+ q(bd) => [
+ q(0019),
+ q(0),
+ ],
+ q(be) => [
+ q(0022),
+ q(0),
+ ],
+ q(bf) => [
+ q(0035),
+ q(0),
+ ],
+ q(bg) => [
+ q(0034),
+ q(0),
+ ],
+ q(bh) => [
+ q(0018),
+ q(0),
+ ],
+ q(bi) => [
+ q(0036),
+ q(0),
+ ],
+ q(bj) => [
+ q(0024),
+ q(0),
+ ],
+ q(bl) => [
+ q(0184),
+ q(0),
+ ],
+ q(bm) => [
+ q(0025),
+ q(0),
+ ],
+ q(bn) => [
+ q(0033),
+ q(0),
+ ],
+ q(bo) => [
+ q(0027),
+ q(0),
+ ],
+ q(br) => [
+ q(0031),
+ q(0),
+ ],
+ q(bs) => [
+ q(0017),
+ q(0),
+ ],
+ q(bt) => [
+ q(0026),
+ q(0),
+ ],
+ q(bv) => [
+ q(0030),
+ q(0),
+ ],
+ q(bw) => [
+ q(0029),
+ q(0),
+ ],
+ q(by) => [
+ q(0021),
+ q(0),
+ ],
+ q(bz) => [
+ q(0023),
+ q(0),
+ ],
+ q(ca) => [
+ q(0039),
+ q(0),
+ ],
+ q(cc) => [
+ q(0047),
+ q(0),
+ ],
+ q(cd) => [
+ q(0051),
+ q(0),
+ ],
+ q(cf) => [
+ q(0042),
+ q(0),
+ ],
+ q(cg) => [
+ q(0050),
+ q(0),
+ ],
+ q(ch) => [
+ q(0213),
+ q(0),
+ ],
+ q(ci) => [
+ q(0054),
+ q(0),
+ ],
+ q(ck) => [
+ q(0052),
+ q(0),
+ ],
+ q(cl) => [
+ q(0044),
+ q(0),
+ ],
+ q(cm) => [
+ q(0038),
+ q(0),
+ ],
+ q(cn) => [
+ q(0045),
+ q(0),
+ ],
+ q(co) => [
+ q(0048),
+ q(0),
+ ],
+ q(cr) => [
+ q(0053),
+ q(0),
+ ],
+ q(cu) => [
+ q(0056),
+ q(0),
+ ],
+ q(cv) => [
+ q(0040),
+ q(0),
+ ],
+ q(cx) => [
+ q(0046),
+ q(0),
+ ],
+ q(cy) => [
+ q(0057),
+ q(0),
+ ],
+ q(cz) => [
+ q(0058),
+ q(0),
+ ],
+ q(de) => [
+ q(0081),
+ q(0),
+ ],
+ q(dj) => [
+ q(0060),
+ q(0),
+ ],
+ q(dk) => [
+ q(0059),
+ q(0),
+ ],
+ q(dm) => [
+ q(0061),
+ q(0),
+ ],
+ q(do) => [
+ q(0062),
+ q(0),
+ ],
+ q(dz) => [
+ q(0004),
+ q(0),
+ ],
+ q(ec) => [
+ q(0063),
+ q(0),
+ ],
+ q(ee) => [
+ q(0068),
+ q(0),
+ ],
+ q(eg) => [
+ q(0064),
+ q(0),
+ ],
+ q(eh) => [
+ q(0243),
+ q(0),
+ ],
+ q(er) => [
+ q(0067),
+ q(0),
+ ],
+ q(es) => [
+ q(0206),
+ q(0),
+ ],
+ q(et) => [
+ q(0069),
+ q(0),
+ ],
+ q(fi) => [
+ q(0073),
+ q(0),
+ ],
+ q(fj) => [
+ q(0072),
+ q(0),
+ ],
+ q(fk) => [
+ q(0070),
+ q(0),
+ ],
+ q(fm) => [
+ q(0143),
+ q(0),
+ ],
+ q(fo) => [
+ q(0071),
+ q(0),
+ ],
+ q(fr) => [
+ q(0074),
+ q(0),
+ ],
+ q(fx) => [
+ q(0276),
+ q(0),
+ ],
+ q(ga) => [
+ q(0078),
+ q(0),
+ ],
+ q(gb) => [
+ q(0232),
+ q(0),
+ ],
+ q(gd) => [
+ q(0086),
+ q(0),
+ ],
+ q(ge) => [
+ q(0080),
+ q(0),
+ ],
+ q(gf) => [
+ q(0075),
+ q(0),
+ ],
+ q(gg) => [
+ q(0090),
+ q(0),
+ ],
+ q(gh) => [
+ q(0082),
+ q(0),
+ ],
+ q(gi) => [
+ q(0083),
+ q(0),
+ ],
+ q(gl) => [
+ q(0085),
+ q(0),
+ ],
+ q(gm) => [
+ q(0079),
+ q(0),
+ ],
+ q(gn) => [
+ q(0091),
+ q(0),
+ ],
+ q(gp) => [
+ q(0087),
+ q(0),
+ ],
+ q(gq) => [
+ q(0066),
+ q(0),
+ ],
+ q(gr) => [
+ q(0084),
+ q(0),
+ ],
+ q(gs) => [
+ q(0205),
+ q(0),
+ ],
+ q(gt) => [
+ q(0089),
+ q(0),
+ ],
+ q(gu) => [
+ q(0088),
+ q(0),
+ ],
+ q(gw) => [
+ q(0092),
+ q(0),
+ ],
+ q(gy) => [
+ q(0093),
+ q(0),
+ ],
+ q(hk) => [
+ q(0098),
+ q(0),
+ ],
+ q(hm) => [
+ q(0095),
+ q(0),
+ ],
+ q(hn) => [
+ q(0097),
+ q(0),
+ ],
+ q(hr) => [
+ q(0055),
+ q(0),
+ ],
+ q(ht) => [
+ q(0094),
+ q(0),
+ ],
+ q(hu) => [
+ q(0099),
+ q(0),
+ ],
+ q(id) => [
+ q(0102),
+ q(0),
+ ],
+ q(ie) => [
+ q(0105),
+ q(0),
+ ],
+ q(il) => [
+ q(0107),
+ q(0),
+ ],
+ q(im) => [
+ q(0106),
+ q(0),
+ ],
+ q(in) => [
+ q(0101),
+ q(0),
+ ],
+ q(io) => [
+ q(0032),
+ q(0),
+ ],
+ q(iq) => [
+ q(0104),
+ q(0),
+ ],
+ q(ir) => [
+ q(0103),
+ q(0),
+ ],
+ q(is) => [
+ q(0100),
+ q(0),
+ ],
+ q(it) => [
+ q(0108),
+ q(0),
+ ],
+ q(je) => [
+ q(0111),
+ q(0),
+ ],
+ q(jm) => [
+ q(0109),
+ q(0),
+ ],
+ q(jo) => [
+ q(0112),
+ q(0),
+ ],
+ q(jp) => [
+ q(0110),
+ q(0),
+ ],
+ q(ke) => [
+ q(0114),
+ q(0),
+ ],
+ q(kg) => [
+ q(0119),
+ q(0),
+ ],
+ q(kh) => [
+ q(0037),
+ q(0),
+ ],
+ q(ki) => [
+ q(0115),
+ q(0),
+ ],
+ q(km) => [
+ q(0049),
+ q(0),
+ ],
+ q(kn) => [
+ q(0186),
+ q(0),
+ ],
+ q(kp) => [
+ q(0116),
+ q(0),
+ ],
+ q(kr) => [
+ q(0117),
+ q(0),
+ ],
+ q(kw) => [
+ q(0118),
+ q(0),
+ ],
+ q(ky) => [
+ q(0041),
+ q(0),
+ ],
+ q(kz) => [
+ q(0113),
+ q(0),
+ ],
+ q(la) => [
+ q(0120),
+ q(0),
+ ],
+ q(lb) => [
+ q(0122),
+ q(0),
+ ],
+ q(lc) => [
+ q(0187),
+ q(0),
+ ],
+ q(li) => [
+ q(0126),
+ q(0),
+ ],
+ q(lk) => [
+ q(0207),
+ q(0),
+ ],
+ q(lr) => [
+ q(0124),
+ q(0),
+ ],
+ q(ls) => [
+ q(0123),
+ q(0),
+ ],
+ q(lt) => [
+ q(0127),
+ q(0),
+ ],
+ q(lu) => [
+ q(0128),
+ q(0),
+ ],
+ q(lv) => [
+ q(0121),
+ q(0),
+ ],
+ q(ly) => [
+ q(0125),
+ q(0),
+ ],
+ q(ma) => [
+ q(0149),
+ q(0),
+ ],
+ q(mc) => [
+ q(0145),
+ q(0),
+ ],
+ q(md) => [
+ q(0144),
+ q(0),
+ ],
+ q(me) => [
+ q(0147),
+ q(0),
+ ],
+ q(mf) => [
+ q(0188),
+ q(0),
+ ],
+ q(mg) => [
+ q(0131),
+ q(0),
+ ],
+ q(mh) => [
+ q(0137),
+ q(0),
+ ],
+ q(mk) => [
+ q(0130),
+ q(0),
+ ],
+ q(ml) => [
+ q(0135),
+ q(0),
+ ],
+ q(mm) => [
+ q(0151),
+ q(0),
+ ],
+ q(mn) => [
+ q(0146),
+ q(0),
+ ],
+ q(mo) => [
+ q(0129),
+ q(0),
+ ],
+ q(mp) => [
+ q(0164),
+ q(0),
+ ],
+ q(mq) => [
+ q(0138),
+ q(0),
+ ],
+ q(mr) => [
+ q(0139),
+ q(0),
+ ],
+ q(ms) => [
+ q(0148),
+ q(0),
+ ],
+ q(mt) => [
+ q(0136),
+ q(0),
+ ],
+ q(mu) => [
+ q(0140),
+ q(0),
+ ],
+ q(mv) => [
+ q(0134),
+ q(0),
+ ],
+ q(mw) => [
+ q(0132),
+ q(0),
+ ],
+ q(mx) => [
+ q(0142),
+ q(0),
+ ],
+ q(my) => [
+ q(0133),
+ q(0),
+ ],
+ q(mz) => [
+ q(0150),
+ q(0),
+ ],
+ q(na) => [
+ q(0152),
+ q(0),
+ ],
+ q(nc) => [
+ q(0157),
+ q(0),
+ ],
+ q(ne) => [
+ q(0160),
+ q(0),
+ ],
+ q(nf) => [
+ q(0163),
+ q(0),
+ ],
+ q(ng) => [
+ q(0161),
+ q(0),
+ ],
+ q(ni) => [
+ q(0159),
+ q(0),
+ ],
+ q(nl) => [
+ q(0155),
+ q(0),
+ ],
+ q(no) => [
+ q(0165),
+ q(0),
+ ],
+ q(np) => [
+ q(0154),
+ q(0),
+ ],
+ q(nr) => [
+ q(0153),
+ q(0),
+ ],
+ q(nu) => [
+ q(0162),
+ q(0),
+ ],
+ q(nz) => [
+ q(0158),
+ q(0),
+ ],
+ q(om) => [
+ q(0166),
+ q(0),
+ ],
+ q(pa) => [
+ q(0170),
+ q(0),
+ ],
+ q(pe) => [
+ q(0173),
+ q(0),
+ ],
+ q(pf) => [
+ q(0076),
+ q(0),
+ ],
+ q(pg) => [
+ q(0171),
+ q(0),
+ ],
+ q(ph) => [
+ q(0174),
+ q(0),
+ ],
+ q(pk) => [
+ q(0167),
+ q(0),
+ ],
+ q(pl) => [
+ q(0176),
+ q(0),
+ ],
+ q(pm) => [
+ q(0189),
+ q(0),
+ ],
+ q(pn) => [
+ q(0175),
+ q(0),
+ ],
+ q(pr) => [
+ q(0178),
+ q(0),
+ ],
+ q(ps) => [
+ q(0169),
+ q(0),
+ ],
+ q(pt) => [
+ q(0177),
+ q(0),
+ ],
+ q(pw) => [
+ q(0168),
+ q(0),
+ ],
+ q(py) => [
+ q(0172),
+ q(0),
+ ],
+ q(qa) => [
+ q(0179),
+ q(0),
+ ],
+ q(re) => [
+ q(0180),
+ q(0),
+ ],
+ q(ro) => [
+ q(0181),
+ q(0),
+ ],
+ q(rs) => [
+ q(0196),
+ q(0),
+ ],
+ q(ru) => [
+ q(0182),
+ q(0),
+ ],
+ q(rw) => [
+ q(0183),
+ q(0),
+ ],
+ q(sa) => [
+ q(0194),
+ q(0),
+ ],
+ q(sb) => [
+ q(0202),
+ q(0),
+ ],
+ q(sc) => [
+ q(0197),
+ q(0),
+ ],
+ q(sd) => [
+ q(0208),
+ q(0),
+ ],
+ q(se) => [
+ q(0212),
+ q(0),
+ ],
+ q(sg) => [
+ q(0199),
+ q(0),
+ ],
+ q(sh) => [
+ q(0185),
+ q(0),
+ ],
+ q(si) => [
+ q(0201),
+ q(0),
+ ],
+ q(sj) => [
+ q(0210),
+ q(0),
+ ],
+ q(sk) => [
+ q(0200),
+ q(0),
+ ],
+ q(sl) => [
+ q(0198),
+ q(0),
+ ],
+ q(sm) => [
+ q(0192),
+ q(0),
+ ],
+ q(sn) => [
+ q(0195),
+ q(0),
+ ],
+ q(so) => [
+ q(0203),
+ q(0),
+ ],
+ q(sr) => [
+ q(0209),
+ q(0),
+ ],
+ q(st) => [
+ q(0193),
+ q(0),
+ ],
+ q(sv) => [
+ q(0065),
+ q(0),
+ ],
+ q(sy) => [
+ q(0214),
+ q(0),
+ ],
+ q(sz) => [
+ q(0211),
+ q(0),
+ ],
+ q(tc) => [
+ q(0227),
+ q(0),
+ ],
+ q(td) => [
+ q(0043),
+ q(0),
+ ],
+ q(tf) => [
+ q(0077),
+ q(0),
+ ],
+ q(tg) => [
+ q(0220),
+ q(0),
+ ],
+ q(th) => [
+ q(0218),
+ q(0),
+ ],
+ q(tj) => [
+ q(0216),
+ q(0),
+ ],
+ q(tk) => [
+ q(0221),
+ q(0),
+ ],
+ q(tl) => [
+ q(0219),
+ q(0),
+ ],
+ q(tm) => [
+ q(0226),
+ q(0),
+ ],
+ q(tn) => [
+ q(0224),
+ q(0),
+ ],
+ q(to) => [
+ q(0222),
+ q(0),
+ ],
+ q(tr) => [
+ q(0225),
+ q(0),
+ ],
+ q(tt) => [
+ q(0223),
+ q(0),
+ ],
+ q(tv) => [
+ q(0228),
+ q(0),
+ ],
+ q(tw) => [
+ q(0215),
+ q(0),
+ ],
+ q(tz) => [
+ q(0217),
+ q(0),
+ ],
+ q(ua) => [
+ q(0230),
+ q(0),
+ ],
+ q(ug) => [
+ q(0229),
+ q(0),
+ ],
+ q(um) => [
+ q(0234),
+ q(0),
+ ],
+ q(us) => [
+ q(0233),
+ q(0),
+ ],
+ q(uy) => [
+ q(0235),
+ q(0),
+ ],
+ q(uz) => [
+ q(0236),
+ q(0),
+ ],
+ q(va) => [
+ q(0096),
+ q(0),
+ ],
+ q(vc) => [
+ q(0190),
+ q(0),
+ ],
+ q(ve) => [
+ q(0238),
+ q(0),
+ ],
+ q(vg) => [
+ q(0240),
+ q(0),
+ ],
+ q(vi) => [
+ q(0241),
+ q(0),
+ ],
+ q(vn) => [
+ q(0239),
+ q(0),
+ ],
+ q(vu) => [
+ q(0237),
+ q(0),
+ ],
+ q(wf) => [
+ q(0242),
+ q(0),
+ ],
+ q(ws) => [
+ q(0191),
+ q(0),
+ ],
+ q(ye) => [
+ q(0244),
+ q(0),
+ ],
+ q(yt) => [
+ q(0141),
+ q(0),
+ ],
+ q(za) => [
+ q(0204),
+ q(0),
+ ],
+ q(zm) => [
+ q(0245),
+ q(0),
+ ],
+ q(zw) => [
+ q(0246),
+ q(0),
+ ],
+ },
+ q(alpha3) => {
+ q(abw) => [
+ q(0013),
+ q(0),
+ ],
+ q(afg) => [
+ q(0001),
+ q(0),
+ ],
+ q(ago) => [
+ q(0007),
+ q(0),
+ ],
+ q(aia) => [
+ q(0008),
+ q(0),
+ ],
+ q(ala) => [
+ q(0002),
+ q(0),
+ ],
+ q(alb) => [
+ q(0003),
+ q(0),
+ ],
+ q(and) => [
+ q(0006),
+ q(0),
+ ],
+ q(ant) => [
+ q(0156),
+ q(0),
+ ],
+ q(are) => [
+ q(0231),
+ q(0),
+ ],
+ q(arg) => [
+ q(0011),
+ q(0),
+ ],
+ q(arm) => [
+ q(0012),
+ q(0),
+ ],
+ q(asm) => [
+ q(0005),
+ q(0),
+ ],
+ q(ata) => [
+ q(0009),
+ q(0),
+ ],
+ q(atf) => [
+ q(0077),
+ q(1),
+ ],
+ q(atg) => [
+ q(0010),
+ q(0),
+ ],
+ q(aus) => [
+ q(0014),
+ q(0),
+ ],
+ q(aut) => [
+ q(0015),
+ q(0),
+ ],
+ q(aze) => [
+ q(0016),
+ q(0),
+ ],
+ q(bdi) => [
+ q(0036),
+ q(0),
+ ],
+ q(bel) => [
+ q(0022),
+ q(0),
+ ],
+ q(ben) => [
+ q(0024),
+ q(0),
+ ],
+ q(bfa) => [
+ q(0035),
+ q(0),
+ ],
+ q(bgd) => [
+ q(0019),
+ q(0),
+ ],
+ q(bgr) => [
+ q(0034),
+ q(0),
+ ],
+ q(bhr) => [
+ q(0018),
+ q(0),
+ ],
+ q(bhs) => [
+ q(0017),
+ q(0),
+ ],
+ q(bih) => [
+ q(0028),
+ q(0),
+ ],
+ q(blm) => [
+ q(0184),
+ q(1),
+ ],
+ q(blr) => [
+ q(0021),
+ q(0),
+ ],
+ q(blz) => [
+ q(0023),
+ q(0),
+ ],
+ q(bmu) => [
+ q(0025),
+ q(0),
+ ],
+ q(bol) => [
+ q(0027),
+ q(1),
+ ],
+ q(bra) => [
+ q(0031),
+ q(0),
+ ],
+ q(brb) => [
+ q(0020),
+ q(0),
+ ],
+ q(brn) => [
+ q(0033),
+ q(0),
+ ],
+ q(btn) => [
+ q(0026),
+ q(0),
+ ],
+ q(bvt) => [
+ q(0030),
+ q(0),
+ ],
+ q(bwa) => [
+ q(0029),
+ q(0),
+ ],
+ q(caf) => [
+ q(0042),
+ q(0),
+ ],
+ q(can) => [
+ q(0039),
+ q(0),
+ ],
+ q(cck) => [
+ q(0047),
+ q(0),
+ ],
+ q(che) => [
+ q(0213),
+ q(0),
+ ],
+ q(chl) => [
+ q(0044),
+ q(0),
+ ],
+ q(chn) => [
+ q(0045),
+ q(0),
+ ],
+ q(civ) => [
+ q(0054),
+ q(0),
+ ],
+ q(cmr) => [
+ q(0038),
+ q(0),
+ ],
+ q(cod) => [
+ q(0051),
+ q(1),
+ ],
+ q(cog) => [
+ q(0050),
+ q(0),
+ ],
+ q(cok) => [
+ q(0052),
+ q(0),
+ ],
+ q(col) => [
+ q(0048),
+ q(0),
+ ],
+ q(com) => [
+ q(0049),
+ q(0),
+ ],
+ q(cpv) => [
+ q(0040),
+ q(0),
+ ],
+ q(cri) => [
+ q(0053),
+ q(0),
+ ],
+ q(cub) => [
+ q(0056),
+ q(0),
+ ],
+ q(cxr) => [
+ q(0046),
+ q(0),
+ ],
+ q(cym) => [
+ q(0041),
+ q(0),
+ ],
+ q(cyp) => [
+ q(0057),
+ q(0),
+ ],
+ q(cze) => [
+ q(0058),
+ q(0),
+ ],
+ q(deu) => [
+ q(0081),
+ q(0),
+ ],
+ q(dji) => [
+ q(0060),
+ q(0),
+ ],
+ q(dma) => [
+ q(0061),
+ q(0),
+ ],
+ q(dnk) => [
+ q(0059),
+ q(0),
+ ],
+ q(dom) => [
+ q(0062),
+ q(0),
+ ],
+ q(dza) => [
+ q(0004),
+ q(0),
+ ],
+ q(ecu) => [
+ q(0063),
+ q(0),
+ ],
+ q(egy) => [
+ q(0064),
+ q(0),
+ ],
+ q(eri) => [
+ q(0067),
+ q(0),
+ ],
+ q(esh) => [
+ q(0243),
+ q(0),
+ ],
+ q(esp) => [
+ q(0206),
+ q(0),
+ ],
+ q(est) => [
+ q(0068),
+ q(0),
+ ],
+ q(eth) => [
+ q(0069),
+ q(0),
+ ],
+ q(fin) => [
+ q(0073),
+ q(0),
+ ],
+ q(fji) => [
+ q(0072),
+ q(0),
+ ],
+ q(flk) => [
+ q(0070),
+ q(0),
+ ],
+ q(fra) => [
+ q(0074),
+ q(0),
+ ],
+ q(fro) => [
+ q(0071),
+ q(1),
+ ],
+ q(fsm) => [
+ q(0143),
+ q(1),
+ ],
+ q(fxx) => [
+ q(0276),
+ q(0),
+ ],
+ q(gab) => [
+ q(0078),
+ q(0),
+ ],
+ q(gbr) => [
+ q(0232),
+ q(1),
+ ],
+ q(geo) => [
+ q(0080),
+ q(0),
+ ],
+ q(ggy) => [
+ q(0090),
+ q(0),
+ ],
+ q(gha) => [
+ q(0082),
+ q(0),
+ ],
+ q(gib) => [
+ q(0083),
+ q(0),
+ ],
+ q(gin) => [
+ q(0091),
+ q(0),
+ ],
+ q(glp) => [
+ q(0087),
+ q(0),
+ ],
+ q(gmb) => [
+ q(0079),
+ q(0),
+ ],
+ q(gnb) => [
+ q(0092),
+ q(0),
+ ],
+ q(gnq) => [
+ q(0066),
+ q(0),
+ ],
+ q(grc) => [
+ q(0084),
+ q(0),
+ ],
+ q(grd) => [
+ q(0086),
+ q(0),
+ ],
+ q(grl) => [
+ q(0085),
+ q(0),
+ ],
+ q(gtm) => [
+ q(0089),
+ q(0),
+ ],
+ q(guf) => [
+ q(0075),
+ q(0),
+ ],
+ q(gum) => [
+ q(0088),
+ q(0),
+ ],
+ q(guy) => [
+ q(0093),
+ q(0),
+ ],
+ q(hkg) => [
+ q(0098),
+ q(1),
+ ],
+ q(hmd) => [
+ q(0095),
+ q(0),
+ ],
+ q(hnd) => [
+ q(0097),
+ q(0),
+ ],
+ q(hrv) => [
+ q(0055),
+ q(0),
+ ],
+ q(hti) => [
+ q(0094),
+ q(0),
+ ],
+ q(hun) => [
+ q(0099),
+ q(0),
+ ],
+ q(idn) => [
+ q(0102),
+ q(0),
+ ],
+ q(imn) => [
+ q(0106),
+ q(0),
+ ],
+ q(ind) => [
+ q(0101),
+ q(0),
+ ],
+ q(iot) => [
+ q(0032),
+ q(0),
+ ],
+ q(irl) => [
+ q(0105),
+ q(0),
+ ],
+ q(irn) => [
+ q(0103),
+ q(1),
+ ],
+ q(irq) => [
+ q(0104),
+ q(0),
+ ],
+ q(isl) => [
+ q(0100),
+ q(0),
+ ],
+ q(isr) => [
+ q(0107),
+ q(0),
+ ],
+ q(ita) => [
+ q(0108),
+ q(0),
+ ],
+ q(jam) => [
+ q(0109),
+ q(0),
+ ],
+ q(jey) => [
+ q(0111),
+ q(0),
+ ],
+ q(jor) => [
+ q(0112),
+ q(0),
+ ],
+ q(jpn) => [
+ q(0110),
+ q(0),
+ ],
+ q(kaz) => [
+ q(0113),
+ q(0),
+ ],
+ q(ken) => [
+ q(0114),
+ q(0),
+ ],
+ q(kgz) => [
+ q(0119),
+ q(0),
+ ],
+ q(khm) => [
+ q(0037),
+ q(0),
+ ],
+ q(kir) => [
+ q(0115),
+ q(0),
+ ],
+ q(kna) => [
+ q(0186),
+ q(0),
+ ],
+ q(kor) => [
+ q(0117),
+ q(1),
+ ],
+ q(kwt) => [
+ q(0118),
+ q(0),
+ ],
+ q(lao) => [
+ q(0120),
+ q(0),
+ ],
+ q(lbn) => [
+ q(0122),
+ q(0),
+ ],
+ q(lbr) => [
+ q(0124),
+ q(0),
+ ],
+ q(lby) => [
+ q(0125),
+ q(0),
+ ],
+ q(lca) => [
+ q(0187),
+ q(0),
+ ],
+ q(lie) => [
+ q(0126),
+ q(0),
+ ],
+ q(lka) => [
+ q(0207),
+ q(0),
+ ],
+ q(lso) => [
+ q(0123),
+ q(0),
+ ],
+ q(ltu) => [
+ q(0127),
+ q(0),
+ ],
+ q(lux) => [
+ q(0128),
+ q(0),
+ ],
+ q(lva) => [
+ q(0121),
+ q(0),
+ ],
+ q(mac) => [
+ q(0129),
+ q(1),
+ ],
+ q(maf) => [
+ q(0188),
+ q(1),
+ ],
+ q(mar) => [
+ q(0149),
+ q(0),
+ ],
+ q(mco) => [
+ q(0145),
+ q(0),
+ ],
+ q(mda) => [
+ q(0144),
+ q(1),
+ ],
+ q(mdg) => [
+ q(0131),
+ q(0),
+ ],
+ q(mdv) => [
+ q(0134),
+ q(0),
+ ],
+ q(mex) => [
+ q(0142),
+ q(0),
+ ],
+ q(mhl) => [
+ q(0137),
+ q(0),
+ ],
+ q(mkd) => [
+ q(0130),
+ q(1),
+ ],
+ q(mli) => [
+ q(0135),
+ q(0),
+ ],
+ q(mlt) => [
+ q(0136),
+ q(0),
+ ],
+ q(mmr) => [
+ q(0151),
+ q(0),
+ ],
+ q(mne) => [
+ q(0147),
+ q(0),
+ ],
+ q(mng) => [
+ q(0146),
+ q(0),
+ ],
+ q(mnp) => [
+ q(0164),
+ q(0),
+ ],
+ q(moz) => [
+ q(0150),
+ q(0),
+ ],
+ q(mrt) => [
+ q(0139),
+ q(0),
+ ],
+ q(msr) => [
+ q(0148),
+ q(0),
+ ],
+ q(mtq) => [
+ q(0138),
+ q(0),
+ ],
+ q(mus) => [
+ q(0140),
+ q(0),
+ ],
+ q(mwi) => [
+ q(0132),
+ q(0),
+ ],
+ q(mys) => [
+ q(0133),
+ q(0),
+ ],
+ q(myt) => [
+ q(0141),
+ q(0),
+ ],
+ q(nam) => [
+ q(0152),
+ q(0),
+ ],
+ q(ncl) => [
+ q(0157),
+ q(0),
+ ],
+ q(ner) => [
+ q(0160),
+ q(0),
+ ],
+ q(nfk) => [
+ q(0163),
+ q(0),
+ ],
+ q(nga) => [
+ q(0161),
+ q(0),
+ ],
+ q(nic) => [
+ q(0159),
+ q(0),
+ ],
+ q(niu) => [
+ q(0162),
+ q(0),
+ ],
+ q(nld) => [
+ q(0155),
+ q(0),
+ ],
+ q(nor) => [
+ q(0165),
+ q(0),
+ ],
+ q(npl) => [
+ q(0154),
+ q(0),
+ ],
+ q(nru) => [
+ q(0153),
+ q(0),
+ ],
+ q(nzl) => [
+ q(0158),
+ q(0),
+ ],
+ q(omn) => [
+ q(0166),
+ q(0),
+ ],
+ q(pak) => [
+ q(0167),
+ q(0),
+ ],
+ q(pan) => [
+ q(0170),
+ q(0),
+ ],
+ q(pcn) => [
+ q(0175),
+ q(0),
+ ],
+ q(per) => [
+ q(0173),
+ q(0),
+ ],
+ q(phl) => [
+ q(0174),
+ q(0),
+ ],
+ q(plw) => [
+ q(0168),
+ q(0),
+ ],
+ q(png) => [
+ q(0171),
+ q(0),
+ ],
+ q(pol) => [
+ q(0176),
+ q(0),
+ ],
+ q(pri) => [
+ q(0178),
+ q(0),
+ ],
+ q(prk) => [
+ q(0116),
+ q(1),
+ ],
+ q(prt) => [
+ q(0177),
+ q(0),
+ ],
+ q(pry) => [
+ q(0172),
+ q(0),
+ ],
+ q(pse) => [
+ q(0169),
+ q(1),
+ ],
+ q(pyf) => [
+ q(0076),
+ q(0),
+ ],
+ q(qat) => [
+ q(0179),
+ q(0),
+ ],
+ q(reu) => [
+ q(0180),
+ q(0),
+ ],
+ q(rou) => [
+ q(0181),
+ q(0),
+ ],
+ q(rus) => [
+ q(0182),
+ q(0),
+ ],
+ q(rwa) => [
+ q(0183),
+ q(0),
+ ],
+ q(sau) => [
+ q(0194),
+ q(0),
+ ],
+ q(sdn) => [
+ q(0208),
+ q(0),
+ ],
+ q(sen) => [
+ q(0195),
+ q(0),
+ ],
+ q(sgp) => [
+ q(0199),
+ q(0),
+ ],
+ q(shn) => [
+ q(0185),
+ q(1),
+ ],
+ q(sjm) => [
+ q(0210),
+ q(1),
+ ],
+ q(slb) => [
+ q(0202),
+ q(0),
+ ],
+ q(sle) => [
+ q(0198),
+ q(0),
+ ],
+ q(slv) => [
+ q(0065),
+ q(0),
+ ],
+ q(smr) => [
+ q(0192),
+ q(0),
+ ],
+ q(som) => [
+ q(0203),
+ q(0),
+ ],
+ q(spm) => [
+ q(0189),
+ q(0),
+ ],
+ q(srb) => [
+ q(0196),
+ q(0),
+ ],
+ q(stp) => [
+ q(0193),
+ q(0),
+ ],
+ q(sur) => [
+ q(0209),
+ q(0),
+ ],
+ q(svk) => [
+ q(0200),
+ q(0),
+ ],
+ q(svn) => [
+ q(0201),
+ q(0),
+ ],
+ q(swe) => [
+ q(0212),
+ q(0),
+ ],
+ q(swz) => [
+ q(0211),
+ q(0),
+ ],
+ q(syc) => [
+ q(0197),
+ q(0),
+ ],
+ q(syr) => [
+ q(0214),
+ q(0),
+ ],
+ q(tca) => [
+ q(0227),
+ q(0),
+ ],
+ q(tcd) => [
+ q(0043),
+ q(0),
+ ],
+ q(tgo) => [
+ q(0220),
+ q(0),
+ ],
+ q(tha) => [
+ q(0218),
+ q(0),
+ ],
+ q(tjk) => [
+ q(0216),
+ q(0),
+ ],
+ q(tkl) => [
+ q(0221),
+ q(0),
+ ],
+ q(tkm) => [
+ q(0226),
+ q(0),
+ ],
+ q(tls) => [
+ q(0219),
+ q(0),
+ ],
+ q(ton) => [
+ q(0222),
+ q(0),
+ ],
+ q(tto) => [
+ q(0223),
+ q(0),
+ ],
+ q(tun) => [
+ q(0224),
+ q(0),
+ ],
+ q(tur) => [
+ q(0225),
+ q(0),
+ ],
+ q(tuv) => [
+ q(0228),
+ q(0),
+ ],
+ q(twn) => [
+ q(0215),
+ q(1),
+ ],
+ q(tza) => [
+ q(0217),
+ q(1),
+ ],
+ q(uga) => [
+ q(0229),
+ q(0),
+ ],
+ q(ukr) => [
+ q(0230),
+ q(0),
+ ],
+ q(umi) => [
+ q(0234),
+ q(0),
+ ],
+ q(ury) => [
+ q(0235),
+ q(0),
+ ],
+ q(usa) => [
+ q(0233),
+ q(1),
+ ],
+ q(uzb) => [
+ q(0236),
+ q(0),
+ ],
+ q(vat) => [
+ q(0096),
+ q(1),
+ ],
+ q(vct) => [
+ q(0190),
+ q(0),
+ ],
+ q(ven) => [
+ q(0238),
+ q(1),
+ ],
+ q(vgb) => [
+ q(0240),
+ q(1),
+ ],
+ q(vir) => [
+ q(0241),
+ q(1),
+ ],
+ q(vnm) => [
+ q(0239),
+ q(0),
+ ],
+ q(vut) => [
+ q(0237),
+ q(0),
+ ],
+ q(wlf) => [
+ q(0242),
+ q(1),
+ ],
+ q(wsm) => [
+ q(0191),
+ q(0),
+ ],
+ q(yem) => [
+ q(0244),
+ q(0),
+ ],
+ q(zaf) => [
+ q(0204),
+ q(0),
+ ],
+ q(zmb) => [
+ q(0245),
+ q(0),
+ ],
+ q(zwe) => [
+ q(0246),
+ q(0),
+ ],
+ },
+ q(dom) => {
+ q(AC) => [
+ q(0272),
+ q(0),
+ ],
+ q(AD) => [
+ q(0006),
+ q(0),
+ ],
+ q(AE) => [
+ q(0231),
+ q(0),
+ ],
+ q(AF) => [
+ q(0001),
+ q(0),
+ ],
+ q(AG) => [
+ q(0010),
+ q(0),
+ ],
+ q(AI) => [
+ q(0008),
+ q(0),
+ ],
+ q(AL) => [
+ q(0003),
+ q(0),
+ ],
+ q(AM) => [
+ q(0012),
+ q(0),
+ ],
+ q(AN) => [
+ q(0156),
+ q(0),
+ ],
+ q(AO) => [
+ q(0007),
+ q(0),
+ ],
+ q(AQ) => [
+ q(0009),
+ q(0),
+ ],
+ q(AR) => [
+ q(0011),
+ q(0),
+ ],
+ q(AS) => [
+ q(0005),
+ q(0),
+ ],
+ q(AT) => [
+ q(0015),
+ q(0),
+ ],
+ q(AU) => [
+ q(0014),
+ q(0),
+ ],
+ q(AW) => [
+ q(0013),
+ q(0),
+ ],
+ q(AX) => [
+ q(0002),
+ q(0),
+ ],
+ q(AZ) => [
+ q(0016),
+ q(0),
+ ],
+ q(BA) => [
+ q(0028),
+ q(0),
+ ],
+ q(BB) => [
+ q(0020),
+ q(0),
+ ],
+ q(BD) => [
+ q(0019),
+ q(0),
+ ],
+ q(BE) => [
+ q(0022),
+ q(0),
+ ],
+ q(BF) => [
+ q(0035),
+ q(0),
+ ],
+ q(BG) => [
+ q(0034),
+ q(0),
+ ],
+ q(BH) => [
+ q(0018),
+ q(0),
+ ],
+ q(BI) => [
+ q(0036),
+ q(0),
+ ],
+ q(BJ) => [
+ q(0024),
+ q(0),
+ ],
+ q(BL) => [
+ q(0184),
+ q(0),
+ ],
+ q(BM) => [
+ q(0025),
+ q(0),
+ ],
+ q(BN) => [
+ q(0033),
+ q(0),
+ ],
+ q(BO) => [
+ q(0027),
+ q(2),
+ ],
+ q(BR) => [
+ q(0031),
+ q(0),
+ ],
+ q(BS) => [
+ q(0017),
+ q(0),
+ ],
+ q(BT) => [
+ q(0026),
+ q(0),
+ ],
+ q(BV) => [
+ q(0030),
+ q(0),
+ ],
+ q(BW) => [
+ q(0029),
+ q(0),
+ ],
+ q(BY) => [
+ q(0021),
+ q(0),
+ ],
+ q(BZ) => [
+ q(0023),
+ q(0),
+ ],
+ q(CA) => [
+ q(0039),
+ q(0),
+ ],
+ q(CC) => [
+ q(0047),
+ q(0),
+ ],
+ q(CD) => [
+ q(0051),
+ q(0),
+ ],
+ q(CF) => [
+ q(0042),
+ q(0),
+ ],
+ q(CG) => [
+ q(0050),
+ q(0),
+ ],
+ q(CH) => [
+ q(0213),
+ q(0),
+ ],
+ q(CI) => [
+ q(0054),
+ q(0),
+ ],
+ q(CK) => [
+ q(0052),
+ q(0),
+ ],
+ q(CL) => [
+ q(0044),
+ q(0),
+ ],
+ q(CM) => [
+ q(0038),
+ q(0),
+ ],
+ q(CN) => [
+ q(0045),
+ q(0),
+ ],
+ q(CO) => [
+ q(0048),
+ q(0),
+ ],
+ q(CR) => [
+ q(0053),
+ q(0),
+ ],
+ q(CU) => [
+ q(0056),
+ q(0),
+ ],
+ q(CV) => [
+ q(0040),
+ q(0),
+ ],
+ q(CX) => [
+ q(0046),
+ q(0),
+ ],
+ q(CY) => [
+ q(0057),
+ q(0),
+ ],
+ q(CZ) => [
+ q(0058),
+ q(0),
+ ],
+ q(DE) => [
+ q(0081),
+ q(0),
+ ],
+ q(DJ) => [
+ q(0060),
+ q(0),
+ ],
+ q(DK) => [
+ q(0059),
+ q(0),
+ ],
+ q(DM) => [
+ q(0061),
+ q(0),
+ ],
+ q(DO) => [
+ q(0062),
+ q(0),
+ ],
+ q(DZ) => [
+ q(0004),
+ q(0),
+ ],
+ q(EC) => [
+ q(0063),
+ q(0),
+ ],
+ q(EE) => [
+ q(0068),
+ q(0),
+ ],
+ q(EG) => [
+ q(0064),
+ q(0),
+ ],
+ q(EH) => [
+ q(0243),
+ q(0),
+ ],
+ q(ER) => [
+ q(0067),
+ q(0),
+ ],
+ q(ES) => [
+ q(0206),
+ q(0),
+ ],
+ q(ET) => [
+ q(0069),
+ q(0),
+ ],
+ q(EU) => [
+ q(0273),
+ q(0),
+ ],
+ q(FI) => [
+ q(0073),
+ q(0),
+ ],
+ q(FJ) => [
+ q(0072),
+ q(0),
+ ],
+ q(FK) => [
+ q(0070),
+ q(0),
+ ],
+ q(FM) => [
+ q(0143),
+ q(0),
+ ],
+ q(FO) => [
+ q(0071),
+ q(0),
+ ],
+ q(FR) => [
+ q(0074),
+ q(0),
+ ],
+ q(FX) => [
+ q(0276),
+ q(0),
+ ],
+ q(GA) => [
+ q(0078),
+ q(0),
+ ],
+ q(GB) => [
+ q(0232),
+ q(0),
+ ],
+ q(GD) => [
+ q(0086),
+ q(0),
+ ],
+ q(GE) => [
+ q(0080),
+ q(0),
+ ],
+ q(GF) => [
+ q(0075),
+ q(0),
+ ],
+ q(GG) => [
+ q(0090),
+ q(0),
+ ],
+ q(GH) => [
+ q(0082),
+ q(0),
+ ],
+ q(GI) => [
+ q(0083),
+ q(0),
+ ],
+ q(GL) => [
+ q(0085),
+ q(0),
+ ],
+ q(GM) => [
+ q(0079),
+ q(0),
+ ],
+ q(GN) => [
+ q(0091),
+ q(0),
+ ],
+ q(GP) => [
+ q(0087),
+ q(0),
+ ],
+ q(GQ) => [
+ q(0066),
+ q(0),
+ ],
+ q(GR) => [
+ q(0084),
+ q(0),
+ ],
+ q(GS) => [
+ q(0205),
+ q(0),
+ ],
+ q(GT) => [
+ q(0089),
+ q(0),
+ ],
+ q(GU) => [
+ q(0088),
+ q(0),
+ ],
+ q(GW) => [
+ q(0092),
+ q(0),
+ ],
+ q(GY) => [
+ q(0093),
+ q(0),
+ ],
+ q(HK) => [
+ q(0098),
+ q(0),
+ ],
+ q(HM) => [
+ q(0095),
+ q(0),
+ ],
+ q(HN) => [
+ q(0097),
+ q(0),
+ ],
+ q(HR) => [
+ q(0055),
+ q(0),
+ ],
+ q(HT) => [
+ q(0094),
+ q(0),
+ ],
+ q(HU) => [
+ q(0099),
+ q(0),
+ ],
+ q(ID) => [
+ q(0102),
+ q(0),
+ ],
+ q(IE) => [
+ q(0105),
+ q(0),
+ ],
+ q(IL) => [
+ q(0107),
+ q(0),
+ ],
+ q(IM) => [
+ q(0106),
+ q(0),
+ ],
+ q(IN) => [
+ q(0101),
+ q(0),
+ ],
+ q(IO) => [
+ q(0032),
+ q(0),
+ ],
+ q(IQ) => [
+ q(0104),
+ q(0),
+ ],
+ q(IR) => [
+ q(0103),
+ q(0),
+ ],
+ q(IS) => [
+ q(0100),
+ q(0),
+ ],
+ q(IT) => [
+ q(0108),
+ q(0),
+ ],
+ q(JE) => [
+ q(0111),
+ q(0),
+ ],
+ q(JM) => [
+ q(0109),
+ q(0),
+ ],
+ q(JO) => [
+ q(0112),
+ q(0),
+ ],
+ q(JP) => [
+ q(0110),
+ q(0),
+ ],
+ q(KE) => [
+ q(0114),
+ q(0),
+ ],
+ q(KG) => [
+ q(0119),
+ q(0),
+ ],
+ q(KH) => [
+ q(0037),
+ q(0),
+ ],
+ q(KI) => [
+ q(0115),
+ q(0),
+ ],
+ q(KM) => [
+ q(0049),
+ q(0),
+ ],
+ q(KN) => [
+ q(0186),
+ q(0),
+ ],
+ q(KP) => [
+ q(0116),
+ q(0),
+ ],
+ q(KR) => [
+ q(0117),
+ q(0),
+ ],
+ q(KW) => [
+ q(0118),
+ q(0),
+ ],
+ q(KY) => [
+ q(0041),
+ q(0),
+ ],
+ q(KZ) => [
+ q(0113),
+ q(0),
+ ],
+ q(LA) => [
+ q(0120),
+ q(0),
+ ],
+ q(LB) => [
+ q(0122),
+ q(0),
+ ],
+ q(LC) => [
+ q(0187),
+ q(0),
+ ],
+ q(LI) => [
+ q(0126),
+ q(0),
+ ],
+ q(LK) => [
+ q(0207),
+ q(0),
+ ],
+ q(LR) => [
+ q(0124),
+ q(0),
+ ],
+ q(LS) => [
+ q(0123),
+ q(0),
+ ],
+ q(LT) => [
+ q(0127),
+ q(0),
+ ],
+ q(LU) => [
+ q(0128),
+ q(0),
+ ],
+ q(LV) => [
+ q(0121),
+ q(0),
+ ],
+ q(LY) => [
+ q(0125),
+ q(0),
+ ],
+ q(MA) => [
+ q(0149),
+ q(0),
+ ],
+ q(MC) => [
+ q(0145),
+ q(0),
+ ],
+ q(MD) => [
+ q(0144),
+ q(0),
+ ],
+ q(ME) => [
+ q(0147),
+ q(0),
+ ],
+ q(MF) => [
+ q(0188),
+ q(0),
+ ],
+ q(MG) => [
+ q(0131),
+ q(0),
+ ],
+ q(MH) => [
+ q(0137),
+ q(0),
+ ],
+ q(MK) => [
+ q(0130),
+ q(0),
+ ],
+ q(ML) => [
+ q(0135),
+ q(0),
+ ],
+ q(MM) => [
+ q(0151),
+ q(0),
+ ],
+ q(MN) => [
+ q(0146),
+ q(0),
+ ],
+ q(MO) => [
+ q(0129),
+ q(0),
+ ],
+ q(MP) => [
+ q(0164),
+ q(0),
+ ],
+ q(MQ) => [
+ q(0138),
+ q(0),
+ ],
+ q(MR) => [
+ q(0139),
+ q(0),
+ ],
+ q(MS) => [
+ q(0148),
+ q(0),
+ ],
+ q(MT) => [
+ q(0136),
+ q(0),
+ ],
+ q(MU) => [
+ q(0140),
+ q(0),
+ ],
+ q(MV) => [
+ q(0134),
+ q(0),
+ ],
+ q(MW) => [
+ q(0132),
+ q(0),
+ ],
+ q(MX) => [
+ q(0142),
+ q(0),
+ ],
+ q(MY) => [
+ q(0133),
+ q(0),
+ ],
+ q(MZ) => [
+ q(0150),
+ q(0),
+ ],
+ q(NA) => [
+ q(0152),
+ q(0),
+ ],
+ q(NC) => [
+ q(0157),
+ q(0),
+ ],
+ q(NE) => [
+ q(0160),
+ q(0),
+ ],
+ q(NF) => [
+ q(0163),
+ q(0),
+ ],
+ q(NG) => [
+ q(0161),
+ q(0),
+ ],
+ q(NI) => [
+ q(0159),
+ q(0),
+ ],
+ q(NL) => [
+ q(0155),
+ q(0),
+ ],
+ q(NO) => [
+ q(0165),
+ q(0),
+ ],
+ q(NP) => [
+ q(0154),
+ q(0),
+ ],
+ q(NR) => [
+ q(0153),
+ q(0),
+ ],
+ q(NU) => [
+ q(0162),
+ q(0),
+ ],
+ q(NZ) => [
+ q(0158),
+ q(0),
+ ],
+ q(OM) => [
+ q(0166),
+ q(0),
+ ],
+ q(PA) => [
+ q(0170),
+ q(0),
+ ],
+ q(PE) => [
+ q(0173),
+ q(0),
+ ],
+ q(PF) => [
+ q(0076),
+ q(0),
+ ],
+ q(PG) => [
+ q(0171),
+ q(0),
+ ],
+ q(PH) => [
+ q(0174),
+ q(0),
+ ],
+ q(PK) => [
+ q(0167),
+ q(0),
+ ],
+ q(PL) => [
+ q(0176),
+ q(0),
+ ],
+ q(PM) => [
+ q(0189),
+ q(0),
+ ],
+ q(PN) => [
+ q(0175),
+ q(0),
+ ],
+ q(PR) => [
+ q(0178),
+ q(0),
+ ],
+ q(PS) => [
+ q(0169),
+ q(0),
+ ],
+ q(PT) => [
+ q(0177),
+ q(0),
+ ],
+ q(PW) => [
+ q(0168),
+ q(0),
+ ],
+ q(PY) => [
+ q(0172),
+ q(0),
+ ],
+ q(QA) => [
+ q(0179),
+ q(0),
+ ],
+ q(RE) => [
+ q(0180),
+ q(0),
+ ],
+ q(RO) => [
+ q(0181),
+ q(0),
+ ],
+ q(RS) => [
+ q(0196),
+ q(0),
+ ],
+ q(RU) => [
+ q(0182),
+ q(0),
+ ],
+ q(RW) => [
+ q(0183),
+ q(0),
+ ],
+ q(SA) => [
+ q(0194),
+ q(0),
+ ],
+ q(SB) => [
+ q(0202),
+ q(0),
+ ],
+ q(SC) => [
+ q(0197),
+ q(0),
+ ],
+ q(SD) => [
+ q(0208),
+ q(0),
+ ],
+ q(SE) => [
+ q(0212),
+ q(0),
+ ],
+ q(SG) => [
+ q(0199),
+ q(0),
+ ],
+ q(SH) => [
+ q(0185),
+ q(0),
+ ],
+ q(SI) => [
+ q(0201),
+ q(0),
+ ],
+ q(SJ) => [
+ q(0210),
+ q(0),
+ ],
+ q(SK) => [
+ q(0200),
+ q(0),
+ ],
+ q(SL) => [
+ q(0198),
+ q(0),
+ ],
+ q(SM) => [
+ q(0192),
+ q(0),
+ ],
+ q(SN) => [
+ q(0195),
+ q(0),
+ ],
+ q(SO) => [
+ q(0203),
+ q(0),
+ ],
+ q(SR) => [
+ q(0209),
+ q(0),
+ ],
+ q(ST) => [
+ q(0193),
+ q(0),
+ ],
+ q(SU) => [
+ q(0274),
+ q(0),
+ ],
+ q(SV) => [
+ q(0065),
+ q(0),
+ ],
+ q(SY) => [
+ q(0214),
+ q(0),
+ ],
+ q(SZ) => [
+ q(0211),
+ q(0),
+ ],
+ q(TC) => [
+ q(0227),
+ q(0),
+ ],
+ q(TD) => [
+ q(0043),
+ q(0),
+ ],
+ q(TF) => [
+ q(0077),
+ q(0),
+ ],
+ q(TG) => [
+ q(0220),
+ q(0),
+ ],
+ q(TH) => [
+ q(0218),
+ q(0),
+ ],
+ q(TJ) => [
+ q(0216),
+ q(0),
+ ],
+ q(TK) => [
+ q(0221),
+ q(0),
+ ],
+ q(TL) => [
+ q(0219),
+ q(0),
+ ],
+ q(TM) => [
+ q(0226),
+ q(0),
+ ],
+ q(TN) => [
+ q(0224),
+ q(0),
+ ],
+ q(TO) => [
+ q(0222),
+ q(0),
+ ],
+ q(TP) => [
+ q(0275),
+ q(0),
+ ],
+ q(TR) => [
+ q(0225),
+ q(0),
+ ],
+ q(TT) => [
+ q(0223),
+ q(0),
+ ],
+ q(TV) => [
+ q(0228),
+ q(0),
+ ],
+ q(TW) => [
+ q(0215),
+ q(1),
+ ],
+ q(TZ) => [
+ q(0217),
+ q(0),
+ ],
+ q(UA) => [
+ q(0230),
+ q(0),
+ ],
+ q(UG) => [
+ q(0229),
+ q(0),
+ ],
+ q(UK) => [
+ q(0232),
+ q(0),
+ ],
+ q(UM) => [
+ q(0234),
+ q(0),
+ ],
+ q(US) => [
+ q(0233),
+ q(0),
+ ],
+ q(UY) => [
+ q(0235),
+ q(0),
+ ],
+ q(UZ) => [
+ q(0236),
+ q(0),
+ ],
+ q(VA) => [
+ q(0096),
+ q(0),
+ ],
+ q(VC) => [
+ q(0190),
+ q(0),
+ ],
+ q(VE) => [
+ q(0238),
+ q(0),
+ ],
+ q(VG) => [
+ q(0240),
+ q(0),
+ ],
+ q(VI) => [
+ q(0241),
+ q(0),
+ ],
+ q(VN) => [
+ q(0239),
+ q(0),
+ ],
+ q(VU) => [
+ q(0237),
+ q(0),
+ ],
+ q(WF) => [
+ q(0242),
+ q(0),
+ ],
+ q(WS) => [
+ q(0191),
+ q(0),
+ ],
+ q(YE) => [
+ q(0244),
+ q(0),
+ ],
+ q(YT) => [
+ q(0141),
+ q(0),
+ ],
+ q(ZA) => [
+ q(0204),
+ q(0),
+ ],
+ q(ZM) => [
+ q(0245),
+ q(0),
+ ],
+ q(ZW) => [
+ q(0246),
+ q(0),
+ ],
+ },
+ q(fips) => {
+ q(AA) => [
+ q(0013),
+ q(0),
+ ],
+ q(AC) => [
+ q(0010),
+ q(0),
+ ],
+ q(AE) => [
+ q(0231),
+ q(0),
+ ],
+ q(AF) => [
+ q(0001),
+ q(1),
+ ],
+ q(AG) => [
+ q(0004),
+ q(1),
+ ],
+ q(AJ) => [
+ q(0016),
+ q(1),
+ ],
+ q(AL) => [
+ q(0003),
+ q(1),
+ ],
+ q(AM) => [
+ q(0012),
+ q(1),
+ ],
+ q(AN) => [
+ q(0006),
+ q(1),
+ ],
+ q(AO) => [
+ q(0007),
+ q(1),
+ ],
+ q(AQ) => [
+ q(0005),
+ q(1),
+ ],
+ q(AR) => [
+ q(0011),
+ q(1),
+ ],
+ q(AS) => [
+ q(0014),
+ q(1),
+ ],
+ q(AT) => [
+ q(0249),
+ q(1),
+ ],
+ q(AU) => [
+ q(0015),
+ q(1),
+ ],
+ q(AV) => [
+ q(0008),
+ q(0),
+ ],
+ q(AY) => [
+ q(0009),
+ q(0),
+ ],
+ q(BA) => [
+ q(0018),
+ q(1),
+ ],
+ q(BB) => [
+ q(0020),
+ q(0),
+ ],
+ q(BC) => [
+ q(0029),
+ q(1),
+ ],
+ q(BD) => [
+ q(0025),
+ q(0),
+ ],
+ q(BE) => [
+ q(0022),
+ q(1),
+ ],
+ q(BF) => [
+ q(0017),
+ q(2),
+ ],
+ q(BG) => [
+ q(0019),
+ q(1),
+ ],
+ q(BH) => [
+ q(0023),
+ q(0),
+ ],
+ q(BK) => [
+ q(0028),
+ q(0),
+ ],
+ q(BL) => [
+ q(0027),
+ q(3),
+ ],
+ q(BM) => [
+ q(0151),
+ q(2),
+ ],
+ q(BN) => [
+ q(0024),
+ q(1),
+ ],
+ q(BO) => [
+ q(0021),
+ q(1),
+ ],
+ q(BP) => [
+ q(0202),
+ q(0),
+ ],
+ q(BQ) => [
+ q(0264),
+ q(0),
+ ],
+ q(BR) => [
+ q(0031),
+ q(1),
+ ],
+ q(BS) => [
+ q(0251),
+ q(0),
+ ],
+ q(BT) => [
+ q(0026),
+ q(1),
+ ],
+ q(BU) => [
+ q(0034),
+ q(0),
+ ],
+ q(BV) => [
+ q(0030),
+ q(0),
+ ],
+ q(BX) => [
+ q(0033),
+ q(2),
+ ],
+ q(BY) => [
+ q(0036),
+ q(1),
+ ],
+ q(CA) => [
+ q(0039),
+ q(0),
+ ],
+ q(CB) => [
+ q(0037),
+ q(1),
+ ],
+ q(CD) => [
+ q(0043),
+ q(1),
+ ],
+ q(CE) => [
+ q(0207),
+ q(1),
+ ],
+ q(CF) => [
+ q(0050),
+ q(2),
+ ],
+ q(CG) => [
+ q(0051),
+ q(2),
+ ],
+ q(CH) => [
+ q(0045),
+ q(1),
+ ],
+ q(CI) => [
+ q(0044),
+ q(1),
+ ],
+ q(CJ) => [
+ q(0041),
+ q(0),
+ ],
+ q(CK) => [
+ q(0047),
+ q(1),
+ ],
+ q(CM) => [
+ q(0038),
+ q(1),
+ ],
+ q(CN) => [
+ q(0049),
+ q(1),
+ ],
+ q(CO) => [
+ q(0048),
+ q(1),
+ ],
+ q(CQ) => [
+ q(0164),
+ q(1),
+ ],
+ q(CR) => [
+ q(0253),
+ q(1),
+ ],
+ q(CS) => [
+ q(0053),
+ q(1),
+ ],
+ q(CT) => [
+ q(0042),
+ q(0),
+ ],
+ q(CU) => [
+ q(0056),
+ q(1),
+ ],
+ q(CV) => [
+ q(0040),
+ q(1),
+ ],
+ q(CW) => [
+ q(0052),
+ q(0),
+ ],
+ q(CY) => [
+ q(0057),
+ q(1),
+ ],
+ q(DA) => [
+ q(0059),
+ q(1),
+ ],
+ q(DJ) => [
+ q(0060),
+ q(1),
+ ],
+ q(DO) => [
+ q(0061),
+ q(1),
+ ],
+ q(DQ) => [
+ q(0259),
+ q(0),
+ ],
+ q(DR) => [
+ q(0062),
+ q(0),
+ ],
+ q(EC) => [
+ q(0063),
+ q(1),
+ ],
+ q(EG) => [
+ q(0064),
+ q(1),
+ ],
+ q(EI) => [
+ q(0105),
+ q(0),
+ ],
+ q(EK) => [
+ q(0066),
+ q(1),
+ ],
+ q(EN) => [
+ q(0068),
+ q(1),
+ ],
+ q(ER) => [
+ q(0067),
+ q(1),
+ ],
+ q(ES) => [
+ q(0065),
+ q(1),
+ ],
+ q(ET) => [
+ q(0069),
+ q(1),
+ ],
+ q(EU) => [
+ q(0254),
+ q(0),
+ ],
+ q(EZ) => [
+ q(0058),
+ q(0),
+ ],
+ q(FG) => [
+ q(0075),
+ q(1),
+ ],
+ q(FI) => [
+ q(0073),
+ q(1),
+ ],
+ q(FJ) => [
+ q(0072),
+ q(1),
+ ],
+ q(FK) => [
+ q(0070),
+ q(1),
+ ],
+ q(FM) => [
+ q(0143),
+ q(2),
+ ],
+ q(FO) => [
+ q(0071),
+ q(0),
+ ],
+ q(FP) => [
+ q(0076),
+ q(1),
+ ],
+ q(FQ) => [
+ q(0250),
+ q(0),
+ ],
+ q(FR) => [
+ q(0074),
+ q(1),
+ ],
+ q(FS) => [
+ q(0077),
+ q(2),
+ ],
+ q(GA) => [
+ q(0079),
+ q(2),
+ ],
+ q(GB) => [
+ q(0078),
+ q(1),
+ ],
+ q(GG) => [
+ q(0080),
+ q(0),
+ ],
+ q(GH) => [
+ q(0082),
+ q(1),
+ ],
+ q(GI) => [
+ q(0083),
+ q(0),
+ ],
+ q(GJ) => [
+ q(0086),
+ q(0),
+ ],
+ q(GK) => [
+ q(0090),
+ q(1),
+ ],
+ q(GL) => [
+ q(0085),
+ q(0),
+ ],
+ q(GM) => [
+ q(0081),
+ q(1),
+ ],
+ q(GO) => [
+ q(0256),
+ q(0),
+ ],
+ q(GP) => [
+ q(0087),
+ q(1),
+ ],
+ q(GQ) => [
+ q(0088),
+ q(1),
+ ],
+ q(GR) => [
+ q(0084),
+ q(1),
+ ],
+ q(GT) => [
+ q(0089),
+ q(1),
+ ],
+ q(GV) => [
+ q(0091),
+ q(1),
+ ],
+ q(GY) => [
+ q(0093),
+ q(1),
+ ],
+ q(GZ) => [
+ q(0255),
+ q(0),
+ ],
+ q(HA) => [
+ q(0094),
+ q(1),
+ ],
+ q(HK) => [
+ q(0098),
+ q(3),
+ ],
+ q(HM) => [
+ q(0095),
+ q(1),
+ ],
+ q(HO) => [
+ q(0097),
+ q(1),
+ ],
+ q(HQ) => [
+ q(0257),
+ q(0),
+ ],
+ q(HR) => [
+ q(0055),
+ q(1),
+ ],
+ q(HU) => [
+ q(0099),
+ q(1),
+ ],
+ q(IC) => [
+ q(0100),
+ q(1),
+ ],
+ q(ID) => [
+ q(0102),
+ q(1),
+ ],
+ q(IM) => [
+ q(0106),
+ q(0),
+ ],
+ q(IN) => [
+ q(0101),
+ q(1),
+ ],
+ q(IO) => [
+ q(0032),
+ q(0),
+ ],
+ q(IP) => [
+ q(0252),
+ q(0),
+ ],
+ q(IR) => [
+ q(0103),
+ q(3),
+ ],
+ q(IS) => [
+ q(0107),
+ q(1),
+ ],
+ q(IT) => [
+ q(0108),
+ q(1),
+ ],
+ q(IV) => [
+ q(0054),
+ q(1),
+ ],
+ q(IZ) => [
+ q(0104),
+ q(1),
+ ],
+ q(JA) => [
+ q(0110),
+ q(0),
+ ],
+ q(JE) => [
+ q(0111),
+ q(1),
+ ],
+ q(JM) => [
+ q(0109),
+ q(0),
+ ],
+ q(JN) => [
+ q(0258),
+ q(0),
+ ],
+ q(JO) => [
+ q(0112),
+ q(1),
+ ],
+ q(JQ) => [
+ q(0260),
+ q(0),
+ ],
+ q(JU) => [
+ q(0261),
+ q(0),
+ ],
+ q(KE) => [
+ q(0114),
+ q(1),
+ ],
+ q(KG) => [
+ q(0119),
+ q(1),
+ ],
+ q(KN) => [
+ q(0116),
+ q(2),
+ ],
+ q(KQ) => [
+ q(0262),
+ q(0),
+ ],
+ q(KR) => [
+ q(0115),
+ q(1),
+ ],
+ q(KS) => [
+ q(0117),
+ q(2),
+ ],
+ q(KT) => [
+ q(0046),
+ q(1),
+ ],
+ q(KU) => [
+ q(0118),
+ q(1),
+ ],
+ q(KV) => [
+ q(0277),
+ q(0),
+ ],
+ q(KZ) => [
+ q(0113),
+ q(1),
+ ],
+ q(LA) => [
+ q(0120),
+ q(1),
+ ],
+ q(LE) => [
+ q(0122),
+ q(1),
+ ],
+ q(LG) => [
+ q(0121),
+ q(1),
+ ],
+ q(LH) => [
+ q(0127),
+ q(1),
+ ],
+ q(LI) => [
+ q(0124),
+ q(1),
+ ],
+ q(LO) => [
+ q(0200),
+ q(1),
+ ],
+ q(LQ) => [
+ q(0265),
+ q(0),
+ ],
+ q(LS) => [
+ q(0126),
+ q(1),
+ ],
+ q(LT) => [
+ q(0123),
+ q(1),
+ ],
+ q(LU) => [
+ q(0128),
+ q(1),
+ ],
+ q(LY) => [
+ q(0125),
+ q(2),
+ ],
+ q(MA) => [
+ q(0131),
+ q(1),
+ ],
+ q(MB) => [
+ q(0138),
+ q(1),
+ ],
+ q(MC) => [
+ q(0129),
+ q(3),
+ ],
+ q(MD) => [
+ q(0144),
+ q(2),
+ ],
+ q(MF) => [
+ q(0141),
+ q(1),
+ ],
+ q(MG) => [
+ q(0146),
+ q(0),
+ ],
+ q(MH) => [
+ q(0148),
+ q(0),
+ ],
+ q(MI) => [
+ q(0132),
+ q(1),
+ ],
+ q(MJ) => [
+ q(0147),
+ q(0),
+ ],
+ q(MK) => [
+ q(0130),
+ q(3),
+ ],
+ q(ML) => [
+ q(0135),
+ q(1),
+ ],
+ q(MN) => [
+ q(0145),
+ q(1),
+ ],
+ q(MO) => [
+ q(0149),
+ q(1),
+ ],
+ q(MP) => [
+ q(0140),
+ q(1),
+ ],
+ q(MQ) => [
+ q(0263),
+ q(0),
+ ],
+ q(MR) => [
+ q(0139),
+ q(1),
+ ],
+ q(MT) => [
+ q(0136),
+ q(1),
+ ],
+ q(MU) => [
+ q(0166),
+ q(1),
+ ],
+ q(MV) => [
+ q(0134),
+ q(1),
+ ],
+ q(MX) => [
+ q(0142),
+ q(1),
+ ],
+ q(MY) => [
+ q(0133),
+ q(0),
+ ],
+ q(MZ) => [
+ q(0150),
+ q(1),
+ ],
+ q(NC) => [
+ q(0157),
+ q(1),
+ ],
+ q(NE) => [
+ q(0162),
+ q(0),
+ ],
+ q(NF) => [
+ q(0163),
+ q(1),
+ ],
+ q(NG) => [
+ q(0160),
+ q(1),
+ ],
+ q(NH) => [
+ q(0237),
+ q(1),
+ ],
+ q(NI) => [
+ q(0161),
+ q(1),
+ ],
+ q(NL) => [
+ q(0155),
+ q(1),
+ ],
+ q(NO) => [
+ q(0165),
+ q(1),
+ ],
+ q(NP) => [
+ q(0154),
+ q(1),
+ ],
+ q(NR) => [
+ q(0153),
+ q(1),
+ ],
+ q(NS) => [
+ q(0209),
+ q(1),
+ ],
+ q(NT) => [
+ q(0156),
+ q(0),
+ ],
+ q(NU) => [
+ q(0159),
+ q(1),
+ ],
+ q(NZ) => [
+ q(0158),
+ q(0),
+ ],
+ q(PA) => [
+ q(0172),
+ q(1),
+ ],
+ q(PC) => [
+ q(0175),
+ q(2),
+ ],
+ q(PE) => [
+ q(0173),
+ q(1),
+ ],
+ q(PF) => [
+ q(0266),
+ q(0),
+ ],
+ q(PG) => [
+ q(0267),
+ q(0),
+ ],
+ q(PK) => [
+ q(0167),
+ q(1),
+ ],
+ q(PL) => [
+ q(0176),
+ q(1),
+ ],
+ q(PM) => [
+ q(0170),
+ q(1),
+ ],
+ q(PO) => [
+ q(0177),
+ q(1),
+ ],
+ q(PP) => [
+ q(0171),
+ q(1),
+ ],
+ q(PS) => [
+ q(0168),
+ q(1),
+ ],
+ q(PU) => [
+ q(0092),
+ q(1),
+ ],
+ q(QA) => [
+ q(0179),
+ q(1),
+ ],
+ q(RE) => [
+ q(0180),
+ q(1),
+ ],
+ q(RI) => [
+ q(0196),
+ q(0),
+ ],
+ q(RM) => [
+ q(0137),
+ q(1),
+ ],
+ q(RN) => [
+ q(0188),
+ q(0),
+ ],
+ q(RO) => [
+ q(0181),
+ q(0),
+ ],
+ q(RP) => [
+ q(0174),
+ q(1),
+ ],
+ q(RQ) => [
+ q(0178),
+ q(1),
+ ],
+ q(RS) => [
+ q(0182),
+ q(1),
+ ],
+ q(RW) => [
+ q(0183),
+ q(1),
+ ],
+ q(SA) => [
+ q(0194),
+ q(1),
+ ],
+ q(SB) => [
+ q(0189),
+ q(1),
+ ],
+ q(SC) => [
+ q(0186),
+ q(1),
+ ],
+ q(SE) => [
+ q(0197),
+ q(1),
+ ],
+ q(SF) => [
+ q(0204),
+ q(1),
+ ],
+ q(SG) => [
+ q(0195),
+ q(1),
+ ],
+ q(SH) => [
+ q(0185),
+ q(1),
+ ],
+ q(SI) => [
+ q(0201),
+ q(1),
+ ],
+ q(SL) => [
+ q(0198),
+ q(1),
+ ],
+ q(SM) => [
+ q(0192),
+ q(1),
+ ],
+ q(SN) => [
+ q(0199),
+ q(1),
+ ],
+ q(SO) => [
+ q(0203),
+ q(0),
+ ],
+ q(SP) => [
+ q(0206),
+ q(1),
+ ],
+ q(ST) => [
+ q(0187),
+ q(0),
+ ],
+ q(SU) => [
+ q(0208),
+ q(1),
+ ],
+ q(SV) => [
+ q(0268),
+ q(0),
+ ],
+ q(SW) => [
+ q(0212),
+ q(1),
+ ],
+ q(SX) => [
+ q(0205),
+ q(0),
+ ],
+ q(SY) => [
+ q(0214),
+ q(1),
+ ],
+ q(SZ) => [
+ q(0213),
+ q(1),
+ ],
+ q(TB) => [
+ q(0184),
+ q(0),
+ ],
+ q(TD) => [
+ q(0223),
+ q(1),
+ ],
+ q(TE) => [
+ q(0269),
+ q(0),
+ ],
+ q(TH) => [
+ q(0218),
+ q(1),
+ ],
+ q(TI) => [
+ q(0216),
+ q(1),
+ ],
+ q(TK) => [
+ q(0227),
+ q(0),
+ ],
+ q(TL) => [
+ q(0221),
+ q(0),
+ ],
+ q(TN) => [
+ q(0222),
+ q(1),
+ ],
+ q(TO) => [
+ q(0220),
+ q(1),
+ ],
+ q(TP) => [
+ q(0193),
+ q(1),
+ ],
+ q(TS) => [
+ q(0224),
+ q(1),
+ ],
+ q(TT) => [
+ q(0219),
+ q(1),
+ ],
+ q(TU) => [
+ q(0225),
+ q(1),
+ ],
+ q(TV) => [
+ q(0228),
+ q(0),
+ ],
+ q(TW) => [
+ q(0215),
+ q(1),
+ ],
+ q(TX) => [
+ q(0226),
+ q(0),
+ ],
+ q(TZ) => [
+ q(0217),
+ q(2),
+ ],
+ q(UG) => [
+ q(0229),
+ q(0),
+ ],
+ q(UK) => [
+ q(0232),
+ q(0),
+ ],
+ q(UP) => [
+ q(0230),
+ q(0),
+ ],
+ q(US) => [
+ q(0233),
+ q(0),
+ ],
+ q(UV) => [
+ q(0035),
+ q(0),
+ ],
+ q(UY) => [
+ q(0235),
+ q(1),
+ ],
+ q(UZ) => [
+ q(0236),
+ q(1),
+ ],
+ q(VC) => [
+ q(0190),
+ q(0),
+ ],
+ q(VE) => [
+ q(0238),
+ q(3),
+ ],
+ q(VI) => [
+ q(0240),
+ q(1),
+ ],
+ q(VM) => [
+ q(0239),
+ q(2),
+ ],
+ q(VQ) => [
+ q(0241),
+ q(3),
+ ],
+ q(VT) => [
+ q(0096),
+ q(3),
+ ],
+ q(WA) => [
+ q(0152),
+ q(1),
+ ],
+ q(WE) => [
+ q(0271),
+ q(0),
+ ],
+ q(WF) => [
+ q(0242),
+ q(2),
+ ],
+ q(WI) => [
+ q(0243),
+ q(0),
+ ],
+ q(WQ) => [
+ q(0270),
+ q(0),
+ ],
+ q(WS) => [
+ q(0191),
+ q(1),
+ ],
+ q(WZ) => [
+ q(0211),
+ q(1),
+ ],
+ q(YI) => [
+ q(0248),
+ q(0),
+ ],
+ q(YM) => [
+ q(0244),
+ q(1),
+ ],
+ q(ZA) => [
+ q(0245),
+ q(1),
+ ],
+ q(ZI) => [
+ q(0246),
+ q(1),
+ ],
+ },
+ q(num) => {
+ q(004) => [
+ q(0001),
+ q(0),
+ ],
+ q(008) => [
+ q(0003),
+ q(0),
+ ],
+ q(010) => [
+ q(0009),
+ q(0),
+ ],
+ q(012) => [
+ q(0004),
+ q(0),
+ ],
+ q(016) => [
+ q(0005),
+ q(0),
+ ],
+ q(020) => [
+ q(0006),
+ q(0),
+ ],
+ q(024) => [
+ q(0007),
+ q(0),
+ ],
+ q(028) => [
+ q(0010),
+ q(0),
+ ],
+ q(031) => [
+ q(0016),
+ q(0),
+ ],
+ q(032) => [
+ q(0011),
+ q(0),
+ ],
+ q(036) => [
+ q(0014),
+ q(0),
+ ],
+ q(040) => [
+ q(0015),
+ q(0),
+ ],
+ q(044) => [
+ q(0017),
+ q(0),
+ ],
+ q(048) => [
+ q(0018),
+ q(0),
+ ],
+ q(050) => [
+ q(0019),
+ q(0),
+ ],
+ q(051) => [
+ q(0012),
+ q(0),
+ ],
+ q(052) => [
+ q(0020),
+ q(0),
+ ],
+ q(056) => [
+ q(0022),
+ q(0),
+ ],
+ q(060) => [
+ q(0025),
+ q(0),
+ ],
+ q(064) => [
+ q(0026),
+ q(0),
+ ],
+ q(068) => [
+ q(0027),
+ q(1),
+ ],
+ q(070) => [
+ q(0028),
+ q(0),
+ ],
+ q(072) => [
+ q(0029),
+ q(0),
+ ],
+ q(074) => [
+ q(0030),
+ q(0),
+ ],
+ q(076) => [
+ q(0031),
+ q(0),
+ ],
+ q(084) => [
+ q(0023),
+ q(0),
+ ],
+ q(086) => [
+ q(0032),
+ q(0),
+ ],
+ q(090) => [
+ q(0202),
+ q(0),
+ ],
+ q(092) => [
+ q(0240),
+ q(1),
+ ],
+ q(096) => [
+ q(0033),
+ q(0),
+ ],
+ q(100) => [
+ q(0034),
+ q(0),
+ ],
+ q(104) => [
+ q(0151),
+ q(0),
+ ],
+ q(108) => [
+ q(0036),
+ q(0),
+ ],
+ q(112) => [
+ q(0021),
+ q(0),
+ ],
+ q(116) => [
+ q(0037),
+ q(0),
+ ],
+ q(120) => [
+ q(0038),
+ q(0),
+ ],
+ q(124) => [
+ q(0039),
+ q(0),
+ ],
+ q(132) => [
+ q(0040),
+ q(0),
+ ],
+ q(136) => [
+ q(0041),
+ q(0),
+ ],
+ q(140) => [
+ q(0042),
+ q(0),
+ ],
+ q(144) => [
+ q(0207),
+ q(0),
+ ],
+ q(148) => [
+ q(0043),
+ q(0),
+ ],
+ q(152) => [
+ q(0044),
+ q(0),
+ ],
+ q(156) => [
+ q(0045),
+ q(0),
+ ],
+ q(158) => [
+ q(0215),
+ q(1),
+ ],
+ q(162) => [
+ q(0046),
+ q(0),
+ ],
+ q(166) => [
+ q(0047),
+ q(0),
+ ],
+ q(170) => [
+ q(0048),
+ q(0),
+ ],
+ q(174) => [
+ q(0049),
+ q(0),
+ ],
+ q(175) => [
+ q(0141),
+ q(0),
+ ],
+ q(178) => [
+ q(0050),
+ q(0),
+ ],
+ q(180) => [
+ q(0051),
+ q(1),
+ ],
+ q(184) => [
+ q(0052),
+ q(0),
+ ],
+ q(188) => [
+ q(0053),
+ q(0),
+ ],
+ q(191) => [
+ q(0055),
+ q(0),
+ ],
+ q(192) => [
+ q(0056),
+ q(0),
+ ],
+ q(196) => [
+ q(0057),
+ q(0),
+ ],
+ q(203) => [
+ q(0058),
+ q(0),
+ ],
+ q(204) => [
+ q(0024),
+ q(0),
+ ],
+ q(208) => [
+ q(0059),
+ q(0),
+ ],
+ q(212) => [
+ q(0061),
+ q(0),
+ ],
+ q(214) => [
+ q(0062),
+ q(0),
+ ],
+ q(218) => [
+ q(0063),
+ q(0),
+ ],
+ q(222) => [
+ q(0065),
+ q(0),
+ ],
+ q(226) => [
+ q(0066),
+ q(0),
+ ],
+ q(231) => [
+ q(0069),
+ q(0),
+ ],
+ q(232) => [
+ q(0067),
+ q(0),
+ ],
+ q(233) => [
+ q(0068),
+ q(0),
+ ],
+ q(234) => [
+ q(0071),
+ q(1),
+ ],
+ q(238) => [
+ q(0070),
+ q(0),
+ ],
+ q(242) => [
+ q(0072),
+ q(0),
+ ],
+ q(246) => [
+ q(0073),
+ q(0),
+ ],
+ q(248) => [
+ q(0002),
+ q(0),
+ ],
+ q(249) => [
+ q(0276),
+ q(0),
+ ],
+ q(250) => [
+ q(0074),
+ q(0),
+ ],
+ q(254) => [
+ q(0075),
+ q(0),
+ ],
+ q(258) => [
+ q(0076),
+ q(0),
+ ],
+ q(260) => [
+ q(0077),
+ q(1),
+ ],
+ q(262) => [
+ q(0060),
+ q(0),
+ ],
+ q(266) => [
+ q(0078),
+ q(0),
+ ],
+ q(268) => [
+ q(0080),
+ q(0),
+ ],
+ q(270) => [
+ q(0079),
+ q(0),
+ ],
+ q(275) => [
+ q(0169),
+ q(1),
+ ],
+ q(276) => [
+ q(0081),
+ q(0),
+ ],
+ q(288) => [
+ q(0082),
+ q(0),
+ ],
+ q(292) => [
+ q(0083),
+ q(0),
+ ],
+ q(296) => [
+ q(0115),
+ q(0),
+ ],
+ q(300) => [
+ q(0084),
+ q(0),
+ ],
+ q(304) => [
+ q(0085),
+ q(0),
+ ],
+ q(308) => [
+ q(0086),
+ q(0),
+ ],
+ q(312) => [
+ q(0087),
+ q(0),
+ ],
+ q(316) => [
+ q(0088),
+ q(0),
+ ],
+ q(320) => [
+ q(0089),
+ q(0),
+ ],
+ q(324) => [
+ q(0091),
+ q(0),
+ ],
+ q(328) => [
+ q(0093),
+ q(0),
+ ],
+ q(332) => [
+ q(0094),
+ q(0),
+ ],
+ q(334) => [
+ q(0095),
+ q(0),
+ ],
+ q(336) => [
+ q(0096),
+ q(1),
+ ],
+ q(340) => [
+ q(0097),
+ q(0),
+ ],
+ q(344) => [
+ q(0098),
+ q(1),
+ ],
+ q(348) => [
+ q(0099),
+ q(0),
+ ],
+ q(352) => [
+ q(0100),
+ q(0),
+ ],
+ q(356) => [
+ q(0101),
+ q(0),
+ ],
+ q(360) => [
+ q(0102),
+ q(0),
+ ],
+ q(364) => [
+ q(0103),
+ q(1),
+ ],
+ q(368) => [
+ q(0104),
+ q(0),
+ ],
+ q(372) => [
+ q(0105),
+ q(0),
+ ],
+ q(376) => [
+ q(0107),
+ q(0),
+ ],
+ q(380) => [
+ q(0108),
+ q(0),
+ ],
+ q(384) => [
+ q(0054),
+ q(0),
+ ],
+ q(388) => [
+ q(0109),
+ q(0),
+ ],
+ q(392) => [
+ q(0110),
+ q(0),
+ ],
+ q(398) => [
+ q(0113),
+ q(0),
+ ],
+ q(400) => [
+ q(0112),
+ q(0),
+ ],
+ q(404) => [
+ q(0114),
+ q(0),
+ ],
+ q(408) => [
+ q(0116),
+ q(1),
+ ],
+ q(410) => [
+ q(0117),
+ q(1),
+ ],
+ q(414) => [
+ q(0118),
+ q(0),
+ ],
+ q(417) => [
+ q(0119),
+ q(0),
+ ],
+ q(418) => [
+ q(0120),
+ q(0),
+ ],
+ q(422) => [
+ q(0122),
+ q(0),
+ ],
+ q(426) => [
+ q(0123),
+ q(0),
+ ],
+ q(428) => [
+ q(0121),
+ q(0),
+ ],
+ q(430) => [
+ q(0124),
+ q(0),
+ ],
+ q(434) => [
+ q(0125),
+ q(0),
+ ],
+ q(438) => [
+ q(0126),
+ q(0),
+ ],
+ q(440) => [
+ q(0127),
+ q(0),
+ ],
+ q(442) => [
+ q(0128),
+ q(0),
+ ],
+ q(446) => [
+ q(0129),
+ q(1),
+ ],
+ q(450) => [
+ q(0131),
+ q(0),
+ ],
+ q(454) => [
+ q(0132),
+ q(0),
+ ],
+ q(458) => [
+ q(0133),
+ q(0),
+ ],
+ q(462) => [
+ q(0134),
+ q(0),
+ ],
+ q(466) => [
+ q(0135),
+ q(0),
+ ],
+ q(470) => [
+ q(0136),
+ q(0),
+ ],
+ q(474) => [
+ q(0138),
+ q(0),
+ ],
+ q(478) => [
+ q(0139),
+ q(0),
+ ],
+ q(480) => [
+ q(0140),
+ q(0),
+ ],
+ q(484) => [
+ q(0142),
+ q(0),
+ ],
+ q(492) => [
+ q(0145),
+ q(0),
+ ],
+ q(496) => [
+ q(0146),
+ q(0),
+ ],
+ q(498) => [
+ q(0144),
+ q(1),
+ ],
+ q(499) => [
+ q(0147),
+ q(0),
+ ],
+ q(500) => [
+ q(0148),
+ q(0),
+ ],
+ q(504) => [
+ q(0149),
+ q(0),
+ ],
+ q(508) => [
+ q(0150),
+ q(0),
+ ],
+ q(512) => [
+ q(0166),
+ q(0),
+ ],
+ q(516) => [
+ q(0152),
+ q(0),
+ ],
+ q(520) => [
+ q(0153),
+ q(0),
+ ],
+ q(524) => [
+ q(0154),
+ q(0),
+ ],
+ q(528) => [
+ q(0155),
+ q(0),
+ ],
+ q(530) => [
+ q(0156),
+ q(0),
+ ],
+ q(533) => [
+ q(0013),
+ q(0),
+ ],
+ q(540) => [
+ q(0157),
+ q(0),
+ ],
+ q(548) => [
+ q(0237),
+ q(0),
+ ],
+ q(554) => [
+ q(0158),
+ q(0),
+ ],
+ q(558) => [
+ q(0159),
+ q(0),
+ ],
+ q(562) => [
+ q(0160),
+ q(0),
+ ],
+ q(566) => [
+ q(0161),
+ q(0),
+ ],
+ q(570) => [
+ q(0162),
+ q(0),
+ ],
+ q(574) => [
+ q(0163),
+ q(0),
+ ],
+ q(578) => [
+ q(0165),
+ q(0),
+ ],
+ q(580) => [
+ q(0164),
+ q(0),
+ ],
+ q(581) => [
+ q(0234),
+ q(0),
+ ],
+ q(583) => [
+ q(0143),
+ q(1),
+ ],
+ q(584) => [
+ q(0137),
+ q(0),
+ ],
+ q(585) => [
+ q(0168),
+ q(0),
+ ],
+ q(586) => [
+ q(0167),
+ q(0),
+ ],
+ q(591) => [
+ q(0170),
+ q(0),
+ ],
+ q(598) => [
+ q(0171),
+ q(0),
+ ],
+ q(600) => [
+ q(0172),
+ q(0),
+ ],
+ q(604) => [
+ q(0173),
+ q(0),
+ ],
+ q(608) => [
+ q(0174),
+ q(0),
+ ],
+ q(612) => [
+ q(0175),
+ q(0),
+ ],
+ q(616) => [
+ q(0176),
+ q(0),
+ ],
+ q(620) => [
+ q(0177),
+ q(0),
+ ],
+ q(624) => [
+ q(0092),
+ q(0),
+ ],
+ q(626) => [
+ q(0219),
+ q(0),
+ ],
+ q(630) => [
+ q(0178),
+ q(0),
+ ],
+ q(634) => [
+ q(0179),
+ q(0),
+ ],
+ q(638) => [
+ q(0180),
+ q(0),
+ ],
+ q(642) => [
+ q(0181),
+ q(0),
+ ],
+ q(643) => [
+ q(0182),
+ q(0),
+ ],
+ q(646) => [
+ q(0183),
+ q(0),
+ ],
+ q(652) => [
+ q(0184),
+ q(1),
+ ],
+ q(654) => [
+ q(0185),
+ q(1),
+ ],
+ q(659) => [
+ q(0186),
+ q(0),
+ ],
+ q(660) => [
+ q(0008),
+ q(0),
+ ],
+ q(662) => [
+ q(0187),
+ q(0),
+ ],
+ q(663) => [
+ q(0188),
+ q(1),
+ ],
+ q(666) => [
+ q(0189),
+ q(0),
+ ],
+ q(670) => [
+ q(0190),
+ q(0),
+ ],
+ q(674) => [
+ q(0192),
+ q(0),
+ ],
+ q(678) => [
+ q(0193),
+ q(0),
+ ],
+ q(682) => [
+ q(0194),
+ q(0),
+ ],
+ q(686) => [
+ q(0195),
+ q(0),
+ ],
+ q(688) => [
+ q(0196),
+ q(0),
+ ],
+ q(690) => [
+ q(0197),
+ q(0),
+ ],
+ q(694) => [
+ q(0198),
+ q(0),
+ ],
+ q(702) => [
+ q(0199),
+ q(0),
+ ],
+ q(703) => [
+ q(0200),
+ q(0),
+ ],
+ q(704) => [
+ q(0239),
+ q(0),
+ ],
+ q(705) => [
+ q(0201),
+ q(0),
+ ],
+ q(706) => [
+ q(0203),
+ q(0),
+ ],
+ q(710) => [
+ q(0204),
+ q(0),
+ ],
+ q(716) => [
+ q(0246),
+ q(0),
+ ],
+ q(724) => [
+ q(0206),
+ q(0),
+ ],
+ q(732) => [
+ q(0243),
+ q(0),
+ ],
+ q(736) => [
+ q(0208),
+ q(0),
+ ],
+ q(740) => [
+ q(0209),
+ q(0),
+ ],
+ q(744) => [
+ q(0210),
+ q(1),
+ ],
+ q(748) => [
+ q(0211),
+ q(0),
+ ],
+ q(752) => [
+ q(0212),
+ q(0),
+ ],
+ q(756) => [
+ q(0213),
+ q(0),
+ ],
+ q(760) => [
+ q(0214),
+ q(0),
+ ],
+ q(762) => [
+ q(0216),
+ q(0),
+ ],
+ q(764) => [
+ q(0218),
+ q(0),
+ ],
+ q(768) => [
+ q(0220),
+ q(0),
+ ],
+ q(772) => [
+ q(0221),
+ q(0),
+ ],
+ q(776) => [
+ q(0222),
+ q(0),
+ ],
+ q(780) => [
+ q(0223),
+ q(0),
+ ],
+ q(784) => [
+ q(0231),
+ q(0),
+ ],
+ q(788) => [
+ q(0224),
+ q(0),
+ ],
+ q(792) => [
+ q(0225),
+ q(0),
+ ],
+ q(795) => [
+ q(0226),
+ q(0),
+ ],
+ q(796) => [
+ q(0227),
+ q(0),
+ ],
+ q(798) => [
+ q(0228),
+ q(0),
+ ],
+ q(800) => [
+ q(0229),
+ q(0),
+ ],
+ q(804) => [
+ q(0230),
+ q(0),
+ ],
+ q(807) => [
+ q(0130),
+ q(1),
+ ],
+ q(818) => [
+ q(0064),
+ q(0),
+ ],
+ q(826) => [
+ q(0232),
+ q(1),
+ ],
+ q(830) => [
+ q(0247),
+ q(0),
+ ],
+ q(831) => [
+ q(0090),
+ q(0),
+ ],
+ q(832) => [
+ q(0111),
+ q(0),
+ ],
+ q(833) => [
+ q(0106),
+ q(0),
+ ],
+ q(834) => [
+ q(0217),
+ q(1),
+ ],
+ q(840) => [
+ q(0233),
+ q(1),
+ ],
+ q(850) => [
+ q(0241),
+ q(1),
+ ],
+ q(854) => [
+ q(0035),
+ q(0),
+ ],
+ q(858) => [
+ q(0235),
+ q(0),
+ ],
+ q(860) => [
+ q(0236),
+ q(0),
+ ],
+ q(862) => [
+ q(0238),
+ q(1),
+ ],
+ q(876) => [
+ q(0242),
+ q(1),
+ ],
+ q(882) => [
+ q(0191),
+ q(0),
+ ],
+ q(887) => [
+ q(0244),
+ q(0),
+ ],
+ q(894) => [
+ q(0245),
+ q(0),
+ ],
+ },
+};
+
+$Locale::Codes::Data{'country'}{'id2code'} = {
+ q(alpha2) => {
+ q(0001) => q(af),
+ q(0002) => q(ax),
+ q(0003) => q(al),
+ q(0004) => q(dz),
+ q(0005) => q(as),
+ q(0006) => q(ad),
+ q(0007) => q(ao),
+ q(0008) => q(ai),
+ q(0009) => q(aq),
+ q(0010) => q(ag),
+ q(0011) => q(ar),
+ q(0012) => q(am),
+ q(0013) => q(aw),
+ q(0014) => q(au),
+ q(0015) => q(at),
+ q(0016) => q(az),
+ q(0017) => q(bs),
+ q(0018) => q(bh),
+ q(0019) => q(bd),
+ q(0020) => q(bb),
+ q(0021) => q(by),
+ q(0022) => q(be),
+ q(0023) => q(bz),
+ q(0024) => q(bj),
+ q(0025) => q(bm),
+ q(0026) => q(bt),
+ q(0027) => q(bo),
+ q(0028) => q(ba),
+ q(0029) => q(bw),
+ q(0030) => q(bv),
+ q(0031) => q(br),
+ q(0032) => q(io),
+ q(0033) => q(bn),
+ q(0034) => q(bg),
+ q(0035) => q(bf),
+ q(0036) => q(bi),
+ q(0037) => q(kh),
+ q(0038) => q(cm),
+ q(0039) => q(ca),
+ q(0040) => q(cv),
+ q(0041) => q(ky),
+ q(0042) => q(cf),
+ q(0043) => q(td),
+ q(0044) => q(cl),
+ q(0045) => q(cn),
+ q(0046) => q(cx),
+ q(0047) => q(cc),
+ q(0048) => q(co),
+ q(0049) => q(km),
+ q(0050) => q(cg),
+ q(0051) => q(cd),
+ q(0052) => q(ck),
+ q(0053) => q(cr),
+ q(0054) => q(ci),
+ q(0055) => q(hr),
+ q(0056) => q(cu),
+ q(0057) => q(cy),
+ q(0058) => q(cz),
+ q(0059) => q(dk),
+ q(0060) => q(dj),
+ q(0061) => q(dm),
+ q(0062) => q(do),
+ q(0063) => q(ec),
+ q(0064) => q(eg),
+ q(0065) => q(sv),
+ q(0066) => q(gq),
+ q(0067) => q(er),
+ q(0068) => q(ee),
+ q(0069) => q(et),
+ q(0070) => q(fk),
+ q(0071) => q(fo),
+ q(0072) => q(fj),
+ q(0073) => q(fi),
+ q(0074) => q(fr),
+ q(0075) => q(gf),
+ q(0076) => q(pf),
+ q(0077) => q(tf),
+ q(0078) => q(ga),
+ q(0079) => q(gm),
+ q(0080) => q(ge),
+ q(0081) => q(de),
+ q(0082) => q(gh),
+ q(0083) => q(gi),
+ q(0084) => q(gr),
+ q(0085) => q(gl),
+ q(0086) => q(gd),
+ q(0087) => q(gp),
+ q(0088) => q(gu),
+ q(0089) => q(gt),
+ q(0090) => q(gg),
+ q(0091) => q(gn),
+ q(0092) => q(gw),
+ q(0093) => q(gy),
+ q(0094) => q(ht),
+ q(0095) => q(hm),
+ q(0096) => q(va),
+ q(0097) => q(hn),
+ q(0098) => q(hk),
+ q(0099) => q(hu),
+ q(0100) => q(is),
+ q(0101) => q(in),
+ q(0102) => q(id),
+ q(0103) => q(ir),
+ q(0104) => q(iq),
+ q(0105) => q(ie),
+ q(0106) => q(im),
+ q(0107) => q(il),
+ q(0108) => q(it),
+ q(0109) => q(jm),
+ q(0110) => q(jp),
+ q(0111) => q(je),
+ q(0112) => q(jo),
+ q(0113) => q(kz),
+ q(0114) => q(ke),
+ q(0115) => q(ki),
+ q(0116) => q(kp),
+ q(0117) => q(kr),
+ q(0118) => q(kw),
+ q(0119) => q(kg),
+ q(0120) => q(la),
+ q(0121) => q(lv),
+ q(0122) => q(lb),
+ q(0123) => q(ls),
+ q(0124) => q(lr),
+ q(0125) => q(ly),
+ q(0126) => q(li),
+ q(0127) => q(lt),
+ q(0128) => q(lu),
+ q(0129) => q(mo),
+ q(0130) => q(mk),
+ q(0131) => q(mg),
+ q(0132) => q(mw),
+ q(0133) => q(my),
+ q(0134) => q(mv),
+ q(0135) => q(ml),
+ q(0136) => q(mt),
+ q(0137) => q(mh),
+ q(0138) => q(mq),
+ q(0139) => q(mr),
+ q(0140) => q(mu),
+ q(0141) => q(yt),
+ q(0142) => q(mx),
+ q(0143) => q(fm),
+ q(0144) => q(md),
+ q(0145) => q(mc),
+ q(0146) => q(mn),
+ q(0147) => q(me),
+ q(0148) => q(ms),
+ q(0149) => q(ma),
+ q(0150) => q(mz),
+ q(0151) => q(mm),
+ q(0152) => q(na),
+ q(0153) => q(nr),
+ q(0154) => q(np),
+ q(0155) => q(nl),
+ q(0156) => q(an),
+ q(0157) => q(nc),
+ q(0158) => q(nz),
+ q(0159) => q(ni),
+ q(0160) => q(ne),
+ q(0161) => q(ng),
+ q(0162) => q(nu),
+ q(0163) => q(nf),
+ q(0164) => q(mp),
+ q(0165) => q(no),
+ q(0166) => q(om),
+ q(0167) => q(pk),
+ q(0168) => q(pw),
+ q(0169) => q(ps),
+ q(0170) => q(pa),
+ q(0171) => q(pg),
+ q(0172) => q(py),
+ q(0173) => q(pe),
+ q(0174) => q(ph),
+ q(0175) => q(pn),
+ q(0176) => q(pl),
+ q(0177) => q(pt),
+ q(0178) => q(pr),
+ q(0179) => q(qa),
+ q(0180) => q(re),
+ q(0181) => q(ro),
+ q(0182) => q(ru),
+ q(0183) => q(rw),
+ q(0184) => q(bl),
+ q(0185) => q(sh),
+ q(0186) => q(kn),
+ q(0187) => q(lc),
+ q(0188) => q(mf),
+ q(0189) => q(pm),
+ q(0190) => q(vc),
+ q(0191) => q(ws),
+ q(0192) => q(sm),
+ q(0193) => q(st),
+ q(0194) => q(sa),
+ q(0195) => q(sn),
+ q(0196) => q(rs),
+ q(0197) => q(sc),
+ q(0198) => q(sl),
+ q(0199) => q(sg),
+ q(0200) => q(sk),
+ q(0201) => q(si),
+ q(0202) => q(sb),
+ q(0203) => q(so),
+ q(0204) => q(za),
+ q(0205) => q(gs),
+ q(0206) => q(es),
+ q(0207) => q(lk),
+ q(0208) => q(sd),
+ q(0209) => q(sr),
+ q(0210) => q(sj),
+ q(0211) => q(sz),
+ q(0212) => q(se),
+ q(0213) => q(ch),
+ q(0214) => q(sy),
+ q(0215) => q(tw),
+ q(0216) => q(tj),
+ q(0217) => q(tz),
+ q(0218) => q(th),
+ q(0219) => q(tl),
+ q(0220) => q(tg),
+ q(0221) => q(tk),
+ q(0222) => q(to),
+ q(0223) => q(tt),
+ q(0224) => q(tn),
+ q(0225) => q(tr),
+ q(0226) => q(tm),
+ q(0227) => q(tc),
+ q(0228) => q(tv),
+ q(0229) => q(ug),
+ q(0230) => q(ua),
+ q(0231) => q(ae),
+ q(0232) => q(gb),
+ q(0233) => q(us),
+ q(0234) => q(um),
+ q(0235) => q(uy),
+ q(0236) => q(uz),
+ q(0237) => q(vu),
+ q(0238) => q(ve),
+ q(0239) => q(vn),
+ q(0240) => q(vg),
+ q(0241) => q(vi),
+ q(0242) => q(wf),
+ q(0243) => q(eh),
+ q(0244) => q(ye),
+ q(0245) => q(zm),
+ q(0246) => q(zw),
+ q(0276) => q(fx),
+ },
+ q(alpha3) => {
+ q(0001) => q(afg),
+ q(0002) => q(ala),
+ q(0003) => q(alb),
+ q(0004) => q(dza),
+ q(0005) => q(asm),
+ q(0006) => q(and),
+ q(0007) => q(ago),
+ q(0008) => q(aia),
+ q(0009) => q(ata),
+ q(0010) => q(atg),
+ q(0011) => q(arg),
+ q(0012) => q(arm),
+ q(0013) => q(abw),
+ q(0014) => q(aus),
+ q(0015) => q(aut),
+ q(0016) => q(aze),
+ q(0017) => q(bhs),
+ q(0018) => q(bhr),
+ q(0019) => q(bgd),
+ q(0020) => q(brb),
+ q(0021) => q(blr),
+ q(0022) => q(bel),
+ q(0023) => q(blz),
+ q(0024) => q(ben),
+ q(0025) => q(bmu),
+ q(0026) => q(btn),
+ q(0027) => q(bol),
+ q(0028) => q(bih),
+ q(0029) => q(bwa),
+ q(0030) => q(bvt),
+ q(0031) => q(bra),
+ q(0032) => q(iot),
+ q(0033) => q(brn),
+ q(0034) => q(bgr),
+ q(0035) => q(bfa),
+ q(0036) => q(bdi),
+ q(0037) => q(khm),
+ q(0038) => q(cmr),
+ q(0039) => q(can),
+ q(0040) => q(cpv),
+ q(0041) => q(cym),
+ q(0042) => q(caf),
+ q(0043) => q(tcd),
+ q(0044) => q(chl),
+ q(0045) => q(chn),
+ q(0046) => q(cxr),
+ q(0047) => q(cck),
+ q(0048) => q(col),
+ q(0049) => q(com),
+ q(0050) => q(cog),
+ q(0051) => q(cod),
+ q(0052) => q(cok),
+ q(0053) => q(cri),
+ q(0054) => q(civ),
+ q(0055) => q(hrv),
+ q(0056) => q(cub),
+ q(0057) => q(cyp),
+ q(0058) => q(cze),
+ q(0059) => q(dnk),
+ q(0060) => q(dji),
+ q(0061) => q(dma),
+ q(0062) => q(dom),
+ q(0063) => q(ecu),
+ q(0064) => q(egy),
+ q(0065) => q(slv),
+ q(0066) => q(gnq),
+ q(0067) => q(eri),
+ q(0068) => q(est),
+ q(0069) => q(eth),
+ q(0070) => q(flk),
+ q(0071) => q(fro),
+ q(0072) => q(fji),
+ q(0073) => q(fin),
+ q(0074) => q(fra),
+ q(0075) => q(guf),
+ q(0076) => q(pyf),
+ q(0077) => q(atf),
+ q(0078) => q(gab),
+ q(0079) => q(gmb),
+ q(0080) => q(geo),
+ q(0081) => q(deu),
+ q(0082) => q(gha),
+ q(0083) => q(gib),
+ q(0084) => q(grc),
+ q(0085) => q(grl),
+ q(0086) => q(grd),
+ q(0087) => q(glp),
+ q(0088) => q(gum),
+ q(0089) => q(gtm),
+ q(0090) => q(ggy),
+ q(0091) => q(gin),
+ q(0092) => q(gnb),
+ q(0093) => q(guy),
+ q(0094) => q(hti),
+ q(0095) => q(hmd),
+ q(0096) => q(vat),
+ q(0097) => q(hnd),
+ q(0098) => q(hkg),
+ q(0099) => q(hun),
+ q(0100) => q(isl),
+ q(0101) => q(ind),
+ q(0102) => q(idn),
+ q(0103) => q(irn),
+ q(0104) => q(irq),
+ q(0105) => q(irl),
+ q(0106) => q(imn),
+ q(0107) => q(isr),
+ q(0108) => q(ita),
+ q(0109) => q(jam),
+ q(0110) => q(jpn),
+ q(0111) => q(jey),
+ q(0112) => q(jor),
+ q(0113) => q(kaz),
+ q(0114) => q(ken),
+ q(0115) => q(kir),
+ q(0116) => q(prk),
+ q(0117) => q(kor),
+ q(0118) => q(kwt),
+ q(0119) => q(kgz),
+ q(0120) => q(lao),
+ q(0121) => q(lva),
+ q(0122) => q(lbn),
+ q(0123) => q(lso),
+ q(0124) => q(lbr),
+ q(0125) => q(lby),
+ q(0126) => q(lie),
+ q(0127) => q(ltu),
+ q(0128) => q(lux),
+ q(0129) => q(mac),
+ q(0130) => q(mkd),
+ q(0131) => q(mdg),
+ q(0132) => q(mwi),
+ q(0133) => q(mys),
+ q(0134) => q(mdv),
+ q(0135) => q(mli),
+ q(0136) => q(mlt),
+ q(0137) => q(mhl),
+ q(0138) => q(mtq),
+ q(0139) => q(mrt),
+ q(0140) => q(mus),
+ q(0141) => q(myt),
+ q(0142) => q(mex),
+ q(0143) => q(fsm),
+ q(0144) => q(mda),
+ q(0145) => q(mco),
+ q(0146) => q(mng),
+ q(0147) => q(mne),
+ q(0148) => q(msr),
+ q(0149) => q(mar),
+ q(0150) => q(moz),
+ q(0151) => q(mmr),
+ q(0152) => q(nam),
+ q(0153) => q(nru),
+ q(0154) => q(npl),
+ q(0155) => q(nld),
+ q(0156) => q(ant),
+ q(0157) => q(ncl),
+ q(0158) => q(nzl),
+ q(0159) => q(nic),
+ q(0160) => q(ner),
+ q(0161) => q(nga),
+ q(0162) => q(niu),
+ q(0163) => q(nfk),
+ q(0164) => q(mnp),
+ q(0165) => q(nor),
+ q(0166) => q(omn),
+ q(0167) => q(pak),
+ q(0168) => q(plw),
+ q(0169) => q(pse),
+ q(0170) => q(pan),
+ q(0171) => q(png),
+ q(0172) => q(pry),
+ q(0173) => q(per),
+ q(0174) => q(phl),
+ q(0175) => q(pcn),
+ q(0176) => q(pol),
+ q(0177) => q(prt),
+ q(0178) => q(pri),
+ q(0179) => q(qat),
+ q(0180) => q(reu),
+ q(0181) => q(rou),
+ q(0182) => q(rus),
+ q(0183) => q(rwa),
+ q(0184) => q(blm),
+ q(0185) => q(shn),
+ q(0186) => q(kna),
+ q(0187) => q(lca),
+ q(0188) => q(maf),
+ q(0189) => q(spm),
+ q(0190) => q(vct),
+ q(0191) => q(wsm),
+ q(0192) => q(smr),
+ q(0193) => q(stp),
+ q(0194) => q(sau),
+ q(0195) => q(sen),
+ q(0196) => q(srb),
+ q(0197) => q(syc),
+ q(0198) => q(sle),
+ q(0199) => q(sgp),
+ q(0200) => q(svk),
+ q(0201) => q(svn),
+ q(0202) => q(slb),
+ q(0203) => q(som),
+ q(0204) => q(zaf),
+ q(0206) => q(esp),
+ q(0207) => q(lka),
+ q(0208) => q(sdn),
+ q(0209) => q(sur),
+ q(0210) => q(sjm),
+ q(0211) => q(swz),
+ q(0212) => q(swe),
+ q(0213) => q(che),
+ q(0214) => q(syr),
+ q(0215) => q(twn),
+ q(0216) => q(tjk),
+ q(0217) => q(tza),
+ q(0218) => q(tha),
+ q(0219) => q(tls),
+ q(0220) => q(tgo),
+ q(0221) => q(tkl),
+ q(0222) => q(ton),
+ q(0223) => q(tto),
+ q(0224) => q(tun),
+ q(0225) => q(tur),
+ q(0226) => q(tkm),
+ q(0227) => q(tca),
+ q(0228) => q(tuv),
+ q(0229) => q(uga),
+ q(0230) => q(ukr),
+ q(0231) => q(are),
+ q(0232) => q(gbr),
+ q(0233) => q(usa),
+ q(0234) => q(umi),
+ q(0235) => q(ury),
+ q(0236) => q(uzb),
+ q(0237) => q(vut),
+ q(0238) => q(ven),
+ q(0239) => q(vnm),
+ q(0240) => q(vgb),
+ q(0241) => q(vir),
+ q(0242) => q(wlf),
+ q(0243) => q(esh),
+ q(0244) => q(yem),
+ q(0245) => q(zmb),
+ q(0246) => q(zwe),
+ q(0276) => q(fxx),
+ },
+ q(dom) => {
+ q(0001) => q(AF),
+ q(0002) => q(AX),
+ q(0003) => q(AL),
+ q(0004) => q(DZ),
+ q(0005) => q(AS),
+ q(0006) => q(AD),
+ q(0007) => q(AO),
+ q(0008) => q(AI),
+ q(0009) => q(AQ),
+ q(0010) => q(AG),
+ q(0011) => q(AR),
+ q(0012) => q(AM),
+ q(0013) => q(AW),
+ q(0014) => q(AU),
+ q(0015) => q(AT),
+ q(0016) => q(AZ),
+ q(0017) => q(BS),
+ q(0018) => q(BH),
+ q(0019) => q(BD),
+ q(0020) => q(BB),
+ q(0021) => q(BY),
+ q(0022) => q(BE),
+ q(0023) => q(BZ),
+ q(0024) => q(BJ),
+ q(0025) => q(BM),
+ q(0026) => q(BT),
+ q(0027) => q(BO),
+ q(0028) => q(BA),
+ q(0029) => q(BW),
+ q(0030) => q(BV),
+ q(0031) => q(BR),
+ q(0032) => q(IO),
+ q(0033) => q(BN),
+ q(0034) => q(BG),
+ q(0035) => q(BF),
+ q(0036) => q(BI),
+ q(0037) => q(KH),
+ q(0038) => q(CM),
+ q(0039) => q(CA),
+ q(0040) => q(CV),
+ q(0041) => q(KY),
+ q(0042) => q(CF),
+ q(0043) => q(TD),
+ q(0044) => q(CL),
+ q(0045) => q(CN),
+ q(0046) => q(CX),
+ q(0047) => q(CC),
+ q(0048) => q(CO),
+ q(0049) => q(KM),
+ q(0050) => q(CG),
+ q(0051) => q(CD),
+ q(0052) => q(CK),
+ q(0053) => q(CR),
+ q(0054) => q(CI),
+ q(0055) => q(HR),
+ q(0056) => q(CU),
+ q(0057) => q(CY),
+ q(0058) => q(CZ),
+ q(0059) => q(DK),
+ q(0060) => q(DJ),
+ q(0061) => q(DM),
+ q(0062) => q(DO),
+ q(0063) => q(EC),
+ q(0064) => q(EG),
+ q(0065) => q(SV),
+ q(0066) => q(GQ),
+ q(0067) => q(ER),
+ q(0068) => q(EE),
+ q(0069) => q(ET),
+ q(0070) => q(FK),
+ q(0071) => q(FO),
+ q(0072) => q(FJ),
+ q(0073) => q(FI),
+ q(0074) => q(FR),
+ q(0075) => q(GF),
+ q(0076) => q(PF),
+ q(0077) => q(TF),
+ q(0078) => q(GA),
+ q(0079) => q(GM),
+ q(0080) => q(GE),
+ q(0081) => q(DE),
+ q(0082) => q(GH),
+ q(0083) => q(GI),
+ q(0084) => q(GR),
+ q(0085) => q(GL),
+ q(0086) => q(GD),
+ q(0087) => q(GP),
+ q(0088) => q(GU),
+ q(0089) => q(GT),
+ q(0090) => q(GG),
+ q(0091) => q(GN),
+ q(0092) => q(GW),
+ q(0093) => q(GY),
+ q(0094) => q(HT),
+ q(0095) => q(HM),
+ q(0096) => q(VA),
+ q(0097) => q(HN),
+ q(0098) => q(HK),
+ q(0099) => q(HU),
+ q(0100) => q(IS),
+ q(0101) => q(IN),
+ q(0102) => q(ID),
+ q(0103) => q(IR),
+ q(0104) => q(IQ),
+ q(0105) => q(IE),
+ q(0106) => q(IM),
+ q(0107) => q(IL),
+ q(0108) => q(IT),
+ q(0109) => q(JM),
+ q(0110) => q(JP),
+ q(0111) => q(JE),
+ q(0112) => q(JO),
+ q(0113) => q(KZ),
+ q(0114) => q(KE),
+ q(0115) => q(KI),
+ q(0116) => q(KP),
+ q(0117) => q(KR),
+ q(0118) => q(KW),
+ q(0119) => q(KG),
+ q(0120) => q(LA),
+ q(0121) => q(LV),
+ q(0122) => q(LB),
+ q(0123) => q(LS),
+ q(0124) => q(LR),
+ q(0125) => q(LY),
+ q(0126) => q(LI),
+ q(0127) => q(LT),
+ q(0128) => q(LU),
+ q(0129) => q(MO),
+ q(0130) => q(MK),
+ q(0131) => q(MG),
+ q(0132) => q(MW),
+ q(0133) => q(MY),
+ q(0134) => q(MV),
+ q(0135) => q(ML),
+ q(0136) => q(MT),
+ q(0137) => q(MH),
+ q(0138) => q(MQ),
+ q(0139) => q(MR),
+ q(0140) => q(MU),
+ q(0141) => q(YT),
+ q(0142) => q(MX),
+ q(0143) => q(FM),
+ q(0144) => q(MD),
+ q(0145) => q(MC),
+ q(0146) => q(MN),
+ q(0147) => q(ME),
+ q(0148) => q(MS),
+ q(0149) => q(MA),
+ q(0150) => q(MZ),
+ q(0151) => q(MM),
+ q(0152) => q(NA),
+ q(0153) => q(NR),
+ q(0154) => q(NP),
+ q(0155) => q(NL),
+ q(0156) => q(AN),
+ q(0157) => q(NC),
+ q(0158) => q(NZ),
+ q(0159) => q(NI),
+ q(0160) => q(NE),
+ q(0161) => q(NG),
+ q(0162) => q(NU),
+ q(0163) => q(NF),
+ q(0164) => q(MP),
+ q(0165) => q(NO),
+ q(0166) => q(OM),
+ q(0167) => q(PK),
+ q(0168) => q(PW),
+ q(0169) => q(PS),
+ q(0170) => q(PA),
+ q(0171) => q(PG),
+ q(0172) => q(PY),
+ q(0173) => q(PE),
+ q(0174) => q(PH),
+ q(0175) => q(PN),
+ q(0176) => q(PL),
+ q(0177) => q(PT),
+ q(0178) => q(PR),
+ q(0179) => q(QA),
+ q(0180) => q(RE),
+ q(0181) => q(RO),
+ q(0182) => q(RU),
+ q(0183) => q(RW),
+ q(0184) => q(BL),
+ q(0185) => q(SH),
+ q(0186) => q(KN),
+ q(0187) => q(LC),
+ q(0188) => q(MF),
+ q(0189) => q(PM),
+ q(0190) => q(VC),
+ q(0191) => q(WS),
+ q(0192) => q(SM),
+ q(0193) => q(ST),
+ q(0194) => q(SA),
+ q(0195) => q(SN),
+ q(0196) => q(RS),
+ q(0197) => q(SC),
+ q(0198) => q(SL),
+ q(0199) => q(SG),
+ q(0200) => q(SK),
+ q(0201) => q(SI),
+ q(0202) => q(SB),
+ q(0203) => q(SO),
+ q(0204) => q(ZA),
+ q(0205) => q(GS),
+ q(0206) => q(ES),
+ q(0207) => q(LK),
+ q(0208) => q(SD),
+ q(0209) => q(SR),
+ q(0210) => q(SJ),
+ q(0211) => q(SZ),
+ q(0212) => q(SE),
+ q(0213) => q(CH),
+ q(0214) => q(SY),
+ q(0215) => q(TW),
+ q(0216) => q(TJ),
+ q(0217) => q(TZ),
+ q(0218) => q(TH),
+ q(0219) => q(TL),
+ q(0220) => q(TG),
+ q(0221) => q(TK),
+ q(0222) => q(TO),
+ q(0223) => q(TT),
+ q(0224) => q(TN),
+ q(0225) => q(TR),
+ q(0226) => q(TM),
+ q(0227) => q(TC),
+ q(0228) => q(TV),
+ q(0229) => q(UG),
+ q(0230) => q(UA),
+ q(0231) => q(AE),
+ q(0232) => q(UK),
+ q(0233) => q(US),
+ q(0234) => q(UM),
+ q(0235) => q(UY),
+ q(0236) => q(UZ),
+ q(0237) => q(VU),
+ q(0238) => q(VE),
+ q(0239) => q(VN),
+ q(0240) => q(VG),
+ q(0241) => q(VI),
+ q(0242) => q(WF),
+ q(0243) => q(EH),
+ q(0244) => q(YE),
+ q(0245) => q(ZM),
+ q(0246) => q(ZW),
+ q(0272) => q(AC),
+ q(0273) => q(EU),
+ q(0274) => q(SU),
+ q(0275) => q(TP),
+ q(0276) => q(FX),
+ },
+ q(fips) => {
+ q(0001) => q(AF),
+ q(0003) => q(AL),
+ q(0004) => q(AG),
+ q(0005) => q(AQ),
+ q(0006) => q(AN),
+ q(0007) => q(AO),
+ q(0008) => q(AV),
+ q(0009) => q(AY),
+ q(0010) => q(AC),
+ q(0011) => q(AR),
+ q(0012) => q(AM),
+ q(0013) => q(AA),
+ q(0014) => q(AS),
+ q(0015) => q(AU),
+ q(0016) => q(AJ),
+ q(0017) => q(BF),
+ q(0018) => q(BA),
+ q(0019) => q(BG),
+ q(0020) => q(BB),
+ q(0021) => q(BO),
+ q(0022) => q(BE),
+ q(0023) => q(BH),
+ q(0024) => q(BN),
+ q(0025) => q(BD),
+ q(0026) => q(BT),
+ q(0027) => q(BL),
+ q(0028) => q(BK),
+ q(0029) => q(BC),
+ q(0030) => q(BV),
+ q(0031) => q(BR),
+ q(0032) => q(IO),
+ q(0033) => q(BX),
+ q(0034) => q(BU),
+ q(0035) => q(UV),
+ q(0036) => q(BY),
+ q(0037) => q(CB),
+ q(0038) => q(CM),
+ q(0039) => q(CA),
+ q(0040) => q(CV),
+ q(0041) => q(CJ),
+ q(0042) => q(CT),
+ q(0043) => q(CD),
+ q(0044) => q(CI),
+ q(0045) => q(CH),
+ q(0046) => q(KT),
+ q(0047) => q(CK),
+ q(0048) => q(CO),
+ q(0049) => q(CN),
+ q(0050) => q(CF),
+ q(0051) => q(CG),
+ q(0052) => q(CW),
+ q(0053) => q(CS),
+ q(0054) => q(IV),
+ q(0055) => q(HR),
+ q(0056) => q(CU),
+ q(0057) => q(CY),
+ q(0058) => q(EZ),
+ q(0059) => q(DA),
+ q(0060) => q(DJ),
+ q(0061) => q(DO),
+ q(0062) => q(DR),
+ q(0063) => q(EC),
+ q(0064) => q(EG),
+ q(0065) => q(ES),
+ q(0066) => q(EK),
+ q(0067) => q(ER),
+ q(0068) => q(EN),
+ q(0069) => q(ET),
+ q(0070) => q(FK),
+ q(0071) => q(FO),
+ q(0072) => q(FJ),
+ q(0073) => q(FI),
+ q(0074) => q(FR),
+ q(0075) => q(FG),
+ q(0076) => q(FP),
+ q(0077) => q(FS),
+ q(0078) => q(GB),
+ q(0079) => q(GA),
+ q(0080) => q(GG),
+ q(0081) => q(GM),
+ q(0082) => q(GH),
+ q(0083) => q(GI),
+ q(0084) => q(GR),
+ q(0085) => q(GL),
+ q(0086) => q(GJ),
+ q(0087) => q(GP),
+ q(0088) => q(GQ),
+ q(0089) => q(GT),
+ q(0090) => q(GK),
+ q(0091) => q(GV),
+ q(0092) => q(PU),
+ q(0093) => q(GY),
+ q(0094) => q(HA),
+ q(0095) => q(HM),
+ q(0096) => q(VT),
+ q(0097) => q(HO),
+ q(0098) => q(HK),
+ q(0099) => q(HU),
+ q(0100) => q(IC),
+ q(0101) => q(IN),
+ q(0102) => q(ID),
+ q(0103) => q(IR),
+ q(0104) => q(IZ),
+ q(0105) => q(EI),
+ q(0106) => q(IM),
+ q(0107) => q(IS),
+ q(0108) => q(IT),
+ q(0109) => q(JM),
+ q(0110) => q(JA),
+ q(0111) => q(JE),
+ q(0112) => q(JO),
+ q(0113) => q(KZ),
+ q(0114) => q(KE),
+ q(0115) => q(KR),
+ q(0116) => q(KN),
+ q(0117) => q(KS),
+ q(0118) => q(KU),
+ q(0119) => q(KG),
+ q(0120) => q(LA),
+ q(0121) => q(LG),
+ q(0122) => q(LE),
+ q(0123) => q(LT),
+ q(0124) => q(LI),
+ q(0125) => q(LY),
+ q(0126) => q(LS),
+ q(0127) => q(LH),
+ q(0128) => q(LU),
+ q(0129) => q(MC),
+ q(0130) => q(MK),
+ q(0131) => q(MA),
+ q(0132) => q(MI),
+ q(0133) => q(MY),
+ q(0134) => q(MV),
+ q(0135) => q(ML),
+ q(0136) => q(MT),
+ q(0137) => q(RM),
+ q(0138) => q(MB),
+ q(0139) => q(MR),
+ q(0140) => q(MP),
+ q(0141) => q(MF),
+ q(0142) => q(MX),
+ q(0143) => q(FM),
+ q(0144) => q(MD),
+ q(0145) => q(MN),
+ q(0146) => q(MG),
+ q(0147) => q(MJ),
+ q(0148) => q(MH),
+ q(0149) => q(MO),
+ q(0150) => q(MZ),
+ q(0151) => q(BM),
+ q(0152) => q(WA),
+ q(0153) => q(NR),
+ q(0154) => q(NP),
+ q(0155) => q(NL),
+ q(0156) => q(NT),
+ q(0157) => q(NC),
+ q(0158) => q(NZ),
+ q(0159) => q(NU),
+ q(0160) => q(NG),
+ q(0161) => q(NI),
+ q(0162) => q(NE),
+ q(0163) => q(NF),
+ q(0164) => q(CQ),
+ q(0165) => q(NO),
+ q(0166) => q(MU),
+ q(0167) => q(PK),
+ q(0168) => q(PS),
+ q(0170) => q(PM),
+ q(0171) => q(PP),
+ q(0172) => q(PA),
+ q(0173) => q(PE),
+ q(0174) => q(RP),
+ q(0175) => q(PC),
+ q(0176) => q(PL),
+ q(0177) => q(PO),
+ q(0178) => q(RQ),
+ q(0179) => q(QA),
+ q(0180) => q(RE),
+ q(0181) => q(RO),
+ q(0182) => q(RS),
+ q(0183) => q(RW),
+ q(0184) => q(TB),
+ q(0185) => q(SH),
+ q(0186) => q(SC),
+ q(0187) => q(ST),
+ q(0188) => q(RN),
+ q(0189) => q(SB),
+ q(0190) => q(VC),
+ q(0191) => q(WS),
+ q(0192) => q(SM),
+ q(0193) => q(TP),
+ q(0194) => q(SA),
+ q(0195) => q(SG),
+ q(0196) => q(RI),
+ q(0197) => q(SE),
+ q(0198) => q(SL),
+ q(0199) => q(SN),
+ q(0200) => q(LO),
+ q(0201) => q(SI),
+ q(0202) => q(BP),
+ q(0203) => q(SO),
+ q(0204) => q(SF),
+ q(0205) => q(SX),
+ q(0206) => q(SP),
+ q(0207) => q(CE),
+ q(0208) => q(SU),
+ q(0209) => q(NS),
+ q(0211) => q(WZ),
+ q(0212) => q(SW),
+ q(0213) => q(SZ),
+ q(0214) => q(SY),
+ q(0215) => q(TW),
+ q(0216) => q(TI),
+ q(0217) => q(TZ),
+ q(0218) => q(TH),
+ q(0219) => q(TT),
+ q(0220) => q(TO),
+ q(0221) => q(TL),
+ q(0222) => q(TN),
+ q(0223) => q(TD),
+ q(0224) => q(TS),
+ q(0225) => q(TU),
+ q(0226) => q(TX),
+ q(0227) => q(TK),
+ q(0228) => q(TV),
+ q(0229) => q(UG),
+ q(0230) => q(UP),
+ q(0231) => q(AE),
+ q(0232) => q(UK),
+ q(0233) => q(US),
+ q(0235) => q(UY),
+ q(0236) => q(UZ),
+ q(0237) => q(NH),
+ q(0238) => q(VE),
+ q(0239) => q(VM),
+ q(0240) => q(VI),
+ q(0241) => q(VQ),
+ q(0242) => q(WF),
+ q(0243) => q(WI),
+ q(0244) => q(YM),
+ q(0245) => q(ZA),
+ q(0246) => q(ZI),
+ q(0248) => q(YI),
+ q(0249) => q(AT),
+ q(0250) => q(FQ),
+ q(0251) => q(BS),
+ q(0252) => q(IP),
+ q(0253) => q(CR),
+ q(0254) => q(EU),
+ q(0255) => q(GZ),
+ q(0256) => q(GO),
+ q(0257) => q(HQ),
+ q(0258) => q(JN),
+ q(0259) => q(DQ),
+ q(0260) => q(JQ),
+ q(0261) => q(JU),
+ q(0262) => q(KQ),
+ q(0263) => q(MQ),
+ q(0264) => q(BQ),
+ q(0265) => q(LQ),
+ q(0266) => q(PF),
+ q(0267) => q(PG),
+ q(0268) => q(SV),
+ q(0269) => q(TE),
+ q(0270) => q(WQ),
+ q(0271) => q(WE),
+ q(0277) => q(KV),
+ },
+ q(num) => {
+ q(0001) => q(004),
+ q(0002) => q(248),
+ q(0003) => q(008),
+ q(0004) => q(012),
+ q(0005) => q(016),
+ q(0006) => q(020),
+ q(0007) => q(024),
+ q(0008) => q(660),
+ q(0009) => q(010),
+ q(0010) => q(028),
+ q(0011) => q(032),
+ q(0012) => q(051),
+ q(0013) => q(533),
+ q(0014) => q(036),
+ q(0015) => q(040),
+ q(0016) => q(031),
+ q(0017) => q(044),
+ q(0018) => q(048),
+ q(0019) => q(050),
+ q(0020) => q(052),
+ q(0021) => q(112),
+ q(0022) => q(056),
+ q(0023) => q(084),
+ q(0024) => q(204),
+ q(0025) => q(060),
+ q(0026) => q(064),
+ q(0027) => q(068),
+ q(0028) => q(070),
+ q(0029) => q(072),
+ q(0030) => q(074),
+ q(0031) => q(076),
+ q(0032) => q(086),
+ q(0033) => q(096),
+ q(0034) => q(100),
+ q(0035) => q(854),
+ q(0036) => q(108),
+ q(0037) => q(116),
+ q(0038) => q(120),
+ q(0039) => q(124),
+ q(0040) => q(132),
+ q(0041) => q(136),
+ q(0042) => q(140),
+ q(0043) => q(148),
+ q(0044) => q(152),
+ q(0045) => q(156),
+ q(0046) => q(162),
+ q(0047) => q(166),
+ q(0048) => q(170),
+ q(0049) => q(174),
+ q(0050) => q(178),
+ q(0051) => q(180),
+ q(0052) => q(184),
+ q(0053) => q(188),
+ q(0054) => q(384),
+ q(0055) => q(191),
+ q(0056) => q(192),
+ q(0057) => q(196),
+ q(0058) => q(203),
+ q(0059) => q(208),
+ q(0060) => q(262),
+ q(0061) => q(212),
+ q(0062) => q(214),
+ q(0063) => q(218),
+ q(0064) => q(818),
+ q(0065) => q(222),
+ q(0066) => q(226),
+ q(0067) => q(232),
+ q(0068) => q(233),
+ q(0069) => q(231),
+ q(0070) => q(238),
+ q(0071) => q(234),
+ q(0072) => q(242),
+ q(0073) => q(246),
+ q(0074) => q(250),
+ q(0075) => q(254),
+ q(0076) => q(258),
+ q(0077) => q(260),
+ q(0078) => q(266),
+ q(0079) => q(270),
+ q(0080) => q(268),
+ q(0081) => q(276),
+ q(0082) => q(288),
+ q(0083) => q(292),
+ q(0084) => q(300),
+ q(0085) => q(304),
+ q(0086) => q(308),
+ q(0087) => q(312),
+ q(0088) => q(316),
+ q(0089) => q(320),
+ q(0090) => q(831),
+ q(0091) => q(324),
+ q(0092) => q(624),
+ q(0093) => q(328),
+ q(0094) => q(332),
+ q(0095) => q(334),
+ q(0096) => q(336),
+ q(0097) => q(340),
+ q(0098) => q(344),
+ q(0099) => q(348),
+ q(0100) => q(352),
+ q(0101) => q(356),
+ q(0102) => q(360),
+ q(0103) => q(364),
+ q(0104) => q(368),
+ q(0105) => q(372),
+ q(0106) => q(833),
+ q(0107) => q(376),
+ q(0108) => q(380),
+ q(0109) => q(388),
+ q(0110) => q(392),
+ q(0111) => q(832),
+ q(0112) => q(400),
+ q(0113) => q(398),
+ q(0114) => q(404),
+ q(0115) => q(296),
+ q(0116) => q(408),
+ q(0117) => q(410),
+ q(0118) => q(414),
+ q(0119) => q(417),
+ q(0120) => q(418),
+ q(0121) => q(428),
+ q(0122) => q(422),
+ q(0123) => q(426),
+ q(0124) => q(430),
+ q(0125) => q(434),
+ q(0126) => q(438),
+ q(0127) => q(440),
+ q(0128) => q(442),
+ q(0129) => q(446),
+ q(0130) => q(807),
+ q(0131) => q(450),
+ q(0132) => q(454),
+ q(0133) => q(458),
+ q(0134) => q(462),
+ q(0135) => q(466),
+ q(0136) => q(470),
+ q(0137) => q(584),
+ q(0138) => q(474),
+ q(0139) => q(478),
+ q(0140) => q(480),
+ q(0141) => q(175),
+ q(0142) => q(484),
+ q(0143) => q(583),
+ q(0144) => q(498),
+ q(0145) => q(492),
+ q(0146) => q(496),
+ q(0147) => q(499),
+ q(0148) => q(500),
+ q(0149) => q(504),
+ q(0150) => q(508),
+ q(0151) => q(104),
+ q(0152) => q(516),
+ q(0153) => q(520),
+ q(0154) => q(524),
+ q(0155) => q(528),
+ q(0156) => q(530),
+ q(0157) => q(540),
+ q(0158) => q(554),
+ q(0159) => q(558),
+ q(0160) => q(562),
+ q(0161) => q(566),
+ q(0162) => q(570),
+ q(0163) => q(574),
+ q(0164) => q(580),
+ q(0165) => q(578),
+ q(0166) => q(512),
+ q(0167) => q(586),
+ q(0168) => q(585),
+ q(0169) => q(275),
+ q(0170) => q(591),
+ q(0171) => q(598),
+ q(0172) => q(600),
+ q(0173) => q(604),
+ q(0174) => q(608),
+ q(0175) => q(612),
+ q(0176) => q(616),
+ q(0177) => q(620),
+ q(0178) => q(630),
+ q(0179) => q(634),
+ q(0180) => q(638),
+ q(0181) => q(642),
+ q(0182) => q(643),
+ q(0183) => q(646),
+ q(0184) => q(652),
+ q(0185) => q(654),
+ q(0186) => q(659),
+ q(0187) => q(662),
+ q(0188) => q(663),
+ q(0189) => q(666),
+ q(0190) => q(670),
+ q(0191) => q(882),
+ q(0192) => q(674),
+ q(0193) => q(678),
+ q(0194) => q(682),
+ q(0195) => q(686),
+ q(0196) => q(688),
+ q(0197) => q(690),
+ q(0198) => q(694),
+ q(0199) => q(702),
+ q(0200) => q(703),
+ q(0201) => q(705),
+ q(0202) => q(090),
+ q(0203) => q(706),
+ q(0204) => q(710),
+ q(0206) => q(724),
+ q(0207) => q(144),
+ q(0208) => q(736),
+ q(0209) => q(740),
+ q(0210) => q(744),
+ q(0211) => q(748),
+ q(0212) => q(752),
+ q(0213) => q(756),
+ q(0214) => q(760),
+ q(0215) => q(158),
+ q(0216) => q(762),
+ q(0217) => q(834),
+ q(0218) => q(764),
+ q(0219) => q(626),
+ q(0220) => q(768),
+ q(0221) => q(772),
+ q(0222) => q(776),
+ q(0223) => q(780),
+ q(0224) => q(788),
+ q(0225) => q(792),
+ q(0226) => q(795),
+ q(0227) => q(796),
+ q(0228) => q(798),
+ q(0229) => q(800),
+ q(0230) => q(804),
+ q(0231) => q(784),
+ q(0232) => q(826),
+ q(0233) => q(840),
+ q(0234) => q(581),
+ q(0235) => q(858),
+ q(0236) => q(860),
+ q(0237) => q(548),
+ q(0238) => q(862),
+ q(0239) => q(704),
+ q(0240) => q(092),
+ q(0241) => q(850),
+ q(0242) => q(876),
+ q(0243) => q(732),
+ q(0244) => q(887),
+ q(0245) => q(894),
+ q(0246) => q(716),
+ q(0247) => q(830),
+ q(0276) => q(249),
+ },
+};
+
+1;
--- /dev/null
+package Locale::Codes::Currency;
+
+# This file was automatically generated. Any changes to this file will
+# be lost the next time 'get_codes' is run.
+# Generated on: Mon Apr 5 15:43:34 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Currency - currency codes for the Locale::Currency module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Currency module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'currency'}{'id'} = '0180';
+
+$Locale::Codes::Data{'currency'}{'id2names'} = {
+ q(0001) => [
+ q(Afghani),
+ ],
+ q(0002) => [
+ q(Euro),
+ ],
+ q(0003) => [
+ q(Lek),
+ ],
+ q(0004) => [
+ q(Algerian Dinar),
+ ],
+ q(0005) => [
+ q(US Dollar),
+ ],
+ q(0006) => [
+ q(Kwanza),
+ ],
+ q(0007) => [
+ q(East Caribbean Dollar),
+ ],
+ q(0008) => [
+ q(Argentine Peso),
+ ],
+ q(0009) => [
+ q(Armenian Dram),
+ ],
+ q(0010) => [
+ q(Aruban Guilder),
+ ],
+ q(0011) => [
+ q(Australian Dollar),
+ ],
+ q(0012) => [
+ q(Azerbaijanian Manat),
+ ],
+ q(0013) => [
+ q(Bahamian Dollar),
+ ],
+ q(0014) => [
+ q(Bahraini Dinar),
+ ],
+ q(0015) => [
+ q(Taka),
+ ],
+ q(0016) => [
+ q(Barbados Dollar),
+ ],
+ q(0017) => [
+ q(Belarussian Ruble),
+ ],
+ q(0018) => [
+ q(Belize Dollar),
+ ],
+ q(0019) => [
+ q(CFA Franc BCEAO),
+ ],
+ q(0020) => [
+ q(Bermudian Dollar (customarily known as Bermuda Dollar)),
+ ],
+ q(0021) => [
+ q(Indian Rupee),
+ ],
+ q(0022) => [
+ q(Ngultrum),
+ ],
+ q(0023) => [
+ q(Boliviano),
+ ],
+ q(0024) => [
+ q(Mvdol),
+ ],
+ q(0025) => [
+ q(Convertible Marks),
+ ],
+ q(0026) => [
+ q(Pula),
+ ],
+ q(0027) => [
+ q(Norwegian Krone),
+ ],
+ q(0028) => [
+ q(Brazilian Real),
+ ],
+ q(0029) => [
+ q(Brunei Dollar),
+ ],
+ q(0030) => [
+ q(Bulgarian Lev),
+ ],
+ q(0031) => [
+ q(Burundi Franc),
+ ],
+ q(0032) => [
+ q(Riel),
+ ],
+ q(0033) => [
+ q(CFA Franc BEAC),
+ ],
+ q(0034) => [
+ q(Canadian Dollar),
+ ],
+ q(0035) => [
+ q(Cape Verde Escudo),
+ ],
+ q(0036) => [
+ q(Cayman Islands Dollar),
+ ],
+ q(0037) => [
+ q(Chilean Peso),
+ ],
+ q(0038) => [
+ q(Unidades de fomento),
+ ],
+ q(0039) => [
+ q(Yuan Renminbi),
+ ],
+ q(0040) => [
+ q(Colombian Peso),
+ ],
+ q(0041) => [
+ q(Unidad de Valor Real),
+ ],
+ q(0042) => [
+ q(Comoro Franc),
+ ],
+ q(0043) => [
+ q(Congolese Franc),
+ ],
+ q(0044) => [
+ q(New Zealand Dollar),
+ ],
+ q(0045) => [
+ q(Costa Rican Colon),
+ ],
+ q(0046) => [
+ q(Croatian Kuna),
+ ],
+ q(0047) => [
+ q(Cuban Peso),
+ ],
+ q(0048) => [
+ q(Peso Convertible),
+ ],
+ q(0049) => [
+ q(Czech Koruna),
+ ],
+ q(0050) => [
+ q(Danish Krone),
+ ],
+ q(0051) => [
+ q(Djibouti Franc),
+ ],
+ q(0052) => [
+ q(Dominican Peso),
+ ],
+ q(0053) => [
+ q(Egyptian Pound),
+ ],
+ q(0054) => [
+ q(El Salvador Colon),
+ ],
+ q(0055) => [
+ q(Nakfa),
+ ],
+ q(0056) => [
+ q(Kroon),
+ ],
+ q(0057) => [
+ q(Ethiopian Birr),
+ ],
+ q(0058) => [
+ q(Falkland Islands Pound),
+ ],
+ q(0059) => [
+ q(Fiji Dollar),
+ ],
+ q(0060) => [
+ q(CFP Franc),
+ ],
+ q(0061) => [
+ q(Dalasi),
+ ],
+ q(0062) => [
+ q(Lari),
+ ],
+ q(0063) => [
+ q(Cedi),
+ ],
+ q(0064) => [
+ q(Gibraltar Pound),
+ ],
+ q(0065) => [
+ q(Quetzal),
+ ],
+ q(0066) => [
+ q(Pound Sterling),
+ ],
+ q(0067) => [
+ q(Guinea Franc),
+ ],
+ q(0068) => [
+ q(Guinea-Bissau Peso),
+ ],
+ q(0069) => [
+ q(Guyana Dollar),
+ ],
+ q(0070) => [
+ q(Gourde),
+ ],
+ q(0071) => [
+ q(Lempira),
+ ],
+ q(0072) => [
+ q(Hong Kong Dollar),
+ ],
+ q(0073) => [
+ q(Forint),
+ ],
+ q(0074) => [
+ q(Iceland Krona),
+ ],
+ q(0075) => [
+ q(Rupiah),
+ ],
+ q(0076) => [
+ q(Iranian Rial),
+ ],
+ q(0077) => [
+ q(Iraqi Dinar),
+ ],
+ q(0078) => [
+ q(New Israeli Sheqel),
+ ],
+ q(0079) => [
+ q(Jamaican Dollar),
+ ],
+ q(0080) => [
+ q(Yen),
+ ],
+ q(0081) => [
+ q(Jordanian Dinar),
+ ],
+ q(0082) => [
+ q(Tenge),
+ ],
+ q(0083) => [
+ q(Kenyan Shilling),
+ ],
+ q(0084) => [
+ q(North Korean Won),
+ ],
+ q(0085) => [
+ q(Won),
+ ],
+ q(0086) => [
+ q(Kuwaiti Dinar),
+ ],
+ q(0087) => [
+ q(Som),
+ ],
+ q(0088) => [
+ q(Kip),
+ ],
+ q(0089) => [
+ q(Latvian Lats),
+ ],
+ q(0090) => [
+ q(Lebanese Pound),
+ ],
+ q(0091) => [
+ q(Rand),
+ ],
+ q(0092) => [
+ q(Loti),
+ ],
+ q(0093) => [
+ q(Liberian Dollar),
+ ],
+ q(0094) => [
+ q(Libyan Dinar),
+ ],
+ q(0095) => [
+ q(Swiss Franc),
+ ],
+ q(0096) => [
+ q(Lithuanian Litas),
+ ],
+ q(0097) => [
+ q(Pataca),
+ ],
+ q(0098) => [
+ q(Denar),
+ ],
+ q(0099) => [
+ q(Malagasy Ariary),
+ ],
+ q(0100) => [
+ q(Kwacha),
+ ],
+ q(0101) => [
+ q(Malaysian Ringgit),
+ ],
+ q(0102) => [
+ q(Rufiyaa),
+ ],
+ q(0103) => [
+ q(Ouguiya),
+ ],
+ q(0104) => [
+ q(Mauritius Rupee),
+ ],
+ q(0105) => [
+ q(Mexican Peso),
+ ],
+ q(0106) => [
+ q(Mexican Unidad de Inversion (UDI)),
+ ],
+ q(0107) => [
+ q(Moldovan Leu),
+ ],
+ q(0108) => [
+ q(Tugrik),
+ ],
+ q(0109) => [
+ q(Moroccan Dirham),
+ ],
+ q(0110) => [
+ q(Metical),
+ ],
+ q(0111) => [
+ q(Kyat),
+ ],
+ q(0112) => [
+ q(Namibia Dollar),
+ ],
+ q(0113) => [
+ q(Nepalese Rupee),
+ ],
+ q(0114) => [
+ q(Netherlands Antillian Guilder),
+ ],
+ q(0115) => [
+ q(Cordoba Oro),
+ ],
+ q(0116) => [
+ q(Naira),
+ ],
+ q(0117) => [
+ q(Rial Omani),
+ ],
+ q(0118) => [
+ q(Pakistan Rupee),
+ ],
+ q(0119) => [
+ q(Balboa),
+ ],
+ q(0120) => [
+ q(Kina),
+ ],
+ q(0121) => [
+ q(Guarani),
+ ],
+ q(0122) => [
+ q(Nuevo Sol),
+ ],
+ q(0123) => [
+ q(Philippine Peso),
+ ],
+ q(0124) => [
+ q(Zloty),
+ ],
+ q(0125) => [
+ q(Qatari Rial),
+ ],
+ q(0126) => [
+ q(New Leu),
+ ],
+ q(0127) => [
+ q(Russian Ruble),
+ ],
+ q(0128) => [
+ q(Rwanda Franc),
+ ],
+ q(0129) => [
+ q(Saint Helena Pound),
+ ],
+ q(0130) => [
+ q(Tala),
+ ],
+ q(0131) => [
+ q(Dobra),
+ ],
+ q(0132) => [
+ q(Saudi Riyal),
+ ],
+ q(0133) => [
+ q(Serbian Dinar),
+ ],
+ q(0134) => [
+ q(Seychelles Rupee),
+ ],
+ q(0135) => [
+ q(Leone),
+ ],
+ q(0136) => [
+ q(Singapore Dollar),
+ ],
+ q(0137) => [
+ q(Solomon Islands Dollar),
+ ],
+ q(0138) => [
+ q(Somali Shilling),
+ ],
+ q(0139) => [
+ q(Sri Lanka Rupee),
+ ],
+ q(0140) => [
+ q(Sudanese Pound),
+ ],
+ q(0141) => [
+ q(Surinam Dollar),
+ ],
+ q(0142) => [
+ q(Lilangeni),
+ ],
+ q(0143) => [
+ q(Swedish Krona),
+ ],
+ q(0144) => [
+ q(WIR Franc),
+ ],
+ q(0145) => [
+ q(WIR Euro),
+ ],
+ q(0146) => [
+ q(Syrian Pound),
+ ],
+ q(0147) => [
+ q(New Taiwan Dollar),
+ ],
+ q(0148) => [
+ q(Somoni),
+ ],
+ q(0149) => [
+ q(Tanzanian Shilling),
+ ],
+ q(0150) => [
+ q(Baht),
+ ],
+ q(0151) => [
+ q(Pa'anga),
+ ],
+ q(0152) => [
+ q(Trinidad and Tobago Dollar),
+ ],
+ q(0153) => [
+ q(Tunisian Dinar),
+ ],
+ q(0154) => [
+ q(Turkish Lira),
+ ],
+ q(0155) => [
+ q(Manat),
+ ],
+ q(0156) => [
+ q(Uganda Shilling),
+ ],
+ q(0157) => [
+ q(Hryvnia),
+ ],
+ q(0158) => [
+ q(UAE Dirham),
+ ],
+ q(0159) => [
+ q(US Dollar (Same day)),
+ ],
+ q(0160) => [
+ q(US Dollar (Next day)),
+ ],
+ q(0161) => [
+ q(Peso Uruguayo),
+ ],
+ q(0162) => [
+ q(Uruguay Peso en Unidades Indexadas),
+ ],
+ q(0163) => [
+ q(Uzbekistan Sum),
+ ],
+ q(0164) => [
+ q(Vatu),
+ ],
+ q(0165) => [
+ q(Bolivar Fuerte),
+ ],
+ q(0166) => [
+ q(Dong),
+ ],
+ q(0167) => [
+ q(Yemeni Rial),
+ ],
+ q(0168) => [
+ q(Zambian Kwacha),
+ ],
+ q(0169) => [
+ q(Zimbabwe Dollar),
+ ],
+ q(0170) => [
+ q(Gold),
+ ],
+ q(0171) => [
+ q(Bond Markets Units European Composite Unit (EURCO)),
+ ],
+ q(0172) => [
+ q(European Monetary Unit (E.M.U.-6)),
+ ],
+ q(0173) => [
+ q(European Unit of Account 9(E.U.A.-9)),
+ ],
+ q(0174) => [
+ q(European Unit of Account 17(E.U.A.-17)),
+ ],
+ q(0175) => [
+ q(SDR),
+ ],
+ q(0176) => [
+ q(Palladium),
+ ],
+ q(0177) => [
+ q(Platinum),
+ ],
+ q(0178) => [
+ q(Silver),
+ ],
+ q(0179) => [
+ q(UIC-Franc),
+ ],
+};
+
+$Locale::Codes::Data{'currency'}{'alias2id'} = {
+ q(afghani) => [
+ q(0001),
+ q(0),
+ ],
+ q(algerian dinar) => [
+ q(0004),
+ q(0),
+ ],
+ q(argentine peso) => [
+ q(0008),
+ q(0),
+ ],
+ q(armenian dram) => [
+ q(0009),
+ q(0),
+ ],
+ q(aruban guilder) => [
+ q(0010),
+ q(0),
+ ],
+ q(australian dollar) => [
+ q(0011),
+ q(0),
+ ],
+ q(azerbaijanian manat) => [
+ q(0012),
+ q(0),
+ ],
+ q(bahamian dollar) => [
+ q(0013),
+ q(0),
+ ],
+ q(bahraini dinar) => [
+ q(0014),
+ q(0),
+ ],
+ q(baht) => [
+ q(0150),
+ q(0),
+ ],
+ q(balboa) => [
+ q(0119),
+ q(0),
+ ],
+ q(barbados dollar) => [
+ q(0016),
+ q(0),
+ ],
+ q(belarussian ruble) => [
+ q(0017),
+ q(0),
+ ],
+ q(belize dollar) => [
+ q(0018),
+ q(0),
+ ],
+ q(bermudian dollar (customarily known as bermuda dollar)) => [
+ q(0020),
+ q(0),
+ ],
+ q(bolivar fuerte) => [
+ q(0165),
+ q(0),
+ ],
+ q(boliviano) => [
+ q(0023),
+ q(0),
+ ],
+ q(bond markets units european composite unit (eurco)) => [
+ q(0171),
+ q(0),
+ ],
+ q(brazilian real) => [
+ q(0028),
+ q(0),
+ ],
+ q(brunei dollar) => [
+ q(0029),
+ q(0),
+ ],
+ q(bulgarian lev) => [
+ q(0030),
+ q(0),
+ ],
+ q(burundi franc) => [
+ q(0031),
+ q(0),
+ ],
+ q(canadian dollar) => [
+ q(0034),
+ q(0),
+ ],
+ q(cape verde escudo) => [
+ q(0035),
+ q(0),
+ ],
+ q(cayman islands dollar) => [
+ q(0036),
+ q(0),
+ ],
+ q(cedi) => [
+ q(0063),
+ q(0),
+ ],
+ q(cfa franc bceao) => [
+ q(0019),
+ q(0),
+ ],
+ q(cfa franc beac) => [
+ q(0033),
+ q(0),
+ ],
+ q(cfp franc) => [
+ q(0060),
+ q(0),
+ ],
+ q(chilean peso) => [
+ q(0037),
+ q(0),
+ ],
+ q(colombian peso) => [
+ q(0040),
+ q(0),
+ ],
+ q(comoro franc) => [
+ q(0042),
+ q(0),
+ ],
+ q(congolese franc) => [
+ q(0043),
+ q(0),
+ ],
+ q(convertible marks) => [
+ q(0025),
+ q(0),
+ ],
+ q(cordoba oro) => [
+ q(0115),
+ q(0),
+ ],
+ q(costa rican colon) => [
+ q(0045),
+ q(0),
+ ],
+ q(croatian kuna) => [
+ q(0046),
+ q(0),
+ ],
+ q(cuban peso) => [
+ q(0047),
+ q(0),
+ ],
+ q(czech koruna) => [
+ q(0049),
+ q(0),
+ ],
+ q(dalasi) => [
+ q(0061),
+ q(0),
+ ],
+ q(danish krone) => [
+ q(0050),
+ q(0),
+ ],
+ q(denar) => [
+ q(0098),
+ q(0),
+ ],
+ q(djibouti franc) => [
+ q(0051),
+ q(0),
+ ],
+ q(dobra) => [
+ q(0131),
+ q(0),
+ ],
+ q(dominican peso) => [
+ q(0052),
+ q(0),
+ ],
+ q(dong) => [
+ q(0166),
+ q(0),
+ ],
+ q(east caribbean dollar) => [
+ q(0007),
+ q(0),
+ ],
+ q(egyptian pound) => [
+ q(0053),
+ q(0),
+ ],
+ q(el salvador colon) => [
+ q(0054),
+ q(0),
+ ],
+ q(ethiopian birr) => [
+ q(0057),
+ q(0),
+ ],
+ q(euro) => [
+ q(0002),
+ q(0),
+ ],
+ q(european monetary unit (e.m.u.-6)) => [
+ q(0172),
+ q(0),
+ ],
+ q(european unit of account 17(e.u.a.-17)) => [
+ q(0174),
+ q(0),
+ ],
+ q(european unit of account 9(e.u.a.-9)) => [
+ q(0173),
+ q(0),
+ ],
+ q(falkland islands pound) => [
+ q(0058),
+ q(0),
+ ],
+ q(fiji dollar) => [
+ q(0059),
+ q(0),
+ ],
+ q(forint) => [
+ q(0073),
+ q(0),
+ ],
+ q(gibraltar pound) => [
+ q(0064),
+ q(0),
+ ],
+ q(gold) => [
+ q(0170),
+ q(0),
+ ],
+ q(gourde) => [
+ q(0070),
+ q(0),
+ ],
+ q(guarani) => [
+ q(0121),
+ q(0),
+ ],
+ q(guinea franc) => [
+ q(0067),
+ q(0),
+ ],
+ q(guinea-bissau peso) => [
+ q(0068),
+ q(0),
+ ],
+ q(guyana dollar) => [
+ q(0069),
+ q(0),
+ ],
+ q(hong kong dollar) => [
+ q(0072),
+ q(0),
+ ],
+ q(hryvnia) => [
+ q(0157),
+ q(0),
+ ],
+ q(iceland krona) => [
+ q(0074),
+ q(0),
+ ],
+ q(indian rupee) => [
+ q(0021),
+ q(0),
+ ],
+ q(iranian rial) => [
+ q(0076),
+ q(0),
+ ],
+ q(iraqi dinar) => [
+ q(0077),
+ q(0),
+ ],
+ q(jamaican dollar) => [
+ q(0079),
+ q(0),
+ ],
+ q(jordanian dinar) => [
+ q(0081),
+ q(0),
+ ],
+ q(kenyan shilling) => [
+ q(0083),
+ q(0),
+ ],
+ q(kina) => [
+ q(0120),
+ q(0),
+ ],
+ q(kip) => [
+ q(0088),
+ q(0),
+ ],
+ q(kroon) => [
+ q(0056),
+ q(0),
+ ],
+ q(kuwaiti dinar) => [
+ q(0086),
+ q(0),
+ ],
+ q(kwacha) => [
+ q(0100),
+ q(0),
+ ],
+ q(kwanza) => [
+ q(0006),
+ q(0),
+ ],
+ q(kyat) => [
+ q(0111),
+ q(0),
+ ],
+ q(lari) => [
+ q(0062),
+ q(0),
+ ],
+ q(latvian lats) => [
+ q(0089),
+ q(0),
+ ],
+ q(lebanese pound) => [
+ q(0090),
+ q(0),
+ ],
+ q(lek) => [
+ q(0003),
+ q(0),
+ ],
+ q(lempira) => [
+ q(0071),
+ q(0),
+ ],
+ q(leone) => [
+ q(0135),
+ q(0),
+ ],
+ q(liberian dollar) => [
+ q(0093),
+ q(0),
+ ],
+ q(libyan dinar) => [
+ q(0094),
+ q(0),
+ ],
+ q(lilangeni) => [
+ q(0142),
+ q(0),
+ ],
+ q(lithuanian litas) => [
+ q(0096),
+ q(0),
+ ],
+ q(loti) => [
+ q(0092),
+ q(0),
+ ],
+ q(malagasy ariary) => [
+ q(0099),
+ q(0),
+ ],
+ q(malaysian ringgit) => [
+ q(0101),
+ q(0),
+ ],
+ q(manat) => [
+ q(0155),
+ q(0),
+ ],
+ q(mauritius rupee) => [
+ q(0104),
+ q(0),
+ ],
+ q(metical) => [
+ q(0110),
+ q(0),
+ ],
+ q(mexican peso) => [
+ q(0105),
+ q(0),
+ ],
+ q(mexican unidad de inversion (udi)) => [
+ q(0106),
+ q(0),
+ ],
+ q(moldovan leu) => [
+ q(0107),
+ q(0),
+ ],
+ q(moroccan dirham) => [
+ q(0109),
+ q(0),
+ ],
+ q(mvdol) => [
+ q(0024),
+ q(0),
+ ],
+ q(naira) => [
+ q(0116),
+ q(0),
+ ],
+ q(nakfa) => [
+ q(0055),
+ q(0),
+ ],
+ q(namibia dollar) => [
+ q(0112),
+ q(0),
+ ],
+ q(nepalese rupee) => [
+ q(0113),
+ q(0),
+ ],
+ q(netherlands antillian guilder) => [
+ q(0114),
+ q(0),
+ ],
+ q(new israeli sheqel) => [
+ q(0078),
+ q(0),
+ ],
+ q(new leu) => [
+ q(0126),
+ q(0),
+ ],
+ q(new taiwan dollar) => [
+ q(0147),
+ q(0),
+ ],
+ q(new zealand dollar) => [
+ q(0044),
+ q(0),
+ ],
+ q(ngultrum) => [
+ q(0022),
+ q(0),
+ ],
+ q(north korean won) => [
+ q(0084),
+ q(0),
+ ],
+ q(norwegian krone) => [
+ q(0027),
+ q(0),
+ ],
+ q(nuevo sol) => [
+ q(0122),
+ q(0),
+ ],
+ q(ouguiya) => [
+ q(0103),
+ q(0),
+ ],
+ q(pa'anga) => [
+ q(0151),
+ q(0),
+ ],
+ q(pakistan rupee) => [
+ q(0118),
+ q(0),
+ ],
+ q(palladium) => [
+ q(0176),
+ q(0),
+ ],
+ q(pataca) => [
+ q(0097),
+ q(0),
+ ],
+ q(peso convertible) => [
+ q(0048),
+ q(0),
+ ],
+ q(peso uruguayo) => [
+ q(0161),
+ q(0),
+ ],
+ q(philippine peso) => [
+ q(0123),
+ q(0),
+ ],
+ q(platinum) => [
+ q(0177),
+ q(0),
+ ],
+ q(pound sterling) => [
+ q(0066),
+ q(0),
+ ],
+ q(pula) => [
+ q(0026),
+ q(0),
+ ],
+ q(qatari rial) => [
+ q(0125),
+ q(0),
+ ],
+ q(quetzal) => [
+ q(0065),
+ q(0),
+ ],
+ q(rand) => [
+ q(0091),
+ q(0),
+ ],
+ q(rial omani) => [
+ q(0117),
+ q(0),
+ ],
+ q(riel) => [
+ q(0032),
+ q(0),
+ ],
+ q(rufiyaa) => [
+ q(0102),
+ q(0),
+ ],
+ q(rupiah) => [
+ q(0075),
+ q(0),
+ ],
+ q(russian ruble) => [
+ q(0127),
+ q(0),
+ ],
+ q(rwanda franc) => [
+ q(0128),
+ q(0),
+ ],
+ q(saint helena pound) => [
+ q(0129),
+ q(0),
+ ],
+ q(saudi riyal) => [
+ q(0132),
+ q(0),
+ ],
+ q(sdr) => [
+ q(0175),
+ q(0),
+ ],
+ q(serbian dinar) => [
+ q(0133),
+ q(0),
+ ],
+ q(seychelles rupee) => [
+ q(0134),
+ q(0),
+ ],
+ q(silver) => [
+ q(0178),
+ q(0),
+ ],
+ q(singapore dollar) => [
+ q(0136),
+ q(0),
+ ],
+ q(solomon islands dollar) => [
+ q(0137),
+ q(0),
+ ],
+ q(som) => [
+ q(0087),
+ q(0),
+ ],
+ q(somali shilling) => [
+ q(0138),
+ q(0),
+ ],
+ q(somoni) => [
+ q(0148),
+ q(0),
+ ],
+ q(sri lanka rupee) => [
+ q(0139),
+ q(0),
+ ],
+ q(sudanese pound) => [
+ q(0140),
+ q(0),
+ ],
+ q(surinam dollar) => [
+ q(0141),
+ q(0),
+ ],
+ q(swedish krona) => [
+ q(0143),
+ q(0),
+ ],
+ q(swiss franc) => [
+ q(0095),
+ q(0),
+ ],
+ q(syrian pound) => [
+ q(0146),
+ q(0),
+ ],
+ q(taka) => [
+ q(0015),
+ q(0),
+ ],
+ q(tala) => [
+ q(0130),
+ q(0),
+ ],
+ q(tanzanian shilling) => [
+ q(0149),
+ q(0),
+ ],
+ q(tenge) => [
+ q(0082),
+ q(0),
+ ],
+ q(trinidad and tobago dollar) => [
+ q(0152),
+ q(0),
+ ],
+ q(tugrik) => [
+ q(0108),
+ q(0),
+ ],
+ q(tunisian dinar) => [
+ q(0153),
+ q(0),
+ ],
+ q(turkish lira) => [
+ q(0154),
+ q(0),
+ ],
+ q(uae dirham) => [
+ q(0158),
+ q(0),
+ ],
+ q(uganda shilling) => [
+ q(0156),
+ q(0),
+ ],
+ q(uic-franc) => [
+ q(0179),
+ q(0),
+ ],
+ q(unidad de valor real) => [
+ q(0041),
+ q(0),
+ ],
+ q(unidades de fomento) => [
+ q(0038),
+ q(0),
+ ],
+ q(uruguay peso en unidades indexadas) => [
+ q(0162),
+ q(0),
+ ],
+ q(us dollar) => [
+ q(0005),
+ q(0),
+ ],
+ q(us dollar (next day)) => [
+ q(0160),
+ q(0),
+ ],
+ q(us dollar (same day)) => [
+ q(0159),
+ q(0),
+ ],
+ q(uzbekistan sum) => [
+ q(0163),
+ q(0),
+ ],
+ q(vatu) => [
+ q(0164),
+ q(0),
+ ],
+ q(wir euro) => [
+ q(0145),
+ q(0),
+ ],
+ q(wir franc) => [
+ q(0144),
+ q(0),
+ ],
+ q(won) => [
+ q(0085),
+ q(0),
+ ],
+ q(yemeni rial) => [
+ q(0167),
+ q(0),
+ ],
+ q(yen) => [
+ q(0080),
+ q(0),
+ ],
+ q(yuan renminbi) => [
+ q(0039),
+ q(0),
+ ],
+ q(zambian kwacha) => [
+ q(0168),
+ q(0),
+ ],
+ q(zimbabwe dollar) => [
+ q(0169),
+ q(0),
+ ],
+ q(zloty) => [
+ q(0124),
+ q(0),
+ ],
+};
+
+$Locale::Codes::Data{'currency'}{'code2id'} = {
+ q(alpha) => {
+ q(AED) => [
+ q(0158),
+ q(0),
+ ],
+ q(AFN) => [
+ q(0001),
+ q(0),
+ ],
+ q(ALL) => [
+ q(0003),
+ q(0),
+ ],
+ q(AMD) => [
+ q(0009),
+ q(0),
+ ],
+ q(ANG) => [
+ q(0114),
+ q(0),
+ ],
+ q(AOA) => [
+ q(0006),
+ q(0),
+ ],
+ q(ARS) => [
+ q(0008),
+ q(0),
+ ],
+ q(AUD) => [
+ q(0011),
+ q(0),
+ ],
+ q(AWG) => [
+ q(0010),
+ q(0),
+ ],
+ q(AZN) => [
+ q(0012),
+ q(0),
+ ],
+ q(BAM) => [
+ q(0025),
+ q(0),
+ ],
+ q(BBD) => [
+ q(0016),
+ q(0),
+ ],
+ q(BDT) => [
+ q(0015),
+ q(0),
+ ],
+ q(BGN) => [
+ q(0030),
+ q(0),
+ ],
+ q(BHD) => [
+ q(0014),
+ q(0),
+ ],
+ q(BIF) => [
+ q(0031),
+ q(0),
+ ],
+ q(BMD) => [
+ q(0020),
+ q(0),
+ ],
+ q(BND) => [
+ q(0029),
+ q(0),
+ ],
+ q(BOB) => [
+ q(0023),
+ q(0),
+ ],
+ q(BOV) => [
+ q(0024),
+ q(0),
+ ],
+ q(BRL) => [
+ q(0028),
+ q(0),
+ ],
+ q(BSD) => [
+ q(0013),
+ q(0),
+ ],
+ q(BTN) => [
+ q(0022),
+ q(0),
+ ],
+ q(BWP) => [
+ q(0026),
+ q(0),
+ ],
+ q(BYR) => [
+ q(0017),
+ q(0),
+ ],
+ q(BZD) => [
+ q(0018),
+ q(0),
+ ],
+ q(CAD) => [
+ q(0034),
+ q(0),
+ ],
+ q(CDF) => [
+ q(0043),
+ q(0),
+ ],
+ q(CHE) => [
+ q(0145),
+ q(0),
+ ],
+ q(CHF) => [
+ q(0095),
+ q(0),
+ ],
+ q(CHW) => [
+ q(0144),
+ q(0),
+ ],
+ q(CLF) => [
+ q(0038),
+ q(0),
+ ],
+ q(CLP) => [
+ q(0037),
+ q(0),
+ ],
+ q(CNY) => [
+ q(0039),
+ q(0),
+ ],
+ q(COP) => [
+ q(0040),
+ q(0),
+ ],
+ q(COU) => [
+ q(0041),
+ q(0),
+ ],
+ q(CRC) => [
+ q(0045),
+ q(0),
+ ],
+ q(CUC) => [
+ q(0048),
+ q(0),
+ ],
+ q(CUP) => [
+ q(0047),
+ q(0),
+ ],
+ q(CVE) => [
+ q(0035),
+ q(0),
+ ],
+ q(CZK) => [
+ q(0049),
+ q(0),
+ ],
+ q(DJF) => [
+ q(0051),
+ q(0),
+ ],
+ q(DKK) => [
+ q(0050),
+ q(0),
+ ],
+ q(DOP) => [
+ q(0052),
+ q(0),
+ ],
+ q(DZD) => [
+ q(0004),
+ q(0),
+ ],
+ q(EEK) => [
+ q(0056),
+ q(0),
+ ],
+ q(EGP) => [
+ q(0053),
+ q(0),
+ ],
+ q(ERN) => [
+ q(0055),
+ q(0),
+ ],
+ q(ETB) => [
+ q(0057),
+ q(0),
+ ],
+ q(EUR) => [
+ q(0002),
+ q(0),
+ ],
+ q(FJD) => [
+ q(0059),
+ q(0),
+ ],
+ q(FKP) => [
+ q(0058),
+ q(0),
+ ],
+ q(GBP) => [
+ q(0066),
+ q(0),
+ ],
+ q(GEL) => [
+ q(0062),
+ q(0),
+ ],
+ q(GHS) => [
+ q(0063),
+ q(0),
+ ],
+ q(GIP) => [
+ q(0064),
+ q(0),
+ ],
+ q(GMD) => [
+ q(0061),
+ q(0),
+ ],
+ q(GNF) => [
+ q(0067),
+ q(0),
+ ],
+ q(GTQ) => [
+ q(0065),
+ q(0),
+ ],
+ q(GWP) => [
+ q(0068),
+ q(0),
+ ],
+ q(GYD) => [
+ q(0069),
+ q(0),
+ ],
+ q(HKD) => [
+ q(0072),
+ q(0),
+ ],
+ q(HNL) => [
+ q(0071),
+ q(0),
+ ],
+ q(HRK) => [
+ q(0046),
+ q(0),
+ ],
+ q(HTG) => [
+ q(0070),
+ q(0),
+ ],
+ q(HUF) => [
+ q(0073),
+ q(0),
+ ],
+ q(IDR) => [
+ q(0075),
+ q(0),
+ ],
+ q(ILS) => [
+ q(0078),
+ q(0),
+ ],
+ q(INR) => [
+ q(0021),
+ q(0),
+ ],
+ q(IQD) => [
+ q(0077),
+ q(0),
+ ],
+ q(IRR) => [
+ q(0076),
+ q(0),
+ ],
+ q(ISK) => [
+ q(0074),
+ q(0),
+ ],
+ q(JMD) => [
+ q(0079),
+ q(0),
+ ],
+ q(JOD) => [
+ q(0081),
+ q(0),
+ ],
+ q(JPY) => [
+ q(0080),
+ q(0),
+ ],
+ q(KES) => [
+ q(0083),
+ q(0),
+ ],
+ q(KGS) => [
+ q(0087),
+ q(0),
+ ],
+ q(KHR) => [
+ q(0032),
+ q(0),
+ ],
+ q(KMF) => [
+ q(0042),
+ q(0),
+ ],
+ q(KPW) => [
+ q(0084),
+ q(0),
+ ],
+ q(KRW) => [
+ q(0085),
+ q(0),
+ ],
+ q(KWD) => [
+ q(0086),
+ q(0),
+ ],
+ q(KYD) => [
+ q(0036),
+ q(0),
+ ],
+ q(KZT) => [
+ q(0082),
+ q(0),
+ ],
+ q(LAK) => [
+ q(0088),
+ q(0),
+ ],
+ q(LBP) => [
+ q(0090),
+ q(0),
+ ],
+ q(LKR) => [
+ q(0139),
+ q(0),
+ ],
+ q(LRD) => [
+ q(0093),
+ q(0),
+ ],
+ q(LSL) => [
+ q(0092),
+ q(0),
+ ],
+ q(LTL) => [
+ q(0096),
+ q(0),
+ ],
+ q(LVL) => [
+ q(0089),
+ q(0),
+ ],
+ q(LYD) => [
+ q(0094),
+ q(0),
+ ],
+ q(MAD) => [
+ q(0109),
+ q(0),
+ ],
+ q(MDL) => [
+ q(0107),
+ q(0),
+ ],
+ q(MGA) => [
+ q(0099),
+ q(0),
+ ],
+ q(MKD) => [
+ q(0098),
+ q(0),
+ ],
+ q(MMK) => [
+ q(0111),
+ q(0),
+ ],
+ q(MNT) => [
+ q(0108),
+ q(0),
+ ],
+ q(MOP) => [
+ q(0097),
+ q(0),
+ ],
+ q(MRO) => [
+ q(0103),
+ q(0),
+ ],
+ q(MUR) => [
+ q(0104),
+ q(0),
+ ],
+ q(MVR) => [
+ q(0102),
+ q(0),
+ ],
+ q(MWK) => [
+ q(0100),
+ q(0),
+ ],
+ q(MXN) => [
+ q(0105),
+ q(0),
+ ],
+ q(MXV) => [
+ q(0106),
+ q(0),
+ ],
+ q(MYR) => [
+ q(0101),
+ q(0),
+ ],
+ q(MZN) => [
+ q(0110),
+ q(0),
+ ],
+ q(NAD) => [
+ q(0112),
+ q(0),
+ ],
+ q(NGN) => [
+ q(0116),
+ q(0),
+ ],
+ q(NIO) => [
+ q(0115),
+ q(0),
+ ],
+ q(NOK) => [
+ q(0027),
+ q(0),
+ ],
+ q(NPR) => [
+ q(0113),
+ q(0),
+ ],
+ q(NZD) => [
+ q(0044),
+ q(0),
+ ],
+ q(OMR) => [
+ q(0117),
+ q(0),
+ ],
+ q(PAB) => [
+ q(0119),
+ q(0),
+ ],
+ q(PEN) => [
+ q(0122),
+ q(0),
+ ],
+ q(PGK) => [
+ q(0120),
+ q(0),
+ ],
+ q(PHP) => [
+ q(0123),
+ q(0),
+ ],
+ q(PKR) => [
+ q(0118),
+ q(0),
+ ],
+ q(PLN) => [
+ q(0124),
+ q(0),
+ ],
+ q(PYG) => [
+ q(0121),
+ q(0),
+ ],
+ q(QAR) => [
+ q(0125),
+ q(0),
+ ],
+ q(RON) => [
+ q(0126),
+ q(0),
+ ],
+ q(RSD) => [
+ q(0133),
+ q(0),
+ ],
+ q(RUB) => [
+ q(0127),
+ q(0),
+ ],
+ q(RWF) => [
+ q(0128),
+ q(0),
+ ],
+ q(SAR) => [
+ q(0132),
+ q(0),
+ ],
+ q(SBD) => [
+ q(0137),
+ q(0),
+ ],
+ q(SCR) => [
+ q(0134),
+ q(0),
+ ],
+ q(SDG) => [
+ q(0140),
+ q(0),
+ ],
+ q(SEK) => [
+ q(0143),
+ q(0),
+ ],
+ q(SGD) => [
+ q(0136),
+ q(0),
+ ],
+ q(SHP) => [
+ q(0129),
+ q(0),
+ ],
+ q(SLL) => [
+ q(0135),
+ q(0),
+ ],
+ q(SOS) => [
+ q(0138),
+ q(0),
+ ],
+ q(SRD) => [
+ q(0141),
+ q(0),
+ ],
+ q(STD) => [
+ q(0131),
+ q(0),
+ ],
+ q(SVC) => [
+ q(0054),
+ q(0),
+ ],
+ q(SYP) => [
+ q(0146),
+ q(0),
+ ],
+ q(SZL) => [
+ q(0142),
+ q(0),
+ ],
+ q(THB) => [
+ q(0150),
+ q(0),
+ ],
+ q(TJS) => [
+ q(0148),
+ q(0),
+ ],
+ q(TMT) => [
+ q(0155),
+ q(0),
+ ],
+ q(TND) => [
+ q(0153),
+ q(0),
+ ],
+ q(TOP) => [
+ q(0151),
+ q(0),
+ ],
+ q(TRY) => [
+ q(0154),
+ q(0),
+ ],
+ q(TTD) => [
+ q(0152),
+ q(0),
+ ],
+ q(TWD) => [
+ q(0147),
+ q(0),
+ ],
+ q(TZS) => [
+ q(0149),
+ q(0),
+ ],
+ q(UAH) => [
+ q(0157),
+ q(0),
+ ],
+ q(UGX) => [
+ q(0156),
+ q(0),
+ ],
+ q(USD) => [
+ q(0005),
+ q(0),
+ ],
+ q(USN) => [
+ q(0160),
+ q(0),
+ ],
+ q(USS) => [
+ q(0159),
+ q(0),
+ ],
+ q(UYI) => [
+ q(0162),
+ q(0),
+ ],
+ q(UYU) => [
+ q(0161),
+ q(0),
+ ],
+ q(UZS) => [
+ q(0163),
+ q(0),
+ ],
+ q(VEF) => [
+ q(0165),
+ q(0),
+ ],
+ q(VND) => [
+ q(0166),
+ q(0),
+ ],
+ q(VUV) => [
+ q(0164),
+ q(0),
+ ],
+ q(WST) => [
+ q(0130),
+ q(0),
+ ],
+ q(XAF) => [
+ q(0033),
+ q(0),
+ ],
+ q(XAG) => [
+ q(0178),
+ q(0),
+ ],
+ q(XAU) => [
+ q(0170),
+ q(0),
+ ],
+ q(XBA) => [
+ q(0171),
+ q(0),
+ ],
+ q(XBB) => [
+ q(0172),
+ q(0),
+ ],
+ q(XBC) => [
+ q(0173),
+ q(0),
+ ],
+ q(XBD) => [
+ q(0174),
+ q(0),
+ ],
+ q(XCD) => [
+ q(0007),
+ q(0),
+ ],
+ q(XDR) => [
+ q(0175),
+ q(0),
+ ],
+ q(XFU) => [
+ q(0179),
+ q(0),
+ ],
+ q(XOF) => [
+ q(0019),
+ q(0),
+ ],
+ q(XPD) => [
+ q(0176),
+ q(0),
+ ],
+ q(XPF) => [
+ q(0060),
+ q(0),
+ ],
+ q(XPT) => [
+ q(0177),
+ q(0),
+ ],
+ q(YER) => [
+ q(0167),
+ q(0),
+ ],
+ q(ZAR) => [
+ q(0091),
+ q(0),
+ ],
+ q(ZMK) => [
+ q(0168),
+ q(0),
+ ],
+ q(ZWL) => [
+ q(0169),
+ q(0),
+ ],
+ },
+ q(num) => {
+ q(008) => [
+ q(0003),
+ q(0),
+ ],
+ q(012) => [
+ q(0004),
+ q(0),
+ ],
+ q(032) => [
+ q(0008),
+ q(0),
+ ],
+ q(036) => [
+ q(0011),
+ q(0),
+ ],
+ q(044) => [
+ q(0013),
+ q(0),
+ ],
+ q(048) => [
+ q(0014),
+ q(0),
+ ],
+ q(050) => [
+ q(0015),
+ q(0),
+ ],
+ q(051) => [
+ q(0009),
+ q(0),
+ ],
+ q(052) => [
+ q(0016),
+ q(0),
+ ],
+ q(060) => [
+ q(0020),
+ q(0),
+ ],
+ q(064) => [
+ q(0022),
+ q(0),
+ ],
+ q(068) => [
+ q(0023),
+ q(0),
+ ],
+ q(072) => [
+ q(0026),
+ q(0),
+ ],
+ q(084) => [
+ q(0018),
+ q(0),
+ ],
+ q(090) => [
+ q(0137),
+ q(0),
+ ],
+ q(096) => [
+ q(0029),
+ q(0),
+ ],
+ q(104) => [
+ q(0111),
+ q(0),
+ ],
+ q(108) => [
+ q(0031),
+ q(0),
+ ],
+ q(116) => [
+ q(0032),
+ q(0),
+ ],
+ q(124) => [
+ q(0034),
+ q(0),
+ ],
+ q(132) => [
+ q(0035),
+ q(0),
+ ],
+ q(136) => [
+ q(0036),
+ q(0),
+ ],
+ q(144) => [
+ q(0139),
+ q(0),
+ ],
+ q(152) => [
+ q(0037),
+ q(0),
+ ],
+ q(156) => [
+ q(0039),
+ q(0),
+ ],
+ q(170) => [
+ q(0040),
+ q(0),
+ ],
+ q(174) => [
+ q(0042),
+ q(0),
+ ],
+ q(188) => [
+ q(0045),
+ q(0),
+ ],
+ q(191) => [
+ q(0046),
+ q(0),
+ ],
+ q(192) => [
+ q(0047),
+ q(0),
+ ],
+ q(203) => [
+ q(0049),
+ q(0),
+ ],
+ q(208) => [
+ q(0050),
+ q(0),
+ ],
+ q(214) => [
+ q(0052),
+ q(0),
+ ],
+ q(222) => [
+ q(0054),
+ q(0),
+ ],
+ q(230) => [
+ q(0057),
+ q(0),
+ ],
+ q(232) => [
+ q(0055),
+ q(0),
+ ],
+ q(233) => [
+ q(0056),
+ q(0),
+ ],
+ q(238) => [
+ q(0058),
+ q(0),
+ ],
+ q(242) => [
+ q(0059),
+ q(0),
+ ],
+ q(262) => [
+ q(0051),
+ q(0),
+ ],
+ q(270) => [
+ q(0061),
+ q(0),
+ ],
+ q(292) => [
+ q(0064),
+ q(0),
+ ],
+ q(320) => [
+ q(0065),
+ q(0),
+ ],
+ q(324) => [
+ q(0067),
+ q(0),
+ ],
+ q(328) => [
+ q(0069),
+ q(0),
+ ],
+ q(332) => [
+ q(0070),
+ q(0),
+ ],
+ q(340) => [
+ q(0071),
+ q(0),
+ ],
+ q(344) => [
+ q(0072),
+ q(0),
+ ],
+ q(348) => [
+ q(0073),
+ q(0),
+ ],
+ q(352) => [
+ q(0074),
+ q(0),
+ ],
+ q(356) => [
+ q(0021),
+ q(0),
+ ],
+ q(360) => [
+ q(0075),
+ q(0),
+ ],
+ q(364) => [
+ q(0076),
+ q(0),
+ ],
+ q(368) => [
+ q(0077),
+ q(0),
+ ],
+ q(376) => [
+ q(0078),
+ q(0),
+ ],
+ q(388) => [
+ q(0079),
+ q(0),
+ ],
+ q(392) => [
+ q(0080),
+ q(0),
+ ],
+ q(398) => [
+ q(0082),
+ q(0),
+ ],
+ q(400) => [
+ q(0081),
+ q(0),
+ ],
+ q(404) => [
+ q(0083),
+ q(0),
+ ],
+ q(408) => [
+ q(0084),
+ q(0),
+ ],
+ q(410) => [
+ q(0085),
+ q(0),
+ ],
+ q(414) => [
+ q(0086),
+ q(0),
+ ],
+ q(417) => [
+ q(0087),
+ q(0),
+ ],
+ q(418) => [
+ q(0088),
+ q(0),
+ ],
+ q(422) => [
+ q(0090),
+ q(0),
+ ],
+ q(426) => [
+ q(0092),
+ q(0),
+ ],
+ q(428) => [
+ q(0089),
+ q(0),
+ ],
+ q(430) => [
+ q(0093),
+ q(0),
+ ],
+ q(434) => [
+ q(0094),
+ q(0),
+ ],
+ q(440) => [
+ q(0096),
+ q(0),
+ ],
+ q(446) => [
+ q(0097),
+ q(0),
+ ],
+ q(454) => [
+ q(0100),
+ q(0),
+ ],
+ q(458) => [
+ q(0101),
+ q(0),
+ ],
+ q(462) => [
+ q(0102),
+ q(0),
+ ],
+ q(478) => [
+ q(0103),
+ q(0),
+ ],
+ q(480) => [
+ q(0104),
+ q(0),
+ ],
+ q(484) => [
+ q(0105),
+ q(0),
+ ],
+ q(496) => [
+ q(0108),
+ q(0),
+ ],
+ q(498) => [
+ q(0107),
+ q(0),
+ ],
+ q(504) => [
+ q(0109),
+ q(0),
+ ],
+ q(512) => [
+ q(0117),
+ q(0),
+ ],
+ q(516) => [
+ q(0112),
+ q(0),
+ ],
+ q(524) => [
+ q(0113),
+ q(0),
+ ],
+ q(532) => [
+ q(0114),
+ q(0),
+ ],
+ q(533) => [
+ q(0010),
+ q(0),
+ ],
+ q(548) => [
+ q(0164),
+ q(0),
+ ],
+ q(554) => [
+ q(0044),
+ q(0),
+ ],
+ q(558) => [
+ q(0115),
+ q(0),
+ ],
+ q(566) => [
+ q(0116),
+ q(0),
+ ],
+ q(578) => [
+ q(0027),
+ q(0),
+ ],
+ q(586) => [
+ q(0118),
+ q(0),
+ ],
+ q(590) => [
+ q(0119),
+ q(0),
+ ],
+ q(598) => [
+ q(0120),
+ q(0),
+ ],
+ q(600) => [
+ q(0121),
+ q(0),
+ ],
+ q(604) => [
+ q(0122),
+ q(0),
+ ],
+ q(608) => [
+ q(0123),
+ q(0),
+ ],
+ q(624) => [
+ q(0068),
+ q(0),
+ ],
+ q(634) => [
+ q(0125),
+ q(0),
+ ],
+ q(643) => [
+ q(0127),
+ q(0),
+ ],
+ q(646) => [
+ q(0128),
+ q(0),
+ ],
+ q(654) => [
+ q(0129),
+ q(0),
+ ],
+ q(678) => [
+ q(0131),
+ q(0),
+ ],
+ q(682) => [
+ q(0132),
+ q(0),
+ ],
+ q(690) => [
+ q(0134),
+ q(0),
+ ],
+ q(694) => [
+ q(0135),
+ q(0),
+ ],
+ q(702) => [
+ q(0136),
+ q(0),
+ ],
+ q(704) => [
+ q(0166),
+ q(0),
+ ],
+ q(706) => [
+ q(0138),
+ q(0),
+ ],
+ q(710) => [
+ q(0091),
+ q(0),
+ ],
+ q(748) => [
+ q(0142),
+ q(0),
+ ],
+ q(752) => [
+ q(0143),
+ q(0),
+ ],
+ q(756) => [
+ q(0095),
+ q(0),
+ ],
+ q(760) => [
+ q(0146),
+ q(0),
+ ],
+ q(764) => [
+ q(0150),
+ q(0),
+ ],
+ q(776) => [
+ q(0151),
+ q(0),
+ ],
+ q(780) => [
+ q(0152),
+ q(0),
+ ],
+ q(784) => [
+ q(0158),
+ q(0),
+ ],
+ q(788) => [
+ q(0153),
+ q(0),
+ ],
+ q(800) => [
+ q(0156),
+ q(0),
+ ],
+ q(807) => [
+ q(0098),
+ q(0),
+ ],
+ q(818) => [
+ q(0053),
+ q(0),
+ ],
+ q(826) => [
+ q(0066),
+ q(0),
+ ],
+ q(834) => [
+ q(0149),
+ q(0),
+ ],
+ q(840) => [
+ q(0005),
+ q(0),
+ ],
+ q(858) => [
+ q(0161),
+ q(0),
+ ],
+ q(860) => [
+ q(0163),
+ q(0),
+ ],
+ q(882) => [
+ q(0130),
+ q(0),
+ ],
+ q(886) => [
+ q(0167),
+ q(0),
+ ],
+ q(894) => [
+ q(0168),
+ q(0),
+ ],
+ q(901) => [
+ q(0147),
+ q(0),
+ ],
+ q(931) => [
+ q(0048),
+ q(0),
+ ],
+ q(932) => [
+ q(0169),
+ q(0),
+ ],
+ q(934) => [
+ q(0155),
+ q(0),
+ ],
+ q(936) => [
+ q(0063),
+ q(0),
+ ],
+ q(937) => [
+ q(0165),
+ q(0),
+ ],
+ q(938) => [
+ q(0140),
+ q(0),
+ ],
+ q(940) => [
+ q(0162),
+ q(0),
+ ],
+ q(941) => [
+ q(0133),
+ q(0),
+ ],
+ q(943) => [
+ q(0110),
+ q(0),
+ ],
+ q(944) => [
+ q(0012),
+ q(0),
+ ],
+ q(946) => [
+ q(0126),
+ q(0),
+ ],
+ q(947) => [
+ q(0145),
+ q(0),
+ ],
+ q(948) => [
+ q(0144),
+ q(0),
+ ],
+ q(949) => [
+ q(0154),
+ q(0),
+ ],
+ q(950) => [
+ q(0033),
+ q(0),
+ ],
+ q(951) => [
+ q(0007),
+ q(0),
+ ],
+ q(952) => [
+ q(0019),
+ q(0),
+ ],
+ q(953) => [
+ q(0060),
+ q(0),
+ ],
+ q(955) => [
+ q(0171),
+ q(0),
+ ],
+ q(956) => [
+ q(0172),
+ q(0),
+ ],
+ q(957) => [
+ q(0173),
+ q(0),
+ ],
+ q(958) => [
+ q(0174),
+ q(0),
+ ],
+ q(959) => [
+ q(0170),
+ q(0),
+ ],
+ q(960) => [
+ q(0175),
+ q(0),
+ ],
+ q(961) => [
+ q(0178),
+ q(0),
+ ],
+ q(962) => [
+ q(0177),
+ q(0),
+ ],
+ q(964) => [
+ q(0176),
+ q(0),
+ ],
+ q(968) => [
+ q(0141),
+ q(0),
+ ],
+ q(969) => [
+ q(0099),
+ q(0),
+ ],
+ q(970) => [
+ q(0041),
+ q(0),
+ ],
+ q(971) => [
+ q(0001),
+ q(0),
+ ],
+ q(972) => [
+ q(0148),
+ q(0),
+ ],
+ q(973) => [
+ q(0006),
+ q(0),
+ ],
+ q(974) => [
+ q(0017),
+ q(0),
+ ],
+ q(975) => [
+ q(0030),
+ q(0),
+ ],
+ q(976) => [
+ q(0043),
+ q(0),
+ ],
+ q(977) => [
+ q(0025),
+ q(0),
+ ],
+ q(978) => [
+ q(0002),
+ q(0),
+ ],
+ q(979) => [
+ q(0106),
+ q(0),
+ ],
+ q(980) => [
+ q(0157),
+ q(0),
+ ],
+ q(981) => [
+ q(0062),
+ q(0),
+ ],
+ q(984) => [
+ q(0024),
+ q(0),
+ ],
+ q(985) => [
+ q(0124),
+ q(0),
+ ],
+ q(986) => [
+ q(0028),
+ q(0),
+ ],
+ q(990) => [
+ q(0038),
+ q(0),
+ ],
+ q(997) => [
+ q(0160),
+ q(0),
+ ],
+ q(998) => [
+ q(0159),
+ q(0),
+ ],
+ },
+};
+
+$Locale::Codes::Data{'currency'}{'id2code'} = {
+ q(alpha) => {
+ q(0001) => q(AFN),
+ q(0002) => q(EUR),
+ q(0003) => q(ALL),
+ q(0004) => q(DZD),
+ q(0005) => q(USD),
+ q(0006) => q(AOA),
+ q(0007) => q(XCD),
+ q(0008) => q(ARS),
+ q(0009) => q(AMD),
+ q(0010) => q(AWG),
+ q(0011) => q(AUD),
+ q(0012) => q(AZN),
+ q(0013) => q(BSD),
+ q(0014) => q(BHD),
+ q(0015) => q(BDT),
+ q(0016) => q(BBD),
+ q(0017) => q(BYR),
+ q(0018) => q(BZD),
+ q(0019) => q(XOF),
+ q(0020) => q(BMD),
+ q(0021) => q(INR),
+ q(0022) => q(BTN),
+ q(0023) => q(BOB),
+ q(0024) => q(BOV),
+ q(0025) => q(BAM),
+ q(0026) => q(BWP),
+ q(0027) => q(NOK),
+ q(0028) => q(BRL),
+ q(0029) => q(BND),
+ q(0030) => q(BGN),
+ q(0031) => q(BIF),
+ q(0032) => q(KHR),
+ q(0033) => q(XAF),
+ q(0034) => q(CAD),
+ q(0035) => q(CVE),
+ q(0036) => q(KYD),
+ q(0037) => q(CLP),
+ q(0038) => q(CLF),
+ q(0039) => q(CNY),
+ q(0040) => q(COP),
+ q(0041) => q(COU),
+ q(0042) => q(KMF),
+ q(0043) => q(CDF),
+ q(0044) => q(NZD),
+ q(0045) => q(CRC),
+ q(0046) => q(HRK),
+ q(0047) => q(CUP),
+ q(0048) => q(CUC),
+ q(0049) => q(CZK),
+ q(0050) => q(DKK),
+ q(0051) => q(DJF),
+ q(0052) => q(DOP),
+ q(0053) => q(EGP),
+ q(0054) => q(SVC),
+ q(0055) => q(ERN),
+ q(0056) => q(EEK),
+ q(0057) => q(ETB),
+ q(0058) => q(FKP),
+ q(0059) => q(FJD),
+ q(0060) => q(XPF),
+ q(0061) => q(GMD),
+ q(0062) => q(GEL),
+ q(0063) => q(GHS),
+ q(0064) => q(GIP),
+ q(0065) => q(GTQ),
+ q(0066) => q(GBP),
+ q(0067) => q(GNF),
+ q(0068) => q(GWP),
+ q(0069) => q(GYD),
+ q(0070) => q(HTG),
+ q(0071) => q(HNL),
+ q(0072) => q(HKD),
+ q(0073) => q(HUF),
+ q(0074) => q(ISK),
+ q(0075) => q(IDR),
+ q(0076) => q(IRR),
+ q(0077) => q(IQD),
+ q(0078) => q(ILS),
+ q(0079) => q(JMD),
+ q(0080) => q(JPY),
+ q(0081) => q(JOD),
+ q(0082) => q(KZT),
+ q(0083) => q(KES),
+ q(0084) => q(KPW),
+ q(0085) => q(KRW),
+ q(0086) => q(KWD),
+ q(0087) => q(KGS),
+ q(0088) => q(LAK),
+ q(0089) => q(LVL),
+ q(0090) => q(LBP),
+ q(0091) => q(ZAR),
+ q(0092) => q(LSL),
+ q(0093) => q(LRD),
+ q(0094) => q(LYD),
+ q(0095) => q(CHF),
+ q(0096) => q(LTL),
+ q(0097) => q(MOP),
+ q(0098) => q(MKD),
+ q(0099) => q(MGA),
+ q(0100) => q(MWK),
+ q(0101) => q(MYR),
+ q(0102) => q(MVR),
+ q(0103) => q(MRO),
+ q(0104) => q(MUR),
+ q(0105) => q(MXN),
+ q(0106) => q(MXV),
+ q(0107) => q(MDL),
+ q(0108) => q(MNT),
+ q(0109) => q(MAD),
+ q(0110) => q(MZN),
+ q(0111) => q(MMK),
+ q(0112) => q(NAD),
+ q(0113) => q(NPR),
+ q(0114) => q(ANG),
+ q(0115) => q(NIO),
+ q(0116) => q(NGN),
+ q(0117) => q(OMR),
+ q(0118) => q(PKR),
+ q(0119) => q(PAB),
+ q(0120) => q(PGK),
+ q(0121) => q(PYG),
+ q(0122) => q(PEN),
+ q(0123) => q(PHP),
+ q(0124) => q(PLN),
+ q(0125) => q(QAR),
+ q(0126) => q(RON),
+ q(0127) => q(RUB),
+ q(0128) => q(RWF),
+ q(0129) => q(SHP),
+ q(0130) => q(WST),
+ q(0131) => q(STD),
+ q(0132) => q(SAR),
+ q(0133) => q(RSD),
+ q(0134) => q(SCR),
+ q(0135) => q(SLL),
+ q(0136) => q(SGD),
+ q(0137) => q(SBD),
+ q(0138) => q(SOS),
+ q(0139) => q(LKR),
+ q(0140) => q(SDG),
+ q(0141) => q(SRD),
+ q(0142) => q(SZL),
+ q(0143) => q(SEK),
+ q(0144) => q(CHW),
+ q(0145) => q(CHE),
+ q(0146) => q(SYP),
+ q(0147) => q(TWD),
+ q(0148) => q(TJS),
+ q(0149) => q(TZS),
+ q(0150) => q(THB),
+ q(0151) => q(TOP),
+ q(0152) => q(TTD),
+ q(0153) => q(TND),
+ q(0154) => q(TRY),
+ q(0155) => q(TMT),
+ q(0156) => q(UGX),
+ q(0157) => q(UAH),
+ q(0158) => q(AED),
+ q(0159) => q(USS),
+ q(0160) => q(USN),
+ q(0161) => q(UYU),
+ q(0162) => q(UYI),
+ q(0163) => q(UZS),
+ q(0164) => q(VUV),
+ q(0165) => q(VEF),
+ q(0166) => q(VND),
+ q(0167) => q(YER),
+ q(0168) => q(ZMK),
+ q(0169) => q(ZWL),
+ q(0170) => q(XAU),
+ q(0171) => q(XBA),
+ q(0172) => q(XBB),
+ q(0173) => q(XBC),
+ q(0174) => q(XBD),
+ q(0175) => q(XDR),
+ q(0176) => q(XPD),
+ q(0177) => q(XPT),
+ q(0178) => q(XAG),
+ q(0179) => q(XFU),
+ },
+ q(num) => {
+ q(0001) => q(971),
+ q(0002) => q(978),
+ q(0003) => q(008),
+ q(0004) => q(012),
+ q(0005) => q(840),
+ q(0006) => q(973),
+ q(0007) => q(951),
+ q(0008) => q(032),
+ q(0009) => q(051),
+ q(0010) => q(533),
+ q(0011) => q(036),
+ q(0012) => q(944),
+ q(0013) => q(044),
+ q(0014) => q(048),
+ q(0015) => q(050),
+ q(0016) => q(052),
+ q(0017) => q(974),
+ q(0018) => q(084),
+ q(0019) => q(952),
+ q(0020) => q(060),
+ q(0021) => q(356),
+ q(0022) => q(064),
+ q(0023) => q(068),
+ q(0024) => q(984),
+ q(0025) => q(977),
+ q(0026) => q(072),
+ q(0027) => q(578),
+ q(0028) => q(986),
+ q(0029) => q(096),
+ q(0030) => q(975),
+ q(0031) => q(108),
+ q(0032) => q(116),
+ q(0033) => q(950),
+ q(0034) => q(124),
+ q(0035) => q(132),
+ q(0036) => q(136),
+ q(0037) => q(152),
+ q(0038) => q(990),
+ q(0039) => q(156),
+ q(0040) => q(170),
+ q(0041) => q(970),
+ q(0042) => q(174),
+ q(0043) => q(976),
+ q(0044) => q(554),
+ q(0045) => q(188),
+ q(0046) => q(191),
+ q(0047) => q(192),
+ q(0048) => q(931),
+ q(0049) => q(203),
+ q(0050) => q(208),
+ q(0051) => q(262),
+ q(0052) => q(214),
+ q(0053) => q(818),
+ q(0054) => q(222),
+ q(0055) => q(232),
+ q(0056) => q(233),
+ q(0057) => q(230),
+ q(0058) => q(238),
+ q(0059) => q(242),
+ q(0060) => q(953),
+ q(0061) => q(270),
+ q(0062) => q(981),
+ q(0063) => q(936),
+ q(0064) => q(292),
+ q(0065) => q(320),
+ q(0066) => q(826),
+ q(0067) => q(324),
+ q(0068) => q(624),
+ q(0069) => q(328),
+ q(0070) => q(332),
+ q(0071) => q(340),
+ q(0072) => q(344),
+ q(0073) => q(348),
+ q(0074) => q(352),
+ q(0075) => q(360),
+ q(0076) => q(364),
+ q(0077) => q(368),
+ q(0078) => q(376),
+ q(0079) => q(388),
+ q(0080) => q(392),
+ q(0081) => q(400),
+ q(0082) => q(398),
+ q(0083) => q(404),
+ q(0084) => q(408),
+ q(0085) => q(410),
+ q(0086) => q(414),
+ q(0087) => q(417),
+ q(0088) => q(418),
+ q(0089) => q(428),
+ q(0090) => q(422),
+ q(0091) => q(710),
+ q(0092) => q(426),
+ q(0093) => q(430),
+ q(0094) => q(434),
+ q(0095) => q(756),
+ q(0096) => q(440),
+ q(0097) => q(446),
+ q(0098) => q(807),
+ q(0099) => q(969),
+ q(0100) => q(454),
+ q(0101) => q(458),
+ q(0102) => q(462),
+ q(0103) => q(478),
+ q(0104) => q(480),
+ q(0105) => q(484),
+ q(0106) => q(979),
+ q(0107) => q(498),
+ q(0108) => q(496),
+ q(0109) => q(504),
+ q(0110) => q(943),
+ q(0111) => q(104),
+ q(0112) => q(516),
+ q(0113) => q(524),
+ q(0114) => q(532),
+ q(0115) => q(558),
+ q(0116) => q(566),
+ q(0117) => q(512),
+ q(0118) => q(586),
+ q(0119) => q(590),
+ q(0120) => q(598),
+ q(0121) => q(600),
+ q(0122) => q(604),
+ q(0123) => q(608),
+ q(0124) => q(985),
+ q(0125) => q(634),
+ q(0126) => q(946),
+ q(0127) => q(643),
+ q(0128) => q(646),
+ q(0129) => q(654),
+ q(0130) => q(882),
+ q(0131) => q(678),
+ q(0132) => q(682),
+ q(0133) => q(941),
+ q(0134) => q(690),
+ q(0135) => q(694),
+ q(0136) => q(702),
+ q(0137) => q(090),
+ q(0138) => q(706),
+ q(0139) => q(144),
+ q(0140) => q(938),
+ q(0141) => q(968),
+ q(0142) => q(748),
+ q(0143) => q(752),
+ q(0144) => q(948),
+ q(0145) => q(947),
+ q(0146) => q(760),
+ q(0147) => q(901),
+ q(0148) => q(972),
+ q(0149) => q(834),
+ q(0150) => q(764),
+ q(0151) => q(776),
+ q(0152) => q(780),
+ q(0153) => q(788),
+ q(0154) => q(949),
+ q(0155) => q(934),
+ q(0156) => q(800),
+ q(0157) => q(980),
+ q(0158) => q(784),
+ q(0159) => q(998),
+ q(0160) => q(997),
+ q(0161) => q(858),
+ q(0162) => q(940),
+ q(0163) => q(860),
+ q(0164) => q(548),
+ q(0165) => q(937),
+ q(0166) => q(704),
+ q(0167) => q(886),
+ q(0168) => q(894),
+ q(0169) => q(932),
+ q(0170) => q(959),
+ q(0171) => q(955),
+ q(0172) => q(956),
+ q(0173) => q(957),
+ q(0174) => q(958),
+ q(0175) => q(960),
+ q(0176) => q(964),
+ q(0177) => q(962),
+ q(0178) => q(961),
+ },
+};
+
+1;
--- /dev/null
+package Locale::Codes::Language;
+
+# This file was automatically generated. Any changes to this file will
+# be lost the next time 'get_codes' is run.
+# Generated on: Mon Apr 5 15:43:17 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Language - language codes for the Locale::Language module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Language module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'language'}{'id'} = '0486';
+
+$Locale::Codes::Data{'language'}{'id2names'} = {
+ q(0001) => [
+ q(Afar),
+ ],
+ q(0002) => [
+ q(Abkhazian),
+ ],
+ q(0003) => [
+ q(Achinese),
+ ],
+ q(0004) => [
+ q(Acoli),
+ ],
+ q(0005) => [
+ q(Adangme),
+ ],
+ q(0006) => [
+ q(Adyghe),
+ q(Adygei),
+ ],
+ q(0007) => [
+ q(Afro-Asiatic languages),
+ ],
+ q(0008) => [
+ q(Afrihili),
+ ],
+ q(0009) => [
+ q(Afrikaans),
+ ],
+ q(0010) => [
+ q(Ainu),
+ ],
+ q(0011) => [
+ q(Akan),
+ ],
+ q(0012) => [
+ q(Akkadian),
+ ],
+ q(0013) => [
+ q(Albanian),
+ ],
+ q(0014) => [
+ q(Aleut),
+ ],
+ q(0015) => [
+ q(Algonquian languages),
+ ],
+ q(0016) => [
+ q(Southern Altai),
+ ],
+ q(0017) => [
+ q(Amharic),
+ ],
+ q(0018) => [
+ q(English, Old (ca.450-1100)),
+ ],
+ q(0019) => [
+ q(Angika),
+ ],
+ q(0020) => [
+ q(Apache languages),
+ ],
+ q(0021) => [
+ q(Arabic),
+ ],
+ q(0022) => [
+ q(Official Aramaic (700-300 BCE)),
+ q(Imperial Aramaic (700-300 BCE)),
+ ],
+ q(0023) => [
+ q(Aragonese),
+ ],
+ q(0024) => [
+ q(Armenian),
+ ],
+ q(0025) => [
+ q(Mapudungun),
+ q(Mapuche),
+ ],
+ q(0026) => [
+ q(Arapaho),
+ ],
+ q(0027) => [
+ q(Artificial languages),
+ ],
+ q(0028) => [
+ q(Arawak),
+ ],
+ q(0029) => [
+ q(Assamese),
+ ],
+ q(0030) => [
+ q(Asturian),
+ q(Bable),
+ q(Leonese),
+ q(Asturleonese),
+ ],
+ q(0031) => [
+ q(Athapascan languages),
+ ],
+ q(0032) => [
+ q(Australian languages),
+ ],
+ q(0033) => [
+ q(Avaric),
+ ],
+ q(0034) => [
+ q(Avestan),
+ ],
+ q(0035) => [
+ q(Awadhi),
+ ],
+ q(0036) => [
+ q(Aymara),
+ ],
+ q(0037) => [
+ q(Azerbaijani),
+ ],
+ q(0038) => [
+ q(Banda languages),
+ ],
+ q(0039) => [
+ q(Bamileke languages),
+ ],
+ q(0040) => [
+ q(Bashkir),
+ ],
+ q(0041) => [
+ q(Baluchi),
+ ],
+ q(0042) => [
+ q(Bambara),
+ ],
+ q(0043) => [
+ q(Balinese),
+ ],
+ q(0044) => [
+ q(Basque),
+ ],
+ q(0045) => [
+ q(Basa),
+ ],
+ q(0046) => [
+ q(Baltic languages),
+ ],
+ q(0047) => [
+ q(Beja),
+ q(Bedawiyet),
+ ],
+ q(0048) => [
+ q(Belarusian),
+ ],
+ q(0049) => [
+ q(Bemba),
+ ],
+ q(0050) => [
+ q(Bengali),
+ ],
+ q(0051) => [
+ q(Berber languages),
+ ],
+ q(0052) => [
+ q(Bhojpuri),
+ ],
+ q(0053) => [
+ q(Bihari languages),
+ ],
+ q(0054) => [
+ q(Bikol),
+ ],
+ q(0055) => [
+ q(Bini),
+ q(Edo),
+ ],
+ q(0056) => [
+ q(Bislama),
+ ],
+ q(0057) => [
+ q(Siksika),
+ ],
+ q(0058) => [
+ q(Bantu (Other)),
+ ],
+ q(0059) => [
+ q(Bosnian),
+ ],
+ q(0060) => [
+ q(Braj),
+ ],
+ q(0061) => [
+ q(Breton),
+ ],
+ q(0062) => [
+ q(Batak languages),
+ ],
+ q(0063) => [
+ q(Buriat),
+ ],
+ q(0064) => [
+ q(Buginese),
+ ],
+ q(0065) => [
+ q(Bulgarian),
+ ],
+ q(0066) => [
+ q(Burmese),
+ ],
+ q(0067) => [
+ q(Blin),
+ q(Bilin),
+ ],
+ q(0068) => [
+ q(Caddo),
+ ],
+ q(0069) => [
+ q(Central American Indian languages),
+ ],
+ q(0070) => [
+ q(Galibi Carib),
+ ],
+ q(0071) => [
+ q(Catalan),
+ q(Valencian),
+ ],
+ q(0072) => [
+ q(Caucasian languages),
+ ],
+ q(0073) => [
+ q(Cebuano),
+ ],
+ q(0074) => [
+ q(Celtic languages),
+ ],
+ q(0075) => [
+ q(Chamorro),
+ ],
+ q(0076) => [
+ q(Chibcha),
+ ],
+ q(0077) => [
+ q(Chechen),
+ ],
+ q(0078) => [
+ q(Chagatai),
+ ],
+ q(0079) => [
+ q(Chinese),
+ ],
+ q(0080) => [
+ q(Chuukese),
+ ],
+ q(0081) => [
+ q(Mari),
+ ],
+ q(0082) => [
+ q(Chinook jargon),
+ ],
+ q(0083) => [
+ q(Choctaw),
+ ],
+ q(0084) => [
+ q(Chipewyan),
+ q(Dene Suline),
+ ],
+ q(0085) => [
+ q(Cherokee),
+ ],
+ q(0086) => [
+ q(Church Slavic),
+ q(Old Slavonic),
+ q(Church Slavonic),
+ q(Old Bulgarian),
+ q(Old Church Slavonic),
+ ],
+ q(0087) => [
+ q(Chuvash),
+ ],
+ q(0088) => [
+ q(Cheyenne),
+ ],
+ q(0089) => [
+ q(Chamic languages),
+ ],
+ q(0090) => [
+ q(Coptic),
+ ],
+ q(0091) => [
+ q(Cornish),
+ ],
+ q(0092) => [
+ q(Corsican),
+ ],
+ q(0093) => [
+ q(Creoles and pidgins, English based),
+ ],
+ q(0094) => [
+ q(Creoles and pidgins, French-based ),
+ ],
+ q(0095) => [
+ q(Creoles and pidgins, Portuguese-based ),
+ ],
+ q(0096) => [
+ q(Cree),
+ ],
+ q(0097) => [
+ q(Crimean Tatar),
+ q(Crimean Turkish),
+ ],
+ q(0098) => [
+ q(Creoles and pidgins ),
+ ],
+ q(0099) => [
+ q(Kashubian),
+ ],
+ q(0100) => [
+ q(Cushitic languages),
+ ],
+ q(0101) => [
+ q(Czech),
+ ],
+ q(0102) => [
+ q(Dakota),
+ ],
+ q(0103) => [
+ q(Danish),
+ ],
+ q(0104) => [
+ q(Dargwa),
+ ],
+ q(0105) => [
+ q(Land Dayak languages),
+ ],
+ q(0106) => [
+ q(Delaware),
+ ],
+ q(0107) => [
+ q(Slave (Athapascan)),
+ ],
+ q(0108) => [
+ q(Dogrib),
+ ],
+ q(0109) => [
+ q(Dinka),
+ ],
+ q(0110) => [
+ q(Divehi),
+ q(Dhivehi),
+ q(Maldivian),
+ ],
+ q(0111) => [
+ q(Dogri),
+ ],
+ q(0112) => [
+ q(Dravidian languages),
+ ],
+ q(0113) => [
+ q(Lower Sorbian),
+ ],
+ q(0114) => [
+ q(Duala),
+ ],
+ q(0115) => [
+ q(Dutch, Middle (ca.1050-1350)),
+ ],
+ q(0116) => [
+ q(Dutch),
+ q(Flemish),
+ ],
+ q(0117) => [
+ q(Dyula),
+ ],
+ q(0118) => [
+ q(Dzongkha),
+ ],
+ q(0119) => [
+ q(Efik),
+ ],
+ q(0120) => [
+ q(Egyptian (Ancient)),
+ ],
+ q(0121) => [
+ q(Ekajuk),
+ ],
+ q(0122) => [
+ q(Elamite),
+ ],
+ q(0123) => [
+ q(English),
+ ],
+ q(0124) => [
+ q(English, Middle (1100-1500)),
+ ],
+ q(0125) => [
+ q(Esperanto),
+ ],
+ q(0126) => [
+ q(Estonian),
+ ],
+ q(0127) => [
+ q(Ewe),
+ ],
+ q(0128) => [
+ q(Ewondo),
+ ],
+ q(0129) => [
+ q(Fang),
+ ],
+ q(0130) => [
+ q(Faroese),
+ ],
+ q(0131) => [
+ q(Fanti),
+ ],
+ q(0132) => [
+ q(Fijian),
+ ],
+ q(0133) => [
+ q(Filipino),
+ q(Pilipino),
+ ],
+ q(0134) => [
+ q(Finnish),
+ ],
+ q(0135) => [
+ q(Finno-Ugrian languages),
+ ],
+ q(0136) => [
+ q(Fon),
+ ],
+ q(0137) => [
+ q(French),
+ ],
+ q(0138) => [
+ q(French, Middle (ca.1400-1600)),
+ ],
+ q(0139) => [
+ q(French, Old (842-ca.1400)),
+ ],
+ q(0140) => [
+ q(Northern Frisian),
+ ],
+ q(0141) => [
+ q(Eastern Frisian),
+ ],
+ q(0142) => [
+ q(Western Frisian),
+ ],
+ q(0143) => [
+ q(Fulah),
+ ],
+ q(0144) => [
+ q(Friulian),
+ ],
+ q(0145) => [
+ q(Ga),
+ ],
+ q(0146) => [
+ q(Gayo),
+ ],
+ q(0147) => [
+ q(Gbaya),
+ ],
+ q(0148) => [
+ q(Germanic languages),
+ ],
+ q(0149) => [
+ q(Georgian),
+ ],
+ q(0150) => [
+ q(German),
+ ],
+ q(0151) => [
+ q(Geez),
+ ],
+ q(0152) => [
+ q(Gilbertese),
+ ],
+ q(0153) => [
+ q(Gaelic),
+ q(Scottish Gaelic),
+ ],
+ q(0154) => [
+ q(Irish),
+ ],
+ q(0155) => [
+ q(Galician),
+ ],
+ q(0156) => [
+ q(Manx),
+ ],
+ q(0157) => [
+ q(German, Middle High (ca.1050-1500)),
+ ],
+ q(0158) => [
+ q(German, Old High (ca.750-1050)),
+ ],
+ q(0159) => [
+ q(Gondi),
+ ],
+ q(0160) => [
+ q(Gorontalo),
+ ],
+ q(0161) => [
+ q(Gothic),
+ ],
+ q(0162) => [
+ q(Grebo),
+ ],
+ q(0163) => [
+ q(Greek, Ancient (to 1453)),
+ ],
+ q(0164) => [
+ q(Greek, Modern (1453-)),
+ q(Greek),
+ ],
+ q(0165) => [
+ q(Guarani),
+ ],
+ q(0166) => [
+ q(Swiss German),
+ q(Alemannic),
+ q(Alsatian),
+ ],
+ q(0167) => [
+ q(Gujarati),
+ ],
+ q(0168) => [
+ q(Gwich'in),
+ ],
+ q(0169) => [
+ q(Haida),
+ ],
+ q(0170) => [
+ q(Haitian),
+ q(Haitian Creole),
+ ],
+ q(0171) => [
+ q(Hausa),
+ ],
+ q(0172) => [
+ q(Hawaiian),
+ ],
+ q(0173) => [
+ q(Hebrew),
+ ],
+ q(0174) => [
+ q(Herero),
+ ],
+ q(0175) => [
+ q(Hiligaynon),
+ ],
+ q(0176) => [
+ q(Himachali languages),
+ q(Western Pahari languages),
+ ],
+ q(0177) => [
+ q(Hindi),
+ ],
+ q(0178) => [
+ q(Hittite),
+ ],
+ q(0179) => [
+ q(Hmong),
+ q(Mong),
+ ],
+ q(0180) => [
+ q(Hiri Motu),
+ ],
+ q(0181) => [
+ q(Croatian),
+ ],
+ q(0182) => [
+ q(Upper Sorbian),
+ ],
+ q(0183) => [
+ q(Hungarian),
+ ],
+ q(0184) => [
+ q(Hupa),
+ ],
+ q(0185) => [
+ q(Iban),
+ ],
+ q(0186) => [
+ q(Igbo),
+ ],
+ q(0187) => [
+ q(Icelandic),
+ ],
+ q(0188) => [
+ q(Ido),
+ ],
+ q(0189) => [
+ q(Sichuan Yi),
+ q(Nuosu),
+ ],
+ q(0190) => [
+ q(Ijo languages),
+ ],
+ q(0191) => [
+ q(Inuktitut),
+ ],
+ q(0192) => [
+ q(Interlingue),
+ q(Occidental),
+ ],
+ q(0193) => [
+ q(Iloko),
+ ],
+ q(0194) => [
+ q(Interlingua (International Auxiliary Language Association)),
+ ],
+ q(0195) => [
+ q(Indic languages),
+ ],
+ q(0196) => [
+ q(Indonesian),
+ ],
+ q(0197) => [
+ q(Indo-European languages),
+ ],
+ q(0198) => [
+ q(Ingush),
+ ],
+ q(0199) => [
+ q(Inupiaq),
+ ],
+ q(0200) => [
+ q(Iranian languages),
+ ],
+ q(0201) => [
+ q(Iroquoian languages),
+ ],
+ q(0202) => [
+ q(Italian),
+ ],
+ q(0203) => [
+ q(Javanese),
+ ],
+ q(0204) => [
+ q(Lojban),
+ ],
+ q(0205) => [
+ q(Japanese),
+ ],
+ q(0206) => [
+ q(Judeo-Persian),
+ ],
+ q(0207) => [
+ q(Judeo-Arabic),
+ ],
+ q(0208) => [
+ q(Kara-Kalpak),
+ ],
+ q(0209) => [
+ q(Kabyle),
+ ],
+ q(0210) => [
+ q(Kachin),
+ q(Jingpho),
+ ],
+ q(0211) => [
+ q(Kalaallisut),
+ q(Greenlandic),
+ ],
+ q(0212) => [
+ q(Kamba),
+ ],
+ q(0213) => [
+ q(Kannada),
+ ],
+ q(0214) => [
+ q(Karen languages),
+ ],
+ q(0215) => [
+ q(Kashmiri),
+ ],
+ q(0216) => [
+ q(Kanuri),
+ ],
+ q(0217) => [
+ q(Kawi),
+ ],
+ q(0218) => [
+ q(Kazakh),
+ ],
+ q(0219) => [
+ q(Kabardian),
+ ],
+ q(0220) => [
+ q(Khasi),
+ ],
+ q(0221) => [
+ q(Khoisan languages),
+ ],
+ q(0222) => [
+ q(Central Khmer),
+ ],
+ q(0223) => [
+ q(Khotanese),
+ q(Sakan),
+ ],
+ q(0224) => [
+ q(Kikuyu),
+ q(Gikuyu),
+ ],
+ q(0225) => [
+ q(Kinyarwanda),
+ ],
+ q(0226) => [
+ q(Kirghiz),
+ q(Kyrgyz),
+ ],
+ q(0227) => [
+ q(Kimbundu),
+ ],
+ q(0228) => [
+ q(Konkani),
+ ],
+ q(0229) => [
+ q(Komi),
+ ],
+ q(0230) => [
+ q(Kongo),
+ ],
+ q(0231) => [
+ q(Korean),
+ ],
+ q(0232) => [
+ q(Kosraean),
+ ],
+ q(0233) => [
+ q(Kpelle),
+ ],
+ q(0234) => [
+ q(Karachay-Balkar),
+ ],
+ q(0235) => [
+ q(Karelian),
+ ],
+ q(0236) => [
+ q(Kru languages),
+ ],
+ q(0237) => [
+ q(Kurukh),
+ ],
+ q(0238) => [
+ q(Kuanyama),
+ q(Kwanyama),
+ ],
+ q(0239) => [
+ q(Kumyk),
+ ],
+ q(0240) => [
+ q(Kurdish),
+ ],
+ q(0241) => [
+ q(Kutenai),
+ ],
+ q(0242) => [
+ q(Ladino),
+ ],
+ q(0243) => [
+ q(Lahnda),
+ ],
+ q(0244) => [
+ q(Lamba),
+ ],
+ q(0245) => [
+ q(Lao),
+ ],
+ q(0246) => [
+ q(Latin),
+ ],
+ q(0247) => [
+ q(Latvian),
+ ],
+ q(0248) => [
+ q(Lezghian),
+ ],
+ q(0249) => [
+ q(Limburgan),
+ q(Limburger),
+ q(Limburgish),
+ ],
+ q(0250) => [
+ q(Lingala),
+ ],
+ q(0251) => [
+ q(Lithuanian),
+ ],
+ q(0252) => [
+ q(Mongo),
+ ],
+ q(0253) => [
+ q(Lozi),
+ ],
+ q(0254) => [
+ q(Luxembourgish),
+ q(Letzeburgesch),
+ ],
+ q(0255) => [
+ q(Luba-Lulua),
+ ],
+ q(0256) => [
+ q(Luba-Katanga),
+ ],
+ q(0257) => [
+ q(Ganda),
+ ],
+ q(0258) => [
+ q(Luiseno),
+ ],
+ q(0259) => [
+ q(Lunda),
+ ],
+ q(0260) => [
+ q(Luo (Kenya and Tanzania)),
+ ],
+ q(0261) => [
+ q(Lushai),
+ ],
+ q(0262) => [
+ q(Macedonian),
+ ],
+ q(0263) => [
+ q(Madurese),
+ ],
+ q(0264) => [
+ q(Magahi),
+ ],
+ q(0265) => [
+ q(Marshallese),
+ ],
+ q(0266) => [
+ q(Maithili),
+ ],
+ q(0267) => [
+ q(Makasar),
+ ],
+ q(0268) => [
+ q(Malayalam),
+ ],
+ q(0269) => [
+ q(Mandingo),
+ ],
+ q(0270) => [
+ q(Maori),
+ ],
+ q(0271) => [
+ q(Austronesian languages),
+ ],
+ q(0272) => [
+ q(Marathi),
+ ],
+ q(0273) => [
+ q(Masai),
+ ],
+ q(0274) => [
+ q(Malay),
+ ],
+ q(0275) => [
+ q(Moksha),
+ ],
+ q(0276) => [
+ q(Mandar),
+ ],
+ q(0277) => [
+ q(Mende),
+ ],
+ q(0278) => [
+ q(Irish, Middle (900-1200)),
+ ],
+ q(0279) => [
+ q(Mi'kmaq),
+ q(Micmac),
+ ],
+ q(0280) => [
+ q(Minangkabau),
+ ],
+ q(0281) => [
+ q(Uncoded languages),
+ ],
+ q(0282) => [
+ q(Mon-Khmer languages),
+ ],
+ q(0283) => [
+ q(Malagasy),
+ ],
+ q(0284) => [
+ q(Maltese),
+ ],
+ q(0285) => [
+ q(Manchu),
+ ],
+ q(0286) => [
+ q(Manipuri),
+ ],
+ q(0287) => [
+ q(Manobo languages),
+ ],
+ q(0288) => [
+ q(Mohawk),
+ ],
+ q(0289) => [
+ q(Mongolian),
+ ],
+ q(0290) => [
+ q(Mossi),
+ ],
+ q(0291) => [
+ q(Multiple languages),
+ ],
+ q(0292) => [
+ q(Munda languages),
+ ],
+ q(0293) => [
+ q(Creek),
+ ],
+ q(0294) => [
+ q(Mirandese),
+ ],
+ q(0295) => [
+ q(Marwari),
+ ],
+ q(0296) => [
+ q(Mayan languages),
+ ],
+ q(0297) => [
+ q(Erzya),
+ ],
+ q(0298) => [
+ q(Nahuatl languages),
+ ],
+ q(0299) => [
+ q(North American Indian languages),
+ ],
+ q(0300) => [
+ q(Neapolitan),
+ ],
+ q(0301) => [
+ q(Nauru),
+ ],
+ q(0302) => [
+ q(Navajo),
+ q(Navaho),
+ ],
+ q(0303) => [
+ q(Ndebele, South),
+ q(South Ndebele),
+ ],
+ q(0304) => [
+ q(Ndebele, North),
+ q(North Ndebele),
+ ],
+ q(0305) => [
+ q(Ndonga),
+ ],
+ q(0306) => [
+ q(Low German),
+ q(Low Saxon),
+ q(German, Low),
+ q(Saxon, Low),
+ ],
+ q(0307) => [
+ q(Nepali),
+ ],
+ q(0308) => [
+ q(Nepal Bhasa),
+ q(Newari),
+ ],
+ q(0309) => [
+ q(Nias),
+ ],
+ q(0310) => [
+ q(Niger-Kordofanian languages),
+ ],
+ q(0311) => [
+ q(Niuean),
+ ],
+ q(0312) => [
+ q(Norwegian Nynorsk),
+ q(Nynorsk, Norwegian),
+ ],
+ q(0313) => [
+ q(Bokmal, Norwegian),
+ q(Norwegian Bokmal),
+ ],
+ q(0314) => [
+ q(Nogai),
+ ],
+ q(0315) => [
+ q(Norse, Old),
+ ],
+ q(0316) => [
+ q(Norwegian),
+ ],
+ q(0317) => [
+ q(N'Ko),
+ ],
+ q(0318) => [
+ q(Pedi),
+ q(Sepedi),
+ q(Northern Sotho),
+ ],
+ q(0319) => [
+ q(Nubian languages),
+ ],
+ q(0320) => [
+ q(Classical Newari),
+ q(Old Newari),
+ q(Classical Nepal Bhasa),
+ ],
+ q(0321) => [
+ q(Chichewa),
+ q(Chewa),
+ q(Nyanja),
+ ],
+ q(0322) => [
+ q(Nyamwezi),
+ ],
+ q(0323) => [
+ q(Nyankole),
+ ],
+ q(0324) => [
+ q(Nyoro),
+ ],
+ q(0325) => [
+ q(Nzima),
+ ],
+ q(0326) => [
+ q(Occitan (post 1500)),
+ q(Provencal),
+ ],
+ q(0327) => [
+ q(Ojibwa),
+ ],
+ q(0328) => [
+ q(Oriya),
+ ],
+ q(0329) => [
+ q(Oromo),
+ ],
+ q(0330) => [
+ q(Osage),
+ ],
+ q(0331) => [
+ q(Ossetian),
+ q(Ossetic),
+ ],
+ q(0332) => [
+ q(Turkish, Ottoman (1500-1928)),
+ ],
+ q(0333) => [
+ q(Otomian languages),
+ ],
+ q(0334) => [
+ q(Papuan languages),
+ ],
+ q(0335) => [
+ q(Pangasinan),
+ ],
+ q(0336) => [
+ q(Pahlavi),
+ ],
+ q(0337) => [
+ q(Pampanga),
+ q(Kapampangan),
+ ],
+ q(0338) => [
+ q(Panjabi),
+ q(Punjabi),
+ ],
+ q(0339) => [
+ q(Papiamento),
+ ],
+ q(0340) => [
+ q(Palauan),
+ ],
+ q(0341) => [
+ q(Persian, Old (ca.600-400 B.C.)),
+ ],
+ q(0342) => [
+ q(Persian),
+ ],
+ q(0343) => [
+ q(Philippine languages),
+ ],
+ q(0344) => [
+ q(Phoenician),
+ ],
+ q(0345) => [
+ q(Pali),
+ ],
+ q(0346) => [
+ q(Polish),
+ ],
+ q(0347) => [
+ q(Pohnpeian),
+ ],
+ q(0348) => [
+ q(Portuguese),
+ ],
+ q(0349) => [
+ q(Prakrit languages),
+ ],
+ q(0350) => [
+ q(Provencal, Old (to 1500)),
+ ],
+ q(0351) => [
+ q(Pushto),
+ q(Pashto),
+ ],
+ q(0352) => [
+ q(Reserved for local use),
+ ],
+ q(0353) => [
+ q(Quechua),
+ ],
+ q(0354) => [
+ q(Rajasthani),
+ ],
+ q(0355) => [
+ q(Rapanui),
+ ],
+ q(0356) => [
+ q(Rarotongan),
+ q(Cook Islands Maori),
+ ],
+ q(0357) => [
+ q(Romance languages),
+ ],
+ q(0358) => [
+ q(Romansh),
+ ],
+ q(0359) => [
+ q(Romany),
+ ],
+ q(0360) => [
+ q(Romanian),
+ q(Moldavian),
+ q(Moldovan),
+ ],
+ q(0361) => [
+ q(Rundi),
+ ],
+ q(0362) => [
+ q(Aromanian),
+ q(Arumanian),
+ q(Macedo-Romanian),
+ ],
+ q(0363) => [
+ q(Russian),
+ ],
+ q(0364) => [
+ q(Sandawe),
+ ],
+ q(0365) => [
+ q(Sango),
+ ],
+ q(0366) => [
+ q(Yakut),
+ ],
+ q(0367) => [
+ q(South American Indian (Other)),
+ ],
+ q(0368) => [
+ q(Salishan languages),
+ ],
+ q(0369) => [
+ q(Samaritan Aramaic),
+ ],
+ q(0370) => [
+ q(Sanskrit),
+ ],
+ q(0371) => [
+ q(Sasak),
+ ],
+ q(0372) => [
+ q(Santali),
+ ],
+ q(0373) => [
+ q(Sicilian),
+ ],
+ q(0374) => [
+ q(Scots),
+ ],
+ q(0375) => [
+ q(Selkup),
+ ],
+ q(0376) => [
+ q(Semitic languages),
+ ],
+ q(0377) => [
+ q(Irish, Old (to 900)),
+ ],
+ q(0378) => [
+ q(Sign Languages),
+ ],
+ q(0379) => [
+ q(Shan),
+ ],
+ q(0380) => [
+ q(Sidamo),
+ ],
+ q(0381) => [
+ q(Sinhala),
+ q(Sinhalese),
+ ],
+ q(0382) => [
+ q(Siouan languages),
+ ],
+ q(0383) => [
+ q(Sino-Tibetan languages),
+ ],
+ q(0384) => [
+ q(Slavic languages),
+ ],
+ q(0385) => [
+ q(Slovak),
+ ],
+ q(0386) => [
+ q(Slovenian),
+ ],
+ q(0387) => [
+ q(Southern Sami),
+ ],
+ q(0388) => [
+ q(Northern Sami),
+ ],
+ q(0389) => [
+ q(Sami languages),
+ ],
+ q(0390) => [
+ q(Lule Sami),
+ ],
+ q(0391) => [
+ q(Inari Sami),
+ ],
+ q(0392) => [
+ q(Samoan),
+ ],
+ q(0393) => [
+ q(Skolt Sami),
+ ],
+ q(0394) => [
+ q(Shona),
+ ],
+ q(0395) => [
+ q(Sindhi),
+ ],
+ q(0396) => [
+ q(Soninke),
+ ],
+ q(0397) => [
+ q(Sogdian),
+ ],
+ q(0398) => [
+ q(Somali),
+ ],
+ q(0399) => [
+ q(Songhai languages),
+ ],
+ q(0400) => [
+ q(Sotho, Southern),
+ ],
+ q(0401) => [
+ q(Spanish),
+ q(Castilian),
+ ],
+ q(0402) => [
+ q(Sardinian),
+ ],
+ q(0403) => [
+ q(Sranan Tongo),
+ ],
+ q(0404) => [
+ q(Serbian),
+ ],
+ q(0405) => [
+ q(Serer),
+ ],
+ q(0406) => [
+ q(Nilo-Saharan languages),
+ ],
+ q(0407) => [
+ q(Swati),
+ ],
+ q(0408) => [
+ q(Sukuma),
+ ],
+ q(0409) => [
+ q(Sundanese),
+ ],
+ q(0410) => [
+ q(Susu),
+ ],
+ q(0411) => [
+ q(Sumerian),
+ ],
+ q(0412) => [
+ q(Swahili),
+ ],
+ q(0413) => [
+ q(Swedish),
+ ],
+ q(0414) => [
+ q(Classical Syriac),
+ ],
+ q(0415) => [
+ q(Syriac),
+ ],
+ q(0416) => [
+ q(Tahitian),
+ ],
+ q(0417) => [
+ q(Tai languages),
+ ],
+ q(0418) => [
+ q(Tamil),
+ ],
+ q(0419) => [
+ q(Tatar),
+ ],
+ q(0420) => [
+ q(Telugu),
+ ],
+ q(0421) => [
+ q(Timne),
+ ],
+ q(0422) => [
+ q(Tereno),
+ ],
+ q(0423) => [
+ q(Tetum),
+ ],
+ q(0424) => [
+ q(Tajik),
+ ],
+ q(0425) => [
+ q(Tagalog),
+ ],
+ q(0426) => [
+ q(Thai),
+ ],
+ q(0427) => [
+ q(Tibetan),
+ ],
+ q(0428) => [
+ q(Tigre),
+ ],
+ q(0429) => [
+ q(Tigrinya),
+ ],
+ q(0430) => [
+ q(Tiv),
+ ],
+ q(0431) => [
+ q(Tokelau),
+ ],
+ q(0432) => [
+ q(Klingon),
+ q(tlhIngan-Hol),
+ ],
+ q(0433) => [
+ q(Tlingit),
+ ],
+ q(0434) => [
+ q(Tamashek),
+ ],
+ q(0435) => [
+ q(Tonga (Nyasa)),
+ ],
+ q(0436) => [
+ q(Tonga (Tonga Islands)),
+ q(Tonga),
+ ],
+ q(0437) => [
+ q(Tok Pisin),
+ ],
+ q(0438) => [
+ q(Tsimshian),
+ ],
+ q(0439) => [
+ q(Tswana),
+ ],
+ q(0440) => [
+ q(Tsonga),
+ ],
+ q(0441) => [
+ q(Turkmen),
+ ],
+ q(0442) => [
+ q(Tumbuka),
+ ],
+ q(0443) => [
+ q(Tupi languages),
+ ],
+ q(0444) => [
+ q(Turkish),
+ ],
+ q(0445) => [
+ q(Altaic languages),
+ ],
+ q(0446) => [
+ q(Tuvalu),
+ ],
+ q(0447) => [
+ q(Twi),
+ ],
+ q(0448) => [
+ q(Tuvinian),
+ ],
+ q(0449) => [
+ q(Udmurt),
+ ],
+ q(0450) => [
+ q(Ugaritic),
+ ],
+ q(0451) => [
+ q(Uighur),
+ q(Uyghur),
+ ],
+ q(0452) => [
+ q(Ukrainian),
+ ],
+ q(0453) => [
+ q(Umbundu),
+ ],
+ q(0454) => [
+ q(Undetermined),
+ ],
+ q(0455) => [
+ q(Urdu),
+ ],
+ q(0456) => [
+ q(Uzbek),
+ ],
+ q(0457) => [
+ q(Vai),
+ ],
+ q(0458) => [
+ q(Venda),
+ ],
+ q(0459) => [
+ q(Vietnamese),
+ ],
+ q(0460) => [
+ q(Volapuk),
+ ],
+ q(0461) => [
+ q(Votic),
+ ],
+ q(0462) => [
+ q(Wakashan languages),
+ ],
+ q(0463) => [
+ q(Walamo),
+ ],
+ q(0464) => [
+ q(Waray),
+ ],
+ q(0465) => [
+ q(Washo),
+ ],
+ q(0466) => [
+ q(Welsh),
+ ],
+ q(0467) => [
+ q(Sorbian languages),
+ ],
+ q(0468) => [
+ q(Walloon),
+ ],
+ q(0469) => [
+ q(Wolof),
+ ],
+ q(0470) => [
+ q(Kalmyk),
+ q(Oirat),
+ ],
+ q(0471) => [
+ q(Xhosa),
+ ],
+ q(0472) => [
+ q(Yao),
+ ],
+ q(0473) => [
+ q(Yapese),
+ ],
+ q(0474) => [
+ q(Yiddish),
+ ],
+ q(0475) => [
+ q(Yoruba),
+ ],
+ q(0476) => [
+ q(Yupik languages),
+ ],
+ q(0477) => [
+ q(Zapotec),
+ ],
+ q(0478) => [
+ q(Blissymbols),
+ q(Blissymbolics),
+ q(Bliss),
+ ],
+ q(0479) => [
+ q(Zenaga),
+ ],
+ q(0480) => [
+ q(Zhuang),
+ q(Chuang),
+ ],
+ q(0481) => [
+ q(Zande languages),
+ ],
+ q(0482) => [
+ q(Zulu),
+ ],
+ q(0483) => [
+ q(Zuni),
+ ],
+ q(0484) => [
+ q(No linguistic content),
+ q(Not applicable),
+ ],
+ q(0485) => [
+ q(Zaza),
+ q(Dimili),
+ q(Dimli),
+ q(Kirdki),
+ q(Kirmanjki),
+ q(Zazaki),
+ ],
+};
+
+$Locale::Codes::Data{'language'}{'alias2id'} = {
+ q(abkhazian) => [
+ q(0002),
+ q(0),
+ ],
+ q(achinese) => [
+ q(0003),
+ q(0),
+ ],
+ q(acoli) => [
+ q(0004),
+ q(0),
+ ],
+ q(adangme) => [
+ q(0005),
+ q(0),
+ ],
+ q(adygei) => [
+ q(0006),
+ q(1),
+ ],
+ q(adyghe) => [
+ q(0006),
+ q(0),
+ ],
+ q(afar) => [
+ q(0001),
+ q(0),
+ ],
+ q(afrihili) => [
+ q(0008),
+ q(0),
+ ],
+ q(afrikaans) => [
+ q(0009),
+ q(0),
+ ],
+ q(afro-asiatic languages) => [
+ q(0007),
+ q(0),
+ ],
+ q(ainu) => [
+ q(0010),
+ q(0),
+ ],
+ q(akan) => [
+ q(0011),
+ q(0),
+ ],
+ q(akkadian) => [
+ q(0012),
+ q(0),
+ ],
+ q(albanian) => [
+ q(0013),
+ q(0),
+ ],
+ q(alemannic) => [
+ q(0166),
+ q(1),
+ ],
+ q(aleut) => [
+ q(0014),
+ q(0),
+ ],
+ q(algonquian languages) => [
+ q(0015),
+ q(0),
+ ],
+ q(alsatian) => [
+ q(0166),
+ q(2),
+ ],
+ q(altaic languages) => [
+ q(0445),
+ q(0),
+ ],
+ q(amharic) => [
+ q(0017),
+ q(0),
+ ],
+ q(angika) => [
+ q(0019),
+ q(0),
+ ],
+ q(apache languages) => [
+ q(0020),
+ q(0),
+ ],
+ q(arabic) => [
+ q(0021),
+ q(0),
+ ],
+ q(aragonese) => [
+ q(0023),
+ q(0),
+ ],
+ q(arapaho) => [
+ q(0026),
+ q(0),
+ ],
+ q(arawak) => [
+ q(0028),
+ q(0),
+ ],
+ q(armenian) => [
+ q(0024),
+ q(0),
+ ],
+ q(aromanian) => [
+ q(0362),
+ q(0),
+ ],
+ q(artificial languages) => [
+ q(0027),
+ q(0),
+ ],
+ q(arumanian) => [
+ q(0362),
+ q(1),
+ ],
+ q(assamese) => [
+ q(0029),
+ q(0),
+ ],
+ q(asturian) => [
+ q(0030),
+ q(0),
+ ],
+ q(asturleonese) => [
+ q(0030),
+ q(3),
+ ],
+ q(athapascan languages) => [
+ q(0031),
+ q(0),
+ ],
+ q(australian languages) => [
+ q(0032),
+ q(0),
+ ],
+ q(austronesian languages) => [
+ q(0271),
+ q(0),
+ ],
+ q(avaric) => [
+ q(0033),
+ q(0),
+ ],
+ q(avestan) => [
+ q(0034),
+ q(0),
+ ],
+ q(awadhi) => [
+ q(0035),
+ q(0),
+ ],
+ q(aymara) => [
+ q(0036),
+ q(0),
+ ],
+ q(azerbaijani) => [
+ q(0037),
+ q(0),
+ ],
+ q(bable) => [
+ q(0030),
+ q(1),
+ ],
+ q(balinese) => [
+ q(0043),
+ q(0),
+ ],
+ q(baltic languages) => [
+ q(0046),
+ q(0),
+ ],
+ q(baluchi) => [
+ q(0041),
+ q(0),
+ ],
+ q(bambara) => [
+ q(0042),
+ q(0),
+ ],
+ q(bamileke languages) => [
+ q(0039),
+ q(0),
+ ],
+ q(banda languages) => [
+ q(0038),
+ q(0),
+ ],
+ q(bantu (other)) => [
+ q(0058),
+ q(0),
+ ],
+ q(basa) => [
+ q(0045),
+ q(0),
+ ],
+ q(bashkir) => [
+ q(0040),
+ q(0),
+ ],
+ q(basque) => [
+ q(0044),
+ q(0),
+ ],
+ q(batak languages) => [
+ q(0062),
+ q(0),
+ ],
+ q(bedawiyet) => [
+ q(0047),
+ q(1),
+ ],
+ q(beja) => [
+ q(0047),
+ q(0),
+ ],
+ q(belarusian) => [
+ q(0048),
+ q(0),
+ ],
+ q(bemba) => [
+ q(0049),
+ q(0),
+ ],
+ q(bengali) => [
+ q(0050),
+ q(0),
+ ],
+ q(berber languages) => [
+ q(0051),
+ q(0),
+ ],
+ q(bhojpuri) => [
+ q(0052),
+ q(0),
+ ],
+ q(bihari languages) => [
+ q(0053),
+ q(0),
+ ],
+ q(bikol) => [
+ q(0054),
+ q(0),
+ ],
+ q(bilin) => [
+ q(0067),
+ q(1),
+ ],
+ q(bini) => [
+ q(0055),
+ q(0),
+ ],
+ q(bislama) => [
+ q(0056),
+ q(0),
+ ],
+ q(blin) => [
+ q(0067),
+ q(0),
+ ],
+ q(bliss) => [
+ q(0478),
+ q(2),
+ ],
+ q(blissymbolics) => [
+ q(0478),
+ q(1),
+ ],
+ q(blissymbols) => [
+ q(0478),
+ q(0),
+ ],
+ q(bokmal, norwegian) => [
+ q(0313),
+ q(0),
+ ],
+ q(bosnian) => [
+ q(0059),
+ q(0),
+ ],
+ q(braj) => [
+ q(0060),
+ q(0),
+ ],
+ q(breton) => [
+ q(0061),
+ q(0),
+ ],
+ q(buginese) => [
+ q(0064),
+ q(0),
+ ],
+ q(bulgarian) => [
+ q(0065),
+ q(0),
+ ],
+ q(buriat) => [
+ q(0063),
+ q(0),
+ ],
+ q(burmese) => [
+ q(0066),
+ q(0),
+ ],
+ q(caddo) => [
+ q(0068),
+ q(0),
+ ],
+ q(castilian) => [
+ q(0401),
+ q(1),
+ ],
+ q(catalan) => [
+ q(0071),
+ q(0),
+ ],
+ q(caucasian languages) => [
+ q(0072),
+ q(0),
+ ],
+ q(cebuano) => [
+ q(0073),
+ q(0),
+ ],
+ q(celtic languages) => [
+ q(0074),
+ q(0),
+ ],
+ q(central american indian languages) => [
+ q(0069),
+ q(0),
+ ],
+ q(central khmer) => [
+ q(0222),
+ q(0),
+ ],
+ q(chagatai) => [
+ q(0078),
+ q(0),
+ ],
+ q(chamic languages) => [
+ q(0089),
+ q(0),
+ ],
+ q(chamorro) => [
+ q(0075),
+ q(0),
+ ],
+ q(chechen) => [
+ q(0077),
+ q(0),
+ ],
+ q(cherokee) => [
+ q(0085),
+ q(0),
+ ],
+ q(chewa) => [
+ q(0321),
+ q(1),
+ ],
+ q(cheyenne) => [
+ q(0088),
+ q(0),
+ ],
+ q(chibcha) => [
+ q(0076),
+ q(0),
+ ],
+ q(chichewa) => [
+ q(0321),
+ q(0),
+ ],
+ q(chinese) => [
+ q(0079),
+ q(0),
+ ],
+ q(chinook jargon) => [
+ q(0082),
+ q(0),
+ ],
+ q(chipewyan) => [
+ q(0084),
+ q(0),
+ ],
+ q(choctaw) => [
+ q(0083),
+ q(0),
+ ],
+ q(chuang) => [
+ q(0480),
+ q(1),
+ ],
+ q(church slavic) => [
+ q(0086),
+ q(0),
+ ],
+ q(church slavonic) => [
+ q(0086),
+ q(2),
+ ],
+ q(chuukese) => [
+ q(0080),
+ q(0),
+ ],
+ q(chuvash) => [
+ q(0087),
+ q(0),
+ ],
+ q(classical nepal bhasa) => [
+ q(0320),
+ q(2),
+ ],
+ q(classical newari) => [
+ q(0320),
+ q(0),
+ ],
+ q(classical syriac) => [
+ q(0414),
+ q(0),
+ ],
+ q(cook islands maori) => [
+ q(0356),
+ q(1),
+ ],
+ q(coptic) => [
+ q(0090),
+ q(0),
+ ],
+ q(cornish) => [
+ q(0091),
+ q(0),
+ ],
+ q(corsican) => [
+ q(0092),
+ q(0),
+ ],
+ q(cree) => [
+ q(0096),
+ q(0),
+ ],
+ q(creek) => [
+ q(0293),
+ q(0),
+ ],
+ q(creoles and pidgins ) => [
+ q(0098),
+ q(0),
+ ],
+ q(creoles and pidgins, english based) => [
+ q(0093),
+ q(0),
+ ],
+ q(creoles and pidgins, french-based ) => [
+ q(0094),
+ q(0),
+ ],
+ q(creoles and pidgins, portuguese-based ) => [
+ q(0095),
+ q(0),
+ ],
+ q(crimean tatar) => [
+ q(0097),
+ q(0),
+ ],
+ q(crimean turkish) => [
+ q(0097),
+ q(1),
+ ],
+ q(croatian) => [
+ q(0181),
+ q(0),
+ ],
+ q(cushitic languages) => [
+ q(0100),
+ q(0),
+ ],
+ q(czech) => [
+ q(0101),
+ q(0),
+ ],
+ q(dakota) => [
+ q(0102),
+ q(0),
+ ],
+ q(danish) => [
+ q(0103),
+ q(0),
+ ],
+ q(dargwa) => [
+ q(0104),
+ q(0),
+ ],
+ q(delaware) => [
+ q(0106),
+ q(0),
+ ],
+ q(dene suline) => [
+ q(0084),
+ q(1),
+ ],
+ q(dhivehi) => [
+ q(0110),
+ q(1),
+ ],
+ q(dimili) => [
+ q(0485),
+ q(1),
+ ],
+ q(dimli) => [
+ q(0485),
+ q(2),
+ ],
+ q(dinka) => [
+ q(0109),
+ q(0),
+ ],
+ q(divehi) => [
+ q(0110),
+ q(0),
+ ],
+ q(dogri) => [
+ q(0111),
+ q(0),
+ ],
+ q(dogrib) => [
+ q(0108),
+ q(0),
+ ],
+ q(dravidian languages) => [
+ q(0112),
+ q(0),
+ ],
+ q(duala) => [
+ q(0114),
+ q(0),
+ ],
+ q(dutch) => [
+ q(0116),
+ q(0),
+ ],
+ q(dutch, middle (ca.1050-1350)) => [
+ q(0115),
+ q(0),
+ ],
+ q(dyula) => [
+ q(0117),
+ q(0),
+ ],
+ q(dzongkha) => [
+ q(0118),
+ q(0),
+ ],
+ q(eastern frisian) => [
+ q(0141),
+ q(0),
+ ],
+ q(edo) => [
+ q(0055),
+ q(1),
+ ],
+ q(efik) => [
+ q(0119),
+ q(0),
+ ],
+ q(egyptian (ancient)) => [
+ q(0120),
+ q(0),
+ ],
+ q(ekajuk) => [
+ q(0121),
+ q(0),
+ ],
+ q(elamite) => [
+ q(0122),
+ q(0),
+ ],
+ q(english) => [
+ q(0123),
+ q(0),
+ ],
+ q(english, middle (1100-1500)) => [
+ q(0124),
+ q(0),
+ ],
+ q(english, old (ca.450-1100)) => [
+ q(0018),
+ q(0),
+ ],
+ q(erzya) => [
+ q(0297),
+ q(0),
+ ],
+ q(esperanto) => [
+ q(0125),
+ q(0),
+ ],
+ q(estonian) => [
+ q(0126),
+ q(0),
+ ],
+ q(ewe) => [
+ q(0127),
+ q(0),
+ ],
+ q(ewondo) => [
+ q(0128),
+ q(0),
+ ],
+ q(fang) => [
+ q(0129),
+ q(0),
+ ],
+ q(fanti) => [
+ q(0131),
+ q(0),
+ ],
+ q(faroese) => [
+ q(0130),
+ q(0),
+ ],
+ q(fijian) => [
+ q(0132),
+ q(0),
+ ],
+ q(filipino) => [
+ q(0133),
+ q(0),
+ ],
+ q(finnish) => [
+ q(0134),
+ q(0),
+ ],
+ q(finno-ugrian languages) => [
+ q(0135),
+ q(0),
+ ],
+ q(flemish) => [
+ q(0116),
+ q(1),
+ ],
+ q(fon) => [
+ q(0136),
+ q(0),
+ ],
+ q(french) => [
+ q(0137),
+ q(0),
+ ],
+ q(french, middle (ca.1400-1600)) => [
+ q(0138),
+ q(0),
+ ],
+ q(french, old (842-ca.1400)) => [
+ q(0139),
+ q(0),
+ ],
+ q(friulian) => [
+ q(0144),
+ q(0),
+ ],
+ q(fulah) => [
+ q(0143),
+ q(0),
+ ],
+ q(ga) => [
+ q(0145),
+ q(0),
+ ],
+ q(gaelic) => [
+ q(0153),
+ q(0),
+ ],
+ q(galibi carib) => [
+ q(0070),
+ q(0),
+ ],
+ q(galician) => [
+ q(0155),
+ q(0),
+ ],
+ q(ganda) => [
+ q(0257),
+ q(0),
+ ],
+ q(gayo) => [
+ q(0146),
+ q(0),
+ ],
+ q(gbaya) => [
+ q(0147),
+ q(0),
+ ],
+ q(geez) => [
+ q(0151),
+ q(0),
+ ],
+ q(georgian) => [
+ q(0149),
+ q(0),
+ ],
+ q(german) => [
+ q(0150),
+ q(0),
+ ],
+ q(german, low) => [
+ q(0306),
+ q(2),
+ ],
+ q(german, middle high (ca.1050-1500)) => [
+ q(0157),
+ q(0),
+ ],
+ q(german, old high (ca.750-1050)) => [
+ q(0158),
+ q(0),
+ ],
+ q(germanic languages) => [
+ q(0148),
+ q(0),
+ ],
+ q(gikuyu) => [
+ q(0224),
+ q(1),
+ ],
+ q(gilbertese) => [
+ q(0152),
+ q(0),
+ ],
+ q(gondi) => [
+ q(0159),
+ q(0),
+ ],
+ q(gorontalo) => [
+ q(0160),
+ q(0),
+ ],
+ q(gothic) => [
+ q(0161),
+ q(0),
+ ],
+ q(grebo) => [
+ q(0162),
+ q(0),
+ ],
+ q(greek) => [
+ q(0164),
+ q(1),
+ ],
+ q(greek, ancient (to 1453)) => [
+ q(0163),
+ q(0),
+ ],
+ q(greek, modern (1453-)) => [
+ q(0164),
+ q(0),
+ ],
+ q(greenlandic) => [
+ q(0211),
+ q(1),
+ ],
+ q(guarani) => [
+ q(0165),
+ q(0),
+ ],
+ q(gujarati) => [
+ q(0167),
+ q(0),
+ ],
+ q(gwich'in) => [
+ q(0168),
+ q(0),
+ ],
+ q(haida) => [
+ q(0169),
+ q(0),
+ ],
+ q(haitian) => [
+ q(0170),
+ q(0),
+ ],
+ q(haitian creole) => [
+ q(0170),
+ q(1),
+ ],
+ q(hausa) => [
+ q(0171),
+ q(0),
+ ],
+ q(hawaiian) => [
+ q(0172),
+ q(0),
+ ],
+ q(hebrew) => [
+ q(0173),
+ q(0),
+ ],
+ q(herero) => [
+ q(0174),
+ q(0),
+ ],
+ q(hiligaynon) => [
+ q(0175),
+ q(0),
+ ],
+ q(himachali languages) => [
+ q(0176),
+ q(0),
+ ],
+ q(hindi) => [
+ q(0177),
+ q(0),
+ ],
+ q(hiri motu) => [
+ q(0180),
+ q(0),
+ ],
+ q(hittite) => [
+ q(0178),
+ q(0),
+ ],
+ q(hmong) => [
+ q(0179),
+ q(0),
+ ],
+ q(hungarian) => [
+ q(0183),
+ q(0),
+ ],
+ q(hupa) => [
+ q(0184),
+ q(0),
+ ],
+ q(iban) => [
+ q(0185),
+ q(0),
+ ],
+ q(icelandic) => [
+ q(0187),
+ q(0),
+ ],
+ q(ido) => [
+ q(0188),
+ q(0),
+ ],
+ q(igbo) => [
+ q(0186),
+ q(0),
+ ],
+ q(ijo languages) => [
+ q(0190),
+ q(0),
+ ],
+ q(iloko) => [
+ q(0193),
+ q(0),
+ ],
+ q(imperial aramaic (700-300 bce)) => [
+ q(0022),
+ q(1),
+ ],
+ q(inari sami) => [
+ q(0391),
+ q(0),
+ ],
+ q(indic languages) => [
+ q(0195),
+ q(0),
+ ],
+ q(indo-european languages) => [
+ q(0197),
+ q(0),
+ ],
+ q(indonesian) => [
+ q(0196),
+ q(0),
+ ],
+ q(ingush) => [
+ q(0198),
+ q(0),
+ ],
+ q(interlingua (international auxiliary language association)) => [
+ q(0194),
+ q(0),
+ ],
+ q(interlingue) => [
+ q(0192),
+ q(0),
+ ],
+ q(inuktitut) => [
+ q(0191),
+ q(0),
+ ],
+ q(inupiaq) => [
+ q(0199),
+ q(0),
+ ],
+ q(iranian languages) => [
+ q(0200),
+ q(0),
+ ],
+ q(irish) => [
+ q(0154),
+ q(0),
+ ],
+ q(irish, middle (900-1200)) => [
+ q(0278),
+ q(0),
+ ],
+ q(irish, old (to 900)) => [
+ q(0377),
+ q(0),
+ ],
+ q(iroquoian languages) => [
+ q(0201),
+ q(0),
+ ],
+ q(italian) => [
+ q(0202),
+ q(0),
+ ],
+ q(japanese) => [
+ q(0205),
+ q(0),
+ ],
+ q(javanese) => [
+ q(0203),
+ q(0),
+ ],
+ q(jingpho) => [
+ q(0210),
+ q(1),
+ ],
+ q(judeo-arabic) => [
+ q(0207),
+ q(0),
+ ],
+ q(judeo-persian) => [
+ q(0206),
+ q(0),
+ ],
+ q(kabardian) => [
+ q(0219),
+ q(0),
+ ],
+ q(kabyle) => [
+ q(0209),
+ q(0),
+ ],
+ q(kachin) => [
+ q(0210),
+ q(0),
+ ],
+ q(kalaallisut) => [
+ q(0211),
+ q(0),
+ ],
+ q(kalmyk) => [
+ q(0470),
+ q(0),
+ ],
+ q(kamba) => [
+ q(0212),
+ q(0),
+ ],
+ q(kannada) => [
+ q(0213),
+ q(0),
+ ],
+ q(kanuri) => [
+ q(0216),
+ q(0),
+ ],
+ q(kapampangan) => [
+ q(0337),
+ q(1),
+ ],
+ q(kara-kalpak) => [
+ q(0208),
+ q(0),
+ ],
+ q(karachay-balkar) => [
+ q(0234),
+ q(0),
+ ],
+ q(karelian) => [
+ q(0235),
+ q(0),
+ ],
+ q(karen languages) => [
+ q(0214),
+ q(0),
+ ],
+ q(kashmiri) => [
+ q(0215),
+ q(0),
+ ],
+ q(kashubian) => [
+ q(0099),
+ q(0),
+ ],
+ q(kawi) => [
+ q(0217),
+ q(0),
+ ],
+ q(kazakh) => [
+ q(0218),
+ q(0),
+ ],
+ q(khasi) => [
+ q(0220),
+ q(0),
+ ],
+ q(khoisan languages) => [
+ q(0221),
+ q(0),
+ ],
+ q(khotanese) => [
+ q(0223),
+ q(0),
+ ],
+ q(kikuyu) => [
+ q(0224),
+ q(0),
+ ],
+ q(kimbundu) => [
+ q(0227),
+ q(0),
+ ],
+ q(kinyarwanda) => [
+ q(0225),
+ q(0),
+ ],
+ q(kirdki) => [
+ q(0485),
+ q(3),
+ ],
+ q(kirghiz) => [
+ q(0226),
+ q(0),
+ ],
+ q(kirmanjki) => [
+ q(0485),
+ q(4),
+ ],
+ q(klingon) => [
+ q(0432),
+ q(0),
+ ],
+ q(komi) => [
+ q(0229),
+ q(0),
+ ],
+ q(kongo) => [
+ q(0230),
+ q(0),
+ ],
+ q(konkani) => [
+ q(0228),
+ q(0),
+ ],
+ q(korean) => [
+ q(0231),
+ q(0),
+ ],
+ q(kosraean) => [
+ q(0232),
+ q(0),
+ ],
+ q(kpelle) => [
+ q(0233),
+ q(0),
+ ],
+ q(kru languages) => [
+ q(0236),
+ q(0),
+ ],
+ q(kuanyama) => [
+ q(0238),
+ q(0),
+ ],
+ q(kumyk) => [
+ q(0239),
+ q(0),
+ ],
+ q(kurdish) => [
+ q(0240),
+ q(0),
+ ],
+ q(kurukh) => [
+ q(0237),
+ q(0),
+ ],
+ q(kutenai) => [
+ q(0241),
+ q(0),
+ ],
+ q(kwanyama) => [
+ q(0238),
+ q(1),
+ ],
+ q(kyrgyz) => [
+ q(0226),
+ q(1),
+ ],
+ q(ladino) => [
+ q(0242),
+ q(0),
+ ],
+ q(lahnda) => [
+ q(0243),
+ q(0),
+ ],
+ q(lamba) => [
+ q(0244),
+ q(0),
+ ],
+ q(land dayak languages) => [
+ q(0105),
+ q(0),
+ ],
+ q(lao) => [
+ q(0245),
+ q(0),
+ ],
+ q(latin) => [
+ q(0246),
+ q(0),
+ ],
+ q(latvian) => [
+ q(0247),
+ q(0),
+ ],
+ q(leonese) => [
+ q(0030),
+ q(2),
+ ],
+ q(letzeburgesch) => [
+ q(0254),
+ q(1),
+ ],
+ q(lezghian) => [
+ q(0248),
+ q(0),
+ ],
+ q(limburgan) => [
+ q(0249),
+ q(0),
+ ],
+ q(limburger) => [
+ q(0249),
+ q(1),
+ ],
+ q(limburgish) => [
+ q(0249),
+ q(2),
+ ],
+ q(lingala) => [
+ q(0250),
+ q(0),
+ ],
+ q(lithuanian) => [
+ q(0251),
+ q(0),
+ ],
+ q(lojban) => [
+ q(0204),
+ q(0),
+ ],
+ q(low german) => [
+ q(0306),
+ q(0),
+ ],
+ q(low saxon) => [
+ q(0306),
+ q(1),
+ ],
+ q(lower sorbian) => [
+ q(0113),
+ q(0),
+ ],
+ q(lozi) => [
+ q(0253),
+ q(0),
+ ],
+ q(luba-katanga) => [
+ q(0256),
+ q(0),
+ ],
+ q(luba-lulua) => [
+ q(0255),
+ q(0),
+ ],
+ q(luiseno) => [
+ q(0258),
+ q(0),
+ ],
+ q(lule sami) => [
+ q(0390),
+ q(0),
+ ],
+ q(lunda) => [
+ q(0259),
+ q(0),
+ ],
+ q(luo (kenya and tanzania)) => [
+ q(0260),
+ q(0),
+ ],
+ q(lushai) => [
+ q(0261),
+ q(0),
+ ],
+ q(luxembourgish) => [
+ q(0254),
+ q(0),
+ ],
+ q(macedo-romanian) => [
+ q(0362),
+ q(2),
+ ],
+ q(macedonian) => [
+ q(0262),
+ q(0),
+ ],
+ q(madurese) => [
+ q(0263),
+ q(0),
+ ],
+ q(magahi) => [
+ q(0264),
+ q(0),
+ ],
+ q(maithili) => [
+ q(0266),
+ q(0),
+ ],
+ q(makasar) => [
+ q(0267),
+ q(0),
+ ],
+ q(malagasy) => [
+ q(0283),
+ q(0),
+ ],
+ q(malay) => [
+ q(0274),
+ q(0),
+ ],
+ q(malayalam) => [
+ q(0268),
+ q(0),
+ ],
+ q(maldivian) => [
+ q(0110),
+ q(2),
+ ],
+ q(maltese) => [
+ q(0284),
+ q(0),
+ ],
+ q(manchu) => [
+ q(0285),
+ q(0),
+ ],
+ q(mandar) => [
+ q(0276),
+ q(0),
+ ],
+ q(mandingo) => [
+ q(0269),
+ q(0),
+ ],
+ q(manipuri) => [
+ q(0286),
+ q(0),
+ ],
+ q(manobo languages) => [
+ q(0287),
+ q(0),
+ ],
+ q(manx) => [
+ q(0156),
+ q(0),
+ ],
+ q(maori) => [
+ q(0270),
+ q(0),
+ ],
+ q(mapuche) => [
+ q(0025),
+ q(1),
+ ],
+ q(mapudungun) => [
+ q(0025),
+ q(0),
+ ],
+ q(marathi) => [
+ q(0272),
+ q(0),
+ ],
+ q(mari) => [
+ q(0081),
+ q(0),
+ ],
+ q(marshallese) => [
+ q(0265),
+ q(0),
+ ],
+ q(marwari) => [
+ q(0295),
+ q(0),
+ ],
+ q(masai) => [
+ q(0273),
+ q(0),
+ ],
+ q(mayan languages) => [
+ q(0296),
+ q(0),
+ ],
+ q(mende) => [
+ q(0277),
+ q(0),
+ ],
+ q(mi'kmaq) => [
+ q(0279),
+ q(0),
+ ],
+ q(micmac) => [
+ q(0279),
+ q(1),
+ ],
+ q(minangkabau) => [
+ q(0280),
+ q(0),
+ ],
+ q(mirandese) => [
+ q(0294),
+ q(0),
+ ],
+ q(mohawk) => [
+ q(0288),
+ q(0),
+ ],
+ q(moksha) => [
+ q(0275),
+ q(0),
+ ],
+ q(moldavian) => [
+ q(0360),
+ q(1),
+ ],
+ q(moldovan) => [
+ q(0360),
+ q(2),
+ ],
+ q(mon-khmer languages) => [
+ q(0282),
+ q(0),
+ ],
+ q(mong) => [
+ q(0179),
+ q(1),
+ ],
+ q(mongo) => [
+ q(0252),
+ q(0),
+ ],
+ q(mongolian) => [
+ q(0289),
+ q(0),
+ ],
+ q(mossi) => [
+ q(0290),
+ q(0),
+ ],
+ q(multiple languages) => [
+ q(0291),
+ q(0),
+ ],
+ q(munda languages) => [
+ q(0292),
+ q(0),
+ ],
+ q(n'ko) => [
+ q(0317),
+ q(0),
+ ],
+ q(nahuatl languages) => [
+ q(0298),
+ q(0),
+ ],
+ q(nauru) => [
+ q(0301),
+ q(0),
+ ],
+ q(navaho) => [
+ q(0302),
+ q(1),
+ ],
+ q(navajo) => [
+ q(0302),
+ q(0),
+ ],
+ q(ndebele, north) => [
+ q(0304),
+ q(0),
+ ],
+ q(ndebele, south) => [
+ q(0303),
+ q(0),
+ ],
+ q(ndonga) => [
+ q(0305),
+ q(0),
+ ],
+ q(neapolitan) => [
+ q(0300),
+ q(0),
+ ],
+ q(nepal bhasa) => [
+ q(0308),
+ q(0),
+ ],
+ q(nepali) => [
+ q(0307),
+ q(0),
+ ],
+ q(newari) => [
+ q(0308),
+ q(1),
+ ],
+ q(nias) => [
+ q(0309),
+ q(0),
+ ],
+ q(niger-kordofanian languages) => [
+ q(0310),
+ q(0),
+ ],
+ q(nilo-saharan languages) => [
+ q(0406),
+ q(0),
+ ],
+ q(niuean) => [
+ q(0311),
+ q(0),
+ ],
+ q(no linguistic content) => [
+ q(0484),
+ q(0),
+ ],
+ q(nogai) => [
+ q(0314),
+ q(0),
+ ],
+ q(norse, old) => [
+ q(0315),
+ q(0),
+ ],
+ q(north american indian languages) => [
+ q(0299),
+ q(0),
+ ],
+ q(north ndebele) => [
+ q(0304),
+ q(1),
+ ],
+ q(northern frisian) => [
+ q(0140),
+ q(0),
+ ],
+ q(northern sami) => [
+ q(0388),
+ q(0),
+ ],
+ q(northern sotho) => [
+ q(0318),
+ q(2),
+ ],
+ q(norwegian) => [
+ q(0316),
+ q(0),
+ ],
+ q(norwegian bokmal) => [
+ q(0313),
+ q(1),
+ ],
+ q(norwegian nynorsk) => [
+ q(0312),
+ q(0),
+ ],
+ q(not applicable) => [
+ q(0484),
+ q(1),
+ ],
+ q(nubian languages) => [
+ q(0319),
+ q(0),
+ ],
+ q(nuosu) => [
+ q(0189),
+ q(1),
+ ],
+ q(nyamwezi) => [
+ q(0322),
+ q(0),
+ ],
+ q(nyanja) => [
+ q(0321),
+ q(2),
+ ],
+ q(nyankole) => [
+ q(0323),
+ q(0),
+ ],
+ q(nynorsk, norwegian) => [
+ q(0312),
+ q(1),
+ ],
+ q(nyoro) => [
+ q(0324),
+ q(0),
+ ],
+ q(nzima) => [
+ q(0325),
+ q(0),
+ ],
+ q(occidental) => [
+ q(0192),
+ q(1),
+ ],
+ q(occitan (post 1500)) => [
+ q(0326),
+ q(0),
+ ],
+ q(official aramaic (700-300 bce)) => [
+ q(0022),
+ q(0),
+ ],
+ q(oirat) => [
+ q(0470),
+ q(1),
+ ],
+ q(ojibwa) => [
+ q(0327),
+ q(0),
+ ],
+ q(old bulgarian) => [
+ q(0086),
+ q(3),
+ ],
+ q(old church slavonic) => [
+ q(0086),
+ q(4),
+ ],
+ q(old newari) => [
+ q(0320),
+ q(1),
+ ],
+ q(old slavonic) => [
+ q(0086),
+ q(1),
+ ],
+ q(oriya) => [
+ q(0328),
+ q(0),
+ ],
+ q(oromo) => [
+ q(0329),
+ q(0),
+ ],
+ q(osage) => [
+ q(0330),
+ q(0),
+ ],
+ q(ossetian) => [
+ q(0331),
+ q(0),
+ ],
+ q(ossetic) => [
+ q(0331),
+ q(1),
+ ],
+ q(otomian languages) => [
+ q(0333),
+ q(0),
+ ],
+ q(pahlavi) => [
+ q(0336),
+ q(0),
+ ],
+ q(palauan) => [
+ q(0340),
+ q(0),
+ ],
+ q(pali) => [
+ q(0345),
+ q(0),
+ ],
+ q(pampanga) => [
+ q(0337),
+ q(0),
+ ],
+ q(pangasinan) => [
+ q(0335),
+ q(0),
+ ],
+ q(panjabi) => [
+ q(0338),
+ q(0),
+ ],
+ q(papiamento) => [
+ q(0339),
+ q(0),
+ ],
+ q(papuan languages) => [
+ q(0334),
+ q(0),
+ ],
+ q(pashto) => [
+ q(0351),
+ q(1),
+ ],
+ q(pedi) => [
+ q(0318),
+ q(0),
+ ],
+ q(persian) => [
+ q(0342),
+ q(0),
+ ],
+ q(persian, old (ca.600-400 b.c.)) => [
+ q(0341),
+ q(0),
+ ],
+ q(philippine languages) => [
+ q(0343),
+ q(0),
+ ],
+ q(phoenician) => [
+ q(0344),
+ q(0),
+ ],
+ q(pilipino) => [
+ q(0133),
+ q(1),
+ ],
+ q(pohnpeian) => [
+ q(0347),
+ q(0),
+ ],
+ q(polish) => [
+ q(0346),
+ q(0),
+ ],
+ q(portuguese) => [
+ q(0348),
+ q(0),
+ ],
+ q(prakrit languages) => [
+ q(0349),
+ q(0),
+ ],
+ q(provencal) => [
+ q(0326),
+ q(1),
+ ],
+ q(provencal, old (to 1500)) => [
+ q(0350),
+ q(0),
+ ],
+ q(punjabi) => [
+ q(0338),
+ q(1),
+ ],
+ q(pushto) => [
+ q(0351),
+ q(0),
+ ],
+ q(quechua) => [
+ q(0353),
+ q(0),
+ ],
+ q(rajasthani) => [
+ q(0354),
+ q(0),
+ ],
+ q(rapanui) => [
+ q(0355),
+ q(0),
+ ],
+ q(rarotongan) => [
+ q(0356),
+ q(0),
+ ],
+ q(reserved for local use) => [
+ q(0352),
+ q(0),
+ ],
+ q(romance languages) => [
+ q(0357),
+ q(0),
+ ],
+ q(romanian) => [
+ q(0360),
+ q(0),
+ ],
+ q(romansh) => [
+ q(0358),
+ q(0),
+ ],
+ q(romany) => [
+ q(0359),
+ q(0),
+ ],
+ q(rundi) => [
+ q(0361),
+ q(0),
+ ],
+ q(russian) => [
+ q(0363),
+ q(0),
+ ],
+ q(sakan) => [
+ q(0223),
+ q(1),
+ ],
+ q(salishan languages) => [
+ q(0368),
+ q(0),
+ ],
+ q(samaritan aramaic) => [
+ q(0369),
+ q(0),
+ ],
+ q(sami languages) => [
+ q(0389),
+ q(0),
+ ],
+ q(samoan) => [
+ q(0392),
+ q(0),
+ ],
+ q(sandawe) => [
+ q(0364),
+ q(0),
+ ],
+ q(sango) => [
+ q(0365),
+ q(0),
+ ],
+ q(sanskrit) => [
+ q(0370),
+ q(0),
+ ],
+ q(santali) => [
+ q(0372),
+ q(0),
+ ],
+ q(sardinian) => [
+ q(0402),
+ q(0),
+ ],
+ q(sasak) => [
+ q(0371),
+ q(0),
+ ],
+ q(saxon, low) => [
+ q(0306),
+ q(3),
+ ],
+ q(scots) => [
+ q(0374),
+ q(0),
+ ],
+ q(scottish gaelic) => [
+ q(0153),
+ q(1),
+ ],
+ q(selkup) => [
+ q(0375),
+ q(0),
+ ],
+ q(semitic languages) => [
+ q(0376),
+ q(0),
+ ],
+ q(sepedi) => [
+ q(0318),
+ q(1),
+ ],
+ q(serbian) => [
+ q(0404),
+ q(0),
+ ],
+ q(serer) => [
+ q(0405),
+ q(0),
+ ],
+ q(shan) => [
+ q(0379),
+ q(0),
+ ],
+ q(shona) => [
+ q(0394),
+ q(0),
+ ],
+ q(sichuan yi) => [
+ q(0189),
+ q(0),
+ ],
+ q(sicilian) => [
+ q(0373),
+ q(0),
+ ],
+ q(sidamo) => [
+ q(0380),
+ q(0),
+ ],
+ q(sign languages) => [
+ q(0378),
+ q(0),
+ ],
+ q(siksika) => [
+ q(0057),
+ q(0),
+ ],
+ q(sindhi) => [
+ q(0395),
+ q(0),
+ ],
+ q(sinhala) => [
+ q(0381),
+ q(0),
+ ],
+ q(sinhalese) => [
+ q(0381),
+ q(1),
+ ],
+ q(sino-tibetan languages) => [
+ q(0383),
+ q(0),
+ ],
+ q(siouan languages) => [
+ q(0382),
+ q(0),
+ ],
+ q(skolt sami) => [
+ q(0393),
+ q(0),
+ ],
+ q(slave (athapascan)) => [
+ q(0107),
+ q(0),
+ ],
+ q(slavic languages) => [
+ q(0384),
+ q(0),
+ ],
+ q(slovak) => [
+ q(0385),
+ q(0),
+ ],
+ q(slovenian) => [
+ q(0386),
+ q(0),
+ ],
+ q(sogdian) => [
+ q(0397),
+ q(0),
+ ],
+ q(somali) => [
+ q(0398),
+ q(0),
+ ],
+ q(songhai languages) => [
+ q(0399),
+ q(0),
+ ],
+ q(soninke) => [
+ q(0396),
+ q(0),
+ ],
+ q(sorbian languages) => [
+ q(0467),
+ q(0),
+ ],
+ q(sotho, southern) => [
+ q(0400),
+ q(0),
+ ],
+ q(south american indian (other)) => [
+ q(0367),
+ q(0),
+ ],
+ q(south ndebele) => [
+ q(0303),
+ q(1),
+ ],
+ q(southern altai) => [
+ q(0016),
+ q(0),
+ ],
+ q(southern sami) => [
+ q(0387),
+ q(0),
+ ],
+ q(spanish) => [
+ q(0401),
+ q(0),
+ ],
+ q(sranan tongo) => [
+ q(0403),
+ q(0),
+ ],
+ q(sukuma) => [
+ q(0408),
+ q(0),
+ ],
+ q(sumerian) => [
+ q(0411),
+ q(0),
+ ],
+ q(sundanese) => [
+ q(0409),
+ q(0),
+ ],
+ q(susu) => [
+ q(0410),
+ q(0),
+ ],
+ q(swahili) => [
+ q(0412),
+ q(0),
+ ],
+ q(swati) => [
+ q(0407),
+ q(0),
+ ],
+ q(swedish) => [
+ q(0413),
+ q(0),
+ ],
+ q(swiss german) => [
+ q(0166),
+ q(0),
+ ],
+ q(syriac) => [
+ q(0415),
+ q(0),
+ ],
+ q(tagalog) => [
+ q(0425),
+ q(0),
+ ],
+ q(tahitian) => [
+ q(0416),
+ q(0),
+ ],
+ q(tai languages) => [
+ q(0417),
+ q(0),
+ ],
+ q(tajik) => [
+ q(0424),
+ q(0),
+ ],
+ q(tamashek) => [
+ q(0434),
+ q(0),
+ ],
+ q(tamil) => [
+ q(0418),
+ q(0),
+ ],
+ q(tatar) => [
+ q(0419),
+ q(0),
+ ],
+ q(telugu) => [
+ q(0420),
+ q(0),
+ ],
+ q(tereno) => [
+ q(0422),
+ q(0),
+ ],
+ q(tetum) => [
+ q(0423),
+ q(0),
+ ],
+ q(thai) => [
+ q(0426),
+ q(0),
+ ],
+ q(tibetan) => [
+ q(0427),
+ q(0),
+ ],
+ q(tigre) => [
+ q(0428),
+ q(0),
+ ],
+ q(tigrinya) => [
+ q(0429),
+ q(0),
+ ],
+ q(timne) => [
+ q(0421),
+ q(0),
+ ],
+ q(tiv) => [
+ q(0430),
+ q(0),
+ ],
+ q(tlhingan-hol) => [
+ q(0432),
+ q(1),
+ ],
+ q(tlingit) => [
+ q(0433),
+ q(0),
+ ],
+ q(tok pisin) => [
+ q(0437),
+ q(0),
+ ],
+ q(tokelau) => [
+ q(0431),
+ q(0),
+ ],
+ q(tonga) => [
+ q(0436),
+ q(1),
+ ],
+ q(tonga (nyasa)) => [
+ q(0435),
+ q(0),
+ ],
+ q(tonga (tonga islands)) => [
+ q(0436),
+ q(0),
+ ],
+ q(tsimshian) => [
+ q(0438),
+ q(0),
+ ],
+ q(tsonga) => [
+ q(0440),
+ q(0),
+ ],
+ q(tswana) => [
+ q(0439),
+ q(0),
+ ],
+ q(tumbuka) => [
+ q(0442),
+ q(0),
+ ],
+ q(tupi languages) => [
+ q(0443),
+ q(0),
+ ],
+ q(turkish) => [
+ q(0444),
+ q(0),
+ ],
+ q(turkish, ottoman (1500-1928)) => [
+ q(0332),
+ q(0),
+ ],
+ q(turkmen) => [
+ q(0441),
+ q(0),
+ ],
+ q(tuvalu) => [
+ q(0446),
+ q(0),
+ ],
+ q(tuvinian) => [
+ q(0448),
+ q(0),
+ ],
+ q(twi) => [
+ q(0447),
+ q(0),
+ ],
+ q(udmurt) => [
+ q(0449),
+ q(0),
+ ],
+ q(ugaritic) => [
+ q(0450),
+ q(0),
+ ],
+ q(uighur) => [
+ q(0451),
+ q(0),
+ ],
+ q(ukrainian) => [
+ q(0452),
+ q(0),
+ ],
+ q(umbundu) => [
+ q(0453),
+ q(0),
+ ],
+ q(uncoded languages) => [
+ q(0281),
+ q(0),
+ ],
+ q(undetermined) => [
+ q(0454),
+ q(0),
+ ],
+ q(upper sorbian) => [
+ q(0182),
+ q(0),
+ ],
+ q(urdu) => [
+ q(0455),
+ q(0),
+ ],
+ q(uyghur) => [
+ q(0451),
+ q(1),
+ ],
+ q(uzbek) => [
+ q(0456),
+ q(0),
+ ],
+ q(vai) => [
+ q(0457),
+ q(0),
+ ],
+ q(valencian) => [
+ q(0071),
+ q(1),
+ ],
+ q(venda) => [
+ q(0458),
+ q(0),
+ ],
+ q(vietnamese) => [
+ q(0459),
+ q(0),
+ ],
+ q(volapuk) => [
+ q(0460),
+ q(0),
+ ],
+ q(votic) => [
+ q(0461),
+ q(0),
+ ],
+ q(wakashan languages) => [
+ q(0462),
+ q(0),
+ ],
+ q(walamo) => [
+ q(0463),
+ q(0),
+ ],
+ q(walloon) => [
+ q(0468),
+ q(0),
+ ],
+ q(waray) => [
+ q(0464),
+ q(0),
+ ],
+ q(washo) => [
+ q(0465),
+ q(0),
+ ],
+ q(welsh) => [
+ q(0466),
+ q(0),
+ ],
+ q(western frisian) => [
+ q(0142),
+ q(0),
+ ],
+ q(western pahari languages) => [
+ q(0176),
+ q(1),
+ ],
+ q(wolof) => [
+ q(0469),
+ q(0),
+ ],
+ q(xhosa) => [
+ q(0471),
+ q(0),
+ ],
+ q(yakut) => [
+ q(0366),
+ q(0),
+ ],
+ q(yao) => [
+ q(0472),
+ q(0),
+ ],
+ q(yapese) => [
+ q(0473),
+ q(0),
+ ],
+ q(yiddish) => [
+ q(0474),
+ q(0),
+ ],
+ q(yoruba) => [
+ q(0475),
+ q(0),
+ ],
+ q(yupik languages) => [
+ q(0476),
+ q(0),
+ ],
+ q(zande languages) => [
+ q(0481),
+ q(0),
+ ],
+ q(zapotec) => [
+ q(0477),
+ q(0),
+ ],
+ q(zaza) => [
+ q(0485),
+ q(0),
+ ],
+ q(zazaki) => [
+ q(0485),
+ q(5),
+ ],
+ q(zenaga) => [
+ q(0479),
+ q(0),
+ ],
+ q(zhuang) => [
+ q(0480),
+ q(0),
+ ],
+ q(zulu) => [
+ q(0482),
+ q(0),
+ ],
+ q(zuni) => [
+ q(0483),
+ q(0),
+ ],
+};
+
+$Locale::Codes::Data{'language'}{'code2id'} = {
+ q(alpha2) => {
+ q(aa) => [
+ q(0001),
+ q(0),
+ ],
+ q(ab) => [
+ q(0002),
+ q(0),
+ ],
+ q(ae) => [
+ q(0034),
+ q(0),
+ ],
+ q(af) => [
+ q(0009),
+ q(0),
+ ],
+ q(ak) => [
+ q(0011),
+ q(0),
+ ],
+ q(am) => [
+ q(0017),
+ q(0),
+ ],
+ q(an) => [
+ q(0023),
+ q(0),
+ ],
+ q(ar) => [
+ q(0021),
+ q(0),
+ ],
+ q(as) => [
+ q(0029),
+ q(0),
+ ],
+ q(av) => [
+ q(0033),
+ q(0),
+ ],
+ q(ay) => [
+ q(0036),
+ q(0),
+ ],
+ q(az) => [
+ q(0037),
+ q(0),
+ ],
+ q(ba) => [
+ q(0040),
+ q(0),
+ ],
+ q(be) => [
+ q(0048),
+ q(0),
+ ],
+ q(bg) => [
+ q(0065),
+ q(0),
+ ],
+ q(bh) => [
+ q(0053),
+ q(0),
+ ],
+ q(bi) => [
+ q(0056),
+ q(0),
+ ],
+ q(bm) => [
+ q(0042),
+ q(0),
+ ],
+ q(bn) => [
+ q(0050),
+ q(0),
+ ],
+ q(bo) => [
+ q(0427),
+ q(0),
+ ],
+ q(br) => [
+ q(0061),
+ q(0),
+ ],
+ q(bs) => [
+ q(0059),
+ q(0),
+ ],
+ q(ca) => [
+ q(0071),
+ q(0),
+ ],
+ q(ce) => [
+ q(0077),
+ q(0),
+ ],
+ q(ch) => [
+ q(0075),
+ q(0),
+ ],
+ q(co) => [
+ q(0092),
+ q(0),
+ ],
+ q(cr) => [
+ q(0096),
+ q(0),
+ ],
+ q(cs) => [
+ q(0101),
+ q(0),
+ ],
+ q(cu) => [
+ q(0086),
+ q(0),
+ ],
+ q(cv) => [
+ q(0087),
+ q(0),
+ ],
+ q(cy) => [
+ q(0466),
+ q(0),
+ ],
+ q(da) => [
+ q(0103),
+ q(0),
+ ],
+ q(de) => [
+ q(0150),
+ q(0),
+ ],
+ q(dv) => [
+ q(0110),
+ q(0),
+ ],
+ q(dz) => [
+ q(0118),
+ q(0),
+ ],
+ q(ee) => [
+ q(0127),
+ q(0),
+ ],
+ q(el) => [
+ q(0164),
+ q(0),
+ ],
+ q(en) => [
+ q(0123),
+ q(0),
+ ],
+ q(eo) => [
+ q(0125),
+ q(0),
+ ],
+ q(es) => [
+ q(0401),
+ q(0),
+ ],
+ q(et) => [
+ q(0126),
+ q(0),
+ ],
+ q(eu) => [
+ q(0044),
+ q(0),
+ ],
+ q(fa) => [
+ q(0342),
+ q(0),
+ ],
+ q(ff) => [
+ q(0143),
+ q(0),
+ ],
+ q(fi) => [
+ q(0134),
+ q(0),
+ ],
+ q(fj) => [
+ q(0132),
+ q(0),
+ ],
+ q(fo) => [
+ q(0130),
+ q(0),
+ ],
+ q(fr) => [
+ q(0137),
+ q(0),
+ ],
+ q(fy) => [
+ q(0142),
+ q(0),
+ ],
+ q(ga) => [
+ q(0154),
+ q(0),
+ ],
+ q(gd) => [
+ q(0153),
+ q(0),
+ ],
+ q(gl) => [
+ q(0155),
+ q(0),
+ ],
+ q(gn) => [
+ q(0165),
+ q(0),
+ ],
+ q(gu) => [
+ q(0167),
+ q(0),
+ ],
+ q(gv) => [
+ q(0156),
+ q(0),
+ ],
+ q(ha) => [
+ q(0171),
+ q(0),
+ ],
+ q(he) => [
+ q(0173),
+ q(0),
+ ],
+ q(hi) => [
+ q(0177),
+ q(0),
+ ],
+ q(ho) => [
+ q(0180),
+ q(0),
+ ],
+ q(hr) => [
+ q(0181),
+ q(0),
+ ],
+ q(ht) => [
+ q(0170),
+ q(0),
+ ],
+ q(hu) => [
+ q(0183),
+ q(0),
+ ],
+ q(hy) => [
+ q(0024),
+ q(0),
+ ],
+ q(hz) => [
+ q(0174),
+ q(0),
+ ],
+ q(ia) => [
+ q(0194),
+ q(0),
+ ],
+ q(id) => [
+ q(0196),
+ q(0),
+ ],
+ q(ie) => [
+ q(0192),
+ q(0),
+ ],
+ q(ig) => [
+ q(0186),
+ q(0),
+ ],
+ q(ii) => [
+ q(0189),
+ q(0),
+ ],
+ q(ik) => [
+ q(0199),
+ q(0),
+ ],
+ q(io) => [
+ q(0188),
+ q(0),
+ ],
+ q(is) => [
+ q(0187),
+ q(0),
+ ],
+ q(it) => [
+ q(0202),
+ q(0),
+ ],
+ q(iu) => [
+ q(0191),
+ q(0),
+ ],
+ q(ja) => [
+ q(0205),
+ q(0),
+ ],
+ q(jv) => [
+ q(0203),
+ q(0),
+ ],
+ q(ka) => [
+ q(0149),
+ q(0),
+ ],
+ q(kg) => [
+ q(0230),
+ q(0),
+ ],
+ q(ki) => [
+ q(0224),
+ q(0),
+ ],
+ q(kj) => [
+ q(0238),
+ q(0),
+ ],
+ q(kk) => [
+ q(0218),
+ q(0),
+ ],
+ q(kl) => [
+ q(0211),
+ q(0),
+ ],
+ q(km) => [
+ q(0222),
+ q(0),
+ ],
+ q(kn) => [
+ q(0213),
+ q(0),
+ ],
+ q(ko) => [
+ q(0231),
+ q(0),
+ ],
+ q(kr) => [
+ q(0216),
+ q(0),
+ ],
+ q(ks) => [
+ q(0215),
+ q(0),
+ ],
+ q(ku) => [
+ q(0240),
+ q(0),
+ ],
+ q(kv) => [
+ q(0229),
+ q(0),
+ ],
+ q(kw) => [
+ q(0091),
+ q(0),
+ ],
+ q(ky) => [
+ q(0226),
+ q(0),
+ ],
+ q(la) => [
+ q(0246),
+ q(0),
+ ],
+ q(lb) => [
+ q(0254),
+ q(0),
+ ],
+ q(lg) => [
+ q(0257),
+ q(0),
+ ],
+ q(li) => [
+ q(0249),
+ q(0),
+ ],
+ q(ln) => [
+ q(0250),
+ q(0),
+ ],
+ q(lo) => [
+ q(0245),
+ q(0),
+ ],
+ q(lt) => [
+ q(0251),
+ q(0),
+ ],
+ q(lu) => [
+ q(0256),
+ q(0),
+ ],
+ q(lv) => [
+ q(0247),
+ q(0),
+ ],
+ q(mg) => [
+ q(0283),
+ q(0),
+ ],
+ q(mh) => [
+ q(0265),
+ q(0),
+ ],
+ q(mi) => [
+ q(0270),
+ q(0),
+ ],
+ q(mk) => [
+ q(0262),
+ q(0),
+ ],
+ q(ml) => [
+ q(0268),
+ q(0),
+ ],
+ q(mn) => [
+ q(0289),
+ q(0),
+ ],
+ q(mr) => [
+ q(0272),
+ q(0),
+ ],
+ q(ms) => [
+ q(0274),
+ q(0),
+ ],
+ q(mt) => [
+ q(0284),
+ q(0),
+ ],
+ q(my) => [
+ q(0066),
+ q(0),
+ ],
+ q(na) => [
+ q(0301),
+ q(0),
+ ],
+ q(nb) => [
+ q(0313),
+ q(0),
+ ],
+ q(nd) => [
+ q(0304),
+ q(0),
+ ],
+ q(ne) => [
+ q(0307),
+ q(0),
+ ],
+ q(ng) => [
+ q(0305),
+ q(0),
+ ],
+ q(nl) => [
+ q(0116),
+ q(0),
+ ],
+ q(nn) => [
+ q(0312),
+ q(0),
+ ],
+ q(no) => [
+ q(0316),
+ q(0),
+ ],
+ q(nr) => [
+ q(0303),
+ q(0),
+ ],
+ q(nv) => [
+ q(0302),
+ q(0),
+ ],
+ q(ny) => [
+ q(0321),
+ q(0),
+ ],
+ q(oc) => [
+ q(0326),
+ q(0),
+ ],
+ q(oj) => [
+ q(0327),
+ q(0),
+ ],
+ q(om) => [
+ q(0329),
+ q(0),
+ ],
+ q(or) => [
+ q(0328),
+ q(0),
+ ],
+ q(os) => [
+ q(0331),
+ q(0),
+ ],
+ q(pa) => [
+ q(0338),
+ q(0),
+ ],
+ q(pi) => [
+ q(0345),
+ q(0),
+ ],
+ q(pl) => [
+ q(0346),
+ q(0),
+ ],
+ q(ps) => [
+ q(0351),
+ q(0),
+ ],
+ q(pt) => [
+ q(0348),
+ q(0),
+ ],
+ q(qu) => [
+ q(0353),
+ q(0),
+ ],
+ q(rm) => [
+ q(0358),
+ q(0),
+ ],
+ q(rn) => [
+ q(0361),
+ q(0),
+ ],
+ q(ro) => [
+ q(0360),
+ q(0),
+ ],
+ q(ru) => [
+ q(0363),
+ q(0),
+ ],
+ q(rw) => [
+ q(0225),
+ q(0),
+ ],
+ q(sa) => [
+ q(0370),
+ q(0),
+ ],
+ q(sc) => [
+ q(0402),
+ q(0),
+ ],
+ q(sd) => [
+ q(0395),
+ q(0),
+ ],
+ q(se) => [
+ q(0388),
+ q(0),
+ ],
+ q(sg) => [
+ q(0365),
+ q(0),
+ ],
+ q(si) => [
+ q(0381),
+ q(0),
+ ],
+ q(sk) => [
+ q(0385),
+ q(0),
+ ],
+ q(sl) => [
+ q(0386),
+ q(0),
+ ],
+ q(sm) => [
+ q(0392),
+ q(0),
+ ],
+ q(sn) => [
+ q(0394),
+ q(0),
+ ],
+ q(so) => [
+ q(0398),
+ q(0),
+ ],
+ q(sq) => [
+ q(0013),
+ q(0),
+ ],
+ q(sr) => [
+ q(0404),
+ q(0),
+ ],
+ q(ss) => [
+ q(0407),
+ q(0),
+ ],
+ q(st) => [
+ q(0400),
+ q(0),
+ ],
+ q(su) => [
+ q(0409),
+ q(0),
+ ],
+ q(sv) => [
+ q(0413),
+ q(0),
+ ],
+ q(sw) => [
+ q(0412),
+ q(0),
+ ],
+ q(ta) => [
+ q(0418),
+ q(0),
+ ],
+ q(te) => [
+ q(0420),
+ q(0),
+ ],
+ q(tg) => [
+ q(0424),
+ q(0),
+ ],
+ q(th) => [
+ q(0426),
+ q(0),
+ ],
+ q(ti) => [
+ q(0429),
+ q(0),
+ ],
+ q(tk) => [
+ q(0441),
+ q(0),
+ ],
+ q(tl) => [
+ q(0425),
+ q(0),
+ ],
+ q(tn) => [
+ q(0439),
+ q(0),
+ ],
+ q(to) => [
+ q(0436),
+ q(0),
+ ],
+ q(tr) => [
+ q(0444),
+ q(0),
+ ],
+ q(ts) => [
+ q(0440),
+ q(0),
+ ],
+ q(tt) => [
+ q(0419),
+ q(0),
+ ],
+ q(tw) => [
+ q(0447),
+ q(0),
+ ],
+ q(ty) => [
+ q(0416),
+ q(0),
+ ],
+ q(ug) => [
+ q(0451),
+ q(0),
+ ],
+ q(uk) => [
+ q(0452),
+ q(0),
+ ],
+ q(ur) => [
+ q(0455),
+ q(0),
+ ],
+ q(uz) => [
+ q(0456),
+ q(0),
+ ],
+ q(ve) => [
+ q(0458),
+ q(0),
+ ],
+ q(vi) => [
+ q(0459),
+ q(0),
+ ],
+ q(vo) => [
+ q(0460),
+ q(0),
+ ],
+ q(wa) => [
+ q(0468),
+ q(0),
+ ],
+ q(wo) => [
+ q(0469),
+ q(0),
+ ],
+ q(xh) => [
+ q(0471),
+ q(0),
+ ],
+ q(yi) => [
+ q(0474),
+ q(0),
+ ],
+ q(yo) => [
+ q(0475),
+ q(0),
+ ],
+ q(za) => [
+ q(0480),
+ q(0),
+ ],
+ q(zh) => [
+ q(0079),
+ q(0),
+ ],
+ q(zu) => [
+ q(0482),
+ q(0),
+ ],
+ },
+ q(alpha3) => {
+ q(aar) => [
+ q(0001),
+ q(0),
+ ],
+ q(abk) => [
+ q(0002),
+ q(0),
+ ],
+ q(ace) => [
+ q(0003),
+ q(0),
+ ],
+ q(ach) => [
+ q(0004),
+ q(0),
+ ],
+ q(ada) => [
+ q(0005),
+ q(0),
+ ],
+ q(ady) => [
+ q(0006),
+ q(0),
+ ],
+ q(afa) => [
+ q(0007),
+ q(0),
+ ],
+ q(afh) => [
+ q(0008),
+ q(0),
+ ],
+ q(afr) => [
+ q(0009),
+ q(0),
+ ],
+ q(ain) => [
+ q(0010),
+ q(0),
+ ],
+ q(aka) => [
+ q(0011),
+ q(0),
+ ],
+ q(akk) => [
+ q(0012),
+ q(0),
+ ],
+ q(alb) => [
+ q(0013),
+ q(0),
+ ],
+ q(ale) => [
+ q(0014),
+ q(0),
+ ],
+ q(alg) => [
+ q(0015),
+ q(0),
+ ],
+ q(alt) => [
+ q(0016),
+ q(0),
+ ],
+ q(amh) => [
+ q(0017),
+ q(0),
+ ],
+ q(ang) => [
+ q(0018),
+ q(0),
+ ],
+ q(anp) => [
+ q(0019),
+ q(0),
+ ],
+ q(apa) => [
+ q(0020),
+ q(0),
+ ],
+ q(ara) => [
+ q(0021),
+ q(0),
+ ],
+ q(arc) => [
+ q(0022),
+ q(0),
+ ],
+ q(arg) => [
+ q(0023),
+ q(0),
+ ],
+ q(arm) => [
+ q(0024),
+ q(0),
+ ],
+ q(arn) => [
+ q(0025),
+ q(0),
+ ],
+ q(arp) => [
+ q(0026),
+ q(0),
+ ],
+ q(art) => [
+ q(0027),
+ q(0),
+ ],
+ q(arw) => [
+ q(0028),
+ q(0),
+ ],
+ q(asm) => [
+ q(0029),
+ q(0),
+ ],
+ q(ast) => [
+ q(0030),
+ q(0),
+ ],
+ q(ath) => [
+ q(0031),
+ q(0),
+ ],
+ q(aus) => [
+ q(0032),
+ q(0),
+ ],
+ q(ava) => [
+ q(0033),
+ q(0),
+ ],
+ q(ave) => [
+ q(0034),
+ q(0),
+ ],
+ q(awa) => [
+ q(0035),
+ q(0),
+ ],
+ q(aym) => [
+ q(0036),
+ q(0),
+ ],
+ q(aze) => [
+ q(0037),
+ q(0),
+ ],
+ q(bad) => [
+ q(0038),
+ q(0),
+ ],
+ q(bai) => [
+ q(0039),
+ q(0),
+ ],
+ q(bak) => [
+ q(0040),
+ q(0),
+ ],
+ q(bal) => [
+ q(0041),
+ q(0),
+ ],
+ q(bam) => [
+ q(0042),
+ q(0),
+ ],
+ q(ban) => [
+ q(0043),
+ q(0),
+ ],
+ q(baq) => [
+ q(0044),
+ q(0),
+ ],
+ q(bas) => [
+ q(0045),
+ q(0),
+ ],
+ q(bat) => [
+ q(0046),
+ q(0),
+ ],
+ q(bej) => [
+ q(0047),
+ q(0),
+ ],
+ q(bel) => [
+ q(0048),
+ q(0),
+ ],
+ q(bem) => [
+ q(0049),
+ q(0),
+ ],
+ q(ben) => [
+ q(0050),
+ q(0),
+ ],
+ q(ber) => [
+ q(0051),
+ q(0),
+ ],
+ q(bho) => [
+ q(0052),
+ q(0),
+ ],
+ q(bih) => [
+ q(0053),
+ q(0),
+ ],
+ q(bik) => [
+ q(0054),
+ q(0),
+ ],
+ q(bin) => [
+ q(0055),
+ q(0),
+ ],
+ q(bis) => [
+ q(0056),
+ q(0),
+ ],
+ q(bla) => [
+ q(0057),
+ q(0),
+ ],
+ q(bnt) => [
+ q(0058),
+ q(0),
+ ],
+ q(bos) => [
+ q(0059),
+ q(0),
+ ],
+ q(bra) => [
+ q(0060),
+ q(0),
+ ],
+ q(bre) => [
+ q(0061),
+ q(0),
+ ],
+ q(btk) => [
+ q(0062),
+ q(0),
+ ],
+ q(bua) => [
+ q(0063),
+ q(0),
+ ],
+ q(bug) => [
+ q(0064),
+ q(0),
+ ],
+ q(bul) => [
+ q(0065),
+ q(0),
+ ],
+ q(bur) => [
+ q(0066),
+ q(0),
+ ],
+ q(byn) => [
+ q(0067),
+ q(0),
+ ],
+ q(cad) => [
+ q(0068),
+ q(0),
+ ],
+ q(cai) => [
+ q(0069),
+ q(0),
+ ],
+ q(car) => [
+ q(0070),
+ q(0),
+ ],
+ q(cat) => [
+ q(0071),
+ q(0),
+ ],
+ q(cau) => [
+ q(0072),
+ q(0),
+ ],
+ q(ceb) => [
+ q(0073),
+ q(0),
+ ],
+ q(cel) => [
+ q(0074),
+ q(0),
+ ],
+ q(cha) => [
+ q(0075),
+ q(0),
+ ],
+ q(chb) => [
+ q(0076),
+ q(0),
+ ],
+ q(che) => [
+ q(0077),
+ q(0),
+ ],
+ q(chg) => [
+ q(0078),
+ q(0),
+ ],
+ q(chi) => [
+ q(0079),
+ q(0),
+ ],
+ q(chk) => [
+ q(0080),
+ q(0),
+ ],
+ q(chm) => [
+ q(0081),
+ q(0),
+ ],
+ q(chn) => [
+ q(0082),
+ q(0),
+ ],
+ q(cho) => [
+ q(0083),
+ q(0),
+ ],
+ q(chp) => [
+ q(0084),
+ q(0),
+ ],
+ q(chr) => [
+ q(0085),
+ q(0),
+ ],
+ q(chu) => [
+ q(0086),
+ q(0),
+ ],
+ q(chv) => [
+ q(0087),
+ q(0),
+ ],
+ q(chy) => [
+ q(0088),
+ q(0),
+ ],
+ q(cmc) => [
+ q(0089),
+ q(0),
+ ],
+ q(cop) => [
+ q(0090),
+ q(0),
+ ],
+ q(cor) => [
+ q(0091),
+ q(0),
+ ],
+ q(cos) => [
+ q(0092),
+ q(0),
+ ],
+ q(cpe) => [
+ q(0093),
+ q(0),
+ ],
+ q(cpf) => [
+ q(0094),
+ q(0),
+ ],
+ q(cpp) => [
+ q(0095),
+ q(0),
+ ],
+ q(cre) => [
+ q(0096),
+ q(0),
+ ],
+ q(crh) => [
+ q(0097),
+ q(0),
+ ],
+ q(crp) => [
+ q(0098),
+ q(0),
+ ],
+ q(csb) => [
+ q(0099),
+ q(0),
+ ],
+ q(cus) => [
+ q(0100),
+ q(0),
+ ],
+ q(cze) => [
+ q(0101),
+ q(0),
+ ],
+ q(dak) => [
+ q(0102),
+ q(0),
+ ],
+ q(dan) => [
+ q(0103),
+ q(0),
+ ],
+ q(dar) => [
+ q(0104),
+ q(0),
+ ],
+ q(day) => [
+ q(0105),
+ q(0),
+ ],
+ q(del) => [
+ q(0106),
+ q(0),
+ ],
+ q(den) => [
+ q(0107),
+ q(0),
+ ],
+ q(dgr) => [
+ q(0108),
+ q(0),
+ ],
+ q(din) => [
+ q(0109),
+ q(0),
+ ],
+ q(div) => [
+ q(0110),
+ q(0),
+ ],
+ q(doi) => [
+ q(0111),
+ q(0),
+ ],
+ q(dra) => [
+ q(0112),
+ q(0),
+ ],
+ q(dsb) => [
+ q(0113),
+ q(0),
+ ],
+ q(dua) => [
+ q(0114),
+ q(0),
+ ],
+ q(dum) => [
+ q(0115),
+ q(0),
+ ],
+ q(dut) => [
+ q(0116),
+ q(0),
+ ],
+ q(dyu) => [
+ q(0117),
+ q(0),
+ ],
+ q(dzo) => [
+ q(0118),
+ q(0),
+ ],
+ q(efi) => [
+ q(0119),
+ q(0),
+ ],
+ q(egy) => [
+ q(0120),
+ q(0),
+ ],
+ q(eka) => [
+ q(0121),
+ q(0),
+ ],
+ q(elx) => [
+ q(0122),
+ q(0),
+ ],
+ q(eng) => [
+ q(0123),
+ q(0),
+ ],
+ q(enm) => [
+ q(0124),
+ q(0),
+ ],
+ q(epo) => [
+ q(0125),
+ q(0),
+ ],
+ q(est) => [
+ q(0126),
+ q(0),
+ ],
+ q(ewe) => [
+ q(0127),
+ q(0),
+ ],
+ q(ewo) => [
+ q(0128),
+ q(0),
+ ],
+ q(fan) => [
+ q(0129),
+ q(0),
+ ],
+ q(fao) => [
+ q(0130),
+ q(0),
+ ],
+ q(fat) => [
+ q(0131),
+ q(0),
+ ],
+ q(fij) => [
+ q(0132),
+ q(0),
+ ],
+ q(fil) => [
+ q(0133),
+ q(0),
+ ],
+ q(fin) => [
+ q(0134),
+ q(0),
+ ],
+ q(fiu) => [
+ q(0135),
+ q(0),
+ ],
+ q(fon) => [
+ q(0136),
+ q(0),
+ ],
+ q(fre) => [
+ q(0137),
+ q(0),
+ ],
+ q(frm) => [
+ q(0138),
+ q(0),
+ ],
+ q(fro) => [
+ q(0139),
+ q(0),
+ ],
+ q(frr) => [
+ q(0140),
+ q(0),
+ ],
+ q(frs) => [
+ q(0141),
+ q(0),
+ ],
+ q(fry) => [
+ q(0142),
+ q(0),
+ ],
+ q(ful) => [
+ q(0143),
+ q(0),
+ ],
+ q(fur) => [
+ q(0144),
+ q(0),
+ ],
+ q(gaa) => [
+ q(0145),
+ q(0),
+ ],
+ q(gay) => [
+ q(0146),
+ q(0),
+ ],
+ q(gba) => [
+ q(0147),
+ q(0),
+ ],
+ q(gem) => [
+ q(0148),
+ q(0),
+ ],
+ q(geo) => [
+ q(0149),
+ q(0),
+ ],
+ q(ger) => [
+ q(0150),
+ q(0),
+ ],
+ q(gez) => [
+ q(0151),
+ q(0),
+ ],
+ q(gil) => [
+ q(0152),
+ q(0),
+ ],
+ q(gla) => [
+ q(0153),
+ q(0),
+ ],
+ q(gle) => [
+ q(0154),
+ q(0),
+ ],
+ q(glg) => [
+ q(0155),
+ q(0),
+ ],
+ q(glv) => [
+ q(0156),
+ q(0),
+ ],
+ q(gmh) => [
+ q(0157),
+ q(0),
+ ],
+ q(goh) => [
+ q(0158),
+ q(0),
+ ],
+ q(gon) => [
+ q(0159),
+ q(0),
+ ],
+ q(gor) => [
+ q(0160),
+ q(0),
+ ],
+ q(got) => [
+ q(0161),
+ q(0),
+ ],
+ q(grb) => [
+ q(0162),
+ q(0),
+ ],
+ q(grc) => [
+ q(0163),
+ q(0),
+ ],
+ q(gre) => [
+ q(0164),
+ q(0),
+ ],
+ q(grn) => [
+ q(0165),
+ q(0),
+ ],
+ q(gsw) => [
+ q(0166),
+ q(0),
+ ],
+ q(guj) => [
+ q(0167),
+ q(0),
+ ],
+ q(gwi) => [
+ q(0168),
+ q(0),
+ ],
+ q(hai) => [
+ q(0169),
+ q(0),
+ ],
+ q(hat) => [
+ q(0170),
+ q(0),
+ ],
+ q(hau) => [
+ q(0171),
+ q(0),
+ ],
+ q(haw) => [
+ q(0172),
+ q(0),
+ ],
+ q(heb) => [
+ q(0173),
+ q(0),
+ ],
+ q(her) => [
+ q(0174),
+ q(0),
+ ],
+ q(hil) => [
+ q(0175),
+ q(0),
+ ],
+ q(him) => [
+ q(0176),
+ q(0),
+ ],
+ q(hin) => [
+ q(0177),
+ q(0),
+ ],
+ q(hit) => [
+ q(0178),
+ q(0),
+ ],
+ q(hmn) => [
+ q(0179),
+ q(0),
+ ],
+ q(hmo) => [
+ q(0180),
+ q(0),
+ ],
+ q(hrv) => [
+ q(0181),
+ q(0),
+ ],
+ q(hsb) => [
+ q(0182),
+ q(0),
+ ],
+ q(hun) => [
+ q(0183),
+ q(0),
+ ],
+ q(hup) => [
+ q(0184),
+ q(0),
+ ],
+ q(iba) => [
+ q(0185),
+ q(0),
+ ],
+ q(ibo) => [
+ q(0186),
+ q(0),
+ ],
+ q(ice) => [
+ q(0187),
+ q(0),
+ ],
+ q(ido) => [
+ q(0188),
+ q(0),
+ ],
+ q(iii) => [
+ q(0189),
+ q(0),
+ ],
+ q(ijo) => [
+ q(0190),
+ q(0),
+ ],
+ q(iku) => [
+ q(0191),
+ q(0),
+ ],
+ q(ile) => [
+ q(0192),
+ q(0),
+ ],
+ q(ilo) => [
+ q(0193),
+ q(0),
+ ],
+ q(ina) => [
+ q(0194),
+ q(0),
+ ],
+ q(inc) => [
+ q(0195),
+ q(0),
+ ],
+ q(ind) => [
+ q(0196),
+ q(0),
+ ],
+ q(ine) => [
+ q(0197),
+ q(0),
+ ],
+ q(inh) => [
+ q(0198),
+ q(0),
+ ],
+ q(ipk) => [
+ q(0199),
+ q(0),
+ ],
+ q(ira) => [
+ q(0200),
+ q(0),
+ ],
+ q(iro) => [
+ q(0201),
+ q(0),
+ ],
+ q(ita) => [
+ q(0202),
+ q(0),
+ ],
+ q(jav) => [
+ q(0203),
+ q(0),
+ ],
+ q(jbo) => [
+ q(0204),
+ q(0),
+ ],
+ q(jpn) => [
+ q(0205),
+ q(0),
+ ],
+ q(jpr) => [
+ q(0206),
+ q(0),
+ ],
+ q(jrb) => [
+ q(0207),
+ q(0),
+ ],
+ q(kaa) => [
+ q(0208),
+ q(0),
+ ],
+ q(kab) => [
+ q(0209),
+ q(0),
+ ],
+ q(kac) => [
+ q(0210),
+ q(0),
+ ],
+ q(kal) => [
+ q(0211),
+ q(0),
+ ],
+ q(kam) => [
+ q(0212),
+ q(0),
+ ],
+ q(kan) => [
+ q(0213),
+ q(0),
+ ],
+ q(kar) => [
+ q(0214),
+ q(0),
+ ],
+ q(kas) => [
+ q(0215),
+ q(0),
+ ],
+ q(kau) => [
+ q(0216),
+ q(0),
+ ],
+ q(kaw) => [
+ q(0217),
+ q(0),
+ ],
+ q(kaz) => [
+ q(0218),
+ q(0),
+ ],
+ q(kbd) => [
+ q(0219),
+ q(0),
+ ],
+ q(kha) => [
+ q(0220),
+ q(0),
+ ],
+ q(khi) => [
+ q(0221),
+ q(0),
+ ],
+ q(khm) => [
+ q(0222),
+ q(0),
+ ],
+ q(kho) => [
+ q(0223),
+ q(0),
+ ],
+ q(kik) => [
+ q(0224),
+ q(0),
+ ],
+ q(kin) => [
+ q(0225),
+ q(0),
+ ],
+ q(kir) => [
+ q(0226),
+ q(0),
+ ],
+ q(kmb) => [
+ q(0227),
+ q(0),
+ ],
+ q(kok) => [
+ q(0228),
+ q(0),
+ ],
+ q(kom) => [
+ q(0229),
+ q(0),
+ ],
+ q(kon) => [
+ q(0230),
+ q(0),
+ ],
+ q(kor) => [
+ q(0231),
+ q(0),
+ ],
+ q(kos) => [
+ q(0232),
+ q(0),
+ ],
+ q(kpe) => [
+ q(0233),
+ q(0),
+ ],
+ q(krc) => [
+ q(0234),
+ q(0),
+ ],
+ q(krl) => [
+ q(0235),
+ q(0),
+ ],
+ q(kro) => [
+ q(0236),
+ q(0),
+ ],
+ q(kru) => [
+ q(0237),
+ q(0),
+ ],
+ q(kua) => [
+ q(0238),
+ q(0),
+ ],
+ q(kum) => [
+ q(0239),
+ q(0),
+ ],
+ q(kur) => [
+ q(0240),
+ q(0),
+ ],
+ q(kut) => [
+ q(0241),
+ q(0),
+ ],
+ q(lad) => [
+ q(0242),
+ q(0),
+ ],
+ q(lah) => [
+ q(0243),
+ q(0),
+ ],
+ q(lam) => [
+ q(0244),
+ q(0),
+ ],
+ q(lao) => [
+ q(0245),
+ q(0),
+ ],
+ q(lat) => [
+ q(0246),
+ q(0),
+ ],
+ q(lav) => [
+ q(0247),
+ q(0),
+ ],
+ q(lez) => [
+ q(0248),
+ q(0),
+ ],
+ q(lim) => [
+ q(0249),
+ q(0),
+ ],
+ q(lin) => [
+ q(0250),
+ q(0),
+ ],
+ q(lit) => [
+ q(0251),
+ q(0),
+ ],
+ q(lol) => [
+ q(0252),
+ q(0),
+ ],
+ q(loz) => [
+ q(0253),
+ q(0),
+ ],
+ q(ltz) => [
+ q(0254),
+ q(0),
+ ],
+ q(lua) => [
+ q(0255),
+ q(0),
+ ],
+ q(lub) => [
+ q(0256),
+ q(0),
+ ],
+ q(lug) => [
+ q(0257),
+ q(0),
+ ],
+ q(lui) => [
+ q(0258),
+ q(0),
+ ],
+ q(lun) => [
+ q(0259),
+ q(0),
+ ],
+ q(luo) => [
+ q(0260),
+ q(0),
+ ],
+ q(lus) => [
+ q(0261),
+ q(0),
+ ],
+ q(mac) => [
+ q(0262),
+ q(0),
+ ],
+ q(mad) => [
+ q(0263),
+ q(0),
+ ],
+ q(mag) => [
+ q(0264),
+ q(0),
+ ],
+ q(mah) => [
+ q(0265),
+ q(0),
+ ],
+ q(mai) => [
+ q(0266),
+ q(0),
+ ],
+ q(mak) => [
+ q(0267),
+ q(0),
+ ],
+ q(mal) => [
+ q(0268),
+ q(0),
+ ],
+ q(man) => [
+ q(0269),
+ q(0),
+ ],
+ q(mao) => [
+ q(0270),
+ q(0),
+ ],
+ q(map) => [
+ q(0271),
+ q(0),
+ ],
+ q(mar) => [
+ q(0272),
+ q(0),
+ ],
+ q(mas) => [
+ q(0273),
+ q(0),
+ ],
+ q(may) => [
+ q(0274),
+ q(0),
+ ],
+ q(mdf) => [
+ q(0275),
+ q(0),
+ ],
+ q(mdr) => [
+ q(0276),
+ q(0),
+ ],
+ q(men) => [
+ q(0277),
+ q(0),
+ ],
+ q(mga) => [
+ q(0278),
+ q(0),
+ ],
+ q(mic) => [
+ q(0279),
+ q(0),
+ ],
+ q(min) => [
+ q(0280),
+ q(0),
+ ],
+ q(mis) => [
+ q(0281),
+ q(0),
+ ],
+ q(mkh) => [
+ q(0282),
+ q(0),
+ ],
+ q(mlg) => [
+ q(0283),
+ q(0),
+ ],
+ q(mlt) => [
+ q(0284),
+ q(0),
+ ],
+ q(mnc) => [
+ q(0285),
+ q(0),
+ ],
+ q(mni) => [
+ q(0286),
+ q(0),
+ ],
+ q(mno) => [
+ q(0287),
+ q(0),
+ ],
+ q(moh) => [
+ q(0288),
+ q(0),
+ ],
+ q(mon) => [
+ q(0289),
+ q(0),
+ ],
+ q(mos) => [
+ q(0290),
+ q(0),
+ ],
+ q(mul) => [
+ q(0291),
+ q(0),
+ ],
+ q(mun) => [
+ q(0292),
+ q(0),
+ ],
+ q(mus) => [
+ q(0293),
+ q(0),
+ ],
+ q(mwl) => [
+ q(0294),
+ q(0),
+ ],
+ q(mwr) => [
+ q(0295),
+ q(0),
+ ],
+ q(myn) => [
+ q(0296),
+ q(0),
+ ],
+ q(myv) => [
+ q(0297),
+ q(0),
+ ],
+ q(nah) => [
+ q(0298),
+ q(0),
+ ],
+ q(nai) => [
+ q(0299),
+ q(0),
+ ],
+ q(nap) => [
+ q(0300),
+ q(0),
+ ],
+ q(nau) => [
+ q(0301),
+ q(0),
+ ],
+ q(nav) => [
+ q(0302),
+ q(0),
+ ],
+ q(nbl) => [
+ q(0303),
+ q(0),
+ ],
+ q(nde) => [
+ q(0304),
+ q(0),
+ ],
+ q(ndo) => [
+ q(0305),
+ q(0),
+ ],
+ q(nds) => [
+ q(0306),
+ q(0),
+ ],
+ q(nep) => [
+ q(0307),
+ q(0),
+ ],
+ q(new) => [
+ q(0308),
+ q(0),
+ ],
+ q(nia) => [
+ q(0309),
+ q(0),
+ ],
+ q(nic) => [
+ q(0310),
+ q(0),
+ ],
+ q(niu) => [
+ q(0311),
+ q(0),
+ ],
+ q(nno) => [
+ q(0312),
+ q(0),
+ ],
+ q(nob) => [
+ q(0313),
+ q(0),
+ ],
+ q(nog) => [
+ q(0314),
+ q(0),
+ ],
+ q(non) => [
+ q(0315),
+ q(0),
+ ],
+ q(nor) => [
+ q(0316),
+ q(0),
+ ],
+ q(nqo) => [
+ q(0317),
+ q(0),
+ ],
+ q(nso) => [
+ q(0318),
+ q(0),
+ ],
+ q(nub) => [
+ q(0319),
+ q(0),
+ ],
+ q(nwc) => [
+ q(0320),
+ q(0),
+ ],
+ q(nya) => [
+ q(0321),
+ q(0),
+ ],
+ q(nym) => [
+ q(0322),
+ q(0),
+ ],
+ q(nyn) => [
+ q(0323),
+ q(0),
+ ],
+ q(nyo) => [
+ q(0324),
+ q(0),
+ ],
+ q(nzi) => [
+ q(0325),
+ q(0),
+ ],
+ q(oci) => [
+ q(0326),
+ q(0),
+ ],
+ q(oji) => [
+ q(0327),
+ q(0),
+ ],
+ q(ori) => [
+ q(0328),
+ q(0),
+ ],
+ q(orm) => [
+ q(0329),
+ q(0),
+ ],
+ q(osa) => [
+ q(0330),
+ q(0),
+ ],
+ q(oss) => [
+ q(0331),
+ q(0),
+ ],
+ q(ota) => [
+ q(0332),
+ q(0),
+ ],
+ q(oto) => [
+ q(0333),
+ q(0),
+ ],
+ q(paa) => [
+ q(0334),
+ q(0),
+ ],
+ q(pag) => [
+ q(0335),
+ q(0),
+ ],
+ q(pal) => [
+ q(0336),
+ q(0),
+ ],
+ q(pam) => [
+ q(0337),
+ q(0),
+ ],
+ q(pan) => [
+ q(0338),
+ q(0),
+ ],
+ q(pap) => [
+ q(0339),
+ q(0),
+ ],
+ q(pau) => [
+ q(0340),
+ q(0),
+ ],
+ q(peo) => [
+ q(0341),
+ q(0),
+ ],
+ q(per) => [
+ q(0342),
+ q(0),
+ ],
+ q(phi) => [
+ q(0343),
+ q(0),
+ ],
+ q(phn) => [
+ q(0344),
+ q(0),
+ ],
+ q(pli) => [
+ q(0345),
+ q(0),
+ ],
+ q(pol) => [
+ q(0346),
+ q(0),
+ ],
+ q(pon) => [
+ q(0347),
+ q(0),
+ ],
+ q(por) => [
+ q(0348),
+ q(0),
+ ],
+ q(pra) => [
+ q(0349),
+ q(0),
+ ],
+ q(pro) => [
+ q(0350),
+ q(0),
+ ],
+ q(pus) => [
+ q(0351),
+ q(0),
+ ],
+ q(qtz) => [
+ q(0352),
+ q(0),
+ ],
+ q(que) => [
+ q(0353),
+ q(0),
+ ],
+ q(raj) => [
+ q(0354),
+ q(0),
+ ],
+ q(rap) => [
+ q(0355),
+ q(0),
+ ],
+ q(rar) => [
+ q(0356),
+ q(0),
+ ],
+ q(roa) => [
+ q(0357),
+ q(0),
+ ],
+ q(roh) => [
+ q(0358),
+ q(0),
+ ],
+ q(rom) => [
+ q(0359),
+ q(0),
+ ],
+ q(rum) => [
+ q(0360),
+ q(0),
+ ],
+ q(run) => [
+ q(0361),
+ q(0),
+ ],
+ q(rup) => [
+ q(0362),
+ q(0),
+ ],
+ q(rus) => [
+ q(0363),
+ q(0),
+ ],
+ q(sad) => [
+ q(0364),
+ q(0),
+ ],
+ q(sag) => [
+ q(0365),
+ q(0),
+ ],
+ q(sah) => [
+ q(0366),
+ q(0),
+ ],
+ q(sai) => [
+ q(0367),
+ q(0),
+ ],
+ q(sal) => [
+ q(0368),
+ q(0),
+ ],
+ q(sam) => [
+ q(0369),
+ q(0),
+ ],
+ q(san) => [
+ q(0370),
+ q(0),
+ ],
+ q(sas) => [
+ q(0371),
+ q(0),
+ ],
+ q(sat) => [
+ q(0372),
+ q(0),
+ ],
+ q(scn) => [
+ q(0373),
+ q(0),
+ ],
+ q(sco) => [
+ q(0374),
+ q(0),
+ ],
+ q(sel) => [
+ q(0375),
+ q(0),
+ ],
+ q(sem) => [
+ q(0376),
+ q(0),
+ ],
+ q(sga) => [
+ q(0377),
+ q(0),
+ ],
+ q(sgn) => [
+ q(0378),
+ q(0),
+ ],
+ q(shn) => [
+ q(0379),
+ q(0),
+ ],
+ q(sid) => [
+ q(0380),
+ q(0),
+ ],
+ q(sin) => [
+ q(0381),
+ q(0),
+ ],
+ q(sio) => [
+ q(0382),
+ q(0),
+ ],
+ q(sit) => [
+ q(0383),
+ q(0),
+ ],
+ q(sla) => [
+ q(0384),
+ q(0),
+ ],
+ q(slo) => [
+ q(0385),
+ q(0),
+ ],
+ q(slv) => [
+ q(0386),
+ q(0),
+ ],
+ q(sma) => [
+ q(0387),
+ q(0),
+ ],
+ q(sme) => [
+ q(0388),
+ q(0),
+ ],
+ q(smi) => [
+ q(0389),
+ q(0),
+ ],
+ q(smj) => [
+ q(0390),
+ q(0),
+ ],
+ q(smn) => [
+ q(0391),
+ q(0),
+ ],
+ q(smo) => [
+ q(0392),
+ q(0),
+ ],
+ q(sms) => [
+ q(0393),
+ q(0),
+ ],
+ q(sna) => [
+ q(0394),
+ q(0),
+ ],
+ q(snd) => [
+ q(0395),
+ q(0),
+ ],
+ q(snk) => [
+ q(0396),
+ q(0),
+ ],
+ q(sog) => [
+ q(0397),
+ q(0),
+ ],
+ q(som) => [
+ q(0398),
+ q(0),
+ ],
+ q(son) => [
+ q(0399),
+ q(0),
+ ],
+ q(sot) => [
+ q(0400),
+ q(0),
+ ],
+ q(spa) => [
+ q(0401),
+ q(0),
+ ],
+ q(srd) => [
+ q(0402),
+ q(0),
+ ],
+ q(srn) => [
+ q(0403),
+ q(0),
+ ],
+ q(srp) => [
+ q(0404),
+ q(0),
+ ],
+ q(srr) => [
+ q(0405),
+ q(0),
+ ],
+ q(ssa) => [
+ q(0406),
+ q(0),
+ ],
+ q(ssw) => [
+ q(0407),
+ q(0),
+ ],
+ q(suk) => [
+ q(0408),
+ q(0),
+ ],
+ q(sun) => [
+ q(0409),
+ q(0),
+ ],
+ q(sus) => [
+ q(0410),
+ q(0),
+ ],
+ q(sux) => [
+ q(0411),
+ q(0),
+ ],
+ q(swa) => [
+ q(0412),
+ q(0),
+ ],
+ q(swe) => [
+ q(0413),
+ q(0),
+ ],
+ q(syc) => [
+ q(0414),
+ q(0),
+ ],
+ q(syr) => [
+ q(0415),
+ q(0),
+ ],
+ q(tah) => [
+ q(0416),
+ q(0),
+ ],
+ q(tai) => [
+ q(0417),
+ q(0),
+ ],
+ q(tam) => [
+ q(0418),
+ q(0),
+ ],
+ q(tat) => [
+ q(0419),
+ q(0),
+ ],
+ q(tel) => [
+ q(0420),
+ q(0),
+ ],
+ q(tem) => [
+ q(0421),
+ q(0),
+ ],
+ q(ter) => [
+ q(0422),
+ q(0),
+ ],
+ q(tet) => [
+ q(0423),
+ q(0),
+ ],
+ q(tgk) => [
+ q(0424),
+ q(0),
+ ],
+ q(tgl) => [
+ q(0425),
+ q(0),
+ ],
+ q(tha) => [
+ q(0426),
+ q(0),
+ ],
+ q(tib) => [
+ q(0427),
+ q(0),
+ ],
+ q(tig) => [
+ q(0428),
+ q(0),
+ ],
+ q(tir) => [
+ q(0429),
+ q(0),
+ ],
+ q(tiv) => [
+ q(0430),
+ q(0),
+ ],
+ q(tkl) => [
+ q(0431),
+ q(0),
+ ],
+ q(tlh) => [
+ q(0432),
+ q(0),
+ ],
+ q(tli) => [
+ q(0433),
+ q(0),
+ ],
+ q(tmh) => [
+ q(0434),
+ q(0),
+ ],
+ q(tog) => [
+ q(0435),
+ q(0),
+ ],
+ q(ton) => [
+ q(0436),
+ q(0),
+ ],
+ q(tpi) => [
+ q(0437),
+ q(0),
+ ],
+ q(tsi) => [
+ q(0438),
+ q(0),
+ ],
+ q(tsn) => [
+ q(0439),
+ q(0),
+ ],
+ q(tso) => [
+ q(0440),
+ q(0),
+ ],
+ q(tuk) => [
+ q(0441),
+ q(0),
+ ],
+ q(tum) => [
+ q(0442),
+ q(0),
+ ],
+ q(tup) => [
+ q(0443),
+ q(0),
+ ],
+ q(tur) => [
+ q(0444),
+ q(0),
+ ],
+ q(tut) => [
+ q(0445),
+ q(0),
+ ],
+ q(tvl) => [
+ q(0446),
+ q(0),
+ ],
+ q(twi) => [
+ q(0447),
+ q(0),
+ ],
+ q(tyv) => [
+ q(0448),
+ q(0),
+ ],
+ q(udm) => [
+ q(0449),
+ q(0),
+ ],
+ q(uga) => [
+ q(0450),
+ q(0),
+ ],
+ q(uig) => [
+ q(0451),
+ q(0),
+ ],
+ q(ukr) => [
+ q(0452),
+ q(0),
+ ],
+ q(umb) => [
+ q(0453),
+ q(0),
+ ],
+ q(und) => [
+ q(0454),
+ q(0),
+ ],
+ q(urd) => [
+ q(0455),
+ q(0),
+ ],
+ q(uzb) => [
+ q(0456),
+ q(0),
+ ],
+ q(vai) => [
+ q(0457),
+ q(0),
+ ],
+ q(ven) => [
+ q(0458),
+ q(0),
+ ],
+ q(vie) => [
+ q(0459),
+ q(0),
+ ],
+ q(vol) => [
+ q(0460),
+ q(0),
+ ],
+ q(vot) => [
+ q(0461),
+ q(0),
+ ],
+ q(wak) => [
+ q(0462),
+ q(0),
+ ],
+ q(wal) => [
+ q(0463),
+ q(0),
+ ],
+ q(war) => [
+ q(0464),
+ q(0),
+ ],
+ q(was) => [
+ q(0465),
+ q(0),
+ ],
+ q(wel) => [
+ q(0466),
+ q(0),
+ ],
+ q(wen) => [
+ q(0467),
+ q(0),
+ ],
+ q(wln) => [
+ q(0468),
+ q(0),
+ ],
+ q(wol) => [
+ q(0469),
+ q(0),
+ ],
+ q(xal) => [
+ q(0470),
+ q(0),
+ ],
+ q(xho) => [
+ q(0471),
+ q(0),
+ ],
+ q(yao) => [
+ q(0472),
+ q(0),
+ ],
+ q(yap) => [
+ q(0473),
+ q(0),
+ ],
+ q(yid) => [
+ q(0474),
+ q(0),
+ ],
+ q(yor) => [
+ q(0475),
+ q(0),
+ ],
+ q(ypk) => [
+ q(0476),
+ q(0),
+ ],
+ q(zap) => [
+ q(0477),
+ q(0),
+ ],
+ q(zbl) => [
+ q(0478),
+ q(0),
+ ],
+ q(zen) => [
+ q(0479),
+ q(0),
+ ],
+ q(zha) => [
+ q(0480),
+ q(0),
+ ],
+ q(znd) => [
+ q(0481),
+ q(0),
+ ],
+ q(zul) => [
+ q(0482),
+ q(0),
+ ],
+ q(zun) => [
+ q(0483),
+ q(0),
+ ],
+ q(zxx) => [
+ q(0484),
+ q(0),
+ ],
+ q(zza) => [
+ q(0485),
+ q(0),
+ ],
+ },
+ q(term) => {
+ q(bod) => [
+ q(0427),
+ q(0),
+ ],
+ q(ces) => [
+ q(0101),
+ q(0),
+ ],
+ q(cym) => [
+ q(0466),
+ q(0),
+ ],
+ q(deu) => [
+ q(0150),
+ q(0),
+ ],
+ q(ell) => [
+ q(0164),
+ q(0),
+ ],
+ q(eus) => [
+ q(0044),
+ q(0),
+ ],
+ q(fas) => [
+ q(0342),
+ q(0),
+ ],
+ q(fra) => [
+ q(0137),
+ q(0),
+ ],
+ q(hye) => [
+ q(0024),
+ q(0),
+ ],
+ q(isl) => [
+ q(0187),
+ q(0),
+ ],
+ q(kat) => [
+ q(0149),
+ q(0),
+ ],
+ q(mkd) => [
+ q(0262),
+ q(0),
+ ],
+ q(mri) => [
+ q(0270),
+ q(0),
+ ],
+ q(msa) => [
+ q(0274),
+ q(0),
+ ],
+ q(mya) => [
+ q(0066),
+ q(0),
+ ],
+ q(nld) => [
+ q(0116),
+ q(0),
+ ],
+ q(ron) => [
+ q(0360),
+ q(0),
+ ],
+ q(slk) => [
+ q(0385),
+ q(0),
+ ],
+ q(sqi) => [
+ q(0013),
+ q(0),
+ ],
+ q(zho) => [
+ q(0079),
+ q(0),
+ ],
+ },
+};
+
+$Locale::Codes::Data{'language'}{'id2code'} = {
+ q(alpha2) => {
+ q(0001) => q(aa),
+ q(0002) => q(ab),
+ q(0009) => q(af),
+ q(0011) => q(ak),
+ q(0013) => q(sq),
+ q(0017) => q(am),
+ q(0021) => q(ar),
+ q(0023) => q(an),
+ q(0024) => q(hy),
+ q(0029) => q(as),
+ q(0033) => q(av),
+ q(0034) => q(ae),
+ q(0036) => q(ay),
+ q(0037) => q(az),
+ q(0040) => q(ba),
+ q(0042) => q(bm),
+ q(0044) => q(eu),
+ q(0048) => q(be),
+ q(0050) => q(bn),
+ q(0053) => q(bh),
+ q(0056) => q(bi),
+ q(0059) => q(bs),
+ q(0061) => q(br),
+ q(0065) => q(bg),
+ q(0066) => q(my),
+ q(0071) => q(ca),
+ q(0075) => q(ch),
+ q(0077) => q(ce),
+ q(0079) => q(zh),
+ q(0086) => q(cu),
+ q(0087) => q(cv),
+ q(0091) => q(kw),
+ q(0092) => q(co),
+ q(0096) => q(cr),
+ q(0101) => q(cs),
+ q(0103) => q(da),
+ q(0110) => q(dv),
+ q(0116) => q(nl),
+ q(0118) => q(dz),
+ q(0123) => q(en),
+ q(0125) => q(eo),
+ q(0126) => q(et),
+ q(0127) => q(ee),
+ q(0130) => q(fo),
+ q(0132) => q(fj),
+ q(0134) => q(fi),
+ q(0137) => q(fr),
+ q(0142) => q(fy),
+ q(0143) => q(ff),
+ q(0149) => q(ka),
+ q(0150) => q(de),
+ q(0153) => q(gd),
+ q(0154) => q(ga),
+ q(0155) => q(gl),
+ q(0156) => q(gv),
+ q(0164) => q(el),
+ q(0165) => q(gn),
+ q(0167) => q(gu),
+ q(0170) => q(ht),
+ q(0171) => q(ha),
+ q(0173) => q(he),
+ q(0174) => q(hz),
+ q(0177) => q(hi),
+ q(0180) => q(ho),
+ q(0181) => q(hr),
+ q(0183) => q(hu),
+ q(0186) => q(ig),
+ q(0187) => q(is),
+ q(0188) => q(io),
+ q(0189) => q(ii),
+ q(0191) => q(iu),
+ q(0192) => q(ie),
+ q(0194) => q(ia),
+ q(0196) => q(id),
+ q(0199) => q(ik),
+ q(0202) => q(it),
+ q(0203) => q(jv),
+ q(0205) => q(ja),
+ q(0211) => q(kl),
+ q(0213) => q(kn),
+ q(0215) => q(ks),
+ q(0216) => q(kr),
+ q(0218) => q(kk),
+ q(0222) => q(km),
+ q(0224) => q(ki),
+ q(0225) => q(rw),
+ q(0226) => q(ky),
+ q(0229) => q(kv),
+ q(0230) => q(kg),
+ q(0231) => q(ko),
+ q(0238) => q(kj),
+ q(0240) => q(ku),
+ q(0245) => q(lo),
+ q(0246) => q(la),
+ q(0247) => q(lv),
+ q(0249) => q(li),
+ q(0250) => q(ln),
+ q(0251) => q(lt),
+ q(0254) => q(lb),
+ q(0256) => q(lu),
+ q(0257) => q(lg),
+ q(0262) => q(mk),
+ q(0265) => q(mh),
+ q(0268) => q(ml),
+ q(0270) => q(mi),
+ q(0272) => q(mr),
+ q(0274) => q(ms),
+ q(0283) => q(mg),
+ q(0284) => q(mt),
+ q(0289) => q(mn),
+ q(0301) => q(na),
+ q(0302) => q(nv),
+ q(0303) => q(nr),
+ q(0304) => q(nd),
+ q(0305) => q(ng),
+ q(0307) => q(ne),
+ q(0312) => q(nn),
+ q(0313) => q(nb),
+ q(0316) => q(no),
+ q(0321) => q(ny),
+ q(0326) => q(oc),
+ q(0327) => q(oj),
+ q(0328) => q(or),
+ q(0329) => q(om),
+ q(0331) => q(os),
+ q(0338) => q(pa),
+ q(0342) => q(fa),
+ q(0345) => q(pi),
+ q(0346) => q(pl),
+ q(0348) => q(pt),
+ q(0351) => q(ps),
+ q(0353) => q(qu),
+ q(0358) => q(rm),
+ q(0360) => q(ro),
+ q(0361) => q(rn),
+ q(0363) => q(ru),
+ q(0365) => q(sg),
+ q(0370) => q(sa),
+ q(0381) => q(si),
+ q(0385) => q(sk),
+ q(0386) => q(sl),
+ q(0388) => q(se),
+ q(0392) => q(sm),
+ q(0394) => q(sn),
+ q(0395) => q(sd),
+ q(0398) => q(so),
+ q(0400) => q(st),
+ q(0401) => q(es),
+ q(0402) => q(sc),
+ q(0404) => q(sr),
+ q(0407) => q(ss),
+ q(0409) => q(su),
+ q(0412) => q(sw),
+ q(0413) => q(sv),
+ q(0416) => q(ty),
+ q(0418) => q(ta),
+ q(0419) => q(tt),
+ q(0420) => q(te),
+ q(0424) => q(tg),
+ q(0425) => q(tl),
+ q(0426) => q(th),
+ q(0427) => q(bo),
+ q(0429) => q(ti),
+ q(0436) => q(to),
+ q(0439) => q(tn),
+ q(0440) => q(ts),
+ q(0441) => q(tk),
+ q(0444) => q(tr),
+ q(0447) => q(tw),
+ q(0451) => q(ug),
+ q(0452) => q(uk),
+ q(0455) => q(ur),
+ q(0456) => q(uz),
+ q(0458) => q(ve),
+ q(0459) => q(vi),
+ q(0460) => q(vo),
+ q(0466) => q(cy),
+ q(0468) => q(wa),
+ q(0469) => q(wo),
+ q(0471) => q(xh),
+ q(0474) => q(yi),
+ q(0475) => q(yo),
+ q(0480) => q(za),
+ q(0482) => q(zu),
+ },
+ q(alpha3) => {
+ q(0001) => q(aar),
+ q(0002) => q(abk),
+ q(0003) => q(ace),
+ q(0004) => q(ach),
+ q(0005) => q(ada),
+ q(0006) => q(ady),
+ q(0007) => q(afa),
+ q(0008) => q(afh),
+ q(0009) => q(afr),
+ q(0010) => q(ain),
+ q(0011) => q(aka),
+ q(0012) => q(akk),
+ q(0013) => q(alb),
+ q(0014) => q(ale),
+ q(0015) => q(alg),
+ q(0016) => q(alt),
+ q(0017) => q(amh),
+ q(0018) => q(ang),
+ q(0019) => q(anp),
+ q(0020) => q(apa),
+ q(0021) => q(ara),
+ q(0022) => q(arc),
+ q(0023) => q(arg),
+ q(0024) => q(arm),
+ q(0025) => q(arn),
+ q(0026) => q(arp),
+ q(0027) => q(art),
+ q(0028) => q(arw),
+ q(0029) => q(asm),
+ q(0030) => q(ast),
+ q(0031) => q(ath),
+ q(0032) => q(aus),
+ q(0033) => q(ava),
+ q(0034) => q(ave),
+ q(0035) => q(awa),
+ q(0036) => q(aym),
+ q(0037) => q(aze),
+ q(0038) => q(bad),
+ q(0039) => q(bai),
+ q(0040) => q(bak),
+ q(0041) => q(bal),
+ q(0042) => q(bam),
+ q(0043) => q(ban),
+ q(0044) => q(baq),
+ q(0045) => q(bas),
+ q(0046) => q(bat),
+ q(0047) => q(bej),
+ q(0048) => q(bel),
+ q(0049) => q(bem),
+ q(0050) => q(ben),
+ q(0051) => q(ber),
+ q(0052) => q(bho),
+ q(0053) => q(bih),
+ q(0054) => q(bik),
+ q(0055) => q(bin),
+ q(0056) => q(bis),
+ q(0057) => q(bla),
+ q(0058) => q(bnt),
+ q(0059) => q(bos),
+ q(0060) => q(bra),
+ q(0061) => q(bre),
+ q(0062) => q(btk),
+ q(0063) => q(bua),
+ q(0064) => q(bug),
+ q(0065) => q(bul),
+ q(0066) => q(bur),
+ q(0067) => q(byn),
+ q(0068) => q(cad),
+ q(0069) => q(cai),
+ q(0070) => q(car),
+ q(0071) => q(cat),
+ q(0072) => q(cau),
+ q(0073) => q(ceb),
+ q(0074) => q(cel),
+ q(0075) => q(cha),
+ q(0076) => q(chb),
+ q(0077) => q(che),
+ q(0078) => q(chg),
+ q(0079) => q(chi),
+ q(0080) => q(chk),
+ q(0081) => q(chm),
+ q(0082) => q(chn),
+ q(0083) => q(cho),
+ q(0084) => q(chp),
+ q(0085) => q(chr),
+ q(0086) => q(chu),
+ q(0087) => q(chv),
+ q(0088) => q(chy),
+ q(0089) => q(cmc),
+ q(0090) => q(cop),
+ q(0091) => q(cor),
+ q(0092) => q(cos),
+ q(0093) => q(cpe),
+ q(0094) => q(cpf),
+ q(0095) => q(cpp),
+ q(0096) => q(cre),
+ q(0097) => q(crh),
+ q(0098) => q(crp),
+ q(0099) => q(csb),
+ q(0100) => q(cus),
+ q(0101) => q(cze),
+ q(0102) => q(dak),
+ q(0103) => q(dan),
+ q(0104) => q(dar),
+ q(0105) => q(day),
+ q(0106) => q(del),
+ q(0107) => q(den),
+ q(0108) => q(dgr),
+ q(0109) => q(din),
+ q(0110) => q(div),
+ q(0111) => q(doi),
+ q(0112) => q(dra),
+ q(0113) => q(dsb),
+ q(0114) => q(dua),
+ q(0115) => q(dum),
+ q(0116) => q(dut),
+ q(0117) => q(dyu),
+ q(0118) => q(dzo),
+ q(0119) => q(efi),
+ q(0120) => q(egy),
+ q(0121) => q(eka),
+ q(0122) => q(elx),
+ q(0123) => q(eng),
+ q(0124) => q(enm),
+ q(0125) => q(epo),
+ q(0126) => q(est),
+ q(0127) => q(ewe),
+ q(0128) => q(ewo),
+ q(0129) => q(fan),
+ q(0130) => q(fao),
+ q(0131) => q(fat),
+ q(0132) => q(fij),
+ q(0133) => q(fil),
+ q(0134) => q(fin),
+ q(0135) => q(fiu),
+ q(0136) => q(fon),
+ q(0137) => q(fre),
+ q(0138) => q(frm),
+ q(0139) => q(fro),
+ q(0140) => q(frr),
+ q(0141) => q(frs),
+ q(0142) => q(fry),
+ q(0143) => q(ful),
+ q(0144) => q(fur),
+ q(0145) => q(gaa),
+ q(0146) => q(gay),
+ q(0147) => q(gba),
+ q(0148) => q(gem),
+ q(0149) => q(geo),
+ q(0150) => q(ger),
+ q(0151) => q(gez),
+ q(0152) => q(gil),
+ q(0153) => q(gla),
+ q(0154) => q(gle),
+ q(0155) => q(glg),
+ q(0156) => q(glv),
+ q(0157) => q(gmh),
+ q(0158) => q(goh),
+ q(0159) => q(gon),
+ q(0160) => q(gor),
+ q(0161) => q(got),
+ q(0162) => q(grb),
+ q(0163) => q(grc),
+ q(0164) => q(gre),
+ q(0165) => q(grn),
+ q(0166) => q(gsw),
+ q(0167) => q(guj),
+ q(0168) => q(gwi),
+ q(0169) => q(hai),
+ q(0170) => q(hat),
+ q(0171) => q(hau),
+ q(0172) => q(haw),
+ q(0173) => q(heb),
+ q(0174) => q(her),
+ q(0175) => q(hil),
+ q(0176) => q(him),
+ q(0177) => q(hin),
+ q(0178) => q(hit),
+ q(0179) => q(hmn),
+ q(0180) => q(hmo),
+ q(0181) => q(hrv),
+ q(0182) => q(hsb),
+ q(0183) => q(hun),
+ q(0184) => q(hup),
+ q(0185) => q(iba),
+ q(0186) => q(ibo),
+ q(0187) => q(ice),
+ q(0188) => q(ido),
+ q(0189) => q(iii),
+ q(0190) => q(ijo),
+ q(0191) => q(iku),
+ q(0192) => q(ile),
+ q(0193) => q(ilo),
+ q(0194) => q(ina),
+ q(0195) => q(inc),
+ q(0196) => q(ind),
+ q(0197) => q(ine),
+ q(0198) => q(inh),
+ q(0199) => q(ipk),
+ q(0200) => q(ira),
+ q(0201) => q(iro),
+ q(0202) => q(ita),
+ q(0203) => q(jav),
+ q(0204) => q(jbo),
+ q(0205) => q(jpn),
+ q(0206) => q(jpr),
+ q(0207) => q(jrb),
+ q(0208) => q(kaa),
+ q(0209) => q(kab),
+ q(0210) => q(kac),
+ q(0211) => q(kal),
+ q(0212) => q(kam),
+ q(0213) => q(kan),
+ q(0214) => q(kar),
+ q(0215) => q(kas),
+ q(0216) => q(kau),
+ q(0217) => q(kaw),
+ q(0218) => q(kaz),
+ q(0219) => q(kbd),
+ q(0220) => q(kha),
+ q(0221) => q(khi),
+ q(0222) => q(khm),
+ q(0223) => q(kho),
+ q(0224) => q(kik),
+ q(0225) => q(kin),
+ q(0226) => q(kir),
+ q(0227) => q(kmb),
+ q(0228) => q(kok),
+ q(0229) => q(kom),
+ q(0230) => q(kon),
+ q(0231) => q(kor),
+ q(0232) => q(kos),
+ q(0233) => q(kpe),
+ q(0234) => q(krc),
+ q(0235) => q(krl),
+ q(0236) => q(kro),
+ q(0237) => q(kru),
+ q(0238) => q(kua),
+ q(0239) => q(kum),
+ q(0240) => q(kur),
+ q(0241) => q(kut),
+ q(0242) => q(lad),
+ q(0243) => q(lah),
+ q(0244) => q(lam),
+ q(0245) => q(lao),
+ q(0246) => q(lat),
+ q(0247) => q(lav),
+ q(0248) => q(lez),
+ q(0249) => q(lim),
+ q(0250) => q(lin),
+ q(0251) => q(lit),
+ q(0252) => q(lol),
+ q(0253) => q(loz),
+ q(0254) => q(ltz),
+ q(0255) => q(lua),
+ q(0256) => q(lub),
+ q(0257) => q(lug),
+ q(0258) => q(lui),
+ q(0259) => q(lun),
+ q(0260) => q(luo),
+ q(0261) => q(lus),
+ q(0262) => q(mac),
+ q(0263) => q(mad),
+ q(0264) => q(mag),
+ q(0265) => q(mah),
+ q(0266) => q(mai),
+ q(0267) => q(mak),
+ q(0268) => q(mal),
+ q(0269) => q(man),
+ q(0270) => q(mao),
+ q(0271) => q(map),
+ q(0272) => q(mar),
+ q(0273) => q(mas),
+ q(0274) => q(may),
+ q(0275) => q(mdf),
+ q(0276) => q(mdr),
+ q(0277) => q(men),
+ q(0278) => q(mga),
+ q(0279) => q(mic),
+ q(0280) => q(min),
+ q(0281) => q(mis),
+ q(0282) => q(mkh),
+ q(0283) => q(mlg),
+ q(0284) => q(mlt),
+ q(0285) => q(mnc),
+ q(0286) => q(mni),
+ q(0287) => q(mno),
+ q(0288) => q(moh),
+ q(0289) => q(mon),
+ q(0290) => q(mos),
+ q(0291) => q(mul),
+ q(0292) => q(mun),
+ q(0293) => q(mus),
+ q(0294) => q(mwl),
+ q(0295) => q(mwr),
+ q(0296) => q(myn),
+ q(0297) => q(myv),
+ q(0298) => q(nah),
+ q(0299) => q(nai),
+ q(0300) => q(nap),
+ q(0301) => q(nau),
+ q(0302) => q(nav),
+ q(0303) => q(nbl),
+ q(0304) => q(nde),
+ q(0305) => q(ndo),
+ q(0306) => q(nds),
+ q(0307) => q(nep),
+ q(0308) => q(new),
+ q(0309) => q(nia),
+ q(0310) => q(nic),
+ q(0311) => q(niu),
+ q(0312) => q(nno),
+ q(0313) => q(nob),
+ q(0314) => q(nog),
+ q(0315) => q(non),
+ q(0316) => q(nor),
+ q(0317) => q(nqo),
+ q(0318) => q(nso),
+ q(0319) => q(nub),
+ q(0320) => q(nwc),
+ q(0321) => q(nya),
+ q(0322) => q(nym),
+ q(0323) => q(nyn),
+ q(0324) => q(nyo),
+ q(0325) => q(nzi),
+ q(0326) => q(oci),
+ q(0327) => q(oji),
+ q(0328) => q(ori),
+ q(0329) => q(orm),
+ q(0330) => q(osa),
+ q(0331) => q(oss),
+ q(0332) => q(ota),
+ q(0333) => q(oto),
+ q(0334) => q(paa),
+ q(0335) => q(pag),
+ q(0336) => q(pal),
+ q(0337) => q(pam),
+ q(0338) => q(pan),
+ q(0339) => q(pap),
+ q(0340) => q(pau),
+ q(0341) => q(peo),
+ q(0342) => q(per),
+ q(0343) => q(phi),
+ q(0344) => q(phn),
+ q(0345) => q(pli),
+ q(0346) => q(pol),
+ q(0347) => q(pon),
+ q(0348) => q(por),
+ q(0349) => q(pra),
+ q(0350) => q(pro),
+ q(0351) => q(pus),
+ q(0352) => q(qtz),
+ q(0353) => q(que),
+ q(0354) => q(raj),
+ q(0355) => q(rap),
+ q(0356) => q(rar),
+ q(0357) => q(roa),
+ q(0358) => q(roh),
+ q(0359) => q(rom),
+ q(0360) => q(rum),
+ q(0361) => q(run),
+ q(0362) => q(rup),
+ q(0363) => q(rus),
+ q(0364) => q(sad),
+ q(0365) => q(sag),
+ q(0366) => q(sah),
+ q(0367) => q(sai),
+ q(0368) => q(sal),
+ q(0369) => q(sam),
+ q(0370) => q(san),
+ q(0371) => q(sas),
+ q(0372) => q(sat),
+ q(0373) => q(scn),
+ q(0374) => q(sco),
+ q(0375) => q(sel),
+ q(0376) => q(sem),
+ q(0377) => q(sga),
+ q(0378) => q(sgn),
+ q(0379) => q(shn),
+ q(0380) => q(sid),
+ q(0381) => q(sin),
+ q(0382) => q(sio),
+ q(0383) => q(sit),
+ q(0384) => q(sla),
+ q(0385) => q(slo),
+ q(0386) => q(slv),
+ q(0387) => q(sma),
+ q(0388) => q(sme),
+ q(0389) => q(smi),
+ q(0390) => q(smj),
+ q(0391) => q(smn),
+ q(0392) => q(smo),
+ q(0393) => q(sms),
+ q(0394) => q(sna),
+ q(0395) => q(snd),
+ q(0396) => q(snk),
+ q(0397) => q(sog),
+ q(0398) => q(som),
+ q(0399) => q(son),
+ q(0400) => q(sot),
+ q(0401) => q(spa),
+ q(0402) => q(srd),
+ q(0403) => q(srn),
+ q(0404) => q(srp),
+ q(0405) => q(srr),
+ q(0406) => q(ssa),
+ q(0407) => q(ssw),
+ q(0408) => q(suk),
+ q(0409) => q(sun),
+ q(0410) => q(sus),
+ q(0411) => q(sux),
+ q(0412) => q(swa),
+ q(0413) => q(swe),
+ q(0414) => q(syc),
+ q(0415) => q(syr),
+ q(0416) => q(tah),
+ q(0417) => q(tai),
+ q(0418) => q(tam),
+ q(0419) => q(tat),
+ q(0420) => q(tel),
+ q(0421) => q(tem),
+ q(0422) => q(ter),
+ q(0423) => q(tet),
+ q(0424) => q(tgk),
+ q(0425) => q(tgl),
+ q(0426) => q(tha),
+ q(0427) => q(tib),
+ q(0428) => q(tig),
+ q(0429) => q(tir),
+ q(0430) => q(tiv),
+ q(0431) => q(tkl),
+ q(0432) => q(tlh),
+ q(0433) => q(tli),
+ q(0434) => q(tmh),
+ q(0435) => q(tog),
+ q(0436) => q(ton),
+ q(0437) => q(tpi),
+ q(0438) => q(tsi),
+ q(0439) => q(tsn),
+ q(0440) => q(tso),
+ q(0441) => q(tuk),
+ q(0442) => q(tum),
+ q(0443) => q(tup),
+ q(0444) => q(tur),
+ q(0445) => q(tut),
+ q(0446) => q(tvl),
+ q(0447) => q(twi),
+ q(0448) => q(tyv),
+ q(0449) => q(udm),
+ q(0450) => q(uga),
+ q(0451) => q(uig),
+ q(0452) => q(ukr),
+ q(0453) => q(umb),
+ q(0454) => q(und),
+ q(0455) => q(urd),
+ q(0456) => q(uzb),
+ q(0457) => q(vai),
+ q(0458) => q(ven),
+ q(0459) => q(vie),
+ q(0460) => q(vol),
+ q(0461) => q(vot),
+ q(0462) => q(wak),
+ q(0463) => q(wal),
+ q(0464) => q(war),
+ q(0465) => q(was),
+ q(0466) => q(wel),
+ q(0467) => q(wen),
+ q(0468) => q(wln),
+ q(0469) => q(wol),
+ q(0470) => q(xal),
+ q(0471) => q(xho),
+ q(0472) => q(yao),
+ q(0473) => q(yap),
+ q(0474) => q(yid),
+ q(0475) => q(yor),
+ q(0476) => q(ypk),
+ q(0477) => q(zap),
+ q(0478) => q(zbl),
+ q(0479) => q(zen),
+ q(0480) => q(zha),
+ q(0481) => q(znd),
+ q(0482) => q(zul),
+ q(0483) => q(zun),
+ q(0484) => q(zxx),
+ q(0485) => q(zza),
+ },
+ q(term) => {
+ q(0013) => q(sqi),
+ q(0024) => q(hye),
+ q(0044) => q(eus),
+ q(0066) => q(mya),
+ q(0079) => q(zho),
+ q(0101) => q(ces),
+ q(0116) => q(nld),
+ q(0137) => q(fra),
+ q(0149) => q(kat),
+ q(0150) => q(deu),
+ q(0164) => q(ell),
+ q(0187) => q(isl),
+ q(0262) => q(mkd),
+ q(0270) => q(mri),
+ q(0274) => q(msa),
+ q(0342) => q(fas),
+ q(0360) => q(ron),
+ q(0385) => q(slk),
+ q(0427) => q(bod),
+ q(0466) => q(cym),
+ },
+};
+
+1;
--- /dev/null
+package Locale::Codes::Script;
+
+# This file was automatically generated. Any changes to this file will
+# be lost the next time 'get_codes' is run.
+# Generated on: Tue Apr 6 08:17:27 EDT 2010
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Script - script codes for the Locale::Script module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Script module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
+
+=head1 COPYRIGHT
+
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+use vars qw($VERSION);
+$VERSION='3.12';
+
+$Locale::Codes::Data{'script'}{'id'} = '0144';
+
+$Locale::Codes::Data{'script'}{'id2names'} = {
+ q(0001) => [
+ q(Arabic),
+ ],
+ q(0002) => [
+ q(Imperial Aramaic),
+ ],
+ q(0003) => [
+ q(Armenian),
+ ],
+ q(0004) => [
+ q(Avestan),
+ ],
+ q(0005) => [
+ q(Balinese),
+ ],
+ q(0006) => [
+ q(Bamum),
+ ],
+ q(0007) => [
+ q(Bassa Vah),
+ ],
+ q(0008) => [
+ q(Batak),
+ ],
+ q(0009) => [
+ q(Bengali),
+ ],
+ q(0010) => [
+ q(Blissymbols),
+ ],
+ q(0011) => [
+ q(Bopomofo),
+ ],
+ q(0012) => [
+ q(Brahmi),
+ ],
+ q(0013) => [
+ q(Braille),
+ ],
+ q(0014) => [
+ q(Buginese),
+ ],
+ q(0015) => [
+ q(Buhid),
+ ],
+ q(0016) => [
+ q(Chakma),
+ ],
+ q(0017) => [
+ q(Unified Canadian Aboriginal Syllabics),
+ ],
+ q(0018) => [
+ q(Carian),
+ ],
+ q(0019) => [
+ q(Cham),
+ ],
+ q(0020) => [
+ q(Cherokee),
+ ],
+ q(0021) => [
+ q(Cirth),
+ ],
+ q(0022) => [
+ q(Coptic),
+ ],
+ q(0023) => [
+ q(Cypriot),
+ ],
+ q(0024) => [
+ q(Cyrillic),
+ ],
+ q(0025) => [
+ q(Cyrillic (Old Church Slavonic variant)),
+ ],
+ q(0026) => [
+ q(Devanagari (Nagari)),
+ ],
+ q(0027) => [
+ q(Deseret (Mormon)),
+ ],
+ q(0028) => [
+ q(Egyptian demotic),
+ ],
+ q(0029) => [
+ q(Egyptian hieratic),
+ ],
+ q(0030) => [
+ q(Egyptian hieroglyphs),
+ ],
+ q(0031) => [
+ q(Ethiopic (Geez)),
+ ],
+ q(0032) => [
+ q(Georgian (Mkhedruli)),
+ ],
+ q(0033) => [
+ q(Khutsuri (Asomtavruli and Nuskhuri)),
+ ],
+ q(0034) => [
+ q(Glagolitic),
+ ],
+ q(0035) => [
+ q(Gothic),
+ ],
+ q(0036) => [
+ q(Grantha),
+ ],
+ q(0037) => [
+ q(Greek),
+ ],
+ q(0038) => [
+ q(Gujarati),
+ ],
+ q(0039) => [
+ q(Gurmukhi),
+ ],
+ q(0040) => [
+ q(Hangul (Hangul, Hangeul)),
+ ],
+ q(0041) => [
+ q(Han (Hanzi, Kanji, Hanja)),
+ ],
+ q(0042) => [
+ q(Hanunoo (Hanunoo)),
+ ],
+ q(0043) => [
+ q(Han (Simplified variant)),
+ ],
+ q(0044) => [
+ q(Han (Traditional variant)),
+ ],
+ q(0045) => [
+ q(Hebrew),
+ ],
+ q(0046) => [
+ q(Hiragana),
+ ],
+ q(0047) => [
+ q(Pahawh Hmong),
+ ],
+ q(0048) => [
+ q((alias for Hiragana + Katakana)),
+ ],
+ q(0049) => [
+ q(Old Hungarian),
+ ],
+ q(0050) => [
+ q(Indus (Harappan)),
+ ],
+ q(0051) => [
+ q(Old Italic (Etruscan, Oscan, etc.)),
+ ],
+ q(0052) => [
+ q(Javanese),
+ ],
+ q(0053) => [
+ q(Japanese (alias for Han + Hiragana + Katakana)),
+ ],
+ q(0054) => [
+ q(Kayah Li),
+ ],
+ q(0055) => [
+ q(Katakana),
+ ],
+ q(0056) => [
+ q(Kharoshthi),
+ ],
+ q(0057) => [
+ q(Khmer),
+ ],
+ q(0058) => [
+ q(Kannada),
+ ],
+ q(0059) => [
+ q(Korean (alias for Hangul + Han)),
+ ],
+ q(0060) => [
+ q(Kpelle),
+ ],
+ q(0061) => [
+ q(Kaithi),
+ ],
+ q(0062) => [
+ q(Tai Tham (Lanna)),
+ ],
+ q(0063) => [
+ q(Lao),
+ ],
+ q(0064) => [
+ q(Latin (Fraktur variant)),
+ ],
+ q(0065) => [
+ q(Latin (Gaelic variant)),
+ ],
+ q(0066) => [
+ q(Latin),
+ ],
+ q(0067) => [
+ q(Lepcha (Rong)),
+ ],
+ q(0068) => [
+ q(Limbu),
+ ],
+ q(0069) => [
+ q(Linear A),
+ ],
+ q(0070) => [
+ q(Linear B),
+ ],
+ q(0071) => [
+ q(Lisu (Fraser)),
+ ],
+ q(0072) => [
+ q(Loma),
+ ],
+ q(0073) => [
+ q(Lycian),
+ ],
+ q(0074) => [
+ q(Lydian),
+ ],
+ q(0075) => [
+ q(Mandaic, Mandaean),
+ ],
+ q(0076) => [
+ q(Manichaean),
+ ],
+ q(0077) => [
+ q(Mayan hieroglyphs),
+ ],
+ q(0078) => [
+ q(Mende),
+ ],
+ q(0079) => [
+ q(Meroitic Cursive),
+ ],
+ q(0080) => [
+ q(Meroitic Hieroglyphs),
+ ],
+ q(0081) => [
+ q(Malayalam),
+ ],
+ q(0082) => [
+ q(Moon (Moon code, Moon script, Moon type)),
+ ],
+ q(0083) => [
+ q(Mongolian),
+ ],
+ q(0084) => [
+ q(Meitei Mayek (Meithei, Meetei)),
+ ],
+ q(0085) => [
+ q(Myanmar (Burmese)),
+ ],
+ q(0086) => [
+ q(Old North Arabian (Ancient North Arabian)),
+ ],
+ q(0087) => [
+ q(Nabataean),
+ ],
+ q(0088) => [
+ q(Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)),
+ ],
+ q(0089) => [
+ q(N'Ko),
+ ],
+ q(0090) => [
+ q(Ogham),
+ ],
+ q(0091) => [
+ q(Ol Chiki (Ol Cemet, Ol, Santali)),
+ ],
+ q(0092) => [
+ q(Old Turkic, Orkhon Runic),
+ ],
+ q(0093) => [
+ q(Oriya),
+ ],
+ q(0094) => [
+ q(Osmanya),
+ ],
+ q(0095) => [
+ q(Palmyrene),
+ ],
+ q(0096) => [
+ q(Old Permic),
+ ],
+ q(0097) => [
+ q(Phags-pa),
+ ],
+ q(0098) => [
+ q(Inscriptional Pahlavi),
+ ],
+ q(0099) => [
+ q(Psalter Pahlavi),
+ ],
+ q(0100) => [
+ q(Book Pahlavi),
+ ],
+ q(0101) => [
+ q(Phoenician),
+ ],
+ q(0102) => [
+ q(Miao (Pollard)),
+ ],
+ q(0103) => [
+ q(Inscriptional Parthian),
+ ],
+ q(0104) => [
+ q(Reserved for private use (start)),
+ ],
+ q(0105) => [
+ q(Reserved for private use (end)),
+ ],
+ q(0106) => [
+ q(Rejang (Redjang, Kaganga)),
+ ],
+ q(0107) => [
+ q(Rongorongo),
+ ],
+ q(0108) => [
+ q(Runic),
+ ],
+ q(0109) => [
+ q(Samaritan),
+ ],
+ q(0110) => [
+ q(Sarati),
+ ],
+ q(0111) => [
+ q(Old South Arabian),
+ ],
+ q(0112) => [
+ q(Saurashtra),
+ ],
+ q(0113) => [
+ q(SignWriting),
+ ],
+ q(0114) => [
+ q(Shavian (Shaw)),
+ ],
+ q(0115) => [
+ q(Sinhala),
+ ],
+ q(0116) => [
+ q(Sundanese),
+ ],
+ q(0117) => [
+ q(Syloti Nagri),
+ ],
+ q(0118) => [
+ q(Syriac),
+ ],
+ q(0119) => [
+ q(Syriac (Estrangelo variant)),
+ ],
+ q(0120) => [
+ q(Syriac (Western variant)),
+ ],
+ q(0121) => [
+ q(Syriac (Eastern variant)),
+ ],
+ q(0122) => [
+ q(Tagbanwa),
+ ],
+ q(0123) => [
+ q(Tai Le),
+ ],
+ q(0124) => [
+ q(New Tai Lue),
+ ],
+ q(0125) => [
+ q(Tamil),
+ ],
+ q(0126) => [
+ q(Tai Viet),
+ ],
+ q(0127) => [
+ q(Telugu),
+ ],
+ q(0128) => [
+ q(Tengwar),
+ ],
+ q(0129) => [
+ q(Tifinagh (Berber)),
+ ],
+ q(0130) => [
+ q(Tagalog (Baybayin, Alibata)),
+ ],
+ q(0131) => [
+ q(Thaana),
+ ],
+ q(0132) => [
+ q(Thai),
+ ],
+ q(0133) => [
+ q(Tibetan),
+ ],
+ q(0134) => [
+ q(Ugaritic),
+ ],
+ q(0135) => [
+ q(Vai),
+ ],
+ q(0136) => [
+ q(Visible Speech),
+ ],
+ q(0137) => [
+ q(Warang Citi (Varang Kshiti)),
+ ],
+ q(0138) => [
+ q(Old Persian),
+ ],
+ q(0139) => [
+ q(Cuneiform, Sumero-Akkadian),
+ ],
+ q(0140) => [
+ q(Yi),
+ ],
+ q(0141) => [
+ q(Code for inherited script),
+ ],
+ q(0142) => [
+ q(Mathematical notation),
+ ],
+ q(0143) => [
+ q(Symbols),
+ ],
+};
+
+$Locale::Codes::Data{'script'}{'alias2id'} = {
+ q((alias for hiragana + katakana)) => [
+ q(0048),
+ q(0),
+ ],
+ q(arabic) => [
+ q(0001),
+ q(0),
+ ],
+ q(armenian) => [
+ q(0003),
+ q(0),
+ ],
+ q(avestan) => [
+ q(0004),
+ q(0),
+ ],
+ q(balinese) => [
+ q(0005),
+ q(0),
+ ],
+ q(bamum) => [
+ q(0006),
+ q(0),
+ ],
+ q(bassa vah) => [
+ q(0007),
+ q(0),
+ ],
+ q(batak) => [
+ q(0008),
+ q(0),
+ ],
+ q(bengali) => [
+ q(0009),
+ q(0),
+ ],
+ q(blissymbols) => [
+ q(0010),
+ q(0),
+ ],
+ q(book pahlavi) => [
+ q(0100),
+ q(0),
+ ],
+ q(bopomofo) => [
+ q(0011),
+ q(0),
+ ],
+ q(brahmi) => [
+ q(0012),
+ q(0),
+ ],
+ q(braille) => [
+ q(0013),
+ q(0),
+ ],
+ q(buginese) => [
+ q(0014),
+ q(0),
+ ],
+ q(buhid) => [
+ q(0015),
+ q(0),
+ ],
+ q(carian) => [
+ q(0018),
+ q(0),
+ ],
+ q(chakma) => [
+ q(0016),
+ q(0),
+ ],
+ q(cham) => [
+ q(0019),
+ q(0),
+ ],
+ q(cherokee) => [
+ q(0020),
+ q(0),
+ ],
+ q(cirth) => [
+ q(0021),
+ q(0),
+ ],
+ q(code for inherited script) => [
+ q(0141),
+ q(0),
+ ],
+ q(coptic) => [
+ q(0022),
+ q(0),
+ ],
+ q(cuneiform, sumero-akkadian) => [
+ q(0139),
+ q(0),
+ ],
+ q(cypriot) => [
+ q(0023),
+ q(0),
+ ],
+ q(cyrillic) => [
+ q(0024),
+ q(0),
+ ],
+ q(cyrillic (old church slavonic variant)) => [
+ q(0025),
+ q(0),
+ ],
+ q(deseret (mormon)) => [
+ q(0027),
+ q(0),
+ ],
+ q(devanagari (nagari)) => [
+ q(0026),
+ q(0),
+ ],
+ q(egyptian demotic) => [
+ q(0028),
+ q(0),
+ ],
+ q(egyptian hieratic) => [
+ q(0029),
+ q(0),
+ ],
+ q(egyptian hieroglyphs) => [
+ q(0030),
+ q(0),
+ ],
+ q(ethiopic (geez)) => [
+ q(0031),
+ q(0),
+ ],
+ q(georgian (mkhedruli)) => [
+ q(0032),
+ q(0),
+ ],
+ q(glagolitic) => [
+ q(0034),
+ q(0),
+ ],
+ q(gothic) => [
+ q(0035),
+ q(0),
+ ],
+ q(grantha) => [
+ q(0036),
+ q(0),
+ ],
+ q(greek) => [
+ q(0037),
+ q(0),
+ ],
+ q(gujarati) => [
+ q(0038),
+ q(0),
+ ],
+ q(gurmukhi) => [
+ q(0039),
+ q(0),
+ ],
+ q(han (hanzi, kanji, hanja)) => [
+ q(0041),
+ q(0),
+ ],
+ q(han (simplified variant)) => [
+ q(0043),
+ q(0),
+ ],
+ q(han (traditional variant)) => [
+ q(0044),
+ q(0),
+ ],
+ q(hangul (hangul, hangeul)) => [
+ q(0040),
+ q(0),
+ ],
+ q(hanunoo (hanunoo)) => [
+ q(0042),
+ q(0),
+ ],
+ q(hebrew) => [
+ q(0045),
+ q(0),
+ ],
+ q(hiragana) => [
+ q(0046),
+ q(0),
+ ],
+ q(imperial aramaic) => [
+ q(0002),
+ q(0),
+ ],
+ q(indus (harappan)) => [
+ q(0050),
+ q(0),
+ ],
+ q(inscriptional pahlavi) => [
+ q(0098),
+ q(0),
+ ],
+ q(inscriptional parthian) => [
+ q(0103),
+ q(0),
+ ],
+ q(japanese (alias for han + hiragana + katakana)) => [
+ q(0053),
+ q(0),
+ ],
+ q(javanese) => [
+ q(0052),
+ q(0),
+ ],
+ q(kaithi) => [
+ q(0061),
+ q(0),
+ ],
+ q(kannada) => [
+ q(0058),
+ q(0),
+ ],
+ q(katakana) => [
+ q(0055),
+ q(0),
+ ],
+ q(kayah li) => [
+ q(0054),
+ q(0),
+ ],
+ q(kharoshthi) => [
+ q(0056),
+ q(0),
+ ],
+ q(khmer) => [
+ q(0057),
+ q(0),
+ ],
+ q(khutsuri (asomtavruli and nuskhuri)) => [
+ q(0033),
+ q(0),
+ ],
+ q(korean (alias for hangul + han)) => [
+ q(0059),
+ q(0),
+ ],
+ q(kpelle) => [
+ q(0060),
+ q(0),
+ ],
+ q(lao) => [
+ q(0063),
+ q(0),
+ ],
+ q(latin) => [
+ q(0066),
+ q(0),
+ ],
+ q(latin (fraktur variant)) => [
+ q(0064),
+ q(0),
+ ],
+ q(latin (gaelic variant)) => [
+ q(0065),
+ q(0),
+ ],
+ q(lepcha (rong)) => [
+ q(0067),
+ q(0),
+ ],
+ q(limbu) => [
+ q(0068),
+ q(0),
+ ],
+ q(linear a) => [
+ q(0069),
+ q(0),
+ ],
+ q(linear b) => [
+ q(0070),
+ q(0),
+ ],
+ q(lisu (fraser)) => [
+ q(0071),
+ q(0),
+ ],
+ q(loma) => [
+ q(0072),
+ q(0),
+ ],
+ q(lycian) => [
+ q(0073),
+ q(0),
+ ],
+ q(lydian) => [
+ q(0074),
+ q(0),
+ ],
+ q(malayalam) => [
+ q(0081),
+ q(0),
+ ],
+ q(mandaic, mandaean) => [
+ q(0075),
+ q(0),
+ ],
+ q(manichaean) => [
+ q(0076),
+ q(0),
+ ],
+ q(mathematical notation) => [
+ q(0142),
+ q(0),
+ ],
+ q(mayan hieroglyphs) => [
+ q(0077),
+ q(0),
+ ],
+ q(meitei mayek (meithei, meetei)) => [
+ q(0084),
+ q(0),
+ ],
+ q(mende) => [
+ q(0078),
+ q(0),
+ ],
+ q(meroitic cursive) => [
+ q(0079),
+ q(0),
+ ],
+ q(meroitic hieroglyphs) => [
+ q(0080),
+ q(0),
+ ],
+ q(miao (pollard)) => [
+ q(0102),
+ q(0),
+ ],
+ q(mongolian) => [
+ q(0083),
+ q(0),
+ ],
+ q(moon (moon code, moon script, moon type)) => [
+ q(0082),
+ q(0),
+ ],
+ q(myanmar (burmese)) => [
+ q(0085),
+ q(0),
+ ],
+ q(n'ko) => [
+ q(0089),
+ q(0),
+ ],
+ q(nabataean) => [
+ q(0087),
+ q(0),
+ ],
+ q(nakhi geba ('na-'khi ggo-baw, naxi geba)) => [
+ q(0088),
+ q(0),
+ ],
+ q(new tai lue) => [
+ q(0124),
+ q(0),
+ ],
+ q(ogham) => [
+ q(0090),
+ q(0),
+ ],
+ q(ol chiki (ol cemet, ol, santali)) => [
+ q(0091),
+ q(0),
+ ],
+ q(old hungarian) => [
+ q(0049),
+ q(0),
+ ],
+ q(old italic (etruscan, oscan, etc.)) => [
+ q(0051),
+ q(0),
+ ],
+ q(old north arabian (ancient north arabian)) => [
+ q(0086),
+ q(0),
+ ],
+ q(old permic) => [
+ q(0096),
+ q(0),
+ ],
+ q(old persian) => [
+ q(0138),
+ q(0),
+ ],
+ q(old south arabian) => [
+ q(0111),
+ q(0),
+ ],
+ q(old turkic, orkhon runic) => [
+ q(0092),
+ q(0),
+ ],
+ q(oriya) => [
+ q(0093),
+ q(0),
+ ],
+ q(osmanya) => [
+ q(0094),
+ q(0),
+ ],
+ q(pahawh hmong) => [
+ q(0047),
+ q(0),
+ ],
+ q(palmyrene) => [
+ q(0095),
+ q(0),
+ ],
+ q(phags-pa) => [
+ q(0097),
+ q(0),
+ ],
+ q(phoenician) => [
+ q(0101),
+ q(0),
+ ],
+ q(psalter pahlavi) => [
+ q(0099),
+ q(0),
+ ],
+ q(rejang (redjang, kaganga)) => [
+ q(0106),
+ q(0),
+ ],
+ q(reserved for private use (end)) => [
+ q(0105),
+ q(0),
+ ],
+ q(reserved for private use (start)) => [
+ q(0104),
+ q(0),
+ ],
+ q(rongorongo) => [
+ q(0107),
+ q(0),
+ ],
+ q(runic) => [
+ q(0108),
+ q(0),
+ ],
+ q(samaritan) => [
+ q(0109),
+ q(0),
+ ],
+ q(sarati) => [
+ q(0110),
+ q(0),
+ ],
+ q(saurashtra) => [
+ q(0112),
+ q(0),
+ ],
+ q(shavian (shaw)) => [
+ q(0114),
+ q(0),
+ ],
+ q(signwriting) => [
+ q(0113),
+ q(0),
+ ],
+ q(sinhala) => [
+ q(0115),
+ q(0),
+ ],
+ q(sundanese) => [
+ q(0116),
+ q(0),
+ ],
+ q(syloti nagri) => [
+ q(0117),
+ q(0),
+ ],
+ q(symbols) => [
+ q(0143),
+ q(0),
+ ],
+ q(syriac) => [
+ q(0118),
+ q(0),
+ ],
+ q(syriac (eastern variant)) => [
+ q(0121),
+ q(0),
+ ],
+ q(syriac (estrangelo variant)) => [
+ q(0119),
+ q(0),
+ ],
+ q(syriac (western variant)) => [
+ q(0120),
+ q(0),
+ ],
+ q(tagalog (baybayin, alibata)) => [
+ q(0130),
+ q(0),
+ ],
+ q(tagbanwa) => [
+ q(0122),
+ q(0),
+ ],
+ q(tai le) => [
+ q(0123),
+ q(0),
+ ],
+ q(tai tham (lanna)) => [
+ q(0062),
+ q(0),
+ ],
+ q(tai viet) => [
+ q(0126),
+ q(0),
+ ],
+ q(tamil) => [
+ q(0125),
+ q(0),
+ ],
+ q(telugu) => [
+ q(0127),
+ q(0),
+ ],
+ q(tengwar) => [
+ q(0128),
+ q(0),
+ ],
+ q(thaana) => [
+ q(0131),
+ q(0),
+ ],
+ q(thai) => [
+ q(0132),
+ q(0),
+ ],
+ q(tibetan) => [
+ q(0133),
+ q(0),
+ ],
+ q(tifinagh (berber)) => [
+ q(0129),
+ q(0),
+ ],
+ q(ugaritic) => [
+ q(0134),
+ q(0),
+ ],
+ q(unified canadian aboriginal syllabics) => [
+ q(0017),
+ q(0),
+ ],
+ q(vai) => [
+ q(0135),
+ q(0),
+ ],
+ q(visible speech) => [
+ q(0136),
+ q(0),
+ ],
+ q(warang citi (varang kshiti)) => [
+ q(0137),
+ q(0),
+ ],
+ q(yi) => [
+ q(0140),
+ q(0),
+ ],
+};
+
+$Locale::Codes::Data{'script'}{'code2id'} = {
+ q(alpha) => {
+ q(Arab) => [
+ q(0001),
+ q(0),
+ ],
+ q(Armi) => [
+ q(0002),
+ q(0),
+ ],
+ q(Armn) => [
+ q(0003),
+ q(0),
+ ],
+ q(Avst) => [
+ q(0004),
+ q(0),
+ ],
+ q(Bali) => [
+ q(0005),
+ q(0),
+ ],
+ q(Bamu) => [
+ q(0006),
+ q(0),
+ ],
+ q(Bass) => [
+ q(0007),
+ q(0),
+ ],
+ q(Batk) => [
+ q(0008),
+ q(0),
+ ],
+ q(Beng) => [
+ q(0009),
+ q(0),
+ ],
+ q(Blis) => [
+ q(0010),
+ q(0),
+ ],
+ q(Bopo) => [
+ q(0011),
+ q(0),
+ ],
+ q(Brah) => [
+ q(0012),
+ q(0),
+ ],
+ q(Brai) => [
+ q(0013),
+ q(0),
+ ],
+ q(Bugi) => [
+ q(0014),
+ q(0),
+ ],
+ q(Buhd) => [
+ q(0015),
+ q(0),
+ ],
+ q(Cakm) => [
+ q(0016),
+ q(0),
+ ],
+ q(Cans) => [
+ q(0017),
+ q(0),
+ ],
+ q(Cari) => [
+ q(0018),
+ q(0),
+ ],
+ q(Cham) => [
+ q(0019),
+ q(0),
+ ],
+ q(Cher) => [
+ q(0020),
+ q(0),
+ ],
+ q(Cirt) => [
+ q(0021),
+ q(0),
+ ],
+ q(Copt) => [
+ q(0022),
+ q(0),
+ ],
+ q(Cprt) => [
+ q(0023),
+ q(0),
+ ],
+ q(Cyrl) => [
+ q(0024),
+ q(0),
+ ],
+ q(Cyrs) => [
+ q(0025),
+ q(0),
+ ],
+ q(Deva) => [
+ q(0026),
+ q(0),
+ ],
+ q(Dsrt) => [
+ q(0027),
+ q(0),
+ ],
+ q(Egyd) => [
+ q(0028),
+ q(0),
+ ],
+ q(Egyh) => [
+ q(0029),
+ q(0),
+ ],
+ q(Egyp) => [
+ q(0030),
+ q(0),
+ ],
+ q(Ethi) => [
+ q(0031),
+ q(0),
+ ],
+ q(Geok) => [
+ q(0033),
+ q(0),
+ ],
+ q(Geor) => [
+ q(0032),
+ q(0),
+ ],
+ q(Glag) => [
+ q(0034),
+ q(0),
+ ],
+ q(Goth) => [
+ q(0035),
+ q(0),
+ ],
+ q(Gran) => [
+ q(0036),
+ q(0),
+ ],
+ q(Grek) => [
+ q(0037),
+ q(0),
+ ],
+ q(Gujr) => [
+ q(0038),
+ q(0),
+ ],
+ q(Guru) => [
+ q(0039),
+ q(0),
+ ],
+ q(Hang) => [
+ q(0040),
+ q(0),
+ ],
+ q(Hani) => [
+ q(0041),
+ q(0),
+ ],
+ q(Hano) => [
+ q(0042),
+ q(0),
+ ],
+ q(Hans) => [
+ q(0043),
+ q(0),
+ ],
+ q(Hant) => [
+ q(0044),
+ q(0),
+ ],
+ q(Hebr) => [
+ q(0045),
+ q(0),
+ ],
+ q(Hira) => [
+ q(0046),
+ q(0),
+ ],
+ q(Hmng) => [
+ q(0047),
+ q(0),
+ ],
+ q(Hrkt) => [
+ q(0048),
+ q(0),
+ ],
+ q(Hung) => [
+ q(0049),
+ q(0),
+ ],
+ q(Inds) => [
+ q(0050),
+ q(0),
+ ],
+ q(Ital) => [
+ q(0051),
+ q(0),
+ ],
+ q(Java) => [
+ q(0052),
+ q(0),
+ ],
+ q(Jpan) => [
+ q(0053),
+ q(0),
+ ],
+ q(Kali) => [
+ q(0054),
+ q(0),
+ ],
+ q(Kana) => [
+ q(0055),
+ q(0),
+ ],
+ q(Khar) => [
+ q(0056),
+ q(0),
+ ],
+ q(Khmr) => [
+ q(0057),
+ q(0),
+ ],
+ q(Knda) => [
+ q(0058),
+ q(0),
+ ],
+ q(Kore) => [
+ q(0059),
+ q(0),
+ ],
+ q(Kpel) => [
+ q(0060),
+ q(0),
+ ],
+ q(Kthi) => [
+ q(0061),
+ q(0),
+ ],
+ q(Lana) => [
+ q(0062),
+ q(0),
+ ],
+ q(Laoo) => [
+ q(0063),
+ q(0),
+ ],
+ q(Latf) => [
+ q(0064),
+ q(0),
+ ],
+ q(Latg) => [
+ q(0065),
+ q(0),
+ ],
+ q(Latn) => [
+ q(0066),
+ q(0),
+ ],
+ q(Lepc) => [
+ q(0067),
+ q(0),
+ ],
+ q(Limb) => [
+ q(0068),
+ q(0),
+ ],
+ q(Lina) => [
+ q(0069),
+ q(0),
+ ],
+ q(Linb) => [
+ q(0070),
+ q(0),
+ ],
+ q(Lisu) => [
+ q(0071),
+ q(0),
+ ],
+ q(Loma) => [
+ q(0072),
+ q(0),
+ ],
+ q(Lyci) => [
+ q(0073),
+ q(0),
+ ],
+ q(Lydi) => [
+ q(0074),
+ q(0),
+ ],
+ q(Mand) => [
+ q(0075),
+ q(0),
+ ],
+ q(Mani) => [
+ q(0076),
+ q(0),
+ ],
+ q(Maya) => [
+ q(0077),
+ q(0),
+ ],
+ q(Mend) => [
+ q(0078),
+ q(0),
+ ],
+ q(Merc) => [
+ q(0079),
+ q(0),
+ ],
+ q(Mero) => [
+ q(0080),
+ q(0),
+ ],
+ q(Mlym) => [
+ q(0081),
+ q(0),
+ ],
+ q(Mong) => [
+ q(0083),
+ q(0),
+ ],
+ q(Moon) => [
+ q(0082),
+ q(0),
+ ],
+ q(Mtei) => [
+ q(0084),
+ q(0),
+ ],
+ q(Mymr) => [
+ q(0085),
+ q(0),
+ ],
+ q(Narb) => [
+ q(0086),
+ q(0),
+ ],
+ q(Nbat) => [
+ q(0087),
+ q(0),
+ ],
+ q(Nkgb) => [
+ q(0088),
+ q(0),
+ ],
+ q(Nkoo) => [
+ q(0089),
+ q(0),
+ ],
+ q(Ogam) => [
+ q(0090),
+ q(0),
+ ],
+ q(Olck) => [
+ q(0091),
+ q(0),
+ ],
+ q(Orkh) => [
+ q(0092),
+ q(0),
+ ],
+ q(Orya) => [
+ q(0093),
+ q(0),
+ ],
+ q(Osma) => [
+ q(0094),
+ q(0),
+ ],
+ q(Palm) => [
+ q(0095),
+ q(0),
+ ],
+ q(Perm) => [
+ q(0096),
+ q(0),
+ ],
+ q(Phag) => [
+ q(0097),
+ q(0),
+ ],
+ q(Phli) => [
+ q(0098),
+ q(0),
+ ],
+ q(Phlp) => [
+ q(0099),
+ q(0),
+ ],
+ q(Phlv) => [
+ q(0100),
+ q(0),
+ ],
+ q(Phnx) => [
+ q(0101),
+ q(0),
+ ],
+ q(Plrd) => [
+ q(0102),
+ q(0),
+ ],
+ q(Prti) => [
+ q(0103),
+ q(0),
+ ],
+ q(Qaaa) => [
+ q(0104),
+ q(0),
+ ],
+ q(Qabx) => [
+ q(0105),
+ q(0),
+ ],
+ q(Rjng) => [
+ q(0106),
+ q(0),
+ ],
+ q(Roro) => [
+ q(0107),
+ q(0),
+ ],
+ q(Runr) => [
+ q(0108),
+ q(0),
+ ],
+ q(Samr) => [
+ q(0109),
+ q(0),
+ ],
+ q(Sara) => [
+ q(0110),
+ q(0),
+ ],
+ q(Sarb) => [
+ q(0111),
+ q(0),
+ ],
+ q(Saur) => [
+ q(0112),
+ q(0),
+ ],
+ q(Sgnw) => [
+ q(0113),
+ q(0),
+ ],
+ q(Shaw) => [
+ q(0114),
+ q(0),
+ ],
+ q(Sinh) => [
+ q(0115),
+ q(0),
+ ],
+ q(Sund) => [
+ q(0116),
+ q(0),
+ ],
+ q(Sylo) => [
+ q(0117),
+ q(0),
+ ],
+ q(Syrc) => [
+ q(0118),
+ q(0),
+ ],
+ q(Syre) => [
+ q(0119),
+ q(0),
+ ],
+ q(Syrj) => [
+ q(0120),
+ q(0),
+ ],
+ q(Syrn) => [
+ q(0121),
+ q(0),
+ ],
+ q(Tagb) => [
+ q(0122),
+ q(0),
+ ],
+ q(Tale) => [
+ q(0123),
+ q(0),
+ ],
+ q(Talu) => [
+ q(0124),
+ q(0),
+ ],
+ q(Taml) => [
+ q(0125),
+ q(0),
+ ],
+ q(Tavt) => [
+ q(0126),
+ q(0),
+ ],
+ q(Telu) => [
+ q(0127),
+ q(0),
+ ],
+ q(Teng) => [
+ q(0128),
+ q(0),
+ ],
+ q(Tfng) => [
+ q(0129),
+ q(0),
+ ],
+ q(Tglg) => [
+ q(0130),
+ q(0),
+ ],
+ q(Thaa) => [
+ q(0131),
+ q(0),
+ ],
+ q(Thai) => [
+ q(0132),
+ q(0),
+ ],
+ q(Tibt) => [
+ q(0133),
+ q(0),
+ ],
+ q(Ugar) => [
+ q(0134),
+ q(0),
+ ],
+ q(Vaii) => [
+ q(0135),
+ q(0),
+ ],
+ q(Visp) => [
+ q(0136),
+ q(0),
+ ],
+ q(Wara) => [
+ q(0137),
+ q(0),
+ ],
+ q(Xpeo) => [
+ q(0138),
+ q(0),
+ ],
+ q(Xsux) => [
+ q(0139),
+ q(0),
+ ],
+ q(Yiii) => [
+ q(0140),
+ q(0),
+ ],
+ q(Zinh) => [
+ q(0141),
+ q(0),
+ ],
+ q(Zmth) => [
+ q(0142),
+ q(0),
+ ],
+ q(Zsym) => [
+ q(0143),
+ q(0),
+ ],
+ },
+ q(num) => {
+ q(020) => [
+ q(0139),
+ q(0),
+ ],
+ q(030) => [
+ q(0138),
+ q(0),
+ ],
+ q(040) => [
+ q(0134),
+ q(0),
+ ],
+ q(050) => [
+ q(0030),
+ q(0),
+ ],
+ q(060) => [
+ q(0029),
+ q(0),
+ ],
+ q(070) => [
+ q(0028),
+ q(0),
+ ],
+ q(090) => [
+ q(0077),
+ q(0),
+ ],
+ q(095) => [
+ q(0113),
+ q(0),
+ ],
+ q(100) => [
+ q(0080),
+ q(0),
+ ],
+ q(101) => [
+ q(0079),
+ q(0),
+ ],
+ q(105) => [
+ q(0111),
+ q(0),
+ ],
+ q(106) => [
+ q(0086),
+ q(0),
+ ],
+ q(115) => [
+ q(0101),
+ q(0),
+ ],
+ q(116) => [
+ q(0074),
+ q(0),
+ ],
+ q(120) => [
+ q(0129),
+ q(0),
+ ],
+ q(123) => [
+ q(0109),
+ q(0),
+ ],
+ q(124) => [
+ q(0002),
+ q(0),
+ ],
+ q(125) => [
+ q(0045),
+ q(0),
+ ],
+ q(126) => [
+ q(0095),
+ q(0),
+ ],
+ q(130) => [
+ q(0103),
+ q(0),
+ ],
+ q(131) => [
+ q(0098),
+ q(0),
+ ],
+ q(132) => [
+ q(0099),
+ q(0),
+ ],
+ q(133) => [
+ q(0100),
+ q(0),
+ ],
+ q(134) => [
+ q(0004),
+ q(0),
+ ],
+ q(135) => [
+ q(0118),
+ q(0),
+ ],
+ q(136) => [
+ q(0121),
+ q(0),
+ ],
+ q(137) => [
+ q(0120),
+ q(0),
+ ],
+ q(138) => [
+ q(0119),
+ q(0),
+ ],
+ q(139) => [
+ q(0076),
+ q(0),
+ ],
+ q(140) => [
+ q(0075),
+ q(0),
+ ],
+ q(145) => [
+ q(0083),
+ q(0),
+ ],
+ q(159) => [
+ q(0087),
+ q(0),
+ ],
+ q(160) => [
+ q(0001),
+ q(0),
+ ],
+ q(165) => [
+ q(0089),
+ q(0),
+ ],
+ q(170) => [
+ q(0131),
+ q(0),
+ ],
+ q(175) => [
+ q(0092),
+ q(0),
+ ],
+ q(176) => [
+ q(0049),
+ q(0),
+ ],
+ q(200) => [
+ q(0037),
+ q(0),
+ ],
+ q(201) => [
+ q(0018),
+ q(0),
+ ],
+ q(202) => [
+ q(0073),
+ q(0),
+ ],
+ q(204) => [
+ q(0022),
+ q(0),
+ ],
+ q(206) => [
+ q(0035),
+ q(0),
+ ],
+ q(210) => [
+ q(0051),
+ q(0),
+ ],
+ q(211) => [
+ q(0108),
+ q(0),
+ ],
+ q(212) => [
+ q(0090),
+ q(0),
+ ],
+ q(215) => [
+ q(0066),
+ q(0),
+ ],
+ q(216) => [
+ q(0065),
+ q(0),
+ ],
+ q(217) => [
+ q(0064),
+ q(0),
+ ],
+ q(218) => [
+ q(0082),
+ q(0),
+ ],
+ q(220) => [
+ q(0024),
+ q(0),
+ ],
+ q(221) => [
+ q(0025),
+ q(0),
+ ],
+ q(225) => [
+ q(0034),
+ q(0),
+ ],
+ q(227) => [
+ q(0096),
+ q(0),
+ ],
+ q(230) => [
+ q(0003),
+ q(0),
+ ],
+ q(240) => [
+ q(0032),
+ q(0),
+ ],
+ q(241) => [
+ q(0033),
+ q(0),
+ ],
+ q(250) => [
+ q(0027),
+ q(0),
+ ],
+ q(259) => [
+ q(0007),
+ q(0),
+ ],
+ q(260) => [
+ q(0094),
+ q(0),
+ ],
+ q(261) => [
+ q(0091),
+ q(0),
+ ],
+ q(262) => [
+ q(0137),
+ q(0),
+ ],
+ q(280) => [
+ q(0136),
+ q(0),
+ ],
+ q(281) => [
+ q(0114),
+ q(0),
+ ],
+ q(282) => [
+ q(0102),
+ q(0),
+ ],
+ q(285) => [
+ q(0011),
+ q(0),
+ ],
+ q(286) => [
+ q(0040),
+ q(0),
+ ],
+ q(287) => [
+ q(0059),
+ q(0),
+ ],
+ q(290) => [
+ q(0128),
+ q(0),
+ ],
+ q(291) => [
+ q(0021),
+ q(0),
+ ],
+ q(292) => [
+ q(0110),
+ q(0),
+ ],
+ q(300) => [
+ q(0012),
+ q(0),
+ ],
+ q(305) => [
+ q(0056),
+ q(0),
+ ],
+ q(310) => [
+ q(0039),
+ q(0),
+ ],
+ q(315) => [
+ q(0026),
+ q(0),
+ ],
+ q(316) => [
+ q(0117),
+ q(0),
+ ],
+ q(317) => [
+ q(0061),
+ q(0),
+ ],
+ q(320) => [
+ q(0038),
+ q(0),
+ ],
+ q(325) => [
+ q(0009),
+ q(0),
+ ],
+ q(327) => [
+ q(0093),
+ q(0),
+ ],
+ q(330) => [
+ q(0133),
+ q(0),
+ ],
+ q(331) => [
+ q(0097),
+ q(0),
+ ],
+ q(335) => [
+ q(0067),
+ q(0),
+ ],
+ q(336) => [
+ q(0068),
+ q(0),
+ ],
+ q(337) => [
+ q(0084),
+ q(0),
+ ],
+ q(340) => [
+ q(0127),
+ q(0),
+ ],
+ q(343) => [
+ q(0036),
+ q(0),
+ ],
+ q(344) => [
+ q(0112),
+ q(0),
+ ],
+ q(345) => [
+ q(0058),
+ q(0),
+ ],
+ q(346) => [
+ q(0125),
+ q(0),
+ ],
+ q(347) => [
+ q(0081),
+ q(0),
+ ],
+ q(348) => [
+ q(0115),
+ q(0),
+ ],
+ q(349) => [
+ q(0016),
+ q(0),
+ ],
+ q(350) => [
+ q(0085),
+ q(0),
+ ],
+ q(351) => [
+ q(0062),
+ q(0),
+ ],
+ q(352) => [
+ q(0132),
+ q(0),
+ ],
+ q(353) => [
+ q(0123),
+ q(0),
+ ],
+ q(354) => [
+ q(0124),
+ q(0),
+ ],
+ q(355) => [
+ q(0057),
+ q(0),
+ ],
+ q(356) => [
+ q(0063),
+ q(0),
+ ],
+ q(357) => [
+ q(0054),
+ q(0),
+ ],
+ q(358) => [
+ q(0019),
+ q(0),
+ ],
+ q(359) => [
+ q(0126),
+ q(0),
+ ],
+ q(360) => [
+ q(0005),
+ q(0),
+ ],
+ q(361) => [
+ q(0052),
+ q(0),
+ ],
+ q(362) => [
+ q(0116),
+ q(0),
+ ],
+ q(363) => [
+ q(0106),
+ q(0),
+ ],
+ q(365) => [
+ q(0008),
+ q(0),
+ ],
+ q(367) => [
+ q(0014),
+ q(0),
+ ],
+ q(370) => [
+ q(0130),
+ q(0),
+ ],
+ q(371) => [
+ q(0042),
+ q(0),
+ ],
+ q(372) => [
+ q(0015),
+ q(0),
+ ],
+ q(373) => [
+ q(0122),
+ q(0),
+ ],
+ q(399) => [
+ q(0071),
+ q(0),
+ ],
+ q(400) => [
+ q(0069),
+ q(0),
+ ],
+ q(401) => [
+ q(0070),
+ q(0),
+ ],
+ q(403) => [
+ q(0023),
+ q(0),
+ ],
+ q(410) => [
+ q(0046),
+ q(0),
+ ],
+ q(411) => [
+ q(0055),
+ q(0),
+ ],
+ q(412) => [
+ q(0048),
+ q(0),
+ ],
+ q(413) => [
+ q(0053),
+ q(0),
+ ],
+ q(420) => [
+ q(0088),
+ q(0),
+ ],
+ q(430) => [
+ q(0031),
+ q(0),
+ ],
+ q(435) => [
+ q(0006),
+ q(0),
+ ],
+ q(436) => [
+ q(0060),
+ q(0),
+ ],
+ q(437) => [
+ q(0072),
+ q(0),
+ ],
+ q(438) => [
+ q(0078),
+ q(0),
+ ],
+ q(440) => [
+ q(0017),
+ q(0),
+ ],
+ q(445) => [
+ q(0020),
+ q(0),
+ ],
+ q(450) => [
+ q(0047),
+ q(0),
+ ],
+ q(460) => [
+ q(0140),
+ q(0),
+ ],
+ q(470) => [
+ q(0135),
+ q(0),
+ ],
+ q(500) => [
+ q(0041),
+ q(0),
+ ],
+ q(501) => [
+ q(0043),
+ q(0),
+ ],
+ q(502) => [
+ q(0044),
+ q(0),
+ ],
+ q(550) => [
+ q(0010),
+ q(0),
+ ],
+ q(570) => [
+ q(0013),
+ q(0),
+ ],
+ q(610) => [
+ q(0050),
+ q(0),
+ ],
+ q(620) => [
+ q(0107),
+ q(0),
+ ],
+ q(900) => [
+ q(0104),
+ q(0),
+ ],
+ q(949) => [
+ q(0105),
+ q(0),
+ ],
+ q(994) => [
+ q(0141),
+ q(0),
+ ],
+ q(995) => [
+ q(0142),
+ q(0),
+ ],
+ q(996) => [
+ q(0143),
+ q(0),
+ ],
+ },
+};
+
+$Locale::Codes::Data{'script'}{'id2code'} = {
+ q(alpha) => {
+ q(0001) => q(Arab),
+ q(0002) => q(Armi),
+ q(0003) => q(Armn),
+ q(0004) => q(Avst),
+ q(0005) => q(Bali),
+ q(0006) => q(Bamu),
+ q(0007) => q(Bass),
+ q(0008) => q(Batk),
+ q(0009) => q(Beng),
+ q(0010) => q(Blis),
+ q(0011) => q(Bopo),
+ q(0012) => q(Brah),
+ q(0013) => q(Brai),
+ q(0014) => q(Bugi),
+ q(0015) => q(Buhd),
+ q(0016) => q(Cakm),
+ q(0017) => q(Cans),
+ q(0018) => q(Cari),
+ q(0019) => q(Cham),
+ q(0020) => q(Cher),
+ q(0021) => q(Cirt),
+ q(0022) => q(Copt),
+ q(0023) => q(Cprt),
+ q(0024) => q(Cyrl),
+ q(0025) => q(Cyrs),
+ q(0026) => q(Deva),
+ q(0027) => q(Dsrt),
+ q(0028) => q(Egyd),
+ q(0029) => q(Egyh),
+ q(0030) => q(Egyp),
+ q(0031) => q(Ethi),
+ q(0032) => q(Geor),
+ q(0033) => q(Geok),
+ q(0034) => q(Glag),
+ q(0035) => q(Goth),
+ q(0036) => q(Gran),
+ q(0037) => q(Grek),
+ q(0038) => q(Gujr),
+ q(0039) => q(Guru),
+ q(0040) => q(Hang),
+ q(0041) => q(Hani),
+ q(0042) => q(Hano),
+ q(0043) => q(Hans),
+ q(0044) => q(Hant),
+ q(0045) => q(Hebr),
+ q(0046) => q(Hira),
+ q(0047) => q(Hmng),
+ q(0048) => q(Hrkt),
+ q(0049) => q(Hung),
+ q(0050) => q(Inds),
+ q(0051) => q(Ital),
+ q(0052) => q(Java),
+ q(0053) => q(Jpan),
+ q(0054) => q(Kali),
+ q(0055) => q(Kana),
+ q(0056) => q(Khar),
+ q(0057) => q(Khmr),
+ q(0058) => q(Knda),
+ q(0059) => q(Kore),
+ q(0060) => q(Kpel),
+ q(0061) => q(Kthi),
+ q(0062) => q(Lana),
+ q(0063) => q(Laoo),
+ q(0064) => q(Latf),
+ q(0065) => q(Latg),
+ q(0066) => q(Latn),
+ q(0067) => q(Lepc),
+ q(0068) => q(Limb),
+ q(0069) => q(Lina),
+ q(0070) => q(Linb),
+ q(0071) => q(Lisu),
+ q(0072) => q(Loma),
+ q(0073) => q(Lyci),
+ q(0074) => q(Lydi),
+ q(0075) => q(Mand),
+ q(0076) => q(Mani),
+ q(0077) => q(Maya),
+ q(0078) => q(Mend),
+ q(0079) => q(Merc),
+ q(0080) => q(Mero),
+ q(0081) => q(Mlym),
+ q(0082) => q(Moon),
+ q(0083) => q(Mong),
+ q(0084) => q(Mtei),
+ q(0085) => q(Mymr),
+ q(0086) => q(Narb),
+ q(0087) => q(Nbat),
+ q(0088) => q(Nkgb),
+ q(0089) => q(Nkoo),
+ q(0090) => q(Ogam),
+ q(0091) => q(Olck),
+ q(0092) => q(Orkh),
+ q(0093) => q(Orya),
+ q(0094) => q(Osma),
+ q(0095) => q(Palm),
+ q(0096) => q(Perm),
+ q(0097) => q(Phag),
+ q(0098) => q(Phli),
+ q(0099) => q(Phlp),
+ q(0100) => q(Phlv),
+ q(0101) => q(Phnx),
+ q(0102) => q(Plrd),
+ q(0103) => q(Prti),
+ q(0104) => q(Qaaa),
+ q(0105) => q(Qabx),
+ q(0106) => q(Rjng),
+ q(0107) => q(Roro),
+ q(0108) => q(Runr),
+ q(0109) => q(Samr),
+ q(0110) => q(Sara),
+ q(0111) => q(Sarb),
+ q(0112) => q(Saur),
+ q(0113) => q(Sgnw),
+ q(0114) => q(Shaw),
+ q(0115) => q(Sinh),
+ q(0116) => q(Sund),
+ q(0117) => q(Sylo),
+ q(0118) => q(Syrc),
+ q(0119) => q(Syre),
+ q(0120) => q(Syrj),
+ q(0121) => q(Syrn),
+ q(0122) => q(Tagb),
+ q(0123) => q(Tale),
+ q(0124) => q(Talu),
+ q(0125) => q(Taml),
+ q(0126) => q(Tavt),
+ q(0127) => q(Telu),
+ q(0128) => q(Teng),
+ q(0129) => q(Tfng),
+ q(0130) => q(Tglg),
+ q(0131) => q(Thaa),
+ q(0132) => q(Thai),
+ q(0133) => q(Tibt),
+ q(0134) => q(Ugar),
+ q(0135) => q(Vaii),
+ q(0136) => q(Visp),
+ q(0137) => q(Wara),
+ q(0138) => q(Xpeo),
+ q(0139) => q(Xsux),
+ q(0140) => q(Yiii),
+ q(0141) => q(Zinh),
+ q(0142) => q(Zmth),
+ q(0143) => q(Zsym),
+ },
+ q(num) => {
+ q(0001) => q(160),
+ q(0002) => q(124),
+ q(0003) => q(230),
+ q(0004) => q(134),
+ q(0005) => q(360),
+ q(0006) => q(435),
+ q(0007) => q(259),
+ q(0008) => q(365),
+ q(0009) => q(325),
+ q(0010) => q(550),
+ q(0011) => q(285),
+ q(0012) => q(300),
+ q(0013) => q(570),
+ q(0014) => q(367),
+ q(0015) => q(372),
+ q(0016) => q(349),
+ q(0017) => q(440),
+ q(0018) => q(201),
+ q(0019) => q(358),
+ q(0020) => q(445),
+ q(0021) => q(291),
+ q(0022) => q(204),
+ q(0023) => q(403),
+ q(0024) => q(220),
+ q(0025) => q(221),
+ q(0026) => q(315),
+ q(0027) => q(250),
+ q(0028) => q(070),
+ q(0029) => q(060),
+ q(0030) => q(050),
+ q(0031) => q(430),
+ q(0032) => q(240),
+ q(0033) => q(241),
+ q(0034) => q(225),
+ q(0035) => q(206),
+ q(0036) => q(343),
+ q(0037) => q(200),
+ q(0038) => q(320),
+ q(0039) => q(310),
+ q(0040) => q(286),
+ q(0041) => q(500),
+ q(0042) => q(371),
+ q(0043) => q(501),
+ q(0044) => q(502),
+ q(0045) => q(125),
+ q(0046) => q(410),
+ q(0047) => q(450),
+ q(0048) => q(412),
+ q(0049) => q(176),
+ q(0050) => q(610),
+ q(0051) => q(210),
+ q(0052) => q(361),
+ q(0053) => q(413),
+ q(0054) => q(357),
+ q(0055) => q(411),
+ q(0056) => q(305),
+ q(0057) => q(355),
+ q(0058) => q(345),
+ q(0059) => q(287),
+ q(0060) => q(436),
+ q(0061) => q(317),
+ q(0062) => q(351),
+ q(0063) => q(356),
+ q(0064) => q(217),
+ q(0065) => q(216),
+ q(0066) => q(215),
+ q(0067) => q(335),
+ q(0068) => q(336),
+ q(0069) => q(400),
+ q(0070) => q(401),
+ q(0071) => q(399),
+ q(0072) => q(437),
+ q(0073) => q(202),
+ q(0074) => q(116),
+ q(0075) => q(140),
+ q(0076) => q(139),
+ q(0077) => q(090),
+ q(0078) => q(438),
+ q(0079) => q(101),
+ q(0080) => q(100),
+ q(0081) => q(347),
+ q(0082) => q(218),
+ q(0083) => q(145),
+ q(0084) => q(337),
+ q(0085) => q(350),
+ q(0086) => q(106),
+ q(0087) => q(159),
+ q(0088) => q(420),
+ q(0089) => q(165),
+ q(0090) => q(212),
+ q(0091) => q(261),
+ q(0092) => q(175),
+ q(0093) => q(327),
+ q(0094) => q(260),
+ q(0095) => q(126),
+ q(0096) => q(227),
+ q(0097) => q(331),
+ q(0098) => q(131),
+ q(0099) => q(132),
+ q(0100) => q(133),
+ q(0101) => q(115),
+ q(0102) => q(282),
+ q(0103) => q(130),
+ q(0104) => q(900),
+ q(0105) => q(949),
+ q(0106) => q(363),
+ q(0107) => q(620),
+ q(0108) => q(211),
+ q(0109) => q(123),
+ q(0110) => q(292),
+ q(0111) => q(105),
+ q(0112) => q(344),
+ q(0113) => q(095),
+ q(0114) => q(281),
+ q(0115) => q(348),
+ q(0116) => q(362),
+ q(0117) => q(316),
+ q(0118) => q(135),
+ q(0119) => q(138),
+ q(0120) => q(137),
+ q(0121) => q(136),
+ q(0122) => q(373),
+ q(0123) => q(353),
+ q(0124) => q(354),
+ q(0125) => q(346),
+ q(0126) => q(359),
+ q(0127) => q(340),
+ q(0128) => q(290),
+ q(0129) => q(120),
+ q(0130) => q(370),
+ q(0131) => q(170),
+ q(0132) => q(352),
+ q(0133) => q(330),
+ q(0134) => q(040),
+ q(0135) => q(470),
+ q(0136) => q(280),
+ q(0137) => q(262),
+ q(0138) => q(030),
+ q(0139) => q(020),
+ q(0140) => q(460),
+ q(0141) => q(994),
+ q(0142) => q(995),
+ q(0143) => q(996),
+ },
+};
+
+1;
-#
-# Locale::Constants - defined constants for identifying codesets
-#
-# $Id: Constants.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
package Locale::Constants;
+# Copyright (C) 2001 Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
use strict;
+use warnings;
require Exporter;
#-----------------------------------------------------------------------
# Public Global Variables
#-----------------------------------------------------------------------
+
use vars qw($VERSION @ISA @EXPORT);
-$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
-@ISA = qw(Exporter);
-@EXPORT = qw(LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC
- LOCALE_CODE_DEFAULT);
+
+$VERSION='3.12';
+@ISA = qw(Exporter);
+@EXPORT = qw(LOCALE_CODE_ALPHA_2
+ LOCALE_CODE_ALPHA_3
+ LOCALE_CODE_NUMERIC
+ LOCALE_CODE_FIPS
+ LOCALE_CODE_DOM
+ LOCALE_CODE_DEFAULT
+
+ LOCALE_LANG_ALPHA_2
+ LOCALE_LANG_ALPHA_3
+ LOCALE_LANG_TERM
+ LOCALE_LANG_DEFAULT
+
+ LOCALE_CURR_ALPHA
+ LOCALE_CURR_NUMERIC
+ LOCALE_CURR_DEFAULT
+
+ LOCALE_SCRIPT_ALPHA
+ LOCALE_SCRIPT_NUMERIC
+ LOCALE_SCRIPT_DEFAULT
+ );
#-----------------------------------------------------------------------
# Constants
#-----------------------------------------------------------------------
-use constant LOCALE_CODE_ALPHA_2 => 1;
-use constant LOCALE_CODE_ALPHA_3 => 2;
-use constant LOCALE_CODE_NUMERIC => 3;
-use constant LOCALE_CODE_DEFAULT => LOCALE_CODE_ALPHA_2;
+use constant LOCALE_CODE_ALPHA_2 => 1;
+use constant LOCALE_CODE_ALPHA_3 => 2;
+use constant LOCALE_CODE_NUMERIC => 3;
+use constant LOCALE_CODE_FIPS => 4;
+use constant LOCALE_CODE_DOM => 5;
-1;
+use constant LOCALE_CODE_DEFAULT => LOCALE_CODE_ALPHA_2;
+use constant LOCALE_LANG_ALPHA_2 => 1;
+use constant LOCALE_LANG_ALPHA_3 => 2;
+use constant LOCALE_LANG_TERM => 3;
+
+use constant LOCALE_LANG_DEFAULT => LOCALE_LANG_ALPHA_2;
+
+use constant LOCALE_CURR_ALPHA => 1;
+use constant LOCALE_CURR_NUMERIC => 2;
+
+use constant LOCALE_CURR_DEFAULT => LOCALE_CURR_ALPHA;
+
+use constant LOCALE_SCRIPT_ALPHA => 1;
+use constant LOCALE_SCRIPT_NUMERIC => 2;
+
+use constant LOCALE_SCRIPT_DEFAULT => LOCALE_SCRIPT_ALPHA;
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+=pod
=head1 NAME
Locale::Constants - constants for Locale codes
-=head1 SYNOPSIS
-
- use Locale::Constants;
-
- $codeset = LOCALE_CODE_ALPHA_2;
-
=head1 DESCRIPTION
-B<Locale::Constants> defines symbols which are used in
-the four modules from the Locale-Codes distribution:
-
- Locale::Language
- Locale::Country
- Locale::Currency
- Locale::Script
-
-B<Note:> at the moment only Locale::Country and Locale::Script
-support more than one code set.
+B<Locale::Constants> defines symbols which are used in the other
+modules from the Locale-Codes distribution.
-The symbols defined are used to specify which codes you
-want to be used:
+You shouldn't have to C<use> this module directly yourself - it is
+used by the other Locale modules, which in turn export the symbols.
- LOCALE_CODE_ALPHA_2
- LOCALE_CODE_ALPHA_3
- LOCALE_CODE_NUMERIC
-
-You shouldn't have to C<use> this module directly yourself -
-it is used by the three Locale modules, which in turn export
-the symbols.
+The constants are documented in each of the Locale modules.
=head1 KNOWN BUGS AND LIMITATIONS
-None at the moment.
+None known.
=head1 SEE ALSO
-=over 4
-
-=item Locale::Language
-
-Codes for identification of languages.
-
-=item Locale::Country
-
-Codes for identification of countries.
-
-=item Locale::Script
-
-Codes for identification of scripts.
-
-=item Locale::Currency
-
-Codes for identification of currencies and funds.
-
-=back
+Locale::Codes
=head1 AUTHOR
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
-Copyright (C) 2001, Canon Research Centre Europe (CRE).
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
-#
-# Locale::Country - ISO codes for country identification (ISO 3166)
-#
-# $Id: Country.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
package Locale::Country;
+# Copyright (C) 2001 Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
use strict;
+use warnings;
require 5.002;
require Exporter;
use Carp;
+use Locale::Codes;
use Locale::Constants;
+use Locale::Codes::Country;
+#=======================================================================
+# Public Global Variables
+#=======================================================================
-#-----------------------------------------------------------------------
-# Public Global Variables
-#-----------------------------------------------------------------------
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
+
+$VERSION='3.12';
@ISA = qw(Exporter);
-@EXPORT = qw(code2country country2code
- all_country_codes all_country_names
- country_code2code
- LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);
+@EXPORT = qw(code2country
+ country2code
+ all_country_codes
+ all_country_names
+ country_code2code
+ LOCALE_CODE_ALPHA_2
+ LOCALE_CODE_ALPHA_3
+ LOCALE_CODE_NUMERIC
+ LOCALE_CODE_FIPS
+ LOCALE_CODE_DOM
+ );
+
+sub _code {
+ my($code,$codeset) = @_;
+ $code = "" if (! $code);
+
+ $codeset = LOCALE_CODE_DEFAULT if (! defined($codeset) || $codeset eq "");
+
+ if ($codeset =~ /^\d+$/) {
+ if ($codeset == LOCALE_CODE_ALPHA_2) {
+ $codeset = "alpha2";
+ } elsif ($codeset == LOCALE_CODE_ALPHA_3) {
+ $codeset = "alpha3";
+ } elsif ($codeset == LOCALE_CODE_NUMERIC) {
+ $codeset = "num";
+ } elsif ($codeset == LOCALE_CODE_FIPS) {
+ $codeset = "fips";
+ } elsif ($codeset == LOCALE_CODE_DOM) {
+ $codeset = "dom";
+ } else {
+ return (1);
+ }
+ }
+
+ if ($codeset eq "alpha2" ||
+ $codeset eq "alpha3") {
+ $code = lc($code);
+ } elsif ($codeset eq "num") {
+ if (defined($code) && $code ne "") {
+ return (1) unless ($code =~ /^\d+$/);
+ $code = sprintf("%.3d", $code);
+ }
+ } elsif ($codeset eq "fips" ||
+ $codeset eq "dom") {
+ $code = uc($code);
+ } else {
+ return (1);
+ }
+
+ return (0,$code,$codeset);
+}
-#-----------------------------------------------------------------------
-# Private Global Variables
-#-----------------------------------------------------------------------
-my $CODES = [];
-my $COUNTRIES = [];
+#=======================================================================
+#
+# code2country ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub code2country {
+ my($err,$code,$codeset) = _code(@_);
+ return undef if ($err ||
+ ! defined $code);
+ return Locale::Codes::_code2name("country",$code,$codeset);
+}
#=======================================================================
#
-# code2country ( CODE [, CODESET ] )
+# country2code ( COUNTRY [,CODESET] )
#
#=======================================================================
-sub code2country
-{
- my $code = shift;
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
- return undef unless defined $code;
-
- #-------------------------------------------------------------------
- # Make sure the code is in the right form before we use it
- # to look up the corresponding country.
- # We have to sprintf because the codes are given as 3-digits,
- # with leading 0's. Eg 052 for Barbados.
- #-------------------------------------------------------------------
- if ($codeset == LOCALE_CODE_NUMERIC)
- {
- return undef if ($code =~ /\D/);
- $code = sprintf("%.3d", $code);
- }
- else
- {
- $code = lc($code);
- }
-
- if (exists $CODES->[$codeset]->{$code})
- {
- return $CODES->[$codeset]->{$code};
- }
- else
- {
- #---------------------------------------------------------------
- # no such country code!
- #---------------------------------------------------------------
- return undef;
- }
-}
+sub country2code {
+ my($country,$codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err ||
+ ! defined $country);
+
+ return Locale::Codes::_name2code("country",$country,$codeset);
+}
#=======================================================================
#
-# country2code ( NAME [, CODESET ] )
+# country_code2code ( CODE,CODESET_IN,CODESET_OUT )
#
#=======================================================================
-sub country2code
-{
- my $country = shift;
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
- return undef unless defined $country;
- $country = lc($country);
- if (exists $COUNTRIES->[$codeset]->{$country})
- {
- return $COUNTRIES->[$codeset]->{$country};
- }
- else
- {
- #---------------------------------------------------------------
- # no such country!
- #---------------------------------------------------------------
- return undef;
- }
-}
+sub country_code2code {
+ (@_ == 3) or croak "country_code2code() takes 3 arguments!";
+ my($code,$inset,$outset) = @_;
+ my($err,$tmp);
+ ($err,$code,$inset) = _code($code,$inset);
+ return undef if ($err);
+ ($err,$tmp,$outset) = _code("",$outset);
+ return undef if ($err);
+
+ return Locale::Codes::_code2code("country",$code,$inset,$outset);
+}
#=======================================================================
#
-# country_code2code ( NAME [, CODESET ] )
+# all_country_codes ( [CODESET] )
#
#=======================================================================
-sub country_code2code
-{
- (@_ == 3) or croak "country_code2code() takes 3 arguments!";
-
- my $code = shift;
- my $inset = shift;
- my $outset = shift;
- my $outcode;
- my $country;
-
-
- return undef if $inset == $outset;
- $country = code2country($code, $inset);
- return undef if not defined $country;
- $outcode = country2code($country, $outset);
- return $outcode;
+
+sub all_country_codes {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_codes("country",$codeset);
}
#=======================================================================
#
-# all_country_codes ( [ CODESET ] )
+# all_country_names ( [CODESET] )
#
#=======================================================================
-sub all_country_codes
-{
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
- return keys %{ $CODES->[$codeset] };
-}
+sub all_country_names {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+ return Locale::Codes::_all_names("country",$codeset);
+}
#=======================================================================
#
-# all_country_names ( [ CODESET ] )
+# rename_country ( CODE,NAME [,CODESET] )
#
#=======================================================================
-sub all_country_names
-{
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
- return values %{ $CODES->[$codeset] };
-}
+sub rename_country {
+ my($code,$new_name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ return Locale::Codes::_rename("country",$code,$new_name,$codeset,$nowarn);
+}
#=======================================================================
#
-# alias_code ( ALIAS => CODE [ , CODESET ] )
+# add_country ( CODE,NAME [,CODESET] )
#
-# Add an alias for an existing code. If the CODESET isn't specified,
-# then we use the default (currently the alpha-2 codeset).
+#=======================================================================
+
+sub add_country {
+ my($code,$name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_add_code("country",$code,$name,$codeset,$nowarn);
+}
+
+#=======================================================================
#
-# Locale::Country::alias_code('uk' => 'gb');
+# delete_country ( CODE [,CODESET] )
#
#=======================================================================
-sub alias_code
-{
- my $alias = shift;
- my $real = shift;
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
- my $country;
+sub delete_country {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ return Locale::Codes::_delete_code("country",$code,$codeset,$nowarn);
+}
- if (not exists $CODES->[$codeset]->{$real})
- {
- carp "attempt to alias \"$alias\" to unknown country code \"$real\"\n";
- return undef;
- }
- $country = $CODES->[$codeset]->{$real};
- $CODES->[$codeset]->{$alias} = $country;
- $COUNTRIES->[$codeset]->{"\L$country"} = $alias;
+#=======================================================================
+#
+# add_country_alias ( NAME,NEW_NAME )
+#
+#=======================================================================
- return $alias;
+sub add_country_alias {
+ my($name,$new_name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_add_alias("country",$name,$new_name,$nowarn);
}
-# old name of function for backwards compatibility
-*_alias_code = *alias_code;
+#=======================================================================
+#
+# delete_country_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_country_alias {
+ my($name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+ return Locale::Codes::_delete_alias("country",$name,$nowarn);
+}
#=======================================================================
#
-# rename_country
-#
-# change the official name for a country, eg:
-# gb => 'Great Britain'
-# rather than the standard 'United Kingdom'. The original is retained
-# as an alias, but the new name will be returned if you lookup the
-# name from code.
+# rename_country_code ( CODE,NEW_CODE [,CODESET] )
#
#=======================================================================
-sub rename_country
-{
- my $code = shift;
- my $new_name = shift;
- my $codeset = @_ > 0 ? shift : _code2codeset($code);
- my $country;
- my $c;
-
-
- if (not defined $codeset)
- {
- carp "rename_country(): unknown country code \"$code\"\n";
- return 0;
- }
-
- $country = $CODES->[$codeset]->{$code};
-
- foreach my $cset (LOCALE_CODE_ALPHA_2,
- LOCALE_CODE_ALPHA_3,
- LOCALE_CODE_NUMERIC)
- {
- if ($cset == $codeset)
- {
- $c = $code;
- }
- else
- {
- $c = country_code2code($code, $codeset, $cset);
- }
-
- $CODES->[$cset]->{$c} = $new_name;
- $COUNTRIES->[$cset]->{"\L$new_name"} = $c;
- }
-
- return 1;
-}
+sub rename_country_code {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
+
+ return Locale::Codes::_rename_code("country",$code,$new_code,$codeset,$nowarn);
+}
#=======================================================================
#
-# _code2codeset
-#
-# given a country code in an unknown codeset, return the codeset
-# it is from, or undef.
+# add_country_code_alias ( CODE,NEW_CODE [,CODESET] )
#
#=======================================================================
-sub _code2codeset
-{
- my $code = shift;
-
- foreach my $codeset (LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3,
- LOCALE_CODE_NUMERIC)
- {
- return $codeset if (exists $CODES->[$codeset]->{$code})
- }
+sub add_country_code_alias {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
- return undef;
+ return Locale::Codes::_add_code_alias("country",$code,$new_code,$codeset,$nowarn);
}
+#=======================================================================
+#
+# delete_country_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_country_code_alias {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_delete_code_alias("country",$code,$codeset,$nowarn);
+}
#=======================================================================
#
-# initialisation code - stuff the DATA into the ALPHA2 hash
+# Old function for backward compatibility
#
#=======================================================================
-{
- my ($alpha2, $alpha3, $numeric);
- my ($country, @countries);
- local $_;
-
-
- while (<DATA>)
- {
- next unless /\S/;
- chop;
- ($alpha2, $alpha3, $numeric, @countries) = split(/:/, $_);
-
- $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $countries[0];
- foreach $country (@countries)
- {
- $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$country"} = $alpha2;
- }
-
- if ($alpha3)
- {
- $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $countries[0];
- foreach $country (@countries)
- {
- $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$country"} = $alpha3;
- }
- }
-
- if ($numeric)
- {
- $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $countries[0];
- foreach $country (@countries)
- {
- $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$country"} = $numeric;
- }
- }
-
- }
-
- close(DATA);
+
+sub alias_code {
+ my($alias,$code,@args) = @_;
+ my $success = rename_country_code($code,$alias,@args);
+ return 0 if (! $success);
+ return $alias;
}
1;
-
-__DATA__
-ad:and:020:Andorra
-ae:are:784:United Arab Emirates
-af:afg:004:Afghanistan
-ag:atg:028:Antigua and Barbuda
-ai:aia:660:Anguilla
-al:alb:008:Albania
-am:arm:051:Armenia
-an:ant:530:Netherlands Antilles
-ao:ago:024:Angola
-aq:ata:010:Antarctica
-ar:arg:032:Argentina
-as:asm:016:American Samoa
-at:aut:040:Austria
-au:aus:036:Australia
-aw:abw:533:Aruba
-ax:ala:248:Aland Islands
-az:aze:031:Azerbaijan
-ba:bih:070:Bosnia and Herzegovina
-bb:brb:052:Barbados
-bd:bgd:050:Bangladesh
-be:bel:056:Belgium
-bf:bfa:854:Burkina Faso
-bg:bgr:100:Bulgaria
-bh:bhr:048:Bahrain
-bi:bdi:108:Burundi
-bj:ben:204:Benin
-bm:bmu:060:Bermuda
-bn:brn:096:Brunei Darussalam
-bo:bol:068:Bolivia
-br:bra:076:Brazil
-bs:bhs:044:Bahamas
-bt:btn:064:Bhutan
-bv:bvt:074:Bouvet Island
-bw:bwa:072:Botswana
-by:blr:112:Belarus
-bz:blz:084:Belize
-ca:can:124:Canada
-cc:cck:166:Cocos (Keeling) Islands
-cd:cod:180:Congo, The Democratic Republic of the:Zaire:Congo, Democratic Republic of the
-cf:caf:140:Central African Republic
-cg:cog:178:Congo:Congo, Republic of the
-ch:che:756:Switzerland
-ci:civ:384:Cote 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:scg:891:Serbia and Montenegro:Yugoslavia
-cu:cub:192:Cuba
-cv:cpv:132:Cape Verde
-cx:cxr:162:Christmas Island
-cy:cyp:196:Cyprus
-cz:cze:203:Czech Republic
-de:deu:276:Germany
-dj:dji:262:Djibouti
-dk:dnk:208:Denmark
-dm:dma:212:Dominica
-do:dom:214:Dominican Republic
-dz:dza:012:Algeria
-ec:ecu:218:Ecuador
-ee:est:233:Estonia
-eg:egy:818:Egypt
-eh:esh:732:Western Sahara
-er:eri:232:Eritrea
-es:esp:724:Spain
-et:eth:231:Ethiopia
-fi:fin:246:Finland
-fj:fji:242:Fiji
-fk:flk:238:Falkland Islands (Malvinas):Falkland Islands (Islas Malvinas)
-fm:fsm:583:Micronesia, Federated States of
-fo:fro:234:Faroe Islands
-fr:fra:250:France
-fx:fxx:249:France, Metropolitan
-ga:gab:266:Gabon
-gb:gbr:826:United Kingdom:Great Britain
-gd:grd:308:Grenada
-ge:geo:268:Georgia
-gf:guf:254:French Guiana
-gh:gha:288:Ghana
-gi:gib:292:Gibraltar
-gl:grl:304:Greenland
-gm:gmb:270:Gambia
-gn:gin:324:Guinea
-gp:glp:312:Guadeloupe
-gq:gnq:226:Equatorial Guinea
-gr:grc:300:Greece
-gs:sgs:239:South Georgia and the South Sandwich Islands
-gt:gtm:320:Guatemala
-gu:gum:316:Guam
-gw:gnb:624:Guinea-Bissau
-gy:guy:328:Guyana
-hk:hkg:344:Hong Kong
-hm:hmd:334:Heard Island and McDonald Islands
-hn:hnd:340:Honduras
-hr:hrv:191:Croatia
-ht:hti:332:Haiti
-hu:hun:348:Hungary
-id:idn:360:Indonesia
-ie:irl:372:Ireland
-il:isr:376:Israel
-in:ind:356:India
-io:iot:086:British Indian Ocean Territory
-iq:irq:368:Iraq
-ir:irn:364:Iran, Islamic Republic of:Iran
-is:isl:352:Iceland
-it:ita:380:Italy
-jm:jam:388:Jamaica
-jo:jor:400:Jordan
-jp:jpn:392:Japan
-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:Korea, Democratic People's Republic of:Korea, North:North Korea
-kr:kor:410:Korea, Republic of:Korea, South:South Korea
-kw:kwt:414:Kuwait
-ky:cym:136:Cayman Islands
-kz:kaz:398:Kazakhstan:Kazakstan
-la:lao:418:Lao People's Democratic Republic
-lb:lbn:422:Lebanon
-lc:lca:662:Saint Lucia
-li:lie:438:Liechtenstein
-lk:lka:144:Sri Lanka
-lr:lbr:430:Liberia
-ls:lso:426:Lesotho
-lt:ltu:440:Lithuania
-lu:lux:442:Luxembourg
-lv:lva:428:Latvia
-ly:lby:434:Libyan Arab Jamahiriya:Libya
-ma:mar:504:Morocco
-mc:mco:492:Monaco
-md:mda:498:Moldova, Republic of:Moldova
-mg:mdg:450:Madagascar
-mh:mhl:584:Marshall Islands
-mk:mkd:807:Macedonia, the Former Yugoslav Republic of:Macedonia, Former Yugoslav Republic of:Macedonia
-ml:mli:466:Mali
-mm:mmr:104:Myanmar:Burma
-mn:mng:496:Mongolia
-mo:mac:446:Macao:Macau
-mp:mnp:580:Northern Mariana Islands
-mq:mtq:474:Martinique
-mr:mrt:478:Mauritania
-ms:msr:500:Montserrat
-mt:mlt:470:Malta
-mu:mus:480:Mauritius
-mv:mdv:462:Maldives
-mw:mwi:454:Malawi
-mx:mex:484:Mexico
-my:mys:458:Malaysia
-mz:moz:508:Mozambique
-na:nam:516:Namibia
-nc:ncl:540:New Caledonia
-ne:ner:562:Niger
-nf:nfk:574:Norfolk Island
-ng:nga:566:Nigeria
-ni:nic:558:Nicaragua
-nl:nld:528:Netherlands
-no:nor:578:Norway
-np:npl:524:Nepal
-nr:nru:520:Nauru
-nu:niu:570:Niue
-nz:nzl:554:New Zealand
-om:omn:512:Oman
-pa:pan:591:Panama
-pe:per:604:Peru
-pf:pyf:258:French Polynesia
-pg:png:598:Papua New Guinea
-ph:phl:608:Philippines
-pk:pak:586:Pakistan
-pl:pol:616:Poland
-pm:spm:666:Saint Pierre and Miquelon
-pn:pcn:612:Pitcairn:Pitcairn Island
-pr:pri:630:Puerto Rico
-ps:pse:275:Palestinian Territory, Occupied
-pt:prt:620:Portugal
-pw:plw:585:Palau
-py:pry:600:Paraguay
-qa:qat:634:Qatar
-re:reu:638:Reunion
-ro:rou:642:Romania
-ru:rus:643:Russian Federation:Russia
-rw:rwa:646:Rwanda
-sa:sau:682:Saudi Arabia
-sb:slb:090:Solomon Islands
-sc:syc:690:Seychelles
-sd:sdn:736:Sudan
-se:swe:752:Sweden
-sg:sgp:702:Singapore
-sh:shn:654:Saint Helena
-si:svn:705:Slovenia
-sj:sjm:744:Svalbard and Jan Mayen:Jan Mayen:Svalbard
-sk:svk:703:Slovakia
-sl:sle:694:Sierra Leone
-sm:smr:674:San Marino
-sn:sen:686:Senegal
-so:som:706:Somalia
-sr:sur:740:Suriname
-st:stp:678:Sao Tome and Principe
-sv:slv:222:El Salvador
-sy:syr:760:Syrian Arab Republic:Syria
-sz:swz:748:Swaziland
-tc:tca:796:Turks and Caicos Islands
-td:tcd:148:Chad
-tf:atf:260:French Southern Territories:French Southern and Antarctic Lands
-tg:tgo:768:Togo
-th:tha:764:Thailand
-tj:tjk:762:Tajikistan
-tk:tkl:772:Tokelau
-tm:tkm:795:Turkmenistan
-tn:tun:788:Tunisia
-to:ton:776:Tonga
-tl:tls:626:Timor-Leste:East Timor
-tr:tur:792:Turkey
-tt:tto:780:Trinidad and Tobago
-tv:tuv:798:Tuvalu
-tw:twn:158:Taiwan, Province of China:Taiwan
-tz:tza:834:Tanzania, United Republic of:Tanzania
-ua:ukr:804:Ukraine
-ug:uga:800:Uganda
-um:umi:581:United States Minor Outlying Islands
-us:usa:840:United States:USA:United States of America
-uy:ury:858:Uruguay
-uz:uzb:860:Uzbekistan
-va:vat:336:Holy See (Vatican City State):Holy See (Vatican City)
-vc:vct:670:Saint Vincent and the Grenadines
-ve:ven:862:Venezuela
-vg:vgb:092:Virgin Islands, British:British Virgin Islands
-vi:vir:850:Virgin Islands, U.S.
-vn:vnm:704:Vietnam
-vu:vut:548:Vanuatu
-wf:wlf:876:Wallis and Futuna
-ws:wsm:882:Samoa
-ye:yem:887:Yemen
-yt:myt:175:Mayotte
-za:zaf:710:South Africa
-zm:zmb:894:Zambia
-zw:zwe:716:Zimbabwe
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+=pod
=head1 NAME
-Locale::Country - ISO codes for country identification (ISO 3166)
+Locale::Country - standard codes for country identification
=head1 SYNOPSIS
- use Locale::Country;
-
- $country = code2country('jp'); # $country gets 'Japan'
- $code = country2code('Norway'); # $code gets 'no'
-
- @codes = all_country_codes();
- @names = all_country_names();
-
- # semi-private routines
- Locale::Country::alias_code('uk' => 'gb');
- Locale::Country::rename_country('gb' => 'Great Britain');
+ use Locale::Country;
+ $country = code2country('jp' [,CODESET]); # $country gets 'Japan'
+ $code = country2code('Norway' [,CODESET]); # $code gets 'no'
-=head1 DESCRIPTION
-
-The C<Locale::Country> module provides access to the ISO
-codes for identifying countries, as defined in ISO 3166-1.
-You can either access the codes via the L<conversion routines>
-(described below), or with the two functions which return lists
-of all country codes or all country names.
-
-There are three different code sets you can use for identifying
-countries:
-
-=over 4
-
-=item B<alpha-2>
-
-Two letter codes, such as 'tv' for Tuvalu.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_2>.
+ @codes = all_country_codes( [CODESET]);
+ @names = all_country_names();
-=item B<alpha-3>
+ # semi-private routines
+ Locale::Country::alias_code('uk' => 'gb');
+ Locale::Country::rename_country('gb' => 'Great Britain');
-Three letter codes, such as 'brb' for Barbados.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_3>.
+=head1 DESCRIPTION
-=item B<numeric>
+The C<Locale::Country> module provides access to several code sets
+that can be used for identifying countries, such as those defined in
+ISO 3166-1.
-Numeric codes, such as 064 for Bhutan.
-This code set is identified with the symbol C<LOCALE_CODE_NUMERIC>.
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+3166-1 two-letter codes will be used.
-=back
+=head1 SUPPORTED CODE SETS
-All of the routines take an optional additional argument
-which specifies the code set to use.
-If not specified, it defaults to the two-letter codes.
-This is partly for backwards compatibility (previous versions
-of this module only supported the alpha-2 codes), and
-partly because they are the most widely used codes.
+There are several different code sets you can use for identifying
+countries. The ones currently supported are:
-The alpha-2 and alpha-3 codes are not case-dependent,
-so you can use 'BO', 'Bo', 'bO' or 'bo' for Bolivia.
-When a code is returned by one of the functions in
-this module, it will always be lower-case.
+=over 4
-As of version 2.00, Locale::Country supports variant
-names for countries. So, for example, the country code for "United States"
-is "us", so country2code('United States') returns 'us'.
-Now the following will also return 'us':
+=item B<alpha-2>
- country2code('United States of America')
- country2code('USA')
+This is the set of two-letter (lowercase) codes from ISO 3166-1, such
+as 'tv' for Tuvalu.
+This code set is identified with the symbol C<LOCALE_CODE_ALPHA_2>.
-=head1 CONVERSION ROUTINES
+This is the default code set.
-There are three conversion routines: C<code2country()>, C<country2code()>,
-and C<country_code2code()>.
+=item B<alpha-3>
-=over 4
+This is the set of three-letter (lowercase) codes from ISO 3166-1,
+such as 'brb' for Barbados. These codes are actually defined and
+maintained by the U.N. Statistics division.
-=item code2country( CODE, [ CODESET ] )
+This code set is identified with the symbol C<LOCALE_CODE_ALPHA_3>.
-This function takes a country code and returns a string
-which contains the name of the country identified.
-If the code is not a valid country code, as defined by ISO 3166,
-then C<undef> will be returned:
+=item B<numeric>
- $country = code2country('fi');
+This is the set of three-digit numeric codes from ISO 3166-1, such as
+064 for Bhutan. These codes are actually defined and maintained by the
+U.N. Statistics division.
-=item country2code( STRING, [ CODESET ] )
+If a 2-digit code is entered, it is converted to 3 digits by prepending
+a 0.
-This function takes a country name and returns the corresponding
-country code, if such exists.
-If the argument could not be identified as a country name,
-then C<undef> will be returned:
+This code set is identified with the symbol C<LOCALE_CODE_NUMERIC>.
- $code = country2code('Norway', LOCALE_CODE_ALPHA_3);
- # $code will now be 'nor'
+=item B<fips-10>
-The case of the country name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
+The FIPS 10 data are two-letter (uppercase) codes assigned by the
+National Geospatial-Intelligence Agency.
-=item country_code2code( CODE, CODESET, CODESET )
+This code set is identified with the symbol C<LOCALE_CODE_FIPS>.
-This function takes a country code from one code set,
-and returns the corresponding code from another code set.
+=item B<dom>
- $alpha2 = country_code2code('fin',
- LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2);
- # $alpha2 will now be 'fi'
+The IANA is responsible for assigning two-letter (uppercase) top-level
+domain names to each country.
-If the code passed is not a valid country code in
-the first code set, or if there isn't a code for the
-corresponding country in the second code set,
-then C<undef> will be returned.
+This code set is identified with the symbol C<LOCALE_CODE_DOM>.
=back
-
-=head1 QUERY ROUTINES
-
-There are two function which can be used to obtain a list of all codes,
-or all country names:
+=head1 ROUTINES
=over 4
-=item C<all_country_codes( [ CODESET ] )>
-
-Returns a list of all two-letter country codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
-
-=item C<all_country_names( [ CODESET ] )>
-
-Returns a list of all country names for which there is a corresponding
-country code in the specified code set.
-The names are capitalised, and not returned in any particular order.
-
-Not all countries have alpha-3 and numeric codes -
-some just have an alpha-2 code,
-so you'll get a different number of countries
-depending on which code set you specify.
-
-=back
+=item B<code2country ( CODE [,CODESET] )>
+=item B<country2code ( NAME [,CODESET] )>
-=head1 SEMI-PRIVATE ROUTINES
+=item B<country_code2code ( CODE ,CODESET ,CODESET2 )>
-Locale::Country provides two semi-private routines for modifying
-the internal data.
-Given their status, they aren't exported by default,
-and so need to be called by prefixing the function name with the
-package name.
+=item B<all_country_codes ( [CODESET] )>
-=head2 alias_code
+=item B<all_country_names ( [CODESET] )>
-Define a new code as an alias for an existing code:
+=item B<Locale::Country::rename_country ( CODE ,NEW_NAME [,CODESET] )>
- Locale::Country::alias_code( ALIAS => CODE [, CODESET ] )
+=item B<Locale::Country::add_country ( CODE ,NAME [,CODESET] )>
-This feature was added as a mechanism for handling
-a "uk" code. The ISO standard says that the two-letter code for
-"United Kingdom" is "gb", whereas domain names are all .uk.
+=item B<Locale::Country::delete_country ( CODE [,CODESET] )>
-By default the module does not understand "uk", since it is implementing
-an ISO standard. If you would like 'uk' to work as the two-letter
-code for United Kingdom, use the following:
+=item B<Locale::Country::add_country_alias ( NAME ,NEW_NAME )>
- Locale::Country::alias_code('uk' => 'gb');
+=item B<Locale::Country::delete_country_alias ( NAME )>
-With this code, both "uk" and "gb" are valid codes for United Kingdom,
-with the reverse lookup returning "uk" rather than the usual "gb".
+=item B<Locale::Country::rename_country_code ( CODE ,NEW_CODE [,CODESET] )>
-B<Note:> this function was previously called _alias_code,
-but the leading underscore has been dropped.
-The old name will be supported for all 2.X releases for
-backwards compatibility.
+=item B<Locale::Country::add_country_code_alias ( CODE ,NEW_CODE [,CODESET] )>
-=head2 rename_country
+=item B<Locale::Country::delete_country_code_alias ( CODE [,CODESET] )>
-If the official country name just isn't good enough for you,
-you can rename a country. For example, the official country
-name for code 'gb' is 'United Kingdom'.
-If you want to change that, you might call:
+These routines are all documented in the Locale::Codes man page.
- Locale::Country::rename_country('gb' => 'Great Britain');
+=item B<alias_code ( ALIAS, CODE [,CODESET] )>
-This means that calling code2country('gb') will now return
-'Great Britain' instead of 'United Kingdom'.
-The original country name is retained as an alias,
-so for the above example, country2code('United Kingdom')
-will still return 'gb'.
+Version 2.07 included 2 functions for modifying the internal data:
+rename_country and alias_code. Both of these could be used only to
+modify the internal data for country codes.
+As of 3.10, the internal data for all types of codes can be modified.
-=head1 EXAMPLES
+The alias_code function is preserved for backwards compatibility, but
+the following two are identical:
-The following example illustrates use of the C<code2country()> function.
-The user is prompted for a country code, and then told the corresponding
-country name:
+ alias_code(ALIAS,CODE [,CODESET]);
+ rename_country_code(CODE,ALIAS [,CODESET]);
- $| = 1; # turn off buffering
-
- print "Enter country code: ";
- chop($code = <STDIN>);
- $country = code2country($code, LOCALE_CODE_ALPHA_2);
- if (defined $country)
- {
- print "$code = $country\n";
- }
- else
- {
- print "'$code' is not a valid country code!\n";
- }
+and the latter should be used for consistency.
-=head1 DOMAIN NAMES
+The alias_code function is deprecated (though there is no currently no
+plan to remove it).
-Most top-level domain names are based on these codes,
-but there are certain codes which aren't.
-If you are using this module to identify country from hostname,
-your best bet is to preprocess the country code.
+B<Note:> this function was previously called _alias_code, but the
+leading underscore has been dropped. The old name was supported for
+all 2.X releases, but has been dropped as of 3.00.
-For example, B<edu>, B<com>, B<gov> and friends would map to B<us>;
-B<uk> would map to B<gb>. Any others?
+=back
-=head1 KNOWN BUGS AND LIMITATIONS
+=head1 SEE ALSO
=over 4
-=item *
-
-When using C<country2code()>, the country name must currently appear
-exactly as it does in the source of the module. The module now supports
-a small number of variants.
-
-Possible extensions to this are: an interface for getting at the
-list of variant names, and regular expression matches.
-
-=item *
+=item B<Locale::Codes>
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
+=item B<Locale::Constants>
-=item *
+=item B<Locale::SubCountry>
-Support for country names in different languages.
+ISO codes for country sub-divisions (states, counties, provinces,
+etc), as defined in ISO 3166-2. This module is not part of the
+Locale-Codes distribution, but is available from CPAN in
+CPAN/modules/by-module/Locale/
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item Locale::Language
+=item B<http://www.iso.org/iso/country_codes>
-ISO two letter codes for identification of language (ISO 639).
+Official home page for the ISO 3166 maintenance agency.
-=item Locale::Script
+Unfortunately, they do not make the actual ISO available for free,
+so I cannot check the alpha-3 and numerical codes here.
-ISO codes for identification of scripts (ISO 15924).
+=item B<http://www.iso.org/iso/list-en1-semic-3.txt>
-=item Locale::Currency
+The source of ISO 3166-1 two-letter codes used by this
+module.
-ISO three letter codes for identification of currencies
-and funds (ISO 4217).
+=item B<http://unstats.un.org/unsd/methods/m49/m49alpha.htm>
-=item Locale::SubCountry
+The source of the official ISO 3166-1 three-letter codes and
+three-digit codes.
-ISO codes for country sub-divisions (states, counties, provinces, etc),
-as defined in ISO 3166-2.
-This module is not part of the Locale-Codes distribution,
-but is available from CPAN in CPAN/modules/by-module/Locale/
+For some reason, this table is incomplete! Several countries are
+missing from it, and I cannot find them anywhere on the UN site. I
+get as much of the data from here as I can.
-=item ISO 3166-1
+=item B<http://earth-info.nga.mil/gns/html/digraphs.htm>
-The ISO standard which defines these codes.
+The official list of the FIPS 10 codes.
-=item http://www.iso.org/iso/en/prods-services/iso3166ma/index.html
+=item B<http://www.iana.org/domains/>
-Official home page for the ISO 3166 maintenance agency.
+Official source of the top-level domain names.
-=item http://www.egt.ie/standards/iso3166/iso3166-1-en.html
+=item B<https://www.cia.gov/library/publications/the-world-factbook/appendix/print_appendix-d.html>
-Another useful, but not official, home page.
+Although not the official source of any of the data, the World
+Factbook maintained by the CIA is a great source of the data,
+especially since I can't get the official data from the ISO. Since
+it's maintained by the CIA, and since it's updated every two weeks, I
+use this as the source for some missing data.
-=item http://www.cia.gov/cia/publications/factbook/docs/app-d-1.html
+=item B<http://www.statoids.com/wab.html>
-An appendix in the CIA world fact book which lists country codes
-as defined by ISO 3166, FIPS 10-4, and internet domain names.
+Another unofficial source of data. Currently, it is not used to get
+data, but the notes and explanatory material were very useful for
+understanding discrepancies between the sources.
=back
-
=head1 AUTHOR
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
-Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
-
-#
-# Locale::Currency - ISO three letter codes for currency identification
-# (ISO 4217)
-#
-# $Id: Currency.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
package Locale::Currency;
+# Copyright (C) 2001 Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
use strict;
+use warnings;
require 5.002;
require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Constants;
+use Locale::Codes::Currency;
-#-----------------------------------------------------------------------
-# Public Global Variables
-#-----------------------------------------------------------------------
-use vars qw($VERSION @ISA @EXPORT);
-$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
-@ISA = qw(Exporter);
-@EXPORT = qw(&code2currency ¤cy2code
- &all_currency_codes &all_currency_names );
+#=======================================================================
+# Public Global Variables
+#=======================================================================
-#-----------------------------------------------------------------------
-# Private Global Variables
-#-----------------------------------------------------------------------
-my %CODES = ();
-my %CURRENCIES = ();
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+
+$VERSION='3.12';
+@ISA = qw(Exporter);
+@EXPORT = qw(code2currency
+ currency2code
+ all_currency_codes
+ all_currency_names
+ currency_code2code
+ LOCALE_CURR_ALPHA
+ LOCALE_CURR_NUMERIC
+ );
+
+sub _code {
+ my($code,$codeset) = @_;
+ $code = "" if (! $code);
+
+ $codeset = LOCALE_CURR_DEFAULT if (! defined($codeset) || $codeset eq "");
+
+ if ($codeset =~ /^\d+$/) {
+ if ($codeset == LOCALE_CURR_ALPHA) {
+ $codeset = "alpha";
+ } elsif ($codeset == LOCALE_CURR_NUMERIC) {
+ $codeset = "num";
+ } else {
+ return (1);
+ }
+ }
+
+ if ($codeset eq "alpha") {
+ $code = uc($code);
+ } elsif ($codeset eq "num") {
+ if (defined($code) && $code ne "") {
+ return (1) unless ($code =~ /^\d+$/);
+ $code = sprintf("%.3d", $code);
+ }
+ } else {
+ return (1);
+ }
+
+ return (0,$code,$codeset);
+}
+#=======================================================================
+#
+# code2currency ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub code2currency {
+ my($err,$code,$codeset) = _code(@_);
+ return undef if ($err ||
+ ! defined $code);
+
+ return Locale::Codes::_code2name("currency",$code,$codeset);
+}
#=======================================================================
#
-# code2currency( CODE )
+# currency2code ( CURRENCY [,CODESET] )
#
#=======================================================================
-sub code2currency
-{
- my $code = shift;
-
-
- return undef unless defined $code;
- $code = lc($code);
- if (exists $CODES{$code})
- {
- return $CODES{$code};
- }
- else
- {
- #---------------------------------------------------------------
- # no such currency code!
- #---------------------------------------------------------------
- return undef;
- }
+
+sub currency2code {
+ my($currency,$codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err ||
+ ! defined $currency);
+
+ return Locale::Codes::_name2code("currency",$currency,$codeset);
}
+#=======================================================================
+#
+# currency_code2code ( CODE,CODESET_IN,CODESET_OUT )
+#
+#=======================================================================
+
+sub currency_code2code {
+ (@_ == 3) or croak "currency_code2code() takes 3 arguments!";
+ my($code,$inset,$outset) = @_;
+ my($err,$tmp);
+ ($err,$code,$inset) = _code($code,$inset);
+ return undef if ($err);
+ ($err,$tmp,$outset) = _code("",$outset);
+ return undef if ($err);
+
+ return Locale::Codes::_code2code("currency",$code,$inset,$outset);
+}
#=======================================================================
#
-# currency2code ( CURRENCY )
+# all_currency_codes ( [CODESET] )
#
#=======================================================================
-sub currency2code
-{
- my $curr = shift;
-
-
- return undef unless defined $curr;
- $curr = lc($curr);
- if (exists $CURRENCIES{$curr})
- {
- return $CURRENCIES{$curr};
- }
- else
- {
- #---------------------------------------------------------------
- # no such currency!
- #---------------------------------------------------------------
- return undef;
- }
+
+sub all_currency_codes {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_codes("currency",$codeset);
}
#=======================================================================
#
-# all_currency_codes()
+# all_currency_names ( [CODESET] )
#
#=======================================================================
-sub all_currency_codes
-{
- return keys %CODES;
+
+sub all_currency_names {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_names("currency",$codeset);
}
+#=======================================================================
+#
+# rename_currency ( CODE,NAME [,CODESET] )
+#
+#=======================================================================
+
+sub rename_currency {
+ my($code,$new_name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_rename("currency",$code,$new_name,$codeset,$nowarn);
+}
#=======================================================================
#
-# all_currency_names()
+# add_currency ( CODE,NAME [,CODESET] )
#
#=======================================================================
-sub all_currency_names
-{
- return values %CODES;
+
+sub add_currency {
+ my($code,$name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_add_code("currency",$code,$name,$codeset,$nowarn);
}
+#=======================================================================
+#
+# delete_currency ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_currency {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_delete_code("currency",$code,$codeset,$nowarn);
+}
#=======================================================================
-# initialisation code - stuff the DATA into the CODES hash
+#
+# add_currency_alias ( NAME,NEW_NAME )
+#
#=======================================================================
-{
- my $code;
- my $currency;
- local $_;
-
-
- while (<DATA>)
- {
- next unless /\S/;
- chop;
- ($code, $currency) = split(/:/, $_, 2);
- $CODES{$code} = $currency;
- $CURRENCIES{"\L$currency"} = $code;
- }
-
- close(DATA);
+
+sub add_currency_alias {
+ my($name,$new_name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_add_alias("currency",$name,$new_name,$nowarn);
}
-1;
+#=======================================================================
+#
+# delete_currency_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_currency_alias {
+ my($name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_delete_alias("currency",$name,$nowarn);
+}
+
+#=======================================================================
+#
+# rename_currency_code ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
-__DATA__
-adp:Andorran Peseta
-aed:UAE Dirham
-afa:Afghani
-all:Lek
-amd:Armenian Dram
-ang:Netherlands Antillean Guilder
-aoa:Kwanza
-aon:New Kwanza
-aor:Kwanza Reajustado
-ars:Argentine Peso
-ats:Schilling
-aud:Australian Dollar
-awg:Aruban Guilder
-azm:Azerbaijanian Manat
-
-bam:Convertible Marks
-bbd:Barbados Dollar
-bdt:Taka
-bef:Belgian Franc
-bgl:Lev
-bgn:Bulgarian Lev
-bhd:Bahraini Dinar
-bhd:Dinar
-bif:Burundi Franc
-bmd:Bermudian Dollar
-bnd:Brunei Dollar
-bob:Boliviano
-bov:MVDol
-brl:Brazilian Real
-bsd:Bahamian Dollar
-btn:Ngultrum
-bwp:Pula
-byb:Belarussian Ruble
-byr:Belarussian Ruble
-bzd:Belize Dollar
-
-cad:Canadian Dollar
-cdf:Franc Congolais
-chf:Swiss Franc
-clf:Unidades de Formento
-clp:Chilean Peso
-cny:Yuan Renminbi
-cop:Colombian Peso
-crc:Costa Rican Colon
-cup:Cuban Peso
-cve:Cape Verde Escudo
-cyp:Cyprus Pound
-czk:Czech Koruna
-
-dem:German Mark
-djf:Djibouti Franc
-dkk:Danish Krone
-dop:Dominican Peso
-dzd:Algerian Dinar
-
-ecs:Sucre
-ecv:Unidad de Valor Constante (UVC)
-eek:Kroon
-egp:Egyptian Pound
-ern:Nakfa
-esp:Spanish Peseta
-etb:Ethiopian Birr
-eur:Euro
-
-fim:Markka
-fjd:Fiji Dollar
-fkp:Falkland Islands Pound
-frf:French Franc
-
-gbp:Pound Sterling
-gel:Lari
-ghc:Cedi
-gip:Gibraltar Pound
-gmd:Dalasi
-gnf:Guinea Franc
-grd:Drachma
-gtq:Quetzal
-gwp:Guinea-Bissau Peso
-gyd:Guyana Dollar
-
-hkd:Hong Kong Dollar
-hnl:Lempira
-hrk:Kuna
-htg:Gourde
-huf:Forint
-
-idr:Rupiah
-iep:Irish Pound
-ils:Shekel
-inr:Indian Rupee
-iqd:Iraqi Dinar
-irr:Iranian Rial
-isk:Iceland Krona
-itl:Italian Lira
-
-jmd:Jamaican Dollar
-jod:Jordanian Dinar
-jpy:Yen
-
-kes:Kenyan Shilling
-kgs:Som
-khr:Riel
-kmf:Comoro Franc
-kpw:North Korean Won
-krw:Won
-kwd:Kuwaiti Dinar
-kyd:Cayman Islands Dollar
-kzt:Tenge
-
-lak:Kip
-lbp:Lebanese Pound
-lkr:Sri Lanka Rupee
-lrd:Liberian Dollar
-lsl:Loti
-ltl:Lithuanian Litas
-luf:Luxembourg Franc
-lvl:Latvian Lats
-lyd:Libyan Dinar
-
-mad:Moroccan Dirham
-mdl:Moldovan Leu
-mgf:Malagasy Franc
-mkd:Denar
-mmk:Kyat
-mnt:Tugrik
-mop:Pataca
-mro:Ouguiya
-mtl:Maltese Lira
-mur:Mauritius Rupee
-mvr:Rufiyaa
-mwk:Kwacha
-mxn:Mexican Nuevo Peso
-myr:Malaysian Ringgit
-mzm:Metical
-
-nad:Namibia Dollar
-ngn:Naira
-nio:Cordoba Oro
-nlg:Netherlands Guilder
-nok:Norwegian Krone
-npr:Nepalese Rupee
-nzd:New Zealand Dollar
-
-omr:Rial Omani
-
-pab:Balboa
-pen:Nuevo Sol
-pgk:Kina
-php:Philippine Peso
-pkr:Pakistan Rupee
-pln:Zloty
-pte:Portuguese Escudo
-pyg:Guarani
-
-qar:Qatari Rial
-
-rol:Leu
-rub:Russian Ruble
-rur:Russian Ruble
-rwf:Rwanda Franc
-
-sar:Saudi Riyal
-sbd:Solomon Islands Dollar
-scr:Seychelles Rupee
-sdd:Sudanese Dinar
-sek:Swedish Krona
-sgd:Singapore Dollar
-shp:St. Helena Pound
-sit:Tolar
-skk:Slovak Koruna
-sll:Leone
-sos:Somali Shilling
-srg:Surinam Guilder
-std:Dobra
-svc:El Salvador Colon
-syp:Syrian Pound
-szl:Lilangeni
-
-thb:Baht
-tjr:Tajik Ruble
-tmm:Manat
-tnd:Tunisian Dollar
-top:Pa'anga
-tpe:Timor Escudo
-trl:Turkish Lira
-ttd:Trinidad and Tobago Dollar
-twd:New Taiwan Dollar
-tzs:Tanzanian Shilling
-
-uah:Hryvnia
-uak:Karbovanets
-ugx:Uganda Shilling
-usd:US Dollar
-usn:US Dollar (Next day)
-uss:US Dollar (Same day)
-uyu:Peso Uruguayo
-uzs:Uzbekistan Sum
-
-veb:Bolivar
-vnd:Dong
-vuv:Vatu
-
-wst:Tala
-
-xaf:CFA Franc BEAC
-xag:Silver
-xau:Gold
-xba:European Composite Unit
-xbb:European Monetary Unit
-xbc:European Unit of Account 9
-xb5:European Unit of Account 17
-xcd:East Caribbean Dollar
-xdr:SDR
-xeu:ECU (until 1998-12-31)
-xfu:UIC-Franc
-xfo:Gold-Franc
-xof:CFA Franc BCEAO
-xpd:Palladium
-xpf:CFP Franc
-xpt:Platinum
-
-yer:Yemeni Rial
-yum:New Dinar
-
-zal:Financial Rand
-zar:Rand
-zmk:Kwacha
-zrn:New Zaire
-zwd:Zimbabwe Dollar
+sub rename_currency_code {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
+
+ return Locale::Codes::_rename_code("currency",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# add_currency_code_alias ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
+
+sub add_currency_code_alias {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
+
+ return Locale::Codes::_add_code_alias("currency",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# delete_currency_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_currency_code_alias {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_delete_code_alias("currency",$code,$codeset,$nowarn);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+=pod
=head1 NAME
-Locale::Currency - ISO three letter codes for currency identification (ISO 4217)
+Locale::Currency - standard codes for currency identification
=head1 SYNOPSIS
=head1 DESCRIPTION
-The C<Locale::Currency> module provides access to the ISO three-letter
-codes for identifying currencies and funds, as defined in ISO 4217.
-You can either access the codes via the L<conversion routines>
-(described below),
-or with the two functions which return lists of all currency codes or
-all currency names.
+The C<Locale::Currency> module provides access to standard codes used
+for identifying currencies and funds, such as those defined in ISO 4217.
-There are two special codes defined by the standard which aren't
-understood by this module:
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+4217 three-letter codes will be used.
-=over 4
-
-=item XTS
-
-Specifically reserved for testing purposes.
-
-=item XXX
-
-For transactions where no currency is involved.
-
-=back
+=head1 SUPPORTED CODE SETS
-
-=head1 CONVERSION ROUTINES
-
-There are two conversion routines: C<code2currency()> and C<currency2code()>.
+There are several different code sets you can use for identifying
+currencies. The ones currently supported are:
=over 4
-=item code2currency()
+=item B<alpha>
-This function takes a three letter currency code and returns a string
-which contains the name of the currency identified. If the code is
-not a valid currency code, as defined by ISO 4217, then C<undef>
-will be returned.
+This is a set of three-letter (uppercase) codes from ISO 4217 such
+as EUR for Euro.
- $curr = code2currency($code);
+Two of the codes specified by the standard (XTS which is reserved
+for testing purposes and XXX which is for transactions where no
+currency is involved) are omitted.
-=item currency2code()
+This code set is identified with the symbol C<LOCALE_CURR_ALPHA>.
-This function takes a currency name and returns the corresponding
-three letter currency code, if such exists.
-If the argument could not be identified as a currency name,
-then C<undef> will be returned.
+This is the default code set.
- $code = currency2code('French Franc');
+=item B<num>
-The case of the currency name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
-
-=back
+This is the set of three-digit numeric codes from ISO 4217.
+This code set is identified with the symbol C<LOCALE_CURR_NUMERIC>.
-=head1 QUERY ROUTINES
+=back
-There are two function which can be used to obtain a list of all
-currency codes, or all currency names:
+=head1 ROUTINES
=over 4
-=item C<all_currency_codes()>
+=item B<code2currency ( CODE [,CODESET] )>
-Returns a list of all three-letter currency codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
+=item B<currency2code ( NAME [,CODESET] )>
-=item C<all_currency_names()>
+=item B<currency_code2code ( CODE ,CODESET ,CODESET2 )>
-Returns a list of all currency names for which there is a corresponding
-three-letter currency code. The names are capitalised, and not returned
-in any particular order.
+=item B<all_currency_codes ( [CODESET] )>
-=back
+=item B<all_currency_names ( [CODESET] )>
+=item B<Locale::Currency::rename_currency ( CODE ,NEW_NAME [,CODESET] )>
-=head1 EXAMPLES
+=item B<Locale::Currency::add_currency ( CODE ,NAME [,CODESET] )>
-The following example illustrates use of the C<code2currency()> function.
-The user is prompted for a currency code, and then told the corresponding
-currency name:
+=item B<Locale::Currency::delete_currency ( CODE [,CODESET] )>
- $| = 1; # turn off buffering
+=item B<Locale::Currency::add_currency_alias ( NAME ,NEW_NAME )>
- print "Enter currency code: ";
- chop($code = <STDIN>);
- $curr = code2currency($code);
- if (defined $curr)
- {
- print "$code = $curr\n";
- }
- else
- {
- print "'$code' is not a valid currency code!\n";
- }
+=item B<Locale::Currency::delete_currency_alias ( NAME )>
-=head1 KNOWN BUGS AND LIMITATIONS
+=item B<Locale::Currency::rename_currency_code ( CODE ,NEW_CODE [,CODESET] )>
-=over 4
+=item B<Locale::Currency::add_currency_code_alias ( CODE ,NEW_CODE [,CODESET] )>
-=item *
+=item B<Locale::Currency::delete_currency_code_alias ( CODE [,CODESET] )>
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
-
-=item *
-
-This module also includes the special codes which are
-not for a currency, such as Gold, Platinum, etc.
-This might cause a problem if you're using this module
-to display a list of currencies.
-Let Neil know if this does cause a problem, and we can
-do something about it.
-
-=item *
-
-ISO 4217 also defines a numeric code for each currency.
-Currency codes are not currently supported by this module,
-in the same way Locale::Country supports multiple codesets.
-
-=item *
-
-There are three cases where there is more than one
-code for the same currency name.
-Kwacha has two codes: mwk for Malawi, and zmk for Zambia.
-The Russian Ruble has two codes: rub and rur.
-The Belarussian Ruble has two codes: byr and byb.
-The currency2code() function only returns one code, so
-you might not get back the code you expected.
+These routines are all documented in the Locale::Codes man page.
=back
=over 4
-=item Locale::Country
-
-ISO codes for identification of country (ISO 3166).
+=item B<Locale::Codes>
-=item Locale::Script
+=item B<Locale::Constants>
-ISO codes for identification of written scripts (ISO 15924).
+=item B<http://www.iso.org/iso/support/currency_codes_list-1.htm>
-=item ISO 4217:1995
-
-Code for the representation of currencies and funds.
-
-=item http://www.bsi-global.com/iso4217currency
-
-Official web page for the ISO 4217 maintenance agency.
-This has the latest list of codes, in MS Word format. Boo.
+The ISO 4217 data.
=back
=head1 AUTHOR
-Michael Hennecke E<lt>hennecke@rz.uni-karlsruhe.deE<gt>
-and
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
-Copyright (c) 2001 Michael Hennecke and
-Canon Research Centre Europe (CRE).
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001 Michael Hennecke
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
-
-#
-# Locale::Language - ISO two letter codes for language identification (ISO 639)
-#
-# $Id: Language.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
package Locale::Language;
+# Copyright (C) 2001 Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
use strict;
+use warnings;
require 5.002;
require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Constants;
+use Locale::Codes::Language;
-#-----------------------------------------------------------------------
-# Public Global Variables
-#-----------------------------------------------------------------------
-use vars qw($VERSION @ISA @EXPORT);
-$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
-@ISA = qw(Exporter);
-@EXPORT = qw(&code2language &language2code
- &all_language_codes &all_language_names );
+#=======================================================================
+# Public Global Variables
+#=======================================================================
-#-----------------------------------------------------------------------
-# Private Global Variables
-#-----------------------------------------------------------------------
-my %CODES = ();
-my %LANGUAGES = ();
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+
+$VERSION='3.12';
+@ISA = qw(Exporter);
+@EXPORT = qw(code2language
+ language2code
+ all_language_codes
+ all_language_names
+ language_code2code
+ LOCALE_LANG_ALPHA_2
+ LOCALE_LANG_ALPHA_3
+ LOCALE_LANG_TERM
+ );
+
+sub _code {
+ my($code,$codeset) = @_;
+ $code = "" if (! $code);
+
+ $codeset = LOCALE_LANG_DEFAULT if (! defined($codeset) || $codeset eq "");
+
+ if ($codeset =~ /^\d+$/) {
+ if ($codeset == LOCALE_LANG_ALPHA_2) {
+ $codeset = "alpha2";
+ } elsif ($codeset == LOCALE_LANG_ALPHA_3) {
+ $codeset = "alpha3";
+ } elsif ($codeset == LOCALE_LANG_TERM) {
+ $codeset = "term";
+ } else {
+ return (1);
+ }
+ }
+
+ if ($codeset eq "alpha2" ||
+ $codeset eq "alpha3" ||
+ $codeset eq "term") {
+ $code = lc($code);
+ } else {
+ return (1);
+ }
+
+ return (0,$code,$codeset);
+}
+#=======================================================================
+#
+# code2language ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub code2language {
+ my($err,$code,$codeset) = _code(@_);
+ return undef if ($err ||
+ ! defined $code);
+
+ return Locale::Codes::_code2name("language",$code,$codeset);
+}
#=======================================================================
#
-# code2language ( CODE )
+# language2code ( LANGUAGE [,CODESET] )
#
#=======================================================================
-sub code2language
-{
- my $code = shift;
-
-
- return undef unless defined $code;
- $code = lc($code);
- if (exists $CODES{$code})
- {
- return $CODES{$code};
- }
- else
- {
- #---------------------------------------------------------------
- # no such language code!
- #---------------------------------------------------------------
- return undef;
- }
+
+sub language2code {
+ my($language,$codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err ||
+ ! defined $language);
+
+ return Locale::Codes::_name2code("language",$language,$codeset);
}
+#=======================================================================
+#
+# language_code2code ( CODE,CODESET_IN,CODESET_OUT )
+#
+#=======================================================================
+
+sub language_code2code {
+ (@_ == 3) or croak "language_code2code() takes 3 arguments!";
+ my($code,$inset,$outset) = @_;
+ my($err,$tmp);
+ ($err,$code,$inset) = _code($code,$inset);
+ return undef if ($err);
+ ($err,$tmp,$outset) = _code("",$outset);
+ return undef if ($err);
+
+ return Locale::Codes::_code2code("language",$code,$inset,$outset);
+}
#=======================================================================
#
-# language2code ( LANGUAGE )
+# all_language_codes ( [CODESET] )
#
#=======================================================================
-sub language2code
-{
- my $lang = shift;
-
-
- return undef unless defined $lang;
- $lang = lc($lang);
- if (exists $LANGUAGES{$lang})
- {
- return $LANGUAGES{$lang};
- }
- else
- {
- #---------------------------------------------------------------
- # no such language!
- #---------------------------------------------------------------
- return undef;
- }
+
+sub all_language_codes {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_codes("language",$codeset);
}
#=======================================================================
#
-# all_language_codes()
+# all_language_names ( [CODESET] )
#
#=======================================================================
-sub all_language_codes
-{
- return keys %CODES;
+
+sub all_language_names {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_names("language",$codeset);
}
+#=======================================================================
+#
+# rename_language ( CODE,NAME [,CODESET] )
+#
+#=======================================================================
+
+sub rename_language {
+ my($code,$new_name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_rename("language",$code,$new_name,$codeset,$nowarn);
+}
#=======================================================================
#
-# all_language_names()
+# add_language ( CODE,NAME [,CODESET] )
#
#=======================================================================
-sub all_language_names
-{
- return values %CODES;
+
+sub add_language {
+ my($code,$name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_add_code("language",$code,$name,$codeset,$nowarn);
}
+#=======================================================================
+#
+# delete_language ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_language {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_delete_code("language",$code,$codeset,$nowarn);
+}
#=======================================================================
-# initialisation code - stuff the DATA into the CODES hash
+#
+# add_language_alias ( NAME,NEW_NAME )
+#
#=======================================================================
-{
- my $code;
- my $language;
- local $_;
-
-
- while (<DATA>)
- {
- next unless /\S/;
- chop;
- ($code, $language) = split(/:/, $_, 2);
- $CODES{$code} = $language;
- $LANGUAGES{"\L$language"} = $code;
- }
-
- close(DATA);
+
+sub add_language_alias {
+ my($name,$new_name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_add_alias("language",$name,$new_name,$nowarn);
}
-1;
+#=======================================================================
+#
+# delete_language_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_language_alias {
+ my($name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_delete_alias("language",$name,$nowarn);
+}
+
+#=======================================================================
+#
+# rename_language_code ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
-__DATA__
-aa:Afar
-ab:Abkhazian
-ae:Avestan
-af:Afrikaans
-am:Amharic
-ar:Arabic
-as:Assamese
-ay:Aymara
-az:Azerbaijani
-
-ba:Bashkir
-be:Belarusian
-bg:Bulgarian
-bh:Bihari
-bi:Bislama
-bn:Bengali
-bo:Tibetan
-br:Breton
-bs:Bosnian
-
-ca:Catalan
-ce:Chechen
-ch:Chamorro
-co:Corsican
-cs:Czech
-cu:Church Slavic
-cv:Chuvash
-cy:Welsh
-
-da:Danish
-de:German
-dz:Dzongkha
-
-el:Greek
-en:English
-eo:Esperanto
-es:Spanish
-et:Estonian
-eu:Basque
-
-fa:Persian
-fi:Finnish
-fj:Fijian
-fo:Faeroese
-fr:French
-fy:Frisian
-
-ga:Irish
-gd:Gaelic (Scots)
-gl:Gallegan
-gn:Guarani
-gu:Gujarati
-gv:Manx
-
-ha:Hausa
-he:Hebrew
-hi:Hindi
-ho:Hiri Motu
-hr:Croatian
-hu:Hungarian
-hy:Armenian
-hz:Herero
-
-ia:Interlingua
-id:Indonesian
-ie:Interlingue
-ik:Inupiaq
-is:Icelandic
-it:Italian
-iu:Inuktitut
-
-ja:Japanese
-jw:Javanese
-
-ka:Georgian
-ki:Kikuyu
-kj:Kuanyama
-kk:Kazakh
-kl:Kalaallisut
-km:Khmer
-kn:Kannada
-ko:Korean
-ks:Kashmiri
-ku:Kurdish
-kv:Komi
-kw:Cornish
-ky:Kirghiz
-
-la:Latin
-lb:Letzeburgesch
-ln:Lingala
-lo:Lao
-lt:Lithuanian
-lv:Latvian
-
-mg:Malagasy
-mh:Marshall
-mi:Maori
-mk:Macedonian
-ml:Malayalam
-mn:Mongolian
-mo:Moldavian
-mr:Marathi
-ms:Malay
-mt:Maltese
-my:Burmese
-
-na:Nauru
-nb:Norwegian Bokmal
-nd:Ndebele, North
-ne:Nepali
-ng:Ndonga
-nl:Dutch
-nn:Norwegian Nynorsk
-no:Norwegian
-nr:Ndebele, South
-nv:Navajo
-ny:Chichewa; Nyanja
-
-oc:Occitan (post 1500)
-om:Oromo
-or:Oriya
-os:Ossetian; Ossetic
-
-pa:Panjabi
-pi:Pali
-pl:Polish
-ps:Pushto
-pt:Portuguese
-
-qu:Quechua
-
-rm:Rhaeto-Romance
-rn:Rundi
-ro:Romanian
-ru:Russian
-rw:Kinyarwanda
-
-sa:Sanskrit
-sc:Sardinian
-sd:Sindhi
-se:Sami
-sg:Sango
-si:Sinhalese
-sk:Slovak
-sl:Slovenian
-sm:Samoan
-sn:Shona
-so:Somali
-sq:Albanian
-sr:Serbian
-ss:Swati
-st:Sotho
-su:Sundanese
-sv:Swedish
-sw:Swahili
-
-ta:Tamil
-te:Telugu
-tg:Tajik
-th:Thai
-ti:Tigrinya
-tk:Turkmen
-tl:Tagalog
-tn:Tswana
-to:Tonga
-tr:Turkish
-ts:Tsonga
-tt:Tatar
-tw:Twi
-
-ug:Uighur
-uk:Ukrainian
-ur:Urdu
-uz:Uzbek
-
-vi:Vietnamese
-vo:Volapuk
-
-wo:Wolof
-
-xh:Xhosa
-
-yi:Yiddish
-yo:Yoruba
-
-za:Zhuang
-zh:Chinese
-zu:Zulu
+sub rename_language_code {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
+
+ return Locale::Codes::_rename_code("language",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# add_language_code_alias ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
+
+sub add_language_code_alias {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
+
+ return Locale::Codes::_add_code_alias("language",$code,$new_code,$codeset,$nowarn);
+}
+
+#=======================================================================
+#
+# delete_language_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_language_code_alias {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_delete_code_alias("language",$code,$codeset,$nowarn);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+=pod
=head1 NAME
-Locale::Language - ISO two letter codes for language identification (ISO 639)
+Locale::Language - standard codes for language identification
=head1 SYNOPSIS
- use Locale::Language;
-
- $lang = code2language('en'); # $lang gets 'English'
- $code = language2code('French'); # $code gets 'fr'
-
- @codes = all_language_codes();
- @names = all_language_names();
+ use Locale::Language;
+ $lang = code2language('en'); # $lang gets 'English'
+ $code = language2code('French'); # $code gets 'fr'
+
+ @codes = all_language_codes();
+ @names = all_language_names();
=head1 DESCRIPTION
-The C<Locale::Language> module provides access to the ISO two-letter
-codes for identifying languages, as defined in ISO 639. You can either
-access the codes via the L<conversion routines> (described below),
-or via the two functions which return lists of all language codes or
-all language names.
+The C<Locale::Language> module provides access to standard codes used
+for identifying languages, such as those as defined in ISO 639.
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+639 two-letter codes will be used.
-=head1 CONVERSION ROUTINES
+=head1 SUPPORTED CODE SETS
-There are two conversion routines: C<code2language()> and C<language2code()>.
+There are several different code sets you can use for identifying
+languages. The ones currently supported are:
=over 4
-=item code2language()
+=item B<alpha-2>
-This function takes a two letter language code and returns a string
-which contains the name of the language identified. If the code is
-not a valid language code, as defined by ISO 639, then C<undef>
-will be returned.
+This is the set of two-letter (lowercase) codes from ISO 639, such
+as 'he' for Hebrew.
- $lang = code2language($code);
+This code set is identified with the symbol C<LOCALE_LANG_ALPHA_2>.
-=item language2code()
+This is the default code set.
-This function takes a language name and returns the corresponding
-two letter language code, if such exists.
-If the argument could not be identified as a language name,
-then C<undef> will be returned.
+=item B<alpha-3>
- $code = language2code('French');
+This is the set of three-letter (lowercase) bibliographic codes from
+ISO 639, such as 'heb' for Hebrew.
-The case of the language name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
+This code set is identified with the symbol C<LOCALE_LANG_ALPHA_3>.
-=back
+=item B<term>
+This is the set of three-letter (lowercase) terminologic codes from
+ISO 639.
-=head1 QUERY ROUTINES
+This code set is identified with the symbol C<LOCALE_LANG_TERM>.
-There are two function which can be used to obtain a list of all
-language codes, or all language names:
+=back
+
+=head1 ROUTINES
=over 4
-=item C<all_language_codes()>
+=item B<code2language ( CODE [,CODESET] )>
-Returns a list of all two-letter language codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
+=item B<language2code ( NAME [,CODESET] )>
-=item C<all_language_names()>
+=item B<language_code2code ( CODE ,CODESET ,CODESET2 )>
-Returns a list of all language names for which there is a corresponding
-two-letter language code. The names are capitalised, and not returned
-in any particular order.
+=item B<all_language_codes ( [CODESET] )>
-=back
+=item B<all_language_names ( [CODESET] )>
+=item B<Locale::Language::rename_language ( CODE ,NEW_NAME [,CODESET] )>
-=head1 EXAMPLES
+=item B<Locale::Language::add_language ( CODE ,NAME [,CODESET] )>
-The following example illustrates use of the C<code2language()> function.
-The user is prompted for a language code, and then told the corresponding
-language name:
+=item B<Locale::Language::delete_language ( CODE [,CODESET] )>
- $| = 1; # turn off buffering
-
- print "Enter language code: ";
- chop($code = <STDIN>);
- $lang = code2language($code);
- if (defined $lang)
- {
- print "$code = $lang\n";
- }
- else
- {
- print "'$code' is not a valid language code!\n";
- }
+=item B<Locale::Language::add_language_alias ( NAME ,NEW_NAME )>
-=head1 KNOWN BUGS AND LIMITATIONS
+=item B<Locale::Language::delete_language_alias ( NAME )>
-=over 4
-
-=item *
+=item B<Locale::Language::rename_language_code ( CODE ,NEW_CODE [,CODESET] )>
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
+=item B<Locale::Language::add_language_code_alias ( CODE ,NEW_CODE [,CODESET] )>
-=item *
+=item B<Locale::Language::delete_language_code_alias ( CODE [,CODESET] )>
-Currently just supports the two letter language codes -
-there are also three-letter codes, and numbers.
-Would these be of any use to anyone?
+These routines are all documented in the Locale::Codes man page.
=back
=over 4
-=item Locale::Country
-
-ISO codes for identification of country (ISO 3166).
-Supports 2-letter, 3-letter, and numeric country codes.
-
-=item Locale::Script
+=item B<Locale::Codes>
-ISO codes for identification of written scripts (ISO 15924).
+=item B<Locale::Constants>
-=item Locale::Currency
+=item B<http://www.loc.gov/standards/iso639-2/>
-ISO three letter codes for identification of currencies and funds (ISO 4217).
-
-=item ISO 639:1988 (E/F)
-
-Code for the representation of names of languages.
-
-=item http://lcweb.loc.gov/standards/iso639-2/langhome.html
-
-Home page for ISO 639-2.
+Source of the ISO 639 codes.
=back
-
=head1 AUTHOR
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
-=head1 COPYRIGHT
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
-Copyright (C) 2002-2004, Neil Bowers.
+=head1 COPYRIGHT
-Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
-
-#
-# Locale::Script - ISO codes for script identification (ISO 15924)
-#
-# $Id: Script.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $
-#
-
package Locale::Script;
+# Copyright (C) 2001 Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2010 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
use strict;
+use warnings;
require 5.002;
require Exporter;
use Carp;
+use Locale::Codes;
use Locale::Constants;
+use Locale::Codes::Script;
+#=======================================================================
+# Public Global Variables
+#=======================================================================
-#-----------------------------------------------------------------------
-# Public Global Variables
-#-----------------------------------------------------------------------
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/);
+
+$VERSION='3.12';
@ISA = qw(Exporter);
-@EXPORT = qw(code2script script2code
- all_script_codes all_script_names
- script_code2code
- LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC);
+@EXPORT = qw(code2script
+ script2code
+ all_script_codes
+ all_script_names
+ script_code2code
+ LOCALE_SCRIPT_ALPHA
+ LOCALE_SCRIPT_NUMERIC
+ );
+
+sub _code {
+ my($code,$codeset) = @_;
+ $code = "" if (! $code);
+
+ $codeset = LOCALE_SCRIPT_DEFAULT if (! defined($codeset) || $codeset eq "");
+
+ if ($codeset =~ /^\d+$/) {
+ if ($codeset == LOCALE_SCRIPT_ALPHA) {
+ $codeset = "alpha";
+ } elsif ($codeset == LOCALE_SCRIPT_NUMERIC) {
+ $codeset = "num";
+ } else {
+ return (1);
+ }
+ }
+
+ if ($codeset eq "alpha") {
+ $code = ucfirst(lc($code));
+ } elsif ($codeset eq "num") {
+ if (defined($code) && $code ne "") {
+ return (1) unless ($code =~ /^\d+$/);
+ $code = sprintf("%.3d", $code);
+ }
+ } else {
+ return (1);
+ }
+
+ return (0,$code,$codeset);
+}
+
+#=======================================================================
+#
+# code2script ( CODE [,CODESET] )
+#
+#=======================================================================
-#-----------------------------------------------------------------------
-# Private Global Variables
-#-----------------------------------------------------------------------
-my $CODES = [];
-my $COUNTRIES = [];
+sub code2script {
+ my($err,$code,$codeset) = _code(@_);
+ return undef if ($err ||
+ ! defined $code);
+ return Locale::Codes::_code2name("script",$code,$codeset);
+}
#=======================================================================
#
-# code2script ( CODE [, CODESET ] )
+# script2code ( SCRIPT [,CODESET] )
#
#=======================================================================
-sub code2script
-{
- my $code = shift;
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
- return undef unless defined $code;
-
- #-------------------------------------------------------------------
- # Make sure the code is in the right form before we use it
- # to look up the corresponding script.
- # We have to sprintf because the codes are given as 3-digits,
- # with leading 0's. Eg 070 for Egyptian demotic.
- #-------------------------------------------------------------------
- if ($codeset == LOCALE_CODE_NUMERIC)
- {
- return undef if ($code =~ /\D/);
- $code = sprintf("%.3d", $code);
- }
- else
- {
- $code = lc($code);
- }
-
- if (exists $CODES->[$codeset]->{$code})
- {
- return $CODES->[$codeset]->{$code};
- }
- else
- {
- #---------------------------------------------------------------
- # no such script code!
- #---------------------------------------------------------------
- return undef;
- }
+
+sub script2code {
+ my($script,$codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err ||
+ ! defined $script);
+
+ return Locale::Codes::_name2code("script",$script,$codeset);
}
+#=======================================================================
+#
+# script_code2code ( CODE,CODESET_IN,CODESET_OUT )
+#
+#=======================================================================
+
+sub script_code2code {
+ (@_ == 3) or croak "script_code2code() takes 3 arguments!";
+ my($code,$inset,$outset) = @_;
+ my($err,$tmp);
+ ($err,$code,$inset) = _code($code,$inset);
+ return undef if ($err);
+ ($err,$tmp,$outset) = _code("",$outset);
+ return undef if ($err);
+
+ return Locale::Codes::_code2code("script",$code,$inset,$outset);
+}
#=======================================================================
#
-# script2code ( SCRIPT [, CODESET ] )
+# all_script_codes ( [CODESET] )
#
#=======================================================================
-sub script2code
-{
- my $script = shift;
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-
- return undef unless defined $script;
- $script = lc($script);
- if (exists $COUNTRIES->[$codeset]->{$script})
- {
- return $COUNTRIES->[$codeset]->{$script};
- }
- else
- {
- #---------------------------------------------------------------
- # no such script!
- #---------------------------------------------------------------
- return undef;
- }
+
+sub all_script_codes {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_codes("script",$codeset);
}
#=======================================================================
#
-# script_code2code ( CODE, IN-CODESET, OUT-CODESET )
+# all_script_names ( [CODESET] )
#
#=======================================================================
-sub script_code2code
-{
- (@_ == 3) or croak "script_code2code() takes 3 arguments!";
-
- my $code = shift;
- my $inset = shift;
- my $outset = shift;
- my $outcode;
- my $script;
-
-
- return undef if $inset == $outset;
- $script = code2script($code, $inset);
- return undef if not defined $script;
- $outcode = script2code($script, $outset);
- return $outcode;
+
+sub all_script_names {
+ my($codeset) = @_;
+ my($err,$tmp);
+ ($err,$tmp,$codeset) = _code("",$codeset);
+ return undef if ($err);
+
+ return Locale::Codes::_all_names("script",$codeset);
}
+#=======================================================================
+#
+# rename_script ( CODE,NAME [,CODESET] )
+#
+#=======================================================================
+
+sub rename_script {
+ my($code,$new_name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_rename("script",$code,$new_name,$codeset,$nowarn);
+}
#=======================================================================
#
-# all_script_codes()
+# add_script ( CODE,NAME [,CODESET] )
#
#=======================================================================
-sub all_script_codes
-{
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
- return keys %{ $CODES->[$codeset] };
+sub add_script {
+ my($code,$name,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_add_code("script",$code,$name,$codeset,$nowarn);
}
+#=======================================================================
+#
+# delete_script ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_script {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+
+ return Locale::Codes::_delete_code("script",$code,$codeset,$nowarn);
+}
#=======================================================================
#
-# all_script_names()
+# add_script_alias ( NAME,NEW_NAME )
#
#=======================================================================
-sub all_script_names
-{
- my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
- return values %{ $CODES->[$codeset] };
+sub add_script_alias {
+ my($name,$new_name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_add_alias("script",$name,$new_name,$nowarn);
}
+#=======================================================================
+#
+# delete_script_alias ( NAME )
+#
+#=======================================================================
+
+sub delete_script_alias {
+ my($name,$nowarn) = @_;
+ $nowarn = (defined($nowarn) && $nowarn eq "nowarn" ? 1 : 0);
+
+ return Locale::Codes::_delete_alias("script",$name,$nowarn);
+}
#=======================================================================
#
-# initialisation code - stuff the DATA into the ALPHA2 hash
+# rename_script_code ( CODE,NEW_CODE [,CODESET] )
#
#=======================================================================
-{
- my ($alpha2, $alpha3, $numeric);
- my $script;
- local $_;
+sub rename_script_code {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
- while (<DATA>)
- {
- next unless /\S/;
- chop;
- ($alpha2, $alpha3, $numeric, $script) = split(/:/, $_, 4);
+ return Locale::Codes::_rename_code("script",$code,$new_code,$codeset,$nowarn);
+}
- $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $script;
- $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$script"} = $alpha2;
+#=======================================================================
+#
+# add_script_code_alias ( CODE,NEW_CODE [,CODESET] )
+#
+#=======================================================================
- if ($alpha3)
- {
- $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $script;
- $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$script"} = $alpha3;
- }
+sub add_script_code_alias {
+ my($code,$new_code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
+ ($err,$new_code,$codeset) = _code($new_code,$codeset) if (! $err);
- if ($numeric)
- {
- $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $script;
- $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$script"} = $numeric;
- }
+ return Locale::Codes::_add_code_alias("script",$code,$new_code,$codeset,$nowarn);
+}
- }
+#=======================================================================
+#
+# delete_script_code_alias ( CODE [,CODESET] )
+#
+#=======================================================================
+
+sub delete_script_code_alias {
+ my($code,@args) = @_;
+ my $nowarn = 0;
+ $nowarn = 1, pop(@args) if ($args[$#args] eq "nowarn");
+ my $codeset = shift(@args);
+ my $err;
+ ($err,$code,$codeset) = _code($code,$codeset);
- close(DATA);
+ return Locale::Codes::_delete_code_alias("script",$code,$codeset,$nowarn);
}
1;
-
-__DATA__
-am:ama:130:Aramaic
-ar:ara:160:Arabic
-av:ave:151:Avestan
-bh:bhm:300:Brahmi (Ashoka)
-bi:bid:372:Buhid
-bn:ben:325:Bengali
-bo:bod:330:Tibetan
-bp:bpm:285:Bopomofo
-br:brl:570:Braille
-bt:btk:365:Batak
-bu:bug:367:Buginese (Makassar)
-by:bys:550:Blissymbols
-ca:cam:358:Cham
-ch:chu:221:Old Church Slavonic
-ci:cir:291:Cirth
-cm:cmn:402:Cypro-Minoan
-co:cop:205:Coptic
-cp:cpr:403:Cypriote syllabary
-cy:cyr:220:Cyrillic
-ds:dsr:250:Deserel (Mormon)
-dv:dvn:315:Devanagari (Nagari)
-ed:egd:070:Egyptian demotic
-eg:egy:050:Egyptian hieroglyphs
-eh:egh:060:Egyptian hieratic
-el:ell:200:Greek
-eo:eos:210:Etruscan and Oscan
-et:eth:430:Ethiopic
-gl:glg:225:Glagolitic
-gm:gmu:310:Gurmukhi
-gt:gth:206:Gothic
-gu:guj:320:Gujarati
-ha:han:500:Han ideographs
-he:heb:125:Hebrew
-hg:hgl:420:Hangul
-hm:hmo:450:Pahawh Hmong
-ho:hoo:371:Hanunoo
-hr:hrg:410:Hiragana
-hu:hun:176:Old Hungarian runic
-hv:hvn:175:Kok Turki runic
-hy:hye:230:Armenian
-iv:ivl:610:Indus Valley
-ja:jap:930:(alias for Han + Hiragana + Katakana)
-jl:jlg:445:Cherokee syllabary
-jw:jwi:360:Javanese
-ka:kam:241:Georgian (Mxedruli)
-kh:khn:931:(alias for Hangul + Han)
-kk:kkn:411:Katakana
-km:khm:354:Khmer
-kn:kan:345:Kannada
-kr:krn:357:Karenni (Kayah Li)
-ks:kst:305:Kharoshthi
-kx:kax:240:Georgian (Xucuri)
-la:lat:217:Latin
-lf:laf:215:Latin (Fraktur variant)
-lg:lag:216:Latin (Gaelic variant)
-lo:lao:356:Lao
-lp:lpc:335:Lepcha (Rong)
-md:mda:140:Mandaean
-me:mer:100:Meroitic
-mh:may:090:Mayan hieroglyphs
-ml:mlm:347:Malayalam
-mn:mon:145:Mongolian
-my:mya:350:Burmese
-na:naa:400:Linear A
-nb:nbb:401:Linear B
-og:ogm:212:Ogham
-or:ory:327:Oriya
-os:osm:260:Osmanya
-ph:phx:115:Phoenician
-ph:pah:150:Pahlavi
-pl:pld:282:Pollard Phonetic
-pq:pqd:295:Klingon plQaD
-pr:prm:227:Old Permic
-ps:pst:600:Phaistos Disk
-rn:rnr:211:Runic (Germanic)
-rr:rro:620:Rongo-rongo
-sa:sar:110:South Arabian
-si:sin:348:Sinhala
-sj:syj:137:Syriac (Jacobite variant)
-sl:slb:440:Unified Canadian Aboriginal Syllabics
-sn:syn:136:Syriac (Nestorian variant)
-sw:sww:281:Shavian (Shaw)
-sy:syr:135:Syriac (Estrangelo)
-ta:tam:346:Tamil
-tb:tbw:373:Tagbanwa
-te:tel:340:Telugu
-tf:tfn:120:Tifnagh
-tg:tag:370:Tagalog
-th:tha:352:Thai
-tn:tna:170:Thaana
-tw:twr:290:Tengwar
-va:vai:470:Vai
-vs:vsp:280:Visible Speech
-xa:xas:000:Cuneiform, Sumero-Akkadian
-xf:xfa:105:Cuneiform, Old Persian
-xk:xkn:412:(alias for Hiragana + Katakana)
-xu:xug:106:Cuneiform, Ugaritic
-yi:yii:460:Yi
-zx:zxx:997:Unwritten language
-zy:zyy:998:Undetermined script
-zz:zzz:999:Uncoded script
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+=pod
=head1 NAME
-Locale::Script - ISO codes for script identification (ISO 15924)
+Locale::Script - standard codes for script identification
=head1 SYNOPSIS
- use Locale::Script;
- use Locale::Constants;
-
- $script = code2script('ph'); # 'Phoenician'
- $code = script2code('Tibetan'); # 'bo'
- $code3 = script2code('Tibetan',
- LOCALE_CODE_ALPHA_3); # 'bod'
- $codeN = script2code('Tibetan',
- LOCALE_CODE_ALPHA_NUMERIC); # 330
-
- @codes = all_script_codes();
- @scripts = all_script_names();
-
+ use Locale::Script;
-=head1 DESCRIPTION
-
-The C<Locale::Script> module provides access to the ISO
-codes for identifying scripts, as defined in ISO 15924.
-For example, Egyptian hieroglyphs are denoted by the two-letter
-code 'eg', the three-letter code 'egy', and the numeric code 050.
-
-You can either access the codes via the conversion routines
-(described below), or with the two functions which return lists
-of all script codes or all script names.
-
-There are three different code sets you can use for identifying
-scripts:
-
-=over 4
-
-=item B<alpha-2>
-
-Two letter codes, such as 'bo' for Tibetan.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_2>.
-
-=item B<alpha-3>
-
-Three letter codes, such as 'ell' for Greek.
-This code set is identified with the symbol C<LOCALE_CODE_ALPHA_3>.
-
-=item B<numeric>
-
-Numeric codes, such as 410 for Hiragana.
-This code set is identified with the symbol C<LOCALE_CODE_NUMERIC>.
-
-=back
-
-All of the routines take an optional additional argument
-which specifies the code set to use.
-If not specified, it defaults to the two-letter codes.
-This is partly for backwards compatibility (previous versions
-of Locale modules only supported the alpha-2 codes), and
-partly because they are the most widely used codes.
-
-The alpha-2 and alpha-3 codes are not case-dependent,
-so you can use 'BO', 'Bo', 'bO' or 'bo' for Tibetan.
-When a code is returned by one of the functions in
-this module, it will always be lower-case.
-
-=head2 SPECIAL CODES
-
-The standard defines various special codes.
-
-=over 4
-
-=item *
-
-The standard reserves codes in the ranges B<qa> - B<qt>,
-B<qaa> - B<qat>, and B<900> - B<919>, for private use.
-
-=item *
-
-B<zx>, B<zxx>, and B<997>, are the codes for unwritten languages.
-
-=item *
-
-B<zy>, B<zyy>, and B<998>, are the codes for an undetermined script.
+ $script = code2script('phnx'); # 'Phoenician'
+ $code = script2code('Phoenician'); # 'Phnx'
+ $code = script2code('Phoenician',
+ LOCALE_CODE_NUMERIC); # 115
-=item *
+ @codes = all_script_codes();
+ @scripts = all_script_names();
-B<zz>, B<zzz>, and B<999>, are the codes for an uncoded script.
-
-=back
+=head1 DESCRIPTION
-The private codes are not recognised by Locale::Script,
-but the others are.
+The C<Locale::Script> module provides access to standards codes used
+for identifying scripts, such as those defined in ISO 15924.
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+15924 four-letter codes will be used.
-=head1 CONVERSION ROUTINES
+=head1 SUPPORTED CODE SETS
-There are three conversion routines: C<code2script()>, C<script2code()>,
-and C<script_code2code()>.
+There are several different code sets you can use for identifying
+scripts. The ones currently supported are:
=over 4
-=item code2script( CODE, [ CODESET ] )
-
-This function takes a script code and returns a string
-which contains the name of the script identified.
-If the code is not a valid script code, as defined by ISO 15924,
-then C<undef> will be returned:
+=item B<alpha>
- $script = code2script('cy'); # Cyrillic
+This is a set of four-letter (capitalized) codes from ISO 15924
+such as 'Phnx' for Phoenician.
-=item script2code( STRING, [ CODESET ] )
+This code set is identified with the symbol C<LOCALE_SCRIPT_ALPHA>.
-This function takes a script name and returns the corresponding
-script code, if such exists.
-If the argument could not be identified as a script name,
-then C<undef> will be returned:
+The Zxxx, Zyyy, and Zzzz codes are not used.
- $code = script2code('Gothic', LOCALE_CODE_ALPHA_3);
- # $code will now be 'gth'
+This is the default code set.
-The case of the script name is not important.
-See the section L<KNOWN BUGS AND LIMITATIONS> below.
-
-=item script_code2code( CODE, CODESET, CODESET )
-
-This function takes a script code from one code set,
-and returns the corresponding code from another code set.
+=item B<numeric>
- $alpha2 = script_code2code('jwi',
- LOCALE_CODE_ALPHA_3 => LOCALE_CODE_ALPHA_2);
- # $alpha2 will now be 'jw' (Javanese)
+This is a set of three-digit numeric codes from ISO 15924 such as 115
+for Phoenician.
-If the code passed is not a valid script code in
-the first code set, or if there isn't a code for the
-corresponding script in the second code set,
-then C<undef> will be returned.
+This code set is identified with the symbol C<LOCALE_SCRIPT_NUMERIC>.
=back
-
-=head1 QUERY ROUTINES
-
-There are two function which can be used to obtain a list of all codes,
-or all script names:
+=head1 ROUTINES
=over 4
-=item C<all_script_codes ( [ CODESET ] )>
+=item B<code2script ( CODE [,CODESET] )>
-Returns a list of all two-letter script codes.
-The codes are guaranteed to be all lower-case,
-and not in any particular order.
+=item B<script2code ( NAME [,CODESET] )>
-=item C<all_script_names ( [ CODESET ] )>
+=item B<script_code2code ( CODE ,CODESET ,CODESET2 )>
-Returns a list of all script names for which there is a corresponding
-script code in the specified code set.
-The names are capitalised, and not returned in any particular order.
-
-=back
+=item B<all_script_codes ( [CODESET] )>
+=item B<all_script_names ( [CODESET] )>
-=head1 EXAMPLES
+=item B<Locale::Script::rename_script ( CODE ,NEW_NAME [,CODESET] )>
-The following example illustrates use of the C<code2script()> function.
-The user is prompted for a script code, and then told the corresponding
-script name:
+=item B<Locale::Script::add_script ( CODE ,NAME [,CODESET] )>
- $| = 1; # turn off buffering
-
- print "Enter script code: ";
- chop($code = <STDIN>);
- $script = code2script($code, LOCALE_CODE_ALPHA_2);
- if (defined $script)
- {
- print "$code = $script\n";
- }
- else
- {
- print "'$code' is not a valid script code!\n";
- }
+=item B<Locale::Script::delete_script ( CODE [,CODESET] )>
+=item B<Locale::Script::add_script_alias ( NAME ,NEW_NAME )>
-=head1 KNOWN BUGS AND LIMITATIONS
-
-=over 4
-
-=item *
+=item B<Locale::Script::delete_script_alias ( NAME )>
-When using C<script2code()>, the script name must currently appear
-exactly as it does in the source of the module. For example,
+=item B<Locale::Script::rename_script_code ( CODE ,NEW_CODE [,CODESET] )>
- script2code('Egyptian hieroglyphs')
+=item B<Locale::Script::add_script_code_alias ( CODE ,NEW_CODE [,CODESET] )>
-will return B<eg>, as expected. But the following will all return C<undef>:
+=item B<Locale::Script::delete_script_code_alias ( CODE [,CODESET] )>
- script2code('hieroglyphs')
- script2code('Egyptian Hieroglypics')
-
-If there's need for it, a future version could have variants
-for script names.
-
-=item *
-
-In the current implementation, all data is read in when the
-module is loaded, and then held in memory.
-A lazy implementation would be more memory friendly.
+These routines are all documented in the Locale::Codes man page.
=back
=over 4
-=item Locale::Language
-
-ISO two letter codes for identification of language (ISO 639).
-
-=item Locale::Currency
-
-ISO three letter codes for identification of currencies
-and funds (ISO 4217).
-
-=item Locale::Country
+=item B<Locale::Codes>
-ISO three letter codes for identification of countries (ISO 3166)
+=item B<Locale::Constants>
-=item ISO 15924
-
-The ISO standard which defines these codes.
-
-=item http://www.evertype.com/standards/iso15924/
+=item B<http://www.unicode.org/iso15924/>
Home page for ISO 15924.
-
=back
-
=head1 AUTHOR
-Neil Bowers E<lt>neil@bowers.comE<gt>
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck@cpan.org).
=head1 COPYRIGHT
-Copyright (c) 2002-2004 Neil Bowers.
+ Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+ Copyright (c) 2001-2010 Neil Bowers
+ Copyright (c) 2010-2010 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
-
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+
+ if ($test[0] eq "alias_code") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Country::alias_code(@test,"nowarn");
+
+ } elsif ($test[0] eq "country2code") {
+ shift(@test);
+ $test[1] = $type{$test[1]} if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return country2code(@test);
+
+ } else {
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2country(@test);
+ }
+}
+
+$tests = "
+
+gb
+ ~
+ United Kingdom
+
+uk
+ ~
+ _undef_
+
+country2code
+United Kingdom
+ ~
+ gb
+
+alias_code uk gb LOCALE_CODE_FOO ~ 0
+
+alias_code uk x1 ~ 0
+
+alias_code us gb ~ 0
+
+alias_code uk gb LOCALE_CODE_ALPHA_3 ~ 0
+
+gb
+ ~
+ United Kingdom
+
+uk
+ ~
+ _undef_
+
+country2code
+United Kingdom
+ ~
+ gb
+
+alias_code uk gb ~ uk
+
+gb
+ ~
+ United Kingdom
+
+uk
+ ~
+ United Kingdom
+
+country2code
+United Kingdom
+ ~
+ uk
+
+";
+
+print "alias_code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+++ /dev/null
-#!./perl
-#
-# all.t - tests for all_* routines in
-# Locale::Country
-# Locale::Language
-# Locale::Currency
-# Locale::Script
-#
-# There are four tests. We get a list of all codes, convert to
-# language/country/currency, # convert back to code,
-# and check that they're the same. Then we do the same,
-# starting with list of languages/countries/currencies.
-#
-
-use Locale::Country;
-use Locale::Language;
-use Locale::Currency;
-use Locale::Script;
-
-print "1..20\n";
-
-my $code;
-my $language;
-my $country;
-my $ok;
-my $reverse;
-my $currency;
-my $script;
-
-
-#-----------------------------------------------------------------------
-# Old API - without codeset specified, default to ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes())
-{
- $country = code2country($code);
- if (!defined $country)
- {
- $ok = 0;
- last;
- }
- $reverse = country2code($country);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 1\n" : "not ok 1\n");
-
-#-----------------------------------------------------------------------
-# code to country, back to code, for ALPHA2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes(LOCALE_CODE_ALPHA_2))
-{
- $country = code2country($code, LOCALE_CODE_ALPHA_2);
- if (!defined $country)
- {
- $ok = 0;
- last;
- }
- $reverse = country2code($country, LOCALE_CODE_ALPHA_2);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 2\n" : "not ok 2\n");
-
-#-----------------------------------------------------------------------
-# code to country, back to code, for ALPHA3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes(LOCALE_CODE_ALPHA_3))
-{
- $country = code2country($code, LOCALE_CODE_ALPHA_3);
- if (!defined $country)
- {
- $ok = 0;
- last;
- }
- $reverse = country2code($country, LOCALE_CODE_ALPHA_3);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 3\n" : "not ok 3\n");
-
-#-----------------------------------------------------------------------
-# code to country, back to code, for NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_country_codes(LOCALE_CODE_NUMERIC))
-{
- $country = code2country($code, LOCALE_CODE_NUMERIC);
- if (!defined $country)
- {
- $ok = 0;
- last;
- }
- $reverse = country2code($country, LOCALE_CODE_NUMERIC);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 4\n" : "not ok 4\n");
-
-
-#-----------------------------------------------------------------------
-# Old API - country to code, back to country, using default of ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
- $code = country2code($country);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2country($code);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $country)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 5\n" : "not ok 5\n");
-
-#-----------------------------------------------------------------------
-# country to code, back to country, using LOCALE_CODE_ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
- $code = country2code($country, LOCALE_CODE_ALPHA_2);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2country($code, LOCALE_CODE_ALPHA_2);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $country)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 6\n" : "not ok 6\n");
-
-#-----------------------------------------------------------------------
-# country to code, back to country, using LOCALE_CODE_ALPHA_3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
- $code = country2code($country, LOCALE_CODE_ALPHA_3);
- if (!defined $code)
- {
- next if ($country eq 'Antarctica'
- || $country eq 'Bouvet Island'
- || $country eq 'Cocos (Keeling) Islands'
- || $country eq 'Christmas Island'
- || $country eq 'France, Metropolitan'
- || $country eq 'South Georgia and the South Sandwich Islands'
- || $country eq 'Heard Island and McDonald Islands'
- || $country eq 'British Indian Ocean Territory'
- || $country eq 'French Southern Territories'
- || $country eq 'United States Minor Outlying Islands'
- || $country eq 'Mayotte'
- || $country eq 'Zaire');
- $ok = 0;
- last;
- }
- $reverse = code2country($code, LOCALE_CODE_ALPHA_3);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $country)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 7\n" : "not ok 7\n");
-
-#-----------------------------------------------------------------------
-# country to code, back to country, using LOCALE_CODE_NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $country (all_country_names())
-{
- $code = country2code($country, LOCALE_CODE_NUMERIC);
- if (!defined $code)
- {
- next if ($country eq 'Antarctica'
- || $country eq 'Bouvet Island'
- || $country eq 'Cocos (Keeling) Islands'
- || $country eq 'Christmas Island'
- || $country eq 'France, Metropolitan'
- || $country eq 'South Georgia and the South Sandwich Islands'
- || $country eq 'Heard Island and McDonald Islands'
- || $country eq 'British Indian Ocean Territory'
- || $country eq 'French Southern Territories'
- || $country eq 'United States Minor Outlying Islands'
- || $country eq 'Mayotte'
- || $country eq 'Zaire');
- $ok = 0;
- last;
- }
- $reverse = code2country($code, LOCALE_CODE_NUMERIC);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $country)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 8\n" : "not ok 8\n");
-
-
-$ok = 1;
-foreach $code (all_language_codes())
-{
- $language = code2language($code);
- if (!defined $language)
- {
- $ok = 0;
- last;
- }
- $reverse = language2code($language);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 9\n" : "not ok 9\n");
-
-
-$ok = 1;
-foreach $language (all_language_names())
-{
- $code = language2code($language);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2language($code);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $language)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 10\n" : "not ok 10\n");
-
-$ok = 1;
-foreach $code (all_currency_codes())
-{
- $currency = code2currency($code);
- if (!defined $currency)
- {
- $ok = 0;
- last;
- }
- $reverse = currency2code($currency);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- #
- # three special cases:
- # The Kwacha has two codes - used in Zambia and Malawi
- # The Russian Ruble has two codes - rub and rur
- # The Belarussian Ruble has two codes - byb and byr
- if ($reverse ne $code
- && $code ne 'mwk' && $code ne 'zmk'
- && $code ne 'byr' && $code ne 'byb'
- && $code ne 'rub' && $code ne 'rur')
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 11\n" : "not ok 11\n");
-
-$ok = 1;
-foreach $currency (all_currency_names())
-{
- $code = currency2code($currency);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2currency($code);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $currency)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 12\n" : "not ok 12\n");
-
-#=======================================================================
-#
-# Locale::Script tests
-#
-#=======================================================================
-
-#-----------------------------------------------------------------------
-# Old API - without codeset specified, default to ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes())
-{
- $script = code2script($code);
- if (!defined $script)
- {
- $ok = 0;
- last;
- }
- $reverse = script2code($script);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 13\n" : "not ok 13\n");
-
-#-----------------------------------------------------------------------
-# code to script, back to code, for ALPHA2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes(LOCALE_CODE_ALPHA_2))
-{
- $script = code2script($code, LOCALE_CODE_ALPHA_2);
- if (!defined $script)
- {
- $ok = 0;
- last;
- }
- $reverse = script2code($script, LOCALE_CODE_ALPHA_2);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 14\n" : "not ok 14\n");
-
-#-----------------------------------------------------------------------
-# code to script, back to code, for ALPHA3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes(LOCALE_CODE_ALPHA_3))
-{
- $script = code2script($code, LOCALE_CODE_ALPHA_3);
- if (!defined $script)
- {
- $ok = 0;
- last;
- }
- $reverse = script2code($script, LOCALE_CODE_ALPHA_3);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 15\n" : "not ok 15\n");
-
-#-----------------------------------------------------------------------
-# code to script, back to code, for NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $code (all_script_codes(LOCALE_CODE_NUMERIC))
-{
- $script = code2script($code, LOCALE_CODE_NUMERIC);
- if (!defined $script)
- {
- $ok = 0;
- last;
- }
- $reverse = script2code($script, LOCALE_CODE_NUMERIC);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $code)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 16\n" : "not ok 16\n");
-
-
-#-----------------------------------------------------------------------
-# Old API - script to code, back to script, using default of ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
- $code = script2code($script);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2script($code);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $script)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 17\n" : "not ok 17\n");
-
-#-----------------------------------------------------------------------
-# script to code, back to script, using LOCALE_CODE_ALPHA_2
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
- $code = script2code($script, LOCALE_CODE_ALPHA_2);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2script($code, LOCALE_CODE_ALPHA_2);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $script)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 18\n" : "not ok 18\n");
-
-#-----------------------------------------------------------------------
-# script to code, back to script, using LOCALE_CODE_ALPHA_3
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
- $code = script2code($script, LOCALE_CODE_ALPHA_3);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2script($code, LOCALE_CODE_ALPHA_3);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $script)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 19\n" : "not ok 19\n");
-
-#-----------------------------------------------------------------------
-# script to code, back to script, using LOCALE_CODE_NUMERIC
-#-----------------------------------------------------------------------
-$ok = 1;
-foreach $script (all_script_names())
-{
- $code = script2code($script, LOCALE_CODE_NUMERIC);
- if (!defined $code)
- {
- $ok = 0;
- last;
- }
- $reverse = code2script($code, LOCALE_CODE_NUMERIC);
- if (!defined $reverse)
- {
- $ok = 0;
- last;
- }
- if ($reverse ne $script)
- {
- $ok = 0;
- last;
- }
-}
-print ($ok ? "ok 20\n" : "not ok 20\n");
-
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]} if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2country(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+zz ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_NUMERIC ~ _undef_
+
+ja ~ _undef_
+
+uk ~ _undef_
+
+BO
+ ~
+ Bolivia, Plurinational State of
+
+BO
+LOCALE_CODE_ALPHA_2
+ ~
+ Bolivia, Plurinational State of
+
+bol
+LOCALE_CODE_ALPHA_3
+ ~
+ Bolivia (Plurinational State of)
+
+pk ~ Pakistan
+
+sn ~ Senegal
+
+us
+ ~
+ United States
+
+ad ~ Andorra
+
+ad LOCALE_CODE_ALPHA_2 ~ Andorra
+
+and LOCALE_CODE_ALPHA_3 ~ Andorra
+
+020 LOCALE_CODE_NUMERIC ~ Andorra
+
+48 LOCALE_CODE_NUMERIC ~ Bahrain
+
+zw ~ Zimbabwe
+
+gb
+ ~
+ United Kingdom
+
+kz ~ Kazakhstan
+
+mo ~ Macao
+
+tl LOCALE_CODE_ALPHA_2 ~ Timor-Leste
+
+tls LOCALE_CODE_ALPHA_3 ~ Timor-Leste
+
+626 LOCALE_CODE_NUMERIC ~ Timor-Leste
+
+BO LOCALE_CODE_ALPHA_3 ~ _undef_
+
+BO LOCALE_CODE_NUMERIC ~ _undef_
+
+ax
+ ~
+ Aland Islands
+
+ala
+LOCALE_CODE_ALPHA_3
+ ~
+ Aland Islands
+
+248
+LOCALE_CODE_NUMERIC
+ ~
+ Aland Islands
+
+scg
+LOCALE_CODE_ALPHA_3
+ ~
+ _undef_
+
+891
+LOCALE_CODE_NUMERIC
+ ~
+ _undef_
+
+rou LOCALE_CODE_ALPHA_3 ~ Romania
+
+";
+
+print "code2country...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Currency;
+
+%type = ( "LOCALE_CODE_ALPHA" => LOCALE_CODE_ALPHA,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2currency(@test);
+}
+
+$tests = "
+
+ukp ~ _undef_
+
+zz ~ _undef_
+
+zzz ~ _undef_
+
+zzzz ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+BOB
+ ~
+ Boliviano
+
+all
+ ~
+ Lek
+
+bnd
+ ~
+ Brunei Dollar
+
+bob
+ ~
+ Boliviano
+
+byr
+ ~
+ Belarussian Ruble
+
+chf
+ ~
+ Swiss Franc
+
+cop
+ ~
+ Colombian Peso
+
+dkk
+ ~
+ Danish Krone
+
+fjd
+ ~
+ Fiji Dollar
+
+idr
+ ~
+ Rupiah
+
+mmk
+ ~
+ Kyat
+
+mvr
+ ~
+ Rufiyaa
+
+mwk
+ ~
+ Kwacha
+
+rub
+ ~
+ Russian Ruble
+
+zmk
+ ~
+ Zambian Kwacha
+
+zwl
+ ~
+ Zimbabwe Dollar
+
+";
+
+print "code2currency...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Language;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_TERM" => LOCALE_CODE_TERM,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2language(@test);
+}
+
+$tests = "
+
+in ~ _undef_
+
+iw ~ _undef_
+
+ji ~ _undef_
+
+jp ~ _undef_
+
+sh ~ _undef_
+
+zz ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+DA
+ ~
+ Danish
+
+aa
+ ~
+ Afar
+
+ae
+ ~
+ Avestan
+
+bs
+ ~
+ Bosnian
+
+ce
+ ~
+ Chechen
+
+ch
+ ~
+ Chamorro
+
+cu
+ ~
+ Church Slavic
+
+cv
+ ~
+ Chuvash
+
+en
+ ~
+ English
+
+eo
+ ~
+ Esperanto
+
+fi
+ ~
+ Finnish
+
+gv
+ ~
+ Manx
+
+he
+ ~
+ Hebrew
+
+ho
+ ~
+ Hiri Motu
+
+hz
+ ~
+ Herero
+
+id
+ ~
+ Indonesian
+
+iu
+ ~
+ Inuktitut
+
+ki
+ ~
+ Kikuyu
+
+kj
+ ~
+ Kuanyama
+
+kv
+ ~
+ Komi
+
+kw
+ ~
+ Cornish
+
+lb
+ ~
+ Luxembourgish
+
+mh
+ ~
+ Marshallese
+
+nb
+ ~
+ Bokmal, Norwegian
+
+nd
+ ~
+ Ndebele, North
+
+ng
+ ~
+ Ndonga
+
+nn
+ ~
+ Norwegian Nynorsk
+
+nr
+ ~
+ Ndebele, South
+
+nv
+ ~
+ Navajo
+
+ny
+ ~
+ Chichewa
+
+oc
+ ~
+ Occitan (post 1500)
+
+os
+ ~
+ Ossetian
+
+pi
+ ~
+ Pali
+
+sc
+ ~
+ Sardinian
+
+se
+ ~
+ Northern Sami
+
+ug
+ ~
+ Uighur
+
+yi
+ ~
+ Yiddish
+
+za
+ ~
+ Zhuang
+
+zu
+ ~
+ Zulu
+
+";
+
+print "code2language...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Script;
+
+%type = ( "LOCALE_SCRIPT_ALPHA" => LOCALE_SCRIPT_ALPHA,
+ "LOCALE_SCRIPT_NUMERIC" => LOCALE_SCRIPT_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2script(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+Phnx ~ Phoenician
+
+phnx ~ Phoenician
+
+115 LOCALE_SCRIPT_NUMERIC ~ Phoenician
+
+";
+
+print "code2script...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+++ /dev/null
-#!./perl
-#
-# constants.t - tests for Locale::Constants
-#
-
-use Locale::Constants;
-
-print "1..3\n";
-
-if (defined LOCALE_CODE_ALPHA_2
- && defined LOCALE_CODE_ALPHA_3
- && defined LOCALE_CODE_NUMERIC)
-{
- print "ok 1\n";
-}
-else
-{
- print "not ok 1\n";
-}
-
-if (LOCALE_CODE_ALPHA_2 != LOCALE_CODE_ALPHA_3
- && LOCALE_CODE_ALPHA_2 != LOCALE_CODE_NUMERIC
- && LOCALE_CODE_ALPHA_3 != LOCALE_CODE_NUMERIC)
-{
- print "ok 2\n";
-}
-else
-{
- print "not ok 2\n";
-}
-
-if (defined LOCALE_CODE_DEFAULT
- && (LOCALE_CODE_DEFAULT == LOCALE_CODE_ALPHA_2
- || LOCALE_CODE_DEFAULT == LOCALE_CODE_ALPHA_3
- || LOCALE_CODE_DEFAULT == LOCALE_CODE_NUMERIC))
-{
- print "ok 3\n";
-}
-else
-{
- print "not ok 3\n";
-}
-
-exit 0;
-#!./perl
-#
-# country.t - tests for Locale::Country
-#
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+unshift(@INC,$dir);
use Locale::Country;
-#-----------------------------------------------------------------------
-# This is an array of tests specs. Each spec is [TEST, OK_TO_DIE]
-# Each TEST is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N". If the eval dies, then the OK_TO_DIE flag is checked.
-# If it is true (1), the test is treated as passing, otherwise it failed.
-#-----------------------------------------------------------------------
-@TESTS =
-(
- #================================================
- # TESTS FOR code2country
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2country()', 0], # no argument
- ['!defined code2country(undef)', 0], # undef argument
- ['!defined code2country("zz")', 0], # illegal code
- ['!defined code2country("zz", LOCALE_CODE_ALPHA_2)', 0], # illegal code
- ['!defined code2country("zz", LOCALE_CODE_ALPHA_3)', 0], # illegal code
- ['!defined code2country("zz", LOCALE_CODE_NUMERIC)', 0], # illegal code
- ['!defined code2country("ja")', 0], # should be jp for country
- ['!defined code2country("uk")', 0], # should be jp for country
-
- #---- some successful examples -----------------------------------------
- ['code2country("BO") eq "Bolivia"', 0],
- ['code2country("BO", LOCALE_CODE_ALPHA_2) eq "Bolivia"', 0],
- ['code2country("bol", LOCALE_CODE_ALPHA_3) eq "Bolivia"', 0],
- ['code2country("pk") eq "Pakistan"', 0],
- ['code2country("sn") eq "Senegal"', 0],
- ['code2country("us") eq "United States"', 0],
- ['code2country("ad") eq "Andorra"', 0], # first in DATA segment
- ['code2country("ad", LOCALE_CODE_ALPHA_2) eq "Andorra"', 0],
- ['code2country("and", LOCALE_CODE_ALPHA_3) eq "Andorra"', 0],
- ['code2country("020", LOCALE_CODE_NUMERIC) eq "Andorra"', 0],
- ['code2country(48, LOCALE_CODE_NUMERIC) eq "Bahrain"', 0],
- ['code2country("zw") eq "Zimbabwe"', 0], # last in DATA segment
- ['code2country("gb") eq "United Kingdom"', 0], # United Kingdom is "gb", not "uk"
-
- #-- tests added after changes in the standard 2002-05-20 ------
- ['code2country("kz") eq "Kazakhstan"', 0],
- ['country2code("kazakhstan") eq "kz"', 0],
- ['country2code("kazakstan") eq "kz"', 0],
-
- ['code2country("mo") eq "Macao"', 0],
- ['country2code("macao") eq "mo"', 0],
- ['country2code("macau") eq "mo"', 0],
-
- ['code2country("tl", LOCALE_CODE_ALPHA_2) eq "Timor-Leste"', 0],
- ['code2country("tls", LOCALE_CODE_ALPHA_3) eq "Timor-Leste"', 0],
- ['code2country("626", LOCALE_CODE_NUMERIC) eq "Timor-Leste"', 0],
-
- #================================================
- # TESTS FOR country2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2country("BO", LOCALE_CODE_ALPHA_3)', 0],
- ['!defined code2country("BO", LOCALE_CODE_NUMERIC)', 0],
- ['!defined country2code()', 0], # no argument
- ['!defined country2code(undef)', 0], # undef argument
- ['!defined country2code("Banana")', 0], # illegal country name
-
- #---- some successful examples -----------------------------------------
- ['country2code("japan") eq "jp"', 0],
- ['country2code("japan") ne "ja"', 0],
- ['country2code("Japan") eq "jp"', 0],
- ['country2code("United States") eq "us"', 0],
- ['country2code("United Kingdom") eq "gb"', 0],
- ['country2code("Andorra") eq "ad"', 0], # first in DATA
- ['country2code("Zimbabwe") eq "zw"', 0], # last in DATA
- ['country2code("Iran") eq "ir"', 0], # alias
- ['country2code("North Korea") eq "kp"', 0], # alias
- ['country2code("South Korea") eq "kr"', 0], # alias
- ['country2code("Libya") eq "ly"', 0], # alias
- ['country2code("Syria") eq "sy"', 0], # alias
- ['country2code("Svalbard") eq "sj"', 0], # alias
- ['country2code("Jan Mayen") eq "sj"', 0], # alias
- ['country2code("USA") eq "us"', 0], # alias
- ['country2code("United States of America") eq "us"', 0], # alias
- ['country2code("Great Britain") eq "gb"', 0], # alias
-
- #================================================
- # TESTS FOR country_code2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined country_code2code("bo", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined country_code2code("zz", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined country_code2code("zz", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined country_code2code("zz", LOCALE_CODE_ALPHA_2)', 1],
- ['!defined country_code2code("bo", LOCALE_CODE_ALPHA_2)', 1],
- ['!defined country_code2code()', 1], # no argument
- ['!defined country_code2code(undef)', 1], # undef argument
-
- #---- some successful examples -----------------------------------------
- ['country_code2code("BO", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3) eq "bol"', 0],
- ['country_code2code("bol", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "bo"', 0],
- ['country_code2code("zwe", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "zw"', 0],
- ['country_code2code("858", LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "ury"', 0],
- ['country_code2code(858, LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "ury"', 0],
- ['country_code2code("tr", LOCALE_CODE_ALPHA_2, LOCALE_CODE_NUMERIC) eq "792"', 0],
-
- #-- tests added for 2.07 release
- ['country2code("Burma") eq "mm"', 0], # alias
- ['country2code("French Southern and Antarctic Lands") eq "tf"', 0], # alias
- ['code2country("ax") eq "Aland Islands"', 0],
- ['country2code("Aland Islands") eq "ax"', 0],
- ['code2country("ala", LOCALE_CODE_ALPHA_3) eq "Aland Islands"', 0],
- ['code2country("248", LOCALE_CODE_NUMERIC) eq "Aland Islands"', 0],
-
- ['country2code("Yugoslavia") eq "cs"', 0], # alias (old name)
- ['country2code("Serbia and Montenegro") eq "cs"', 0], # new name
- ['code2country("scg", LOCALE_CODE_ALPHA_3) eq "Serbia and Montenegro"', 0],
- ['code2country("891", LOCALE_CODE_NUMERIC) eq "Serbia and Montenegro"', 0],
-
- ['country2code("East Timor") eq "tl"', 0], # alias (provisional name)
- ['code2country("rou", LOCALE_CODE_ALPHA_3) eq "Romania"', 0],
-
- ['country2code("Zaire") eq "cd"', 0], # alias (old name)
- ['country2code("Congo, The Democratic Republic of the") eq "cd"', 0], # new name
- ['country2code("Congo, The Democratic Republic of the", LOCALE_CODE_ALPHA_3) eq "cod"', 0], # new name
- ['country2code("Congo, The Democratic Republic of the", LOCALE_CODE_NUMERIC) eq "180"', 0], # new name
-
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
- eval "print (($test->[0]) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
- if ($@)
- {
- if (!$test->[1])
- {
- print "not ok $testid\n";
- }
- else
- {
- print "ok $testid\n";
- }
- }
- ++$testid;
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ "LOCALE_CODE_FIPS" => LOCALE_CODE_FIPS,
+ );
+
+sub test {
+ my(@test) = @_;
+
+ if ($test[0] eq "rename_country") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Country::rename_country(@test,"nowarn");
+
+ } elsif ($test[0] eq "add_country") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Country::add_country(@test,"nowarn");
+
+ } elsif ($test[0] eq "delete_country") {
+ shift(@test);
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return Locale::Country::delete_country(@test,"nowarn");
+
+ } elsif ($test[0] eq "add_country_alias") {
+ shift(@test);
+ return Locale::Country::add_country_alias(@test,"nowarn");
+
+ } elsif ($test[0] eq "delete_country_alias") {
+ shift(@test);
+ return Locale::Country::delete_country_alias(@test,"nowarn");
+
+ } elsif ($test[0] eq "rename_country_code") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Country::rename_country_code(@test,"nowarn");
+
+ } elsif ($test[0] eq "add_country_code_alias") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Country::add_country_code_alias(@test,"nowarn");
+
+ } elsif ($test[0] eq "delete_country_code_alias") {
+ shift(@test);
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return Locale::Country::delete_country_code_alias(@test,"nowarn");
+
+ } elsif ($test[0] eq "country2code") {
+ shift(@test);
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return country2code(@test);
+
+ } else {
+ shift(@test) if ($test[0] eq "code2country");
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2country(@test);
+ }
}
-exit 0;
+$tests = "
+
+###################################
+# Test rename_country
+
+gb
+ ~
+ United Kingdom
+
+rename_country x1 NewName ~ 0
+
+rename_country gb NewName LOCALE_CODE_FOO ~ 0
+
+rename_country gb Macao ~ 0
+
+rename_country gb NewName LOCALE_CODE_ALPHA_3 ~ 0
+
+gb
+ ~
+ United Kingdom
+
+rename_country gb NewName ~ 1
+
+gb
+ ~
+ NewName
+
+###################################
+# Test add_country
+
+xx ~ _undef_
+
+add_country xx Bolivia ~ 0
+
+add_country fi Xxxxx ~ 0
+
+add_country xx Xxxxx ~ 1
+
+xx ~ Xxxxx
+
+###################################
+# Test add_country_alias
+
+add_country_alias FooBar NewName ~ 0
+
+add_country_alias Australia Angola ~ 0
+
+country2code Australia ~ au
+
+country2code DownUnder ~ _undef_
+
+add_country_alias Australia DownUnder ~ 1
+
+country2code DownUnder ~ au
+
+###################################
+# Test delete_country_alias
+
+country2code uk ~ gb
+
+delete_country_alias Foobar ~ 0
+
+delete_country_alias UK ~ 1
+
+country2code uk ~ _undef_
+
+delete_country_alias Angola ~ 0
+
+###################################
+# Test delete_country
+
+country2code Angola ~ ao
+
+country2code Angola LOCALE_CODE_ALPHA_3 ~ ago
+
+delete_country ao ~ 1
+
+country2code Angola ~ _undef_
+
+country2code Angola LOCALE_CODE_ALPHA_3 ~ ago
+
+###################################
+# Test rename_country_code
+
+code2country zz ~ _undef_
+
+code2country ar ~ Argentina
+
+country2code Argentina ~ ar
+
+rename_country_code ar us ~ 0
+
+rename_country_code ar zz ~ 1
+
+rename_country_code us ar ~ 0
+
+code2country zz ~ Argentina
+
+code2country ar ~ Argentina
+
+country2code Argentina ~ zz
+
+rename_country_code zz ar ~ 1
+
+code2country zz ~ Argentina
+
+code2country ar ~ Argentina
+
+country2code Argentina ~ ar
+
+###################################
+# Test add_country_code_alias and
+# delete_country_code_alias
+
+code2country bm ~ Bermuda
+
+code2country yy ~ _undef_
+
+country2code Bermuda ~ bm
+
+add_country_code_alias bm us ~ 0
+
+add_country_code_alias bm zz ~ 0
+
+add_country_code_alias bm yy ~ 1
+
+code2country bm ~ Bermuda
+
+code2country yy ~ Bermuda
+
+country2code Bermuda ~ bm
+
+delete_country_code_alias us ~ 0
+
+delete_country_code_alias ww ~ 0
+
+delete_country_code_alias yy ~ 1
+
+code2country bm ~ Bermuda
+
+code2country yy ~ _undef_
+
+country2code Bermuda ~ bm
+
+";
+
+print "country (semi-private)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]} if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return country2code(@test);
+}
+
+$tests = "
+
+kazakhstan
+ ~
+ kz
+
+kazakstan
+ ~
+ kz
+
+macao
+ ~
+ mo
+
+macau
+ ~
+ mo
+
+
+~ _undef_
+
+_undef_
+ ~
+ _undef_
+
+Banana
+ ~
+ _undef_
+
+japan
+ ~
+ jp
+
+Japan
+ ~
+ jp
+
+United States
+ ~
+ us
+
+United Kingdom
+ ~
+ gb
+
+Andorra
+ ~
+ ad
+
+Zimbabwe
+ ~
+ zw
+
+Iran
+ ~
+ ir
+
+North Korea
+ ~
+ kp
+
+South Korea
+ ~
+ kr
+
+Libya
+ ~
+ ly
+
+Syria
+ ~
+ sy
+
+Svalbard
+ ~
+ _undef_
+
+Jan Mayen
+ ~
+ _undef_
+
+USA
+ ~
+ us
+
+United States of America
+ ~
+ us
+
+Great Britain
+ ~
+ gb
+
+Burma
+ ~
+ mm
+
+French Southern and Antarctic Lands
+ ~
+ tf
+
+Aland Islands
+ ~
+ ax
+
+Yugoslavia
+ ~
+ _undef_
+
+Serbia and Montenegro
+ ~
+ _undef_
+
+East Timor
+ ~
+ tl
+
+Zaire
+ ~
+ _undef_
+
+Congo, The Democratic Republic of the
+ ~
+ cd
+
+Congo, The Democratic Republic of the
+LOCALE_CODE_ALPHA_3
+ ~
+ cod
+
+Congo, The Democratic Republic of the
+LOCALE_CODE_NUMERIC
+ ~
+ 180
+
+";
+
+print "country2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+use Locale::Constants;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ );
+
+sub test {
+ my($code,$type_in,$type_out) = @_;
+ $type_in = $type{$type_in} if ($type_in && exists $type{$type_in});
+ $type_out = $type{$type_out} if ($type_out && exists $type{$type_out});
+
+ return country_code2code($code,$type_in,$type_out);
+}
+
+$tests = "
+
+bo LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_2 ~ bo
+
+bo LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 0 ~ _undef_
+
+bo LOCALE_CODE_ALPHA_2 0 ~ _undef_
+
+_blank_ 0 0 ~ _undef_
+
+BO LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 ~ bol
+
+bol LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_2 ~ bo
+
+zwe LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_2 ~ zw
+
+858 LOCALE_CODE_NUMERIC LOCALE_CODE_ALPHA_3 ~ ury
+
+858 LOCALE_CODE_NUMERIC LOCALE_CODE_ALPHA_3 ~ ury
+
+tr LOCALE_CODE_ALPHA_2 LOCALE_CODE_NUMERIC ~ 792
+
+";
+
+print "country_code2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+++ /dev/null
-#!./perl
-#
-# currency.t - tests for Locale::Currency
-#
-use Locale::Currency;
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
- #================================================
- # TESTS FOR code2currency
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2currency()', # no argument => undef returned
- '!defined code2currency(undef)', # undef arg => undef returned
- '!defined code2currency("zz")', # illegal code => undef
- '!defined code2currency("zzzz")', # illegal code => undef
- '!defined code2currency("zzz")', # illegal code => undef
- '!defined code2currency("ukp")', # gbp for sterling, not ukp
-
- #---- misc tests -------------------------------------------------------
- 'code2currency("all") eq "Lek"',
- 'code2currency("ats") eq "Schilling"',
- 'code2currency("bob") eq "Boliviano"',
- 'code2currency("bnd") eq "Brunei Dollar"',
- 'code2currency("cop") eq "Colombian Peso"',
- 'code2currency("dkk") eq "Danish Krone"',
- 'code2currency("fjd") eq "Fiji Dollar"',
- 'code2currency("idr") eq "Rupiah"',
- 'code2currency("chf") eq "Swiss Franc"',
- 'code2currency("mvr") eq "Rufiyaa"',
- 'code2currency("mmk") eq "Kyat"',
- 'code2currency("mwk") eq "Kwacha"', # two different codes for Kwacha
- 'code2currency("zmk") eq "Kwacha"', # used in Zambia and Malawi
- 'code2currency("byr") eq "Belarussian Ruble"', # 2 codes for belarussian ruble
- 'code2currency("byb") eq "Belarussian Ruble"', #
- 'code2currency("rub") eq "Russian Ruble"', # 2 codes for russian ruble
- 'code2currency("rur") eq "Russian Ruble"', #
-
- #---- some successful examples -----------------------------------------
- 'code2currency("BOB") eq "Boliviano"',
- 'code2currency("adp") eq "Andorran Peseta"', # first in DATA segment
- 'code2currency("zwd") eq "Zimbabwe Dollar"', # last in DATA segment
-
- #================================================
- # TESTS FOR currency2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined currency2code()', # no argument => undef returned
- '!defined currency2code(undef)', # undef arg => undef returned
- '!defined currency2code("")', # empty string => undef returned
- '!defined currency2code("Banana")', # illegal curr name => undef
-
- #---- some successful examples -----------------------------------------
- 'currency2code("Kroon") eq "eek"',
- 'currency2code("Markka") eq "fim"',
- 'currency2code("Riel") eq "khr"',
- 'currency2code("PULA") eq "bwp"',
- 'currency2code("Andorran Peseta") eq "adp"', # first in DATA segment
- 'currency2code("Zimbabwe Dollar") eq "zwd"', # last in DATA segment
- 'currency2code("Canadian Dollar") eq "cad"', # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
- eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
- print "not ok $testid\n" if $@;
- ++$testid;
-}
-
-exit 0;
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Currency;
+
+%type = ( "LOCALE_CODE_ALPHA" => LOCALE_CODE_ALPHA,
+ "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return currency2code(@test);
+}
+
+$tests = "
+
+_blank_ ~ _undef_
+
+Banana ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+
+Canadian Dollar
+ ~
+ CAD
+
+Kroon
+ ~
+ EEK
+
+PULA
+ ~
+ BWP
+
+Riel
+ ~
+ KHR
+
+Zimbabwe Dollar
+ ~
+ ZWL
+
+";
+
+print "currency2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
-#!./perl
-#
-# language.t - tests for Locale::Language
-#
-
-BEGIN {
- chdir 't' if -d 't';
- #@INC = '../lib';
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
}
+unshift(@INC,$dir);
use Locale::Language;
-no utf8; # we contain Latin-1
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
- #================================================
- # TESTS FOR code2language
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2language()', # no argument => undef returned
- '!defined code2language(undef)', # undef arg => undef returned
- '!defined code2language("zz")', # illegal code => undef
- '!defined code2language("jp")', # ja for lang, jp for country
-
- #---- test recent changes ----------------------------------------------
- 'code2language("ae") eq "Avestan"',
- 'code2language("bs") eq "Bosnian"',
- 'code2language("ch") eq "Chamorro"',
- 'code2language("ce") eq "Chechen"',
- 'code2language("cu") eq "Church Slavic"',
- 'code2language("cv") eq "Chuvash"',
- 'code2language("hz") eq "Herero"',
- 'code2language("ho") eq "Hiri Motu"',
- 'code2language("ki") eq "Kikuyu"',
- 'code2language("kj") eq "Kuanyama"',
- 'code2language("kv") eq "Komi"',
- 'code2language("mh") eq "Marshall"',
- 'code2language("nv") eq "Navajo"',
- 'code2language("nr") eq "Ndebele, South"',
- 'code2language("nd") eq "Ndebele, North"',
- 'code2language("ng") eq "Ndonga"',
- 'code2language("nn") eq "Norwegian Nynorsk"',
- 'code2language("nb") eq "Norwegian Bokmal"',
- 'code2language("ny") eq "Chichewa; Nyanja"',
- 'code2language("oc") eq "Occitan (post 1500)"',
- 'code2language("os") eq "Ossetian; Ossetic"',
- 'code2language("pi") eq "Pali"',
- '!defined code2language("sh")', # Serbo-Croatian withdrawn
- 'code2language("se") eq "Sami"',
- 'code2language("sc") eq "Sardinian"',
- 'code2language("kw") eq "Cornish"',
- 'code2language("gv") eq "Manx"',
- 'code2language("lb") eq "Letzeburgesch"',
- 'code2language("he") eq "Hebrew"',
- '!defined code2language("iw")', # Hebrew withdrawn
- 'code2language("id") eq "Indonesian"',
- '!defined code2language("in")', # Indonesian withdrawn
- 'code2language("iu") eq "Inuktitut"',
- 'code2language("ug") eq "Uighur"',
- '!defined code2language("ji")', # Yiddish withdrawn
- 'code2language("yi") eq "Yiddish"',
- 'code2language("za") eq "Zhuang"',
-
- #---- some successful examples -----------------------------------------
- 'code2language("DA") eq "Danish"',
- 'code2language("eo") eq "Esperanto"',
- 'code2language("fi") eq "Finnish"',
- 'code2language("en") eq "English"',
- 'code2language("aa") eq "Afar"', # first in DATA segment
- 'code2language("zu") eq "Zulu"', # last in DATA segment
-
- #================================================
- # TESTS FOR language2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined language2code()', # no argument => undef returned
- '!defined language2code(undef)', # undef arg => undef returned
- '!defined language2code("Banana")', # illegal lang name => undef
-
- #---- some successful examples -----------------------------------------
- 'language2code("Japanese") eq "ja"',
- 'language2code("japanese") eq "ja"',
- 'language2code("japanese") ne "jp"',
- 'language2code("French") eq "fr"',
- 'language2code("Greek") eq "el"',
- 'language2code("english") eq "en"',
- 'language2code("ESTONIAN") eq "et"',
- 'language2code("Afar") eq "aa"', # first in DATA segment
- 'language2code("Zulu") eq "zu"', # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
- eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
- print "not ok $testid\n" if $@;
- ++$testid;
+%type = ( "LOCALE_LANG_ALPHA_2" => LOCALE_LANG_ALPHA_2,
+ "LOCALE_LANG_ALPHA_3" => LOCALE_LANG_ALPHA_3,
+ "LOCALE_LANG_TERM" => LOCALE_LANG_TERM,
+ );
+
+sub test {
+ my(@test) = @_;
+
+ if ($test[0] eq "rename_language") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Language::rename_language(@test,"nowarn");
+
+ } elsif ($test[0] eq "add_language") {
+ shift(@test);
+ $test[2] = $type{$test[2]}
+ if (@test == 3 && $test[2] && exists $type{$test[2]});
+ return Locale::Language::add_language(@test,"nowarn");
+
+ } elsif ($test[0] eq "delete_language") {
+ shift(@test);
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return Locale::Language::delete_language(@test,"nowarn");
+
+ } elsif ($test[0] eq "add_language_alias") {
+ shift(@test);
+ return Locale::Language::add_language_alias(@test,"nowarn");
+
+ } elsif ($test[0] eq "delete_language_alias") {
+ shift(@test);
+ return Locale::Language::delete_language_alias(@test,"nowarn");
+
+ } elsif ($test[0] eq "language2code") {
+ shift(@test);
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return language2code(@test);
+
+ } else {
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return code2language(@test);
+ }
}
-exit 0;
+$tests = "
+
+zu ~ Zulu
+
+rename_language zu NewName LOCALE_LANG_FOO ~ 0
+
+rename_language zu English LOCALE_LANG_ALPHA_2 ~ 0
+
+rename_language zu NewName LOCALE_LANG_ALPHA_3 ~ 0
+
+zu ~ Zulu
+
+rename_language zu NewName LOCALE_LANG_ALPHA_2 ~ 1
+
+zu ~ NewName
+
+";
+
+print "language (semi-private)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Language;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+ "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+ "LOCALE_CODE_TERM" => LOCALE_CODE_TERM,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return language2code(@test);
+}
+
+$tests = "
+
+Banana ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+Afar
+ ~
+ aa
+
+ESTONIAN
+ ~
+ et
+
+French
+ ~
+ fr
+
+Greek
+ ~
+ el
+
+Japanese
+ ~
+ ja
+
+Zulu
+ ~
+ zu
+
+english
+ ~
+ en
+
+japanese
+ ~
+ ja
+
+";
+
+print "language2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+++ /dev/null
-#!./perl
-#
-# rename.t - tests for Locale::Country with "uk" aliases to "gb"
-#
-
-use Locale::Country;
-
-local $SIG{__WARN__} = sub { }; # muffle warnings from carp
-
-Locale::Country::rename_country('gb' => 'Great Britain');
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
- #================================================
- # TESTS FOR code2country
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2country()', # no argument
- '!defined code2country(undef)', # undef argument
- '!defined code2country("zz")', # illegal code
- '!defined code2country("ja")', # should be jp for country
- '!defined code2country("uk")', # code for United Kingdom is 'gb'
-
- #---- this call should return 0, since code doesn't exist --------------
- '!Locale::Country::rename_country("ukz", "United Karz")',
-
- #---- some successful examples -----------------------------------------
- 'code2country("BO") eq "Bolivia"',
- 'code2country("pk") eq "Pakistan"',
- 'code2country("sn") eq "Senegal"',
- 'code2country("us") eq "United States"',
- 'code2country("ad") eq "Andorra"', # first in DATA segment
- 'code2country("zw") eq "Zimbabwe"', # last in DATA segment
- 'code2country("gb") eq "Great Britain"', # normally "United Kingdom"
-
- #================================================
- # TESTS FOR country2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined country2code()', # no argument
- '!defined country2code(undef)', # undef argument
- '!defined country2code("Banana")', # illegal country name
-
- #---- some successful examples -----------------------------------------
- 'country2code("japan") eq "jp"',
- 'country2code("japan") ne "ja"',
- 'country2code("Japan") eq "jp"',
- 'country2code("United States") eq "us"',
-
- 'country2code("Great Britain") eq "gb"',
- 'country2code("Great Britain", LOCALE_CODE_ALPHA_3) eq "gbr"',
- 'country2code("Great Britain", LOCALE_CODE_NUMERIC) eq "826"',
-
- 'country2code("United Kingdom") eq "gb"',
- 'country2code("United Kingdom", LOCALE_CODE_ALPHA_3) eq "gbr"',
- 'country2code("United Kingdom", LOCALE_CODE_NUMERIC) eq "826"',
-
- 'country2code("Andorra") eq "ad"', # first in DATA segment
- 'country2code("Zimbabwe") eq "zw"', # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
- eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
- print "not ok $testid\n" if $@;
- ++$testid;
-}
-
-exit 0;
+++ /dev/null
-#!./perl
-#
-# script.t - tests for Locale::Script
-#
-
-use Locale::Script;
-
-#-----------------------------------------------------------------------
-# This is an array of tests specs. Each spec is [TEST, OK_TO_DIE]
-# Each TEST is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N". If the eval dies, then the OK_TO_DIE flag is checked.
-# If it is true (1), the test is treated as passing, otherwise it failed.
-#-----------------------------------------------------------------------
-@TESTS =
-(
- #================================================
- # TESTS FOR code2script
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2script()', 0], # no argument
- ['!defined code2script(undef)', 0], # undef argument
- ['!defined code2script("aa")', 0], # illegal code
- ['!defined code2script("aa", LOCALE_CODE_ALPHA_2)', 0], # illegal code
- ['!defined code2script("aa", LOCALE_CODE_ALPHA_3)', 0], # illegal code
- ['!defined code2script("aa", LOCALE_CODE_NUMERIC)', 0], # illegal code
-
- #---- some successful examples -----------------------------------------
- ['code2script("BO") eq "Tibetan"', 0],
- ['code2script("Bo") eq "Tibetan"', 0],
- ['code2script("bo") eq "Tibetan"', 0],
- ['code2script("bo", LOCALE_CODE_ALPHA_2) eq "Tibetan"', 0],
- ['code2script("bod", LOCALE_CODE_ALPHA_3) eq "Tibetan"', 0],
- ['code2script("330", LOCALE_CODE_NUMERIC) eq "Tibetan"', 0],
-
- ['code2script("yi", LOCALE_CODE_ALPHA_2) eq "Yi"', 0], # last in DATA
- ['code2script("Yii", LOCALE_CODE_ALPHA_3) eq "Yi"', 0],
- ['code2script("460", LOCALE_CODE_NUMERIC) eq "Yi"', 0],
-
- ['code2script("am") eq "Aramaic"', 0], # first in DATA segment
-
-
- #================================================
- # TESTS FOR script2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined code2script("BO", LOCALE_CODE_ALPHA_3)', 0],
- ['!defined code2script("BO", LOCALE_CODE_NUMERIC)', 0],
- ['!defined script2code()', 0], # no argument
- ['!defined script2code(undef)', 0], # undef argument
- ['!defined script2code("Banana")', 0], # illegal script name
-
- #---- some successful examples -----------------------------------------
- ['script2code("meroitic") eq "me"', 0],
- ['script2code("burmese") eq "my"', 0],
- ['script2code("Pahlavi") eq "ph"', 0],
- ['script2code("Vai", LOCALE_CODE_ALPHA_3) eq "vai"', 0],
- ['script2code("Tamil", LOCALE_CODE_NUMERIC) eq "346"', 0],
- ['script2code("Latin") eq "la"', 0],
- ['script2code("Latin", LOCALE_CODE_ALPHA_3) eq "lat"', 0],
-
- #================================================
- # TESTS FOR script_code2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- ['!defined script_code2code("bo", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined script_code2code("aa", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined script_code2code("aa", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_3)', 0],
- ['!defined script_code2code("aa", LOCALE_CODE_ALPHA_2)', 1],
- ['!defined script_code2code()', 1], # no argument
- ['!defined script_code2code(undef)', 1], # undef argument
-
- #---- some successful examples -----------------------------------------
- ['script_code2code("BO", LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3) eq "bod"', 0],
- ['script_code2code("bod", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "bo"', 0],
- ['script_code2code("Phx", LOCALE_CODE_ALPHA_3, LOCALE_CODE_ALPHA_2) eq "ph"', 0],
- ['script_code2code("295", LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "pqd"', 0],
- ['script_code2code(170, LOCALE_CODE_NUMERIC, LOCALE_CODE_ALPHA_3) eq "tna"', 0],
- ['script_code2code("rr", LOCALE_CODE_ALPHA_2, LOCALE_CODE_NUMERIC) eq "620"', 0],
-
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
- eval "print (($test->[0]) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
- if ($@)
- {
- if (!$test->[1])
- {
- print "not ok $testid\n";
- }
- else
- {
- print "ok $testid\n";
- }
- }
- ++$testid;
-}
-
-exit 0;
--- /dev/null
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+ require "t/testfunc.pl";
+ $dir="./lib";
+ $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+ require "testfunc.pl";
+ $dir="../lib";
+ $tdir=".";
+} else {
+ die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Script;
+
+%type = ( "LOCALE_SCRIPT_ALPHA" => LOCALE_SCRIPT_ALPHA,
+ "LOCALE_SCRIPT_NUMERIC" => LOCALE_SCRIPT_NUMERIC,
+ );
+
+sub test {
+ my(@test) = @_;
+ $test[1] = $type{$test[1]}
+ if (@test == 2 && $test[1] && exists $type{$test[1]});
+ return script2code(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+Phoenician ~ Phnx
+
+Phoenician LOCALE_SCRIPT_NUMERIC ~ 115
+
+";
+
+print "script2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
--- /dev/null
+#!/usr/bin/perl -w
+# Copyright (c) 1996-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+# SB_TEST.PL
+###############################################################################
+# HISTORY
+#
+# 1996-??-?? Wrote initial version for Date::Manip module
+#
+# 1996-2001 Numerous changes
+#
+# 2001-03-29 Rewrote to make it easier to drop in for any module.
+#
+# 2001-06-19 Modifications to make space delimited stuff work better.
+#
+# 2001-08-23 Added support for undef args.
+#
+# 2007-08-14 Better support for undef/blank args.
+#
+# 2008-01-02 Better handling of $runtests.
+#
+# 2008-01-24 Better handling of undef/blank args when arguements are
+# entered as lists instead of strings.
+#
+# 2008-01-25 Created a global $testnum variable to store the test number
+# in.
+#
+# 2008-11-05 Slightly better handling of blank/undef in returned values.
+#
+# 2009-09-01 Added "-l" value to $runtests.
+#
+# 2009-09-30 Much better support for references.
+#
+# 2010-02-05 Fixed bug in passing tests as lists
+#
+# 2010-04-05 Renamed to testfunc.pl to avoid being called in a core module
+
+###############################################################################
+
+use Storable qw(dclone);
+
+# Usage: test_Func($funcref,$tests,$runtests,@extra)=@_;
+#
+# This takes a series of tests, runs them, compares the output of the tests
+# with expected output, and reports any differences. Each test consists of
+# several parts:
+# a function passed in as a reference ($funcref)
+# a series of arguments to be passed to the function
+# the expected output from the function call
+#
+# Tests may be passed in in two methods: as a string, or as a reference.
+#
+# Using the string case, $tests is a newline delimited string. Each test
+# takes one or more lines of the string. Tests are separated from each
+# other by a blank line.
+#
+# Arguments and return value(s) may be written as a single line:
+# ARG1 ARG2 ... ARGn ~ VAL1 VAL2 ... VALm
+# or as multiple lines:
+# ARG1
+# ARG2
+# ...
+# ARGn
+# ~
+# VAL1
+# VAL2
+# ...
+# VALm
+#
+# If any of the arguments OR values have spaces in them, only the multiline
+# form may be used.
+#
+# If there is exactly one return value, the separating tilde is
+# optional:
+# ARG1 ARG2 ... ARGn VAL1
+# or:
+# ARG1
+# ARG2
+# ...
+# ARGn
+# VAL
+#
+# It is valid to have a function with no arguments or with no return
+# value (or both). The "~" must be used:
+#
+# ARG1 ARG2 ... ARGn ~
+#
+# ~ VAL1 VAL2 ... VALm
+#
+# ~
+#
+# Leading and trailing space is ignored in the multi-line format.
+#
+# If desired, any of the ARGs or VALs may be the word "_undef_" which
+# will be strictly interpreted as the perl undef value. The word "_blank_"
+# may also be used to designate a defined but empty string.
+#
+# They may also be (in the multiline format) of the form:
+#
+# \ STRING : a string reference
+#
+# [] LIST : a list reference (where LIST is a
+# comma separated list)
+#
+# [SEP] LIST : a list reference (where SEP is a
+# single character separator)
+#
+# {} HASH : a hash reference (where HASH is
+# a comma separated list)
+#
+# {SEP} HASH : a hash reference (where SEP is a
+# single character separator)
+#
+# Alternately, the tests can be passed in as a list reference:
+# $tests = [
+# [
+# [ @ARGS1 ],
+# [ @VALS1 ]
+# ],
+# [
+# [ @ARGS2 ],
+# [ @VALS2 ]
+# ], ...
+# ]
+#
+# @extra are extra arguments which are added to the function call.
+#
+# There are several ways to run the tests, depending on the value of
+# $runtests.
+#
+# If $runtests is 0, the tests are run in a non-interactive way suitable
+# for running as part of a "make test".
+#
+# If $runtests is a positive number, it runs runs all tests starting at
+# that value in a way suitable for running interactively.
+#
+# If $runtests is a negative number, it runs all tests starting at that
+# value, but providing feedback at each test.
+#
+# If $runtests is a string "=N" (where N is a number), it runs only
+# that test.
+#
+# If $runtests is the string "-l", it lists the tests and the expected
+# output without running any.
+
+sub test_Func {
+ my($funcref,$tests,$runtests,@extra)=@_;
+ my(@tests);
+
+ $runtests = 0 if (! $runtests);
+ my($starttest,$feedback,$endtest,$runtest);
+ if ($runtests eq "0" or $runtests eq "-0") {
+ $starttest = 1;
+ $feedback = 1;
+ $endtest = 0;
+ $runtest = 1;
+ } elsif ($runtests =~ /^\d+$/){
+ $starttest = $runtests;
+ $feedback = 0;
+ $endtest = 0;
+ $runtest = 1;
+ } elsif ($runtests =~ /^-(\d+)$/) {
+ $starttest = $1;
+ $feedback = 1;
+ $endtest = 0;
+ $runtest = 1;
+ } elsif ($runtests =~ /^=(\d+)$/) {
+ $starttest = $1;
+ $feedback = 1;
+ $endtest = $1;
+ $runtest = 1;
+ } elsif ($runtests eq "-l") {
+ $starttest = 1;
+ $feedback = 1;
+ $endtest = 0;
+ $runtest = 0;
+ } else {
+ die "ERROR: unknown argument(s): $runtests";
+ }
+
+ my($tests_as_list) = 0;
+ if (ref($tests) eq "ARRAY") {
+ @tests = @$tests;
+ $tests_as_list = 1;
+
+ } else {
+ # Separate tests.
+
+ my($comment)="#";
+ my(@lines)=split(/\n/,$tests);
+ my(@test);
+ while (@lines) {
+ my $line = shift(@lines);
+ $line =~ s/^\s*//;
+ $line =~ s/\s*$//;
+ next if ($line =~ /^$comment/);
+
+ if ($line ne "") {
+ push(@test,$line);
+ next;
+ }
+
+ if (@test) {
+ push(@tests,[ @test ]);
+ @test=();
+ }
+ }
+ if (@test) {
+ push(@tests,[ @test ]);
+ }
+
+ # Get arg/val lists for each test.
+
+ foreach my $test (@tests) {
+ my(@tmp)=@$test;
+ my(@arg,@val);
+
+ # single line test
+ @tmp = split(/\s+/,$tmp[0]) if ($#tmp == 0);
+
+ my($sep)=-1;
+ my($i);
+ for ($i=0; $i<=$#tmp; $i++) {
+ if ($tmp[$i] eq "~") {
+ $sep=$i;
+ last;
+ }
+ }
+
+ if ($sep<0) {
+ @val=pop(@tmp);
+ @arg=@tmp;
+ } else {
+ @arg=@tmp[0..($sep-1)];
+ @val=@tmp[($sep+1)..$#tmp];
+ }
+ $test = [ [@arg],[@val] ];
+ }
+ }
+
+ my($ntest)=$#tests + 1;
+ print "1..$ntest\n" if ($feedback && $runtest);
+
+ my(@t);
+ if ($endtest) {
+ @t = ($starttest..$endtest);
+ } else {
+ @t = ($starttest..$ntest);
+ }
+
+ foreach my $t (@t) {
+ $::testnum = $t;
+
+ my (@arg);
+ if ($tests_as_list) {
+ @arg = @{ $tests[$t-1][0] };
+ } else {
+ my $arg = dclone($tests[$t-1][0]);
+ @arg = @$arg;
+ print_to_vals(\@arg);
+ }
+
+ my $argprt = dclone(\@arg);
+ my @argprt = @$argprt;
+ vals_to_print(\@argprt);
+
+ my $exp = dclone($tests[$t-1][1]);
+ my @exp = @$exp;
+ print_to_vals(\@exp);
+ vals_to_print(\@exp);
+
+ # Run the test
+
+ my ($ans,@ans);
+ if ($runtest) {
+ @ans = &$funcref(@arg,@extra);
+ }
+ vals_to_print(\@ans);
+
+ # Compare the results
+
+ foreach my $arg (@arg) {
+ $arg = "_undef_" if (! defined $arg);
+ $arg = "_blank_" if ($arg eq "");
+ }
+ $arg = join("\n ",@argprt,@extra);
+ $ans = join("\n ",@ans);
+ $exp = join("\n ",@exp);
+
+ if (! $runtest) {
+ print "########################\n";
+ print "Test = $t\n";
+ print "Args = $arg\n";
+ print "Expected = $exp\n";
+ } elsif ($ans ne $exp) {
+ print "not ok $t\n";
+ warn "########################\n";
+ warn "Args = $arg\n";
+ warn "Expected = $exp\n";
+ warn "Got = $ans\n";
+ warn "########################\n";
+ } else {
+ print "ok $t\n" if ($feedback);
+ }
+ }
+}
+
+# The following is similar but it takes input from an input file and
+# sends output to an output file.
+#
+# $files is a reference to a list of tests. If one of the tests is named
+# "foobar", the input is from "foobar.in", output is to "foobar.out", and
+# the expected output is in "foobar.exp".
+#
+# The function stored in $funcref is called as:
+# &$funcref($in,$out,@extra)
+# where $in is the name of the input file, $out is the name of the output
+# file, and @extra are any additional arguments that are required.
+#
+# The function should return 0 on success, or an error message.
+
+sub test_File {
+ my($funcref,$files,$runtests,@extra)=@_;
+ my(@files)=@$files;
+
+ $runtests=0 if (! $runtests);
+
+ my($ntest)=$#files + 1;
+ print "1..$ntest\n" if (! $runtests);
+
+ my(@t);
+ if ($runtests > 0) {
+ @t = ($runtests..$ntest);
+ } elsif ($runtests < 0) {
+ @t = (-$runtests);
+ } else {
+ @t = (1..$ntest);
+ }
+
+ foreach my $t (@t) {
+ $::testnum = $t;
+ my $test = $files[$t-1];
+ my $expf = "$test.exp";
+ my $outf = "$test.out";
+
+ if (! -f $test || ! -f $expf) {
+ print "not ok $t\n";
+ warn "Test: $test: missing input/outpuf information\n";
+ next;
+ }
+
+ my $err = &$funcref($test,$outf,@extra);
+ if ($err) {
+ print "not ok $t\n";
+ warn "Test: $test: $err\n";
+ next;
+ }
+
+ local *FH;
+ open(FH,$expf) || do {
+ print "not ok $t\n";
+ warn "Test: $test: $!\n";
+ next;
+ };
+ my @exp = <FH>;
+ close(FH);
+ my $exp = join("",@exp);
+ open(FH,$outf) || do {
+ print "not ok $t\n";
+ warn "Test: $test: $!\n";
+ next;
+ };
+ my @out = <FH>;
+ close(FH);
+ my $out = join("",@out);
+
+ if ($out ne $exp) {
+ print "not ok $t\n";
+ warn "Test: $test: output differs from expected value\n";
+ next;
+ }
+
+ print "ok $t\n" if (! $runtests);
+ }
+}
+
+# Converts a printable version of arguments to actual arguments
+sub print_to_vals {
+ my($listref) = @_;
+
+ foreach my $arg (@$listref) {
+ next if (! defined($arg));
+ if ($arg eq "_undef_") {
+ $arg = undef;
+
+ } elsif ($arg eq "_blank_") {
+ $arg = "";
+
+ } elsif ($arg =~ /^\\\s*(.*)/) {
+ $str = $1;
+ $arg = \$str;
+
+ } elsif ($arg =~ /^\[(.?)\]\s*(.*)/) {
+ my($sep,$str) = ($1,$2);
+ $sep = "," if (! $sep);
+ my @list = split(/\Q$sep\E/,$str);
+ foreach my $e (@list) {
+ $e = "" if ($e eq "_blank_");
+ $e = undef if ($e eq "_undef_");
+ }
+ $arg = \@list;
+
+ } elsif ($arg =~ /^\{(.?)\}\s*(.*)/) {
+ my($sep,$str) = ($1,$2);
+ $sep = "," if (! $sep);
+ my %hash = split(/\Q$sep\E/,$str);
+ foreach my $key (keys %hash) {
+ my $val = $hash{$key};
+ $hash{$key} = undef if ($val eq "_undef_");
+ $hash{$key} = "" if ($val eq "_blank_");
+ }
+ $arg = \%hash;
+ }
+ }
+}
+
+# Converts arguments to a printable version.
+sub vals_to_print {
+ my($listref) = @_;
+
+ foreach my $arg (@$listref) {
+ if (! defined $arg) {
+ $arg = "_undef_";
+
+ } elsif (! ref($arg)) {
+ $arg = "_blank_" if ($arg eq "");
+
+ } else {
+ my $ref = ref($arg);
+ if ($ref eq "SCALAR") {
+ $arg = "\\ $$arg";
+
+ } elsif ($ref eq "ARRAY") {
+ my @list = @$arg;
+ foreach my $e (@list) {
+ $e = "_undef_", next if (! defined($e));
+ $e = "_blank_" if ($e eq "");
+ }
+ $arg = join(" ","[",join(", ",@list),"]");
+
+ } elsif ($ref eq "HASH") {
+ %hash = %$arg;
+ foreach my $key (keys %hash) {
+ my $val = $hash{$key};
+ $hash{$key} = "_undef_", next if (! defined($val));
+ $hash{$key} = "_blank_" if ($val eq "_blank_");
+ }
+ $arg = join(" ","{",
+ join(", ",map { "$_ => $hash{$_}" }
+ (sort keys %hash)), "}");
+ $arg =~ s/ +/ /g;
+ }
+ }
+ }
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+
+++ /dev/null
-#!./perl
-#
-# uk.t - tests for Locale::Country with "uk" aliases to "gb"
-#
-
-use Locale::Country;
-
-Locale::Country::alias_code('uk' => 'gb');
-
-#-----------------------------------------------------------------------
-# This is an array of tests. Each test is eval'd as an expression.
-# If it evaluates to FALSE, then "not ok N" is printed for the test,
-# otherwise "ok N".
-#-----------------------------------------------------------------------
-@TESTS =
-(
- #================================================
- # TESTS FOR code2country
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined code2country()', # no argument
- '!defined code2country(undef)', # undef argument
- '!defined code2country("zz")', # illegal code
- '!defined code2country("ja")', # should be jp for country
-
- #---- some successful examples -----------------------------------------
- 'code2country("BO") eq "Bolivia"',
- 'code2country("pk") eq "Pakistan"',
- 'code2country("sn") eq "Senegal"',
- 'code2country("us") eq "United States"',
- 'code2country("ad") eq "Andorra"', # first in DATA segment
- 'code2country("zw") eq "Zimbabwe"', # last in DATA segment
- 'code2country("uk") eq "United Kingdom"', # normally "gb"
-
- #================================================
- # TESTS FOR country2code
- #================================================
-
- #---- selection of examples which should all result in undef -----------
- '!defined country2code()', # no argument
- '!defined country2code(undef)', # undef argument
- '!defined country2code("Banana")', # illegal country name
-
- #---- some successful examples -----------------------------------------
- 'country2code("japan") eq "jp"',
- 'country2code("japan") ne "ja"',
- 'country2code("Japan") eq "jp"',
- 'country2code("United States") eq "us"',
- 'country2code("United Kingdom") eq "uk"',
- 'country2code("Andorra") eq "ad"', # first in DATA segment
- 'country2code("Zimbabwe") eq "zw"', # last in DATA segment
-);
-
-print "1..", int(@TESTS), "\n";
-
-$testid = 1;
-foreach $test (@TESTS)
-{
- eval "print (($test) ? \"ok $testid\\n\" : \"not ok $testid\\n\" )";
- print "not ok $testid\n" if $@;
- ++$testid;
-}
-
-exit 0;