Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

imported 1.2.8

  • Loading branch information...
commit e17fc9f18f8a02a117b63407007fbe84bfd1a79c 1 parent a61dc5c
Kohsuke Kawaguchi authored January 05, 2013
9  Changes
... ...
@@ -1,3 +1,12 @@
  1
+1.2.8 Apr 13th 2012
  2
+	- Fix: Close the database file without exceptions whether it is
  3
+	  open(STANDARD) or not(MEMORY_CACHE) in conjunction with the
  4
+	  CHECK_CACHE option. (Lorenzo Crosby)
  5
+1.2.7 Apr 10th 2012
  6
+        - Update timezones ( Boris Zentner )
  7
+	- Update FIPS codes 20120402 ( Boris Zentner )
  8
+1.2.6 Mar 28th 2012
  9
+        - Update country codes, FIPS codes and timezone ( Boris Zentner )
1 10
 1.2.5 Aug 23th 2011
2 11
         - Fix small buffer issue when java tries to read over the EOF ( Boris Zentner )
3 12
         - Add support for new database types NETSPEED_EDITION_REV1_V6,
3  admin/generate_timeZone.pl
@@ -29,7 +29,8 @@ END
29 29
 
30 30
 while ($str = <FILE>) {
31 31
   $str =~ s!\s*$!!; 
32  
-  my ($country,$region,$timezone) = split("\t",$str);
  32
+  my ($country,$region,$timezone) = split(/\t/,$str);
  33
+  die "Wrong timezone\n" unless $timezone;
33 34
   if ($country ne $old_country) {
34 35
     if ($had_region) {
35 36
       print "      }\n";
126  source/com/maxmind/geoip/LookupService.java
@@ -129,78 +129,61 @@
129 129
     private static final HashMap hashmapcountryCodetoindex = new HashMap(512);
130 130
     private static final HashMap hashmapcountryNametoindex = new HashMap(512);
131 131
     private static final String[] countryCode = {
132  
-	"--","AP","EU","AD","AE","AF","AG","AI","AL","AM","AN","AO","AQ","AR",
133  
-	"AS","AT","AU","AW","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ",
134  
-	"BM","BN","BO","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF",
135  
-	"CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CX","CY","CZ",
136  
-	"DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI",
137  
-	"FJ","FK","FM","FO","FR","FX","GA","GB","GD","GE","GF","GH","GI","GL",
138  
-	"GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR",
139  
-	"HT","HU","ID","IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO","JP",
140  
-	"KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC",
141  
-	"LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","MG","MH","MK",
142  
-	"ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY",
143  
-	"MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM",
144  
-	"PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY",
145  
-	"QA","RE","RO","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ",
146  
-	"SK","SL","SM","SN","SO","SR","ST","SV","SY","SZ","TC","TD","TF","TG",
147  
-	"TH","TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW","TZ","UA","UG",
148  
-	"UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE",
149  
-	"YT","RS","ZA","ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE","BL",
150  
-	"MF"};
  132
+   "--","AP","EU","AD","AE","AF","AG","AI","AL","AM","CW",
  133
+	"AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB",
  134
+	"BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO",
  135
+	"BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD",
  136
+	"CF","CG","CH","CI","CK","CL","CM","CN","CO","CR",
  137
+	"CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO",
  138
+	"DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ",
  139
+	"FK","FM","FO","FR","SX","GA","GB","GD","GE","GF",
  140
+	"GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT",
  141
+	"GU","GW","GY","HK","HM","HN","HR","HT","HU","ID",
  142
+	"IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO",
  143
+	"JP","KE","KG","KH","KI","KM","KN","KP","KR","KW",
  144
+	"KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT",
  145
+	"LU","LV","LY","MA","MC","MD","MG","MH","MK","ML",
  146
+	"MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV",
  147
+	"MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI",
  148
+	"NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF",
  149
+	"PG","PH","PK","PL","PM","PN","PR","PS","PT","PW",
  150
+	"PY","QA","RE","RO","RU","RW","SA","SB","SC","SD",
  151
+	"SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO",
  152
+	"SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH",
  153
+	"TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW",
  154
+	"TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE",
  155
+	"VG","VI","VN","VU","WF","WS","YE","YT","RS","ZA",
  156
+	"ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE",
  157
+  "BL","MF", "BQ"};
151 158
 
152 159
     private static final String[] countryName = {
153  
-	"N/A","Asia/Pacific Region","Europe","Andorra","United Arab Emirates",
154  
-	"Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia",
155  
-	"Netherlands Antilles","Angola","Antarctica","Argentina","American Samoa",
156  
-	"Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina",
157  
-	"Barbados","Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain",
158  
-	"Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia","Brazil","Bahamas",
159  
-	"Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada",
160  
-	"Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
161  
-	"Central African Republic","Congo","Switzerland","Cote D'Ivoire",
162  
-	"Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica","Cuba",
163  
-	"Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany",
164  
-	"Djibouti","Denmark","Dominica","Dominican Republic","Algeria","Ecuador",
165  
-	"Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland",
166  
-	"Fiji","Falkland Islands (Malvinas)","Micronesia, Federated States of",
167  
-	"Faroe Islands","France","France, Metropolitan","Gabon","United Kingdom",
168  
-	"Grenada","Georgia","French Guiana","Ghana","Gibraltar","Greenland","Gambia",
169  
-	"Guinea","Guadeloupe","Equatorial Guinea","Greece",
170  
-	"South Georgia and the South Sandwich Islands","Guatemala","Guam",
171  
-	"Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands",
172  
-	"Honduras","Croatia","Haiti","Hungary","Indonesia","Ireland","Israel","India",
173  
-	"British Indian Ocean Territory","Iraq","Iran, Islamic Republic of",
174  
-	"Iceland","Italy","Jamaica","Jordan","Japan","Kenya","Kyrgyzstan","Cambodia",
175  
-	"Kiribati","Comoros","Saint Kitts and Nevis",
176  
-	"Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
177  
-	"Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon",
178  
-	"Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
179  
-	"Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco",
180  
-	"Moldova, Republic of","Madagascar","Marshall Islands",
181  
-	"Macedonia","Mali","Myanmar","Mongolia",
182  
-	"Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat",
183  
-	"Malta","Mauritius","Maldives","Malawi","Mexico","Malaysia","Mozambique",
184  
-	"Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
185  
-	"Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama",
186  
-	"Peru","French Polynesia","Papua New Guinea","Philippines","Pakistan",
187  
-	"Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","" +
188  
-	"Palestinian Territory","Portugal","Palau","Paraguay","Qatar",
189  
-	"Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia",
190  
-	"Solomon Islands","Seychelles","Sudan","Sweden","Singapore","Saint Helena",
191  
-	"Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino",
192  
-	"Senegal","Somalia","Suriname","Sao Tome and Principe","El Salvador",
193  
-	"Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad",
194  
-	"French Southern Territories","Togo","Thailand","Tajikistan","Tokelau",
195  
-	"Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago",
196  
-	"Tuvalu","Taiwan","Tanzania, United Republic of","Ukraine","Uganda",
197  
-	"United States Minor Outlying Islands","United States","Uruguay","Uzbekistan",
198  
-	"Holy See (Vatican City State)","Saint Vincent and the Grenadines",
199  
-	"Venezuela","Virgin Islands, British","Virgin Islands, U.S.","Vietnam",
200  
-	"Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia",
201  
-	"South Africa","Zambia","Montenegro","Zimbabwe","Anonymous Proxy",
202  
-	"Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
203  
-	"Saint Barthelemy","Saint Martin"};
  160
+          "N/A","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Curacao",
  161
+	"Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
  162
+	"Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
  163
+	"Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
  164
+	"Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
  165
+	"Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
  166
+	"Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
  167
+	"Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","Sint Maarten (Dutch part)","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
  168
+	"Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
  169
+	"Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
  170
+	"Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
  171
+	"Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
  172
+	"Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
  173
+	"Luxembourg","Latvia","Libya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
  174
+	"Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
  175
+	"Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
  176
+	"Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
  177
+	"Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
  178
+	"Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
  179
+	"Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
  180
+	"Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
  181
+	"Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
  182
+	"Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
  183
+	"Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
  184
+	"Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
  185
+        "Saint Barthelemy","Saint Martin", "Bonaire, Saint Eustatius and Saba"
  186
+	};
204 187
 
205 188
 
206 189
     /* init the hashmap once at startup time */
@@ -406,7 +389,6 @@ else if (databaseType == DatabaseInfo.CITY_EDITION_REV0 ||
406 389
         } else {
407 390
           index_cache = null;
408 391
         }
409  
-        
410 392
      }
