1*0Sstevel@tonic-gate# 2*0Sstevel@tonic-gate# Locale::Country - ISO codes for country identification (ISO 3166) 3*0Sstevel@tonic-gate# 4*0Sstevel@tonic-gate# $Id: Country.pm,v 2.6 2002/07/10 16:33:27 neilb Exp $ 5*0Sstevel@tonic-gate# 6*0Sstevel@tonic-gate 7*0Sstevel@tonic-gatepackage Locale::Country; 8*0Sstevel@tonic-gateuse strict; 9*0Sstevel@tonic-gaterequire 5.002; 10*0Sstevel@tonic-gate 11*0Sstevel@tonic-gaterequire Exporter; 12*0Sstevel@tonic-gateuse Carp; 13*0Sstevel@tonic-gateuse Locale::Constants; 14*0Sstevel@tonic-gate 15*0Sstevel@tonic-gate 16*0Sstevel@tonic-gate#----------------------------------------------------------------------- 17*0Sstevel@tonic-gate# Public Global Variables 18*0Sstevel@tonic-gate#----------------------------------------------------------------------- 19*0Sstevel@tonic-gateuse vars qw($VERSION @ISA @EXPORT @EXPORT_OK); 20*0Sstevel@tonic-gate$VERSION = sprintf("%d.%02d", q$Revision: 2.61 $ =~ /(\d+)\.(\d+)/); 21*0Sstevel@tonic-gate@ISA = qw(Exporter); 22*0Sstevel@tonic-gate@EXPORT = qw(code2country country2code 23*0Sstevel@tonic-gate all_country_codes all_country_names 24*0Sstevel@tonic-gate country_code2code 25*0Sstevel@tonic-gate LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 LOCALE_CODE_NUMERIC); 26*0Sstevel@tonic-gate 27*0Sstevel@tonic-gate#----------------------------------------------------------------------- 28*0Sstevel@tonic-gate# Private Global Variables 29*0Sstevel@tonic-gate#----------------------------------------------------------------------- 30*0Sstevel@tonic-gatemy $CODES = []; 31*0Sstevel@tonic-gatemy $COUNTRIES = []; 32*0Sstevel@tonic-gate 33*0Sstevel@tonic-gate 34*0Sstevel@tonic-gate#======================================================================= 35*0Sstevel@tonic-gate# 36*0Sstevel@tonic-gate# code2country ( CODE [, CODESET ] ) 37*0Sstevel@tonic-gate# 38*0Sstevel@tonic-gate#======================================================================= 39*0Sstevel@tonic-gatesub code2country 40*0Sstevel@tonic-gate{ 41*0Sstevel@tonic-gate my $code = shift; 42*0Sstevel@tonic-gate my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; 43*0Sstevel@tonic-gate 44*0Sstevel@tonic-gate 45*0Sstevel@tonic-gate return undef unless defined $code; 46*0Sstevel@tonic-gate 47*0Sstevel@tonic-gate #------------------------------------------------------------------- 48*0Sstevel@tonic-gate # Make sure the code is in the right form before we use it 49*0Sstevel@tonic-gate # to look up the corresponding country. 50*0Sstevel@tonic-gate # We have to sprintf because the codes are given as 3-digits, 51*0Sstevel@tonic-gate # with leading 0's. Eg 052 for Barbados. 52*0Sstevel@tonic-gate #------------------------------------------------------------------- 53*0Sstevel@tonic-gate if ($codeset == LOCALE_CODE_NUMERIC) 54*0Sstevel@tonic-gate { 55*0Sstevel@tonic-gate return undef if ($code =~ /\D/); 56*0Sstevel@tonic-gate $code = sprintf("%.3d", $code); 57*0Sstevel@tonic-gate } 58*0Sstevel@tonic-gate else 59*0Sstevel@tonic-gate { 60*0Sstevel@tonic-gate $code = lc($code); 61*0Sstevel@tonic-gate } 62*0Sstevel@tonic-gate 63*0Sstevel@tonic-gate if (exists $CODES->[$codeset]->{$code}) 64*0Sstevel@tonic-gate { 65*0Sstevel@tonic-gate return $CODES->[$codeset]->{$code}; 66*0Sstevel@tonic-gate } 67*0Sstevel@tonic-gate else 68*0Sstevel@tonic-gate { 69*0Sstevel@tonic-gate #--------------------------------------------------------------- 70*0Sstevel@tonic-gate # no such country code! 71*0Sstevel@tonic-gate #--------------------------------------------------------------- 72*0Sstevel@tonic-gate return undef; 73*0Sstevel@tonic-gate } 74*0Sstevel@tonic-gate} 75*0Sstevel@tonic-gate 76*0Sstevel@tonic-gate 77*0Sstevel@tonic-gate#======================================================================= 78*0Sstevel@tonic-gate# 79*0Sstevel@tonic-gate# country2code ( NAME [, CODESET ] ) 80*0Sstevel@tonic-gate# 81*0Sstevel@tonic-gate#======================================================================= 82*0Sstevel@tonic-gatesub country2code 83*0Sstevel@tonic-gate{ 84*0Sstevel@tonic-gate my $country = shift; 85*0Sstevel@tonic-gate my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; 86*0Sstevel@tonic-gate 87*0Sstevel@tonic-gate 88*0Sstevel@tonic-gate return undef unless defined $country; 89*0Sstevel@tonic-gate $country = lc($country); 90*0Sstevel@tonic-gate if (exists $COUNTRIES->[$codeset]->{$country}) 91*0Sstevel@tonic-gate { 92*0Sstevel@tonic-gate return $COUNTRIES->[$codeset]->{$country}; 93*0Sstevel@tonic-gate } 94*0Sstevel@tonic-gate else 95*0Sstevel@tonic-gate { 96*0Sstevel@tonic-gate #--------------------------------------------------------------- 97*0Sstevel@tonic-gate # no such country! 98*0Sstevel@tonic-gate #--------------------------------------------------------------- 99*0Sstevel@tonic-gate return undef; 100*0Sstevel@tonic-gate } 101*0Sstevel@tonic-gate} 102*0Sstevel@tonic-gate 103*0Sstevel@tonic-gate 104*0Sstevel@tonic-gate#======================================================================= 105*0Sstevel@tonic-gate# 106*0Sstevel@tonic-gate# country_code2code ( NAME [, CODESET ] ) 107*0Sstevel@tonic-gate# 108*0Sstevel@tonic-gate#======================================================================= 109*0Sstevel@tonic-gatesub country_code2code 110*0Sstevel@tonic-gate{ 111*0Sstevel@tonic-gate (@_ == 3) or croak "country_code2code() takes 3 arguments!"; 112*0Sstevel@tonic-gate 113*0Sstevel@tonic-gate my $code = shift; 114*0Sstevel@tonic-gate my $inset = shift; 115*0Sstevel@tonic-gate my $outset = shift; 116*0Sstevel@tonic-gate my $outcode; 117*0Sstevel@tonic-gate my $country; 118*0Sstevel@tonic-gate 119*0Sstevel@tonic-gate 120*0Sstevel@tonic-gate return undef if $inset == $outset; 121*0Sstevel@tonic-gate $country = code2country($code, $inset); 122*0Sstevel@tonic-gate return undef if not defined $country; 123*0Sstevel@tonic-gate $outcode = country2code($country, $outset); 124*0Sstevel@tonic-gate return $outcode; 125*0Sstevel@tonic-gate} 126*0Sstevel@tonic-gate 127*0Sstevel@tonic-gate 128*0Sstevel@tonic-gate#======================================================================= 129*0Sstevel@tonic-gate# 130*0Sstevel@tonic-gate# all_country_codes ( [ CODESET ] ) 131*0Sstevel@tonic-gate# 132*0Sstevel@tonic-gate#======================================================================= 133*0Sstevel@tonic-gatesub all_country_codes 134*0Sstevel@tonic-gate{ 135*0Sstevel@tonic-gate my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; 136*0Sstevel@tonic-gate 137*0Sstevel@tonic-gate return keys %{ $CODES->[$codeset] }; 138*0Sstevel@tonic-gate} 139*0Sstevel@tonic-gate 140*0Sstevel@tonic-gate 141*0Sstevel@tonic-gate#======================================================================= 142*0Sstevel@tonic-gate# 143*0Sstevel@tonic-gate# all_country_names ( [ CODESET ] ) 144*0Sstevel@tonic-gate# 145*0Sstevel@tonic-gate#======================================================================= 146*0Sstevel@tonic-gatesub all_country_names 147*0Sstevel@tonic-gate{ 148*0Sstevel@tonic-gate my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; 149*0Sstevel@tonic-gate 150*0Sstevel@tonic-gate return values %{ $CODES->[$codeset] }; 151*0Sstevel@tonic-gate} 152*0Sstevel@tonic-gate 153*0Sstevel@tonic-gate 154*0Sstevel@tonic-gate#======================================================================= 155*0Sstevel@tonic-gate# 156*0Sstevel@tonic-gate# alias_code ( ALIAS => CODE [ , CODESET ] ) 157*0Sstevel@tonic-gate# 158*0Sstevel@tonic-gate# Add an alias for an existing code. If the CODESET isn't specified, 159*0Sstevel@tonic-gate# then we use the default (currently the alpha-2 codeset). 160*0Sstevel@tonic-gate# 161*0Sstevel@tonic-gate# Locale::Country::alias_code('uk' => 'gb'); 162*0Sstevel@tonic-gate# 163*0Sstevel@tonic-gate#======================================================================= 164*0Sstevel@tonic-gatesub alias_code 165*0Sstevel@tonic-gate{ 166*0Sstevel@tonic-gate my $alias = shift; 167*0Sstevel@tonic-gate my $real = shift; 168*0Sstevel@tonic-gate my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT; 169*0Sstevel@tonic-gate 170*0Sstevel@tonic-gate my $country; 171*0Sstevel@tonic-gate 172*0Sstevel@tonic-gate 173*0Sstevel@tonic-gate if (not exists $CODES->[$codeset]->{$real}) 174*0Sstevel@tonic-gate { 175*0Sstevel@tonic-gate carp "attempt to alias \"$alias\" to unknown country code \"$real\"\n"; 176*0Sstevel@tonic-gate return undef; 177*0Sstevel@tonic-gate } 178*0Sstevel@tonic-gate $country = $CODES->[$codeset]->{$real}; 179*0Sstevel@tonic-gate $CODES->[$codeset]->{$alias} = $country; 180*0Sstevel@tonic-gate $COUNTRIES->[$codeset]->{"\L$country"} = $alias; 181*0Sstevel@tonic-gate 182*0Sstevel@tonic-gate return $alias; 183*0Sstevel@tonic-gate} 184*0Sstevel@tonic-gate 185*0Sstevel@tonic-gate# old name of function for backwards compatibility 186*0Sstevel@tonic-gate*_alias_code = *alias_code; 187*0Sstevel@tonic-gate 188*0Sstevel@tonic-gate 189*0Sstevel@tonic-gate#======================================================================= 190*0Sstevel@tonic-gate# 191*0Sstevel@tonic-gate# rename_country 192*0Sstevel@tonic-gate# 193*0Sstevel@tonic-gate# change the official name for a country, eg: 194*0Sstevel@tonic-gate# gb => 'Great Britain' 195*0Sstevel@tonic-gate# rather than the standard 'United Kingdom'. The original is retained 196*0Sstevel@tonic-gate# as an alias, but the new name will be returned if you lookup the 197*0Sstevel@tonic-gate# name from code. 198*0Sstevel@tonic-gate# 199*0Sstevel@tonic-gate#======================================================================= 200*0Sstevel@tonic-gatesub rename_country 201*0Sstevel@tonic-gate{ 202*0Sstevel@tonic-gate my $code = shift; 203*0Sstevel@tonic-gate my $new_name = shift; 204*0Sstevel@tonic-gate my $codeset = @_ > 0 ? shift : _code2codeset($code); 205*0Sstevel@tonic-gate my $country; 206*0Sstevel@tonic-gate my $c; 207*0Sstevel@tonic-gate 208*0Sstevel@tonic-gate 209*0Sstevel@tonic-gate if (not defined $codeset) 210*0Sstevel@tonic-gate { 211*0Sstevel@tonic-gate carp "rename_country(): unknown country code \"$code\"\n"; 212*0Sstevel@tonic-gate return 0; 213*0Sstevel@tonic-gate } 214*0Sstevel@tonic-gate 215*0Sstevel@tonic-gate $country = $CODES->[$codeset]->{$code}; 216*0Sstevel@tonic-gate 217*0Sstevel@tonic-gate foreach my $cset (LOCALE_CODE_ALPHA_2, 218*0Sstevel@tonic-gate LOCALE_CODE_ALPHA_3, 219*0Sstevel@tonic-gate LOCALE_CODE_NUMERIC) 220*0Sstevel@tonic-gate { 221*0Sstevel@tonic-gate if ($cset == $codeset) 222*0Sstevel@tonic-gate { 223*0Sstevel@tonic-gate $c = $code; 224*0Sstevel@tonic-gate } 225*0Sstevel@tonic-gate else 226*0Sstevel@tonic-gate { 227*0Sstevel@tonic-gate $c = country_code2code($code, $codeset, $cset); 228*0Sstevel@tonic-gate } 229*0Sstevel@tonic-gate 230*0Sstevel@tonic-gate $CODES->[$cset]->{$c} = $new_name; 231*0Sstevel@tonic-gate $COUNTRIES->[$cset]->{"\L$new_name"} = $c; 232*0Sstevel@tonic-gate } 233*0Sstevel@tonic-gate 234*0Sstevel@tonic-gate return 1; 235*0Sstevel@tonic-gate} 236*0Sstevel@tonic-gate 237*0Sstevel@tonic-gate 238*0Sstevel@tonic-gate#======================================================================= 239*0Sstevel@tonic-gate# 240*0Sstevel@tonic-gate# _code2codeset 241*0Sstevel@tonic-gate# 242*0Sstevel@tonic-gate# given a country code in an unknown codeset, return the codeset 243*0Sstevel@tonic-gate# it is from, or undef. 244*0Sstevel@tonic-gate# 245*0Sstevel@tonic-gate#======================================================================= 246*0Sstevel@tonic-gatesub _code2codeset 247*0Sstevel@tonic-gate{ 248*0Sstevel@tonic-gate my $code = shift; 249*0Sstevel@tonic-gate 250*0Sstevel@tonic-gate 251*0Sstevel@tonic-gate foreach my $codeset (LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3, 252*0Sstevel@tonic-gate LOCALE_CODE_NUMERIC) 253*0Sstevel@tonic-gate { 254*0Sstevel@tonic-gate return $codeset if (exists $CODES->[$codeset]->{$code}) 255*0Sstevel@tonic-gate } 256*0Sstevel@tonic-gate 257*0Sstevel@tonic-gate return undef; 258*0Sstevel@tonic-gate} 259*0Sstevel@tonic-gate 260*0Sstevel@tonic-gate 261*0Sstevel@tonic-gate#======================================================================= 262*0Sstevel@tonic-gate# 263*0Sstevel@tonic-gate# initialisation code - stuff the DATA into the ALPHA2 hash 264*0Sstevel@tonic-gate# 265*0Sstevel@tonic-gate#======================================================================= 266*0Sstevel@tonic-gate{ 267*0Sstevel@tonic-gate my ($alpha2, $alpha3, $numeric); 268*0Sstevel@tonic-gate my ($country, @countries); 269*0Sstevel@tonic-gate 270*0Sstevel@tonic-gate local $_; 271*0Sstevel@tonic-gate 272*0Sstevel@tonic-gate while (<DATA>) 273*0Sstevel@tonic-gate { 274*0Sstevel@tonic-gate next unless /\S/; 275*0Sstevel@tonic-gate chop; 276*0Sstevel@tonic-gate ($alpha2, $alpha3, $numeric, @countries) = split(/:/, $_); 277*0Sstevel@tonic-gate 278*0Sstevel@tonic-gate $CODES->[LOCALE_CODE_ALPHA_2]->{$alpha2} = $countries[0]; 279*0Sstevel@tonic-gate foreach $country (@countries) 280*0Sstevel@tonic-gate { 281*0Sstevel@tonic-gate $COUNTRIES->[LOCALE_CODE_ALPHA_2]->{"\L$country"} = $alpha2; 282*0Sstevel@tonic-gate } 283*0Sstevel@tonic-gate 284*0Sstevel@tonic-gate if ($alpha3) 285*0Sstevel@tonic-gate { 286*0Sstevel@tonic-gate $CODES->[LOCALE_CODE_ALPHA_3]->{$alpha3} = $countries[0]; 287*0Sstevel@tonic-gate foreach $country (@countries) 288*0Sstevel@tonic-gate { 289*0Sstevel@tonic-gate $COUNTRIES->[LOCALE_CODE_ALPHA_3]->{"\L$country"} = $alpha3; 290*0Sstevel@tonic-gate } 291*0Sstevel@tonic-gate } 292*0Sstevel@tonic-gate 293*0Sstevel@tonic-gate if ($numeric) 294*0Sstevel@tonic-gate { 295*0Sstevel@tonic-gate $CODES->[LOCALE_CODE_NUMERIC]->{$numeric} = $countries[0]; 296*0Sstevel@tonic-gate foreach $country (@countries) 297*0Sstevel@tonic-gate { 298*0Sstevel@tonic-gate $COUNTRIES->[LOCALE_CODE_NUMERIC]->{"\L$country"} = $numeric; 299*0Sstevel@tonic-gate } 300*0Sstevel@tonic-gate } 301*0Sstevel@tonic-gate 302*0Sstevel@tonic-gate } 303*0Sstevel@tonic-gate 304*0Sstevel@tonic-gate close(DATA); 305*0Sstevel@tonic-gate} 306*0Sstevel@tonic-gate 307*0Sstevel@tonic-gate1; 308*0Sstevel@tonic-gate 309*0Sstevel@tonic-gate__DATA__ 310*0Sstevel@tonic-gatead:and:020:Andorra 311*0Sstevel@tonic-gateae:are:784:United Arab Emirates 312*0Sstevel@tonic-gateaf:afg:004:Afghanistan 313*0Sstevel@tonic-gateag:atg:028:Antigua and Barbuda 314*0Sstevel@tonic-gateai:aia:660:Anguilla 315*0Sstevel@tonic-gateal:alb:008:Albania 316*0Sstevel@tonic-gateam:arm:051:Armenia 317*0Sstevel@tonic-gatean:ant:530:Netherlands Antilles 318*0Sstevel@tonic-gateao:ago:024:Angola 319*0Sstevel@tonic-gateaq:ata:010:Antarctica 320*0Sstevel@tonic-gatear:arg:032:Argentina 321*0Sstevel@tonic-gateas:asm:016:American Samoa 322*0Sstevel@tonic-gateat:aut:040:Austria 323*0Sstevel@tonic-gateau:aus:036:Australia 324*0Sstevel@tonic-gateaw:abw:533:Aruba 325*0Sstevel@tonic-gateaz:aze:031:Azerbaijan 326*0Sstevel@tonic-gateba:bih:070:Bosnia and Herzegovina 327*0Sstevel@tonic-gatebb:brb:052:Barbados 328*0Sstevel@tonic-gatebd:bgd:050:Bangladesh 329*0Sstevel@tonic-gatebe:bel:056:Belgium 330*0Sstevel@tonic-gatebf:bfa:854:Burkina Faso 331*0Sstevel@tonic-gatebg:bgr:100:Bulgaria 332*0Sstevel@tonic-gatebh:bhr:048:Bahrain 333*0Sstevel@tonic-gatebi:bdi:108:Burundi 334*0Sstevel@tonic-gatebj:ben:204:Benin 335*0Sstevel@tonic-gatebm:bmu:060:Bermuda 336*0Sstevel@tonic-gatebn:brn:096:Brunei Darussalam 337*0Sstevel@tonic-gatebo:bol:068:Bolivia 338*0Sstevel@tonic-gatebr:bra:076:Brazil 339*0Sstevel@tonic-gatebs:bhs:044:Bahamas 340*0Sstevel@tonic-gatebt:btn:064:Bhutan 341*0Sstevel@tonic-gatebv:bvt:074:Bouvet Island 342*0Sstevel@tonic-gatebw:bwa:072:Botswana 343*0Sstevel@tonic-gateby:blr:112:Belarus 344*0Sstevel@tonic-gatebz:blz:084:Belize 345*0Sstevel@tonic-gateca:can:124:Canada 346*0Sstevel@tonic-gatecc:cck:166:Cocos (Keeling) Islands 347*0Sstevel@tonic-gatecf:caf:140:Central African Republic 348*0Sstevel@tonic-gatecg:cog:178:Congo:Congo, Republic of the 349*0Sstevel@tonic-gatech:che:756:Switzerland 350*0Sstevel@tonic-gateci:civ:384:Cote D'Ivoire 351*0Sstevel@tonic-gateck:cok:184:Cook Islands 352*0Sstevel@tonic-gatecl:chl:152:Chile 353*0Sstevel@tonic-gatecm:cmr:120:Cameroon 354*0Sstevel@tonic-gatecn:chn:156:China 355*0Sstevel@tonic-gateco:col:170:Colombia 356*0Sstevel@tonic-gatecr:cri:188:Costa Rica 357*0Sstevel@tonic-gatecu:cub:192:Cuba 358*0Sstevel@tonic-gatecv:cpv:132:Cape Verde 359*0Sstevel@tonic-gatecx:cxr:162:Christmas Island 360*0Sstevel@tonic-gatecy:cyp:196:Cyprus 361*0Sstevel@tonic-gatecz:cze:203:Czech Republic 362*0Sstevel@tonic-gatede:deu:276:Germany 363*0Sstevel@tonic-gatedj:dji:262:Djibouti 364*0Sstevel@tonic-gatedk:dnk:208:Denmark 365*0Sstevel@tonic-gatedm:dma:212:Dominica 366*0Sstevel@tonic-gatedo:dom:214:Dominican Republic 367*0Sstevel@tonic-gatedz:dza:012:Algeria 368*0Sstevel@tonic-gateec:ecu:218:Ecuador 369*0Sstevel@tonic-gateee:est:233:Estonia 370*0Sstevel@tonic-gateeg:egy:818:Egypt 371*0Sstevel@tonic-gateeh:esh:732:Western Sahara 372*0Sstevel@tonic-gateer:eri:232:Eritrea 373*0Sstevel@tonic-gatees:esp:724:Spain 374*0Sstevel@tonic-gateet:eth:231:Ethiopia 375*0Sstevel@tonic-gatefi:fin:246:Finland 376*0Sstevel@tonic-gatefj:fji:242:Fiji 377*0Sstevel@tonic-gatefk:flk:238:Falkland Islands (Malvinas):Falkland Islands (Islas Malvinas) 378*0Sstevel@tonic-gatefm:fsm:583:Micronesia, Federated States of 379*0Sstevel@tonic-gatefo:fro:234:Faroe Islands 380*0Sstevel@tonic-gatefr:fra:250:France 381*0Sstevel@tonic-gatefx:fxx:249:France, Metropolitan 382*0Sstevel@tonic-gatega:gab:266:Gabon 383*0Sstevel@tonic-gategb:gbr:826:United Kingdom:Great Britain 384*0Sstevel@tonic-gategd:grd:308:Grenada 385*0Sstevel@tonic-gatege:geo:268:Georgia 386*0Sstevel@tonic-gategf:guf:254:French Guiana 387*0Sstevel@tonic-gategh:gha:288:Ghana 388*0Sstevel@tonic-gategi:gib:292:Gibraltar 389*0Sstevel@tonic-gategl:grl:304:Greenland 390*0Sstevel@tonic-gategm:gmb:270:Gambia 391*0Sstevel@tonic-gategn:gin:324:Guinea 392*0Sstevel@tonic-gategp:glp:312:Guadeloupe 393*0Sstevel@tonic-gategq:gnq:226:Equatorial Guinea 394*0Sstevel@tonic-gategr:grc:300:Greece 395*0Sstevel@tonic-gategs:sgs:239:South Georgia and the South Sandwich Islands 396*0Sstevel@tonic-gategt:gtm:320:Guatemala 397*0Sstevel@tonic-gategu:gum:316:Guam 398*0Sstevel@tonic-gategw:gnb:624:Guinea-Bissau 399*0Sstevel@tonic-gategy:guy:328:Guyana 400*0Sstevel@tonic-gatehk:hkg:344:Hong Kong 401*0Sstevel@tonic-gatehm:hmd:334:Heard Island and McDonald Islands 402*0Sstevel@tonic-gatehn:hnd:340:Honduras 403*0Sstevel@tonic-gatehr:hrv:191:Croatia 404*0Sstevel@tonic-gateht:hti:332:Haiti 405*0Sstevel@tonic-gatehu:hun:348:Hungary 406*0Sstevel@tonic-gateid:idn:360:Indonesia 407*0Sstevel@tonic-gateie:irl:372:Ireland 408*0Sstevel@tonic-gateil:isr:376:Israel 409*0Sstevel@tonic-gatein:ind:356:India 410*0Sstevel@tonic-gateio:iot:086:British Indian Ocean Territory 411*0Sstevel@tonic-gateiq:irq:368:Iraq 412*0Sstevel@tonic-gateir:irn:364:Iran, Islamic Republic of:Iran 413*0Sstevel@tonic-gateis:isl:352:Iceland 414*0Sstevel@tonic-gateit:ita:380:Italy 415*0Sstevel@tonic-gatejm:jam:388:Jamaica 416*0Sstevel@tonic-gatejo:jor:400:Jordan 417*0Sstevel@tonic-gatejp:jpn:392:Japan 418*0Sstevel@tonic-gateke:ken:404:Kenya 419*0Sstevel@tonic-gatekg:kgz:417:Kyrgyzstan 420*0Sstevel@tonic-gatekh:khm:116:Cambodia 421*0Sstevel@tonic-gateki:kir:296:Kiribati 422*0Sstevel@tonic-gatekm:com:174:Comoros 423*0Sstevel@tonic-gatekn:kna:659:Saint Kitts and Nevis 424*0Sstevel@tonic-gatekp:prk:408:Korea, Democratic People's Republic of:Korea, North:North Korea 425*0Sstevel@tonic-gatekr:kor:410:Korea, Republic of:Korea, South:South Korea 426*0Sstevel@tonic-gatekw:kwt:414:Kuwait 427*0Sstevel@tonic-gateky:cym:136:Cayman Islands 428*0Sstevel@tonic-gatekz:kaz:398:Kazakhstan:Kazakstan 429*0Sstevel@tonic-gatela:lao:418:Lao People's Democratic Republic 430*0Sstevel@tonic-gatelb:lbn:422:Lebanon 431*0Sstevel@tonic-gatelc:lca:662:Saint Lucia 432*0Sstevel@tonic-gateli:lie:438:Liechtenstein 433*0Sstevel@tonic-gatelk:lka:144:Sri Lanka 434*0Sstevel@tonic-gatelr:lbr:430:Liberia 435*0Sstevel@tonic-gatels:lso:426:Lesotho 436*0Sstevel@tonic-gatelt:ltu:440:Lithuania 437*0Sstevel@tonic-gatelu:lux:442:Luxembourg 438*0Sstevel@tonic-gatelv:lva:428:Latvia 439*0Sstevel@tonic-gately:lby:434:Libyan Arab Jamahiriya:Libya 440*0Sstevel@tonic-gatema:mar:504:Morocco 441*0Sstevel@tonic-gatemc:mco:492:Monaco 442*0Sstevel@tonic-gatemd:mda:498:Moldova, Republic of:Moldova 443*0Sstevel@tonic-gatemg:mdg:450:Madagascar 444*0Sstevel@tonic-gatemh:mhl:584:Marshall Islands 445*0Sstevel@tonic-gatemk:mkd:807:Macedonia, the Former Yugoslav Republic of:Macedonia, Former Yugoslav Republic of:Macedonia 446*0Sstevel@tonic-gateml:mli:466:Mali 447*0Sstevel@tonic-gatemm:mmr:104:Myanmar 448*0Sstevel@tonic-gatemn:mng:496:Mongolia 449*0Sstevel@tonic-gatemo:mac:446:Macao:Macau 450*0Sstevel@tonic-gatemp:mnp:580:Northern Mariana Islands 451*0Sstevel@tonic-gatemq:mtq:474:Martinique 452*0Sstevel@tonic-gatemr:mrt:478:Mauritania 453*0Sstevel@tonic-gatems:msr:500:Montserrat 454*0Sstevel@tonic-gatemt:mlt:470:Malta 455*0Sstevel@tonic-gatemu:mus:480:Mauritius 456*0Sstevel@tonic-gatemv:mdv:462:Maldives 457*0Sstevel@tonic-gatemw:mwi:454:Malawi 458*0Sstevel@tonic-gatemx:mex:484:Mexico 459*0Sstevel@tonic-gatemy:mys:458:Malaysia 460*0Sstevel@tonic-gatemz:moz:508:Mozambique 461*0Sstevel@tonic-gatena:nam:516:Namibia 462*0Sstevel@tonic-gatenc:ncl:540:New Caledonia 463*0Sstevel@tonic-gatene:ner:562:Niger 464*0Sstevel@tonic-gatenf:nfk:574:Norfolk Island 465*0Sstevel@tonic-gateng:nga:566:Nigeria 466*0Sstevel@tonic-gateni:nic:558:Nicaragua 467*0Sstevel@tonic-gatenl:nld:528:Netherlands 468*0Sstevel@tonic-gateno:nor:578:Norway 469*0Sstevel@tonic-gatenp:npl:524:Nepal 470*0Sstevel@tonic-gatenr:nru:520:Nauru 471*0Sstevel@tonic-gatenu:niu:570:Niue 472*0Sstevel@tonic-gatenz:nzl:554:New Zealand 473*0Sstevel@tonic-gateom:omn:512:Oman 474*0Sstevel@tonic-gatepa:pan:591:Panama 475*0Sstevel@tonic-gatepe:per:604:Peru 476*0Sstevel@tonic-gatepf:pyf:258:French Polynesia 477*0Sstevel@tonic-gatepg:png:598:Papua New Guinea 478*0Sstevel@tonic-gateph:phl:608:Philippines 479*0Sstevel@tonic-gatepk:pak:586:Pakistan 480*0Sstevel@tonic-gatepl:pol:616:Poland 481*0Sstevel@tonic-gatepm:spm:666:Saint Pierre and Miquelon 482*0Sstevel@tonic-gatepn:pcn:612:Pitcairn:Pitcairn Island 483*0Sstevel@tonic-gatepr:pri:630:Puerto Rico 484*0Sstevel@tonic-gateps:pse:275:Palestinian Territory, Occupied 485*0Sstevel@tonic-gatept:prt:620:Portugal 486*0Sstevel@tonic-gatepw:plw:585:Palau 487*0Sstevel@tonic-gatepy:pry:600:Paraguay 488*0Sstevel@tonic-gateqa:qat:634:Qatar 489*0Sstevel@tonic-gatere:reu:638:Reunion 490*0Sstevel@tonic-gatero:rom:642:Romania 491*0Sstevel@tonic-gateru:rus:643:Russian Federation:Russia 492*0Sstevel@tonic-gaterw:rwa:646:Rwanda 493*0Sstevel@tonic-gatesa:sau:682:Saudi Arabia 494*0Sstevel@tonic-gatesb:slb:090:Solomon Islands 495*0Sstevel@tonic-gatesc:syc:690:Seychelles 496*0Sstevel@tonic-gatesd:sdn:736:Sudan 497*0Sstevel@tonic-gatese:swe:752:Sweden 498*0Sstevel@tonic-gatesg:sgp:702:Singapore 499*0Sstevel@tonic-gatesh:shn:654:Saint Helena 500*0Sstevel@tonic-gatesi:svn:705:Slovenia 501*0Sstevel@tonic-gatesj:sjm:744:Svalbard and Jan Mayen:Jan Mayen:Svalbard 502*0Sstevel@tonic-gatesk:svk:703:Slovakia 503*0Sstevel@tonic-gatesl:sle:694:Sierra Leone 504*0Sstevel@tonic-gatesm:smr:674:San Marino 505*0Sstevel@tonic-gatesn:sen:686:Senegal 506*0Sstevel@tonic-gateso:som:706:Somalia 507*0Sstevel@tonic-gatesr:sur:740:Suriname 508*0Sstevel@tonic-gatest:stp:678:Sao Tome and Principe 509*0Sstevel@tonic-gatesv:slv:222:El Salvador 510*0Sstevel@tonic-gatesy:syr:760:Syrian Arab Republic:Syria 511*0Sstevel@tonic-gatesz:swz:748:Swaziland 512*0Sstevel@tonic-gatetc:tca:796:Turks and Caicos Islands 513*0Sstevel@tonic-gatetd:tcd:148:Chad 514*0Sstevel@tonic-gatetf:atf:260:French Southern Territories 515*0Sstevel@tonic-gatetg:tgo:768:Togo 516*0Sstevel@tonic-gateth:tha:764:Thailand 517*0Sstevel@tonic-gatetj:tjk:762:Tajikistan 518*0Sstevel@tonic-gatetk:tkl:772:Tokelau 519*0Sstevel@tonic-gatetm:tkm:795:Turkmenistan 520*0Sstevel@tonic-gatetn:tun:788:Tunisia 521*0Sstevel@tonic-gateto:ton:776:Tonga 522*0Sstevel@tonic-gatetl:tls:626:East Timor 523*0Sstevel@tonic-gatetr:tur:792:Turkey 524*0Sstevel@tonic-gatett:tto:780:Trinidad and Tobago 525*0Sstevel@tonic-gatetv:tuv:798:Tuvalu 526*0Sstevel@tonic-gatetw:twn:158:Taiwan, Province of China:Taiwan 527*0Sstevel@tonic-gatetz:tza:834:Tanzania, United Republic of:Tanzania 528*0Sstevel@tonic-gateua:ukr:804:Ukraine 529*0Sstevel@tonic-gateug:uga:800:Uganda 530*0Sstevel@tonic-gateum:umi:581:United States Minor Outlying Islands 531*0Sstevel@tonic-gateus:usa:840:United States:USA:United States of America 532*0Sstevel@tonic-gateuy:ury:858:Uruguay 533*0Sstevel@tonic-gateuz:uzb:860:Uzbekistan 534*0Sstevel@tonic-gateva:vat:336:Holy See (Vatican City State):Holy See (Vatican City) 535*0Sstevel@tonic-gatevc:vct:670:Saint Vincent and the Grenadines 536*0Sstevel@tonic-gateve:ven:862:Venezuela 537*0Sstevel@tonic-gatevg:vgb:092:Virgin Islands, British:British Virgin Islands 538*0Sstevel@tonic-gatevi:vir:850:Virgin Islands, U.S. 539*0Sstevel@tonic-gatevn:vnm:704:Vietnam 540*0Sstevel@tonic-gatevu:vut:548:Vanuatu 541*0Sstevel@tonic-gatewf:wlf:876:Wallis and Futuna 542*0Sstevel@tonic-gatews:wsm:882:Samoa 543*0Sstevel@tonic-gateye:yem:887:Yemen 544*0Sstevel@tonic-gateyt:myt:175:Mayotte 545*0Sstevel@tonic-gateyu:yug:891:Yugoslavia 546*0Sstevel@tonic-gateza:zaf:710:South Africa 547*0Sstevel@tonic-gatezm:zmb:894:Zambia 548*0Sstevel@tonic-gatezr:zar:180:Zaire:Congo, The Democratic Republic of the:Congo, Democratic Republic of the 549*0Sstevel@tonic-gatezw:zwe:716:Zimbabwe 550