Merge pull request #10 from dhull/update-database

Update time zone database from Olson database
This commit is contained in:
Dmitry Melnikov 2014-01-16 00:32:48 -08:00
commit 66468690b6
6 changed files with 767 additions and 331 deletions

View file

@ -1,2 +1,9 @@
all: all: include/tz_index.hrl
./rebar compile ./rebar compile
check:
./rebar eunit
include/tz_index.hrl: src/ibuild.erl include/tz_database.hrl
cd include && ln -s ../src/ibuild.erl && escript ibuild.erl; EV=$$?; rm ibuild.erl; exit $$EV

View file

@ -23,7 +23,7 @@
% StdMin = Integer(), GMT offset in minutes. W/o daylight savings % StdMin = Integer(), GMT offset in minutes. W/o daylight savings
% DstMin = Integer(), daylight saving. Adjustment for GMT offset, when daylight saving is on % DstMin = Integer(), daylight saving. Adjustment for GMT offset, when daylight saving is on
% DstStartDay = {NthWeekday, Weekday, Month}, daylight saving transition rule. Can be undef if no daylight saving rule specified % DstStartDay = {NthWeekday, Weekday, Month}, daylight saving transition rule. Can be undef if no daylight saving rule specified
% NthWeekday = Integer(), 1(first week),2(second week),3(...),4(...),5(...),-1(last week) % NthWeekday = Integer() | 'last', 1(first week),2(second week),3(...),4(...),5(...),'last'(last week)
% Weekday = atom(), sun,mon,tue,wed,thu,fri,sat % Weekday = atom(), sun,mon,tue,wed,thu,fri,sat
% Month = atom(), jan,deb,mar,apr,may,jun,jul,aug,sep,oct,mov,dec % Month = atom(), jan,deb,mar,apr,may,jun,jul,aug,sep,oct,mov,dec
% DstStartTime = {Hour, Min} - time of daylight saving transition % DstStartTime = {Hour, Min} - time of daylight saving transition
@ -35,10 +35,33 @@
-define(tz_database, -define(tz_database,
[ [
%% Automatically generated from the time zone database version 2013i for 2014-01-09.
%% Problems:
%% Ignored Jun 29 in Rule Morocco.
%% Ignored Jul 29 in Rule Morocco.
%% Rounded Apr Sun>=23 to [4 sun apr] in Rule ChileAQ.
%% Rounded Sep Sun>=2 to [1 sun sep] in Rule ChileAQ.
%% Ignored Mar 22 in Rule Iran.
%% Ignored Sep 22 in Rule Iran.
%% Rounded Mar Fri>=23 to [4 fri mar] in Rule Zion.
%% Rounded Sep Fri>=21 to [4 fri sep] in Rule Palestine.
%% Rounded Oct Sun>=21 to [4 sun oct] in Rule Fiji.
%% Rounded Jan Sun>=18 to [3 sun jan] in Rule Fiji.
%% Rounded Apr Sun>=23 to [4 sun apr] in Rule Chile.
%% Rounded Sep Sun>=2 to [1 sun sep] in Rule Chile.
%% Discarded excess rules for Zone Africa/Casablanca.
%% Discarded excess rules for Zone Africa/El_Aaiun.
%% Moving rule to beginning of day for Zone America/Godthab.
%% Moving rule to beginning of day for Zone America/Godthab.
%% Moving rule to beginning of day for Zone Pacific/Easter.
%% Moving rule to beginning of day for Zone Pacific/Easter.
{"Africa/Abidjan",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Abidjan",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Accra",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Accra",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Addis Ababa",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Addis_Ababa",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Algiers",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Algiers",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}},
{"Africa/Asmara",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Asmera",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Asmera",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Bamako",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Bamako",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Bangui",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Bangui",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}},
@ -47,19 +70,20 @@
{"Africa/Blantyre",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Blantyre",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Brazzaville",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Brazzaville",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}},
{"Africa/Bujumbura",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Bujumbura",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Cairo",{"EET","EET"},{"EEST","EEST"},120,60,{last,fri,apr},{0,0},{last,fri,sep},{0,0}}, {"Africa/Cairo",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Casablanca",{"WET","WET"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Casablanca",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Africa/Ceuta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Africa/Ceuta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Africa/Conakry",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Conakry",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Dakar",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Dakar",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Dar es Salaam",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Dar_es_Salaam",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Djibouti",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Djibouti",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Douala",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Douala",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}},
{"Africa/El Aaiun",{"WET","WET"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/El_Aaiun",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Africa/Freetown",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Freetown",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Gaborone",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Gaborone",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Harare",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Harare",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Johannesburg",{"SAST","SAST"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Johannesburg",{"SAST","SAST"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Juba",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Kampala",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Kampala",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Khartoum",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Khartoum",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Africa/Kigali",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Kigali",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}},
@ -82,7 +106,7 @@
{"Africa/Nouakchott",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Nouakchott",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Ouagadougou",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Ouagadougou",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Porto-Novo",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Porto-Novo",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}},
{"Africa/Sao Tome",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Sao_Tome",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Timbuktu",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Timbuktu",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Africa/Tripoli",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Tripoli",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Africa/Tunis",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Tunis",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}},
@ -91,55 +115,82 @@
{"America/Anchorage",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Anchorage",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Anguilla",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Anguilla",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Antigua",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Antigua",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Araguaina",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Araguaina",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Buenos_Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Catamarca",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/ComodRivadavia",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Cordoba",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Jujuy",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/La_Rioja",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Mendoza",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Rio_Gallegos",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Salta",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/San_Juan",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/San_Luis",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Tucuman",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Argentina/Ushuaia",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Aruba",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Aruba",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Asuncion",{"PYT","PYT"},{"PYST","PYST"},-240,60,{1,sun,oct},{0,0},{1,sun,mar},{0,0}}, {"America/Asuncion",{"PYT","PYT"},{"PYST","PYST"},-240,60,{1,sun,oct},{0,0},{4,sun,mar},{0,0}},
{"America/Atikokan",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Atka",{"HAST","HAST"},{"HADT","HADT"},-600,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Bahia",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Bahia_Banderas",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Barbados",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Barbados",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Belem",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Belem",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Belize",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Belize",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Boa Vista",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Blanc-Sablon",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Boa_Vista",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Bogota",{"COT","COT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Bogota",{"COT","COT"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Boise",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Boise",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Buenos Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Buenos_Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Cambridge Bay",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Cambridge_Bay",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Campo_Grande",{"AMT","AMT"},{"AMST","AMST"},-240,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}},
{"America/Cancun",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Cancun",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Caracas",{"VET","VET"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Caracas",{"VET","VET"},undef,-270,0,undef,{0,0},undef,{0,0}},
{"America/Catamarca",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Catamarca",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Cayenne",{"GFT","GFT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Cayenne",{"GFT","GFT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Cayman",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Cayman",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Chicago",{"CST","Central Standard Time"},{"CDT","Central Daylight Time"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Chicago",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Chihuahua",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Chihuahua",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Coral_Harbour",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Cordoba",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Cordoba",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Costa Rica",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Costa_Rica",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Cuiaba",{"AMT","AMT"},{"AMST","AMST"},-240,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Creston",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}},
{"America/Cuiaba",{"AMT","AMT"},{"AMST","AMST"},-240,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}},
{"America/Curacao",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Curacao",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Danmarkshavn",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"America/Danmarkshavn",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"America/Dawson",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Dawson",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Dawson Creek",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, {"America/Dawson_Creek",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}},
{"America/Denver",{"MST","Mountain Standard Time"},{"MDT","Mountain Daylight Time"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Denver",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Detroit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Detroit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Dominica",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Dominica",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Edmonton",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Edmonton",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Eirunepe",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Eirunepe",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/El Salvador",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/El_Salvador",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Fortaleza",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Ensenada",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Glace Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Fort_Wayne",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Godthab",{"WGT","WGT"},{"WGST","WGST"},-180,60,{last,sat,mar},{22,0},{last,sat,oct},{23,0}}, {"America/Fortaleza",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Goose Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, {"America/Glace_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Grand Turk",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{0,0},{last,sun,oct},{0,0}}, {"America/Godthab",{"WGT","WGT"},{"WGST","WGST"},-180,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}},
{"America/Goose_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Grand_Turk",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Grenada",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Grenada",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Guadeloupe",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Guadeloupe",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Guatemala",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Guatemala",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Guayaquil",{"ECT","ECT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Guayaquil",{"ECT","ECT"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Guyana",{"GYT","GYT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Guyana",{"GYT","GYT"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Halifax",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Halifax",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Havana",{"CST","CST"},{"CDT","CDT"},-300,60,{1,sun,apr},{0,0},{last,sun,oct},{1,0}}, {"America/Havana",{"CST","CST"},{"CDT","CDT"},-300,60,{2,sun,mar},{0,0},{1,sun,nov},{1,0}},
{"America/Hermosillo",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, {"America/Hermosillo",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}},
{"America/Indiana/Indianapolis",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, {"America/Indiana/Indianapolis",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indiana/Knox",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, {"America/Indiana/Knox",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indiana/Marengo",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, {"America/Indiana/Marengo",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indiana/Vevay",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, {"America/Indiana/Petersburg",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indianapolis",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, {"America/Indiana/Tell_City",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indiana/Vevay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indiana/Vincennes",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indiana/Winamac",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Indianapolis",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Inuvik",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Inuvik",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Iqaluit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Iqaluit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Jamaica",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Jamaica",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
@ -147,131 +198,160 @@
{"America/Juneau",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Juneau",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Kentucky/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Kentucky/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Kentucky/Monticello",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Kentucky/Monticello",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/La Paz",{"BOT","BOT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Knox_IN",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Kralendijk",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/La_Paz",{"BOT","BOT"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Lima",{"PET","PET"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Lima",{"PET","PET"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Los Angeles",{"PST","Pacific Standard Time"},{"PDT","Pacific Daylight Time"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Los_Angeles",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Maceio",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Lower_Princes",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Maceio",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Managua",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Managua",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Manaus",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Manaus",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Marigot",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Martinique",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Martinique",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Matamoros",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Mazatlan",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Mazatlan",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Mendoza",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Mendoza",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Menominee",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Menominee",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Merida",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Merida",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Mexico City",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Metlakatla",{"MeST","MeST"},undef,-480,0,undef,{0,0},undef,{0,0}},
{"America/Mexico_City",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Miquelon",{"PMST","PMST"},{"PMDT","PMDT"},-180,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Miquelon",{"PMST","PMST"},{"PMDT","PMDT"},-180,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Moncton",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Monterrey",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Monterrey",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Montevideo",{"UYT","UYT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Montevideo",{"UYT","UYT"},{"UYST","UYST"},-180,60,{1,sun,oct},{2,0},{2,sun,mar},{2,0}},
{"America/Montreal",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Montreal",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Montserrat",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Montserrat",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Nassau",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Nassau",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/New York",{"EST","Eastern Standard Time"},{"EDT","Eastern Daylight Time"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/New_York",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Nipigon",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Nipigon",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Nome",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Nome",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Noronha",{"FNT","FNT"},undef,-120,0,undef,{0,0},undef,{0,0}}, {"America/Noronha",{"FNT","FNT"},undef,-120,0,undef,{0,0},undef,{0,0}},
{"America/North Dakota/Center",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/North_Dakota/Beulah",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/North_Dakota/Center",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/North_Dakota/New_Salem",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Ojinaga",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Panama",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Panama",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Pangnirtung",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Pangnirtung",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Paramaribo",{"SRT","SRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Paramaribo",{"SRT","SRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Phoenix",{"MST","Mountain Standard Time"},undef,-420,0,undef,{0,0},undef,{0,0}}, {"America/Phoenix",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}},
{"America/Port-au-Prince",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Port-au-Prince",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Port of Spain",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Port_of_Spain",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Porto Velho",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Porto_Acre",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Puerto Rico",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Porto_Velho",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Rainy River",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Puerto_Rico",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Rankin Inlet",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Rainy_River",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Recife",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Rankin_Inlet",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Recife",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Regina",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Regina",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Rio Branco",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Resolute",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Rio_Branco",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"America/Rosario",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Rosario",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Santiago",{"CLT","CLT"},{"CLST","CLST"},-240,60,{2,sun,oct},{0,0},{2,sun,mar},{0,0}}, {"America/Santa_Isabel",{"PST","PST"},{"PDT","PDT"},-480,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"America/Santo Domingo",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Santarem",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"America/Sao Paulo",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Santiago",{"CLT","CLT"},{"CLST","CLST"},-240,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}},
{"America/Santo_Domingo",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Sao_Paulo",{"BRT","BRT"},{"BRST","BRST"},-180,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}},
{"America/Scoresbysund",{"EGT","EGT"},{"EGST","EGST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}}, {"America/Scoresbysund",{"EGT","EGT"},{"EGST","EGST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}},
{"America/Shiprock",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Shiprock",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/St Johns",{"NST","NST"},{"NDT","NDT"},-210,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, {"America/Sitka",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/St Kitts",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Barthelemy",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/St Lucia",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Johns",{"NST","NST"},{"NDT","NDT"},-210,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/St Thomas",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Kitts",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/St Vincent",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Lucia",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Swift Current",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/St_Thomas",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/St_Vincent",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Swift_Current",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Tegucigalpa",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Tegucigalpa",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"America/Thule",{"AST","AST"},undef,-240,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, {"America/Thule",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Thunder Bay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Thunder_Bay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Tijuana",{"PST","PST"},{"PDT","PDT"},-480,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Tijuana",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Toronto",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Tortola",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Tortola",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Vancouver",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Vancouver",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Virgin",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"America/Whitehorse",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Whitehorse",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Winnipeg",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{3,0}}, {"America/Winnipeg",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Yakutat",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Yakutat",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"America/Yellowknife",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Yellowknife",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Antarctica/Casey",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Casey",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Antarctica/Davis",{"DAVT","DAVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Davis",{"DAVT","DAVT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Antarctica/DumontDUrville",{"DDUT","DDUT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Antarctica/DumontDUrville",{"DDUT","DDUT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Antarctica/Mawson",{"MAWT","MAWT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Macquarie",{"MIST","MIST"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Antarctica/McMurdo",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, {"Antarctica/Mawson",{"MAWT","MAWT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Antarctica/Palmer",{"CLT","CLT"},{"CLST","CLST"},-240,60,{2,sun,oct},{0,0},{2,sun,mar},{0,0}}, {"Antarctica/McMurdo",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}},
{"Antarctica/South Pole",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, {"Antarctica/Palmer",{"CLT","CLT"},{"CLST","CLST"},-240,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}},
{"Antarctica/Rothera",{"ROTT","ROTT"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"Antarctica/South_Pole",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}},
{"Antarctica/Syowa",{"SYOT","SYOT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Syowa",{"SYOT","SYOT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Antarctica/Vostok",{"VOST","VOST"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Vostok",{"VOST","VOST"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Arctic/Longyearbyen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Arctic/Longyearbyen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Asia/Aden",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Aden",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Asia/Almaty",{"ALMT","ALMT"},{"ALMST","ALMST"},360,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, {"Asia/Almaty",{"ALMT","ALMT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Amman",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{0,0},{last,thu,sep},{1,0}}, {"Asia/Amman",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{last,fri,oct},{1,0}},
{"Asia/Anadyr",{"ANAT","ANAT"},{"ANAST","ANAST"},720,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Asia/Anadyr",{"ANAT","ANAT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Asia/Aqtau",{"AQTT","AQTT"},{"AQTST","AQTST"},240,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, {"Asia/Aqtau",{"AQTT","AQTT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Aqtobe",{"AQTT","AQTT"},{"AQTST","AQTST"},300,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, {"Asia/Aqtobe",{"AQTT","AQTT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Ashgabat",{"TMT","TMT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Ashgabat",{"TMT","TMT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Baghdad",{"AST","AST"},{"ADT","ADT"},180,60,{1,sun,apr},{3,0},{1,sun,oct},{4,0}}, {"Asia/Ashkhabad",{"TMT","TMT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Baghdad",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Asia/Bahrain",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Bahrain",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Asia/Baku",{"AZT","AZT"},{"AZST","AZST"},240,60,{last,sun,mar},{1,0},{last,sun,oct},{1,0}}, {"Asia/Baku",{"AZT","AZT"},{"AZST","AZST"},240,60,{last,sun,mar},{4,0},{last,sun,oct},{5,0}},
{"Asia/Bangkok",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Bangkok",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Beirut",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, {"Asia/Beirut",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}},
{"Asia/Bishkek",{"KGT","KGT"},{"KGST","KGST"},300,60,{last,sun,mar},{2,30},{last,sun,oct},{2,30}}, {"Asia/Bishkek",{"KGT","KGT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Brunei",{"BNT","BNT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Brunei",{"BNT","BNT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Calcutta",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}}, {"Asia/Calcutta",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}},
{"Asia/Choibalsan",{"CHOT","CHOT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Choibalsan",{"CHOT","CHOT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Chongqing",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Chongqing",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Colombo",{"LKT","LKT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Chungking",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Damascus",{"EET","EET"},{"EEST","EEST"},120,60,{1,sun,apr},{0,0},{1,sun,oct},{0,0}}, {"Asia/Colombo",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}},
{"Asia/Dacca",{"BDT","BDT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Damascus",{"EET","EET"},{"EEST","EEST"},120,60,{last,fri,mar},{0,0},{last,fri,oct},{0,0}},
{"Asia/Dhaka",{"BDT","BDT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Dhaka",{"BDT","BDT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Dili",{"TPT","TPT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Dili",{"TLT","TLT"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Asia/Dubai",{"GST","GST"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Asia/Dubai",{"GST","GST"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Asia/Dushanbe",{"TJT","TJT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Dushanbe",{"TJT","TJT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{3,fri,apr},{0,0},{3,fri,oct},{0,0}}, {"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{4,fri,sep},{0,0}},
{"Asia/Harbin",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Harbin",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Hong Kong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Hebron",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{4,fri,sep},{0,0}},
{"Asia/Ho_Chi_Minh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Hong_Kong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Hovd",{"HOVT","HOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Hovd",{"HOVT","HOVT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Irkutsk",{"IRKT","IRKT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Irkutsk",{"IRKT","IRKT"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Asia/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Asia/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Asia/Jakarta",{"WIT","WIT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Jakarta",{"WIB","WIB"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Jayapura",{"EIT","EIT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Jayapura",{"WIT","WIT"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Asia/Jerusalem",{"IST","IST"},{"IDT","IDT"},120,60,{1,sun,apr},{1,0},{1,sun,oct},{1,0}}, {"Asia/Jerusalem",{"IST","IST"},{"IDT","IDT"},120,60,{4,fri,mar},{2,0},{last,sun,oct},{2,0}},
{"Asia/Kabul",{"AFT","AFT"},undef,270,0,undef,{0,0},undef,{0,0}}, {"Asia/Kabul",{"AFT","AFT"},undef,270,0,undef,{0,0},undef,{0,0}},
{"Asia/Kamchatka",{"PETT","PETT"},undef,780,0,undef,{0,0},undef,{0,0}}, {"Asia/Kamchatka",{"PETT","PETT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Asia/Karachi",{"PKT","PKT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Karachi",{"PKT","PKT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Kashgar",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kashgar",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Kathmandu",{"NPT","NPT"},undef,345,0,undef,{0,0},undef,{0,0}},
{"Asia/Katmandu",{"NPT","NPT"},undef,345,0,undef,{0,0},undef,{0,0}}, {"Asia/Katmandu",{"NPT","NPT"},undef,345,0,undef,{0,0},undef,{0,0}},
{"Asia/Khandyga",{"YAKT","YAKT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Asia/Kolkata",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}},
{"Asia/Krasnoyarsk",{"KRAT","KRAT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Krasnoyarsk",{"KRAT","KRAT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Kuala Lumpur",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuala_Lumpur",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Kuching",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuching",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Kuwait",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuwait",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Asia/Macao",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Macao",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Macau",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Macau",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Magadan",{"MAGT","MAGT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Asia/Magadan",{"MAGT","MAGT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Asia/Makassar",{"CIT","CIT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Makassar",{"WITA","WITA"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Manila",{"PHT","PHT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Manila",{"PHT","PHT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Muscat",{"GST","GST"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Asia/Muscat",{"GST","GST"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Asia/Nicosia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Asia/Nicosia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Asia/Novokuznetsk",{"NOVT","NOVT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Novosibirsk",{"NOVT","NOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Novosibirsk",{"NOVT","NOVT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Omsk",{"OMST","OMST"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Omsk",{"OMST","OMST"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Oral",{"WST","WST"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Oral",{"ORAT","ORAT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Phnom Penh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Phnom_Penh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Pontianak",{"WIT","WIT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Pontianak",{"WIB","WIB"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Pyongyang",{"KST","KST"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Pyongyang",{"KST","KST"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Asia/Qyzylorda",{"KST","KST"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Qatar",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Qatar",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Asia/Qyzylorda",{"QYZT","QYZT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Rangoon",{"MMT","MMT"},undef,390,0,undef,{0,0},undef,{0,0}}, {"Asia/Rangoon",{"MMT","MMT"},undef,390,0,undef,{0,0},undef,{0,0}},
{"Asia/Riyadh",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Riyadh",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Asia/Saigon",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Saigon",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}},
@ -282,39 +362,115 @@
{"Asia/Singapore",{"SGT","SGT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Singapore",{"SGT","SGT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Taipei",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Taipei",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Tashkent",{"UZT","UZT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Tashkent",{"UZT","UZT"},undef,300,0,undef,{0,0},undef,{0,0}},
{"Asia/Tbilisi",{"GET","GET"},{"GEST","GEST"},240,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, {"Asia/Tbilisi",{"GET","GET"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Asia/Tehran",{"IRT","IRT"},undef,210,0,undef,{0,0},undef,{0,0}}, {"Asia/Tehran",{"IRST","IRST"},{"IRDT","IRDT"},210,60,undef,{0,0},undef,{0,0}},
{"Asia/Tel_Aviv",{"IST","IST"},{"IDT","IDT"},120,60,{4,fri,mar},{2,0},{last,sun,oct},{2,0}},
{"Asia/Thimbu",{"BTT","BTT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Thimphu",{"BTT","BTT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Thimphu",{"BTT","BTT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Tokyo",{"JST","JST"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Tokyo",{"JST","JST"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Asia/Ujung Pandang",{"CIT","CIT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Ujung_Pandang",{"WITA","WITA"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Ulaanbaatar",{"ULAT","ULAT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Ulaanbaatar",{"ULAT","ULAT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Ulan_Bator",{"ULAT","ULAT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Urumqi",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Urumqi",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Asia/Ust-Nera",{"VLAT","VLAT"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Asia/Vientiane",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Vientiane",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}},
{"Asia/Vladivostok",{"VLAT","VLAT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Asia/Vladivostok",{"VLAT","VLAT"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Asia/Yakutsk",{"YAKT","YAKT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Asia/Yakutsk",{"YAKT","YAKT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Asia/Yekaterinburg",{"YEKT","YEKT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Yekaterinburg",{"YEKT","YEKT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Asia/Yerevan",{"AMT","AMT"},{"AMST","AMST"},240,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Asia/Yerevan",{"AMT","AMT"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Atlantic/Azores",{"AZOT","AZOT"},{"AZOST","AZOST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}}, {"Atlantic/Azores",{"AZOT","AZOT"},{"AZOST","AZOST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}},
{"Atlantic/Bermuda",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"Atlantic/Bermuda",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Atlantic/Canary",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Canary",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Atlantic/Cape Verde",{"CVT","CVT"},undef,-60,0,undef,{0,0},undef,{0,0}}, {"Atlantic/Cape_Verde",{"CVT","CVT"},undef,-60,0,undef,{0,0},undef,{0,0}},
{"Atlantic/Faeroe",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Faeroe",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Atlantic/Jan Mayen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Atlantic/Faroe",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Atlantic/Jan_Mayen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Atlantic/Madeira",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Madeira",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Atlantic/Reykjavik",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Atlantic/Reykjavik",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Atlantic/South Georgia",{"GST","GST"},undef,-120,0,undef,{0,0},undef,{0,0}}, {"Atlantic/South_Georgia",{"GST","GST"},undef,-120,0,undef,{0,0},undef,{0,0}},
{"Atlantic/St Helena",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Atlantic/St_Helena",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Atlantic/Stanley",{"FKT","FKT"},{"FKST","FKST"},-240,60,{1,sun,sep},{2,0},{3,sun,apr},{2,0}}, {"Atlantic/Stanley",{"FKST","FKST"},undef,-180,0,undef,{0,0},undef,{0,0}},
{"Australia/Adelaide",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/ACT",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Adelaide",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Brisbane",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Australia/Brisbane",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Australia/Broken Hill",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Broken_Hill",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Canberra",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Currie",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Darwin",{"CST","CST"},undef,570,0,undef,{0,0},undef,{0,0}}, {"Australia/Darwin",{"CST","CST"},undef,570,0,undef,{0,0},undef,{0,0}},
{"Australia/Hobart",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Eucla",{"CWST","CWST"},undef,525,0,undef,{0,0},undef,{0,0}},
{"Australia/Hobart",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/LHI",{"LHST","LHST"},{"LHST","LHST"},630,30,{1,sun,oct},{2,0},{1,sun,apr},{2,0}},
{"Australia/Lindeman",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Australia/Lindeman",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Australia/Lord Howe",{"LHST","LHST"},{"LHST","LHST"},630,30,{last,sun,oct},{2,0},{last,sun,mar},{2,0}}, {"Australia/Lord_Howe",{"LHST","LHST"},{"LHST","LHST"},630,30,{1,sun,oct},{2,0},{1,sun,apr},{2,0}},
{"Australia/Melbourne",{"EST","EST"},{"EST","EST"},600,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Melbourne",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/NSW",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/North",{"CST","CST"},undef,570,0,undef,{0,0},undef,{0,0}},
{"Australia/Perth",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Australia/Perth",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Australia/Sydney",{"EST","EST"},{"EST","EST"},600,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Queensland",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Australia/South",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Sydney",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Tasmania",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/Victoria",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Australia/West",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Australia/Yancowinna",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}},
{"Brazil/Acre",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"Brazil/DeNoronha",{"FNT","FNT"},undef,-120,0,undef,{0,0},undef,{0,0}},
{"Brazil/East",{"BRT","BRT"},{"BRST","BRST"},-180,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}},
{"Brazil/West",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}},
{"CET",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"CST6CDT",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/Atlantic",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/Central",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/East-Saskatchewan",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"Canada/Eastern",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/Mountain",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/Newfoundland",{"NST","NST"},{"NDT","NDT"},-210,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/Pacific",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Canada/Saskatchewan",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"Canada/Yukon",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Chile/Continental",{"CLT","CLT"},{"CLST","CLST"},-240,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}},
{"Chile/EasterIsland",{"EAST","EAST"},{"EASST","EASST"},-360,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}},
{"Cuba",{"CST","CST"},{"CDT","CDT"},-300,60,{2,sun,mar},{0,0},{1,sun,nov},{1,0}},
{"EET",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"EST",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"EST5EDT",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Egypt",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}},
{"Eire",{"GMT","GMT"},{"IST","IST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Etc/GMT",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+1",{"GMT+1","GMT+1"},undef,-1,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+10",{"GMT+10","GMT+10"},undef,-10,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+11",{"GMT+11","GMT+11"},undef,-11,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+12",{"GMT+12","GMT+12"},undef,-12,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+2",{"GMT+2","GMT+2"},undef,-2,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+3",{"GMT+3","GMT+3"},undef,-3,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+4",{"GMT+4","GMT+4"},undef,-4,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+5",{"GMT+5","GMT+5"},undef,-5,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+6",{"GMT+6","GMT+6"},undef,-6,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+7",{"GMT+7","GMT+7"},undef,-7,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+8",{"GMT+8","GMT+8"},undef,-8,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT+9",{"GMT+9","GMT+9"},undef,-9,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-1",{"GMT-1","GMT-1"},undef,1,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-10",{"GMT-10","GMT-10"},undef,10,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-11",{"GMT-11","GMT-11"},undef,11,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-12",{"GMT-12","GMT-12"},undef,12,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-13",{"GMT-13","GMT-13"},undef,13,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-14",{"GMT-14","GMT-14"},undef,14,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-2",{"GMT-2","GMT-2"},undef,2,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-3",{"GMT-3","GMT-3"},undef,3,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-4",{"GMT-4","GMT-4"},undef,4,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-5",{"GMT-5","GMT-5"},undef,5,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-6",{"GMT-6","GMT-6"},undef,6,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-7",{"GMT-7","GMT-7"},undef,7,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-8",{"GMT-8","GMT-8"},undef,8,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT-9",{"GMT-9","GMT-9"},undef,9,0,undef,{0,0},undef,{0,0}},
{"Etc/GMT0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/Greenwich",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/UCT",{"UCT","UCT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/UTC",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/Universal",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Etc/Zulu",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Europe/Amsterdam",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Amsterdam",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Andorra",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Andorra",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Athens",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Athens",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
@ -325,13 +481,17 @@
{"Europe/Brussels",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Brussels",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Bucharest",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Bucharest",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Budapest",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Budapest",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Busingen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Chisinau",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Chisinau",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Copenhagen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Copenhagen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Dublin",{"GMT","GMT"},{"IST","IST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Europe/Dublin",{"GMT","GMT"},{"IST","IST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Europe/Gibraltar",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Gibraltar",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Guernsey",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Europe/Helsinki",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Helsinki",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Isle_of_Man",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Europe/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Kaliningrad",{"EET","EET"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Europe/Jersey",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Europe/Kaliningrad",{"FET","FET"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Europe/Kiev",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Kiev",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Lisbon",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Europe/Lisbon",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Europe/Ljubljana",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Ljubljana",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
@ -339,33 +499,47 @@
{"Europe/Luxembourg",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Luxembourg",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Madrid",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Madrid",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Malta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Malta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Mariehamn",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Minsk",{"FET","FET"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Europe/Minsk",{"FET","FET"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Europe/Monaco",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Monaco",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Moscow",{"MSK","MSK"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Europe/Moscow",{"MSK","MSK"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Europe/Nicosia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Nicosia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Oslo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Oslo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Paris",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Paris",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Podgorica",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Prague",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Prague",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Riga",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Riga",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Rome",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Rome",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Samara",{"SAMT","SAMT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Europe/Samara",{"SAMT","SAMT"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Europe/San Marino",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/San_Marino",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Sarajevo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Sarajevo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Simferopol",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Simferopol",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Skopje",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Skopje",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Sofia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Sofia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Stockholm",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Stockholm",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Tallinn",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Europe/Tallinn",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Tirane",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Tirane",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Uzhgorod",{"EET","EET"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Europe/Tiraspol",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Uzhgorod",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Vaduz",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Vaduz",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Vatican",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Vatican",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Vienna",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Vienna",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Vilnius",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Europe/Vilnius",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Volgograd",{"VOLT","VOLT"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Europe/Warsaw",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Warsaw",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Zagreb",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Zagreb",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Europe/Zaporozhye",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Zaporozhye",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"Europe/Zurich",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Zurich",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"GB",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"GB-Eire",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"GMT",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"GMT+0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"GMT-0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"GMT0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Greenwich",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"HST",{"HST","HST"},undef,-600,0,undef,{0,0},undef,{0,0}},
{"Hongkong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Iceland",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Indian/Antananarivo",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Indian/Antananarivo",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Indian/Chagos",{"IOT","IOT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Indian/Chagos",{"IOT","IOT"},undef,360,0,undef,{0,0},undef,{0,0}},
{"Indian/Christmas",{"CXT","CXT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Indian/Christmas",{"CXT","CXT"},undef,420,0,undef,{0,0},undef,{0,0}},
@ -377,14 +551,32 @@
{"Indian/Mauritius",{"MUT","MUT"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Indian/Mauritius",{"MUT","MUT"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Indian/Mayotte",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Indian/Mayotte",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}},
{"Indian/Reunion",{"RET","RET"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Indian/Reunion",{"RET","RET"},undef,240,0,undef,{0,0},undef,{0,0}},
{"Pacific/Apia",{"WST","WST"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Iran",{"IRST","IRST"},{"IRDT","IRDT"},210,60,undef,{0,0},undef,{0,0}},
{"Pacific/Auckland",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, {"Israel",{"IST","IST"},{"IDT","IDT"},120,60,{4,fri,mar},{2,0},{last,sun,oct},{2,0}},
{"Pacific/Chatham",{"CHAST","CHAST"},{"CHADT","CHADT"},765,60,{1,sun,oct},{2,45},{3,sun,mar},{3,45}}, {"Jamaica",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}},
{"Pacific/Easter",{"EAST","EAST"},{"EASST","EASST"},-360,60,{2,sat,oct},{22,0},{2,sat,mar},{22,0}}, {"Japan",{"JST","JST"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Kwajalein",{"MHT","MHT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Libya",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}},
{"MET",{"MET","MET"},{"MEST","MEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"MST",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}},
{"MST7MDT",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Mexico/BajaNorte",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Mexico/BajaSur",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"Mexico/General",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}},
{"NZ",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}},
{"NZ-CHAT",{"CHAST","CHAST"},{"CHADT","CHADT"},765,60,{last,sun,sep},{2,45},{1,sun,apr},{3,45}},
{"Navajo",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"PRC",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"PST8PDT",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"Pacific/Apia",{"WST","WST"},{"WSDT","WSDT"},780,1,{last,sun,sep},{3,0},{1,sun,apr},{4,0}},
{"Pacific/Auckland",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}},
{"Pacific/Chatham",{"CHAST","CHAST"},{"CHADT","CHADT"},765,60,{last,sun,sep},{2,45},{1,sun,apr},{3,45}},
{"Pacific/Chuuk",{"CHUT","CHUT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Pacific/Easter",{"EAST","EAST"},{"EASST","EASST"},-360,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}},
{"Pacific/Efate",{"VUT","VUT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Efate",{"VUT","VUT"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Enderbury",{"PHOT","PHOT"},undef,780,0,undef,{0,0},undef,{0,0}}, {"Pacific/Enderbury",{"PHOT","PHOT"},undef,780,0,undef,{0,0},undef,{0,0}},
{"Pacific/Fakaofo",{"TKT","TKT"},undef,-600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Fakaofo",{"TKT","TKT"},undef,780,0,undef,{0,0},undef,{0,0}},
{"Pacific/Fiji",{"FJT","FJT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Fiji",{"FJT","FJT"},{"FJST","FJST"},720,60,{4,sun,oct},{2,0},{3,sun,jan},{3,0}},
{"Pacific/Funafuti",{"TVT","TVT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Funafuti",{"TVT","TVT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Pacific/Galapagos",{"GALT","GALT"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"Pacific/Galapagos",{"GALT","GALT"},undef,-360,0,undef,{0,0},undef,{0,0}},
{"Pacific/Gambier",{"GAMT","GAMT"},undef,-540,0,undef,{0,0},undef,{0,0}}, {"Pacific/Gambier",{"GAMT","GAMT"},undef,-540,0,undef,{0,0},undef,{0,0}},
@ -402,18 +594,44 @@
{"Pacific/Niue",{"NUT","NUT"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Niue",{"NUT","NUT"},undef,-660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Norfolk",{"NFT","NFT"},undef,690,0,undef,{0,0},undef,{0,0}}, {"Pacific/Norfolk",{"NFT","NFT"},undef,690,0,undef,{0,0},undef,{0,0}},
{"Pacific/Noumea",{"NCT","NCT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Noumea",{"NCT","NCT"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Pago Pago",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Pago_Pago",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Palau",{"PWT","PWT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Pacific/Palau",{"PWT","PWT"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Pacific/Pitcairn",{"PST","PST"},undef,-480,0,undef,{0,0},undef,{0,0}}, {"Pacific/Pitcairn",{"PST","PST"},undef,-480,0,undef,{0,0},undef,{0,0}},
{"Pacific/Pohnpei",{"PONT","PONT"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Ponape",{"PONT","PONT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Ponape",{"PONT","PONT"},undef,660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Port Moresby",{"PGT","PGT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Port_Moresby",{"PGT","PGT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Pacific/Rarotonga",{"CKT","CKT"},undef,-600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Rarotonga",{"CKT","CKT"},undef,-600,0,undef,{0,0},undef,{0,0}},
{"Pacific/Saipan",{"ChST","ChST"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Saipan",{"ChST","ChST"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Pacific/Samoa",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}},
{"Pacific/Tahiti",{"TAHT","TAHT"},undef,-600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tahiti",{"TAHT","TAHT"},undef,-600,0,undef,{0,0},undef,{0,0}},
{"Pacific/Tarawa",{"GILT","GILT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tarawa",{"GILT","GILT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Pacific/Tongatapu",{"TOT","TOT"},undef,780,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tongatapu",{"TOT","TOT"},undef,780,0,undef,{0,0},undef,{0,0}},
{"Pacific/Truk",{"TRUT","TRUT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Truk",{"CHUT","CHUT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Pacific/Wake",{"WAKT","WAKT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Wake",{"WAKT","WAKT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Pacific/Wallis",{"WFT","WFT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Wallis",{"WFT","WFT"},undef,720,0,undef,{0,0},undef,{0,0}},
{"Pacific/Yap",{"YAPT","YAPT"},undef,600,0,undef,{0,0},undef,{0,0}} {"Pacific/Yap",{"CHUT","CHUT"},undef,600,0,undef,{0,0},undef,{0,0}},
{"Poland",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}},
{"Portugal",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"ROC",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}},
{"ROK",{"KST","KST"},undef,540,0,undef,{0,0},undef,{0,0}},
{"Singapore",{"SGT","SGT"},undef,480,0,undef,{0,0},undef,{0,0}},
{"Turkey",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}},
{"UCT",{"UCT","UCT"},undef,0,0,undef,{0,0},undef,{0,0}},
{"US/Alaska",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Aleutian",{"HAST","HAST"},{"HADT","HADT"},-600,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Arizona",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}},
{"US/Central",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/East-Indiana",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Eastern",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Hawaii",{"HST","HST"},undef,-600,0,undef,{0,0},undef,{0,0}},
{"US/Indiana-Starke",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Michigan",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Mountain",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Pacific",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}},
{"US/Samoa",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}},
{"UTC",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}},
{"Universal",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}},
{"W-SU",{"MSK","MSK"},undef,240,0,undef,{0,0},undef,{0,0}},
{"WET",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}},
{"Zulu",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}}
]). ]).

View file

@ -1,85 +1,69 @@
-define(tz_index, {dict,165,33,64,32,165,99, -define(tz_index, {dict,198,40,64,32,200,120,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[["WGST","America/Godthab"]], {{[["WGST","America/Godthab"],["GMT+2","Etc/GMT+2"]],
[["AQTT","Asia/Aqtau","Asia/Aqtobe"], [["NPT","Asia/Kathmandu","Asia/Katmandu"],
["AZST","Asia/Baku"], ["CCT","Indian/Cocos"]],
["NPT","Asia/Katmandu"], [["DAVT","Antarctica/Davis"],
["CCT","Indian/Cocos"],
["ChST","Pacific/Guam","Pacific/Saipan"],
["SST","Pacific/Midway","Pacific/Pago Pago"]],
[["WAST","Africa/Windhoek"],
["DAVT","Antarctica/Davis"],
["AZT","Asia/Baku"], ["AZT","Asia/Baku"],
["HKT","Asia/Hong Kong"], ["HKT","Asia/Hong_Kong","Hongkong"]],
["IRT","Asia/Tehran"], [["MST","America/Boise","America/Cambridge_Bay",
["NUT","Pacific/Niue"]], "America/Chihuahua","America/Creston",
[["MST","America/Boise","America/Cambridge Bay", "America/Dawson_Creek","America/Denver",
"America/Chihuahua","America/Dawson Creek", "America/Edmonton","America/Hermosillo",
"America/Denver","America/Edmonton", "America/Inuvik","America/Mazatlan",
"America/Hermosillo","America/Inuvik", "America/Ojinaga","America/Phoenix",
"America/Mazatlan","America/Phoenix", "America/Shiprock","America/Yellowknife",
"America/Shiprock","America/Yellowknife"], "Canada/Mountain","MST","MST7MDT",
["PHT","Asia/Manila"]], "Mexico/BajaSur","Navajo","US/Arizona",
[["ADT","America/Glace Bay","America/Goose Bay", "US/Mountain"],
"America/Halifax","Asia/Baghdad", ["GMT-7","Etc/GMT-7"]],
"Atlantic/Bermuda"], [["ROTT","Antarctica/Rothera"],
["DDUT","Antarctica/DumontDUrville"], ["GMT-13","Etc/GMT-13"],
["KGST","Asia/Bishkek"], ["GMT-4","Etc/GMT-4"],
["MAGT","Asia/Magadan"], ["GAMT","Pacific/Gambier"]],
["GAMT","Pacific/Gambier"], [["SGT","Asia/Singapore","Singapore"],
["SBT","Pacific/Guadalcanal"]], ["GMT-1","Etc/GMT-1"],
[["EET","Africa/Cairo","Africa/Tripoli", ["GMT-10","Etc/GMT-10"]],
"Asia/Amman","Asia/Beirut","Asia/Damascus",
"Asia/Gaza","Asia/Istanbul","Asia/Nicosia",
"Europe/Athens","Europe/Bucharest",
"Europe/Chisinau","Europe/Helsinki",
"Europe/Istanbul","Europe/Kaliningrad",
"Europe/Kiev","Europe/Nicosia","Europe/Riga",
"Europe/Simferopol","Europe/Sofia",
"Europe/Tallinn","Europe/Uzhgorod",
"Europe/Vilnius","Europe/Zaporozhye"],
["NDT","America/St Johns"],
["GST","Asia/Dubai","Asia/Muscat",
"Atlantic/South Georgia"],
["SGT","Asia/Singapore"]],
[["SAKT","Asia/Sakhalin"], [["SAKT","Asia/Sakhalin"],
["UZT","Asia/Samarkand","Asia/Tashkent"], ["LHST","Australia/LHI","Australia/LHI",
["GEST","Asia/Tbilisi"], "Australia/Lord_Howe","Australia/Lord_Howe"],
["LHST","Australia/Lord Howe", ["MSK","Europe/Moscow","W-SU"],
"Australia/Lord Howe"],
["MSK","Europe/Moscow"],
["RET","Indian/Reunion"],
["PHOT","Pacific/Enderbury"], ["PHOT","Pacific/Enderbury"],
["PWT","Pacific/Palau"]], ["PWT","Pacific/Palau"]],
[["CAT","Africa/Blantyre","Africa/Bujumbura", [["AST","America/Anguilla","America/Antigua",
"Africa/Gaborone","Africa/Harare","Africa/Kigali",
"Africa/Lubumbashi","Africa/Lusaka",
"Africa/Maputo"],
["AST","America/Anguilla","America/Antigua",
"America/Aruba","America/Barbados", "America/Aruba","America/Barbados",
"America/Curacao","America/Dominica", "America/Blanc-Sablon","America/Curacao",
"America/Glace Bay","America/Goose Bay", "America/Dominica","America/Glace_Bay",
"America/Grenada","America/Guadeloupe", "America/Goose_Bay","America/Grenada",
"America/Halifax","America/Martinique", "America/Guadeloupe","America/Halifax",
"America/Montserrat","America/Port of Spain", "America/Kralendijk","America/Lower_Princes",
"America/Puerto Rico","America/Santo Domingo", "America/Marigot","America/Martinique",
"America/St Kitts","America/St Lucia", "America/Moncton","America/Montserrat",
"America/St Thomas","America/St Vincent", "America/Port_of_Spain","America/Puerto_Rico",
"America/Thule","America/Tortola","Asia/Aden", "America/Santo_Domingo","America/St_Barthelemy",
"Asia/Baghdad","Asia/Bahrain","Asia/Kuwait", "America/St_Kitts","America/St_Lucia",
"Asia/Qatar","Asia/Riyadh","Atlantic/Bermuda"], "America/St_Thomas","America/St_Vincent",
["FKST","Atlantic/Stanley"], "America/Thule","America/Tortola",
["EASST","Pacific/Easter"]], "America/Virgin","Asia/Aden","Asia/Baghdad",
[["NST","America/St Johns"], "Asia/Bahrain","Asia/Kuwait","Asia/Qatar",
["AQTST","Asia/Aqtau","Asia/Aqtobe"], "Asia/Riyadh","Atlantic/Bermuda",
"Canada/Atlantic"],
["EASST","Chile/EasterIsland","Pacific/Easter"]],
[["NST","America/St_Johns","Canada/Newfoundland"],
["MIST","Antarctica/Macquarie"],
["WITA","Asia/Makassar","Asia/Ujung_Pandang"],
["YEKT","Asia/Yekaterinburg"]], ["YEKT","Asia/Yekaterinburg"]],
[["BDT","Asia/Dhaka"],["CKT","Pacific/Rarotonga"]], [["BDT","Asia/Dacca","Asia/Dhaka"],
["GMT+7","Etc/GMT+7"],
["CKT","Pacific/Rarotonga"]],
[["PKT","Asia/Karachi"], [["PKT","Asia/Karachi"],
["NOVT","Asia/Novosibirsk"], ["NOVT","Asia/Novokuznetsk","Asia/Novosibirsk"],
["FET","Europe/Minsk"], ["GMT+4","Etc/GMT+4"],
["FET","Europe/Kaliningrad","Europe/Minsk"],
["HST","HST","Pacific/Honolulu","Pacific/Johnston",
"US/Hawaii"],
["MVT","Indian/Maldives"], ["MVT","Indian/Maldives"],
["VUT","Pacific/Efate"], ["VUT","Pacific/Efate"],
["HST","Pacific/Honolulu","Pacific/Johnston"],
["LINT","Pacific/Kiritimati"]], ["LINT","Pacific/Kiritimati"]],
[["WAT","Africa/Bangui","Africa/Brazzaville", [["WAT","Africa/Bangui","Africa/Brazzaville",
"Africa/Douala","Africa/Kinshasa","Africa/Lagos", "Africa/Douala","Africa/Kinshasa","Africa/Lagos",
@ -89,231 +73,382 @@
["ECT","America/Guayaquil"], ["ECT","America/Guayaquil"],
["VOST","Antarctica/Vostok"], ["VOST","Antarctica/Vostok"],
["BNT","Asia/Brunei"], ["BNT","Asia/Brunei"],
["CHADT","Pacific/Chatham"], ["TLT","Asia/Dili"],
["GMT+1","Etc/GMT+1"],
["CHADT","NZ-CHAT","Pacific/Chatham"],
["FJT","Pacific/Fiji"]], ["FJT","Pacific/Fiji"]],
[["EEST","Africa/Cairo","Asia/Amman","Asia/Beirut", [["HADT","America/Adak","America/Atka",
"Asia/Damascus","Asia/Gaza","Asia/Istanbul", "US/Aleutian"],
"Asia/Nicosia","Europe/Athens","Europe/Bucharest", ["EEST","Asia/Amman","Asia/Beirut","Asia/Damascus",
"Europe/Chisinau","Europe/Helsinki", "Asia/Gaza","Asia/Hebron","Asia/Istanbul",
"Europe/Istanbul","Europe/Kiev","Europe/Nicosia", "Asia/Nicosia","EET","Europe/Athens",
"Europe/Riga","Europe/Simferopol","Europe/Sofia", "Europe/Bucharest","Europe/Chisinau",
"Europe/Zaporozhye"], "Europe/Helsinki","Europe/Istanbul","Europe/Kiev",
["HADT","America/Adak"], "Europe/Mariehamn","Europe/Nicosia","Europe/Riga",
["IDT","Asia/Jerusalem"], "Europe/Simferopol","Europe/Sofia",
["BST","Europe/Belfast","Europe/London"], "Europe/Tallinn","Europe/Tiraspol",
"Europe/Uzhgorod","Europe/Vilnius",
"Europe/Zaporozhye","Turkey"],
["IDT","Asia/Jerusalem","Asia/Tel_Aviv","Israel"],
["CWST","Australia/Eucla"],
["BST","Europe/Belfast","Europe/Guernsey",
"Europe/Isle_of_Man","Europe/Jersey",
"Europe/London","GB","GB-Eire"],
["KOST","Pacific/Kosrae"], ["KOST","Pacific/Kosrae"],
["WFT","Pacific/Wallis"]], ["WFT","Pacific/Wallis"]],
[["ALMT","Asia/Almaty"], [["ALMT","Asia/Almaty"],
["CHOT","Asia/Choibalsan"], ["CHOT","Asia/Choibalsan"],
["AZOT","Atlantic/Azores"], ["AZOT","Atlantic/Azores"],
["GMT-9","Etc/GMT-9"],
["MET","MET"],
["TVT","Pacific/Funafuti"]], ["TVT","Pacific/Funafuti"]],
[["SAST","Africa/Johannesburg","Africa/Maseru", [["SAST","Africa/Johannesburg","Africa/Maseru",
"Africa/Mbabane"], "Africa/Mbabane"],
["CDT","America/Cancun","America/Chicago", ["CDT","America/Bahia_Banderas","America/Cancun",
"America/Havana","America/Menominee", "America/Chicago","America/Havana",
"America/Merida","America/Mexico City", "America/Indiana/Knox",
"America/Monterrey","America/North Dakota/Center", "America/Indiana/Tell_City","America/Knox_IN",
"America/Rainy River","America/Rankin Inlet", "America/Matamoros","America/Menominee",
"America/Winnipeg"], "America/Merida","America/Mexico_City",
["CHAST","Pacific/Chatham"]], "America/Monterrey","America/North_Dakota/Beulah",
[["HAST","America/Adak"], "America/North_Dakota/Center",
"America/North_Dakota/New_Salem",
"America/Rainy_River","America/Rankin_Inlet",
"America/Resolute","America/Winnipeg","CST6CDT",
"Canada/Central","Cuba","Mexico/General",
"US/Central","US/Indiana-Starke"],
["GMT-6","Etc/GMT-6"],
["CHAST","NZ-CHAT","Pacific/Chatham"]],
[["HAST","America/Adak","America/Atka",
"US/Aleutian"],
["PYST","America/Asuncion"], ["PYST","America/Asuncion"],
["PDT","America/Dawson","America/Los Angeles", ["PDT","America/Dawson","America/Ensenada",
"America/Los_Angeles","America/Santa_Isabel",
"America/Tijuana","America/Vancouver", "America/Tijuana","America/Vancouver",
"America/Whitehorse"], "America/Whitehorse","Canada/Pacific",
["IST","Asia/Calcutta","Asia/Jerusalem", "Canada/Yukon","Mexico/BajaNorte","PST8PDT",
"Europe/Dublin"], "US/Pacific"],
["CIT","Asia/Makassar","Asia/Ujung Pandang"], ["IST","Asia/Calcutta","Asia/Colombo",
["GET","Asia/Tbilisi"]]}, "Asia/Jerusalem","Asia/Kolkata","Asia/Tel_Aviv",
{[["PMDT","America/Miquelon"]], "Eire","Europe/Dublin","Israel"],
[["EAT","Africa/Addis Ababa","Africa/Asmera", ["GET","Asia/Tbilisi"],
"Africa/Dar es Salaam","Africa/Djibouti", ["GMT-12","Etc/GMT-12"],
"Africa/Kampala","Africa/Khartoum", ["GMT-3","Etc/GMT-3"]]},
"Africa/Mogadishu","Africa/Nairobi", {[["PMDT","America/Miquelon"],
"Indian/Antananarivo","Indian/Comoro", ["GMT+11","Etc/GMT+11"],
"Indian/Mayotte"], ["VOLT","Europe/Volgograd"]],
["CST","America/Belize","America/Cancun", [["EAT","Africa/Addis_Ababa","Africa/Asmara",
"America/Chicago","America/Costa Rica", "Africa/Asmera","Africa/Dar_es_Salaam",
"America/El Salvador","America/Guatemala", "Africa/Djibouti","Africa/Juba","Africa/Kampala",
"America/Havana","America/Managua", "Africa/Khartoum","Africa/Mogadishu",
"Africa/Nairobi","Indian/Antananarivo",
"Indian/Comoro","Indian/Mayotte"],
["CST","America/Bahia_Banderas","America/Belize",
"America/Cancun","America/Chicago",
"America/Costa_Rica","America/El_Salvador",
"America/Guatemala","America/Havana",
"America/Indiana/Knox",
"America/Indiana/Tell_City","America/Knox_IN",
"America/Managua","America/Matamoros",
"America/Menominee","America/Merida", "America/Menominee","America/Merida",
"America/Mexico City","America/Monterrey", "America/Mexico_City","America/Monterrey",
"America/North Dakota/Center", "America/North_Dakota/Beulah",
"America/Rainy River","America/Rankin Inlet", "America/North_Dakota/Center",
"America/Regina","America/Swift Current", "America/North_Dakota/New_Salem",
"America/Tegucigalpa","America/Winnipeg", "America/Rainy_River","America/Rankin_Inlet",
"Asia/Chongqing","Asia/Harbin","Asia/Kashgar", "America/Regina","America/Resolute",
"America/Swift_Current","America/Tegucigalpa",
"America/Winnipeg","Asia/Chongqing",
"Asia/Chungking","Asia/Harbin","Asia/Kashgar",
"Asia/Macao","Asia/Macau","Asia/Shanghai", "Asia/Macao","Asia/Macau","Asia/Shanghai",
"Asia/Taipei","Asia/Urumqi","Australia/Adelaide", "Asia/Taipei","Asia/Urumqi","Australia/Adelaide",
"Australia/Adelaide","Australia/Broken Hill", "Australia/Adelaide","Australia/Broken_Hill",
"Australia/Broken Hill","Australia/Darwin"], "Australia/Broken_Hill","Australia/Darwin",
"Australia/North","Australia/South",
"Australia/South","Australia/Yancowinna",
"Australia/Yancowinna","CST6CDT","Canada/Central",
"Canada/East-Saskatchewan","Canada/Saskatchewan",
"Cuba","Mexico/General","PRC","ROC","US/Central",
"US/Indiana-Starke"],
["TJT","Asia/Dushanbe"], ["TJT","Asia/Dushanbe"],
["KRAT","Asia/Krasnoyarsk"], ["KRAT","Asia/Krasnoyarsk"],
["MYT","Asia/Kuala Lumpur","Asia/Kuching"], ["MYT","Asia/Kuala_Lumpur","Asia/Kuching"],
["SCT","Indian/Mahe"]], ["SCT","Indian/Mahe"]],
[["CEST","Africa/Ceuta","Arctic/Longyearbyen", [["CEST","Africa/Ceuta","Arctic/Longyearbyen",
"Atlantic/Jan Mayen","Europe/Amsterdam", "Atlantic/Jan_Mayen","CET","Europe/Amsterdam",
"Europe/Andorra","Europe/Belgrade", "Europe/Andorra","Europe/Belgrade",
"Europe/Berlin","Europe/Bratislava", "Europe/Berlin","Europe/Bratislava",
"Europe/Brussels","Europe/Budapest", "Europe/Brussels","Europe/Budapest",
"Europe/Copenhagen","Europe/Gibraltar", "Europe/Busingen","Europe/Copenhagen",
"Europe/Ljubljana","Europe/Luxembourg", "Europe/Gibraltar","Europe/Ljubljana",
"Europe/Madrid","Europe/Malta","Europe/Monaco", "Europe/Luxembourg","Europe/Madrid",
"Europe/Oslo","Europe/Paris","Europe/Prague", "Europe/Malta","Europe/Monaco","Europe/Oslo",
"Europe/Rome","Europe/San Marino", "Europe/Paris","Europe/Podgorica","Europe/Prague",
"Europe/Rome","Europe/San_Marino",
"Europe/Sarajevo","Europe/Skopje", "Europe/Sarajevo","Europe/Skopje",
"Europe/Stockholm","Europe/Tirane","Europe/Vaduz", "Europe/Stockholm","Europe/Tirane","Europe/Vaduz",
"Europe/Vatican","Europe/Vienna","Europe/Warsaw", "Europe/Vatican","Europe/Vienna","Europe/Warsaw",
"Europe/Zagreb","Europe/Zurich"], "Europe/Zagreb","Europe/Zurich","Poland"],
["PST","America/Dawson","America/Los Angeles", ["PST","America/Dawson","America/Ensenada",
"America/Los_Angeles","America/Santa_Isabel",
"America/Tijuana","America/Vancouver", "America/Tijuana","America/Vancouver",
"America/Whitehorse","Pacific/Pitcairn"], "America/Whitehorse","Canada/Pacific",
"Canada/Yukon","Mexico/BajaNorte","PST8PDT",
"Pacific/Pitcairn","US/Pacific"],
["SYOT","Antarctica/Syowa"], ["SYOT","Antarctica/Syowa"],
["ANAST","Asia/Anadyr"], ["VLAT","Asia/Ust-Nera","Asia/Vladivostok"],
["VLAT","Asia/Vladivostok"],
["CXT","Indian/Christmas"], ["CXT","Indian/Christmas"],
["TOT","Pacific/Tongatapu"]], ["TOT","Pacific/Tongatapu"]],
[["AKDT","America/Anchorage","America/Juneau", [["AKDT","America/Anchorage","America/Juneau",
"America/Nome","America/Yakutat"], "America/Nome","America/Sitka","America/Yakutat",
"US/Alaska"],
["GYT","America/Guyana"], ["GYT","America/Guyana"],
["PMST","America/Miquelon"], ["PMST","America/Miquelon"],
["WIT","Asia/Jakarta","Asia/Pontianak"], ["WIT","Asia/Jayapura"],
["GMT+9","Etc/GMT+9"],
["UTC","Etc/UTC","Etc/Universal","Etc/Zulu","UTC",
"Universal","Zulu"],
["MART","Pacific/Marquesas"]], ["MART","Pacific/Marquesas"]],
[["SRT","America/Paramaribo"], [["MeST","America/Metlakatla"],
["SRT","America/Paramaribo"],
["MAWT","Antarctica/Mawson"], ["MAWT","Antarctica/Mawson"],
["ALMST","Asia/Almaty"], ["YAKT","Asia/Khandyga","Asia/Yakutsk"],
["JST","Asia/Tokyo"], ["JST","Asia/Tokyo","Japan"],
["YAKT","Asia/Yakutsk"],
["AZOST","Atlantic/Azores"], ["AZOST","Atlantic/Azores"],
["MHT","Pacific/Kwajalein","Pacific/Majuro"]], ["GMT+6","Etc/GMT+6"],
[["CLST","America/Santiago","Antarctica/Palmer"], ["MHT","Kwajalein","Pacific/Kwajalein",
["WST","Antarctica/Casey","Asia/Oral", "Pacific/Majuro"],
"Australia/Perth","Pacific/Apia"], ["MEST","MET"]],
[["CLST","America/Santiago","Antarctica/Palmer",
"Chile/Continental"],
["WST","Antarctica/Casey","Australia/Perth",
"Australia/West","Pacific/Apia"],
["MMT","Asia/Rangoon"], ["MMT","Asia/Rangoon"],
["ULAT","Asia/Ulaanbaatar"], ["ULAT","Asia/Ulaanbaatar","Asia/Ulan_Bator"],
["YAPT","Pacific/Yap"]], ["GMT+3","Etc/GMT+3"]],
[["AKST","America/Anchorage","America/Juneau", [["WEST","Africa/Casablanca","Africa/El_Aaiun",
"America/Nome","America/Yakutat"], "Atlantic/Canary","Atlantic/Faeroe",
["BRST","America/Araguaina","America/Fortaleza", "Atlantic/Faroe","Atlantic/Madeira",
"America/Maceio","America/Recife", "Europe/Lisbon","Portugal","WET"],
"America/Sao Paulo"], ["AKST","America/Anchorage","America/Juneau",
["CLT","America/Santiago","Antarctica/Palmer"], "America/Nome","America/Sitka","America/Yakutat",
"US/Alaska"],
["CLT","America/Santiago","Antarctica/Palmer",
"Chile/Continental"],
["BRST","America/Sao_Paulo","Brazil/East"],
["EGST","America/Scoresbysund"], ["EGST","America/Scoresbysund"],
["LKT","Asia/Colombo"],
["OMST","Asia/Omsk"], ["OMST","Asia/Omsk"],
["WEST","Atlantic/Canary","Atlantic/Faeroe", ["PGT","Pacific/Port_Moresby"]],
"Atlantic/Madeira","Europe/Lisbon"],
["PGT","Pacific/Port Moresby"]],
[["GMT","Africa/Abidjan","Africa/Accra", [["GMT","Africa/Abidjan","Africa/Accra",
"Africa/Bamako","Africa/Banjul","Africa/Bissau", "Africa/Bamako","Africa/Banjul","Africa/Bissau",
"Africa/Conakry","Africa/Dakar","Africa/Freetown", "Africa/Conakry","Africa/Dakar","Africa/Freetown",
"Africa/Lome","Africa/Monrovia", "Africa/Lome","Africa/Monrovia",
"Africa/Nouakchott","Africa/Ouagadougou", "Africa/Nouakchott","Africa/Ouagadougou",
"Africa/Sao Tome","Africa/Timbuktu", "Africa/Sao_Tome","Africa/Timbuktu",
"America/Danmarkshavn","Atlantic/Reykjavik", "America/Danmarkshavn","Atlantic/Reykjavik",
"Atlantic/St Helena","Europe/Belfast", "Atlantic/St_Helena","Eire","Etc/GMT","Etc/GMT+0",
"Europe/Dublin","Europe/London"], "Etc/GMT-0","Etc/GMT0","Etc/Greenwich",
["ACT","America/Eirunepe","America/Rio Branco"], "Europe/Belfast","Europe/Dublin",
"Europe/Guernsey","Europe/Isle_of_Man",
"Europe/Jersey","Europe/London","GB","GB-Eire",
"GMT","GMT+0","GMT-0","GMT0","Greenwich",
"Iceland"],
["ACT","America/Eirunepe","America/Porto_Acre",
"America/Rio_Branco","Brazil/Acre"],
["NZDT","Antarctica/McMurdo", ["NZDT","Antarctica/McMurdo",
"Antarctica/South Pole","Pacific/Auckland"], "Antarctica/South_Pole","NZ","Pacific/Auckland"],
["GALT","Pacific/Galapagos"]], ["GALT","Pacific/Galapagos"]],
[["EDT","America/Detroit","America/Grand Turk", [["EDT","America/Detroit","America/Fort_Wayne",
"America/Grand_Turk",
"America/Indiana/Indianapolis",
"America/Indiana/Marengo",
"America/Indiana/Petersburg",
"America/Indiana/Vevay",
"America/Indiana/Vincennes",
"America/Indiana/Winamac","America/Indianapolis",
"America/Iqaluit","America/Kentucky/Louisville", "America/Iqaluit","America/Kentucky/Louisville",
"America/Kentucky/Monticello", "America/Kentucky/Monticello",
"America/Louisville","America/Montreal", "America/Louisville","America/Montreal",
"America/Nassau","America/New York", "America/Nassau","America/New_York",
"America/Nipigon","America/Pangnirtung", "America/Nipigon","America/Pangnirtung",
"America/Thunder Bay"], "America/Port-au-Prince","America/Thunder_Bay",
["BOT","America/La Paz"], "America/Toronto","Canada/Eastern","EST5EDT",
["TMT","Asia/Ashgabat"], "US/East-Indiana","US/Eastern","US/Michigan"],
["BOT","America/La_Paz"],
["TMT","Asia/Ashgabat","Asia/Ashkhabad"],
["PETT","Asia/Kamchatka"], ["PETT","Asia/Kamchatka"],
["CVT","Atlantic/Cape Verde"], ["CVT","Atlantic/Cape_Verde"],
["FKT","Atlantic/Stanley"], ["EAST","Chile/EasterIsland","Pacific/Easter"],
["EAST","Pacific/Easter"], ["GMT-8","Etc/GMT-8"],
["NCT","Pacific/Noumea"]], ["NCT","Pacific/Noumea"]],
[["AMT","America/Boa Vista","America/Cuiaba", [["AMT","America/Boa_Vista","America/Campo_Grande",
"America/Manaus","America/Porto Velho", "America/Cuiaba","America/Manaus",
"Asia/Yerevan"], "America/Porto_Velho","Asia/Yerevan",
"Brazil/West"],
["WGT","America/Godthab"], ["WGT","America/Godthab"],
["UYT","America/Montevideo"], ["UYT","America/Montevideo"],
["IRKT","Asia/Irkutsk"], ["IRKT","Asia/Irkutsk"],
["EIT","Asia/Jayapura"], ["WIB","Asia/Jakarta","Asia/Pontianak"],
["KST","Asia/Pyongyang","Asia/Qyzylorda", ["KST","Asia/Pyongyang","Asia/Seoul","ROK"],
"Asia/Seoul"], ["BTT","Asia/Thimbu","Asia/Thimphu"],
["BTT","Asia/Thimphu"]], ["GMT-14","Etc/GMT-14"],
[["ART","America/Buenos Aires","America/Catamarca", ["GMT-5","Etc/GMT-5"],
["WSDT","Pacific/Apia"]],
[["ART","America/Argentina/Buenos_Aires",
"America/Argentina/Catamarca",
"America/Argentina/ComodRivadavia",
"America/Argentina/Cordoba",
"America/Argentina/Jujuy",
"America/Argentina/La_Rioja",
"America/Argentina/Mendoza",
"America/Argentina/Rio_Gallegos",
"America/Argentina/Salta",
"America/Argentina/San_Juan",
"America/Argentina/San_Luis",
"America/Argentina/Tucuman",
"America/Argentina/Ushuaia",
"America/Buenos_Aires","America/Catamarca",
"America/Cordoba","America/Jujuy", "America/Cordoba","America/Jujuy",
"America/Mendoza","America/Rosario"], "America/Mendoza","America/Rosario"],
["VET","America/Caracas"], ["VET","America/Caracas"],
["NZST","Antarctica/McMurdo", ["NZST","Antarctica/McMurdo",
"Antarctica/South Pole","Pacific/Auckland"], "Antarctica/South_Pole","NZ","Pacific/Auckland"],
["TRUT","Pacific/Truk"], ["GMT-11","Etc/GMT-11"],
["GMT-2","Etc/GMT-2"],
["WAKT","Pacific/Wake"]], ["WAKT","Pacific/Wake"]],
[["CET","Africa/Algiers","Africa/Ceuta", [["CET","Africa/Algiers","Africa/Ceuta",
"Africa/Tunis","Arctic/Longyearbyen", "Africa/Tunis","Arctic/Longyearbyen",
"Atlantic/Jan Mayen","Europe/Amsterdam", "Atlantic/Jan_Mayen","CET","Europe/Amsterdam",
"Europe/Andorra","Europe/Belgrade", "Europe/Andorra","Europe/Belgrade",
"Europe/Berlin","Europe/Bratislava", "Europe/Berlin","Europe/Bratislava",
"Europe/Brussels","Europe/Budapest", "Europe/Brussels","Europe/Budapest",
"Europe/Copenhagen","Europe/Gibraltar", "Europe/Busingen","Europe/Copenhagen",
"Europe/Ljubljana","Europe/Luxembourg", "Europe/Gibraltar","Europe/Ljubljana",
"Europe/Madrid","Europe/Malta","Europe/Monaco", "Europe/Luxembourg","Europe/Madrid",
"Europe/Oslo","Europe/Paris","Europe/Prague", "Europe/Malta","Europe/Monaco","Europe/Oslo",
"Europe/Rome","Europe/San Marino", "Europe/Paris","Europe/Podgorica","Europe/Prague",
"Europe/Rome","Europe/San_Marino",
"Europe/Sarajevo","Europe/Skopje", "Europe/Sarajevo","Europe/Skopje",
"Europe/Stockholm","Europe/Tirane","Europe/Vaduz", "Europe/Stockholm","Europe/Tirane","Europe/Vaduz",
"Europe/Vatican","Europe/Vienna","Europe/Warsaw", "Europe/Vatican","Europe/Vienna","Europe/Warsaw",
"Europe/Zagreb","Europe/Zurich"], "Europe/Zagreb","Europe/Zurich","Poland"],
["EST","America/Cayman","America/Detroit", ["EST","America/Atikokan","America/Cayman",
"America/Grand Turk", "America/Coral_Harbour","America/Detroit",
"America/Fort_Wayne","America/Grand_Turk",
"America/Indiana/Indianapolis", "America/Indiana/Indianapolis",
"America/Indiana/Knox","America/Indiana/Marengo", "America/Indiana/Marengo",
"America/Indiana/Vevay","America/Indianapolis", "America/Indiana/Petersburg",
"America/Indiana/Vevay",
"America/Indiana/Vincennes",
"America/Indiana/Winamac","America/Indianapolis",
"America/Iqaluit","America/Jamaica", "America/Iqaluit","America/Jamaica",
"America/Kentucky/Louisville", "America/Kentucky/Louisville",
"America/Kentucky/Monticello", "America/Kentucky/Monticello",
"America/Louisville","America/Montreal", "America/Louisville","America/Montreal",
"America/Nassau","America/New York", "America/Nassau","America/New_York",
"America/Nipigon","America/Panama", "America/Nipigon","America/Panama",
"America/Pangnirtung","America/Port-au-Prince", "America/Pangnirtung","America/Port-au-Prince",
"America/Thunder Bay","Australia/Brisbane", "America/Thunder_Bay","America/Toronto",
"Australia/Hobart","Australia/Hobart", "Australia/ACT","Australia/ACT",
"Australia/Lindeman","Australia/Melbourne", "Australia/Brisbane","Australia/Canberra",
"Australia/Melbourne","Australia/Sydney", "Australia/Canberra","Australia/Currie",
"Australia/Sydney"], "Australia/Currie","Australia/Hobart",
"Australia/Hobart","Australia/Lindeman",
"Australia/Melbourne","Australia/Melbourne",
"Australia/NSW","Australia/NSW",
"Australia/Queensland","Australia/Sydney",
"Australia/Sydney","Australia/Tasmania",
"Australia/Tasmania","Australia/Victoria",
"Australia/Victoria","Canada/Eastern","EST",
"EST5EDT","Jamaica","US/East-Indiana",
"US/Eastern","US/Michigan"],
["ANAT","Asia/Anadyr"], ["ANAT","Asia/Anadyr"],
["GMT+10","Etc/GMT+10"],
["UCT","Etc/UCT","UCT"],
["IOT","Indian/Chagos"], ["IOT","Indian/Chagos"],
["CHUT","Pacific/Chuuk","Pacific/Truk",
"Pacific/Yap"],
["NRT","Pacific/Nauru"]], ["NRT","Pacific/Nauru"]],
[["GFT","America/Cayenne"], [["GFT","America/Cayenne"],
["PET","America/Lima"], ["PET","America/Lima"],
["HOVT","Asia/Hovd"], ["HOVT","Asia/Hovd"],
["PONT","Pacific/Ponape"], ["PONT","Pacific/Pohnpei","Pacific/Ponape"],
["TAHT","Pacific/Tahiti"]], ["TAHT","Pacific/Tahiti"]],
[["COT","America/Bogota"], [["COT","America/Bogota"],
["KGT","Asia/Bishkek"], ["KGT","Asia/Bishkek"],
["TFT","Indian/Kerguelen"], ["TFT","Indian/Kerguelen"],
["MUT","Indian/Mauritius"]], ["MUT","Indian/Mauritius"]],
[["AFT","Asia/Kabul"],["TKT","Pacific/Fakaofo"]], [["AFT","Asia/Kabul"],
[["WET","Africa/Casablanca","Africa/El Aaiun", ["IRDT","Asia/Tehran","Iran"],
["GMT+8","Etc/GMT+8"],
["TKT","Pacific/Fakaofo"]],
[["WET","Africa/Casablanca","Africa/El_Aaiun",
"Atlantic/Canary","Atlantic/Faeroe", "Atlantic/Canary","Atlantic/Faeroe",
"Atlantic/Madeira","Europe/Lisbon"], "Atlantic/Faroe","Atlantic/Madeira",
["BRT","America/Araguaina","America/Belem", "Europe/Lisbon","Portugal","WET"],
"America/Fortaleza","America/Maceio", ["BRT","America/Araguaina","America/Bahia",
"America/Recife","America/Sao Paulo"], "America/Belem","America/Fortaleza",
["FNT","America/Noronha"], "America/Maceio","America/Recife",
"America/Santarem","America/Sao_Paulo",
"Brazil/East"],
["FNT","America/Noronha","Brazil/DeNoronha"],
["EGT","America/Scoresbysund"], ["EGT","America/Scoresbysund"],
["ICT","Asia/Bangkok","Asia/Phnom Penh", ["ICT","Asia/Bangkok","Asia/Ho_Chi_Minh",
"Asia/Saigon","Asia/Vientiane"], "Asia/Phnom_Penh","Asia/Saigon","Asia/Vientiane"],
["TPT","Asia/Dili"], ["GMT+5","Etc/GMT+5"],
["NFT","Pacific/Norfolk"], ["NFT","Pacific/Norfolk"],
["GILT","Pacific/Tarawa"]]}, ["GILT","Pacific/Tarawa"]]},
{[["PYT","America/Asuncion"], {[["PYT","America/Asuncion"],
["MDT","America/Boise","America/Cambridge Bay", ["MDT","America/Boise","America/Cambridge_Bay",
"America/Chihuahua","America/Denver", "America/Chihuahua","America/Denver",
"America/Edmonton","America/Inuvik", "America/Edmonton","America/Inuvik",
"America/Mazatlan","America/Shiprock", "America/Mazatlan","America/Ojinaga",
"America/Yellowknife"], "America/Shiprock","America/Yellowknife",
["AMST","America/Cuiaba","Asia/Yerevan"], "Canada/Mountain","MST7MDT","Mexico/BajaSur",
"Navajo","US/Mountain"],
["AMST","America/Campo_Grande","America/Cuiaba"],
["UYST","America/Montevideo"],
["SAMT","Europe/Samara"]], ["SAMT","Europe/Samara"]],
[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, [["AQTT","Asia/Aqtau","Asia/Aqtobe"],
["AZST","Asia/Baku"],
["IRST","Asia/Tehran","Iran"],
["ChST","Pacific/Guam","Pacific/Saipan"],
["SST","Pacific/Midway","Pacific/Pago_Pago",
"Pacific/Samoa","US/Samoa"]],
[["WAST","Africa/Windhoek"],
["FJST","Pacific/Fiji"],
["NUT","Pacific/Niue"]],
[["PHT","Asia/Manila"]],
[["ADT","America/Glace_Bay","America/Goose_Bay",
"America/Halifax","America/Moncton",
"America/Thule","Atlantic/Bermuda",
"Canada/Atlantic"],
["DDUT","Antarctica/DumontDUrville"],
["MAGT","Asia/Magadan"],
["SBT","Pacific/Guadalcanal"]],
[["EET","Africa/Cairo","Africa/Tripoli",
"Asia/Amman","Asia/Beirut","Asia/Damascus",
"Asia/Gaza","Asia/Hebron","Asia/Istanbul",
"Asia/Nicosia","EET","Egypt","Europe/Athens",
"Europe/Bucharest","Europe/Chisinau",
"Europe/Helsinki","Europe/Istanbul","Europe/Kiev",
"Europe/Mariehamn","Europe/Nicosia","Europe/Riga",
"Europe/Simferopol","Europe/Sofia",
"Europe/Tallinn","Europe/Tiraspol",
"Europe/Uzhgorod","Europe/Vilnius",
"Europe/Zaporozhye","Libya","Turkey"],
["NDT","America/St_Johns","Canada/Newfoundland"],
["GST","Asia/Dubai","Asia/Muscat",
"Atlantic/South_Georgia"],
["ORAT","Asia/Oral"],
["GMT+12","Etc/GMT+12"]],
[["UZT","Asia/Samarkand","Asia/Tashkent"],
["RET","Indian/Reunion"]],
[["CAT","Africa/Blantyre","Africa/Bujumbura",
"Africa/Gaborone","Africa/Harare","Africa/Kigali",
"Africa/Lubumbashi","Africa/Lusaka",
"Africa/Maputo"],
["QYZT","Asia/Qyzylorda"],
["FKST","Atlantic/Stanley"]],
[],[],[],[],[],[],[],[]},
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}). {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}).

6
src/ibuild.erl Normal file → Executable file
View file

@ -1,6 +1,6 @@
-module(ibuild). -module(ibuild).
-export([build_index/0]). -export([build_index/0, main/1]).
-include("tz_database.hrl"). -include("tz_database.hrl").
@ -22,3 +22,7 @@ build_index() ->
I = lists:foldl(F, dict:new(), ?tz_database), I = lists:foldl(F, dict:new(), ?tz_database),
{ok, File} = file:open("tz_index.hrl", [write]), {ok, File} = file:open("tz_index.hrl", [write]),
io:fwrite(File, "-define(tz_index, ~p).", [I]). io:fwrite(File, "-define(tz_index, ~p).", [I]).
%% So this can be run from escript:
main(_Args) ->
build_index().

View file

@ -220,10 +220,41 @@ fmt_shift({'-', H, M}) ->
fmt_shift(Any) -> fmt_shift(Any) ->
throw(Any). throw(Any).
tr_char(String, From, To) ->
case string:chr(String, From) of
0 -> String; % Optimize for String does not contain From.
_ -> tr_char(String, From, To, [])
end.
tr_char([], _From, _To, Acc) ->
lists:reverse(Acc);
tr_char([H|T], From, To, Acc) ->
case H of
From -> tr_char(T, From, To, [To|Acc]);
_ -> tr_char(T, From, To, [H|Acc])
end.
-define(SPACE_CHAR, 32).
get_timezone(TimeZone) -> get_timezone(TimeZone) ->
case dict:find(TimeZone, ?tz_index) of TimeZoneNoSpaces = tr_char(TimeZone, ?SPACE_CHAR, $_),
case dict:find(TimeZoneNoSpaces, ?tz_index) of
error -> error ->
TimeZone; TimeZoneNoSpaces;
{ok, [TZName | _]} -> {ok, [TZName | _]} ->
TZName TZName
end. end.
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
tr_char_test() ->
?assertEqual("ABCDE", tr_char("ABCDE", ?SPACE_CHAR, $_)),
?assertEqual("AB_DE", tr_char("AB DE", ?SPACE_CHAR, $_)),
?assertEqual("A_C_E", tr_char("A C E", ?SPACE_CHAR, $_)).
get_timezone_test() ->
?assertEqual("America/Los_Angeles", get_timezone("America/Los Angeles")).
tz_shift_test() ->
?assertEqual({'+',3,0}, tz_shift({{2014,1,1},{12,0,0}}, "America/Los_Angeles", "America/New_York")).
-endif. % TEST

View file

@ -158,5 +158,46 @@ check_test() ->
?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 10, 0}}, Tz)), ?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 10, 0}}, Tz)),
?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 30, 0}}, Tz)), ?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 30, 0}}, Tz)),
?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 59, 0}}, Tz)), ?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 59, 0}}, Tz)),
?assertEqual(is_not_in_dst, check({{2010, 10, 31}, {3, 00, 0}}, Tz)). ?assertEqual(is_not_in_dst, check({{2010, 10, 31}, {3, 00, 0}}, Tz)),
%% DST starts at hour 24; DST ends at hour 0:
TzGaza = {"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{4,fri,sep},{0,0}},
?assertEqual(is_not_in_dst, check({{2014, 3, 27}, {23, 59, 59}}, TzGaza)),
%% Currently ST->DT transitions in the last hour of the day are not handled correctly.
%?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 00, 00}}, TzGaza)),
%?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 59, 59}}, TzGaza)),
?assertEqual(is_in_dst, check({{2014, 3, 28}, { 0, 59, 59}}, TzGaza)), % WRONG
?assertEqual(is_in_dst, check({{2014, 3, 28}, { 1, 00, 00}}, TzGaza)),
?assertEqual(is_in_dst, check({{2014, 9, 25}, {22, 59, 59}}, TzGaza)),
%% Currently DT->ST transitions in the first hour of the day are not handled correctly.
%?assertEqual(ambiguous_time, check({{2014, 9, 25}, {23, 00, 00}}, TzGaza)),
%?assertEqual(ambiguous_time, check({{2014, 9, 25}, {23, 59, 59}}, TzGaza)),
?assertEqual(is_in_dst, check({{2014, 9, 25}, {23, 59, 59}}, TzGaza)), % WRONG
?assertEqual(is_not_in_dst, check({{2014, 9, 26}, { 0, 00, 00}}, TzGaza)),
%% DST starts at hour 0; DST ends at hour 0.
TzDamascus = {"Asia/Damascus",{"EET","EET"},{"EEST","EEST"},120,60,{last,fri,mar},{0,0},{last,fri,oct},{0,0}},
?assertEqual(is_not_in_dst, check({{2014, 3, 27}, {23, 59, 59}}, TzDamascus)),
?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 00, 00}}, TzDamascus)),
?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 59, 59}}, TzDamascus)),
?assertEqual(is_in_dst, check({{2014, 3, 28}, { 1, 00, 00}}, TzDamascus)),
?assertEqual(is_in_dst, check({{2014, 10, 30}, {22, 59, 59}}, TzDamascus)),
%% Currently DT->ST transitions in the first hour of the day are not handled correctly.
%?assertEqual(ambiguous_time, check({{2014, 10, 30}, {23, 00, 00}}, TzDamascus)),
%?assertEqual(ambiguous_time, check({{2014, 10, 30}, {23, 59, 59}}, TzDamascus)),
?assertEqual(is_not_in_dst, check({{2014, 10, 31}, { 0, 00, 00}}, TzDamascus)),
%% DST ends before starts (southern hemisphere):
TzMontevideo = {"America/Montevideo",{"UYT","UYT"},{"UYST","UYST"},-180,60,{1,sun,oct},{2,0},{2,sun,mar},{2,0}},
?assertEqual(is_in_dst, check({{2014, 3, 09}, { 0, 59, 59}}, TzMontevideo)),
?assertEqual(ambiguous_time, check({{2014, 3, 09}, { 1, 00, 00}}, TzMontevideo)),
?assertEqual(ambiguous_time, check({{2014, 3, 09}, { 1, 59, 59}}, TzMontevideo)),
?assertEqual(is_not_in_dst, check({{2014, 3, 09}, { 2, 00, 00}}, TzMontevideo)),
?assertEqual(is_not_in_dst, check({{2014, 10, 05}, { 1, 59, 59}}, TzMontevideo)),
?assertEqual(time_not_exists, check({{2014, 10, 05}, { 2, 00, 00}}, TzMontevideo)),
?assertEqual(time_not_exists, check({{2014, 10, 05}, { 2, 59, 59}}, TzMontevideo)),
?assertEqual(is_in_dst, check({{2014, 10, 05}, { 3, 00, 00}}, TzMontevideo)),
true.
-endif. -endif.