411 393
 
412 394
     /**
@@ -592,7 +574,7 @@ synchronized void _check_mtime(){
592 574
           if (t != mtime){
593 575
             /* GeoIP Database file updated */
594 576
             /* refresh filehandle */
595  
-            file.close();
  577
+            close();
596 578
             file = new RandomAccessFile(databaseFile,"r");
597 579
 	    databaseInfo = null;
598 580
 	    init();
127  source/com/maxmind/geoip/regionName.java
@@ -1031,6 +1031,12 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
1031 1031
         case 12:
1032 1032
         name = "Vlaams-Brabant";
1033 1033
         break;
  1034
+        case 13:
  1035
+        name = "Flanders";
  1036
+        break;
  1037
+        case 14:
  1038
+        name = "Wallonia";
  1039
+        break;
1034 1040
       }
1035 1041
     }
1036 1042
     if (country_code.equals("BF") == true) {
@@ -2272,15 +2278,6 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
2272 2278
         case 4:
2273 2279
         name = "Atlantico";
2274 2280
         break;
2275  
-        case 5:
2276  
-        name = "Bolivar Department";
2277  
-        break;
2278  
-        case 6:
2279  
-        name = "Boyaca Department";
2280  
-        break;
2281  
-        case 7:
2282  
-        name = "Caldas Department";
2283  
-        break;
2284 2281
         case 8:
2285 2282
         name = "Caqueta";
2286 2283
         break;
@@ -2308,9 +2305,6 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
2308 2305
         case 17:
2309 2306
         name = "La Guajira";
2310 2307
         break;
2311  
-        case 18:
2312  
-        name = "Magdalena Department";
2313  
-        break;
2314 2308
         case 19:
2315 2309
         name = "Meta";
2316 2310
         break;
@@ -5149,18 +5143,12 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
5149 5143
         case 5:
5150 5144
         name = "Jambi";
5151 5145
         break;
5152  
-        case 6:
5153  
-        name = "Jawa Barat";
5154  
-        break;
5155 5146
         case 7:
5156 5147
         name = "Jawa Tengah";
5157 5148
         break;
5158 5149
         case 8:
5159 5150
         name = "Jawa Timur";
5160 5151
         break;
5161  
-        case 9:
5162  
-        name = "Papua";
5163  
-        break;
5164 5152
         case 10:
5165 5153
         name = "Yogyakarta";
5166 5154
         break;
@@ -5179,36 +5167,21 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
5179 5167
         case 15:
5180 5168
         name = "Lampung";
5181 5169
         break;
5182  
-        case 16:
5183  
-        name = "Maluku";
5184  
-        break;
5185 5170
         case 17:
5186 5171
         name = "Nusa Tenggara Barat";
5187 5172
         break;
5188 5173
         case 18:
5189 5174
         name = "Nusa Tenggara Timur";
5190 5175
         break;
5191  
-        case 19:
5192  
-        name = "Riau";
5193  
-        break;
5194  
-        case 20:
5195  
-        name = "Sulawesi Selatan";
5196  
-        break;
5197 5176
         case 21:
5198 5177
         name = "Sulawesi Tengah";
5199 5178
         break;
5200 5179
         case 22:
5201 5180
         name = "Sulawesi Tenggara";
5202 5181
         break;
5203  
-        case 23:
5204  
-        name = "Sulawesi Utara";
5205  
-        break;
5206 5182
         case 24:
5207 5183
         name = "Sumatera Barat";
5208 5184
         break;
5209  
-        case 25:
5210  
-        name = "Sumatera Selatan";
5211  
-        break;
5212 5185
         case 26:
5213 5186
         name = "Sumatera Utara";
5214 5187
         break;
@@ -5845,30 +5818,39 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
5845 5818
         case 2:
5846 5819
         name = "Al Balqa'";
5847 5820
         break;
5848  
-        case 7:
5849  
-        name = "Ma";
5850  
-        break;
5851 5821
         case 9:
5852 5822
         name = "Al Karak";
5853 5823
         break;
5854  
-        case 10:
5855  
-        name = "Al Mafraq";
5856  
-        break;
5857  
-        case 11:
5858  
-        name = "Amman Governorate";
5859  
-        break;
5860 5824
         case 12:
5861 5825
         name = "At Tafilah";
5862 5826
         break;
5863  
-        case 13:
5864  
-        name = "Az Zarqa";
5865  
-        break;
5866  
-        case 14:
5867  
-        name = "Irbid";
  5827
+        case 15:
  5828
+        name = "Al Mafraq";
5868 5829
         break;
5869 5830
         case 16:
5870 5831
         name = "Amman";
5871 5832
         break;
  5833
+        case 17:
  5834
+        name = "Az Zaraqa";
  5835
+        break;
  5836
+        case 18:
  5837
+        name = "Irbid";
  5838
+        break;
  5839
+        case 19:
  5840
+        name = "Ma'an";
  5841
+        break;
  5842
+        case 20:
  5843
+        name = "Ajlun";
  5844
+        break;
  5845
+        case 21:
  5846
+        name = "Al Aqabah";
  5847
+        break;
  5848
+        case 22:
  5849
+        name = "Jarash";
  5850
+        break;
  5851
+        case 23:
  5852
+        name = "Madaba";
  5853
+        break;
5872 5854
       }
5873 5855
     }
5874 5856
     if (country_code.equals("JP") == true) {
@@ -7137,6 +7119,9 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
7137 7119
         case 81:
7138 7120
         name = "Ocnita";
7139 7121
         break;
  7122
+        case 82:
  7123
+        name = "Orhei";
  7124
+        break;
7140 7125
         case 83:
7141 7126
         name = "Rezina";
7142 7127
         break;
@@ -8503,9 +8488,6 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
8503 8488
         case 7:
8504 8489
         name = "Noord-Holland";
8505 8490
         break;
8506  
-        case 8:
8507  
-        name = "Overijssel";
8508  
-        break;
8509 8491
         case 9:
8510 8492
         name = "Utrecht";
8511 8493
         break;
@@ -10009,8 +9991,11 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
10009 9991
         case 91:
10010 9992
         name = "Krasnoyarskiy Kray";
10011 9993
         break;
10012  
-        case 942:
10013  
-        name = "Chechnya Republic";
  9994
+        case 92:
  9995
+        name = "Kamchatskiy Kray";
  9996
+        break;
  9997
+        case 93:
  9998
+        name = "Zabaykal'skiy Kray";
10014 9999
         break;
10015 10000
       }
10016 10001
     }
@@ -10050,9 +10035,6 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
10050 10035
         case 2:
10051 10036
         name = "Al Bahah";
10052 10037
         break;
10053  
-        case 3:
10054  
-        name = "Al Jawf";
10055  
-        break;
10056 10038
         case 5:
10057 10039
         name = "Al Madinah";
10058 10040
         break;
@@ -10062,12 +10044,12 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
10062 10044
         case 8:
10063 10045
         name = "Al Qasim";
10064 10046
         break;
10065  
-        case 9:
10066  
-        name = "Al Qurayyat";
10067  
-        break;
10068 10047
         case 10:
10069 10048
         name = "Ar Riyad";
10070 10049
         break;
  10050
+        case 11:
  10051
+        name = "Asir Province";
  10052
+        break;
10071 10053
         case 13:
10072 10054
         name = "Ha'il";
10073 10055
         break;
@@ -12635,25 +12617,46 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
12635 12617
         name = "Shabwah";
12636 12618
         break;
12637 12619
         case 6:
12638  
-        name = "Al Ghaydah";
  12620
+        name = "Lahij";
  12621
+        break;
  12622
+        case 7:
  12623
+        name = "Al Bayda'";
12639 12624
         break;
12640 12625
         case 8:
12641 12626
         name = "Al Hudaydah";
12642 12627
         break;
  12628
+        case 9:
  12629
+        name = "Al Jawf";
  12630
+        break;
12643 12631
         case 10:
12644 12632
         name = "Al Mahwit";
12645 12633
         break;
12646 12634
         case 11:
12647 12635
         name = "Dhamar";
12648 12636
         break;
  12637
+        case 12:
  12638
+        name = "Hajjah";
  12639
+        break;
  12640
+        case 13:
  12641
+        name = "Ibb";
  12642
+        break;
12649 12643
         case 14:
12650 12644
         name = "Ma'rib";
12651 12645
         break;
12652 12646
         case 15:
12653  
-        name = "Sa";
  12647
+        name = "Sa'dah";
12654 12648
         break;
12655 12649
         case 16:
12656  
-        name = "San";
  12650
+        name = "San'a'";
  12651
+        break;
  12652
+        case 17:
  12653
+        name = "Taizz";
  12654
+        break;
  12655
+        case 18:
  12656
+        name = "Ad Dali";
  12657
+        break;
  12658
+        case 19:
  12659
+        name = "Amran";
12657 12660
         break;
12658 12661
         case 20:
12659 12662
         name = "Al Bayda'";
@@ -12671,7 +12674,7 @@ else if (    (    ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65
12671 12674
         name = "Lahij";
12672 12675
         break;
12673 12676
         case 25:
12674  
-        name = "Ta";
  12677
+        name = "Taizz";
12675 12678
         break;
12676 12679
       }
12677 12680
     }
1,356  source/com/maxmind/geoip/timeZone.java
@@ -9,598 +9,26 @@ static public String timeZoneByCountryAndRegion(String country,String region) {
9 9
     if (region == null) {
10 10
       region = "";
11 11
     }
12  
-    if (country.equals("US") == true) {
13  
-      if (region.equals("AL") == true) {
14  
-        timezone = "America/Chicago";
15  
-      } else if (region.equals("AK") == true) {
16  
-        timezone = "America/Anchorage";
17  
-      } else if (region.equals("AZ") == true) {
18  
-        timezone = "America/Phoenix";
19  
-      } else if (region.equals("AR") == true) {
20  
-        timezone = "America/Chicago";
21  
-      } else if (region.equals("CA") == true) {
22  
-        timezone = "America/Los_Angeles";
23  
-      } else if (region.equals("CO") == true) {
24  
-        timezone = "America/Denver";
25  
-      } else if (region.equals("CT") == true) {
26  
-        timezone = "America/New_York";
27  
-      } else if (region.equals("DE") == true) {
28  
-        timezone = "America/New_York";
29  
-      } else if (region.equals("DC") == true) {
30  
-        timezone = "America/New_York";
31  
-      } else if (region.equals("FL") == true) {
32  
-        timezone = "America/New_York";
33  
-      } else if (region.equals("GA") == true) {
34  
-        timezone = "America/New_York";
35  
-      } else if (region.equals("HI") == true) {
36  
-        timezone = "Pacific/Honolulu";
37  
-      } else if (region.equals("ID") == true) {
38  
-        timezone = "America/Denver";
39  
-      } else if (region.equals("IL") == true) {
40  
-        timezone = "America/Chicago";
41  
-      } else if (region.equals("IN") == true) {
42  
-        timezone = "America/Indianapolis";
43  
-      } else if (region.equals("IA") == true) {
44  
-        timezone = "America/Chicago";
45  
-      } else if (region.equals("KS") == true) {
46  
-        timezone = "America/Chicago";
47  
-      } else if (region.equals("KY") == true) {
48  
-        timezone = "America/New_York";
49  
-      } else if (region.equals("LA") == true) {
50  
-        timezone = "America/Chicago";
51  
-      } else if (region.equals("ME") == true) {
52  
-        timezone = "America/New_York";
53  
-      } else if (region.equals("MD") == true) {
54  
-        timezone = "America/New_York";
55  
-      } else if (region.equals("MA") == true) {
56  
-        timezone = "America/New_York";
57  
-      } else if (region.equals("MI") == true) {
58  
-        timezone = "America/New_York";
59  
-      } else if (region.equals("MN") == true) {
60  
-        timezone = "America/Chicago";
61  
-      } else if (region.equals("MS") == true) {
62  
-        timezone = "America/Chicago";
63  
-      } else if (region.equals("MO") == true) {
64  
-        timezone = "America/Chicago";
65  
-      } else if (region.equals("MT") == true) {
66  
-        timezone = "America/Denver";
67  
-      } else if (region.equals("NE") == true) {
68  
-        timezone = "America/Chicago";
69  
-      } else if (region.equals("NV") == true) {
70  
-        timezone = "America/Los_Angeles";
71  
-      } else if (region.equals("NH") == true) {
72  
-        timezone = "America/New_York";
73  
-      } else if (region.equals("NJ") == true) {
74  
-        timezone = "America/New_York";
75  
-      } else if (region.equals("NM") == true) {
76  
-        timezone = "America/Denver";
77  
-      } else if (region.equals("NY") == true) {
78  
-        timezone = "America/New_York";
79  
-      } else if (region.equals("NC") == true) {
80  
-        timezone = "America/New_York";
81  
-      } else if (region.equals("ND") == true) {
82  
-        timezone = "America/Chicago";
83  
-      } else if (region.equals("OH") == true) {
84  
-        timezone = "America/New_York";
85  
-      } else if (region.equals("OK") == true) {
86  
-        timezone = "America/Chicago";
87  
-      } else if (region.equals("OR") == true) {
88  
-        timezone = "America/Los_Angeles";
89  
-      } else if (region.equals("PA") == true) {
90  
-        timezone = "America/New_York";
91  
-      } else if (region.equals("RI") == true) {
92  
-        timezone = "America/New_York";
93  
-      } else if (region.equals("SC") == true) {
94  
-        timezone = "America/New_York";
95  
-      } else if (region.equals("SD") == true) {
96  
-        timezone = "America/Chicago";
97  
-      } else if (region.equals("TN") == true) {
98  
-        timezone = "America/Chicago";
99  
-      } else if (region.equals("TX") == true) {
100  
-        timezone = "America/Chicago";
101  
-      } else if (region.equals("UT") == true) {
102  
-        timezone = "America/Denver";
103  
-      } else if (region.equals("VT") == true) {
104  
-        timezone = "America/New_York";
105  
-      } else if (region.equals("VA") == true) {
106  
-        timezone = "America/New_York";
107  
-      } else if (region.equals("WA") == true) {
108  
-        timezone = "America/Los_Angeles";
109  
-      } else if (region.equals("WV") == true) {
110  
-        timezone = "America/New_York";
111  
-      } else if (region.equals("WI") == true) {
112  
-        timezone = "America/Chicago";
113  
-      } else if (region.equals("WY") == true) {
114  
-        timezone = "America/Denver";
115  
-      }
116  
-    } else if (country.equals("CA") == true) {
117  
-      if (region.equals("AB") == true) {
118  
-        timezone = "America/Edmonton";
119  
-      } else if (region.equals("BC") == true) {
120  
-        timezone = "America/Vancouver";
121  
-      } else if (region.equals("MB") == true) {
122  
-        timezone = "America/Winnipeg";
123  
-      } else if (region.equals("NB") == true) {
124  
-        timezone = "America/Halifax";
125  
-      } else if (region.equals("NL") == true) {
126  
-        timezone = "America/St_Johns";
127  
-      } else if (region.equals("NT") == true) {
128  
-        timezone = "America/Yellowknife";
129  
-      } else if (region.equals("NS") == true) {
130  
-        timezone = "America/Halifax";
131  
-      } else if (region.equals("NU") == true) {
132  
-        timezone = "America/Rankin_Inlet";
133  
-      } else if (region.equals("ON") == true) {
134  
-        timezone = "America/Rainy_River";
135  
-      } else if (region.equals("PE") == true) {
136  
-        timezone = "America/Halifax";
137  
-      } else if (region.equals("QC") == true) {
138  
-        timezone = "America/Montreal";
139  
-      } else if (region.equals("SK") == true) {
140  
-        timezone = "America/Regina";
141  
-      } else if (region.equals("YT") == true) {
142  
-        timezone = "America/Whitehorse";
143  
-      }
144  
-    } else if (country.equals("AU") == true) {
145  
-      if (region.equals("01") == true) {
146  
-        timezone = "Australia/Canberra";
147  
-      } else if (region.equals("02") == true) {
148  
-        timezone = "Australia/NSW";
149  
-      } else if (region.equals("03") == true) {
150  
-        timezone = "Australia/North";
151  
-      } else if (region.equals("04") == true) {
152  
-        timezone = "Australia/Queensland";
153  
-      } else if (region.equals("05") == true) {
154  
-        timezone = "Australia/South";
155  
-      } else if (region.equals("06") == true) {
156  
-        timezone = "Australia/Tasmania";
157  
-      } else if (region.equals("07") == true) {
158  
-        timezone = "Australia/Victoria";
159  
-      } else if (region.equals("08") == true) {
160  
-        timezone = "Australia/West";
161  
-      }
162  
-    } else if (country.equals("AS") == true) {
163  
-      timezone = "US/Samoa";
164  
-    } else if (country.equals("CI") == true) {
165  
-      timezone = "Africa/Abidjan";
166  
-    } else if (country.equals("GH") == true) {
167  
-      timezone = "Africa/Accra";
168  
-    } else if (country.equals("DZ") == true) {
169  
-      timezone = "Africa/Algiers";
170  
-    } else if (country.equals("ER") == true) {
171  
-      timezone = "Africa/Asmera";
172  
-    } else if (country.equals("ML") == true) {
173  
-      timezone = "Africa/Bamako";
174  
-    } else if (country.equals("CF") == true) {
175  
-      timezone = "Africa/Bangui";
176  
-    } else if (country.equals("GM") == true) {
177  
-      timezone = "Africa/Banjul";
178  
-    } else if (country.equals("GW") == true) {
179  
-      timezone = "Africa/Bissau";
180  
-    } else if (country.equals("CG") == true) {
181  
-      timezone = "Africa/Brazzaville";
182  
-    } else if (country.equals("BI") == true) {
183  
-      timezone = "Africa/Bujumbura";
184  
-    } else if (country.equals("EG") == true) {
185  
-      timezone = "Africa/Cairo";
186  
-    } else if (country.equals("MA") == true) {
187  
-      timezone = "Africa/Casablanca";
188  
-    } else if (country.equals("GN") == true) {
189  
-      timezone = "Africa/Conakry";
190  
-    } else if (country.equals("SN") == true) {
191  
-      timezone = "Africa/Dakar";
192  
-    } else if (country.equals("DJ") == true) {
193  
-      timezone = "Africa/Djibouti";
194  
-    } else if (country.equals("SL") == true) {
195  
-      timezone = "Africa/Freetown";
196  
-    } else if (country.equals("BW") == true) {
197  
-      timezone = "Africa/Gaborone";
198  
-    } else if (country.equals("ZW") == true) {
199  
-      timezone = "Africa/Harare";
200  
-    } else if (country.equals("ZA") == true) {
201  
-      timezone = "Africa/Johannesburg";
202  
-    } else if (country.equals("UG") == true) {
203  
-      timezone = "Africa/Kampala";
204  
-    } else if (country.equals("SD") == true) {
205  
-      timezone = "Africa/Khartoum";
206  
-    } else if (country.equals("RW") == true) {
207  
-      timezone = "Africa/Kigali";
208  
-    } else if (country.equals("NG") == true) {
209  
-      timezone = "Africa/Lagos";
210  
-    } else if (country.equals("GA") == true) {
211  
-      timezone = "Africa/Libreville";
212  
-    } else if (country.equals("TG") == true) {
213  
-      timezone = "Africa/Lome";
214  
-    } else if (country.equals("AO") == true) {
215  
-      timezone = "Africa/Luanda";
216  
-    } else if (country.equals("ZM") == true) {
217  
-      timezone = "Africa/Lusaka";
218  
-    } else if (country.equals("GQ") == true) {
219  
-      timezone = "Africa/Malabo";
220  
-    } else if (country.equals("MZ") == true) {
221  
-      timezone = "Africa/Maputo";
222  
-    } else if (country.equals("LS") == true) {
223  
-      timezone = "Africa/Maseru";
224  
-    } else if (country.equals("SZ") == true) {
225  
-      timezone = "Africa/Mbabane";
226  
-    } else if (country.equals("SO") == true) {
227  
-      timezone = "Africa/Mogadishu";
228  
-    } else if (country.equals("LR") == true) {
229  
-      timezone = "Africa/Monrovia";
230  
-    } else if (country.equals("KE") == true) {
231  
-      timezone = "Africa/Nairobi";
232  
-    } else if (country.equals("TD") == true) {
233  
-      timezone = "Africa/Ndjamena";
234  
-    } else if (country.equals("NE") == true) {
235  
-      timezone = "Africa/Niamey";
236  
-    } else if (country.equals("MR") == true) {
237  
-      timezone = "Africa/Nouakchott";
238  
-    } else if (country.equals("BF") == true) {
239  
-      timezone = "Africa/Ouagadougou";
240  
-    } else if (country.equals("ST") == true) {
241  
-      timezone = "Africa/Sao_Tome";
242  
-    } else if (country.equals("LY") == true) {
243  
-      timezone = "Africa/Tripoli";
244  
-    } else if (country.equals("TN") == true) {
245  
-      timezone = "Africa/Tunis";
246  
-    } else if (country.equals("AI") == true) {
247  
-      timezone = "America/Anguilla";
248  
-    } else if (country.equals("AG") == true) {
249  
-      timezone = "America/Antigua";
250  
-    } else if (country.equals("AW") == true) {
251  
-      timezone = "America/Aruba";
252  
-    } else if (country.equals("BB") == true) {
253  
-      timezone = "America/Barbados";
254  
-    } else if (country.equals("BZ") == true) {
255  
-      timezone = "America/Belize";
256  
-    } else if (country.equals("CO") == true) {
257  
-      timezone = "America/Bogota";
258  
-    } else if (country.equals("VE") == true) {
259  
-      timezone = "America/Caracas";
260  
-    } else if (country.equals("KY") == true) {
261  
-      timezone = "America/Cayman";
262  
-    } else if (country.equals("CR") == true) {
263  
-      timezone = "America/Costa_Rica";
264  
-    } else if (country.equals("DM") == true) {
265  
-      timezone = "America/Dominica";
266  
-    } else if (country.equals("SV") == true) {
267  
-      timezone = "America/El_Salvador";
268  
-    } else if (country.equals("GD") == true) {
269  
-      timezone = "America/Grenada";
270  
-    } else if (country.equals("FR") == true) {
271  
-      timezone = "Europe/Paris";
272  
-    } else if (country.equals("GP") == true) {
273  
-      timezone = "America/Guadeloupe";
274  
-    } else if (country.equals("GT") == true) {
275  
-      timezone = "America/Guatemala";
276  
-    } else if (country.equals("GY") == true) {
277  
-      timezone = "America/Guyana";
278  
-    } else if (country.equals("CU") == true) {
279  
-      timezone = "America/Havana";
280  
-    } else if (country.equals("JM") == true) {
281  
-      timezone = "America/Jamaica";
282  
-    } else if (country.equals("BO") == true) {
283  
-      timezone = "America/La_Paz";
284  
-    } else if (country.equals("PE") == true) {
285  
-      timezone = "America/Lima";
286  
-    } else if (country.equals("NI") == true) {
287  
-      timezone = "America/Managua";
288  
-    } else if (country.equals("MQ") == true) {
289  
-      timezone = "America/Martinique";
290  
-    } else if (country.equals("UY") == true) {
291  
-      timezone = "America/Montevideo";
292  
-    } else if (country.equals("MS") == true) {
293  
-      timezone = "America/Montserrat";
294  
-    } else if (country.equals("BS") == true) {
295  
-      timezone = "America/Nassau";
296  
-    } else if (country.equals("PA") == true) {
297  
-      timezone = "America/Panama";
298  
-    } else if (country.equals("SR") == true) {
299  
-      timezone = "America/Paramaribo";
300  
-    } else if (country.equals("PR") == true) {
301  
-      timezone = "America/Puerto_Rico";
302  
-    } else if (country.equals("KN") == true) {
303  
-      timezone = "America/St_Kitts";
304  
-    } else if (country.equals("LC") == true) {
305  
-      timezone = "America/St_Lucia";
306  
-    } else if (country.equals("VC") == true) {
307  
-      timezone = "America/St_Vincent";
308  
-    } else if (country.equals("HN") == true) {
309  
-      timezone = "America/Tegucigalpa";
310  
-    } else if (country.equals("YE") == true) {
311  
-      timezone = "Asia/Aden";
312  
-    } else if (country.equals("JO") == true) {
313  
-      timezone = "Asia/Amman";
314  
-    } else if (country.equals("TM") == true) {
315  
-      timezone = "Asia/Ashgabat";
316  
-    } else if (country.equals("IQ") == true) {
317  
-      timezone = "Asia/Baghdad";
318  
-    } else if (country.equals("BH") == true) {
319  
-      timezone = "Asia/Bahrain";
320  
-    } else if (country.equals("AZ") == true) {
321  
-      timezone = "Asia/Baku";
322  
-    } else if (country.equals("TH") == true) {
323  
-      timezone = "Asia/Bangkok";
324  
-    } else if (country.equals("LB") == true) {
325  
-      timezone = "Asia/Beirut";
326  
-    } else if (country.equals("KG") == true) {
327  
-      timezone = "Asia/Bishkek";
328  
-    } else if (country.equals("BN") == true) {
329  
-      timezone = "Asia/Brunei";
330  
-    } else if (country.equals("IN") == true) {
331  
-      timezone = "Asia/Calcutta";
332  
-    } else if (country.equals("MN") == true) {
333  
-      timezone = "Asia/Choibalsan";
334  
-    } else if (country.equals("LK") == true) {
335  
-      timezone = "Asia/Colombo";
336  
-    } else if (country.equals("BD") == true) {
337  
-      timezone = "Asia/Dhaka";
338  
-    } else if (country.equals("AE") == true) {
339  
-      timezone = "Asia/Dubai";
340  
-    } else if (country.equals("TJ") == true) {
341  
-      timezone = "Asia/Dushanbe";
342  
-    } else if (country.equals("HK") == true) {
343  
-      timezone = "Asia/Hong_Kong";
344  
-    } else if (country.equals("TR") == true) {
345  
-      timezone = "Asia/Istanbul";
346  
-    } else if (country.equals("IL") == true) {
347  
-      timezone = "Asia/Jerusalem";
348  
-    } else if (country.equals("AF") == true) {
349  
-      timezone = "Asia/Kabul";
350  
-    } else if (country.equals("PK") == true) {
351  
-      timezone = "Asia/Karachi";
352  
-    } else if (country.equals("NP") == true) {
353  
-      timezone = "Asia/Katmandu";
354  
-    } else if (country.equals("KW") == true) {
355  
-      timezone = "Asia/Kuwait";
356  
-    } else if (country.equals("MO") == true) {
357  
-      timezone = "Asia/Macao";
358  
-    } else if (country.equals("PH") == true) {
359  
-      timezone = "Asia/Manila";
360  
-    } else if (country.equals("OM") == true) {
361  
-      timezone = "Asia/Muscat";
362  
-    } else if (country.equals("CY") == true) {
363  
-      timezone = "Asia/Nicosia";
364  
-    } else if (country.equals("KP") == true) {
365  
-      timezone = "Asia/Pyongyang";
366  
-    } else if (country.equals("QA") == true) {
367  
-      timezone = "Asia/Qatar";
368  
-    } else if (country.equals("MM") == true) {
369  
-      timezone = "Asia/Rangoon";
370  
-    } else if (country.equals("SA") == true) {
371  
-      timezone = "Asia/Riyadh";
372  
-    } else if (country.equals("KR") == true) {
373  
-      timezone = "Asia/Seoul";
374  
-    } else if (country.equals("SG") == true) {
375  
-      timezone = "Asia/Singapore";
376  
-    } else if (country.equals("TW") == true) {
377  
-      timezone = "Asia/Taipei";
378  
-    } else if (country.equals("GE") == true) {
379  
-      timezone = "Asia/Tbilisi";
380  
-    } else if (country.equals("BT") == true) {
381  
-      timezone = "Asia/Thimphu";
382  
-    } else if (country.equals("JP") == true) {
383  
-      timezone = "Asia/Tokyo";
384  
-    } else if (country.equals("LA") == true) {
385  
-      timezone = "Asia/Vientiane";
386  
-    } else if (country.equals("AM") == true) {
387  
-      timezone = "Asia/Yerevan";
388  
-    } else if (country.equals("BM") == true) {
389  
-      timezone = "Atlantic/Bermuda";
390  
-    } else if (country.equals("CV") == true) {
391  
-      timezone = "Atlantic/Cape_Verde";
392  
-    } else if (country.equals("FO") == true) {
393  
-      timezone = "Atlantic/Faeroe";
394  
-    } else if (country.equals("IS") == true) {
395  
-      timezone = "Atlantic/Reykjavik";
396  
-    } else if (country.equals("GS") == true) {
397  
-      timezone = "Atlantic/South_Georgia";
398  
-    } else if (country.equals("SH") == true) {
399  
-      timezone = "Atlantic/St_Helena";
400  
-    } else if (country.equals("CL") == true) {
401  
-      timezone = "Chile/Continental";
402  
-    } else if (country.equals("NL") == true) {
403  
-      timezone = "Europe/Amsterdam";
404  
-    } else if (country.equals("AD") == true) {
  12
+    if (country.equals("AD") == true) {
405 13
       timezone = "Europe/Andorra";
406  
-    } else if (country.equals("GR") == true) {
407  
-      timezone = "Europe/Athens";
408  
-    } else if (country.equals("YU") == true) {
409  
-      timezone = "Europe/Belgrade";
410  
-    } else if (country.equals("DE") == true) {
411  
-      timezone = "Europe/Berlin";
412  
-    } else if (country.equals("SK") == true) {
413  
-      timezone = "Europe/Bratislava";
414  
-    } else if (country.equals("BE") == true) {
415  
-      timezone = "Europe/Brussels";
416  
-    } else if (country.equals("RO") == true) {
417  
-      timezone = "Europe/Bucharest";
418  
-    } else if (country.equals("HU") == true) {
419  
-      timezone = "Europe/Budapest";
420  
-    } else if (country.equals("DK") == true) {
421  
-      timezone = "Europe/Copenhagen";
422  
-    } else if (country.equals("IE") == true) {
423  
-      timezone = "Europe/Dublin";
424  
-    } else if (country.equals("GI") == true) {
425  
-      timezone = "Europe/Gibraltar";
426  
-    } else if (country.equals("FI") == true) {
427  
-      timezone = "Europe/Helsinki";
428  
-    } else if (country.equals("SI") == true) {
429  
-      timezone = "Europe/Ljubljana";
430  
-    } else if (country.equals("GB") == true) {
431  
-      timezone = "Europe/London";
432  
-    } else if (country.equals("LU") == true) {
433  
-      timezone = "Europe/Luxembourg";
434  
-    } else if (country.equals("MT") == true) {
435  
-      timezone = "Europe/Malta";
436  
-    } else if (country.equals("BY") == true) {
437  
-      timezone = "Europe/Minsk";
438  
-    } else if (country.equals("MC") == true) {
439  
-      timezone = "Europe/Monaco";
440  
-    } else if (country.equals("NO") == true) {
441  
-      timezone = "Europe/Oslo";
442  
-    } else if (country.equals("CZ") == true) {
443  
-      timezone = "Europe/Prague";
444  
-    } else if (country.equals("LV") == true) {
445  
-      timezone = "Europe/Riga";
446  
-    } else if (country.equals("IT") == true) {
447  
-      timezone = "Europe/Rome";
448  
-    } else if (country.equals("SM") == true) {
449  
-      timezone = "Europe/San_Marino";
450  
-    } else if (country.equals("BA") == true) {
451  
-      timezone = "Europe/Sarajevo";
452  
-    } else if (country.equals("MK") == true) {
453  
-      timezone = "Europe/Skopje";
454  
-    } else if (country.equals("BG") == true) {
455  
-      timezone = "Europe/Sofia";
456  
-    } else if (country.equals("SE") == true) {
457  
-      timezone = "Europe/Stockholm";
458  
-    } else if (country.equals("EE") == true) {
459  
-      timezone = "Europe/Tallinn";
460  
-    } else if (country.equals("AL") == true) {
461  
-      timezone = "Europe/Tirane";
462  
-    } else if (country.equals("LI") == true) {
463  
-      timezone = "Europe/Vaduz";
464  
-    } else if (country.equals("VA") == true) {
465  
-      timezone = "Europe/Vatican";
466  
-    } else if (country.equals("AT") == true) {
467  
-      timezone = "Europe/Vienna";
468  
-    } else if (country.equals("LT") == true) {
469  
-      timezone = "Europe/Vilnius";
470  
-    } else if (country.equals("PL") == true) {
471  
-      timezone = "Europe/Warsaw";
472  
-    } else if (country.equals("HR") == true) {
473  
-      timezone = "Europe/Zagreb";
474  
-    } else if (country.equals("IR") == true) {
475  
-      timezone = "Asia/Tehran";
476  
-    } else if (country.equals("MG") == true) {
477  
-      timezone = "Indian/Antananarivo";
478  
-    } else if (country.equals("CX") == true) {
479  
-      timezone = "Indian/Christmas";
480  
-    } else if (country.equals("CC") == true) {
481  
-      timezone = "Indian/Cocos";
482  
-    } else if (country.equals("KM") == true) {
483  
-      timezone = "Indian/Comoro";
484  
-    } else if (country.equals("MV") == true) {
485  
-      timezone = "Indian/Maldives";
486  
-    } else if (country.equals("MU") == true) {
487  
-      timezone = "Indian/Mauritius";
488  
-    } else if (country.equals("YT") == true) {
489  
-      timezone = "Indian/Mayotte";
490  
-    } else if (country.equals("RE") == true) {
491  
-      timezone = "Indian/Reunion";
492  
-    } else if (country.equals("FJ") == true) {
493  
-      timezone = "Pacific/Fiji";
494  
-    } else if (country.equals("TV") == true) {
495  
-      timezone = "Pacific/Funafuti";
496  
-    } else if (country.equals("GU") == true) {
497  
-      timezone = "Pacific/Guam";
498  
-    } else if (country.equals("NR") == true) {
499  
-      timezone = "Pacific/Nauru";
500  
-    } else if (country.equals("NU") == true) {
501  
-      timezone = "Pacific/Niue";
502  
-    } else if (country.equals("NF") == true) {
503  
-      timezone = "Pacific/Norfolk";
504  
-    } else if (country.equals("PW") == true) {
505  
-      timezone = "Pacific/Palau";
506  
-    } else if (country.equals("PN") == true) {
507  
-      timezone = "Pacific/Pitcairn";
508  
-    } else if (country.equals("CK") == true) {
509  
-      timezone = "Pacific/Rarotonga";
510  
-    } else if (country.equals("WS") == true) {
511  
-      timezone = "Pacific/Samoa";
512  
-    } else if (country.equals("KI") == true) {
513  
-      timezone = "Pacific/Tarawa";
514  
-    } else if (country.equals("TO") == true) {
515  
-      timezone = "Pacific/Tongatapu";
516  
-    } else if (country.equals("WF") == true) {
517  
-      timezone = "Pacific/Wallis";
518  
-    } else if (country.equals("TZ") == true) {
519  
-      timezone = "Africa/Dar_es_Salaam";
520  
-    } else if (country.equals("VN") == true) {
521  
-      timezone = "Asia/Phnom_Penh";
522  
-    } else if (country.equals("KH") == true) {
523  
-      timezone = "Asia/Phnom_Penh";
524  
-    } else if (country.equals("CM") == true) {
525  
-      timezone = "Africa/Lagos";
526  
-    } else if (country.equals("DO") == true) {
527  
-      timezone = "America/Santo_Domingo";
528  
-    } else if (country.equals("ET") == true) {
529  
-      timezone = "Africa/Addis_Ababa";
530  
-    } else if (country.equals("FX") == true) {
531  
-      timezone = "Europe/Paris";
532  
-    } else if (country.equals("HT") == true) {
533  
-      timezone = "America/Port-au-Prince";
534  
-    } else if (country.equals("CH") == true) {
535  
-      timezone = "Europe/Zurich";
  14
+    } else if (country.equals("AE") == true) {
  15
+      timezone = "Asia/Dubai";
  16
+    } else if (country.equals("AF") == true) {
  17
+      timezone = "Asia/Kabul";
  18
+    } else if (country.equals("AG") == true) {
  19
+      timezone = "America/Antigua";
  20
+    } else if (country.equals("AI") == true) {
  21
+      timezone = "America/Anguilla";
  22
+    } else if (country.equals("AL") == true) {
  23
+      timezone = "Europe/Tirane";
  24
+    } else if (country.equals("AM") == true) {
  25
+      timezone = "Asia/Yerevan";
536 26
     } else if (country.equals("AN") == true) {
537 27
       timezone = "America/Curacao";
538  
-    } else if (country.equals("BJ") == true) {
539  
-      timezone = "Africa/Porto-Novo";
540  
-    } else if (country.equals("EH") == true) {
541  
-      timezone = "Africa/El_Aaiun";
542  
-    } else if (country.equals("FK") == true) {
543  
-      timezone = "Atlantic/Stanley";
544  
-    } else if (country.equals("GF") == true) {
545  
-      timezone = "America/Cayenne";
546  
-    } else if (country.equals("IO") == true) {
547  
-      timezone = "Indian/Chagos";
548  
-    } else if (country.equals("MD") == true) {
549  
-      timezone = "Europe/Chisinau";
550  
-    } else if (country.equals("MP") == true) {
551  
-      timezone = "Pacific/Saipan";
552  
-    } else if (country.equals("MW") == true) {
553  
-      timezone = "Africa/Blantyre";
554  
-    } else if (country.equals("NA") == true) {
555  
-      timezone = "Africa/Windhoek";
556  
-    } else if (country.equals("NC") == true) {
557  
-      timezone = "Pacific/Noumea";
558  
-    } else if (country.equals("PG") == true) {
559  
-      timezone = "Pacific/Port_Moresby";
560  
-    } else if (country.equals("PM") == true) {
561  
-      timezone = "America/Miquelon";
562  
-    } else if (country.equals("PS") == true) {
563  
-      timezone = "Asia/Gaza";
564  
-    } else if (country.equals("PY") == true) {
565  
-      timezone = "America/Asuncion";
566  
-    } else if (country.equals("SB") == true) {
567  
-      timezone = "Pacific/Guadalcanal";
568  
-    } else if (country.equals("SC") == true) {
569  
-      timezone = "Indian/Mahe";
570  
-    } else if (country.equals("SJ") == true) {
571  
-      timezone = "Arctic/Longyearbyen";
572  
-    } else if (country.equals("SY") == true) {
573  
-      timezone = "Asia/Damascus";
574  
-    } else if (country.equals("TC") == true) {
575  
-      timezone = "America/Grand_Turk";
576  
-    } else if (country.equals("TF") == true) {
577  
-      timezone = "Indian/Kerguelen";
578  
-    } else if (country.equals("TK") == true) {
579  
-      timezone = "Pacific/Fakaofo";
580  
-    } else if (country.equals("TT") == true) {
581  
-      timezone = "America/Port_of_Spain";
582  
-    } else if (country.equals("VG") == true) {
583  
-      timezone = "America/Tortola";
584  
-    } else if (country.equals("VI") == true) {
585  
-      timezone = "America/St_Thomas";
586  
-    } else if (country.equals("VU") == true) {
587  
-      timezone = "Pacific/Efate";
588  
-    } else if (country.equals("RS") == true) {
589  
-      timezone = "Europe/Belgrade";
590  
-    } else if (country.equals("ME") == true) {
591  
-      timezone = "Europe/Podgorica";
592  
-    } else if (country.equals("AX") == true) {
593  
-      timezone = "Europe/Mariehamn";
594  
-    } else if (country.equals("GG") == true) {
595  
-      timezone = "Europe/Guernsey";
596  
-    } else if (country.equals("IM") == true) {
597  
-      timezone = "Europe/Isle_of_Man";
598  
-    } else if (country.equals("JE") == true) {
599  
-      timezone = "Europe/Jersey";
600  
-    } else if (country.equals("BL") == true) {
601  
-      timezone = "America/St_Barthelemy";
602  
-    } else if (country.equals("MF") == true) {
603  
-      timezone = "America/Marigot";
  28
+    } else if (country.equals("AO") == true) {
  29
+      timezone = "Africa/Luanda";
  30
+    } else if (country.equals("AQ") == true) {
  31
+      timezone = "Antarctica/South_Pole";
604 32
     } else if (country.equals("AR") == true) {
605 33
       if (region.equals("01") == true) {
606 34
         timezone = "America/Argentina/Buenos_Aires";
@@ -613,7 +41,7 @@ static public String timeZoneByCountryAndRegion(String country,String region) {
613 41
       } else if (region.equals("05") == true) {
614 42
         timezone = "America/Argentina/Cordoba";
615 43
       } else if (region.equals("06") == true) {
616  
-        timezone = "America/Argentina/Tucuman";
  44
+        timezone = "America/Argentina/Buenos_Aires";
617 45
       } else if (region.equals("07") == true) {
618 46
         timezone = "America/Argentina/Buenos_Aires";
619 47
       } else if (region.equals("08") == true) {
@@ -631,9 +59,9 @@ static public String timeZoneByCountryAndRegion(String country,String region) {
631 59
       } else if (region.equals("14") == true) {
632 60
         timezone = "America/Argentina/Buenos_Aires";
633 61
       } else if (region.equals("15") == true) {
634  
-        timezone = "America/Argentina/San_Luis";
  62
+        timezone = "America/Argentina/Mendoza";
635 63
       } else if (region.equals("16") == true) {
636  
-        timezone = "America/Argentina/Buenos_Aires";
  64
+        timezone = "America/Argentina/San_Luis";
637 65
       } else if (region.equals("17") == true) {
638 66
         timezone = "America/Argentina/Salta";
639 67
       } else if (region.equals("18") == true) {
@@ -643,7 +71,7 @@ static public String timeZoneByCountryAndRegion(String country,String region) {
643 71
       } else if (region.equals("20") == true) {
644 72
         timezone = "America/Argentina/Rio_Gallegos";
645 73
       } else if (region.equals("21") == true) {