summaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
Diffstat (limited to 'library')
-rw-r--r--library/auto.tcl462
-rw-r--r--library/clock.tcl4573
-rw-r--r--library/dde/pkgIndex.tcl8
-rw-r--r--library/dde1.1/pkgIndex.tcl1
-rw-r--r--library/encoding/cp1250.enc4
-rw-r--r--library/encoding/cp1251.enc2
-rw-r--r--library/encoding/cp1252.enc4
-rw-r--r--library/encoding/cp1253.enc2
-rw-r--r--library/encoding/cp1254.enc2
-rw-r--r--library/encoding/cp1255.enc10
-rw-r--r--library/encoding/cp1256.enc10
-rw-r--r--library/encoding/cp1257.enc2
-rw-r--r--library/encoding/cp1258.enc6
-rw-r--r--library/encoding/cp874.enc2
-rw-r--r--library/encoding/cp932.enc16
-rw-r--r--library/encoding/cp936.enc2
-rw-r--r--library/encoding/cp949.enc2
-rw-r--r--library/encoding/cp950.enc2
-rw-r--r--library/encoding/ebcdic.enc19
-rw-r--r--library/encoding/euc-jp.enc7
-rw-r--r--library/encoding/gb2312-raw.enc1380
-rw-r--r--library/encoding/gb2312.enc201
-rw-r--r--library/encoding/iso2022-jp.enc4
-rw-r--r--library/encoding/iso2022.enc4
-rw-r--r--library/encoding/iso8859-10.enc20
-rw-r--r--library/encoding/iso8859-13.enc20
-rw-r--r--library/encoding/iso8859-14.enc20
-rw-r--r--library/encoding/iso8859-15.enc20
-rw-r--r--library/encoding/iso8859-16.enc20
-rw-r--r--library/encoding/iso8859-6.enc2
-rw-r--r--library/encoding/iso8859-7.enc2
-rw-r--r--library/encoding/iso8859-8.enc4
-rw-r--r--library/encoding/jis0208.enc7
-rw-r--r--library/encoding/koi8-u.enc20
-rw-r--r--library/encoding/macCroatian.enc4
-rw-r--r--library/encoding/macCyrillic.enc6
-rw-r--r--library/encoding/macGreek.enc2
-rw-r--r--library/encoding/macIceland.enc4
-rw-r--r--library/encoding/macRoman.enc4
-rw-r--r--library/encoding/macTurkish.enc2
-rw-r--r--library/encoding/shiftjis.enc7
-rw-r--r--library/encoding/tis-620.enc20
-rw-r--r--library/history.tcl314
-rw-r--r--library/http/http.tcl1454
-rw-r--r--library/http/pkgIndex.tcl13
-rw-r--r--library/http1.0/http.tcl10
-rw-r--r--library/http2.1/http.tcl528
-rw-r--r--library/http2.1/pkgIndex.tcl11
-rw-r--r--library/http2.3/http.tcl528
-rw-r--r--library/http2.3/pkgIndex.tcl11
-rw-r--r--library/init.tcl635
-rw-r--r--library/ldAout.tcl240
-rw-r--r--library/msgcat/msgcat.tcl508
-rw-r--r--library/msgcat/pkgIndex.tcl3
-rw-r--r--library/msgcat1.0/msgcat.tcl177
-rw-r--r--library/msgcat1.0/pkgIndex.tcl1
-rw-r--r--library/msgs/af.msg49
-rw-r--r--library/msgs/af_za.msg6
-rw-r--r--library/msgs/ar.msg54
-rw-r--r--library/msgs/ar_in.msg6
-rw-r--r--library/msgs/ar_jo.msg39
-rw-r--r--library/msgs/ar_lb.msg39
-rw-r--r--library/msgs/ar_sy.msg39
-rw-r--r--library/msgs/be.msg52
-rw-r--r--library/msgs/bg.msg52
-rw-r--r--library/msgs/bn.msg49
-rw-r--r--library/msgs/bn_in.msg6
-rw-r--r--library/msgs/ca.msg50
-rw-r--r--library/msgs/cs.msg54
-rw-r--r--library/msgs/da.msg52
-rw-r--r--library/msgs/de.msg54
-rw-r--r--library/msgs/de_at.msg35
-rw-r--r--library/msgs/de_be.msg53
-rw-r--r--library/msgs/el.msg52
-rw-r--r--library/msgs/en_au.msg7
-rw-r--r--library/msgs/en_be.msg7
-rw-r--r--library/msgs/en_bw.msg6
-rw-r--r--library/msgs/en_ca.msg7
-rw-r--r--library/msgs/en_gb.msg7
-rw-r--r--library/msgs/en_hk.msg8
-rw-r--r--library/msgs/en_ie.msg7
-rw-r--r--library/msgs/en_in.msg8
-rw-r--r--library/msgs/en_nz.msg7
-rw-r--r--library/msgs/en_ph.msg8
-rw-r--r--library/msgs/en_sg.msg6
-rw-r--r--library/msgs/en_za.msg6
-rw-r--r--library/msgs/en_zw.msg6
-rw-r--r--library/msgs/eo.msg54
-rw-r--r--library/msgs/es.msg52
-rw-r--r--library/msgs/es_ar.msg6
-rw-r--r--library/msgs/es_bo.msg6
-rw-r--r--library/msgs/es_cl.msg6
-rw-r--r--library/msgs/es_co.msg6
-rw-r--r--library/msgs/es_cr.msg6
-rw-r--r--library/msgs/es_do.msg6
-rw-r--r--library/msgs/es_ec.msg6
-rw-r--r--library/msgs/es_gt.msg6
-rw-r--r--library/msgs/es_hn.msg6
-rw-r--r--library/msgs/es_mx.msg6
-rw-r--r--library/msgs/es_ni.msg6
-rw-r--r--library/msgs/es_pa.msg6
-rw-r--r--library/msgs/es_pe.msg6
-rw-r--r--library/msgs/es_pr.msg6
-rw-r--r--library/msgs/es_py.msg6
-rw-r--r--library/msgs/es_sv.msg6
-rw-r--r--library/msgs/es_uy.msg6
-rw-r--r--library/msgs/es_ve.msg6
-rw-r--r--library/msgs/et.msg52
-rw-r--r--library/msgs/eu.msg47
-rw-r--r--library/msgs/eu_es.msg7
-rw-r--r--library/msgs/fa.msg47
-rw-r--r--library/msgs/fa_in.msg52
-rw-r--r--library/msgs/fa_ir.msg9
-rw-r--r--library/msgs/fi.msg50
-rw-r--r--library/msgs/fo.msg47
-rw-r--r--library/msgs/fo_fo.msg7
-rw-r--r--library/msgs/fr.msg52
-rw-r--r--library/msgs/fr_be.msg7
-rw-r--r--library/msgs/fr_ca.msg7
-rw-r--r--library/msgs/fr_ch.msg7
-rw-r--r--library/msgs/ga.msg47
-rw-r--r--library/msgs/ga_ie.msg7
-rw-r--r--library/msgs/gl.msg47
-rw-r--r--library/msgs/gl_es.msg6
-rw-r--r--library/msgs/gv.msg47
-rw-r--r--library/msgs/gv_gb.msg6
-rw-r--r--library/msgs/he.msg52
-rw-r--r--library/msgs/hi.msg39
-rw-r--r--library/msgs/hi_in.msg6
-rw-r--r--library/msgs/hr.msg50
-rw-r--r--library/msgs/hu.msg54
-rw-r--r--library/msgs/id.msg47
-rw-r--r--library/msgs/id_id.msg6
-rw-r--r--library/msgs/is.msg50
-rw-r--r--library/msgs/it.msg54
-rw-r--r--library/msgs/it_ch.msg6
-rw-r--r--library/msgs/ja.msg44
-rw-r--r--library/msgs/kl.msg47
-rw-r--r--library/msgs/kl_gl.msg7
-rw-r--r--library/msgs/ko.msg55
-rw-r--r--library/msgs/ko_kr.msg8
-rw-r--r--library/msgs/kok.msg39
-rw-r--r--library/msgs/kok_in.msg6
-rw-r--r--library/msgs/kw.msg47
-rw-r--r--library/msgs/kw_gb.msg6
-rw-r--r--library/msgs/lt.msg52
-rw-r--r--library/msgs/lv.msg52
-rw-r--r--library/msgs/mk.msg52
-rw-r--r--library/msgs/mr.msg39
-rw-r--r--library/msgs/mr_in.msg6
-rw-r--r--library/msgs/ms.msg47
-rw-r--r--library/msgs/ms_my.msg6
-rw-r--r--library/msgs/mt.msg27
-rw-r--r--library/msgs/nb.msg52
-rw-r--r--library/msgs/nl.msg50
-rw-r--r--library/msgs/nl_be.msg7
-rw-r--r--library/msgs/nn.msg52
-rw-r--r--library/msgs/pl.msg52
-rw-r--r--library/msgs/pt.msg50
-rw-r--r--library/msgs/pt_br.msg7
-rw-r--r--library/msgs/ro.msg52
-rw-r--r--library/msgs/ru.msg52
-rw-r--r--library/msgs/ru_ua.msg6
-rw-r--r--library/msgs/sh.msg52
-rw-r--r--library/msgs/sk.msg52
-rw-r--r--library/msgs/sl.msg52
-rw-r--r--library/msgs/sq.msg54
-rw-r--r--library/msgs/sr.msg52
-rw-r--r--library/msgs/sv.msg52
-rw-r--r--library/msgs/sw.msg49
-rw-r--r--library/msgs/ta.msg39
-rw-r--r--library/msgs/ta_in.msg6
-rw-r--r--library/msgs/te.msg47
-rw-r--r--library/msgs/te_in.msg8
-rw-r--r--library/msgs/th.msg54
-rw-r--r--library/msgs/tr.msg50
-rw-r--r--library/msgs/uk.msg52
-rw-r--r--library/msgs/vi.msg50
-rw-r--r--library/msgs/zh.msg55
-rw-r--r--library/msgs/zh_cn.msg7
-rw-r--r--library/msgs/zh_hk.msg28
-rw-r--r--library/msgs/zh_sg.msg8
-rw-r--r--library/msgs/zh_tw.msg8
-rw-r--r--library/opt/optparse.tcl553
-rw-r--r--library/opt/pkgIndex.tcl3
-rw-r--r--library/opt0.4/optparse.tcl1097
-rw-r--r--library/opt0.4/pkgIndex.tcl11
-rw-r--r--library/package.tcl666
-rw-r--r--library/parray.tcl9
-rw-r--r--library/platform/pkgIndex.tcl3
-rw-r--r--library/platform/platform.tcl387
-rw-r--r--library/platform/shell.tcl241
-rwxr-xr-xlibrary/reg/pkgIndex.tcl10
-rwxr-xr-xlibrary/reg1.0/pkgIndex.tcl1
-rw-r--r--library/safe.tcl1730
-rw-r--r--library/tclIndex32
-rw-r--r--library/tcltest/pkgIndex.tcl12
-rw-r--r--library/tcltest/tcltest.tcl3893
-rw-r--r--library/tcltest1.0/pkgIndex.tcl18
-rw-r--r--library/tcltest1.0/tcltest.tcl1597
-rw-r--r--library/tm.tcl375
-rw-r--r--library/tzdata/Africa/Abidjan6
-rw-r--r--library/tzdata/Africa/Accra20
-rw-r--r--library/tzdata/Africa/Addis_Ababa7
-rw-r--r--library/tzdata/Africa/Algiers39
-rw-r--r--library/tzdata/Africa/Asmara8
-rw-r--r--library/tzdata/Africa/Asmera5
-rw-r--r--library/tzdata/Africa/Bamako8
-rw-r--r--library/tzdata/Africa/Bangui6
-rw-r--r--library/tzdata/Africa/Banjul8
-rw-r--r--library/tzdata/Africa/Bissau7
-rw-r--r--library/tzdata/Africa/Blantyre6
-rw-r--r--library/tzdata/Africa/Brazzaville6
-rw-r--r--library/tzdata/Africa/Bujumbura6
-rw-r--r--library/tzdata/Africa/Cairo128
-rw-r--r--library/tzdata/Africa/Casablanca168
-rw-r--r--library/tzdata/Africa/Ceuta258
-rw-r--r--library/tzdata/Africa/Conakry8
-rw-r--r--library/tzdata/Africa/Dakar7
-rw-r--r--library/tzdata/Africa/Dar_es_Salaam8
-rw-r--r--library/tzdata/Africa/Djibouti6
-rw-r--r--library/tzdata/Africa/Douala6
-rw-r--r--library/tzdata/Africa/El_Aaiun7
-rw-r--r--library/tzdata/Africa/Freetown36
-rw-r--r--library/tzdata/Africa/Gaborone9
-rw-r--r--library/tzdata/Africa/Harare6
-rw-r--r--library/tzdata/Africa/Johannesburg11
-rw-r--r--library/tzdata/Africa/Juba5
-rw-r--r--library/tzdata/Africa/Kampala9
-rw-r--r--library/tzdata/Africa/Khartoum39
-rw-r--r--library/tzdata/Africa/Kigali6
-rw-r--r--library/tzdata/Africa/Kinshasa6
-rw-r--r--library/tzdata/Africa/Lagos6
-rw-r--r--library/tzdata/Africa/Libreville6
-rw-r--r--library/tzdata/Africa/Lome6
-rw-r--r--library/tzdata/Africa/Luanda7
-rw-r--r--library/tzdata/Africa/Lubumbashi6
-rw-r--r--library/tzdata/Africa/Lusaka6
-rw-r--r--library/tzdata/Africa/Malabo7
-rw-r--r--library/tzdata/Africa/Maputo6
-rw-r--r--library/tzdata/Africa/Maseru8
-rw-r--r--library/tzdata/Africa/Mbabane6
-rw-r--r--library/tzdata/Africa/Mogadishu8
-rw-r--r--library/tzdata/Africa/Monrovia8
-rw-r--r--library/tzdata/Africa/Nairobi9
-rw-r--r--library/tzdata/Africa/Ndjamena8
-rw-r--r--library/tzdata/Africa/Niamey8
-rw-r--r--library/tzdata/Africa/Nouakchott8
-rw-r--r--library/tzdata/Africa/Ouagadougou6
-rw-r--r--library/tzdata/Africa/Porto-Novo7
-rw-r--r--library/tzdata/Africa/Sao_Tome7
-rw-r--r--library/tzdata/Africa/Timbuktu5
-rw-r--r--library/tzdata/Africa/Tripoli206
-rw-r--r--library/tzdata/Africa/Tunis39
-rw-r--r--library/tzdata/Africa/Windhoek222
-rw-r--r--library/tzdata/America/Adak276
-rw-r--r--library/tzdata/America/Anchorage276
-rw-r--r--library/tzdata/America/Anguilla5
-rw-r--r--library/tzdata/America/Antigua7
-rw-r--r--library/tzdata/America/Araguaina60
-rw-r--r--library/tzdata/America/Argentina/Buenos_Aires67
-rw-r--r--library/tzdata/America/Argentina/Catamarca68
-rw-r--r--library/tzdata/America/Argentina/ComodRivadavia5
-rw-r--r--library/tzdata/America/Argentina/Cordoba67
-rw-r--r--library/tzdata/America/Argentina/Jujuy67
-rw-r--r--library/tzdata/America/Argentina/La_Rioja69
-rw-r--r--library/tzdata/America/Argentina/Mendoza68
-rw-r--r--library/tzdata/America/Argentina/Rio_Gallegos68
-rw-r--r--library/tzdata/America/Argentina/Salta66
-rw-r--r--library/tzdata/America/Argentina/San_Juan69
-rw-r--r--library/tzdata/America/Argentina/San_Luis68
-rw-r--r--library/tzdata/America/Argentina/Tucuman69
-rw-r--r--library/tzdata/America/Argentina/Ushuaia68
-rw-r--r--library/tzdata/America/Aruba5
-rw-r--r--library/tzdata/America/Asuncion259
-rw-r--r--library/tzdata/America/Atikokan12
-rw-r--r--library/tzdata/America/Atka5
-rw-r--r--library/tzdata/America/Bahia68
-rw-r--r--library/tzdata/America/Bahia_Banderas222
-rw-r--r--library/tzdata/America/Barbados15
-rw-r--r--library/tzdata/America/Belem35
-rw-r--r--library/tzdata/America/Belize60
-rw-r--r--library/tzdata/America/Blanc-Sablon12
-rw-r--r--library/tzdata/America/Boa_Vista40
-rw-r--r--library/tzdata/America/Bogota9
-rw-r--r--library/tzdata/America/Boise281
-rw-r--r--library/tzdata/America/Buenos_Aires5
-rw-r--r--library/tzdata/America/Cambridge_Bay252
-rw-r--r--library/tzdata/America/Campo_Grande257
-rw-r--r--library/tzdata/America/Cancun216
-rw-r--r--library/tzdata/America/Caracas9
-rw-r--r--library/tzdata/America/Catamarca5
-rw-r--r--library/tzdata/America/Cayenne7
-rw-r--r--library/tzdata/America/Cayman7
-rw-r--r--library/tzdata/America/Chicago369
-rw-r--r--library/tzdata/America/Chihuahua221
-rw-r--r--library/tzdata/America/Coral_Harbour5
-rw-r--r--library/tzdata/America/Cordoba5
-rw-r--r--library/tzdata/America/Costa_Rica15
-rw-r--r--library/tzdata/America/Creston8
-rw-r--r--library/tzdata/America/Cuiaba257
-rw-r--r--library/tzdata/America/Curacao7
-rw-r--r--library/tzdata/America/Danmarkshavn39
-rw-r--r--library/tzdata/America/Dawson256
-rw-r--r--library/tzdata/America/Dawson_Creek64
-rw-r--r--library/tzdata/America/Denver291
-rw-r--r--library/tzdata/America/Detroit272
-rw-r--r--library/tzdata/America/Dominica5
-rw-r--r--library/tzdata/America/Edmonton284
-rw-r--r--library/tzdata/America/Eirunepe40
-rw-r--r--library/tzdata/America/El_Salvador10
-rw-r--r--library/tzdata/America/Ensenada5
-rw-r--r--library/tzdata/America/Fort_Wayne5
-rw-r--r--library/tzdata/America/Fortaleza48
-rw-r--r--library/tzdata/America/Glace_Bay273
-rw-r--r--library/tzdata/America/Godthab246
-rw-r--r--library/tzdata/America/Goose_Bay338
-rw-r--r--library/tzdata/America/Grand_Turk249
-rw-r--r--library/tzdata/America/Grenada5
-rw-r--r--library/tzdata/America/Guadeloupe5
-rw-r--r--library/tzdata/America/Guatemala14
-rw-r--r--library/tzdata/America/Guayaquil7
-rw-r--r--library/tzdata/America/Guyana9
-rw-r--r--library/tzdata/America/Halifax361
-rw-r--r--library/tzdata/America/Havana285
-rw-r--r--library/tzdata/America/Hermosillo21
-rw-r--r--library/tzdata/America/Indiana/Indianapolis234
-rw-r--r--library/tzdata/America/Indiana/Knox285
-rw-r--r--library/tzdata/America/Indiana/Marengo236
-rw-r--r--library/tzdata/America/Indiana/Petersburg247
-rw-r--r--library/tzdata/America/Indiana/Tell_City234
-rw-r--r--library/tzdata/America/Indiana/Vevay213
-rw-r--r--library/tzdata/America/Indiana/Vincennes234
-rw-r--r--library/tzdata/America/Indiana/Winamac240
-rw-r--r--library/tzdata/America/Indianapolis5
-rw-r--r--library/tzdata/America/Inuvik249
-rw-r--r--library/tzdata/America/Iqaluit250
-rw-r--r--library/tzdata/America/Jamaica28
-rw-r--r--library/tzdata/America/Jujuy5
-rw-r--r--library/tzdata/America/Juneau276
-rw-r--r--library/tzdata/America/Kentucky/Louisville314
-rw-r--r--library/tzdata/America/Kentucky/Monticello279
-rw-r--r--library/tzdata/America/Knox_IN5
-rw-r--r--library/tzdata/America/Kralendijk5
-rw-r--r--library/tzdata/America/La_Paz8
-rw-r--r--library/tzdata/America/Lima16
-rw-r--r--library/tzdata/America/Los_Angeles317
-rw-r--r--library/tzdata/America/Louisville5
-rw-r--r--library/tzdata/America/Lower_Princes5
-rw-r--r--library/tzdata/America/Maceio52
-rw-r--r--library/tzdata/America/Managua21
-rw-r--r--library/tzdata/America/Manaus39
-rw-r--r--library/tzdata/America/Marigot5
-rw-r--r--library/tzdata/America/Martinique9
-rw-r--r--library/tzdata/America/Matamoros219
-rw-r--r--library/tzdata/America/Mazatlan222
-rw-r--r--library/tzdata/America/Mendoza5
-rw-r--r--library/tzdata/America/Menominee274
-rw-r--r--library/tzdata/America/Merida216
-rw-r--r--library/tzdata/America/Metlakatla43
-rw-r--r--library/tzdata/America/Mexico_City228
-rw-r--r--library/tzdata/America/Miquelon234
-rw-r--r--library/tzdata/America/Moncton342
-rw-r--r--library/tzdata/America/Monterrey218
-rw-r--r--library/tzdata/America/Montevideo261
-rw-r--r--library/tzdata/America/Montreal366
-rw-r--r--library/tzdata/America/Montserrat5
-rw-r--r--library/tzdata/America/Nassau279
-rw-r--r--library/tzdata/America/New_York369
-rw-r--r--library/tzdata/America/Nipigon264
-rw-r--r--library/tzdata/America/Nome276
-rw-r--r--library/tzdata/America/Noronha48
-rw-r--r--library/tzdata/America/North_Dakota/Beulah279
-rw-r--r--library/tzdata/America/North_Dakota/Center279
-rw-r--r--library/tzdata/America/North_Dakota/New_Salem279
-rw-r--r--library/tzdata/America/Ojinaga222
-rw-r--r--library/tzdata/America/Panama7
-rw-r--r--library/tzdata/America/Pangnirtung252
-rw-r--r--library/tzdata/America/Paramaribo10
-rw-r--r--library/tzdata/America/Phoenix17
-rw-r--r--library/tzdata/America/Port-au-Prince217
-rw-r--r--library/tzdata/America/Port_of_Spain6
-rw-r--r--library/tzdata/America/Porto_Acre5
-rw-r--r--library/tzdata/America/Porto_Velho35
-rw-r--r--library/tzdata/America/Puerto_Rico10
-rw-r--r--library/tzdata/America/Rainy_River264
-rw-r--r--library/tzdata/America/Rankin_Inlet248
-rw-r--r--library/tzdata/America/Recife48
-rw-r--r--library/tzdata/America/Regina58
-rw-r--r--library/tzdata/America/Resolute248
-rw-r--r--library/tzdata/America/Rio_Branco36
-rw-r--r--library/tzdata/America/Rosario5
-rw-r--r--library/tzdata/America/Santa_Isabel284
-rw-r--r--library/tzdata/America/Santarem36
-rw-r--r--library/tzdata/America/Santiago291
-rw-r--r--library/tzdata/America/Santo_Domingo21
-rw-r--r--library/tzdata/America/Sao_Paulo258
-rw-r--r--library/tzdata/America/Scoresbysund246
-rw-r--r--library/tzdata/America/Shiprock5
-rw-r--r--library/tzdata/America/Sitka275
-rw-r--r--library/tzdata/America/St_Barthelemy5
-rw-r--r--library/tzdata/America/St_Johns372
-rw-r--r--library/tzdata/America/St_Kitts5
-rw-r--r--library/tzdata/America/St_Lucia5
-rw-r--r--library/tzdata/America/St_Thomas5
-rw-r--r--library/tzdata/America/St_Vincent5
-rw-r--r--library/tzdata/America/Swift_Current29
-rw-r--r--library/tzdata/America/Tegucigalpa12
-rw-r--r--library/tzdata/America/Thule224
-rw-r--r--library/tzdata/America/Thunder_Bay272
-rw-r--r--library/tzdata/America/Tijuana285
-rw-r--r--library/tzdata/America/Toronto365
-rw-r--r--library/tzdata/America/Tortola5
-rw-r--r--library/tzdata/America/Vancouver320
-rw-r--r--library/tzdata/America/Virgin5
-rw-r--r--library/tzdata/America/Whitehorse256
-rw-r--r--library/tzdata/America/Winnipeg316
-rw-r--r--library/tzdata/America/Yakutat276
-rw-r--r--library/tzdata/America/Yellowknife252
-rw-r--r--library/tzdata/Antarctica/Casey10
-rw-r--r--library/tzdata/Antarctica/Davis12
-rw-r--r--library/tzdata/Antarctica/DumontDUrville8
-rw-r--r--library/tzdata/Antarctica/Macquarie97
-rw-r--r--library/tzdata/Antarctica/Mawson7
-rw-r--r--library/tzdata/Antarctica/McMurdo5
-rw-r--r--library/tzdata/Antarctica/Palmer254
-rw-r--r--library/tzdata/Antarctica/Rothera6
-rw-r--r--library/tzdata/Antarctica/South_Pole5
-rw-r--r--library/tzdata/Antarctica/Syowa6
-rw-r--r--library/tzdata/Antarctica/Vostok6
-rw-r--r--library/tzdata/Arctic/Longyearbyen5
-rw-r--r--library/tzdata/Asia/Aden6
-rw-r--r--library/tzdata/Asia/Almaty56
-rw-r--r--library/tzdata/Asia/Amman74
-rw-r--r--library/tzdata/Asia/Anadyr72
-rw-r--r--library/tzdata/Asia/Aqtau58
-rw-r--r--library/tzdata/Asia/Aqtobe57
-rw-r--r--library/tzdata/Asia/Ashgabat31
-rw-r--r--library/tzdata/Asia/Ashkhabad5
-rw-r--r--library/tzdata/Asia/Baghdad59
-rw-r--r--library/tzdata/Asia/Bahrain7
-rw-r--r--library/tzdata/Asia/Baku242
-rw-r--r--library/tzdata/Asia/Bangkok7
-rw-r--r--library/tzdata/Asia/Beirut270
-rw-r--r--library/tzdata/Asia/Bishkek57
-rw-r--r--library/tzdata/Asia/Brunei7
-rw-r--r--library/tzdata/Asia/Calcutta5
-rw-r--r--library/tzdata/Asia/Choibalsan51
-rw-r--r--library/tzdata/Asia/Chongqing19
-rw-r--r--library/tzdata/Asia/Chungking5
-rw-r--r--library/tzdata/Asia/Colombo13
-rw-r--r--library/tzdata/Asia/Dacca5
-rw-r--r--library/tzdata/Asia/Damascus280
-rw-r--r--library/tzdata/Asia/Dhaka14
-rw-r--r--library/tzdata/Asia/Dili10
-rw-r--r--library/tzdata/Asia/Dubai6
-rw-r--r--library/tzdata/Asia/Dushanbe29
-rw-r--r--library/tzdata/Asia/Gaza278
-rw-r--r--library/tzdata/Asia/Harbin22
-rw-r--r--library/tzdata/Asia/Hebron277
-rw-r--r--library/tzdata/Asia/Ho_Chi_Minh9
-rw-r--r--library/tzdata/Asia/Hong_Kong75
-rw-r--r--library/tzdata/Asia/Hovd51
-rw-r--r--library/tzdata/Asia/Irkutsk71
-rw-r--r--library/tzdata/Asia/Istanbul5
-rw-r--r--library/tzdata/Asia/Jakarta13
-rw-r--r--library/tzdata/Asia/Jayapura8
-rw-r--r--library/tzdata/Asia/Jerusalem272
-rw-r--r--library/tzdata/Asia/Kabul7
-rw-r--r--library/tzdata/Asia/Kamchatka71
-rw-r--r--library/tzdata/Asia/Karachi16
-rw-r--r--library/tzdata/Asia/Kashgar20
-rw-r--r--library/tzdata/Asia/Kathmandu7
-rw-r--r--library/tzdata/Asia/Katmandu5
-rw-r--r--library/tzdata/Asia/Khandyga72
-rw-r--r--library/tzdata/Asia/Kolkata10
-rw-r--r--library/tzdata/Asia/Krasnoyarsk70
-rw-r--r--library/tzdata/Asia/Kuala_Lumpur13
-rw-r--r--library/tzdata/Asia/Kuching24
-rw-r--r--library/tzdata/Asia/Kuwait6
-rw-r--r--library/tzdata/Asia/Macao5
-rw-r--r--library/tzdata/Asia/Macau46
-rw-r--r--library/tzdata/Asia/Magadan70
-rw-r--r--library/tzdata/Asia/Makassar9
-rw-r--r--library/tzdata/Asia/Manila15
-rw-r--r--library/tzdata/Asia/Muscat6
-rw-r--r--library/tzdata/Asia/Nicosia257
-rw-r--r--library/tzdata/Asia/Novokuznetsk71
-rw-r--r--library/tzdata/Asia/Novosibirsk71
-rw-r--r--library/tzdata/Asia/Omsk70
-rw-r--r--library/tzdata/Asia/Oral58
-rw-r--r--library/tzdata/Asia/Phnom_Penh9
-rw-r--r--library/tzdata/Asia/Pontianak13
-rw-r--r--library/tzdata/Asia/Pyongyang11
-rw-r--r--library/tzdata/Asia/Qatar7
-rw-r--r--library/tzdata/Asia/Qyzylorda58
-rw-r--r--library/tzdata/Asia/Rangoon9
-rw-r--r--library/tzdata/Asia/Riyadh6
-rw-r--r--library/tzdata/Asia/Saigon5
-rw-r--r--library/tzdata/Asia/Sakhalin72
-rw-r--r--library/tzdata/Asia/Samarkand32
-rw-r--r--library/tzdata/Asia/Seoul18
-rw-r--r--library/tzdata/Asia/Shanghai23
-rw-r--r--library/tzdata/Asia/Singapore14
-rw-r--r--library/tzdata/Asia/Taipei46
-rw-r--r--library/tzdata/Asia/Tashkent32
-rw-r--r--library/tzdata/Asia/Tbilisi60
-rw-r--r--library/tzdata/Asia/Tehran105
-rw-r--r--library/tzdata/Asia/Tel_Aviv5
-rw-r--r--library/tzdata/Asia/Thimbu5
-rw-r--r--library/tzdata/Asia/Thimphu7
-rw-r--r--library/tzdata/Asia/Tokyo16
-rw-r--r--library/tzdata/Asia/Ujung_Pandang5
-rw-r--r--library/tzdata/Asia/Ulaanbaatar51
-rw-r--r--library/tzdata/Asia/Ulan_Bator5
-rw-r--r--library/tzdata/Asia/Urumqi19
-rw-r--r--library/tzdata/Asia/Ust-Nera70
-rw-r--r--library/tzdata/Asia/Vientiane9
-rw-r--r--library/tzdata/Asia/Vladivostok70
-rw-r--r--library/tzdata/Asia/Yakutsk70
-rw-r--r--library/tzdata/Asia/Yekaterinburg70
-rw-r--r--library/tzdata/Asia/Yerevan70
-rw-r--r--library/tzdata/Atlantic/Azores349
-rw-r--r--library/tzdata/Atlantic/Bermuda259
-rw-r--r--library/tzdata/Atlantic/Canary248
-rw-r--r--library/tzdata/Atlantic/Cape_Verde9
-rw-r--r--library/tzdata/Atlantic/Faeroe5
-rw-r--r--library/tzdata/Atlantic/Faroe245
-rw-r--r--library/tzdata/Atlantic/Jan_Mayen5
-rw-r--r--library/tzdata/Atlantic/Madeira350
-rw-r--r--library/tzdata/Atlantic/Reykjavik70
-rw-r--r--library/tzdata/Atlantic/South_Georgia6
-rw-r--r--library/tzdata/Atlantic/St_Helena7
-rw-r--r--library/tzdata/Atlantic/Stanley75
-rw-r--r--library/tzdata/Australia/ACT5
-rw-r--r--library/tzdata/Australia/Adelaide273
-rw-r--r--library/tzdata/Australia/Brisbane23
-rw-r--r--library/tzdata/Australia/Broken_Hill275
-rw-r--r--library/tzdata/Australia/Canberra5
-rw-r--r--library/tzdata/Australia/Currie273
-rw-r--r--library/tzdata/Australia/Darwin15
-rw-r--r--library/tzdata/Australia/Eucla25
-rw-r--r--library/tzdata/Australia/Hobart281
-rw-r--r--library/tzdata/Australia/LHI5
-rw-r--r--library/tzdata/Australia/Lindeman28
-rw-r--r--library/tzdata/Australia/Lord_Howe244
-rw-r--r--library/tzdata/Australia/Melbourne272
-rw-r--r--library/tzdata/Australia/NSW5
-rw-r--r--library/tzdata/Australia/North5
-rw-r--r--library/tzdata/Australia/Perth25
-rw-r--r--library/tzdata/Australia/Queensland5
-rw-r--r--library/tzdata/Australia/South5
-rw-r--r--library/tzdata/Australia/Sydney272
-rw-r--r--library/tzdata/Australia/Tasmania5
-rw-r--r--library/tzdata/Australia/Victoria5
-rw-r--r--library/tzdata/Australia/West5
-rw-r--r--library/tzdata/Australia/Yancowinna5
-rw-r--r--library/tzdata/Brazil/Acre5
-rw-r--r--library/tzdata/Brazil/DeNoronha5
-rw-r--r--library/tzdata/Brazil/East5
-rw-r--r--library/tzdata/Brazil/West5
-rw-r--r--library/tzdata/CET265
-rw-r--r--library/tzdata/CST6CDT278
-rw-r--r--library/tzdata/Canada/Atlantic5
-rw-r--r--library/tzdata/Canada/Central5
-rw-r--r--library/tzdata/Canada/East-Saskatchewan5
-rw-r--r--library/tzdata/Canada/Eastern5
-rw-r--r--library/tzdata/Canada/Mountain5
-rw-r--r--library/tzdata/Canada/Newfoundland5
-rw-r--r--library/tzdata/Canada/Pacific5
-rw-r--r--library/tzdata/Canada/Saskatchewan5
-rw-r--r--library/tzdata/Canada/Yukon5
-rw-r--r--library/tzdata/Chile/Continental5
-rw-r--r--library/tzdata/Chile/EasterIsland5
-rw-r--r--library/tzdata/Cuba5
-rw-r--r--library/tzdata/EET251
-rw-r--r--library/tzdata/EST5
-rw-r--r--library/tzdata/EST5EDT278
-rw-r--r--library/tzdata/Egypt5
-rw-r--r--library/tzdata/Eire5
-rw-r--r--library/tzdata/Etc/GMT5
-rw-r--r--library/tzdata/Etc/GMT+05
-rw-r--r--library/tzdata/Etc/GMT+15
-rw-r--r--library/tzdata/Etc/GMT+105
-rw-r--r--library/tzdata/Etc/GMT+115
-rw-r--r--library/tzdata/Etc/GMT+125
-rw-r--r--library/tzdata/Etc/GMT+25
-rw-r--r--library/tzdata/Etc/GMT+35
-rw-r--r--library/tzdata/Etc/GMT+45
-rw-r--r--library/tzdata/Etc/GMT+55
-rw-r--r--library/tzdata/Etc/GMT+65
-rw-r--r--library/tzdata/Etc/GMT+75
-rw-r--r--library/tzdata/Etc/GMT+85
-rw-r--r--library/tzdata/Etc/GMT+95
-rw-r--r--library/tzdata/Etc/GMT-05
-rw-r--r--library/tzdata/Etc/GMT-15
-rw-r--r--library/tzdata/Etc/GMT-105
-rw-r--r--library/tzdata/Etc/GMT-115
-rw-r--r--library/tzdata/Etc/GMT-125
-rw-r--r--library/tzdata/Etc/GMT-135
-rw-r--r--library/tzdata/Etc/GMT-145
-rw-r--r--library/tzdata/Etc/GMT-25
-rw-r--r--library/tzdata/Etc/GMT-35
-rw-r--r--library/tzdata/Etc/GMT-45
-rw-r--r--library/tzdata/Etc/GMT-55
-rw-r--r--library/tzdata/Etc/GMT-65
-rw-r--r--library/tzdata/Etc/GMT-75
-rw-r--r--library/tzdata/Etc/GMT-85
-rw-r--r--library/tzdata/Etc/GMT-95
-rw-r--r--library/tzdata/Etc/GMT05
-rw-r--r--library/tzdata/Etc/Greenwich5
-rw-r--r--library/tzdata/Etc/UCT5
-rw-r--r--library/tzdata/Etc/UTC5
-rw-r--r--library/tzdata/Etc/Universal5
-rw-r--r--library/tzdata/Etc/Zulu5
-rw-r--r--library/tzdata/Europe/Amsterdam310
-rw-r--r--library/tzdata/Europe/Andorra237
-rw-r--r--library/tzdata/Europe/Athens268
-rw-r--r--library/tzdata/Europe/Belfast5
-rw-r--r--library/tzdata/Europe/Belgrade250
-rw-r--r--library/tzdata/Europe/Berlin274
-rw-r--r--library/tzdata/Europe/Bratislava5
-rw-r--r--library/tzdata/Europe/Brussels316
-rw-r--r--library/tzdata/Europe/Bucharest268
-rw-r--r--library/tzdata/Europe/Budapest284
-rw-r--r--library/tzdata/Europe/Busingen5
-rw-r--r--library/tzdata/Europe/Chisinau272
-rw-r--r--library/tzdata/Europe/Copenhagen264
-rw-r--r--library/tzdata/Europe/Dublin359
-rw-r--r--library/tzdata/Europe/Gibraltar328
-rw-r--r--library/tzdata/Europe/Guernsey5
-rw-r--r--library/tzdata/Europe/Helsinki248
-rw-r--r--library/tzdata/Europe/Isle_of_Man5
-rw-r--r--library/tzdata/Europe/Istanbul304
-rw-r--r--library/tzdata/Europe/Jersey5
-rw-r--r--library/tzdata/Europe/Kaliningrad84
-rw-r--r--library/tzdata/Europe/Kiev251
-rw-r--r--library/tzdata/Europe/Lisbon351
-rw-r--r--library/tzdata/Europe/Ljubljana5
-rw-r--r--library/tzdata/Europe/London372
-rw-r--r--library/tzdata/Europe/Luxembourg313
-rw-r--r--library/tzdata/Europe/Madrid294
-rw-r--r--library/tzdata/Europe/Malta299
-rw-r--r--library/tzdata/Europe/Mariehamn5
-rw-r--r--library/tzdata/Europe/Minsk74
-rw-r--r--library/tzdata/Europe/Monaco315
-rw-r--r--library/tzdata/Europe/Moscow83
-rw-r--r--library/tzdata/Europe/Nicosia5
-rw-r--r--library/tzdata/Europe/Oslo271
-rw-r--r--library/tzdata/Europe/Paris314
-rw-r--r--library/tzdata/Europe/Podgorica5
-rw-r--r--library/tzdata/Europe/Prague272
-rw-r--r--library/tzdata/Europe/Riga258
-rw-r--r--library/tzdata/Europe/Rome301
-rw-r--r--library/tzdata/Europe/Samara73
-rw-r--r--library/tzdata/Europe/San_Marino5
-rw-r--r--library/tzdata/Europe/Sarajevo5
-rw-r--r--library/tzdata/Europe/Simferopol253
-rw-r--r--library/tzdata/Europe/Skopje5
-rw-r--r--library/tzdata/Europe/Sofia259
-rw-r--r--library/tzdata/Europe/Stockholm250
-rw-r--r--library/tzdata/Europe/Tallinn255
-rw-r--r--library/tzdata/Europe/Tirane263
-rw-r--r--library/tzdata/Europe/Tiraspol5
-rw-r--r--library/tzdata/Europe/Uzhgorod254
-rw-r--r--library/tzdata/Europe/Vaduz5
-rw-r--r--library/tzdata/Europe/Vatican5
-rw-r--r--library/tzdata/Europe/Vienna271
-rw-r--r--library/tzdata/Europe/Vilnius251
-rw-r--r--library/tzdata/Europe/Volgograd70
-rw-r--r--library/tzdata/Europe/Warsaw296
-rw-r--r--library/tzdata/Europe/Zagreb5
-rw-r--r--library/tzdata/Europe/Zaporozhye252
-rw-r--r--library/tzdata/Europe/Zurich250
-rw-r--r--library/tzdata/GB5
-rw-r--r--library/tzdata/GB-Eire5
-rw-r--r--library/tzdata/GMT5
-rw-r--r--library/tzdata/GMT+05
-rw-r--r--library/tzdata/GMT-05
-rw-r--r--library/tzdata/GMT05
-rw-r--r--library/tzdata/Greenwich5
-rw-r--r--library/tzdata/HST5
-rw-r--r--library/tzdata/Hongkong5
-rw-r--r--library/tzdata/Iceland5
-rw-r--r--library/tzdata/Indian/Antananarivo8
-rw-r--r--library/tzdata/Indian/Chagos7
-rw-r--r--library/tzdata/Indian/Christmas6
-rw-r--r--library/tzdata/Indian/Cocos6
-rw-r--r--library/tzdata/Indian/Comoro6
-rw-r--r--library/tzdata/Indian/Kerguelen6
-rw-r--r--library/tzdata/Indian/Mahe6
-rw-r--r--library/tzdata/Indian/Maldives7
-rw-r--r--library/tzdata/Indian/Mauritius10
-rw-r--r--library/tzdata/Indian/Mayotte6
-rw-r--r--library/tzdata/Indian/Reunion6
-rw-r--r--library/tzdata/Iran5
-rw-r--r--library/tzdata/Israel5
-rw-r--r--library/tzdata/Jamaica5
-rw-r--r--library/tzdata/Japan5
-rw-r--r--library/tzdata/Kwajalein5
-rw-r--r--library/tzdata/Libya5
-rw-r--r--library/tzdata/MET265
-rw-r--r--library/tzdata/MST5
-rw-r--r--library/tzdata/MST7MDT278
-rw-r--r--library/tzdata/Mexico/BajaNorte5
-rw-r--r--library/tzdata/Mexico/BajaSur5
-rw-r--r--library/tzdata/Mexico/General5
-rw-r--r--library/tzdata/NZ5
-rw-r--r--library/tzdata/NZ-CHAT5
-rw-r--r--library/tzdata/Navajo5
-rw-r--r--library/tzdata/PRC5
-rw-r--r--library/tzdata/PST8PDT278
-rw-r--r--library/tzdata/Pacific/Apia188
-rw-r--r--library/tzdata/Pacific/Auckland285
-rw-r--r--library/tzdata/Pacific/Chatham257
-rw-r--r--library/tzdata/Pacific/Chuuk6
-rw-r--r--library/tzdata/Pacific/Easter275
-rw-r--r--library/tzdata/Pacific/Efate26
-rw-r--r--library/tzdata/Pacific/Enderbury8
-rw-r--r--library/tzdata/Pacific/Fakaofo7
-rw-r--r--library/tzdata/Pacific/Fiji191
-rw-r--r--library/tzdata/Pacific/Funafuti6
-rw-r--r--library/tzdata/Pacific/Galapagos7
-rw-r--r--library/tzdata/Pacific/Gambier6
-rw-r--r--library/tzdata/Pacific/Guadalcanal6
-rw-r--r--library/tzdata/Pacific/Guam8
-rw-r--r--library/tzdata/Pacific/Honolulu11
-rw-r--r--library/tzdata/Pacific/Johnston5
-rw-r--r--library/tzdata/Pacific/Kiritimati8
-rw-r--r--library/tzdata/Pacific/Kosrae8
-rw-r--r--library/tzdata/Pacific/Kwajalein8
-rw-r--r--library/tzdata/Pacific/Majuro7
-rw-r--r--library/tzdata/Pacific/Marquesas6
-rw-r--r--library/tzdata/Pacific/Midway10
-rw-r--r--library/tzdata/Pacific/Nauru9
-rw-r--r--library/tzdata/Pacific/Niue8
-rw-r--r--library/tzdata/Pacific/Norfolk7
-rw-r--r--library/tzdata/Pacific/Noumea12
-rw-r--r--library/tzdata/Pacific/Pago_Pago10
-rw-r--r--library/tzdata/Pacific/Palau6
-rw-r--r--library/tzdata/Pacific/Pitcairn7
-rw-r--r--library/tzdata/Pacific/Pohnpei6
-rw-r--r--library/tzdata/Pacific/Ponape5
-rw-r--r--library/tzdata/Pacific/Port_Moresby7
-rw-r--r--library/tzdata/Pacific/Rarotonga32
-rw-r--r--library/tzdata/Pacific/Saipan9
-rw-r--r--library/tzdata/Pacific/Samoa5
-rw-r--r--library/tzdata/Pacific/Tahiti6
-rw-r--r--library/tzdata/Pacific/Tarawa6
-rw-r--r--library/tzdata/Pacific/Tongatapu14
-rw-r--r--library/tzdata/Pacific/Truk5
-rw-r--r--library/tzdata/Pacific/Wake6
-rw-r--r--library/tzdata/Pacific/Wallis6
-rw-r--r--library/tzdata/Pacific/Yap5
-rw-r--r--library/tzdata/Poland5
-rw-r--r--library/tzdata/Portugal5
-rw-r--r--library/tzdata/ROC5
-rw-r--r--library/tzdata/ROK5
-rw-r--r--library/tzdata/Singapore5
-rw-r--r--library/tzdata/SystemV/AST45
-rw-r--r--library/tzdata/SystemV/AST4ADT5
-rw-r--r--library/tzdata/SystemV/CST65
-rw-r--r--library/tzdata/SystemV/CST6CDT5
-rw-r--r--library/tzdata/SystemV/EST55
-rw-r--r--library/tzdata/SystemV/EST5EDT5
-rw-r--r--library/tzdata/SystemV/HST105
-rw-r--r--library/tzdata/SystemV/MST75
-rw-r--r--library/tzdata/SystemV/MST7MDT5
-rw-r--r--library/tzdata/SystemV/PST85
-rw-r--r--library/tzdata/SystemV/PST8PDT5
-rw-r--r--library/tzdata/SystemV/YST95
-rw-r--r--library/tzdata/SystemV/YST9YDT5
-rw-r--r--library/tzdata/Turkey5
-rw-r--r--library/tzdata/UCT5
-rw-r--r--library/tzdata/US/Alaska5
-rw-r--r--library/tzdata/US/Aleutian5
-rw-r--r--library/tzdata/US/Arizona5
-rw-r--r--library/tzdata/US/Central5
-rw-r--r--library/tzdata/US/East-Indiana5
-rw-r--r--library/tzdata/US/Eastern5
-rw-r--r--library/tzdata/US/Hawaii5
-rw-r--r--library/tzdata/US/Indiana-Starke5
-rw-r--r--library/tzdata/US/Michigan5
-rw-r--r--library/tzdata/US/Mountain5
-rw-r--r--library/tzdata/US/Pacific5
-rw-r--r--library/tzdata/US/Pacific-New5
-rw-r--r--library/tzdata/US/Samoa5
-rw-r--r--library/tzdata/UTC5
-rw-r--r--library/tzdata/Universal5
-rw-r--r--library/tzdata/W-SU5
-rw-r--r--library/tzdata/WET251
-rw-r--r--library/tzdata/Zulu5
-rw-r--r--library/word.tcl150
793 files changed, 65362 insertions, 7612 deletions
diff --git a/library/auto.tcl b/library/auto.tcl
index 7e43aaf..02edcc4 100644
--- a/library/auto.tcl
+++ b/library/auto.tcl
@@ -1,47 +1,48 @@
# auto.tcl --
#
-# utility procs formerly in init.tcl dealing with auto execution
-# of commands and can be auto loaded themselves.
-#
-# RCS: @(#) $Id: auto.tcl,v 1.2 1999/04/16 00:46:56 stanton Exp $
+# utility procs formerly in init.tcl dealing with auto execution of commands
+# and can be auto loaded themselves.
#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# auto_reset --
#
-# Destroy all cached information for auto-loading and auto-execution,
-# so that the information gets recomputed the next time it's needed.
-# Also delete any procedures that are listed in the auto-load index
-# except those defined in this file.
+# Destroy all cached information for auto-loading and auto-execution, so that
+# the information gets recomputed the next time it's needed. Also delete any
+# commands that are listed in the auto-load index.
#
-# Arguments:
+# Arguments:
# None.
proc auto_reset {} {
- global auto_execs auto_index auto_oldpath
- foreach p [info procs] {
- if {[info exists auto_index($p)] && ![string match auto_* $p]
- && ([lsearch -exact {unknown pkg_mkIndex tclPkgSetup
- tcl_findLibrary pkg_compareExtension
- tclMacPkgSearch tclPkgUnknown} $p] < 0)} {
- rename $p {}
+ global auto_execs auto_index auto_path
+ if {[array exists auto_index]} {
+ foreach cmdName [array names auto_index] {
+ set fqcn [namespace which $cmdName]
+ if {$fqcn eq ""} {
+ continue
+ }
+ rename $fqcn {}
}
}
- catch {unset auto_execs}
- catch {unset auto_index}
- catch {unset auto_oldpath}
+ unset -nocomplain auto_execs auto_index ::tcl::auto_oldpath
+ if {[catch {llength $auto_path}]} {
+ set auto_path [list [info library]]
+ } elseif {[info library] ni $auto_path} {
+ lappend auto_path [info library]
+ }
}
# tcl_findLibrary --
#
# This is a utility for extensions that searches for a library directory
-# using a canonical searching algorithm. A side effect is to source
-# the initialization script and set a global library variable.
+# using a canonical searching algorithm. A side effect is to source the
+# initialization script and set a global library variable.
#
# Arguments:
# basename Prefix of the directory name, (e.g., "tk")
@@ -53,65 +54,106 @@ proc auto_reset {} {
proc tcl_findLibrary {basename version patch initScript enVarName varName} {
upvar #0 $varName the_library
- global env errorInfo
+ global auto_path env tcl_platform
set dirs {}
set errors {}
# The C application may have hardwired a path, which we honor
-
- if {[info exist the_library] && [string compare $the_library {}]} {
+
+ if {[info exists the_library] && $the_library ne ""} {
lappend dirs $the_library
} else {
-
# Do the canonical search
- # 1. From an environment variable, if it exists
+ # 1. From an environment variable, if it exists. Placing this first
+ # gives the end-user ultimate control to work-around any bugs, or
+ # to customize.
if {[info exists env($enVarName)]} {
lappend dirs $env($enVarName)
}
- # 2. Relative to the Tcl library
+ # 2. In the package script directory registered within the
+ # configuration of the package itself.
- lappend dirs [file join [file dirname [info library]] \
- $basename$version]
+ catch {
+ lappend dirs [::${basename}::pkgconfig get scriptdir,runtime]
+ }
+
+ # 3. Relative to auto_path directories. This checks relative to the
+ # Tcl library as well as allowing loading of libraries added to the
+ # auto_path that is not relative to the core library or binary paths.
+ foreach d $auto_path {
+ lappend dirs [file join $d $basename$version]
+ if {$tcl_platform(platform) eq "unix"
+ && $tcl_platform(os) eq "Darwin"} {
+ # 4. On MacOSX, check the Resources/Scripts subdir too
+ lappend dirs [file join $d $basename$version Resources Scripts]
+ }
+ }
# 3. Various locations relative to the executable
# ../lib/foo1.0 (From bin directory in install hierarchy)
# ../../lib/foo1.0 (From bin/arch directory in install hierarchy)
# ../library (From unix directory in build hierarchy)
+ #
+ # Remaining locations are out of date (when relevant, they ought to be
+ # covered by the $::auto_path seach above) and disabled.
+ #
# ../../library (From unix/arch directory in build hierarchy)
- # ../../foo1.0b1/library (From unix directory in parallel build hierarchy)
- # ../../../foo1.0b1/library (From unix/arch directory in parallel build hierarchy)
+ # ../../foo1.0.1/library
+ # (From unix directory in parallel build hierarchy)
+ # ../../../foo1.0.1/library
+ # (From unix/arch directory in parallel build hierarchy)
set parentDir [file dirname [file dirname [info nameofexecutable]]]
set grandParentDir [file dirname $parentDir]
lappend dirs [file join $parentDir lib $basename$version]
lappend dirs [file join $grandParentDir lib $basename$version]
lappend dirs [file join $parentDir library]
- lappend dirs [file join $grandParentDir library]
- if {![regexp {.*[ab][0-9]*} $patch ver]} {
- set ver $version
- }
- lappend dirs [file join $grandParentDir $basename$ver library]
- lappend dirs [file join [file dirname $grandParentDir] $basename$ver library]
+ if {0} {
+ lappend dirs [file join $grandParentDir library]
+ lappend dirs [file join $grandParentDir $basename$patch library]
+ lappend dirs [file join [file dirname $grandParentDir] \
+ $basename$patch library]
+ }
}
+ # uniquify $dirs in order
+ array set seen {}
+ foreach i $dirs {
+ # Take note that the [file normalize] below has been noted to cause
+ # difficulties for the freewrap utility. See Bug 1072136. Until
+ # freewrap resolves the matter, one might work around the problem by
+ # disabling that branch.
+ if {[interp issafe]} {
+ set norm $i
+ } else {
+ set norm [file normalize $i]
+ }
+ if {[info exists seen($norm)]} {
+ continue
+ }
+ set seen($norm) {}
+ lappend uniqdirs $i
+ }
+ set dirs $uniqdirs
foreach i $dirs {
set the_library $i
set file [file join $i $initScript]
- # source everything when in a safe interpreter because
- # we have a source command, but no file exists command
+ # source everything when in a safe interpreter because we have a
+ # source command, but no file exists command
if {[interp issafe] || [file exists $file]} {
- if {![catch {uplevel #0 [list source $file]} msg]} {
+ if {![catch {uplevel #0 [list source $file]} msg opts]} {
return
- } else {
- append errors "$file: $msg\n$errorInfo\n"
}
+ append errors "$file: $msg\n"
+ append errors [dict get $opts -errorinfo]\n
}
}
+ unset -nocomplain the_library
set msg "Can't find a usable $initScript in the following directories: \n"
append msg " $dirs\n\n"
append msg "$errors\n\n"
@@ -123,39 +165,36 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
# ----------------------------------------------------------------------
# auto_mkindex
# ----------------------------------------------------------------------
-# The following procedures are used to generate the tclIndex file
-# from Tcl source files. They use a special safe interpreter to
-# parse Tcl source files, writing out index entries as "proc"
-# commands are encountered. This implementation won't work in a
-# safe interpreter, since a safe interpreter can't create the
-# special parser and mess with its commands.
+# The following procedures are used to generate the tclIndex file from Tcl
+# source files. They use a special safe interpreter to parse Tcl source
+# files, writing out index entries as "proc" commands are encountered. This
+# implementation won't work in a safe interpreter, since a safe interpreter
+# can't create the special parser and mess with its commands.
if {[interp issafe]} {
return ;# Stop sourcing the file here
}
# auto_mkindex --
-# Regenerate a tclIndex file from Tcl source files. Takes as argument
-# the name of the directory in which the tclIndex file is to be placed,
-# followed by any number of glob patterns to use in that directory to
-# locate all of the relevant files.
+# Regenerate a tclIndex file from Tcl source files. Takes as argument the
+# name of the directory in which the tclIndex file is to be placed, followed
+# by any number of glob patterns to use in that directory to locate all of the
+# relevant files.
#
-# Arguments:
+# Arguments:
# dir - Name of the directory in which to create an index.
-# args - Any number of additional arguments giving the
-# names of files within dir. If no additional
-# are given auto_mkindex will look for *.tcl.
-proc auto_mkindex {dir args} {
- global errorCode errorInfo
+# args - Any number of additional arguments giving the names of files
+# within dir. If no additional are given auto_mkindex will look
+# for *.tcl.
+proc auto_mkindex {dir args} {
if {[interp issafe]} {
error "can't generate index within safe interpreter"
}
set oldDir [pwd]
cd $dir
- set dir [pwd]
append index "# Tcl autoload index file, version 2.0\n"
append index "# This file is generated by the \"auto_mkindex\" command\n"
@@ -164,34 +203,31 @@ proc auto_mkindex {dir args} {
append index "# sets an element in the auto_index array, where the\n"
append index "# element name is the name of a command and the value is\n"
append index "# a script that loads the command.\n\n"
- if {$args == ""} {
+ if {![llength $args]} {
set args *.tcl
}
auto_mkindex_parser::init
- foreach file [eval glob $args] {
- if {[catch {auto_mkindex_parser::mkindex $file} msg] == 0} {
- append index $msg
- } else {
- set code $errorCode
- set info $errorInfo
- cd $oldDir
- error $msg $info $code
- }
+ foreach file [glob -- {*}$args] {
+ try {
+ append index [auto_mkindex_parser::mkindex $file]
+ } on error {msg opts} {
+ cd $oldDir
+ return -options $opts $msg
+ }
}
auto_mkindex_parser::cleanup
set fid [open "tclIndex" w]
- puts $fid $index nonewline
+ puts -nonewline $fid $index
close $fid
cd $oldDir
}
-# Original version of auto_mkindex that just searches the source
-# code for "proc" at the beginning of the line.
+# Original version of auto_mkindex that just searches the source code for
+# "proc" at the beginning of the line.
proc auto_mkindex_old {dir args} {
- global errorCode errorInfo
set oldDir [pwd]
cd $dir
set dir [pwd]
@@ -202,10 +238,10 @@ proc auto_mkindex_old {dir args} {
append index "# sets an element in the auto_index array, where the\n"
append index "# element name is the name of a command and the value is\n"
append index "# a script that loads the command.\n\n"
- if {$args == ""} {
+ if {![llength $args]} {
set args *.tcl
}
- foreach file [eval glob $args] {
+ foreach file [glob -- {*}$args] {
set f ""
set error [catch {
set f [open $file]
@@ -217,35 +253,32 @@ proc auto_mkindex_old {dir args} {
}
}
close $f
- } msg]
+ } msg opts]
if {$error} {
- set code $errorCode
- set info $errorInfo
catch {close $f}
cd $oldDir
- error $msg $info $code
+ return -options $opts $msg
}
}
set f ""
set error [catch {
set f [open tclIndex w]
- puts $f $index nonewline
+ puts -nonewline $f $index
close $f
cd $oldDir
- } msg]
+ } msg opts]
if {$error} {
- set code $errorCode
- set info $errorInfo
catch {close $f}
cd $oldDir
error $msg $info $code
+ return -options $opts $msg
}
}
# Create a safe interpreter that can be used to parse Tcl source files
-# generate a tclIndex file for autoloading. This interp contains
-# commands for things that need index entries. Each time a command
-# is executed, it writes an entry out to the index file.
+# generate a tclIndex file for autoloading. This interp contains commands for
+# things that need index entries. Each time a command is executed, it writes
+# an entry out to the index file.
namespace eval auto_mkindex_parser {
variable parser "" ;# parser used to build index
@@ -253,7 +286,10 @@ namespace eval auto_mkindex_parser {
variable scriptFile "" ;# name of file being processed
variable contextStack "" ;# stack of namespace scopes
variable imports "" ;# keeps track of all imported cmds
- variable initCommands "" ;# list of commands that create aliases
+ variable initCommands ;# list of commands that create aliases
+ if {![info exists initCommands]} {
+ set initCommands [list]
+ }
proc init {} {
variable parser
@@ -267,7 +303,14 @@ namespace eval auto_mkindex_parser {
$parser hide namespace
$parser hide eval
$parser hide puts
- $parser invokehidden namespace delete ::
+ foreach ns [$parser invokehidden namespace children ::] {
+ # MUST NOT DELETE "::tcl" OR BAD THINGS HAPPEN!
+ if {$ns eq "::tcl"} continue
+ $parser invokehidden namespace delete $ns
+ }
+ foreach cmd [$parser invokehidden info commands ::*] {
+ $parser invokehidden rename $cmd {}
+ }
$parser invokehidden proc unknown {args} {}
# We'll need access to the "namespace" command within the
@@ -294,12 +337,12 @@ namespace eval auto_mkindex_parser {
# auto_mkindex_parser::mkindex --
#
-# Used by the "auto_mkindex" command to create a "tclIndex" file for
-# the given Tcl source file. Executes the commands in the file, and
-# handles things like the "proc" command by adding an entry for the
-# index file. Returns a string that represents the index file.
+# Used by the "auto_mkindex" command to create a "tclIndex" file for the given
+# Tcl source file. Executes the commands in the file, and handles things like
+# the "proc" command by adding an entry for the index file. Returns a string
+# that represents the index file.
#
-# Arguments:
+# Arguments:
# file Name of Tcl source file to be indexed.
proc auto_mkindex_parser::mkindex {file} {
@@ -315,12 +358,14 @@ proc auto_mkindex_parser::mkindex {file} {
set contents [read $fid]
close $fid
- # There is one problem with sourcing files into the safe
- # interpreter: references like "$x" will fail since code is not
- # really being executed and variables do not really exist.
- # Be careful to escape all naked "$" before evaluating.
-
- regsub -all {([^\$])\$([^\$])} $contents {\1\\$\2} contents
+ # There is one problem with sourcing files into the safe interpreter:
+ # references like "$x" will fail since code is not really being executed
+ # and variables do not really exist. To avoid this, we replace all $ with
+ # \0 (literally, the null char) later, when getting proc names we will
+ # have to reverse this replacement, in case there were any $ in the proc
+ # name. This will cause a problem if somebody actually tries to have a \0
+ # in their proc name. Too bad for them.
+ set contents [string map [list \$ \0] $contents]
set index ""
set contextStack ""
@@ -336,10 +381,10 @@ proc auto_mkindex_parser::mkindex {file} {
# auto_mkindex_parser::hook command
#
-# Registers a Tcl command to evaluate when initializing the
-# slave interpreter used by the mkindex parser.
-# The command is evaluated in the master interpreter, and can
-# use the variable auto_mkindex_parser::parser to get to the slave
+# Registers a Tcl command to evaluate when initializing the slave interpreter
+# used by the mkindex parser. The command is evaluated in the master
+# interpreter, and can use the variable auto_mkindex_parser::parser to get to
+# the slave
proc auto_mkindex_parser::hook {cmd} {
variable initCommands
@@ -349,30 +394,30 @@ proc auto_mkindex_parser::hook {cmd} {
# auto_mkindex_parser::slavehook command
#
-# Registers a Tcl command to evaluate when initializing the
-# slave interpreter used by the mkindex parser.
-# The command is evaluated in the slave interpreter.
+# Registers a Tcl command to evaluate when initializing the slave interpreter
+# used by the mkindex parser. The command is evaluated in the slave
+# interpreter.
proc auto_mkindex_parser::slavehook {cmd} {
variable initCommands
- # The $parser variable is defined to be the name of the
- # slave interpreter when this command is used later.
+ # The $parser variable is defined to be the name of the slave interpreter
+ # when this command is used later.
lappend initCommands "\$parser eval [list $cmd]"
}
# auto_mkindex_parser::command --
#
-# Registers a new command with the "auto_mkindex_parser" interpreter
-# that parses Tcl files. These commands are fake versions of things
-# like the "proc" command. When you execute them, they simply write
-# out an entry to a "tclIndex" file for auto-loading.
+# Registers a new command with the "auto_mkindex_parser" interpreter that
+# parses Tcl files. These commands are fake versions of things like the
+# "proc" command. When you execute them, they simply write out an entry to a
+# "tclIndex" file for auto-loading.
#
-# This procedure allows extensions to register their own commands
-# with the auto_mkindex facility. For example, a package like
-# [incr Tcl] might register a "class" command so that class definitions
-# could be added to a "tclIndex" file for auto-loading.
+# This procedure allows extensions to register their own commands with the
+# auto_mkindex facility. For example, a package like [incr Tcl] might
+# register a "class" command so that class definitions could be added to a
+# "tclIndex" file for auto-loading.
#
# Arguments:
# name Name of command recognized in Tcl files.
@@ -385,8 +430,8 @@ proc auto_mkindex_parser::command {name arglist body} {
# auto_mkindex_parser::commandInit --
#
-# This does the actual work set up by auto_mkindex_parser::command
-# This is called when the interpreter used by the parser is created.
+# This does the actual work set up by auto_mkindex_parser::command. This is
+# called when the interpreter used by the parser is created.
#
# Arguments:
# name Name of command recognized in Tcl files.
@@ -398,34 +443,30 @@ proc auto_mkindex_parser::commandInit {name arglist body} {
set ns [namespace qualifiers $name]
set tail [namespace tail $name]
- if {$ns == ""} {
- set fakeName "[namespace current]::_%@fake_$tail"
+ if {$ns eq ""} {
+ set fakeName [namespace current]::_%@fake_$tail
} else {
- set fakeName "_%@fake_$name"
- regsub -all {::} $fakeName "_" fakeName
- set fakeName "[namespace current]::$fakeName"
+ set fakeName [namespace current]::[string map {:: _} _%@fake_$name]
}
proc $fakeName $arglist $body
- # YUK! Tcl won't let us alias fully qualified command names,
- # so we can't handle names like "::itcl::class". Instead,
- # we have to build procs with the fully qualified names, and
- # have the procs point to the aliases.
+ # YUK! Tcl won't let us alias fully qualified command names, so we can't
+ # handle names like "::itcl::class". Instead, we have to build procs with
+ # the fully qualified names, and have the procs point to the aliases.
- if {[regexp {::} $name]} {
+ if {[string match *::* $name]} {
set exportCmd [list _%@namespace export [namespace tail $name]]
$parser eval [list _%@namespace eval $ns $exportCmd]
-
- # The following proc definition does not work if you
- # want to tolerate space or something else diabolical
- # in the procedure name, (i.e., space in $alias)
- # The following does not work:
+
+ # The following proc definition does not work if you want to tolerate
+ # space or something else diabolical in the procedure name, (i.e.,
+ # space in $alias). The following does not work:
# "_%@eval {$alias} \$args"
- # because $alias gets concat'ed to $args.
- # The following does not work because $cmd is somehow undefined
+ # because $alias gets concat'ed to $args. The following does not work
+ # because $cmd is somehow undefined
# "set cmd {$alias} \; _%@eval {\$cmd} \$args"
- # A gold star to someone that can make test
- # autoMkindex-3.3 work properly
+ # A gold star to someone that can make test autoMkindex-3.3 work
+ # properly
set alias [namespace tail $fakeName]
$parser invokehidden proc $name {args} "_%@eval {$alias} \$args"
@@ -437,15 +478,14 @@ proc auto_mkindex_parser::commandInit {name arglist body} {
}
# auto_mkindex_parser::fullname --
-# Used by commands like "proc" within the auto_mkindex parser.
-# Returns the qualified namespace name for the "name" argument.
-# If the "name" does not start with "::", elements are added from
-# the current namespace stack to produce a qualified name. Then,
-# the name is examined to see whether or not it should really be
-# qualified. If the name has more than the leading "::", it is
-# returned as a fully qualified name. Otherwise, it is returned
-# as a simple name. That way, the Tcl autoloader will recognize
-# it properly.
+#
+# Used by commands like "proc" within the auto_mkindex parser. Returns the
+# qualified namespace name for the "name" argument. If the "name" does not
+# start with "::", elements are added from the current namespace stack to
+# produce a qualified name. Then, the name is examined to see whether or not
+# it should really be qualified. If the name has more than the leading "::",
+# it is returned as a fully qualified name. Otherwise, it is returned as a
+# simple name. That way, the Tcl autoloader will recognize it properly.
#
# Arguments:
# name - Name that is being added to index.
@@ -462,67 +502,96 @@ proc auto_mkindex_parser::fullname {name} {
}
}
- if {[namespace qualifiers $name] == ""} {
- return [namespace tail $name]
+ if {[namespace qualifiers $name] eq ""} {
+ set name [namespace tail $name]
} elseif {![string match ::* $name]} {
- return "::$name"
+ set name "::$name"
}
- return $name
+
+ # Earlier, mkindex replaced all $'s with \0. Now, we have to reverse that
+ # replacement.
+ return [string map [list \0 \$] $name]
+}
+
+# auto_mkindex_parser::indexEntry --
+#
+# Used by commands like "proc" within the auto_mkindex parser to add a
+# correctly-quoted entry to the index. This is shared code so it is done
+# *right*, in one place.
+#
+# Arguments:
+# name - Name that is being added to index.
+
+proc auto_mkindex_parser::indexEntry {name} {
+ variable index
+ variable scriptFile
+
+ # We convert all metacharacters to their backslashed form, and pre-split
+ # the file name that we know about (which will be a proper list, and so
+ # correctly quoted).
+
+ set name [string range [list \}[fullname $name]] 2 end]
+ set filenameParts [file split $scriptFile]
+
+ append index [format \
+ {set auto_index(%s) [list source [file join $dir %s]]%s} \
+ $name $filenameParts \n]
+ return
+}
+
+if {[llength $::auto_mkindex_parser::initCommands]} {
+ return
}
-# Register all of the procedures for the auto_mkindex parser that
-# will build the "tclIndex" file.
+# Register all of the procedures for the auto_mkindex parser that will build
+# the "tclIndex" file.
# AUTO MKINDEX: proc name arglist body
# Adds an entry to the auto index list for the given procedure name.
auto_mkindex_parser::command proc {name args} {
- variable index
- variable scriptFile
- append index [list set auto_index([fullname $name])] \
- " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+ indexEntry $name
}
-# Conditionally add support for Tcl byte code files. There are some
-# tricky details here. First, we need to get the tbcload library
-# initialized in the current interpreter. We cannot load tbcload into the
-# slave until we have done so because it needs access to the tcl_patchLevel
-# variable. Second, because the package index file may defer loading the
-# library until we invoke a command, we need to explicitly invoke auto_load
-# to force it to be loaded. This should be a noop if the package has
-# already been loaded
+# Conditionally add support for Tcl byte code files. There are some tricky
+# details here. First, we need to get the tbcload library initialized in the
+# current interpreter. We cannot load tbcload into the slave until we have
+# done so because it needs access to the tcl_patchLevel variable. Second,
+# because the package index file may defer loading the library until we invoke
+# a command, we need to explicitly invoke auto_load to force it to be loaded.
+# This should be a noop if the package has already been loaded
auto_mkindex_parser::hook {
- if {![catch {package require tbcload}]} {
- if {[info commands tbcload::bcproc] == ""} {
+ try {
+ package require tbcload
+ } on error {} {
+ # OK, don't have it so do nothing
+ } on ok {} {
+ if {[namespace which -command tbcload::bcproc] eq ""} {
auto_load tbcload::bcproc
}
load {} tbcload $auto_mkindex_parser::parser
# AUTO MKINDEX: tbcload::bcproc name arglist body
# Adds an entry to the auto index list for the given pre-compiled
- # procedure name.
+ # procedure name.
auto_mkindex_parser::commandInit tbcload::bcproc {name args} {
- variable index
- variable scriptFile
- append index [list set auto_index([fullname $name])] \
- " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+ indexEntry $name
}
}
}
# AUTO MKINDEX: namespace eval name command ?arg arg...?
-# Adds the namespace name onto the context stack and evaluates the
-# associated body of commands.
+# Adds the namespace name onto the context stack and evaluates the associated
+# body of commands.
#
# AUTO MKINDEX: namespace import ?-force? pattern ?pattern...?
-# Performs the "import" action in the parser interpreter. This is
-# important for any commands contained in a namespace that affect
-# the index. For example, a script may say "itcl::class ...",
-# or it may import "itcl::*" and then say "class ...". This
-# procedure does the import operation, but keeps track of imported
-# patterns so we can remove the imports later.
+# Performs the "import" action in the parser interpreter. This is important
+# for any commands contained in a namespace that affect the index. For
+# example, a script may say "itcl::class ...", or it may import "itcl::*" and
+# then say "class ...". This procedure does the import operation, but keeps
+# track of imported patterns so we can remove the imports later.
auto_mkindex_parser::command namespace {op args} {
switch -- $op {
@@ -541,12 +610,41 @@ auto_mkindex_parser::command namespace {op args} {
variable parser
variable imports
foreach pattern $args {
- if {$pattern != "-force"} {
+ if {$pattern ne "-force"} {
lappend imports $pattern
}
}
catch {$parser eval "_%@namespace import $args"}
}
+ ensemble {
+ variable parser
+ variable contextStack
+ if {[lindex $args 0] eq "create"} {
+ set name ::[join [lreverse $contextStack] ::]
+ catch {
+ set name [dict get [lrange $args 1 end] -command]
+ if {![string match ::* $name]} {
+ set name ::[join [lreverse $contextStack] ::]$name
+ }
+ regsub -all ::+ $name :: name
+ }
+ # create artifical proc to force an entry in the tclIndex
+ $parser eval [list ::proc $name {} {}]
+ }
+ }
+ }
+}
+
+# AUTO MKINDEX: oo::class create name ?definition?
+# Adds an entry to the auto index list for the given class name.
+auto_mkindex_parser::command oo::class {op name {body ""}} {
+ if {$op eq "create"} {
+ indexEntry $name
+ }
+}
+auto_mkindex_parser::command class {op name {body ""}} {
+ if {$op eq "create"} {
+ indexEntry $name
}
}
diff --git a/library/clock.tcl b/library/clock.tcl
new file mode 100644
index 0000000..1e652b4
--- /dev/null
+++ b/library/clock.tcl
@@ -0,0 +1,4573 @@
+#----------------------------------------------------------------------
+#
+# clock.tcl --
+#
+# This file implements the portions of the [clock] ensemble that are
+# coded in Tcl. Refer to the users' manual to see the description of
+# the [clock] command and its subcommands.
+#
+#
+#----------------------------------------------------------------------
+#
+# Copyright (c) 2004,2005,2006,2007 by Kevin B. Kenny
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+#----------------------------------------------------------------------
+
+# We must have message catalogs that support the root locale, and we need
+# access to the Registry on Windows systems.
+
+uplevel \#0 {
+ package require msgcat 1.4
+ if { $::tcl_platform(platform) eq {windows} } {
+ if { [catch { package require registry 1.1 }] } {
+ namespace eval ::tcl::clock [list variable NoRegistry {}]
+ }
+ }
+}
+
+# Put the library directory into the namespace for the ensemble so that the
+# library code can find message catalogs and time zone definition files.
+
+namespace eval ::tcl::clock \
+ [list variable LibDir [file dirname [info script]]]
+
+#----------------------------------------------------------------------
+#
+# clock --
+#
+# Manipulate times.
+#
+# The 'clock' command manipulates time. Refer to the user documentation for
+# the available subcommands and what they do.
+#
+#----------------------------------------------------------------------
+
+namespace eval ::tcl::clock {
+
+ # Export the subcommands
+
+ namespace export format
+ namespace export clicks
+ namespace export microseconds
+ namespace export milliseconds
+ namespace export scan
+ namespace export seconds
+ namespace export add
+
+ # Import the message catalog commands that we use.
+
+ namespace import ::msgcat::mcload
+ namespace import ::msgcat::mclocale
+
+}
+
+#----------------------------------------------------------------------
+#
+# ::tcl::clock::Initialize --
+#
+# Finish initializing the 'clock' subsystem
+#
+# Results:
+# None.
+#
+# Side effects:
+# Namespace variable in the 'clock' subsystem are initialized.
+#
+# The '::tcl::clock::Initialize' procedure initializes the namespace variables
+# and root locale message catalog for the 'clock' subsystem. It is broken
+# into a procedure rather than simply evaluated as a script so that it will be
+# able to use local variables, avoiding the dangers of 'creative writing' as
+# in Bug 1185933.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::Initialize {} {
+
+ rename ::tcl::clock::Initialize {}
+
+ variable LibDir
+
+ # Define the Greenwich time zone
+
+ proc InitTZData {} {
+ variable TZData
+ array unset TZData
+ set TZData(:Etc/GMT) {
+ {-9223372036854775808 0 0 GMT}
+ }
+ set TZData(:GMT) $TZData(:Etc/GMT)
+ set TZData(:Etc/UTC) {
+ {-9223372036854775808 0 0 UTC}
+ }
+ set TZData(:UTC) $TZData(:Etc/UTC)
+ set TZData(:localtime) {}
+ }
+ InitTZData
+
+ # Define the message catalog for the root locale.
+
+ ::msgcat::mcmset {} {
+ AM {am}
+ BCE {B.C.E.}
+ CE {C.E.}
+ DATE_FORMAT {%m/%d/%Y}
+ DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
+ DAYS_OF_WEEK_ABBREV {
+ Sun Mon Tue Wed Thu Fri Sat
+ }
+ DAYS_OF_WEEK_FULL {
+ Sunday Monday Tuesday Wednesday Thursday Friday Saturday
+ }
+ GREGORIAN_CHANGE_DATE 2299161
+ LOCALE_DATE_FORMAT {%m/%d/%Y}
+ LOCALE_DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
+ LOCALE_ERAS {}
+ LOCALE_NUMERALS {
+ 00 01 02 03 04 05 06 07 08 09
+ 10 11 12 13 14 15 16 17 18 19
+ 20 21 22 23 24 25 26 27 28 29
+ 30 31 32 33 34 35 36 37 38 39
+ 40 41 42 43 44 45 46 47 48 49
+ 50 51 52 53 54 55 56 57 58 59
+ 60 61 62 63 64 65 66 67 68 69
+ 70 71 72 73 74 75 76 77 78 79
+ 80 81 82 83 84 85 86 87 88 89
+ 90 91 92 93 94 95 96 97 98 99
+ }
+ LOCALE_TIME_FORMAT {%H:%M:%S}
+ LOCALE_YEAR_FORMAT {%EC%Ey}
+ MONTHS_ABBREV {
+ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
+ }
+ MONTHS_FULL {
+ January February March
+ April May June
+ July August September
+ October November December
+ }
+ PM {pm}
+ TIME_FORMAT {%H:%M:%S}
+ TIME_FORMAT_12 {%I:%M:%S %P}
+ TIME_FORMAT_24 {%H:%M}
+ TIME_FORMAT_24_SECS {%H:%M:%S}
+ }
+
+ # Define a few Gregorian change dates for other locales. In most cases
+ # the change date follows a language, because a nation's colonies changed
+ # at the same time as the nation itself. In many cases, different
+ # national boundaries existed; the dominating rule is to follow the
+ # nation's capital.
+
+ # Italy, Spain, Portugal, Poland
+
+ ::msgcat::mcset it GREGORIAN_CHANGE_DATE 2299161
+ ::msgcat::mcset es GREGORIAN_CHANGE_DATE 2299161
+ ::msgcat::mcset pt GREGORIAN_CHANGE_DATE 2299161
+ ::msgcat::mcset pl GREGORIAN_CHANGE_DATE 2299161
+
+ # France, Austria
+
+ ::msgcat::mcset fr GREGORIAN_CHANGE_DATE 2299227
+
+ # For Belgium, we follow Southern Netherlands; Liege Diocese changed
+ # several weeks later.
+
+ ::msgcat::mcset fr_BE GREGORIAN_CHANGE_DATE 2299238
+ ::msgcat::mcset nl_BE GREGORIAN_CHANGE_DATE 2299238
+
+ # Austria
+
+ ::msgcat::mcset de_AT GREGORIAN_CHANGE_DATE 2299527
+
+ # Hungary
+
+ ::msgcat::mcset hu GREGORIAN_CHANGE_DATE 2301004
+
+ # Germany, Norway, Denmark (Catholic Germany changed earlier)
+
+ ::msgcat::mcset de_DE GREGORIAN_CHANGE_DATE 2342032
+ ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032
+ ::msgcat::mcset nn GREGORIAN_CHANGE_DATE 2342032
+ ::msgcat::mcset no GREGORIAN_CHANGE_DATE 2342032
+ ::msgcat::mcset da GREGORIAN_CHANGE_DATE 2342032
+
+ # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed at
+ # various times)
+
+ ::msgcat::mcset nl GREGORIAN_CHANGE_DATE 2342165
+
+ # Protestant Switzerland (Catholic cantons changed earlier)
+
+ ::msgcat::mcset fr_CH GREGORIAN_CHANGE_DATE 2361342
+ ::msgcat::mcset it_CH GREGORIAN_CHANGE_DATE 2361342
+ ::msgcat::mcset de_CH GREGORIAN_CHANGE_DATE 2361342
+
+ # English speaking countries
+
+ ::msgcat::mcset en GREGORIAN_CHANGE_DATE 2361222
+
+ # Sweden (had several changes onto and off of the Gregorian calendar)
+
+ ::msgcat::mcset sv GREGORIAN_CHANGE_DATE 2361390
+
+ # Russia
+
+ ::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639
+
+ # Romania (Transylvania changed earler - perhaps de_RO should show the
+ # earlier date?)
+
+ ::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063
+
+ # Greece
+
+ ::msgcat::mcset el GREGORIAN_CHANGE_DATE 2423480
+
+ #------------------------------------------------------------------
+ #
+ # CONSTANTS
+ #
+ #------------------------------------------------------------------
+
+ # Paths at which binary time zone data for the Olson libraries are known
+ # to reside on various operating systems
+
+ variable ZoneinfoPaths {}
+ foreach path {
+ /usr/share/zoneinfo
+ /usr/share/lib/zoneinfo
+ /usr/lib/zoneinfo
+ /usr/local/etc/zoneinfo
+ } {
+ if { [file isdirectory $path] } {
+ lappend ZoneinfoPaths $path
+ }
+ }
+
+ # Define the directories for time zone data and message catalogs.
+
+ variable DataDir [file join $LibDir tzdata]
+ variable MsgDir [file join $LibDir msgs]
+
+ # Number of days in the months, in common years and leap years.
+
+ variable DaysInRomanMonthInCommonYear \
+ { 31 28 31 30 31 30 31 31 30 31 30 31 }
+ variable DaysInRomanMonthInLeapYear \
+ { 31 29 31 30 31 30 31 31 30 31 30 31 }
+ variable DaysInPriorMonthsInCommonYear [list 0]
+ variable DaysInPriorMonthsInLeapYear [list 0]
+ set i 0
+ foreach j $DaysInRomanMonthInCommonYear {
+ lappend DaysInPriorMonthsInCommonYear [incr i $j]
+ }
+ set i 0
+ foreach j $DaysInRomanMonthInLeapYear {
+ lappend DaysInPriorMonthsInLeapYear [incr i $j]
+ }
+
+ # Another epoch (Hi, Jeff!)
+
+ variable Roddenberry 1946
+
+ # Integer ranges
+
+ variable MINWIDE -9223372036854775808
+ variable MAXWIDE 9223372036854775807
+
+ # Day before Leap Day
+
+ variable FEB_28 58
+
+ # Translation table to map Windows TZI onto cities, so that the Olson
+ # rules can apply. In some cases the mapping is ambiguous, so it's wise
+ # to specify $::env(TCL_TZ) rather than simply depending on the system
+ # time zone.
+
+ # The keys are long lists of values obtained from the time zone
+ # information in the Registry. In order, the list elements are:
+ # Bias StandardBias DaylightBias
+ # StandardDate.wYear StandardDate.wMonth StandardDate.wDayOfWeek
+ # StandardDate.wDay StandardDate.wHour StandardDate.wMinute
+ # StandardDate.wSecond StandardDate.wMilliseconds
+ # DaylightDate.wYear DaylightDate.wMonth DaylightDate.wDayOfWeek
+ # DaylightDate.wDay DaylightDate.wHour DaylightDate.wMinute
+ # DaylightDate.wSecond DaylightDate.wMilliseconds
+ # The values are the names of time zones where those rules apply. There
+ # is considerable ambiguity in certain zones; an attempt has been made to
+ # make a reasonable guess, but this table needs to be taken with a grain
+ # of salt.
+
+ variable WinZoneInfo [dict create {*}{
+ {-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Kwajalein
+ {-39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Midway
+ {-36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Honolulu
+ {-32400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Anchorage
+ {-28800 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Los_Angeles
+ {-28800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Tijuana
+ {-25200 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Denver
+ {-25200 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Chihuahua
+ {-25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Phoenix
+ {-21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Regina
+ {-21600 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Chicago
+ {-21600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Mexico_City
+ {-18000 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/New_York
+ {-18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Indianapolis
+ {-14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Caracas
+ {-14400 0 3600 0 3 6 2 23 59 59 999 0 10 6 2 23 59 59 999}
+ :America/Santiago
+ {-14400 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Manaus
+ {-14400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Halifax
+ {-12600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/St_Johns
+ {-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
+ {-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
+ {-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires
+ {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
+ {-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
+ {-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha
+ {-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores
+ {-3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Atlantic/Cape_Verde
+ {0 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :UTC
+ {0 0 3600 0 10 0 5 2 0 0 0 0 3 0 5 1 0 0 0} :Europe/London
+ {3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Kinshasa
+ {3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :CET
+ {7200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Harare
+ {7200 0 3600 0 9 4 5 23 59 59 0 0 4 4 5 23 59 59 0}
+ :Africa/Cairo
+ {7200 0 3600 0 10 0 5 4 0 0 0 0 3 0 5 3 0 0 0} :Europe/Helsinki
+ {7200 0 3600 0 9 0 3 2 0 0 0 0 3 5 5 2 0 0 0} :Asia/Jerusalem
+ {7200 0 3600 0 9 0 5 1 0 0 0 0 3 0 5 0 0 0 0} :Europe/Bucharest
+ {7200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Athens
+ {7200 0 3600 0 9 5 5 1 0 0 0 0 3 4 5 0 0 0 0} :Asia/Amman
+ {7200 0 3600 0 10 6 5 23 59 59 999 0 3 0 5 0 0 0 0}
+ :Asia/Beirut
+ {7200 0 -3600 0 4 0 1 2 0 0 0 0 9 0 1 2 0 0 0} :Africa/Windhoek
+ {10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Riyadh
+ {10800 0 3600 0 10 0 1 4 0 0 0 0 4 0 1 3 0 0 0} :Asia/Baghdad
+ {10800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Moscow
+ {12600 0 3600 0 9 2 4 2 0 0 0 0 3 0 1 2 0 0 0} :Asia/Tehran
+ {14400 0 3600 0 10 0 5 5 0 0 0 0 3 0 5 4 0 0 0} :Asia/Baku
+ {14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Muscat
+ {14400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Tbilisi
+ {16200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Kabul
+ {18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Karachi
+ {18000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Yekaterinburg
+ {19800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Calcutta
+ {20700 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Katmandu
+ {21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Dhaka
+ {21600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Novosibirsk
+ {23400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Rangoon
+ {25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Bangkok
+ {25200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Krasnoyarsk
+ {28800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Chongqing
+ {28800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Irkutsk
+ {32400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Tokyo
+ {32400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Yakutsk
+ {34200 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0} :Australia/Adelaide
+ {34200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Australia/Darwin
+ {36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Australia/Brisbane
+ {36000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Vladivostok
+ {36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 1 2 0 0 0} :Australia/Hobart
+ {36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0} :Australia/Sydney
+ {39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Noumea
+ {43200 0 3600 0 3 0 3 3 0 0 0 0 10 0 1 2 0 0 0} :Pacific/Auckland
+ {43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Fiji
+ {46800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Tongatapu
+ }]
+
+ # Groups of fields that specify the date, priorities, and code bursts that
+ # determine Julian Day Number given those groups. The code in [clock
+ # scan] will choose the highest priority (lowest numbered) set of fields
+ # that determines the date.
+
+ variable DateParseActions {
+
+ { seconds } 0 {}
+
+ { julianDay } 1 {}
+
+ { era century yearOfCentury month dayOfMonth } 2 {
+ dict set date year [expr { 100 * [dict get $date century]
+ + [dict get $date yearOfCentury] }]
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+ $changeover]
+ }
+ { era century yearOfCentury dayOfYear } 2 {
+ dict set date year [expr { 100 * [dict get $date century]
+ + [dict get $date yearOfCentury] }]
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
+ $changeover]
+ }
+
+ { century yearOfCentury month dayOfMonth } 3 {
+ dict set date era CE
+ dict set date year [expr { 100 * [dict get $date century]
+ + [dict get $date yearOfCentury] }]
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+ $changeover]
+ }
+ { century yearOfCentury dayOfYear } 3 {
+ dict set date era CE
+ dict set date year [expr { 100 * [dict get $date century]
+ + [dict get $date yearOfCentury] }]
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
+ $changeover]
+ }
+ { iso8601Century iso8601YearOfCentury iso8601Week dayOfWeek } 3 {
+ dict set date era CE
+ dict set date iso8601Year \
+ [expr { 100 * [dict get $date iso8601Century]
+ + [dict get $date iso8601YearOfCentury] }]
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+ $changeover]
+ }
+
+ { yearOfCentury month dayOfMonth } 4 {
+ set date [InterpretTwoDigitYear $date[set date {}] $baseTime]
+ dict set date era CE
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+ $changeover]
+ }
+ { yearOfCentury dayOfYear } 4 {
+ set date [InterpretTwoDigitYear $date[set date {}] $baseTime]
+ dict set date era CE
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
+ $changeover]
+ }
+ { iso8601YearOfCentury iso8601Week dayOfWeek } 4 {
+ set date [InterpretTwoDigitYear \
+ $date[set date {}] $baseTime \
+ iso8601YearOfCentury iso8601Year]
+ dict set date era CE
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+ $changeover]
+ }
+
+ { month dayOfMonth } 5 {
+ set date [AssignBaseYear $date[set date {}] \
+ $baseTime $timeZone $changeover]
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+ $changeover]
+ }
+ { dayOfYear } 5 {
+ set date [AssignBaseYear $date[set date {}] \
+ $baseTime $timeZone $changeover]
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
+ $changeover]
+ }
+ { iso8601Week dayOfWeek } 5 {
+ set date [AssignBaseIso8601Year $date[set date {}] \
+ $baseTime $timeZone $changeover]
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+ $changeover]
+ }
+
+ { dayOfMonth } 6 {
+ set date [AssignBaseMonth $date[set date {}] \
+ $baseTime $timeZone $changeover]
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+ $changeover]
+ }
+
+ { dayOfWeek } 7 {
+ set date [AssignBaseWeek $date[set date {}] \
+ $baseTime $timeZone $changeover]
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+ $changeover]
+ }
+
+ {} 8 {
+ set date [AssignBaseJulianDay $date[set date {}] \
+ $baseTime $timeZone $changeover]
+ }
+ }
+
+ # Groups of fields that specify time of day, priorities, and code that
+ # processes them
+
+ variable TimeParseActions {
+
+ seconds 1 {}
+
+ { hourAMPM minute second amPmIndicator } 2 {
+ dict set date secondOfDay [InterpretHMSP $date]
+ }
+ { hour minute second } 2 {
+ dict set date secondOfDay [InterpretHMS $date]
+ }
+
+ { hourAMPM minute amPmIndicator } 3 {
+ dict set date second 0
+ dict set date secondOfDay [InterpretHMSP $date]
+ }
+ { hour minute } 3 {
+ dict set date second 0
+ dict set date secondOfDay [InterpretHMS $date]
+ }
+
+ { hourAMPM amPmIndicator } 4 {
+ dict set date minute 0
+ dict set date second 0
+ dict set date secondOfDay [InterpretHMSP $date]
+ }
+ { hour } 4 {
+ dict set date minute 0
+ dict set date second 0
+ dict set date secondOfDay [InterpretHMS $date]
+ }
+
+ { } 5 {
+ dict set date secondOfDay 0
+ }
+ }
+
+ # Legacy time zones, used primarily for parsing RFC822 dates.
+
+ variable LegacyTimeZone [dict create \
+ gmt +0000 \
+ ut +0000 \
+ utc +0000 \
+ bst +0100 \
+ wet +0000 \
+ wat -0100 \
+ at -0200 \
+ nft -0330 \
+ nst -0330 \
+ ndt -0230 \
+ ast -0400 \
+ adt -0300 \
+ est -0500 \
+ edt -0400 \
+ cst -0600 \
+ cdt -0500 \
+ mst -0700 \
+ mdt -0600 \
+ pst -0800 \
+ pdt -0700 \
+ yst -0900 \
+ ydt -0800 \
+ hst -1000 \
+ hdt -0900 \
+ cat -1000 \
+ ahst -1000 \
+ nt -1100 \
+ idlw -1200 \
+ cet +0100 \
+ cest +0200 \
+ met +0100 \
+ mewt +0100 \
+ mest +0200 \
+ swt +0100 \
+ sst +0200 \
+ fwt +0100 \
+ fst +0200 \
+ eet +0200 \
+ eest +0300 \
+ bt +0300 \
+ it +0330 \
+ zp4 +0400 \
+ zp5 +0500 \
+ ist +0530 \
+ zp6 +0600 \
+ wast +0700 \
+ wadt +0800 \
+ jt +0730 \
+ cct +0800 \
+ jst +0900 \
+ kst +0900 \
+ cast +0930 \
+ jdt +1000 \
+ kdt +1000 \
+ cadt +1030 \
+ east +1000 \
+ eadt +1030 \
+ gst +1000 \
+ nzt +1200 \
+ nzst +1200 \
+ nzdt +1300 \
+ idle +1200 \
+ a +0100 \
+ b +0200 \
+ c +0300 \
+ d +0400 \
+ e +0500 \
+ f +0600 \
+ g +0700 \
+ h +0800 \
+ i +0900 \
+ k +1000 \
+ l +1100 \
+ m +1200 \
+ n -0100 \
+ o -0200 \
+ p -0300 \
+ q -0400 \
+ r -0500 \
+ s -0600 \
+ t -0700 \
+ u -0800 \
+ v -0900 \
+ w -1000 \
+ x -1100 \
+ y -1200 \
+ z +0000 \
+ ]
+
+ # Caches
+
+ variable LocaleNumeralCache {}; # Dictionary whose keys are locale
+ # names and whose values are pairs
+ # comprising regexes matching numerals
+ # in the given locales and dictionaries
+ # mapping the numerals to their numeric
+ # values.
+ variable McLoaded {}; # Dictionary whose keys are locales
+ # in which [mcload] has been executed
+ # and whose values are second-level
+ # dictionaries indexed by message
+ # name and giving message text.
+ # variable CachedSystemTimeZone; # If 'CachedSystemTimeZone' exists,
+ # it contains the value of the
+ # system time zone, as determined from
+ # the environment.
+ variable TimeZoneBad {}; # Dictionary whose keys are time zone
+ # names and whose values are 1 if
+ # the time zone is unknown and 0
+ # if it is known.
+ variable TZData; # Array whose keys are time zone names
+ # and whose values are lists of quads
+ # comprising start time, UTC offset,
+ # Daylight Saving Time indicator, and
+ # time zone abbreviation.
+ variable FormatProc; # Array mapping format group
+ # and locale to the name of a procedure
+ # that renders the given format
+}
+::tcl::clock::Initialize
+
+#----------------------------------------------------------------------
+#
+# clock format --
+#
+# Formats a count of seconds since the Posix Epoch as a time of day.
+#
+# The 'clock format' command formats times of day for output. Refer to the
+# user documentation to see what it does.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::format { args } {
+ variable FormatProc
+ variable TZData
+
+ lassign [ParseFormatArgs {*}$args] format locale timezone
+ set locale [string tolower $locale]
+ set clockval [lindex $args 0]
+
+ # Get the data for time changes in the given zone
+
+ if {$timezone eq ""} {
+ set timezone [GetSystemTimeZone]
+ }
+ if {![info exists TZData($timezone)]} {
+ if {[catch {SetupTimeZone $timezone} retval opts]} {
+ dict unset opts -errorinfo
+ return -options $opts $retval
+ }
+ }
+
+ # Build a procedure to format the result. Cache the built procedure's name
+ # in the 'FormatProc' array to avoid losing its internal representation,
+ # which contains the name resolution.
+
+ set procName formatproc'$format'$locale
+ set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
+ if {[info exists FormatProc($procName)]} {
+ set procName $FormatProc($procName)
+ } else {
+ set FormatProc($procName) \
+ [ParseClockFormatFormat $procName $format $locale]
+ }
+
+ return [$procName $clockval $timezone]
+}
+
+#----------------------------------------------------------------------
+#
+# ParseClockFormatFormat --
+#
+# Builds and caches a procedure that formats a time value.
+#
+# Parameters:
+# format -- Format string to use
+# locale -- Locale in which the format string is to be interpreted
+#
+# Results:
+# Returns the name of the newly-built procedure.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParseClockFormatFormat {procName format locale} {
+ if {[namespace which $procName] ne {}} {
+ return $procName
+ }
+
+ # Map away the locale-dependent composite format groups
+
+ EnterLocale $locale oldLocale
+
+ # Change locale if a fresh locale has been given on the command line.
+
+ try {
+ return [ParseClockFormatFormat2 $format $locale $procName]
+ } trap CLOCK {result opts} {
+ dict unset opts -errorinfo
+ return -options $opts $result
+ } finally {
+ # Restore the locale
+
+ if { [info exists oldLocale] } {
+ mclocale $oldLocale
+ }
+ }
+}
+
+proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
+ set didLocaleEra 0
+ set didLocaleNumerals 0
+ set preFormatCode \
+ [string map [list @GREGORIAN_CHANGE_DATE@ \
+ [mc GREGORIAN_CHANGE_DATE]] \
+ {
+ variable TZData
+ set date [GetDateFields $clockval \
+ $TZData($timezone) \
+ @GREGORIAN_CHANGE_DATE@]
+ }]
+ set formatString {}
+ set substituents {}
+ set state {}
+
+ set format [LocalizeFormat $locale $format]
+
+ foreach char [split $format {}] {
+ switch -exact -- $state {
+ {} {
+ if { [string equal % $char] } {
+ set state percent
+ } else {
+ append formatString $char
+ }
+ }
+ percent { # Character following a '%' character
+ set state {}
+ switch -exact -- $char {
+ % { # A literal character, '%'
+ append formatString %%
+ }
+ a { # Day of week, abbreviated
+ append formatString %s
+ append substituents \
+ [string map \
+ [list @DAYS_OF_WEEK_ABBREV@ \
+ [list [mc DAYS_OF_WEEK_ABBREV]]] \
+ { [lindex @DAYS_OF_WEEK_ABBREV@ \
+ [expr {[dict get $date dayOfWeek] \
+ % 7}]]}]
+ }
+ A { # Day of week, spelt out.
+ append formatString %s
+ append substituents \
+ [string map \
+ [list @DAYS_OF_WEEK_FULL@ \
+ [list [mc DAYS_OF_WEEK_FULL]]] \
+ { [lindex @DAYS_OF_WEEK_FULL@ \
+ [expr {[dict get $date dayOfWeek] \
+ % 7}]]}]
+ }
+ b - h { # Name of month, abbreviated.
+ append formatString %s
+ append substituents \
+ [string map \
+ [list @MONTHS_ABBREV@ \
+ [list [mc MONTHS_ABBREV]]] \
+ { [lindex @MONTHS_ABBREV@ \
+ [expr {[dict get $date month]-1}]]}]
+ }
+ B { # Name of month, spelt out
+ append formatString %s
+ append substituents \
+ [string map \
+ [list @MONTHS_FULL@ \
+ [list [mc MONTHS_FULL]]] \
+ { [lindex @MONTHS_FULL@ \
+ [expr {[dict get $date month]-1}]]}]
+ }
+ C { # Century number
+ append formatString %02d
+ append substituents \
+ { [expr {[dict get $date year] / 100}]}
+ }
+ d { # Day of month, with leading zero
+ append formatString %02d
+ append substituents { [dict get $date dayOfMonth]}
+ }
+ e { # Day of month, without leading zero
+ append formatString %2d
+ append substituents { [dict get $date dayOfMonth]}
+ }
+ E { # Format group in a locale-dependent
+ # alternative era
+ set state percentE
+ if {!$didLocaleEra} {
+ append preFormatCode \
+ [string map \
+ [list @LOCALE_ERAS@ \
+ [list [mc LOCALE_ERAS]]] \
+ {
+ set date [GetLocaleEra \
+ $date[set date {}] \
+ @LOCALE_ERAS@]}] \n
+ set didLocaleEra 1
+ }
+ if {!$didLocaleNumerals} {
+ append preFormatCode \
+ [list set localeNumerals \
+ [mc LOCALE_NUMERALS]] \n
+ set didLocaleNumerals 1
+ }
+ }
+ g { # Two-digit year relative to ISO8601
+ # week number
+ append formatString %02d
+ append substituents \
+ { [expr { [dict get $date iso8601Year] % 100 }]}
+ }
+ G { # Four-digit year relative to ISO8601
+ # week number
+ append formatString %02d
+ append substituents { [dict get $date iso8601Year]}
+ }
+ H { # Hour in the 24-hour day, leading zero
+ append formatString %02d
+ append substituents \
+ { [expr { [dict get $date localSeconds] \
+ / 3600 % 24}]}
+ }
+ I { # Hour AM/PM, with leading zero
+ append formatString %02d
+ append substituents \
+ { [expr { ( ( ( [dict get $date localSeconds] \
+ % 86400 ) \
+ + 86400 \
+ - 3600 ) \
+ / 3600 ) \
+ % 12 + 1 }] }
+ }
+ j { # Day of year (001-366)
+ append formatString %03d
+ append substituents { [dict get $date dayOfYear]}
+ }
+ J { # Julian Day Number
+ append formatString %07ld
+ append substituents { [dict get $date julianDay]}
+ }
+ k { # Hour (0-23), no leading zero
+ append formatString %2d
+ append substituents \
+ { [expr { [dict get $date localSeconds]
+ / 3600
+ % 24 }]}
+ }
+ l { # Hour (12-11), no leading zero
+ append formatString %2d
+ append substituents \
+ { [expr { ( ( ( [dict get $date localSeconds]
+ % 86400 )
+ + 86400
+ - 3600 )
+ / 3600 )
+ % 12 + 1 }]}
+ }
+ m { # Month number, leading zero
+ append formatString %02d
+ append substituents { [dict get $date month]}
+ }
+ M { # Minute of the hour, leading zero
+ append formatString %02d
+ append substituents \
+ { [expr { [dict get $date localSeconds]
+ / 60
+ % 60 }]}
+ }
+ n { # A literal newline
+ append formatString \n
+ }
+ N { # Month number, no leading zero
+ append formatString %2d
+ append substituents { [dict get $date month]}
+ }
+ O { # A format group in the locale's
+ # alternative numerals
+ set state percentO
+ if {!$didLocaleNumerals} {
+ append preFormatCode \
+ [list set localeNumerals \
+ [mc LOCALE_NUMERALS]] \n
+ set didLocaleNumerals 1
+ }
+ }
+ p { # Localized 'AM' or 'PM' indicator
+ # converted to uppercase
+ append formatString %s
+ append preFormatCode \
+ [list set AM [string toupper [mc AM]]] \n \
+ [list set PM [string toupper [mc PM]]] \n
+ append substituents \
+ { [expr {(([dict get $date localSeconds]
+ % 86400) < 43200) ?
+ $AM : $PM}]}
+ }
+ P { # Localized 'AM' or 'PM' indicator
+ append formatString %s
+ append preFormatCode \
+ [list set am [mc AM]] \n \
+ [list set pm [mc PM]] \n
+ append substituents \
+ { [expr {(([dict get $date localSeconds]
+ % 86400) < 43200) ?
+ $am : $pm}]}
+
+ }
+ Q { # Hi, Jeff!
+ append formatString %s
+ append substituents { [FormatStarDate $date]}
+ }
+ s { # Seconds from the Posix Epoch
+ append formatString %s
+ append substituents { [dict get $date seconds]}
+ }
+ S { # Second of the minute, with
+ # leading zero
+ append formatString %02d
+ append substituents \
+ { [expr { [dict get $date localSeconds]
+ % 60 }]}
+ }
+ t { # A literal tab character
+ append formatString \t
+ }
+ u { # Day of the week (1-Monday, 7-Sunday)
+ append formatString %1d
+ append substituents { [dict get $date dayOfWeek]}
+ }
+ U { # Week of the year (00-53). The
+ # first Sunday of the year is the
+ # first day of week 01
+ append formatString %02d
+ append preFormatCode {
+ set dow [dict get $date dayOfWeek]
+ if { $dow == 7 } {
+ set dow 0
+ }
+ incr dow
+ set UweekNumber \
+ [expr { ( [dict get $date dayOfYear]
+ - $dow + 7 )
+ / 7 }]
+ }
+ append substituents { $UweekNumber}
+ }
+ V { # The ISO8601 week number
+ append formatString %02d
+ append substituents { [dict get $date iso8601Week]}
+ }
+ w { # Day of the week (0-Sunday,
+ # 6-Saturday)
+ append formatString %1d
+ append substituents \
+ { [expr { [dict get $date dayOfWeek] % 7 }]}
+ }
+ W { # Week of the year (00-53). The first
+ # Monday of the year is the first day
+ # of week 01.
+ append preFormatCode {
+ set WweekNumber \
+ [expr { ( [dict get $date dayOfYear]
+ - [dict get $date dayOfWeek]
+ + 7 )
+ / 7 }]
+ }
+ append formatString %02d
+ append substituents { $WweekNumber}
+ }
+ y { # The two-digit year of the century
+ append formatString %02d
+ append substituents \
+ { [expr { [dict get $date year] % 100 }]}
+ }
+ Y { # The four-digit year
+ append formatString %04d
+ append substituents { [dict get $date year]}
+ }
+ z { # The time zone as hours and minutes
+ # east (+) or west (-) of Greenwich
+ append formatString %s
+ append substituents { [FormatNumericTimeZone \
+ [dict get $date tzOffset]]}
+ }
+ Z { # The name of the time zone
+ append formatString %s
+ append substituents { [dict get $date tzName]}
+ }
+ % { # A literal percent character
+ append formatString %%
+ }
+ default { # An unknown escape sequence
+ append formatString %% $char
+ }
+ }
+ }
+ percentE { # Character following %E
+ set state {}
+ switch -exact -- $char {
+ E {
+ append formatString %s
+ append substituents { } \
+ [string map \
+ [list @BCE@ [list [mc BCE]] \
+ @CE@ [list [mc CE]]] \
+ {[dict get {BCE @BCE@ CE @CE@} \
+ [dict get $date era]]}]
+ }
+ C { # Locale-dependent era
+ append formatString %s
+ append substituents { [dict get $date localeEra]}
+ }
+ y { # Locale-dependent year of the era
+ append preFormatCode {
+ set y [dict get $date localeYear]
+ if { $y >= 0 && $y < 100 } {
+ set Eyear [lindex $localeNumerals $y]
+ } else {
+ set Eyear $y
+ }
+ }
+ append formatString %s
+ append substituents { $Eyear}
+ }
+ default { # Unknown %E format group
+ append formatString %%E $char
+ }
+ }
+ }
+ percentO { # Character following %O
+ set state {}
+ switch -exact -- $char {
+ d - e { # Day of the month in alternative
+ # numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [dict get $date dayOfMonth]]}
+ }
+ H - k { # Hour of the day in alternative
+ # numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [expr { [dict get $date localSeconds]
+ / 3600
+ % 24 }]]}
+ }
+ I - l { # Hour (12-11) AM/PM in alternative
+ # numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [expr { ( ( ( [dict get $date localSeconds]
+ % 86400 )
+ + 86400
+ - 3600 )
+ / 3600 )
+ % 12 + 1 }]]}
+ }
+ m { # Month number in alternative numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals [dict get $date month]]}
+ }
+ M { # Minute of the hour in alternative
+ # numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [expr { [dict get $date localSeconds]
+ / 60
+ % 60 }]]}
+ }
+ S { # Second of the minute in alternative
+ # numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [expr { [dict get $date localSeconds]
+ % 60 }]]}
+ }
+ u { # Day of the week (Monday=1,Sunday=7)
+ # in alternative numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [dict get $date dayOfWeek]]}
+ }
+ w { # Day of the week (Sunday=0,Saturday=6)
+ # in alternative numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [expr { [dict get $date dayOfWeek] % 7 }]]}
+ }
+ y { # Year of the century in alternative
+ # numerals
+ append formatString %s
+ append substituents \
+ { [lindex $localeNumerals \
+ [expr { [dict get $date year] % 100 }]]}
+ }
+ default { # Unknown format group
+ append formatString %%O $char
+ }
+ }
+ }
+ }
+ }
+
+ # Clean up any improperly terminated groups
+
+ switch -exact -- $state {
+ percent {
+ append formatString %%
+ }
+ percentE {
+ append retval %%E
+ }
+ percentO {
+ append retval %%O
+ }
+ }
+
+ proc $procName {clockval timezone} "
+ $preFormatCode
+ return \[::format [list $formatString] $substituents\]
+ "
+
+ # puts [list $procName [info args $procName] [info body $procName]]
+
+ return $procName
+}
+
+#----------------------------------------------------------------------
+#
+# clock scan --
+#
+# Inputs a count of seconds since the Posix Epoch as a time of day.
+#
+# The 'clock format' command scans times of day on input. Refer to the user
+# documentation to see what it does.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::scan { args } {
+ set format {}
+
+ # Check the count of args
+
+ if { [llength $args] < 1 || [llength $args] % 2 != 1 } {
+ set cmdName "clock scan"
+ return -code error \
+ -errorcode [list CLOCK wrongNumArgs] \
+ "wrong \# args: should be\
+ \"$cmdName string\
+ ?-base seconds?\
+ ?-format string? ?-gmt boolean?\
+ ?-locale LOCALE? ?-timezone ZONE?\""
+ }
+
+ # Set defaults
+
+ set base [clock seconds]
+ set string [lindex $args 0]
+ set format {}
+ set gmt 0
+ set locale c
+ set timezone [GetSystemTimeZone]
+
+ # Pick up command line options.
+
+ foreach { flag value } [lreplace $args 0 0] {
+ set saw($flag) {}
+ switch -exact -- $flag {
+ -b - -ba - -bas - -base {
+ set base $value
+ }
+ -f - -fo - -for - -form - -forma - -format {
+ set format $value
+ }
+ -g - -gm - -gmt {
+ set gmt $value
+ }
+ -l - -lo - -loc - -loca - -local - -locale {
+ set locale [string tolower $value]
+ }
+ -t - -ti - -tim - -time - -timez - -timezo - -timezon - -timezone {
+ set timezone $value
+ }
+ default {
+ return -code error \
+ -errorcode [list CLOCK badSwitch $flag] \
+ "bad switch \"$flag\",\
+ must be -base, -format, -gmt, -locale or -timezone"
+ }
+ }
+ }
+
+ # Check options for validity
+
+ if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } {
+ return -code error \
+ -errorcode [list CLOCK gmtWithTimezone] \
+ "cannot use -gmt and -timezone in same call"
+ }
+ if { [catch { expr { wide($base) } } result] } {
+ return -code error "expected integer but got \"$base\""
+ }
+ if { ![string is boolean -strict $gmt] } {
+ return -code error "expected boolean value but got \"$gmt\""
+ } elseif { $gmt } {
+ set timezone :GMT
+ }
+
+ if { ![info exists saw(-format)] } {
+ # Perhaps someday we'll localize the legacy code. Right now, it's not
+ # localized.
+ if { [info exists saw(-locale)] } {
+ return -code error \
+ -errorcode [list CLOCK flagWithLegacyFormat] \
+ "legacy \[clock scan\] does not support -locale"
+
+ }
+ return [FreeScan $string $base $timezone $locale]
+ }
+
+ # Change locale if a fresh locale has been given on the command line.
+
+ EnterLocale $locale oldLocale
+
+ try {
+ # Map away the locale-dependent composite format groups
+
+ set scanner [ParseClockScanFormat $format $locale]
+ return [$scanner $string $base $timezone]
+ } trap CLOCK {result opts} {
+ # Conceal location of generation of expected errors
+
+ dict unset opts -errorinfo
+ return -options $opts $result
+ } finally {
+ # Restore the locale
+
+ if { [info exists oldLocale] } {
+ mclocale $oldLocale
+ }
+ }
+}
+
+#----------------------------------------------------------------------
+#
+# FreeScan --
+#
+# Scans a time in free format
+#
+# Parameters:
+# string - String containing the time to scan
+# base - Base time, expressed in seconds from the Epoch
+# timezone - Default time zone in which the time will be expressed
+# locale - (Unused) Name of the locale where the time will be scanned.
+#
+# Results:
+# Returns the date and time extracted from the string in seconds from
+# the epoch
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::FreeScan { string base timezone locale } {
+ variable TZData
+
+ # Get the data for time changes in the given zone
+
+ try {
+ SetupTimeZone $timezone
+ } on error {retval opts} {
+ dict unset opts -errorinfo
+ return -options $opts $retval
+ }
+
+ # Extract year, month and day from the base time for the parser to use as
+ # defaults
+
+ set date [GetDateFields $base $TZData($timezone) 2361222]
+ dict set date secondOfDay [expr {
+ [dict get $date localSeconds] % 86400
+ }]
+
+ # Parse the date. The parser will return a list comprising date, time,
+ # time zone, relative month/day/seconds, relative weekday, ordinal month.
+
+ try {
+ set scanned [Oldscan $string \
+ [dict get $date year] \
+ [dict get $date month] \
+ [dict get $date dayOfMonth]]
+ lassign $scanned \
+ parseDate parseTime parseZone parseRel \
+ parseWeekday parseOrdinalMonth
+ } on error message {
+ return -code error \
+ "unable to convert date-time string \"$string\": $message"
+ }
+
+ # If the caller supplied a date in the string, update the 'date' dict with
+ # the value. If the caller didn't specify a time with the date, default to
+ # midnight.
+
+ if { [llength $parseDate] > 0 } {
+ lassign $parseDate y m d
+ if { $y < 100 } {
+ if { $y >= 39 } {
+ incr y 1900
+ } else {
+ incr y 2000
+ }
+ }
+ dict set date era CE
+ dict set date year $y
+ dict set date month $m
+ dict set date dayOfMonth $d
+ if { $parseTime eq {} } {
+ set parseTime 0
+ }
+ }
+
+ # If the caller supplied a time zone in the string, it comes back as a
+ # two-element list; the first element is the number of minutes east of
+ # Greenwich, and the second is a Daylight Saving Time indicator (1 == yes,
+ # 0 == no, -1 == unknown). We make it into a time zone indicator of
+ # +-hhmm.
+
+ if { [llength $parseZone] > 0 } {
+ lassign $parseZone minEast dstFlag
+ set timezone [FormatNumericTimeZone \
+ [expr { 60 * $minEast + 3600 * $dstFlag }]]
+ SetupTimeZone $timezone
+ }
+ dict set date tzName $timezone
+
+ # Assemble date, time, zone into seconds-from-epoch
+
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] 2361222]
+ if { $parseTime ne {} } {
+ dict set date secondOfDay $parseTime
+ } elseif { [llength $parseWeekday] != 0
+ || [llength $parseOrdinalMonth] != 0
+ || ( [llength $parseRel] != 0
+ && ( [lindex $parseRel 0] != 0
+ || [lindex $parseRel 1] != 0 ) ) } {
+ dict set date secondOfDay 0
+ }
+
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
+ dict set date tzName $timezone
+ set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) 2361222]
+ set seconds [dict get $date seconds]
+
+ # Do relative times
+
+ if { [llength $parseRel] > 0 } {
+ lassign $parseRel relMonth relDay relSecond
+ set seconds [add $seconds \
+ $relMonth months $relDay days $relSecond seconds \
+ -timezone $timezone -locale $locale]
+ }
+
+ # Do relative weekday
+
+ if { [llength $parseWeekday] > 0 } {
+ lassign $parseWeekday dayOrdinal dayOfWeek
+ set date2 [GetDateFields $seconds $TZData($timezone) 2361222]
+ dict set date2 era CE
+ set jdwkday [WeekdayOnOrBefore $dayOfWeek [expr {
+ [dict get $date2 julianDay] + 6
+ }]]
+ incr jdwkday [expr { 7 * $dayOrdinal }]
+ if { $dayOrdinal > 0 } {
+ incr jdwkday -7
+ }
+ dict set date2 secondOfDay \
+ [expr { [dict get $date2 localSeconds] % 86400 }]
+ dict set date2 julianDay $jdwkday
+ dict set date2 localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date2 julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
+ dict set date2 tzName $timezone
+ set date2 [ConvertLocalToUTC $date2[set date2 {}] $TZData($timezone) \
+ 2361222]
+ set seconds [dict get $date2 seconds]
+ }
+
+ # Do relative month
+
+ if { [llength $parseOrdinalMonth] > 0 } {
+ lassign $parseOrdinalMonth monthOrdinal monthNumber
+ if { $monthOrdinal > 0 } {
+ set monthDiff [expr { $monthNumber - [dict get $date month] }]
+ if { $monthDiff <= 0 } {
+ incr monthDiff 12
+ }
+ incr monthOrdinal -1
+ } else {
+ set monthDiff [expr { [dict get $date month] - $monthNumber }]
+ if { $monthDiff >= 0 } {
+ incr monthDiff -12
+ }
+ incr monthOrdinal
+ }
+ set seconds [add $seconds $monthOrdinal years $monthDiff months \
+ -timezone $timezone -locale $locale]
+ }
+
+ return $seconds
+}
+
+
+#----------------------------------------------------------------------
+#
+# ParseClockScanFormat --
+#
+# Parses a format string given to [clock scan -format]
+#
+# Parameters:
+# formatString - The format being parsed
+# locale - The current locale
+#
+# Results:
+# Constructs and returns a procedure that accepts the string being
+# scanned, the base time, and the time zone. The procedure will either
+# return the scanned time or else throw an error that should be rethrown
+# to the caller of [clock scan]
+#
+# Side effects:
+# The given procedure is defined in the ::tcl::clock namespace. Scan
+# procedures are not deleted once installed.
+#
+# Why do we parse dates by defining a procedure to parse them? The reason is
+# that by doing so, we have one convenient place to cache all the information:
+# the regular expressions that match the patterns (which will be compiled),
+# the code that assembles the date information, everything lands in one place.
+# In this way, when a given format is reused at run time, all the information
+# of how to apply it is available in a single place.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
+ # Check whether the format has been parsed previously, and return the
+ # existing recognizer if it has.
+
+ set procName scanproc'$formatString'$locale
+ set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
+ if { [namespace which $procName] != {} } {
+ return $procName
+ }
+
+ variable DateParseActions
+ variable TimeParseActions
+
+ # Localize the %x, %X, etc. groups
+
+ set formatString [LocalizeFormat $locale $formatString]
+
+ # Condense whitespace
+
+ regsub -all {[[:space:]]+} $formatString { } formatString
+
+ # Walk through the groups of the format string. In this loop, we
+ # accumulate:
+ # - a regular expression that matches the string,
+ # - the count of capturing brackets in the regexp
+ # - a set of code that post-processes the fields captured by the regexp,
+ # - a dictionary whose keys are the names of fields that are present
+ # in the format string.
+
+ set re {^[[:space:]]*}
+ set captureCount 0
+ set postcode {}
+ set fieldSet [dict create]
+ set fieldCount 0
+ set postSep {}
+ set state {}
+
+ foreach c [split $formatString {}] {
+ switch -exact -- $state {
+ {} {
+ if { $c eq "%" } {
+ set state %
+ } elseif { $c eq " " } {
+ append re {[[:space:]]+}
+ } else {
+ if { ! [string is alnum $c] } {
+ append re "\\"
+ }
+ append re $c
+ }
+ }
+ % {
+ set state {}
+ switch -exact -- $c {
+ % {
+ append re %
+ }
+ { } {
+ append re "\[\[:space:\]\]*"
+ }
+ a - A { # Day of week, in words
+ set l {}
+ foreach \
+ i {7 1 2 3 4 5 6} \
+ abr [mc DAYS_OF_WEEK_ABBREV] \
+ full [mc DAYS_OF_WEEK_FULL] {
+ dict set l [string tolower $abr] $i
+ dict set l [string tolower $full] $i
+ incr i
+ }
+ lassign [UniquePrefixRegexp $l] regex lookup
+ append re ( $regex )
+ dict set fieldSet dayOfWeek [incr fieldCount]
+ append postcode "dict set date dayOfWeek \[" \
+ "dict get " [list $lookup] " " \
+ \[ {string tolower $field} [incr captureCount] \] \
+ "\]\n"
+ }
+ b - B - h { # Name of month
+ set i 0
+ set l {}
+ foreach \
+ abr [mc MONTHS_ABBREV] \
+ full [mc MONTHS_FULL] {
+ incr i
+ dict set l [string tolower $abr] $i
+ dict set l [string tolower $full] $i
+ }
+ lassign [UniquePrefixRegexp $l] regex lookup
+ append re ( $regex )
+ dict set fieldSet month [incr fieldCount]
+ append postcode "dict set date month \[" \
+ "dict get " [list $lookup] \
+ " " \[ {string tolower $field} \
+ [incr captureCount] \] \
+ "\]\n"
+ }
+ C { # Gregorian century
+ append re \\s*(\\d\\d?)
+ dict set fieldSet century [incr fieldCount]
+ append postcode "dict set date century \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ d - e { # Day of month
+ append re \\s*(\\d\\d?)
+ dict set fieldSet dayOfMonth [incr fieldCount]
+ append postcode "dict set date dayOfMonth \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ E { # Prefix for locale-specific codes
+ set state %E
+ }
+ g { # ISO8601 2-digit year
+ append re \\s*(\\d\\d)
+ dict set fieldSet iso8601YearOfCentury \
+ [incr fieldCount]
+ append postcode \
+ "dict set date iso8601YearOfCentury \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ G { # ISO8601 4-digit year
+ append re \\s*(\\d\\d)(\\d\\d)
+ dict set fieldSet iso8601Century [incr fieldCount]
+ dict set fieldSet iso8601YearOfCentury \
+ [incr fieldCount]
+ append postcode \
+ "dict set date iso8601Century \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n" \
+ "dict set date iso8601YearOfCentury \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ H - k { # Hour of day
+ append re \\s*(\\d\\d?)
+ dict set fieldSet hour [incr fieldCount]
+ append postcode "dict set date hour \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ I - l { # Hour, AM/PM
+ append re \\s*(\\d\\d?)
+ dict set fieldSet hourAMPM [incr fieldCount]
+ append postcode "dict set date hourAMPM \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ j { # Day of year
+ append re \\s*(\\d\\d?\\d?)
+ dict set fieldSet dayOfYear [incr fieldCount]
+ append postcode "dict set date dayOfYear \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ J { # Julian Day Number
+ append re \\s*(\\d+)
+ dict set fieldSet julianDay [incr fieldCount]
+ append postcode "dict set date julianDay \[" \
+ "::scan \$field" [incr captureCount] " %ld" \
+ "\]\n"
+ }
+ m - N { # Month number
+ append re \\s*(\\d\\d?)
+ dict set fieldSet month [incr fieldCount]
+ append postcode "dict set date month \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ M { # Minute
+ append re \\s*(\\d\\d?)
+ dict set fieldSet minute [incr fieldCount]
+ append postcode "dict set date minute \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ n { # Literal newline
+ append re \\n
+ }
+ O { # Prefix for locale numerics
+ set state %O
+ }
+ p - P { # AM/PM indicator
+ set l [list [string tolower [mc AM]] 0 \
+ [string tolower [mc PM]] 1]
+ lassign [UniquePrefixRegexp $l] regex lookup
+ append re ( $regex )
+ dict set fieldSet amPmIndicator [incr fieldCount]
+ append postcode "dict set date amPmIndicator \[" \
+ "dict get " [list $lookup] " \[string tolower " \
+ "\$field" \
+ [incr captureCount] \
+ "\]\]\n"
+ }
+ Q { # Hi, Jeff!
+ append re {Stardate\s+([-+]?\d+)(\d\d\d)[.](\d)}
+ incr captureCount
+ dict set fieldSet seconds [incr fieldCount]
+ append postcode {dict set date seconds } \[ \
+ {ParseStarDate $field} [incr captureCount] \
+ { $field} [incr captureCount] \
+ { $field} [incr captureCount] \
+ \] \n
+ }
+ s { # Seconds from Posix Epoch
+ # This next case is insanely difficult, because it's
+ # problematic to determine whether the field is
+ # actually within the range of a wide integer.
+ append re {\s*([-+]?\d+)}
+ dict set fieldSet seconds [incr fieldCount]
+ append postcode {dict set date seconds } \[ \
+ {ScanWide $field} [incr captureCount] \] \n
+ }
+ S { # Second
+ append re \\s*(\\d\\d?)
+ dict set fieldSet second [incr fieldCount]
+ append postcode "dict set date second \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ t { # Literal tab character
+ append re \\t
+ }
+ u - w { # Day number within week, 0 or 7 == Sun
+ # 1=Mon, 6=Sat
+ append re \\s*(\\d)
+ dict set fieldSet dayOfWeek [incr fieldCount]
+ append postcode {::scan $field} [incr captureCount] \
+ { %d dow} \n \
+ {
+ if { $dow == 0 } {
+ set dow 7
+ } elseif { $dow > 7 } {
+ return -code error \
+ -errorcode [list CLOCK badDayOfWeek] \
+ "day of week is greater than 7"
+ }
+ dict set date dayOfWeek $dow
+ }
+ }
+ U { # Week of year. The first Sunday of
+ # the year is the first day of week
+ # 01. No scan rule uses this group.
+ append re \\s*\\d\\d?
+ }
+ V { # Week of ISO8601 year
+
+ append re \\s*(\\d\\d?)
+ dict set fieldSet iso8601Week [incr fieldCount]
+ append postcode "dict set date iso8601Week \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ W { # Week of the year (00-53). The first
+ # Monday of the year is the first day
+ # of week 01. No scan rule uses this
+ # group.
+ append re \\s*\\d\\d?
+ }
+ y { # Two-digit Gregorian year
+ append re \\s*(\\d\\d?)
+ dict set fieldSet yearOfCentury [incr fieldCount]
+ append postcode "dict set date yearOfCentury \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ Y { # 4-digit Gregorian year
+ append re \\s*(\\d\\d)(\\d\\d)
+ dict set fieldSet century [incr fieldCount]
+ dict set fieldSet yearOfCentury [incr fieldCount]
+ append postcode \
+ "dict set date century \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n" \
+ "dict set date yearOfCentury \[" \
+ "::scan \$field" [incr captureCount] " %d" \
+ "\]\n"
+ }
+ z - Z { # Time zone name
+ append re {(?:([-+]\d\d(?::?\d\d(?::?\d\d)?)?)|([[:alnum:]]{1,4}))}
+ dict set fieldSet tzName [incr fieldCount]
+ append postcode \
+ {if } \{ { $field} [incr captureCount] \
+ { ne "" } \} { } \{ \n \
+ {dict set date tzName $field} \
+ $captureCount \n \
+ \} { else } \{ \n \
+ {dict set date tzName } \[ \
+ {ConvertLegacyTimeZone $field} \
+ [incr captureCount] \] \n \
+ \} \n \
+ }
+ % { # Literal percent character
+ append re %
+ }
+ default {
+ append re %
+ if { ! [string is alnum $c] } {
+ append re \\
+ }
+ append re $c
+ }
+ }
+ }
+ %E {
+ switch -exact -- $c {
+ C { # Locale-dependent era
+ set d {}
+ foreach triple [mc LOCALE_ERAS] {
+ lassign $triple t symbol year
+ dict set d [string tolower $symbol] $year
+ }
+ lassign [UniquePrefixRegexp $d] regex lookup
+ append re (?: $regex )
+ }
+ E {
+ set l {}
+ dict set l [string tolower [mc BCE]] BCE
+ dict set l [string tolower [mc CE]] CE
+ dict set l b.c.e. BCE
+ dict set l c.e. CE
+ dict set l b.c. BCE
+ dict set l a.d. CE
+ lassign [UniquePrefixRegexp $l] regex lookup
+ append re ( $regex )
+ dict set fieldSet era [incr fieldCount]
+ append postcode "dict set date era \["\
+ "dict get " [list $lookup] \
+ { } \[ {string tolower $field} \
+ [incr captureCount] \] \
+ "\]\n"
+ }
+ y { # Locale-dependent year of the era
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ incr captureCount
+ }
+ default {
+ append re %E
+ if { ! [string is alnum $c] } {
+ append re \\
+ }
+ append re $c
+ }
+ }
+ set state {}
+ }
+ %O {
+ switch -exact -- $c {
+ d - e {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet dayOfMonth [incr fieldCount]
+ append postcode "dict set date dayOfMonth \[" \
+ "dict get " [list $lookup] " \$field" \
+ [incr captureCount] \
+ "\]\n"
+ }
+ H - k {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet hour [incr fieldCount]
+ append postcode "dict set date hour \[" \
+ "dict get " [list $lookup] " \$field" \
+ [incr captureCount] \
+ "\]\n"
+ }
+ I - l {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet hourAMPM [incr fieldCount]
+ append postcode "dict set date hourAMPM \[" \
+ "dict get " [list $lookup] " \$field" \
+ [incr captureCount] \
+ "\]\n"
+ }
+ m {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet month [incr fieldCount]
+ append postcode "dict set date month \[" \
+ "dict get " [list $lookup] " \$field" \
+ [incr captureCount] \
+ "\]\n"
+ }
+ M {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet minute [incr fieldCount]
+ append postcode "dict set date minute \[" \
+ "dict get " [list $lookup] " \$field" \
+ [incr captureCount] \
+ "\]\n"
+ }
+ S {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet second [incr fieldCount]
+ append postcode "dict set date second \[" \
+ "dict get " [list $lookup] " \$field" \
+ [incr captureCount] \
+ "\]\n"
+ }
+ u - w {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet dayOfWeek [incr fieldCount]
+ append postcode "set dow \[dict get " [list $lookup] \
+ { $field} [incr captureCount] \] \n \
+ {
+ if { $dow == 0 } {
+ set dow 7
+ } elseif { $dow > 7 } {
+ return -code error \
+ -errorcode [list CLOCK badDayOfWeek] \
+ "day of week is greater than 7"
+ }
+ dict set date dayOfWeek $dow
+ }
+ }
+ y {
+ lassign [LocaleNumeralMatcher $locale] regex lookup
+ append re $regex
+ dict set fieldSet yearOfCentury [incr fieldCount]
+ append postcode {dict set date yearOfCentury } \[ \
+ {dict get } [list $lookup] { $field} \
+ [incr captureCount] \] \n
+ }
+ default {
+ append re %O
+ if { ! [string is alnum $c] } {
+ append re \\
+ }
+ append re $c
+ }
+ }
+ set state {}
+ }
+ }
+ }
+
+ # Clean up any unfinished format groups
+
+ append re $state \\s*\$
+
+ # Build the procedure
+
+ set procBody {}
+ append procBody "variable ::tcl::clock::TZData" \n
+ append procBody "if \{ !\[ regexp -nocase [list $re] \$string ->"
+ for { set i 1 } { $i <= $captureCount } { incr i } {
+ append procBody " " field $i
+ }
+ append procBody "\] \} \{" \n
+ append procBody {
+ return -code error -errorcode [list CLOCK badInputString] \
+ {input string does not match supplied format}
+ }
+ append procBody \}\n
+ append procBody "set date \[dict create\]" \n
+ append procBody {dict set date tzName $timeZone} \n
+ append procBody $postcode
+ append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n
+
+ # Set up the time zone before doing anything with a default base date
+ # that might need a timezone to interpret it.
+
+ if { ![dict exists $fieldSet seconds]
+ && ![dict exists $fieldSet starDate] } {
+ if { [dict exists $fieldSet tzName] } {
+ append procBody {
+ set timeZone [dict get $date tzName]
+ }
+ }
+ append procBody {
+ ::tcl::clock::SetupTimeZone $timeZone
+ }
+ }
+
+ # Add code that gets Julian Day Number from the fields.
+
+ append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions]
+
+ # Get time of day
+
+ append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions]
+
+ # Assemble seconds from the Julian day and second of the day.
+ # Convert to local time unless epoch seconds or stardate are
+ # being processed - they're always absolute
+
+ if { ![dict exists $fieldSet seconds]
+ && ![dict exists $fieldSet starDate] } {
+ append procBody {
+ if { [dict get $date julianDay] > 5373484 } {
+ return -code error -errorcode [list CLOCK dateTooLarge] \
+ "requested date too large to represent"
+ }
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
+ }
+
+ # Finally, convert the date to local time
+
+ append procBody {
+ set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \
+ $TZData($timeZone) $changeover]
+ }
+ }
+
+ # Return result
+
+ append procBody {return [dict get $date seconds]} \n
+
+ proc $procName { string baseTime timeZone } $procBody
+
+ # puts [list proc $procName [list string baseTime timeZone] $procBody]
+
+ return $procName
+}
+
+#----------------------------------------------------------------------
+#
+# LocaleNumeralMatcher --
+#
+# Composes a regexp that captures the numerals in the given locale, and
+# a dictionary to map them to conventional numerals.
+#
+# Parameters:
+# locale - Name of the current locale
+#
+# Results:
+# Returns a two-element list comprising the regexp and the dictionary.
+#
+# Side effects:
+# Caches the result.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LocaleNumeralMatcher {l} {
+ variable LocaleNumeralCache
+
+ if { ![dict exists $LocaleNumeralCache $l] } {
+ set d {}
+ set i 0
+ set sep \(
+ foreach n [mc LOCALE_NUMERALS] {
+ dict set d $n $i
+ regsub -all {[^[:alnum:]]} $n \\\\& subex
+ append re $sep $subex
+ set sep |
+ incr i
+ }
+ append re \)
+ dict set LocaleNumeralCache $l [list $re $d]
+ }
+ return [dict get $LocaleNumeralCache $l]
+}
+
+
+
+#----------------------------------------------------------------------
+#
+# UniquePrefixRegexp --
+#
+# Composes a regexp that performs unique-prefix matching. The RE
+# matches one of a supplied set of strings, or any unique prefix
+# thereof.
+#
+# Parameters:
+# data - List of alternating match-strings and values.
+# Match-strings with distinct values are considered
+# distinct.
+#
+# Results:
+# Returns a two-element list. The first is a regexp that matches any
+# unique prefix of any of the strings. The second is a dictionary whose
+# keys are match values from the regexp and whose values are the
+# corresponding values from 'data'.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::UniquePrefixRegexp { data } {
+ # The 'successors' dictionary will contain, for each string that is a
+ # prefix of any key, all characters that may follow that prefix. The
+ # 'prefixMapping' dictionary will have keys that are prefixes of keys and
+ # values that correspond to the keys.
+
+ set prefixMapping [dict create]
+ set successors [dict create {} {}]
+
+ # Walk the key-value pairs
+
+ foreach { key value } $data {
+ # Construct all prefixes of the key;
+
+ set prefix {}
+ foreach char [split $key {}] {
+ set oldPrefix $prefix
+ dict set successors $oldPrefix $char {}
+ append prefix $char
+
+ # Put the prefixes in the 'prefixMapping' and 'successors'
+ # dictionaries
+
+ dict lappend prefixMapping $prefix $value
+ if { ![dict exists $successors $prefix] } {
+ dict set successors $prefix {}
+ }
+ }
+ }
+
+ # Identify those prefixes that designate unique values, and those that are
+ # the full keys
+
+ set uniquePrefixMapping {}
+ dict for { key valueList } $prefixMapping {
+ if { [llength $valueList] == 1 } {
+ dict set uniquePrefixMapping $key [lindex $valueList 0]
+ }
+ }
+ foreach { key value } $data {
+ dict set uniquePrefixMapping $key $value
+ }
+
+ # Construct the re.
+
+ return [list \
+ [MakeUniquePrefixRegexp $successors $uniquePrefixMapping {}] \
+ $uniquePrefixMapping]
+}
+
+#----------------------------------------------------------------------
+#
+# MakeUniquePrefixRegexp --
+#
+# Service procedure for 'UniquePrefixRegexp' that constructs a regular
+# expresison that matches the unique prefixes.
+#
+# Parameters:
+# successors - Dictionary whose keys are all prefixes
+# of keys passed to 'UniquePrefixRegexp' and whose
+# values are dictionaries whose keys are the characters
+# that may follow those prefixes.
+# uniquePrefixMapping - Dictionary whose keys are the unique
+# prefixes and whose values are not examined.
+# prefixString - Current prefix being processed.
+#
+# Results:
+# Returns a constructed regular expression that matches the set of
+# unique prefixes beginning with the 'prefixString'.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::MakeUniquePrefixRegexp { successors
+ uniquePrefixMapping
+ prefixString } {
+ # Get the characters that may follow the current prefix string
+
+ set schars [lsort -ascii [dict keys [dict get $successors $prefixString]]]
+ if { [llength $schars] == 0 } {
+ return {}
+ }
+
+ # If there is more than one successor character, or if the current prefix
+ # is a unique prefix, surround the generated re with non-capturing
+ # parentheses.
+
+ set re {}
+ if {
+ [dict exists $uniquePrefixMapping $prefixString]
+ || [llength $schars] > 1
+ } then {
+ append re "(?:"
+ }
+
+ # Generate a regexp that matches the successors.
+
+ set sep ""
+ foreach { c } $schars {
+ set nextPrefix $prefixString$c
+ regsub -all {[^[:alnum:]]} $c \\\\& rechar
+ append re $sep $rechar \
+ [MakeUniquePrefixRegexp \
+ $successors $uniquePrefixMapping $nextPrefix]
+ set sep |
+ }
+
+ # If the current prefix is a unique prefix, make all following text
+ # optional. Otherwise, if there is more than one successor character,
+ # close the non-capturing parentheses.
+
+ if { [dict exists $uniquePrefixMapping $prefixString] } {
+ append re ")?"
+ } elseif { [llength $schars] > 1 } {
+ append re ")"
+ }
+
+ return $re
+}
+
+#----------------------------------------------------------------------
+#
+# MakeParseCodeFromFields --
+#
+# Composes Tcl code to extract the Julian Day Number from a dictionary
+# containing date fields.
+#
+# Parameters:
+# dateFields -- Dictionary whose keys are fields of the date,
+# and whose values are the rightmost positions
+# at which those fields appear.
+# parseActions -- List of triples: field set, priority, and
+# code to emit. Smaller priorities are better, and
+# the list must be in ascending order by priority
+#
+# Results:
+# Returns a burst of code that extracts the day number from the given
+# date.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
+ set currPrio 999
+ set currFieldPos [list]
+ set currCodeBurst {
+ error "in ::tcl::clock::MakeParseCodeFromFields: can't happen"
+ }
+
+ foreach { fieldSet prio parseAction } $parseActions {
+ # If we've found an answer that's better than any that follow, quit
+ # now.
+
+ if { $prio > $currPrio } {
+ break
+ }
+
+ # Accumulate the field positions that are used in the current field
+ # grouping.
+
+ set fieldPos [list]
+ set ok true
+ foreach field $fieldSet {
+ if { ! [dict exists $dateFields $field] } {
+ set ok 0
+ break
+ }
+ lappend fieldPos [dict get $dateFields $field]
+ }
+
+ # Quit if we don't have a complete set of fields
+ if { !$ok } {
+ continue
+ }
+
+ # Determine whether the current answer is better than the last.
+
+ set fPos [lsort -integer -decreasing $fieldPos]
+
+ if { $prio == $currPrio } {
+ foreach currPos $currFieldPos newPos $fPos {
+ if {
+ ![string is integer $newPos]
+ || ![string is integer $currPos]
+ || $newPos > $currPos
+ } then {
+ break
+ }
+ if { $newPos < $currPos } {
+ set ok 0
+ break
+ }
+ }
+ }
+ if { !$ok } {
+ continue
+ }
+
+ # Remember the best possibility for extracting date information
+
+ set currPrio $prio
+ set currFieldPos $fPos
+ set currCodeBurst $parseAction
+ }
+
+ return $currCodeBurst
+}
+
+#----------------------------------------------------------------------
+#
+# EnterLocale --
+#
+# Switch [mclocale] to a given locale if necessary
+#
+# Parameters:
+# locale -- Desired locale
+# oldLocaleVar -- Name of a variable in caller's scope that
+# tracks the previous locale name.
+#
+# Results:
+# Returns the locale that was previously current.
+#
+# Side effects:
+# Does [mclocale]. If necessary, uses [mcload] to load the designated
+# locale's files, and tracks that it has done so in the 'McLoaded'
+# variable.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::EnterLocale { locale oldLocaleVar } {
+ upvar 1 $oldLocaleVar oldLocale
+
+ variable MsgDir
+ variable McLoaded
+
+ set oldLocale [mclocale]
+ if { $locale eq {system} } {
+ if { $::tcl_platform(platform) ne {windows} } {
+ # On a non-windows platform, the 'system' locale is the same as
+ # the 'current' locale
+
+ set locale current
+ } else {
+ # On a windows platform, the 'system' locale is adapted from the
+ # 'current' locale by applying the date and time formats from the
+ # Control Panel. First, load the 'current' locale if it's not yet
+ # loaded
+
+ if {![dict exists $McLoaded $oldLocale] } {
+ mcload $MsgDir
+ dict set McLoaded $oldLocale {}
+ }
+
+ # Make a new locale string for the system locale, and get the
+ # Control Panel information
+
+ set locale ${oldLocale}_windows
+ if { ![dict exists $McLoaded $locale] } {
+ LoadWindowsDateTimeFormats $locale
+ dict set McLoaded $locale {}
+ }
+ }
+ }
+ if { $locale eq {current}} {
+ set locale $oldLocale
+ unset oldLocale
+ } elseif { $locale eq $oldLocale } {
+ unset oldLocale
+ } else {
+ mclocale $locale
+ }
+ if { ![dict exists $McLoaded $locale] } {
+ mcload $MsgDir
+ dict set McLoaded $locale {}
+ }
+}
+
+#----------------------------------------------------------------------
+#
+# LoadWindowsDateTimeFormats --
+#
+# Load the date/time formats from the Control Panel in Windows and
+# convert them so that they're usable by Tcl.
+#
+# Parameters:
+# locale - Name of the locale in whose message catalog
+# the converted formats are to be stored.
+#
+# Results:
+# None.
+#
+# Side effects:
+# Updates the given message catalog with the locale strings.
+#
+# Presumes that on entry, [mclocale] is set to the current locale, so that
+# default strings can be obtained if the Registry query fails.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
+ # Bail out if we can't find the Registry
+
+ variable NoRegistry
+ if { [info exists NoRegistry] } return
+
+ if { ![catch {
+ registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
+ sShortDate
+ } string] } {
+ set quote {}
+ set datefmt {}
+ foreach { unquoted quoted } [split $string '] {
+ append datefmt $quote [string map {
+ dddd %A
+ ddd %a
+ dd %d
+ d %e
+ MMMM %B
+ MMM %b
+ MM %m
+ M %N
+ yyyy %Y
+ yy %y
+ y %y
+ gg {}
+ } $unquoted]
+ if { $quoted eq {} } {
+ set quote '
+ } else {
+ set quote $quoted
+ }
+ }
+ ::msgcat::mcset $locale DATE_FORMAT $datefmt
+ }
+
+ if { ![catch {
+ registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
+ sLongDate
+ } string] } {
+ set quote {}
+ set ldatefmt {}
+ foreach { unquoted quoted } [split $string '] {
+ append ldatefmt $quote [string map {
+ dddd %A
+ ddd %a
+ dd %d
+ d %e
+ MMMM %B
+ MMM %b
+ MM %m
+ M %N
+ yyyy %Y
+ yy %y
+ y %y
+ gg {}
+ } $unquoted]
+ if { $quoted eq {} } {
+ set quote '
+ } else {
+ set quote $quoted
+ }
+ }
+ ::msgcat::mcset $locale LOCALE_DATE_FORMAT $ldatefmt
+ }
+
+ if { ![catch {
+ registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
+ sTimeFormat
+ } string] } {
+ set quote {}
+ set timefmt {}
+ foreach { unquoted quoted } [split $string '] {
+ append timefmt $quote [string map {
+ HH %H
+ H %k
+ hh %I
+ h %l
+ mm %M
+ m %M
+ ss %S
+ s %S
+ tt %p
+ t %p
+ } $unquoted]
+ if { $quoted eq {} } {
+ set quote '
+ } else {
+ set quote $quoted
+ }
+ }
+ ::msgcat::mcset $locale TIME_FORMAT $timefmt
+ }
+
+ catch {
+ ::msgcat::mcset $locale DATE_TIME_FORMAT "$datefmt $timefmt"
+ }
+ catch {
+ ::msgcat::mcset $locale LOCALE_DATE_TIME_FORMAT "$ldatefmt $timefmt"
+ }
+
+ return
+}
+
+#----------------------------------------------------------------------
+#
+# LocalizeFormat --
+#
+# Map away locale-dependent format groups in a clock format.
+#
+# Parameters:
+# locale -- Current [mclocale] locale, supplied to avoid
+# an extra call
+# format -- Format supplied to [clock scan] or [clock format]
+#
+# Results:
+# Returns the string with locale-dependent composite format groups
+# substituted out.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LocalizeFormat { locale format } {
+ variable McLoaded
+
+ if { [dict exists $McLoaded $locale FORMAT $format] } {
+ return [dict get $McLoaded $locale FORMAT $format]
+ }
+ set inFormat $format
+
+ # Handle locale-dependent format groups by mapping them out of the format
+ # string. Note that the order of the [string map] operations is
+ # significant because later formats can refer to later ones; for example
+ # %c can refer to %X, which in turn can refer to %T.
+
+ set list {
+ %% %%
+ %D %m/%d/%Y
+ %+ {%a %b %e %H:%M:%S %Z %Y}
+ }
+ lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]]
+ lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]]
+ lappend list %R [string map $list [mc TIME_FORMAT_24]]
+ lappend list %r [string map $list [mc TIME_FORMAT_12]]
+ lappend list %X [string map $list [mc TIME_FORMAT]]
+ lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]]
+ lappend list %x [string map $list [mc DATE_FORMAT]]
+ lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]]
+ lappend list %c [string map $list [mc DATE_TIME_FORMAT]]
+ lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]]
+ set format [string map $list $format]
+
+ dict set McLoaded $locale FORMAT $inFormat $format
+ return $format
+}
+
+#----------------------------------------------------------------------
+#
+# FormatNumericTimeZone --
+#
+# Formats a time zone as +hhmmss
+#
+# Parameters:
+# z - Time zone in seconds east of Greenwich
+#
+# Results:
+# Returns the time zone formatted in a numeric form
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::FormatNumericTimeZone { z } {
+ if { $z < 0 } {
+ set z [expr { - $z }]
+ set retval -
+ } else {
+ set retval +
+ }
+ append retval [::format %02d [expr { $z / 3600 }]]
+ set z [expr { $z % 3600 }]
+ append retval [::format %02d [expr { $z / 60 }]]
+ set z [expr { $z % 60 }]
+ if { $z != 0 } {
+ append retval [::format %02d $z]
+ }
+ return $retval
+}
+
+#----------------------------------------------------------------------
+#
+# FormatStarDate --
+#
+# Formats a date as a StarDate.
+#
+# Parameters:
+# date - Dictionary containing 'year', 'dayOfYear', and
+# 'localSeconds' fields.
+#
+# Results:
+# Returns the given date formatted as a StarDate.
+#
+# Side effects:
+# None.
+#
+# Jeff Hobbs put this in to support an atrocious pun about Tcl being
+# "Enterprise ready." Now we're stuck with it.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::FormatStarDate { date } {
+ variable Roddenberry
+
+ # Get day of year, zero based
+
+ set doy [expr { [dict get $date dayOfYear] - 1 }]
+
+ # Determine whether the year is a leap year
+
+ set lp [IsGregorianLeapYear $date]
+
+ # Convert day of year to a fractional year
+
+ if { $lp } {
+ set fractYear [expr { 1000 * $doy / 366 }]
+ } else {
+ set fractYear [expr { 1000 * $doy / 365 }]
+ }
+
+ # Put together the StarDate
+
+ return [::format "Stardate %02d%03d.%1d" \
+ [expr { [dict get $date year] - $Roddenberry }] \
+ $fractYear \
+ [expr { [dict get $date localSeconds] % 86400
+ / ( 86400 / 10 ) }]]
+}
+
+#----------------------------------------------------------------------
+#
+# ParseStarDate --
+#
+# Parses a StarDate
+#
+# Parameters:
+# year - Year from the Roddenberry epoch
+# fractYear - Fraction of a year specifiying the day of year.
+# fractDay - Fraction of a day
+#
+# Results:
+# Returns a count of seconds from the Posix epoch.
+#
+# Side effects:
+# None.
+#
+# Jeff Hobbs put this in to support an atrocious pun about Tcl being
+# "Enterprise ready." Now we're stuck with it.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
+ variable Roddenberry
+
+ # Build a tentative date from year and fraction.
+
+ set date [dict create \
+ gregorian 1 \
+ era CE \
+ year [expr { $year + $Roddenberry }] \
+ dayOfYear [expr { $fractYear * 365 / 1000 + 1 }]]
+ set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
+
+ # Determine whether the given year is a leap year
+
+ set lp [IsGregorianLeapYear $date]
+
+ # Reconvert the fractional year according to whether the given year is a
+ # leap year
+
+ if { $lp } {
+ dict set date dayOfYear \
+ [expr { $fractYear * 366 / 1000 + 1 }]
+ } else {
+ dict set date dayOfYear \
+ [expr { $fractYear * 365 / 1000 + 1 }]
+ }
+ dict unset date julianDay
+ dict unset date gregorian
+ set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
+
+ return [expr {
+ 86400 * [dict get $date julianDay]
+ - 210866803200
+ + ( 86400 / 10 ) * $fractDay
+ }]
+}
+
+#----------------------------------------------------------------------
+#
+# ScanWide --
+#
+# Scans a wide integer from an input
+#
+# Parameters:
+# str - String containing a decimal wide integer
+#
+# Results:
+# Returns the string as a pure wide integer. Throws an error if the
+# string is misformatted or out of range.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ScanWide { str } {
+ set count [::scan $str {%ld %c} result junk]
+ if { $count != 1 } {
+ return -code error -errorcode [list CLOCK notAnInteger $str] \
+ "\"$str\" is not an integer"
+ }
+ if { [incr result 0] != $str } {
+ return -code error -errorcode [list CLOCK integervalueTooLarge] \
+ "integer value too large to represent"
+ }
+ return $result
+}
+
+#----------------------------------------------------------------------
+#
+# InterpretTwoDigitYear --
+#
+# Given a date that contains only the year of the century, determines
+# the target value of a two-digit year.
+#
+# Parameters:
+# date - Dictionary containing fields of the date.
+# baseTime - Base time relative to which the date is expressed.
+# twoDigitField - Name of the field that stores the two-digit year.
+# Default is 'yearOfCentury'
+# fourDigitField - Name of the field that will receive the four-digit
+# year. Default is 'year'
+#
+# Results:
+# Returns the dictionary augmented with the four-digit year, stored in
+# the given key.
+#
+# Side effects:
+# None.
+#
+# The current rule for interpreting a two-digit year is that the year shall be
+# between 1937 and 2037, thus staying within the range of a 32-bit signed
+# value for time. This rule may change to a sliding window in future
+# versions, so the 'baseTime' parameter (which is currently ignored) is
+# provided in the procedure signature.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
+ { twoDigitField yearOfCentury }
+ { fourDigitField year } } {
+ set yr [dict get $date $twoDigitField]
+ if { $yr <= 37 } {
+ dict set date $fourDigitField [expr { $yr + 2000 }]
+ } else {
+ dict set date $fourDigitField [expr { $yr + 1900 }]
+ }
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseYear --
+#
+# Places the number of the current year into a dictionary.
+#
+# Parameters:
+# date - Dictionary value to update
+# baseTime - Base time from which to extract the year, expressed
+# in seconds from the Posix epoch
+# timezone - the time zone in which the date is being scanned
+# changeover - the Julian Day on which the Gregorian calendar
+# was adopted in the target locale.
+#
+# Results:
+# Returns the dictionary with the current year assigned.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } {
+ variable TZData
+
+ # Find the Julian Day Number corresponding to the base time, and
+ # find the Gregorian year corresponding to that Julian Day.
+
+ set date2 [GetDateFields $baseTime $TZData($timezone) $changeover]
+
+ # Store the converted year
+
+ dict set date era [dict get $date2 era]
+ dict set date year [dict get $date2 year]
+
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseIso8601Year --
+#
+# Determines the base year in the ISO8601 fiscal calendar.
+#
+# Parameters:
+# date - Dictionary containing the fields of the date that
+# is to be augmented with the base year.
+# baseTime - Base time expressed in seconds from the Posix epoch.
+# timeZone - Target time zone
+# changeover - Julian Day of adoption of the Gregorian calendar in
+# the target locale.
+#
+# Results:
+# Returns the given date with "iso8601Year" set to the
+# base year.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} {
+ variable TZData
+
+ # Find the Julian Day Number corresponding to the base time
+
+ set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
+
+ # Calculate the ISO8601 date and transfer the year
+
+ dict set date era CE
+ dict set date iso8601Year [dict get $date2 iso8601Year]
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseMonth --
+#
+# Places the number of the current year and month into a
+# dictionary.
+#
+# Parameters:
+# date - Dictionary value to update
+# baseTime - Time from which the year and month are to be
+# obtained, expressed in seconds from the Posix epoch.
+# timezone - Name of the desired time zone
+# changeover - Julian Day on which the Gregorian calendar was adopted.
+#
+# Results:
+# Returns the dictionary with the base year and month assigned.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} {
+ variable TZData
+
+ # Find the year and month corresponding to the base time
+
+ set date2 [GetDateFields $baseTime $TZData($timezone) $changeover]
+ dict set date era [dict get $date2 era]
+ dict set date year [dict get $date2 year]
+ dict set date month [dict get $date2 month]
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseWeek --
+#
+# Determines the base year and week in the ISO8601 fiscal calendar.
+#
+# Parameters:
+# date - Dictionary containing the fields of the date that
+# is to be augmented with the base year and week.
+# baseTime - Base time expressed in seconds from the Posix epoch.
+# changeover - Julian Day on which the Gregorian calendar was adopted
+# in the target locale.
+#
+# Results:
+# Returns the given date with "iso8601Year" set to the
+# base year and "iso8601Week" to the week number.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} {
+ variable TZData
+
+ # Find the Julian Day Number corresponding to the base time
+
+ set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
+
+ # Calculate the ISO8601 date and transfer the year
+
+ dict set date era CE
+ dict set date iso8601Year [dict get $date2 iso8601Year]
+ dict set date iso8601Week [dict get $date2 iso8601Week]
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseJulianDay --
+#
+# Determines the base day for a time-of-day conversion.
+#
+# Parameters:
+# date - Dictionary that is to get the base day
+# baseTime - Base time expressed in seconds from the Posix epoch
+# changeover - Julian day on which the Gregorian calendar was
+# adpoted in the target locale.
+#
+# Results:
+# Returns the given dictionary augmented with a 'julianDay' field
+# that contains the base day.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } {
+ variable TZData
+
+ # Find the Julian Day Number corresponding to the base time
+
+ set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
+ dict set date julianDay [dict get $date2 julianDay]
+
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# InterpretHMSP --
+#
+# Interprets a time in the form "hh:mm:ss am".
+#
+# Parameters:
+# date -- Dictionary containing "hourAMPM", "minute", "second"
+# and "amPmIndicator" fields.
+#
+# Results:
+# Returns the number of seconds from local midnight.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::InterpretHMSP { date } {
+ set hr [dict get $date hourAMPM]
+ if { $hr == 12 } {
+ set hr 0
+ }
+ if { [dict get $date amPmIndicator] } {
+ incr hr 12
+ }
+ dict set date hour $hr
+ return [InterpretHMS $date[set date {}]]
+}
+
+#----------------------------------------------------------------------
+#
+# InterpretHMS --
+#
+# Interprets a 24-hour time "hh:mm:ss"
+#
+# Parameters:
+# date -- Dictionary containing the "hour", "minute" and "second"
+# fields.
+#
+# Results:
+# Returns the given dictionary augmented with a "secondOfDay"
+# field containing the number of seconds from local midnight.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::InterpretHMS { date } {
+ return [expr {
+ ( [dict get $date hour] * 60
+ + [dict get $date minute] ) * 60
+ + [dict get $date second]
+ }]
+}
+
+#----------------------------------------------------------------------
+#
+# GetSystemTimeZone --
+#
+# Determines the system time zone, which is the default for the
+# 'clock' command if no other zone is supplied.
+#
+# Parameters:
+# None.
+#
+# Results:
+# Returns the system time zone.
+#
+# Side effects:
+# Stores the sustem time zone in the 'CachedSystemTimeZone'
+# variable, since determining it may be an expensive process.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetSystemTimeZone {} {
+ variable CachedSystemTimeZone
+ variable TimeZoneBad
+
+ if {[set result [getenv TCL_TZ]] ne {}} {
+ set timezone $result
+ } elseif {[set result [getenv TZ]] ne {}} {
+ set timezone $result
+ }
+ if {![info exists timezone]} {
+ # Cache the time zone only if it was detected by one of the
+ # expensive methods.
+ if { [info exists CachedSystemTimeZone] } {
+ set timezone $CachedSystemTimeZone
+ } elseif { $::tcl_platform(platform) eq {windows} } {
+ set timezone [GuessWindowsTimeZone]
+ } elseif { [file exists /etc/localtime]
+ && ![catch {ReadZoneinfoFile \
+ Tcl/Localtime /etc/localtime}] } {
+ set timezone :Tcl/Localtime
+ } else {
+ set timezone :localtime
+ }
+ set CachedSystemTimeZone $timezone
+ }
+ if { ![dict exists $TimeZoneBad $timezone] } {
+ dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}]
+ }
+ if { [dict get $TimeZoneBad $timezone] } {
+ return :localtime
+ } else {
+ return $timezone
+ }
+}
+
+#----------------------------------------------------------------------
+#
+# ConvertLegacyTimeZone --
+#
+# Given an alphanumeric time zone identifier and the system time zone,
+# convert the alphanumeric identifier to an unambiguous time zone.
+#
+# Parameters:
+# tzname - Name of the time zone to convert
+#
+# Results:
+# Returns a time zone name corresponding to tzname, but in an
+# unambiguous form, generally +hhmm.
+#
+# This procedure is implemented primarily to allow the parsing of RFC822
+# date/time strings. Processing a time zone name on input is not recommended
+# practice, because there is considerable room for ambiguity; for instance, is
+# BST Brazilian Standard Time, or British Summer Time?
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ConvertLegacyTimeZone { tzname } {
+ variable LegacyTimeZone
+
+ set tzname [string tolower $tzname]
+ if { ![dict exists $LegacyTimeZone $tzname] } {
+ return -code error -errorcode [list CLOCK badTZName $tzname] \
+ "time zone \"$tzname\" not found"
+ }
+ return [dict get $LegacyTimeZone $tzname]
+}
+
+#----------------------------------------------------------------------
+#
+# SetupTimeZone --
+#
+# Given the name or specification of a time zone, sets up its in-memory
+# data.
+#
+# Parameters:
+# tzname - Name of a time zone
+#
+# Results:
+# Unless the time zone is ':localtime', sets the TZData array to contain
+# the lookup table for local<->UTC conversion. Returns an error if the
+# time zone cannot be parsed.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::SetupTimeZone { timezone } {
+ variable TZData
+
+ if {! [info exists TZData($timezone)] } {
+ variable MINWIDE
+ if { $timezone eq {:localtime} } {
+ # Nothing to do, we'll convert using the localtime function
+
+ } elseif {
+ [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \
+ -> s hh mm ss]
+ } then {
+ # Make a fixed offset
+
+ ::scan $hh %d hh
+ if { $mm eq {} } {
+ set mm 0
+ } else {
+ ::scan $mm %d mm
+ }
+ if { $ss eq {} } {
+ set ss 0
+ } else {
+ ::scan $ss %d ss
+ }
+ set offset [expr { ( $hh * 60 + $mm ) * 60 + $ss }]
+ if { $s eq {-} } {
+ set offset [expr { - $offset }]
+ }
+ set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]]
+
+ } elseif { [string index $timezone 0] eq {:} } {
+ # Convert using a time zone file
+
+ if {
+ [catch {
+ LoadTimeZoneFile [string range $timezone 1 end]
+ }] && [catch {
+ LoadZoneinfoFile [string range $timezone 1 end]
+ }]
+ } then {
+ return -code error \
+ -errorcode [list CLOCK badTimeZone $timezone] \
+ "time zone \"$timezone\" not found"
+ }
+
+ } elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } {
+ # This looks like a POSIX time zone - try to process it
+
+ if { [catch {ProcessPosixTimeZone $tzfields} data opts] } {
+ if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } {
+ dict unset opts -errorinfo
+ }
+ return -options $opts $data
+ } else {
+ set TZData($timezone) $data
+ }
+
+ } else {
+ # We couldn't parse this as a POSIX time zone. Try again with a
+ # time zone file - this time without a colon
+
+ if { [catch { LoadTimeZoneFile $timezone }]
+ && [catch { LoadZoneinfoFile $timezone } - opts] } {
+ dict unset opts -errorinfo
+ return -options $opts "time zone $timezone not found"
+ }
+ set TZData($timezone) $TZData(:$timezone)
+ }
+ }
+
+ return
+}
+
+#----------------------------------------------------------------------
+#
+# GuessWindowsTimeZone --
+#
+# Determines the system time zone on windows.
+#
+# Parameters:
+# None.
+#
+# Results:
+# Returns a time zone specifier that corresponds to the system time zone
+# information found in the Registry.
+#
+# Bugs:
+# Fixed dates for DST change are unimplemented at present, because no
+# time zone information supplied with Windows actually uses them!
+#
+# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified,
+# GuessWindowsTimeZone looks in the Registry for the system time zone
+# information. It then attempts to find an entry in WinZoneInfo for a time
+# zone that uses the same rules. If it finds one, it returns it; otherwise,
+# it constructs a Posix-style time zone string and returns that.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GuessWindowsTimeZone {} {
+ variable WinZoneInfo
+ variable NoRegistry
+ variable TimeZoneBad
+
+ if { [info exists NoRegistry] } {
+ return :localtime
+ }
+
+ # Dredge time zone information out of the registry
+
+ if { [catch {
+ set rpath HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\TimeZoneInformation
+ set data [list \
+ [expr { -60
+ * [registry get $rpath Bias] }] \
+ [expr { -60
+ * [registry get $rpath StandardBias] }] \
+ [expr { -60 \
+ * [registry get $rpath DaylightBias] }]]
+ set stdtzi [registry get $rpath StandardStart]
+ foreach ind {0 2 14 4 6 8 10 12} {
+ binary scan $stdtzi @${ind}s val
+ lappend data $val
+ }
+ set daytzi [registry get $rpath DaylightStart]
+ foreach ind {0 2 14 4 6 8 10 12} {
+ binary scan $daytzi @${ind}s val
+ lappend data $val
+ }
+ }] } {
+ # Missing values in the Registry - bail out
+
+ return :localtime
+ }
+
+ # Make up a Posix time zone specifier if we can't find one. Check here
+ # that the tzdata file exists, in case we're running in an environment
+ # (e.g. starpack) where tzdata is incomplete. (Bug 1237907)
+
+ if { [dict exists $WinZoneInfo $data] } {
+ set tzname [dict get $WinZoneInfo $data]
+ if { ! [dict exists $TimeZoneBad $tzname] } {
+ dict set TimeZoneBad $tzname [catch {SetupTimeZone $tzname}]
+ }
+ } else {
+ set tzname {}
+ }
+ if { $tzname eq {} || [dict get $TimeZoneBad $tzname] } {
+ lassign $data \
+ bias stdBias dstBias \
+ stdYear stdMonth stdDayOfWeek stdDayOfMonth \
+ stdHour stdMinute stdSecond stdMillisec \
+ dstYear dstMonth dstDayOfWeek dstDayOfMonth \
+ dstHour dstMinute dstSecond dstMillisec
+ set stdDelta [expr { $bias + $stdBias }]
+ set dstDelta [expr { $bias + $dstBias }]
+ if { $stdDelta <= 0 } {
+ set stdSignum +
+ set stdDelta [expr { - $stdDelta }]
+ set dispStdSignum -
+ } else {
+ set stdSignum -
+ set dispStdSignum +
+ }
+ set hh [::format %02d [expr { $stdDelta / 3600 }]]
+ set mm [::format %02d [expr { ($stdDelta / 60 ) % 60 }]]
+ set ss [::format %02d [expr { $stdDelta % 60 }]]
+ set tzname {}
+ append tzname < $dispStdSignum $hh $mm > $stdSignum $hh : $mm : $ss
+ if { $stdMonth >= 0 } {
+ if { $dstDelta <= 0 } {
+ set dstSignum +
+ set dstDelta [expr { - $dstDelta }]
+ set dispDstSignum -
+ } else {
+ set dstSignum -
+ set dispDstSignum +
+ }
+ set hh [::format %02d [expr { $dstDelta / 3600 }]]
+ set mm [::format %02d [expr { ($dstDelta / 60 ) % 60 }]]
+ set ss [::format %02d [expr { $dstDelta % 60 }]]
+ append tzname < $dispDstSignum $hh $mm > $dstSignum $hh : $mm : $ss
+ if { $dstYear == 0 } {
+ append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek
+ } else {
+ # I have not been able to find any locale on which Windows
+ # converts time zone on a fixed day of the year, hence don't
+ # know how to interpret the fields. If someone can inform me,
+ # I'd be glad to code it up. For right now, we bail out in
+ # such a case.
+ return :localtime
+ }
+ append tzname / [::format %02d $dstHour] \
+ : [::format %02d $dstMinute] \
+ : [::format %02d $dstSecond]
+ if { $stdYear == 0 } {
+ append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek
+ } else {
+ # I have not been able to find any locale on which Windows
+ # converts time zone on a fixed day of the year, hence don't
+ # know how to interpret the fields. If someone can inform me,
+ # I'd be glad to code it up. For right now, we bail out in
+ # such a case.
+ return :localtime
+ }
+ append tzname / [::format %02d $stdHour] \
+ : [::format %02d $stdMinute] \
+ : [::format %02d $stdSecond]
+ }
+ dict set WinZoneInfo $data $tzname
+ }
+
+ return [dict get $WinZoneInfo $data]
+}
+
+#----------------------------------------------------------------------
+#
+# LoadTimeZoneFile --
+#
+# Load the data file that specifies the conversion between a
+# given time zone and Greenwich.
+#
+# Parameters:
+# fileName -- Name of the file to load
+#
+# Results:
+# None.
+#
+# Side effects:
+# TZData(:fileName) contains the time zone data
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LoadTimeZoneFile { fileName } {
+ variable DataDir
+ variable TZData
+
+ if { [info exists TZData($fileName)] } {
+ return
+ }
+
+ # Since an unsafe interp uses the [clock] command in the master, this code
+ # is security sensitive. Make sure that the path name cannot escape the
+ # given directory.
+
+ if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
+ return -code error \
+ -errorcode [list CLOCK badTimeZone $:fileName] \
+ "time zone \":$fileName\" not valid"
+ }
+ try {
+ source -encoding utf-8 [file join $DataDir $fileName]
+ } on error {} {
+ return -code error \
+ -errorcode [list CLOCK badTimeZone :$fileName] \
+ "time zone \":$fileName\" not found"
+ }
+ return
+}
+
+#----------------------------------------------------------------------
+#
+# LoadZoneinfoFile --
+#
+# Loads a binary time zone information file in Olson format.
+#
+# Parameters:
+# fileName - Relative path name of the file to load.
+#
+# Results:
+# Returns an empty result normally; returns an error if no Olson file
+# was found or the file was malformed in some way.
+#
+# Side effects:
+# TZData(:fileName) contains the time zone data
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LoadZoneinfoFile { fileName } {
+ variable ZoneinfoPaths
+
+ # Since an unsafe interp uses the [clock] command in the master, this code
+ # is security sensitive. Make sure that the path name cannot escape the
+ # given directory.
+
+ if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
+ return -code error \
+ -errorcode [list CLOCK badTimeZone $:fileName] \
+ "time zone \":$fileName\" not valid"
+ }
+ foreach d $ZoneinfoPaths {
+ set fname [file join $d $fileName]
+ if { [file readable $fname] && [file isfile $fname] } {
+ break
+ }
+ unset fname
+ }
+ ReadZoneinfoFile $fileName $fname
+}
+
+#----------------------------------------------------------------------
+#
+# ReadZoneinfoFile --
+#
+# Loads a binary time zone information file in Olson format.
+#
+# Parameters:
+# fileName - Name of the time zone (relative path name of the
+# file).
+# fname - Absolute path name of the file.
+#
+# Results:
+# Returns an empty result normally; returns an error if no Olson file
+# was found or the file was malformed in some way.
+#
+# Side effects:
+# TZData(:fileName) contains the time zone data
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
+ variable MINWIDE
+ variable TZData
+ if { ![file exists $fname] } {
+ return -code error "$fileName not found"
+ }
+
+ if { [file size $fname] > 262144 } {
+ return -code error "$fileName too big"
+ }
+
+ # Suck in all the data from the file
+
+ set f [open $fname r]
+ fconfigure $f -translation binary
+ set d [read $f]
+ close $f
+
+ # The file begins with a magic number, sixteen reserved bytes, and then
+ # six 4-byte integers giving counts of fileds in the file.
+
+ binary scan $d a4a1x15IIIIII \
+ magic version nIsGMT nIsStd nLeap nTime nType nChar
+ set seek 44
+ set ilen 4
+ set iformat I
+ if { $magic != {TZif} } {
+ return -code error "$fileName not a time zone information file"
+ }
+ if { $nType > 255 } {
+ return -code error "$fileName contains too many time types"
+ }
+ # Accept only Posix-style zoneinfo. Sorry, 'leaps' bigots.
+ if { $nLeap != 0 } {
+ return -code error "$fileName contains leap seconds"
+ }
+
+ # In a version 2 file, we use the second part of the file, which contains
+ # 64-bit transition times.
+
+ if {$version eq "2"} {
+ set seek [expr {
+ 44
+ + 5 * $nTime
+ + 6 * $nType
+ + 4 * $nLeap
+ + $nIsStd
+ + $nIsGMT
+ + $nChar
+ }]
+ binary scan $d @${seek}a4a1x15IIIIII \
+ magic version nIsGMT nIsStd nLeap nTime nType nChar
+ if {$magic ne {TZif}} {
+ return -code error "seek address $seek miscomputed, magic = $magic"
+ }
+ set iformat W
+ set ilen 8
+ incr seek 44
+ }
+
+ # Next come ${nTime} transition times, followed by ${nTime} time type
+ # codes. The type codes are unsigned 1-byte quantities. We insert an
+ # arbitrary start time in front of the transitions.
+
+ binary scan $d @${seek}${iformat}${nTime}c${nTime} times tempCodes
+ incr seek [expr { ($ilen + 1) * $nTime }]
+ set times [linsert $times 0 $MINWIDE]
+ set codes {}
+ foreach c $tempCodes {
+ lappend codes [expr { $c & 0xff }]
+ }
+ set codes [linsert $codes 0 0]
+
+ # Next come ${nType} time type descriptions, each of which has an offset
+ # (seconds east of GMT), a DST indicator, and an index into the
+ # abbreviation text.
+
+ for { set i 0 } { $i < $nType } { incr i } {
+ binary scan $d @${seek}Icc gmtOff isDst abbrInd
+ lappend types [list $gmtOff $isDst $abbrInd]
+ incr seek 6
+ }
+
+ # Next come $nChar characters of time zone name abbreviations, which are
+ # null-terminated.
+ # We build them up into a dictionary indexed by character index, because
+ # that's what's in the indices above.
+
+ binary scan $d @${seek}a${nChar} abbrs
+ incr seek ${nChar}
+ set abbrList [split $abbrs \0]
+ set i 0
+ set abbrevs {}
+ foreach a $abbrList {
+ for {set j 0} {$j <= [string length $a]} {incr j} {
+ dict set abbrevs $i [string range $a $j end]
+ incr i
+ }
+ }
+
+ # Package up a list of tuples, each of which contains transition time,
+ # seconds east of Greenwich, DST flag and time zone abbreviation.
+
+ set r {}
+ set lastTime $MINWIDE
+ foreach t $times c $codes {
+ if { $t < $lastTime } {
+ return -code error "$fileName has times out of order"
+ }
+ set lastTime $t
+ lassign [lindex $types $c] gmtoff isDst abbrInd
+ set abbrev [dict get $abbrevs $abbrInd]
+ lappend r [list $t $gmtoff $isDst $abbrev]
+ }
+
+ # In a version 2 file, there is also a POSIX-style time zone description
+ # at the very end of the file. To get to it, skip over nLeap leap second
+ # values (8 bytes each),
+ # nIsStd standard/DST indicators and nIsGMT UTC/local indicators.
+
+ if {$version eq {2}} {
+ set seek [expr {$seek + 8 * $nLeap + $nIsStd + $nIsGMT + 1}]
+ set last [string first \n $d $seek]
+ set posix [string range $d $seek [expr {$last-1}]]
+ if {[llength $posix] > 0} {
+ set posixFields [ParsePosixTimeZone $posix]
+ foreach tuple [ProcessPosixTimeZone $posixFields] {
+ lassign $tuple t gmtoff isDst abbrev
+ if {$t > $lastTime} {
+ lappend r $tuple
+ }
+ }
+ }
+ }
+
+ set TZData(:$fileName) $r
+
+ return
+}
+
+#----------------------------------------------------------------------
+#
+# ParsePosixTimeZone --
+#
+# Parses the TZ environment variable in Posix form
+#
+# Parameters:
+# tz Time zone specifier to be interpreted
+#
+# Results:
+# Returns a dictionary whose values contain the various pieces of the
+# time zone specification.
+#
+# Side effects:
+# None.
+#
+# Errors:
+# Throws an error if the syntax of the time zone is incorrect.
+#
+# The following keys are present in the dictionary:
+# stdName - Name of the time zone when Daylight Saving Time
+# is not in effect.
+# stdSignum - Sign (+, -, or empty) of the offset from Greenwich
+# to the given (non-DST) time zone. + and the empty
+# string denote zones west of Greenwich, - denotes east
+# of Greenwich; this is contrary to the ISO convention
+# but follows Posix.
+# stdHours - Hours part of the offset from Greenwich to the given
+# (non-DST) time zone.
+# stdMinutes - Minutes part of the offset from Greenwich to the
+# given (non-DST) time zone. Empty denotes zero.
+# stdSeconds - Seconds part of the offset from Greenwich to the
+# given (non-DST) time zone. Empty denotes zero.
+# dstName - Name of the time zone when DST is in effect, or the
+# empty string if the time zone does not observe Daylight
+# Saving Time.
+# dstSignum, dstHours, dstMinutes, dstSeconds -
+# Fields corresponding to stdSignum, stdHours, stdMinutes,
+# stdSeconds for the Daylight Saving Time version of the
+# time zone. If dstHours is empty, it is presumed to be 1.
+# startDayOfYear - The ordinal number of the day of the year on which
+# Daylight Saving Time begins. If this field is
+# empty, then DST begins on a given month-week-day,
+# as below.
+# startJ - The letter J, or an empty string. If a J is present in
+# this field, then startDayOfYear does not count February 29
+# even in leap years.
+# startMonth - The number of the month in which Daylight Saving Time
+# begins, supplied if startDayOfYear is empty. If both
+# startDayOfYear and startMonth are empty, then US rules
+# are presumed.
+# startWeekOfMonth - The number of the week in the month in which
+# Daylight Saving Time begins, in the range 1-5.
+# 5 denotes the last week of the month even in a
+# 4-week month.
+# startDayOfWeek - The number of the day of the week (Sunday=0,
+# Saturday=6) on which Daylight Saving Time begins.
+# startHours - The hours part of the time of day at which Daylight
+# Saving Time begins. An empty string is presumed to be 2.
+# startMinutes - The minutes part of the time of day at which DST begins.
+# An empty string is presumed zero.
+# startSeconds - The seconds part of the time of day at which DST begins.
+# An empty string is presumed zero.
+# endDayOfYear, endJ, endMonth, endWeekOfMonth, endDayOfWeek,
+# endHours, endMinutes, endSeconds -
+# Specify the end of DST in the same way that the start* fields
+# specify the beginning of DST.
+#
+# This procedure serves only to break the time specifier into fields. No
+# attempt is made to canonicalize the fields or supply default values.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParsePosixTimeZone { tz } {
+ if {[regexp -expanded -nocase -- {
+ ^
+ # 1 - Standard time zone name
+ ([[:alpha:]]+ | <[-+[:alnum:]]+>)
+ # 2 - Standard time zone offset, signum
+ ([-+]?)
+ # 3 - Standard time zone offset, hours
+ ([[:digit:]]{1,2})
+ (?:
+ # 4 - Standard time zone offset, minutes
+ : ([[:digit:]]{1,2})
+ (?:
+ # 5 - Standard time zone offset, seconds
+ : ([[:digit:]]{1,2} )
+ )?
+ )?
+ (?:
+ # 6 - DST time zone name
+ ([[:alpha:]]+ | <[-+[:alnum:]]+>)
+ (?:
+ (?:
+ # 7 - DST time zone offset, signum
+ ([-+]?)
+ # 8 - DST time zone offset, hours
+ ([[:digit:]]{1,2})
+ (?:
+ # 9 - DST time zone offset, minutes
+ : ([[:digit:]]{1,2})
+ (?:
+ # 10 - DST time zone offset, seconds
+ : ([[:digit:]]{1,2})
+ )?
+ )?
+ )?
+ (?:
+ ,
+ (?:
+ # 11 - Optional J in n and Jn form 12 - Day of year
+ ( J ? ) ( [[:digit:]]+ )
+ | M
+ # 13 - Month number 14 - Week of month 15 - Day of week
+ ( [[:digit:]] + )
+ [.] ( [[:digit:]] + )
+ [.] ( [[:digit:]] + )
+ )
+ (?:
+ # 16 - Start time of DST - hours
+ / ( [[:digit:]]{1,2} )
+ (?:
+ # 17 - Start time of DST - minutes
+ : ( [[:digit:]]{1,2} )
+ (?:
+ # 18 - Start time of DST - seconds
+ : ( [[:digit:]]{1,2} )
+ )?
+ )?
+ )?
+ ,
+ (?:
+ # 19 - Optional J in n and Jn form 20 - Day of year
+ ( J ? ) ( [[:digit:]]+ )
+ | M
+ # 21 - Month number 22 - Week of month 23 - Day of week
+ ( [[:digit:]] + )
+ [.] ( [[:digit:]] + )
+ [.] ( [[:digit:]] + )
+ )
+ (?:
+ # 24 - End time of DST - hours
+ / ( [[:digit:]]{1,2} )
+ (?:
+ # 25 - End time of DST - minutes
+ : ( [[:digit:]]{1,2} )
+ (?:
+ # 26 - End time of DST - seconds
+ : ( [[:digit:]]{1,2} )
+ )?
+ )?
+ )?
+ )?
+ )?
+ )?
+ $
+ } $tz -> x(stdName) x(stdSignum) x(stdHours) x(stdMinutes) x(stdSeconds) \
+ x(dstName) x(dstSignum) x(dstHours) x(dstMinutes) x(dstSeconds) \
+ x(startJ) x(startDayOfYear) \
+ x(startMonth) x(startWeekOfMonth) x(startDayOfWeek) \
+ x(startHours) x(startMinutes) x(startSeconds) \
+ x(endJ) x(endDayOfYear) \
+ x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \
+ x(endHours) x(endMinutes) x(endSeconds)] } {
+ # it's a good timezone
+
+ return [array get x]
+ }
+
+ return -code error\
+ -errorcode [list CLOCK badTimeZone $tz] \
+ "unable to parse time zone specification \"$tz\""
+}
+
+#----------------------------------------------------------------------
+#
+# ProcessPosixTimeZone --
+#
+# Handle a Posix time zone after it's been broken out into fields.
+#
+# Parameters:
+# z - Dictionary returned from 'ParsePosixTimeZone'
+#
+# Results:
+# Returns time zone information for the 'TZData' array.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ProcessPosixTimeZone { z } {
+ variable MINWIDE
+ variable TZData
+
+ # Determine the standard time zone name and seconds east of Greenwich
+
+ set stdName [dict get $z stdName]
+ if { [string index $stdName 0] eq {<} } {
+ set stdName [string range $stdName 1 end-1]
+ }
+ if { [dict get $z stdSignum] eq {-} } {
+ set stdSignum +1
+ } else {
+ set stdSignum -1
+ }
+ set stdHours [lindex [::scan [dict get $z stdHours] %d] 0]
+ if { [dict get $z stdMinutes] ne {} } {
+ set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0]
+ } else {
+ set stdMinutes 0
+ }
+ if { [dict get $z stdSeconds] ne {} } {
+ set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0]
+ } else {
+ set stdSeconds 0
+ }
+ set stdOffset [expr {
+ (($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum
+ }]
+ set data [list [list $MINWIDE $stdOffset 0 $stdName]]
+
+ # If there's no daylight zone, we're done
+
+ set dstName [dict get $z dstName]
+ if { $dstName eq {} } {
+ return $data
+ }
+ if { [string index $dstName 0] eq {<} } {
+ set dstName [string range $dstName 1 end-1]
+ }
+
+ # Determine the daylight name
+
+ if { [dict get $z dstSignum] eq {-} } {
+ set dstSignum +1
+ } else {
+ set dstSignum -1
+ }
+ if { [dict get $z dstHours] eq {} } {
+ set dstOffset [expr { 3600 + $stdOffset }]
+ } else {
+ set dstHours [lindex [::scan [dict get $z dstHours] %d] 0]
+ if { [dict get $z dstMinutes] ne {} } {
+ set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0]
+ } else {
+ set dstMinutes 0
+ }
+ if { [dict get $z dstSeconds] ne {} } {
+ set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0]
+ } else {
+ set dstSeconds 0
+ }
+ set dstOffset [expr {
+ (($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum
+ }]
+ }
+
+ # Fill in defaults for European or US DST rules
+ # US start time is the second Sunday in March
+ # EU start time is the last Sunday in March
+ # US end time is the first Sunday in November.
+ # EU end time is the last Sunday in October
+
+ if {
+ [dict get $z startDayOfYear] eq {}
+ && [dict get $z startMonth] eq {}
+ } then {
+ if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
+ # EU
+ dict set z startWeekOfMonth 5
+ if {$stdHours>2} {
+ dict set z startHours 2
+ } else {
+ dict set z startHours [expr {$stdHours+1}]
+ }
+ } else {
+ # US
+ dict set z startWeekOfMonth 2
+ dict set z startHours 2
+ }
+ dict set z startMonth 3
+ dict set z startDayOfWeek 0
+ dict set z startMinutes 0
+ dict set z startSeconds 0
+ }
+ if {
+ [dict get $z endDayOfYear] eq {}
+ && [dict get $z endMonth] eq {}
+ } then {
+ if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
+ # EU
+ dict set z endMonth 10
+ dict set z endWeekOfMonth 5
+ if {$stdHours>2} {
+ dict set z endHours 3
+ } else {
+ dict set z endHours [expr {$stdHours+2}]
+ }
+ } else {
+ # US
+ dict set z endMonth 11
+ dict set z endWeekOfMonth 1
+ dict set z endHours 2
+ }
+ dict set z endDayOfWeek 0
+ dict set z endMinutes 0
+ dict set z endSeconds 0
+ }
+
+ # Put DST in effect in all years from 1916 to 2099.
+
+ for { set y 1916 } { $y < 2100 } { incr y } {
+ set startTime [DeterminePosixDSTTime $z start $y]
+ incr startTime [expr { - wide($stdOffset) }]
+ set endTime [DeterminePosixDSTTime $z end $y]
+ incr endTime [expr { - wide($dstOffset) }]
+ if { $startTime < $endTime } {
+ lappend data \
+ [list $startTime $dstOffset 1 $dstName] \
+ [list $endTime $stdOffset 0 $stdName]
+ } else {
+ lappend data \
+ [list $endTime $stdOffset 0 $stdName] \
+ [list $startTime $dstOffset 1 $dstName]
+ }
+ }
+
+ return $data
+}
+
+#----------------------------------------------------------------------
+#
+# DeterminePosixDSTTime --
+#
+# Determines the time that Daylight Saving Time starts or ends from a
+# Posix time zone specification.
+#
+# Parameters:
+# z - Time zone data returned from ParsePosixTimeZone.
+# Missing fields are expected to be filled in with
+# default values.
+# bound - The word 'start' or 'end'
+# y - The year for which the transition time is to be determined.
+#
+# Results:
+# Returns the transition time as a count of seconds from the epoch. The
+# time is relative to the wall clock, not UTC.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
+ variable FEB_28
+
+ # Determine the start or end day of DST
+
+ set date [dict create era CE year $y]
+ set doy [dict get $z ${bound}DayOfYear]
+ if { $doy ne {} } {
+ # Time was specified as a day of the year
+
+ if { [dict get $z ${bound}J] ne {}
+ && [IsGregorianLeapYear $y]
+ && ( $doy > $FEB_28 ) } {
+ incr doy
+ }
+ dict set date dayOfYear $doy
+ set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222]
+ } else {
+ # Time was specified as a day of the week within a month
+
+ dict set date month [dict get $z ${bound}Month]
+ dict set date dayOfWeek [dict get $z ${bound}DayOfWeek]
+ set dowim [dict get $z ${bound}WeekOfMonth]
+ if { $dowim >= 5 } {
+ set dowim -1
+ }
+ dict set date dayOfWeekInMonth $dowim
+ set date [GetJulianDayFromEraYearMonthWeekDay $date[set date {}] 2361222]
+
+ }
+
+ set jd [dict get $date julianDay]
+ set seconds [expr {
+ wide($jd) * wide(86400) - wide(210866803200)
+ }]
+
+ set h [dict get $z ${bound}Hours]
+ if { $h eq {} } {
+ set h 2
+ } else {
+ set h [lindex [::scan $h %d] 0]
+ }
+ set m [dict get $z ${bound}Minutes]
+ if { $m eq {} } {
+ set m 0
+ } else {
+ set m [lindex [::scan $m %d] 0]
+ }
+ set s [dict get $z ${bound}Seconds]
+ if { $s eq {} } {
+ set s 0
+ } else {
+ set s [lindex [::scan $s %d] 0]
+ }
+ set tod [expr { ( $h * 60 + $m ) * 60 + $s }]
+ return [expr { $seconds + $tod }]
+}
+
+#----------------------------------------------------------------------
+#
+# GetLocaleEra --
+#
+# Given local time expressed in seconds from the Posix epoch,
+# determine localized era and year within the era.
+#
+# Parameters:
+# date - Dictionary that must contain the keys, 'localSeconds',
+# whose value is expressed as the appropriate local time;
+# and 'year', whose value is the Gregorian year.
+# etable - Value of the LOCALE_ERAS key in the message catalogue
+# for the target locale.
+#
+# Results:
+# Returns the dictionary, augmented with the keys, 'localeEra' and
+# 'localeYear'.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetLocaleEra { date etable } {
+ set index [BSearch $etable [dict get $date localSeconds]]
+ if { $index < 0} {
+ dict set date localeEra \
+ [::format %02d [expr { [dict get $date year] / 100 }]]
+ dict set date localeYear [expr {
+ [dict get $date year] % 100
+ }]
+ } else {
+ dict set date localeEra [lindex $etable $index 1]
+ dict set date localeYear [expr {
+ [dict get $date year] - [lindex $etable $index 2]
+ }]
+ }
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# GetJulianDayFromEraYearDay --
+#
+# Given a year, month and day on the Gregorian calendar, determines
+# the Julian Day Number beginning at noon on that date.
+#
+# Parameters:
+# date -- A dictionary in which the 'era', 'year', and
+# 'dayOfYear' slots are populated. The calendar in use
+# is determined by the date itself relative to:
+# changeover -- Julian day on which the Gregorian calendar was
+# adopted in the current locale.
+#
+# Results:
+# Returns the given dictionary augmented with a 'julianDay' key whose
+# value is the desired Julian Day Number, and a 'gregorian' key that
+# specifies whether the calendar is Gregorian (1) or Julian (0).
+#
+# Side effects:
+# None.
+#
+# Bugs:
+# This code needs to be moved to the C layer.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
+ # Get absolute year number from the civil year
+
+ switch -exact -- [dict get $date era] {
+ BCE {
+ set year [expr { 1 - [dict get $date year] }]
+ }
+ CE {
+ set year [dict get $date year]
+ }
+ }
+ set ym1 [expr { $year - 1 }]
+
+ # Try the Gregorian calendar first.
+
+ dict set date gregorian 1
+ set jd [expr {
+ 1721425
+ + [dict get $date dayOfYear]
+ + ( 365 * $ym1 )
+ + ( $ym1 / 4 )
+ - ( $ym1 / 100 )
+ + ( $ym1 / 400 )
+ }]
+
+ # If the date is before the Gregorian change, use the Julian calendar.
+
+ if { $jd < $changeover } {
+ dict set date gregorian 0
+ set jd [expr {
+ 1721423
+ + [dict get $date dayOfYear]
+ + ( 365 * $ym1 )
+ + ( $ym1 / 4 )
+ }]
+ }
+
+ dict set date julianDay $jd
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# GetJulianDayFromEraYearMonthWeekDay --
+#
+# Determines the Julian Day number corresponding to the nth given
+# day-of-the-week in a given month.
+#
+# Parameters:
+# date - Dictionary containing the keys, 'era', 'year', 'month'
+# 'weekOfMonth', 'dayOfWeek', and 'dayOfWeekInMonth'.
+# changeover - Julian Day of adoption of the Gregorian calendar
+#
+# Results:
+# Returns the given dictionary, augmented with a 'julianDay' key.
+#
+# Side effects:
+# None.
+#
+# Bugs:
+# This code needs to be moved to the C layer.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
+ # Come up with a reference day; either the zeroeth day of the given month
+ # (dayOfWeekInMonth >= 0) or the seventh day of the following month
+ # (dayOfWeekInMonth < 0)
+
+ set date2 $date
+ set week [dict get $date dayOfWeekInMonth]
+ if { $week >= 0 } {
+ dict set date2 dayOfMonth 0
+ } else {
+ dict incr date2 month
+ dict set date2 dayOfMonth 7
+ }
+ set date2 [GetJulianDayFromEraYearMonthDay $date2[set date2 {}] \
+ $changeover]
+ set wd0 [WeekdayOnOrBefore [dict get $date dayOfWeek] \
+ [dict get $date2 julianDay]]
+ dict set date julianDay [expr { $wd0 + 7 * $week }]
+ return $date
+}
+
+#----------------------------------------------------------------------
+#
+# IsGregorianLeapYear --
+#
+# Determines whether a given date represents a leap year in the
+# Gregorian calendar.
+#
+# Parameters:
+# date -- The date to test. The fields, 'era', 'year' and 'gregorian'
+# must be set.
+#
+# Results:
+# Returns 1 if the year is a leap year, 0 otherwise.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::IsGregorianLeapYear { date } {
+ switch -exact -- [dict get $date era] {
+ BCE {
+ set year [expr { 1 - [dict get $date year]}]
+ }
+ CE {
+ set year [dict get $date year]
+ }
+ }
+ if { $year % 4 != 0 } {
+ return 0
+ } elseif { ![dict get $date gregorian] } {
+ return 1
+ } elseif { $year % 400 == 0 } {
+ return 1
+ } elseif { $year % 100 == 0 } {
+ return 0
+ } else {
+ return 1
+ }
+}
+
+#----------------------------------------------------------------------
+#
+# WeekdayOnOrBefore --
+#
+# Determine the nearest day of week (given by the 'weekday' parameter,
+# Sunday==0) on or before a given Julian Day.
+#
+# Parameters:
+# weekday -- Day of the week
+# j -- Julian Day number
+#
+# Results:
+# Returns the Julian Day Number of the desired date.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
+ set k [expr { ( $weekday + 6 ) % 7 }]
+ return [expr { $j - ( $j - $k ) % 7 }]
+}
+
+#----------------------------------------------------------------------
+#
+# BSearch --
+#
+# Service procedure that does binary search in several places inside the
+# 'clock' command.
+#
+# Parameters:
+# list - List of lists, sorted in ascending order by the
+# first elements
+# key - Value to search for
+#
+# Results:
+# Returns the index of the greatest element in $list that is less than
+# or equal to $key.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::BSearch { list key } {
+ if {[llength $list] == 0} {
+ return -1
+ }
+ if { $key < [lindex $list 0 0] } {
+ return -1
+ }
+
+ set l 0
+ set u [expr { [llength $list] - 1 }]
+
+ while { $l < $u } {
+ # At this point, we know that
+ # $k >= [lindex $list $l 0]
+ # Either $u == [llength $list] or else $k < [lindex $list $u+1 0]
+ # We find the midpoint of the interval {l,u} rounded UP, compare
+ # against it, and set l or u to maintain the invariant. Note that the
+ # interval shrinks at each step, guaranteeing convergence.
+
+ set m [expr { ( $l + $u + 1 ) / 2 }]
+ if { $key >= [lindex $list $m 0] } {
+ set l $m
+ } else {
+ set u [expr { $m - 1 }]
+ }
+ }
+
+ return $l
+}
+
+#----------------------------------------------------------------------
+#
+# clock add --
+#
+# Adds an offset to a given time.
+#
+# Syntax:
+# clock add clockval ?count unit?... ?-option value?
+#
+# Parameters:
+# clockval -- Starting time value
+# count -- Amount of a unit of time to add
+# unit -- Unit of time to add, must be one of:
+# years year months month weeks week
+# days day hours hour minutes minute
+# seconds second
+#
+# Options:
+# -gmt BOOLEAN
+# (Deprecated) Flag synonymous with '-timezone :GMT'
+# -timezone ZONE
+# Name of the time zone in which calculations are to be done.
+# -locale NAME
+# Name of the locale in which calculations are to be done.
+# Used to determine the Gregorian change date.
+#
+# Results:
+# Returns the given time adjusted by the given offset(s) in
+# order.
+#
+# Notes:
+# It is possible that adding a number of months or years will adjust the
+# day of the month as well. For instance, the time at one month after
+# 31 January is either 28 or 29 February, because February has fewer
+# than 31 days.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::add { clockval args } {
+ if { [llength $args] % 2 != 0 } {
+ set cmdName "clock add"
+ return -code error \
+ -errorcode [list CLOCK wrongNumArgs] \
+ "wrong \# args: should be\
+ \"$cmdName clockval ?number units?...\
+ ?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\""
+ }
+ if { [catch { expr {wide($clockval)} } result] } {
+ return -code error $result
+ }
+
+ set offsets {}
+ set gmt 0
+ set locale c
+ set timezone [GetSystemTimeZone]
+
+ foreach { a b } $args {
+ if { [string is integer -strict $a] } {
+ lappend offsets $a $b
+ } else {
+ switch -exact -- $a {
+ -g - -gm - -gmt {
+ set gmt $b
+ }
+ -l - -lo - -loc - -loca - -local - -locale {
+ set locale [string tolower $b]
+ }
+ -t - -ti - -tim - -time - -timez - -timezo - -timezon -
+ -timezone {
+ set timezone $b
+ }
+ default {
+ throw [list CLOCK badSwitch $a] \
+ "bad switch \"$a\",\
+ must be -gmt, -locale or -timezone"
+ }
+ }
+ }
+ }
+
+ # Check options for validity
+
+ if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } {
+ return -code error \
+ -errorcode [list CLOCK gmtWithTimezone] \
+ "cannot use -gmt and -timezone in same call"
+ }
+ if { [catch { expr { wide($clockval) } } result] } {
+ return -code error "expected integer but got \"$clockval\""
+ }
+ if { ![string is boolean -strict $gmt] } {
+ return -code error "expected boolean value but got \"$gmt\""
+ } elseif { $gmt } {
+ set timezone :GMT
+ }
+
+ EnterLocale $locale oldLocale
+
+ set changeover [mc GREGORIAN_CHANGE_DATE]
+
+ if {[catch {SetupTimeZone $timezone} retval opts]} {
+ dict unset opts -errorinfo
+ return -options $opts $retval
+ }
+
+ try {
+ foreach { quantity unit } $offsets {
+ switch -exact -- $unit {
+ years - year {
+ set clockval [AddMonths [expr { 12 * $quantity }] \
+ $clockval $timezone $changeover]
+ }
+ months - month {
+ set clockval [AddMonths $quantity $clockval $timezone \
+ $changeover]
+ }
+
+ weeks - week {
+ set clockval [AddDays [expr { 7 * $quantity }] \
+ $clockval $timezone $changeover]
+ }
+ days - day {
+ set clockval [AddDays $quantity $clockval $timezone \
+ $changeover]
+ }
+
+ hours - hour {
+ set clockval [expr { 3600 * $quantity + $clockval }]
+ }
+ minutes - minute {
+ set clockval [expr { 60 * $quantity + $clockval }]
+ }
+ seconds - second {
+ set clockval [expr { $quantity + $clockval }]
+ }
+
+ default {
+ throw [list CLOCK badUnit $unit] \
+ "unknown unit \"$unit\", must be \
+ years, months, weeks, days, hours, minutes or seconds"
+ }
+ }
+ }
+ return $clockval
+ } trap CLOCK {result opts} {
+ # Conceal the innards of [clock] when it's an expected error
+ dict unset opts -errorinfo
+ return -options $opts $result
+ } finally {
+ # Restore the locale
+
+ if { [info exists oldLocale] } {
+ mclocale $oldLocale
+ }
+ }
+}
+
+#----------------------------------------------------------------------
+#
+# AddMonths --
+#
+# Add a given number of months to a given clock value in a given
+# time zone.
+#
+# Parameters:
+# months - Number of months to add (may be negative)
+# clockval - Seconds since the epoch before the operation
+# timezone - Time zone in which the operation is to be performed
+#
+# Results:
+# Returns the new clock value as a number of seconds since
+# the epoch.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
+ variable DaysInRomanMonthInCommonYear
+ variable DaysInRomanMonthInLeapYear
+ variable TZData
+
+ # Convert the time to year, month, day, and fraction of day.
+
+ set date [GetDateFields $clockval $TZData($timezone) $changeover]
+ dict set date secondOfDay [expr {
+ [dict get $date localSeconds] % 86400
+ }]
+ dict set date tzName $timezone
+
+ # Add the requisite number of months
+
+ set m [dict get $date month]
+ incr m $months
+ incr m -1
+ set delta [expr { $m / 12 }]
+ set mm [expr { $m % 12 }]
+ dict set date month [expr { $mm + 1 }]
+ dict incr date year $delta
+
+ # If the date doesn't exist in the current month, repair it
+
+ if { [IsGregorianLeapYear $date] } {
+ set hath [lindex $DaysInRomanMonthInLeapYear $mm]
+ } else {
+ set hath [lindex $DaysInRomanMonthInCommonYear $mm]
+ }
+ if { [dict get $date dayOfMonth] > $hath } {
+ dict set date dayOfMonth $hath
+ }
+
+ # Reconvert to a number of seconds
+
+ set date [GetJulianDayFromEraYearMonthDay \
+ $date[set date {}]\
+ $changeover]
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
+ set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
+ $changeover]
+
+ return [dict get $date seconds]
+}
+
+#----------------------------------------------------------------------
+#
+# AddDays --
+#
+# Add a given number of days to a given clock value in a given time
+# zone.
+#
+# Parameters:
+# days - Number of days to add (may be negative)
+# clockval - Seconds since the epoch before the operation
+# timezone - Time zone in which the operation is to be performed
+# changeover - Julian Day on which the Gregorian calendar was adopted
+# in the target locale.
+#
+# Results:
+# Returns the new clock value as a number of seconds since the epoch.
+#
+# Side effects:
+# None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AddDays { days clockval timezone changeover } {
+ variable TZData
+
+ # Convert the time to Julian Day
+
+ set date [GetDateFields $clockval $TZData($timezone) $changeover]
+ dict set date secondOfDay [expr {
+ [dict get $date localSeconds] % 86400
+ }]
+ dict set date tzName $timezone
+
+ # Add the requisite number of days
+
+ dict incr date julianDay $days
+
+ # Reconvert to a number of seconds
+
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
+ set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
+ $changeover]
+
+ return [dict get $date seconds]
+}
+
+#----------------------------------------------------------------------
+#
+# mc --
+#
+# Wrapper around ::msgcat::mc that caches the result according to the
+# locale.
+#
+# Parameters:
+# Accepts the name of the message to retrieve.
+#
+# Results:
+# Returns the message text.
+#
+# Side effects:
+# Caches the message text.
+#
+# Notes:
+# Only the single-argument version of [mc] is supported.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::mc { name } {
+ variable McLoaded
+ set Locale [mclocale]
+ if { [dict exists $McLoaded $Locale $name] } {
+ return [dict get $McLoaded $Locale $name]
+ }
+ set val [::msgcat::mc $name]
+ dict set McLoaded $Locale $name $val
+ return $val
+}
+
+#----------------------------------------------------------------------
+#
+# ClearCaches --
+#
+# Clears all caches to reclaim the memory used in [clock]
+#
+# Parameters:
+# None.
+#
+# Results:
+# None.
+#
+# Side effects:
+# Caches are cleared.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ClearCaches {} {
+ variable FormatProc
+ variable LocaleNumeralCache
+ variable McLoaded
+ variable CachedSystemTimeZone
+ variable TimeZoneBad
+
+ foreach p [info procs [namespace current]::scanproc'*] {
+ rename $p {}
+ }
+ foreach p [info procs [namespace current]::formatproc'*] {
+ rename $p {}
+ }
+
+ catch {unset FormatProc}
+ set LocaleNumeralCache {}
+ set McLoaded {}
+ catch {unset CachedSystemTimeZone}
+ set TimeZoneBad {}
+ InitTZData
+}
diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl
index a78dc93..4cf73d0 100644
--- a/library/dde/pkgIndex.tcl
+++ b/library/dde/pkgIndex.tcl
@@ -1 +1,7 @@
-package ifneeded dde 1.1 "load [list [file join $dir tcldde82.dll]] dde"
+if {([info commands ::tcl::pkgconfig] eq "")
+ || ([info sharedlibextension] ne ".dll")} return
+if {[::tcl::pkgconfig get debug]} {
+ package ifneeded dde 1.4.0 [list load [file join $dir tcldde14g.dll] dde]
+} else {
+ package ifneeded dde 1.4.0 [list load [file join $dir tcldde14.dll] dde]
+}
diff --git a/library/dde1.1/pkgIndex.tcl b/library/dde1.1/pkgIndex.tcl
deleted file mode 100644
index a78dc93..0000000
--- a/library/dde1.1/pkgIndex.tcl
+++ /dev/null
@@ -1 +0,0 @@
-package ifneeded dde 1.1 "load [list [file join $dir tcldde82.dll]] dde"
diff --git a/library/encoding/cp1250.enc b/library/encoding/cp1250.enc
index 934539a..070ad90 100644
--- a/library/encoding/cp1250.enc
+++ b/library/encoding/cp1250.enc
@@ -10,9 +10,9 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0083201E2026202020210088203001602039015A0164017D0179
+20AC0081201A0083201E2026202020210088203001602039015A0164017D0179
009020182019201C201D202220132014009821220161203A015B0165017E017A
-00A002C702D8014100A4010400A600A700A800A9015E00AB000000AD00AE017B
+00A002C702D8014100A4010400A600A700A800A9015E00AB00AC00AD00AE017B
00B000B102DB014200B400B500B600B700B80105015F00BB013D02DD013E017C
015400C100C2010200C40139010600C7010C00C9011800CB011A00CD00CE010E
01100143014700D300D4015000D600D70158016E00DA017000DC00DD016200DF
diff --git a/library/encoding/cp1251.enc b/library/encoding/cp1251.enc
index 7daed16..376b1b4 100644
--- a/library/encoding/cp1251.enc
+++ b/library/encoding/cp1251.enc
@@ -10,7 +10,7 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-04020403201A0453201E2026202020210088203004092039040A040C040B040F
+04020403201A0453201E20262020202120AC203004092039040A040C040B040F
045220182019201C201D202220132014009821220459203A045A045C045B045F
00A0040E045E040800A4049000A600A7040100A9040400AB00AC00AD00AE0407
00B000B104060456049100B500B600B704512116045400BB0458040504550457
diff --git a/library/encoding/cp1252.enc b/library/encoding/cp1252.enc
index fe55a46..dd525ea 100644
--- a/library/encoding/cp1252.enc
+++ b/library/encoding/cp1252.enc
@@ -10,8 +10,8 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0192201E20262020202102C62030016020390152008D008E008F
-009020182019201C201D20222013201402DC21220161203A0153009D009E0178
+20AC0081201A0192201E20262020202102C62030016020390152008D017D008F
+009020182019201C201D20222013201402DC21220161203A0153009D017E0178
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
diff --git a/library/encoding/cp1253.enc b/library/encoding/cp1253.enc
index a934bc9..a8754c3 100644
--- a/library/encoding/cp1253.enc
+++ b/library/encoding/cp1253.enc
@@ -10,7 +10,7 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0192201E20262020202100882030008A2039008C008D008E008F
+20AC0081201A0192201E20262020202100882030008A2039008C008D008E008F
009020182019201C201D20222013201400982122009A203A009C009D009E009F
00A00385038600A300A400A500A600A700A800A9000000AB00AC00AD00AE2015
00B000B100B200B3038400B500B600B703880389038A00BB038C00BD038E038F
diff --git a/library/encoding/cp1254.enc b/library/encoding/cp1254.enc
index d8553a2..b9e3b3c 100644
--- a/library/encoding/cp1254.enc
+++ b/library/encoding/cp1254.enc
@@ -10,7 +10,7 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0192201E20262020202102C62030016020390152008D008E008F
+20AC0081201A0192201E20262020202102C62030016020390152008D008E008F
009020182019201C201D20222013201402DC21220161203A0153009D009E0178
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
diff --git a/library/encoding/cp1255.enc b/library/encoding/cp1255.enc
index 275c016..6e78b95 100644
--- a/library/encoding/cp1255.enc
+++ b/library/encoding/cp1255.enc
@@ -10,11 +10,11 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0192201E20262020202102C62030008A2039008C008D008E008F
+20AC0081201A0192201E20262020202102C62030008A2039008C008D008E008F
009020182019201C201D20222013201402DC2122009A203A009C009D009E009F
-00A0000000A200A320AA00A500A600A700A800A9000000AB00AC00AD00AE00AF
-00B000B100B200B300B400B500B600B7000000B9000000BB00BC00BD00BE0000
-05B005B105B205B305B405B505B605B705B805B905BA05BB05BC05BD05BE05BF
-05C005C105C205C305F005F105F2000000000000000000000000000000000000
+00A000A100A200A320AA00A500A600A700A800A900D700AB00AC00AD00AE00AF
+00B000B100B200B300B400B500B600B700B800B900F700BB00BC00BD00BE00BF
+05B005B105B205B305B405B505B605B705B805B9000005BB05BC05BD05BE05BF
+05C005C105C205C305F005F105F205F305F40000000000000000000000000000
05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
05E005E105E205E305E405E505E605E705E805E905EA00000000200E200F0000
diff --git a/library/encoding/cp1256.enc b/library/encoding/cp1256.enc
index 1a9d8a6..a98762a 100644
--- a/library/encoding/cp1256.enc
+++ b/library/encoding/cp1256.enc
@@ -10,11 +10,11 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-0080067E201A0192201E20262020202102C62030008A2039015206860698008F
-06AF20182019201C201D20222013201400982122009A203A0153200C200D009F
-00A0060C00A200A300A400A500A600A700A800A9000000AB00AC00AD00AE00AF
+20AC067E201A0192201E20262020202102C62030067920390152068606980688
+06AF20182019201C201D20222013201406A921220691203A0153200C200D06BA
+00A0060C00A200A300A400A500A600A700A800A906BE00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B9061B00BB00BC00BD00BE061F
-0000062106220623062406250626062706280629062A062B062C062D062E062F
+06C1062106220623062406250626062706280629062A062B062C062D062E062F
063006310632063306340635063600D7063706380639063A0640064106420643
00E0064400E2064506460647064800E700E800E900EA00EB0649064A00EE00EF
-064B064C064D064E00F4064F065000F7065100F9065200FB00FC200E200F0000
+064B064C064D064E00F4064F065000F7065100F9065200FB00FC200E200F06D2
diff --git a/library/encoding/cp1257.enc b/library/encoding/cp1257.enc
index 4aab0c6..4aa135d 100644
--- a/library/encoding/cp1257.enc
+++ b/library/encoding/cp1257.enc
@@ -10,7 +10,7 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0083201E20262020202100882030008A2039008C00A802C700B8
+20AC0081201A0083201E20262020202100882030008A2039008C00A802C700B8
009020182019201C201D20222013201400982122009A203A009C00AF02DB009F
00A0000000A200A300A4000000A600A700D800A9015600AB00AC00AD00AE00C6
00B000B100B200B300B400B500B600B700F800B9015700BB00BC00BD00BE00E6
diff --git a/library/encoding/cp1258.enc b/library/encoding/cp1258.enc
index 8c1fce8..95fdef8 100644
--- a/library/encoding/cp1258.enc
+++ b/library/encoding/cp1258.enc
@@ -10,11 +10,11 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-00800081201A0192201E20262020202102C62030008A20390152008D008E008F
+20AC0081201A0192201E20262020202102C62030008A20390152008D008E008F
009020182019201C201D20222013201402DC2122009A203A0153009D009E0178
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
-00C000C100C2010200C400C500C600C700C800C900CA00CB034000CD00CE00CF
+00C000C100C2010200C400C500C600C700C800C900CA00CB030000CD00CE00CF
011000D1030900D300D401A000D600D700D800D900DA00DB00DC01AF030300DF
-00E000E100E2010300E400E500E600E700E800E900EA00EB034100ED00EE00EF
+00E000E100E2010300E400E500E600E700E800E900EA00EB030100ED00EE00EF
011100F1032300F300F401A100F600F700F800F900FA00FB00FC01B020AB00FF
diff --git a/library/encoding/cp874.enc b/library/encoding/cp874.enc
index cdcca32..0487b97 100644
--- a/library/encoding/cp874.enc
+++ b/library/encoding/cp874.enc
@@ -10,7 +10,7 @@ S
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-0080008100820083008420260086008700880089008A008B008C008D008E008F
+20AC008100820083008420260086008700880089008A008B008C008D008E008F
009020182019201C201D20222013201400980099009A009B009C009D009E009F
00A00E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
diff --git a/library/encoding/cp932.enc b/library/encoding/cp932.enc
index 027f7d8..8da8cd6 100644
--- a/library/encoding/cp932.enc
+++ b/library/encoding/cp932.enc
@@ -783,3 +783,19 @@ FC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+R
+8160 301C FF5E
+8161 2016 2225
+817C 2212 FF0D
+8191 00A2 FFE0
+8192 00A3 FFE1
+81CA 00AC FFE2
+81BE 222a
+81BF 2229
+81DA 2220
+81DB 22a5
+81DF 2261
+81E0 2252
+81E3 221a
+81E6 2235
+81E7 222b
diff --git a/library/encoding/cp936.enc b/library/encoding/cp936.enc
index 53d975c..37bcc80 100644
--- a/library/encoding/cp936.enc
+++ b/library/encoding/cp936.enc
@@ -10,7 +10,7 @@ M
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
-0080000000000000000000000000000000000000000000000000000000000000
+20AC000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
diff --git a/library/encoding/cp949.enc b/library/encoding/cp949.enc
index 697fc6f94..2f3ec39 100644
--- a/library/encoding/cp949.enc
+++ b/library/encoding/cp949.enc
@@ -594,7 +594,7 @@ C96F21D221D42200220300B4FF5E02C702D802DD02DA02D900B802DB00A100BF
02D0222E2211220F00A42109203025C125C025B725B626642660266126652667
2663229925C825A325D025D1259225A425A525A825A725A625A92668260F260E
261C261E00B62020202121952197219921962198266D2669266A266C327F321C
-211633C7212233C233D821210000000000000000000000000000000000000000
+211633C7212233C233D8212120AC00AE00000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
A3
0000000000000000000000000000000000000000000000000000000000000000
diff --git a/library/encoding/cp950.enc b/library/encoding/cp950.enc
index 8816284..f33d785 100644
--- a/library/encoding/cp950.enc
+++ b/library/encoding/cp950.enc
@@ -67,7 +67,7 @@ FF57FF58FF59FF5A039103920393039403950396039703980399039A039B039C
311F312031213122312331243125312631273128312902D902C902CA02C702CB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
+000020AC00000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
A4
0000000000000000000000000000000000000000000000000000000000000000
diff --git a/library/encoding/ebcdic.enc b/library/encoding/ebcdic.enc
new file mode 100644
index 0000000..f451de5
--- /dev/null
+++ b/library/encoding/ebcdic.enc
@@ -0,0 +1,19 @@
+S
+006F 0 1
+00
+0000000100020003008500090086007F0087008D008E000B000C000D000E000F
+0010001100120013008F000A0008009700180019009C009D001C001D001E001F
+0080008100820083008400920017001B00880089008A008B008C000500060007
+0090009100160093009400950096000400980099009A009B00140015009E001A
+002000A000E200E400E000E100E300E500E700F10060002E003C0028002B007C
+002600E900EA00EB00E800ED00EE00EF00EC00DF00210024002A0029003B009F
+002D002F00C200C400C000C100C300C500C700D1005E002C0025005F003E003F
+00F800C900CA00CB00C800CD00CE00CF00CC00A8003A002300400027003D0022
+00D800610062006300640065006600670068006900AB00BB00F000FD00FE00B1
+00B0006A006B006C006D006E006F00700071007200AA00BA00E600B800C600A4
+00B500AF0073007400750076007700780079007A00A100BF00D000DD00DE00AE
+00A200A300A500B700A900A700B600BC00BD00BE00AC005B005C005D00B400D7
+00F900410042004300440045004600470048004900AD00F400F600F200F300F5
+00A6004A004B004C004D004E004F00500051005200B900FB00FC00DB00FA00FF
+00D900F70053005400550056005700580059005A00B200D400D600D200D300D5
+003000310032003300340035003600370038003900B3007B00DC007D00DA007E
diff --git a/library/encoding/euc-jp.enc b/library/encoding/euc-jp.enc
index 9b7abb1..db56c88 100644
--- a/library/encoding/euc-jp.enc
+++ b/library/encoding/euc-jp.enc
@@ -1344,3 +1344,10 @@ F4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+R
+A1C1 301C FF5E
+A1C2 2016 2225
+A1DD 2212 FF0D
+A1F1 00A2 FFE0
+A1F2 00A3 FFE1
+A2CC 00AC FFE2
diff --git a/library/encoding/gb2312-raw.enc b/library/encoding/gb2312-raw.enc
new file mode 100644
index 0000000..813d7a6
--- /dev/null
+++ b/library/encoding/gb2312-raw.enc
@@ -0,0 +1,1380 @@
+# Encoding file: gb2312, double-byte
+D
+233F 0 81
+21
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030003001300230FB02C902C700A8300330052015FF5E2225202620182019
+201C201D3014301530083009300A300B300C300D300E300F3016301730103011
+00B100D700F72236222722282211220F222A222922082237221A22A522252220
+23122299222B222E2261224C2248223D221D2260226E226F22642265221E2235
+22342642264000B0203220332103FF0400A4FFE0FFE1203000A7211626062605
+25CB25CF25CE25C725C625A125A025B325B2203B219221902191219330130000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+22
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000024882489248A248B248C248D248E248F2490249124922493249424952496
+249724982499249A249B247424752476247724782479247A247B247C247D247E
+247F248024812482248324842485248624872460246124622463246424652466
+2467246824690000000032203221322232233224322532263227322832290000
+00002160216121622163216421652166216721682169216A216B000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+23
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF01FF02FF03FFE5FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F
+FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19FF1AFF1BFF1CFF1DFF1EFF1F
+FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFF3CFF3DFF3EFF3F
+FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+24
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000304130423043304430453046304730483049304A304B304C304D304E304F
+3050305130523053305430553056305730583059305A305B305C305D305E305F
+3060306130623063306430653066306730683069306A306B306C306D306E306F
+3070307130723073307430753076307730783079307A307B307C307D307E307F
+3080308130823083308430853086308730883089308A308B308C308D308E308F
+3090309130923093000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+25
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
+30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF
+30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF
+30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+26
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A103A303A403A503A603A703A803A90000000000000000000000000000
+000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C303C403C503C603C703C803C90000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+27
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000004100411041204130414041504010416041704180419041A041B041C041D
+041E041F0420042104220423042404250426042704280429042A042B042C042D
+042E042F00000000000000000000000000000000000000000000000000000000
+000004300431043204330434043504510436043704380439043A043B043C043D
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+28
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000010100E101CE00E0011300E9011B00E8012B00ED01D000EC014D00F301D2
+00F2016B00FA01D400F901D601D801DA01DC00FC00EA00000000000000000000
+0000000000000000000031053106310731083109310A310B310C310D310E310F
+3110311131123113311431153116311731183119311A311B311C311D311E311F
+3120312131223123312431253126312731283129000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+29
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000002500250125022503250425052506250725082509250A250B
+250C250D250E250F2510251125122513251425152516251725182519251A251B
+251C251D251E251F2520252125222523252425252526252725282529252A252B
+252C252D252E252F2530253125322533253425352536253725382539253A253B
+253C253D253E253F2540254125422543254425452546254725482549254A254B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+30
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000554A963F57C3632854CE550954C07691764C853C77EE827E788D72319698
+978D6C285B894FFA630966975CB880FA684880AE660276CE51F9655671AC7FF1
+888450B2596561CA6FB382AD634C625253ED54277B06516B75A45DF462D48DCB
+9776628A8019575D97387F627238767D67CF767E64464F708D2562DC7A176591
+73ED642C6273822C9881677F7248626E62CC4F3474E3534A529E7ECA90A65E2E
+6886699C81807ED168D278C5868C9551508D8C2482DE80DE5305891252650000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+31
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000858496F94FDD582199715B9D62B162A566B48C799C8D7206676F789160B2
+535153178F8880CC8D1D94A1500D72C8590760EB711988AB595482EF672C7B28
+5D297EF7752D6CF58E668FF8903C9F3B6BD491197B145F7C78A784D6853D6BD5
+6BD96BD65E015E8775F995ED655D5F0A5FC58F9F58C181C2907F965B97AD8FB9
+7F168D2C62414FBF53D8535E8FA88FA98FAB904D68075F6A819888689CD6618B
+522B762A5F6C658C6FD26EE85BBE6448517551B067C44E1979C9997C70B30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+32
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075C55E7673BB83E064AD62E894B56CE2535A52C3640F94C27B944F2F5E1B
+82368116818A6E246CCA9A736355535C54FA886557E04E0D5E036B657C3F90E8
+601664E6731C88C16750624D8D22776C8E2991C75F6983DC8521991053C28695
+6B8B60ED60E8707F82CD82314ED36CA785CF64CD7CD969FD66F9834953957B56
+4FA7518C6D4B5C428E6D63D253C9832C833667E578B4643D5BDF5C945DEE8BE7
+62C667F48C7A640063BA8749998B8C177F2094F24EA7961098A4660C73160000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+33
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000573A5C1D5E38957F507F80A05382655E7545553150218D856284949E671D
+56326F6E5DE2543570928F66626F64A463A35F7B6F8890F481E38FB05C186668
+5FF16C8996488D81886C649179F057CE6A59621054484E587A0B60E96F848BDA
+627F901E9A8B79E4540375F4630153196C608FDF5F1B9A70803B9F7F4F885C3A
+8D647FC565A570BD514551B2866B5D075BA062BD916C75748E0C7A2061017B79
+4EC77EF877854E1181ED521D51FA6A7153A88E87950496CF6EC19664695A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+34
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000784050A877D7641089E6590463E35DDD7A7F693D4F20823955984E3275AE
+7A975E625E8A95EF521B5439708A6376952457826625693F918755076DF37EAF
+882262337EF075B5832878C196CC8F9E614874F78BCD6B64523A8D506B21806A
+847156F153064ECE4E1B51D17C97918B7C074FC38E7F7BE17A9C64675D1450AC
+810676017CB96DEC7FE067515B585BF878CB64AE641363AA632B9519642D8FBE
+7B5476296253592754466B7950A362345E266B864EE38D37888B5F85902E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+35
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006020803D62C54E39535590F863B880C665E66C2E4F4660EE6DE18BDE5F39
+86CB5F536321515A83616863520063638E4850125C9B79775BFC52307A3B60BC
+905376D75FB75F9776848E6C706F767B7B4977AA51F3909358244F4E6EF48FEA
+654C7B1B72C46DA47FDF5AE162B55E95573084827B2C5E1D5F1F90127F1498A0
+63826EC7789870B95178975B57AB75354F4375385E9760E659606DC06BBF7889
+53FC96D551CB52016389540A94938C038DCC7239789F87768FED8C0D53E00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+36
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E0176EF53EE948998769F0E952D5B9A8BA24E224E1C51AC846361C252A8
+680B4F97606B51BB6D1E515C6296659796618C46901775D890FD77636BD2728A
+72EC8BFB583577798D4C675C9540809A5EA66E2159927AEF77ED953B6BB565AD
+7F0E58065151961F5BF958A954288E726566987F56E4949D76FE9041638754C6
+591A593A579B8EB267358DFA8235524160F0581586FE5CE89E454FC4989D8BB9
+5A2560765384627C904F9102997F6069800C513F80335C1499756D314E8C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+37
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008D3053D17F5A7B4F4F104E4F96006CD573D085E95E06756A7FFB6A0A77FE
+94927E4151E170E653CD8FD483038D2972AF996D6CDB574A82B365B980AA623F
+963259A84EFF8BBF7EBA653E83F2975E556198DE80A5532A8BFD542080BA5E9F
+6CB88D3982AC915A54296C1B52067EB7575F711A6C7E7C89594B4EFD5FFF6124
+7CAA4E305C0167AB87025CF0950B98CE75AF70FD902251AF7F1D8BBD594951E4
+4F5B5426592B657780A45B75627662C28F905E456C1F7B264F0F4FD8670D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+38
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D6E6DAA798F88B15F17752B629A8F854FEF91DC65A7812F81515E9C8150
+8D74526F89868D4B590D50854ED8961C723681798D1F5BCC8BA3964459877F1A
+54905676560E8BE565396982949976D66E895E727518674667D17AFF809D8D76
+611F79C665628D635188521A94A27F38809B7EB25C976E2F67607BD9768B9AD8
+818F7F947CD5641E95507A3F544A54E56B4C640162089E3D80F3759952729769
+845B683C86E49601969494EC4E2A54047ED968398DDF801566F45E9A7FB90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+39
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000057C2803F68975DE5653B529F606D9F9A4F9B8EAC516C5BAB5F135DE96C5E
+62F18D21517194A952FE6C9F82DF72D757A267848D2D591F8F9C83C754957B8D
+4F306CBD5B6459D19F1353E486CA9AA88C3780A16545987E56FA96C7522E74DC
+52505BE1630289024E5662D0602A68FA51735B9851A089C27BA199867F5060EF
+704C8D2F51495E7F901B747089C4572D78455F529F9F95FA8F689B3C8BE17678
+684267DC8DEA8D35523D8F8A6EDA68CD950590ED56FD679C88F98FC754C80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009AB85B696D776C264EA55BB39A87916361A890AF97E9542B6DB55BD251FD
+558A7F557FF064BC634D65F161BE608D710A6C576C49592F676D822A58D5568E
+8C6A6BEB90DD597D801753F76D695475559D837783CF683879BE548C4F555408
+76D28C8996026CB36DB88D6B89109E648D3A563F9ED175D55F8872E0606854FC
+4EA86A2A886160528F7054C470D886799E3F6D2A5B8F5F187EA255894FAF7334
+543C539A5019540E547C4E4E5FFD745A58F6846B80E1877472D07CCA6E560000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F27864E552C62A44E926CAA623782B154D7534E733E6ED1753B52125316
+8BDD69D05F8A60006DEE574F6B2273AF68538FD87F13636260A3552475EA8C62
+71156DA35BA65E7B8352614C9EC478FA87577C27768751F060F6714C66435E4C
+604D8C0E707063258F895FBD606286D456DE6BC160946167534960E066668D3F
+79FD4F1A70E96C478BB38BF27ED88364660F5A5A9B426D516DF78C416D3B4F19
+706B83B7621660D1970D8D27797851FB573E57FA673A75787A3D79EF7B950000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000808C99658FF96FC08BA59E2159EC7EE97F095409678168D88F917C4D96C6
+53CA602575BE6C7253735AC97EA7632451E0810A5DF184DF628051805B634F0E
+796D524260B86D4E5BC45BC28BA18BB065E25FCC964559937EE77EAA560967B7
+59394F735BB652A0835A988A8D3E753294BE50477A3C4EF767B69A7E5AC16B7C
+76D1575A5C167B3A95F4714E517C80A9827059787F04832768C067EC78B17877
+62E363617B804FED526A51CF835069DB92748DF58D3189C1952E7BAD4EF60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000506582305251996F6E106E856DA75EFA50F559DC5C066D466C5F7586848B
+686859568BB253209171964D854969127901712680F64EA490CA6D479A845A07
+56BC640594F077EB4FA5811A72E189D2997A7F347EDE527F655991758F7F8F83
+53EB7A9663ED63A5768679F888579636622A52AB8282685467706377776B7AED
+6D017ED389E359D0621285C982A5754C501F4ECB75A58BEB5C4A5DFE7B4B65A4
+91D14ECA6D25895F7D2795264EC58C288FDB9773664B79818FD170EC6D780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C3D52B283465162830E775B66769CB84EAC60CA7CBE7CB37ECF4E958B66
+666F988897595883656C955C5F8475C997567ADF7ADE51C070AF7A9863EA7A76
+7EA0739697ED4E4570784E5D915253A9655165E781FC8205548E5C31759A97A0
+62D872D975BD5C459A7983CA5C40548077E94E3E6CAE805A62D2636E5DE85177
+8DDD8E1E952F4FF153E560E770AC526763509E435A1F5026773753777EE26485
+652B628963985014723589C951B38BC07EDD574783CC94A7519B541B5CFB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004FCA7AE36D5A90E19A8F55805496536154AF5F0063E9697751EF6168520A
+582A52D8574E780D770B5EB761777CE0625B62974EA27095800362F770E49760
+577782DB67EF68F578D5989779D158F354B353EF6E34514B523B5BA28BFE80AF
+554357A660735751542D7A7A60505B5463A762A053E362635BC767AF54ED7A9F
+82E691775E9388E4593857AE630E8DE880EF57577B774FA95FEB5BBD6B3E5321
+7B5072C2684677FF773665F751B54E8F76D45CBF7AA58475594E9B4150800000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+40
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000998861276E8357646606634656F062EC62695ED39614578362C955878721
+814A8FA3556683B167658D5684DD5A6A680F62E67BEE961151706F9C8C3063FD
+89C861D27F0670C26EE57405699472FC5ECA90CE67176D6A635E52B372628001
+4F6C59E5916A70D96D9D52D24E5096F7956D857E78CA7D2F5121579264C2808B
+7C7B6CEA68F1695E51B7539868A872819ECE7BF172F879BB6F137406674E91CC
+9CA4793C83898354540F68174E3D538952B1783E5386522950884F8B4FD00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+41
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075E27ACB7C926CA596B6529B748354E94FE9805483B28FDE95705EC9601C
+6D9F5E18655B813894FE604B70BC7EC37CAE51C968817CB1826F4E248F8691CF
+667E4EAE8C0564A9804A50DA759771CE5BE58FBD6F664E86648295635ED66599
+521788C270C852A3730E7433679778F797164E3490BB9CDE6DCB51DB8D41541D
+62CE73B283F196F69F8494C34F367F9A51CC707596755CAD988653E64EE46E9C
+740969B4786B998F7559521876246D4167F3516D9F99804B54997B3C7ABF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+42
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009686578462E29647697C5A0464027BD36F0F964B82A6536298855E907089
+63B35364864F9C819E93788C97328DEF8D429E7F6F5E79845F559646622E9A74
+541594DD4FA365C55C655C617F1586516C2F5F8B73876EE47EFF5CE6631B5B6A
+6EE653754E7163A0756562A18F6E4F264ED16CA67EB68BBA841D87BA7F57903B
+95237BA99AA188F8843D6D1B9A867EDC59889EBB739B780186829A6C9A82561B
+541757CB4E709EA653568FC881097792999286EE6EE1851366FC61626F2B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+43
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008C298292832B76F26C135FD983BD732B8305951A6BDB77DB94C6536F8302
+51925E3D8C8C8D384E4873AB679A68859176970971646CA177095A9295416BCF
+7F8E66275BD059B95A9A95E895F74EEC840C84996AAC76DF9530731B68A65B5F
+772F919A97617CDC8FF78C1C5F257C7379D889C56CCC871C5BC65E4268C97720
+7EF55195514D52C95A297F05976282D763CF778485D079D26E3A5E9959998511
+706D6C1162BF76BF654F60AF95FD660E879F9E2394ED540D547D8C2C64780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+44
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000647986116A21819C78E864699B5462B9672B83AB58A89ED86CAB6F205BDE
+964C8C0B725F67D062C772614EA959C66BCD589366AE5E5552DF6155672876EE
+776672677A4662FF54EA545094A090A35A1C7EB36C164E435976801059485357
+753796BE56CA63208111607C95F96DD65462998151855AE980FD59AE9713502A
+6CE55C3C62DF4F60533F817B90066EBA852B62C85E7478BE64B5637B5FF55A18
+917F9E1F5C3F634F80425B7D556E954A954D6D8560A867E072DE51DD5B810000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+45
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000062E76CDE725B626D94AE7EBD81136D53519C5F04597452AA601259736696
+8650759F632A61E67CEF8BFA54E66B279E256BB485D5545550766CA4556A8DB4
+722C5E156015743662CD6392724C5F986E436D3E65006F5876D878D076FC7554
+522453DB4E535E9E65C1802A80D6629B5486522870AE888D8DD16CE1547880DA
+57F988F48D54966A914D4F696C9B55B776C6783062A870F96F8E5F6D84EC68DA
+787C7BF781A8670B9E4F636778B0576F78129739627962AB528874356BD70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+46
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005564813E75B276AE533975DE50FB5C418B6C7BC7504F72479A9798D86F02
+74E27968648777A562FC98918D2B54C180584E52576A82F9840D5E7351ED74F6
+8BC45C4F57616CFC98875A4678349B448FEB7C955256625194FA4EC683868461
+83E984B257D467345703666E6D668C3166DD7011671F6B3A6816621A59BB4E03
+51C46F0667D26C8F517668CB59476B6775665D0E81109F5065D7794879419A91
+8D775C824E5E4F01542F5951780C56686C148FC45F036C7D6CE38BAB63900000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+47
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060706D3D72756266948E94C553438FC17B7E4EDF8C264E7E9ED494B194B3
+524D6F5C90636D458C3458115D4C6B206B4967AA545B81547F8C589985375F3A
+62A26A47953965726084686577A74E544FA85DE7979864AC7FD85CED4FCF7A8D
+520783044E14602F7A8394A64FB54EB279E6743452E482B964D279BD5BDD6C81
+97528F7B6C22503E537F6E0564CE66746C3060C598778BF75E86743C7A7779CB
+4E1890B174036C4256DA914B6CC58D8B533A86C666F28EAF5C489A716E200000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+48
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000053D65A369F8B8DA353BB570898A76743919B6CC9516875CA62F372AC5238
+529D7F3A7094763853749E4A69B7786E96C088D97FA4713671C3518967D374E4
+58E4651856B78BA9997662707ED560F970ED58EC4EC14EBA5FCD97E74EFB8BA4
+5203598A7EAB62544ECD65E5620E833884C98363878D71946EB65BB97ED25197
+63C967D480898339881551125B7A59828FB14E736C5D516589258F6F962E854A
+745E951095F06DA682E55F3164926D128428816E9CC3585E8D5B4E0953C10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+49
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F1E6563685155D34E2764149A9A626B5AC2745F82726DA968EE50E7838E
+7802674052396C997EB150BB5565715E7B5B665273CA82EB67495C715220717D
+886B95EA965564C58D6181B355846C5562477F2E58924F2455468D4F664C4E0A
+5C1A88F368A2634E7A0D70E7828D52FA97F65C1154E890B57ECD59628D4A86C7
+820C820D8D6664445C0461516D89793E8BBE78377533547B4F388EAB6DF15A20
+7EC5795E6C885BA15A76751A80BE614E6E1758F0751F7525727253477EF30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000770176DB526980DC57235E08593172EE65BD6E7F8BD75C388671534177F3
+62FE65F64EC098DF86805B9E8BC653F277E24F7F5C4E9A7659CB5F0F793A58EB
+4E1667FF4E8B62ED8A93901D52BF662F55DC566C90024ED54F8D91CA99706C0F
+5E0260435BA489C68BD56536624B99965B885BFF6388552E53D77626517D852C
+67A268B36B8A62928F9353D482126DD1758F4E668D4E5B70719F85AF669166D9
+7F7287009ECD9F205C5E672F8FF06811675F620D7AD658855EB665706F310000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060555237800D6454887075295E05681362F4971C53CC723D8C016C347761
+7A0E542E77AC987A821C8BF47855671470C165AF64955636601D79C153F84E1D
+6B7B80865BFA55E356DB4F3A4F3C99725DF3677E80386002988290015B8B8BBC
+8BF5641C825864DE55FD82CF91654FD77D20901F7C9F50F358516EAF5BBF8BC9
+80839178849C7B97867D968B968F7EE59AD3788E5C817A57904296A7795F5B59
+635F7B0B84D168AD55067F2974107D2295016240584C4ED65B83597958540000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000736D631E8E4B8E0F80CE82D462AC53F06CF0915E592A60016C70574D644A
+8D2A762B6EE9575B6A8075F06F6D8C2D8C0857666BEF889278B363A253F970AD
+6C645858642A580268E0819B55107CD650188EBA6DCC8D9F70EB638F6D9B6ED4
+7EE68404684390036DD896768BA85957727985E4817E75BC8A8A68AF52548E22
+951163D098988E44557C4F5366FF568F60D56D9552435C4959296DFB586B7530
+751C606C82148146631167618FE2773A8DF38D3494C15E165385542C70C30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C405EF7505C4EAD5EAD633A8247901A6850916E77B3540C94DC5F647AE5
+687663457B527EDF75DB507762955934900F51F879C37A8156FE5F9290146D82
+5C60571F541051546E4D56E263A89893817F8715892A9000541E5C6F81C062D6
+625881319E3596409A6E9A7C692D59A562D3553E631654C786D96D3C5A0374E6
+889C6B6A59168C4C5F2F6E7E73A9987D4E3870F75B8C7897633D665A769660CB
+5B9B5A494E0781556C6A738B4EA167897F515F8065FA671B5FD859845A010000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005DCD5FAE537197E68FDD684556F4552F60DF4E3A6F4D7EF482C7840E59D4
+4F1F4F2A5C3E7EAC672A851A5473754F80C355829B4F4F4D6E2D8C135C096170
+536B761F6E29868A658795FB7EB9543B7A337D0A95EE55E17FC174EE631D8717
+6DA17A9D621165A1536763E16C835DEB545C94A84E4C6C618BEC5C4B65E0829C
+68A7543E54346BCB6B664E9463425348821E4F0D4FAE575E620A96FE66647269
+52FF52A1609F8BEF661471996790897F785277FD6670563B54389521727A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A00606F5E0C6089819D591560DC718470EF6EAA6C5072806A8488AD5E2D
+4E605AB3559C94E36D177CFB9699620F7EC6778E867E5323971E8F9666875CE1
+4FA072ED4E0B53A6590F54136380952851484ED99C9C7EA454B88D2488548237
+95F26D8E5F265ACC663E966973B0732E53BF817A99857FA15BAA967796507EBF
+76F853A2957699997BB189446E584E617FD479658BE660F354CD4EAB98795DF7
+6A6150CF54118C618427785D9704524A54EE56A395006D885BB56DC666530000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+50
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C0F5B5D6821809655787B11654869544E9B6B47874E978B534F631F643A
+90AA659C80C18C10519968B0537887F961C86CC46CFB8C225C5185AA82AF950C
+6B238F9B65B05FFB5FC34FE18845661F8165732960FA51745211578B5F6290A2
+884C91925E78674F602759D3514451F680F853086C7996C4718A4F114FEE7F9E
+673D55C5950879C088967EE3589F620C9700865A5618987B5F908BB884C49157
+53D965ED5E8F755C60647D6E5A7F7EEA7EED8F6955A75BA360AC65CB73840000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009009766377297EDA9774859B5B667A7496EA884052CB718F5FAA65EC8BE2
+5BFB9A6F5DE16B896C5B8BAD8BAF900A8FC5538B62BC9E269E2D54404E2B82BD
+7259869C5D1688596DAF96C554D14E9A8BB6710954BD960970DF6DF976D04E25
+781487125CA95EF68A00989C960E708E6CBF594463A9773C884D6F1482735830
+71D5538C781A96C155015F6671305BB48C1A9A8C6B83592E9E2F79E76768626C
+4F6F75A17F8A6D0B96336C274EF075D2517B68376F3E90808170599674760000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+52
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064475C2790657A918C2359DA54AC8200836F898180006930564E80367237
+91CE51B64E5F987563964E1A53F666F3814B591C6DB24E0058F9533B63D694F1
+4F9D4F0A886398905937905779FB4EEA80F075916C825B9C59E85F5D69058681
+501A5DF24E5977E34EE5827A6291661390915C794EBF5F7981C69038808475AB
+4EA688D4610F6BC55FC64E4976CA6EA28BE38BAE8C0A8BD15F027FFC7FCC7ECE
+8335836B56E06BB797F3963459FB541F94F66DEB5BC5996E5C395F1596900000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+53
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000537082F16A315A749E705E947F2883B984248425836787478FCE8D6276C8
+5F719896786C662054DF62E54F6381C375C85EB896CD8E0A86F9548F6CF36D8C
+6C38607F52C775285E7D4F1860A05FE75C24753190AE94C072B96CB96E389149
+670953CB53F34F5191C98BF153C85E7C8FC26DE44E8E76C26986865E611A8206
+4F594FDE903E9C7C61096E1D6E1496854E885A3196E84E0E5C7F79B95B878BED
+7FBD738957DF828B90C15401904755BB5CEA5FA161086B3272F180B28A890000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D745BD388D598848C6B9A6D9E336E0A51A4514357A38881539F63F48F95
+56ED54585706733F6E907F188FDC82D1613F6028966266F07EA68D8A8DC394A5
+5CB37CA4670860A6960580184E9190E75300966851418FD08574915D665597F5
+5B55531D78386742683D54C9707E5BB08F7D518D572854B1651266828D5E8D43
+810F846C906D7CDF51FF85FB67A365E96FA186A48E81566A90207682707671E5
+8D2362E952196CFD8D3C600E589E618E66FE8D60624E55B36E23672D8F670000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+55
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000094E195F87728680569A8548B4E4D70B88BC86458658B5B857A84503A5BE8
+77BB6BE18A797C986CBE76CF65A98F975D2D5C5586386808536062187AD96E5B
+7EFD6A1F7AE05F706F335F20638C6DA867564E085E108D264ED780C07634969C
+62DB662D627E6CBC8D7571677F695146808753EC906E629854F286F08F998005
+951785178FD96D5973CD659F771F7504782781FB8D1E94884FA6679575B98BCA
+9707632F9547963584B8632377415F8172F04E896014657462EF6B63653F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005E2775C790D18BC1829D679D652F5431871877E580A281026C414E4B7EC7
+804C76F4690D6B966267503C4F84574063076B628DBE53EA65E87EB85FD7631A
+63B781F381F47F6E5E1C5CD95236667A79E97A1A8D28709975D46EDE6CBB7A92
+4E2D76C55FE0949F88777EC879CD80BF91CD4EF24F17821F54685DDE6D328BCC
+7CA58F7480985E1A549276B15B99663C9AA473E0682A86DB6731732A8BF88BDB
+90107AF970DB716E62C477A956314E3B845767F152A986C08D2E94F87B510000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+57
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F4F6CE8795D9A7B6293722A62FD4E1378168F6C64B08D5A7BC668695E84
+88C55986649E58EE72B6690E95258FFD8D5857607F008C0651C6634962D95353
+684C74228301914C55447740707C6D4A517954A88D4459FF6ECB6DC45B5C7D2B
+4ED47C7D6ED35B5081EA6E0D5B579B0368D58E2A5B977EFC603B7EB590B98D70
+594F63CD79DF8DB3535265CF79568BC5963B7EC494BB7E825634918967007F6A
+5C0A907566285DE64F5067DE505A4F5C57505EA7000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+58
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E8D4E0C51404E105EFF53454E154E984E1E9B325B6C56694E2879BA4E3F
+53154E47592D723B536E6C1056DF80E499976BD3777E9F174E364E9F9F104E5C
+4E694E9382885B5B556C560F4EC4538D539D53A353A553AE97658D5D531A53F5
+5326532E533E8D5C5366536352025208520E522D5233523F5240524C525E5261
+525C84AF527D528252815290529351827F544EBB4EC34EC94EC24EE84EE14EEB
+4EDE4F1B4EF34F224F644EF54F254F274F094F2B4F5E4F6765384F5A4F5D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+59
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F5F4F574F324F3D4F764F744F914F894F834F8F4F7E4F7B4FAA4F7C4FAC
+4F944FE64FE84FEA4FC54FDA4FE34FDC4FD14FDF4FF85029504C4FF3502C500F
+502E502D4FFE501C500C50255028507E504350555048504E506C507B50A550A7
+50A950BA50D6510650ED50EC50E650EE5107510B4EDD6C3D4F584F654FCE9FA0
+6C467C74516E5DFD9EC999985181591452F9530D8A07531051EB591951554EA0
+51564EB3886E88A44EB5811488D279805B3488037FB851AB51B151BD51BC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000051C7519651A251A58BA08BA68BA78BAA8BB48BB58BB78BC28BC38BCB8BCF
+8BCE8BD28BD38BD48BD68BD88BD98BDC8BDF8BE08BE48BE88BE98BEE8BF08BF3
+8BF68BF98BFC8BFF8C008C028C048C078C0C8C0F8C118C128C148C158C168C19
+8C1B8C188C1D8C1F8C208C218C258C278C2A8C2B8C2E8C2F8C328C338C358C36
+5369537A961D962296219631962A963D963C964296499654965F9667966C9672
+96749688968D969796B09097909B909D909990AC90A190B490B390B690BA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090B890B090CF90C590BE90D090C490C790D390E690E290DC90D790DB90EB
+90EF90FE91049122911E91239131912F913991439146520D594252A252AC52AD
+52BE54FF52D052D652F053DF71EE77CD5EF451F551FC9B2F53B65F01755A5DEF
+574C57A957A1587E58BC58C558D15729572C572A57335739572E572F575C573B
+574257695785576B5786577C577B5768576D5776577357AD57A4578C57B257CF
+57A757B4579357A057D557D857DA57D957D257B857F457EF57F857E457DD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000580B580D57FD57ED5800581E5819584458205865586C58815889589A5880
+99A89F1961FF8279827D827F828F828A82A88284828E82918297829982AB82B8
+82BE82B082C882CA82E3829882B782AE82CB82CC82C182A982B482A182AA829F
+82C482CE82A482E1830982F782E4830F830782DC82F482D282D8830C82FB82D3
+8311831A83068314831582E082D5831C8351835B835C83088392833C83348331
+839B835E832F834F83478343835F834083178360832D833A8333836683650000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008368831B8369836C836A836D836E83B0837883B383B483A083AA8393839C
+8385837C83B683A9837D83B8837B8398839E83A883BA83BC83C1840183E583D8
+58078418840B83DD83FD83D6841C84388411840683D483DF840F840383F883F9
+83EA83C583C0842683F083E1845C8451845A8459847384878488847A84898478
+843C844684698476848C848E8431846D84C184CD84D084E684BD84D384CA84BF
+84BA84E084A184B984B4849784E584E3850C750D853884F08539851F853A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008556853B84FF84FC8559854885688564855E857A77A285438572857B85A4
+85A88587858F857985AE859C858585B985B785B085D385C185DC85FF86278605
+86298616863C5EFE5F08593C594180375955595A5958530F5C225C255C2C5C34
+624C626A629F62BB62CA62DA62D762EE632262F66339634B634363AD63F66371
+637A638E63B4636D63AC638A636963AE63BC63F263F863E063FF63C463DE63CE
+645263C663BE64456441640B641B6420640C64266421645E6484646D64960000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000647A64B764B8649964BA64C064D064D764E464E265096525652E5F0B5FD2
+75195F11535F53F153FD53E953E853FB541254165406544B5452545354545456
+54435421545754595423543254825494547754715464549A549B548454765466
+549D54D054AD54C254B454D254A754A654D354D4547254A354D554BB54BF54CC
+54D954DA54DC54A954AA54A454DD54CF54DE551B54E7552054FD551454F35522
+5523550F55115527552A5567558F55B55549556D55415555553F5550553C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005537555655755576557755335530555C558B55D2558355B155B955885581
+559F557E55D65591557B55DF55BD55BE5594559955EA55F755C9561F55D155EB
+55EC55D455E655DD55C455EF55E555F255F355CC55CD55E855F555E48F94561E
+5608560C56015624562355FE56005627562D565856395657562C564D56625659
+565C564C5654568656645671566B567B567C5685569356AF56D456D756DD56E1
+56F556EB56F956FF5704570A5709571C5E0F5E195E145E115E315E3B5E3C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+61
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005E375E445E545E5B5E5E5E615C8C5C7A5C8D5C905C965C885C985C995C91
+5C9A5C9C5CB55CA25CBD5CAC5CAB5CB15CA35CC15CB75CC45CD25CE45CCB5CE5
+5D025D035D275D265D2E5D245D1E5D065D1B5D585D3E5D345D3D5D6C5D5B5D6F
+5D5D5D6B5D4B5D4A5D695D745D825D995D9D8C735DB75DC55F735F775F825F87
+5F895F8C5F955F995F9C5FA85FAD5FB55FBC88625F6172AD72B072B472B772B8
+72C372C172CE72CD72D272E872EF72E972F272F472F7730172F3730372FA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000072FB731773137321730A731E731D7315732273397325732C733873317350
+734D73577360736C736F737E821B592598E7592459029963996799689969996A
+996B996C99749977997D998099849987998A998D999099919993999499955E80
+5E915E8B5E965EA55EA05EB95EB55EBE5EB38D535ED25ED15EDB5EE85EEA81BA
+5FC45FC95FD65FCF60035FEE60045FE15FE45FFE600560065FEA5FED5FF86019
+60356026601B600F600D6029602B600A603F602160786079607B607A60420000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+63
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000606A607D6096609A60AD609D60836092608C609B60EC60BB60B160DD60D8
+60C660DA60B4612061266115612360F46100610E612B614A617561AC619461A7
+61B761D461F55FDD96B395E995EB95F195F395F595F695FC95FE960396049606
+9608960A960B960C960D960F96129615961696179619961A4E2C723F62156C35
+6C546C5C6C4A6CA36C856C906C946C8C6C686C696C746C766C866CA96CD06CD4
+6CAD6CF76CF86CF16CD76CB26CE06CD66CFA6CEB6CEE6CB16CD36CEF6CFE0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+64
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D396D276D0C6D436D486D076D046D196D0E6D2B6D4D6D2E6D356D1A6D4F
+6D526D546D336D916D6F6D9E6DA06D5E6D936D946D5C6D606D7C6D636E1A6DC7
+6DC56DDE6E0E6DBF6DE06E116DE66DDD6DD96E166DAB6E0C6DAE6E2B6E6E6E4E
+6E6B6EB26E5F6E866E536E546E326E256E446EDF6EB16E986EE06F2D6EE26EA5
+6EA76EBD6EBB6EB76ED76EB46ECF6E8F6EC26E9F6F626F466F476F246F156EF9
+6F2F6F366F4B6F746F2A6F096F296F896F8D6F8C6F786F726F7C6F7A6FD10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006FC96FA76FB96FB66FC26FE16FEE6FDE6FE06FEF701A7023701B70397035
+704F705E5B805B845B955B935BA55BB8752F9A9E64345BE45BEE89305BF08E47
+8B078FB68FD38FD58FE58FEE8FE48FE98FE68FF38FE890059004900B90269011
+900D9016902190359036902D902F9044905190529050906890589062905B66B9
+9074907D908290889083908B5F505F575F565F585C3B54AB5C505C595B715C63
+5C667FBC5F2A5F295F2D82745F3C9B3B5C6E59815983598D59A959AA59A30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+66
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000599759CA59AB599E59A459D259B259AF59D759BE5A055A0659DD5A0859E3
+59D859F95A0C5A095A325A345A115A235A135A405A675A4A5A555A3C5A625A75
+80EC5AAA5A9B5A775A7A5ABE5AEB5AB25AD25AD45AB85AE05AE35AF15AD65AE6
+5AD85ADC5B095B175B165B325B375B405C155C1C5B5A5B655B735B515B535B62
+9A759A779A789A7A9A7F9A7D9A809A819A859A889A8A9A909A929A939A969A98
+9A9B9A9C9A9D9A9F9AA09AA29AA39AA59AA77E9F7EA17EA37EA57EA87EA90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007EAD7EB07EBE7EC07EC17EC27EC97ECB7ECC7ED07ED47ED77EDB7EE07EE1
+7EE87EEB7EEE7EEF7EF17EF27F0D7EF67EFA7EFB7EFE7F017F027F037F077F08
+7F0B7F0C7F0F7F117F127F177F197F1C7F1B7F1F7F217F227F237F247F257F26
+7F277F2A7F2B7F2C7F2D7F2F7F307F317F327F337F355E7A757F5DDB753E9095
+738E739173AE73A2739F73CF73C273D173B773B373C073C973C873E573D9987C
+740A73E973E773DE73BA73F2740F742A745B7426742574287430742E742C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+68
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000741B741A7441745C7457745574597477746D747E749C748E748074817487
+748B749E74A874A9749074A774D274BA97EA97EB97EC674C6753675E67486769
+67A56787676A6773679867A7677567A8679E67AD678B6777677C67F0680967D8
+680A67E967B0680C67D967B567DA67B367DD680067C367B867E2680E67C167FD
+6832683368606861684E6862684468646883681D68556866684168676840683E
+684A6849682968B5688F687468776893686B68C2696E68FC691F692068F90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+69
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000692468F0690B6901695768E369106971693969606942695D6984696B6980
+69986978693469CC6987698869CE6989696669636979699B69A769BB69AB69AD
+69D469B169C169CA69DF699569E0698D69FF6A2F69ED6A176A186A6569F26A44
+6A3E6AA06A506A5B6A356A8E6A796A3D6A286A586A7C6A916A906AA96A976AAB
+733773526B816B826B876B846B926B936B8D6B9A6B9B6BA16BAA8F6B8F6D8F71
+8F728F738F758F768F788F778F798F7A8F7C8F7E8F818F828F848F878F8B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008F8D8F8E8F8F8F988F9A8ECE620B6217621B621F6222622162256224622C
+81E774EF74F474FF750F75117513653465EE65EF65F0660A6619677266036615
+6600708566F7661D66346631663666358006665F66546641664F665666616657
+66776684668C66A7669D66BE66DB66DC66E666E98D328D338D368D3B8D3D8D40
+8D458D468D488D498D478D4D8D558D5989C789CA89CB89CC89CE89CF89D089D1
+726E729F725D7266726F727E727F7284728B728D728F72926308633263B00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000643F64D880046BEA6BF36BFD6BF56BF96C056C076C066C0D6C156C186C19
+6C1A6C216C296C246C2A6C3265356555656B724D72527256723086625216809F
+809C809380BC670A80BD80B180AB80AD80B480B780E780E880E980EA80DB80C2
+80C480D980CD80D7671080DD80EB80F180F480ED810D810E80F280FC67158112
+8C5A8136811E812C811881328148814C815381748159815A817181608169817C
+817D816D8167584D5AB58188818281916ED581A381AA81CC672681CA81BB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081C181A66B246B376B396B436B466B5998D198D298D398D598D998DA6BB3
+5F406BC289F365909F51659365BC65C665C465C365CC65CE65D265D67080709C
+7096709D70BB70C070B770AB70B170E870CA711071137116712F71317173715C
+716871457172714A7178717A719871B371B571A871A071E071D471E771F9721D
+7228706C7118716671B9623E623D624362486249793B794079467949795B795C
+7953795A796279577960796F7967797A7985798A799A79A779B35FD15FD00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000603C605D605A606760416059606360AB6106610D615D61A9619D61CB61D1
+62068080807F6C936CF66DFC77F677F87800780978177818781165AB782D781C
+781D7839783A783B781F783C7825782C78237829784E786D7856785778267850
+7847784C786A789B7893789A7887789C78A178A378B278B978A578D478D978C9
+78EC78F2790578F479137924791E79349F9B9EF99EFB9EFC76F17704770D76F9
+77077708771A77227719772D7726773577387750775177477743775A77680000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077627765777F778D777D7780778C7791779F77A077B077B577BD753A7540
+754E754B7548755B7572757975837F587F617F5F8A487F687F747F717F797F81
+7F7E76CD76E58832948594869487948B948A948C948D948F9490949494979495
+949A949B949C94A394A494AB94AA94AD94AC94AF94B094B294B494B694B794B8
+94B994BA94BC94BD94BF94C494C894C994CA94CB94CC94CD94CE94D094D194D2
+94D594D694D794D994D894DB94DE94DF94E094E294E494E594E794E894EA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000094E994EB94EE94EF94F394F494F594F794F994FC94FD94FF950395029506
+95079509950A950D950E950F951295139514951595169518951B951D951E951F
+9522952A952B9529952C953195329534953695379538953C953E953F95429535
+9544954595469549954C954E954F9552955395549556955795589559955B955E
+955F955D95619562956495659566956795689569956A956B956C956F95719572
+9573953A77E777EC96C979D579ED79E379EB7A065D477A037A027A1E7A140000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+70
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A397A377A519ECF99A57A707688768E7693769976A474DE74E0752C9E20
+9E229E289E299E2A9E2B9E2C9E329E319E369E389E379E399E3A9E3E9E419E42
+9E449E469E479E489E499E4B9E4C9E4E9E519E559E579E5A9E5B9E5C9E5E9E63
+9E669E679E689E699E6A9E6B9E6C9E719E6D9E7375927594759675A0759D75AC
+75A375B375B475B875C475B175B075C375C275D675CD75E375E875E675E475EB
+75E7760375F175FC75FF761076007605760C7617760A76257618761576190000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+71
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000761B763C762276207640762D7630763F76357643763E7633764D765E7654
+765C7656766B766F7FCA7AE67A787A797A807A867A887A957AA67AA07AAC7AA8
+7AAD7AB3886488698872887D887F888288A288C688B788BC88C988E288CE88E3
+88E588F1891A88FC88E888FE88F0892189198913891B890A8934892B89368941
+8966897B758B80E576B276B477DC801280148016801C80208022802580268027
+802980288031800B803580438046804D80528069807189839878988098830000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+72
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009889988C988D988F9894989A989B989E989F98A198A298A598A6864D8654
+866C866E867F867A867C867B86A8868D868B86AC869D86A786A386AA869386A9
+86B686C486B586CE86B086BA86B186AF86C986CF86B486E986F186F286ED86F3
+86D0871386DE86F486DF86D886D18703870786F88708870A870D87098723873B
+871E8725872E871A873E87488734873187298737873F87828722877D877E877B
+87608770874C876E878B87538763877C876487598765879387AF87A887D20000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+73
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000087C68788878587AD8797878387AB87E587AC87B587B387CB87D387BD87D1
+87C087CA87DB87EA87E087EE8816881387FE880A881B88218839883C7F367F42
+7F447F4582107AFA7AFD7B087B037B047B157B0A7B2B7B0F7B477B387B2A7B19
+7B2E7B317B207B257B247B337B3E7B1E7B587B5A7B457B757B4C7B5D7B607B6E
+7B7B7B627B727B717B907BA67BA77BB87BAC7B9D7BA87B857BAA7B9C7BA27BAB
+7BB47BD17BC17BCC7BDD7BDA7BE57BE67BEA7C0C7BFE7BFC7C0F7C167C0B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007C1F7C2A7C267C387C417C4081FE82018202820481EC8844822182228223
+822D822F8228822B8238823B82338234823E82448249824B824F825A825F8268
+887E8885888888D888DF895E7F9D7F9F7FA77FAF7FB07FB27C7C65497C917C9D
+7C9C7C9E7CA27CB27CBC7CBD7CC17CC77CCC7CCD7CC87CC57CD77CE8826E66A8
+7FBF7FCE7FD57FE57FE17FE67FE97FEE7FF37CF87D777DA67DAE7E477E9B9EB8
+9EB48D738D848D948D918DB18D678D6D8C478C49914A9150914E914F91640000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+75
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009162916191709169916F917D917E917291749179918C91859190918D9191
+91A291A391AA91AD91AE91AF91B591B491BA8C559E7E8DB88DEB8E058E598E69
+8DB58DBF8DBC8DBA8DC48DD68DD78DDA8DDE8DCE8DCF8DDB8DC68DEC8DF78DF8
+8DE38DF98DFB8DE48E098DFD8E148E1D8E1F8E2C8E2E8E238E2F8E3A8E408E39
+8E358E3D8E318E498E418E428E518E528E4A8E708E768E7C8E6F8E748E858E8F
+8E948E908E9C8E9E8C788C828C8A8C858C988C94659B89D689DE89DA89DC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+76
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000089E589EB89EF8A3E8B26975396E996F396EF970697019708970F970E972A
+972D9730973E9F809F839F859F869F879F889F899F8A9F8C9EFE9F0B9F0D96B9
+96BC96BD96CE96D277BF96E0928E92AE92C8933E936A93CA938F943E946B9C7F
+9C829C859C869C879C887A239C8B9C8E9C909C919C929C949C959C9A9C9B9C9E
+9C9F9CA09CA19CA29CA39CA59CA69CA79CA89CA99CAB9CAD9CAE9CB09CB19CB2
+9CB39CB49CB59CB69CB79CBA9CBB9CBC9CBD9CC49CC59CC69CC79CCA9CCB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+77
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009CCC9CCD9CCE9CCF9CD09CD39CD49CD59CD79CD89CD99CDC9CDD9CDF9CE2
+977C978597919792979497AF97AB97A397B297B49AB19AB09AB79E589AB69ABA
+9ABC9AC19AC09AC59AC29ACB9ACC9AD19B459B439B479B499B489B4D9B5198E8
+990D992E995599549ADF9AE19AE69AEF9AEB9AFB9AED9AF99B089B0F9B139B1F
+9B239EBD9EBE7E3B9E829E879E889E8B9E9293D69E9D9E9F9EDB9EDC9EDD9EE0
+9EDF9EE29EE99EE79EE59EEA9EEF9F229F2C9F2F9F399F379F3D9F3E9F440000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
diff --git a/library/encoding/gb2312.enc b/library/encoding/gb2312.enc
index 813d7a6..4b2f8c7 100644
--- a/library/encoding/gb2312.enc
+++ b/library/encoding/gb2312.enc
@@ -1,7 +1,32 @@
-# Encoding file: gb2312, double-byte
-D
-233F 0 81
-21
+# Encoding file: euc-cn, multi-byte
+M
+003F 0 82
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000030003001300230FB02C902C700A8300330052015FF5E2225202620182019
@@ -10,6 +35,7 @@ D
23122299222B222E2261224C2248223D221D2260226E226F22642265221E2235
22342642264000B0203220332103FF0400A4FFE0FFE1203000A7211626062605
25CB25CF25CE25C725C625A125A025B325B2203B219221902191219330130000
+A2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -18,7 +44,6 @@ D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-22
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -27,6 +52,7 @@ D
247F248024812482248324842485248624872460246124622463246424652466
2467246824690000000032203221322232233224322532263227322832290000
00002160216121622163216421652166216721682169216A216B000000000000
+A3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -35,7 +61,6 @@ D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-23
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000FF01FF02FF03FFE5FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F
@@ -44,6 +69,7 @@ FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFF3CFF3DFF3EFF3F
FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
+A4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -52,7 +78,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-24
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000304130423043304430453046304730483049304A304B304C304D304E304F
@@ -61,6 +86,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
3070307130723073307430753076307730783079307A307B307C307D307E307F
3080308130823083308430853086308730883089308A308B308C308D308E308F
3090309130923093000000000000000000000000000000000000000000000000
+A5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -69,7 +95,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-25
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
@@ -78,6 +103,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
30F030F130F230F330F430F530F6000000000000000000000000000000000000
+A6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -86,7 +112,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-26
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000039103920393039403950396039703980399039A039B039C039D039E039F
@@ -95,6 +120,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
03C003C103C303C403C503C603C703C803C90000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+A7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -103,7 +129,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-27
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000004100411041204130414041504010416041704180419041A041B041C041D
@@ -112,6 +137,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
000004300431043204330434043504510436043704380439043A043B043C043D
043E043F0440044104420443044404450446044704480449044A044B044C044D
044E044F00000000000000000000000000000000000000000000000000000000
+A8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -120,7 +146,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-28
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000010100E101CE00E0011300E9011B00E8012B00ED01D000EC014D00F301D2
@@ -129,6 +154,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
3110311131123113311431153116311731183119311A311B311C311D311E311F
3120312131223123312431253126312731283129000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+A9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -137,7 +163,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-29
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000002500250125022503250425052506250725082509250A250B
@@ -146,6 +171,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
252C252D252E252F2530253125322533253425352536253725382539253A253B
253C253D253E253F2540254125422543254425452546254725482549254A254B
0000000000000000000000000000000000000000000000000000000000000000
+B0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -154,7 +180,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-30
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000554A963F57C3632854CE550954C07691764C853C77EE827E788D72319698
@@ -163,6 +188,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
9776628A8019575D97387F627238767D67CF767E64464F708D2562DC7A176591
73ED642C6273822C9881677F7248626E62CC4F3474E3534A529E7ECA90A65E2E
6886699C81807ED168D278C5868C9551508D8C2482DE80DE5305891252650000
+B1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -171,7 +197,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-31
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000858496F94FDD582199715B9D62B162A566B48C799C8D7206676F789160B2
@@ -180,6 +205,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6BD96BD65E015E8775F995ED655D5F0A5FC58F9F58C181C2907F965B97AD8FB9
7F168D2C62414FBF53D8535E8FA88FA98FAB904D68075F6A819888689CD6618B
522B762A5F6C658C6FD26EE85BBE6448517551B067C44E1979C9997C70B30000
+B2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -188,7 +214,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-32
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000075C55E7673BB83E064AD62E894B56CE2535A52C3640F94C27B944F2F5E1B
@@ -197,6 +222,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6B8B60ED60E8707F82CD82314ED36CA785CF64CD7CD969FD66F9834953957B56
4FA7518C6D4B5C428E6D63D253C9832C833667E578B4643D5BDF5C945DEE8BE7
62C667F48C7A640063BA8749998B8C177F2094F24EA7961098A4660C73160000
+B3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -205,7 +231,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-33
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000573A5C1D5E38957F507F80A05382655E7545553150218D856284949E671D
@@ -214,6 +239,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
627F901E9A8B79E4540375F4630153196C608FDF5F1B9A70803B9F7F4F885C3A
8D647FC565A570BD514551B2866B5D075BA062BD916C75748E0C7A2061017B79
4EC77EF877854E1181ED521D51FA6A7153A88E87950496CF6EC19664695A0000
+B4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -222,7 +248,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-34
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000784050A877D7641089E6590463E35DDD7A7F693D4F20823955984E3275AE
@@ -231,6 +256,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
847156F153064ECE4E1B51D17C97918B7C074FC38E7F7BE17A9C64675D1450AC
810676017CB96DEC7FE067515B585BF878CB64AE641363AA632B9519642D8FBE
7B5476296253592754466B7950A362345E266B864EE38D37888B5F85902E0000
+B5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -239,7 +265,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-35
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00006020803D62C54E39535590F863B880C665E66C2E4F4660EE6DE18BDE5F39
@@ -248,6 +273,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
654C7B1B72C46DA47FDF5AE162B55E95573084827B2C5E1D5F1F90127F1498A0
63826EC7789870B95178975B57AB75354F4375385E9760E659606DC06BBF7889
53FC96D551CB52016389540A94938C038DCC7239789F87768FED8C0D53E00000
+B6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -256,7 +282,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-36
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004E0176EF53EE948998769F0E952D5B9A8BA24E224E1C51AC846361C252A8
@@ -265,6 +290,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
7F0E58065151961F5BF958A954288E726566987F56E4949D76FE9041638754C6
591A593A579B8EB267358DFA8235524160F0581586FE5CE89E454FC4989D8BB9
5A2560765384627C904F9102997F6069800C513F80335C1499756D314E8C0000
+B7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -273,7 +299,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-37
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00008D3053D17F5A7B4F4F104E4F96006CD573D085E95E06756A7FFB6A0A77FE
@@ -282,6 +307,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6CB88D3982AC915A54296C1B52067EB7575F711A6C7E7C89594B4EFD5FFF6124
7CAA4E305C0167AB87025CF0950B98CE75AF70FD902251AF7F1D8BBD594951E4
4F5B5426592B657780A45B75627662C28F905E456C1F7B264F0F4FD8670D0000
+B8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -290,7 +316,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-38
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00006D6E6DAA798F88B15F17752B629A8F854FEF91DC65A7812F81515E9C8150
@@ -299,6 +324,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
611F79C665628D635188521A94A27F38809B7EB25C976E2F67607BD9768B9AD8
818F7F947CD5641E95507A3F544A54E56B4C640162089E3D80F3759952729769
845B683C86E49601969494EC4E2A54047ED968398DDF801566F45E9A7FB90000
+B9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -307,7 +333,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-39
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000057C2803F68975DE5653B529F606D9F9A4F9B8EAC516C5BAB5F135DE96C5E
@@ -316,6 +341,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
52505BE1630289024E5662D0602A68FA51735B9851A089C27BA199867F5060EF
704C8D2F51495E7F901B747089C4572D78455F529F9F95FA8F689B3C8BE17678
684267DC8DEA8D35523D8F8A6EDA68CD950590ED56FD679C88F98FC754C80000
+BA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -324,7 +350,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-3A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00009AB85B696D776C264EA55BB39A87916361A890AF97E9542B6DB55BD251FD
@@ -333,6 +358,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
76D28C8996026CB36DB88D6B89109E648D3A563F9ED175D55F8872E0606854FC
4EA86A2A886160528F7054C470D886799E3F6D2A5B8F5F187EA255894FAF7334
543C539A5019540E547C4E4E5FFD745A58F6846B80E1877472D07CCA6E560000
+BB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -341,7 +367,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-3B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005F27864E552C62A44E926CAA623782B154D7534E733E6ED1753B52125316
@@ -350,6 +375,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
604D8C0E707063258F895FBD606286D456DE6BC160946167534960E066668D3F
79FD4F1A70E96C478BB38BF27ED88364660F5A5A9B426D516DF78C416D3B4F19
706B83B7621660D1970D8D27797851FB573E57FA673A75787A3D79EF7B950000
+BC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -358,7 +384,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-3C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000808C99658FF96FC08BA59E2159EC7EE97F095409678168D88F917C4D96C6
@@ -367,6 +392,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
59394F735BB652A0835A988A8D3E753294BE50477A3C4EF767B69A7E5AC16B7C
76D1575A5C167B3A95F4714E517C80A9827059787F04832768C067EC78B17877
62E363617B804FED526A51CF835069DB92748DF58D3189C1952E7BAD4EF60000
+BD
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -375,7 +401,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-3D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000506582305251996F6E106E856DA75EFA50F559DC5C066D466C5F7586848B
@@ -384,6 +409,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
53EB7A9663ED63A5768679F888579636622A52AB8282685467706377776B7AED
6D017ED389E359D0621285C982A5754C501F4ECB75A58BEB5C4A5DFE7B4B65A4
91D14ECA6D25895F7D2795264EC58C288FDB9773664B79818FD170EC6D780000
+BE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -392,7 +418,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-3E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005C3D52B283465162830E775B66769CB84EAC60CA7CBE7CB37ECF4E958B66
@@ -401,6 +426,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
62D872D975BD5C459A7983CA5C40548077E94E3E6CAE805A62D2636E5DE85177
8DDD8E1E952F4FF153E560E770AC526763509E435A1F5026773753777EE26485
652B628963985014723589C951B38BC07EDD574783CC94A7519B541B5CFB0000
+BF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -409,7 +435,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-3F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004FCA7AE36D5A90E19A8F55805496536154AF5F0063E9697751EF6168520A
@@ -418,6 +443,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
554357A660735751542D7A7A60505B5463A762A053E362635BC767AF54ED7A9F
82E691775E9388E4593857AE630E8DE880EF57577B774FA95FEB5BBD6B3E5321
7B5072C2684677FF773665F751B54E8F76D45CBF7AA58475594E9B4150800000
+C0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -426,7 +452,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-40
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000998861276E8357646606634656F062EC62695ED39614578362C955878721
@@ -435,6 +460,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
4F6C59E5916A70D96D9D52D24E5096F7956D857E78CA7D2F5121579264C2808B
7C7B6CEA68F1695E51B7539868A872819ECE7BF172F879BB6F137406674E91CC
9CA4793C83898354540F68174E3D538952B1783E5386522950884F8B4FD00000
+C1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -443,7 +469,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-41
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000075E27ACB7C926CA596B6529B748354E94FE9805483B28FDE95705EC9601C
@@ -452,6 +477,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
521788C270C852A3730E7433679778F797164E3490BB9CDE6DCB51DB8D41541D
62CE73B283F196F69F8494C34F367F9A51CC707596755CAD988653E64EE46E9C
740969B4786B998F7559521876246D4167F3516D9F99804B54997B3C7ABF0000
+C2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -460,7 +486,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-42
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00009686578462E29647697C5A0464027BD36F0F964B82A6536298855E907089
@@ -469,6 +494,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6EE653754E7163A0756562A18F6E4F264ED16CA67EB68BBA841D87BA7F57903B
95237BA99AA188F8843D6D1B9A867EDC59889EBB739B780186829A6C9A82561B
541757CB4E709EA653568FC881097792999286EE6EE1851366FC61626F2B0000
+C3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -477,7 +503,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-43
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00008C298292832B76F26C135FD983BD732B8305951A6BDB77DB94C6536F8302
@@ -486,6 +511,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
772F919A97617CDC8FF78C1C5F257C7379D889C56CCC871C5BC65E4268C97720
7EF55195514D52C95A297F05976282D763CF778485D079D26E3A5E9959998511
706D6C1162BF76BF654F60AF95FD660E879F9E2394ED540D547D8C2C64780000
+C4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -494,7 +520,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-44
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000647986116A21819C78E864699B5462B9672B83AB58A89ED86CAB6F205BDE
@@ -503,6 +528,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
753796BE56CA63208111607C95F96DD65462998151855AE980FD59AE9713502A
6CE55C3C62DF4F60533F817B90066EBA852B62C85E7478BE64B5637B5FF55A18
917F9E1F5C3F634F80425B7D556E954A954D6D8560A867E072DE51DD5B810000
+C5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -511,7 +537,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-45
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000062E76CDE725B626D94AE7EBD81136D53519C5F04597452AA601259736696
@@ -520,6 +545,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
522453DB4E535E9E65C1802A80D6629B5486522870AE888D8DD16CE1547880DA
57F988F48D54966A914D4F696C9B55B776C6783062A870F96F8E5F6D84EC68DA
787C7BF781A8670B9E4F636778B0576F78129739627962AB528874356BD70000
+C6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -528,7 +554,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-46
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005564813E75B276AE533975DE50FB5C418B6C7BC7504F72479A9798D86F02
@@ -537,6 +562,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
83E984B257D467345703666E6D668C3166DD7011671F6B3A6816621A59BB4E03
51C46F0667D26C8F517668CB59476B6775665D0E81109F5065D7794879419A91
8D775C824E5E4F01542F5951780C56686C148FC45F036C7D6CE38BAB63900000
+C7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -545,7 +571,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-47
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000060706D3D72756266948E94C553438FC17B7E4EDF8C264E7E9ED494B194B3
@@ -554,6 +579,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
520783044E14602F7A8394A64FB54EB279E6743452E482B964D279BD5BDD6C81
97528F7B6C22503E537F6E0564CE66746C3060C598778BF75E86743C7A7779CB
4E1890B174036C4256DA914B6CC58D8B533A86C666F28EAF5C489A716E200000
+C8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -562,7 +588,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-48
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000053D65A369F8B8DA353BB570898A76743919B6CC9516875CA62F372AC5238
@@ -571,6 +596,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5203598A7EAB62544ECD65E5620E833884C98363878D71946EB65BB97ED25197
63C967D480898339881551125B7A59828FB14E736C5D516589258F6F962E854A
745E951095F06DA682E55F3164926D128428816E9CC3585E8D5B4E0953C10000
+C9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -579,7 +605,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-49
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004F1E6563685155D34E2764149A9A626B5AC2745F82726DA968EE50E7838E
@@ -588,6 +613,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5C1A88F368A2634E7A0D70E7828D52FA97F65C1154E890B57ECD59628D4A86C7
820C820D8D6664445C0461516D89793E8BBE78377533547B4F388EAB6DF15A20
7EC5795E6C885BA15A76751A80BE614E6E1758F0751F7525727253477EF30000
+CA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -596,7 +622,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-4A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000770176DB526980DC57235E08593172EE65BD6E7F8BD75C388671534177F3
@@ -605,6 +630,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5E0260435BA489C68BD56536624B99965B885BFF6388552E53D77626517D852C
67A268B36B8A62928F9353D482126DD1758F4E668D4E5B70719F85AF669166D9
7F7287009ECD9F205C5E672F8FF06811675F620D7AD658855EB665706F310000
+CB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -613,7 +639,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-4B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000060555237800D6454887075295E05681362F4971C53CC723D8C016C347761
@@ -622,6 +647,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
8BF5641C825864DE55FD82CF91654FD77D20901F7C9F50F358516EAF5BBF8BC9
80839178849C7B97867D968B968F7EE59AD3788E5C817A57904296A7795F5B59
635F7B0B84D168AD55067F2974107D2295016240584C4ED65B83597958540000
+CC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -630,7 +656,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-4C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000736D631E8E4B8E0F80CE82D462AC53F06CF0915E592A60016C70574D644A
@@ -639,6 +664,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
7EE68404684390036DD896768BA85957727985E4817E75BC8A8A68AF52548E22
951163D098988E44557C4F5366FF568F60D56D9552435C4959296DFB586B7530
751C606C82148146631167618FE2773A8DF38D3494C15E165385542C70C30000
+CD
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -647,7 +673,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-4D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00006C405EF7505C4EAD5EAD633A8247901A6850916E77B3540C94DC5F647AE5
@@ -656,6 +681,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
625881319E3596409A6E9A7C692D59A562D3553E631654C786D96D3C5A0374E6
889C6B6A59168C4C5F2F6E7E73A9987D4E3870F75B8C7897633D665A769660CB
5B9B5A494E0781556C6A738B4EA167897F515F8065FA671B5FD859845A010000
+CE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -664,7 +690,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-4E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005DCD5FAE537197E68FDD684556F4552F60DF4E3A6F4D7EF482C7840E59D4
@@ -673,6 +698,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6DA17A9D621165A1536763E16C835DEB545C94A84E4C6C618BEC5C4B65E0829C
68A7543E54346BCB6B664E9463425348821E4F0D4FAE575E620A96FE66647269
52FF52A1609F8BEF661471996790897F785277FD6670563B54389521727A0000
+CF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -681,7 +707,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-4F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00007A00606F5E0C6089819D591560DC718470EF6EAA6C5072806A8488AD5E2D
@@ -690,6 +715,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
95F26D8E5F265ACC663E966973B0732E53BF817A99857FA15BAA967796507EBF
76F853A2957699997BB189446E584E617FD479658BE660F354CD4EAB98795DF7
6A6150CF54118C618427785D9704524A54EE56A395006D885BB56DC666530000
+D0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -698,7 +724,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-50
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005C0F5B5D6821809655787B11654869544E9B6B47874E978B534F631F643A
@@ -707,6 +732,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
884C91925E78674F602759D3514451F680F853086C7996C4718A4F114FEE7F9E
673D55C5950879C088967EE3589F620C9700865A5618987B5F908BB884C49157
53D965ED5E8F755C60647D6E5A7F7EEA7EED8F6955A75BA360AC65CB73840000
+D1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -715,7 +741,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-51
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00009009766377297EDA9774859B5B667A7496EA884052CB718F5FAA65EC8BE2
@@ -724,6 +749,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
781487125CA95EF68A00989C960E708E6CBF594463A9773C884D6F1482735830
71D5538C781A96C155015F6671305BB48C1A9A8C6B83592E9E2F79E76768626C
4F6F75A17F8A6D0B96336C274EF075D2517B68376F3E90808170599674760000
+D2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -732,7 +758,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-52
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000064475C2790657A918C2359DA54AC8200836F898180006930564E80367237
@@ -741,6 +766,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
501A5DF24E5977E34EE5827A6291661390915C794EBF5F7981C69038808475AB
4EA688D4610F6BC55FC64E4976CA6EA28BE38BAE8C0A8BD15F027FFC7FCC7ECE
8335836B56E06BB797F3963459FB541F94F66DEB5BC5996E5C395F1596900000
+D3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -749,7 +775,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-53
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000537082F16A315A749E705E947F2883B984248425836787478FCE8D6276C8
@@ -758,6 +783,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
670953CB53F34F5191C98BF153C85E7C8FC26DE44E8E76C26986865E611A8206
4F594FDE903E9C7C61096E1D6E1496854E885A3196E84E0E5C7F79B95B878BED
7FBD738957DF828B90C15401904755BB5CEA5FA161086B3272F180B28A890000
+D4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -766,7 +792,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-54
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00006D745BD388D598848C6B9A6D9E336E0A51A4514357A38881539F63F48F95
@@ -775,6 +800,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5B55531D78386742683D54C9707E5BB08F7D518D572854B1651266828D5E8D43
810F846C906D7CDF51FF85FB67A365E96FA186A48E81566A90207682707671E5
8D2362E952196CFD8D3C600E589E618E66FE8D60624E55B36E23672D8F670000
+D5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -783,7 +809,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-55
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000094E195F87728680569A8548B4E4D70B88BC86458658B5B857A84503A5BE8
@@ -792,6 +817,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
62DB662D627E6CBC8D7571677F695146808753EC906E629854F286F08F998005
951785178FD96D5973CD659F771F7504782781FB8D1E94884FA6679575B98BCA
9707632F9547963584B8632377415F8172F04E896014657462EF6B63653F0000
+D6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -800,7 +826,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-56
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005E2775C790D18BC1829D679D652F5431871877E580A281026C414E4B7EC7
@@ -809,6 +834,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
4E2D76C55FE0949F88777EC879CD80BF91CD4EF24F17821F54685DDE6D328BCC
7CA58F7480985E1A549276B15B99663C9AA473E0682A86DB6731732A8BF88BDB
90107AF970DB716E62C477A956314E3B845767F152A986C08D2E94F87B510000
+D7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -817,7 +843,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-57
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004F4F6CE8795D9A7B6293722A62FD4E1378168F6C64B08D5A7BC668695E84
@@ -826,6 +851,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
4ED47C7D6ED35B5081EA6E0D5B579B0368D58E2A5B977EFC603B7EB590B98D70
594F63CD79DF8DB3535265CF79568BC5963B7EC494BB7E825634918967007F6A
5C0A907566285DE64F5067DE505A4F5C57505EA7000000000000000000000000
+D8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -834,7 +860,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-58
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004E8D4E0C51404E105EFF53454E154E984E1E9B325B6C56694E2879BA4E3F
@@ -843,6 +868,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5326532E533E8D5C5366536352025208520E522D5233523F5240524C525E5261
525C84AF527D528252815290529351827F544EBB4EC34EC94EC24EE84EE14EEB
4EDE4F1B4EF34F224F644EF54F254F274F094F2B4F5E4F6765384F5A4F5D0000
+D9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -851,7 +877,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-59
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004F5F4F574F324F3D4F764F744F914F894F834F8F4F7E4F7B4FAA4F7C4FAC
@@ -860,6 +885,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
50A950BA50D6510650ED50EC50E650EE5107510B4EDD6C3D4F584F654FCE9FA0
6C467C74516E5DFD9EC999985181591452F9530D8A07531051EB591951554EA0
51564EB3886E88A44EB5811488D279805B3488037FB851AB51B151BD51BC0000
+DA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -868,7 +894,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-5A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000051C7519651A251A58BA08BA68BA78BAA8BB48BB58BB78BC28BC38BCB8BCF
@@ -877,6 +902,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
8C1B8C188C1D8C1F8C208C218C258C278C2A8C2B8C2E8C2F8C328C338C358C36
5369537A961D962296219631962A963D963C964296499654965F9667966C9672
96749688968D969796B09097909B909D909990AC90A190B490B390B690BA0000
+DB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -885,7 +911,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-5B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000090B890B090CF90C590BE90D090C490C790D390E690E290DC90D790DB90EB
@@ -894,6 +919,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
574C57A957A1587E58BC58C558D15729572C572A57335739572E572F575C573B
574257695785576B5786577C577B5768576D5776577357AD57A4578C57B257CF
57A757B4579357A057D557D857DA57D957D257B857F457EF57F857E457DD0000
+DC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -902,7 +928,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-5C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000580B580D57FD57ED5800581E5819584458205865586C58815889589A5880
@@ -911,6 +936,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
82C482CE82A482E1830982F782E4830F830782DC82F482D282D8830C82FB82D3
8311831A83068314831582E082D5831C8351835B835C83088392833C83348331
839B835E832F834F83478343835F834083178360832D833A8333836683650000
+DD
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -919,7 +945,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-5D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00008368831B8369836C836A836D836E83B0837883B383B483A083AA8393839C
@@ -928,6 +953,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
83EA83C583C0842683F083E1845C8451845A8459847384878488847A84898478
843C844684698476848C848E8431846D84C184CD84D084E684BD84D384CA84BF
84BA84E084A184B984B4849784E584E3850C750D853884F08539851F853A0000
+DE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -936,7 +962,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-5E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00008556853B84FF84FC8559854885688564855E857A77A285438572857B85A4
@@ -945,6 +970,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
624C626A629F62BB62CA62DA62D762EE632262F66339634B634363AD63F66371
637A638E63B4636D63AC638A636963AE63BC63F263F863E063FF63C463DE63CE
645263C663BE64456441640B641B6420640C64266421645E6484646D64960000
+DF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -953,7 +979,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-5F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000647A64B764B8649964BA64C064D064D764E464E265096525652E5F0B5FD2
@@ -962,6 +987,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
549D54D054AD54C254B454D254A754A654D354D4547254A354D554BB54BF54CC
54D954DA54DC54A954AA54A454DD54CF54DE551B54E7552054FD551454F35522
5523550F55115527552A5567558F55B55549556D55415555553F5550553C0000
+E0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -970,7 +996,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-60
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005537555655755576557755335530555C558B55D2558355B155B955885581
@@ -979,6 +1004,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5608560C56015624562355FE56005627562D565856395657562C564D56625659
565C564C5654568656645671566B567B567C5685569356AF56D456D756DD56E1
56F556EB56F956FF5704570A5709571C5E0F5E195E145E115E315E3B5E3C0000
+E1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -987,7 +1013,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-61
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00005E375E445E545E5B5E5E5E615C8C5C7A5C8D5C905C965C885C985C995C91
@@ -996,6 +1021,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5D5D5D6B5D4B5D4A5D695D745D825D995D9D8C735DB75DC55F735F775F825F87
5F895F8C5F955F995F9C5FA85FAD5FB55FBC88625F6172AD72B072B472B772B8
72C372C172CE72CD72D272E872EF72E972F272F472F7730172F3730372FA0000
+E2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1004,7 +1030,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-62
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000072FB731773137321730A731E731D7315732273397325732C733873317350
@@ -1013,6 +1038,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5E915E8B5E965EA55EA05EB95EB55EBE5EB38D535ED25ED15EDB5EE85EEA81BA
5FC45FC95FD65FCF60035FEE60045FE15FE45FFE600560065FEA5FED5FF86019
60356026601B600F600D6029602B600A603F602160786079607B607A60420000
+E3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1021,7 +1047,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-63
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000606A607D6096609A60AD609D60836092608C609B60EC60BB60B160DD60D8
@@ -1030,6 +1055,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
9608960A960B960C960D960F96129615961696179619961A4E2C723F62156C35
6C546C5C6C4A6CA36C856C906C946C8C6C686C696C746C766C866CA96CD06CD4
6CAD6CF76CF86CF16CD76CB26CE06CD66CFA6CEB6CEE6CB16CD36CEF6CFE0000
+E4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1038,7 +1064,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-64
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00006D396D276D0C6D436D486D076D046D196D0E6D2B6D4D6D2E6D356D1A6D4F
@@ -1047,6 +1072,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6E6B6EB26E5F6E866E536E546E326E256E446EDF6EB16E986EE06F2D6EE26EA5
6EA76EBD6EBB6EB76ED76EB46ECF6E8F6EC26E9F6F626F466F476F246F156EF9
6F2F6F366F4B6F746F2A6F096F296F896F8D6F8C6F786F726F7C6F7A6FD10000
+E5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1055,7 +1081,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-65
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00006FC96FA76FB96FB66FC26FE16FEE6FDE6FE06FEF701A7023701B70397035
@@ -1064,6 +1089,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
900D9016902190359036902D902F9044905190529050906890589062905B66B9
9074907D908290889083908B5F505F575F565F585C3B54AB5C505C595B715C63
5C667FBC5F2A5F295F2D82745F3C9B3B5C6E59815983598D59A959AA59A30000
+E6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1072,7 +1098,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-66
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000599759CA59AB599E59A459D259B259AF59D759BE5A055A0659DD5A0859E3
@@ -1081,6 +1106,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
5AD85ADC5B095B175B165B325B375B405C155C1C5B5A5B655B735B515B535B62
9A759A779A789A7A9A7F9A7D9A809A819A859A889A8A9A909A929A939A969A98
9A9B9A9C9A9D9A9F9AA09AA29AA39AA59AA77E9F7EA17EA37EA57EA87EA90000
+E7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1089,7 +1115,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-67
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00007EAD7EB07EBE7EC07EC17EC27EC97ECB7ECC7ED07ED47ED77EDB7EE07EE1
@@ -1098,6 +1123,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
7F277F2A7F2B7F2C7F2D7F2F7F307F317F327F337F355E7A757F5DDB753E9095
738E739173AE73A2739F73CF73C273D173B773B373C073C973C873E573D9987C
740A73E973E773DE73BA73F2740F742A745B7426742574287430742E742C0000
+E8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1106,7 +1132,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-68
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000741B741A7441745C7457745574597477746D747E749C748E748074817487
@@ -1115,6 +1140,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
680A67E967B0680C67D967B567DA67B367DD680067C367B867E2680E67C167FD
6832683368606861684E6862684468646883681D68556866684168676840683E
684A6849682968B5688F687468776893686B68C2696E68FC691F692068F90000
+E9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1123,7 +1149,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-69
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000692468F0690B6901695768E369106971693969606942695D6984696B6980
@@ -1132,6 +1157,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
6A3E6AA06A506A5B6A356A8E6A796A3D6A286A586A7C6A916A906AA96A976AAB
733773526B816B826B876B846B926B936B8D6B9A6B9B6BA16BAA8F6B8F6D8F71
8F728F738F758F768F788F778F798F7A8F7C8F7E8F818F828F848F878F8B0000
+EA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1140,7 +1166,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-6A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00008F8D8F8E8F8F8F988F9A8ECE620B6217621B621F6222622162256224622C
@@ -1149,6 +1174,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
66776684668C66A7669D66BE66DB66DC66E666E98D328D338D368D3B8D3D8D40
8D458D468D488D498D478D4D8D558D5989C789CA89CB89CC89CE89CF89D089D1
726E729F725D7266726F727E727F7284728B728D728F72926308633263B00000
+EB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1157,7 +1183,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-6B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000643F64D880046BEA6BF36BFD6BF56BF96C056C076C066C0D6C156C186C19
@@ -1166,6 +1191,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
80C480D980CD80D7671080DD80EB80F180F480ED810D810E80F280FC67158112
8C5A8136811E812C811881328148814C815381748159815A817181608169817C
817D816D8167584D5AB58188818281916ED581A381AA81CC672681CA81BB0000
+EC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1174,7 +1200,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-6C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000081C181A66B246B376B396B436B466B5998D198D298D398D598D998DA6BB3
@@ -1183,6 +1208,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
716871457172714A7178717A719871B371B571A871A071E071D471E771F9721D
7228706C7118716671B9623E623D624362486249793B794079467949795B795C
7953795A796279577960796F7967797A7985798A799A79A779B35FD15FD00000
+ED
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1191,7 +1217,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-6D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000603C605D605A606760416059606360AB6106610D615D61A9619D61CB61D1
@@ -1200,6 +1225,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
7847784C786A789B7893789A7887789C78A178A378B278B978A578D478D978C9
78EC78F2790578F479137924791E79349F9B9EF99EFB9EFC76F17704770D76F9
77077708771A77227719772D7726773577387750775177477743775A77680000
+EE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1208,7 +1234,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-6E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000077627765777F778D777D7780778C7791779F77A077B077B577BD753A7540
@@ -1217,6 +1242,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
949A949B949C94A394A494AB94AA94AD94AC94AF94B094B294B494B694B794B8
94B994BA94BC94BD94BF94C494C894C994CA94CB94CC94CD94CE94D094D194D2
94D594D694D794D994D894DB94DE94DF94E094E294E494E594E794E894EA0000
+EF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1225,7 +1251,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-6F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000094E994EB94EE94EF94F394F494F594F794F994FC94FD94FF950395029506
@@ -1234,6 +1259,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
9544954595469549954C954E954F9552955395549556955795589559955B955E
955F955D95619562956495659566956795689569956A956B956C956F95719572
9573953A77E777EC96C979D579ED79E379EB7A065D477A037A027A1E7A140000
+F0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1242,7 +1268,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-70
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00007A397A377A519ECF99A57A707688768E7693769976A474DE74E0752C9E20
@@ -1251,6 +1276,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
9E669E679E689E699E6A9E6B9E6C9E719E6D9E7375927594759675A0759D75AC
75A375B375B475B875C475B175B075C375C275D675CD75E375E875E675E475EB
75E7760375F175FC75FF761076007605760C7617760A76257618761576190000
+F1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1259,7 +1285,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-71
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000761B763C762276207640762D7630763F76357643763E7633764D765E7654
@@ -1268,6 +1293,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
88E588F1891A88FC88E888FE88F0892189198913891B890A8934892B89368941
8966897B758B80E576B276B477DC801280148016801C80208022802580268027
802980288031800B803580438046804D80528069807189839878988098830000
+F2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1276,7 +1302,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-72
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00009889988C988D988F9894989A989B989E989F98A198A298A598A6864D8654
@@ -1285,6 +1310,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
86D0871386DE86F486DF86D886D18703870786F88708870A870D87098723873B
871E8725872E871A873E87488734873187298737873F87828722877D877E877B
87608770874C876E878B87538763877C876487598765879387AF87A887D20000
+F3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1293,7 +1319,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-73
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000087C68788878587AD8797878387AB87E587AC87B587B387CB87D387BD87D1
@@ -1302,6 +1327,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
7B2E7B317B207B257B247B337B3E7B1E7B587B5A7B457B757B4C7B5D7B607B6E
7B7B7B627B727B717B907BA67BA77BB87BAC7B9D7BA87B857BAA7B9C7BA27BAB
7BB47BD17BC17BCC7BDD7BDA7BE57BE67BEA7C0C7BFE7BFC7C0F7C167C0B0000
+F4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1310,7 +1336,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-74
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00007C1F7C2A7C267C387C417C4081FE82018202820481EC8844822182228223
@@ -1319,6 +1344,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
7C9C7C9E7CA27CB27CBC7CBD7CC17CC77CCC7CCD7CC87CC57CD77CE8826E66A8
7FBF7FCE7FD57FE57FE17FE67FE97FEE7FF37CF87D777DA67DAE7E477E9B9EB8
9EB48D738D848D948D918DB18D678D6D8C478C49914A9150914E914F91640000
+F5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1327,7 +1353,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-75
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00009162916191709169916F917D917E917291749179918C91859190918D9191
@@ -1336,6 +1361,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
8DE38DF98DFB8DE48E098DFD8E148E1D8E1F8E2C8E2E8E238E2F8E3A8E408E39
8E358E3D8E318E498E418E428E518E528E4A8E708E768E7C8E6F8E748E858E8F
8E948E908E9C8E9E8C788C828C8A8C858C988C94659B89D689DE89DA89DC0000
+F6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1344,7 +1370,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-76
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000089E589EB89EF8A3E8B26975396E996F396EF970697019708970F970E972A
@@ -1353,6 +1378,7 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
9C829C859C869C879C887A239C8B9C8E9C909C919C929C949C959C9A9C9B9C9E
9C9F9CA09CA19CA29CA39CA59CA69CA79CA89CA99CAB9CAD9CAE9CB09CB19CB2
9CB39CB49CB59CB69CB79CBA9CBB9CBC9CBD9CC49CC59CC69CC79CCA9CCB0000
+F7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1361,7 +1387,6 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
-77
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00009CCC9CCD9CCE9CCF9CD09CD39CD49CD59CD79CD89CD99CDC9CDD9CDF9CE2
@@ -1370,11 +1395,3 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
990D992E995599549ADF9AE19AE69AEF9AEB9AFB9AED9AF99B089B0F9B139B1F
9B239EBD9EBE7E3B9E829E879E889E8B9E9293D69E9D9E9F9EDB9EDC9EDD9EE0
9EDF9EE29EE99EE79EE59EEA9EEF9F229F2C9F2F9F399F379F3D9F3E9F440000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
diff --git a/library/encoding/iso2022-jp.enc b/library/encoding/iso2022-jp.enc
index a4e455f..f6dabe5 100644
--- a/library/encoding/iso2022-jp.enc
+++ b/library/encoding/iso2022-jp.enc
@@ -3,10 +3,10 @@ E
name iso2022-jp
init {}
final {}
-iso8859-1 \x1b(B
+ascii \x1b(B
jis0201 \x1b(J
-jis0208 \x1b$@
jis0208 \x1b$B
+jis0208 \x1b$@
jis0212 \x1b$(D
gb2312 \x1b$A
ksc5601 \x1b$(C
diff --git a/library/encoding/iso2022.enc b/library/encoding/iso2022.enc
index ae7cde1..a58f8e3 100644
--- a/library/encoding/iso2022.enc
+++ b/library/encoding/iso2022.enc
@@ -6,11 +6,9 @@ final {}
iso8859-1 \x1b(B
jis0201 \x1b(J
gb1988 \x1b(T
-jis0208 \x1b$@
jis0208 \x1b$B
+jis0208 \x1b$@
jis0212 \x1b$(D
gb2312 \x1b$A
ksc5601 \x1b$(C
jis0208 \x1b&@\x1b$B
-
-
diff --git a/library/encoding/iso8859-10.enc b/library/encoding/iso8859-10.enc
new file mode 100644
index 0000000..934b3b9
--- /dev/null
+++ b/library/encoding/iso8859-10.enc
@@ -0,0 +1,20 @@
+# Encoding file: iso8859-10, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+00A0010401120122012A0128013600A7013B011001600166017D00AD016A014A
+00B0010501130123012B0129013700B7013C011101610167017E2015016B014B
+010000C100C200C300C400C500C6012E010C00C9011800CB011600CD00CE00CF
+00D00145014C00D300D400D500D6016800D8017200DA00DB00DC00DD00DE00DF
+010100E100E200E300E400E500E6012F010D00E9011900EB011700ED00EE00EF
+00F00146014D00F300F400F500F6016900F8017300FA00FB00FC00FD00FE0138
diff --git a/library/encoding/iso8859-13.enc b/library/encoding/iso8859-13.enc
new file mode 100644
index 0000000..b7edcaf
--- /dev/null
+++ b/library/encoding/iso8859-13.enc
@@ -0,0 +1,20 @@
+# Encoding file: iso8859-13, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+00A0201D00A200A300A4201E00A600A700D800A9015600AB00AC00AD00AE00C6
+00B000B100B200B3201C00B500B600B700F800B9015700BB00BC00BD00BE00E6
+0104012E0100010600C400C501180112010C00C90179011601220136012A013B
+01600143014500D3014C00D500D600D701720141015A016A00DC017B017D00DF
+0105012F0101010700E400E501190113010D00E9017A011701230137012B013C
+01610144014600F3014D00F500F600F701730142015B016B00FC017C017E2019
diff --git a/library/encoding/iso8859-14.enc b/library/encoding/iso8859-14.enc
new file mode 100644
index 0000000..a65ba05
--- /dev/null
+++ b/library/encoding/iso8859-14.enc
@@ -0,0 +1,20 @@
+# Encoding file: iso8859-14, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+00A01E021E0300A3010A010B1E0A00A71E8000A91E821E0B1EF200AD00AE0178
+1E1E1E1F012001211E401E4100B61E561E811E571E831E601EF31E841E851E61
+00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
+017400D100D200D300D400D500D61E6A00D800D900DA00DB00DC00DD017600DF
+00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
+017500F100F200F300F400F500F61E6B00F800F900FA00FB00FC00FD017700FF
diff --git a/library/encoding/iso8859-15.enc b/library/encoding/iso8859-15.enc
new file mode 100644
index 0000000..823af46
--- /dev/null
+++ b/library/encoding/iso8859-15.enc
@@ -0,0 +1,20 @@
+# Encoding file: iso8859-15, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+00A000A100A200A320AC00A5016000A7016100A900AA00AB00AC00AD00AE00AF
+00B000B100B200B3017D00B500B600B7017E00B900BA00BB01520153017800BF
+00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
+00D000D100D200D300D400D500D600D700D800D900DA00DB00DC00DD00DE00DF
+00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
+00F000F100F200F300F400F500F600F700F800F900FA00FB00FC00FD00FE00FF
diff --git a/library/encoding/iso8859-16.enc b/library/encoding/iso8859-16.enc
new file mode 100644
index 0000000..da33709
--- /dev/null
+++ b/library/encoding/iso8859-16.enc
@@ -0,0 +1,20 @@
+# Encoding file: iso8859-16, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+00A001040105014120AC201E016000A7016100A9021800AB017900AD017A017B
+00B000B1010C0142017D201D00B600B7017E010D021900BB015201530178017C
+00C000C100C2010200C4010600C600C700C800C900CA00CB00CC00CD00CE00CF
+0110014300D200D300D4015000D6015A017000D900DA00DB00DC0118021A00DF
+00E000E100E2010300E4010700E600E700E800E900EA00EB00EC00ED00EE00EF
+0111014400F200F300F4015100F6015B017100F900FA00FB00FC0119021B00FF
diff --git a/library/encoding/iso8859-6.enc b/library/encoding/iso8859-6.enc
index 6510af7..19ddefb 100644
--- a/library/encoding/iso8859-6.enc
+++ b/library/encoding/iso8859-6.enc
@@ -5,7 +5,7 @@ S
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
-0660066106620663066406650666066706680669003A003B003C003D003E003F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
diff --git a/library/encoding/iso8859-7.enc b/library/encoding/iso8859-7.enc
index 2cb69a2..0f93ac8 100644
--- a/library/encoding/iso8859-7.enc
+++ b/library/encoding/iso8859-7.enc
@@ -12,7 +12,7 @@ S
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
-00A002BD02BC00A30000000000A600A700A800A9000000AB00AC00AD00002015
+00A02018201900A30000000000A600A700A800A9000000AB00AC00AD00002015
00B000B100B200B303840385038600B703880389038A00BB038C00BD038E038F
0390039103920393039403950396039703980399039A039B039C039D039E039F
03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF
diff --git a/library/encoding/iso8859-8.enc b/library/encoding/iso8859-8.enc
index 6b424d5..579fa5b 100644
--- a/library/encoding/iso8859-8.enc
+++ b/library/encoding/iso8859-8.enc
@@ -12,9 +12,9 @@ S
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
-00A0000000A200A300A400A500A600A700A800A900D700AB00AC00AD00AE203E
+00A0000000A200A300A400A500A600A700A800A900D700AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900F700BB00BC00BD00BE0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000002017
05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
-05E005E105E205E305E405E505E605E705E805E905EA00000000000000000000
+05E005E105E205E305E405E505E605E705E805E905EA00000000200E200F0000
diff --git a/library/encoding/jis0208.enc b/library/encoding/jis0208.enc
index 7102e88..8460b69 100644
--- a/library/encoding/jis0208.enc
+++ b/library/encoding/jis0208.enc
@@ -1310,3 +1310,10 @@ FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5A00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+R
+2141 301C FF5E
+2142 2016 2225
+215D 2212 FF0D
+2171 00A2 FFE0
+2172 00A3 FFE1
+224C 00AC FFE2
diff --git a/library/encoding/koi8-u.enc b/library/encoding/koi8-u.enc
new file mode 100644
index 0000000..e4eeb84
--- /dev/null
+++ b/library/encoding/koi8-u.enc
@@ -0,0 +1,20 @@
+# Encoding file: koi8-u, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+25002502250C251025142518251C2524252C2534253C258025842588258C2590
+259125922593232025A02219221A22482264226500A0232100B000B200B700F7
+25502551255204510454255404560457255725582559255A255B0491255D255E
+255F25602561040104032563040604072566256725682569256A0490256C00A9
+044E0430043104460434043504440433044504380439043A043B043C043D043E
+043F044F044004410442044304360432044C044B04370448044D04490447044A
+042E0410041104260414041504240413042504180419041A041B041C041D041E
+041F042F042004210422042304160412042C042B04170428042D04290427042A
diff --git a/library/encoding/macCroatian.enc b/library/encoding/macCroatian.enc
index 132a74c..c23d0f0 100644
--- a/library/encoding/macCroatian.enc
+++ b/library/encoding/macCroatian.enc
@@ -13,8 +13,8 @@ S
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE0160212200B400A82260017D00D8
-221E00B122642265220600B522022211220F0161222B00AA00BA2126017E00F8
+221E00B122642265220600B522022211220F0161222B00AA00BA03A9017E00F8
00BF00A100AC221A01922248010600AB010C202600A000C000C300D501520153
-01102014201C201D2018201900F725CAF8FF00A9204400A42039203A00C600BB
+01102014201C201D2018201900F725CAF8FF00A9204420AC2039203A00C600BB
201300B7201A201E203000C2010700C1010D00C800CD00CE00CF00CC00D300D4
011100D200DA00DB00D9013102C602DC00AF03C000CB02DA00B800CA00E602C7
diff --git a/library/encoding/macCyrillic.enc b/library/encoding/macCyrillic.enc
index 5590833..e657739 100644
--- a/library/encoding/macCyrillic.enc
+++ b/library/encoding/macCyrillic.enc
@@ -12,9 +12,9 @@ S
0070007100720073007400750076007700780079007A007B007C007D007E007F
0410041104120413041404150416041704180419041A041B041C041D041E041F
0420042104220423042404250426042704280429042A042B042C042D042E042F
-202000B000A200A300A7202200B6040600AE00A9212204020452226004030453
-221E00B122642265045600B522020408040404540407045704090459040A045A
+202000B0049000A300A7202200B6040600AE00A9212204020452226004030453
+221E00B122642265045600B504910408040404540407045704090459040A045A
0458040500AC221A01922248220600AB00BB202600A0040B045B040C045C0455
20132014201C201D2018201900F7201E040E045E040F045F211604010451044F
0430043104320433043404350436043704380439043A043B043C043D043E043F
-0440044104420443044404450446044704480449044A044B044C044D044E00A4
+0440044104420443044404450446044704480449044A044B044C044D044E20AC
diff --git a/library/encoding/macGreek.enc b/library/encoding/macGreek.enc
index fbfa51f..67b9953 100644
--- a/library/encoding/macGreek.enc
+++ b/library/encoding/macGreek.enc
@@ -12,7 +12,7 @@ S
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400B900B200C900B300D600DC038500E000E200E4038400A800E700E900E8
00EA00EB00A3212200EE00EF202200BD203000F400F600A600AD00F900FB00FC
-2020039303940398039B039E03A000DF00AE00A903A303AA00A7226000B00387
+2020039303940398039B039E03A000DF00AE00A903A303AA00A7226000B000B7
039100B12264226500A503920395039603970399039A039C03A603AB03A803A9
03AC039D00AC039F03A1224803A400AB00BB202600A003A503A7038603880153
20132015201C201D2018201900F70389038A038C038E03AD03AE03AF03CC038F
diff --git a/library/encoding/macIceland.enc b/library/encoding/macIceland.enc
index e3fe9a9..c636069 100644
--- a/library/encoding/macIceland.enc
+++ b/library/encoding/macIceland.enc
@@ -13,8 +13,8 @@ S
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
00DD00B000A200A300A7202200B600DF00AE00A9212200B400A8226000C600D8
-221E00B12264226500A500B522022211220F03C0222B00AA00BA212600E600F8
+221E00B12264226500A500B522022211220F03C0222B00AA00BA03A900E600F8
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
-20132014201C201D2018201900F725CA00FF0178204400A400D000F000DE00FE
+20132014201C201D2018201900F725CA00FF0178204420AC00D000F000DE00FE
00FD00B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
F8FF00D200DA00DB00D9013102C602DC00AF02D802D902DA00B802DD02DB02C7
diff --git a/library/encoding/macRoman.enc b/library/encoding/macRoman.enc
index 6cfd749..15de266 100644
--- a/library/encoding/macRoman.enc
+++ b/library/encoding/macRoman.enc
@@ -13,8 +13,8 @@ S
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE00A9212200B400A8226000C600D8
-221E00B12264226500A500B522022211220F03C0222B00AA00BA212600E600F8
+221E00B12264226500A500B522022211220F03C0222B00AA00BA03A900E600F8
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
-20132014201C201D2018201900F725CA00FF0178204400A42039203AFB01FB02
+20132014201C201D2018201900F725CA00FF0178204420AC2039203AFB01FB02
202100B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
F8FF00D200DA00DB00D9013102C602DC00AF02D802D902DA00B802DD02DB02C7
diff --git a/library/encoding/macTurkish.enc b/library/encoding/macTurkish.enc
index 73e8687..f9542ae 100644
--- a/library/encoding/macTurkish.enc
+++ b/library/encoding/macTurkish.enc
@@ -13,7 +13,7 @@ S
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE00A9212200B400A8226000C600D8
-221E00B12264226500A500B522022211220F03C0222B00AA00BA212600E600F8
+221E00B12264226500A500B522022211220F03C0222B00AA00BA03A900E600F8
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
20132014201C201D2018201900F725CA00FF0178011E011F01300131015E015F
202100B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
diff --git a/library/encoding/shiftjis.enc b/library/encoding/shiftjis.enc
index c8d2504..140aec4 100644
--- a/library/encoding/shiftjis.enc
+++ b/library/encoding/shiftjis.enc
@@ -681,3 +681,10 @@ EA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+R
+8160 301C FF5E
+8161 2016 2225
+817C 2212 FF0D
+8191 00A2 FFE0
+8192 00A3 FFE1
+81CA 00AC FFE2
diff --git a/library/encoding/tis-620.enc b/library/encoding/tis-620.enc
new file mode 100644
index 0000000..c233be5
--- /dev/null
+++ b/library/encoding/tis-620.enc
@@ -0,0 +1,20 @@
+# Encoding file: tis-620, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
+0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
+0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
+0E300E310E320E330E340E350E360E370E380E390E3A00000000000000000E3F
+0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D0E4E0E4F
+0E500E510E520E530E540E550E560E570E580E590E5A0E5B0000000000000000 \ No newline at end of file
diff --git a/library/history.tcl b/library/history.tcl
index a3bfb85..51d2404 100644
--- a/library/history.tcl
+++ b/library/history.tcl
@@ -2,22 +2,20 @@
#
# Implementation of the history command.
#
-# RCS: @(#) $Id: history.tcl,v 1.3 1998/09/14 18:40:03 stanton Exp $
-#
# Copyright (c) 1997 Sun Microsystems, Inc.
#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-
-# The tcl::history array holds the history list and
-# some additional bookkeeping variables.
+
+# The tcl::history array holds the history list and some additional
+# bookkeeping variables.
#
# nextid the index used for the next history list item.
# keep the max size of the history list
# oldest the index of the oldest item in the history.
-namespace eval tcl {
+namespace eval ::tcl {
variable history
if {![info exists history]} {
array set history {
@@ -26,157 +24,78 @@ namespace eval tcl {
oldest -20
}
}
-}
+ namespace ensemble create -command ::tcl::history -map {
+ add ::tcl::HistAdd
+ change ::tcl::HistChange
+ clear ::tcl::HistClear
+ event ::tcl::HistEvent
+ info ::tcl::HistInfo
+ keep ::tcl::HistKeep
+ nextid ::tcl::HistNextID
+ redo ::tcl::HistRedo
+ }
+}
+
# history --
#
# This is the main history command. See the man page for its interface.
-# This does argument checking and calls helper procedures in the
-# history namespace.
+# This does some argument checking and calls the helper ensemble in the
+# tcl namespace.
-proc history {args} {
- set len [llength $args]
- if {$len == 0} {
- return [tcl::HistInfo]
- }
- set key [lindex $args 0]
- set options "add, change, clear, event, info, keep, nextid, or redo"
- switch -glob -- $key {
- a* { # history add
-
- if {$len > 3} {
- return -code error "wrong # args: should be \"history add event ?exec?\""
- }
- if {![string match $key* add]} {
- return -code error "bad option \"$key\": must be $options"
- }
- if {$len == 3} {
- set arg [lindex $args 2]
- if {! ([string match e* $arg] && [string match $arg* exec])} {
- return -code error "bad argument \"$arg\": should be \"exec\""
- }
- }
- return [tcl::HistAdd [lindex $args 1] [lindex $args 2]]
- }
- ch* { # history change
-
- if {($len > 3) || ($len < 2)} {
- return -code error "wrong # args: should be \"history change newValue ?event?\""
- }
- if {![string match $key* change]} {
- return -code error "bad option \"$key\": must be $options"
- }
- if {$len == 2} {
- set event 0
- } else {
- set event [lindex $args 2]
- }
-
- return [tcl::HistChange [lindex $args 1] $event]
- }
- cl* { # history clear
-
- if {($len > 1)} {
- return -code error "wrong # args: should be \"history clear\""
- }
- if {![string match $key* clear]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [tcl::HistClear]
- }
- e* { # history event
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history event ?event?\""
- }
- if {![string match $key* event]} {
- return -code error "bad option \"$key\": must be $options"
- }
- if {$len == 1} {
- set event -1
- } else {
- set event [lindex $args 1]
- }
- return [tcl::HistEvent $event]
- }
- i* { # history info
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history info ?count?\""
- }
- if {![string match $key* info]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [tcl::HistInfo [lindex $args 1]]
- }
- k* { # history keep
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history keep ?count?\""
- }
- if {$len == 1} {
- return [tcl::HistKeep]
- } else {
- set limit [lindex $args 1]
- if {[catch {expr {~$limit}}] || ($limit < 0)} {
- return -code error "illegal keep count \"$limit\""
- }
- return [tcl::HistKeep $limit]
- }
- }
- n* { # history nextid
-
- if {$len > 1} {
- return -code error "wrong # args: should be \"history nextid\""
- }
- if {![string match $key* nextid]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [expr {$tcl::history(nextid) + 1}]
- }
- r* { # history redo
+proc ::history {args} {
+ # If no command given, we're doing 'history info'. Can't be done with an
+ # ensemble unknown handler, as those don't fire when no subcommand is
+ # given at all.
- if {$len > 2} {
- return -code error "wrong # args: should be \"history redo ?event?\""
- }
- if {![string match $key* redo]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [tcl::HistRedo [lindex $args 1]]
- }
- default {
- return -code error "bad option \"$key\": must be $options"
- }
+ if {![llength $args]} {
+ set args info
}
-}
+ # Tricky stuff needed to make stack and errors come out right!
+ tailcall apply {arglist {tailcall history {*}$arglist} ::tcl} $args
+}
+
# tcl::HistAdd --
#
# Add an item to the history, and optionally eval it at the global scope
#
# Parameters:
-# command the command to add
-# exec (optional) a substring of "exec" causes the
-# command to be evaled.
+# event the command to add
+# exec (optional) a substring of "exec" causes the command to
+# be evaled.
# Results:
# If executing, then the results of the command are returned
#
# Side Effects:
# Adds to the history list
- proc tcl::HistAdd {command {exec {}}} {
+proc ::tcl::HistAdd {event {exec {}}} {
variable history
- set i [incr history(nextid)]
- set history($i) $command
- set j [incr history(oldest)]
- if {[info exists history($j)]} {unset history($j)}
- if {[string match e* $exec]} {
- return [uplevel #0 $command]
- } else {
- return {}
+
+ if {
+ [prefix longest {exec {}} $exec] eq ""
+ && [llength [info level 0]] == 3
+ } then {
+ return -code error "bad argument \"$exec\": should be \"exec\""
}
-}
+ # Do not add empty commands to the history
+ if {[string trim $event] eq ""} {
+ return ""
+ }
+
+ # Maintain the history
+ set history([incr history(nextid)]) $event
+ unset -nocomplain history([incr history(oldest)])
+
+ # Only execute if 'exec' (or non-empty prefix of it) given
+ if {$exec eq ""} {
+ return ""
+ }
+ tailcall eval $event
+}
+
# tcl::HistKeep --
#
# Set or query the limit on the length of the history list
@@ -190,20 +109,22 @@ proc history {args} {
# Side Effects:
# Updates history(keep) if a limit is specified
- proc tcl::HistKeep {{limit {}}} {
+proc ::tcl::HistKeep {{count {}}} {
variable history
- if {[string length $limit] == 0} {
+ if {[llength [info level 0]] == 1} {
return $history(keep)
- } else {
- set oldold $history(oldest)
- set history(oldest) [expr {$history(nextid) - $limit}]
- for {} {$oldold <= $history(oldest)} {incr oldold} {
- if {[info exists history($oldold)]} {unset history($oldold)}
- }
- set history(keep) $limit
}
+ if {![string is integer -strict $count] || ($count < 0)} {
+ return -code error "illegal keep count \"$count\""
+ }
+ set oldold $history(oldest)
+ set history(oldest) [expr {$history(nextid) - $count}]
+ for {} {$oldold <= $history(oldest)} {incr oldold} {
+ unset -nocomplain history($oldold)
+ }
+ set history(keep) $count
}
-
+
# tcl::HistClear --
#
# Erase the history list
@@ -217,7 +138,7 @@ proc history {args} {
# Side Effects:
# Resets the history array, except for the keep limit
- proc tcl::HistClear {} {
+proc ::tcl::HistClear {} {
variable history
set keep $history(keep)
unset history
@@ -227,7 +148,7 @@ proc history {args} {
oldest -$keep \
]
}
-
+
# tcl::HistInfo --
#
# Return a pretty-printed version of the history list
@@ -238,30 +159,31 @@ proc history {args} {
# Results:
# A formatted history list
- proc tcl::HistInfo {{num {}}} {
+proc ::tcl::HistInfo {{count {}}} {
variable history
- if {$num == {}} {
- set num [expr {$history(keep) + 1}]
+ if {[llength [info level 0]] == 1} {
+ set count [expr {$history(keep) + 1}]
+ } elseif {![string is integer -strict $count]} {
+ return -code error "bad integer \"$count\""
}
set result {}
set newline ""
- for {set i [expr {$history(nextid) - $num + 1}]} \
+ for {set i [expr {$history(nextid) - $count + 1}]} \
{$i <= $history(nextid)} {incr i} {
if {![info exists history($i)]} {
continue
}
- set cmd [string trimright $history($i) \ \n]
- regsub -all \n $cmd "\n\t" cmd
+ set cmd [string map [list \n \n\t] [string trimright $history($i) \ \n]]
append result $newline[format "%6d %s" $i $cmd]
set newline \n
}
return $result
}
-
+
# tcl::HistRedo --
#
-# Fetch the previous or specified event, execute it, and then
-# replace the current history item with that event.
+# Fetch the previous or specified event, execute it, and then replace
+# the current history item with that event.
#
# Parameters:
# event (optional) index of history item to redo. Defaults to -1,
@@ -273,20 +195,18 @@ proc history {args} {
# Side Effects:
# Replaces the current history list item with the one being redone.
- proc tcl::HistRedo {{event -1}} {
+proc ::tcl::HistRedo {{event -1}} {
variable history
- if {[string length $event] == 0} {
- set event -1
- }
+
set i [HistIndex $event]
if {$i == $history(nextid)} {
return -code error "cannot redo the current event"
}
set cmd $history($i)
HistChange $cmd 0
- uplevel #0 $cmd
+ tailcall eval $cmd
}
-
+
# tcl::HistIndex --
#
# Map from an event specifier to an index in the history list.
@@ -296,21 +216,22 @@ proc history {args} {
# If this is a positive number, it is used directly.
# If it is a negative number, then it counts back to a previous
# event, where -1 is the most recent event.
-# A string can be matched, either by being the prefix of
-# a command or by matching a command with string match.
+# A string can be matched, either by being the prefix of a
+# command or by matching a command with string match.
#
# Results:
# The index into history, or an error if the index didn't match.
- proc tcl::HistIndex {event} {
+proc ::tcl::HistIndex {event} {
variable history
- if {[catch {expr {~$event}}]} {
- for {set i $history(nextid)} {[info exists history($i)]} {incr i -1} {
+ if {![string is integer -strict $event]} {
+ for {set i [expr {$history(nextid)-1}]} {[info exists history($i)]} \
+ {incr i -1} {
if {[string match $event* $history($i)]} {
- return $i;
+ return $i
}
if {[string match $event $history($i)]} {
- return $i;
+ return $i
}
}
return -code error "no event matches \"$event\""
@@ -327,43 +248,64 @@ proc history {args} {
}
return $i
}
-
+
# tcl::HistEvent --
#
# Map from an event specifier to the value in the history list.
#
# Parameters:
-# event index of history item to redo. See index for a
-# description of possible event patterns.
+# event index of history item to redo. See index for a description of
+# possible event patterns.
#
# Results:
# The value from the history list.
- proc tcl::HistEvent {event} {
+proc ::tcl::HistEvent {{event -1}} {
variable history
set i [HistIndex $event]
- if {[info exists history($i)]} {
- return [string trimright $history($i) \ \n]
- } else {
- return "";
+ if {![info exists history($i)]} {
+ return ""
}
+ return [string trimright $history($i) \ \n]
}
-
+
# tcl::HistChange --
#
# Replace a value in the history list.
#
# Parameters:
-# cmd The new value to put into the history list.
-# event (optional) index of history item to redo. See index for a
-# description of possible event patterns. This defaults
-# to 0, which specifies the current event.
+# newValue The new value to put into the history list.
+# event (optional) index of history item to redo. See index for a
+# description of possible event patterns. This defaults to 0,
+# which specifies the current event.
#
# Side Effects:
# Changes the history list.
- proc tcl::HistChange {cmd {event 0}} {
+proc ::tcl::HistChange {newValue {event 0}} {
variable history
set i [HistIndex $event]
- set history($i) $cmd
+ set history($i) $newValue
}
+
+# tcl::HistNextID --
+#
+# Returns the number of the next history event.
+#
+# Parameters:
+# None.
+#
+# Side Effects:
+# None.
+
+proc ::tcl::HistNextID {} {
+ variable history
+ return [expr {$history(nextid) + 1}]
+}
+
+return
+
+# Local Variables:
+# mode: tcl
+# fill-column: 78
+# End:
diff --git a/library/http/http.tcl b/library/http/http.tcl
index f448077..a6b2bfd 100644
--- a/library/http/http.tcl
+++ b/library/http/http.tcl
@@ -1,51 +1,144 @@
# http.tcl --
#
-# Client-side HTTP for GET, POST, and HEAD commands.
-# These routines can be used in untrusted code that uses
-# the Safesock security policy. These procedures use a
-# callback interface to avoid using vwait, which is not
-# defined in the safe base.
+# Client-side HTTP for GET, POST, and HEAD commands. These routines can
+# be used in untrusted code that uses the Safesock security policy.
+# These procedures use a callback interface to avoid using vwait, which
+# is not defined in the safe base.
#
-# See the file "license.terms" for information on usage and
-# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: http.tcl,v 1.9 1999/08/05 16:57:48 hobbs Exp $
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
-package provide http 2.1 ;# This uses Tcl namespaces
+package require Tcl 8.6
+# Keep this in sync with pkgIndex.tcl and with the install directories in
+# Makefiles
+package provide http 2.8.8
namespace eval http {
- variable http
+ # Allow resourcing to not clobber existing data
- array set http {
- -accept */*
- -proxyhost {}
- -proxyport {}
- -useragent {Tcl http client package 2.1}
- -proxyfilter http::ProxyRequired
+ variable http
+ if {![info exists http]} {
+ array set http {
+ -accept */*
+ -proxyhost {}
+ -proxyport {}
+ -proxyfilter http::ProxyRequired
+ -urlencoding utf-8
+ }
+ # We need a useragent string of this style or various servers will refuse to
+ # send us compressed content even when we ask for it. This follows the
+ # de-facto layout of user-agent strings in current browsers.
+ set http(-useragent) "Mozilla/5.0\
+ ([string totitle $::tcl_platform(platform)]; U;\
+ $::tcl_platform(os) $::tcl_platform(osVersion))\
+ http/[package provide http] Tcl/[package provide Tcl]"
}
- variable formMap
- set alphanumeric a-zA-Z0-9
+ proc init {} {
+ # Set up the map for quoting chars. RFC3986 Section 2.3 say percent
+ # encode all except: "... percent-encoded octets in the ranges of
+ # ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period
+ # (%2E), underscore (%5F), or tilde (%7E) should not be created by URI
+ # producers ..."
+ for {set i 0} {$i <= 256} {incr i} {
+ set c [format %c $i]
+ if {![string match {[-._~a-zA-Z0-9]} $c]} {
+ set map($c) %[format %.2X $i]
+ }
+ }
+ # These are handled specially
+ set map(\n) %0D%0A
+ variable formMap [array get map]
- variable i 0
- for {} {$i <= 256} {incr i} {
- set c [format %c $i]
- if {![string match \[$alphanumeric\] $c]} {
- set formMap($c) %[format %.2x $i]
+ # Create a map for HTTP/1.1 open sockets
+ variable socketmap
+ if {[info exists socketmap]} {
+ # Close but don't remove open sockets on re-init
+ foreach {url sock} [array get socketmap] {
+ catch {close $sock}
+ }
}
+ array set socketmap {}
+ }
+ init
+
+ variable urlTypes
+ if {![info exists urlTypes]} {
+ set urlTypes(http) [list 80 ::socket]
+ }
+
+ variable encodings [string tolower [encoding names]]
+ # This can be changed, but iso8859-1 is the RFC standard.
+ variable defaultCharset
+ if {![info exists defaultCharset]} {
+ set defaultCharset "iso8859-1"
+ }
+
+ # Force RFC 3986 strictness in geturl url verification?
+ variable strict
+ if {![info exists strict]} {
+ set strict 1
}
- # These are handled specially
- array set formMap {
- " " + \n %0d%0a
+
+ # Let user control default keepalive for compatibility
+ variable defaultKeepalive
+ if {![info exists defaultKeepalive]} {
+ set defaultKeepalive 0
}
- namespace export geturl config reset wait formatQuery
+ namespace export geturl config reset wait formatQuery register unregister
# Useful, but not exported: data size status code
}
+# http::Log --
+#
+# Debugging output -- define this to observe HTTP/1.1 socket usage.
+# Should echo any args received.
+#
+# Arguments:
+# msg Message to output
+#
+if {[info command http::Log] eq {}} {proc http::Log {args} {}}
+
+# http::register --
+#
+# See documentation for details.
+#
+# Arguments:
+# proto URL protocol prefix, e.g. https
+# port Default port for protocol
+# command Command to use to create socket
+# Results:
+# list of port and command that was registered.
+
+proc http::register {proto port command} {
+ variable urlTypes
+ set urlTypes([string tolower $proto]) [list $port $command]
+}
+
+# http::unregister --
+#
+# Unregisters URL protocol handler
+#
+# Arguments:
+# proto URL protocol prefix, e.g. https
+# Results:
+# list of port and command that was unregistered.
+
+proc http::unregister {proto} {
+ variable urlTypes
+ set lower [string tolower $proto]
+ if {![info exists urlTypes($lower)]} {
+ return -code error "unsupported url type \"$proto\""
+ }
+ set old $urlTypes($lower)
+ unset urlTypes($lower)
+ return $old
+}
+
# http::config --
#
-# See documentaion for details.
+# See documentation for details.
#
# Arguments:
# args Options parsed by the procedure.
@@ -63,70 +156,131 @@ proc http::config {args} {
}
return $result
}
- regsub -all -- - $options {} options
- set pat ^-([join $options |])$
+ set options [string map {- ""} $options]
+ set pat ^-(?:[join $options |])$
if {[llength $args] == 1} {
set flag [lindex $args 0]
- if {[regexp -- $pat $flag]} {
- return $http($flag)
- } else {
+ if {![regexp -- $pat $flag]} {
return -code error "Unknown option $flag, must be: $usage"
}
+ return $http($flag)
} else {
foreach {flag value} $args {
- if {[regexp -- $pat $flag]} {
- set http($flag) $value
- } else {
+ if {![regexp -- $pat $flag]} {
return -code error "Unknown option $flag, must be: $usage"
}
+ set http($flag) $value
}
}
}
- proc http::Finish { token {errormsg ""} } {
+# http::Finish --
+#
+# Clean up the socket and eval close time callbacks
+#
+# Arguments:
+# token Connection token.
+# errormsg (optional) If set, forces status to error.
+# skipCB (optional) If set, don't call the -command callback. This
+# is useful when geturl wants to throw an exception instead
+# of calling the callback. That way, the same error isn't
+# reported to two places.
+#
+# Side Effects:
+# Closes the socket
+
+proc http::Finish {token {errormsg ""} {skipCB 0}} {
variable $token
upvar 0 $token state
global errorInfo errorCode
- if {[string length $errormsg] != 0} {
+ if {$errormsg ne ""} {
set state(error) [list $errormsg $errorInfo $errorCode]
- set state(status) error
+ set state(status) "error"
}
- catch {close $state(sock)}
- catch {after cancel $state(after)}
- if {[info exists state(-command)]} {
- if {[catch {eval $state(-command) {$token}} err]} {
- if {[string length $errormsg] == 0} {
- set state(error) [list $err $errorInfo $errorCode]
- set state(status) error
- }
+ if {
+ ($state(status) eq "timeout") || ($state(status) eq "error") ||
+ ([info exists state(connection)] && ($state(connection) eq "close"))
+ } {
+ CloseSocket $state(sock) $token
+ }
+ if {[info exists state(after)]} {
+ after cancel $state(after)
+ }
+ if {[info exists state(-command)] && !$skipCB
+ && ![info exists state(done-command-cb)]} {
+ set state(done-command-cb) yes
+ if {[catch {eval $state(-command) {$token}} err] && $errormsg eq ""} {
+ set state(error) [list $err $errorInfo $errorCode]
+ set state(status) error
}
- if {[info exist state(-command)]} {
- # Command callback may already have unset our state
- unset state(-command)
+ }
+}
+
+# http::CloseSocket -
+#
+# Close a socket and remove it from the persistent sockets table. If
+# possible an http token is included here but when we are called from a
+# fileevent on remote closure we need to find the correct entry - hence
+# the second section.
+
+proc ::http::CloseSocket {s {token {}}} {
+ variable socketmap
+ catch {fileevent $s readable {}}
+ set conn_id {}
+ if {$token ne ""} {
+ variable $token
+ upvar 0 $token state
+ if {[info exists state(socketinfo)]} {
+ set conn_id $state(socketinfo)
+ }
+ } else {
+ set map [array get socketmap]
+ set ndx [lsearch -exact $map $s]
+ if {$ndx != -1} {
+ incr ndx -1
+ set conn_id [lindex $map $ndx]
+ }
+ }
+ if {$conn_id eq {} || ![info exists socketmap($conn_id)]} {
+ Log "Closing socket $s (no connection info)"
+ if {[catch {close $s} err]} {
+ Log "Error: $err"
+ }
+ } else {
+ if {[info exists socketmap($conn_id)]} {
+ Log "Closing connection $conn_id (sock $socketmap($conn_id))"
+ if {[catch {close $socketmap($conn_id)} err]} {
+ Log "Error: $err"
+ }
+ unset socketmap($conn_id)
+ } else {
+ Log "Cannot close connection $conn_id - no socket in socket map"
}
}
}
# http::reset --
#
-# See documentaion for details.
+# See documentation for details.
#
# Arguments:
# token Connection token.
# why Status info.
-# Results:
-# TODO
+#
+# Side Effects:
+# See Finish
-proc http::reset { token {why reset} } {
+proc http::reset {token {why reset}} {
variable $token
upvar 0 $token state
set state(status) $why
catch {fileevent $state(sock) readable {}}
+ catch {fileevent $state(sock) writable {}}
Finish $token
if {[info exists state(error)]} {
set errorlist $state(error)
- unset state(error)
- eval error $errorlist
+ unset state
+ eval ::error $errorlist
}
}
@@ -139,15 +293,18 @@ proc http::reset { token {why reset} } {
# args Option value pairs. Valid options include:
# -blocksize, -validate, -headers, -timeout
# Results:
-# Returns a token for this connection.
-# This token is the name of an array that the caller should
-# unset to garbage collect the state.
+# Returns a token for this connection. This token is the name of an
+# array that the caller should unset to garbage collect the state.
-proc http::geturl { url args } {
+proc http::geturl {url args} {
variable http
+ variable urlTypes
+ variable defaultCharset
+ variable defaultKeepalive
+ variable strict
- # Initialize the state variable, an array. We'll return the
- # name of this array as the token for the transaction.
+ # Initialize the state variable, an array. We'll return the name of this
+ # array as the token for the transaction.
if {![info exists http(uid)]} {
set http(uid) 0
@@ -160,136 +317,485 @@ proc http::geturl { url args } {
# Process command options.
array set state {
- -blocksize 8192
- -validate 0
- -headers {}
- -timeout 0
- state header
+ -binary false
+ -blocksize 8192
+ -queryblocksize 8192
+ -validate 0
+ -headers {}
+ -timeout 0
+ -type application/x-www-form-urlencoded
+ -queryprogress {}
+ -protocol 1.1
+ binary 0
+ state connecting
meta {}
+ coding {}
currentsize 0
totalsize 0
- type text/html
- body {}
+ querylength 0
+ queryoffset 0
+ type text/html
+ body {}
status ""
+ http ""
+ connection close
}
- set options {-blocksize -channel -command -handler -headers \
- -progress -query -validate -timeout}
- set usage [join $options ", "]
- regsub -all -- - $options {} options
- set pat ^-([join $options |])$
+ set state(-keepalive) $defaultKeepalive
+ set state(-strict) $strict
+ # These flags have their types verified [Bug 811170]
+ array set type {
+ -binary boolean
+ -blocksize integer
+ -queryblocksize integer
+ -strict boolean
+ -timeout integer
+ -validate boolean
+ }
+ set state(charset) $defaultCharset
+ set options {
+ -binary -blocksize -channel -command -handler -headers -keepalive
+ -method -myaddr -progress -protocol -query -queryblocksize
+ -querychannel -queryprogress -strict -timeout -type -validate
+ }
+ set usage [join [lsort $options] ", "]
+ set options [string map {- ""} $options]
+ set pat ^-(?:[join $options |])$
foreach {flag value} $args {
- if {[regexp $pat $flag]} {
-
+ if {[regexp -- $pat $flag]} {
# Validate numbers
-
- if {[info exists state($flag)] && \
- [regexp {^[0-9]+$} $state($flag)] && \
- ![regexp {^[0-9]+$} $value]} {
- return -code error "Bad value for $flag ($value), must be integer"
+ if {
+ [info exists type($flag)] &&
+ ![string is $type($flag) -strict $value]
+ } {
+ unset $token
+ return -code error \
+ "Bad value for $flag ($value), must be $type($flag)"
}
set state($flag) $value
} else {
+ unset $token
return -code error "Unknown option $flag, can be: $usage"
}
}
- if {! [regexp -nocase {^(http://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \
- x proto host y port srvurl]} {
- error "Unsupported URL: $url"
+
+ # Make sure -query and -querychannel aren't both specified
+
+ set isQueryChannel [info exists state(-querychannel)]
+ set isQuery [info exists state(-query)]
+ if {$isQuery && $isQueryChannel} {
+ unset $token
+ return -code error "Can't combine -query and -querychannel options!"
}
- if {[string length $port] == 0} {
- set port 80
+
+ # Validate URL, determine the server host and port, and check proxy case
+ # Recognize user:pass@host URLs also, although we do not do anything with
+ # that info yet.
+
+ # URLs have basically four parts.
+ # First, before the colon, is the protocol scheme (e.g. http)
+ # Second, for HTTP-like protocols, is the authority
+ # The authority is preceded by // and lasts up to (but not including)
+ # the following / or ? and it identifies up to four parts, of which
+ # only one, the host, is required (if an authority is present at all).
+ # All other parts of the authority (user name, password, port number)
+ # are optional.
+ # Third is the resource name, which is split into two parts at a ?
+ # The first part (from the single "/" up to "?") is the path, and the
+ # second part (from that "?" up to "#") is the query. *HOWEVER*, we do
+ # not need to separate them; we send the whole lot to the server.
+ # Both, path and query are allowed to be missing, including their
+ # delimiting character.
+ # Fourth is the fragment identifier, which is everything after the first
+ # "#" in the URL. The fragment identifier MUST NOT be sent to the server
+ # and indeed, we don't bother to validate it (it could be an error to
+ # pass it in here, but it's cheap to strip).
+ #
+ # An example of a URL that has all the parts:
+ #
+ # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes
+ #
+ # The "http" is the protocol, the user is "jschmoe", the password is
+ # "xyzzy", the host is "www.bogus.net", the port is "8000", the path is
+ # "/foo/bar.tml", the query is "q=foo", and the fragment is "changes".
+ #
+ # Note that the RE actually combines the user and password parts, as
+ # recommended in RFC 3986. Indeed, that RFC states that putting passwords
+ # in URLs is a Really Bad Idea, something with which I would agree utterly.
+ #
+ # From a validation perspective, we need to ensure that the parts of the
+ # URL that are going to the server are correctly encoded. This is only
+ # done if $state(-strict) is true (inherited from $::http::strict).
+
+ set URLmatcher {(?x) # this is _expanded_ syntax
+ ^
+ (?: (\w+) : ) ? # <protocol scheme>
+ (?: //
+ (?:
+ (
+ [^@/\#?]+ # <userinfo part of authority>
+ ) @
+ )?
+ ( # <host part of authority>
+ [^/:\#?]+ | # host name or IPv4 address
+ \[ [^/\#?]+ \] # IPv6 address in square brackets
+ )
+ (?: : (\d+) )? # <port part of authority>
+ )?
+ ( [/\?] [^\#]*)? # <path> (including query)
+ (?: \# (.*) )? # <fragment>
+ $
}
- if {[string length $srvurl] == 0} {
+
+ # Phase one: parse
+ if {![regexp -- $URLmatcher $url -> proto user host port srvurl]} {
+ unset $token
+ return -code error "Unsupported URL: $url"
+ }
+ # Phase two: validate
+ set host [string trim $host {[]}]; # strip square brackets from IPv6 address
+ if {$host eq ""} {
+ # Caller has to provide a host name; we do not have a "default host"
+ # that would enable us to handle relative URLs.
+ unset $token
+ return -code error "Missing host part: $url"
+ # Note that we don't check the hostname for validity here; if it's
+ # invalid, we'll simply fail to resolve it later on.
+ }
+ if {$port ne "" && $port > 65535} {
+ unset $token
+ return -code error "Invalid port number: $port"
+ }
+ # The user identification and resource identification parts of the URL can
+ # have encoded characters in them; take care!
+ if {$user ne ""} {
+ # Check for validity according to RFC 3986, Appendix A
+ set validityRE {(?xi)
+ ^
+ (?: [-\w.~!$&'()*+,;=:] | %[0-9a-f][0-9a-f] )+
+ $
+ }
+ if {$state(-strict) && ![regexp -- $validityRE $user]} {
+ unset $token
+ # Provide a better error message in this error case
+ if {[regexp {(?i)%(?![0-9a-f][0-9a-f]).?.?} $user bad]} {
+ return -code error \
+ "Illegal encoding character usage \"$bad\" in URL user"
+ }
+ return -code error "Illegal characters in URL user"
+ }
+ }
+ if {$srvurl ne ""} {
+ # RFC 3986 allows empty paths (not even a /), but servers
+ # return 400 if the path in the HTTP request doesn't start
+ # with / , so add it here if needed.
+ if {[string index $srvurl 0] ne "/"} {
+ set srvurl /$srvurl
+ }
+ # Check for validity according to RFC 3986, Appendix A
+ set validityRE {(?xi)
+ ^
+ # Path part (already must start with / character)
+ (?: [-\w.~!$&'()*+,;=:@/] | %[0-9a-f][0-9a-f] )*
+ # Query part (optional, permits ? characters)
+ (?: \? (?: [-\w.~!$&'()*+,;=:@/?] | %[0-9a-f][0-9a-f] )* )?
+ $
+ }
+ if {$state(-strict) && ![regexp -- $validityRE $srvurl]} {
+ unset $token
+ # Provide a better error message in this error case
+ if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} {
+ return -code error \
+ "Illegal encoding character usage \"$bad\" in URL path"
+ }
+ return -code error "Illegal characters in URL path"
+ }
+ } else {
set srvurl /
}
- if {[string length $proto] == 0} {
- set url http://$url
+ if {$proto eq ""} {
+ set proto http
+ }
+ set lower [string tolower $proto]
+ if {![info exists urlTypes($lower)]} {
+ unset $token
+ return -code error "Unsupported URL type \"$proto\""
+ }
+ set defport [lindex $urlTypes($lower) 0]
+ set defcmd [lindex $urlTypes($lower) 1]
+
+ if {$port eq ""} {
+ set port $defport
}
- set state(url) $url
if {![catch {$http(-proxyfilter) $host} proxy]} {
set phost [lindex $proxy 0]
set pport [lindex $proxy 1]
}
- # If a timeout is specified we set up the after event
- # and arrange for an asynchronous socket connection.
+ # OK, now reassemble into a full URL
+ set url ${proto}://
+ if {$user ne ""} {
+ append url $user
+ append url @
+ }
+ append url $host
+ if {$port != $defport} {
+ append url : $port
+ }
+ append url $srvurl
+ # Don't append the fragment!
+ set state(url) $url
+
+ # If a timeout is specified we set up the after event and arrange for an
+ # asynchronous socket connection.
+ set sockopts [list -async]
if {$state(-timeout) > 0} {
set state(after) [after $state(-timeout) \
[list http::reset $token timeout]]
- set async -async
- } else {
- set async ""
}
- # If we are using the proxy, we must pass in the full URL that
- # includes the server name.
+ # If we are using the proxy, we must pass in the full URL that includes
+ # the server name.
- if {[info exists phost] && [string length $phost]} {
+ if {[info exists phost] && ($phost ne "")} {
set srvurl $url
- set s [eval socket $async {$phost $pport}]
+ set targetAddr [list $phost $pport]
} else {
- set s [eval socket $async {$host $port}]
+ set targetAddr [list $host $port]
+ }
+ # Proxy connections aren't shared among different hosts.
+ set state(socketinfo) $host:$port
+
+ # See if we are supposed to use a previously opened channel.
+ if {$state(-keepalive)} {
+ variable socketmap
+ if {[info exists socketmap($state(socketinfo))]} {
+ if {[catch {fconfigure $socketmap($state(socketinfo))}]} {
+ Log "WARNING: socket for $state(socketinfo) was closed"
+ unset socketmap($state(socketinfo))
+ } else {
+ set sock $socketmap($state(socketinfo))
+ Log "reusing socket $sock for $state(socketinfo)"
+ catch {fileevent $sock writable {}}
+ catch {fileevent $sock readable {}}
+ }
+ }
+ # don't automatically close this connection socket
+ set state(connection) {}
}
- set state(sock) $s
+ if {![info exists sock]} {
+ # Pass -myaddr directly to the socket command
+ if {[info exists state(-myaddr)]} {
+ lappend sockopts -myaddr $state(-myaddr)
+ }
+ if {[catch {eval $defcmd $sockopts $targetAddr} sock]} {
+ # something went wrong while trying to establish the connection.
+ # Clean up after events and such, but DON'T call the command
+ # callback (if available) because we're going to throw an
+ # exception from here instead.
- # Wait for the connection to complete
+ set state(sock) $sock
+ Finish $token "" 1
+ cleanup $token
+ return -code error $sock
+ }
+ }
+ set state(sock) $sock
+ Log "Using $sock for $state(socketinfo)" \
+ [expr {$state(-keepalive)?"keepalive":""}]
+ if {$state(-keepalive)} {
+ set socketmap($state(socketinfo)) $sock
+ }
- if {$state(-timeout) > 0} {
- #fileevent $s writable [list set $token\(status) connect]
- fileevent $s writable [list http::Connect $token]
+ if {![info exists phost]} {
+ set phost ""
+ }
+ fileevent $sock writable [list http::Connect $token $proto $phost $srvurl]
+
+ # Wait for the connection to complete.
+ if {![info exists state(-command)]} {
+ # geturl does EVERYTHING asynchronously, so if the user
+ # calls it synchronously, we just do a wait here.
http::wait $token
- if {[string compare $state(status) "timeout"] == 0} {
- return
+
+ if {![info exists state]} {
+ # If we timed out then Finish has been called and the users
+ # command callback may have cleaned up the token. If so we end up
+ # here with nothing left to do.
+ return $token
+ } elseif {$state(status) eq "error"} {
+ # Something went wrong while trying to establish the connection.
+ # Clean up after events and such, but DON'T call the command
+ # callback (if available) because we're going to throw an
+ # exception from here instead.
+ set err [lindex $state(error) 0]
+ cleanup $token
+ return -code error $err
}
- fileevent $s writable {}
- unset state(status)
}
+ return $token
+}
+
+
+proc http::Connected { token proto phost srvurl} {
+ variable http
+ variable urlTypes
+
+ variable $token
+ upvar 0 $token state
+
+ # Set back the variables needed here
+ set sock $state(sock)
+ set isQueryChannel [info exists state(-querychannel)]
+ set isQuery [info exists state(-query)]
+ set host [lindex [split $state(socketinfo) :] 0]
+ set port [lindex [split $state(socketinfo) :] 1]
+
+ set lower [string tolower $proto]
+ set defport [lindex $urlTypes($lower) 0]
+
# Send data in cr-lf format, but accept any line terminators
- fconfigure $s -translation {auto crlf} -buffersize $state(-blocksize)
+ fconfigure $sock -translation {auto crlf} -buffersize $state(-blocksize)
- # The following is disallowed in safe interpreters, but the socket
- # is already in non-blocking mode in that case.
+ # The following is disallowed in safe interpreters, but the socket is
+ # already in non-blocking mode in that case.
- catch {fconfigure $s -blocking off}
- set len 0
+ catch {fconfigure $sock -blocking off}
set how GET
- if {[info exists state(-query)]} {
- set len [string length $state(-query)]
- if {$len > 0} {
+ if {$isQuery} {
+ set state(querylength) [string length $state(-query)]
+ if {$state(querylength) > 0} {
set how POST
+ set contDone 0
+ } else {
+ # There's no query data.
+ unset state(-query)
+ set isQuery 0
}
} elseif {$state(-validate)} {
set how HEAD
+ } elseif {$isQueryChannel} {
+ set how POST
+ # The query channel must be blocking for the async Write to
+ # work properly.
+ fconfigure $state(-querychannel) -blocking 1 -translation binary
+ set contDone 0
}
- puts $s "$how $srvurl HTTP/1.0"
- puts $s "Accept: $http(-accept)"
- puts $s "Host: $host"
- puts $s "User-Agent: $http(-useragent)"
- foreach {key value} $state(-headers) {
- regsub -all \[\n\r\] $value {} value
- set key [string trim $key]
- if {[string length $key]} {
- puts $s "$key: $value"
- }
- }
- if {$len > 0} {
- puts $s "Content-Length: $len"
- puts $s "Content-Type: application/x-www-form-urlencoded"
- puts $s ""
- fconfigure $s -translation {auto binary}
- puts $s $state(-query)
- } else {
- puts $s ""
+ if {[info exists state(-method)] && $state(-method) ne ""} {
+ set how $state(-method)
}
- flush $s
- fileevent $s readable [list http::Event $token]
- if {! [info exists state(-command)]} {
- wait $token
+ # We cannot handle chunked encodings with -handler, so force HTTP/1.0
+ # until we can manage this.
+ if {[info exists state(-handler)]} {
+ set state(-protocol) 1.0
}
- return $token
+ if {[catch {
+ puts $sock "$how $srvurl HTTP/$state(-protocol)"
+ puts $sock "Accept: $http(-accept)"
+ array set hdrs $state(-headers)
+ if {[info exists hdrs(Host)]} {
+ # Allow Host spoofing. [Bug 928154]
+ puts $sock "Host: $hdrs(Host)"
+ } elseif {$port == $defport} {
+ # Don't add port in this case, to handle broken servers. [Bug
+ # #504508]
+ puts $sock "Host: $host"
+ } else {
+ puts $sock "Host: $host:$port"
+ }
+ unset hdrs
+ puts $sock "User-Agent: $http(-useragent)"
+ if {$state(-protocol) == 1.0 && $state(-keepalive)} {
+ puts $sock "Connection: keep-alive"
+ }
+ if {$state(-protocol) > 1.0 && !$state(-keepalive)} {
+ puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1
+ }
+ if {[info exists phost] && ($phost ne "") && $state(-keepalive)} {
+ puts $sock "Proxy-Connection: Keep-Alive"
+ }
+ set accept_encoding_seen 0
+ set content_type_seen 0
+ foreach {key value} $state(-headers) {
+ if {[string equal -nocase $key "host"]} {
+ continue
+ }
+ if {[string equal -nocase $key "accept-encoding"]} {
+ set accept_encoding_seen 1
+ }
+ if {[string equal -nocase $key "content-type"]} {
+ set content_type_seen 1
+ }
+ set value [string map [list \n "" \r ""] $value]
+ set key [string trim $key]
+ if {[string equal -nocase $key "content-length"]} {
+ set contDone 1
+ set state(querylength) $value
+ }
+ if {[string length $key]} {
+ puts $sock "$key: $value"
+ }
+ }
+ if {!$accept_encoding_seen && ![info exists state(-handler)]} {
+ puts $sock "Accept-Encoding: deflate,gzip,compress"
+ }
+ if {$isQueryChannel && $state(querylength) == 0} {
+ # Try to determine size of data in channel. If we cannot seek, the
+ # surrounding catch will trap us
+
+ set start [tell $state(-querychannel)]
+ seek $state(-querychannel) 0 end
+ set state(querylength) \
+ [expr {[tell $state(-querychannel)] - $start}]
+ seek $state(-querychannel) $start
+ }
+
+ # Flush the request header and set up the fileevent that will either
+ # push the POST data or read the response.
+ #
+ # fileevent note:
+ #
+ # It is possible to have both the read and write fileevents active at
+ # this point. The only scenario it seems to affect is a server that
+ # closes the connection without reading the POST data. (e.g., early
+ # versions TclHttpd in various error cases). Depending on the
+ # platform, the client may or may not be able to get the response from
+ # the server because of the error it will get trying to write the post
+ # data. Having both fileevents active changes the timing and the
+ # behavior, but no two platforms (among Solaris, Linux, and NT) behave
+ # the same, and none behave all that well in any case. Servers should
+ # always read their POST data if they expect the client to read their
+ # response.
+
+ if {$isQuery || $isQueryChannel} {
+ if {!$content_type_seen} {
+ puts $sock "Content-Type: $state(-type)"
+ }
+ if {!$contDone} {
+ puts $sock "Content-Length: $state(querylength)"
+ }
+ puts $sock ""
+ fconfigure $sock -translation {auto binary}
+ fileevent $sock writable [list http::Write $token]
+ } else {
+ puts $sock ""
+ flush $sock
+ fileevent $sock readable [list http::Event $sock $token]
+ }
+
+ } err]} {
+ # The socket probably was never connected, or the connection dropped
+ # later.
+
+ # if state(status) is error, it means someone's already called Finish
+ # to do the above-described clean up.
+ if {$state(status) ne "error"} {
+ Finish $token $err
+ }
+ }
+
}
# Data access functions:
@@ -304,6 +810,9 @@ proc http::data {token} {
return $state(body)
}
proc http::status {token} {
+ if {![info exists $token]} {
+ return "error"
+ }
variable $token
upvar 0 $token state
return $state(status)
@@ -313,11 +822,33 @@ proc http::code {token} {
upvar 0 $token state
return $state(http)
}
+proc http::ncode {token} {
+ variable $token
+ upvar 0 $token state
+ if {[regexp {[0-9]{3}} $state(http) numeric_code]} {
+ return $numeric_code
+ } else {
+ return $state(http)
+ }
+}
proc http::size {token} {
variable $token
upvar 0 $token state
return $state(currentsize)
}
+proc http::meta {token} {
+ variable $token
+ upvar 0 $token state
+ return $state(meta)
+}
+proc http::error {token} {
+ variable $token
+ upvar 0 $token state
+ if {[info exists state(error)]} {
+ return $state(error)
+ }
+ return ""
+}
# http::cleanup
#
@@ -332,124 +863,471 @@ proc http::size {token} {
proc http::cleanup {token} {
variable $token
upvar 0 $token state
- if {[info exist state]} {
+ if {[info exists state]} {
unset state
}
}
- proc http::Connect {token} {
+
+# http::Connect
+#
+# This callback is made when an asyncronous connection completes.
+#
+# Arguments
+# token The token returned from http::geturl
+#
+# Side Effects
+# Sets the status of the connection, which unblocks
+# the waiting geturl call
+
+proc http::Connect {token proto phost srvurl} {
+ variable $token
+ upvar 0 $token state
+ set err "due to unexpected EOF"
+ if {
+ [eof $state(sock)] ||
+ [set err [fconfigure $state(sock) -error]] ne ""
+ } {
+ Finish $token "connect failed $err"
+ } else {
+ fileevent $state(sock) writable {}
+ ::http::Connected $token $proto $phost $srvurl
+ }
+ return
+}
+
+# http::Write
+#
+# Write POST query data to the socket
+#
+# Arguments
+# token The token for the connection
+#
+# Side Effects
+# Write the socket and handle callbacks.
+
+proc http::Write {token} {
variable $token
upvar 0 $token state
- set state(status) connect
- }
+ set sock $state(sock)
+
+ # Output a block. Tcl will buffer this if the socket blocks
+ set done 0
+ if {[catch {
+ # Catch I/O errors on dead sockets
+
+ if {[info exists state(-query)]} {
+ # Chop up large query strings so queryprogress callback can give
+ # smooth feedback.
+
+ puts -nonewline $sock \
+ [string range $state(-query) $state(queryoffset) \
+ [expr {$state(queryoffset) + $state(-queryblocksize) - 1}]]
+ incr state(queryoffset) $state(-queryblocksize)
+ if {$state(queryoffset) >= $state(querylength)} {
+ set state(queryoffset) $state(querylength)
+ set done 1
+ }
+ } else {
+ # Copy blocks from the query channel
+
+ set outStr [read $state(-querychannel) $state(-queryblocksize)]
+ puts -nonewline $sock $outStr
+ incr state(queryoffset) [string length $outStr]
+ if {[eof $state(-querychannel)]} {
+ set done 1
+ }
+ }
+ } err]} {
+ # Do not call Finish here, but instead let the read half of the socket
+ # process whatever server reply there is to get.
+
+ set state(posterror) $err
+ set done 1
+ }
+ if {$done} {
+ catch {flush $sock}
+ fileevent $sock writable {}
+ fileevent $sock readable [list http::Event $sock $token]
+ }
+
+ # Callback to the client after we've completely handled everything.
+
+ if {[string length $state(-queryprogress)]} {
+ eval $state(-queryprogress) \
+ [list $token $state(querylength) $state(queryoffset)]
+ }
+}
- proc http::Event {token} {
+# http::Event
+#
+# Handle input on the socket
+#
+# Arguments
+# sock The socket receiving input.
+# token The token returned from http::geturl
+#
+# Side Effects
+# Read the socket and handle callbacks.
+
+proc http::Event {sock token} {
variable $token
upvar 0 $token state
- set s $state(sock)
- if {[::eof $s]} {
- Eof $token
+ if {![info exists state]} {
+ Log "Event $sock with invalid token '$token' - remote close?"
+ if {![eof $sock]} {
+ if {[set d [read $sock]] ne ""} {
+ Log "WARNING: additional data left on closed socket"
+ }
+ }
+ CloseSocket $sock
return
}
- if {$state(state) == "header"} {
- set n [gets $s line]
- if {$n == 0} {
+ if {$state(state) eq "connecting"} {
+ if {[catch {gets $sock state(http)} n]} {
+ return [Finish $token $n]
+ } elseif {$n >= 0} {
+ set state(state) "header"
+ }
+ } elseif {$state(state) eq "header"} {
+ if {[catch {gets $sock line} n]} {
+ return [Finish $token $n]
+ } elseif {$n == 0} {
+ # We have now read all headers
+ # We ignore HTTP/1.1 100 Continue returns. RFC2616 sec 8.2.3
+ if {$state(http) == "" || ([regexp {^\S+\s(\d+)} $state(http) {} x] && $x == 100)} {
+ return
+ }
+
set state(state) body
- if {![regexp -nocase ^text $state(type)]} {
+
+ # If doing a HEAD, then we won't get any body
+ if {$state(-validate)} {
+ Eof $token
+ return
+ }
+
+ # For non-chunked transfer we may have no body - in this case we
+ # may get no further file event if the connection doesn't close
+ # and no more data is sent. We can tell and must finish up now -
+ # not later.
+ if {
+ !(([info exists state(connection)]
+ && ($state(connection) eq "close"))
+ || [info exists state(transfer)])
+ && ($state(totalsize) == 0)
+ } {
+ Log "body size is 0 and no events likely - complete."
+ Eof $token
+ return
+ }
+
+ # We have to use binary translation to count bytes properly.
+ fconfigure $sock -translation binary
+
+ if {
+ $state(-binary) || ![string match -nocase text* $state(type)]
+ } {
# Turn off conversions for non-text data
- fconfigure $s -translation binary
- if {[info exists state(-channel)]} {
+ set state(binary) 1
+ }
+ if {[info exists state(-channel)]} {
+ if {$state(binary) || [llength [ContentEncoding $token]]} {
fconfigure $state(-channel) -translation binary
}
- }
- if {[info exists state(-channel)] &&
- ![info exists state(-handler)]} {
- # Initiate a sequence of background fcopies
- fileevent $s readable {}
- CopyStart $s $token
+ if {![info exists state(-handler)]} {
+ # Initiate a sequence of background fcopies
+ fileevent $sock readable {}
+ CopyStart $sock $token
+ return
+ }
}
} elseif {$n > 0} {
- if {[regexp -nocase {^content-type:(.+)$} $line x type]} {
- set state(type) [string trim $type]
- }
- if {[regexp -nocase {^content-length:(.+)$} $line x length]} {
- set state(totalsize) [string trim $length]
- }
+ # Process header lines
if {[regexp -nocase {^([^:]+):(.+)$} $line x key value]} {
- lappend state(meta) $key $value
- } elseif {[regexp ^HTTP $line]} {
- set state(http) $line
+ switch -- [string tolower $key] {
+ content-type {
+ set state(type) [string trim [string tolower $value]]
+ # grab the optional charset information
+ if {[regexp -nocase \
+ {charset\s*=\s*\"((?:[^""]|\\\")*)\"} \
+ $state(type) -> cs]} {
+ set state(charset) [string map {{\"} \"} $cs]
+ } else {
+ regexp -nocase {charset\s*=\s*(\S+?);?} \
+ $state(type) -> state(charset)
+ }
+ }
+ content-length {
+ set state(totalsize) [string trim $value]
+ }
+ content-encoding {
+ set state(coding) [string trim $value]
+ }
+ transfer-encoding {
+ set state(transfer) \
+ [string trim [string tolower $value]]
+ }
+ proxy-connection -
+ connection {
+ set state(connection) \
+ [string trim [string tolower $value]]
+ }
+ }
+ lappend state(meta) $key [string trim $value]
}
}
} else {
+ # Now reading body
if {[catch {
if {[info exists state(-handler)]} {
- set n [eval $state(-handler) {$s $token}]
+ set n [eval $state(-handler) [list $sock $token]]
+ } elseif {[info exists state(transfer_final)]} {
+ set line [getTextLine $sock]
+ set n [string length $line]
+ if {$n > 0} {
+ Log "found $n bytes following final chunk"
+ append state(transfer_final) $line
+ } else {
+ Log "final chunk part"
+ Eof $token
+ }
+ } elseif {
+ [info exists state(transfer)]
+ && $state(transfer) eq "chunked"
+ } {
+ set size 0
+ set chunk [getTextLine $sock]
+ set n [string length $chunk]
+ if {[string trim $chunk] ne ""} {
+ scan $chunk %x size
+ if {$size != 0} {
+ set bl [fconfigure $sock -blocking]
+ fconfigure $sock -blocking 1
+ set chunk [read $sock $size]
+ fconfigure $sock -blocking $bl
+ set n [string length $chunk]
+ if {$n >= 0} {
+ append state(body) $chunk
+ }
+ if {$size != [string length $chunk]} {
+ Log "WARNING: mis-sized chunk:\
+ was [string length $chunk], should be $size"
+ }
+ getTextLine $sock
+ } else {
+ set state(transfer_final) {}
+ }
+ }
} else {
- set block [read $s $state(-blocksize)]
+ #Log "read non-chunk $state(currentsize) of $state(totalsize)"
+ set block [read $sock $state(-blocksize)]
set n [string length $block]
if {$n >= 0} {
append state(body) $block
}
}
- if {$n >= 0} {
- incr state(currentsize) $n
+ if {[info exists state]} {
+ if {$n >= 0} {
+ incr state(currentsize) $n
+ }
+ # If Content-Length - check for end of data.
+ if {
+ ($state(totalsize) > 0)
+ && ($state(currentsize) >= $state(totalsize))
+ } {
+ Eof $token
+ }
}
} err]} {
- Finish $token $err
+ return [Finish $token $err]
} else {
if {[info exists state(-progress)]} {
- eval $state(-progress) {$token $state(totalsize) $state(currentsize)}
+ eval $state(-progress) \
+ [list $token $state(totalsize) $state(currentsize)]
}
}
}
+
+ # catch as an Eof above may have closed the socket already
+ if {![catch {eof $sock} eof] && $eof} {
+ if {[info exists $token]} {
+ set state(connection) close
+ Eof $token
+ } else {
+ # open connection closed on a token that has been cleaned up.
+ CloseSocket $sock
+ }
+ return
+ }
}
- proc http::CopyStart {s token} {
- variable $token
+
+# http::getTextLine --
+#
+# Get one line with the stream in blocking crlf mode
+#
+# Arguments
+# sock The socket receiving input.
+#
+# Results:
+# The line of text, without trailing newline
+
+proc http::getTextLine {sock} {
+ set tr [fconfigure $sock -translation]
+ set bl [fconfigure $sock -blocking]
+ fconfigure $sock -translation crlf -blocking 1
+ set r [gets $sock]
+ fconfigure $sock -translation $tr -blocking $bl
+ return $r
+}
+
+# http::CopyStart
+#
+# Error handling wrapper around fcopy
+#
+# Arguments
+# sock The socket to copy from
+# token The token returned from http::geturl
+#
+# Side Effects
+# This closes the connection upon error
+
+proc http::CopyStart {sock token {initial 1}} {
+ upvar #0 $token state
+ if {[info exists state(transfer)] && $state(transfer) eq "chunked"} {
+ foreach coding [ContentEncoding $token] {
+ lappend state(zlib) [zlib stream $coding]
+ }
+ make-transformation-chunked $sock [namespace code [list CopyChunk $token]]
+ } else {
+ if {$initial} {
+ foreach coding [ContentEncoding $token] {
+ zlib push $coding $sock
+ }
+ }
+ if {[catch {
+ fcopy $sock $state(-channel) -size $state(-blocksize) -command \
+ [list http::CopyDone $token]
+ } err]} {
+ Finish $token $err
+ }
+ }
+}
+
+proc http::CopyChunk {token chunk} {
upvar 0 $token state
- if {[catch {
- fcopy $s $state(-channel) -size $state(-blocksize) -command \
- [list http::CopyDone $token]
- } err]} {
- Finish $token $err
+ if {[set count [string length $chunk]]} {
+ incr state(currentsize) $count
+ if {[info exists state(zlib)]} {
+ foreach stream $state(zlib) {
+ set chunk [$stream add $chunk]
+ }
+ }
+ puts -nonewline $state(-channel) $chunk
+ if {[info exists state(-progress)]} {
+ eval [linsert $state(-progress) end \
+ $token $state(totalsize) $state(currentsize)]
+ }
+ } else {
+ Log "CopyChunk Finish $token"
+ if {[info exists state(zlib)]} {
+ set excess ""
+ foreach stream $state(zlib) {
+ catch {set excess [$stream add -finalize $excess]}
+ }
+ puts -nonewline $state(-channel) $excess
+ foreach stream $state(zlib) { $stream close }
+ unset state(zlib)
+ }
+ Eof $token ;# FIX ME: pipelining.
}
}
- proc http::CopyDone {token count {error {}}} {
+
+# http::CopyDone
+#
+# fcopy completion callback
+#
+# Arguments
+# token The token returned from http::geturl
+# count The amount transfered
+#
+# Side Effects
+# Invokes callbacks
+
+proc http::CopyDone {token count {error {}}} {
variable $token
upvar 0 $token state
- set s $state(sock)
+ set sock $state(sock)
incr state(currentsize) $count
if {[info exists state(-progress)]} {
- eval $state(-progress) {$token $state(totalsize) $state(currentsize)}
+ eval $state(-progress) \
+ [list $token $state(totalsize) $state(currentsize)]
}
# At this point the token may have been reset
- if {([string length $error] != 0)} {
+ if {[string length $error]} {
Finish $token $error
- } elseif {[catch {::eof $s} iseof] || $iseof} {
+ } elseif {[catch {eof $sock} iseof] || $iseof} {
Eof $token
} else {
- CopyStart $s $token
+ CopyStart $sock $token 0
}
}
- proc http::Eof {token} {
+
+# http::Eof
+#
+# Handle eof on the socket
+#
+# Arguments
+# token The token returned from http::geturl
+#
+# Side Effects
+# Clean up the socket
+
+proc http::Eof {token {force 0}} {
variable $token
upvar 0 $token state
- if {$state(state) == "header"} {
+ if {$state(state) eq "header"} {
# Premature eof
set state(status) eof
} else {
set state(status) ok
}
- set state(state) eof
+
+ if {[string length $state(body)] > 0} {
+ if {[catch {
+ foreach coding [ContentEncoding $token] {
+ set state(body) [zlib $coding $state(body)]
+ }
+ } err]} {
+ Log "error doing $coding '$state(body)'"
+ return [Finish $token $err]
+ }
+
+ if {!$state(binary)} {
+ # If we are getting text, set the incoming channel's encoding
+ # correctly. iso8859-1 is the RFC default, but this could be any IANA
+ # charset. However, we only know how to convert what we have
+ # encodings for.
+
+ set enc [CharsetToEncoding $state(charset)]
+ if {$enc ne "binary"} {
+ set state(body) [encoding convertfrom $enc $state(body)]
+ }
+
+ # Translate text line endings.
+ set state(body) [string map {\r\n \n \r \n} $state(body)]
+ }
+ }
Finish $token
}
# http::wait --
#
-# See documentaion for details.
+# See documentation for details.
#
# Arguments:
# token Connection token.
+#
# Results:
# The status after the wait.
@@ -457,72 +1335,186 @@ proc http::wait {token} {
variable $token
upvar 0 $token state
- if {![info exists state(status)] || [string length $state(status)] == 0} {
-
+ if {![info exists state(status)] || $state(status) eq ""} {
# We must wait on the original variable name, not the upvar alias
-
- vwait $token\(status)
- }
- if {[info exists state(error)]} {
- set errorlist $state(error)
- unset state(error)
- eval error $errorlist
+ vwait ${token}(status)
}
- return $state(status)
+
+ return [status $token]
}
# http::formatQuery --
#
-# See documentaion for details.
-# Call http::formatQuery with an even number of arguments, where
-# the first is a name, the second is a value, the third is another
-# name, and so on.
+# See documentation for details. Call http::formatQuery with an even
+# number of arguments, where the first is a name, the second is a value,
+# the third is another name, and so on.
#
# Arguments:
# args A list of name-value pairs.
+#
# Results:
-# TODO
+# TODO
proc http::formatQuery {args} {
set result ""
set sep ""
foreach i $args {
- append result $sep [mapReply $i]
- if {$sep != "="} {
- set sep =
- } else {
+ append result $sep [mapReply $i]
+ if {$sep eq "="} {
set sep &
+ } else {
+ set sep =
}
}
return $result
}
-# do x-www-urlencoded character mapping
-# The spec says: "non-alphanumeric characters are replaced by '%HH'"
-# 1 leave alphanumerics characters alone
-# 2 Convert every other character to an array lookup
-# 3 Escape constructs that are "special" to the tcl parser
-# 4 "subst" the result, doing all the array substitutions
-
- proc http::mapReply {string} {
+# http::mapReply --
+#
+# Do x-www-urlencoded character mapping
+#
+# Arguments:
+# string The string the needs to be encoded
+#
+# Results:
+# The encoded string
+
+proc http::mapReply {string} {
+ variable http
variable formMap
- set alphanumeric a-zA-Z0-9
- regsub -all \[^$alphanumeric\] $string {$formMap(&)} string
- regsub -all \n $string {\\n} string
- regsub -all \t $string {\\t} string
- regsub -all {[][{})\\]\)} $string {\\&} string
- return [subst $string]
+
+ # The spec says: "non-alphanumeric characters are replaced by '%HH'". Use
+ # a pre-computed map and [string map] to do the conversion (much faster
+ # than [regsub]/[subst]). [Bug 1020491]
+
+ if {$http(-urlencoding) ne ""} {
+ set string [encoding convertto $http(-urlencoding) $string]
+ return [string map $formMap $string]
+ }
+ set converted [string map $formMap $string]
+ if {[string match "*\[\u0100-\uffff\]*" $converted]} {
+ regexp "\[\u0100-\uffff\]" $converted badChar
+ # Return this error message for maximum compatability... :^/
+ return -code error \
+ "can't read \"formMap($badChar)\": no such element in array"
+ }
+ return $converted
}
-# Default proxy filter.
- proc http::ProxyRequired {host} {
+# http::ProxyRequired --
+# Default proxy filter.
+#
+# Arguments:
+# host The destination host
+#
+# Results:
+# The current proxy settings
+
+proc http::ProxyRequired {host} {
variable http
if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
- if {![info exists http(-proxyport)] || ![string length $http(-proxyport)]} {
+ if {
+ ![info exists http(-proxyport)] ||
+ ![string length $http(-proxyport)]
+ } {
set http(-proxyport) 8080
}
return [list $http(-proxyhost) $http(-proxyport)]
+ }
+}
+
+# http::CharsetToEncoding --
+#
+# Tries to map a given IANA charset to a tcl encoding. If no encoding
+# can be found, returns binary.
+#
+
+proc http::CharsetToEncoding {charset} {
+ variable encodings
+
+ set charset [string tolower $charset]
+ if {[regexp {iso-?8859-([0-9]+)} $charset -> num]} {
+ set encoding "iso8859-$num"
+ } elseif {[regexp {iso-?2022-(jp|kr)} $charset -> ext]} {
+ set encoding "iso2022-$ext"
+ } elseif {[regexp {shift[-_]?js} $charset]} {
+ set encoding "shiftjis"
+ } elseif {[regexp {(?:windows|cp)-?([0-9]+)} $charset -> num]} {
+ set encoding "cp$num"
+ } elseif {$charset eq "us-ascii"} {
+ set encoding "ascii"
+ } elseif {[regexp {(?:iso-?)?lat(?:in)?-?([0-9]+)} $charset -> num]} {
+ switch -- $num {
+ 5 {set encoding "iso8859-9"}
+ 1 - 2 - 3 {
+ set encoding "iso8859-$num"
+ }
+ }
} else {
- return {}
+ # other charset, like euc-xx, utf-8,... may directly map to encoding
+ set encoding $charset
+ }
+ set idx [lsearch -exact $encodings $encoding]
+ if {$idx >= 0} {
+ return $encoding
+ } else {
+ return "binary"
}
}
+
+# Return the list of content-encoding transformations we need to do in order.
+proc http::ContentEncoding {token} {
+ upvar 0 $token state
+ set r {}
+ if {[info exists state(coding)]} {
+ foreach coding [split $state(coding) ,] {
+ switch -exact -- $coding {
+ deflate { lappend r inflate }
+ gzip - x-gzip { lappend r gunzip }
+ compress - x-compress { lappend r decompress }
+ identity {}
+ default {
+ return -code error "unsupported content-encoding \"$coding\""
+ }
+ }
+ }
+ }
+ return $r
+}
+
+proc http::make-transformation-chunked {chan command} {
+ set lambda {{chan command} {
+ set data ""
+ set size -1
+ yield
+ while {1} {
+ chan configure $chan -translation {crlf binary}
+ while {[gets $chan line] < 1} { yield }
+ chan configure $chan -translation {binary binary}
+ if {[scan $line %x size] != 1} { return -code error "invalid size: \"$line\"" }
+ set chunk ""
+ while {$size && ![chan eof $chan]} {
+ set part [chan read $chan $size]
+ incr size -[string length $part]
+ append chunk $part
+ }
+ if {[catch {
+ uplevel #0 [linsert $command end $chunk]
+ }]} {
+ http::Log "Error in callback: $::errorInfo"
+ }
+ if {[string length $chunk] == 0} {
+ # channel might have been closed in the callback
+ catch {chan event $chan readable {}}
+ return
+ }
+ }
+ }}
+ coroutine dechunk$chan ::apply $lambda $chan $command
+ chan event $chan readable [namespace origin dechunk$chan]
+ return
+}
+
+# Local variables:
+# indent-tabs-mode: t
+# End:
diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl
index b0e2d9d..27ba795 100644
--- a/library/http/pkgIndex.tcl
+++ b/library/http/pkgIndex.tcl
@@ -1,11 +1,2 @@
-# Tcl package index file, version 1.1
-# This file is generated by the "pkg_mkIndex" command
-# and sourced either when an application starts up or
-# by a "package unknown" script. It invokes the
-# "package ifneeded" command to set up package-related
-# information so that packages will be loaded automatically
-# in response to "package require" commands. When this
-# script is sourced, the variable $dir must contain the
-# full path name of this file's directory.
-
-package ifneeded http 2.1 [list tclPkgSetup $dir http 2.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait}}}]
+if {![package vsatisfies [package provide Tcl] 8.6]} {return}
+package ifneeded http 2.8.8 [list tclPkgSetup $dir http 2.8.8 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
diff --git a/library/http1.0/http.tcl b/library/http1.0/http.tcl
index fe78879..8329de4 100644
--- a/library/http1.0/http.tcl
+++ b/library/http1.0/http.tcl
@@ -5,8 +5,6 @@
# These procedures use a callback interface to avoid using vwait,
# which is not defined in the safe base.
#
-# RCS: @(#) $Id: http.tcl,v 1.3 1998/09/14 18:40:03 stanton Exp $
-#
# See the http.n man page for documentation
package provide http 1.0
@@ -181,7 +179,7 @@ proc http_get { url args } {
puts $s "Content-Type: application/x-www-form-urlencoded"
puts $s ""
fconfigure $s -translation {auto binary}
- puts $s $state(-query)
+ puts -nonewline $s $state(-query)
} else {
puts $s ""
}
@@ -341,12 +339,12 @@ proc http_formatQuery {args} {
# 2 Convert every other character to an array lookup
# 3 Escape constructs that are "special" to the tcl parser
# 4 "subst" the result, doing all the array substitutions
-
+
proc httpMapReply {string} {
global httpFormMap
set alphanumeric a-zA-Z0-9
if {![info exists httpFormMap]} {
-
+
for {set i 1} {$i <= 256} {incr i} {
set c [format %c $i]
if {![string match \[$alphanumeric\] $c]} {
@@ -365,7 +363,7 @@ proc http_formatQuery {args} {
return [subst $string]
}
-# Default proxy filter.
+# Default proxy filter.
proc httpProxyRequired {host} {
global http
if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
diff --git a/library/http2.1/http.tcl b/library/http2.1/http.tcl
deleted file mode 100644
index f448077..0000000
--- a/library/http2.1/http.tcl
+++ /dev/null
@@ -1,528 +0,0 @@
-# http.tcl --
-#
-# Client-side HTTP for GET, POST, and HEAD commands.
-# These routines can be used in untrusted code that uses
-# the Safesock security policy. These procedures use a
-# callback interface to avoid using vwait, which is not
-# defined in the safe base.
-#
-# See the file "license.terms" for information on usage and
-# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: http.tcl,v 1.9 1999/08/05 16:57:48 hobbs Exp $
-
-package provide http 2.1 ;# This uses Tcl namespaces
-
-namespace eval http {
- variable http
-
- array set http {
- -accept */*
- -proxyhost {}
- -proxyport {}
- -useragent {Tcl http client package 2.1}
- -proxyfilter http::ProxyRequired
- }
-
- variable formMap
- set alphanumeric a-zA-Z0-9
-
- variable i 0
- for {} {$i <= 256} {incr i} {
- set c [format %c $i]
- if {![string match \[$alphanumeric\] $c]} {
- set formMap($c) %[format %.2x $i]
- }
- }
- # These are handled specially
- array set formMap {
- " " + \n %0d%0a
- }
-
- namespace export geturl config reset wait formatQuery
- # Useful, but not exported: data size status code
-}
-
-# http::config --
-#
-# See documentaion for details.
-#
-# Arguments:
-# args Options parsed by the procedure.
-# Results:
-# TODO
-
-proc http::config {args} {
- variable http
- set options [lsort [array names http -*]]
- set usage [join $options ", "]
- if {[llength $args] == 0} {
- set result {}
- foreach name $options {
- lappend result $name $http($name)
- }
- return $result
- }
- regsub -all -- - $options {} options
- set pat ^-([join $options |])$
- if {[llength $args] == 1} {
- set flag [lindex $args 0]
- if {[regexp -- $pat $flag]} {
- return $http($flag)
- } else {
- return -code error "Unknown option $flag, must be: $usage"
- }
- } else {
- foreach {flag value} $args {
- if {[regexp -- $pat $flag]} {
- set http($flag) $value
- } else {
- return -code error "Unknown option $flag, must be: $usage"
- }
- }
- }
-}
-
- proc http::Finish { token {errormsg ""} } {
- variable $token
- upvar 0 $token state
- global errorInfo errorCode
- if {[string length $errormsg] != 0} {
- set state(error) [list $errormsg $errorInfo $errorCode]
- set state(status) error
- }
- catch {close $state(sock)}
- catch {after cancel $state(after)}
- if {[info exists state(-command)]} {
- if {[catch {eval $state(-command) {$token}} err]} {
- if {[string length $errormsg] == 0} {
- set state(error) [list $err $errorInfo $errorCode]
- set state(status) error
- }
- }
- if {[info exist state(-command)]} {
- # Command callback may already have unset our state
- unset state(-command)
- }
- }
-}
-
-# http::reset --
-#
-# See documentaion for details.
-#
-# Arguments:
-# token Connection token.
-# why Status info.
-# Results:
-# TODO
-
-proc http::reset { token {why reset} } {
- variable $token
- upvar 0 $token state
- set state(status) $why
- catch {fileevent $state(sock) readable {}}
- Finish $token
- if {[info exists state(error)]} {
- set errorlist $state(error)
- unset state(error)
- eval error $errorlist
- }
-}
-
-# http::geturl --
-#
-# Establishes a connection to a remote url via http.
-#
-# Arguments:
-# url The http URL to goget.
-# args Option value pairs. Valid options include:
-# -blocksize, -validate, -headers, -timeout
-# Results:
-# Returns a token for this connection.
-# This token is the name of an array that the caller should
-# unset to garbage collect the state.
-
-proc http::geturl { url args } {
- variable http
-
- # Initialize the state variable, an array. We'll return the
- # name of this array as the token for the transaction.
-
- if {![info exists http(uid)]} {
- set http(uid) 0
- }
- set token [namespace current]::[incr http(uid)]
- variable $token
- upvar 0 $token state
- reset $token
-
- # Process command options.
-
- array set state {
- -blocksize 8192
- -validate 0
- -headers {}
- -timeout 0
- state header
- meta {}
- currentsize 0
- totalsize 0
- type text/html
- body {}
- status ""
- }
- set options {-blocksize -channel -command -handler -headers \
- -progress -query -validate -timeout}
- set usage [join $options ", "]
- regsub -all -- - $options {} options
- set pat ^-([join $options |])$
- foreach {flag value} $args {
- if {[regexp $pat $flag]} {
-
- # Validate numbers
-
- if {[info exists state($flag)] && \
- [regexp {^[0-9]+$} $state($flag)] && \
- ![regexp {^[0-9]+$} $value]} {
- return -code error "Bad value for $flag ($value), must be integer"
- }
- set state($flag) $value
- } else {
- return -code error "Unknown option $flag, can be: $usage"
- }
- }
- if {! [regexp -nocase {^(http://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \
- x proto host y port srvurl]} {
- error "Unsupported URL: $url"
- }
- if {[string length $port] == 0} {
- set port 80
- }
- if {[string length $srvurl] == 0} {
- set srvurl /
- }
- if {[string length $proto] == 0} {
- set url http://$url
- }
- set state(url) $url
- if {![catch {$http(-proxyfilter) $host} proxy]} {
- set phost [lindex $proxy 0]
- set pport [lindex $proxy 1]
- }
-
- # If a timeout is specified we set up the after event
- # and arrange for an asynchronous socket connection.
-
- if {$state(-timeout) > 0} {
- set state(after) [after $state(-timeout) \
- [list http::reset $token timeout]]
- set async -async
- } else {
- set async ""
- }
-
- # If we are using the proxy, we must pass in the full URL that
- # includes the server name.
-
- if {[info exists phost] && [string length $phost]} {
- set srvurl $url
- set s [eval socket $async {$phost $pport}]
- } else {
- set s [eval socket $async {$host $port}]
- }
- set state(sock) $s
-
- # Wait for the connection to complete
-
- if {$state(-timeout) > 0} {
- #fileevent $s writable [list set $token\(status) connect]
- fileevent $s writable [list http::Connect $token]
- http::wait $token
- if {[string compare $state(status) "timeout"] == 0} {
- return
- }
- fileevent $s writable {}
- unset state(status)
- }
-
- # Send data in cr-lf format, but accept any line terminators
-
- fconfigure $s -translation {auto crlf} -buffersize $state(-blocksize)
-
- # The following is disallowed in safe interpreters, but the socket
- # is already in non-blocking mode in that case.
-
- catch {fconfigure $s -blocking off}
- set len 0
- set how GET
- if {[info exists state(-query)]} {
- set len [string length $state(-query)]
- if {$len > 0} {
- set how POST
- }
- } elseif {$state(-validate)} {
- set how HEAD
- }
- puts $s "$how $srvurl HTTP/1.0"
- puts $s "Accept: $http(-accept)"
- puts $s "Host: $host"
- puts $s "User-Agent: $http(-useragent)"
- foreach {key value} $state(-headers) {
- regsub -all \[\n\r\] $value {} value
- set key [string trim $key]
- if {[string length $key]} {
- puts $s "$key: $value"
- }
- }
- if {$len > 0} {
- puts $s "Content-Length: $len"
- puts $s "Content-Type: application/x-www-form-urlencoded"
- puts $s ""
- fconfigure $s -translation {auto binary}
- puts $s $state(-query)
- } else {
- puts $s ""
- }
- flush $s
- fileevent $s readable [list http::Event $token]
- if {! [info exists state(-command)]} {
- wait $token
- }
- return $token
-}
-
-# Data access functions:
-# Data - the URL data
-# Status - the transaction status: ok, reset, eof, timeout
-# Code - the HTTP transaction code, e.g., 200
-# Size - the size of the URL data
-
-proc http::data {token} {
- variable $token
- upvar 0 $token state
- return $state(body)
-}
-proc http::status {token} {
- variable $token
- upvar 0 $token state
- return $state(status)
-}
-proc http::code {token} {
- variable $token
- upvar 0 $token state
- return $state(http)
-}
-proc http::size {token} {
- variable $token
- upvar 0 $token state
- return $state(currentsize)
-}
-
-# http::cleanup
-#
-# Garbage collect the state associated with a transaction
-#
-# Arguments
-# token The token returned from http::geturl
-#
-# Side Effects
-# unsets the state array
-
-proc http::cleanup {token} {
- variable $token
- upvar 0 $token state
- if {[info exist state]} {
- unset state
- }
-}
- proc http::Connect {token} {
- variable $token
- upvar 0 $token state
- set state(status) connect
- }
-
- proc http::Event {token} {
- variable $token
- upvar 0 $token state
- set s $state(sock)
-
- if {[::eof $s]} {
- Eof $token
- return
- }
- if {$state(state) == "header"} {
- set n [gets $s line]
- if {$n == 0} {
- set state(state) body
- if {![regexp -nocase ^text $state(type)]} {
- # Turn off conversions for non-text data
- fconfigure $s -translation binary
- if {[info exists state(-channel)]} {
- fconfigure $state(-channel) -translation binary
- }
- }
- if {[info exists state(-channel)] &&
- ![info exists state(-handler)]} {
- # Initiate a sequence of background fcopies
- fileevent $s readable {}
- CopyStart $s $token
- }
- } elseif {$n > 0} {
- if {[regexp -nocase {^content-type:(.+)$} $line x type]} {
- set state(type) [string trim $type]
- }
- if {[regexp -nocase {^content-length:(.+)$} $line x length]} {
- set state(totalsize) [string trim $length]
- }
- if {[regexp -nocase {^([^:]+):(.+)$} $line x key value]} {
- lappend state(meta) $key $value
- } elseif {[regexp ^HTTP $line]} {
- set state(http) $line
- }
- }
- } else {
- if {[catch {
- if {[info exists state(-handler)]} {
- set n [eval $state(-handler) {$s $token}]
- } else {
- set block [read $s $state(-blocksize)]
- set n [string length $block]
- if {$n >= 0} {
- append state(body) $block
- }
- }
- if {$n >= 0} {
- incr state(currentsize) $n
- }
- } err]} {
- Finish $token $err
- } else {
- if {[info exists state(-progress)]} {
- eval $state(-progress) {$token $state(totalsize) $state(currentsize)}
- }
- }
- }
-}
- proc http::CopyStart {s token} {
- variable $token
- upvar 0 $token state
- if {[catch {
- fcopy $s $state(-channel) -size $state(-blocksize) -command \
- [list http::CopyDone $token]
- } err]} {
- Finish $token $err
- }
-}
- proc http::CopyDone {token count {error {}}} {
- variable $token
- upvar 0 $token state
- set s $state(sock)
- incr state(currentsize) $count
- if {[info exists state(-progress)]} {
- eval $state(-progress) {$token $state(totalsize) $state(currentsize)}
- }
- # At this point the token may have been reset
- if {([string length $error] != 0)} {
- Finish $token $error
- } elseif {[catch {::eof $s} iseof] || $iseof} {
- Eof $token
- } else {
- CopyStart $s $token
- }
-}
- proc http::Eof {token} {
- variable $token
- upvar 0 $token state
- if {$state(state) == "header"} {
- # Premature eof
- set state(status) eof
- } else {
- set state(status) ok
- }
- set state(state) eof
- Finish $token
-}
-
-# http::wait --
-#
-# See documentaion for details.
-#
-# Arguments:
-# token Connection token.
-# Results:
-# The status after the wait.
-
-proc http::wait {token} {
- variable $token
- upvar 0 $token state
-
- if {![info exists state(status)] || [string length $state(status)] == 0} {
-
- # We must wait on the original variable name, not the upvar alias
-
- vwait $token\(status)
- }
- if {[info exists state(error)]} {
- set errorlist $state(error)
- unset state(error)
- eval error $errorlist
- }
- return $state(status)
-}
-
-# http::formatQuery --
-#
-# See documentaion for details.
-# Call http::formatQuery with an even number of arguments, where
-# the first is a name, the second is a value, the third is another
-# name, and so on.
-#
-# Arguments:
-# args A list of name-value pairs.
-# Results:
-# TODO
-
-proc http::formatQuery {args} {
- set result ""
- set sep ""
- foreach i $args {
- append result $sep [mapReply $i]
- if {$sep != "="} {
- set sep =
- } else {
- set sep &
- }
- }
- return $result
-}
-
-# do x-www-urlencoded character mapping
-# The spec says: "non-alphanumeric characters are replaced by '%HH'"
-# 1 leave alphanumerics characters alone
-# 2 Convert every other character to an array lookup
-# 3 Escape constructs that are "special" to the tcl parser
-# 4 "subst" the result, doing all the array substitutions
-
- proc http::mapReply {string} {
- variable formMap
- set alphanumeric a-zA-Z0-9
- regsub -all \[^$alphanumeric\] $string {$formMap(&)} string
- regsub -all \n $string {\\n} string
- regsub -all \t $string {\\t} string
- regsub -all {[][{})\\]\)} $string {\\&} string
- return [subst $string]
-}
-
-# Default proxy filter.
- proc http::ProxyRequired {host} {
- variable http
- if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
- if {![info exists http(-proxyport)] || ![string length $http(-proxyport)]} {
- set http(-proxyport) 8080
- }
- return [list $http(-proxyhost) $http(-proxyport)]
- } else {
- return {}
- }
-}
diff --git a/library/http2.1/pkgIndex.tcl b/library/http2.1/pkgIndex.tcl
deleted file mode 100644
index b0e2d9d..0000000
--- a/library/http2.1/pkgIndex.tcl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Tcl package index file, version 1.1
-# This file is generated by the "pkg_mkIndex" command
-# and sourced either when an application starts up or
-# by a "package unknown" script. It invokes the
-# "package ifneeded" command to set up package-related
-# information so that packages will be loaded automatically
-# in response to "package require" commands. When this
-# script is sourced, the variable $dir must contain the
-# full path name of this file's directory.
-
-package ifneeded http 2.1 [list tclPkgSetup $dir http 2.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait}}}]
diff --git a/library/http2.3/http.tcl b/library/http2.3/http.tcl
deleted file mode 100644
index f448077..0000000
--- a/library/http2.3/http.tcl
+++ /dev/null
@@ -1,528 +0,0 @@
-# http.tcl --
-#
-# Client-side HTTP for GET, POST, and HEAD commands.
-# These routines can be used in untrusted code that uses
-# the Safesock security policy. These procedures use a
-# callback interface to avoid using vwait, which is not
-# defined in the safe base.
-#
-# See the file "license.terms" for information on usage and
-# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: http.tcl,v 1.9 1999/08/05 16:57:48 hobbs Exp $
-
-package provide http 2.1 ;# This uses Tcl namespaces
-
-namespace eval http {
- variable http
-
- array set http {
- -accept */*
- -proxyhost {}
- -proxyport {}
- -useragent {Tcl http client package 2.1}
- -proxyfilter http::ProxyRequired
- }
-
- variable formMap
- set alphanumeric a-zA-Z0-9
-
- variable i 0
- for {} {$i <= 256} {incr i} {
- set c [format %c $i]
- if {![string match \[$alphanumeric\] $c]} {
- set formMap($c) %[format %.2x $i]
- }
- }
- # These are handled specially
- array set formMap {
- " " + \n %0d%0a
- }
-
- namespace export geturl config reset wait formatQuery
- # Useful, but not exported: data size status code
-}
-
-# http::config --
-#
-# See documentaion for details.
-#
-# Arguments:
-# args Options parsed by the procedure.
-# Results:
-# TODO
-
-proc http::config {args} {
- variable http
- set options [lsort [array names http -*]]
- set usage [join $options ", "]
- if {[llength $args] == 0} {
- set result {}
- foreach name $options {
- lappend result $name $http($name)
- }
- return $result
- }
- regsub -all -- - $options {} options
- set pat ^-([join $options |])$
- if {[llength $args] == 1} {
- set flag [lindex $args 0]
- if {[regexp -- $pat $flag]} {
- return $http($flag)
- } else {
- return -code error "Unknown option $flag, must be: $usage"
- }
- } else {
- foreach {flag value} $args {
- if {[regexp -- $pat $flag]} {
- set http($flag) $value
- } else {
- return -code error "Unknown option $flag, must be: $usage"
- }
- }
- }
-}
-
- proc http::Finish { token {errormsg ""} } {
- variable $token
- upvar 0 $token state
- global errorInfo errorCode
- if {[string length $errormsg] != 0} {
- set state(error) [list $errormsg $errorInfo $errorCode]
- set state(status) error
- }
- catch {close $state(sock)}
- catch {after cancel $state(after)}
- if {[info exists state(-command)]} {
- if {[catch {eval $state(-command) {$token}} err]} {
- if {[string length $errormsg] == 0} {
- set state(error) [list $err $errorInfo $errorCode]
- set state(status) error
- }
- }
- if {[info exist state(-command)]} {
- # Command callback may already have unset our state
- unset state(-command)
- }
- }
-}
-
-# http::reset --
-#
-# See documentaion for details.
-#
-# Arguments:
-# token Connection token.
-# why Status info.
-# Results:
-# TODO
-
-proc http::reset { token {why reset} } {
- variable $token
- upvar 0 $token state
- set state(status) $why
- catch {fileevent $state(sock) readable {}}
- Finish $token
- if {[info exists state(error)]} {
- set errorlist $state(error)
- unset state(error)
- eval error $errorlist
- }
-}
-
-# http::geturl --
-#
-# Establishes a connection to a remote url via http.
-#
-# Arguments:
-# url The http URL to goget.
-# args Option value pairs. Valid options include:
-# -blocksize, -validate, -headers, -timeout
-# Results:
-# Returns a token for this connection.
-# This token is the name of an array that the caller should
-# unset to garbage collect the state.
-
-proc http::geturl { url args } {
- variable http
-
- # Initialize the state variable, an array. We'll return the
- # name of this array as the token for the transaction.
-
- if {![info exists http(uid)]} {
- set http(uid) 0
- }
- set token [namespace current]::[incr http(uid)]
- variable $token
- upvar 0 $token state
- reset $token
-
- # Process command options.
-
- array set state {
- -blocksize 8192
- -validate 0
- -headers {}
- -timeout 0
- state header
- meta {}
- currentsize 0
- totalsize 0
- type text/html
- body {}
- status ""
- }
- set options {-blocksize -channel -command -handler -headers \
- -progress -query -validate -timeout}
- set usage [join $options ", "]
- regsub -all -- - $options {} options
- set pat ^-([join $options |])$
- foreach {flag value} $args {
- if {[regexp $pat $flag]} {
-
- # Validate numbers
-
- if {[info exists state($flag)] && \
- [regexp {^[0-9]+$} $state($flag)] && \
- ![regexp {^[0-9]+$} $value]} {
- return -code error "Bad value for $flag ($value), must be integer"
- }
- set state($flag) $value
- } else {
- return -code error "Unknown option $flag, can be: $usage"
- }
- }
- if {! [regexp -nocase {^(http://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \
- x proto host y port srvurl]} {
- error "Unsupported URL: $url"
- }
- if {[string length $port] == 0} {
- set port 80
- }
- if {[string length $srvurl] == 0} {
- set srvurl /
- }
- if {[string length $proto] == 0} {
- set url http://$url
- }
- set state(url) $url
- if {![catch {$http(-proxyfilter) $host} proxy]} {
- set phost [lindex $proxy 0]
- set pport [lindex $proxy 1]
- }
-
- # If a timeout is specified we set up the after event
- # and arrange for an asynchronous socket connection.
-
- if {$state(-timeout) > 0} {
- set state(after) [after $state(-timeout) \
- [list http::reset $token timeout]]
- set async -async
- } else {
- set async ""
- }
-
- # If we are using the proxy, we must pass in the full URL that
- # includes the server name.
-
- if {[info exists phost] && [string length $phost]} {
- set srvurl $url
- set s [eval socket $async {$phost $pport}]
- } else {
- set s [eval socket $async {$host $port}]
- }
- set state(sock) $s
-
- # Wait for the connection to complete
-
- if {$state(-timeout) > 0} {
- #fileevent $s writable [list set $token\(status) connect]
- fileevent $s writable [list http::Connect $token]
- http::wait $token
- if {[string compare $state(status) "timeout"] == 0} {
- return
- }
- fileevent $s writable {}
- unset state(status)
- }
-
- # Send data in cr-lf format, but accept any line terminators
-
- fconfigure $s -translation {auto crlf} -buffersize $state(-blocksize)
-
- # The following is disallowed in safe interpreters, but the socket
- # is already in non-blocking mode in that case.
-
- catch {fconfigure $s -blocking off}
- set len 0
- set how GET
- if {[info exists state(-query)]} {
- set len [string length $state(-query)]
- if {$len > 0} {
- set how POST
- }
- } elseif {$state(-validate)} {
- set how HEAD
- }
- puts $s "$how $srvurl HTTP/1.0"
- puts $s "Accept: $http(-accept)"
- puts $s "Host: $host"
- puts $s "User-Agent: $http(-useragent)"
- foreach {key value} $state(-headers) {
- regsub -all \[\n\r\] $value {} value
- set key [string trim $key]
- if {[string length $key]} {
- puts $s "$key: $value"
- }
- }
- if {$len > 0} {
- puts $s "Content-Length: $len"
- puts $s "Content-Type: application/x-www-form-urlencoded"
- puts $s ""
- fconfigure $s -translation {auto binary}
- puts $s $state(-query)
- } else {
- puts $s ""
- }
- flush $s
- fileevent $s readable [list http::Event $token]
- if {! [info exists state(-command)]} {
- wait $token
- }
- return $token
-}
-
-# Data access functions:
-# Data - the URL data
-# Status - the transaction status: ok, reset, eof, timeout
-# Code - the HTTP transaction code, e.g., 200
-# Size - the size of the URL data
-
-proc http::data {token} {
- variable $token
- upvar 0 $token state
- return $state(body)
-}
-proc http::status {token} {
- variable $token
- upvar 0 $token state
- return $state(status)
-}
-proc http::code {token} {
- variable $token
- upvar 0 $token state
- return $state(http)
-}
-proc http::size {token} {
- variable $token
- upvar 0 $token state
- return $state(currentsize)
-}
-
-# http::cleanup
-#
-# Garbage collect the state associated with a transaction
-#
-# Arguments
-# token The token returned from http::geturl
-#
-# Side Effects
-# unsets the state array
-
-proc http::cleanup {token} {
- variable $token
- upvar 0 $token state
- if {[info exist state]} {
- unset state
- }
-}
- proc http::Connect {token} {
- variable $token
- upvar 0 $token state
- set state(status) connect
- }
-
- proc http::Event {token} {
- variable $token
- upvar 0 $token state
- set s $state(sock)
-
- if {[::eof $s]} {
- Eof $token
- return
- }
- if {$state(state) == "header"} {
- set n [gets $s line]
- if {$n == 0} {
- set state(state) body
- if {![regexp -nocase ^text $state(type)]} {
- # Turn off conversions for non-text data
- fconfigure $s -translation binary
- if {[info exists state(-channel)]} {
- fconfigure $state(-channel) -translation binary
- }
- }
- if {[info exists state(-channel)] &&
- ![info exists state(-handler)]} {
- # Initiate a sequence of background fcopies
- fileevent $s readable {}
- CopyStart $s $token
- }
- } elseif {$n > 0} {
- if {[regexp -nocase {^content-type:(.+)$} $line x type]} {
- set state(type) [string trim $type]
- }
- if {[regexp -nocase {^content-length:(.+)$} $line x length]} {
- set state(totalsize) [string trim $length]
- }
- if {[regexp -nocase {^([^:]+):(.+)$} $line x key value]} {
- lappend state(meta) $key $value
- } elseif {[regexp ^HTTP $line]} {
- set state(http) $line
- }
- }
- } else {
- if {[catch {
- if {[info exists state(-handler)]} {
- set n [eval $state(-handler) {$s $token}]
- } else {
- set block [read $s $state(-blocksize)]
- set n [string length $block]
- if {$n >= 0} {
- append state(body) $block
- }
- }
- if {$n >= 0} {
- incr state(currentsize) $n
- }
- } err]} {
- Finish $token $err
- } else {
- if {[info exists state(-progress)]} {
- eval $state(-progress) {$token $state(totalsize) $state(currentsize)}
- }
- }
- }
-}
- proc http::CopyStart {s token} {
- variable $token
- upvar 0 $token state
- if {[catch {
- fcopy $s $state(-channel) -size $state(-blocksize) -command \
- [list http::CopyDone $token]
- } err]} {
- Finish $token $err
- }
-}
- proc http::CopyDone {token count {error {}}} {
- variable $token
- upvar 0 $token state
- set s $state(sock)
- incr state(currentsize) $count
- if {[info exists state(-progress)]} {
- eval $state(-progress) {$token $state(totalsize) $state(currentsize)}
- }
- # At this point the token may have been reset
- if {([string length $error] != 0)} {
- Finish $token $error
- } elseif {[catch {::eof $s} iseof] || $iseof} {
- Eof $token
- } else {
- CopyStart $s $token
- }
-}
- proc http::Eof {token} {
- variable $token
- upvar 0 $token state
- if {$state(state) == "header"} {
- # Premature eof
- set state(status) eof
- } else {
- set state(status) ok
- }
- set state(state) eof
- Finish $token
-}
-
-# http::wait --
-#
-# See documentaion for details.
-#
-# Arguments:
-# token Connection token.
-# Results:
-# The status after the wait.
-
-proc http::wait {token} {
- variable $token
- upvar 0 $token state
-
- if {![info exists state(status)] || [string length $state(status)] == 0} {
-
- # We must wait on the original variable name, not the upvar alias
-
- vwait $token\(status)
- }
- if {[info exists state(error)]} {
- set errorlist $state(error)
- unset state(error)
- eval error $errorlist
- }
- return $state(status)
-}
-
-# http::formatQuery --
-#
-# See documentaion for details.
-# Call http::formatQuery with an even number of arguments, where
-# the first is a name, the second is a value, the third is another
-# name, and so on.
-#
-# Arguments:
-# args A list of name-value pairs.
-# Results:
-# TODO
-
-proc http::formatQuery {args} {
- set result ""
- set sep ""
- foreach i $args {
- append result $sep [mapReply $i]
- if {$sep != "="} {
- set sep =
- } else {
- set sep &
- }
- }
- return $result
-}
-
-# do x-www-urlencoded character mapping
-# The spec says: "non-alphanumeric characters are replaced by '%HH'"
-# 1 leave alphanumerics characters alone
-# 2 Convert every other character to an array lookup
-# 3 Escape constructs that are "special" to the tcl parser
-# 4 "subst" the result, doing all the array substitutions
-
- proc http::mapReply {string} {
- variable formMap
- set alphanumeric a-zA-Z0-9
- regsub -all \[^$alphanumeric\] $string {$formMap(&)} string
- regsub -all \n $string {\\n} string
- regsub -all \t $string {\\t} string
- regsub -all {[][{})\\]\)} $string {\\&} string
- return [subst $string]
-}
-
-# Default proxy filter.
- proc http::ProxyRequired {host} {
- variable http
- if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
- if {![info exists http(-proxyport)] || ![string length $http(-proxyport)]} {
- set http(-proxyport) 8080
- }
- return [list $http(-proxyhost) $http(-proxyport)]
- } else {
- return {}
- }
-}
diff --git a/library/http2.3/pkgIndex.tcl b/library/http2.3/pkgIndex.tcl
deleted file mode 100644
index b0e2d9d..0000000
--- a/library/http2.3/pkgIndex.tcl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Tcl package index file, version 1.1
-# This file is generated by the "pkg_mkIndex" command
-# and sourced either when an application starts up or
-# by a "package unknown" script. It invokes the
-# "package ifneeded" command to set up package-related
-# information so that packages will be loaded automatically
-# in response to "package require" commands. When this
-# script is sourced, the variable $dir must contain the
-# full path name of this file's directory.
-
-package ifneeded http 2.1 [list tclPkgSetup $dir http 2.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait}}}]
diff --git a/library/init.tcl b/library/init.tcl
index 7287398..f63eedf 100644
--- a/library/init.tcl
+++ b/library/init.tcl
@@ -3,20 +3,20 @@
# Default system startup file for Tcl-based applications. Defines
# "unknown" procedure and auto-load facilities.
#
-# RCS: @(#) $Id: init.tcl,v 1.32 1999/08/09 16:30:50 hobbs Exp $
-#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 Scriptics Corporation.
+# Copyright (c) 2004 by Kevin B. Kenny. All rights reserved.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
+# This test intentionally written in pre-7.5 Tcl
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
-package require -exact Tcl 8.2
+package require -exact Tcl 8.6.1
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
@@ -24,112 +24,186 @@ package require -exact Tcl 8.2
# The environment variable TCLLIBPATH
#
# tcl_library, which is the directory containing this init.tcl script.
-# tclInitScript.h searches around for the directory containing this
+# [tclInit] (Tcl_Init()) searches around for the directory containing this
# init.tcl and defines tcl_library to that location before sourcing it.
#
# The parent directory of tcl_library. Adding the parent
# means that packages in peer directories will be found automatically.
#
-# Also add the directory where the executable is located, plus ../lib
-# relative to that path.
+# Also add the directory ../lib relative to the directory where the
+# executable is located. This is meant to find binary packages for the
+# same architecture as the current executable.
#
# tcl_pkgPath, which is set by the platform-specific initialization routines
# On UNIX it is compiled in
# On Windows, it is not used
-# On Macintosh it is "Tool Command Language" in the Extensions folder
if {![info exists auto_path]} {
- if {[info exist env(TCLLIBPATH)]} {
+ if {[info exists env(TCLLIBPATH)]} {
set auto_path $env(TCLLIBPATH)
} else {
set auto_path ""
}
}
-if {[string compare [info library] {}]} {
- foreach __dir [list [info library] [file dirname [info library]]] {
- if {[lsearch -exact $auto_path $__dir] < 0} {
- lappend auto_path $__dir
+namespace eval tcl {
+ variable Dir
+ foreach Dir [list $::tcl_library [file dirname $::tcl_library]] {
+ if {$Dir ni $::auto_path} {
+ lappend ::auto_path $Dir
}
}
-}
-foreach __dir [list [file dirname [info nameofexecutable]] \
- [file join [file dirname [file dirname \
- [info nameofexecutable]]] lib]] {
- if {[lsearch -exact $auto_path $__dir] < 0} {
- lappend auto_path $__dir
+ set Dir [file join [file dirname [file dirname \
+ [info nameofexecutable]]] lib]
+ if {$Dir ni $::auto_path} {
+ lappend ::auto_path $Dir
}
-}
-if {[info exist tcl_pkgPath]} {
- foreach __dir $tcl_pkgPath {
- if {[lsearch -exact $auto_path $__dir] < 0} {
- lappend auto_path $__dir
+ catch {
+ foreach Dir $::tcl_pkgPath {
+ if {$Dir ni $::auto_path} {
+ lappend ::auto_path $Dir
+ }
}
}
+
+ if {![interp issafe]} {
+ variable Path [encoding dirs]
+ set Dir [file join $::tcl_library encoding]
+ if {$Dir ni $Path} {
+ lappend Path $Dir
+ encoding dirs $Path
+ }
+ }
+
+ # TIP #255 min and max functions
+ namespace eval mathfunc {
+ proc min {args} {
+ if {![llength $args]} {
+ return -code error \
+ "too few arguments to math function \"min\""
+ }
+ set val Inf
+ foreach arg $args {
+ # This will handle forcing the numeric value without
+ # ruining the internal type of a numeric object
+ if {[catch {expr {double($arg)}} err]} {
+ return -code error $err
+ }
+ if {$arg < $val} {set val $arg}
+ }
+ return $val
+ }
+ proc max {args} {
+ if {![llength $args]} {
+ return -code error \
+ "too few arguments to math function \"max\""
+ }
+ set val -Inf
+ foreach arg $args {
+ # This will handle forcing the numeric value without
+ # ruining the internal type of a numeric object
+ if {[catch {expr {double($arg)}} err]} {
+ return -code error $err
+ }
+ if {$arg > $val} {set val $arg}
+ }
+ return $val
+ }
+ namespace export min max
+ }
}
-if {[info exists __dir]} {
- unset __dir
-}
-
+
# Windows specific end of initialization
-if {(![interp issafe]) && ($tcl_platform(platform) == "windows")} {
+if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
namespace eval tcl {
- proc envTraceProc {lo n1 n2 op} {
- set x $::env($n2)
- set ::env($lo) $x
- set ::env([string toupper $lo]) $x
- }
- }
- foreach p [array names env] {
- set u [string toupper $p]
- if {$u != $p} {
- switch -- $u {
- COMSPEC -
- PATH {
- if {![info exists env($u)]} {
- set env($u) $env($p)
+ proc EnvTraceProc {lo n1 n2 op} {
+ global env
+ set x $env($n2)
+ set env($lo) $x
+ set env([string toupper $lo]) $x
+ }
+ proc InitWinEnv {} {
+ global env tcl_platform
+ foreach p [array names env] {
+ set u [string toupper $p]
+ if {$u ne $p} {
+ switch -- $u {
+ COMSPEC -
+ PATH {
+ set temp $env($p)
+ unset env($p)
+ set env($u) $temp
+ trace add variable env($p) write \
+ [namespace code [list EnvTraceProc $p]]
+ trace add variable env($u) write \
+ [namespace code [list EnvTraceProc $p]]
+ }
}
- trace variable env($p) w [list tcl::envTraceProc $p]
- trace variable env($u) w [list tcl::envTraceProc $p]
}
}
+ if {![info exists env(COMSPEC)]} {
+ set env(COMSPEC) cmd.exe
+ }
}
- }
- if {[info exists p]} {
- unset p
- }
- if {[info exists u]} {
- unset u
- }
- if {![info exists env(COMSPEC)]} {
- if {$tcl_platform(os) == {Windows NT}} {
- set env(COMSPEC) cmd.exe
- } else {
- set env(COMSPEC) command.com
- }
+ InitWinEnv
}
}
# Setup the unknown package handler
-package unknown tclPkgUnknown
+
+if {[interp issafe]} {
+ package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown}
+} else {
+ # Set up search for Tcl Modules (TIP #189).
+ # and setup platform specific unknown package handlers
+ if {$tcl_platform(os) eq "Darwin"
+ && $tcl_platform(platform) eq "unix"} {
+ package unknown {::tcl::tm::UnknownHandler \
+ {::tcl::MacOSXPkgUnknown ::tclPkgUnknown}}
+ } else {
+ package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown}
+ }
+
+ # Set up the 'clock' ensemble
+
+ namespace eval ::tcl::clock [list variable TclLibDir $::tcl_library]
+
+ proc clock args {
+ namespace eval ::tcl::clock [list namespace ensemble create -command \
+ [uplevel 1 [list namespace origin [lindex [info level 0] 0]]] \
+ -subcommands {
+ add clicks format microseconds milliseconds scan seconds
+ }]
+
+ # Auto-loading stubs for 'clock.tcl'
+
+ foreach cmd {add format scan} {
+ proc ::tcl::clock::$cmd args {
+ variable TclLibDir
+ source -encoding utf-8 [file join $TclLibDir clock.tcl]
+ return [uplevel 1 [info level 0]]
+ }
+ }
+
+ return [uplevel 1 [info level 0]]
+ }
+}
# Conditionalize for presence of exec.
-if {[info commands exec] == ""} {
+if {[namespace which -command exec] eq ""} {
- # Some machines, such as the Macintosh, do not have exec. Also, on all
+ # Some machines do not have exec. Also, on all
# platforms, safe interpreters do not have exec.
set auto_noexec 1
}
-set errorCode ""
-set errorInfo ""
# Define a log command (which can be overwitten to log errors
# differently, specially when stderr is not available)
-if {[info commands tclLog] == ""} {
+if {[namespace which -command tclLog] eq ""} {
proc tclLog {string} {
catch {puts stderr $string}
}
@@ -140,11 +214,9 @@ if {[info commands tclLog] == ""} {
# exist in the interpreter. It takes the following steps to make the
# command available:
#
-# 1. See if the command has the form "namespace inscope ns cmd" and
-# if so, concatenate its arguments onto the end and evaluate it.
-# 2. See if the autoload facility can locate the command in a
+# 1. See if the autoload facility can locate the command in a
# Tcl script file. If so, load it and execute it.
-# 3. If the command was invoked interactively at top-level:
+# 2. If the command was invoked interactively at top-level:
# (a) see if the command exists as an executable UNIX program.
# If so, "exec" the command.
# (b) see if the command requests csh-like history substitution
@@ -158,115 +230,172 @@ if {[info commands tclLog] == ""} {
# command, including the command name.
proc unknown args {
- global auto_noexec auto_noload env unknown_pending tcl_interactive
- global errorCode errorInfo
-
- # If the command word has the form "namespace inscope ns cmd"
- # then concatenate its arguments onto the end and evaluate it.
-
- set cmd [lindex $args 0]
- if {[regexp "^namespace\[ \t\n\]+inscope" $cmd] && [llength $cmd] == 4} {
- set arglist [lrange $args 1 end]
- set ret [catch {uplevel $cmd $arglist} result]
- if {$ret == 0} {
- return $result
- } else {
- return -code $ret -errorcode $errorCode $result
- }
- }
+ variable ::tcl::UnknownPending
+ global auto_noexec auto_noload env tcl_interactive errorInfo errorCode
- # Save the values of errorCode and errorInfo variables, since they
- # may get modified if caught errors occur below. The variables will
- # be restored just before re-executing the missing command.
+ if {[info exists errorInfo]} {
+ set savedErrorInfo $errorInfo
+ }
+ if {[info exists errorCode]} {
+ set savedErrorCode $errorCode
+ }
- set savedErrorCode $errorCode
- set savedErrorInfo $errorInfo
set name [lindex $args 0]
if {![info exists auto_noload]} {
#
# Make sure we're not trying to load the same proc twice.
#
- if {[info exists unknown_pending($name)]} {
- return -code error "self-referential recursion in \"unknown\" for command \"$name\"";
+ if {[info exists UnknownPending($name)]} {
+ return -code error "self-referential recursion\
+ in \"unknown\" for command \"$name\""
}
- set unknown_pending($name) pending;
- set ret [catch {auto_load $name [uplevel 1 {namespace current}]} msg]
- unset unknown_pending($name);
+ set UnknownPending($name) pending
+ set ret [catch {
+ auto_load $name [uplevel 1 {::namespace current}]
+ } msg opts]
+ unset UnknownPending($name)
if {$ret != 0} {
- return -code $ret -errorcode $errorCode \
- "error while autoloading \"$name\": $msg"
+ dict append opts -errorinfo "\n (autoloading \"$name\")"
+ return -options $opts $msg
}
- if {![array size unknown_pending]} {
- unset unknown_pending
+ if {![array size UnknownPending]} {
+ unset UnknownPending
}
if {$msg} {
- set errorCode $savedErrorCode
- set errorInfo $savedErrorInfo
- set code [catch {uplevel 1 $args} msg]
+ if {[info exists savedErrorCode]} {
+ set ::errorCode $savedErrorCode
+ } else {
+ unset -nocomplain ::errorCode
+ }
+ if {[info exists savedErrorInfo]} {
+ set errorInfo $savedErrorInfo
+ } else {
+ unset -nocomplain errorInfo
+ }
+ set code [catch {uplevel 1 $args} msg opts]
if {$code == 1} {
#
- # Strip the last five lines off the error stack (they're
- # from the "uplevel" command).
+ # Compute stack trace contribution from the [uplevel].
+ # Note the dependence on how Tcl_AddErrorInfo, etc.
+ # construct the stack trace.
#
-
- set new [split $errorInfo \n]
- set new [join [lrange $new 0 [expr {[llength $new] - 6}]] \n]
- return -code error -errorcode $errorCode \
- -errorinfo $new $msg
+ set errInfo [dict get $opts -errorinfo]
+ set errCode [dict get $opts -errorcode]
+ set cinfo $args
+ if {[string bytelength $cinfo] > 150} {
+ set cinfo [string range $cinfo 0 150]
+ while {[string bytelength $cinfo] > 150} {
+ set cinfo [string range $cinfo 0 end-1]
+ }
+ append cinfo ...
+ }
+ append cinfo "\"\n (\"uplevel\" body line 1)"
+ append cinfo "\n invoked from within"
+ append cinfo "\n\"uplevel 1 \$args\""
+ #
+ # Try each possible form of the stack trace
+ # and trim the extra contribution from the matching case
+ #
+ set expect "$msg\n while executing\n\"$cinfo"
+ if {$errInfo eq $expect} {
+ #
+ # The stack has only the eval from the expanded command
+ # Do not generate any stack trace here.
+ #
+ dict unset opts -errorinfo
+ dict incr opts -level
+ return -options $opts $msg
+ }
+ #
+ # Stack trace is nested, trim off just the contribution
+ # from the extra "eval" of $args due to the "catch" above.
+ #
+ set expect "\n invoked from within\n\"$cinfo"
+ set exlen [string length $expect]
+ set eilen [string length $errInfo]
+ set i [expr {$eilen - $exlen - 1}]
+ set einfo [string range $errInfo 0 $i]
+ #
+ # For now verify that $errInfo consists of what we are about
+ # to return plus what we expected to trim off.
+ #
+ if {$errInfo ne "$einfo$expect"} {
+ error "Tcl bug: unexpected stack trace in \"unknown\"" {} \
+ [list CORE UNKNOWN BADTRACE $einfo $expect $errInfo]
+ }
+ return -code error -errorcode $errCode \
+ -errorinfo $einfo $msg
} else {
- return -code $code $msg
+ dict incr opts -level
+ return -options $opts $msg
}
}
}
- if {([info level] == 1) && ([info script] == "") \
+ if {([info level] == 1) && ([info script] eq "")
&& [info exists tcl_interactive] && $tcl_interactive} {
if {![info exists auto_noexec]} {
set new [auto_execok $name]
- if {[string compare {} $new]} {
- set errorCode $savedErrorCode
- set errorInfo $savedErrorInfo
+ if {$new ne ""} {
set redir ""
- if {[info commands console] == ""} {
+ if {[namespace which -command console] eq ""} {
set redir ">&@stdout <@stdin"
}
- return [uplevel exec $redir $new [lrange $args 1 end]]
+ uplevel 1 [list ::catch \
+ [concat exec $redir $new [lrange $args 1 end]] \
+ ::tcl::UnknownResult ::tcl::UnknownOptions]
+ dict incr ::tcl::UnknownOptions -level
+ return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
}
- set errorCode $savedErrorCode
- set errorInfo $savedErrorInfo
- if {$name == "!!"} {
+ if {$name eq "!!"} {
set newcmd [history event]
- } elseif {[regexp {^!(.+)$} $name dummy event]} {
+ } elseif {[regexp {^!(.+)$} $name -> event]} {
set newcmd [history event $event]
- } elseif {[regexp {^\^([^^]*)\^([^^]*)\^?$} $name dummy old new]} {
+ } elseif {[regexp {^\^([^^]*)\^([^^]*)\^?$} $name -> old new]} {
set newcmd [history event -1]
catch {regsub -all -- $old $newcmd $new newcmd}
}
if {[info exists newcmd]} {
tclLog $newcmd
history change $newcmd 0
- return [uplevel $newcmd]
+ uplevel 1 [list ::catch $newcmd \
+ ::tcl::UnknownResult ::tcl::UnknownOptions]
+ dict incr ::tcl::UnknownOptions -level
+ return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
- set ret [catch {set cmds [info commands $name*]} msg]
- if {[string compare $name "::"] == 0} {
+ set ret [catch {set candidates [info commands $name*]} msg]
+ if {$name eq "::"} {
set name ""
}
if {$ret != 0} {
- return -code $ret -errorcode $errorCode \
- "error in unknown while checking if \"$name\" is a unique command abbreviation: $msg"
+ dict append opts -errorinfo \
+ "\n (expanding command prefix \"$name\" in unknown)"
+ return -options $opts $msg
+ }
+ # Filter out bogus matches when $name contained
+ # a glob-special char [Bug 946952]
+ if {$name eq ""} {
+ # Handle empty $name separately due to strangeness
+ # in [string first] (See RFE 1243354)
+ set cmds $candidates
+ } else {
+ set cmds [list]
+ foreach x $candidates {
+ if {[string first $name $x] == 0} {
+ lappend cmds $x
+ }
+ }
}
if {[llength $cmds] == 1} {
- return [uplevel [lreplace $args 0 0 $cmds]]
+ uplevel 1 [list ::catch [lreplace $args 0 0 [lindex $cmds 0]] \
+ ::tcl::UnknownResult ::tcl::UnknownOptions]
+ dict incr ::tcl::UnknownOptions -level
+ return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
- if {[llength $cmds] != 0} {
- if {$name == ""} {
- return -code error "empty command name \"\""
- } else {
- return -code error \
- "ambiguous command name \"$name\": [lsort $cmds]"
- }
+ if {[llength $cmds]} {
+ return -code error "ambiguous command name \"$name\": [lsort $cmds]"
}
}
return -code error "invalid command name \"$name\""
@@ -278,17 +407,17 @@ proc unknown args {
# library file to create the procedure. Returns 1 if it successfully
# loaded the procedure, 0 otherwise.
#
-# Arguments:
+# Arguments:
# cmd - Name of the command to find and load.
# namespace (optional) The namespace where the command is being used - must be
# a canonical namespace as returned [namespace current]
# for instance. If not given, namespace current is used.
proc auto_load {cmd {namespace {}}} {
- global auto_index auto_oldpath auto_path
+ global auto_index auto_path
- if {[string length $namespace] == 0} {
- set namespace [uplevel {namespace current}]
+ if {$namespace eq ""} {
+ set namespace [uplevel 1 [list ::namespace current]]
}
set nameList [auto_qualify $cmd $namespace]
# workaround non canonical auto_index entries that might be around
@@ -296,8 +425,17 @@ proc auto_load {cmd {namespace {}}} {
lappend nameList $cmd
foreach name $nameList {
if {[info exists auto_index($name)]} {
- uplevel #0 $auto_index($name)
- return [expr {[info commands $name] != ""}]
+ namespace eval :: $auto_index($name)
+ # There's a couple of ways to look for a command of a given
+ # name. One is to use
+ # info commands $name
+ # Unfortunately, if the name has glob-magic chars in it like *
+ # or [], it may not match. For our purposes here, a better
+ # route is to use
+ # namespace which -command $name
+ if {[namespace which -command $name] ne ""} {
+ return 1
+ }
}
}
if {![info exists auto_path]} {
@@ -307,11 +445,10 @@ proc auto_load {cmd {namespace {}}} {
if {![auto_load_index]} {
return 0
}
-
foreach name $nameList {
if {[info exists auto_index($name)]} {
- uplevel #0 $auto_index($name)
- if {[info commands $name] != ""} {
+ namespace eval :: $auto_index($name)
+ if {[namespace which -command $name] ne ""} {
return 1
}
}
@@ -325,16 +462,15 @@ proc auto_load {cmd {namespace {}}} {
# of available commands. Returns 1 if the index is loaded, and 0 if
# the index is already loaded and up to date.
#
-# Arguments:
+# Arguments:
# None.
proc auto_load_index {} {
- global auto_index auto_oldpath auto_path errorInfo errorCode
+ variable ::tcl::auto_oldpath
+ global auto_index auto_path
- if {[info exists auto_oldpath]} {
- if {$auto_oldpath == $auto_path} {
- return 0
- }
+ if {[info exists auto_oldpath] && ($auto_oldpath eq $auto_path)} {
+ return 0
}
set auto_oldpath $auto_path
@@ -352,29 +488,27 @@ proc auto_load_index {} {
} else {
set error [catch {
set id [gets $f]
- if {$id == "# Tcl autoload index file, version 2.0"} {
+ if {$id eq "# Tcl autoload index file, version 2.0"} {
eval [read $f]
- } elseif {$id == \
- "# Tcl autoload index file: each line identifies a Tcl"} {
+ } elseif {$id eq "# Tcl autoload index file: each line identifies a Tcl"} {
while {[gets $f line] >= 0} {
- if {([string index $line 0] == "#")
+ if {([string index $line 0] eq "#") \
|| ([llength $line] != 2)} {
continue
}
set name [lindex $line 0]
set auto_index($name) \
- "source [file join $dir [lindex $line 1]]"
+ "source [file join $dir [lindex $line 1]]"
}
} else {
- error \
- "[file join $dir tclIndex] isn't a proper Tcl index file"
+ error "[file join $dir tclIndex] isn't a proper Tcl index file"
}
- } msg]
- if {$f != ""} {
+ } msg opts]
+ if {$f ne ""} {
close $f
}
if {$error} {
- error $msg $errorInfo $errorCode
+ return -options $opts $msg
}
}
}
@@ -407,37 +541,35 @@ proc auto_qualify {cmd namespace} {
# Before each return case we give an example of which category it is
# with the following form :
- # ( inputCmd, inputNameSpace) -> output
+ # (inputCmd, inputNameSpace) -> output
- if {[regexp {^::(.*)$} $cmd x tail]} {
+ if {[string match ::* $cmd]} {
if {$n > 1} {
- # ( ::foo::bar , * ) -> ::foo::bar
+ # (::foo::bar , *) -> ::foo::bar
return [list $cmd]
} else {
- # ( ::global , * ) -> global
- return [list $tail]
+ # (::global , *) -> global
+ return [list [string range $cmd 2 end]]
}
}
-
+
# Potentially returning 2 elements to try :
# (if the current namespace is not the global one)
if {$n == 0} {
- if {[string compare $namespace ::] == 0} {
- # ( nocolons , :: ) -> nocolons
+ if {$namespace eq "::"} {
+ # (nocolons , ::) -> nocolons
return [list $cmd]
} else {
- # ( nocolons , ::sub ) -> ::sub::nocolons nocolons
+ # (nocolons , ::sub) -> ::sub::nocolons nocolons
return [list ${namespace}::$cmd $cmd]
}
+ } elseif {$namespace eq "::"} {
+ # (foo::bar , ::) -> ::foo::bar
+ return [list ::$cmd]
} else {
- if {[string compare $namespace ::] == 0} {
- # ( foo::bar , :: ) -> ::foo::bar
- return [list ::$cmd]
- } else {
- # ( foo::bar , ::sub ) -> ::sub::foo::bar ::foo::bar
- return [list ${namespace}::$cmd ::$cmd]
- }
+ # (foo::bar , ::sub) -> ::sub::foo::bar ::foo::bar
+ return [list ${namespace}::$cmd ::$cmd]
}
}
@@ -455,15 +587,22 @@ proc auto_qualify {cmd namespace} {
proc auto_import {pattern} {
global auto_index
- set ns [uplevel namespace current]
+ # If no namespace is specified, this will be an error case
+
+ if {![string match *::* $pattern]} {
+ return
+ }
+
+ set ns [uplevel 1 [list ::namespace current]]
set patternList [auto_qualify $pattern $ns]
auto_load_index
foreach pattern $patternList {
- foreach name [array names auto_index] {
- if {[string match $pattern $name] && "" == [info commands $name]} {
- uplevel #0 $auto_index($name)
+ foreach name [array names auto_index $pattern] {
+ if {([namespace which -command $name] eq "")
+ && ([namespace qualifiers $pattern] eq [namespace qualifiers $name])} {
+ namespace eval :: $auto_index($name)
}
}
}
@@ -471,16 +610,16 @@ proc auto_import {pattern} {
# auto_execok --
#
-# Returns string that indicates name of program to execute if
+# Returns string that indicates name of program to execute if
# name corresponds to a shell builtin or an executable in the
-# Windows search path, or "" otherwise. Builds an associative
-# array auto_execs that caches information about previous checks,
+# Windows search path, or "" otherwise. Builds an associative
+# array auto_execs that caches information about previous checks,
# for speed.
#
-# Arguments:
+# Arguments:
# name - Name of a command.
-if {[string equal windows $tcl_platform(platform)]} {
+if {$tcl_platform(platform) eq "windows"} {
# Windows version.
#
# Note that info executable doesn't work under Windows, so we have to
@@ -496,13 +635,32 @@ proc auto_execok name {
}
set auto_execs($name) ""
- if {[lsearch -exact {cls copy date del erase dir echo mkdir md rename
- ren rmdir rd time type ver vol} $name] != -1} {
- return [set auto_execs($name) [list $env(COMSPEC) /c $name]]
+ set shellBuiltins [list cls copy date del erase dir echo mkdir \
+ md rename ren rmdir rd time type ver vol]
+ if {$tcl_platform(os) eq "Windows NT"} {
+ # NT includes the 'start' built-in
+ lappend shellBuiltins "start"
+ }
+ if {[info exists env(PATHEXT)]} {
+ # Add an initial ; to have the {} extension check first.
+ set execExtensions [split ";$env(PATHEXT)" ";"]
+ } else {
+ set execExtensions [list {} .com .exe .bat .cmd]
+ }
+
+ if {[string tolower $name] in $shellBuiltins} {
+ # When this is command.com for some reason on Win2K, Tcl won't
+ # exec it unless the case is right, which this corrects. COMSPEC
+ # may not point to a real file, so do the check.
+ set cmd $env(COMSPEC)
+ if {[file exists $cmd]} {
+ set cmd [file attributes $cmd -shortname]
+ }
+ return [set auto_execs($name) [list $cmd /c $name]]
}
if {[llength [file split $name]] != 1} {
- foreach ext {{} .com .exe .bat} {
+ foreach ext $execExtensions {
set file ${name}${ext}
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
@@ -513,10 +671,10 @@ proc auto_execok name {
set path "[file dirname [info nameof]];.;"
if {[info exists env(WINDIR)]} {
- set windir $env(WINDIR)
+ set windir $env(WINDIR)
}
if {[info exists windir]} {
- if {$tcl_platform(os) == "Windows NT"} {
+ if {$tcl_platform(os) eq "Windows NT"} {
append path "$windir/system32;"
}
append path "$windir/system;$windir;"
@@ -528,11 +686,14 @@ proc auto_execok name {
}
}
- foreach dir [split $path {;}] {
- # Skip already checked directories
- if {[info exists checked($dir)] || [string equal {} $dir]} { continue }
- set checked($dir) {}
- foreach ext {{} .com .exe .bat} {
+ foreach ext $execExtensions {
+ unset -nocomplain checked
+ foreach dir [split $path {;}] {
+ # Skip already checked directories
+ if {[info exists checked($dir)] || ($dir eq "")} {
+ continue
+ }
+ set checked($dir) {}
set file [file join $dir ${name}${ext}]
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
@@ -559,7 +720,7 @@ proc auto_execok name {
return $auto_execs($name)
}
foreach dir [split $env(PATH) :] {
- if {$dir == ""} {
+ if {$dir eq ""} {
set dir .
}
set file [file join $dir $name]
@@ -572,3 +733,89 @@ proc auto_execok name {
}
}
+
+# ::tcl::CopyDirectory --
+#
+# This procedure is called by Tcl's core when attempts to call the
+# filesystem's copydirectory function fail. The semantics of the call
+# are that 'dest' does not yet exist, i.e. dest should become the exact
+# image of src. If dest does exist, we throw an error.
+#
+# Note that making changes to this procedure can change the results
+# of running Tcl's tests.
+#
+# Arguments:
+# action - "renaming" or "copying"
+# src - source directory
+# dest - destination directory
+proc tcl::CopyDirectory {action src dest} {
+ set nsrc [file normalize $src]
+ set ndest [file normalize $dest]
+
+ if {$action eq "renaming"} {
+ # Can't rename volumes. We could give a more precise
+ # error message here, but that would break the test suite.
+ if {$nsrc in [file volumes]} {
+ return -code error "error $action \"$src\" to\
+ \"$dest\": trying to rename a volume or move a directory\
+ into itself"
+ }
+ }
+ if {[file exists $dest]} {
+ if {$nsrc eq $ndest} {
+ return -code error "error $action \"$src\" to\
+ \"$dest\": trying to rename a volume or move a directory\
+ into itself"
+ }
+ if {$action eq "copying"} {
+ # We used to throw an error here, but, looking more closely
+ # at the core copy code in tclFCmd.c, if the destination
+ # exists, then we should only call this function if -force
+ # is true, which means we just want to over-write. So,
+ # the following code is now commented out.
+ #
+ # return -code error "error $action \"$src\" to\
+ # \"$dest\": file already exists"
+ } else {
+ # Depending on the platform, and on the current
+ # working directory, the directories '.', '..'
+ # can be returned in various combinations. Anyway,
+ # if any other file is returned, we must signal an error.
+ set existing [glob -nocomplain -directory $dest * .*]
+ lappend existing {*}[glob -nocomplain -directory $dest \
+ -type hidden * .*]
+ foreach s $existing {
+ if {[file tail $s] ni {. ..}} {
+ return -code error "error $action \"$src\" to\
+ \"$dest\": file already exists"
+ }
+ }
+ }
+ } else {
+ if {[string first $nsrc $ndest] != -1} {
+ set srclen [expr {[llength [file split $nsrc]] - 1}]
+ set ndest [lindex [file split $ndest] $srclen]
+ if {$ndest eq [file tail $nsrc]} {
+ return -code error "error $action \"$src\" to\
+ \"$dest\": trying to rename a volume or move a directory\
+ into itself"
+ }
+ }
+ file mkdir $dest
+ }
+ # Have to be careful to capture both visible and hidden files.
+ # We will also be more generous to the file system and not
+ # assume the hidden and non-hidden lists are non-overlapping.
+ #
+ # On Unix 'hidden' files begin with '.'. On other platforms
+ # or filesystems hidden files may have other interpretations.
+ set filelist [concat [glob -nocomplain -directory $src *] \
+ [glob -nocomplain -directory $src -types hidden *]]
+
+ foreach s [lsort -unique $filelist] {
+ if {[file tail $s] ni {. ..}} {
+ file copy -force -- $s [file join $dest [file tail $s]]
+ }
+ }
+ return
+}
diff --git a/library/ldAout.tcl b/library/ldAout.tcl
deleted file mode 100644
index ad12624..0000000
--- a/library/ldAout.tcl
+++ /dev/null
@@ -1,240 +0,0 @@
-# ldAout.tcl --
-#
-# This "tclldAout" procedure in this script acts as a replacement
-# for the "ld" command when linking an object file that will be
-# loaded dynamically into Tcl or Tk using pseudo-static linking.
-#
-# Parameters:
-# The arguments to the script are the command line options for
-# an "ld" command.
-#
-# Results:
-# The "ld" command is parsed, and the "-o" option determines the
-# module name. ".a" and ".o" options are accumulated.
-# The input archives and object files are examined with the "nm"
-# command to determine whether the modules initialization
-# entry and safe initialization entry are present. A trivial
-# C function that locates the entries is composed, compiled, and
-# its .o file placed before all others in the command; then
-# "ld" is executed to bind the objects together.
-#
-# RCS: @(#) $Id: ldAout.tcl,v 1.3 1998/11/11 02:39:31 welch Exp $
-#
-# Copyright (c) 1995, by General Electric Company. All rights reserved.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# This work was supported in part by the ARPA Manufacturing Automation
-# and Design Engineering (MADE) Initiative through ARPA contract
-# F33615-94-C-4400.
-
-proc tclLdAout {{cc {}} {shlib_suffix {}} {shlib_cflags none}} {
- global env
- global argv
-
- if {$cc==""} {
- set cc $env(CC)
- }
-
- # if only two parameters are supplied there is assumed that the
- # only shlib_suffix is missing. This parameter is anyway available
- # as "info sharedlibextension" too, so there is no need to transfer
- # 3 parameters to the function tclLdAout. For compatibility, this
- # function now accepts both 2 and 3 parameters.
-
- if {$shlib_suffix==""} {
- set shlib_cflags $env(SHLIB_CFLAGS)
- } else {
- if {$shlib_cflags=="none"} {
- set shlib_cflags $shlib_suffix
- }
- }
-
- # seenDotO is nonzero if a .o or .a file has been seen
-
- set seenDotO 0
-
- # minusO is nonzero if the last command line argument was "-o".
-
- set minusO 0
-
- # head has command line arguments up to but not including the first
- # .o or .a file. tail has the rest of the arguments.
-
- set head {}
- set tail {}
-
- # nmCommand is the "nm" command that lists global symbols from the
- # object files.
-
- set nmCommand {|nm -g}
-
- # entryProtos is the table of _Init and _SafeInit prototypes found in the
- # module.
-
- set entryProtos {}
-
- # entryPoints is the table of _Init and _SafeInit entries found in the
- # module.
-
- set entryPoints {}
-
- # libraries is the list of -L and -l flags to the linker.
-
- set libraries {}
- set libdirs {}
-
- # Process command line arguments
-
- foreach a $argv {
- if {!$minusO && [regexp {\.[ao]$} $a]} {
- set seenDotO 1
- lappend nmCommand $a
- }
- if {$minusO} {
- set outputFile $a
- set minusO 0
- } elseif {![string compare $a -o]} {
- set minusO 1
- }
- if {[regexp {^-[lL]} $a]} {
- lappend libraries $a
- if {[regexp {^-L} $a]} {
- lappend libdirs [string range $a 2 end]
- }
- } elseif {$seenDotO} {
- lappend tail $a
- } else {
- lappend head $a
- }
- }
- lappend libdirs /lib /usr/lib
-
- # MIPS -- If there are corresponding G0 libraries, replace the
- # ordinary ones with the G0 ones.
-
- set libs {}
- foreach lib $libraries {
- if {[regexp {^-l} $lib]} {
- set lname [string range $lib 2 end]
- foreach dir $libdirs {
- if {[file exists [file join $dir lib${lname}_G0.a]]} {
- set lname ${lname}_G0
- break
- }
- }
- lappend libs -l$lname
- } else {
- lappend libs $lib
- }
- }
- set libraries $libs
-
- # Extract the module name from the "-o" option
-
- if {![info exists outputFile]} {
- error "-o option must be supplied to link a Tcl load module"
- }
- set m [file tail $outputFile]
- if {[regexp {\.a$} $outputFile]} {
- set shlib_suffix .a
- } else {
- set shlib_suffix ""
- }
- if {[regexp {\..*$} $outputFile match]} {
- set l [expr {[string length $m] - [string length $match]}]
- } else {
- error "Output file does not appear to have a suffix"
- }
- set modName [string tolower [string range $m 0 [expr {$l-1}]]]
- if {[regexp {^lib} $modName]} {
- set modName [string range $modName 3 end]
- }
- if {[regexp {[0-9\.]*(_g0)?$} $modName match]} {
- set modName [string range $modName 0 [expr {[string length $modName]-[string length $match]-1}]]
- }
- set modName "[string toupper [string index $modName 0]][string range $modName 1 end]"
-
- # Catalog initialization entry points found in the module
-
- set f [open $nmCommand r]
- while {[gets $f l] >= 0} {
- if {[regexp {T[ ]*_?([A-Z][a-z0-9_]*_(Safe)?Init(__FP10Tcl_Interp)?)$} $l trash symbol]} {
- if {![regexp {_?([A-Z][a-z0-9_]*_(Safe)?Init)} $symbol trash s]} {
- set s $symbol
- }
- append entryProtos {extern int } $symbol { (); } \n
- append entryPoints { } \{ { "} $s {", } $symbol { } \} , \n
- }
- }
- close $f
-
- if {$entryPoints==""} {
- error "No entry point found in objects"
- }
-
- # Compose a C function that resolves the initialization entry points and
- # embeds the required libraries in the object code.
-
- set C {#include <string.h>}
- append C \n
- append C {char TclLoadLibraries_} $modName { [] =} \n
- append C { "@LIBS: } $libraries {";} \n
- append C $entryProtos
- append C {static struct } \{ \n
- append C { char * name;} \n
- append C { int (*value)();} \n
- append C \} {dictionary [] = } \{ \n
- append C $entryPoints
- append C { 0, 0 } \n \} \; \n
- append C {typedef struct Tcl_Interp Tcl_Interp;} \n
- append C {typedef int Tcl_PackageInitProc (Tcl_Interp *);} \n
- append C {Tcl_PackageInitProc *} \n
- append C TclLoadDictionary_ $modName { (symbol)} \n
- append C { char * symbol;} \n
- append C {{
- int i;
- for (i = 0; dictionary [i] . name != 0; ++i) {
- if (!strcmp (symbol, dictionary [i] . name)) {
- return dictionary [i].value;
- }
- }
- return 0;
-}} \n
-
- # Write the C module and compile it
-
- set cFile tcl$modName.c
- set f [open $cFile w]
- puts -nonewline $f $C
- close $f
- set ccCommand "$cc -c $shlib_cflags $cFile"
- puts stderr $ccCommand
- eval exec $ccCommand
-
- # Now compose and execute the ld command that packages the module
-
- if {$shlib_suffix == ".a"} {
- set ldCommand "ar cr $outputFile"
- regsub { -o} $tail {} tail
- } else {
- set ldCommand ld
- foreach item $head {
- lappend ldCommand $item
- }
- }
- lappend ldCommand tcl$modName.o
- foreach item $tail {
- lappend ldCommand $item
- }
- puts stderr $ldCommand
- eval exec $ldCommand
- if {$shlib_suffix == ".a"} {
- exec ranlib $outputFile
- }
-
- # Clean up working files
-
- exec /bin/rm $cFile [file rootname $cFile].o
-}
diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl
index 37676da..cf3b9d7 100644
--- a/library/msgcat/msgcat.tcl
+++ b/library/msgcat/msgcat.tcl
@@ -4,52 +4,209 @@
# message catalog facility for Tcl programs. It should be
# loaded with the command "package require msgcat".
#
-# Copyright (c) 1998 by Scriptics Corporation.
+# Copyright (c) 1998-2000 by Ajuba Solutions.
# Copyright (c) 1998 by Mark Harrison.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: msgcat.tcl,v 1.2 1999/04/16 00:47:17 stanton Exp $
-package provide msgcat 1.0
+package require Tcl 8.5
+# When the version number changes, be sure to update the pkgIndex.tcl file,
+# and the installation directory in the Makefiles.
+package provide msgcat 1.5.2
namespace eval msgcat {
- namespace export mc mcset mclocale mcpreferences mcunknown
+ namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \
+ mcunknown mcflset mcflmset
# Records the current locale as passed to mclocale
- variable locale ""
+ variable Locale ""
# Records the list of locales to search
- variable loclist {}
+ variable Loclist {}
+
+ # Records the locale of the currently sourced message catalogue file
+ variable FileLocale
# Records the mapping between source strings and translated strings. The
- # array key is of the form "<locale>,<namespace>,<src>" and the value is
+ # dict key is of the form "<locale> <namespace> <src>", where locale and
+ # namespace should be themselves dict values and the value is
# the translated string.
- array set msgs {}
+ variable Msgs [dict create]
+
+ # Map of language codes used in Windows registry to those of ISO-639
+ if {[info sharedlibextension] eq ".dll"} {
+ variable WinRegToISO639 [dict create {*}{
+ 01 ar 0401 ar_SA 0801 ar_IQ 0c01 ar_EG 1001 ar_LY 1401 ar_DZ
+ 1801 ar_MA 1c01 ar_TN 2001 ar_OM 2401 ar_YE 2801 ar_SY
+ 2c01 ar_JO 3001 ar_LB 3401 ar_KW 3801 ar_AE 3c01 ar_BH
+ 4001 ar_QA
+ 02 bg 0402 bg_BG
+ 03 ca 0403 ca_ES
+ 04 zh 0404 zh_TW 0804 zh_CN 0c04 zh_HK 1004 zh_SG 1404 zh_MO
+ 05 cs 0405 cs_CZ
+ 06 da 0406 da_DK
+ 07 de 0407 de_DE 0807 de_CH 0c07 de_AT 1007 de_LU 1407 de_LI
+ 08 el 0408 el_GR
+ 09 en 0409 en_US 0809 en_GB 0c09 en_AU 1009 en_CA 1409 en_NZ
+ 1809 en_IE 1c09 en_ZA 2009 en_JM 2409 en_GD 2809 en_BZ
+ 2c09 en_TT 3009 en_ZW 3409 en_PH
+ 0a es 040a es_ES 080a es_MX 0c0a es_ES@modern 100a es_GT 140a es_CR
+ 180a es_PA 1c0a es_DO 200a es_VE 240a es_CO 280a es_PE
+ 2c0a es_AR 300a es_EC 340a es_CL 380a es_UY 3c0a es_PY
+ 400a es_BO 440a es_SV 480a es_HN 4c0a es_NI 500a es_PR
+ 0b fi 040b fi_FI
+ 0c fr 040c fr_FR 080c fr_BE 0c0c fr_CA 100c fr_CH 140c fr_LU
+ 180c fr_MC
+ 0d he 040d he_IL
+ 0e hu 040e hu_HU
+ 0f is 040f is_IS
+ 10 it 0410 it_IT 0810 it_CH
+ 11 ja 0411 ja_JP
+ 12 ko 0412 ko_KR
+ 13 nl 0413 nl_NL 0813 nl_BE
+ 14 no 0414 no_NO 0814 nn_NO
+ 15 pl 0415 pl_PL
+ 16 pt 0416 pt_BR 0816 pt_PT
+ 17 rm 0417 rm_CH
+ 18 ro 0418 ro_RO 0818 ro_MO
+ 19 ru 0819 ru_MO
+ 1a hr 041a hr_HR 081a sr_YU 0c1a sr_YU@cyrillic
+ 1b sk 041b sk_SK
+ 1c sq 041c sq_AL
+ 1d sv 041d sv_SE 081d sv_FI
+ 1e th 041e th_TH
+ 1f tr 041f tr_TR
+ 20 ur 0420 ur_PK 0820 ur_IN
+ 21 id 0421 id_ID
+ 22 uk 0422 uk_UA
+ 23 be 0423 be_BY
+ 24 sl 0424 sl_SI
+ 25 et 0425 et_EE
+ 26 lv 0426 lv_LV
+ 27 lt 0427 lt_LT
+ 28 tg 0428 tg_TJ
+ 29 fa 0429 fa_IR
+ 2a vi 042a vi_VN
+ 2b hy 042b hy_AM
+ 2c az 042c az_AZ@latin 082c az_AZ@cyrillic
+ 2d eu
+ 2e wen 042e wen_DE
+ 2f mk 042f mk_MK
+ 30 bnt 0430 bnt_TZ
+ 31 ts 0431 ts_ZA
+ 32 tn
+ 33 ven 0433 ven_ZA
+ 34 xh 0434 xh_ZA
+ 35 zu 0435 zu_ZA
+ 36 af 0436 af_ZA
+ 37 ka 0437 ka_GE
+ 38 fo 0438 fo_FO
+ 39 hi 0439 hi_IN
+ 3a mt 043a mt_MT
+ 3b se 043b se_NO
+ 043c gd_UK 083c ga_IE
+ 3d yi 043d yi_IL
+ 3e ms 043e ms_MY 083e ms_BN
+ 3f kk 043f kk_KZ
+ 40 ky 0440 ky_KG
+ 41 sw 0441 sw_KE
+ 42 tk 0442 tk_TM
+ 43 uz 0443 uz_UZ@latin 0843 uz_UZ@cyrillic
+ 44 tt 0444 tt_RU
+ 45 bn 0445 bn_IN
+ 46 pa 0446 pa_IN
+ 47 gu 0447 gu_IN
+ 48 or 0448 or_IN
+ 49 ta
+ 4a te 044a te_IN
+ 4b kn 044b kn_IN
+ 4c ml 044c ml_IN
+ 4d as 044d as_IN
+ 4e mr 044e mr_IN
+ 4f sa 044f sa_IN
+ 50 mn
+ 51 bo 0451 bo_CN
+ 52 cy 0452 cy_GB
+ 53 km 0453 km_KH
+ 54 lo 0454 lo_LA
+ 55 my 0455 my_MM
+ 56 gl 0456 gl_ES
+ 57 kok 0457 kok_IN
+ 58 mni 0458 mni_IN
+ 59 sd
+ 5a syr 045a syr_TR
+ 5b si 045b si_LK
+ 5c chr 045c chr_US
+ 5d iu 045d iu_CA
+ 5e am 045e am_ET
+ 5f ber 045f ber_MA
+ 60 ks 0460 ks_PK 0860 ks_IN
+ 61 ne 0461 ne_NP 0861 ne_IN
+ 62 fy 0462 fy_NL
+ 63 ps
+ 64 tl 0464 tl_PH
+ 65 div 0465 div_MV
+ 66 bin 0466 bin_NG
+ 67 ful 0467 ful_NG
+ 68 ha 0468 ha_NG
+ 69 nic 0469 nic_NG
+ 6a yo 046a yo_NG
+ 70 ibo 0470 ibo_NG
+ 71 kau 0471 kau_NG
+ 72 om 0472 om_ET
+ 73 ti 0473 ti_ET
+ 74 gn 0474 gn_PY
+ 75 cpe 0475 cpe_US
+ 76 la 0476 la_VA
+ 77 so 0477 so_SO
+ 78 sit 0478 sit_CN
+ 79 pap 0479 pap_AN
+ }]
+ }
}
# msgcat::mc --
#
# Find the translation for the given string based on the current
-# locale setting.
+# locale setting. Check the local namespace first, then look in each
+# parent namespace until the source is found. If additional args are
+# specified, use the format command to work them into the traslated
+# string.
#
# Arguments:
# src The string to translate.
+# args Args to pass to the format command
#
# Results:
-# Returns the translatd string.
+# Returns the translated string. Propagates errors thrown by the
+# format command.
+
+proc msgcat::mc {src args} {
+ # Check for the src in each namespace starting from the local and
+ # ending in the global.
+
+ variable Msgs
+ variable Loclist
+ variable Locale
+
+ set ns [uplevel 1 [list ::namespace current]]
-proc msgcat::mc {src} {
- set ns [uplevel {namespace current}]
- foreach loc $::msgcat::loclist {
- if {[info exists ::msgcat::msgs($loc,$ns,$src)]} {
- return $::msgcat::msgs($loc,$ns,$src)
+ while {$ns != ""} {
+ foreach loc $Loclist {
+ if {[dict exists $Msgs $loc $ns $src]} {
+ if {[llength $args] == 0} {
+ return [dict get $Msgs $loc $ns $src]
+ } else {
+ return [format [dict get $Msgs $loc $ns $src] {*}$args]
+ }
+ }
}
+ set ns [namespace parent $ns]
}
# we have not found the translation
return [uplevel 1 [list [namespace origin mcunknown] \
- $::msgcat::locale $src]]
+ $Locale $src {*}$args]]
}
# msgcat::mclocale --
@@ -65,24 +222,34 @@ proc msgcat::mc {src} {
# Returns the current locale.
proc msgcat::mclocale {args} {
+ variable Loclist
+ variable Locale
set len [llength $args]
if {$len > 1} {
- error {wrong # args: should be "mclocale ?newLocale?"}
+ return -code error "wrong # args: should be\
+ \"[lindex [info level 0] 0] ?newLocale?\""
}
- set args [string tolower $args]
if {$len == 1} {
- set ::msgcat::locale $args
- set ::msgcat::loclist {}
+ set newLocale [lindex $args 0]
+ if {$newLocale ne [file tail $newLocale]} {
+ return -code error "invalid newLocale value \"$newLocale\":\
+ could be path to unsafe code."
+ }
+ set Locale [string tolower $newLocale]
+ set Loclist {}
set word ""
- foreach part [split $args _] {
- set word [string trimleft "${word}_${part}" _]
- set ::msgcat::loclist \
- [linsert $::msgcat::loclist 0 $word]
+ foreach part [split $Locale _] {
+ set word [string trim "${word}_${part}" _]
+ if {$word ne [lindex $Loclist 0]} {
+ set Loclist [linsert $Loclist 0 $word]
+ }
}
+ lappend Loclist {}
+ set Locale [lindex $Loclist 0]
}
- return $::msgcat::locale
+ return $Locale
}
# msgcat::mcpreferences --
@@ -97,7 +264,8 @@ proc msgcat::mclocale {args} {
# Returns an ordered list of the locales preferred by the user.
proc msgcat::mcpreferences {} {
- return $::msgcat::loclist
+ variable Loclist
+ return $Loclist
}
# msgcat::mcload --
@@ -112,14 +280,30 @@ proc msgcat::mcpreferences {} {
# Returns the number of message catalogs that were loaded.
proc msgcat::mcload {langdir} {
+ variable FileLocale
+ # Save the file locale if we are recursively called
+ if {[info exists FileLocale]} {
+ set nestedFileLocale $FileLocale
+ }
set x 0
- foreach p [::msgcat::mcpreferences] {
+ foreach p [mcpreferences] {
+ if {$p eq {}} {
+ set p ROOT
+ }
set langfile [file join $langdir $p.msg]
if {[file exists $langfile]} {
incr x
- uplevel [list source $langfile]
+ set FileLocale [string tolower [file tail [file rootname $langfile]]]
+ if {"root" eq $FileLocale} {
+ set FileLocale ""
+ }
+ uplevel 1 [list ::source -encoding utf-8 $langfile]
+ unset FileLocale
}
}
+ if {[info exists nestedFileLocale]} {
+ set FileLocale $nestedFileLocale
+ }
return $x
}
@@ -137,41 +321,285 @@ proc msgcat::mcload {langdir} {
# Returns the new locale.
proc msgcat::mcset {locale src {dest ""}} {
- if {$dest == ""} {
+ variable Msgs
+ if {[llength [info level 0]] == 3} { ;# dest not specified
set dest $src
}
- set ns [uplevel {namespace current}]
+ set ns [uplevel 1 [list ::namespace current]]
+
+ set locale [string tolower $locale]
+
+ dict set Msgs $locale $ns $src $dest
+ return $dest
+}
+
+# msgcat::mcflset --
+#
+# Set the translation for a given string in the current file locale.
+#
+# Arguments:
+# src The source string.
+# dest (Optional) The translated string. If omitted,
+# the source string is used.
+#
+# Results:
+# Returns the new locale.
+
+proc msgcat::mcflset {src {dest ""}} {
+ variable FileLocale
+ variable Msgs
- set ::msgcat::msgs([string tolower $locale],$ns,$src) $dest
+ if {![info exists FileLocale]} {
+ return -code error \
+ "must only be used inside a message catalog loaded with ::msgcat::mcload"
+ }
+ if {[llength [info level 0]] == 2} { ;# dest not specified
+ set dest $src
+ }
+
+ set ns [uplevel 1 [list ::namespace current]]
+ dict set Msgs $FileLocale $ns $src $dest
return $dest
}
+# msgcat::mcmset --
+#
+# Set the translation for multiple strings in a specified locale.
+#
+# Arguments:
+# locale The locale to use.
+# pairs One or more src/dest pairs (must be even length)
+#
+# Results:
+# Returns the number of pairs processed
+
+proc msgcat::mcmset {locale pairs} {
+ variable Msgs
+
+ set length [llength $pairs]
+ if {$length % 2} {
+ return -code error "bad translation list:\
+ should be \"[lindex [info level 0] 0] locale {src dest ...}\""
+ }
+
+ set locale [string tolower $locale]
+ set ns [uplevel 1 [list ::namespace current]]
+
+ foreach {src dest} $pairs {
+ dict set Msgs $locale $ns $src $dest
+ }
+
+ return [expr {$length / 2}]
+}
+
+# msgcat::mcflmset --
+#
+# Set the translation for multiple strings in the mc file locale.
+#
+# Arguments:
+# pairs One or more src/dest pairs (must be even length)
+#
+# Results:
+# Returns the number of pairs processed
+
+proc msgcat::mcflmset {pairs} {
+ variable FileLocale
+ variable Msgs
+
+ if {![info exists FileLocale]} {
+ return -code error \
+ "must only be used inside a message catalog loaded with ::msgcat::mcload"
+ }
+ set length [llength $pairs]
+ if {$length % 2} {
+ return -code error "bad translation list:\
+ should be \"[lindex [info level 0] 0] locale {src dest ...}\""
+ }
+
+ set ns [uplevel 1 [list ::namespace current]]
+ foreach {src dest} $pairs {
+ dict set Msgs $FileLocale $ns $src $dest
+ }
+ return [expr {$length / 2}]
+}
+
# msgcat::mcunknown --
#
# This routine is called by msgcat::mc if a translation cannot
# be found for a string. This routine is intended to be replaced
# by an application specific routine for error reporting
-# purposes. The default behavior is to return the source string.
+# purposes. The default behavior is to return the source string.
+# If additional args are specified, the format command will be used
+# to work them into the traslated string.
#
# Arguments:
# locale The current locale.
# src The string to be translated.
+# args Args to pass to the format command
#
# Results:
# Returns the translated value.
-proc msgcat::mcunknown {locale src} {
- return $src
+proc msgcat::mcunknown {locale src args} {
+ if {[llength $args]} {
+ return [format $src {*}$args]
+ } else {
+ return $src
+ }
+}
+
+# msgcat::mcmax --
+#
+# Calculates the maximum length of the translated strings of the given
+# list.
+#
+# Arguments:
+# args strings to translate.
+#
+# Results:
+# Returns the length of the longest translated string.
+
+proc msgcat::mcmax {args} {
+ set max 0
+ foreach string $args {
+ set translated [uplevel 1 [list [namespace origin mc] $string]]
+ set len [string length $translated]
+ if {$len>$max} {
+ set max $len
+ }
+ }
+ return $max
+}
+
+# Convert the locale values stored in environment variables to a form
+# suitable for passing to [mclocale]
+proc msgcat::ConvertLocale {value} {
+ # Assume $value is of form: $language[_$territory][.$codeset][@modifier]
+ # Convert to form: $language[_$territory][_$modifier]
+ #
+ # Comment out expanded RE version -- bugs alleged
+ # regexp -expanded {
+ # ^ # Match all the way to the beginning
+ # ([^_.@]*) # Match "lanugage"; ends with _, ., or @
+ # (_([^.@]*))? # Match (optional) "territory"; starts with _
+ # ([.]([^@]*))? # Match (optional) "codeset"; starts with .
+ # (@(.*))? # Match (optional) "modifier"; starts with @
+ # $ # Match all the way to the end
+ # } $value -> language _ territory _ codeset _ modifier
+ if {![regexp {^([^_.@]+)(_([^.@]*))?([.]([^@]*))?(@(.*))?$} $value \
+ -> language _ territory _ codeset _ modifier]} {
+ return -code error "invalid locale '$value': empty language part"
+ }
+ set ret $language
+ if {[string length $territory]} {
+ append ret _$territory
+ }
+ if {[string length $modifier]} {
+ append ret _$modifier
+ }
+ return $ret
}
# Initialize the default locale
+proc msgcat::Init {} {
+ global env
-namespace eval msgcat {
+ #
# set default locale, try to get from environment
- if {[info exists ::env(LANG)]} {
- mclocale $::env(LANG)
- } else {
- mclocale "C"
+ #
+ foreach varName {LC_ALL LC_MESSAGES LANG} {
+ if {[info exists env($varName)] && ("" ne $env($varName))} {
+ if {![catch {
+ mclocale [ConvertLocale $env($varName)]
+ }]} {
+ return
+ }
+ }
+ }
+ #
+ # On Darwin, fallback to current CFLocale identifier if available.
+ #
+ if {[info exists ::tcl::mac::locale] && $::tcl::mac::locale ne ""} {
+ if {![catch {
+ mclocale [ConvertLocale $::tcl::mac::locale]
+ }]} {
+ return
+ }
+ }
+ #
+ # The rest of this routine is special processing for Windows or
+ # Cygwin. All other platforms, get out now.
+ #
+ if {([info sharedlibextension] ne ".dll")
+ || [catch {package require registry}]} {
+ mclocale C
+ return
+ }
+ #
+ # On Windows or Cygwin, try to set locale depending on registry
+ # settings, or fall back on locale of "C".
+ #
+
+ # On Vista and later:
+ # HCU/Control Panel/Desktop : PreferredUILanguages is for language packs,
+ # HCU/Control Pannel/International : localName is the default locale.
+ #
+ # They contain the local string as RFC5646, composed of:
+ # [a-z]{2,3} : language
+ # -[a-z]{4} : script (optional, translated by table Latn->latin)
+ # -[a-z]{2}|[0-9]{3} : territory (optional, numerical region codes not used)
+ # (-.*)* : variant, extension, private use (optional, not used)
+ # Those are translated to local strings.
+ # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs@latin, es-419 -> es
+ #
+ foreach key {{HKEY_CURRENT_USER\Control Panel\Desktop} {HKEY_CURRENT_USER\Control Panel\International}}\
+ value {PreferredUILanguages localeName} {
+ if {![catch {registry get $key $value} localeName]
+ && [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
+ [string tolower $localeName] match locale script territory]} {
+ if {"" ne $territory} {
+ append locale _ $territory
+ }
+ set modifierDict [dict create latn latin cyrl cyrillic]
+ if {[dict exists $modifierDict $script]} {
+ append locale @ [dict get $modifierDict $script]
+ }
+ if {![catch {mclocale [ConvertLocale $locale]}]} {
+ return
+ }
+ }
+ }
+
+ # then check value locale which contains a numerical language ID
+ if {[catch {
+ set locale [registry get $key "locale"]
+ }]} {
+ mclocale C
+ return
+ }
+ #
+ # Keep trying to match against smaller and smaller suffixes
+ # of the registry value, since the latter hexadigits appear
+ # to determine general language and earlier hexadigits determine
+ # more precise information, such as territory. For example,
+ # 0409 - English - United States
+ # 0809 - English - United Kingdom
+ # Add more translations to the WinRegToISO639 array above.
+ #
+ variable WinRegToISO639
+ set locale [string tolower $locale]
+ while {[string length $locale]} {
+ if {![catch {
+ mclocale [ConvertLocale [dict get $WinRegToISO639 $locale]]
+ }]} {
+ return
+ }
+ set locale [string range $locale 1 end]
}
+ #
+ # No translation known. Fall back on "C" locale
+ #
+ mclocale C
}
+msgcat::Init
diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl
index b40a4f3..5fabfe3 100644
--- a/library/msgcat/pkgIndex.tcl
+++ b/library/msgcat/pkgIndex.tcl
@@ -1 +1,2 @@
-package ifneeded msgcat 1.0 [list source [file join $dir msgcat.tcl]]
+if {![package vsatisfies [package provide Tcl] 8.5]} {return}
+package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]]
diff --git a/library/msgcat1.0/msgcat.tcl b/library/msgcat1.0/msgcat.tcl
deleted file mode 100644
index 37676da..0000000
--- a/library/msgcat1.0/msgcat.tcl
+++ /dev/null
@@ -1,177 +0,0 @@
-# msgcat.tcl --
-#
-# This file defines various procedures which implement a
-# message catalog facility for Tcl programs. It should be
-# loaded with the command "package require msgcat".
-#
-# Copyright (c) 1998 by Scriptics Corporation.
-# Copyright (c) 1998 by Mark Harrison.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: msgcat.tcl,v 1.2 1999/04/16 00:47:17 stanton Exp $
-
-package provide msgcat 1.0
-
-namespace eval msgcat {
- namespace export mc mcset mclocale mcpreferences mcunknown
-
- # Records the current locale as passed to mclocale
- variable locale ""
-
- # Records the list of locales to search
- variable loclist {}
-
- # Records the mapping between source strings and translated strings. The
- # array key is of the form "<locale>,<namespace>,<src>" and the value is
- # the translated string.
- array set msgs {}
-}
-
-# msgcat::mc --
-#
-# Find the translation for the given string based on the current
-# locale setting.
-#
-# Arguments:
-# src The string to translate.
-#
-# Results:
-# Returns the translatd string.
-
-proc msgcat::mc {src} {
- set ns [uplevel {namespace current}]
- foreach loc $::msgcat::loclist {
- if {[info exists ::msgcat::msgs($loc,$ns,$src)]} {
- return $::msgcat::msgs($loc,$ns,$src)
- }
- }
- # we have not found the translation
- return [uplevel 1 [list [namespace origin mcunknown] \
- $::msgcat::locale $src]]
-}
-
-# msgcat::mclocale --
-#
-# Query or set the current locale.
-#
-# Arguments:
-# newLocale (Optional) The new locale string. Locale strings
-# should be composed of one or more sublocale parts
-# separated by underscores (e.g. en_US).
-#
-# Results:
-# Returns the current locale.
-
-proc msgcat::mclocale {args} {
- set len [llength $args]
-
- if {$len > 1} {
- error {wrong # args: should be "mclocale ?newLocale?"}
- }
-
- set args [string tolower $args]
- if {$len == 1} {
- set ::msgcat::locale $args
- set ::msgcat::loclist {}
- set word ""
- foreach part [split $args _] {
- set word [string trimleft "${word}_${part}" _]
- set ::msgcat::loclist \
- [linsert $::msgcat::loclist 0 $word]
- }
- }
- return $::msgcat::locale
-}
-
-# msgcat::mcpreferences --
-#
-# Fetch the list of locales used to look up strings, ordered from
-# most preferred to least preferred.
-#
-# Arguments:
-# None.
-#
-# Results:
-# Returns an ordered list of the locales preferred by the user.
-
-proc msgcat::mcpreferences {} {
- return $::msgcat::loclist
-}
-
-# msgcat::mcload --
-#
-# Attempt to load message catalogs for each locale in the
-# preference list from the specified directory.
-#
-# Arguments:
-# langdir The directory to search.
-#
-# Results:
-# Returns the number of message catalogs that were loaded.
-
-proc msgcat::mcload {langdir} {
- set x 0
- foreach p [::msgcat::mcpreferences] {
- set langfile [file join $langdir $p.msg]
- if {[file exists $langfile]} {
- incr x
- uplevel [list source $langfile]
- }
- }
- return $x
-}
-
-# msgcat::mcset --
-#
-# Set the translation for a given string in a specified locale.
-#
-# Arguments:
-# locale The locale to use.
-# src The source string.
-# dest (Optional) The translated string. If omitted,
-# the source string is used.
-#
-# Results:
-# Returns the new locale.
-
-proc msgcat::mcset {locale src {dest ""}} {
- if {$dest == ""} {
- set dest $src
- }
-
- set ns [uplevel {namespace current}]
-
- set ::msgcat::msgs([string tolower $locale],$ns,$src) $dest
- return $dest
-}
-
-# msgcat::mcunknown --
-#
-# This routine is called by msgcat::mc if a translation cannot
-# be found for a string. This routine is intended to be replaced
-# by an application specific routine for error reporting
-# purposes. The default behavior is to return the source string.
-#
-# Arguments:
-# locale The current locale.
-# src The string to be translated.
-#
-# Results:
-# Returns the translated value.
-
-proc msgcat::mcunknown {locale src} {
- return $src
-}
-
-# Initialize the default locale
-
-namespace eval msgcat {
- # set default locale, try to get from environment
- if {[info exists ::env(LANG)]} {
- mclocale $::env(LANG)
- } else {
- mclocale "C"
- }
-}
diff --git a/library/msgcat1.0/pkgIndex.tcl b/library/msgcat1.0/pkgIndex.tcl
deleted file mode 100644
index b40a4f3..0000000
--- a/library/msgcat1.0/pkgIndex.tcl
+++ /dev/null
@@ -1 +0,0 @@
-package ifneeded msgcat 1.0 [list source [file join $dir msgcat.tcl]]
diff --git a/library/msgs/af.msg b/library/msgs/af.msg
new file mode 100644
index 0000000..0892615
--- /dev/null
+++ b/library/msgs/af.msg
@@ -0,0 +1,49 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset af DAYS_OF_WEEK_ABBREV [list \
+ "So"\
+ "Ma"\
+ "Di"\
+ "Wo"\
+ "Do"\
+ "Vr"\
+ "Sa"]
+ ::msgcat::mcset af DAYS_OF_WEEK_FULL [list \
+ "Sondag"\
+ "Maandag"\
+ "Dinsdag"\
+ "Woensdag"\
+ "Donderdag"\
+ "Vrydag"\
+ "Saterdag"]
+ ::msgcat::mcset af MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "Mar"\
+ "Apr"\
+ "Mei"\
+ "Jun"\
+ "Jul"\
+ "Aug"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Des"\
+ ""]
+ ::msgcat::mcset af MONTHS_FULL [list \
+ "Januarie"\
+ "Februarie"\
+ "Maart"\
+ "April"\
+ "Mei"\
+ "Junie"\
+ "Julie"\
+ "Augustus"\
+ "September"\
+ "Oktober"\
+ "November"\
+ "Desember"\
+ ""]
+ ::msgcat::mcset af AM "VM"
+ ::msgcat::mcset af PM "NM"
+}
diff --git a/library/msgs/af_za.msg b/library/msgs/af_za.msg
new file mode 100644
index 0000000..fef48ad
--- /dev/null
+++ b/library/msgs/af_za.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset af_ZA DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset af_ZA TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset af_ZA DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/ar.msg b/library/msgs/ar.msg
new file mode 100644
index 0000000..257157f
--- /dev/null
+++ b/library/msgs/ar.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ar DAYS_OF_WEEK_ABBREV [list \
+ "\u062d"\
+ "\u0646"\
+ "\u062b"\
+ "\u0631"\
+ "\u062e"\
+ "\u062c"\
+ "\u0633"]
+ ::msgcat::mcset ar DAYS_OF_WEEK_FULL [list \
+ "\u0627\u0644\u0623\u062d\u062f"\
+ "\u0627\u0644\u0627\u062b\u0646\u064a\u0646"\
+ "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621"\
+ "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621"\
+ "\u0627\u0644\u062e\u0645\u064a\u0633"\
+ "\u0627\u0644\u062c\u0645\u0639\u0629"\
+ "\u0627\u0644\u0633\u0628\u062a"]
+ ::msgcat::mcset ar MONTHS_ABBREV [list \
+ "\u064a\u0646\u0627"\
+ "\u0641\u0628\u0631"\
+ "\u0645\u0627\u0631"\
+ "\u0623\u0628\u0631"\
+ "\u0645\u0627\u064a"\
+ "\u064a\u0648\u0646"\
+ "\u064a\u0648\u0644"\
+ "\u0623\u063a\u0633"\
+ "\u0633\u0628\u062a"\
+ "\u0623\u0643\u062a"\
+ "\u0646\u0648\u0641"\
+ "\u062f\u064a\u0633"\
+ ""]
+ ::msgcat::mcset ar MONTHS_FULL [list \
+ "\u064a\u0646\u0627\u064a\u0631"\
+ "\u0641\u0628\u0631\u0627\u064a\u0631"\
+ "\u0645\u0627\u0631\u0633"\
+ "\u0623\u0628\u0631\u064a\u0644"\
+ "\u0645\u0627\u064a\u0648"\
+ "\u064a\u0648\u0646\u064a\u0648"\
+ "\u064a\u0648\u0644\u064a\u0648"\
+ "\u0623\u063a\u0633\u0637\u0633"\
+ "\u0633\u0628\u062a\u0645\u0628\u0631"\
+ "\u0623\u0643\u062a\u0648\u0628\u0631"\
+ "\u0646\u0648\u0641\u0645\u0628\u0631"\
+ "\u062f\u064a\u0633\u0645\u0628\u0631"\
+ ""]
+ ::msgcat::mcset ar BCE "\u0642.\u0645"
+ ::msgcat::mcset ar CE "\u0645"
+ ::msgcat::mcset ar AM "\u0635"
+ ::msgcat::mcset ar PM "\u0645"
+ ::msgcat::mcset ar DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset ar TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset ar DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/ar_in.msg b/library/msgs/ar_in.msg
new file mode 100644
index 0000000..185e49c
--- /dev/null
+++ b/library/msgs/ar_in.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ar_IN DATE_FORMAT "%A %d %B %Y"
+ ::msgcat::mcset ar_IN TIME_FORMAT_12 "%I:%M:%S %z"
+ ::msgcat::mcset ar_IN DATE_TIME_FORMAT "%A %d %B %Y %I:%M:%S %z %z"
+}
diff --git a/library/msgs/ar_jo.msg b/library/msgs/ar_jo.msg
new file mode 100644
index 0000000..0f5e269
--- /dev/null
+++ b/library/msgs/ar_jo.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ar_JO DAYS_OF_WEEK_ABBREV [list \
+ "\u0627\u0644\u0623\u062d\u062f"\
+ "\u0627\u0644\u0627\u062b\u0646\u064a\u0646"\
+ "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621"\
+ "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621"\
+ "\u0627\u0644\u062e\u0645\u064a\u0633"\
+ "\u0627\u0644\u062c\u0645\u0639\u0629"\
+ "\u0627\u0644\u0633\u0628\u062a"]
+ ::msgcat::mcset ar_JO MONTHS_ABBREV [list \
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0634\u0628\u0627\u0637"\
+ "\u0622\u0630\u0627\u0631"\
+ "\u0646\u064a\u0633\u0627\u0646"\
+ "\u0646\u0648\u0627\u0631"\
+ "\u062d\u0632\u064a\u0631\u0627\u0646"\
+ "\u062a\u0645\u0648\u0632"\
+ "\u0622\u0628"\
+ "\u0623\u064a\u0644\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ ""]
+ ::msgcat::mcset ar_JO MONTHS_FULL [list \
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0634\u0628\u0627\u0637"\
+ "\u0622\u0630\u0627\u0631"\
+ "\u0646\u064a\u0633\u0627\u0646"\
+ "\u0646\u0648\u0627\u0631"\
+ "\u062d\u0632\u064a\u0631\u0627\u0646"\
+ "\u062a\u0645\u0648\u0632"\
+ "\u0622\u0628"\
+ "\u0623\u064a\u0644\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ ""]
+}
diff --git a/library/msgs/ar_lb.msg b/library/msgs/ar_lb.msg
new file mode 100644
index 0000000..e62acd3
--- /dev/null
+++ b/library/msgs/ar_lb.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ar_LB DAYS_OF_WEEK_ABBREV [list \
+ "\u0627\u0644\u0623\u062d\u062f"\
+ "\u0627\u0644\u0627\u062b\u0646\u064a\u0646"\
+ "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621"\
+ "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621"\
+ "\u0627\u0644\u062e\u0645\u064a\u0633"\
+ "\u0627\u0644\u062c\u0645\u0639\u0629"\
+ "\u0627\u0644\u0633\u0628\u062a"]
+ ::msgcat::mcset ar_LB MONTHS_ABBREV [list \
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0634\u0628\u0627\u0637"\
+ "\u0622\u0630\u0627\u0631"\
+ "\u0646\u064a\u0633\u0627\u0646"\
+ "\u0646\u0648\u0627\u0631"\
+ "\u062d\u0632\u064a\u0631\u0627\u0646"\
+ "\u062a\u0645\u0648\u0632"\
+ "\u0622\u0628"\
+ "\u0623\u064a\u0644\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ ""]
+ ::msgcat::mcset ar_LB MONTHS_FULL [list \
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0634\u0628\u0627\u0637"\
+ "\u0622\u0630\u0627\u0631"\
+ "\u0646\u064a\u0633\u0627\u0646"\
+ "\u0646\u0648\u0627\u0631"\
+ "\u062d\u0632\u064a\u0631\u0627\u0646"\
+ "\u062a\u0645\u0648\u0632"\
+ "\u0622\u0628"\
+ "\u0623\u064a\u0644\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ ""]
+}
diff --git a/library/msgs/ar_sy.msg b/library/msgs/ar_sy.msg
new file mode 100644
index 0000000..d5e1c87
--- /dev/null
+++ b/library/msgs/ar_sy.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ar_SY DAYS_OF_WEEK_ABBREV [list \
+ "\u0627\u0644\u0623\u062d\u062f"\
+ "\u0627\u0644\u0627\u062b\u0646\u064a\u0646"\
+ "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621"\
+ "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621"\
+ "\u0627\u0644\u062e\u0645\u064a\u0633"\
+ "\u0627\u0644\u062c\u0645\u0639\u0629"\
+ "\u0627\u0644\u0633\u0628\u062a"]
+ ::msgcat::mcset ar_SY MONTHS_ABBREV [list \
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0634\u0628\u0627\u0637"\
+ "\u0622\u0630\u0627\u0631"\
+ "\u0646\u064a\u0633\u0627\u0646"\
+ "\u0646\u0648\u0627\u0631"\
+ "\u062d\u0632\u064a\u0631\u0627\u0646"\
+ "\u062a\u0645\u0648\u0632"\
+ "\u0622\u0628"\
+ "\u0623\u064a\u0644\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ ""]
+ ::msgcat::mcset ar_SY MONTHS_FULL [list \
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0634\u0628\u0627\u0637"\
+ "\u0622\u0630\u0627\u0631"\
+ "\u0646\u064a\u0633\u0627\u0646"\
+ "\u0646\u0648\u0627\u0631\u0627\u0646"\
+ "\u062d\u0632\u064a\u0631"\
+ "\u062a\u0645\u0648\u0632"\
+ "\u0622\u0628"\
+ "\u0623\u064a\u0644\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a"\
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"\
+ ""]
+}
diff --git a/library/msgs/be.msg b/library/msgs/be.msg
new file mode 100644
index 0000000..379a1d7
--- /dev/null
+++ b/library/msgs/be.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset be DAYS_OF_WEEK_ABBREV [list \
+ "\u043d\u0434"\
+ "\u043f\u043d"\
+ "\u0430\u0442"\
+ "\u0441\u0440"\
+ "\u0447\u0446"\
+ "\u043f\u0442"\
+ "\u0441\u0431"]
+ ::msgcat::mcset be DAYS_OF_WEEK_FULL [list \
+ "\u043d\u044f\u0434\u0437\u0435\u043b\u044f"\
+ "\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a"\
+ "\u0430\u045e\u0442\u043e\u0440\u0430\u043a"\
+ "\u0441\u0435\u0440\u0430\u0434\u0430"\
+ "\u0447\u0430\u0446\u0432\u0435\u0440"\
+ "\u043f\u044f\u0442\u043d\u0456\u0446\u0430"\
+ "\u0441\u0443\u0431\u043e\u0442\u0430"]
+ ::msgcat::mcset be MONTHS_ABBREV [list \
+ "\u0441\u0442\u0434"\
+ "\u043b\u044e\u0442"\
+ "\u0441\u043a\u0432"\
+ "\u043a\u0440\u0441"\
+ "\u043c\u0430\u0439"\
+ "\u0447\u0440\u0432"\
+ "\u043b\u043f\u043d"\
+ "\u0436\u043d\u0432"\
+ "\u0432\u0440\u0441"\
+ "\u043a\u0441\u0442"\
+ "\u043b\u0441\u0442"\
+ "\u0441\u043d\u0436"\
+ ""]
+ ::msgcat::mcset be MONTHS_FULL [list \
+ "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f"\
+ "\u043b\u044e\u0442\u0430\u0433\u0430"\
+ "\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430"\
+ "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430"\
+ "\u043c\u0430\u044f"\
+ "\u0447\u0440\u0432\u0435\u043d\u044f"\
+ "\u043b\u0456\u043f\u0435\u043d\u044f"\
+ "\u0436\u043d\u0456\u045e\u043d\u044f"\
+ "\u0432\u0435\u0440\u0430\u0441\u043d\u044f"\
+ "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430"\
+ "\u043b\u0438\u0441\u0442\u0430\u043f\u0430\u0434\u0430"\
+ "\u0441\u043d\u0435\u0436\u043d\u044f"\
+ ""]
+ ::msgcat::mcset be BCE "\u0434\u0430 \u043d.\u0435."
+ ::msgcat::mcset be CE "\u043d.\u0435."
+ ::msgcat::mcset be DATE_FORMAT "%e.%m.%Y"
+ ::msgcat::mcset be TIME_FORMAT "%k.%M.%S"
+ ::msgcat::mcset be DATE_TIME_FORMAT "%e.%m.%Y %k.%M.%S %z"
+}
diff --git a/library/msgs/bg.msg b/library/msgs/bg.msg
new file mode 100644
index 0000000..ff17759
--- /dev/null
+++ b/library/msgs/bg.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset bg DAYS_OF_WEEK_ABBREV [list \
+ "\u041d\u0434"\
+ "\u041f\u043d"\
+ "\u0412\u0442"\
+ "\u0421\u0440"\
+ "\u0427\u0442"\
+ "\u041f\u0442"\
+ "\u0421\u0431"]
+ ::msgcat::mcset bg DAYS_OF_WEEK_FULL [list \
+ "\u041d\u0435\u0434\u0435\u043b\u044f"\
+ "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a"\
+ "\u0412\u0442\u043e\u0440\u043d\u0438\u043a"\
+ "\u0421\u0440\u044f\u0434\u0430"\
+ "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a"\
+ "\u041f\u0435\u0442\u044a\u043a"\
+ "\u0421\u044a\u0431\u043e\u0442\u0430"]
+ ::msgcat::mcset bg MONTHS_ABBREV [list \
+ "I"\
+ "II"\
+ "III"\
+ "IV"\
+ "V"\
+ "VI"\
+ "VII"\
+ "VIII"\
+ "IX"\
+ "X"\
+ "XI"\
+ "XII"\
+ ""]
+ ::msgcat::mcset bg MONTHS_FULL [list \
+ "\u042f\u043d\u0443\u0430\u0440\u0438"\
+ "\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438"\
+ "\u041c\u0430\u0440\u0442"\
+ "\u0410\u043f\u0440\u0438\u043b"\
+ "\u041c\u0430\u0439"\
+ "\u042e\u043d\u0438"\
+ "\u042e\u043b\u0438"\
+ "\u0410\u0432\u0433\u0443\u0441\u0442"\
+ "\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438"\
+ "\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438"\
+ "\u041d\u043e\u0435\u043c\u0432\u0440\u0438"\
+ "\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438"\
+ ""]
+ ::msgcat::mcset bg BCE "\u043f\u0440.\u043d.\u0435."
+ ::msgcat::mcset bg CE "\u043d.\u0435."
+ ::msgcat::mcset bg DATE_FORMAT "%Y-%m-%e"
+ ::msgcat::mcset bg TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset bg DATE_TIME_FORMAT "%Y-%m-%e %k:%M:%S %z"
+}
diff --git a/library/msgs/bn.msg b/library/msgs/bn.msg
new file mode 100644
index 0000000..664b9d8
--- /dev/null
+++ b/library/msgs/bn.msg
@@ -0,0 +1,49 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset bn DAYS_OF_WEEK_ABBREV [list \
+ "\u09b0\u09ac\u09bf"\
+ "\u09b8\u09cb\u09ae"\
+ "\u09ae\u0999\u0997\u09b2"\
+ "\u09ac\u09c1\u09a7"\
+ "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf"\
+ "\u09b6\u09c1\u0995\u09cd\u09b0"\
+ "\u09b6\u09a8\u09bf"]
+ ::msgcat::mcset bn DAYS_OF_WEEK_FULL [list \
+ "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0"\
+ "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0"\
+ "\u09ae\u0999\u0997\u09b2\u09ac\u09be\u09b0"\
+ "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0"\
+ "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0"\
+ "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0"\
+ "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"]
+ ::msgcat::mcset bn MONTHS_ABBREV [list \
+ "\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0"\
+ "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09c0"\
+ "\u09ae\u09be\u09b0\u09cd\u099a"\
+ "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2"\
+ "\u09ae\u09c7"\
+ "\u099c\u09c1\u09a8"\
+ "\u099c\u09c1\u09b2\u09be\u0987"\
+ "\u0986\u0997\u09b8\u09cd\u099f"\
+ "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0"\
+ "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0"\
+ "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0"\
+ "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"\
+ ""]
+ ::msgcat::mcset bn MONTHS_FULL [list \
+ "\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0"\
+ "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09c0"\
+ "\u09ae\u09be\u09b0\u09cd\u099a"\
+ "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2"\
+ "\u09ae\u09c7"\
+ "\u099c\u09c1\u09a8"\
+ "\u099c\u09c1\u09b2\u09be\u0987"\
+ "\u0986\u0997\u09b8\u09cd\u099f"\
+ "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0"\
+ "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0"\
+ "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0"\
+ "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"\
+ ""]
+ ::msgcat::mcset bn AM "\u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3"
+ ::msgcat::mcset bn PM "\u0985\u09aa\u09b0\u09be\u09b9\u09cd\u09a3"
+}
diff --git a/library/msgs/bn_in.msg b/library/msgs/bn_in.msg
new file mode 100644
index 0000000..28c000f
--- /dev/null
+++ b/library/msgs/bn_in.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset bn_IN DATE_FORMAT "%A %d %b %Y"
+ ::msgcat::mcset bn_IN TIME_FORMAT_12 "%I:%M:%S %z"
+ ::msgcat::mcset bn_IN DATE_TIME_FORMAT "%A %d %b %Y %I:%M:%S %z %z"
+}
diff --git a/library/msgs/ca.msg b/library/msgs/ca.msg
new file mode 100644
index 0000000..36c9772
--- /dev/null
+++ b/library/msgs/ca.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ca DAYS_OF_WEEK_ABBREV [list \
+ "dg."\
+ "dl."\
+ "dt."\
+ "dc."\
+ "dj."\
+ "dv."\
+ "ds."]
+ ::msgcat::mcset ca DAYS_OF_WEEK_FULL [list \
+ "diumenge"\
+ "dilluns"\
+ "dimarts"\
+ "dimecres"\
+ "dijous"\
+ "divendres"\
+ "dissabte"]
+ ::msgcat::mcset ca MONTHS_ABBREV [list \
+ "gen."\
+ "feb."\
+ "mar\u00e7"\
+ "abr."\
+ "maig"\
+ "juny"\
+ "jul."\
+ "ag."\
+ "set."\
+ "oct."\
+ "nov."\
+ "des."\
+ ""]
+ ::msgcat::mcset ca MONTHS_FULL [list \
+ "gener"\
+ "febrer"\
+ "mar\u00e7"\
+ "abril"\
+ "maig"\
+ "juny"\
+ "juliol"\
+ "agost"\
+ "setembre"\
+ "octubre"\
+ "novembre"\
+ "desembre"\
+ ""]
+ ::msgcat::mcset ca DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset ca TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset ca DATE_TIME_FORMAT "%d/%m/%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/cs.msg b/library/msgs/cs.msg
new file mode 100644
index 0000000..8db8bdd
--- /dev/null
+++ b/library/msgs/cs.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset cs DAYS_OF_WEEK_ABBREV [list \
+ "Ne"\
+ "Po"\
+ "\u00dat"\
+ "St"\
+ "\u010ct"\
+ "P\u00e1"\
+ "So"]
+ ::msgcat::mcset cs DAYS_OF_WEEK_FULL [list \
+ "Ned\u011ble"\
+ "Pond\u011bl\u00ed"\
+ "\u00dater\u00fd"\
+ "St\u0159eda"\
+ "\u010ctvrtek"\
+ "P\u00e1tek"\
+ "Sobota"]
+ ::msgcat::mcset cs MONTHS_ABBREV [list \
+ "I"\
+ "II"\
+ "III"\
+ "IV"\
+ "V"\
+ "VI"\
+ "VII"\
+ "VIII"\
+ "IX"\
+ "X"\
+ "XI"\
+ "XII"\
+ ""]
+ ::msgcat::mcset cs MONTHS_FULL [list \
+ "leden"\
+ "\u00fanor"\
+ "b\u0159ezen"\
+ "duben"\
+ "kv\u011bten"\
+ "\u010derven"\
+ "\u010dervenec"\
+ "srpen"\
+ "z\u00e1\u0159\u00ed"\
+ "\u0159\u00edjen"\
+ "listopad"\
+ "prosinec"\
+ ""]
+ ::msgcat::mcset cs BCE "p\u0159.Kr."
+ ::msgcat::mcset cs CE "po Kr."
+ ::msgcat::mcset cs AM "dop."
+ ::msgcat::mcset cs PM "odp."
+ ::msgcat::mcset cs DATE_FORMAT "%e.%m.%Y"
+ ::msgcat::mcset cs TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset cs DATE_TIME_FORMAT "%e.%m.%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/da.msg b/library/msgs/da.msg
new file mode 100644
index 0000000..e4fec7f
--- /dev/null
+++ b/library/msgs/da.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset da DAYS_OF_WEEK_ABBREV [list \
+ "s\u00f8"\
+ "ma"\
+ "ti"\
+ "on"\
+ "to"\
+ "fr"\
+ "l\u00f8"]
+ ::msgcat::mcset da DAYS_OF_WEEK_FULL [list \
+ "s\u00f8ndag"\
+ "mandag"\
+ "tirsdag"\
+ "onsdag"\
+ "torsdag"\
+ "fredag"\
+ "l\u00f8rdag"]
+ ::msgcat::mcset da MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "maj"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset da MONTHS_FULL [list \
+ "januar"\
+ "februar"\
+ "marts"\
+ "april"\
+ "maj"\
+ "juni"\
+ "juli"\
+ "august"\
+ "september"\
+ "oktober"\
+ "november"\
+ "december"\
+ ""]
+ ::msgcat::mcset da BCE "f.Kr."
+ ::msgcat::mcset da CE "e.Kr."
+ ::msgcat::mcset da DATE_FORMAT "%d-%m-%Y"
+ ::msgcat::mcset da TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset da DATE_TIME_FORMAT "%d-%m-%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/de.msg b/library/msgs/de.msg
new file mode 100644
index 0000000..9eb3145
--- /dev/null
+++ b/library/msgs/de.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset de DAYS_OF_WEEK_ABBREV [list \
+ "So"\
+ "Mo"\
+ "Di"\
+ "Mi"\
+ "Do"\
+ "Fr"\
+ "Sa"]
+ ::msgcat::mcset de DAYS_OF_WEEK_FULL [list \
+ "Sonntag"\
+ "Montag"\
+ "Dienstag"\
+ "Mittwoch"\
+ "Donnerstag"\
+ "Freitag"\
+ "Samstag"]
+ ::msgcat::mcset de MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "Mrz"\
+ "Apr"\
+ "Mai"\
+ "Jun"\
+ "Jul"\
+ "Aug"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Dez"\
+ ""]
+ ::msgcat::mcset de MONTHS_FULL [list \
+ "Januar"\
+ "Februar"\
+ "M\u00e4rz"\
+ "April"\
+ "Mai"\
+ "Juni"\
+ "Juli"\
+ "August"\
+ "September"\
+ "Oktober"\
+ "November"\
+ "Dezember"\
+ ""]
+ ::msgcat::mcset de BCE "v. Chr."
+ ::msgcat::mcset de CE "n. Chr."
+ ::msgcat::mcset de AM "vorm."
+ ::msgcat::mcset de PM "nachm."
+ ::msgcat::mcset de DATE_FORMAT "%d.%m.%Y"
+ ::msgcat::mcset de TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset de DATE_TIME_FORMAT "%d.%m.%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/de_at.msg b/library/msgs/de_at.msg
new file mode 100644
index 0000000..61bc266
--- /dev/null
+++ b/library/msgs/de_at.msg
@@ -0,0 +1,35 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset de_AT MONTHS_ABBREV [list \
+ "J\u00e4n"\
+ "Feb"\
+ "M\u00e4r"\
+ "Apr"\
+ "Mai"\
+ "Jun"\
+ "Jul"\
+ "Aug"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Dez"\
+ ""]
+ ::msgcat::mcset de_AT MONTHS_FULL [list \
+ "J\u00e4nner"\
+ "Februar"\
+ "M\u00e4rz"\
+ "April"\
+ "Mai"\
+ "Juni"\
+ "Juli"\
+ "August"\
+ "September"\
+ "Oktober"\
+ "November"\
+ "Dezember"\
+ ""]
+ ::msgcat::mcset de_AT DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset de_AT TIME_FORMAT "%T"
+ ::msgcat::mcset de_AT TIME_FORMAT_12 "%T"
+ ::msgcat::mcset de_AT DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/de_be.msg b/library/msgs/de_be.msg
new file mode 100644
index 0000000..3614763
--- /dev/null
+++ b/library/msgs/de_be.msg
@@ -0,0 +1,53 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset de_BE DAYS_OF_WEEK_ABBREV [list \
+ "Son"\
+ "Mon"\
+ "Die"\
+ "Mit"\
+ "Don"\
+ "Fre"\
+ "Sam"]
+ ::msgcat::mcset de_BE DAYS_OF_WEEK_FULL [list \
+ "Sonntag"\
+ "Montag"\
+ "Dienstag"\
+ "Mittwoch"\
+ "Donnerstag"\
+ "Freitag"\
+ "Samstag"]
+ ::msgcat::mcset de_BE MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "M\u00e4r"\
+ "Apr"\
+ "Mai"\
+ "Jun"\
+ "Jul"\
+ "Aug"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Dez"\
+ ""]
+ ::msgcat::mcset de_BE MONTHS_FULL [list \
+ "Januar"\
+ "Februar"\
+ "M\u00e4rz"\
+ "April"\
+ "Mai"\
+ "Juni"\
+ "Juli"\
+ "August"\
+ "September"\
+ "Oktober"\
+ "November"\
+ "Dezember"\
+ ""]
+ ::msgcat::mcset de_BE AM "vorm"
+ ::msgcat::mcset de_BE PM "nachm"
+ ::msgcat::mcset de_BE DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset de_BE TIME_FORMAT "%T"
+ ::msgcat::mcset de_BE TIME_FORMAT_12 "%T"
+ ::msgcat::mcset de_BE DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/el.msg b/library/msgs/el.msg
new file mode 100644
index 0000000..ac19f62
--- /dev/null
+++ b/library/msgs/el.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset el DAYS_OF_WEEK_ABBREV [list \
+ "\u039a\u03c5\u03c1"\
+ "\u0394\u03b5\u03c5"\
+ "\u03a4\u03c1\u03b9"\
+ "\u03a4\u03b5\u03c4"\
+ "\u03a0\u03b5\u03bc"\
+ "\u03a0\u03b1\u03c1"\
+ "\u03a3\u03b1\u03b2"]
+ ::msgcat::mcset el DAYS_OF_WEEK_FULL [list \
+ "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae"\
+ "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1"\
+ "\u03a4\u03c1\u03af\u03c4\u03b7"\
+ "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7"\
+ "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7"\
+ "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae"\
+ "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"]
+ ::msgcat::mcset el MONTHS_ABBREV [list \
+ "\u0399\u03b1\u03bd"\
+ "\u03a6\u03b5\u03b2"\
+ "\u039c\u03b1\u03c1"\
+ "\u0391\u03c0\u03c1"\
+ "\u039c\u03b1\u03ca"\
+ "\u0399\u03bf\u03c5\u03bd"\
+ "\u0399\u03bf\u03c5\u03bb"\
+ "\u0391\u03c5\u03b3"\
+ "\u03a3\u03b5\u03c0"\
+ "\u039f\u03ba\u03c4"\
+ "\u039d\u03bf\u03b5"\
+ "\u0394\u03b5\u03ba"\
+ ""]
+ ::msgcat::mcset el MONTHS_FULL [list \
+ "\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2"\
+ "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2"\
+ "\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2"\
+ "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2"\
+ "\u039c\u03ac\u03ca\u03bf\u03c2"\
+ "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2"\
+ "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2"\
+ "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2"\
+ "\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"\
+ "\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2"\
+ "\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"\
+ "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"\
+ ""]
+ ::msgcat::mcset el AM "\u03c0\u03bc"
+ ::msgcat::mcset el PM "\u03bc\u03bc"
+ ::msgcat::mcset el DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset el TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset el DATE_TIME_FORMAT "%e/%m/%Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/en_au.msg b/library/msgs/en_au.msg
new file mode 100644
index 0000000..7f9870c
--- /dev/null
+++ b/library/msgs/en_au.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_AU DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset en_AU TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset en_AU TIME_FORMAT_12 "%I:%M:%S %P %z"
+ ::msgcat::mcset en_AU DATE_TIME_FORMAT "%e/%m/%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/en_be.msg b/library/msgs/en_be.msg
new file mode 100644
index 0000000..5072986
--- /dev/null
+++ b/library/msgs/en_be.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_BE DATE_FORMAT "%d %b %Y"
+ ::msgcat::mcset en_BE TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset en_BE TIME_FORMAT_12 "%k h %M min %S s %z"
+ ::msgcat::mcset en_BE DATE_TIME_FORMAT "%d %b %Y %k:%M:%S %z"
+}
diff --git a/library/msgs/en_bw.msg b/library/msgs/en_bw.msg
new file mode 100644
index 0000000..8fd20c7
--- /dev/null
+++ b/library/msgs/en_bw.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_BW DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset en_BW TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset en_BW DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/en_ca.msg b/library/msgs/en_ca.msg
new file mode 100644
index 0000000..278efe7
--- /dev/null
+++ b/library/msgs/en_ca.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_CA DATE_FORMAT "%d/%m/%y"
+ ::msgcat::mcset en_CA TIME_FORMAT "%r"
+ ::msgcat::mcset en_CA TIME_FORMAT_12 "%I:%M:%S %p"
+ ::msgcat::mcset en_CA DATE_TIME_FORMAT "%a %d %b %Y %r %z"
+}
diff --git a/library/msgs/en_gb.msg b/library/msgs/en_gb.msg
new file mode 100644
index 0000000..5c61c43
--- /dev/null
+++ b/library/msgs/en_gb.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_GB DATE_FORMAT "%d/%m/%y"
+ ::msgcat::mcset en_GB TIME_FORMAT "%T"
+ ::msgcat::mcset en_GB TIME_FORMAT_12 "%T"
+ ::msgcat::mcset en_GB DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/en_hk.msg b/library/msgs/en_hk.msg
new file mode 100644
index 0000000..8b33bc0
--- /dev/null
+++ b/library/msgs/en_hk.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_HK AM "AM"
+ ::msgcat::mcset en_HK PM "PM"
+ ::msgcat::mcset en_HK DATE_FORMAT "%B %e, %Y"
+ ::msgcat::mcset en_HK TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset en_HK DATE_TIME_FORMAT "%B %e, %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/en_ie.msg b/library/msgs/en_ie.msg
new file mode 100644
index 0000000..ba621cf
--- /dev/null
+++ b/library/msgs/en_ie.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_IE DATE_FORMAT "%d/%m/%y"
+ ::msgcat::mcset en_IE TIME_FORMAT "%T"
+ ::msgcat::mcset en_IE TIME_FORMAT_12 "%T"
+ ::msgcat::mcset en_IE DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/en_in.msg b/library/msgs/en_in.msg
new file mode 100644
index 0000000..a1f155d
--- /dev/null
+++ b/library/msgs/en_in.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_IN AM "AM"
+ ::msgcat::mcset en_IN PM "PM"
+ ::msgcat::mcset en_IN DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset en_IN TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset en_IN DATE_TIME_FORMAT "%d %B %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/en_nz.msg b/library/msgs/en_nz.msg
new file mode 100644
index 0000000..b419017
--- /dev/null
+++ b/library/msgs/en_nz.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_NZ DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset en_NZ TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset en_NZ TIME_FORMAT_12 "%I:%M:%S %P %z"
+ ::msgcat::mcset en_NZ DATE_TIME_FORMAT "%e/%m/%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/en_ph.msg b/library/msgs/en_ph.msg
new file mode 100644
index 0000000..682666d
--- /dev/null
+++ b/library/msgs/en_ph.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_PH AM "AM"
+ ::msgcat::mcset en_PH PM "PM"
+ ::msgcat::mcset en_PH DATE_FORMAT "%B %e, %Y"
+ ::msgcat::mcset en_PH TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset en_PH DATE_TIME_FORMAT "%B %e, %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/en_sg.msg b/library/msgs/en_sg.msg
new file mode 100644
index 0000000..4dc5b1d
--- /dev/null
+++ b/library/msgs/en_sg.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_SG DATE_FORMAT "%d %b %Y"
+ ::msgcat::mcset en_SG TIME_FORMAT_12 "%P %I:%M:%S"
+ ::msgcat::mcset en_SG DATE_TIME_FORMAT "%d %b %Y %P %I:%M:%S %z"
+}
diff --git a/library/msgs/en_za.msg b/library/msgs/en_za.msg
new file mode 100644
index 0000000..fe43797
--- /dev/null
+++ b/library/msgs/en_za.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_ZA DATE_FORMAT "%Y/%m/%d"
+ ::msgcat::mcset en_ZA TIME_FORMAT_12 "%I:%M:%S"
+ ::msgcat::mcset en_ZA DATE_TIME_FORMAT "%Y/%m/%d %I:%M:%S %z"
+}
diff --git a/library/msgs/en_zw.msg b/library/msgs/en_zw.msg
new file mode 100644
index 0000000..2a5804f
--- /dev/null
+++ b/library/msgs/en_zw.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset en_ZW DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset en_ZW TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset en_ZW DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/eo.msg b/library/msgs/eo.msg
new file mode 100644
index 0000000..1d2a24f
--- /dev/null
+++ b/library/msgs/eo.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset eo DAYS_OF_WEEK_ABBREV [list \
+ "di"\
+ "lu"\
+ "ma"\
+ "me"\
+ "\u0135a"\
+ "ve"\
+ "sa"]
+ ::msgcat::mcset eo DAYS_OF_WEEK_FULL [list \
+ "diman\u0109o"\
+ "lundo"\
+ "mardo"\
+ "merkredo"\
+ "\u0135a\u016ddo"\
+ "vendredo"\
+ "sabato"]
+ ::msgcat::mcset eo MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "maj"\
+ "jun"\
+ "jul"\
+ "a\u016dg"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset eo MONTHS_FULL [list \
+ "januaro"\
+ "februaro"\
+ "marto"\
+ "aprilo"\
+ "majo"\
+ "junio"\
+ "julio"\
+ "a\u016dgusto"\
+ "septembro"\
+ "oktobro"\
+ "novembro"\
+ "decembro"\
+ ""]
+ ::msgcat::mcset eo BCE "aK"
+ ::msgcat::mcset eo CE "pK"
+ ::msgcat::mcset eo AM "atm"
+ ::msgcat::mcset eo PM "ptm"
+ ::msgcat::mcset eo DATE_FORMAT "%Y-%b-%d"
+ ::msgcat::mcset eo TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset eo DATE_TIME_FORMAT "%Y-%b-%d %H:%M:%S %z"
+}
diff --git a/library/msgs/es.msg b/library/msgs/es.msg
new file mode 100644
index 0000000..a24f0a1
--- /dev/null
+++ b/library/msgs/es.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es DAYS_OF_WEEK_ABBREV [list \
+ "dom"\
+ "lun"\
+ "mar"\
+ "mi\u00e9"\
+ "jue"\
+ "vie"\
+ "s\u00e1b"]
+ ::msgcat::mcset es DAYS_OF_WEEK_FULL [list \
+ "domingo"\
+ "lunes"\
+ "martes"\
+ "mi\u00e9rcoles"\
+ "jueves"\
+ "viernes"\
+ "s\u00e1bado"]
+ ::msgcat::mcset es MONTHS_ABBREV [list \
+ "ene"\
+ "feb"\
+ "mar"\
+ "abr"\
+ "may"\
+ "jun"\
+ "jul"\
+ "ago"\
+ "sep"\
+ "oct"\
+ "nov"\
+ "dic"\
+ ""]
+ ::msgcat::mcset es MONTHS_FULL [list \
+ "enero"\
+ "febrero"\
+ "marzo"\
+ "abril"\
+ "mayo"\
+ "junio"\
+ "julio"\
+ "agosto"\
+ "septiembre"\
+ "octubre"\
+ "noviembre"\
+ "diciembre"\
+ ""]
+ ::msgcat::mcset es BCE "a.C."
+ ::msgcat::mcset es CE "d.C."
+ ::msgcat::mcset es DATE_FORMAT "%e de %B de %Y"
+ ::msgcat::mcset es TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset es DATE_TIME_FORMAT "%e de %B de %Y %k:%M:%S %z"
+}
diff --git a/library/msgs/es_ar.msg b/library/msgs/es_ar.msg
new file mode 100644
index 0000000..7d35027
--- /dev/null
+++ b/library/msgs/es_ar.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_AR DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_AR TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset es_AR DATE_TIME_FORMAT "%d/%m/%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/es_bo.msg b/library/msgs/es_bo.msg
new file mode 100644
index 0000000..498ad0d
--- /dev/null
+++ b/library/msgs/es_bo.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_BO DATE_FORMAT "%d-%m-%Y"
+ ::msgcat::mcset es_BO TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_BO DATE_TIME_FORMAT "%d-%m-%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_cl.msg b/library/msgs/es_cl.msg
new file mode 100644
index 0000000..31d465c
--- /dev/null
+++ b/library/msgs/es_cl.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_CL DATE_FORMAT "%d-%m-%Y"
+ ::msgcat::mcset es_CL TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_CL DATE_TIME_FORMAT "%d-%m-%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_co.msg b/library/msgs/es_co.msg
new file mode 100644
index 0000000..77e57f0
--- /dev/null
+++ b/library/msgs/es_co.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_CO DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset es_CO TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_CO DATE_TIME_FORMAT "%e/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_cr.msg b/library/msgs/es_cr.msg
new file mode 100644
index 0000000..7a652fa
--- /dev/null
+++ b/library/msgs/es_cr.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_CR DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_CR TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_CR DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_do.msg b/library/msgs/es_do.msg
new file mode 100644
index 0000000..0e283da
--- /dev/null
+++ b/library/msgs/es_do.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_DO DATE_FORMAT "%m/%d/%Y"
+ ::msgcat::mcset es_DO TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_DO DATE_TIME_FORMAT "%m/%d/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_ec.msg b/library/msgs/es_ec.msg
new file mode 100644
index 0000000..9e921e0
--- /dev/null
+++ b/library/msgs/es_ec.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_EC DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_EC TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_EC DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_gt.msg b/library/msgs/es_gt.msg
new file mode 100644
index 0000000..ecd6faf
--- /dev/null
+++ b/library/msgs/es_gt.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_GT DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset es_GT TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_GT DATE_TIME_FORMAT "%e/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_hn.msg b/library/msgs/es_hn.msg
new file mode 100644
index 0000000..a758ca2
--- /dev/null
+++ b/library/msgs/es_hn.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_HN DATE_FORMAT "%m-%d-%Y"
+ ::msgcat::mcset es_HN TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_HN DATE_TIME_FORMAT "%m-%d-%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_mx.msg b/library/msgs/es_mx.msg
new file mode 100644
index 0000000..7cfb545
--- /dev/null
+++ b/library/msgs/es_mx.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_MX DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset es_MX TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_MX DATE_TIME_FORMAT "%e/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_ni.msg b/library/msgs/es_ni.msg
new file mode 100644
index 0000000..7c39495
--- /dev/null
+++ b/library/msgs/es_ni.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_NI DATE_FORMAT "%m-%d-%Y"
+ ::msgcat::mcset es_NI TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_NI DATE_TIME_FORMAT "%m-%d-%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_pa.msg b/library/msgs/es_pa.msg
new file mode 100644
index 0000000..cecacdc
--- /dev/null
+++ b/library/msgs/es_pa.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_PA DATE_FORMAT "%m/%d/%Y"
+ ::msgcat::mcset es_PA TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_PA DATE_TIME_FORMAT "%m/%d/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_pe.msg b/library/msgs/es_pe.msg
new file mode 100644
index 0000000..9f90595
--- /dev/null
+++ b/library/msgs/es_pe.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_PE DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_PE TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_PE DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_pr.msg b/library/msgs/es_pr.msg
new file mode 100644
index 0000000..8511b12
--- /dev/null
+++ b/library/msgs/es_pr.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_PR DATE_FORMAT "%m-%d-%Y"
+ ::msgcat::mcset es_PR TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_PR DATE_TIME_FORMAT "%m-%d-%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_py.msg b/library/msgs/es_py.msg
new file mode 100644
index 0000000..aa93d36
--- /dev/null
+++ b/library/msgs/es_py.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_PY DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_PY TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_PY DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_sv.msg b/library/msgs/es_sv.msg
new file mode 100644
index 0000000..fc7954d
--- /dev/null
+++ b/library/msgs/es_sv.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_SV DATE_FORMAT "%m-%d-%Y"
+ ::msgcat::mcset es_SV TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_SV DATE_TIME_FORMAT "%m-%d-%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_uy.msg b/library/msgs/es_uy.msg
new file mode 100644
index 0000000..b33525c
--- /dev/null
+++ b/library/msgs/es_uy.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_UY DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_UY TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_UY DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/es_ve.msg b/library/msgs/es_ve.msg
new file mode 100644
index 0000000..7c2a7b0
--- /dev/null
+++ b/library/msgs/es_ve.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset es_VE DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset es_VE TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset es_VE DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/et.msg b/library/msgs/et.msg
new file mode 100644
index 0000000..8d32e9e
--- /dev/null
+++ b/library/msgs/et.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset et DAYS_OF_WEEK_ABBREV [list \
+ "P"\
+ "E"\
+ "T"\
+ "K"\
+ "N"\
+ "R"\
+ "L"]
+ ::msgcat::mcset et DAYS_OF_WEEK_FULL [list \
+ "p\u00fchap\u00e4ev"\
+ "esmasp\u00e4ev"\
+ "teisip\u00e4ev"\
+ "kolmap\u00e4ev"\
+ "neljap\u00e4ev"\
+ "reede"\
+ "laup\u00e4ev"]
+ ::msgcat::mcset et MONTHS_ABBREV [list \
+ "Jaan"\
+ "Veebr"\
+ "M\u00e4rts"\
+ "Apr"\
+ "Mai"\
+ "Juuni"\
+ "Juuli"\
+ "Aug"\
+ "Sept"\
+ "Okt"\
+ "Nov"\
+ "Dets"\
+ ""]
+ ::msgcat::mcset et MONTHS_FULL [list \
+ "Jaanuar"\
+ "Veebruar"\
+ "M\u00e4rts"\
+ "Aprill"\
+ "Mai"\
+ "Juuni"\
+ "Juuli"\
+ "August"\
+ "September"\
+ "Oktoober"\
+ "November"\
+ "Detsember"\
+ ""]
+ ::msgcat::mcset et BCE "e.m.a."
+ ::msgcat::mcset et CE "m.a.j."
+ ::msgcat::mcset et DATE_FORMAT "%e-%m-%Y"
+ ::msgcat::mcset et TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset et DATE_TIME_FORMAT "%e-%m-%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/eu.msg b/library/msgs/eu.msg
new file mode 100644
index 0000000..cf708b6
--- /dev/null
+++ b/library/msgs/eu.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset eu DAYS_OF_WEEK_ABBREV [list \
+ "igandea"\
+ "astelehena"\
+ "asteartea"\
+ "asteazkena"\
+ "osteguna"\
+ "ostirala"\
+ "larunbata"]
+ ::msgcat::mcset eu DAYS_OF_WEEK_FULL [list \
+ "igandea"\
+ "astelehena"\
+ "asteartea"\
+ "asteazkena"\
+ "osteguna"\
+ "ostirala"\
+ "larunbata"]
+ ::msgcat::mcset eu MONTHS_ABBREV [list \
+ "urt"\
+ "ots"\
+ "mar"\
+ "api"\
+ "mai"\
+ "eka"\
+ "uzt"\
+ "abu"\
+ "ira"\
+ "urr"\
+ "aza"\
+ "abe"\
+ ""]
+ ::msgcat::mcset eu MONTHS_FULL [list \
+ "urtarrila"\
+ "otsaila"\
+ "martxoa"\
+ "apirila"\
+ "maiatza"\
+ "ekaina"\
+ "uztaila"\
+ "abuztua"\
+ "iraila"\
+ "urria"\
+ "azaroa"\
+ "abendua"\
+ ""]
+}
diff --git a/library/msgs/eu_es.msg b/library/msgs/eu_es.msg
new file mode 100644
index 0000000..2694418
--- /dev/null
+++ b/library/msgs/eu_es.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset eu_ES DATE_FORMAT "%a, %Yeko %bren %da"
+ ::msgcat::mcset eu_ES TIME_FORMAT "%T"
+ ::msgcat::mcset eu_ES TIME_FORMAT_12 "%T"
+ ::msgcat::mcset eu_ES DATE_TIME_FORMAT "%y-%m-%d %T %z"
+}
diff --git a/library/msgs/fa.msg b/library/msgs/fa.msg
new file mode 100644
index 0000000..89b2f90
--- /dev/null
+++ b/library/msgs/fa.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fa DAYS_OF_WEEK_ABBREV [list \
+ "\u06cc\u2214"\
+ "\u062f\u2214"\
+ "\u0633\u2214"\
+ "\u0686\u2214"\
+ "\u067e\u2214"\
+ "\u062c\u2214"\
+ "\u0634\u2214"]
+ ::msgcat::mcset fa DAYS_OF_WEEK_FULL [list \
+ "\u06cc\u06cc\u200c\u0634\u0646\u0628\u0647"\
+ "\u062f\u0648\u0634\u0646\u0628\u0647"\
+ "\u0633\u0647\u200c\u0634\u0646\u0628\u0647"\
+ "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647"\
+ "\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647"\
+ "\u062c\u0645\u0639\u0647"\
+ "\u0634\u0646\u0628\u0647"]
+ ::msgcat::mcset fa MONTHS_ABBREV [list \
+ "\u0698\u0627\u0646"\
+ "\u0641\u0648\u0631"\
+ "\u0645\u0627\u0631"\
+ "\u0622\u0648\u0631"\
+ "\u0645\u0640\u0647"\
+ "\u0698\u0648\u0646"\
+ "\u0698\u0648\u06cc"\
+ "\u0627\u0648\u062a"\
+ "\u0633\u067e\u062a"\
+ "\u0627\u0643\u062a"\
+ "\u0646\u0648\u0627"\
+ "\u062f\u0633\u0627"\
+ ""]
+ ::msgcat::mcset fa MONTHS_FULL [list \
+ "\u0698\u0627\u0646\u0648\u06cc\u0647"\
+ "\u0641\u0648\u0631\u0648\u06cc\u0647"\
+ "\u0645\u0627\u0631\u0633"\
+ "\u0622\u0648\u0631\u06cc\u0644"\
+ "\u0645\u0647"\
+ "\u0698\u0648\u0626\u0646"\
+ "\u0698\u0648\u0626\u06cc\u0647"\
+ "\u0627\u0648\u062a"\
+ "\u0633\u067e\u062a\u0627\u0645\u0628\u0631"\
+ "\u0627\u0643\u062a\u0628\u0631"\
+ "\u0646\u0648\u0627\u0645\u0628\u0631"\
+ "\u062f\u0633\u0627\u0645\u0628\u0631"\
+ ""]
+}
diff --git a/library/msgs/fa_in.msg b/library/msgs/fa_in.msg
new file mode 100644
index 0000000..adc9e91
--- /dev/null
+++ b/library/msgs/fa_in.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fa_IN DAYS_OF_WEEK_ABBREV [list \
+ "\u06cc\u2214"\
+ "\u062f\u2214"\
+ "\u0633\u2214"\
+ "\u0686\u2214"\
+ "\u067e\u2214"\
+ "\u062c\u2214"\
+ "\u0634\u2214"]
+ ::msgcat::mcset fa_IN DAYS_OF_WEEK_FULL [list \
+ "\u06cc\u06cc\u200c\u0634\u0646\u0628\u0647"\
+ "\u062f\u0648\u0634\u0646\u0628\u0647"\
+ "\u0633\u0647\u200c\u0634\u0646\u0628\u0647"\
+ "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647"\
+ "\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647"\
+ "\u062c\u0645\u0639\u0647"\
+ "\u0634\u0646\u0628\u0647"]
+ ::msgcat::mcset fa_IN MONTHS_ABBREV [list \
+ "\u0698\u0627\u0646"\
+ "\u0641\u0648\u0631"\
+ "\u0645\u0627\u0631"\
+ "\u0622\u0648\u0631"\
+ "\u0645\u0640\u0647"\
+ "\u0698\u0648\u0646"\
+ "\u0698\u0648\u06cc"\
+ "\u0627\u0648\u062a"\
+ "\u0633\u067e\u062a"\
+ "\u0627\u0643\u062a"\
+ "\u0646\u0648\u0627"\
+ "\u062f\u0633\u0627"\
+ ""]
+ ::msgcat::mcset fa_IN MONTHS_FULL [list \
+ "\u0698\u0627\u0646\u0648\u06cc\u0647"\
+ "\u0641\u0648\u0631\u0648\u06cc\u0647"\
+ "\u0645\u0627\u0631\u0633"\
+ "\u0622\u0648\u0631\u06cc\u0644"\
+ "\u0645\u0647"\
+ "\u0698\u0648\u0626\u0646"\
+ "\u0698\u0648\u0626\u06cc\u0647"\
+ "\u0627\u0648\u062a"\
+ "\u0633\u067e\u062a\u0627\u0645\u0628\u0631"\
+ "\u0627\u0643\u062a\u0628\u0631"\
+ "\u0646\u0648\u0627\u0645\u0628\u0631"\
+ "\u062f\u0633\u0627\u0645\u0628\u0631"\
+ ""]
+ ::msgcat::mcset fa_IN AM "\u0635\u0628\u062d"
+ ::msgcat::mcset fa_IN PM "\u0639\u0635\u0631"
+ ::msgcat::mcset fa_IN DATE_FORMAT "%A %d %B %Y"
+ ::msgcat::mcset fa_IN TIME_FORMAT_12 "%I:%M:%S %z"
+ ::msgcat::mcset fa_IN DATE_TIME_FORMAT "%A %d %B %Y %I:%M:%S %z %z"
+}
diff --git a/library/msgs/fa_ir.msg b/library/msgs/fa_ir.msg
new file mode 100644
index 0000000..597ce9d
--- /dev/null
+++ b/library/msgs/fa_ir.msg
@@ -0,0 +1,9 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fa_IR AM "\u0635\u0628\u062d"
+ ::msgcat::mcset fa_IR PM "\u0639\u0635\u0631"
+ ::msgcat::mcset fa_IR DATE_FORMAT "%d\u2044%m\u2044%Y"
+ ::msgcat::mcset fa_IR TIME_FORMAT "%S:%M:%H"
+ ::msgcat::mcset fa_IR TIME_FORMAT_12 "%S:%M:%l %P"
+ ::msgcat::mcset fa_IR DATE_TIME_FORMAT "%d\u2044%m\u2044%Y %S:%M:%H %z"
+}
diff --git a/library/msgs/fi.msg b/library/msgs/fi.msg
new file mode 100644
index 0000000..acabba0
--- /dev/null
+++ b/library/msgs/fi.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fi DAYS_OF_WEEK_ABBREV [list \
+ "su"\
+ "ma"\
+ "ti"\
+ "ke"\
+ "to"\
+ "pe"\
+ "la"]
+ ::msgcat::mcset fi DAYS_OF_WEEK_FULL [list \
+ "sunnuntai"\
+ "maanantai"\
+ "tiistai"\
+ "keskiviikko"\
+ "torstai"\
+ "perjantai"\
+ "lauantai"]
+ ::msgcat::mcset fi MONTHS_ABBREV [list \
+ "tammi"\
+ "helmi"\
+ "maalis"\
+ "huhti"\
+ "touko"\
+ "kes\u00e4"\
+ "hein\u00e4"\
+ "elo"\
+ "syys"\
+ "loka"\
+ "marras"\
+ "joulu"\
+ ""]
+ ::msgcat::mcset fi MONTHS_FULL [list \
+ "tammikuu"\
+ "helmikuu"\
+ "maaliskuu"\
+ "huhtikuu"\
+ "toukokuu"\
+ "kes\u00e4kuu"\
+ "hein\u00e4kuu"\
+ "elokuu"\
+ "syyskuu"\
+ "lokakuu"\
+ "marraskuu"\
+ "joulukuu"\
+ ""]
+ ::msgcat::mcset fi DATE_FORMAT "%e.%m.%Y"
+ ::msgcat::mcset fi TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset fi DATE_TIME_FORMAT "%e.%m.%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/fo.msg b/library/msgs/fo.msg
new file mode 100644
index 0000000..4696e62
--- /dev/null
+++ b/library/msgs/fo.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fo DAYS_OF_WEEK_ABBREV [list \
+ "sun"\
+ "m\u00e1n"\
+ "t\u00fds"\
+ "mik"\
+ "h\u00f3s"\
+ "fr\u00ed"\
+ "ley"]
+ ::msgcat::mcset fo DAYS_OF_WEEK_FULL [list \
+ "sunnudagur"\
+ "m\u00e1nadagur"\
+ "t\u00fdsdagur"\
+ "mikudagur"\
+ "h\u00f3sdagur"\
+ "fr\u00edggjadagur"\
+ "leygardagur"]
+ ::msgcat::mcset fo MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "mai"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "des"\
+ ""]
+ ::msgcat::mcset fo MONTHS_FULL [list \
+ "januar"\
+ "februar"\
+ "mars"\
+ "apr\u00edl"\
+ "mai"\
+ "juni"\
+ "juli"\
+ "august"\
+ "september"\
+ "oktober"\
+ "november"\
+ "desember"\
+ ""]
+}
diff --git a/library/msgs/fo_fo.msg b/library/msgs/fo_fo.msg
new file mode 100644
index 0000000..2392b8e
--- /dev/null
+++ b/library/msgs/fo_fo.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fo_FO DATE_FORMAT "%d/%m-%Y"
+ ::msgcat::mcset fo_FO TIME_FORMAT "%T"
+ ::msgcat::mcset fo_FO TIME_FORMAT_12 "%T"
+ ::msgcat::mcset fo_FO DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/fr.msg b/library/msgs/fr.msg
new file mode 100644
index 0000000..55b19bf
--- /dev/null
+++ b/library/msgs/fr.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fr DAYS_OF_WEEK_ABBREV [list \
+ "dim."\
+ "lun."\
+ "mar."\
+ "mer."\
+ "jeu."\
+ "ven."\
+ "sam."]
+ ::msgcat::mcset fr DAYS_OF_WEEK_FULL [list \
+ "dimanche"\
+ "lundi"\
+ "mardi"\
+ "mercredi"\
+ "jeudi"\
+ "vendredi"\
+ "samedi"]
+ ::msgcat::mcset fr MONTHS_ABBREV [list \
+ "janv."\
+ "f\u00e9vr."\
+ "mars"\
+ "avr."\
+ "mai"\
+ "juin"\
+ "juil."\
+ "ao\u00fbt"\
+ "sept."\
+ "oct."\
+ "nov."\
+ "d\u00e9c."\
+ ""]
+ ::msgcat::mcset fr MONTHS_FULL [list \
+ "janvier"\
+ "f\u00e9vrier"\
+ "mars"\
+ "avril"\
+ "mai"\
+ "juin"\
+ "juillet"\
+ "ao\u00fbt"\
+ "septembre"\
+ "octobre"\
+ "novembre"\
+ "d\u00e9cembre"\
+ ""]
+ ::msgcat::mcset fr BCE "av. J.-C."
+ ::msgcat::mcset fr CE "ap. J.-C."
+ ::msgcat::mcset fr DATE_FORMAT "%e %B %Y"
+ ::msgcat::mcset fr TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset fr DATE_TIME_FORMAT "%e %B %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/fr_be.msg b/library/msgs/fr_be.msg
new file mode 100644
index 0000000..cdb13bd
--- /dev/null
+++ b/library/msgs/fr_be.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fr_BE DATE_FORMAT "%d/%m/%y"
+ ::msgcat::mcset fr_BE TIME_FORMAT "%T"
+ ::msgcat::mcset fr_BE TIME_FORMAT_12 "%T"
+ ::msgcat::mcset fr_BE DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/fr_ca.msg b/library/msgs/fr_ca.msg
new file mode 100644
index 0000000..00ccfff
--- /dev/null
+++ b/library/msgs/fr_ca.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fr_CA DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset fr_CA TIME_FORMAT "%T"
+ ::msgcat::mcset fr_CA TIME_FORMAT_12 "%T"
+ ::msgcat::mcset fr_CA DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/fr_ch.msg b/library/msgs/fr_ch.msg
new file mode 100644
index 0000000..7e2bac7
--- /dev/null
+++ b/library/msgs/fr_ch.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset fr_CH DATE_FORMAT "%d. %m. %y"
+ ::msgcat::mcset fr_CH TIME_FORMAT "%T"
+ ::msgcat::mcset fr_CH TIME_FORMAT_12 "%T"
+ ::msgcat::mcset fr_CH DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/ga.msg b/library/msgs/ga.msg
new file mode 100644
index 0000000..6edf13a
--- /dev/null
+++ b/library/msgs/ga.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ga DAYS_OF_WEEK_ABBREV [list \
+ "Domh"\
+ "Luan"\
+ "M\u00e1irt"\
+ "C\u00e9ad"\
+ "D\u00e9ar"\
+ "Aoine"\
+ "Sath"]
+ ::msgcat::mcset ga DAYS_OF_WEEK_FULL [list \
+ "D\u00e9 Domhnaigh"\
+ "D\u00e9 Luain"\
+ "D\u00e9 M\u00e1irt"\
+ "D\u00e9 C\u00e9adaoin"\
+ "D\u00e9ardaoin"\
+ "D\u00e9 hAoine"\
+ "D\u00e9 Sathairn"]
+ ::msgcat::mcset ga MONTHS_ABBREV [list \
+ "Ean"\
+ "Feabh"\
+ "M\u00e1rta"\
+ "Aib"\
+ "Beal"\
+ "Meith"\
+ "I\u00fail"\
+ "L\u00fan"\
+ "MF\u00f3mh"\
+ "DF\u00f3mh"\
+ "Samh"\
+ "Noll"\
+ ""]
+ ::msgcat::mcset ga MONTHS_FULL [list \
+ "Ean\u00e1ir"\
+ "Feabhra"\
+ "M\u00e1rta"\
+ "Aibre\u00e1n"\
+ "M\u00ed na Bealtaine"\
+ "Meith"\
+ "I\u00fail"\
+ "L\u00fanasa"\
+ "Me\u00e1n F\u00f3mhair"\
+ "Deireadh F\u00f3mhair"\
+ "M\u00ed na Samhna"\
+ "M\u00ed na Nollag"\
+ ""]
+}
diff --git a/library/msgs/ga_ie.msg b/library/msgs/ga_ie.msg
new file mode 100644
index 0000000..b6acbbc
--- /dev/null
+++ b/library/msgs/ga_ie.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ga_IE DATE_FORMAT "%d.%m.%y"
+ ::msgcat::mcset ga_IE TIME_FORMAT "%T"
+ ::msgcat::mcset ga_IE TIME_FORMAT_12 "%T"
+ ::msgcat::mcset ga_IE DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/gl.msg b/library/msgs/gl.msg
new file mode 100644
index 0000000..4b869e8
--- /dev/null
+++ b/library/msgs/gl.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset gl DAYS_OF_WEEK_ABBREV [list \
+ "Dom"\
+ "Lun"\
+ "Mar"\
+ "M\u00e9r"\
+ "Xov"\
+ "Ven"\
+ "S\u00e1b"]
+ ::msgcat::mcset gl DAYS_OF_WEEK_FULL [list \
+ "Domingo"\
+ "Luns"\
+ "Martes"\
+ "M\u00e9rcores"\
+ "Xoves"\
+ "Venres"\
+ "S\u00e1bado"]
+ ::msgcat::mcset gl MONTHS_ABBREV [list \
+ "Xan"\
+ "Feb"\
+ "Mar"\
+ "Abr"\
+ "Mai"\
+ "Xu\u00f1"\
+ "Xul"\
+ "Ago"\
+ "Set"\
+ "Out"\
+ "Nov"\
+ "Dec"\
+ ""]
+ ::msgcat::mcset gl MONTHS_FULL [list \
+ "Xaneiro"\
+ "Febreiro"\
+ "Marzo"\
+ "Abril"\
+ "Maio"\
+ "Xu\u00f1o"\
+ "Xullo"\
+ "Agosto"\
+ "Setembro"\
+ "Outubro"\
+ "Novembro"\
+ "Decembro"\
+ ""]
+}
diff --git a/library/msgs/gl_es.msg b/library/msgs/gl_es.msg
new file mode 100644
index 0000000..d4ed270
--- /dev/null
+++ b/library/msgs/gl_es.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset gl_ES DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset gl_ES TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset gl_ES DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/gv.msg b/library/msgs/gv.msg
new file mode 100644
index 0000000..7d332ad
--- /dev/null
+++ b/library/msgs/gv.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset gv DAYS_OF_WEEK_ABBREV [list \
+ "Jed"\
+ "Jel"\
+ "Jem"\
+ "Jerc"\
+ "Jerd"\
+ "Jeh"\
+ "Jes"]
+ ::msgcat::mcset gv DAYS_OF_WEEK_FULL [list \
+ "Jedoonee"\
+ "Jelhein"\
+ "Jemayrt"\
+ "Jercean"\
+ "Jerdein"\
+ "Jeheiney"\
+ "Jesarn"]
+ ::msgcat::mcset gv MONTHS_ABBREV [list \
+ "J-guer"\
+ "T-arree"\
+ "Mayrnt"\
+ "Avrril"\
+ "Boaldyn"\
+ "M-souree"\
+ "J-souree"\
+ "Luanistyn"\
+ "M-fouyir"\
+ "J-fouyir"\
+ "M.Houney"\
+ "M.Nollick"\
+ ""]
+ ::msgcat::mcset gv MONTHS_FULL [list \
+ "Jerrey-geuree"\
+ "Toshiaght-arree"\
+ "Mayrnt"\
+ "Averil"\
+ "Boaldyn"\
+ "Mean-souree"\
+ "Jerrey-souree"\
+ "Luanistyn"\
+ "Mean-fouyir"\
+ "Jerrey-fouyir"\
+ "Mee Houney"\
+ "Mee ny Nollick"\
+ ""]
+}
diff --git a/library/msgs/gv_gb.msg b/library/msgs/gv_gb.msg
new file mode 100644
index 0000000..5e96e6f
--- /dev/null
+++ b/library/msgs/gv_gb.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset gv_GB DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset gv_GB TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset gv_GB DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/he.msg b/library/msgs/he.msg
new file mode 100644
index 0000000..4fd921d
--- /dev/null
+++ b/library/msgs/he.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset he DAYS_OF_WEEK_ABBREV [list \
+ "\u05d0"\
+ "\u05d1"\
+ "\u05d2"\
+ "\u05d3"\
+ "\u05d4"\
+ "\u05d5"\
+ "\u05e9"]
+ ::msgcat::mcset he DAYS_OF_WEEK_FULL [list \
+ "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df"\
+ "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9"\
+ "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9"\
+ "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9"\
+ "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9"\
+ "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9"\
+ "\u05e9\u05d1\u05ea"]
+ ::msgcat::mcset he MONTHS_ABBREV [list \
+ "\u05d9\u05e0\u05d5"\
+ "\u05e4\u05d1\u05e8"\
+ "\u05de\u05e8\u05e5"\
+ "\u05d0\u05e4\u05e8"\
+ "\u05de\u05d0\u05d9"\
+ "\u05d9\u05d5\u05e0"\
+ "\u05d9\u05d5\u05dc"\
+ "\u05d0\u05d5\u05d2"\
+ "\u05e1\u05e4\u05d8"\
+ "\u05d0\u05d5\u05e7"\
+ "\u05e0\u05d5\u05d1"\
+ "\u05d3\u05e6\u05de"\
+ ""]
+ ::msgcat::mcset he MONTHS_FULL [list \
+ "\u05d9\u05e0\u05d5\u05d0\u05e8"\
+ "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8"\
+ "\u05de\u05e8\u05e5"\
+ "\u05d0\u05e4\u05e8\u05d9\u05dc"\
+ "\u05de\u05d0\u05d9"\
+ "\u05d9\u05d5\u05e0\u05d9"\
+ "\u05d9\u05d5\u05dc\u05d9"\
+ "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8"\
+ "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8"\
+ "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8"\
+ "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8"\
+ "\u05d3\u05e6\u05de\u05d1\u05e8"\
+ ""]
+ ::msgcat::mcset he BCE "\u05dc\u05e1\u05d4\u0022\u05e0"
+ ::msgcat::mcset he CE "\u05dc\u05e4\u05e1\u05d4\u0022\u05e0"
+ ::msgcat::mcset he DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset he TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset he DATE_TIME_FORMAT "%d/%m/%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/hi.msg b/library/msgs/hi.msg
new file mode 100644
index 0000000..50c9fb8
--- /dev/null
+++ b/library/msgs/hi.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset hi DAYS_OF_WEEK_FULL [list \
+ "\u0930\u0935\u093f\u0935\u093e\u0930"\
+ "\u0938\u094b\u092e\u0935\u093e\u0930"\
+ "\u092e\u0902\u0917\u0932\u0935\u093e\u0930"\
+ "\u092c\u0941\u0927\u0935\u093e\u0930"\
+ "\u0917\u0941\u0930\u0941\u0935\u093e\u0930"\
+ "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930"\
+ "\u0936\u0928\u093f\u0935\u093e\u0930"]
+ ::msgcat::mcset hi MONTHS_ABBREV [list \
+ "\u091c\u0928\u0935\u0930\u0940"\
+ "\u092b\u093c\u0930\u0935\u0930\u0940"\
+ "\u092e\u093e\u0930\u094d\u091a"\
+ "\u0905\u092a\u094d\u0930\u0947\u0932"\
+ "\u092e\u0908"\
+ "\u091c\u0942\u0928"\
+ "\u091c\u0941\u0932\u093e\u0908"\
+ "\u0905\u0917\u0938\u094d\u0924"\
+ "\u0938\u093f\u0924\u092e\u094d\u092c\u0930"\
+ "\u0905\u0915\u094d\u091f\u0942\u092c\u0930"\
+ "\u0928\u0935\u092e\u094d\u092c\u0930"\
+ "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"]
+ ::msgcat::mcset hi MONTHS_FULL [list \
+ "\u091c\u0928\u0935\u0930\u0940"\
+ "\u092b\u093c\u0930\u0935\u0930\u0940"\
+ "\u092e\u093e\u0930\u094d\u091a"\
+ "\u0905\u092a\u094d\u0930\u0947\u0932"\
+ "\u092e\u0908"\
+ "\u091c\u0942\u0928"\
+ "\u091c\u0941\u0932\u093e\u0908"\
+ "\u0905\u0917\u0938\u094d\u0924"\
+ "\u0938\u093f\u0924\u092e\u094d\u092c\u0930"\
+ "\u0905\u0915\u094d\u091f\u0942\u092c\u0930"\
+ "\u0928\u0935\u092e\u094d\u092c\u0930"\
+ "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"]
+ ::msgcat::mcset hi AM "\u0908\u0938\u093e\u092a\u0942\u0930\u094d\u0935"
+ ::msgcat::mcset hi PM "."
+}
diff --git a/library/msgs/hi_in.msg b/library/msgs/hi_in.msg
new file mode 100644
index 0000000..239793f
--- /dev/null
+++ b/library/msgs/hi_in.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset hi_IN DATE_FORMAT "%d %M %Y"
+ ::msgcat::mcset hi_IN TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset hi_IN DATE_TIME_FORMAT "%d %M %Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/hr.msg b/library/msgs/hr.msg
new file mode 100644
index 0000000..cec145b
--- /dev/null
+++ b/library/msgs/hr.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset hr DAYS_OF_WEEK_ABBREV [list \
+ "ned"\
+ "pon"\
+ "uto"\
+ "sri"\
+ "\u010det"\
+ "pet"\
+ "sub"]
+ ::msgcat::mcset hr DAYS_OF_WEEK_FULL [list \
+ "nedjelja"\
+ "ponedjeljak"\
+ "utorak"\
+ "srijeda"\
+ "\u010detvrtak"\
+ "petak"\
+ "subota"]
+ ::msgcat::mcset hr MONTHS_ABBREV [list \
+ "sij"\
+ "vel"\
+ "o\u017eu"\
+ "tra"\
+ "svi"\
+ "lip"\
+ "srp"\
+ "kol"\
+ "ruj"\
+ "lis"\
+ "stu"\
+ "pro"\
+ ""]
+ ::msgcat::mcset hr MONTHS_FULL [list \
+ "sije\u010danj"\
+ "velja\u010da"\
+ "o\u017eujak"\
+ "travanj"\
+ "svibanj"\
+ "lipanj"\
+ "srpanj"\
+ "kolovoz"\
+ "rujan"\
+ "listopad"\
+ "studeni"\
+ "prosinac"\
+ ""]
+ ::msgcat::mcset hr DATE_FORMAT "%Y.%m.%d"
+ ::msgcat::mcset hr TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset hr DATE_TIME_FORMAT "%Y.%m.%d %H:%M:%S %z"
+}
diff --git a/library/msgs/hu.msg b/library/msgs/hu.msg
new file mode 100644
index 0000000..e5e68d9
--- /dev/null
+++ b/library/msgs/hu.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset hu DAYS_OF_WEEK_ABBREV [list \
+ "V"\
+ "H"\
+ "K"\
+ "Sze"\
+ "Cs"\
+ "P"\
+ "Szo"]
+ ::msgcat::mcset hu DAYS_OF_WEEK_FULL [list \
+ "vas\u00e1rnap"\
+ "h\u00e9tf\u0151"\
+ "kedd"\
+ "szerda"\
+ "cs\u00fct\u00f6rt\u00f6k"\
+ "p\u00e9ntek"\
+ "szombat"]
+ ::msgcat::mcset hu MONTHS_ABBREV [list \
+ "jan."\
+ "febr."\
+ "m\u00e1rc."\
+ "\u00e1pr."\
+ "m\u00e1j."\
+ "j\u00fan."\
+ "j\u00fal."\
+ "aug."\
+ "szept."\
+ "okt."\
+ "nov."\
+ "dec."\
+ ""]
+ ::msgcat::mcset hu MONTHS_FULL [list \
+ "janu\u00e1r"\
+ "febru\u00e1r"\
+ "m\u00e1rcius"\
+ "\u00e1prilis"\
+ "m\u00e1jus"\
+ "j\u00fanius"\
+ "j\u00falius"\
+ "augusztus"\
+ "szeptember"\
+ "okt\u00f3ber"\
+ "november"\
+ "december"\
+ ""]
+ ::msgcat::mcset hu BCE "i.e."
+ ::msgcat::mcset hu CE "i.u."
+ ::msgcat::mcset hu AM "DE"
+ ::msgcat::mcset hu PM "DU"
+ ::msgcat::mcset hu DATE_FORMAT "%Y.%m.%d."
+ ::msgcat::mcset hu TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset hu DATE_TIME_FORMAT "%Y.%m.%d. %k:%M:%S %z"
+}
diff --git a/library/msgs/id.msg b/library/msgs/id.msg
new file mode 100644
index 0000000..17c6bb5
--- /dev/null
+++ b/library/msgs/id.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset id DAYS_OF_WEEK_ABBREV [list \
+ "Min"\
+ "Sen"\
+ "Sel"\
+ "Rab"\
+ "Kam"\
+ "Jum"\
+ "Sab"]
+ ::msgcat::mcset id DAYS_OF_WEEK_FULL [list \
+ "Minggu"\
+ "Senin"\
+ "Selasa"\
+ "Rabu"\
+ "Kamis"\
+ "Jumat"\
+ "Sabtu"]
+ ::msgcat::mcset id MONTHS_ABBREV [list \
+ "Jan"\
+ "Peb"\
+ "Mar"\
+ "Apr"\
+ "Mei"\
+ "Jun"\
+ "Jul"\
+ "Agu"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Des"\
+ ""]
+ ::msgcat::mcset id MONTHS_FULL [list \
+ "Januari"\
+ "Pebruari"\
+ "Maret"\
+ "April"\
+ "Mei"\
+ "Juni"\
+ "Juli"\
+ "Agustus"\
+ "September"\
+ "Oktober"\
+ "November"\
+ "Desember"\
+ ""]
+}
diff --git a/library/msgs/id_id.msg b/library/msgs/id_id.msg
new file mode 100644
index 0000000..bb672c1
--- /dev/null
+++ b/library/msgs/id_id.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset id_ID DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset id_ID TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset id_ID DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/is.msg b/library/msgs/is.msg
new file mode 100644
index 0000000..adc2d2a
--- /dev/null
+++ b/library/msgs/is.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset is DAYS_OF_WEEK_ABBREV [list \
+ "sun."\
+ "m\u00e1n."\
+ "\u00feri."\
+ "mi\u00f0."\
+ "fim."\
+ "f\u00f6s."\
+ "lau."]
+ ::msgcat::mcset is DAYS_OF_WEEK_FULL [list \
+ "sunnudagur"\
+ "m\u00e1nudagur"\
+ "\u00feri\u00f0judagur"\
+ "mi\u00f0vikudagur"\
+ "fimmtudagur"\
+ "f\u00f6studagur"\
+ "laugardagur"]
+ ::msgcat::mcset is MONTHS_ABBREV [list \
+ "jan."\
+ "feb."\
+ "mar."\
+ "apr."\
+ "ma\u00ed"\
+ "j\u00fan."\
+ "j\u00fal."\
+ "\u00e1g\u00fa."\
+ "sep."\
+ "okt."\
+ "n\u00f3v."\
+ "des."\
+ ""]
+ ::msgcat::mcset is MONTHS_FULL [list \
+ "jan\u00faar"\
+ "febr\u00faar"\
+ "mars"\
+ "apr\u00edl"\
+ "ma\u00ed"\
+ "j\u00fan\u00ed"\
+ "j\u00fal\u00ed"\
+ "\u00e1g\u00fast"\
+ "september"\
+ "okt\u00f3ber"\
+ "n\u00f3vember"\
+ "desember"\
+ ""]
+ ::msgcat::mcset is DATE_FORMAT "%e.%m.%Y"
+ ::msgcat::mcset is TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset is DATE_TIME_FORMAT "%e.%m.%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/it.msg b/library/msgs/it.msg
new file mode 100644
index 0000000..b641cde
--- /dev/null
+++ b/library/msgs/it.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset it DAYS_OF_WEEK_ABBREV [list \
+ "dom"\
+ "lun"\
+ "mar"\
+ "mer"\
+ "gio"\
+ "ven"\
+ "sab"]
+ ::msgcat::mcset it DAYS_OF_WEEK_FULL [list \
+ "domenica"\
+ "luned\u00ec"\
+ "marted\u00ec"\
+ "mercoled\u00ec"\
+ "gioved\u00ec"\
+ "venerd\u00ec"\
+ "sabato"]
+ ::msgcat::mcset it MONTHS_ABBREV [list \
+ "gen"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "mag"\
+ "giu"\
+ "lug"\
+ "ago"\
+ "set"\
+ "ott"\
+ "nov"\
+ "dic"\
+ ""]
+ ::msgcat::mcset it MONTHS_FULL [list \
+ "gennaio"\
+ "febbraio"\
+ "marzo"\
+ "aprile"\
+ "maggio"\
+ "giugno"\
+ "luglio"\
+ "agosto"\
+ "settembre"\
+ "ottobre"\
+ "novembre"\
+ "dicembre"\
+ ""]
+ ::msgcat::mcset it BCE "aC"
+ ::msgcat::mcset it CE "dC"
+ ::msgcat::mcset it AM "m."
+ ::msgcat::mcset it PM "p."
+ ::msgcat::mcset it DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset it TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset it DATE_TIME_FORMAT "%d %B %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/it_ch.msg b/library/msgs/it_ch.msg
new file mode 100644
index 0000000..b36ed36
--- /dev/null
+++ b/library/msgs/it_ch.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset it_CH DATE_FORMAT "%e. %B %Y"
+ ::msgcat::mcset it_CH TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset it_CH DATE_TIME_FORMAT "%e. %B %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/ja.msg b/library/msgs/ja.msg
new file mode 100644
index 0000000..2767665
--- /dev/null
+++ b/library/msgs/ja.msg
@@ -0,0 +1,44 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ja DAYS_OF_WEEK_ABBREV [list \
+ "\u65e5"\
+ "\u6708"\
+ "\u706b"\
+ "\u6c34"\
+ "\u6728"\
+ "\u91d1"\
+ "\u571f"]
+ ::msgcat::mcset ja DAYS_OF_WEEK_FULL [list \
+ "\u65e5\u66dc\u65e5"\
+ "\u6708\u66dc\u65e5"\
+ "\u706b\u66dc\u65e5"\
+ "\u6c34\u66dc\u65e5"\
+ "\u6728\u66dc\u65e5"\
+ "\u91d1\u66dc\u65e5"\
+ "\u571f\u66dc\u65e5"]
+ ::msgcat::mcset ja MONTHS_FULL [list \
+ "1\u6708"\
+ "2\u6708"\
+ "3\u6708"\
+ "4\u6708"\
+ "5\u6708"\
+ "6\u6708"\
+ "7\u6708"\
+ "8\u6708"\
+ "9\u6708"\
+ "10\u6708"\
+ "11\u6708"\
+ "12\u6708"]
+ ::msgcat::mcset ja BCE "\u7d00\u5143\u524d"
+ ::msgcat::mcset ja CE "\u897f\u66a6"
+ ::msgcat::mcset ja AM "\u5348\u524d"
+ ::msgcat::mcset ja PM "\u5348\u5f8c"
+ ::msgcat::mcset ja DATE_FORMAT "%Y/%m/%d"
+ ::msgcat::mcset ja TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset ja TIME_FORMAT_12 "%P %I:%M:%S"
+ ::msgcat::mcset ja DATE_TIME_FORMAT "%Y/%m/%d %k:%M:%S %z"
+ ::msgcat::mcset ja LOCALE_DATE_FORMAT "%EY\u5e74%m\u6708%d\u65e5"
+ ::msgcat::mcset ja LOCALE_TIME_FORMAT "%H\u6642%M\u5206%S\u79d2"
+ ::msgcat::mcset ja LOCALE_DATE_TIME_FORMAT "%EY\u5e74%m\u6708%d\u65e5 (%a) %H\u6642%M\u5206%S\u79d2 %z"
+ ::msgcat::mcset ja LOCALE_ERAS "\u007b-9223372036854775808 \u897f\u66a6 0\u007d \u007b-3061011600 \u660e\u6cbb 1867\u007d \u007b-1812186000 \u5927\u6b63 1911\u007d \u007b-1357635600 \u662d\u548c 1925\u007d \u007b600220800 \u5e73\u6210 1988\u007d"
+}
diff --git a/library/msgs/kl.msg b/library/msgs/kl.msg
new file mode 100644
index 0000000..d877bfe
--- /dev/null
+++ b/library/msgs/kl.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset kl DAYS_OF_WEEK_ABBREV [list \
+ "sab"\
+ "ata"\
+ "mar"\
+ "pin"\
+ "sis"\
+ "tal"\
+ "arf"]
+ ::msgcat::mcset kl DAYS_OF_WEEK_FULL [list \
+ "sabaat"\
+ "ataasinngorneq"\
+ "marlunngorneq"\
+ "pingasunngorneq"\
+ "sisamanngorneq"\
+ "tallimanngorneq"\
+ "arfininngorneq"]
+ ::msgcat::mcset kl MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "maj"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset kl MONTHS_FULL [list \
+ "januari"\
+ "februari"\
+ "martsi"\
+ "aprili"\
+ "maji"\
+ "juni"\
+ "juli"\
+ "augustusi"\
+ "septemberi"\
+ "oktoberi"\
+ "novemberi"\
+ "decemberi"\
+ ""]
+}
diff --git a/library/msgs/kl_gl.msg b/library/msgs/kl_gl.msg
new file mode 100644
index 0000000..403aa10
--- /dev/null
+++ b/library/msgs/kl_gl.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset kl_GL DATE_FORMAT "%d %b %Y"
+ ::msgcat::mcset kl_GL TIME_FORMAT "%T"
+ ::msgcat::mcset kl_GL TIME_FORMAT_12 "%T"
+ ::msgcat::mcset kl_GL DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/ko.msg b/library/msgs/ko.msg
new file mode 100644
index 0000000..0cd17a1
--- /dev/null
+++ b/library/msgs/ko.msg
@@ -0,0 +1,55 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ko DAYS_OF_WEEK_ABBREV [list \
+ "\uc77c"\
+ "\uc6d4"\
+ "\ud654"\
+ "\uc218"\
+ "\ubaa9"\
+ "\uae08"\
+ "\ud1a0"]
+ ::msgcat::mcset ko DAYS_OF_WEEK_FULL [list \
+ "\uc77c\uc694\uc77c"\
+ "\uc6d4\uc694\uc77c"\
+ "\ud654\uc694\uc77c"\
+ "\uc218\uc694\uc77c"\
+ "\ubaa9\uc694\uc77c"\
+ "\uae08\uc694\uc77c"\
+ "\ud1a0\uc694\uc77c"]
+ ::msgcat::mcset ko MONTHS_ABBREV [list \
+ "1\uc6d4"\
+ "2\uc6d4"\
+ "3\uc6d4"\
+ "4\uc6d4"\
+ "5\uc6d4"\
+ "6\uc6d4"\
+ "7\uc6d4"\
+ "8\uc6d4"\
+ "9\uc6d4"\
+ "10\uc6d4"\
+ "11\uc6d4"\
+ "12\uc6d4"\
+ ""]
+ ::msgcat::mcset ko MONTHS_FULL [list \
+ "1\uc6d4"\
+ "2\uc6d4"\
+ "3\uc6d4"\
+ "4\uc6d4"\
+ "5\uc6d4"\
+ "6\uc6d4"\
+ "7\uc6d4"\
+ "8\uc6d4"\
+ "9\uc6d4"\
+ "10\uc6d4"\
+ "11\uc6d4"\
+ "12\uc6d4"\
+ ""]
+ ::msgcat::mcset ko AM "\uc624\uc804"
+ ::msgcat::mcset ko PM "\uc624\ud6c4"
+ ::msgcat::mcset ko DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset ko TIME_FORMAT_12 "%P %l:%M:%S"
+ ::msgcat::mcset ko DATE_TIME_FORMAT "%Y-%m-%d %P %l:%M:%S %z"
+ ::msgcat::mcset ko LOCALE_DATE_FORMAT "%Y\ub144%B%Od\uc77c"
+ ::msgcat::mcset ko LOCALE_TIME_FORMAT "%H\uc2dc%M\ubd84%S\ucd08"
+ ::msgcat::mcset ko LOCALE_DATE_TIME_FORMAT "%A %Y\ub144%B%Od\uc77c%H\uc2dc%M\ubd84%S\ucd08 %z"
+}
diff --git a/library/msgs/ko_kr.msg b/library/msgs/ko_kr.msg
new file mode 100644
index 0000000..ea5bbd7
--- /dev/null
+++ b/library/msgs/ko_kr.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ko_KR BCE "\uae30\uc6d0\uc804"
+ ::msgcat::mcset ko_KR CE "\uc11c\uae30"
+ ::msgcat::mcset ko_KR DATE_FORMAT "%Y.%m.%d"
+ ::msgcat::mcset ko_KR TIME_FORMAT_12 "%P %l:%M:%S"
+ ::msgcat::mcset ko_KR DATE_TIME_FORMAT "%Y.%m.%d %P %l:%M:%S %z"
+}
diff --git a/library/msgs/kok.msg b/library/msgs/kok.msg
new file mode 100644
index 0000000..0869f20
--- /dev/null
+++ b/library/msgs/kok.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset kok DAYS_OF_WEEK_FULL [list \
+ "\u0906\u0926\u093f\u0924\u094d\u092f\u0935\u093e\u0930"\
+ "\u0938\u094b\u092e\u0935\u093e\u0930"\
+ "\u092e\u0902\u0917\u0933\u093e\u0930"\
+ "\u092c\u0941\u0927\u0935\u093e\u0930"\
+ "\u0917\u0941\u0930\u0941\u0935\u093e\u0930"\
+ "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930"\
+ "\u0936\u0928\u093f\u0935\u093e\u0930"]
+ ::msgcat::mcset kok MONTHS_ABBREV [list \
+ "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940"\
+ "\u092b\u0947\u092c\u0943\u0935\u093e\u0930\u0940"\
+ "\u092e\u093e\u0930\u094d\u091a"\
+ "\u090f\u092a\u094d\u0930\u093f\u0932"\
+ "\u092e\u0947"\
+ "\u091c\u0942\u0928"\
+ "\u091c\u0941\u0932\u0948"\
+ "\u0913\u0917\u0938\u094d\u091f"\
+ "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930"\
+ "\u0913\u0915\u094d\u091f\u094b\u092c\u0930"\
+ "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930"\
+ "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"]
+ ::msgcat::mcset kok MONTHS_FULL [list \
+ "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940"\
+ "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940"\
+ "\u092e\u093e\u0930\u094d\u091a"\
+ "\u090f\u092a\u094d\u0930\u093f\u0932"\
+ "\u092e\u0947"\
+ "\u091c\u0942\u0928"\
+ "\u091c\u0941\u0932\u0948"\
+ "\u0913\u0917\u0938\u094d\u091f"\
+ "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930"\
+ "\u0913\u0915\u094d\u091f\u094b\u092c\u0930"\
+ "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930"\
+ "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"]
+ ::msgcat::mcset kok AM "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u092a\u0942\u0930\u094d\u0935"
+ ::msgcat::mcset kok PM "\u0915\u094d\u0930\u093f\u0938\u094d\u0924\u0936\u0916\u093e"
+}
diff --git a/library/msgs/kok_in.msg b/library/msgs/kok_in.msg
new file mode 100644
index 0000000..abcb1ff
--- /dev/null
+++ b/library/msgs/kok_in.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset kok_IN DATE_FORMAT "%d %M %Y"
+ ::msgcat::mcset kok_IN TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset kok_IN DATE_TIME_FORMAT "%d %M %Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/kw.msg b/library/msgs/kw.msg
new file mode 100644
index 0000000..aaf79b3
--- /dev/null
+++ b/library/msgs/kw.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset kw DAYS_OF_WEEK_ABBREV [list \
+ "Sul"\
+ "Lun"\
+ "Mth"\
+ "Mhr"\
+ "Yow"\
+ "Gwe"\
+ "Sad"]
+ ::msgcat::mcset kw DAYS_OF_WEEK_FULL [list \
+ "De Sul"\
+ "De Lun"\
+ "De Merth"\
+ "De Merher"\
+ "De Yow"\
+ "De Gwener"\
+ "De Sadorn"]
+ ::msgcat::mcset kw MONTHS_ABBREV [list \
+ "Gen"\
+ "Whe"\
+ "Mer"\
+ "Ebr"\
+ "Me"\
+ "Evn"\
+ "Gor"\
+ "Est"\
+ "Gwn"\
+ "Hed"\
+ "Du"\
+ "Kev"\
+ ""]
+ ::msgcat::mcset kw MONTHS_FULL [list \
+ "Mys Genver"\
+ "Mys Whevrel"\
+ "Mys Merth"\
+ "Mys Ebrel"\
+ "Mys Me"\
+ "Mys Evan"\
+ "Mys Gortheren"\
+ "Mye Est"\
+ "Mys Gwyngala"\
+ "Mys Hedra"\
+ "Mys Du"\
+ "Mys Kevardhu"\
+ ""]
+}
diff --git a/library/msgs/kw_gb.msg b/library/msgs/kw_gb.msg
new file mode 100644
index 0000000..2967680
--- /dev/null
+++ b/library/msgs/kw_gb.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset kw_GB DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset kw_GB TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset kw_GB DATE_TIME_FORMAT "%d %B %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/lt.msg b/library/msgs/lt.msg
new file mode 100644
index 0000000..27b0985
--- /dev/null
+++ b/library/msgs/lt.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset lt DAYS_OF_WEEK_ABBREV [list \
+ "Sk"\
+ "Pr"\
+ "An"\
+ "Tr"\
+ "Kt"\
+ "Pn"\
+ "\u0160t"]
+ ::msgcat::mcset lt DAYS_OF_WEEK_FULL [list \
+ "Sekmadienis"\
+ "Pirmadienis"\
+ "Antradienis"\
+ "Tre\u010diadienis"\
+ "Ketvirtadienis"\
+ "Penktadienis"\
+ "\u0160e\u0161tadienis"]
+ ::msgcat::mcset lt MONTHS_ABBREV [list \
+ "Sau"\
+ "Vas"\
+ "Kov"\
+ "Bal"\
+ "Geg"\
+ "Bir"\
+ "Lie"\
+ "Rgp"\
+ "Rgs"\
+ "Spa"\
+ "Lap"\
+ "Grd"\
+ ""]
+ ::msgcat::mcset lt MONTHS_FULL [list \
+ "Sausio"\
+ "Vasario"\
+ "Kovo"\
+ "Baland\u017eio"\
+ "Gegu\u017e\u0117s"\
+ "Bir\u017eelio"\
+ "Liepos"\
+ "Rugpj\u016b\u010dio"\
+ "Rugs\u0117jo"\
+ "Spalio"\
+ "Lapkri\u010dio"\
+ "Gruod\u017eio"\
+ ""]
+ ::msgcat::mcset lt BCE "pr.Kr."
+ ::msgcat::mcset lt CE "po.Kr."
+ ::msgcat::mcset lt DATE_FORMAT "%Y.%m.%e"
+ ::msgcat::mcset lt TIME_FORMAT "%H.%M.%S"
+ ::msgcat::mcset lt DATE_TIME_FORMAT "%Y.%m.%e %H.%M.%S %z"
+}
diff --git a/library/msgs/lv.msg b/library/msgs/lv.msg
new file mode 100644
index 0000000..a037b15
--- /dev/null
+++ b/library/msgs/lv.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset lv DAYS_OF_WEEK_ABBREV [list \
+ "Sv"\
+ "P"\
+ "O"\
+ "T"\
+ "C"\
+ "Pk"\
+ "S"]
+ ::msgcat::mcset lv DAYS_OF_WEEK_FULL [list \
+ "sv\u0113tdiena"\
+ "pirmdiena"\
+ "otrdiena"\
+ "tre\u0161diena"\
+ "ceturdien"\
+ "piektdiena"\
+ "sestdiena"]
+ ::msgcat::mcset lv MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "Mar"\
+ "Apr"\
+ "Maijs"\
+ "J\u016bn"\
+ "J\u016bl"\
+ "Aug"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Dec"\
+ ""]
+ ::msgcat::mcset lv MONTHS_FULL [list \
+ "janv\u0101ris"\
+ "febru\u0101ris"\
+ "marts"\
+ "apr\u012blis"\
+ "maijs"\
+ "j\u016bnijs"\
+ "j\u016blijs"\
+ "augusts"\
+ "septembris"\
+ "oktobris"\
+ "novembris"\
+ "decembris"\
+ ""]
+ ::msgcat::mcset lv BCE "pm\u0113"
+ ::msgcat::mcset lv CE "m\u0113"
+ ::msgcat::mcset lv DATE_FORMAT "%Y.%e.%m"
+ ::msgcat::mcset lv TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset lv DATE_TIME_FORMAT "%Y.%e.%m %H:%M:%S %z"
+}
diff --git a/library/msgs/mk.msg b/library/msgs/mk.msg
new file mode 100644
index 0000000..41cf60d
--- /dev/null
+++ b/library/msgs/mk.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset mk DAYS_OF_WEEK_ABBREV [list \
+ "\u043d\u0435\u0434."\
+ "\u043f\u043e\u043d."\
+ "\u0432\u0442."\
+ "\u0441\u0440\u0435."\
+ "\u0447\u0435\u0442."\
+ "\u043f\u0435\u0442."\
+ "\u0441\u0430\u0431."]
+ ::msgcat::mcset mk DAYS_OF_WEEK_FULL [list \
+ "\u043d\u0435\u0434\u0435\u043b\u0430"\
+ "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a"\
+ "\u0432\u0442\u043e\u0440\u043d\u0438\u043a"\
+ "\u0441\u0440\u0435\u0434\u0430"\
+ "\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a"\
+ "\u043f\u0435\u0442\u043e\u043a"\
+ "\u0441\u0430\u0431\u043e\u0442\u0430"]
+ ::msgcat::mcset mk MONTHS_ABBREV [list \
+ "\u0458\u0430\u043d."\
+ "\u0444\u0435\u0432."\
+ "\u043c\u0430\u0440."\
+ "\u0430\u043f\u0440."\
+ "\u043c\u0430\u0458."\
+ "\u0458\u0443\u043d."\
+ "\u0458\u0443\u043b."\
+ "\u0430\u0432\u0433."\
+ "\u0441\u0435\u043f\u0442."\
+ "\u043e\u043a\u0442."\
+ "\u043d\u043e\u0435\u043c."\
+ "\u0434\u0435\u043a\u0435\u043c."\
+ ""]
+ ::msgcat::mcset mk MONTHS_FULL [list \
+ "\u0458\u0430\u043d\u0443\u0430\u0440\u0438"\
+ "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438"\
+ "\u043c\u0430\u0440\u0442"\
+ "\u0430\u043f\u0440\u0438\u043b"\
+ "\u043c\u0430\u0458"\
+ "\u0458\u0443\u043d\u0438"\
+ "\u0458\u0443\u043b\u0438"\
+ "\u0430\u0432\u0433\u0443\u0441\u0442"\
+ "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438"\
+ "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438"\
+ "\u043d\u043e\u0435\u043c\u0432\u0440\u0438"\
+ "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"\
+ ""]
+ ::msgcat::mcset mk BCE "\u043f\u0440.\u043d.\u0435."
+ ::msgcat::mcset mk CE "\u0430\u0435."
+ ::msgcat::mcset mk DATE_FORMAT "%e.%m.%Y"
+ ::msgcat::mcset mk TIME_FORMAT "%H:%M:%S %z"
+ ::msgcat::mcset mk DATE_TIME_FORMAT "%e.%m.%Y %H:%M:%S %z %z"
+}
diff --git a/library/msgs/mr.msg b/library/msgs/mr.msg
new file mode 100644
index 0000000..cea427a
--- /dev/null
+++ b/library/msgs/mr.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset mr DAYS_OF_WEEK_FULL [list \
+ "\u0930\u0935\u093f\u0935\u093e\u0930"\
+ "\u0938\u094b\u092e\u0935\u093e\u0930"\
+ "\u092e\u0902\u0917\u0933\u0935\u093e\u0930"\
+ "\u092e\u0902\u0917\u0933\u0935\u093e\u0930"\
+ "\u0917\u0941\u0930\u0941\u0935\u093e\u0930"\
+ "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930"\
+ "\u0936\u0928\u093f\u0935\u093e\u0930"]
+ ::msgcat::mcset mr MONTHS_ABBREV [list \
+ "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940"\
+ "\u092b\u0947\u092c\u0943\u0935\u093e\u0930\u0940"\
+ "\u092e\u093e\u0930\u094d\u091a"\
+ "\u090f\u092a\u094d\u0930\u093f\u0932"\
+ "\u092e\u0947"\
+ "\u091c\u0942\u0928"\
+ "\u091c\u0941\u0932\u0948"\
+ "\u0913\u0917\u0938\u094d\u091f"\
+ "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930"\
+ "\u0913\u0915\u094d\u091f\u094b\u092c\u0930"\
+ "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930"\
+ "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"]
+ ::msgcat::mcset mr MONTHS_FULL [list \
+ "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940"\
+ "\u092b\u0947\u092c\u0943\u0935\u093e\u0930\u0940"\
+ "\u092e\u093e\u0930\u094d\u091a"\
+ "\u090f\u092a\u094d\u0930\u093f\u0932"\
+ "\u092e\u0947"\
+ "\u091c\u0942\u0928"\
+ "\u091c\u0941\u0932\u0948"\
+ "\u0913\u0917\u0938\u094d\u091f"\
+ "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930"\
+ "\u0913\u0915\u094d\u091f\u094b\u092c\u0930"\
+ "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930"\
+ "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"]
+ ::msgcat::mcset mr AM "BC"
+ ::msgcat::mcset mr PM "AD"
+}
diff --git a/library/msgs/mr_in.msg b/library/msgs/mr_in.msg
new file mode 100644
index 0000000..1889da5
--- /dev/null
+++ b/library/msgs/mr_in.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset mr_IN DATE_FORMAT "%d %M %Y"
+ ::msgcat::mcset mr_IN TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset mr_IN DATE_TIME_FORMAT "%d %M %Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/ms.msg b/library/msgs/ms.msg
new file mode 100644
index 0000000..e954431
--- /dev/null
+++ b/library/msgs/ms.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ms DAYS_OF_WEEK_ABBREV [list \
+ "Aha"\
+ "Isn"\
+ "Sei"\
+ "Rab"\
+ "Kha"\
+ "Jum"\
+ "Sab"]
+ ::msgcat::mcset ms DAYS_OF_WEEK_FULL [list \
+ "Ahad"\
+ "Isnin"\
+ "Selasa"\
+ "Rahu"\
+ "Khamis"\
+ "Jumaat"\
+ "Sabtu"]
+ ::msgcat::mcset ms MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "Mac"\
+ "Apr"\
+ "Mei"\
+ "Jun"\
+ "Jul"\
+ "Ogos"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Dis"\
+ ""]
+ ::msgcat::mcset ms MONTHS_FULL [list \
+ "Januari"\
+ "Februari"\
+ "Mac"\
+ "April"\
+ "Mei"\
+ "Jun"\
+ "Julai"\
+ "Ogos"\
+ "September"\
+ "Oktober"\
+ "November"\
+ "Disember"\
+ ""]
+}
diff --git a/library/msgs/ms_my.msg b/library/msgs/ms_my.msg
new file mode 100644
index 0000000..c1f93d4
--- /dev/null
+++ b/library/msgs/ms_my.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ms_MY DATE_FORMAT "%A %d %b %Y"
+ ::msgcat::mcset ms_MY TIME_FORMAT_12 "%I:%M:%S %z"
+ ::msgcat::mcset ms_MY DATE_TIME_FORMAT "%A %d %b %Y %I:%M:%S %z %z"
+}
diff --git a/library/msgs/mt.msg b/library/msgs/mt.msg
new file mode 100644
index 0000000..ddd5446
--- /dev/null
+++ b/library/msgs/mt.msg
@@ -0,0 +1,27 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset mt DAYS_OF_WEEK_ABBREV [list \
+ "\u0126ad"\
+ "Tne"\
+ "Tli"\
+ "Erb"\
+ "\u0126am"\
+ "\u0120im"]
+ ::msgcat::mcset mt MONTHS_ABBREV [list \
+ "Jan"\
+ "Fra"\
+ "Mar"\
+ "Apr"\
+ "Mej"\
+ "\u0120un"\
+ "Lul"\
+ "Awi"\
+ "Set"\
+ "Ott"\
+ "Nov"]
+ ::msgcat::mcset mt BCE "QK"
+ ::msgcat::mcset mt CE ""
+ ::msgcat::mcset mt DATE_FORMAT "%A, %e ta %B, %Y"
+ ::msgcat::mcset mt TIME_FORMAT_12 "%l:%M:%S %P"
+ ::msgcat::mcset mt DATE_TIME_FORMAT "%A, %e ta %B, %Y %l:%M:%S %P %z"
+}
diff --git a/library/msgs/nb.msg b/library/msgs/nb.msg
new file mode 100644
index 0000000..90d49a3
--- /dev/null
+++ b/library/msgs/nb.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset nb DAYS_OF_WEEK_ABBREV [list \
+ "s\u00f8"\
+ "ma"\
+ "ti"\
+ "on"\
+ "to"\
+ "fr"\
+ "l\u00f8"]
+ ::msgcat::mcset nb DAYS_OF_WEEK_FULL [list \
+ "s\u00f8ndag"\
+ "mandag"\
+ "tirsdag"\
+ "onsdag"\
+ "torsdag"\
+ "fredag"\
+ "l\u00f8rdag"]
+ ::msgcat::mcset nb MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "mai"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "des"\
+ ""]
+ ::msgcat::mcset nb MONTHS_FULL [list \
+ "januar"\
+ "februar"\
+ "mars"\
+ "april"\
+ "mai"\
+ "juni"\
+ "juli"\
+ "august"\
+ "september"\
+ "oktober"\
+ "november"\
+ "desember"\
+ ""]
+ ::msgcat::mcset nb BCE "f.Kr."
+ ::msgcat::mcset nb CE "e.Kr."
+ ::msgcat::mcset nb DATE_FORMAT "%e. %B %Y"
+ ::msgcat::mcset nb TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset nb DATE_TIME_FORMAT "%e. %B %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/nl.msg b/library/msgs/nl.msg
new file mode 100644
index 0000000..4c5c675
--- /dev/null
+++ b/library/msgs/nl.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset nl DAYS_OF_WEEK_ABBREV [list \
+ "zo"\
+ "ma"\
+ "di"\
+ "wo"\
+ "do"\
+ "vr"\
+ "za"]
+ ::msgcat::mcset nl DAYS_OF_WEEK_FULL [list \
+ "zondag"\
+ "maandag"\
+ "dinsdag"\
+ "woensdag"\
+ "donderdag"\
+ "vrijdag"\
+ "zaterdag"]
+ ::msgcat::mcset nl MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mrt"\
+ "apr"\
+ "mei"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset nl MONTHS_FULL [list \
+ "januari"\
+ "februari"\
+ "maart"\
+ "april"\
+ "mei"\
+ "juni"\
+ "juli"\
+ "augustus"\
+ "september"\
+ "oktober"\
+ "november"\
+ "december"\
+ ""]
+ ::msgcat::mcset nl DATE_FORMAT "%e %B %Y"
+ ::msgcat::mcset nl TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset nl DATE_TIME_FORMAT "%e %B %Y %k:%M:%S %z"
+}
diff --git a/library/msgs/nl_be.msg b/library/msgs/nl_be.msg
new file mode 100644
index 0000000..4b19670
--- /dev/null
+++ b/library/msgs/nl_be.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset nl_BE DATE_FORMAT "%d-%m-%y"
+ ::msgcat::mcset nl_BE TIME_FORMAT "%T"
+ ::msgcat::mcset nl_BE TIME_FORMAT_12 "%T"
+ ::msgcat::mcset nl_BE DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/nn.msg b/library/msgs/nn.msg
new file mode 100644
index 0000000..bd61ac9
--- /dev/null
+++ b/library/msgs/nn.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset nn DAYS_OF_WEEK_ABBREV [list \
+ "su"\
+ "m\u00e5"\
+ "ty"\
+ "on"\
+ "to"\
+ "fr"\
+ "lau"]
+ ::msgcat::mcset nn DAYS_OF_WEEK_FULL [list \
+ "sundag"\
+ "m\u00e5ndag"\
+ "tysdag"\
+ "onsdag"\
+ "torsdag"\
+ "fredag"\
+ "laurdag"]
+ ::msgcat::mcset nn MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "mai"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "des"\
+ ""]
+ ::msgcat::mcset nn MONTHS_FULL [list \
+ "januar"\
+ "februar"\
+ "mars"\
+ "april"\
+ "mai"\
+ "juni"\
+ "juli"\
+ "august"\
+ "september"\
+ "oktober"\
+ "november"\
+ "desember"\
+ ""]
+ ::msgcat::mcset nn BCE "f.Kr."
+ ::msgcat::mcset nn CE "e.Kr."
+ ::msgcat::mcset nn DATE_FORMAT "%e. %B %Y"
+ ::msgcat::mcset nn TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset nn DATE_TIME_FORMAT "%e. %B %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/pl.msg b/library/msgs/pl.msg
new file mode 100644
index 0000000..d206f4b
--- /dev/null
+++ b/library/msgs/pl.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset pl DAYS_OF_WEEK_ABBREV [list \
+ "N"\
+ "Pn"\
+ "Wt"\
+ "\u015ar"\
+ "Cz"\
+ "Pt"\
+ "So"]
+ ::msgcat::mcset pl DAYS_OF_WEEK_FULL [list \
+ "niedziela"\
+ "poniedzia\u0142ek"\
+ "wtorek"\
+ "\u015broda"\
+ "czwartek"\
+ "pi\u0105tek"\
+ "sobota"]
+ ::msgcat::mcset pl MONTHS_ABBREV [list \
+ "sty"\
+ "lut"\
+ "mar"\
+ "kwi"\
+ "maj"\
+ "cze"\
+ "lip"\
+ "sie"\
+ "wrz"\
+ "pa\u017a"\
+ "lis"\
+ "gru"\
+ ""]
+ ::msgcat::mcset pl MONTHS_FULL [list \
+ "stycze\u0144"\
+ "luty"\
+ "marzec"\
+ "kwiecie\u0144"\
+ "maj"\
+ "czerwiec"\
+ "lipiec"\
+ "sierpie\u0144"\
+ "wrzesie\u0144"\
+ "pa\u017adziernik"\
+ "listopad"\
+ "grudzie\u0144"\
+ ""]
+ ::msgcat::mcset pl BCE "p.n.e."
+ ::msgcat::mcset pl CE "n.e."
+ ::msgcat::mcset pl DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset pl TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset pl DATE_TIME_FORMAT "%Y-%m-%d %H:%M:%S %z"
+}
diff --git a/library/msgs/pt.msg b/library/msgs/pt.msg
new file mode 100644
index 0000000..96fdb35
--- /dev/null
+++ b/library/msgs/pt.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset pt DAYS_OF_WEEK_ABBREV [list \
+ "Dom"\
+ "Seg"\
+ "Ter"\
+ "Qua"\
+ "Qui"\
+ "Sex"\
+ "S\u00e1b"]
+ ::msgcat::mcset pt DAYS_OF_WEEK_FULL [list \
+ "Domingo"\
+ "Segunda-feira"\
+ "Ter\u00e7a-feira"\
+ "Quarta-feira"\
+ "Quinta-feira"\
+ "Sexta-feira"\
+ "S\u00e1bado"]
+ ::msgcat::mcset pt MONTHS_ABBREV [list \
+ "Jan"\
+ "Fev"\
+ "Mar"\
+ "Abr"\
+ "Mai"\
+ "Jun"\
+ "Jul"\
+ "Ago"\
+ "Set"\
+ "Out"\
+ "Nov"\
+ "Dez"\
+ ""]
+ ::msgcat::mcset pt MONTHS_FULL [list \
+ "Janeiro"\
+ "Fevereiro"\
+ "Mar\u00e7o"\
+ "Abril"\
+ "Maio"\
+ "Junho"\
+ "Julho"\
+ "Agosto"\
+ "Setembro"\
+ "Outubro"\
+ "Novembro"\
+ "Dezembro"\
+ ""]
+ ::msgcat::mcset pt DATE_FORMAT "%d-%m-%Y"
+ ::msgcat::mcset pt TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset pt DATE_TIME_FORMAT "%d-%m-%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/pt_br.msg b/library/msgs/pt_br.msg
new file mode 100644
index 0000000..8684327
--- /dev/null
+++ b/library/msgs/pt_br.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset pt_BR DATE_FORMAT "%d-%m-%Y"
+ ::msgcat::mcset pt_BR TIME_FORMAT "%T"
+ ::msgcat::mcset pt_BR TIME_FORMAT_12 "%T"
+ ::msgcat::mcset pt_BR DATE_TIME_FORMAT "%a %d %b %Y %T %z"
+}
diff --git a/library/msgs/ro.msg b/library/msgs/ro.msg
new file mode 100644
index 0000000..bdd7c61
--- /dev/null
+++ b/library/msgs/ro.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ro DAYS_OF_WEEK_ABBREV [list \
+ "D"\
+ "L"\
+ "Ma"\
+ "Mi"\
+ "J"\
+ "V"\
+ "S"]
+ ::msgcat::mcset ro DAYS_OF_WEEK_FULL [list \
+ "duminic\u0103"\
+ "luni"\
+ "mar\u0163i"\
+ "miercuri"\
+ "joi"\
+ "vineri"\
+ "s\u00eemb\u0103t\u0103"]
+ ::msgcat::mcset ro MONTHS_ABBREV [list \
+ "Ian"\
+ "Feb"\
+ "Mar"\
+ "Apr"\
+ "Mai"\
+ "Iun"\
+ "Iul"\
+ "Aug"\
+ "Sep"\
+ "Oct"\
+ "Nov"\
+ "Dec"\
+ ""]
+ ::msgcat::mcset ro MONTHS_FULL [list \
+ "ianuarie"\
+ "februarie"\
+ "martie"\
+ "aprilie"\
+ "mai"\
+ "iunie"\
+ "iulie"\
+ "august"\
+ "septembrie"\
+ "octombrie"\
+ "noiembrie"\
+ "decembrie"\
+ ""]
+ ::msgcat::mcset ro BCE "d.C."
+ ::msgcat::mcset ro CE "\u00ee.d.C."
+ ::msgcat::mcset ro DATE_FORMAT "%d.%m.%Y"
+ ::msgcat::mcset ro TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset ro DATE_TIME_FORMAT "%d.%m.%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/ru.msg b/library/msgs/ru.msg
new file mode 100644
index 0000000..65b075d
--- /dev/null
+++ b/library/msgs/ru.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ru DAYS_OF_WEEK_ABBREV [list \
+ "\u0412\u0441"\
+ "\u041f\u043d"\
+ "\u0412\u0442"\
+ "\u0421\u0440"\
+ "\u0427\u0442"\
+ "\u041f\u0442"\
+ "\u0421\u0431"]
+ ::msgcat::mcset ru DAYS_OF_WEEK_FULL [list \
+ "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435"\
+ "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a"\
+ "\u0432\u0442\u043e\u0440\u043d\u0438\u043a"\
+ "\u0441\u0440\u0435\u0434\u0430"\
+ "\u0447\u0435\u0442\u0432\u0435\u0440\u0433"\
+ "\u043f\u044f\u0442\u043d\u0438\u0446\u0430"\
+ "\u0441\u0443\u0431\u0431\u043e\u0442\u0430"]
+ ::msgcat::mcset ru MONTHS_ABBREV [list \
+ "\u044f\u043d\u0432"\
+ "\u0444\u0435\u0432"\
+ "\u043c\u0430\u0440"\
+ "\u0430\u043f\u0440"\
+ "\u043c\u0430\u0439"\
+ "\u0438\u044e\u043d"\
+ "\u0438\u044e\u043b"\
+ "\u0430\u0432\u0433"\
+ "\u0441\u0435\u043d"\
+ "\u043e\u043a\u0442"\
+ "\u043d\u043e\u044f"\
+ "\u0434\u0435\u043a"\
+ ""]
+ ::msgcat::mcset ru MONTHS_FULL [list \
+ "\u042f\u043d\u0432\u0430\u0440\u044c"\
+ "\u0424\u0435\u0432\u0440\u0430\u043b\u044c"\
+ "\u041c\u0430\u0440\u0442"\
+ "\u0410\u043f\u0440\u0435\u043b\u044c"\
+ "\u041c\u0430\u0439"\
+ "\u0418\u044e\u043d\u044c"\
+ "\u0418\u044e\u043b\u044c"\
+ "\u0410\u0432\u0433\u0443\u0441\u0442"\
+ "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c"\
+ "\u041e\u043a\u0442\u044f\u0431\u0440\u044c"\
+ "\u041d\u043e\u044f\u0431\u0440\u044c"\
+ "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"\
+ ""]
+ ::msgcat::mcset ru BCE "\u0434\u043e \u043d.\u044d."
+ ::msgcat::mcset ru CE "\u043d.\u044d."
+ ::msgcat::mcset ru DATE_FORMAT "%d.%m.%Y"
+ ::msgcat::mcset ru TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset ru DATE_TIME_FORMAT "%d.%m.%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/ru_ua.msg b/library/msgs/ru_ua.msg
new file mode 100644
index 0000000..6e1f8a8
--- /dev/null
+++ b/library/msgs/ru_ua.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ru_UA DATE_FORMAT "%d.%m.%Y"
+ ::msgcat::mcset ru_UA TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset ru_UA DATE_TIME_FORMAT "%d.%m.%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/sh.msg b/library/msgs/sh.msg
new file mode 100644
index 0000000..6ee0fc7
--- /dev/null
+++ b/library/msgs/sh.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sh DAYS_OF_WEEK_ABBREV [list \
+ "Ned"\
+ "Pon"\
+ "Uto"\
+ "Sre"\
+ "\u010cet"\
+ "Pet"\
+ "Sub"]
+ ::msgcat::mcset sh DAYS_OF_WEEK_FULL [list \
+ "Nedelja"\
+ "Ponedeljak"\
+ "Utorak"\
+ "Sreda"\
+ "\u010cetvrtak"\
+ "Petak"\
+ "Subota"]
+ ::msgcat::mcset sh MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "Mar"\
+ "Apr"\
+ "Maj"\
+ "Jun"\
+ "Jul"\
+ "Avg"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Dec"\
+ ""]
+ ::msgcat::mcset sh MONTHS_FULL [list \
+ "Januar"\
+ "Februar"\
+ "Mart"\
+ "April"\
+ "Maj"\
+ "Juni"\
+ "Juli"\
+ "Avgust"\
+ "Septembar"\
+ "Oktobar"\
+ "Novembar"\
+ "Decembar"\
+ ""]
+ ::msgcat::mcset sh BCE "p. n. e."
+ ::msgcat::mcset sh CE "n. e."
+ ::msgcat::mcset sh DATE_FORMAT "%d.%m.%Y."
+ ::msgcat::mcset sh TIME_FORMAT "%k.%M.%S"
+ ::msgcat::mcset sh DATE_TIME_FORMAT "%d.%m.%Y. %k.%M.%S %z"
+}
diff --git a/library/msgs/sk.msg b/library/msgs/sk.msg
new file mode 100644
index 0000000..9b2f0aa
--- /dev/null
+++ b/library/msgs/sk.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sk DAYS_OF_WEEK_ABBREV [list \
+ "Ne"\
+ "Po"\
+ "Ut"\
+ "St"\
+ "\u0160t"\
+ "Pa"\
+ "So"]
+ ::msgcat::mcset sk DAYS_OF_WEEK_FULL [list \
+ "Nede\u013ee"\
+ "Pondelok"\
+ "Utorok"\
+ "Streda"\
+ "\u0160tvrtok"\
+ "Piatok"\
+ "Sobota"]
+ ::msgcat::mcset sk MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "m\u00e1j"\
+ "j\u00fan"\
+ "j\u00fal"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset sk MONTHS_FULL [list \
+ "janu\u00e1r"\
+ "febru\u00e1r"\
+ "marec"\
+ "apr\u00edl"\
+ "m\u00e1j"\
+ "j\u00fan"\
+ "j\u00fal"\
+ "august"\
+ "september"\
+ "okt\u00f3ber"\
+ "november"\
+ "december"\
+ ""]
+ ::msgcat::mcset sk BCE "pred n.l."
+ ::msgcat::mcset sk CE "n.l."
+ ::msgcat::mcset sk DATE_FORMAT "%e.%m.%Y"
+ ::msgcat::mcset sk TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset sk DATE_TIME_FORMAT "%e.%m.%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/sl.msg b/library/msgs/sl.msg
new file mode 100644
index 0000000..42bc509
--- /dev/null
+++ b/library/msgs/sl.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sl DAYS_OF_WEEK_ABBREV [list \
+ "Ned"\
+ "Pon"\
+ "Tor"\
+ "Sre"\
+ "\u010cet"\
+ "Pet"\
+ "Sob"]
+ ::msgcat::mcset sl DAYS_OF_WEEK_FULL [list \
+ "Nedelja"\
+ "Ponedeljek"\
+ "Torek"\
+ "Sreda"\
+ "\u010cetrtek"\
+ "Petek"\
+ "Sobota"]
+ ::msgcat::mcset sl MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "maj"\
+ "jun"\
+ "jul"\
+ "avg"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset sl MONTHS_FULL [list \
+ "januar"\
+ "februar"\
+ "marec"\
+ "april"\
+ "maj"\
+ "junij"\
+ "julij"\
+ "avgust"\
+ "september"\
+ "oktober"\
+ "november"\
+ "december"\
+ ""]
+ ::msgcat::mcset sl BCE "pr.n.\u0161."
+ ::msgcat::mcset sl CE "po Kr."
+ ::msgcat::mcset sl DATE_FORMAT "%Y.%m.%e"
+ ::msgcat::mcset sl TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset sl DATE_TIME_FORMAT "%Y.%m.%e %k:%M:%S %z"
+}
diff --git a/library/msgs/sq.msg b/library/msgs/sq.msg
new file mode 100644
index 0000000..8fb1fce
--- /dev/null
+++ b/library/msgs/sq.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sq DAYS_OF_WEEK_ABBREV [list \
+ "Die"\
+ "H\u00ebn"\
+ "Mar"\
+ "M\u00ebr"\
+ "Enj"\
+ "Pre"\
+ "Sht"]
+ ::msgcat::mcset sq DAYS_OF_WEEK_FULL [list \
+ "e diel"\
+ "e h\u00ebn\u00eb"\
+ "e mart\u00eb"\
+ "e m\u00ebrkur\u00eb"\
+ "e enjte"\
+ "e premte"\
+ "e shtun\u00eb"]
+ ::msgcat::mcset sq MONTHS_ABBREV [list \
+ "Jan"\
+ "Shk"\
+ "Mar"\
+ "Pri"\
+ "Maj"\
+ "Qer"\
+ "Kor"\
+ "Gsh"\
+ "Sht"\
+ "Tet"\
+ "N\u00ebn"\
+ "Dhj"\
+ ""]
+ ::msgcat::mcset sq MONTHS_FULL [list \
+ "janar"\
+ "shkurt"\
+ "mars"\
+ "prill"\
+ "maj"\
+ "qershor"\
+ "korrik"\
+ "gusht"\
+ "shtator"\
+ "tetor"\
+ "n\u00ebntor"\
+ "dhjetor"\
+ ""]
+ ::msgcat::mcset sq BCE "p.e.r."
+ ::msgcat::mcset sq CE "n.e.r."
+ ::msgcat::mcset sq AM "PD"
+ ::msgcat::mcset sq PM "MD"
+ ::msgcat::mcset sq DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset sq TIME_FORMAT_12 "%l:%M:%S.%P"
+ ::msgcat::mcset sq DATE_TIME_FORMAT "%Y-%m-%d %l:%M:%S.%P %z"
+}
diff --git a/library/msgs/sr.msg b/library/msgs/sr.msg
new file mode 100644
index 0000000..7576668
--- /dev/null
+++ b/library/msgs/sr.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sr DAYS_OF_WEEK_ABBREV [list \
+ "\u041d\u0435\u0434"\
+ "\u041f\u043e\u043d"\
+ "\u0423\u0442\u043e"\
+ "\u0421\u0440\u0435"\
+ "\u0427\u0435\u0442"\
+ "\u041f\u0435\u0442"\
+ "\u0421\u0443\u0431"]
+ ::msgcat::mcset sr DAYS_OF_WEEK_FULL [list \
+ "\u041d\u0435\u0434\u0435\u0459\u0430"\
+ "\u041f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a"\
+ "\u0423\u0442\u043e\u0440\u0430\u043a"\
+ "\u0421\u0440\u0435\u0434\u0430"\
+ "\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043a"\
+ "\u041f\u0435\u0442\u0430\u043a"\
+ "\u0421\u0443\u0431\u043e\u0442\u0430"]
+ ::msgcat::mcset sr MONTHS_ABBREV [list \
+ "\u0408\u0430\u043d"\
+ "\u0424\u0435\u0431"\
+ "\u041c\u0430\u0440"\
+ "\u0410\u043f\u0440"\
+ "\u041c\u0430\u0458"\
+ "\u0408\u0443\u043d"\
+ "\u0408\u0443\u043b"\
+ "\u0410\u0432\u0433"\
+ "\u0421\u0435\u043f"\
+ "\u041e\u043a\u0442"\
+ "\u041d\u043e\u0432"\
+ "\u0414\u0435\u0446"\
+ ""]
+ ::msgcat::mcset sr MONTHS_FULL [list \
+ "\u0408\u0430\u043d\u0443\u0430\u0440"\
+ "\u0424\u0435\u0431\u0440\u0443\u0430\u0440"\
+ "\u041c\u0430\u0440\u0442"\
+ "\u0410\u043f\u0440\u0438\u043b"\
+ "\u041c\u0430\u0458"\
+ "\u0408\u0443\u043d\u0438"\
+ "\u0408\u0443\u043b\u0438"\
+ "\u0410\u0432\u0433\u0443\u0441\u0442"\
+ "\u0421\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440"\
+ "\u041e\u043a\u0442\u043e\u0431\u0430\u0440"\
+ "\u041d\u043e\u0432\u0435\u043c\u0431\u0430\u0440"\
+ "\u0414\u0435\u0446\u0435\u043c\u0431\u0430\u0440"\
+ ""]
+ ::msgcat::mcset sr BCE "\u043f. \u043d. \u0435."
+ ::msgcat::mcset sr CE "\u043d. \u0435"
+ ::msgcat::mcset sr DATE_FORMAT "%Y.%m.%e"
+ ::msgcat::mcset sr TIME_FORMAT "%k.%M.%S"
+ ::msgcat::mcset sr DATE_TIME_FORMAT "%Y.%m.%e %k.%M.%S %z"
+}
diff --git a/library/msgs/sv.msg b/library/msgs/sv.msg
new file mode 100644
index 0000000..f7a67c6
--- /dev/null
+++ b/library/msgs/sv.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sv DAYS_OF_WEEK_ABBREV [list \
+ "s\u00f6"\
+ "m\u00e5"\
+ "ti"\
+ "on"\
+ "to"\
+ "fr"\
+ "l\u00f6"]
+ ::msgcat::mcset sv DAYS_OF_WEEK_FULL [list \
+ "s\u00f6ndag"\
+ "m\u00e5ndag"\
+ "tisdag"\
+ "onsdag"\
+ "torsdag"\
+ "fredag"\
+ "l\u00f6rdag"]
+ ::msgcat::mcset sv MONTHS_ABBREV [list \
+ "jan"\
+ "feb"\
+ "mar"\
+ "apr"\
+ "maj"\
+ "jun"\
+ "jul"\
+ "aug"\
+ "sep"\
+ "okt"\
+ "nov"\
+ "dec"\
+ ""]
+ ::msgcat::mcset sv MONTHS_FULL [list \
+ "januari"\
+ "februari"\
+ "mars"\
+ "april"\
+ "maj"\
+ "juni"\
+ "juli"\
+ "augusti"\
+ "september"\
+ "oktober"\
+ "november"\
+ "december"\
+ ""]
+ ::msgcat::mcset sv BCE "f.Kr."
+ ::msgcat::mcset sv CE "e.Kr."
+ ::msgcat::mcset sv DATE_FORMAT "%Y-%m-%d"
+ ::msgcat::mcset sv TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset sv DATE_TIME_FORMAT "%Y-%m-%d %H:%M:%S %z"
+}
diff --git a/library/msgs/sw.msg b/library/msgs/sw.msg
new file mode 100644
index 0000000..b888b43
--- /dev/null
+++ b/library/msgs/sw.msg
@@ -0,0 +1,49 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset sw DAYS_OF_WEEK_ABBREV [list \
+ "Jpi"\
+ "Jtt"\
+ "Jnn"\
+ "Jtn"\
+ "Alh"\
+ "Iju"\
+ "Jmo"]
+ ::msgcat::mcset sw DAYS_OF_WEEK_FULL [list \
+ "Jumapili"\
+ "Jumatatu"\
+ "Jumanne"\
+ "Jumatano"\
+ "Alhamisi"\
+ "Ijumaa"\
+ "Jumamosi"]
+ ::msgcat::mcset sw MONTHS_ABBREV [list \
+ "Jan"\
+ "Feb"\
+ "Mar"\
+ "Apr"\
+ "Mei"\
+ "Jun"\
+ "Jul"\
+ "Ago"\
+ "Sep"\
+ "Okt"\
+ "Nov"\
+ "Des"\
+ ""]
+ ::msgcat::mcset sw MONTHS_FULL [list \
+ "Januari"\
+ "Februari"\
+ "Machi"\
+ "Aprili"\
+ "Mei"\
+ "Juni"\
+ "Julai"\
+ "Agosti"\
+ "Septemba"\
+ "Oktoba"\
+ "Novemba"\
+ "Desemba"\
+ ""]
+ ::msgcat::mcset sw BCE "KK"
+ ::msgcat::mcset sw CE "BK"
+}
diff --git a/library/msgs/ta.msg b/library/msgs/ta.msg
new file mode 100644
index 0000000..4abb90c
--- /dev/null
+++ b/library/msgs/ta.msg
@@ -0,0 +1,39 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ta DAYS_OF_WEEK_FULL [list \
+ "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1"\
+ "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd"\
+ "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd"\
+ "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd"\
+ "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd"\
+ "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf"\
+ "\u0b9a\u0ba9\u0bbf"]
+ ::msgcat::mcset ta MONTHS_ABBREV [list \
+ "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf"\
+ "\u0baa\u0bc6\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf"\
+ "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd"\
+ "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd"\
+ "\u0bae\u0bc7"\
+ "\u0b9c\u0bc2\u0ba9\u0bcd"\
+ "\u0b9c\u0bc2\u0bb2\u0bc8"\
+ "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd"\
+ "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd"\
+ "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd"\
+ "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd"\
+ "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcdr"]
+ ::msgcat::mcset ta MONTHS_FULL [list \
+ "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf"\
+ "\u0baa\u0bc6\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf"\
+ "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd"\
+ "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd"\
+ "\u0bae\u0bc7"\
+ "\u0b9c\u0bc2\u0ba9\u0bcd"\
+ "\u0b9c\u0bc2\u0bb2\u0bc8"\
+ "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd"\
+ "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd"\
+ "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd"\
+ "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd"\
+ "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcdr"]
+ ::msgcat::mcset ta AM "\u0b95\u0bbf\u0bae\u0bc1"
+ ::msgcat::mcset ta PM "\u0b95\u0bbf\u0baa\u0bbf"
+}
diff --git a/library/msgs/ta_in.msg b/library/msgs/ta_in.msg
new file mode 100644
index 0000000..24590ac
--- /dev/null
+++ b/library/msgs/ta_in.msg
@@ -0,0 +1,6 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset ta_IN DATE_FORMAT "%d %M %Y"
+ ::msgcat::mcset ta_IN TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset ta_IN DATE_TIME_FORMAT "%d %M %Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/te.msg b/library/msgs/te.msg
new file mode 100644
index 0000000..6111473
--- /dev/null
+++ b/library/msgs/te.msg
@@ -0,0 +1,47 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset te DAYS_OF_WEEK_ABBREV [list \
+ "\u0c06\u0c26\u0c3f"\
+ "\u0c38\u0c4b\u0c2e"\
+ "\u0c2e\u0c02\u0c17\u0c33"\
+ "\u0c2c\u0c41\u0c27"\
+ "\u0c17\u0c41\u0c30\u0c41"\
+ "\u0c36\u0c41\u0c15\u0c4d\u0c30"\
+ "\u0c36\u0c28\u0c3f"]
+ ::msgcat::mcset te DAYS_OF_WEEK_FULL [list \
+ "\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02"\
+ "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02"\
+ "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02"\
+ "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02"\
+ "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02"\
+ "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02"\
+ "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02"]
+ ::msgcat::mcset te MONTHS_ABBREV [list \
+ "\u0c1c\u0c28\u0c35\u0c30\u0c3f"\
+ "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f"\
+ "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f"\
+ "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d"\
+ "\u0c2e\u0c47"\
+ "\u0c1c\u0c42\u0c28\u0c4d"\
+ "\u0c1c\u0c42\u0c32\u0c48"\
+ "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41"\
+ "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d"\
+ "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d"\
+ "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d"\
+ "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"\
+ ""]
+ ::msgcat::mcset te MONTHS_FULL [list \
+ "\u0c1c\u0c28\u0c35\u0c30\u0c3f"\
+ "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f"\
+ "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f"\
+ "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d"\
+ "\u0c2e\u0c47"\
+ "\u0c1c\u0c42\u0c28\u0c4d"\
+ "\u0c1c\u0c42\u0c32\u0c48"\
+ "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41"\
+ "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d"\
+ "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d"\
+ "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d"\
+ "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"\
+ ""]
+}
diff --git a/library/msgs/te_in.msg b/library/msgs/te_in.msg
new file mode 100644
index 0000000..61638b5
--- /dev/null
+++ b/library/msgs/te_in.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset te_IN AM "\u0c2a\u0c42\u0c30\u0c4d\u0c35\u0c3e\u0c39\u0c4d\u0c28"
+ ::msgcat::mcset te_IN PM "\u0c05\u0c2a\u0c30\u0c3e\u0c39\u0c4d\u0c28"
+ ::msgcat::mcset te_IN DATE_FORMAT "%d/%m/%Y"
+ ::msgcat::mcset te_IN TIME_FORMAT_12 "%I:%M:%S %P"
+ ::msgcat::mcset te_IN DATE_TIME_FORMAT "%d/%m/%Y %I:%M:%S %P %z"
+}
diff --git a/library/msgs/th.msg b/library/msgs/th.msg
new file mode 100644
index 0000000..7486c35
--- /dev/null
+++ b/library/msgs/th.msg
@@ -0,0 +1,54 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset th DAYS_OF_WEEK_ABBREV [list \
+ "\u0e2d\u0e32."\
+ "\u0e08."\
+ "\u0e2d."\
+ "\u0e1e."\
+ "\u0e1e\u0e24."\
+ "\u0e28."\
+ "\u0e2a."]
+ ::msgcat::mcset th DAYS_OF_WEEK_FULL [list \
+ "\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c"\
+ "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c"\
+ "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23"\
+ "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18"\
+ "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35"\
+ "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c"\
+ "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c"]
+ ::msgcat::mcset th MONTHS_ABBREV [list \
+ "\u0e21.\u0e04."\
+ "\u0e01.\u0e1e."\
+ "\u0e21\u0e35.\u0e04."\
+ "\u0e40\u0e21.\u0e22."\
+ "\u0e1e.\u0e04."\
+ "\u0e21\u0e34.\u0e22."\
+ "\u0e01.\u0e04."\
+ "\u0e2a.\u0e04."\
+ "\u0e01.\u0e22."\
+ "\u0e15.\u0e04."\
+ "\u0e1e.\u0e22."\
+ "\u0e18.\u0e04."\
+ ""]
+ ::msgcat::mcset th MONTHS_FULL [list \
+ "\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21"\
+ "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c"\
+ "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21"\
+ "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19"\
+ "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21"\
+ "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19"\
+ "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21"\
+ "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21"\
+ "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19"\
+ "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21"\
+ "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19"\
+ "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"\
+ ""]
+ ::msgcat::mcset th BCE "\u0e25\u0e17\u0e35\u0e48"
+ ::msgcat::mcset th CE "\u0e04.\u0e28."
+ ::msgcat::mcset th AM "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"
+ ::msgcat::mcset th PM "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"
+ ::msgcat::mcset th DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset th TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset th DATE_TIME_FORMAT "%e/%m/%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/tr.msg b/library/msgs/tr.msg
new file mode 100644
index 0000000..7b2ecf9
--- /dev/null
+++ b/library/msgs/tr.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset tr DAYS_OF_WEEK_ABBREV [list \
+ "Paz"\
+ "Pzt"\
+ "Sal"\
+ "\u00c7ar"\
+ "Per"\
+ "Cum"\
+ "Cmt"]
+ ::msgcat::mcset tr DAYS_OF_WEEK_FULL [list \
+ "Pazar"\
+ "Pazartesi"\
+ "Sal\u0131"\
+ "\u00c7ar\u015famba"\
+ "Per\u015fembe"\
+ "Cuma"\
+ "Cumartesi"]
+ ::msgcat::mcset tr MONTHS_ABBREV [list \
+ "Oca"\
+ "\u015eub"\
+ "Mar"\
+ "Nis"\
+ "May"\
+ "Haz"\
+ "Tem"\
+ "A\u011fu"\
+ "Eyl"\
+ "Eki"\
+ "Kas"\
+ "Ara"\
+ ""]
+ ::msgcat::mcset tr MONTHS_FULL [list \
+ "Ocak"\
+ "\u015eubat"\
+ "Mart"\
+ "Nisan"\
+ "May\u0131s"\
+ "Haziran"\
+ "Temmuz"\
+ "A\u011fustos"\
+ "Eyl\u00fcl"\
+ "Ekim"\
+ "Kas\u0131m"\
+ "Aral\u0131k"\
+ ""]
+ ::msgcat::mcset tr DATE_FORMAT "%d.%m.%Y"
+ ::msgcat::mcset tr TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset tr DATE_TIME_FORMAT "%d.%m.%Y %H:%M:%S %z"
+}
diff --git a/library/msgs/uk.msg b/library/msgs/uk.msg
new file mode 100644
index 0000000..7d4c64a
--- /dev/null
+++ b/library/msgs/uk.msg
@@ -0,0 +1,52 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset uk DAYS_OF_WEEK_ABBREV [list \
+ "\u043d\u0434"\
+ "\u043f\u043d"\
+ "\u0432\u0442"\
+ "\u0441\u0440"\
+ "\u0447\u0442"\
+ "\u043f\u0442"\
+ "\u0441\u0431"]
+ ::msgcat::mcset uk DAYS_OF_WEEK_FULL [list \
+ "\u043d\u0435\u0434\u0456\u043b\u044f"\
+ "\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a"\
+ "\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a"\
+ "\u0441\u0435\u0440\u0435\u0434\u0430"\
+ "\u0447\u0435\u0442\u0432\u0435\u0440"\
+ "\u043f'\u044f\u0442\u043d\u0438\u0446\u044f"\
+ "\u0441\u0443\u0431\u043e\u0442\u0430"]
+ ::msgcat::mcset uk MONTHS_ABBREV [list \
+ "\u0441\u0456\u0447"\
+ "\u043b\u044e\u0442"\
+ "\u0431\u0435\u0440"\
+ "\u043a\u0432\u0456\u0442"\
+ "\u0442\u0440\u0430\u0432"\
+ "\u0447\u0435\u0440\u0432"\
+ "\u043b\u0438\u043f"\
+ "\u0441\u0435\u0440\u043f"\
+ "\u0432\u0435\u0440"\
+ "\u0436\u043e\u0432\u0442"\
+ "\u043b\u0438\u0441\u0442"\
+ "\u0433\u0440\u0443\u0434"\
+ ""]
+ ::msgcat::mcset uk MONTHS_FULL [list \
+ "\u0441\u0456\u0447\u043d\u044f"\
+ "\u043b\u044e\u0442\u043e\u0433\u043e"\
+ "\u0431\u0435\u0440\u0435\u0437\u043d\u044f"\
+ "\u043a\u0432\u0456\u0442\u043d\u044f"\
+ "\u0442\u0440\u0430\u0432\u043d\u044f"\
+ "\u0447\u0435\u0440\u0432\u043d\u044f"\
+ "\u043b\u0438\u043f\u043d\u044f"\
+ "\u0441\u0435\u0440\u043f\u043d\u044f"\
+ "\u0432\u0435\u0440\u0435\u0441\u043d\u044f"\
+ "\u0436\u043e\u0432\u0442\u043d\u044f"\
+ "\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430"\
+ "\u0433\u0440\u0443\u0434\u043d\u044f"\
+ ""]
+ ::msgcat::mcset uk BCE "\u0434\u043e \u043d.\u0435."
+ ::msgcat::mcset uk CE "\u043f\u0456\u0441\u043b\u044f \u043d.\u0435."
+ ::msgcat::mcset uk DATE_FORMAT "%e/%m/%Y"
+ ::msgcat::mcset uk TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset uk DATE_TIME_FORMAT "%e/%m/%Y %k:%M:%S %z"
+}
diff --git a/library/msgs/vi.msg b/library/msgs/vi.msg
new file mode 100644
index 0000000..c98b2a6
--- /dev/null
+++ b/library/msgs/vi.msg
@@ -0,0 +1,50 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset vi DAYS_OF_WEEK_ABBREV [list \
+ "Th 2"\
+ "Th 3"\
+ "Th 4"\
+ "Th 5"\
+ "Th 6"\
+ "Th 7"\
+ "CN"]
+ ::msgcat::mcset vi DAYS_OF_WEEK_FULL [list \
+ "Th\u01b0\u0301 hai"\
+ "Th\u01b0\u0301 ba"\
+ "Th\u01b0\u0301 t\u01b0"\
+ "Th\u01b0\u0301 n\u0103m"\
+ "Th\u01b0\u0301 s\u00e1u"\
+ "Th\u01b0\u0301 ba\u0309y"\
+ "Chu\u0309 nh\u00e2\u0323t"]
+ ::msgcat::mcset vi MONTHS_ABBREV [list \
+ "Thg 1"\
+ "Thg 2"\
+ "Thg 3"\
+ "Thg 4"\
+ "Thg 5"\
+ "Thg 6"\
+ "Thg 7"\
+ "Thg 8"\
+ "Thg 9"\
+ "Thg 10"\
+ "Thg 11"\
+ "Thg 12"\
+ ""]
+ ::msgcat::mcset vi MONTHS_FULL [list \
+ "Th\u00e1ng m\u00f4\u0323t"\
+ "Th\u00e1ng hai"\
+ "Th\u00e1ng ba"\
+ "Th\u00e1ng t\u01b0"\
+ "Th\u00e1ng n\u0103m"\
+ "Th\u00e1ng s\u00e1u"\
+ "Th\u00e1ng ba\u0309y"\
+ "Th\u00e1ng t\u00e1m"\
+ "Th\u00e1ng ch\u00edn"\
+ "Th\u00e1ng m\u01b0\u01a1\u0300i"\
+ "Th\u00e1ng m\u01b0\u01a1\u0300i m\u00f4\u0323t"\
+ "Th\u00e1ng m\u01b0\u01a1\u0300i hai"\
+ ""]
+ ::msgcat::mcset vi DATE_FORMAT "%d %b %Y"
+ ::msgcat::mcset vi TIME_FORMAT "%H:%M:%S"
+ ::msgcat::mcset vi DATE_TIME_FORMAT "%d %b %Y %H:%M:%S %z"
+}
diff --git a/library/msgs/zh.msg b/library/msgs/zh.msg
new file mode 100644
index 0000000..b799a32
--- /dev/null
+++ b/library/msgs/zh.msg
@@ -0,0 +1,55 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset zh DAYS_OF_WEEK_ABBREV [list \
+ "\u661f\u671f\u65e5"\
+ "\u661f\u671f\u4e00"\
+ "\u661f\u671f\u4e8c"\
+ "\u661f\u671f\u4e09"\
+ "\u661f\u671f\u56db"\
+ "\u661f\u671f\u4e94"\
+ "\u661f\u671f\u516d"]
+ ::msgcat::mcset zh DAYS_OF_WEEK_FULL [list \
+ "\u661f\u671f\u65e5"\
+ "\u661f\u671f\u4e00"\
+ "\u661f\u671f\u4e8c"\
+ "\u661f\u671f\u4e09"\
+ "\u661f\u671f\u56db"\
+ "\u661f\u671f\u4e94"\
+ "\u661f\u671f\u516d"]
+ ::msgcat::mcset zh MONTHS_ABBREV [list \
+ "\u4e00\u6708"\
+ "\u4e8c\u6708"\
+ "\u4e09\u6708"\
+ "\u56db\u6708"\
+ "\u4e94\u6708"\
+ "\u516d\u6708"\
+ "\u4e03\u6708"\
+ "\u516b\u6708"\
+ "\u4e5d\u6708"\
+ "\u5341\u6708"\
+ "\u5341\u4e00\u6708"\
+ "\u5341\u4e8c\u6708"\
+ ""]
+ ::msgcat::mcset zh MONTHS_FULL [list \
+ "\u4e00\u6708"\
+ "\u4e8c\u6708"\
+ "\u4e09\u6708"\
+ "\u56db\u6708"\
+ "\u4e94\u6708"\
+ "\u516d\u6708"\
+ "\u4e03\u6708"\
+ "\u516b\u6708"\
+ "\u4e5d\u6708"\
+ "\u5341\u6708"\
+ "\u5341\u4e00\u6708"\
+ "\u5341\u4e8c\u6708"\
+ ""]
+ ::msgcat::mcset zh BCE "\u516c\u5143\u524d"
+ ::msgcat::mcset zh CE "\u516c\u5143"
+ ::msgcat::mcset zh AM "\u4e0a\u5348"
+ ::msgcat::mcset zh PM "\u4e0b\u5348"
+ ::msgcat::mcset zh LOCALE_NUMERALS "\u3007 \u4e00 \u4e8c \u4e09 \u56db \u4e94 \u516d \u4e03 \u516b \u4e5d \u5341 \u5341\u4e00 \u5341\u4e8c \u5341\u4e09 \u5341\u56db \u5341\u4e94 \u5341\u516d \u5341\u4e03 \u5341\u516b \u5341\u4e5d \u4e8c\u5341 \u5eff\u4e00 \u5eff\u4e8c \u5eff\u4e09 \u5eff\u56db \u5eff\u4e94 \u5eff\u516d \u5eff\u4e03 \u5eff\u516b \u5eff\u4e5d \u4e09\u5341 \u5345\u4e00 \u5345\u4e8c \u5345\u4e09 \u5345\u56db \u5345\u4e94 \u5345\u516d \u5345\u4e03 \u5345\u516b \u5345\u4e5d \u56db\u5341 \u56db\u5341\u4e00 \u56db\u5341\u4e8c \u56db\u5341\u4e09 \u56db\u5341\u56db \u56db\u5341\u4e94 \u56db\u5341\u516d \u56db\u5341\u4e03 \u56db\u5341\u516b \u56db\u5341\u4e5d \u4e94\u5341 \u4e94\u5341\u4e00 \u4e94\u5341\u4e8c \u4e94\u5341\u4e09 \u4e94\u5341\u56db \u4e94\u5341\u4e94 \u4e94\u5341\u516d \u4e94\u5341\u4e03 \u4e94\u5341\u516b \u4e94\u5341\u4e5d \u516d\u5341 \u516d\u5341\u4e00 \u516d\u5341\u4e8c \u516d\u5341\u4e09 \u516d\u5341\u56db \u516d\u5341\u4e94 \u516d\u5341\u516d \u516d\u5341\u4e03 \u516d\u5341\u516b \u516d\u5341\u4e5d \u4e03\u5341 \u4e03\u5341\u4e00 \u4e03\u5341\u4e8c \u4e03\u5341\u4e09 \u4e03\u5341\u56db \u4e03\u5341\u4e94 \u4e03\u5341\u516d \u4e03\u5341\u4e03 \u4e03\u5341\u516b \u4e03\u5341\u4e5d \u516b\u5341 \u516b\u5341\u4e00 \u516b\u5341\u4e8c \u516b\u5341\u4e09 \u516b\u5341\u56db \u516b\u5341\u4e94 \u516b\u5341\u516d \u516b\u5341\u4e03 \u516b\u5341\u516b \u516b\u5341\u4e5d \u4e5d\u5341 \u4e5d\u5341\u4e00 \u4e5d\u5341\u4e8c \u4e5d\u5341\u4e09 \u4e5d\u5341\u56db \u4e5d\u5341\u4e94 \u4e5d\u5341\u516d \u4e5d\u5341\u4e03 \u4e5d\u5341\u516b \u4e5d\u5341\u4e5d"
+ ::msgcat::mcset zh LOCALE_DATE_FORMAT "\u516c\u5143%Y\u5e74%B%Od\u65e5"
+ ::msgcat::mcset zh LOCALE_TIME_FORMAT "%OH\u65f6%OM\u5206%OS\u79d2"
+ ::msgcat::mcset zh LOCALE_DATE_TIME_FORMAT "%A %Y\u5e74%B%Od\u65e5%OH\u65f6%OM\u5206%OS\u79d2 %z"
+}
diff --git a/library/msgs/zh_cn.msg b/library/msgs/zh_cn.msg
new file mode 100644
index 0000000..d62ce77
--- /dev/null
+++ b/library/msgs/zh_cn.msg
@@ -0,0 +1,7 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset zh_CN DATE_FORMAT "%Y-%m-%e"
+ ::msgcat::mcset zh_CN TIME_FORMAT "%k:%M:%S"
+ ::msgcat::mcset zh_CN TIME_FORMAT_12 "%P%I\u65f6%M\u5206%S\u79d2"
+ ::msgcat::mcset zh_CN DATE_TIME_FORMAT "%Y-%m-%e %k:%M:%S %z"
+}
diff --git a/library/msgs/zh_hk.msg b/library/msgs/zh_hk.msg
new file mode 100644
index 0000000..badb1dd
--- /dev/null
+++ b/library/msgs/zh_hk.msg
@@ -0,0 +1,28 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset zh_HK DAYS_OF_WEEK_ABBREV [list \
+ "\u65e5"\
+ "\u4e00"\
+ "\u4e8c"\
+ "\u4e09"\
+ "\u56db"\
+ "\u4e94"\
+ "\u516d"]
+ ::msgcat::mcset zh_HK MONTHS_ABBREV [list \
+ "1\u6708"\
+ "2\u6708"\
+ "3\u6708"\
+ "4\u6708"\
+ "5\u6708"\
+ "6\u6708"\
+ "7\u6708"\
+ "8\u6708"\
+ "9\u6708"\
+ "10\u6708"\
+ "11\u6708"\
+ "12\u6708"\
+ ""]
+ ::msgcat::mcset zh_HK DATE_FORMAT "%Y\u5e74%m\u6708%e\u65e5"
+ ::msgcat::mcset zh_HK TIME_FORMAT_12 "%P%I:%M:%S"
+ ::msgcat::mcset zh_HK DATE_TIME_FORMAT "%Y\u5e74%m\u6708%e\u65e5 %P%I:%M:%S %z"
+}
diff --git a/library/msgs/zh_sg.msg b/library/msgs/zh_sg.msg
new file mode 100644
index 0000000..a2f3e39
--- /dev/null
+++ b/library/msgs/zh_sg.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset zh_SG AM "\u4e0a\u5348"
+ ::msgcat::mcset zh_SG PM "\u4e2d\u5348"
+ ::msgcat::mcset zh_SG DATE_FORMAT "%d %B %Y"
+ ::msgcat::mcset zh_SG TIME_FORMAT_12 "%P %I:%M:%S"
+ ::msgcat::mcset zh_SG DATE_TIME_FORMAT "%d %B %Y %P %I:%M:%S %z"
+}
diff --git a/library/msgs/zh_tw.msg b/library/msgs/zh_tw.msg
new file mode 100644
index 0000000..e0796b1
--- /dev/null
+++ b/library/msgs/zh_tw.msg
@@ -0,0 +1,8 @@
+# created by tools/loadICU.tcl -- do not edit
+namespace eval ::tcl::clock {
+ ::msgcat::mcset zh_TW BCE "\u6c11\u570b\u524d"
+ ::msgcat::mcset zh_TW CE "\u6c11\u570b"
+ ::msgcat::mcset zh_TW DATE_FORMAT "%Y/%m/%e"
+ ::msgcat::mcset zh_TW TIME_FORMAT_12 "%P %I:%M:%S"
+ ::msgcat::mcset zh_TW DATE_TIME_FORMAT "%Y/%m/%e %P %I:%M:%S %z"
+}
diff --git a/library/opt/optparse.tcl b/library/opt/optparse.tcl
index 289a39a..fc77fa1 100644
--- a/library/opt/optparse.tcl
+++ b/library/opt/optparse.tcl
@@ -7,10 +7,11 @@
# of Tcl. It is NOT supported and you should not rely
# on it. If your code does rely on this package you
# may directly incorporate this code into your application.
-#
-# RCS: @(#) $Id: optparse.tcl,v 1.2 1999/04/16 00:47:18 stanton Exp $
-package provide opt 0.4.1
+package require Tcl 8.2
+# When this version number changes, update the pkgIndex.tcl file
+# and the install directory in the Makefiles.
+package provide opt 0.4.6
namespace eval ::tcl {
@@ -18,7 +19,7 @@ namespace eval ::tcl {
namespace export OptKeyRegister OptKeyDelete OptKeyError OptKeyParse \
OptProc OptProcArgGiven OptParse \
Lempty Lget \
- Lassign Lvarpop Lvarpop1 Lvarset Lvarincr Lfirst Lrest \
+ Lassign Lvarpop Lvarpop1 Lvarset Lvarincr \
SetMax SetMin
@@ -32,7 +33,7 @@ namespace eval ::tcl {
# Every OptProc give usage information on "procname -help".
# Try "tcl::OptParseTest -help" and "tcl::OptParseTest -a" and
# then other arguments.
- #
+ #
# example of 'valid' call:
# ::tcl::OptParseTest save -4 -pr 23 -libsok SybTcl\
# -nostatics false ch1
@@ -66,19 +67,12 @@ namespace eval ::tcl {
}
################### No User serviceable part below ! ###############
-# You should really not look any further :
-# The following is private unexported undocumented unblessed... code
-# time to hit "q" ;-) !
-
-# Hmmm... ok, you really want to know ?
-
-# You've been warned... Here it is...
# Array storing the parsed descriptions
- variable OptDesc;
- array set OptDesc {};
+ variable OptDesc
+ array set OptDesc {}
# Next potentially free key id (numeric)
- variable OptDescN 0;
+ variable OptDescN 0
# Inside algorithm/mechanism description:
# (not for the faint hearted ;-)
@@ -90,8 +84,8 @@ namespace eval ::tcl {
#
# The general structure of a "program" is
# notation (pseudo bnf like)
-# name :== definition defines "name" as being "definition"
-# { x y z } means list of x, y, and z
+# name :== definition defines "name" as being "definition"
+# { x y z } means list of x, y, and z
# x* means x repeated 0 or more time
# x+ means "x x*"
# x? means optionally x
@@ -109,14 +103,14 @@ namespace eval ::tcl {
# instruction :== single element list
#
# (the difference between singleStep and program is that \
-# llength [Lfirst $program] >= 2
+# llength [lindex $program 0] >= 2
# while
-# llength [Lfirst $singleStep] == 1
+# llength [lindex $singleStep 0] == 1
# )
#
# And for this application:
#
-# singleStep :== { instruction varname {hasBeenSet currentValue} type
+# singleStep :== { instruction varname {hasBeenSet currentValue} type
# typeArgs help }
# instruction :== "flags" | "value"
# type :== knowType | anyword
@@ -149,54 +143,54 @@ namespace eval ::tcl {
# generate a unused keyid if not given
#
proc ::tcl::OptKeyRegister {desc {key ""}} {
- variable OptDesc;
- variable OptDescN;
- if {[string compare $key ""] == 0} {
+ variable OptDesc
+ variable OptDescN
+ if {[string equal $key ""]} {
# in case a key given to us as a parameter was a number
while {[info exists OptDesc($OptDescN)]} {incr OptDescN}
- set key $OptDescN;
- incr OptDescN;
+ set key $OptDescN
+ incr OptDescN
}
# program counter
- set program [list [list "P" 1]];
+ set program [list [list "P" 1]]
# are we processing flags (which makes a single program step)
- set inflags 0;
+ set inflags 0
- set state {};
+ set state {}
# flag used to detect that we just have a single (flags set) subprogram.
- set empty 1;
+ set empty 1
foreach item $desc {
if {$state == "args"} {
# more items after 'args'...
- return -code error "'args' special argument must be the last one";
+ return -code error "'args' special argument must be the last one"
}
- set res [OptNormalizeOne $item];
- set state [Lfirst $res];
+ set res [OptNormalizeOne $item]
+ set state [lindex $res 0]
if {$inflags} {
if {$state == "flags"} {
# add to 'subprogram'
- lappend flagsprg $res;
+ lappend flagsprg $res
} else {
# put in the flags
# structure for flag programs items is a list of
# {subprgcounter {prg flag 1} {prg flag 2} {...}}
- lappend program $flagsprg;
+ lappend program $flagsprg
# put the other regular stuff
- lappend program $res;
- set inflags 0;
- set empty 0;
+ lappend program $res
+ set inflags 0
+ set empty 0
}
} else {
if {$state == "flags"} {
- set inflags 1;
+ set inflags 1
# sub program counter + first sub program
- set flagsprg [list [list "P" 1] $res];
+ set flagsprg [list [list "P" 1] $res]
} else {
- lappend program $res;
- set empty 0;
+ lappend program $res
+ set empty 0
}
}
}
@@ -204,32 +198,32 @@ proc ::tcl::OptKeyRegister {desc {key ""}} {
if {$empty} {
# We just have the subprogram, optimize and remove
# unneeded level:
- set program $flagsprg;
+ set program $flagsprg
} else {
- lappend program $flagsprg;
+ lappend program $flagsprg
}
}
- set OptDesc($key) $program;
+ set OptDesc($key) $program
- return $key;
+ return $key
}
#
# Free the storage for that given key
#
proc ::tcl::OptKeyDelete {key} {
- variable OptDesc;
- unset OptDesc($key);
+ variable OptDesc
+ unset OptDesc($key)
}
# Get the parsed description stored under the given key.
proc OptKeyGetDesc {descKey} {
- variable OptDesc;
+ variable OptDesc
if {![info exists OptDesc($descKey)]} {
- return -code error "Unknown option description key \"$descKey\"";
+ return -code error "Unknown option description key \"$descKey\""
}
- set OptDesc($descKey);
+ set OptDesc($descKey)
}
# Parse entry point for ppl who don't want to register with a key,
@@ -238,10 +232,10 @@ proc ::tcl::OptKeyDelete {key} {
# as it is way faster or simply OptProc which does it all)
# Assign a temporary key, call OptKeyParse and then free the storage
proc ::tcl::OptParse {desc arglist} {
- set tempkey [OptKeyRegister $desc];
- set ret [catch {uplevel [list ::tcl::OptKeyParse $tempkey $arglist]} res];
- OptKeyDelete $tempkey;
- return -code $ret $res;
+ set tempkey [OptKeyRegister $desc]
+ set ret [catch {uplevel 1 [list ::tcl::OptKeyParse $tempkey $arglist]} res]
+ OptKeyDelete $tempkey
+ return -code $ret $res
}
# Helper function, replacement for proc that both
@@ -252,23 +246,22 @@ proc ::tcl::OptParse {desc arglist} {
# (the other will be sets to their default value)
# into local variable named "Args".
proc ::tcl::OptProc {name desc body} {
- set namespace [uplevel namespace current];
- if { ([string match $name "::*"])
- || ([string compare $namespace "::"]==0)} {
+ set namespace [uplevel 1 [list ::namespace current]]
+ if {[string match "::*" $name] || [string equal $namespace "::"]} {
# absolute name or global namespace, name is the key
- set key $name;
+ set key $name
} else {
# we are relative to some non top level namespace:
- set key "${namespace}::${name}";
+ set key "${namespace}::${name}"
}
- OptKeyRegister $desc $key;
- uplevel [list proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"];
- return $key;
+ OptKeyRegister $desc $key
+ uplevel 1 [list ::proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"]
+ return $key
}
# Check that a argument has been given
# assumes that "OptProc" has been used as it will check in "Args" list
proc ::tcl::OptProcArgGiven {argname} {
- upvar Args alist;
+ upvar Args alist
expr {[lsearch $alist $argname] >=0}
}
@@ -277,7 +270,7 @@ proc ::tcl::OptProcArgGiven {argname} {
# Return the instruction word/list of a given step/(sub)program
proc OptInstr {lst} {
- Lfirst $lst;
+ lindex $lst 0
}
# Is a (sub) program or a plain instruction ?
proc OptIsPrg {lst} {
@@ -285,7 +278,7 @@ proc ::tcl::OptProcArgGiven {argname} {
}
# Is this instruction a program counter or a real instr
proc OptIsCounter {item} {
- expr {[Lfirst $item]=="P"}
+ expr {[lindex $item 0]=="P"}
}
# Current program counter (2nd word of first word)
proc OptGetPrgCounter {lst} {
@@ -293,67 +286,67 @@ proc ::tcl::OptProcArgGiven {argname} {
}
# Current program counter (2nd word of first word)
proc OptSetPrgCounter {lstName newValue} {
- upvar $lstName lst;
- set lst [lreplace $lst 0 0 [concat "P" $newValue]];
+ upvar $lstName lst
+ set lst [lreplace $lst 0 0 [concat "P" $newValue]]
}
# returns a list of currently selected items.
proc OptSelection {lst} {
- set res {};
- foreach idx [lrange [Lfirst $lst] 1 end] {
- lappend res [Lget $lst $idx];
+ set res {}
+ foreach idx [lrange [lindex $lst 0] 1 end] {
+ lappend res [Lget $lst $idx]
}
- return $res;
+ return $res
}
# Advance to next description
proc OptNextDesc {descName} {
- uplevel [list Lvarincr $descName {0 1}];
+ uplevel 1 [list Lvarincr $descName {0 1}]
}
# Get the current description, eventually descend
proc OptCurDesc {descriptions} {
- lindex $descriptions [OptGetPrgCounter $descriptions];
+ lindex $descriptions [OptGetPrgCounter $descriptions]
}
# get the current description, eventually descend
# through sub programs as needed.
proc OptCurDescFinal {descriptions} {
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
# Descend untill we get the actual item and not a sub program
while {[OptIsPrg $item]} {
- set item [OptCurDesc $item];
+ set item [OptCurDesc $item]
}
- return $item;
+ return $item
}
# Current final instruction adress
proc OptCurAddr {descriptions {start {}}} {
- set adress [OptGetPrgCounter $descriptions];
- lappend start $adress;
- set item [lindex $descriptions $adress];
+ set adress [OptGetPrgCounter $descriptions]
+ lappend start $adress
+ set item [lindex $descriptions $adress]
if {[OptIsPrg $item]} {
- return [OptCurAddr $item $start];
+ return [OptCurAddr $item $start]
} else {
- return $start;
+ return $start
}
}
# Set the value field of the current instruction
proc OptCurSetValue {descriptionsName value} {
upvar $descriptionsName descriptions
# get the current item full adress
- set adress [OptCurAddr $descriptions];
+ set adress [OptCurAddr $descriptions]
# use the 3th field of the item (see OptValue / OptNewInst)
lappend adress 2
- Lvarset descriptions $adress [list 1 $value];
+ Lvarset descriptions $adress [list 1 $value]
# ^hasBeenSet flag
}
# empty state means done/paste the end of the program
proc OptState {item} {
- Lfirst $item
+ lindex $item 0
}
-
+
# current state
proc OptCurState {descriptions} {
- OptState [OptCurDesc $descriptions];
+ OptState [OptCurDesc $descriptions]
}
#######
@@ -361,11 +354,11 @@ proc ::tcl::OptProcArgGiven {argname} {
# Returns the argument that has to be processed now
proc OptCurrentArg {lst} {
- Lfirst $lst;
+ lindex $lst 0
}
# Advance to next argument
proc OptNextArg {argsName} {
- uplevel [list Lvarpop1 $argsName];
+ uplevel 1 [list Lvarpop1 $argsName]
}
#######
@@ -377,49 +370,49 @@ proc ::tcl::OptProcArgGiven {argname} {
# eventually eat all the arguments.
proc OptDoAll {descriptionsName argumentsName} {
upvar $descriptionsName descriptions
- upvar $argumentsName arguments;
-# puts "entered DoAll";
+ upvar $argumentsName arguments
+# puts "entered DoAll"
# Nb: the places where "state" can be set are tricky to figure
# because DoOne sets the state to flagsValue and return -continue
# when needed...
- set state [OptCurState $descriptions];
+ set state [OptCurState $descriptions]
# We'll exit the loop in "OptDoOne" or when state is empty.
while 1 {
- set curitem [OptCurDesc $descriptions];
+ set curitem [OptCurDesc $descriptions]
# Do subprograms if needed, call ourselves on the sub branch
while {[OptIsPrg $curitem]} {
OptDoAll curitem arguments
-# puts "done DoAll sub";
- # Insert back the results in current tree;
+# puts "done DoAll sub"
+ # Insert back the results in current tree
Lvarset1nc descriptions [OptGetPrgCounter $descriptions]\
- $curitem;
- OptNextDesc descriptions;
- set curitem [OptCurDesc $descriptions];
- set state [OptCurState $descriptions];
+ $curitem
+ OptNextDesc descriptions
+ set curitem [OptCurDesc $descriptions]
+ set state [OptCurState $descriptions]
}
-# puts "state = \"$state\" - arguments=($arguments)";
+# puts "state = \"$state\" - arguments=($arguments)"
if {[Lempty $state]} {
# Nothing left to do, we are done in this branch:
- break;
+ break
}
# The following statement can make us terminate/continue
# as it use return -code {break, continue, return and error}
# codes
- OptDoOne descriptions state arguments;
+ OptDoOne descriptions state arguments
# If we are here, no special return code where issued,
# we'll step to next instruction :
-# puts "new state = \"$state\"";
- OptNextDesc descriptions;
- set state [OptCurState $descriptions];
+# puts "new state = \"$state\""
+ OptNextDesc descriptions
+ set state [OptCurState $descriptions]
}
}
# Process one step for the state machine,
# eventually consuming the current argument.
proc OptDoOne {descriptionsName stateName argumentsName} {
- upvar $argumentsName arguments;
- upvar $descriptionsName descriptions;
- upvar $stateName state;
+ upvar $argumentsName arguments
+ upvar $descriptionsName descriptions
+ upvar $stateName state
# the special state/instruction "args" eats all
# the remaining args (if any)
@@ -427,27 +420,27 @@ proc ::tcl::OptProcArgGiven {argname} {
if {![Lempty $arguments]} {
# If there is no additional arguments, leave the default value
# in.
- OptCurSetValue descriptions $arguments;
- set arguments {};
+ OptCurSetValue descriptions $arguments
+ set arguments {}
}
# puts "breaking out ('args' state: consuming every reminding args)"
- return -code break;
+ return -code break
}
if {[Lempty $arguments]} {
if {$state == "flags"} {
# no argument and no flags : we're done
-# puts "returning to previous (sub)prg (no more args)";
- return -code return;
+# puts "returning to previous (sub)prg (no more args)"
+ return -code return
} elseif {$state == "optValue"} {
set state next; # not used, for debug only
# go to next state
- return ;
+ return
} else {
- return -code error [OptMissingValue $descriptions];
+ return -code error [OptMissingValue $descriptions]
}
} else {
- set arg [OptCurrentArg $arguments];
+ set arg [OptCurrentArg $arguments]
}
switch $state {
@@ -457,62 +450,62 @@ proc ::tcl::OptProcArgGiven {argname} {
# Still a flag ?
if {![OptIsFlag $arg]} {
# don't consume the argument, return to previous prg
- return -code return;
+ return -code return
}
# consume the flag
- OptNextArg arguments;
- if {[string compare "--" $arg] == 0} {
+ OptNextArg arguments
+ if {[string equal "--" $arg]} {
# return from 'flags' state
- return -code return;
+ return -code return
}
- set hits [OptHits descriptions $arg];
+ set hits [OptHits descriptions $arg]
if {$hits > 1} {
return -code error [OptAmbigous $descriptions $arg]
} elseif {$hits == 0} {
return -code error [OptFlagUsage $descriptions $arg]
}
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
if {[OptNeedValue $item]} {
# we need a value, next state is
- set state flagValue;
+ set state flagValue
} else {
- OptCurSetValue descriptions 1;
+ OptCurSetValue descriptions 1
}
# continue
- return -code continue;
+ return -code continue
}
flagValue -
value {
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
# Test the values against their required type
if {[catch {OptCheckType $arg\
[OptType $item] [OptTypeArgs $item]} val]} {
return -code error [OptBadValue $item $arg $val]
}
# consume the value
- OptNextArg arguments;
+ OptNextArg arguments
# set the value
- OptCurSetValue descriptions $val;
+ OptCurSetValue descriptions $val
# go to next state
if {$state == "flagValue"} {
set state flags
- return -code continue;
+ return -code continue
} else {
set state next; # not used, for debug only
return ; # will go on next step
}
}
optValue {
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
# Test the values against their required type
if {![catch {OptCheckType $arg\
[OptType $item] [OptTypeArgs $item]} val]} {
# right type, so :
# consume the value
- OptNextArg arguments;
+ OptNextArg arguments
# set the value
- OptCurSetValue descriptions $val;
+ OptCurSetValue descriptions $val
}
# go to next state
set state next; # not used, for debug only
@@ -523,39 +516,39 @@ proc ::tcl::OptProcArgGiven {argname} {
# state as been entered !
return -code error "Bug! unknown state in DoOne \"$state\"\
(prg counter [OptGetPrgCounter $descriptions]:\
- [OptCurDesc $descriptions])";
+ [OptCurDesc $descriptions])"
}
# Parse the options given the key to previously registered description
# and arguments list
proc ::tcl::OptKeyParse {descKey arglist} {
- set desc [OptKeyGetDesc $descKey];
+ set desc [OptKeyGetDesc $descKey]
# make sure -help always give usage
- if {[string compare "-help" [string tolower $arglist]] == 0} {
- return -code error [OptError "Usage information:" $desc 1];
+ if {[string equal -nocase "-help" $arglist]} {
+ return -code error [OptError "Usage information:" $desc 1]
}
- OptDoAll desc arglist;
+ OptDoAll desc arglist
if {![Lempty $arglist]} {
- return -code error [OptTooManyArgs $desc $arglist];
+ return -code error [OptTooManyArgs $desc $arglist]
}
-
+
# Analyse the result
# Walk through the tree:
- OptTreeVars $desc "#[expr {[info level]-1}]" ;
+ OptTreeVars $desc "#[expr {[info level]-1}]"
}
# determine string length for nice tabulated output
proc OptTreeVars {desc level {vnamesLst {}}} {
foreach item $desc {
- if {[OptIsCounter $item]} continue;
+ if {[OptIsCounter $item]} continue
if {[OptIsPrg $item]} {
- set vnamesLst [OptTreeVars $item $level $vnamesLst];
+ set vnamesLst [OptTreeVars $item $level $vnamesLst]
} else {
- set vname [OptVarName $item];
+ set vname [OptVarName $item]
upvar $level $vname var
if {[OptHasBeenSet $item]} {
# puts "adding $vname"
@@ -563,10 +556,10 @@ proc ::tcl::OptKeyParse {descKey arglist} {
# it is more usefull, for instance you can check that
# no flags at all was given with expr
# {![string match "*-*" $Args]}
- lappend vnamesLst [OptName $item];
- set var [OptValue $item];
+ lappend vnamesLst [OptName $item]
+ set var [OptValue $item]
} else {
- set var [OptDefaultValue $item];
+ set var [OptDefaultValue $item]
}
}
}
@@ -578,16 +571,16 @@ proc ::tcl::OptKeyParse {descKey arglist} {
# and emit an error if arg is not of the correct type
# otherwise returns the canonical value of that arg (ie 0/1 for booleans)
proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
-# puts "checking '$arg' against '$type' ($typeArgs)";
+# puts "checking '$arg' against '$type' ($typeArgs)"
# only types "any", "choice", and numbers can have leading "-"
switch -exact -- $type {
int {
- if {![regexp {^(-+)?[0-9]+$} $arg]} {
+ if {![string is integer -strict $arg]} {
error "not an integer"
}
- return $arg;
+ return $arg
}
float {
return [expr {double($arg)}]
@@ -595,32 +588,26 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
script -
list {
# if llength fail : malformed list
- if {[llength $arg]==0} {
- if {[OptIsFlag $arg]} {
- error "no values with leading -"
- }
+ if {[llength $arg]==0 && [OptIsFlag $arg]} {
+ error "no values with leading -"
}
- return $arg;
+ return $arg
}
boolean {
- if {![regexp -nocase {^(true|false|0|1)$} $arg]} {
+ if {![string is boolean -strict $arg]} {
error "non canonic boolean"
}
# convert true/false because expr/if is broken with "!,...
- if {$arg} {
- return 1
- } else {
- return 0
- }
+ return [expr {$arg ? 1 : 0}]
}
choice {
if {[lsearch -exact $typeArgs $arg] < 0} {
error "invalid choice"
}
- return $arg;
+ return $arg
}
any {
- return $arg;
+ return $arg
}
string -
default {
@@ -630,7 +617,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
return $arg
}
}
- return neverReached;
+ return neverReached
}
# internal utilities
@@ -638,36 +625,34 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
# returns the number of flags matching the given arg
# sets the (local) prg counter to the list of matches
proc OptHits {descName arg} {
- upvar $descName desc;
+ upvar $descName desc
set hits 0
set hitems {}
- set i 1;
+ set i 1
- set larg [string tolower $arg];
- set len [string length $larg];
- set last [expr {$len-1}];
+ set larg [string tolower $arg]
+ set len [string length $larg]
+ set last [expr {$len-1}]
foreach item [lrange $desc 1 end] {
set flag [OptName $item]
# lets try to match case insensitively
# (string length ought to be cheap)
- set lflag [string tolower $flag];
+ set lflag [string tolower $flag]
if {$len == [string length $lflag]} {
- if {[string compare $larg $lflag]==0} {
+ if {[string equal $larg $lflag]} {
# Exact match case
- OptSetPrgCounter desc $i;
- return 1;
- }
- } else {
- if {[string compare $larg [string range $lflag 0 $last]]==0} {
- lappend hitems $i;
- incr hits;
+ OptSetPrgCounter desc $i
+ return 1
}
+ } elseif {[string equal $larg [string range $lflag 0 $last]]} {
+ lappend hitems $i
+ incr hits
}
- incr i;
+ incr i
}
if {$hits} {
- OptSetPrgCounter desc $hitems;
+ OptSetPrgCounter desc $hitems
}
return $hits
}
@@ -675,31 +660,29 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
# Extract fields from the list structure:
proc OptName {item} {
- lindex $item 1;
+ lindex $item 1
}
- #
proc OptHasBeenSet {item} {
- Lget $item {2 0};
+ Lget $item {2 0}
}
- #
proc OptValue {item} {
- Lget $item {2 1};
+ Lget $item {2 1}
}
proc OptIsFlag {name} {
- string match "-*" $name;
+ string match "-*" $name
}
proc OptIsOpt {name} {
- string match {\?*} $name;
+ string match {\?*} $name
}
proc OptVarName {item} {
- set name [OptName $item];
+ set name [OptName $item]
if {[OptIsFlag $name]} {
- return [string range $name 1 end];
+ return [string range $name 1 end]
} elseif {[OptIsOpt $name]} {
- return [string trim $name "?"];
+ return [string trim $name "?"]
} else {
- return $name;
+ return $name
}
}
proc OptType {item} {
@@ -712,7 +695,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
lindex $item 5
}
proc OptNeedValue {item} {
- string compare [OptType $item] boolflag
+ expr {![string equal [OptType $item] boolflag]}
}
proc OptDefaultValue {item} {
set val [OptTypeArgs $item]
@@ -736,13 +719,13 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
proc OptOptUsage {item {what ""}} {
return -code error "invalid description format$what: $item\n\
should be a list of {varname|-flagname ?-type? ?defaultvalue?\
- ?helpstring?}";
+ ?helpstring?}"
}
# Generate a canonical form single instruction
proc OptNewInst {state varname type typeArgs help} {
- list $state $varname [list 0 {}] $type $typeArgs $help;
+ list $state $varname [list 0 {}] $type $typeArgs $help
# ^ ^
# | |
# hasBeenSet=+ +=currentValue
@@ -750,18 +733,18 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
# Translate one item to canonical form
proc OptNormalizeOne {item} {
- set lg [Lassign $item varname arg1 arg2 arg3];
-# puts "called optnormalizeone '$item' v=($varname), lg=$lg";
- set isflag [OptIsFlag $varname];
- set isopt [OptIsOpt $varname];
+ set lg [Lassign $item varname arg1 arg2 arg3]
+# puts "called optnormalizeone '$item' v=($varname), lg=$lg"
+ set isflag [OptIsFlag $varname]
+ set isopt [OptIsOpt $varname]
if {$isflag} {
- set state "flags";
+ set state "flags"
} elseif {$isopt} {
- set state "optValue";
- } elseif {[string compare $varname "args"]} {
- set state "value";
+ set state "optValue"
+ } elseif {![string equal $varname "args"]} {
+ set state "value"
} else {
- set state "args";
+ set state "args"
}
# apply 'smart' 'fuzzy' logic to try to make
@@ -771,16 +754,16 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
switch $lg {
1 {
if {$isflag} {
- return [OptNewInst $state $varname boolflag false ""];
+ return [OptNewInst $state $varname boolflag false ""]
} else {
- return [OptNewInst $state $varname any "" ""];
+ return [OptNewInst $state $varname any "" ""]
}
}
2 {
# varname default
# varname help
set type [OptGuessType $arg1]
- if {[string compare $type "string"] == 0} {
+ if {[string equal $type "string"]} {
if {$isflag} {
set type boolflag
set def false
@@ -793,20 +776,20 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
set help ""
set def $arg1
}
- return [OptNewInst $state $varname $type $def $help];
+ return [OptNewInst $state $varname $type $def $help]
}
3 {
# varname type value
# varname value comment
-
+
if {[regexp {^-(.+)$} $arg1 x type]} {
# flags/optValue as they are optional, need a "value",
# on the contrary, for a variable (non optional),
# default value is pointless, 'cept for choices :
if {$isflag || $isopt || ($type == "choice")} {
- return [OptNewInst $state $varname $type $arg2 ""];
+ return [OptNewInst $state $varname $type $arg2 ""]
} else {
- return [OptNewInst $state $varname $type "" $arg2];
+ return [OptNewInst $state $varname $type "" $arg2]
}
} else {
return [OptNewInst $state $varname\
@@ -815,26 +798,26 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
}
4 {
if {[regexp {^-(.+)$} $arg1 x type]} {
- return [OptNewInst $state $varname $type $arg2 $arg3];
+ return [OptNewInst $state $varname $type $arg2 $arg3]
} else {
- return -code error [OptOptUsage $item];
+ return -code error [OptOptUsage $item]
}
}
default {
- return -code error [OptOptUsage $item];
+ return -code error [OptOptUsage $item]
}
}
}
- # Auto magic lasy type determination
+ # Auto magic lazy type determination
proc OptGuessType {arg} {
- if {[regexp -nocase {^(true|false)$} $arg]} {
+ if { $arg == "true" || $arg == "false" } {
return boolean
}
- if {[regexp {^(-+)?[0-9]+$} $arg]} {
+ if {[string is integer -strict $arg]} {
return int
}
- if {![catch {expr {double($arg)}}]} {
+ if {[string is double -strict $arg]} {
return float
}
return string
@@ -846,7 +829,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
OptError "ambigous option \"$arg\", choose from:" [OptSelection $desc]
}
proc OptFlagUsage {desc arg} {
- OptError "bad flag \"$arg\", must be one of" $desc;
+ OptError "bad flag \"$arg\", must be one of" $desc
}
proc OptTooManyArgs {desc arguments} {
OptError "too many arguments (unexpected argument(s): $arguments),\
@@ -855,45 +838,45 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
}
proc OptParamType {item} {
if {[OptIsFlag $item]} {
- return "flag";
+ return "flag"
} else {
- return "parameter";
+ return "parameter"
}
}
proc OptBadValue {item arg {err {}}} {
-# puts "bad val err = \"$err\"";
+# puts "bad val err = \"$err\""
OptError "bad value \"$arg\" for [OptParamType $item]"\
[list $item]
}
proc OptMissingValue {descriptions} {
-# set item [OptCurDescFinal $descriptions];
- set item [OptCurDesc $descriptions];
+# set item [OptCurDescFinal $descriptions]
+ set item [OptCurDesc $descriptions]
OptError "no value given for [OptParamType $item] \"[OptName $item]\"\
(use -help for full usage) :"\
[list $item]
}
proc ::tcl::OptKeyError {prefix descKey {header 0}} {
- OptError $prefix [OptKeyGetDesc $descKey] $header;
+ OptError $prefix [OptKeyGetDesc $descKey] $header
}
# determine string length for nice tabulated output
proc OptLengths {desc nlName tlName dlName} {
- upvar $nlName nl;
- upvar $tlName tl;
- upvar $dlName dl;
+ upvar $nlName nl
+ upvar $tlName tl
+ upvar $dlName dl
foreach item $desc {
- if {[OptIsCounter $item]} continue;
+ if {[OptIsCounter $item]} continue
if {[OptIsPrg $item]} {
OptLengths $item nl tl dl
} else {
SetMax nl [string length [OptName $item]]
SetMax tl [string length [OptType $item]]
- set dv [OptTypeArgs $item];
+ set dv [OptTypeArgs $item]
if {[OptState $item] != "header"} {
- set dv "($dv)";
+ set dv "($dv)"
}
- set l [string length $dv];
+ set l [string length $dv]
# limit the space allocated to potentially big "choices"
if {([OptType $item] != "choice") || ($l<=12)} {
SetMax dl $l
@@ -907,22 +890,22 @@ proc ::tcl::OptKeyError {prefix descKey {header 0}} {
}
# output the tree
proc OptTree {desc nl tl dl} {
- set res "";
+ set res ""
foreach item $desc {
- if {[OptIsCounter $item]} continue;
+ if {[OptIsCounter $item]} continue
if {[OptIsPrg $item]} {
- append res [OptTree $item $nl $tl $dl];
+ append res [OptTree $item $nl $tl $dl]
} else {
- set dv [OptTypeArgs $item];
+ set dv [OptTypeArgs $item]
if {[OptState $item] != "header"} {
- set dv "($dv)";
+ set dv "($dv)"
}
- append res [format "\n %-*s %-*s %-*s %s" \
+ append res [string trimright [format "\n %-*s %-*s %-*s %s" \
$nl [OptName $item] $tl [OptType $item] \
- $dl $dv [OptHelp $item]]
+ $dl $dv [OptHelp $item]]]
}
}
- return $res;
+ return $res
}
# Give nice usage string
@@ -930,13 +913,13 @@ proc ::tcl::OptError {prefix desc {header 0}} {
# determine length
if {$header} {
# add faked instruction
- set h [list [OptNewInst header Var/FlagName Type Value Help]];
- lappend h [OptNewInst header ------------ ---- ----- ----];
- lappend h [OptNewInst header {( -help} "" "" {gives this help )}]
+ set h [list [OptNewInst header Var/FlagName Type Value Help]]
+ lappend h [OptNewInst header ------------ ---- ----- ----]
+ lappend h [OptNewInst header {(-help} "" "" {gives this help)}]
set desc [concat $h $desc]
}
OptLengths $desc nl tl dl
- # actually output
+ # actually output
return "$prefix[OptTree $desc $nl $tl $dl]"
}
@@ -960,113 +943,105 @@ proc ::tcl::Lempty {list} {
# Gets the value of one leaf of a lists tree
proc ::tcl::Lget {list indexLst} {
if {[llength $indexLst] <= 1} {
- return [lindex $list $indexLst];
+ return [lindex $list $indexLst]
}
- Lget [lindex $list [Lfirst $indexLst]] [Lrest $indexLst];
+ Lget [lindex $list [lindex $indexLst 0]] [lrange $indexLst 1 end]
}
# Sets the value of one leaf of a lists tree
# (we use the version that does not create the elements because
# it would be even slower... needs to be written in C !)
# (nb: there is a non trivial recursive problem with indexes 0,
# which appear because there is no difference between a list
-# of 1 element and 1 element alone : [list "a"] == "a" while
+# of 1 element and 1 element alone : [list "a"] == "a" while
# it should be {a} and [listp a] should be 0 while [listp {a b}] would be 1
# and [listp "a b"] maybe 0. listp does not exist either...)
proc ::tcl::Lvarset {listName indexLst newValue} {
- upvar $listName list;
+ upvar $listName list
if {[llength $indexLst] <= 1} {
- Lvarset1nc list $indexLst $newValue;
+ Lvarset1nc list $indexLst $newValue
} else {
- set idx [Lfirst $indexLst];
- set targetList [lindex $list $idx];
+ set idx [lindex $indexLst 0]
+ set targetList [lindex $list $idx]
# reduce refcount on targetList (not really usefull now,
# could be with optimizing compiler)
-# Lvarset1 list $idx {};
+# Lvarset1 list $idx {}
# recursively replace in targetList
- Lvarset targetList [Lrest $indexLst] $newValue;
+ Lvarset targetList [lrange $indexLst 1 end] $newValue
# put updated sub list back in the tree
- Lvarset1nc list $idx $targetList;
+ Lvarset1nc list $idx $targetList
}
}
# Set one cell to a value, eventually create all the needed elements
# (on level-1 of lists)
variable emptyList {}
proc ::tcl::Lvarset1 {listName index newValue} {
- upvar $listName list;
+ upvar $listName list
if {$index < 0} {return -code error "invalid negative index"}
- set lg [llength $list];
+ set lg [llength $list]
if {$index >= $lg} {
- variable emptyList;
+ variable emptyList
for {set i $lg} {$i<$index} {incr i} {
- lappend list $emptyList;
+ lappend list $emptyList
}
- lappend list $newValue;
+ lappend list $newValue
} else {
- set list [lreplace $list $index $index $newValue];
+ set list [lreplace $list $index $index $newValue]
}
}
# same as Lvarset1 but no bound checking / creation
proc ::tcl::Lvarset1nc {listName index newValue} {
- upvar $listName list;
- set list [lreplace $list $index $index $newValue];
+ upvar $listName list
+ set list [lreplace $list $index $index $newValue]
}
# Increments the value of one leaf of a lists tree
# (which must exists)
proc ::tcl::Lvarincr {listName indexLst {howMuch 1}} {
- upvar $listName list;
+ upvar $listName list
if {[llength $indexLst] <= 1} {
- Lvarincr1 list $indexLst $howMuch;
+ Lvarincr1 list $indexLst $howMuch
} else {
- set idx [Lfirst $indexLst];
- set targetList [lindex $list $idx];
+ set idx [lindex $indexLst 0]
+ set targetList [lindex $list $idx]
# reduce refcount on targetList
- Lvarset1nc list $idx {};
+ Lvarset1nc list $idx {}
# recursively replace in targetList
- Lvarincr targetList [Lrest $indexLst] $howMuch;
+ Lvarincr targetList [lrange $indexLst 1 end] $howMuch
# put updated sub list back in the tree
- Lvarset1nc list $idx $targetList;
+ Lvarset1nc list $idx $targetList
}
}
# Increments the value of one cell of a list
proc ::tcl::Lvarincr1 {listName index {howMuch 1}} {
- upvar $listName list;
- set newValue [expr {[lindex $list $index]+$howMuch}];
- set list [lreplace $list $index $index $newValue];
- return $newValue;
-}
-# Returns the first element of a list
-proc ::tcl::Lfirst {list} {
- lindex $list 0
-}
-# Returns the rest of the list minus first element
-proc ::tcl::Lrest {list} {
- lrange $list 1 end
+ upvar $listName list
+ set newValue [expr {[lindex $list $index]+$howMuch}]
+ set list [lreplace $list $index $index $newValue]
+ return $newValue
}
# Removes the first element of a list
# and returns the new list value
proc ::tcl::Lvarpop1 {listName} {
- upvar $listName list;
- set list [lrange $list 1 end];
+ upvar $listName list
+ set list [lrange $list 1 end]
}
# Same but returns the removed element
# (Like the tclX version)
proc ::tcl::Lvarpop {listName} {
- upvar $listName list;
- set el [Lfirst $list];
- set list [lrange $list 1 end];
- return $el;
+ upvar $listName list
+ set el [lindex $list 0]
+ set list [lrange $list 1 end]
+ return $el
}
# Assign list elements to variables and return the length of the list
proc ::tcl::Lassign {list args} {
# faster than direct blown foreach (which does not byte compile)
- set i 0;
- set lg [llength $list];
+ set i 0
+ set lg [llength $list]
foreach vname $args {
if {$i>=$lg} break
- uplevel [list set $vname [lindex $list $i]];
- incr i;
+ uplevel 1 [list ::set $vname [lindex $list $i]]
+ incr i
}
- return $lg;
+ return $lg
}
# Misc utilities
diff --git a/library/opt/pkgIndex.tcl b/library/opt/pkgIndex.tcl
index 260e572..107d4c6 100644
--- a/library/opt/pkgIndex.tcl
+++ b/library/opt/pkgIndex.tcl
@@ -8,4 +8,5 @@
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
-package ifneeded opt 0.4.1 [list source [file join $dir optparse.tcl]]
+if {![package vsatisfies [package provide Tcl] 8.2]} {return}
+package ifneeded opt 0.4.6 [list source [file join $dir optparse.tcl]]
diff --git a/library/opt0.4/optparse.tcl b/library/opt0.4/optparse.tcl
deleted file mode 100644
index 289a39a..0000000
--- a/library/opt0.4/optparse.tcl
+++ /dev/null
@@ -1,1097 +0,0 @@
-# optparse.tcl --
-#
-# (private) Option parsing package
-# Primarily used internally by the safe:: code.
-#
-# WARNING: This code will go away in a future release
-# of Tcl. It is NOT supported and you should not rely
-# on it. If your code does rely on this package you
-# may directly incorporate this code into your application.
-#
-# RCS: @(#) $Id: optparse.tcl,v 1.2 1999/04/16 00:47:18 stanton Exp $
-
-package provide opt 0.4.1
-
-namespace eval ::tcl {
-
- # Exported APIs
- namespace export OptKeyRegister OptKeyDelete OptKeyError OptKeyParse \
- OptProc OptProcArgGiven OptParse \
- Lempty Lget \
- Lassign Lvarpop Lvarpop1 Lvarset Lvarincr Lfirst Lrest \
- SetMax SetMin
-
-
-################# Example of use / 'user documentation' ###################
-
- proc OptCreateTestProc {} {
-
- # Defines ::tcl::OptParseTest as a test proc with parsed arguments
- # (can't be defined before the code below is loaded (before "OptProc"))
-
- # Every OptProc give usage information on "procname -help".
- # Try "tcl::OptParseTest -help" and "tcl::OptParseTest -a" and
- # then other arguments.
- #
- # example of 'valid' call:
- # ::tcl::OptParseTest save -4 -pr 23 -libsok SybTcl\
- # -nostatics false ch1
- OptProc OptParseTest {
- {subcommand -choice {save print} "sub command"}
- {arg1 3 "some number"}
- {-aflag}
- {-intflag 7}
- {-weirdflag "help string"}
- {-noStatics "Not ok to load static packages"}
- {-nestedloading1 true "OK to load into nested slaves"}
- {-nestedloading2 -boolean true "OK to load into nested slaves"}
- {-libsOK -choice {Tk SybTcl}
- "List of packages that can be loaded"}
- {-precision -int 12 "Number of digits of precision"}
- {-intval 7 "An integer"}
- {-scale -float 1.0 "Scale factor"}
- {-zoom 1.0 "Zoom factor"}
- {-arbitrary foobar "Arbitrary string"}
- {-random -string 12 "Random string"}
- {-listval -list {} "List value"}
- {-blahflag -blah abc "Funny type"}
- {arg2 -boolean "a boolean"}
- {arg3 -choice "ch1 ch2"}
- {?optarg? -list {} "optional argument"}
- } {
- foreach v [info locals] {
- puts stderr [format "%14s : %s" $v [set $v]]
- }
- }
- }
-
-################### No User serviceable part below ! ###############
-# You should really not look any further :
-# The following is private unexported undocumented unblessed... code
-# time to hit "q" ;-) !
-
-# Hmmm... ok, you really want to know ?
-
-# You've been warned... Here it is...
-
- # Array storing the parsed descriptions
- variable OptDesc;
- array set OptDesc {};
- # Next potentially free key id (numeric)
- variable OptDescN 0;
-
-# Inside algorithm/mechanism description:
-# (not for the faint hearted ;-)
-#
-# The argument description is parsed into a "program tree"
-# It is called a "program" because it is the program used by
-# the state machine interpreter that use that program to
-# actually parse the arguments at run time.
-#
-# The general structure of a "program" is
-# notation (pseudo bnf like)
-# name :== definition defines "name" as being "definition"
-# { x y z } means list of x, y, and z
-# x* means x repeated 0 or more time
-# x+ means "x x*"
-# x? means optionally x
-# x | y means x or y
-# "cccc" means the literal string
-#
-# program :== { programCounter programStep* }
-#
-# programStep :== program | singleStep
-#
-# programCounter :== {"P" integer+ }
-#
-# singleStep :== { instruction parameters* }
-#
-# instruction :== single element list
-#
-# (the difference between singleStep and program is that \
-# llength [Lfirst $program] >= 2
-# while
-# llength [Lfirst $singleStep] == 1
-# )
-#
-# And for this application:
-#
-# singleStep :== { instruction varname {hasBeenSet currentValue} type
-# typeArgs help }
-# instruction :== "flags" | "value"
-# type :== knowType | anyword
-# knowType :== "string" | "int" | "boolean" | "boolflag" | "float"
-# | "choice"
-#
-# for type "choice" typeArgs is a list of possible choices, the first one
-# is the default value. for all other types the typeArgs is the default value
-#
-# a "boolflag" is the type for a flag whose presence or absence, without
-# additional arguments means respectively true or false (default flag type).
-#
-# programCounter is the index in the list of the currently processed
-# programStep (thus starting at 1 (0 is {"P" prgCounterValue}).
-# If it is a list it points toward each currently selected programStep.
-# (like for "flags", as they are optional, form a set and programStep).
-
-# Performance/Implementation issues
-# ---------------------------------
-# We use tcl lists instead of arrays because with tcl8.0
-# they should start to be much faster.
-# But this code use a lot of helper procs (like Lvarset)
-# which are quite slow and would be helpfully optimized
-# for instance by being written in C. Also our struture
-# is complex and there is maybe some places where the
-# string rep might be calculated at great exense. to be checked.
-
-#
-# Parse a given description and saves it here under the given key
-# generate a unused keyid if not given
-#
-proc ::tcl::OptKeyRegister {desc {key ""}} {
- variable OptDesc;
- variable OptDescN;
- if {[string compare $key ""] == 0} {
- # in case a key given to us as a parameter was a number
- while {[info exists OptDesc($OptDescN)]} {incr OptDescN}
- set key $OptDescN;
- incr OptDescN;
- }
- # program counter
- set program [list [list "P" 1]];
-
- # are we processing flags (which makes a single program step)
- set inflags 0;
-
- set state {};
-
- # flag used to detect that we just have a single (flags set) subprogram.
- set empty 1;
-
- foreach item $desc {
- if {$state == "args"} {
- # more items after 'args'...
- return -code error "'args' special argument must be the last one";
- }
- set res [OptNormalizeOne $item];
- set state [Lfirst $res];
- if {$inflags} {
- if {$state == "flags"} {
- # add to 'subprogram'
- lappend flagsprg $res;
- } else {
- # put in the flags
- # structure for flag programs items is a list of
- # {subprgcounter {prg flag 1} {prg flag 2} {...}}
- lappend program $flagsprg;
- # put the other regular stuff
- lappend program $res;
- set inflags 0;
- set empty 0;
- }
- } else {
- if {$state == "flags"} {
- set inflags 1;
- # sub program counter + first sub program
- set flagsprg [list [list "P" 1] $res];
- } else {
- lappend program $res;
- set empty 0;
- }
- }
- }
- if {$inflags} {
- if {$empty} {
- # We just have the subprogram, optimize and remove
- # unneeded level:
- set program $flagsprg;
- } else {
- lappend program $flagsprg;
- }
- }
-
- set OptDesc($key) $program;
-
- return $key;
-}
-
-#
-# Free the storage for that given key
-#
-proc ::tcl::OptKeyDelete {key} {
- variable OptDesc;
- unset OptDesc($key);
-}
-
- # Get the parsed description stored under the given key.
- proc OptKeyGetDesc {descKey} {
- variable OptDesc;
- if {![info exists OptDesc($descKey)]} {
- return -code error "Unknown option description key \"$descKey\"";
- }
- set OptDesc($descKey);
- }
-
-# Parse entry point for ppl who don't want to register with a key,
-# for instance because the description changes dynamically.
-# (otherwise one should really use OptKeyRegister once + OptKeyParse
-# as it is way faster or simply OptProc which does it all)
-# Assign a temporary key, call OptKeyParse and then free the storage
-proc ::tcl::OptParse {desc arglist} {
- set tempkey [OptKeyRegister $desc];
- set ret [catch {uplevel [list ::tcl::OptKeyParse $tempkey $arglist]} res];
- OptKeyDelete $tempkey;
- return -code $ret $res;
-}
-
-# Helper function, replacement for proc that both
-# register the description under a key which is the name of the proc
-# (and thus unique to that code)
-# and add a first line to the code to call the OptKeyParse proc
-# Stores the list of variables that have been actually given by the user
-# (the other will be sets to their default value)
-# into local variable named "Args".
-proc ::tcl::OptProc {name desc body} {
- set namespace [uplevel namespace current];
- if { ([string match $name "::*"])
- || ([string compare $namespace "::"]==0)} {
- # absolute name or global namespace, name is the key
- set key $name;
- } else {
- # we are relative to some non top level namespace:
- set key "${namespace}::${name}";
- }
- OptKeyRegister $desc $key;
- uplevel [list proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"];
- return $key;
-}
-# Check that a argument has been given
-# assumes that "OptProc" has been used as it will check in "Args" list
-proc ::tcl::OptProcArgGiven {argname} {
- upvar Args alist;
- expr {[lsearch $alist $argname] >=0}
-}
-
- #######
- # Programs/Descriptions manipulation
-
- # Return the instruction word/list of a given step/(sub)program
- proc OptInstr {lst} {
- Lfirst $lst;
- }
- # Is a (sub) program or a plain instruction ?
- proc OptIsPrg {lst} {
- expr {[llength [OptInstr $lst]]>=2}
- }
- # Is this instruction a program counter or a real instr
- proc OptIsCounter {item} {
- expr {[Lfirst $item]=="P"}
- }
- # Current program counter (2nd word of first word)
- proc OptGetPrgCounter {lst} {
- Lget $lst {0 1}
- }
- # Current program counter (2nd word of first word)
- proc OptSetPrgCounter {lstName newValue} {
- upvar $lstName lst;
- set lst [lreplace $lst 0 0 [concat "P" $newValue]];
- }
- # returns a list of currently selected items.
- proc OptSelection {lst} {
- set res {};
- foreach idx [lrange [Lfirst $lst] 1 end] {
- lappend res [Lget $lst $idx];
- }
- return $res;
- }
-
- # Advance to next description
- proc OptNextDesc {descName} {
- uplevel [list Lvarincr $descName {0 1}];
- }
-
- # Get the current description, eventually descend
- proc OptCurDesc {descriptions} {
- lindex $descriptions [OptGetPrgCounter $descriptions];
- }
- # get the current description, eventually descend
- # through sub programs as needed.
- proc OptCurDescFinal {descriptions} {
- set item [OptCurDesc $descriptions];
- # Descend untill we get the actual item and not a sub program
- while {[OptIsPrg $item]} {
- set item [OptCurDesc $item];
- }
- return $item;
- }
- # Current final instruction adress
- proc OptCurAddr {descriptions {start {}}} {
- set adress [OptGetPrgCounter $descriptions];
- lappend start $adress;
- set item [lindex $descriptions $adress];
- if {[OptIsPrg $item]} {
- return [OptCurAddr $item $start];
- } else {
- return $start;
- }
- }
- # Set the value field of the current instruction
- proc OptCurSetValue {descriptionsName value} {
- upvar $descriptionsName descriptions
- # get the current item full adress
- set adress [OptCurAddr $descriptions];
- # use the 3th field of the item (see OptValue / OptNewInst)
- lappend adress 2
- Lvarset descriptions $adress [list 1 $value];
- # ^hasBeenSet flag
- }
-
- # empty state means done/paste the end of the program
- proc OptState {item} {
- Lfirst $item
- }
-
- # current state
- proc OptCurState {descriptions} {
- OptState [OptCurDesc $descriptions];
- }
-
- #######
- # Arguments manipulation
-
- # Returns the argument that has to be processed now
- proc OptCurrentArg {lst} {
- Lfirst $lst;
- }
- # Advance to next argument
- proc OptNextArg {argsName} {
- uplevel [list Lvarpop1 $argsName];
- }
- #######
-
-
-
-
-
- # Loop over all descriptions, calling OptDoOne which will
- # eventually eat all the arguments.
- proc OptDoAll {descriptionsName argumentsName} {
- upvar $descriptionsName descriptions
- upvar $argumentsName arguments;
-# puts "entered DoAll";
- # Nb: the places where "state" can be set are tricky to figure
- # because DoOne sets the state to flagsValue and return -continue
- # when needed...
- set state [OptCurState $descriptions];
- # We'll exit the loop in "OptDoOne" or when state is empty.
- while 1 {
- set curitem [OptCurDesc $descriptions];
- # Do subprograms if needed, call ourselves on the sub branch
- while {[OptIsPrg $curitem]} {
- OptDoAll curitem arguments
-# puts "done DoAll sub";
- # Insert back the results in current tree;
- Lvarset1nc descriptions [OptGetPrgCounter $descriptions]\
- $curitem;
- OptNextDesc descriptions;
- set curitem [OptCurDesc $descriptions];
- set state [OptCurState $descriptions];
- }
-# puts "state = \"$state\" - arguments=($arguments)";
- if {[Lempty $state]} {
- # Nothing left to do, we are done in this branch:
- break;
- }
- # The following statement can make us terminate/continue
- # as it use return -code {break, continue, return and error}
- # codes
- OptDoOne descriptions state arguments;
- # If we are here, no special return code where issued,
- # we'll step to next instruction :
-# puts "new state = \"$state\"";
- OptNextDesc descriptions;
- set state [OptCurState $descriptions];
- }
- }
-
- # Process one step for the state machine,
- # eventually consuming the current argument.
- proc OptDoOne {descriptionsName stateName argumentsName} {
- upvar $argumentsName arguments;
- upvar $descriptionsName descriptions;
- upvar $stateName state;
-
- # the special state/instruction "args" eats all
- # the remaining args (if any)
- if {($state == "args")} {
- if {![Lempty $arguments]} {
- # If there is no additional arguments, leave the default value
- # in.
- OptCurSetValue descriptions $arguments;
- set arguments {};
- }
-# puts "breaking out ('args' state: consuming every reminding args)"
- return -code break;
- }
-
- if {[Lempty $arguments]} {
- if {$state == "flags"} {
- # no argument and no flags : we're done
-# puts "returning to previous (sub)prg (no more args)";
- return -code return;
- } elseif {$state == "optValue"} {
- set state next; # not used, for debug only
- # go to next state
- return ;
- } else {
- return -code error [OptMissingValue $descriptions];
- }
- } else {
- set arg [OptCurrentArg $arguments];
- }
-
- switch $state {
- flags {
- # A non-dash argument terminates the options, as does --
-
- # Still a flag ?
- if {![OptIsFlag $arg]} {
- # don't consume the argument, return to previous prg
- return -code return;
- }
- # consume the flag
- OptNextArg arguments;
- if {[string compare "--" $arg] == 0} {
- # return from 'flags' state
- return -code return;
- }
-
- set hits [OptHits descriptions $arg];
- if {$hits > 1} {
- return -code error [OptAmbigous $descriptions $arg]
- } elseif {$hits == 0} {
- return -code error [OptFlagUsage $descriptions $arg]
- }
- set item [OptCurDesc $descriptions];
- if {[OptNeedValue $item]} {
- # we need a value, next state is
- set state flagValue;
- } else {
- OptCurSetValue descriptions 1;
- }
- # continue
- return -code continue;
- }
- flagValue -
- value {
- set item [OptCurDesc $descriptions];
- # Test the values against their required type
- if {[catch {OptCheckType $arg\
- [OptType $item] [OptTypeArgs $item]} val]} {
- return -code error [OptBadValue $item $arg $val]
- }
- # consume the value
- OptNextArg arguments;
- # set the value
- OptCurSetValue descriptions $val;
- # go to next state
- if {$state == "flagValue"} {
- set state flags
- return -code continue;
- } else {
- set state next; # not used, for debug only
- return ; # will go on next step
- }
- }
- optValue {
- set item [OptCurDesc $descriptions];
- # Test the values against their required type
- if {![catch {OptCheckType $arg\
- [OptType $item] [OptTypeArgs $item]} val]} {
- # right type, so :
- # consume the value
- OptNextArg arguments;
- # set the value
- OptCurSetValue descriptions $val;
- }
- # go to next state
- set state next; # not used, for debug only
- return ; # will go on next step
- }
- }
- # If we reach this point: an unknown
- # state as been entered !
- return -code error "Bug! unknown state in DoOne \"$state\"\
- (prg counter [OptGetPrgCounter $descriptions]:\
- [OptCurDesc $descriptions])";
- }
-
-# Parse the options given the key to previously registered description
-# and arguments list
-proc ::tcl::OptKeyParse {descKey arglist} {
-
- set desc [OptKeyGetDesc $descKey];
-
- # make sure -help always give usage
- if {[string compare "-help" [string tolower $arglist]] == 0} {
- return -code error [OptError "Usage information:" $desc 1];
- }
-
- OptDoAll desc arglist;
-
- if {![Lempty $arglist]} {
- return -code error [OptTooManyArgs $desc $arglist];
- }
-
- # Analyse the result
- # Walk through the tree:
- OptTreeVars $desc "#[expr {[info level]-1}]" ;
-}
-
- # determine string length for nice tabulated output
- proc OptTreeVars {desc level {vnamesLst {}}} {
- foreach item $desc {
- if {[OptIsCounter $item]} continue;
- if {[OptIsPrg $item]} {
- set vnamesLst [OptTreeVars $item $level $vnamesLst];
- } else {
- set vname [OptVarName $item];
- upvar $level $vname var
- if {[OptHasBeenSet $item]} {
-# puts "adding $vname"
- # lets use the input name for the returned list
- # it is more usefull, for instance you can check that
- # no flags at all was given with expr
- # {![string match "*-*" $Args]}
- lappend vnamesLst [OptName $item];
- set var [OptValue $item];
- } else {
- set var [OptDefaultValue $item];
- }
- }
- }
- return $vnamesLst
- }
-
-
-# Check the type of a value
-# and emit an error if arg is not of the correct type
-# otherwise returns the canonical value of that arg (ie 0/1 for booleans)
-proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
-# puts "checking '$arg' against '$type' ($typeArgs)";
-
- # only types "any", "choice", and numbers can have leading "-"
-
- switch -exact -- $type {
- int {
- if {![regexp {^(-+)?[0-9]+$} $arg]} {
- error "not an integer"
- }
- return $arg;
- }
- float {
- return [expr {double($arg)}]
- }
- script -
- list {
- # if llength fail : malformed list
- if {[llength $arg]==0} {
- if {[OptIsFlag $arg]} {
- error "no values with leading -"
- }
- }
- return $arg;
- }
- boolean {
- if {![regexp -nocase {^(true|false|0|1)$} $arg]} {
- error "non canonic boolean"
- }
- # convert true/false because expr/if is broken with "!,...
- if {$arg} {
- return 1
- } else {
- return 0
- }
- }
- choice {
- if {[lsearch -exact $typeArgs $arg] < 0} {
- error "invalid choice"
- }
- return $arg;
- }
- any {
- return $arg;
- }
- string -
- default {
- if {[OptIsFlag $arg]} {
- error "no values with leading -"
- }
- return $arg
- }
- }
- return neverReached;
-}
-
- # internal utilities
-
- # returns the number of flags matching the given arg
- # sets the (local) prg counter to the list of matches
- proc OptHits {descName arg} {
- upvar $descName desc;
- set hits 0
- set hitems {}
- set i 1;
-
- set larg [string tolower $arg];
- set len [string length $larg];
- set last [expr {$len-1}];
-
- foreach item [lrange $desc 1 end] {
- set flag [OptName $item]
- # lets try to match case insensitively
- # (string length ought to be cheap)
- set lflag [string tolower $flag];
- if {$len == [string length $lflag]} {
- if {[string compare $larg $lflag]==0} {
- # Exact match case
- OptSetPrgCounter desc $i;
- return 1;
- }
- } else {
- if {[string compare $larg [string range $lflag 0 $last]]==0} {
- lappend hitems $i;
- incr hits;
- }
- }
- incr i;
- }
- if {$hits} {
- OptSetPrgCounter desc $hitems;
- }
- return $hits
- }
-
- # Extract fields from the list structure:
-
- proc OptName {item} {
- lindex $item 1;
- }
- #
- proc OptHasBeenSet {item} {
- Lget $item {2 0};
- }
- #
- proc OptValue {item} {
- Lget $item {2 1};
- }
-
- proc OptIsFlag {name} {
- string match "-*" $name;
- }
- proc OptIsOpt {name} {
- string match {\?*} $name;
- }
- proc OptVarName {item} {
- set name [OptName $item];
- if {[OptIsFlag $name]} {
- return [string range $name 1 end];
- } elseif {[OptIsOpt $name]} {
- return [string trim $name "?"];
- } else {
- return $name;
- }
- }
- proc OptType {item} {
- lindex $item 3
- }
- proc OptTypeArgs {item} {
- lindex $item 4
- }
- proc OptHelp {item} {
- lindex $item 5
- }
- proc OptNeedValue {item} {
- string compare [OptType $item] boolflag
- }
- proc OptDefaultValue {item} {
- set val [OptTypeArgs $item]
- switch -exact -- [OptType $item] {
- choice {return [lindex $val 0]}
- boolean -
- boolflag {
- # convert back false/true to 0/1 because expr !$bool
- # is broken..
- if {$val} {
- return 1
- } else {
- return 0
- }
- }
- }
- return $val
- }
-
- # Description format error helper
- proc OptOptUsage {item {what ""}} {
- return -code error "invalid description format$what: $item\n\
- should be a list of {varname|-flagname ?-type? ?defaultvalue?\
- ?helpstring?}";
- }
-
-
- # Generate a canonical form single instruction
- proc OptNewInst {state varname type typeArgs help} {
- list $state $varname [list 0 {}] $type $typeArgs $help;
- # ^ ^
- # | |
- # hasBeenSet=+ +=currentValue
- }
-
- # Translate one item to canonical form
- proc OptNormalizeOne {item} {
- set lg [Lassign $item varname arg1 arg2 arg3];
-# puts "called optnormalizeone '$item' v=($varname), lg=$lg";
- set isflag [OptIsFlag $varname];
- set isopt [OptIsOpt $varname];
- if {$isflag} {
- set state "flags";
- } elseif {$isopt} {
- set state "optValue";
- } elseif {[string compare $varname "args"]} {
- set state "value";
- } else {
- set state "args";
- }
-
- # apply 'smart' 'fuzzy' logic to try to make
- # description writer's life easy, and our's difficult :
- # let's guess the missing arguments :-)
-
- switch $lg {
- 1 {
- if {$isflag} {
- return [OptNewInst $state $varname boolflag false ""];
- } else {
- return [OptNewInst $state $varname any "" ""];
- }
- }
- 2 {
- # varname default
- # varname help
- set type [OptGuessType $arg1]
- if {[string compare $type "string"] == 0} {
- if {$isflag} {
- set type boolflag
- set def false
- } else {
- set type any
- set def ""
- }
- set help $arg1
- } else {
- set help ""
- set def $arg1
- }
- return [OptNewInst $state $varname $type $def $help];
- }
- 3 {
- # varname type value
- # varname value comment
-
- if {[regexp {^-(.+)$} $arg1 x type]} {
- # flags/optValue as they are optional, need a "value",
- # on the contrary, for a variable (non optional),
- # default value is pointless, 'cept for choices :
- if {$isflag || $isopt || ($type == "choice")} {
- return [OptNewInst $state $varname $type $arg2 ""];
- } else {
- return [OptNewInst $state $varname $type "" $arg2];
- }
- } else {
- return [OptNewInst $state $varname\
- [OptGuessType $arg1] $arg1 $arg2]
- }
- }
- 4 {
- if {[regexp {^-(.+)$} $arg1 x type]} {
- return [OptNewInst $state $varname $type $arg2 $arg3];
- } else {
- return -code error [OptOptUsage $item];
- }
- }
- default {
- return -code error [OptOptUsage $item];
- }
- }
- }
-
- # Auto magic lasy type determination
- proc OptGuessType {arg} {
- if {[regexp -nocase {^(true|false)$} $arg]} {
- return boolean
- }
- if {[regexp {^(-+)?[0-9]+$} $arg]} {
- return int
- }
- if {![catch {expr {double($arg)}}]} {
- return float
- }
- return string
- }
-
- # Error messages front ends
-
- proc OptAmbigous {desc arg} {
- OptError "ambigous option \"$arg\", choose from:" [OptSelection $desc]
- }
- proc OptFlagUsage {desc arg} {
- OptError "bad flag \"$arg\", must be one of" $desc;
- }
- proc OptTooManyArgs {desc arguments} {
- OptError "too many arguments (unexpected argument(s): $arguments),\
- usage:"\
- $desc 1
- }
- proc OptParamType {item} {
- if {[OptIsFlag $item]} {
- return "flag";
- } else {
- return "parameter";
- }
- }
- proc OptBadValue {item arg {err {}}} {
-# puts "bad val err = \"$err\"";
- OptError "bad value \"$arg\" for [OptParamType $item]"\
- [list $item]
- }
- proc OptMissingValue {descriptions} {
-# set item [OptCurDescFinal $descriptions];
- set item [OptCurDesc $descriptions];
- OptError "no value given for [OptParamType $item] \"[OptName $item]\"\
- (use -help for full usage) :"\
- [list $item]
- }
-
-proc ::tcl::OptKeyError {prefix descKey {header 0}} {
- OptError $prefix [OptKeyGetDesc $descKey] $header;
-}
-
- # determine string length for nice tabulated output
- proc OptLengths {desc nlName tlName dlName} {
- upvar $nlName nl;
- upvar $tlName tl;
- upvar $dlName dl;
- foreach item $desc {
- if {[OptIsCounter $item]} continue;
- if {[OptIsPrg $item]} {
- OptLengths $item nl tl dl
- } else {
- SetMax nl [string length [OptName $item]]
- SetMax tl [string length [OptType $item]]
- set dv [OptTypeArgs $item];
- if {[OptState $item] != "header"} {
- set dv "($dv)";
- }
- set l [string length $dv];
- # limit the space allocated to potentially big "choices"
- if {([OptType $item] != "choice") || ($l<=12)} {
- SetMax dl $l
- } else {
- if {![info exists dl]} {
- set dl 0
- }
- }
- }
- }
- }
- # output the tree
- proc OptTree {desc nl tl dl} {
- set res "";
- foreach item $desc {
- if {[OptIsCounter $item]} continue;
- if {[OptIsPrg $item]} {
- append res [OptTree $item $nl $tl $dl];
- } else {
- set dv [OptTypeArgs $item];
- if {[OptState $item] != "header"} {
- set dv "($dv)";
- }
- append res [format "\n %-*s %-*s %-*s %s" \
- $nl [OptName $item] $tl [OptType $item] \
- $dl $dv [OptHelp $item]]
- }
- }
- return $res;
- }
-
-# Give nice usage string
-proc ::tcl::OptError {prefix desc {header 0}} {
- # determine length
- if {$header} {
- # add faked instruction
- set h [list [OptNewInst header Var/FlagName Type Value Help]];
- lappend h [OptNewInst header ------------ ---- ----- ----];
- lappend h [OptNewInst header {( -help} "" "" {gives this help )}]
- set desc [concat $h $desc]
- }
- OptLengths $desc nl tl dl
- # actually output
- return "$prefix[OptTree $desc $nl $tl $dl]"
-}
-
-
-################ General Utility functions #######################
-
-#
-# List utility functions
-# Naming convention:
-# "Lvarxxx" take the list VARiable name as argument
-# "Lxxxx" take the list value as argument
-# (which is not costly with Tcl8 objects system
-# as it's still a reference and not a copy of the values)
-#
-
-# Is that list empty ?
-proc ::tcl::Lempty {list} {
- expr {[llength $list]==0}
-}
-
-# Gets the value of one leaf of a lists tree
-proc ::tcl::Lget {list indexLst} {
- if {[llength $indexLst] <= 1} {
- return [lindex $list $indexLst];
- }
- Lget [lindex $list [Lfirst $indexLst]] [Lrest $indexLst];
-}
-# Sets the value of one leaf of a lists tree
-# (we use the version that does not create the elements because
-# it would be even slower... needs to be written in C !)
-# (nb: there is a non trivial recursive problem with indexes 0,
-# which appear because there is no difference between a list
-# of 1 element and 1 element alone : [list "a"] == "a" while
-# it should be {a} and [listp a] should be 0 while [listp {a b}] would be 1
-# and [listp "a b"] maybe 0. listp does not exist either...)
-proc ::tcl::Lvarset {listName indexLst newValue} {
- upvar $listName list;
- if {[llength $indexLst] <= 1} {
- Lvarset1nc list $indexLst $newValue;
- } else {
- set idx [Lfirst $indexLst];
- set targetList [lindex $list $idx];
- # reduce refcount on targetList (not really usefull now,
- # could be with optimizing compiler)
-# Lvarset1 list $idx {};
- # recursively replace in targetList
- Lvarset targetList [Lrest $indexLst] $newValue;
- # put updated sub list back in the tree
- Lvarset1nc list $idx $targetList;
- }
-}
-# Set one cell to a value, eventually create all the needed elements
-# (on level-1 of lists)
-variable emptyList {}
-proc ::tcl::Lvarset1 {listName index newValue} {
- upvar $listName list;
- if {$index < 0} {return -code error "invalid negative index"}
- set lg [llength $list];
- if {$index >= $lg} {
- variable emptyList;
- for {set i $lg} {$i<$index} {incr i} {
- lappend list $emptyList;
- }
- lappend list $newValue;
- } else {
- set list [lreplace $list $index $index $newValue];
- }
-}
-# same as Lvarset1 but no bound checking / creation
-proc ::tcl::Lvarset1nc {listName index newValue} {
- upvar $listName list;
- set list [lreplace $list $index $index $newValue];
-}
-# Increments the value of one leaf of a lists tree
-# (which must exists)
-proc ::tcl::Lvarincr {listName indexLst {howMuch 1}} {
- upvar $listName list;
- if {[llength $indexLst] <= 1} {
- Lvarincr1 list $indexLst $howMuch;
- } else {
- set idx [Lfirst $indexLst];
- set targetList [lindex $list $idx];
- # reduce refcount on targetList
- Lvarset1nc list $idx {};
- # recursively replace in targetList
- Lvarincr targetList [Lrest $indexLst] $howMuch;
- # put updated sub list back in the tree
- Lvarset1nc list $idx $targetList;
- }
-}
-# Increments the value of one cell of a list
-proc ::tcl::Lvarincr1 {listName index {howMuch 1}} {
- upvar $listName list;
- set newValue [expr {[lindex $list $index]+$howMuch}];
- set list [lreplace $list $index $index $newValue];
- return $newValue;
-}
-# Returns the first element of a list
-proc ::tcl::Lfirst {list} {
- lindex $list 0
-}
-# Returns the rest of the list minus first element
-proc ::tcl::Lrest {list} {
- lrange $list 1 end
-}
-# Removes the first element of a list
-# and returns the new list value
-proc ::tcl::Lvarpop1 {listName} {
- upvar $listName list;
- set list [lrange $list 1 end];
-}
-# Same but returns the removed element
-# (Like the tclX version)
-proc ::tcl::Lvarpop {listName} {
- upvar $listName list;
- set el [Lfirst $list];
- set list [lrange $list 1 end];
- return $el;
-}
-# Assign list elements to variables and return the length of the list
-proc ::tcl::Lassign {list args} {
- # faster than direct blown foreach (which does not byte compile)
- set i 0;
- set lg [llength $list];
- foreach vname $args {
- if {$i>=$lg} break
- uplevel [list set $vname [lindex $list $i]];
- incr i;
- }
- return $lg;
-}
-
-# Misc utilities
-
-# Set the varname to value if value is greater than varname's current value
-# or if varname is undefined
-proc ::tcl::SetMax {varname value} {
- upvar 1 $varname var
- if {![info exists var] || $value > $var} {
- set var $value
- }
-}
-
-# Set the varname to value if value is smaller than varname's current value
-# or if varname is undefined
-proc ::tcl::SetMin {varname value} {
- upvar 1 $varname var
- if {![info exists var] || $value < $var} {
- set var $value
- }
-}
-
-
- # everything loaded fine, lets create the test proc:
- # OptCreateTestProc
- # Don't need the create temp proc anymore:
- # rename OptCreateTestProc {}
-}
diff --git a/library/opt0.4/pkgIndex.tcl b/library/opt0.4/pkgIndex.tcl
deleted file mode 100644
index 260e572..0000000
--- a/library/opt0.4/pkgIndex.tcl
+++ /dev/null
@@ -1,11 +0,0 @@
-# Tcl package index file, version 1.1
-# This file is generated by the "pkg_mkIndex -direct" command
-# and sourced either when an application starts up or
-# by a "package unknown" script. It invokes the
-# "package ifneeded" command to set up package-related
-# information so that packages will be loaded automatically
-# in response to "package require" commands. When this
-# script is sourced, the variable $dir must contain the
-# full path name of this file's directory.
-
-package ifneeded opt 0.4.1 [list source [file join $dir optparse.tcl]]
diff --git a/library/package.tcl b/library/package.tcl
index 29b7627..52daa0e 100644
--- a/library/package.tcl
+++ b/library/package.tcl
@@ -3,8 +3,6 @@
# utility procs formerly in init.tcl which can be loaded on demand
# for package management.
#
-# RCS: @(#) $Id: package.tcl,v 1.5 1999/04/21 21:50:29 rjohnson Exp $
-#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
@@ -12,11 +10,13 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# pkg_compareExtension --
+namespace eval tcl::Pkg {}
+
+# ::tcl::Pkg::CompareExtension --
#
-# Used internally by pkg_mkIndex to compare the extension of a file to
-# a given extension. On Windows, it uses a case-insensitive comparison
-# because the file system can be file insensitive.
+# Used internally by pkg_mkIndex to compare the extension of a file to a given
+# extension. On Windows, it uses a case-insensitive comparison because the
+# file system can be file insensitive.
#
# Arguments:
# fileName name of a file whose extension is compared
@@ -27,26 +27,40 @@
# Results:
# Returns 1 if the extension matches, 0 otherwise
-proc pkg_compareExtension { fileName {ext {}} } {
+proc tcl::Pkg::CompareExtension {fileName {ext {}}} {
global tcl_platform
- if {[string length $ext] == 0} {
- set ext [info sharedlibextension]
- }
- if {[string compare $tcl_platform(platform) "windows"] == 0} {
- return [expr {[string compare \
- [string tolower [file extension $fileName]] \
- [string tolower $ext]] == 0}]
+ if {$ext eq ""} {set ext [info sharedlibextension]}
+ if {$tcl_platform(platform) eq "windows"} {
+ return [string equal -nocase [file extension $fileName] $ext]
} else {
- return [expr {[string compare [file extension $fileName] $ext] == 0}]
+ # Some unices add trailing numbers after the .so, so
+ # we could have something like '.so.1.2'.
+ set root $fileName
+ while {1} {
+ set currExt [file extension $root]
+ if {$currExt eq $ext} {
+ return 1
+ }
+
+ # The current extension does not match; if it is not a numeric
+ # value, quit, as we are only looking to ignore version number
+ # extensions. Otherwise we might return 1 in this case:
+ # tcl::Pkg::CompareExtension foo.so.bar .so
+ # which should not match.
+
+ if {![string is integer -strict [string range $currExt 1 end]]} {
+ return 0
+ }
+ set root [file rootname $root]
+ }
}
}
# pkg_mkIndex --
-# This procedure creates a package index in a given directory. The
-# package index consists of a "pkgIndex.tcl" file whose contents are
-# a Tcl script that sets up package information with "package require"
-# commands. The commands describe all of the packages defined by the
-# files given as arguments.
+# This procedure creates a package index in a given directory. The package
+# index consists of a "pkgIndex.tcl" file whose contents are a Tcl script that
+# sets up package information with "package require" commands. The commands
+# describe all of the packages defined by the files given as arguments.
#
# Arguments:
# -direct (optional) If this flag is present, the generated
@@ -67,8 +81,7 @@ proc pkg_compareExtension { fileName {ext {}} } {
# dir.
proc pkg_mkIndex {args} {
- global errorCode errorInfo
- set usage {"pkg_mkIndex ?-direct? ?-verbose? ?-load pattern? ?--? dir ?pattern ...?"};
+ set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"}
set argCount [llength $args]
if {$argCount < 1} {
@@ -76,7 +89,7 @@ proc pkg_mkIndex {args} {
}
set more ""
- set direct 0
+ set direct 1
set doVerbose 0
set loadPat ""
for {set idx 0} {$idx < $argCount} {incr idx} {
@@ -90,8 +103,11 @@ proc pkg_mkIndex {args} {
-verbose {
set doVerbose 1
}
+ -lazy {
+ set direct 0
+ append more " -lazy"
+ }
-direct {
- set direct 1
append more " -direct"
}
-load {
@@ -111,84 +127,86 @@ proc pkg_mkIndex {args} {
set dir [lindex $args $idx]
set patternList [lrange $args [expr {$idx + 1}] end]
- if {[llength $patternList] == 0} {
+ if {![llength $patternList]} {
set patternList [list "*.tcl" "*[info sharedlibextension]"]
}
- append index "# Tcl package index file, version 1.1\n"
- append index "# This file is generated by the \"pkg_mkIndex$more\" command\n"
- append index "# and sourced either when an application starts up or\n"
- append index "# by a \"package unknown\" script. It invokes the\n"
- append index "# \"package ifneeded\" command to set up package-related\n"
- append index "# information so that packages will be loaded automatically\n"
- append index "# in response to \"package require\" commands. When this\n"
- append index "# script is sourced, the variable \$dir must contain the\n"
- append index "# full path name of this file's directory.\n"
- set oldDir [pwd]
- cd $dir
-
- if {[catch {eval glob $patternList} fileList]} {
- global errorCode errorInfo
- cd $oldDir
- return -code error -errorcode $errorCode -errorinfo $errorInfo $fileList
+ try {
+ set fileList [glob -directory $dir -tails -types {r f} -- \
+ {*}$patternList]
+ } on error {msg opt} {
+ return -options $opt $msg
}
foreach file $fileList {
# For each file, figure out what commands and packages it provides.
# To do this, create a child interpreter, load the file into the
- # interpreter, and get a list of the new commands and packages
- # that are defined.
+ # interpreter, and get a list of the new commands and packages that
+ # are defined.
- if {[string compare $file "pkgIndex.tcl"] == 0} {
+ if {$file eq "pkgIndex.tcl"} {
continue
}
- # Changed back to the original directory before initializing the
- # slave in case TCL_LIBRARY is a relative path (e.g. in the test
- # suite).
-
- cd $oldDir
set c [interp create]
# Load into the child any packages currently loaded in the parent
# interpreter that match the -load pattern.
+ if {$loadPat ne ""} {
+ if {$doVerbose} {
+ tclLog "currently loaded packages: '[info loaded]'"
+ tclLog "trying to load all packages matching $loadPat"
+ }
+ if {![llength [info loaded]]} {
+ tclLog "warning: no packages are currently loaded, nothing"
+ tclLog "can possibly match '$loadPat'"
+ }
+ }
foreach pkg [info loaded] {
- if {! [string match $loadPat [lindex $pkg 1]]} {
+ if {![string match -nocase $loadPat [lindex $pkg 1]]} {
continue
}
- if {[lindex $pkg 1] == "Tk"} {
- $c eval {set argv {-geometry +0+0}}
+ if {$doVerbose} {
+ tclLog "package [lindex $pkg 1] matches '$loadPat'"
}
- if {[catch {
+ try {
load [lindex $pkg 0] [lindex $pkg 1] $c
- } err]} {
+ } on error err {
if {$doVerbose} {
- tclLog "warning: load [lindex $pkg 0] [lindex $pkg 1]\nfailed with: $err"
+ tclLog "warning: load [lindex $pkg 0]\
+ [lindex $pkg 1]\nfailed with: $err"
}
- } else {
+ } on ok {} {
if {$doVerbose} {
tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]"
}
}
+ if {[lindex $pkg 1] eq "Tk"} {
+ # Withdraw . if Tk was loaded, to avoid showing a window.
+ $c eval [list wm withdraw .]
+ }
}
- cd $dir
$c eval {
- # Stub out the package command so packages can
- # require other packages.
+ # Stub out the package command so packages can require other
+ # packages.
rename package __package_orig
proc package {what args} {
switch -- $what {
- require { return ; # ignore transitive requires }
- default { eval __package_orig {$what} $args }
+ require {
+ return; # Ignore transitive requires
+ }
+ default {
+ __package_orig $what {*}$args
+ }
}
}
proc tclPkgUnknown args {}
package unknown tclPkgUnknown
- # Stub out the unknown command so package can call
- # into each other during their initialilzation.
+ # Stub out the unknown command so package can call into each other
+ # during their initialilzation.
proc unknown {args} {}
@@ -196,11 +214,12 @@ proc pkg_mkIndex {args} {
proc auto_import {args} {}
- # reserve the ::tcl namespace for support procs
- # and temporary variables. This might make it awkward
- # to generate a pkgIndex.tcl file for the ::tcl namespace.
+ # reserve the ::tcl namespace for support procs and temporary
+ # variables. This might make it awkward to generate a
+ # pkgIndex.tcl file for the ::tcl namespace.
namespace eval ::tcl {
+ variable dir ;# Current directory being processed
variable file ;# Current file being processed
variable direct ;# -direct flag value
variable x ;# Loop variable
@@ -214,120 +233,141 @@ proc pkg_mkIndex {args} {
}
}
+ $c eval [list set ::tcl::dir $dir]
$c eval [list set ::tcl::file $file]
$c eval [list set ::tcl::direct $direct]
- # Download needed procedures into the slave because we've
- # just deleted the unknown procedure. This doesn't handle
- # procedures with default arguments.
+ # Download needed procedures into the slave because we've just deleted
+ # the unknown procedure. This doesn't handle procedures with default
+ # arguments.
- foreach p {pkg_compareExtension} {
+ foreach p {::tcl::Pkg::CompareExtension} {
+ $c eval [list namespace eval [namespace qualifiers $p] {}]
$c eval [list proc $p [info args $p] [info body $p]]
}
- if {[catch {
+ try {
$c eval {
set ::tcl::debug "loading or sourcing"
- # we need to track command defined by each package even in
- # the -direct case, because they are needed internally by
- # the "partial pkgIndex.tcl" step above.
+ # we need to track command defined by each package even in the
+ # -direct case, because they are needed internally by the
+ # "partial pkgIndex.tcl" step above.
proc ::tcl::GetAllNamespaces {{root ::}} {
set list $root
foreach ns [namespace children $root] {
- eval lappend list [::tcl::GetAllNamespaces $ns]
+ lappend list {*}[::tcl::GetAllNamespaces $ns]
}
return $list
}
- # initialize the list of existing namespaces, packages, commands
+ # init the list of existing namespaces, packages, commands
foreach ::tcl::x [::tcl::GetAllNamespaces] {
set ::tcl::namespaces($::tcl::x) 1
}
foreach ::tcl::x [package names] {
- set ::tcl::packages($::tcl::x) 1
+ if {[package provide $::tcl::x] ne ""} {
+ set ::tcl::packages($::tcl::x) 1
+ }
}
set ::tcl::origCmds [info commands]
- # Try to load the file if it has the shared library
- # extension, otherwise source it. It's important not to
- # try to load files that aren't shared libraries, because
- # on some systems (like SunOS) the loader will abort the
- # whole application when it gets an error.
+ # Try to load the file if it has the shared library extension,
+ # otherwise source it. It's important not to try to load
+ # files that aren't shared libraries, because on some systems
+ # (like SunOS) the loader will abort the whole application
+ # when it gets an error.
- if {[pkg_compareExtension $::tcl::file [info sharedlibextension]]} {
- # The "file join ." command below is necessary.
- # Without it, if the file name has no \'s and we're
- # on UNIX, the load command will invoke the
- # LD_LIBRARY_PATH search mechanism, which could cause
- # the wrong file to be used.
+ if {[::tcl::Pkg::CompareExtension $::tcl::file [info sharedlibextension]]} {
+ # The "file join ." command below is necessary. Without
+ # it, if the file name has no \'s and we're on UNIX, the
+ # load command will invoke the LD_LIBRARY_PATH search
+ # mechanism, which could cause the wrong file to be used.
set ::tcl::debug loading
- load [file join . $::tcl::file]
+ load [file join $::tcl::dir $::tcl::file]
set ::tcl::type load
} else {
set ::tcl::debug sourcing
- source $::tcl::file
+ source [file join $::tcl::dir $::tcl::file]
set ::tcl::type source
}
- # See what new namespaces appeared, and import commands
- # from them. Only exported commands go into the index.
-
- foreach ::tcl::x [::tcl::GetAllNamespaces] {
- if {! [info exists ::tcl::namespaces($::tcl::x)]} {
- namespace import -force ${::tcl::x}::*
- }
- }
-
- # Figure out what commands appeared
-
- foreach ::tcl::x [info commands] {
- set ::tcl::newCmds($::tcl::x) 1
- }
- foreach ::tcl::x $::tcl::origCmds {
- catch {unset ::tcl::newCmds($::tcl::x)}
- }
- foreach ::tcl::x [array names ::tcl::newCmds] {
- # reverse engineer which namespace a command comes from
-
- set ::tcl::abs [namespace origin $::tcl::x]
-
- # special case so that global names have no leading
- # ::, this is required by the unknown command
-
- set ::tcl::abs [auto_qualify $::tcl::abs ::]
-
- if {[string compare $::tcl::x $::tcl::abs] != 0} {
- # Name changed during qualification
-
- set ::tcl::newCmds($::tcl::abs) 1
- unset ::tcl::newCmds($::tcl::x)
+ # As a performance optimization, if we are creating direct
+ # load packages, don't bother figuring out the set of commands
+ # created by the new packages. We only need that list for
+ # setting up the autoloading used in the non-direct case.
+ if {!$::tcl::direct} {
+ # See what new namespaces appeared, and import commands
+ # from them. Only exported commands go into the index.
+
+ foreach ::tcl::x [::tcl::GetAllNamespaces] {
+ if {![info exists ::tcl::namespaces($::tcl::x)]} {
+ namespace import -force ${::tcl::x}::*
+ }
+
+ # Figure out what commands appeared
+
+ foreach ::tcl::x [info commands] {
+ set ::tcl::newCmds($::tcl::x) 1
+ }
+ foreach ::tcl::x $::tcl::origCmds {
+ unset -nocomplain ::tcl::newCmds($::tcl::x)
+ }
+ foreach ::tcl::x [array names ::tcl::newCmds] {
+ # determine which namespace a command comes from
+
+ set ::tcl::abs [namespace origin $::tcl::x]
+
+ # special case so that global names have no
+ # leading ::, this is required by the unknown
+ # command
+
+ set ::tcl::abs \
+ [lindex [auto_qualify $::tcl::abs ::] 0]
+
+ if {$::tcl::x ne $::tcl::abs} {
+ # Name changed during qualification
+
+ set ::tcl::newCmds($::tcl::abs) 1
+ unset ::tcl::newCmds($::tcl::x)
+ }
+ }
}
}
- # Look through the packages that appeared, and if there is
- # a version provided, then record it
+ # Look through the packages that appeared, and if there is a
+ # version provided, then record it
foreach ::tcl::x [package names] {
- if {([string compare [package provide $::tcl::x] ""] != 0) \
+ if {[package provide $::tcl::x] ne ""
&& ![info exists ::tcl::packages($::tcl::x)]} {
lappend ::tcl::newPkgs \
[list $::tcl::x [package provide $::tcl::x]]
}
}
}
- } msg] == 1} {
+ } on error msg {
set what [$c eval set ::tcl::debug]
if {$doVerbose} {
tclLog "warning: error while $what $file: $msg"
}
- } else {
+ } on ok {} {
+ set what [$c eval set ::tcl::debug]
+ if {$doVerbose} {
+ tclLog "successful $what of $file"
+ }
set type [$c eval set ::tcl::type]
set cmds [lsort [$c eval array names ::tcl::newCmds]]
set pkgs [$c eval set ::tcl::newPkgs]
+ if {$doVerbose} {
+ if {!$direct} {
+ tclLog "commands provided were $cmds"
+ }
+ tclLog "packages provided were $pkgs"
+ }
if {[llength $pkgs] > 1} {
tclLog "warning: \"$file\" provides more than one package ($pkgs)"
}
@@ -339,38 +379,45 @@ proc pkg_mkIndex {args} {
if {$doVerbose} {
tclLog "processed $file"
}
- interp delete $c
}
+ interp delete $c
}
+ append index "# Tcl package index file, version 1.1\n"
+ append index "# This file is generated by the \"pkg_mkIndex$more\" command\n"
+ append index "# and sourced either when an application starts up or\n"
+ append index "# by a \"package unknown\" script. It invokes the\n"
+ append index "# \"package ifneeded\" command to set up package-related\n"
+ append index "# information so that packages will be loaded automatically\n"
+ append index "# in response to \"package require\" commands. When this\n"
+ append index "# script is sourced, the variable \$dir must contain the\n"
+ append index "# full path name of this file's directory.\n"
+
foreach pkg [lsort [array names files]] {
- append index "\npackage ifneeded $pkg "
- if {$direct} {
- set cmdList {}
- foreach elem $files($pkg) {
- set file [lindex $elem 0]
- set type [lindex $elem 1]
- lappend cmdList "\[list $type \[file join \$dir\
- [list $file]\]\]"
- }
- append index [join $cmdList "\\n"]
- } else {
- append index "\[list tclPkgSetup \$dir [lrange $pkg 0 0]\
- [lrange $pkg 1 1] [list $files($pkg)]\]"
+ set cmd {}
+ lassign $pkg name version
+ lappend cmd ::tcl::Pkg::Create -name $name -version $version
+ foreach spec [lsort -index 0 $files($pkg)] {
+ foreach {file type procs} $spec {
+ if {$direct} {
+ set procs {}
+ }
+ lappend cmd "-$type" [list $file $procs]
+ }
}
+ append index "\n[eval $cmd]"
}
- set f [open pkgIndex.tcl w]
+
+ set f [open [file join $dir pkgIndex.tcl] w]
puts $f $index
close $f
- cd $oldDir
}
# tclPkgSetup --
-# This is a utility procedure use by pkgIndex.tcl files. It is invoked
-# as part of a "package ifneeded" script. It calls "package provide"
-# to indicate that a package is available, then sets entries in the
-# auto_index array so that the package's files will be auto-loaded when
-# the commands are used.
+# This is a utility procedure use by pkgIndex.tcl files. It is invoked as
+# part of a "package ifneeded" script. It calls "package provide" to indicate
+# that a package is available, then sets entries in the auto_index array so
+# that the package's files will be auto-loaded when the commands are used.
#
# Arguments:
# dir - Directory containing all the files for this package.
@@ -391,85 +438,310 @@ proc tclPkgSetup {dir pkg version files} {
set f [lindex $fileInfo 0]
set type [lindex $fileInfo 1]
foreach cmd [lindex $fileInfo 2] {
- if {$type == "load"} {
+ if {$type eq "load"} {
set auto_index($cmd) [list load [file join $dir $f] $pkg]
} else {
set auto_index($cmd) [list source [file join $dir $f]]
- }
- }
- }
-}
-
-# tclMacPkgSearch --
-# The procedure is used on the Macintosh to search a given directory for files
-# with a TEXT resource named "pkgIndex". If it exists it is sourced in to the
-# interpreter to setup the package database.
-
-proc tclMacPkgSearch {dir} {
- foreach x [glob -nocomplain [file join $dir *.shlb]] {
- if {[file isfile $x]} {
- set res [resource open $x]
- foreach y [resource list TEXT $res] {
- if {$y == "pkgIndex"} {source -rsrc pkgIndex}
}
- catch {resource close $res}
}
}
}
# tclPkgUnknown --
-# This procedure provides the default for the "package unknown" function.
-# It is invoked when a package that's needed can't be found. It scans
-# the auto_path directories and their immediate children looking for
-# pkgIndex.tcl files and sources any such files that are found to setup
-# the package database. (On the Macintosh we also search for pkgIndex
-# TEXT resources in all files.)
+# This procedure provides the default for the "package unknown" function. It
+# is invoked when a package that's needed can't be found. It scans the
+# auto_path directories and their immediate children looking for pkgIndex.tcl
+# files and sources any such files that are found to setup the package
+# database. As it searches, it will recognize changes to the auto_path and
+# scan any new directories.
#
# Arguments:
# name - Name of desired package. Not used.
# version - Version of desired package. Not used.
# exact - Either "-exact" or omitted. Not used.
-proc tclPkgUnknown {name version {exact {}}} {
- global auto_path tcl_platform env
+proc tclPkgUnknown {name args} {
+ global auto_path env
if {![info exists auto_path]} {
return
}
- for {set i [expr {[llength $auto_path] - 1}]} {$i >= 0} {incr i -1} {
- # we can't use glob in safe interps, so enclose the following
- # in a catch statement
+ # Cache the auto_path, because it may change while we run through the
+ # first set of pkgIndex.tcl files
+ set old_path [set use_path $auto_path]
+ while {[llength $use_path]} {
+ set dir [lindex $use_path end]
+
+ # Make sure we only scan each directory one time.
+ if {[info exists tclSeenPath($dir)]} {
+ set use_path [lrange $use_path 0 end-1]
+ continue
+ }
+ set tclSeenPath($dir) 1
+
+ # we can't use glob in safe interps, so enclose the following in a
+ # catch statement, where we get the pkgIndex files out of the
+ # subdirectories
catch {
- foreach file [glob -nocomplain [file join [lindex $auto_path $i] \
- * pkgIndex.tcl]] {
+ foreach file [glob -directory $dir -join -nocomplain \
+ * pkgIndex.tcl] {
set dir [file dirname $file]
- if {[file readable $file]} {
- if {[catch {source $file} msg]} {
+ if {![info exists procdDirs($dir)]} {
+ try {
+ source $file
+ } trap {POSIX EACCES} {} {
+ # $file was not readable; silently ignore
+ continue
+ } on error msg {
tclLog "error reading package index file $file: $msg"
+ } on ok {} {
+ set procdDirs($dir) 1
}
}
}
}
- set dir [lindex $auto_path $i]
- set file [file join $dir pkgIndex.tcl]
- # safe interps usually don't have "file readable", nor stderr channel
- if {[interp issafe] || [file readable $file]} {
- if {[catch {source $file} msg] && ![interp issafe]} {
- tclLog "error reading package index file $file: $msg"
+ set dir [lindex $use_path end]
+ if {![info exists procdDirs($dir)]} {
+ set file [file join $dir pkgIndex.tcl]
+ # safe interps usually don't have "file exists",
+ if {([interp issafe] || [file exists $file])} {
+ try {
+ source $file
+ } trap {POSIX EACCES} {} {
+ # $file was not readable; silently ignore
+ continue
+ } on error msg {
+ tclLog "error reading package index file $file: $msg"
+ } on ok {} {
+ set procdDirs($dir) 1
+ }
}
}
- # On the Macintosh we also look in the resource fork
- # of shared libraries
- # We can't use tclMacPkgSearch in safe interps because it uses glob
- if {(![interp issafe]) && ($tcl_platform(platform) == "macintosh")} {
- set dir [lindex $auto_path $i]
- tclMacPkgSearch $dir
- foreach x [glob -nocomplain [file join $dir *]] {
- if {[file isdirectory $x]} {
- set dir $x
- tclMacPkgSearch $dir
+
+ set use_path [lrange $use_path 0 end-1]
+
+ # Check whether any of the index scripts we [source]d above set a new
+ # value for $::auto_path. If so, then find any new directories on the
+ # $::auto_path, and lappend them to the $use_path we are working from.
+ # This gives index scripts the (arguably unwise) power to expand the
+ # index script search path while the search is in progress.
+ set index 0
+ if {[llength $old_path] == [llength $auto_path]} {
+ foreach dir $auto_path old $old_path {
+ if {$dir ne $old} {
+ # This entry in $::auto_path has changed.
+ break
}
+ incr index
+ }
+ }
+
+ # $index now points to the first element of $auto_path that has
+ # changed, or the beginning if $auto_path has changed length Scan the
+ # new elements of $auto_path for directories to add to $use_path.
+ # Don't add directories we've already seen, or ones already on the
+ # $use_path.
+ foreach dir [lrange $auto_path $index end] {
+ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} {
+ lappend use_path $dir
}
}
+ set old_path $auto_path
}
}
+
+# tcl::MacOSXPkgUnknown --
+# This procedure extends the "package unknown" function for MacOSX. It scans
+# the Resources/Scripts directories of the immediate children of the auto_path
+# directories for pkgIndex files.
+#
+# Arguments:
+# original - original [package unknown] procedure
+# name - Name of desired package. Not used.
+# version - Version of desired package. Not used.
+# exact - Either "-exact" or omitted. Not used.
+
+proc tcl::MacOSXPkgUnknown {original name args} {
+ # First do the cross-platform default search
+ uplevel 1 $original [linsert $args 0 $name]
+
+ # Now do MacOSX specific searching
+ global auto_path
+
+ if {![info exists auto_path]} {
+ return
+ }
+ # Cache the auto_path, because it may change while we run through the
+ # first set of pkgIndex.tcl files
+ set old_path [set use_path $auto_path]
+ while {[llength $use_path]} {
+ set dir [lindex $use_path end]
+
+ # Make sure we only scan each directory one time.
+ if {[info exists tclSeenPath($dir)]} {
+ set use_path [lrange $use_path 0 end-1]
+ continue
+ }
+ set tclSeenPath($dir) 1
+
+ # get the pkgIndex files out of the subdirectories
+ foreach file [glob -directory $dir -join -nocomplain \
+ * Resources Scripts pkgIndex.tcl] {
+ set dir [file dirname $file]
+ if {![info exists procdDirs($dir)]} {
+ try {
+ source $file
+ } trap {POSIX EACCES} {} {
+ # $file was not readable; silently ignore
+ continue
+ } on error msg {
+ tclLog "error reading package index file $file: $msg"
+ } on ok {} {
+ set procdDirs($dir) 1
+ }
+ }
+ }
+ set use_path [lrange $use_path 0 end-1]
+
+ # Check whether any of the index scripts we [source]d above set a new
+ # value for $::auto_path. If so, then find any new directories on the
+ # $::auto_path, and lappend them to the $use_path we are working from.
+ # This gives index scripts the (arguably unwise) power to expand the
+ # index script search path while the search is in progress.
+ set index 0
+ if {[llength $old_path] == [llength $auto_path]} {
+ foreach dir $auto_path old $old_path {
+ if {$dir ne $old} {
+ # This entry in $::auto_path has changed.
+ break
+ }
+ incr index
+ }
+ }
+
+ # $index now points to the first element of $auto_path that has
+ # changed, or the beginning if $auto_path has changed length Scan the
+ # new elements of $auto_path for directories to add to $use_path.
+ # Don't add directories we've already seen, or ones already on the
+ # $use_path.
+ foreach dir [lrange $auto_path $index end] {
+ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} {
+ lappend use_path $dir
+ }
+ }
+ set old_path $auto_path
+ }
+}
+
+# ::tcl::Pkg::Create --
+#
+# Given a package specification generate a "package ifneeded" statement
+# for the package, suitable for inclusion in a pkgIndex.tcl file.
+#
+# Arguments:
+# args arguments used by the Create function:
+# -name packageName
+# -version packageVersion
+# -load {filename ?{procs}?}
+# ...
+# -source {filename ?{procs}?}
+# ...
+#
+# Any number of -load and -source parameters may be
+# specified, so long as there is at least one -load or
+# -source parameter. If the procs component of a module
+# specifier is left off, that module will be set up for
+# direct loading; otherwise, it will be set up for lazy
+# loading. If both -source and -load are specified, the
+# -load'ed files will be loaded first, followed by the
+# -source'd files.
+#
+# Results:
+# An appropriate "package ifneeded" statement for the package.
+
+proc ::tcl::Pkg::Create {args} {
+ append err(usage) "[lindex [info level 0] 0] "
+ append err(usage) "-name packageName -version packageVersion"
+ append err(usage) "?-load {filename ?{procs}?}? ... "
+ append err(usage) "?-source {filename ?{procs}?}? ..."
+
+ set err(wrongNumArgs) "wrong # args: should be \"$err(usage)\""
+ set err(valueMissing) "value for \"%s\" missing: should be \"$err(usage)\""
+ set err(unknownOpt) "unknown option \"%s\": should be \"$err(usage)\""
+ set err(noLoadOrSource) "at least one of -load and -source must be given"
+
+ # process arguments
+ set len [llength $args]
+ if {$len < 6} {
+ error $err(wrongNumArgs)
+ }
+
+ # Initialize parameters
+ array set opts {-name {} -version {} -source {} -load {}}
+
+ # process parameters
+ for {set i 0} {$i < $len} {incr i} {
+ set flag [lindex $args $i]
+ incr i
+ switch -glob -- $flag {
+ "-name" -
+ "-version" {
+ if {$i >= $len} {
+ error [format $err(valueMissing) $flag]
+ }
+ set opts($flag) [lindex $args $i]
+ }
+ "-source" -
+ "-load" {
+ if {$i >= $len} {
+ error [format $err(valueMissing) $flag]
+ }
+ lappend opts($flag) [lindex $args $i]
+ }
+ default {
+ error [format $err(unknownOpt) [lindex $args $i]]
+ }
+ }
+ }
+
+ # Validate the parameters
+ if {![llength $opts(-name)]} {
+ error [format $err(valueMissing) "-name"]
+ }
+ if {![llength $opts(-version)]} {
+ error [format $err(valueMissing) "-version"]
+ }
+
+ if {!([llength $opts(-source)] || [llength $opts(-load)])} {
+ error $err(noLoadOrSource)
+ }
+
+ # OK, now everything is good. Generate the package ifneeded statment.
+ set cmdline "package ifneeded $opts(-name) $opts(-version) "
+
+ set cmdList {}
+ set lazyFileList {}
+
+ # Handle -load and -source specs
+ foreach key {load source} {
+ foreach filespec $opts(-$key) {
+ lassign $filespec filename proclist
+
+ if { [llength $proclist] == 0 } {
+ set cmd "\[list $key \[file join \$dir [list $filename]\]\]"
+ lappend cmdList $cmd
+ } else {
+ lappend lazyFileList [list $filename $key $proclist]
+ }
+ }
+ }
+
+ if {[llength $lazyFileList]} {
+ lappend cmdList "\[list tclPkgSetup \$dir $opts(-name)\
+ $opts(-version) [list $lazyFileList]\]"
+ }
+ append cmdline [join $cmdList "\\n"]
+ return $cmdline
+}
+
+interp alias {} ::pkg::create {} ::tcl::Pkg::Create
diff --git a/library/parray.tcl b/library/parray.tcl
index 92655b2..a9c2cb1 100644
--- a/library/parray.tcl
+++ b/library/parray.tcl
@@ -1,8 +1,6 @@
# parray:
# Print the contents of a global array on stdout.
#
-# RCS: @(#) $Id: parray.tcl,v 1.3 1998/09/14 18:40:03 stanton Exp $
-#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994 Sun Microsystems, Inc.
#
@@ -13,16 +11,17 @@
proc parray {a {pattern *}} {
upvar 1 $a array
if {![array exists array]} {
- error "\"$a\" isn't an array"
+ return -code error "\"$a\" isn't an array"
}
set maxl 0
- foreach name [lsort [array names array $pattern]] {
+ set names [lsort [array names array $pattern]]
+ foreach name $names {
if {[string length $name] > $maxl} {
set maxl [string length $name]
}
}
set maxl [expr {$maxl + [string length $a] + 2}]
- foreach name [lsort [array names array $pattern]] {
+ foreach name $names {
set nameString [format %s(%s) $a $name]
puts stdout [format "%-*s = %s" $maxl $nameString $array($name)]
}
diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl
new file mode 100644
index 0000000..23a3408
--- /dev/null
+++ b/library/platform/pkgIndex.tcl
@@ -0,0 +1,3 @@
+package ifneeded platform 1.0.12 [list source [file join $dir platform.tcl]]
+package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]]
+
diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl
new file mode 100644
index 0000000..5698425
--- /dev/null
+++ b/library/platform/platform.tcl
@@ -0,0 +1,387 @@
+# -*- tcl -*-
+# ### ### ### ######### ######### #########
+## Overview
+
+# Heuristics to assemble a platform identifier from publicly available
+# information. The identifier describes the platform of the currently
+# running tcl shell. This is a mixture of the runtime environment and
+# of build-time properties of the executable itself.
+#
+# Examples:
+# <1> A tcl shell executing on a x86_64 processor, but having a
+# wordsize of 4 was compiled for the x86 environment, i.e. 32
+# bit, and loaded packages have to match that, and not the
+# actual cpu.
+#
+# <2> The hp/solaris 32/64 bit builds of the core cannot be
+# distinguished by looking at tcl_platform. As packages have to
+# match the 32/64 information we have to look in more places. In
+# this case we inspect the executable itself (magic numbers,
+# i.e. fileutil::magic::filetype).
+#
+# The basic information used comes out of the 'os' and 'machine'
+# entries of the 'tcl_platform' array. A number of general and
+# os/machine specific transformation are applied to get a canonical
+# result.
+#
+# General
+# Only the first element of 'os' is used - we don't care whether we
+# are on "Windows NT" or "Windows XP" or whatever.
+#
+# Machine specific
+# % arm* -> arm
+# % sun4* -> sparc
+# % intel -> ix86
+# % i*86* -> ix86
+# % Power* -> powerpc
+# % x86_64 + wordSize 4 => x86 code
+#
+# OS specific
+# % AIX are always powerpc machines
+# % HP-UX 9000/800 etc means parisc
+# % linux has to take glibc version into account
+# % sunos -> solaris, and keep version number
+#
+# NOTE: A platform like linux glibc 2.3, which can use glibc 2.2 stuff
+# has to provide all possible allowed platform identifiers when
+# searching search. Ditto a solaris 2.8 platform can use solaris 2.6
+# packages. Etc. This is handled by the other procedure, see below.
+
+# ### ### ### ######### ######### #########
+## Requirements
+
+namespace eval ::platform {}
+
+# ### ### ### ######### ######### #########
+## Implementation
+
+# -- platform::generic
+#
+# Assembles an identifier for the generic platform. It leaves out
+# details like kernel version, libc version, etc.
+
+proc ::platform::generic {} {
+ global tcl_platform
+
+ set plat [string tolower [lindex $tcl_platform(os) 0]]
+ set cpu $tcl_platform(machine)
+
+ switch -glob -- $cpu {
+ sun4* {
+ set cpu sparc
+ }
+ intel -
+ i*86* {
+ set cpu ix86
+ }
+ x86_64 {
+ if {$tcl_platform(wordSize) == 4} {
+ # See Example <1> at the top of this file.
+ set cpu ix86
+ }
+ }
+ "Power*" {
+ set cpu powerpc
+ }
+ "arm*" {
+ set cpu arm
+ }
+ ia64 {
+ if {$tcl_platform(wordSize) == 4} {
+ append cpu _32
+ }
+ }
+ }
+
+ switch -- $plat {
+ windows {
+ set plat win32
+ if {$cpu eq "amd64"} {
+ # Do not check wordSize, win32-x64 is an IL32P64 platform.
+ set cpu x86_64
+ }
+ }
+ sunos {
+ set plat solaris
+ if {[string match "ix86" $cpu]} {
+ if {$tcl_platform(wordSize) == 8} {
+ set cpu x86_64
+ }
+ } elseif {![string match "ia64*" $cpu]} {
+ # sparc
+ if {$tcl_platform(wordSize) == 8} {
+ append cpu 64
+ }
+ }
+ }
+ darwin {
+ set plat macosx
+ # Correctly identify the cpu when running as a 64bit
+ # process on a machine with a 32bit kernel
+ if {$cpu eq "ix86"} {
+ if {$tcl_platform(wordSize) == 8} {
+ set cpu x86_64
+ }
+ }
+ }
+ aix {
+ set cpu powerpc
+ if {$tcl_platform(wordSize) == 8} {
+ append cpu 64
+ }
+ }
+ hp-ux {
+ set plat hpux
+ if {![string match "ia64*" $cpu]} {
+ set cpu parisc
+ if {$tcl_platform(wordSize) == 8} {
+ append cpu 64
+ }
+ }
+ }
+ osf1 {
+ set plat tru64
+ }
+ }
+
+ return "${plat}-${cpu}"
+}
+
+# -- platform::identify
+#
+# Assembles an identifier for the exact platform, by extending the
+# generic identifier. I.e. it adds in details like kernel version,
+# libc version, etc., if they are relevant for the loading of
+# packages on the platform.
+
+proc ::platform::identify {} {
+ global tcl_platform
+
+ set id [generic]
+ regexp {^([^-]+)-([^-]+)$} $id -> plat cpu
+
+ switch -- $plat {
+ solaris {
+ regsub {^5} $tcl_platform(osVersion) 2 text
+ append plat $text
+ return "${plat}-${cpu}"
+ }
+ macosx {
+ set major [lindex [split $tcl_platform(osVersion) .] 0]
+ if {$major > 8} {
+ incr major -4
+ append plat 10.$major
+ return "${plat}-${cpu}"
+ }
+ }
+ linux {
+ # Look for the libc*.so and determine its version
+ # (libc5/6, libc6 further glibc 2.X)
+
+ set v unknown
+
+ # Determine in which directory to look. /lib, or /lib64.
+ # For that we use the tcl_platform(wordSize).
+ #
+ # We could use the 'cpu' info, per the equivalence below,
+ # that however would be restricted to intel. And this may
+ # be a arm, mips, etc. system. The wordsize is more
+ # fundamental.
+ #
+ # ix86 <=> (wordSize == 4) <=> 32 bit ==> /lib
+ # x86_64 <=> (wordSize == 8) <=> 64 bit ==> /lib64
+ #
+ # Do not look into /lib64 even if present, if the cpu
+ # doesn't fit.
+
+ # TODO: Determine the prefixes (i386, x86_64, ...) for
+ # other cpus. The path after the generic one is utterly
+ # specific to intel right now. Ok, on Ubuntu, possibly
+ # other Debian systems we may apparently be able to query
+ # the necessary CPU code. If we can't we simply use the
+ # hardwired fallback.
+
+ switch -exact -- $tcl_platform(wordSize) {
+ 4 {
+ lappend bases /lib
+ if {[catch {
+ exec dpkg-architecture -qDEB_HOST_MULTIARCH
+ } res]} {
+ lappend bases /lib/i386-linux-gnu
+ } else {
+ # dpkg-arch returns the full tripled, not just cpu.
+ lappend bases /lib/$res
+ }
+ }
+ 8 {
+ lappend bases /lib64
+ if {[catch {
+ exec dpkg-architecture -qDEB_HOST_MULTIARCH
+ } res]} {
+ lappend bases /lib/x86_64-linux-gnu
+ } else {
+ # dpkg-arch returns the full tripled, not just cpu.
+ lappend bases /lib/$res
+ }
+ }
+ default {
+ return -code error "Bad wordSize $tcl_platform(wordSize), expected 4 or 8"
+ }
+ }
+
+ foreach base $bases {
+ if {[LibcVersion $base -> v]} break
+ }
+
+ append plat -$v
+ return "${plat}-${cpu}"
+ }
+ }
+
+ return $id
+}
+
+proc ::platform::LibcVersion {base _->_ vv} {
+ upvar 1 $vv v
+ set libclist [lsort [glob -nocomplain -directory $base libc*]]
+
+ if {![llength $libclist]} { return 0 }
+
+ set libc [lindex $libclist 0]
+
+ # Try executing the library first. This should suceed
+ # for a glibc library, and return the version
+ # information.
+
+ if {![catch {
+ set vdata [lindex [split [exec $libc] \n] 0]
+ }]} {
+ regexp {version ([0-9]+(\.[0-9]+)*)} $vdata -> v
+ foreach {major minor} [split $v .] break
+ set v glibc${major}.${minor}
+ return 1
+ } else {
+ # We had trouble executing the library. We are now
+ # inspecting its name to determine the version
+ # number. This code by Larry McVoy.
+
+ if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} {
+ set v glibc${major}.${minor}
+ return 1
+ }
+ }
+ return 0
+}
+
+# -- platform::patterns
+#
+# Given an exact platform identifier, i.e. _not_ the generic
+# identifier it assembles a list of exact platform identifier
+# describing platform which should be compatible with the
+# input.
+#
+# I.e. packages for all platforms in the result list should be
+# loadable on the specified platform.
+
+# << Should we add the generic identifier to the list as well ? In
+# general it is not compatible I believe. So better not. In many
+# cases the exact identifier is identical to the generic one
+# anyway.
+# >>
+
+proc ::platform::patterns {id} {
+ set res [list $id]
+ if {$id eq "tcl"} {return $res}
+
+ switch -glob -- $id {
+ solaris*-* {
+ if {[regexp {solaris([^-]*)-(.*)} $id -> v cpu]} {
+ if {$v eq ""} {return $id}
+ foreach {major minor} [split $v .] break
+ incr minor -1
+ for {set j $minor} {$j >= 6} {incr j -1} {
+ lappend res solaris${major}.${j}-${cpu}
+ }
+ }
+ }
+ linux*-* {
+ if {[regexp {linux-glibc([^-]*)-(.*)} $id -> v cpu]} {
+ foreach {major minor} [split $v .] break
+ incr minor -1
+ for {set j $minor} {$j >= 0} {incr j -1} {
+ lappend res linux-glibc${major}.${j}-${cpu}
+ }
+ }
+ }
+ macosx*-* {
+ # 10.5+
+ if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} {
+
+ switch -exact -- $cpu {
+ ix86 -
+ x86_64 { set alt i386-x86_64 }
+ default { set alt {} }
+ }
+
+ if {$v ne ""} {
+ foreach {major minor} [split $v .] break
+
+ # Add 10.5 to 10.minor to patterns.
+ set res {}
+ for {set j $minor} {$j >= 5} {incr j -1} {
+ lappend res macosx${major}.${j}-${cpu}
+ lappend res macosx${major}.${j}-universal
+ if {$alt ne {}} {
+ lappend res macosx${major}.${j}-$alt
+ }
+ }
+
+ # Add unversioned patterns for 10.3/10.4 builds.
+ lappend res macosx-${cpu}
+ lappend res macosx-universal
+ if {$alt ne {}} {
+ lappend res macosx-$alt
+ }
+ } else {
+ lappend res macosx-universal
+ if {$alt ne {}} {
+ lappend res macosx-$alt
+ }
+ }
+ } else {
+ lappend res macosx-universal
+ }
+ }
+ macosx-powerpc {
+ lappend res macosx-universal
+ }
+ macosx-x86_64 -
+ macosx-ix86 {
+ lappend res macosx-universal macosx-i386-x86_64
+ }
+ }
+ lappend res tcl ; # Pure tcl packages are always compatible.
+ return $res
+}
+
+
+# ### ### ### ######### ######### #########
+## Ready
+
+package provide platform 1.0.12
+
+# ### ### ### ######### ######### #########
+## Demo application
+
+if {[info exists argv0] && ($argv0 eq [info script])} {
+ puts ====================================
+ parray tcl_platform
+ puts ====================================
+ puts Generic\ identification:\ [::platform::generic]
+ puts Exact\ identification:\ \ \ [::platform::identify]
+ puts ====================================
+ puts Search\ patterns:
+ puts *\ [join [::platform::patterns [::platform::identify]] \n*\ ]
+ puts ====================================
+ exit 0
+}
diff --git a/library/platform/shell.tcl b/library/platform/shell.tcl
new file mode 100644
index 0000000..d37cdcd
--- /dev/null
+++ b/library/platform/shell.tcl
@@ -0,0 +1,241 @@
+
+# -*- tcl -*-
+# ### ### ### ######### ######### #########
+## Overview
+
+# Higher-level commands which invoke the functionality of this package
+# for an arbitrary tcl shell (tclsh, wish, ...). This is required by a
+# repository as while the tcl shell executing packages uses the same
+# platform in general as a repository application there can be
+# differences in detail (i.e. 32/64 bit builds).
+
+# ### ### ### ######### ######### #########
+## Requirements
+
+package require platform
+namespace eval ::platform::shell {}
+
+# ### ### ### ######### ######### #########
+## Implementation
+
+# -- platform::shell::generic
+
+proc ::platform::shell::generic {shell} {
+ # Argument is the path to a tcl shell.
+
+ CHECK $shell
+ LOCATE base out
+
+ set code {}
+ # Forget any pre-existing platform package, it might be in
+ # conflict with this one.
+ lappend code {package forget platform}
+ # Inject our platform package
+ lappend code [list source $base]
+ # Query and print the architecture
+ lappend code {puts [platform::generic]}
+ # And done
+ lappend code {exit 0}
+
+ set arch [RUN $shell [join $code \n]]
+
+ if {$out} {file delete -force $base}
+ return $arch
+}
+
+# -- platform::shell::identify
+
+proc ::platform::shell::identify {shell} {
+ # Argument is the path to a tcl shell.
+
+ CHECK $shell
+ LOCATE base out
+
+ set code {}
+ # Forget any pre-existing platform package, it might be in
+ # conflict with this one.
+ lappend code {package forget platform}
+ # Inject our platform package
+ lappend code [list source $base]
+ # Query and print the architecture
+ lappend code {puts [platform::identify]}
+ # And done
+ lappend code {exit 0}
+
+ set arch [RUN $shell [join $code \n]]
+
+ if {$out} {file delete -force $base}
+ return $arch
+}
+
+# -- platform::shell::platform
+
+proc ::platform::shell::platform {shell} {
+ # Argument is the path to a tcl shell.
+
+ CHECK $shell
+
+ set code {}
+ lappend code {puts $tcl_platform(platform)}
+ lappend code {exit 0}
+
+ return [RUN $shell [join $code \n]]
+}
+
+# ### ### ### ######### ######### #########
+## Internal helper commands.
+
+proc ::platform::shell::CHECK {shell} {
+ if {![file exists $shell]} {
+ return -code error "Shell \"$shell\" does not exist"
+ }
+ if {![file executable $shell]} {
+ return -code error "Shell \"$shell\" is not executable (permissions)"
+ }
+ return
+}
+
+proc ::platform::shell::LOCATE {bv ov} {
+ upvar 1 $bv base $ov out
+
+ # Locate the platform package for injection into the specified
+ # shell. We are using package management to find it, whereever it
+ # is, instead of using hardwired relative paths. This allows us to
+ # install the two packages as TMs without breaking the code
+ # here. If the found package is wrapped we copy the code somewhere
+ # where the spawned shell will be able to read it.
+
+ # This code is brittle, it needs has to adapt to whatever changes
+ # are made to the TM code, i.e. the provide statement generated by
+ # tm.tcl
+
+ set pl [package ifneeded platform [package require platform]]
+ set base [lindex $pl end]
+
+ set out 0
+ if {[lindex [file system $base]] ne "native"} {
+ set temp [TEMP]
+ file copy -force $base $temp
+ set base $temp
+ set out 1
+ }
+ return
+}
+
+proc ::platform::shell::RUN {shell code} {
+ set c [TEMP]
+ set cc [open $c w]
+ puts $cc $code
+ close $cc
+
+ set e [TEMP]
+
+ set code [catch {
+ exec $shell $c 2> $e
+ } res]
+
+ file delete $c
+
+ if {$code} {
+ append res \n[read [set chan [open $e r]]][close $chan]
+ file delete $e
+ return -code error "Shell \"$shell\" is not executable ($res)"
+ }
+
+ file delete $e
+ return $res
+}
+
+proc ::platform::shell::TEMP {} {
+ set prefix platform
+
+ # This code is copied out of Tcllib's fileutil package.
+ # (TempFile/tempfile)
+
+ set tmpdir [DIR]
+
+ set chars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+ set nrand_chars 10
+ set maxtries 10
+ set access [list RDWR CREAT EXCL TRUNC]
+ set permission 0600
+ set channel ""
+ set checked_dir_writable 0
+ set mypid [pid]
+ for {set i 0} {$i < $maxtries} {incr i} {
+ set newname $prefix
+ for {set j 0} {$j < $nrand_chars} {incr j} {
+ append newname [string index $chars \
+ [expr {int(rand()*62)}]]
+ }
+ set newname [file join $tmpdir $newname]
+ if {[file exists $newname]} {
+ after 1
+ } else {
+ if {[catch {open $newname $access $permission} channel]} {
+ if {!$checked_dir_writable} {
+ set dirname [file dirname $newname]
+ if {![file writable $dirname]} {
+ return -code error "Directory $dirname is not writable"
+ }
+ set checked_dir_writable 1
+ }
+ } else {
+ # Success
+ close $channel
+ return [file normalize $newname]
+ }
+ }
+ }
+ if {$channel != ""} {
+ return -code error "Failed to open a temporary file: $channel"
+ } else {
+ return -code error "Failed to find an unused temporary file name"
+ }
+}
+
+proc ::platform::shell::DIR {} {
+ # This code is copied out of Tcllib's fileutil package.
+ # (TempDir/tempdir)
+
+ global tcl_platform env
+
+ set attempdirs [list]
+
+ foreach tmp {TMPDIR TEMP TMP} {
+ if { [info exists env($tmp)] } {
+ lappend attempdirs $env($tmp)
+ }
+ }
+
+ switch $tcl_platform(platform) {
+ windows {
+ lappend attempdirs "C:\\TEMP" "C:\\TMP" "\\TEMP" "\\TMP"
+ }
+ macintosh {
+ set tmpdir $env(TRASH_FOLDER) ;# a better place?
+ }
+ default {
+ lappend attempdirs \
+ [file join / tmp] \
+ [file join / var tmp] \
+ [file join / usr tmp]
+ }
+ }
+
+ lappend attempdirs [pwd]
+
+ foreach tmp $attempdirs {
+ if { [file isdirectory $tmp] && [file writable $tmp] } {
+ return [file normalize $tmp]
+ }
+ }
+
+ # Fail if nothing worked.
+ return -code error "Unable to determine a proper directory for temporary files"
+}
+
+# ### ### ### ######### ######### #########
+## Ready
+
+package provide platform::shell 1.1.4
diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl
index 26b9e5b..55af4b3 100755
--- a/library/reg/pkgIndex.tcl
+++ b/library/reg/pkgIndex.tcl
@@ -1 +1,9 @@
-package ifneeded registry 1.0 "load [list [file join $dir tclreg82.dll]] registry"
+if {([info commands ::tcl::pkgconfig] eq "")
+ || ([info sharedlibextension] ne ".dll")} return
+if {[::tcl::pkgconfig get debug]} {
+ package ifneeded registry 1.3.0 \
+ [list load [file join $dir tclreg13g.dll] registry]
+} else {
+ package ifneeded registry 1.3.0 \
+ [list load [file join $dir tclreg13.dll] registry]
+}
diff --git a/library/reg1.0/pkgIndex.tcl b/library/reg1.0/pkgIndex.tcl
deleted file mode 100755
index 26b9e5b..0000000
--- a/library/reg1.0/pkgIndex.tcl
+++ /dev/null
@@ -1 +0,0 @@
-package ifneeded registry 1.0 "load [list [file join $dir tclreg82.dll]] registry"
diff --git a/library/safe.tcl b/library/safe.tcl
index 3be7739..394aa97 100644
--- a/library/safe.tcl
+++ b/library/safe.tcl
@@ -4,928 +4,1130 @@
# It implements a virtual path mecanism to hide the real pathnames from the
# slave. It runs in a master interpreter and sets up data structure and
# aliases that will be invoked when used from a slave interpreter.
-#
+#
# See the safe.n man page for details.
#
# Copyright (c) 1996-1997 Sun Microsystems, Inc.
#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: safe.tcl,v 1.5 1999/04/16 00:46:57 stanton Exp $
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# The implementation is based on namespaces. These naming conventions
-# are followed:
+# The implementation is based on namespaces. These naming conventions are
+# followed:
# Private procs starts with uppercase.
# Public procs are exported and starts with lowercase
#
# Needed utilities package
-package require opt 0.4.1;
+package require opt 0.4.1
# Create the safe namespace
namespace eval ::safe {
-
# Exported API:
namespace export interpCreate interpInit interpConfigure interpDelete \
- interpAddToAccessPath interpFindInAccessPath \
- setLogCmd ;
-
- ####
- #
- # Setup the arguments parsing
- #
- ####
-
- # Share the descriptions
- set temp [::tcl::OptKeyRegister {
- {-accessPath -list {} "access path for the slave"}
- {-noStatics "prevent loading of statically linked pkgs"}
- {-statics true "loading of statically linked pkgs"}
- {-nestedLoadOk "allow nested loading"}
- {-nested false "nested loading"}
- {-deleteHook -script {} "delete hook"}
- }]
-
- # create case (slave is optional)
- ::tcl::OptKeyRegister {
- {?slave? -name {} "name of the slave (optional)"}
- } ::safe::interpCreate ;
- # adding the flags sub programs to the command program
- # (relying on Opt's internal implementation details)
- lappend ::tcl::OptDesc(::safe::interpCreate) $::tcl::OptDesc($temp);
-
- # init and configure (slave is needed)
- ::tcl::OptKeyRegister {
- {slave -name {} "name of the slave"}
- } ::safe::interpIC;
- # adding the flags sub programs to the command program
- # (relying on Opt's internal implementation details)
- lappend ::tcl::OptDesc(::safe::interpIC) $::tcl::OptDesc($temp);
- # temp not needed anymore
- ::tcl::OptKeyDelete $temp;
-
+ interpAddToAccessPath interpFindInAccessPath setLogCmd
+}
- # Helper function to resolve the dual way of specifying staticsok
- # (either by -noStatics or -statics 0)
- proc InterpStatics {} {
- foreach v {Args statics noStatics} {
- upvar $v $v
- }
- set flag [::tcl::OptProcArgGiven -noStatics];
- if {$flag && ($noStatics == $statics)
- && ([::tcl::OptProcArgGiven -statics])} {
- return -code error\
- "conflicting values given for -statics and -noStatics";
- }
- if {$flag} {
- return [expr {!$noStatics}];
- } else {
- return $statics
- }
+# Helper function to resolve the dual way of specifying staticsok (either
+# by -noStatics or -statics 0)
+proc ::safe::InterpStatics {} {
+ foreach v {Args statics noStatics} {
+ upvar $v $v
}
+ set flag [::tcl::OptProcArgGiven -noStatics]
+ if {$flag && (!$noStatics == !$statics)
+ && ([::tcl::OptProcArgGiven -statics])} {
+ return -code error\
+ "conflicting values given for -statics and -noStatics"
+ }
+ if {$flag} {
+ return [expr {!$noStatics}]
+ } else {
+ return $statics
+ }
+}
- # Helper function to resolve the dual way of specifying nested loading
- # (either by -nestedLoadOk or -nested 1)
- proc InterpNested {} {
- foreach v {Args nested nestedLoadOk} {
- upvar $v $v
- }
- set flag [::tcl::OptProcArgGiven -nestedLoadOk];
- # note that the test here is the opposite of the "InterpStatics"
- # one (it is not -noNested... because of the wanted default value)
- if {$flag && ($nestedLoadOk != $nested)
- && ([::tcl::OptProcArgGiven -nested])} {
- return -code error\
- "conflicting values given for -nested and -nestedLoadOk";
- }
- if {$flag} {
- # another difference with "InterpStatics"
- return $nestedLoadOk
- } else {
- return $nested
- }
+# Helper function to resolve the dual way of specifying nested loading
+# (either by -nestedLoadOk or -nested 1)
+proc ::safe::InterpNested {} {
+ foreach v {Args nested nestedLoadOk} {
+ upvar $v $v
+ }
+ set flag [::tcl::OptProcArgGiven -nestedLoadOk]
+ # note that the test here is the opposite of the "InterpStatics" one
+ # (it is not -noNested... because of the wanted default value)
+ if {$flag && (!$nestedLoadOk != !$nested)
+ && ([::tcl::OptProcArgGiven -nested])} {
+ return -code error\
+ "conflicting values given for -nested and -nestedLoadOk"
}
+ if {$flag} {
+ # another difference with "InterpStatics"
+ return $nestedLoadOk
+ } else {
+ return $nested
+ }
+}
- ####
- #
- # API entry points that needs argument parsing :
- #
- ####
+####
+#
+# API entry points that needs argument parsing :
+#
+####
+# Interface/entry point function and front end for "Create"
+proc ::safe::interpCreate {args} {
+ set Args [::tcl::OptKeyParse ::safe::interpCreate $args]
+ InterpCreate $slave $accessPath \
+ [InterpStatics] [InterpNested] $deleteHook
+}
- # Interface/entry point function and front end for "Create"
- proc interpCreate {args} {
- set Args [::tcl::OptKeyParse ::safe::interpCreate $args]
- InterpCreate $slave $accessPath \
- [InterpStatics] [InterpNested] $deleteHook;
+proc ::safe::interpInit {args} {
+ set Args [::tcl::OptKeyParse ::safe::interpIC $args]
+ if {![::interp exists $slave]} {
+ return -code error "\"$slave\" is not an interpreter"
}
+ InterpInit $slave $accessPath \
+ [InterpStatics] [InterpNested] $deleteHook
+}
- proc interpInit {args} {
- set Args [::tcl::OptKeyParse ::safe::interpIC $args]
- if {![::interp exists $slave]} {
- return -code error \
- "\"$slave\" is not an interpreter";
- }
- InterpInit $slave $accessPath \
- [InterpStatics] [InterpNested] $deleteHook;
+# Check that the given slave is "one of us"
+proc ::safe::CheckInterp {slave} {
+ namespace upvar ::safe S$slave state
+ if {![info exists state] || ![::interp exists $slave]} {
+ return -code error \
+ "\"$slave\" is not an interpreter managed by ::safe::"
}
+}
- proc CheckInterp {slave} {
- if {![IsInterp $slave]} {
- return -code error \
- "\"$slave\" is not an interpreter managed by ::safe::" ;
+# Interface/entry point function and front end for "Configure". This code
+# is awfully pedestrian because it would need more coupling and support
+# between the way we store the configuration values in safe::interp's and
+# the Opt package. Obviously we would like an OptConfigure to avoid
+# duplicating all this code everywhere.
+# -> TODO (the app should share or access easily the program/value stored
+# by opt)
+
+# This is even more complicated by the boolean flags with no values that
+# we had the bad idea to support for the sake of user simplicity in
+# create/init but which makes life hard in configure...
+# So this will be hopefully written and some integrated with opt1.0
+# (hopefully for tcl8.1 ?)
+proc ::safe::interpConfigure {args} {
+ switch [llength $args] {
+ 1 {
+ # If we have exactly 1 argument the semantic is to return all
+ # the current configuration. We still call OptKeyParse though
+ # we know that "slave" is our given argument because it also
+ # checks for the "-help" option.
+ set Args [::tcl::OptKeyParse ::safe::interpIC $args]
+ CheckInterp $slave
+ namespace upvar ::safe S$slave state
+
+ return [join [list \
+ [list -accessPath $state(access_path)] \
+ [list -statics $state(staticsok)] \
+ [list -nested $state(nestedok)] \
+ [list -deleteHook $state(cleanupHook)]]]
}
- }
-
- # Interface/entry point function and front end for "Configure"
- # This code is awfully pedestrian because it would need
- # more coupling and support between the way we store the
- # configuration values in safe::interp's and the Opt package
- # Obviously we would like an OptConfigure
- # to avoid duplicating all this code everywhere. -> TODO
- # (the app should share or access easily the program/value
- # stored by opt)
- # This is even more complicated by the boolean flags with no values
- # that we had the bad idea to support for the sake of user simplicity
- # in create/init but which makes life hard in configure...
- # So this will be hopefully written and some integrated with opt1.0
- # (hopefully for tcl8.1 ?)
- proc interpConfigure {args} {
- switch [llength $args] {
- 1 {
- # If we have exactly 1 argument
- # the semantic is to return all the current configuration
- # We still call OptKeyParse though we know that "slave"
- # is our given argument because it also checks
- # for the "-help" option.
- set Args [::tcl::OptKeyParse ::safe::interpIC $args];
- CheckInterp $slave;
- set res {}
- lappend res [list -accessPath [Set [PathListName $slave]]]
- lappend res [list -statics [Set [StaticsOkName $slave]]]
- lappend res [list -nested [Set [NestedOkName $slave]]]
- lappend res [list -deleteHook [Set [DeleteHookName $slave]]]
- join $res
+ 2 {
+ # If we have exactly 2 arguments the semantic is a "configure
+ # get"
+ lassign $args slave arg
+
+ # get the flag sub program (we 'know' about Opt's internal
+ # representation of data)
+ set desc [lindex [::tcl::OptKeyGetDesc ::safe::interpIC] 2]
+ set hits [::tcl::OptHits desc $arg]
+ if {$hits > 1} {
+ return -code error [::tcl::OptAmbigous $desc $arg]
+ } elseif {$hits == 0} {
+ return -code error [::tcl::OptFlagUsage $desc $arg]
}
- 2 {
- # If we have exactly 2 arguments
- # the semantic is a "configure get"
- ::tcl::Lassign $args slave arg;
- # get the flag sub program (we 'know' about Opt's internal
- # representation of data)
- set desc [lindex [::tcl::OptKeyGetDesc ::safe::interpIC] 2]
- set hits [::tcl::OptHits desc $arg];
- if {$hits > 1} {
- return -code error [::tcl::OptAmbigous $desc $arg]
- } elseif {$hits == 0} {
- return -code error [::tcl::OptFlagUsage $desc $arg]
- }
- CheckInterp $slave;
- set item [::tcl::OptCurDesc $desc];
- set name [::tcl::OptName $item];
- switch -exact -- $name {
- -accessPath {
- return [list -accessPath [Set [PathListName $slave]]]
- }
- -statics {
- return [list -statics [Set [StaticsOkName $slave]]]
- }
- -nested {
- return [list -nested [Set [NestedOkName $slave]]]
- }
- -deleteHook {
- return [list -deleteHook [Set [DeleteHookName $slave]]]
- }
- -noStatics {
- # it is most probably a set in fact
- # but we would need then to jump to the set part
- # and it is not *sure* that it is a set action
- # that the user want, so force it to use the
- # unambigous -statics ?value? instead:
- return -code error\
- "ambigous query (get or set -noStatics ?)\
- use -statics instead";
- }
- -nestedLoadOk {
- return -code error\
- "ambigous query (get or set -nestedLoadOk ?)\
- use -nested instead";
- }
- default {
- return -code error "unknown flag $name (bug)";
- }
+ CheckInterp $slave
+ namespace upvar ::safe S$slave state
+
+ set item [::tcl::OptCurDesc $desc]
+ set name [::tcl::OptName $item]
+ switch -exact -- $name {
+ -accessPath {
+ return [list -accessPath $state(access_path)]
}
- }
- default {
- # Otherwise we want to parse the arguments like init and create
- # did
- set Args [::tcl::OptKeyParse ::safe::interpIC $args];
- CheckInterp $slave;
- # Get the current (and not the default) values of
- # whatever has not been given:
- if {![::tcl::OptProcArgGiven -accessPath]} {
- set doreset 1
- set accessPath [Set [PathListName $slave]]
- } else {
- set doreset 0
+ -statics {
+ return [list -statics $state(staticsok)]
}
- if { (![::tcl::OptProcArgGiven -statics])
- && (![::tcl::OptProcArgGiven -noStatics]) } {
- set statics [Set [StaticsOkName $slave]]
- } else {
- set statics [InterpStatics]
+ -nested {
+ return [list -nested $state(nestedok)]
}
- if { ([::tcl::OptProcArgGiven -nested])
- || ([::tcl::OptProcArgGiven -nestedLoadOk]) } {
- set nested [InterpNested]
- } else {
- set nested [Set [NestedOkName $slave]]
+ -deleteHook {
+ return [list -deleteHook $state(cleanupHook)]
}
- if {![::tcl::OptProcArgGiven -deleteHook]} {
- set deleteHook [Set [DeleteHookName $slave]]
+ -noStatics {
+ # it is most probably a set in fact but we would need
+ # then to jump to the set part and it is not *sure*
+ # that it is a set action that the user want, so force
+ # it to use the unambigous -statics ?value? instead:
+ return -code error\
+ "ambigous query (get or set -noStatics ?)\
+ use -statics instead"
}
- # we can now reconfigure :
- InterpSetConfig $slave $accessPath \
- $statics $nested $deleteHook;
- # auto_reset the slave (to completly synch the new access_path)
- if {$doreset} {
- if {[catch {::interp eval $slave {auto_reset}} msg]} {
- Log $slave "auto_reset failed: $msg";
- } else {
- Log $slave "successful auto_reset" NOTICE;
- }
+ -nestedLoadOk {
+ return -code error\
+ "ambigous query (get or set -nestedLoadOk ?)\
+ use -nested instead"
+ }
+ default {
+ return -code error "unknown flag $name (bug)"
+ }
+ }
+ }
+ default {
+ # Otherwise we want to parse the arguments like init and
+ # create did
+ set Args [::tcl::OptKeyParse ::safe::interpIC $args]
+ CheckInterp $slave
+ namespace upvar ::safe S$slave state
+
+ # Get the current (and not the default) values of whatever has
+ # not been given:
+ if {![::tcl::OptProcArgGiven -accessPath]} {
+ set doreset 1
+ set accessPath $state(access_path)
+ } else {
+ set doreset 0
+ }
+ if {
+ ![::tcl::OptProcArgGiven -statics]
+ && ![::tcl::OptProcArgGiven -noStatics]
+ } then {
+ set statics $state(staticsok)
+ } else {
+ set statics [InterpStatics]
+ }
+ if {
+ [::tcl::OptProcArgGiven -nested] ||
+ [::tcl::OptProcArgGiven -nestedLoadOk]
+ } then {
+ set nested [InterpNested]
+ } else {
+ set nested $state(nestedok)
+ }
+ if {![::tcl::OptProcArgGiven -deleteHook]} {
+ set deleteHook $state(cleanupHook)
+ }
+ # we can now reconfigure :
+ InterpSetConfig $slave $accessPath $statics $nested $deleteHook
+ # auto_reset the slave (to completly synch the new access_path)
+ if {$doreset} {
+ if {[catch {::interp eval $slave {auto_reset}} msg]} {
+ Log $slave "auto_reset failed: $msg"
+ } else {
+ Log $slave "successful auto_reset" NOTICE
}
}
}
}
+}
+####
+#
+# Functions that actually implements the exported APIs
+#
+####
- ####
- #
- # Functions that actually implements the exported APIs
- #
- ####
+#
+# safe::InterpCreate : doing the real job
+#
+# This procedure creates a safe slave and initializes it with the safe
+# base aliases.
+# NB: slave name must be simple alphanumeric string, no spaces, no (), no
+# {},... {because the state array is stored as part of the name}
+#
+# Returns the slave name.
+#
+# Optional Arguments :
+# + slave name : if empty, generated name will be used
+# + access_path: path list controlling where load/source can occur,
+# if empty: the master auto_path will be used.
+# + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx)
+# if 1 :static packages are ok.
+# + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub)
+# if 1 : multiple levels are ok.
+
+# use the full name and no indent so auto_mkIndex can find us
+proc ::safe::InterpCreate {
+ slave
+ access_path
+ staticsok
+ nestedok
+ deletehook
+ } {
+ # Create the slave.
+ if {$slave ne ""} {
+ ::interp create -safe $slave
+ } else {
+ # empty argument: generate slave name
+ set slave [::interp create -safe]
+ }
+ Log $slave "Created" NOTICE
+ # Initialize it. (returns slave name)
+ InterpInit $slave $access_path $staticsok $nestedok $deletehook
+}
- #
- # safe::InterpCreate : doing the real job
- #
- # This procedure creates a safe slave and initializes it with the
- # safe base aliases.
- # NB: slave name must be simple alphanumeric string, no spaces,
- # no (), no {},... {because the state array is stored as part of the name}
- #
- # Returns the slave name.
- #
- # Optional Arguments :
- # + slave name : if empty, generated name will be used
- # + access_path: path list controlling where load/source can occur,
- # if empty: the master auto_path will be used.
- # + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx)
- # if 1 :static packages are ok.
- # + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub)
- # if 1 : multiple levels are ok.
-
- # use the full name and no indent so auto_mkIndex can find us
- proc ::safe::InterpCreate {
- slave
- access_path
- staticsok
- nestedok
- deletehook
- } {
- # Create the slave.
- if {[string compare "" $slave]} {
- ::interp create -safe $slave;
- } else {
- # empty argument: generate slave name
- set slave [::interp create -safe];
+#
+# InterpSetConfig (was setAccessPath) :
+# Sets up slave virtual auto_path and corresponding structure within
+# the master. Also sets the tcl_library in the slave to be the first
+# directory in the path.
+# NB: If you change the path after the slave has been initialized you
+# probably need to call "auto_reset" in the slave in order that it gets
+# the right auto_index() array values.
+
+proc ::safe::InterpSetConfig {slave access_path staticsok nestedok deletehook} {
+ global auto_path
+
+ # determine and store the access path if empty
+ if {$access_path eq ""} {
+ set access_path $auto_path
+
+ # Make sure that tcl_library is in auto_path and at the first
+ # position (needed by setAccessPath)
+ set where [lsearch -exact $access_path [info library]]
+ if {$where == -1} {
+ # not found, add it.
+ set access_path [linsert $access_path 0 [info library]]
+ Log $slave "tcl_library was not in auto_path,\
+ added it to slave's access_path" NOTICE
+ } elseif {$where != 0} {
+ # not first, move it first
+ set access_path [linsert \
+ [lreplace $access_path $where $where] \
+ 0 [info library]]
+ Log $slave "tcl_libray was not in first in auto_path,\
+ moved it to front of slave's access_path" NOTICE
}
- Log $slave "Created" NOTICE;
- # Initialize it. (returns slave name)
- InterpInit $slave $access_path $staticsok $nestedok $deletehook;
+ # Add 1st level sub dirs (will searched by auto loading from tcl
+ # code in the slave using glob and thus fail, so we add them here
+ # so by default it works the same).
+ set access_path [AddSubDirs $access_path]
}
+ Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\
+ nestedok=$nestedok deletehook=($deletehook)" NOTICE
+
+ namespace upvar ::safe S$slave state
+
+ # clear old autopath if it existed
+ # build new one
+ # Extend the access list with the paths used to look for Tcl Modules.
+ # We save the virtual form separately as well, as syncing it with the
+ # slave has to be defered until the necessary commands are present for
+ # setup.
+
+ set norm_access_path {}
+ set slave_access_path {}
+ set map_access_path {}
+ set remap_access_path {}
+ set slave_tm_path {}
+
+ set i 0
+ foreach dir $access_path {
+ set token [PathToken $i]
+ lappend slave_access_path $token
+ lappend map_access_path $token $dir
+ lappend remap_access_path $dir $token
+ lappend norm_access_path [file normalize $dir]
+ incr i
+ }
- #
- # InterpSetConfig (was setAccessPath) :
- # Sets up slave virtual auto_path and corresponding structure
- # within the master. Also sets the tcl_library in the slave
- # to be the first directory in the path.
- # Nb: If you change the path after the slave has been initialized
- # you probably need to call "auto_reset" in the slave in order that it
- # gets the right auto_index() array values.
-
- proc ::safe::InterpSetConfig {slave access_path staticsok\
- nestedok deletehook} {
-
- # determine and store the access path if empty
- if {[string match "" $access_path]} {
- set access_path [uplevel #0 set auto_path];
- # Make sure that tcl_library is in auto_path
- # and at the first position (needed by setAccessPath)
- set where [lsearch -exact $access_path [info library]];
- if {$where == -1} {
- # not found, add it.
- set access_path [concat [list [info library]] $access_path];
- Log $slave "tcl_library was not in auto_path,\
- added it to slave's access_path" NOTICE;
- } elseif {$where != 0} {
- # not first, move it first
- set access_path [concat [list [info library]]\
- [lreplace $access_path $where $where]];
- Log $slave "tcl_libray was not in first in auto_path,\
- moved it to front of slave's access_path" NOTICE;
-
- }
-
- # Add 1st level sub dirs (will searched by auto loading from tcl
- # code in the slave using glob and thus fail, so we add them
- # here so by default it works the same).
- set access_path [AddSubDirs $access_path];
- }
-
- Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\
- nestedok=$nestedok deletehook=($deletehook)" NOTICE;
+ set morepaths [::tcl::tm::list]
+ while {[llength $morepaths]} {
+ set addpaths $morepaths
+ set morepaths {}
- # clear old autopath if it existed
- set nname [PathNumberName $slave];
- if {[Exists $nname]} {
- set n [Set $nname];
- for {set i 0} {$i<$n} {incr i} {
- Unset [PathToken $i $slave];
+ foreach dir $addpaths {
+ # Prevent the addition of dirs on the tm list to the
+ # result if they are already known.
+ if {[dict exists $remap_access_path $dir]} {
+ continue
}
- }
- # build new one
- set slave_auto_path {}
- set i 0;
- foreach dir $access_path {
- Set [PathToken $i $slave] $dir;
- lappend slave_auto_path "\$[PathToken $i]";
- incr i;
+ set token [PathToken $i]
+ lappend access_path $dir
+ lappend slave_access_path $token
+ lappend map_access_path $token $dir
+ lappend remap_access_path $dir $token
+ lappend norm_access_path [file normalize $dir]
+ lappend slave_tm_path $token
+ incr i
+
+ # [Bug 2854929]
+ # Recursively find deeper paths which may contain
+ # modules. Required to handle modules with names like
+ # 'platform::shell', which translate into
+ # 'platform/shell-X.tm', i.e arbitrarily deep
+ # subdirectories.
+ lappend morepaths {*}[glob -nocomplain -directory $dir -type d *]
}
- Set $nname $i;
- Set [PathListName $slave] $access_path;
- Set [VirtualPathListName $slave] $slave_auto_path;
-
- Set [StaticsOkName $slave] $staticsok
- Set [NestedOkName $slave] $nestedok
- Set [DeleteHookName $slave] $deletehook
-
- SyncAccessPath $slave;
}
- #
- #
- # FindInAccessPath:
- # Search for a real directory and returns its virtual Id
- # (including the "$")
-proc ::safe::interpFindInAccessPath {slave path} {
- set access_path [GetAccessPath $slave];
- set where [lsearch -exact $access_path $path];
- if {$where == -1} {
- return -code error "$path not found in access path $access_path";
- }
- return "\$[PathToken $where]";
- }
-
- #
- # addToAccessPath:
- # add (if needed) a real directory to access path
- # and return its virtual token (including the "$").
-proc ::safe::interpAddToAccessPath {slave path} {
- # first check if the directory is already in there
- if {![catch {interpFindInAccessPath $slave $path} res]} {
- return $res;
- }
- # new one, add it:
- set nname [PathNumberName $slave];
- set n [Set $nname];
- Set [PathToken $n $slave] $path;
-
- set token "\$[PathToken $n]";
-
- Lappend [VirtualPathListName $slave] $token;
- Lappend [PathListName $slave] $path;
- Set $nname [expr {$n+1}];
+ set state(access_path) $access_path
+ set state(access_path,map) $map_access_path
+ set state(access_path,remap) $remap_access_path
+ set state(access_path,norm) $norm_access_path
+ set state(access_path,slave) $slave_access_path
+ set state(tm_path_slave) $slave_tm_path
+ set state(staticsok) $staticsok
+ set state(nestedok) $nestedok
+ set state(cleanupHook) $deletehook
+
+ SyncAccessPath $slave
+}
- SyncAccessPath $slave;
+#
+#
+# FindInAccessPath:
+# Search for a real directory and returns its virtual Id (including the
+# "$")
+proc ::safe::interpFindInAccessPath {slave path} {
+ namespace upvar ::safe S$slave state
- return $token;
+ if {![dict exists $state(access_path,remap) $path]} {
+ return -code error "$path not found in access path $access_path"
}
- # This procedure applies the initializations to an already existing
- # interpreter. It is useful when you want to install the safe base
- # aliases into a preexisting safe interpreter.
- proc ::safe::InterpInit {
- slave
- access_path
- staticsok
- nestedok
- deletehook
- } {
-
- # Configure will generate an access_path when access_path is
- # empty.
- InterpSetConfig $slave $access_path $staticsok $nestedok $deletehook;
-
- # These aliases let the slave load files to define new commands
+ return [dict get $state(access_path,remap) $path]
+}
- # NB we need to add [namespace current], aliases are always
- # absolute paths.
- ::interp alias $slave source {} [namespace current]::AliasSource $slave
- ::interp alias $slave load {} [namespace current]::AliasLoad $slave
+#
+# addToAccessPath:
+# add (if needed) a real directory to access path and return its
+# virtual token (including the "$").
+proc ::safe::interpAddToAccessPath {slave path} {
+ # first check if the directory is already in there
+ # (inlined interpFindInAccessPath).
+ namespace upvar ::safe S$slave state
- # This alias lets the slave use the encoding names, convertfrom,
- # convertto, and system, but not "encoding system <name>" to set
- # the system encoding.
+ if {[dict exists $state(access_path,remap) $path]} {
+ return [dict get $state(access_path,remap) $path]
+ }
- ::interp alias $slave encoding {} [namespace current]::AliasEncoding \
- $slave
+ # new one, add it:
+ set token [PathToken [llength $state(access_path)]]
- # This alias lets the slave have access to a subset of the 'file'
- # command functionality.
+ lappend state(access_path) $path
+ lappend state(access_path,slave) $token
+ lappend state(access_path,map) $token $path
+ lappend state(access_path,remap) $path $token
+ lappend state(access_path,norm) [file normalize $path]
- AliasSubset $slave file file dir.* join root.* ext.* tail \
- path.* split
+ SyncAccessPath $slave
+ return $token
+}
- # This alias interposes on the 'exit' command and cleanly terminates
- # the slave.
+# This procedure applies the initializations to an already existing
+# interpreter. It is useful when you want to install the safe base aliases
+# into a preexisting safe interpreter.
+proc ::safe::InterpInit {
+ slave
+ access_path
+ staticsok
+ nestedok
+ deletehook
+ } {
+ # Configure will generate an access_path when access_path is empty.
+ InterpSetConfig $slave $access_path $staticsok $nestedok $deletehook
+
+ # NB we need to add [namespace current], aliases are always absolute
+ # paths.
+
+ # These aliases let the slave load files to define new commands
+ # This alias lets the slave use the encoding names, convertfrom,
+ # convertto, and system, but not "encoding system <name>" to set the
+ # system encoding.
+ # Handling Tcl Modules, we need a restricted form of Glob.
+ # This alias interposes on the 'exit' command and cleanly terminates
+ # the slave.
+
+ foreach {command alias} {
+ source AliasSource
+ load AliasLoad
+ encoding AliasEncoding
+ exit interpDelete
+ glob AliasGlob
+ } {
+ ::interp alias $slave $command {} [namespace current]::$alias $slave
+ }
- ::interp alias $slave exit {} [namespace current]::interpDelete $slave
+ # This alias lets the slave have access to a subset of the 'file'
+ # command functionality.
- # The allowed slave variables already have been set
- # by Tcl_MakeSafe(3)
+ ::interp expose $slave file
+ foreach subcommand {dirname extension rootname tail} {
+ ::interp alias $slave ::tcl::file::$subcommand {} \
+ ::safe::AliasFileSubcommand $slave $subcommand
+ }
+ foreach subcommand {
+ atime attributes copy delete executable exists isdirectory isfile
+ link lstat mtime mkdir nativename normalize owned readable readlink
+ rename size stat tempfile type volumes writable
+ } {
+ ::interp alias $slave ::tcl::file::$subcommand {} \
+ ::safe::BadSubcommand $slave file $subcommand
+ }
+ # Subcommands of info
+ foreach {subcommand alias} {
+ nameofexecutable AliasExeName
+ } {
+ ::interp alias $slave ::tcl::info::$subcommand \
+ {} [namespace current]::$alias $slave
+ }
- # Source init.tcl into the slave, to get auto_load and other
- # procedures defined:
+ # The allowed slave variables already have been set by Tcl_MakeSafe(3)
- # We don't try to use the -rsrc on the mac because it would get
- # confusing if you would want to customize init.tcl
- # for a given set of safe slaves, on all the platforms
- # you just need to give a specific access_path and
- # the mac should be no exception. As there is no
- # obvious full "safe ressources" design nor implementation
- # for the mac, safe interps there will just don't
- # have that ability. (A specific app can still reenable
- # that using custom aliases if they want to).
- # It would also make the security analysis and the Safe Tcl security
- # model platform dependant and thus more error prone.
+ # Source init.tcl and tm.tcl into the slave, to get auto_load and
+ # other procedures defined:
- if {[catch {::interp eval $slave\
- {source [file join $tcl_library init.tcl]}}\
- msg]} {
- Log $slave "can't source init.tcl ($msg)";
- error "can't source init.tcl into slave $slave ($msg)"
- }
+ if {[catch {::interp eval $slave {
+ source [file join $tcl_library init.tcl]
+ }} msg opt]} {
+ Log $slave "can't source init.tcl ($msg)"
+ return -options $opt "can't source init.tcl into slave $slave ($msg)"
+ }
- return $slave
+ if {[catch {::interp eval $slave {
+ source [file join $tcl_library tm.tcl]
+ }} msg opt]} {
+ Log $slave "can't source tm.tcl ($msg)"
+ return -options $opt "can't source tm.tcl into slave $slave ($msg)"
}
+ # Sync the paths used to search for Tcl modules. This can be done only
+ # now, after tm.tcl was loaded.
+ namespace upvar ::safe S$slave state
+ if {[llength $state(tm_path_slave)] > 0} {
+ ::interp eval $slave [list \
+ ::tcl::tm::add {*}[lreverse $state(tm_path_slave)]]
+ }
+ return $slave
+}
- # Add (only if needed, avoid duplicates) 1 level of
- # sub directories to an existing path list.
- # Also removes non directories from the returned list.
- proc AddSubDirs {pathList} {
- set res {}
- foreach dir $pathList {
- if {[file isdirectory $dir]} {
- # check that we don't have it yet as a children
- # of a previous dir
- if {[lsearch -exact $res $dir]<0} {
- lappend res $dir;
- }
- foreach sub [glob -nocomplain -- [file join $dir *]] {
- if { ([file isdirectory $sub])
- && ([lsearch -exact $res $sub]<0) } {
- # new sub dir, add it !
- lappend res $sub;
- }
+# Add (only if needed, avoid duplicates) 1 level of sub directories to an
+# existing path list. Also removes non directories from the returned
+# list.
+proc ::safe::AddSubDirs {pathList} {
+ set res {}
+ foreach dir $pathList {
+ if {[file isdirectory $dir]} {
+ # check that we don't have it yet as a children of a previous
+ # dir
+ if {$dir ni $res} {
+ lappend res $dir
+ }
+ foreach sub [glob -directory $dir -nocomplain *] {
+ if {[file isdirectory $sub] && ($sub ni $res)} {
+ # new sub dir, add it !
+ lappend res $sub
}
}
}
- return $res;
}
+ return $res
+}
- # This procedure deletes a safe slave managed by Safe Tcl and
- # cleans up associated state:
+# This procedure deletes a safe slave managed by Safe Tcl and cleans up
+# associated state:
proc ::safe::interpDelete {slave} {
-
- Log $slave "About to delete" NOTICE;
-
- # If the slave has a cleanup hook registered, call it.
- # check the existance because we might be called to delete an interp
- # which has not been registered with us at all
- set hookname [DeleteHookName $slave];
- if {[Exists $hookname]} {
- set hook [Set $hookname];
- if {![::tcl::Lempty $hook]} {
- # remove the hook now, otherwise if the hook
- # calls us somehow, we'll loop
- Unset $hookname;
- if {[catch {eval $hook [list $slave]} err]} {
- Log $slave "Delete hook error ($err)";
- }
+ Log $slave "About to delete" NOTICE
+
+ namespace upvar ::safe S$slave state
+
+ # If the slave has a cleanup hook registered, call it. Check the
+ # existance because we might be called to delete an interp which has
+ # not been registered with us at all
+
+ if {[info exists state(cleanupHook)]} {
+ set hook $state(cleanupHook)
+ if {[llength $hook]} {
+ # remove the hook now, otherwise if the hook calls us somehow,
+ # we'll loop
+ unset state(cleanupHook)
+ try {
+ {*}$hook $slave
+ } on error err {
+ Log $slave "Delete hook error ($err)"
}
}
+ }
- # Discard the global array of state associated with the slave, and
- # delete the interpreter.
-
- set statename [InterpStateName $slave];
- if {[Exists $statename]} {
- Unset $statename;
- }
+ # Discard the global array of state associated with the slave, and
+ # delete the interpreter.
- # if we have been called twice, the interp might have been deleted
- # already
- if {[::interp exists $slave]} {
- ::interp delete $slave;
- Log $slave "Deleted" NOTICE;
- }
+ if {[info exists state]} {
+ unset state
+ }
- return
+ # if we have been called twice, the interp might have been deleted
+ # already
+ if {[::interp exists $slave]} {
+ ::interp delete $slave
+ Log $slave "Deleted" NOTICE
}
- # Set (or get) the loging mecanism
+ return
+}
+
+# Set (or get) the logging mecanism
proc ::safe::setLogCmd {args} {
- variable Log;
- if {[llength $args] == 0} {
- return $Log;
+ variable Log
+ set la [llength $args]
+ if {$la == 0} {
+ return $Log
+ } elseif {$la == 1} {
+ set Log [lindex $args 0]
} else {
- if {[llength $args] == 1} {
- set Log [lindex $args 0];
- } else {
- set Log $args
+ set Log $args
+ }
+
+ if {$Log eq ""} {
+ # Disable logging completely. Calls to it will be compiled out
+ # of all users.
+ proc ::safe::Log {args} {}
+ } else {
+ # Activate logging, define proper command.
+
+ proc ::safe::Log {slave msg {type ERROR}} {
+ variable Log
+ {*}$Log "$type for slave $slave : $msg"
+ return
}
}
}
- # internal variable
- variable Log {}
+# ------------------- END OF PUBLIC METHODS ------------
- # ------------------- END OF PUBLIC METHODS ------------
+#
+# Sets the slave auto_path to the master recorded value. Also sets
+# tcl_library to the first token of the virtual path.
+#
+proc ::safe::SyncAccessPath {slave} {
+ namespace upvar ::safe S$slave state
+ set slave_access_path $state(access_path,slave)
+ ::interp eval $slave [list set auto_path $slave_access_path]
- #
- # sets the slave auto_path to the master recorded value.
- # also sets tcl_library to the first token of the virtual path.
- #
- proc SyncAccessPath {slave} {
- set slave_auto_path [Set [VirtualPathListName $slave]];
- ::interp eval $slave [list set auto_path $slave_auto_path];
- Log $slave \
- "auto_path in $slave has been set to $slave_auto_path"\
- NOTICE;
- ::interp eval $slave [list set tcl_library [lindex $slave_auto_path 0]];
- }
-
- # base name for storing all the slave states
- # the array variable name for slave foo is thus "Sfoo"
- # and for sub slave {foo bar} "Sfoo bar" (spaces are handled
- # ok everywhere (or should))
- # We add the S prefix to avoid that a slave interp called "Log"
- # would smash our "Log" variable.
- proc InterpStateName {slave} {
- return "S$slave";
- }
-
- # Check that the given slave is "one of us"
- proc IsInterp {slave} {
- expr { ([Exists [InterpStateName $slave]])
- && ([::interp exists $slave])}
- }
-
- # returns the virtual token for directory number N
- # if the slave argument is given,
- # it will return the corresponding master global variable name
- proc PathToken {n {slave ""}} {
- if {[string compare "" $slave]} {
- return "[InterpStateName $slave](access_path,$n)";
- } else {
- # We need to have a ":" in the token string so
- # [file join] on the mac won't turn it into a relative
- # path.
- return "p(:$n:)";
- }
- }
- # returns the variable name of the complete path list
- proc PathListName {slave} {
- return "[InterpStateName $slave](access_path)";
- }
- # returns the variable name of the complete path list
- proc VirtualPathListName {slave} {
- return "[InterpStateName $slave](access_path_slave)";
- }
- # returns the variable name of the number of items
- proc PathNumberName {slave} {
- return "[InterpStateName $slave](access_path,n)";
+ Log $slave "auto_path in $slave has been set to $slave_access_path"\
+ NOTICE
+
+ # This code assumes that info library is the first element in the
+ # list of auto_path's. See -> InterpSetConfig for the code which
+ # ensures this condition.
+
+ ::interp eval $slave [list \
+ set tcl_library [lindex $slave_access_path 0]]
+}
+
+# Returns the virtual token for directory number N.
+proc ::safe::PathToken {n} {
+ # We need to have a ":" in the token string so [file join] on the
+ # mac won't turn it into a relative path.
+ return "\$p(:$n:)" ;# Form tested by case 7.2
+}
+
+#
+# translate virtual path into real path
+#
+proc ::safe::TranslatePath {slave path} {
+ namespace upvar ::safe S$slave state
+
+ # somehow strip the namespaces 'functionality' out (the danger is that
+ # we would strip valid macintosh "../" queries... :
+ if {[string match "*::*" $path] || [string match "*..*" $path]} {
+ return -code error "invalid characters in path $path"
}
- # returns the staticsok flag var name
- proc StaticsOkName {slave} {
- return "[InterpStateName $slave](staticsok)";
+
+ # Use a cached map instead of computed local vars and subst.
+
+ return [string map $state(access_path,map) $path]
+}
+
+# file name control (limit access to files/resources that should be a
+# valid tcl source file)
+proc ::safe::CheckFileName {slave file} {
+ # This used to limit what can be sourced to ".tcl" and forbid files
+ # with more than 1 dot and longer than 14 chars, but I changed that
+ # for 8.4 as a safe interp has enough internal protection already to
+ # allow sourcing anything. - hobbs
+
+ if {![file exists $file]} {
+ # don't tell the file path
+ return -code error "no such file or directory"
}
- # returns the nestedok flag var name
- proc NestedOkName {slave} {
- return "[InterpStateName $slave](nestedok)";
+
+ if {![file readable $file]} {
+ # don't tell the file path
+ return -code error "not readable"
}
- # Run some code at the namespace toplevel
- proc Toplevel {args} {
- namespace eval [namespace current] $args;
+}
+
+# AliasFileSubcommand handles selected subcommands of [file] in safe
+# interpreters that are *almost* safe. In particular, it just acts to
+# prevent discovery of what home directories exist.
+
+proc ::safe::AliasFileSubcommand {slave subcommand name} {
+ if {[string match ~* $name]} {
+ set name ./$name
}
- # set/get values
- proc Set {args} {
- eval Toplevel set $args;
+ tailcall ::interp invokehidden $slave tcl:file:$subcommand $name
+}
+
+# AliasGlob is the target of the "glob" alias in safe interpreters.
+
+proc ::safe::AliasGlob {slave args} {
+ Log $slave "GLOB ! $args" NOTICE
+ set cmd {}
+ set at 0
+ array set got {
+ -directory 0
+ -nocomplain 0
+ -join 0
+ -tails 0
+ -- 0
}
- # lappend on toplevel vars
- proc Lappend {args} {
- eval Toplevel lappend $args;
+
+ if {$::tcl_platform(platform) eq "windows"} {
+ set dirPartRE {^(.*)[\\/]([^\\/]*)$}
+ } else {
+ set dirPartRE {^(.*)/([^/]*)$}
}
- # unset a var/token (currently just an global level eval)
- proc Unset {args} {
- eval Toplevel unset $args;
+
+ set dir {}
+ set virtualdir {}
+
+ while {$at < [llength $args]} {
+ switch -glob -- [set opt [lindex $args $at]] {
+ -nocomplain - -- - -join - -tails {
+ lappend cmd $opt
+ set got($opt) 1
+ incr at
+ }
+ -types - -type {
+ lappend cmd -types [lindex $args [incr at]]
+ incr at
+ }
+ -directory {
+ if {$got($opt)} {
+ return -code error \
+ {"-directory" cannot be used with "-path"}
+ }
+ set got($opt) 1
+ set virtualdir [lindex $args [incr at]]
+ incr at
+ }
+ pkgIndex.tcl {
+ # Oops, this is globbing a subdirectory in regular package
+ # search. That is not wanted. Abort, handler does catch
+ # already (because glob was not defined before). See
+ # package.tcl, lines 484ff in tclPkgUnknown.
+ return -code error "unknown command glob"
+ }
+ -* {
+ Log $slave "Safe base rejecting glob option '$opt'"
+ return -code error "Safe base rejecting glob option '$opt'"
+ }
+ default {
+ break
+ }
+ }
+ if {$got(--)} break
}
- # test existance
- proc Exists {varname} {
- Toplevel info exists $varname;
+
+ # Get the real path from the virtual one and check that the path is in the
+ # access path of that slave. Done after basic argument processing so that
+ # we know if -nocomplain is set.
+ if {$got(-directory)} {
+ try {
+ set dir [TranslatePath $slave $virtualdir]
+ DirInAccessPath $slave $dir
+ } on error msg {
+ Log $slave $msg
+ if {$got(-nocomplain)} return
+ return -code error "permission denied"
+ }
+ lappend cmd -directory $dir
}
- # short cut for access path getting
- proc GetAccessPath {slave} {
- Set [PathListName $slave]
+
+ # Apply the -join semantics ourselves
+ if {$got(-join)} {
+ set args [lreplace $args $at end [join [lrange $args $at end] "/"]]
}
- # short cut for statics ok flag getting
- proc StaticsOk {slave} {
- Set [StaticsOkName $slave]
+
+ # Process remaining pattern arguments
+ set firstPattern [llength $cmd]
+ foreach opt [lrange $args $at end] {
+ if {![regexp $dirPartRE $opt -> thedir thefile]} {
+ set thedir .
+ } elseif {[string match ~* $thedir]} {
+ set thedir ./$thedir
+ }
+ if {$thedir eq "*" &&
+ ($thefile eq "pkgIndex.tcl" || $thefile eq "*.tm")} {
+ set mapped 0
+ foreach d [glob -directory [TranslatePath $slave $virtualdir] \
+ -types d -tails *] {
+ catch {
+ DirInAccessPath $slave \
+ [TranslatePath $slave [file join $virtualdir $d]]
+ lappend cmd [file join $d $thefile]
+ set mapped 1
+ }
+ }
+ if {$mapped} continue
+ }
+ try {
+ DirInAccessPath $slave [TranslatePath $slave \
+ [file join $virtualdir $thedir]]
+ } on error msg {
+ Log $slave $msg
+ if {$got(-nocomplain)} continue
+ return -code error "permission denied"
+ }
+ lappend cmd $opt
}
- # short cut for getting the multiples interps sub loading ok flag
- proc NestedOk {slave} {
- Set [NestedOkName $slave]
+
+ Log $slave "GLOB = $cmd" NOTICE
+
+ if {$got(-nocomplain) && [llength $cmd] eq $firstPattern} {
+ return
}
- # interp deletion storing hook name
- proc DeleteHookName {slave} {
- return [InterpStateName $slave](cleanupHook)
+ try {
+ set entries [::interp invokehidden $slave glob {*}$cmd]
+ } on error msg {
+ Log $slave $msg
+ return -code error "script error"
}
- #
- # translate virtual path into real path
- #
- proc TranslatePath {slave path} {
- # somehow strip the namespaces 'functionality' out (the danger
- # is that we would strip valid macintosh "../" queries... :
- if {[regexp {(::)|(\.\.)} $path]} {
- error "invalid characters in path $path";
- }
- set n [expr {[Set [PathNumberName $slave]]-1}];
- for {} {$n>=0} {incr n -1} {
- # fill the token virtual names with their real value
- set [PathToken $n] [Set [PathToken $n $slave]];
+ Log $slave "GLOB < $entries" NOTICE
+
+ # Translate path back to what the slave should see.
+ set res {}
+ set l [string length $dir]
+ foreach p $entries {
+ if {[string equal -length $l $dir $p]} {
+ set p [string replace $p 0 [expr {$l-1}] $virtualdir]
}
- # replaces the token by their value
- subst -nobackslashes -nocommands $path;
+ lappend res $p
}
+ Log $slave "GLOB > $res" NOTICE
+ return $res
+}
- # Log eventually log an error
- # to enable error logging, set Log to {puts stderr} for instance
- proc Log {slave msg {type ERROR}} {
- variable Log;
- if {[info exists Log] && [llength $Log]} {
- eval $Log [list "$type for slave $slave : $msg"];
+# AliasSource is the target of the "source" alias in safe interpreters.
+
+proc ::safe::AliasSource {slave args} {
+ set argc [llength $args]
+ # Extended for handling of Tcl Modules to allow not only "source
+ # filename", but "source -encoding E filename" as well.
+ if {[lindex $args 0] eq "-encoding"} {
+ incr argc -2
+ set encoding [lindex $args 1]
+ set at 2
+ if {$encoding eq "identity"} {
+ Log $slave "attempt to use the identity encoding"
+ return -code error "permission denied"
}
+ } else {
+ set at 0
+ set encoding {}
}
-
+ if {$argc != 1} {
+ set msg "wrong # args: should be \"source ?-encoding E? fileName\""
+ Log $slave "$msg ($args)"
+ return -code error $msg
+ }
+ set file [lindex $args $at]
- # file name control (limit access to files/ressources that should be
- # a valid tcl source file)
- proc CheckFileName {slave file} {
- # limit what can be sourced to .tcl
- # and forbid files with more than 1 dot and
- # longer than 14 chars
- set ftail [file tail $file];
- if {[string length $ftail]>14} {
- error "$ftail: filename too long";
- }
- if {[regexp {\..*\.} $ftail]} {
- error "$ftail: more than one dot is forbidden";
- }
- if {[string compare $ftail "tclIndex"] && \
- [string compare [string tolower [file extension $ftail]]\
- ".tcl"]} {
- error "$ftail: must be a *.tcl or tclIndex";
- }
+ # get the real path from the virtual one.
+ if {[catch {
+ set realfile [TranslatePath $slave $file]
+ } msg]} {
+ Log $slave $msg
+ return -code error "permission denied"
+ }
+
+ # check that the path is in the access path of that slave
+ if {[catch {
+ FileInAccessPath $slave $realfile
+ } msg]} {
+ Log $slave $msg
+ return -code error "permission denied"
+ }
- if {![file exists $file]} {
- # don't tell the file path
- error "no such file or directory";
- }
+ # do the checks on the filename :
+ if {[catch {
+ CheckFileName $slave $realfile
+ } msg]} {
+ Log $slave "$realfile:$msg"
+ return -code error $msg
+ }
- if {![file readable $file]} {
- # don't tell the file path
- error "not readable";
+ # Passed all the tests, lets source it. Note that we do this all manually
+ # because we want to control [info script] in the slave so information
+ # doesn't leak so much. [Bug 2913625]
+ set old [::interp eval $slave {info script}]
+ set replacementMsg "script error"
+ set code [catch {
+ set f [open $realfile]
+ fconfigure $f -eofchar \032
+ if {$encoding ne ""} {
+ fconfigure $f -encoding $encoding
}
-
+ set contents [read $f]
+ close $f
+ ::interp eval $slave [list info script $file]
+ } msg opt]
+ if {$code == 0} {
+ set code [catch {::interp eval $slave $contents} msg opt]
+ set replacementMsg $msg
}
+ catch {interp eval $slave [list info script $old]}
+ # Note that all non-errors are fine result codes from [source], so we must
+ # take a little care to do it properly. [Bug 2923613]
+ if {$code == 1} {
+ Log $slave $msg
+ return -code error $replacementMsg
+ }
+ return -code $code -options $opt $msg
+}
+# AliasLoad is the target of the "load" alias in safe interpreters.
- # AliasSource is the target of the "source" alias in safe interpreters.
+proc ::safe::AliasLoad {slave file args} {
+ set argc [llength $args]
+ if {$argc > 2} {
+ set msg "load error: too many arguments"
+ Log $slave "$msg ($argc) {$file $args}"
+ return -code error $msg
+ }
- proc AliasSource {slave args} {
+ # package name (can be empty if file is not).
+ set package [lindex $args 0]
+
+ namespace upvar ::safe S$slave state
+
+ # Determine where to load. load use a relative interp path and {}
+ # means self, so we can directly and safely use passed arg.
+ set target [lindex $args 1]
+ if {$target ne ""} {
+ # we will try to load into a sub sub interp; check that we want to
+ # authorize that.
+ if {!$state(nestedok)} {
+ Log $slave "loading to a sub interp (nestedok)\
+ disabled (trying to load $package to $target)"
+ return -code error "permission denied (nested load)"
+ }
+ }
- set argc [llength $args];
- # Allow only "source filename"
- # (and not mac specific -rsrc for instance - see comment in ::init
- # for current rationale)
- if {$argc != 1} {
- set msg "wrong # args: should be \"source fileName\""
- Log $slave "$msg ($args)";
- return -code error $msg;
+ # Determine what kind of load is requested
+ if {$file eq ""} {
+ # static package loading
+ if {$package eq ""} {
+ set msg "load error: empty filename and no package name"
+ Log $slave $msg
+ return -code error $msg
}
- set file [lindex $args 0]
-
- # get the real path from the virtual one.
- if {[catch {set file [TranslatePath $slave $file]} msg]} {
- Log $slave $msg;
- return -code error "permission denied"
+ if {!$state(staticsok)} {
+ Log $slave "static packages loading disabled\
+ (trying to load $package to $target)"
+ return -code error "permission denied (static package)"
}
-
- # check that the path is in the access path of that slave
- if {[catch {FileInAccessPath $slave $file} msg]} {
- Log $slave $msg;
+ } else {
+ # file loading
+
+ # get the real path from the virtual one.
+ try {
+ set file [TranslatePath $slave $file]
+ } on error msg {
+ Log $slave $msg
return -code error "permission denied"
}
- # do the checks on the filename :
- if {[catch {CheckFileName $slave $file} msg]} {
- Log $slave "$file:$msg";
- return -code error $msg;
+ # check the translated path
+ try {
+ FileInAccessPath $slave $file
+ } on error msg {
+ Log $slave $msg
+ return -code error "permission denied (path)"
}
+ }
- # passed all the tests , lets source it:
- if {[catch {::interp invokehidden $slave source $file} msg]} {
- Log $slave $msg;
- return -code error "script error";
- }
- return $msg
+ try {
+ return [::interp invokehidden $slave load $file $package $target]
+ } on error msg {
+ Log $slave $msg
+ return -code error $msg
}
+}
- # AliasLoad is the target of the "load" alias in safe interpreters.
+# FileInAccessPath raises an error if the file is not found in the list of
+# directories contained in the (master side recorded) slave's access path.
- proc AliasLoad {slave file args} {
+# the security here relies on "file dirname" answering the proper
+# result... needs checking ?
+proc ::safe::FileInAccessPath {slave file} {
+ namespace upvar ::safe S$slave state
+ set access_path $state(access_path)
- set argc [llength $args];
- if {$argc > 2} {
- set msg "load error: too many arguments";
- Log $slave "$msg ($argc) {$file $args}";
- return -code error $msg;
- }
+ if {[file isdirectory $file]} {
+ return -code error "\"$file\": is a directory"
+ }
+ set parent [file dirname $file]
- # package name (can be empty if file is not).
- set package [lindex $args 0];
-
- # Determine where to load. load use a relative interp path
- # and {} means self, so we can directly and safely use passed arg.
- set target [lindex $args 1];
- if {[string length $target]} {
- # we will try to load into a sub sub interp
- # check that we want to authorize that.
- if {![NestedOk $slave]} {
- Log $slave "loading to a sub interp (nestedok)\
- disabled (trying to load $package to $target)";
- return -code error "permission denied (nested load)";
- }
-
- }
+ # Normalize paths for comparison since lsearch knows nothing of
+ # potential pathname anomalies.
+ set norm_parent [file normalize $parent]
- # Determine what kind of load is requested
- if {[string length $file] == 0} {
- # static package loading
- if {[string length $package] == 0} {
- set msg "load error: empty filename and no package name";
- Log $slave $msg;
- return -code error $msg;
- }
- if {![StaticsOk $slave]} {
- Log $slave "static packages loading disabled\
- (trying to load $package to $target)";
- return -code error "permission denied (static package)";
- }
- } else {
- # file loading
+ namespace upvar ::safe S$slave state
+ if {$norm_parent ni $state(access_path,norm)} {
+ return -code error "\"$file\": not in access_path"
+ }
+}
- # get the real path from the virtual one.
- if {[catch {set file [TranslatePath $slave $file]} msg]} {
- Log $slave $msg;
- return -code error "permission denied"
- }
+proc ::safe::DirInAccessPath {slave dir} {
+ namespace upvar ::safe S$slave state
+ set access_path $state(access_path)
- # check the translated path
- if {[catch {FileInAccessPath $slave $file} msg]} {
- Log $slave $msg;
- return -code error "permission denied (path)"
- }
- }
+ if {[file isfile $dir]} {
+ return -code error "\"$dir\": is a file"
+ }
- if {[catch {::interp invokehidden\
- $slave load $file $package $target} msg]} {
- Log $slave $msg;
- return -code error $msg
- }
+ # Normalize paths for comparison since lsearch knows nothing of
+ # potential pathname anomalies.
+ set norm_dir [file normalize $dir]
- return $msg
+ namespace upvar ::safe S$slave state
+ if {$norm_dir ni $state(access_path,norm)} {
+ return -code error "\"$dir\": not in access_path"
}
+}
- # FileInAccessPath raises an error if the file is not found in
- # the list of directories contained in the (master side recorded) slave's
- # access path.
-
- # the security here relies on "file dirname" answering the proper
- # result.... needs checking ?
- proc FileInAccessPath {slave file} {
+# This procedure is used to report an attempt to use an unsafe member of an
+# ensemble command.
- set access_path [GetAccessPath $slave];
+proc ::safe::BadSubcommand {slave command subcommand args} {
+ set msg "not allowed to invoke subcommand $subcommand of $command"
+ Log $slave $msg
+ return -code error -errorcode {TCL SAFE SUBCOMMAND} $msg
+}
- if {[file isdirectory $file]} {
- error "\"$file\": is a directory"
- }
- set parent [file dirname $file]
- if {[lsearch -exact $access_path $parent] == -1} {
- error "\"$file\": not in access_path";
+# AliasEncoding is the target of the "encoding" alias in safe interpreters.
+
+proc ::safe::AliasEncoding {slave option args} {
+ # Note that [encoding dirs] is not supported in safe slaves at all
+ set subcommands {convertfrom convertto names system}
+ try {
+ set option [tcl::prefix match -error [list -level 1 -errorcode \
+ [list TCL LOOKUP INDEX option $option]] $subcommands $option]
+ # Special case: [encoding system] ok, but [encoding system foo] not
+ if {$option eq "system" && [llength $args]} {
+ return -code error -errorcode {TCL WRONGARGS} \
+ "wrong # args: should be \"encoding system\""
}
+ } on error {msg options} {
+ Log $slave $msg
+ return -options $options $msg
}
+ tailcall ::interp invokehidden $slave encoding $option {*}$args
+}
- # This procedure enables access from a safe interpreter to only a subset of
- # the subcommands of a command:
+# Various minor hiding of platform features. [Bug 2913625]
- proc Subset {slave command okpat args} {
- set subcommand [lindex $args 0]
- if {[regexp $okpat $subcommand]} {
- return [eval {$command $subcommand} [lrange $args 1 end]]
- }
- set msg "not allowed to invoke subcommand $subcommand of $command";
- Log $slave $msg;
- error $msg;
- }
+proc ::safe::AliasExeName {slave} {
+ return ""
+}
- # This procedure installs an alias in a slave that invokes "safesubset"
- # in the master to execute allowed subcommands. It precomputes the pattern
- # of allowed subcommands; you can use wildcards in the pattern if you wish
- # to allow subcommand abbreviation.
+proc ::safe::Setup {} {
+ ####
+ #
+ # Setup the arguments parsing
#
- # Syntax is: AliasSubset slave alias target subcommand1 subcommand2...
+ ####
- proc AliasSubset {slave alias target args} {
- set pat ^(; set sep ""
- foreach sub $args {
- append pat $sep$sub
- set sep |
- }
- append pat )\$
- ::interp alias $slave $alias {}\
- [namespace current]::Subset $slave $target $pat
- }
+ # Share the descriptions
+ set temp [::tcl::OptKeyRegister {
+ {-accessPath -list {} "access path for the slave"}
+ {-noStatics "prevent loading of statically linked pkgs"}
+ {-statics true "loading of statically linked pkgs"}
+ {-nestedLoadOk "allow nested loading"}
+ {-nested false "nested loading"}
+ {-deleteHook -script {} "delete hook"}
+ }]
- # AliasEncoding is the target of the "encoding" alias in safe interpreters.
+ # create case (slave is optional)
+ ::tcl::OptKeyRegister {
+ {?slave? -name {} "name of the slave (optional)"}
+ } ::safe::interpCreate
- proc AliasEncoding {slave args} {
+ # adding the flags sub programs to the command program (relying on Opt's
+ # internal implementation details)
+ lappend ::tcl::OptDesc(::safe::interpCreate) $::tcl::OptDesc($temp)
- set argc [llength $args];
+ # init and configure (slave is needed)
+ ::tcl::OptKeyRegister {
+ {slave -name {} "name of the slave"}
+ } ::safe::interpIC
- set okpat "^(name.*|convert.*)\$"
- set subcommand [lindex $args 0]
+ # adding the flags sub programs to the command program (relying on Opt's
+ # internal implementation details)
+ lappend ::tcl::OptDesc(::safe::interpIC) $::tcl::OptDesc($temp)
- if {[regexp $okpat $subcommand]} {
- return [eval ::interp invokehidden $slave encoding $subcommand \
- [lrange $args 1 end]]
- }
+ # temp not needed anymore
+ ::tcl::OptKeyDelete $temp
- if {[string match $subcommand system]} {
- if {$argc == 1} {
- # passed all the tests , lets source it:
- if {[catch {::interp invokehidden \
- $slave encoding system} msg]} {
- Log $slave $msg;
- return -code error "script error";
- }
- } else {
- set msg "wrong # args: should be \"encoding system\"";
- Log $slave $msg;
- error $msg;
- }
- } else {
- set msg "wrong # args: should be \"encoding option ?arg ...?\"";
- Log $slave $msg;
- error $msg;
- }
-
-
- return $msg
- }
+ ####
+ #
+ # Default: No logging.
+ #
+ ####
+
+ setLogCmd {}
+ # Log eventually.
+ # To enable error logging, set Log to {puts stderr} for instance,
+ # via setLogCmd.
+ return
}
+
+namespace eval ::safe {
+ # internal variables
+
+ # Log command, set via 'setLogCmd'. Logging is disabled when empty.
+ variable Log {}
+
+ # The package maintains a state array per slave interp under its
+ # control. The name of this array is S<interp-name>. This array is
+ # brought into scope where needed, using 'namespace upvar'. The S
+ # prefix is used to avoid that a slave interp called "Log" smashes
+ # the "Log" variable.
+ #
+ # The array's elements are:
+ #
+ # access_path : List of paths accessible to the slave.
+ # access_path,norm : Ditto, in normalized form.
+ # access_path,slave : Ditto, as the path tokens as seen by the slave.
+ # access_path,map : dict ( token -> path )
+ # access_path,remap : dict ( path -> token )
+ # tm_path_slave : List of TM root directories, as tokens seen by the slave.
+ # staticsok : Value of option -statics
+ # nestedok : Value of option -nested
+ # cleanupHook : Value of option -deleteHook
+}
+
+::safe::Setup
diff --git a/library/tclIndex b/library/tclIndex
index 35c7cf6..26603c1 100644
--- a/library/tclIndex
+++ b/library/tclIndex
@@ -1,4 +1,5 @@
# Tcl autoload index file, version 2.0
+# -*- tcl -*-
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
@@ -27,12 +28,11 @@ set auto_index(::tcl::HistRedo) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistIndex) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistEvent) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistChange) [list source [file join $dir history.tcl]]
-set auto_index(tclLdAout) [list source [file join $dir ldAout.tcl]]
-set auto_index(pkg_compareExtension) [list source [file join $dir package.tcl]]
set auto_index(pkg_mkIndex) [list source [file join $dir package.tcl]]
set auto_index(tclPkgSetup) [list source [file join $dir package.tcl]]
-set auto_index(tclMacPkgSearch) [list source [file join $dir package.tcl]]
set auto_index(tclPkgUnknown) [list source [file join $dir package.tcl]]
+set auto_index(::tcl::MacOSXPkgUnknown) [list source [file join $dir package.tcl]]
+set auto_index(::pkg::create) [list source [file join $dir package.tcl]]
set auto_index(parray) [list source [file join $dir parray.tcl]]
set auto_index(::safe::InterpStatics) [list source [file join $dir safe.tcl]]
set auto_index(::safe::InterpNested) [list source [file join $dir safe.tcl]]
@@ -49,33 +49,27 @@ set auto_index(::safe::AddSubDirs) [list source [file join $dir safe.tcl]]
set auto_index(::safe::interpDelete) [list source [file join $dir safe.tcl]]
set auto_index(::safe::setLogCmd) [list source [file join $dir safe.tcl]]
set auto_index(::safe::SyncAccessPath) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::InterpStateName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::IsInterp) [list source [file join $dir safe.tcl]]
set auto_index(::safe::PathToken) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::PathListName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::VirtualPathListName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::PathNumberName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::StaticsOkName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::NestedOkName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Toplevel) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Set) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Lappend) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Unset) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Exists) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::GetAccessPath) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::StaticsOk) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::NestedOk) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::DeleteHookName) [list source [file join $dir safe.tcl]]
set auto_index(::safe::TranslatePath) [list source [file join $dir safe.tcl]]
set auto_index(::safe::Log) [list source [file join $dir safe.tcl]]
set auto_index(::safe::CheckFileName) [list source [file join $dir safe.tcl]]
+set auto_index(::safe::AliasGlob) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasSource) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasLoad) [list source [file join $dir safe.tcl]]
set auto_index(::safe::FileInAccessPath) [list source [file join $dir safe.tcl]]
+set auto_index(::safe::DirInAccessPath) [list source [file join $dir safe.tcl]]
set auto_index(::safe::Subset) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasSubset) [list source [file join $dir safe.tcl]]
+set auto_index(::safe::AliasEncoding) [list source [file join $dir safe.tcl]]
set auto_index(tcl_wordBreakAfter) [list source [file join $dir word.tcl]]
set auto_index(tcl_wordBreakBefore) [list source [file join $dir word.tcl]]
set auto_index(tcl_endOfWord) [list source [file join $dir word.tcl]]
set auto_index(tcl_startOfNextWord) [list source [file join $dir word.tcl]]
set auto_index(tcl_startOfPreviousWord) [list source [file join $dir word.tcl]]
+set auto_index(::tcl::tm::add) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::remove) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::list) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::Defaults) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::UnknownHandler) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::roots) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::path) [list source [file join $dir tm.tcl]]
diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl
index 96b38cc..c99ad2a 100644
--- a/library/tcltest/pkgIndex.tcl
+++ b/library/tcltest/pkgIndex.tcl
@@ -1,5 +1,5 @@
# Tcl package index file, version 1.1
-# This file is generated by the "pkg_mkIndex" command
+# This file is generated by the "pkg_mkIndex -direct" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
@@ -8,11 +8,5 @@
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
-package ifneeded tcltest 1.0 [list tclPkgSetup $dir tcltest 1.0 \
- {{tcltest.tcl source {::tcltest::bytestring ::tcltest::cleanupTests \
- ::tcltest::dotests ::tcltest::makeDirectory ::tcltest::makeFile \
- ::tcltest::normalizeMsg ::tcltest::removeDirectory \
- ::tcltest::removeFile ::tcltest::restoreState ::tcltest::saveState \
- ::tcltest::test ::tcltest::threadReap ::tcltest::viewFile memory \
- ::tcltest:grep ::tcltest::getMatchingTestFiles }}}]
-
+if {![package vsatisfies [package provide Tcl] 8.5]} {return}
+package ifneeded tcltest 2.3.7 [list source [file join $dir tcltest.tcl]]
diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl
index 039c560..4b94312 100644
--- a/library/tcltest/tcltest.tcl
+++ b/library/tcltest/tcltest.tcl
@@ -1,419 +1,1266 @@
# tcltest.tcl --
#
-# This file contains support code for the Tcl test suite. It
-# defines the ::tcltest namespace and finds and defines the output
-# directory, constraints available, output and error channels, etc. used
-# by Tcl tests. See the README file for more details.
-#
+# This file contains support code for the Tcl test suite. It
+# defines the tcltest namespace and finds and defines the output
+# directory, constraints available, output and error channels,
+# etc. used by Tcl tests. See the tcltest man page for more
+# details.
+#
# This design was based on the Tcl testing approach designed and
-# initially implemented by Mary Ann May-Pumphrey of Sun Microsystems.
+# initially implemented by Mary Ann May-Pumphrey of Sun
+# Microsystems.
#
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
+# Copyright (c) 2000 by Ajuba Solutions
+# Contributions from Don Porter, NIST, 2002. (not subject to US copyright)
# All rights reserved.
-#
-# RCS: @(#) $Id: tcltest.tcl,v 1.9 1999/07/30 01:35:27 jenn Exp $
-
-package provide tcltest 1.0
-# Ensure that we have a minimal auto_path so we don't pick up extra junk.
-set auto_path [list [info library]]
+package require Tcl 8.5 ;# -verbose line uses [info frame]
+namespace eval tcltest {
-# create the "tcltest" namespace for all testing variables and procedures
+ # When the version number changes, be sure to update the pkgIndex.tcl file,
+ # and the install directory in the Makefiles. When the minor version
+ # changes (new feature) be sure to update the man page as well.
+ variable Version 2.3.7
-namespace eval tcltest {
+ # Compatibility support for dumb variables defined in tcltest 1
+ # Do not use these. Call [package provide Tcl] and [info patchlevel]
+ # yourself. You don't need tcltest to wrap it for you.
+ variable version [package provide Tcl]
+ variable patchLevel [info patchlevel]
- # Export the public tcltest procs
- set procList [list test cleanupTests saveState restoreState \
- normalizeMsg makeFile removeFile makeDirectory removeDirectory \
- viewFile bytestring safeFetch threadReap getMatchingTestFiles]
- foreach proc $procList {
- namespace export $proc
+##### Export the public tcltest procs; several categories
+ #
+ # Export the main functional commands that do useful things
+ namespace export cleanupTests loadTestedCommands makeDirectory \
+ makeFile removeDirectory removeFile runAllTests test
+
+ # Export configuration commands that control the functional commands
+ namespace export configure customMatch errorChannel interpreter \
+ outputChannel testConstraint
+
+ # Export commands that are duplication (candidates for deprecation)
+ namespace export bytestring ;# dups [encoding convertfrom identity]
+ namespace export debug ;# [configure -debug]
+ namespace export errorFile ;# [configure -errfile]
+ namespace export limitConstraints ;# [configure -limitconstraints]
+ namespace export loadFile ;# [configure -loadfile]
+ namespace export loadScript ;# [configure -load]
+ namespace export match ;# [configure -match]
+ namespace export matchFiles ;# [configure -file]
+ namespace export matchDirectories ;# [configure -relateddir]
+ namespace export normalizeMsg ;# application of [customMatch]
+ namespace export normalizePath ;# [file normalize] (8.4)
+ namespace export outputFile ;# [configure -outfile]
+ namespace export preserveCore ;# [configure -preservecore]
+ namespace export singleProcess ;# [configure -singleproc]
+ namespace export skip ;# [configure -skip]
+ namespace export skipFiles ;# [configure -notfile]
+ namespace export skipDirectories ;# [configure -asidefromdir]
+ namespace export temporaryDirectory ;# [configure -tmpdir]
+ namespace export testsDirectory ;# [configure -testdir]
+ namespace export verbose ;# [configure -verbose]
+ namespace export viewFile ;# binary encoding [read]
+ namespace export workingDirectory ;# [cd] [pwd]
+
+ # Export deprecated commands for tcltest 1 compatibility
+ namespace export getMatchingFiles mainThread restoreState saveState \
+ threadReap
+
+ # tcltest::normalizePath --
+ #
+ # This procedure resolves any symlinks in the path thus creating
+ # a path without internal redirection. It assumes that the
+ # incoming path is absolute.
+ #
+ # Arguments
+ # pathVar - name of variable containing path to modify.
+ #
+ # Results
+ # The path is modified in place.
+ #
+ # Side Effects:
+ # None.
+ #
+ proc normalizePath {pathVar} {
+ upvar 1 $pathVar path
+ set oldpwd [pwd]
+ catch {cd $path}
+ set path [pwd]
+ cd $oldpwd
+ return $path
}
- # ::tcltest::verbose defaults to "b"
+##### Verification commands used to test values of variables and options
+ #
+ # Verification command that accepts everything
+ proc AcceptAll {value} {
+ return $value
+ }
- variable verbose "b"
+ # Verification command that accepts valid Tcl lists
+ proc AcceptList { list } {
+ return [lrange $list 0 end]
+ }
- # Match and skip patterns default to the empty list, except for
- # matchFiles, which defaults to all .test files in the testsDirectory
+ # Verification command that accepts a glob pattern
+ proc AcceptPattern { pattern } {
+ return [AcceptAll $pattern]
+ }
- variable match {}
- variable skip {}
+ # Verification command that accepts integers
+ proc AcceptInteger { level } {
+ return [incr level 0]
+ }
- variable matchFiles {*.test}
- variable skipFiles {}
+ # Verification command that accepts boolean values
+ proc AcceptBoolean { boolean } {
+ return [expr {$boolean && $boolean}]
+ }
- # By default, don't save core files
- variable preserveCore 0
+ # Verification command that accepts (syntactically) valid Tcl scripts
+ proc AcceptScript { script } {
+ if {![info complete $script]} {
+ return -code error "invalid Tcl script: $script"
+ }
+ return $script
+ }
- # output goes to stdout by default
+ # Verification command that accepts (converts to) absolute pathnames
+ proc AcceptAbsolutePath { path } {
+ return [file join [pwd] $path]
+ }
- variable outputChannel stdout
+ # Verification command that accepts existing readable directories
+ proc AcceptReadable { path } {
+ if {![file readable $path]} {
+ return -code error "\"$path\" is not readable"
+ }
+ return $path
+ }
+ proc AcceptDirectory { directory } {
+ set directory [AcceptAbsolutePath $directory]
+ if {![file exists $directory]} {
+ return -code error "\"$directory\" does not exist"
+ }
+ if {![file isdir $directory]} {
+ return -code error "\"$directory\" is not a directory"
+ }
+ return [AcceptReadable $directory]
+ }
- # errors go to stderr by default
+##### Initialize internal arrays of tcltest, but only if the caller
+ # has not already pre-initialized them. This is done to support
+ # compatibility with older tests that directly access internals
+ # rather than go through command interfaces.
+ #
+ proc ArrayDefault {varName value} {
+ variable $varName
+ if {[array exists $varName]} {
+ return
+ }
+ if {[info exists $varName]} {
+ # Pre-initialized value is a scalar: destroy it!
+ unset $varName
+ }
+ array set $varName $value
+ }
- variable errorChannel stderr
+ # save the original environment so that it can be restored later
+ ArrayDefault originalEnv [array get ::env]
+
+ # initialize numTests array to keep track of the number of tests
+ # that pass, fail, and are skipped.
+ ArrayDefault numTests [list Total 0 Passed 0 Skipped 0 Failed 0]
+
+ # createdNewFiles will store test files as indices and the list of
+ # files (that should not have been) left behind by the test files
+ # as values.
+ ArrayDefault createdNewFiles {}
+
+ # initialize skippedBecause array to keep track of constraints that
+ # kept tests from running; a constraint name of "userSpecifiedSkip"
+ # means that the test appeared on the list of tests that matched the
+ # -skip value given to the flag; "userSpecifiedNonMatch" means that
+ # the test didn't match the argument given to the -match flag; both
+ # of these constraints are counted only if tcltest::debug is set to
+ # true.
+ ArrayDefault skippedBecause {}
+
+ # initialize the testConstraints array to keep track of valid
+ # predefined constraints (see the explanation for the
+ # InitConstraints proc for more details).
+ ArrayDefault testConstraints {}
- # debug output doesn't get printed by default; debug level 1 spits
- # up only the tets that were skipped because they didn't match or were
- # specifically skipped. A debug level of 2 would spit up the tcltest
- # variables and flags provided; a debug level of 3 causes some additional
- # output regarding operations of the test harness. The tcltest package
- # currently implements only up to debug level 3.
+##### Initialize internal variables of tcltest, but only if the caller
+ # has not already pre-initialized them. This is done to support
+ # compatibility with older tests that directly access internals
+ # rather than go through command interfaces.
+ #
+ proc Default {varName value {verify AcceptAll}} {
+ variable $varName
+ if {![info exists $varName]} {
+ variable $varName [$verify $value]
+ } else {
+ variable $varName [$verify [set $varName]]
+ }
+ }
- variable debug 0
+ # Save any arguments that we might want to pass through to other
+ # programs. This is used by the -args flag.
+ # FINDUSER
+ Default parameters {}
- # Count the number of files tested (0 if all.tcl wasn't called).
- # The all.tcl file will set testSingleFile to false, so stats will
- # not be printed until all.tcl calls the cleanupTests proc.
+ # Count the number of files tested (0 if runAllTests wasn't called).
+ # runAllTests will set testSingleFile to false, so stats will
+ # not be printed until runAllTests calls the cleanupTests proc.
# The currentFailure var stores the boolean value of whether the
# current test file has had any failures. The failFiles list
# stores the names of test files that had failures.
-
- variable numTestFiles 0
- variable testSingleFile true
- variable currentFailure false
- variable failFiles {}
+ Default numTestFiles 0 AcceptInteger
+ Default testSingleFile true AcceptBoolean
+ Default currentFailure false AcceptBoolean
+ Default failFiles {} AcceptList
# Tests should remove all files they create. The test suite will
# check the current working dir for files created by the tests.
- # ::tcltest::filesMade keeps track of such files created using the
- # ::tcltest::makeFile and ::tcltest::makeDirectory procedures.
- # ::tcltest::filesExisted stores the names of pre-existing files.
-
- variable filesMade {}
- variable filesExisted {}
-
- # ::tcltest::numTests will store test files as indices and the list
- # of files (that should not have been) left behind by the test files.
-
- array set ::tcltest::createdNewFiles {}
-
- # initialize ::tcltest::numTests array to keep track fo the number of
- # tests that pass, fial, and are skipped.
+ # filesMade keeps track of such files created using the makeFile and
+ # makeDirectory procedures. filesExisted stores the names of
+ # pre-existing files.
+ #
+ # Note that $filesExisted lists only those files that exist in
+ # the original [temporaryDirectory].
+ Default filesMade {} AcceptList
+ Default filesExisted {} AcceptList
+ proc FillFilesExisted {} {
+ variable filesExisted
- array set ::tcltest::numTests [list Total 0 Passed 0 Skipped 0 Failed 0]
+ # Save the names of files that already exist in the scratch directory.
+ foreach file [glob -nocomplain -directory [temporaryDirectory] *] {
+ lappend filesExisted [file tail $file]
+ }
- # initialize ::tcltest::skippedBecause array to keep track of
- # constraints that kept tests from running; a constraint name of
- # "userSpecifiedSkip" means that the test appeared on the list of tests
- # that matched the -skip value given to the flag; "userSpecifiedNonMatch"
- # means that the test didn't match the argument given to the -match flag;
- # both of these constraints are counted only if ::tcltest::debug is set to
- # true.
+ # After successful filling, turn this into a no-op.
+ proc FillFilesExisted args {}
+ }
- array set ::tcltest::skippedBecause {}
+ # Kept only for compatibility
+ Default constraintsSpecified {} AcceptList
+ trace add variable constraintsSpecified read [namespace code {
+ set constraintsSpecified [array names testConstraints] ;#}]
+
+ # tests that use threads need to know which is the main thread
+ Default mainThread 1
+ variable mainThread
+ if {[info commands thread::id] ne {}} {
+ set mainThread [thread::id]
+ } elseif {[info commands testthread] ne {}} {
+ set mainThread [testthread id]
+ }
- # initialize the ::tcltest::testConstraints array to keep track of valid
- # predefined constraints (see the explanation for the
- # ::tcltest::initConstraints proc for more details).
+ # Set workingDirectory to [pwd]. The default output directory for
+ # Tcl tests is the working directory. Whenever this value changes
+ # change to that directory.
+ variable workingDirectory
+ trace add variable workingDirectory write \
+ [namespace code {cd $workingDirectory ;#}]
- array set ::tcltest::testConstraints {}
+ Default workingDirectory [pwd] AcceptAbsolutePath
+ proc workingDirectory { {dir ""} } {
+ variable workingDirectory
+ if {[llength [info level 0]] == 1} {
+ return $workingDirectory
+ }
+ set workingDirectory [AcceptAbsolutePath $dir]
+ }
- # Don't run only the constrained tests by default
- variable limitConstraints false
+ # Set the location of the execuatble
+ Default tcltest [info nameofexecutable]
+ trace add variable tcltest write [namespace code {testConstraint stdio \
+ [eval [ConstraintInitializer stdio]] ;#}]
- # tests that use thread need to know which is the main thread
+ # save the platform information so it can be restored later
+ Default originalTclPlatform [array get ::tcl_platform]
- variable mainThread 1
- if {[info commands testthread] != {}} {
- set mainThread [testthread names]
+ # If a core file exists, save its modification time.
+ if {[file exists [file join [workingDirectory] core]]} {
+ Default coreModTime \
+ [file mtime [file join [workingDirectory] core]]
}
- # save the original environment so that it can be restored later
-
- array set ::tcltest::originalEnv [array get ::env]
+ # stdout and stderr buffers for use when we want to store them
+ Default outData {}
+ Default errData {}
- # Set ::tcltest::workingDirectory to [pwd]. The default output directory
- # for Tcl tests is the working directory.
+ # keep track of test level for nested test commands
+ variable testLevel 0
- variable workingDirectory [pwd]
- variable temporaryDirectory $workingDirectory
+ # the variables and procs that existed when saveState was called are
+ # stored in a variable of the same name
+ Default saveState {}
- # Tests should not rely on the current working directory.
- # Files that are part of the test suite should be accessed relative to
- # ::tcltest::testsDirectory.
-
- set oDir [pwd]
- catch {cd [file join [file dirname [info script]] .. .. tests]}
- variable testsDirectory [pwd]
- cd $oDir
-
- # the variables and procs that existed when ::tcltest::saveState was
- # called are stored in a variable of the same name
- variable saveState {}
+ # Internationalization support -- used in [SetIso8859_1_Locale] and
+ # [RestoreLocale]. Those commands are used in cmdIL.test.
- # Internationalization support
- if {![info exists ::tcltest::isoLocale]} {
+ if {![info exists [namespace current]::isoLocale]} {
variable isoLocale fr
- switch $tcl_platform(platform) {
+ switch -- $::tcl_platform(platform) {
"unix" {
# Try some 'known' values for some platforms:
- switch -exact -- $tcl_platform(os) {
+ switch -exact -- $::tcl_platform(os) {
"FreeBSD" {
- set ::tcltest::isoLocale fr_FR.ISO_8859-1
+ set isoLocale fr_FR.ISO_8859-1
}
HP-UX {
- set ::tcltest::isoLocale fr_FR.iso88591
+ set isoLocale fr_FR.iso88591
}
Linux -
IRIX {
- set ::tcltest::isoLocale fr
+ set isoLocale fr
}
default {
- # Works on SunOS 4 and Solaris, and maybe others...
- # define it to something else on your system
- #if you want to test those.
+ # Works on SunOS 4 and Solaris, and maybe
+ # others... Define it to something else on your
+ # system if you want to test those.
- set ::tcltest::isoLocale iso_8859_1
+ set isoLocale iso_8859_1
}
}
}
"windows" {
- set ::tcltest::isoLocale French
+ set isoLocale French
}
}
}
- # Set the location of the execuatble
- variable tcltest [info nameofexecutable]
+ variable ChannelsWeOpened; array set ChannelsWeOpened {}
+ # output goes to stdout by default
+ Default outputChannel stdout
+ proc outputChannel { {filename ""} } {
+ variable outputChannel
+ variable ChannelsWeOpened
+
+ # This is very subtle and tricky, so let me try to explain.
+ # (Hopefully this longer comment will be clear when I come
+ # back in a few months, unlike its predecessor :) )
+ #
+ # The [outputChannel] command (and underlying variable) have to
+ # be kept in sync with the [configure -outfile] configuration
+ # option ( and underlying variable Option(-outfile) ). This is
+ # accomplished with a write trace on Option(-outfile) that will
+ # update [outputChannel] whenver a new value is written. That
+ # much is easy.
+ #
+ # The trick is that in order to maintain compatibility with
+ # version 1 of tcltest, we must allow every configuration option
+ # to get its inital value from command line arguments. This is
+ # accomplished by setting initial read traces on all the
+ # configuration options to parse the command line option the first
+ # time they are read. These traces are cancelled whenever the
+ # program itself calls [configure].
+ #
+ # OK, then so to support tcltest 1 compatibility, it seems we want
+ # to get the return from [outputFile] to trigger the read traces,
+ # just in case.
+ #
+ # BUT! A little known feature of Tcl variable traces is that
+ # traces are disabled during the handling of other traces. So,
+ # if we trigger read traces on Option(-outfile) and that triggers
+ # command line parsing which turns around and sets an initial
+ # value for Option(-outfile) -- <whew!> -- the write trace that
+ # would keep [outputChannel] in sync with that new initial value
+ # would not fire!
+ #
+ # SO, finally, as a workaround, instead of triggering read traces
+ # by invoking [outputFile], we instead trigger the same set of
+ # read traces by invoking [debug]. Any command that reads a
+ # configuration option would do. [debug] is just a handy one.
+ # The end result is that we support tcltest 1 compatibility and
+ # keep outputChannel and -outfile in sync in all cases.
+ debug
+
+ if {[llength [info level 0]] == 1} {
+ return $outputChannel
+ }
+ if {[info exists ChannelsWeOpened($outputChannel)]} {
+ close $outputChannel
+ unset ChannelsWeOpened($outputChannel)
+ }
+ switch -exact -- $filename {
+ stderr -
+ stdout {
+ set outputChannel $filename
+ }
+ default {
+ set outputChannel [open $filename a]
+ set ChannelsWeOpened($outputChannel) 1
+
+ # If we created the file in [temporaryDirectory], then
+ # [cleanupTests] will delete it, unless we claim it was
+ # already there.
+ set outdir [normalizePath [file dirname \
+ [file join [pwd] $filename]]]
+ if {$outdir eq [temporaryDirectory]} {
+ variable filesExisted
+ FillFilesExisted
+ set filename [file tail $filename]
+ if {$filename ni $filesExisted} {
+ lappend filesExisted $filename
+ }
+ }
+ }
+ }
+ return $outputChannel
+ }
- # save the platform information so it can be restored later
- variable originalTclPlatform [array get tcl_platform]
+ # errors go to stderr by default
+ Default errorChannel stderr
+ proc errorChannel { {filename ""} } {
+ variable errorChannel
+ variable ChannelsWeOpened
+
+ # This is subtle and tricky. See the comment above in
+ # [outputChannel] for a detailed explanation.
+ debug
+
+ if {[llength [info level 0]] == 1} {
+ return $errorChannel
+ }
+ if {[info exists ChannelsWeOpened($errorChannel)]} {
+ close $errorChannel
+ unset ChannelsWeOpened($errorChannel)
+ }
+ switch -exact -- $filename {
+ stderr -
+ stdout {
+ set errorChannel $filename
+ }
+ default {
+ set errorChannel [open $filename a]
+ set ChannelsWeOpened($errorChannel) 1
+
+ # If we created the file in [temporaryDirectory], then
+ # [cleanupTests] will delete it, unless we claim it was
+ # already there.
+ set outdir [normalizePath [file dirname \
+ [file join [pwd] $filename]]]
+ if {$outdir eq [temporaryDirectory]} {
+ variable filesExisted
+ FillFilesExisted
+ set filename [file tail $filename]
+ if {$filename ni $filesExisted} {
+ lappend filesExisted $filename
+ }
+ }
+ }
+ }
+ return $errorChannel
+ }
+##### Set up the configurable options
+ #
+ # The configurable options of the package
+ variable Option; array set Option {}
+
+ # Usage strings for those options
+ variable Usage; array set Usage {}
+
+ # Verification commands for those options
+ variable Verify; array set Verify {}
+
+ # Initialize the default values of the configurable options that are
+ # historically associated with an exported variable. If that variable
+ # is already set, support compatibility by accepting its pre-set value.
+ # Use [trace] to establish ongoing connection between the deprecated
+ # exported variable and the modern option kept as a true internal var.
+ # Also set up usage string and value testing for the option.
+ proc Option {option value usage {verify AcceptAll} {varName {}}} {
+ variable Option
+ variable Verify
+ variable Usage
+ variable OptionControlledVariables
+ variable DefaultValue
+ set Usage($option) $usage
+ set Verify($option) $verify
+ set DefaultValue($option) $value
+ if {[catch {$verify $value} msg]} {
+ return -code error $msg
+ } else {
+ set Option($option) $msg
+ }
+ if {[string length $varName]} {
+ variable $varName
+ if {[info exists $varName]} {
+ if {[catch {$verify [set $varName]} msg]} {
+ return -code error $msg
+ } else {
+ set Option($option) $msg
+ }
+ unset $varName
+ }
+ namespace eval [namespace current] \
+ [list upvar 0 Option($option) $varName]
+ # Workaround for Bug (now Feature Request) 572889. Grrrr....
+ # Track all the variables tied to options
+ lappend OptionControlledVariables $varName
+ # Later, set auto-configure read traces on all
+ # of them, since a single trace on Option does not work.
+ proc $varName {{value {}}} [subst -nocommands {
+ if {[llength [info level 0]] == 2} {
+ Configure $option [set value]
+ }
+ return [Configure $option]
+ }]
+ }
+ }
- # If a core file exists, save its modification time.
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- variable coreModificationTime [file mtime [file join \
- $::tcltest::workingDirectory core]]
+ proc MatchingOption {option} {
+ variable Option
+ set match [array names Option $option*]
+ switch -- [llength $match] {
+ 0 {
+ set sorted [lsort [array names Option]]
+ set values [join [lrange $sorted 0 end-1] ", "]
+ append values ", or [lindex $sorted end]"
+ return -code error "unknown option $option: should be\
+ one of $values"
+ }
+ 1 {
+ return [lindex $match 0]
+ }
+ default {
+ # Exact match trumps ambiguity
+ if {$option in $match} {
+ return $option
+ }
+ set values [join [lrange $match 0 end-1] ", "]
+ append values ", or [lindex $match end]"
+ return -code error "ambiguous option $option:\
+ could match $values"
+ }
+ }
+ }
+
+ proc EstablishAutoConfigureTraces {} {
+ variable OptionControlledVariables
+ foreach varName [concat $OptionControlledVariables Option] {
+ variable $varName
+ trace add variable $varName read [namespace code {
+ ProcessCmdLineArgs ;#}]
+ }
+ }
+
+ proc RemoveAutoConfigureTraces {} {
+ variable OptionControlledVariables
+ foreach varName [concat $OptionControlledVariables Option] {
+ variable $varName
+ foreach pair [trace info variable $varName] {
+ lassign $pair op cmd
+ if {($op eq "read") &&
+ [string match *ProcessCmdLineArgs* $cmd]} {
+ trace remove variable $varName $op $cmd
+ }
+ }
+ }
+ # Once the traces are removed, this can become a no-op
+ proc RemoveAutoConfigureTraces {} {}
+ }
+
+ proc Configure args {
+ variable Option
+ variable Verify
+ set n [llength $args]
+ if {$n == 0} {
+ return [lsort [array names Option]]
+ }
+ if {$n == 1} {
+ if {[catch {MatchingOption [lindex $args 0]} option]} {
+ return -code error $option
+ }
+ return $Option($option)
+ }
+ while {[llength $args] > 1} {
+ if {[catch {MatchingOption [lindex $args 0]} option]} {
+ return -code error $option
+ }
+ if {[catch {$Verify($option) [lindex $args 1]} value]} {
+ return -code error "invalid $option\
+ value \"[lindex $args 1]\": $value"
+ }
+ set Option($option) $value
+ set args [lrange $args 2 end]
+ }
+ if {[llength $args]} {
+ if {[catch {MatchingOption [lindex $args 0]} option]} {
+ return -code error $option
+ }
+ return -code error "missing value for option $option"
+ }
+ }
+ proc configure args {
+ if {[llength $args] > 1} {
+ RemoveAutoConfigureTraces
+ }
+ set code [catch {Configure {*}$args} msg]
+ return -code $code $msg
+ }
+
+ proc AcceptVerbose { level } {
+ set level [AcceptList $level]
+ if {[llength $level] == 1} {
+ if {![regexp {^(pass|body|skip|start|error|line)$} $level]} {
+ # translate single characters abbreviations to expanded list
+ set level [string map {p pass b body s skip t start e error l line} \
+ [split $level {}]]
+ }
+ }
+ set valid [list]
+ foreach v $level {
+ if {[regexp {^(pass|body|skip|start|error|line)$} $v]} {
+ lappend valid $v
+ }
+ }
+ return $valid
+ }
+
+ proc IsVerbose {level} {
+ variable Option
+ return [expr {[lsearch -exact $Option(-verbose) $level] != -1}]
+ }
+
+ # Default verbosity is to show bodies of failed tests
+ Option -verbose {body error} {
+ Takes any combination of the values 'p', 's', 'b', 't', 'e' and 'l'.
+ Test suite will display all passed tests if 'p' is specified, all
+ skipped tests if 's' is specified, the bodies of failed tests if
+ 'b' is specified, and when tests start if 't' is specified.
+ ErrorInfo is displayed if 'e' is specified. Source file line
+ information of failed tests is displayed if 'l' is specified.
+ } AcceptVerbose verbose
+
+ # Match and skip patterns default to the empty list, except for
+ # matchFiles, which defaults to all .test files in the
+ # testsDirectory and matchDirectories, which defaults to all
+ # directories.
+ Option -match * {
+ Run all tests within the specified files that match one of the
+ list of glob patterns given.
+ } AcceptList match
+
+ Option -skip {} {
+ Skip all tests within the specified tests (via -match) and files
+ that match one of the list of glob patterns given.
+ } AcceptList skip
+
+ Option -file *.test {
+ Run tests in all test files that match the glob pattern given.
+ } AcceptPattern matchFiles
+
+ # By default, skip files that appear to be SCCS lock files.
+ Option -notfile l.*.test {
+ Skip all test files that match the glob pattern given.
+ } AcceptPattern skipFiles
+
+ Option -relateddir * {
+ Run tests in directories that match the glob pattern given.
+ } AcceptPattern matchDirectories
+
+ Option -asidefromdir {} {
+ Skip tests in directories that match the glob pattern given.
+ } AcceptPattern skipDirectories
+
+ # By default, don't save core files
+ Option -preservecore 0 {
+ If 2, save any core files produced during testing in the directory
+ specified by -tmpdir. If 1, notify the user if core files are
+ created.
+ } AcceptInteger preserveCore
+
+ # debug output doesn't get printed by default; debug level 1 spits
+ # up only the tests that were skipped because they didn't match or
+ # were specifically skipped. A debug level of 2 would spit up the
+ # tcltest variables and flags provided; a debug level of 3 causes
+ # some additional output regarding operations of the test harness.
+ # The tcltest package currently implements only up to debug level 3.
+ Option -debug 0 {
+ Internal debug level
+ } AcceptInteger debug
+
+ proc SetSelectedConstraints args {
+ variable Option
+ foreach c $Option(-constraints) {
+ testConstraint $c 1
+ }
+ }
+ Option -constraints {} {
+ Do not skip the listed constraints listed in -constraints.
+ } AcceptList
+ trace add variable Option(-constraints) write \
+ [namespace code {SetSelectedConstraints ;#}]
+
+ # Don't run only the "-constraint" specified tests by default
+ proc ClearUnselectedConstraints args {
+ variable Option
+ variable testConstraints
+ if {!$Option(-limitconstraints)} {return}
+ foreach c [array names testConstraints] {
+ if {$c ni $Option(-constraints)} {
+ testConstraint $c 0
+ }
+ }
+ }
+ Option -limitconstraints 0 {
+ whether to run only tests with the constraints
+ } AcceptBoolean limitConstraints
+ trace add variable Option(-limitconstraints) write \
+ [namespace code {ClearUnselectedConstraints ;#}]
+
+ # A test application has to know how to load the tested commands
+ # into the interpreter.
+ Option -load {} {
+ Specifies the script to load the tested commands.
+ } AcceptScript loadScript
+
+ # Default is to run each test file in a separate process
+ Option -singleproc 0 {
+ whether to run all tests in one process
+ } AcceptBoolean singleProcess
+
+ proc AcceptTemporaryDirectory { directory } {
+ set directory [AcceptAbsolutePath $directory]
+ if {![file exists $directory]} {
+ file mkdir $directory
+ }
+ set directory [AcceptDirectory $directory]
+ if {![file writable $directory]} {
+ if {[workingDirectory] eq $directory} {
+ # Special exception: accept the default value
+ # even if the directory is not writable
+ return $directory
+ }
+ return -code error "\"$directory\" is not writeable"
+ }
+ return $directory
+ }
+
+ # Directory where files should be created
+ Option -tmpdir [workingDirectory] {
+ Save temporary files in the specified directory.
+ } AcceptTemporaryDirectory temporaryDirectory
+ trace add variable Option(-tmpdir) write \
+ [namespace code {normalizePath Option(-tmpdir) ;#}]
+
+ # Tests should not rely on the current working directory.
+ # Files that are part of the test suite should be accessed relative
+ # to [testsDirectory]
+ Option -testdir [workingDirectory] {
+ Search tests in the specified directory.
+ } AcceptDirectory testsDirectory
+ trace add variable Option(-testdir) write \
+ [namespace code {normalizePath Option(-testdir) ;#}]
+
+ proc AcceptLoadFile { file } {
+ if {$file eq {}} {return $file}
+ set file [file join [temporaryDirectory] $file]
+ return [AcceptReadable $file]
+ }
+ proc ReadLoadScript {args} {
+ variable Option
+ if {$Option(-loadfile) eq {}} {return}
+ set tmp [open $Option(-loadfile) r]
+ loadScript [read $tmp]
+ close $tmp
+ }
+ Option -loadfile {} {
+ Read the script to load the tested commands from the specified file.
+ } AcceptLoadFile loadFile
+ trace add variable Option(-loadfile) write [namespace code ReadLoadScript]
+
+ proc AcceptOutFile { file } {
+ if {[string equal stderr $file]} {return $file}
+ if {[string equal stdout $file]} {return $file}
+ return [file join [temporaryDirectory] $file]
+ }
+
+ # output goes to stdout by default
+ Option -outfile stdout {
+ Send output from test runs to the specified file.
+ } AcceptOutFile outputFile
+ trace add variable Option(-outfile) write \
+ [namespace code {outputChannel $Option(-outfile) ;#}]
+
+ # errors go to stderr by default
+ Option -errfile stderr {
+ Send errors from test runs to the specified file.
+ } AcceptOutFile errorFile
+ trace add variable Option(-errfile) write \
+ [namespace code {errorChannel $Option(-errfile) ;#}]
+
+ proc loadIntoSlaveInterpreter {slave args} {
+ variable Version
+ interp eval $slave [package ifneeded tcltest $Version]
+ interp eval $slave "tcltest::configure {*}{$args}"
+ interp alias $slave ::tcltest::ReportToMaster \
+ {} ::tcltest::ReportedFromSlave
+ }
+ proc ReportedFromSlave {total passed skipped failed because newfiles} {
+ variable numTests
+ variable skippedBecause
+ variable createdNewFiles
+ incr numTests(Total) $total
+ incr numTests(Passed) $passed
+ incr numTests(Skipped) $skipped
+ incr numTests(Failed) $failed
+ foreach {constraint count} $because {
+ incr skippedBecause($constraint) $count
+ }
+ foreach {testfile created} $newfiles {
+ lappend createdNewFiles($testfile) {*}$created
+ }
+ return
+ }
+}
+
+#####################################################################
+
+# tcltest::Debug* --
+#
+# Internal helper procedures to write out debug information
+# dependent on the chosen level. A test shell may overide
+# them, f.e. to redirect the output into a different
+# channel, or even into a GUI.
+
+# tcltest::DebugPuts --
+#
+# Prints the specified string if the current debug level is
+# higher than the provided level argument.
+#
+# Arguments:
+# level The lowest debug level triggering the output
+# string The string to print out.
+#
+# Results:
+# Prints the string. Nothing else is allowed.
+#
+# Side Effects:
+# None.
+#
+
+proc tcltest::DebugPuts {level string} {
+ variable debug
+ if {$debug >= $level} {
+ puts $string
+ }
+ return
+}
+
+# tcltest::DebugPArray --
+#
+# Prints the contents of the specified array if the current
+# debug level is higher than the provided level argument
+#
+# Arguments:
+# level The lowest debug level triggering the output
+# arrayvar The name of the array to print out.
+#
+# Results:
+# Prints the contents of the array. Nothing else is allowed.
+#
+# Side Effects:
+# None.
+#
+
+proc tcltest::DebugPArray {level arrayvar} {
+ variable debug
+
+ if {$debug >= $level} {
+ catch {upvar 1 $arrayvar $arrayvar}
+ parray $arrayvar
+ }
+ return
+}
+
+# Define our own [parray] in ::tcltest that will inherit use of the [puts]
+# defined in ::tcltest. NOTE: Ought to construct with [info args] and
+# [info default], but can't be bothered now. If [parray] changes, then
+# this will need changing too.
+auto_load ::parray
+proc tcltest::parray {a {pattern *}} [info body ::parray]
+
+# tcltest::DebugDo --
+#
+# Executes the script if the current debug level is greater than
+# the provided level argument
+#
+# Arguments:
+# level The lowest debug level triggering the execution.
+# script The tcl script executed upon a debug level high enough.
+#
+# Results:
+# Arbitrary side effects, dependent on the executed script.
+#
+# Side Effects:
+# None.
+#
+
+proc tcltest::DebugDo {level script} {
+ variable debug
+
+ if {$debug >= $level} {
+ uplevel 1 $script
+ }
+ return
+}
+
+#####################################################################
+
+proc tcltest::Warn {msg} {
+ puts [outputChannel] "WARNING: $msg"
+}
+
+# tcltest::mainThread
+#
+# Accessor command for tcltest variable mainThread.
+#
+proc tcltest::mainThread { {new ""} } {
+ variable mainThread
+ if {[llength [info level 0]] == 1} {
+ return $mainThread
+ }
+ set mainThread $new
+}
+
+# tcltest::testConstraint --
+#
+# sets a test constraint to a value; to do multiple constraints,
+# call this proc multiple times. also returns the value of the
+# named constraint if no value was supplied.
+#
+# Arguments:
+# constraint - name of the constraint
+# value - new value for constraint (should be boolean) - if not
+# supplied, this is a query
+#
+# Results:
+# content of tcltest::testConstraints($constraint)
+#
+# Side effects:
+# none
+
+proc tcltest::testConstraint {constraint {value ""}} {
+ variable testConstraints
+ variable Option
+ DebugPuts 3 "entering testConstraint $constraint $value"
+ if {[llength [info level 0]] == 2} {
+ return $testConstraints($constraint)
}
+ # Check for boolean values
+ if {[catch {expr {$value && $value}} msg]} {
+ return -code error $msg
+ }
+ if {[limitConstraints] && ($constraint ni $Option(-constraints))} {
+ set value 0
+ }
+ set testConstraints($constraint) $value
+}
-}
+# tcltest::interpreter --
+#
+# the interpreter name stored in tcltest::tcltest
+#
+# Arguments:
+# executable name
+#
+# Results:
+# content of tcltest::tcltest
+#
+# Side effects:
+# None.
+
+proc tcltest::interpreter { {interp ""} } {
+ variable tcltest
+ if {[llength [info level 0]] == 1} {
+ return $tcltest
+ }
+ set tcltest $interp
+}
-# ::tcltest::AddToSkippedBecause --
+#####################################################################
+
+# tcltest::AddToSkippedBecause --
#
-# Increments the variable used to track how many tests were skipped
-# because of a particular constraint.
+# Increments the variable used to track how many tests were
+# skipped because of a particular constraint.
#
# Arguments:
# constraint The name of the constraint to be modified
#
# Results:
-# Modifies ::tcltest::skippedBecause; sets the variable to 1 if didn't
-# previously exist - otherwise, it just increments it.
+# Modifies tcltest::skippedBecause; sets the variable to 1 if
+# didn't previously exist - otherwise, it just increments it.
+#
+# Side effects:
+# None.
-proc ::tcltest::AddToSkippedBecause { constraint } {
- # add the constraint to the list of constraints the kept tests
+proc tcltest::AddToSkippedBecause { constraint {value 1}} {
+ # add the constraint to the list of constraints that kept tests
# from running
+ variable skippedBecause
- if {[info exists ::tcltest::skippedBecause($constraint)]} {
- incr ::tcltest::skippedBecause($constraint)
+ if {[info exists skippedBecause($constraint)]} {
+ incr skippedBecause($constraint) $value
} else {
- set ::tcltest::skippedBecause($constraint) 1
+ set skippedBecause($constraint) $value
}
return
}
-# ::tcltest::PrintError --
+# tcltest::PrintError --
#
-# Prints errors to ::tcltest::errorChannel and then flushes that
-# channel, making sure that all messages are < 80 characters per line.
+# Prints errors to tcltest::errorChannel and then flushes that
+# channel, making sure that all messages are < 80 characters per
+# line.
#
# Arguments:
# errorMsg String containing the error to be printed
#
+# Results:
+# None.
+#
+# Side effects:
+# None.
-proc ::tcltest::PrintError {errorMsg} {
+proc tcltest::PrintError {errorMsg} {
set InitialMessage "Error: "
set InitialMsgLen [string length $InitialMessage]
- puts -nonewline $::tcltest::errorChannel $InitialMessage
+ puts -nonewline [errorChannel] $InitialMessage
# Keep track of where the end of the string is.
set endingIndex [string length $errorMsg]
- if {$endingIndex < 80} {
- puts $::tcltest::errorChannel $errorMsg
+ if {$endingIndex < (80 - $InitialMsgLen)} {
+ puts [errorChannel] $errorMsg
} else {
# Print up to 80 characters on the first line, including the
- # InitialMessage.
+ # InitialMessage.
set beginningIndex [string last " " [string range $errorMsg 0 \
[expr {80 - $InitialMsgLen}]]]
- puts $::tcltest::errorChannel [string range $errorMsg 0 $beginningIndex]
-
- while {$beginningIndex != "end"} {
- puts -nonewline $::tcltest::errorChannel \
- [string repeat " " $InitialMsgLen]
- if {[expr {$endingIndex - $beginningIndex}] < 72} {
- puts $::tcltest::errorChannel [string trim \
+ puts [errorChannel] [string range $errorMsg 0 $beginningIndex]
+
+ while {$beginningIndex ne "end"} {
+ puts -nonewline [errorChannel] \
+ [string repeat " " $InitialMsgLen]
+ if {($endingIndex - $beginningIndex)
+ < (80 - $InitialMsgLen)} {
+ puts [errorChannel] [string trim \
[string range $errorMsg $beginningIndex end]]
- set beginningIndex end
+ break
} else {
- set newEndingIndex [expr [string last " " [string range \
- $errorMsg $beginningIndex \
- [expr {$beginningIndex + 72}]]] + $beginningIndex]
- if {($newEndingIndex <= 0) \
+ set newEndingIndex [expr {[string last " " \
+ [string range $errorMsg $beginningIndex \
+ [expr {$beginningIndex
+ + (80 - $InitialMsgLen)}]
+ ]] + $beginningIndex}]
+ if {($newEndingIndex <= 0)
|| ($newEndingIndex <= $beginningIndex)} {
set newEndingIndex end
}
- puts $::tcltest::errorChannel [string trim \
+ puts [errorChannel] [string trim \
[string range $errorMsg \
- $beginningIndex $newEndingIndex]]
+ $beginningIndex $newEndingIndex]]
set beginningIndex $newEndingIndex
}
}
}
- flush $::tcltest::errorChannel
+ flush [errorChannel]
return
}
-proc ::tcltest::initConstraintsHook {} {}
+# tcltest::SafeFetch --
+#
+# The following trace procedure makes it so that we can safely
+# refer to non-existent members of the testConstraints array
+# without causing an error. Instead, reading a non-existent
+# member will return 0. This is necessary because tests are
+# allowed to use constraint "X" without ensuring that
+# testConstraints("X") is defined.
+#
+# Arguments:
+# n1 - name of the array (testConstraints)
+# n2 - array key value (constraint name)
+# op - operation performed on testConstraints (generally r)
+#
+# Results:
+# none
+#
+# Side effects:
+# sets testConstraints($n2) to 0 if it's referenced but never
+# before used
-# ::tcltest::initConstraints --
+proc tcltest::SafeFetch {n1 n2 op} {
+ variable testConstraints
+ DebugPuts 3 "entering SafeFetch $n1 $n2 $op"
+ if {$n2 eq {}} {return}
+ if {![info exists testConstraints($n2)]} {
+ if {[catch {testConstraint $n2 [eval [ConstraintInitializer $n2]]}]} {
+ testConstraint $n2 0
+ }
+ }
+}
+
+# tcltest::ConstraintInitializer --
#
-# Check Constraintsuration information that will determine which tests
-# to run. To do this, create an array ::tcltest::testConstraints. Each
-# element has a 0 or 1 value. If the element is "true" then tests
-# with that constraint will be run, otherwise tests with that constraint
-# will be skipped. See the README file for the list of built-in
-# constraints defined in this procedure.
+# Get or set a script that when evaluated in the tcltest namespace
+# will return a boolean value with which to initialize the
+# associated constraint.
+#
+# Arguments:
+# constraint - name of the constraint initialized by the script
+# script - the initializer script
+#
+# Results
+# boolean value of the constraint - enabled or disabled
+#
+# Side effects:
+# Constraint is initialized for future reference by [test]
+proc tcltest::ConstraintInitializer {constraint {script ""}} {
+ variable ConstraintInitializer
+ DebugPuts 3 "entering ConstraintInitializer $constraint $script"
+ if {[llength [info level 0]] == 2} {
+ return $ConstraintInitializer($constraint)
+ }
+ # Check for boolean values
+ if {![info complete $script]} {
+ return -code error "ConstraintInitializer must be complete script"
+ }
+ set ConstraintInitializer($constraint) $script
+}
+
+# tcltest::InitConstraints --
+#
+# Call all registered constraint initializers to force initialization
+# of all known constraints.
+# See the tcltest man page for the list of built-in constraints defined
+# in this procedure.
#
# Arguments:
# none
#
# Results:
-# The ::tcltest::testConstraints array is reset to have an index for
-# each built-in test constraint.
-
-proc ::tcltest::initConstraints {} {
- global tcl_platform tcl_interactive tk_version
-
- catch {unset ::tcltest::testConstraints}
-
- # The following trace procedure makes it so that we can safely refer to
- # non-existent members of the ::tcltest::testConstraints array without
- # causing an error. Instead, reading a non-existent member will return 0.
- # This is necessary because tests are allowed to use constraint "X" without
- # ensuring that ::tcltest::testConstraints("X") is defined.
-
- trace variable ::tcltest::testConstraints r ::tcltest::safeFetch
-
- proc ::tcltest::safeFetch {n1 n2 op} {
- if {($n2 != {}) && ([info exists ::tcltest::testConstraints($n2)] == 0)} {
- set ::tcltest::testConstraints($n2) 0
- }
- }
-
- ::tcltest::initConstraintsHook
-
- set ::tcltest::testConstraints(unixOnly) \
- [string equal $tcl_platform(platform) "unix"]
- set ::tcltest::testConstraints(macOnly) \
- [string equal $tcl_platform(platform) "macintosh"]
- set ::tcltest::testConstraints(pcOnly) \
- [string equal $tcl_platform(platform) "windows"]
-
- set ::tcltest::testConstraints(unix) $::tcltest::testConstraints(unixOnly)
- set ::tcltest::testConstraints(mac) $::tcltest::testConstraints(macOnly)
- set ::tcltest::testConstraints(pc) $::tcltest::testConstraints(pcOnly)
-
- set ::tcltest::testConstraints(unixOrPc) \
- [expr {$::tcltest::testConstraints(unix) \
- || $::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(macOrPc) \
- [expr {$::tcltest::testConstraints(mac) \
- || $::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(macOrUnix) \
- [expr {$::tcltest::testConstraints(mac) \
- || $::tcltest::testConstraints(unix)}]
-
- set ::tcltest::testConstraints(nt) [string equal $tcl_platform(os) \
- "Windows NT"]
- set ::tcltest::testConstraints(95) [string equal $tcl_platform(os) \
- "Windows 95"]
- set ::tcltest::testConstraints(98) [string equal $tcl_platform(os) \
- "Windows 98"]
- set ::tcltest::testConstraints(win32s) [string equal $tcl_platform(os) \
- "Win32s"]
-
- # The following Constraints switches are used to mark tests that should work,
- # but have been temporarily disabled on certain platforms because they don't
- # and we haven't gotten around to fixing the underlying problem.
-
- set ::tcltest::testConstraints(tempNotPc) \
- [expr {!$::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(tempNotMac) \
- [expr {!$::tcltest::testConstraints(mac)}]
- set ::tcltest::testConstraints(tempNotUnix) \
- [expr {!$::tcltest::testConstraints(unix)}]
-
- # The following Constraints switches are used to mark tests that crash on
- # certain platforms, so that they can be reactivated again when the
- # underlying problem is fixed.
-
- set ::tcltest::testConstraints(pcCrash) \
- [expr {!$::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(win32sCrash) \
- [expr {!$::tcltest::testConstraints(win32s)}]
- set ::tcltest::testConstraints(macCrash) \
- [expr {!$::tcltest::testConstraints(mac)}]
- set ::tcltest::testConstraints(unixCrash) \
- [expr {!$::tcltest::testConstraints(unix)}]
+# The testConstraints array is reset to have an index for each
+# built-in test constraint.
+#
+# Side Effects:
+# None.
+#
+
+proc tcltest::InitConstraints {} {
+ variable ConstraintInitializer
+ initConstraintsHook
+ foreach constraint [array names ConstraintInitializer] {
+ testConstraint $constraint
+ }
+}
+
+proc tcltest::DefineConstraintInitializers {} {
+ ConstraintInitializer singleTestInterp {singleProcess}
+
+ # All the 'pc' constraints are here for backward compatibility and
+ # are not documented. They have been replaced with equivalent 'win'
+ # constraints.
+
+ ConstraintInitializer unixOnly \
+ {string equal $::tcl_platform(platform) unix}
+ ConstraintInitializer macOnly \
+ {string equal $::tcl_platform(platform) macintosh}
+ ConstraintInitializer pcOnly \
+ {string equal $::tcl_platform(platform) windows}
+ ConstraintInitializer winOnly \
+ {string equal $::tcl_platform(platform) windows}
+
+ ConstraintInitializer unix {testConstraint unixOnly}
+ ConstraintInitializer mac {testConstraint macOnly}
+ ConstraintInitializer pc {testConstraint pcOnly}
+ ConstraintInitializer win {testConstraint winOnly}
+
+ ConstraintInitializer unixOrPc \
+ {expr {[testConstraint unix] || [testConstraint pc]}}
+ ConstraintInitializer macOrPc \
+ {expr {[testConstraint mac] || [testConstraint pc]}}
+ ConstraintInitializer unixOrWin \
+ {expr {[testConstraint unix] || [testConstraint win]}}
+ ConstraintInitializer macOrWin \
+ {expr {[testConstraint mac] || [testConstraint win]}}
+ ConstraintInitializer macOrUnix \
+ {expr {[testConstraint mac] || [testConstraint unix]}}
+
+ ConstraintInitializer nt {string equal $::tcl_platform(os) "Windows NT"}
+ ConstraintInitializer 95 {string equal $::tcl_platform(os) "Windows 95"}
+ ConstraintInitializer 98 {string equal $::tcl_platform(os) "Windows 98"}
+
+ # The following Constraints switches are used to mark tests that
+ # should work, but have been temporarily disabled on certain
+ # platforms because they don't and we haven't gotten around to
+ # fixing the underlying problem.
+
+ ConstraintInitializer tempNotPc {expr {![testConstraint pc]}}
+ ConstraintInitializer tempNotWin {expr {![testConstraint win]}}
+ ConstraintInitializer tempNotMac {expr {![testConstraint mac]}}
+ ConstraintInitializer tempNotUnix {expr {![testConstraint unix]}}
+
+ # The following Constraints switches are used to mark tests that
+ # crash on certain platforms, so that they can be reactivated again
+ # when the underlying problem is fixed.
+
+ ConstraintInitializer pcCrash {expr {![testConstraint pc]}}
+ ConstraintInitializer winCrash {expr {![testConstraint win]}}
+ ConstraintInitializer macCrash {expr {![testConstraint mac]}}
+ ConstraintInitializer unixCrash {expr {![testConstraint unix]}}
# Skip empty tests
- set ::tcltest::testConstraints(emptyTest) 0
+ ConstraintInitializer emptyTest {format 0}
# By default, tests that expose known bugs are skipped.
- set ::tcltest::testConstraints(knownBug) 0
+ ConstraintInitializer knownBug {format 0}
# By default, non-portable tests are skipped.
- set ::tcltest::testConstraints(nonPortable) 0
+ ConstraintInitializer nonPortable {format 0}
# Some tests require user interaction.
- set ::tcltest::testConstraints(userInteraction) 0
+ ConstraintInitializer userInteraction {format 0}
- # Some tests must be skipped if the interpreter is not in interactive mode
+ # Some tests must be skipped if the interpreter is not in
+ # interactive mode
- set ::tcltest::testConstraints(interactive) $tcl_interactive
+ ConstraintInitializer interactive \
+ {expr {[info exists ::tcl_interactive] && $::tcl_interactive}}
- # Some tests can only be run if the installation came from a CD image
- # instead of a web image
- # Some tests must be skipped if you are running as root on Unix.
- # Other tests can only be run if you are running as root on Unix.
+ # Some tests can only be run if the installation came from a CD
+ # image instead of a web image. Some tests must be skipped if you
+ # are running as root on Unix. Other tests can only be run if you
+ # are running as root on Unix.
- set ::tcltest::testConstraints(root) 0
- set ::tcltest::testConstraints(notRoot) 1
- set user {}
- if {[string equal $tcl_platform(platform) "unix"]} {
- catch {set user [exec whoami]}
- if {[string equal $user ""]} {
- catch {regexp {^[^(]*\(([^)]*)\)} [exec id] dummy user}
- }
- if {([string equal $user "root"]) || ([string equal $user ""])} {
- set ::tcltest::testConstraints(root) 1
- set ::tcltest::testConstraints(notRoot) 0
- }
- }
+ ConstraintInitializer root {expr \
+ {($::tcl_platform(platform) eq "unix") &&
+ ($::tcl_platform(user) in {root {}})}}
+ ConstraintInitializer notRoot {expr {![testConstraint root]}}
# Set nonBlockFiles constraint: 1 means this platform supports
# setting files into nonblocking mode.
- if {[catch {set f [open defs r]}]} {
- set ::tcltest::testConstraints(nonBlockFiles) 1
- } else {
- if {[catch {fconfigure $f -blocking off}] == 0} {
- set ::tcltest::testConstraints(nonBlockFiles) 1
- } else {
- set ::tcltest::testConstraints(nonBlockFiles) 0
- }
- close $f
+ ConstraintInitializer nonBlockFiles {
+ set code [expr {[catch {set f [open defs r]}]
+ || [catch {chan configure $f -blocking off}]}]
+ catch {close $f}
+ set code
}
# Set asyncPipeClose constraint: 1 means this platform supports
@@ -423,422 +1270,1063 @@ proc ::tcltest::initConstraints {} {
# potential problem with select is apparently interfering.
# (Mark Diekhans).
- if {[string equal $tcl_platform(platform) "unix"]} {
- if {[catch {exec uname -X | fgrep {Release = 3.2v}}] == 0} {
- set ::tcltest::testConstraints(asyncPipeClose) 0
- } else {
- set ::tcltest::testConstraints(asyncPipeClose) 1
- }
- } else {
- set ::tcltest::testConstraints(asyncPipeClose) 1
- }
+ ConstraintInitializer asyncPipeClose {expr {
+ !([string equal unix $::tcl_platform(platform)]
+ && ([catch {exec uname -X | fgrep {Release = 3.2v}}] == 0))}}
# Test to see if we have a broken version of sprintf with respect
# to the "e" format of floating-point numbers.
- set ::tcltest::testConstraints(eformat) 1
- if {[string compare "[format %g 5e-5]" "5e-05"] != 0} {
- set ::tcltest::testConstraints(eformat) 0
- }
+ ConstraintInitializer eformat {string equal [format %g 5e-5] 5e-05}
- # Test to see if execed commands such as cat, echo, rm and so forth are
- # present on this machine.
+ # Test to see if execed commands such as cat, echo, rm and so forth
+ # are present on this machine.
- set ::tcltest::testConstraints(unixExecs) 1
- if {[string equal $tcl_platform(platform) "macintosh"]} {
- set ::tcltest::testConstraints(unixExecs) 0
+ ConstraintInitializer unixExecs {
+ set code 1
+ if {$::tcl_platform(platform) eq "macintosh"} {
+ set code 0
+ }
+ if {$::tcl_platform(platform) eq "windows"} {
+ if {[catch {
+ set file _tcl_test_remove_me.txt
+ makeFile {hello} $file
+ }]} {
+ set code 0
+ } elseif {
+ [catch {exec cat $file}] ||
+ [catch {exec echo hello}] ||
+ [catch {exec sh -c echo hello}] ||
+ [catch {exec wc $file}] ||
+ [catch {exec sleep 1}] ||
+ [catch {exec echo abc > $file}] ||
+ [catch {exec chmod 644 $file}] ||
+ [catch {exec rm $file}] ||
+ [llength [auto_execok mkdir]] == 0 ||
+ [llength [auto_execok fgrep]] == 0 ||
+ [llength [auto_execok grep]] == 0 ||
+ [llength [auto_execok ps]] == 0
+ } {
+ set code 0
+ }
+ removeFile $file
+ }
+ set code
}
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([string equal $tcl_platform(platform) "windows"])} {
- if {[catch {exec cat defs}] == 1} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec echo hello}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec sh -c echo hello}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec wc defs}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {$::tcltest::testConstraints(unixExecs) == 1} {
- exec echo hello > removeMe
- if {[catch {exec rm removeMe}] == 1} {
- set ::tcltest::testConstraints(unixExecs) 0
+
+ ConstraintInitializer stdio {
+ set code 0
+ if {![catch {set f [open "|[list [interpreter]]" w]}]} {
+ if {![catch {puts $f exit}]} {
+ if {![catch {close $f}]} {
+ set code 1
+ }
}
}
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec sleep 1}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec fgrep unixExecs defs}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec ps}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec echo abc > removeMe}] == 0) && \
- ([catch {exec chmod 644 removeMe}] == 1) && \
- ([catch {exec rm removeMe}] == 0)} {
- set ::tcltest::testConstraints(unixExecs) 0
- } else {
- catch {exec rm -f removeMe}
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec mkdir removeMe}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
+ set code
+ }
+
+ # Deliberately call socket with the wrong number of arguments. The
+ # error message you get will indicate whether sockets are available
+ # on this system.
+
+ ConstraintInitializer socket {
+ catch {socket} msg
+ string compare $msg "sockets are not available on this system"
+ }
+
+ # Check for internationalization
+ ConstraintInitializer hasIsoLocale {
+ if {[llength [info commands testlocale]] == 0} {
+ set code 0
} else {
- catch {exec rm -r removeMe}
+ set code [string length [SetIso8859_1_Locale]]
+ RestoreLocale
}
+ set code
}
- # Locate tcltest executable
+}
+#####################################################################
- if {![info exists tk_version]} {
- set tcltest [info nameofexecutable]
+# Usage and command line arguments processing.
- if {$tcltest == "{}"} {
- set tcltest {}
+# tcltest::PrintUsageInfo
+#
+# Prints out the usage information for package tcltest. This can
+# be customized with the redefinition of [PrintUsageInfoHook].
+#
+# Arguments:
+# none
+#
+# Results:
+# none
+#
+# Side Effects:
+# none
+proc tcltest::PrintUsageInfo {} {
+ puts [Usage]
+ PrintUsageInfoHook
+}
+
+proc tcltest::Usage { {option ""} } {
+ variable Usage
+ variable Verify
+ if {[llength [info level 0]] == 1} {
+ set msg "Usage: [file tail [info nameofexecutable]] script "
+ append msg "?-help? ?flag value? ... \n"
+ append msg "Available flags (and valid input values) are:"
+
+ set max 0
+ set allOpts [concat -help [Configure]]
+ foreach opt $allOpts {
+ set foo [Usage $opt]
+ lassign $foo x type($opt) usage($opt)
+ set line($opt) " $opt $type($opt) "
+ set length($opt) [string length $line($opt)]
+ if {$length($opt) > $max} {set max $length($opt)}
+ }
+ set rest [expr {72 - $max}]
+ foreach opt $allOpts {
+ append msg \n$line($opt)
+ append msg [string repeat " " [expr {$max - $length($opt)}]]
+ set u [string trim $usage($opt)]
+ catch {append u " (default: \[[Configure $opt]])"}
+ regsub -all {\s*\n\s*} $u " " u
+ while {[string length $u] > $rest} {
+ set break [string wordstart $u $rest]
+ if {$break == 0} {
+ set break [string wordend $u 0]
+ }
+ append msg [string range $u 0 [expr {$break - 1}]]
+ set u [string trim [string range $u $break end]]
+ append msg \n[string repeat " " $max]
+ }
+ append msg $u
}
+ return $msg\n
+ } elseif {$option eq "-help"} {
+ return [list -help "" "Display this usage information."]
+ } else {
+ set type [lindex [info args $Verify($option)] 0]
+ return [list $option $type $Usage($option)]
}
+}
- set ::tcltest::testConstraints(stdio) 0
- catch {
- catch {file delete -force tmp}
- set f [open tmp w]
- puts $f {
- exit
- }
- close $f
+# tcltest::ProcessFlags --
+#
+# process command line arguments supplied in the flagArray - this
+# is called by processCmdLineArgs. Modifies tcltest variables
+# according to the content of the flagArray.
+#
+# Arguments:
+# flagArray - array containing name/value pairs of flags
+#
+# Results:
+# sets tcltest variables according to their values as defined by
+# flagArray
+#
+# Side effects:
+# None.
- set f [open "|[list $tcltest tmp]" r]
- close $f
-
- set ::tcltest::testConstraints(stdio) 1
+proc tcltest::ProcessFlags {flagArray} {
+ # Process -help first
+ if {"-help" in $flagArray} {
+ PrintUsageInfo
+ exit 1
}
- catch {file delete -force tmp}
- # Deliberately call socket with the wrong number of arguments. The error
- # message you get will indicate whether sockets are available on this
- # system.
+ if {[llength $flagArray] == 0} {
+ RemoveAutoConfigureTraces
+ } else {
+ set args $flagArray
+ while {[llength $args] > 1 && [catch {configure {*}$args} msg]} {
+
+ # Something went wrong parsing $args for tcltest options
+ # Check whether the problem is "unknown option"
+ if {[regexp {^unknown option (\S+):} $msg -> option]} {
+ # Could be this is an option the Hook knows about
+ set moreOptions [processCmdLineArgsAddFlagsHook]
+ if {$option ni $moreOptions} {
+ # Nope. Report the error, including additional options,
+ # but keep going
+ if {[llength $moreOptions]} {
+ append msg ", "
+ append msg [join [lrange $moreOptions 0 end-1] ", "]
+ append msg "or [lindex $moreOptions end]"
+ }
+ Warn $msg
+ }
+ } else {
+ # error is something other than "unknown option"
+ # notify user of the error; and exit
+ puts [errorChannel] $msg
+ exit 1
+ }
- catch {socket} msg
- set ::tcltest::testConstraints(socket) \
- [expr {$msg != "sockets are not available on this system"}]
-
- # Check for internationalization
+ # To recover, find that unknown option and remove up to it.
+ # then retry
+ while {[lindex $args 0] ne $option} {
+ set args [lrange $args 2 end]
+ }
+ set args [lrange $args 2 end]
+ }
+ if {[llength $args] == 1} {
+ puts [errorChannel] \
+ "missing value for option [lindex $args 0]"
+ exit 1
+ }
+ }
- if {[info commands testlocale] == ""} {
- # No testlocale command, no tests...
- set ::tcltest::testConstraints(hasIsoLocale) 0
- } else {
- set ::tcltest::testConstraints(hasIsoLocale) \
- [string length [::tcltest::set_iso8859_1_locale]]
- ::tcltest::restore_locale
+ # Call the hook
+ catch {
+ array set flag $flagArray
+ processCmdLineArgsHook [array get flag]
}
-}
+ return
+}
-# ::tcltest::PrintUsageInfoHook
+# tcltest::ProcessCmdLineArgs --
#
-# Hook used for customization of display of usage information.
+# This procedure must be run after constraint initialization is
+# set up (by [DefineConstraintInitializers]) because some constraints
+# can be overridden.
#
+# Perform configuration according to the command-line options.
+#
+# Arguments:
+# none
+#
+# Results:
+# Sets the above-named variables in the tcltest namespace.
+#
+# Side Effects:
+# None.
+#
+
+proc tcltest::ProcessCmdLineArgs {} {
+ variable originalEnv
+ variable testConstraints
-proc ::tcltest::PrintUsageInfoHook {} {}
+ # The "argv" var doesn't exist in some cases, so use {}.
+ if {![info exists ::argv]} {
+ ProcessFlags {}
+ } else {
+ ProcessFlags $::argv
+ }
-# ::tcltest::PrintUsageInfo
+ # Spit out everything you know if we're at a debug level 2 or
+ # greater
+ DebugPuts 2 "Flags passed into tcltest:"
+ if {[info exists ::env(TCLTEST_OPTIONS)]} {
+ DebugPuts 2 \
+ " ::env(TCLTEST_OPTIONS): $::env(TCLTEST_OPTIONS)"
+ }
+ if {[info exists ::argv]} {
+ DebugPuts 2 " argv: $::argv"
+ }
+ DebugPuts 2 "tcltest::debug = [debug]"
+ DebugPuts 2 "tcltest::testsDirectory = [testsDirectory]"
+ DebugPuts 2 "tcltest::workingDirectory = [workingDirectory]"
+ DebugPuts 2 "tcltest::temporaryDirectory = [temporaryDirectory]"
+ DebugPuts 2 "tcltest::outputChannel = [outputChannel]"
+ DebugPuts 2 "tcltest::errorChannel = [errorChannel]"
+ DebugPuts 2 "Original environment (tcltest::originalEnv):"
+ DebugPArray 2 originalEnv
+ DebugPuts 2 "Constraints:"
+ DebugPArray 2 testConstraints
+}
+
+#####################################################################
+
+# Code to run the tests goes here.
+
+# tcltest::TestPuts --
#
-# Prints out the usage information for package tcltest. This can be
-# customized with the redefinition of ::tcltest::PrintUsageInfoHook.
+# Used to redefine puts in test environment. Stores whatever goes
+# out on stdout in tcltest::outData and stderr in errData before
+# sending it on to the regular puts.
#
# Arguments:
+# same as standard puts
+#
+# Results:
# none
#
+# Side effects:
+# Intercepts puts; data that would otherwise go to stdout, stderr,
+# or file channels specified in outputChannel and errorChannel
+# does not get sent to the normal puts function.
+namespace eval tcltest::Replace {
+ namespace export puts
+}
+proc tcltest::Replace::puts {args} {
+ variable [namespace parent]::outData
+ variable [namespace parent]::errData
+ switch [llength $args] {
+ 1 {
+ # Only the string to be printed is specified
+ append outData [lindex $args 0]\n
+ return
+ # return [Puts [lindex $args 0]]
+ }
+ 2 {
+ # Either -nonewline or channelId has been specified
+ if {[lindex $args 0] eq "-nonewline"} {
+ append outData [lindex $args end]
+ return
+ # return [Puts -nonewline [lindex $args end]]
+ } else {
+ set channel [lindex $args 0]
+ set newline \n
+ }
+ }
+ 3 {
+ if {[lindex $args 0] eq "-nonewline"} {
+ # Both -nonewline and channelId are specified, unless
+ # it's an error. -nonewline is supposed to be argv[0].
+ set channel [lindex $args 1]
+ set newline ""
+ }
+ }
+ }
-proc ::tcltest::PrintUsageInfo {} {
- puts [format "Usage: [file tail [info nameofexecutable]] \
- script ?-help? ?flag value? ... \n\
- Available flags (and valid input values) are: \n\
- -help \t Display this usage information. \n\
- -verbose level \t Takes any combination of the values \n\
- \t 'p', 's' and 'b'. Test suite will \n\
- \t display all passed tests if 'p' is \n\
- \t specified, all skipped tests if 's' \n\
- \t is specified, and the bodies of \n\
- \t failed tests if 'b' is specified. \n\
- \t The default value is 'b'. \n\
- -constraints list\t Do not skip the listed constraints\n\
- -limitconstraints bool\t Only run tests with the constraints\n\
- \t listed in -constraints.\n\
- -match pattern \t Run all tests within the specified \n\
- \t files that match the glob pattern \n\
- \t given. \n\
- -skip pattern \t Skip all tests within the set of \n\
- \t specified tests (via -match) and \n\
- \t files that match the glob pattern \n\
- \t given. \n\
- -file pattern \t Run tests in all test files that \n\
- \t match the glob pattern given. \n\
- -notfile pattern\t Skip all test files that match the \n\
- \t glob pattern given. \n\
- -preservecore level \t If 2, save any core files produced \n\
- \t during testing in the directory \n\
- \t specified by -tmpdir. If 1, notify the\n\
- \t user if core files are created. The default \n\
- \t is $::tcltest::preserveCore. \n\
- -tmpdir directory\t Save temporary files in the specified\n\
- \t directory. The default value is \n\
- \t $::tcltest::temporaryDirectory. \n\
- -outfile file \t Send output from test runs to the \n\
- \t specified file. The default is \n\
- \t stdout. \n\
- -errfile file \t Send errors from test runs to the \n\
- \t specified file. The default is \n\
- \t stderr. \n\
- -debug level \t Internal debug flag."]
- ::tcltest::PrintUsageInfoHook
- return
+ if {[info exists channel]} {
+ if {$channel in [list [[namespace parent]::outputChannel] stdout]} {
+ append outData [lindex $args end]$newline
+ return
+ } elseif {$channel in [list [[namespace parent]::errorChannel] stderr]} {
+ append errData [lindex $args end]$newline
+ return
+ }
+ }
+
+ # If we haven't returned by now, we don't know how to handle the
+ # input. Let puts handle it.
+ return [Puts {*}$args]
}
-# ::tcltest::processCmdLineArgsFlagsHook --
+# tcltest::Eval --
#
-# This hook is used to add to the list of command line arguments that are
-# processed by ::tcltest::processCmdLineArgs.
+# Evaluate the script in the test environment. If ignoreOutput is
+# false, store data sent to stderr and stdout in outData and
+# errData. Otherwise, ignore this output altogether.
#
+# Arguments:
+# script Script to evaluate
+# ?ignoreOutput? Indicates whether or not to ignore output
+# sent to stdout & stderr
+#
+# Results:
+# result from running the script
+#
+# Side effects:
+# Empties the contents of outData and errData before running a
+# test if ignoreOutput is set to 0.
+
+proc tcltest::Eval {script {ignoreOutput 1}} {
+ variable outData
+ variable errData
+ DebugPuts 3 "[lindex [info level 0] 0] called"
+ if {!$ignoreOutput} {
+ set outData {}
+ set errData {}
+ rename ::puts [namespace current]::Replace::Puts
+ namespace eval :: [list namespace import [namespace origin Replace::puts]]
+ namespace import Replace::puts
+ }
+ set result [uplevel 1 $script]
+ if {!$ignoreOutput} {
+ namespace forget puts
+ namespace eval :: namespace forget puts
+ rename [namespace current]::Replace::Puts ::puts
+ }
+ return $result
+}
-proc ::tcltest::processCmdLineArgsAddFlagsHook {} {}
-
-# ::tcltest::processCmdLineArgsHook --
+# tcltest::CompareStrings --
#
-# This hook is used to actually process the flags added by
-# ::tcltest::processCmdLineArgsAddFlagsHook.
+# compares the expected answer to the actual answer, depending on
+# the mode provided. Mode determines whether a regexp, exact,
+# glob or custom comparison is done.
#
# Arguments:
-# flags The flags that have been pulled out of argv
+# actual - string containing the actual result
+# expected - pattern to be matched against
+# mode - type of comparison to be done
+#
+# Results:
+# result of the match
#
+# Side effects:
+# None.
-proc ::tcltest::processCmdLineArgsHook {flag} {}
+proc tcltest::CompareStrings {actual expected mode} {
+ variable CustomMatch
+ if {![info exists CustomMatch($mode)]} {
+ return -code error "No matching command registered for `-match $mode'"
+ }
+ set match [namespace eval :: $CustomMatch($mode) [list $expected $actual]]
+ if {[catch {expr {$match && $match}} result]} {
+ return -code error "Invalid result from `-match $mode' command: $result"
+ }
+ return $match
+}
-# ::tcltest::processCmdLineArgs --
+# tcltest::customMatch --
#
-# Use command line args to set the verbose, skip, and
-# match, outputChannel, errorChannel, debug, and temporaryDirectory
-# variables.
-#
-# This procedure must be run after constraints are initialized, because
-# some constraints can be overridden.
+# registers a command to be called when a particular type of
+# matching is required.
#
# Arguments:
-# none
+# nickname - Keyword for the type of matching
+# cmd - Incomplete command that implements that type of matching
+# when completed with expected string and actual string
+# and then evaluated.
#
# Results:
-# Sets the above-named variables in the tcltest namespace.
+# None.
+#
+# Side effects:
+# Sets the variable tcltest::CustomMatch
-proc ::tcltest::processCmdLineArgs {} {
- global argv
+proc tcltest::customMatch {mode script} {
+ variable CustomMatch
+ if {![info complete $script]} {
+ return -code error \
+ "invalid customMatch script; can't evaluate after completion"
+ }
+ set CustomMatch($mode) $script
+}
- # The "argv" var doesn't exist in some cases, so use {}.
+# tcltest::SubstArguments list
+#
+# This helper function takes in a list of words, then perform a
+# substitution on the list as though each word in the list is a separate
+# argument to the Tcl function. For example, if this function is
+# invoked as:
+#
+# SubstArguments {$a {$a}}
+#
+# Then it is as though the function is invoked as:
+#
+# SubstArguments $a {$a}
+#
+# This code is adapted from Paul Duffin's function "SplitIntoWords".
+# The original function can be found on:
+#
+# http://purl.org/thecliff/tcl/wiki/858.html
+#
+# Results:
+# a list containing the result of the substitution
+#
+# Exceptions:
+# An error may occur if the list containing unbalanced quote or
+# unknown variable.
+#
+# Side Effects:
+# None.
+#
+
+proc tcltest::SubstArguments {argList} {
+
+ # We need to split the argList up into tokens but cannot use list
+ # operations as they throw away some significant quoting, and
+ # [split] ignores braces as it should. Therefore what we do is
+ # gradually build up a string out of whitespace seperated strings.
+ # We cannot use [split] to split the argList into whitespace
+ # separated strings as it throws away the whitespace which maybe
+ # important so we have to do it all by hand.
+
+ set result {}
+ set token ""
+
+ while {[string length $argList]} {
+ # Look for the next word containing a quote: " { }
+ if {[regexp -indices {[^ \t\n]*[\"\{\}]+[^ \t\n]*} \
+ $argList all]} {
+ # Get the text leading up to this word, but not including
+ # this word, from the argList.
+ set text [string range $argList 0 \
+ [expr {[lindex $all 0] - 1}]]
+ # Get the word with the quote
+ set word [string range $argList \
+ [lindex $all 0] [lindex $all 1]]
+
+ # Remove all text up to and including the word from the
+ # argList.
+ set argList [string range $argList \
+ [expr {[lindex $all 1] + 1}] end]
+ } else {
+ # Take everything up to the end of the argList.
+ set text $argList
+ set word {}
+ set argList {}
+ }
- if {(![info exists argv]) || ([llength $argv] < 1)} {
- set flagArray {}
- } else {
- set flagArray $argv
+ if {$token ne {}} {
+ # If we saw a word with quote before, then there is a
+ # multi-word token starting with that word. In this case,
+ # add the text and the current word to this token.
+ append token $text $word
+ } else {
+ # Add the text to the result. There is no need to parse
+ # the text because it couldn't be a part of any multi-word
+ # token. Then start a new multi-word token with the word
+ # because we need to pass this token to the Tcl parser to
+ # check for balancing quotes
+ append result $text
+ set token $word
+ }
+
+ if { [catch {llength $token} length] == 0 && $length == 1} {
+ # The token is a valid list so add it to the result.
+ # lappend result [string trim $token]
+ append result \{$token\}
+ set token {}
+ }
}
-
- # Allow for 1-char abbreviations, where applicable (e.g., -match == -m).
- # Note that -verbose cannot be abbreviated to -v in wish because it
- # conflicts with the wish option -visual.
- # Process -help first
- if {([lsearch -exact $flagArray {-help}] != -1) || \
- ([lsearch -exact $flagArray {-h}] != -1)} {
- ::tcltest::PrintUsageInfo
- exit 1
+ # If the last token has not been added to the list then there
+ # is a problem.
+ if { [string length $token] } {
+ error "incomplete token \"$token\""
}
- if {[catch {array set flag $flagArray}]} {
- ::tcltest::PrintError "odd number of arguments specified on command line: \
- $argv"
- ::tcltest::PrintUsageInfo
- exit 1
+ return $result
+}
+
+
+# tcltest::test --
+#
+# This procedure runs a test and prints an error message if the test
+# fails. If verbose has been set, it also prints a message even if the
+# test succeeds. The test will be skipped if it doesn't match the
+# match variable, if it matches an element in skip, or if one of the
+# elements of "constraints" turns out not to be true.
+#
+# If testLevel is 1, then this is a top level test, and we record
+# pass/fail information; otherwise, this information is not logged and
+# is not added to running totals.
+#
+# Attributes:
+# Only description is a required attribute. All others are optional.
+# Default values are indicated.
+#
+# constraints - A list of one or more keywords, each of which
+# must be the name of an element in the array
+# "testConstraints". If any of these elements is
+# zero, the test is skipped. This attribute is
+# optional; default is {}
+# body - Script to run to carry out the test. It must
+# return a result that can be checked for
+# correctness. This attribute is optional;
+# default is {}
+# result - Expected result from script. This attribute is
+# optional; default is {}.
+# output - Expected output sent to stdout. This attribute
+# is optional; default is {}.
+# errorOutput - Expected output sent to stderr. This attribute
+# is optional; default is {}.
+# returnCodes - Expected return codes. This attribute is
+# optional; default is {0 2}.
+# setup - Code to run before $script (above). This
+# attribute is optional; default is {}.
+# cleanup - Code to run after $script (above). This
+# attribute is optional; default is {}.
+# match - specifies type of matching to do on result,
+# output, errorOutput; this must be a string
+# previously registered by a call to [customMatch].
+# The strings exact, glob, and regexp are pre-registered
+# by the tcltest package. Default value is exact.
+#
+# Arguments:
+# name - Name of test, in the form foo-1.2.
+# description - Short textual description of the test, to
+# help humans understand what it does.
+#
+# Results:
+# None.
+#
+# Side effects:
+# Just about anything is possible depending on the test.
+#
+
+proc tcltest::test {name description args} {
+ global tcl_platform
+ variable testLevel
+ variable coreModTime
+ DebugPuts 3 "test $name $args"
+ DebugDo 1 {
+ variable TestNames
+ catch {
+ puts "test name '$name' re-used; prior use in $TestNames($name)"
+ }
+ set TestNames($name) [info script]
}
- # -help is not listed since it has already been processed
- lappend defaultFlags -verbose -match -skip -constraints \
- -outfile -errfile -debug -tmpdir -file -notfile \
- -preservecore -limitconstraints
- set defaultFlags [concat $defaultFlags \
- [ ::tcltest::processCmdLineArgsAddFlagsHook ]]
+ FillFilesExisted
+ incr testLevel
+
+ # Pre-define everything to null except output and errorOutput. We
+ # determine whether or not to trap output based on whether or not
+ # these variables (output & errorOutput) are defined.
+ lassign {} constraints setup cleanup body result returnCodes match
+
+ # Set the default match mode
+ set match exact
+
+ # Set the default match values for return codes (0 is the standard
+ # expected return value if everything went well; 2 represents
+ # 'return' being used in the test script).
+ set returnCodes [list 0 2]
+
+ # The old test format can't have a 3rd argument (constraints or
+ # script) that starts with '-'.
+ if {[string match -* [lindex $args 0]] || ([llength $args] <= 1)} {
+ if {[llength $args] == 1} {
+ set list [SubstArguments [lindex $args 0]]
+ foreach {element value} $list {
+ set testAttributes($element) $value
+ }
+ foreach item {constraints match setup body cleanup \
+ result returnCodes output errorOutput} {
+ if {[info exists testAttributes(-$item)]} {
+ set testAttributes(-$item) [uplevel 1 \
+ ::concat $testAttributes(-$item)]
+ }
+ }
+ } else {
+ array set testAttributes $args
+ }
+
+ set validFlags {-setup -cleanup -body -result -returnCodes \
+ -match -output -errorOutput -constraints}
+
+ foreach flag [array names testAttributes] {
+ if {$flag ni $validFlags} {
+ incr testLevel -1
+ set sorted [lsort $validFlags]
+ set options [join [lrange $sorted 0 end-1] ", "]
+ append options ", or [lindex $sorted end]"
+ return -code error "bad option \"$flag\": must be $options"
+ }
+ }
- foreach arg $defaultFlags {
- set abbrev [string range $arg 0 1]
- if {([info exists flag($abbrev)]) && \
- ([lsearch -exact $flagArray $arg] < [lsearch -exact \
- $flagArray $abbrev])} {
- set flag($arg) $flag($abbrev)
+ # store whatever the user gave us
+ foreach item [array names testAttributes] {
+ set [string trimleft $item "-"] $testAttributes($item)
+ }
+
+ # Check the values supplied for -match
+ variable CustomMatch
+ if {$match ni [array names CustomMatch]} {
+ incr testLevel -1
+ set sorted [lsort [array names CustomMatch]]
+ set values [join [lrange $sorted 0 end-1] ", "]
+ append values ", or [lindex $sorted end]"
+ return -code error "bad -match value \"$match\":\
+ must be $values"
+ }
+
+ # Replace symbolic valies supplied for -returnCodes
+ foreach {strcode numcode} {ok 0 normal 0 error 1 return 2 break 3 continue 4} {
+ set returnCodes [string map -nocase [list $strcode $numcode] $returnCodes]
+ }
+ } else {
+ # This is parsing for the old test command format; it is here
+ # for backward compatibility.
+ set result [lindex $args end]
+ if {[llength $args] == 2} {
+ set body [lindex $args 0]
+ } elseif {[llength $args] == 3} {
+ set constraints [lindex $args 0]
+ set body [lindex $args 1]
+ } else {
+ incr testLevel -1
+ return -code error "wrong # args:\
+ should be \"test name desc ?options?\""
}
}
- # Set ::tcltest::verbose to the arg of the -verbose flag, if given
+ if {[Skipped $name $constraints]} {
+ incr testLevel -1
+ return
+ }
- if {[info exists flag(-verbose)]} {
- set ::tcltest::verbose $flag(-verbose)
+ # Save information about the core file.
+ if {[preserveCore]} {
+ if {[file exists [file join [workingDirectory] core]]} {
+ set coreModTime [file mtime [file join [workingDirectory] core]]
+ }
}
- # Set ::tcltest::match to the arg of the -match flag, if given.
+ # First, run the setup script
+ set code [catch {uplevel 1 $setup} setupMsg]
+ if {$code == 1} {
+ set errorInfo(setup) $::errorInfo
+ set errorCode(setup) $::errorCode
+ }
+ set setupFailure [expr {$code != 0}]
- if {[info exists flag(-match)]} {
- set ::tcltest::match $flag(-match)
- }
+ # Only run the test body if the setup was successful
+ if {!$setupFailure} {
- # Set ::tcltest::skip to the arg of the -skip flag, if given
+ # Verbose notification of $body start
+ if {[IsVerbose start]} {
+ puts [outputChannel] "---- $name start"
+ flush [outputChannel]
+ }
- if {[info exists flag(-skip)]} {
- set ::tcltest::skip $flag(-skip)
+ set command [list [namespace origin RunTest] $name $body]
+ if {[info exists output] || [info exists errorOutput]} {
+ set testResult [uplevel 1 [list [namespace origin Eval] $command 0]]
+ } else {
+ set testResult [uplevel 1 [list [namespace origin Eval] $command 1]]
+ }
+ lassign $testResult actualAnswer returnCode
+ if {$returnCode == 1} {
+ set errorInfo(body) $::errorInfo
+ set errorCode(body) $::errorCode
+ }
}
- # Handle the -file and -notfile flags
- if {[info exists flag(-file)]} {
- set ::tcltest::matchFiles $flag(-file)
+ # Always run the cleanup script
+ set code [catch {uplevel 1 $cleanup} cleanupMsg]
+ if {$code == 1} {
+ set errorInfo(cleanup) $::errorInfo
+ set errorCode(cleanup) $::errorCode
}
- if {[info exists flag(-notfile)]} {
- set ::tcltest::skipFiles $flag(-notfile)
+ set cleanupFailure [expr {$code != 0}]
+
+ set coreFailure 0
+ set coreMsg ""
+ # check for a core file first - if one was created by the test,
+ # then the test failed
+ if {[preserveCore]} {
+ if {[file exists [file join [workingDirectory] core]]} {
+ # There's only a test failure if there is a core file
+ # and (1) there previously wasn't one or (2) the new
+ # one is different from the old one.
+ if {[info exists coreModTime]} {
+ if {$coreModTime != [file mtime \
+ [file join [workingDirectory] core]]} {
+ set coreFailure 1
+ }
+ } else {
+ set coreFailure 1
+ }
+
+ if {([preserveCore] > 1) && ($coreFailure)} {
+ append coreMsg "\nMoving file to:\
+ [file join [temporaryDirectory] core-$name]"
+ catch {file rename -force -- \
+ [file join [workingDirectory] core] \
+ [file join [temporaryDirectory] core-$name]
+ } msg
+ if {$msg ne {}} {
+ append coreMsg "\nError:\
+ Problem renaming core file: $msg"
+ }
+ }
+ }
}
- # Use the -constraints flag, if given, to turn on constraints that are
- # turned off by default: userInteractive knownBug nonPortable. This
- # code fragment must be run after constraints are initialized.
+ # check if the return code matched the expected return code
+ set codeFailure 0
+ if {!$setupFailure && ($returnCode ni $returnCodes)} {
+ set codeFailure 1
+ }
- if {[info exists flag(-constraints)]} {
- foreach elt $flag(-constraints) {
- set ::tcltest::testConstraints($elt) 1
+ # If expected output/error strings exist, we have to compare
+ # them. If the comparison fails, then so did the test.
+ set outputFailure 0
+ variable outData
+ if {[info exists output] && !$codeFailure} {
+ if {[set outputCompare [catch {
+ CompareStrings $outData $output $match
+ } outputMatch]] == 0} {
+ set outputFailure [expr {!$outputMatch}]
+ } else {
+ set outputFailure 1
}
}
- # Use the -limitconstraints flag, if given, to tell the harness to limit
- # tests run to those that were specified using the -constraints flag. If
- # the -constraints flag was not specified, print out an error and exit.
- if {[info exists flag(-limitconstraints)]} {
- if {![info exists flag(-constraints)]} {
- puts "You can only use the -limitconstraints flag with \
- -constraints"
- exit 1
+ set errorFailure 0
+ variable errData
+ if {[info exists errorOutput] && !$codeFailure} {
+ if {[set errorCompare [catch {
+ CompareStrings $errData $errorOutput $match
+ } errorMatch]] == 0} {
+ set errorFailure [expr {!$errorMatch}]
+ } else {
+ set errorFailure 1
+ }
+ }
+
+ # check if the answer matched the expected answer
+ # Only check if we ran the body of the test (no setup failure)
+ if {$setupFailure || $codeFailure} {
+ set scriptFailure 0
+ } elseif {[set scriptCompare [catch {
+ CompareStrings $actualAnswer $result $match
+ } scriptMatch]] == 0} {
+ set scriptFailure [expr {!$scriptMatch}]
+ } else {
+ set scriptFailure 1
+ }
+
+ # if we didn't experience any failures, then we passed
+ variable numTests
+ if {!($setupFailure || $cleanupFailure || $coreFailure
+ || $outputFailure || $errorFailure || $codeFailure
+ || $scriptFailure)} {
+ if {$testLevel == 1} {
+ incr numTests(Passed)
+ if {[IsVerbose pass]} {
+ puts [outputChannel] "++++ $name PASSED"
+ }
}
- set ::tcltest::limitConstraints $flag(-limitconstraints)
- foreach elt [array names ::tcltest::testConstraints] {
- if {[lsearch -exact $flag(-constraints) $elt] == -1} {
- set ::tcltest::testConstraints($elt) 0
+ incr testLevel -1
+ return
+ }
+
+ # We know the test failed, tally it...
+ if {$testLevel == 1} {
+ incr numTests(Failed)
+ }
+
+ # ... then report according to the type of failure
+ variable currentFailure true
+ if {![IsVerbose body]} {
+ set body ""
+ }
+ puts [outputChannel] "\n"
+ if {[IsVerbose line]} {
+ if {![catch {set testFrame [info frame -1]}] &&
+ [dict get $testFrame type] eq "source"} {
+ set testFile [dict get $testFrame file]
+ set testLine [dict get $testFrame line]
+ } else {
+ set testFile [file normalize [uplevel 1 {info script}]]
+ if {[file readable $testFile]} {
+ set testFd [open $testFile r]
+ set testLine [expr {[lsearch -regexp \
+ [split [read $testFd] "\n"] \
+ "^\[ \t\]*test [string map {. \\.} $name] "] + 1}]
+ close $testFd
}
}
+ if {[info exists testLine]} {
+ puts [outputChannel] "$testFile:$testLine: error: test failed:\
+ $name [string trim $description]"
+ }
+ }
+ puts [outputChannel] "==== $name\
+ [string trim $description] FAILED"
+ if {[string length $body]} {
+ puts [outputChannel] "==== Contents of test case:"
+ puts [outputChannel] $body
+ }
+ if {$setupFailure} {
+ puts [outputChannel] "---- Test setup\
+ failed:\n$setupMsg"
+ if {[info exists errorInfo(setup)]} {
+ puts [outputChannel] "---- errorInfo(setup): $errorInfo(setup)"
+ puts [outputChannel] "---- errorCode(setup): $errorCode(setup)"
+ }
+ }
+ if {$scriptFailure} {
+ if {$scriptCompare} {
+ puts [outputChannel] "---- Error testing result: $scriptMatch"
+ } else {
+ puts [outputChannel] "---- Result was:\n$actualAnswer"
+ puts [outputChannel] "---- Result should have been\
+ ($match matching):\n$result"
+ }
+ }
+ if {$codeFailure} {
+ switch -- $returnCode {
+ 0 { set msg "Test completed normally" }
+ 1 { set msg "Test generated error" }
+ 2 { set msg "Test generated return exception" }
+ 3 { set msg "Test generated break exception" }
+ 4 { set msg "Test generated continue exception" }
+ default { set msg "Test generated exception" }
+ }
+ puts [outputChannel] "---- $msg; Return code was: $returnCode"
+ puts [outputChannel] "---- Return code should have been\
+ one of: $returnCodes"
+ if {[IsVerbose error]} {
+ if {[info exists errorInfo(body)] && (1 ni $returnCodes)} {
+ puts [outputChannel] "---- errorInfo: $errorInfo(body)"
+ puts [outputChannel] "---- errorCode: $errorCode(body)"
+ }
+ }
+ }
+ if {$outputFailure} {
+ if {$outputCompare} {
+ puts [outputChannel] "---- Error testing output: $outputMatch"
+ } else {
+ puts [outputChannel] "---- Output was:\n$outData"
+ puts [outputChannel] "---- Output should have been\
+ ($match matching):\n$output"
+ }
+ }
+ if {$errorFailure} {
+ if {$errorCompare} {
+ puts [outputChannel] "---- Error testing errorOutput: $errorMatch"
+ } else {
+ puts [outputChannel] "---- Error output was:\n$errData"
+ puts [outputChannel] "---- Error output should have\
+ been ($match matching):\n$errorOutput"
+ }
+ }
+ if {$cleanupFailure} {
+ puts [outputChannel] "---- Test cleanup failed:\n$cleanupMsg"
+ if {[info exists errorInfo(cleanup)]} {
+ puts [outputChannel] "---- errorInfo(cleanup): $errorInfo(cleanup)"
+ puts [outputChannel] "---- errorCode(cleanup): $errorCode(cleanup)"
+ }
+ }
+ if {$coreFailure} {
+ puts [outputChannel] "---- Core file produced while running\
+ test! $coreMsg"
}
+ puts [outputChannel] "==== $name FAILED\n"
- # Set the ::tcltest::temporaryDirectory to the arg of -tmpdir, if
- # given.
- #
- # If the path is relative, make it absolute. If the file exists but
- # is not a dir, then return an error.
- #
- # If ::tcltest::temporaryDirectory does not already exist, create it.
- # If you cannot create it, then return an error.
+ incr testLevel -1
+ return
+}
- set tmpDirError ""
- if {[info exists flag(-tmpdir)]} {
- set ::tcltest::temporaryDirectory $flag(-tmpdir)
+# Skipped --
+#
+# Given a test name and it constraints, returns a boolean indicating
+# whether the current configuration says the test should be skipped.
+#
+# Side Effects: Maintains tally of total tests seen and tests skipped.
+#
+proc tcltest::Skipped {name constraints} {
+ variable testLevel
+ variable numTests
+ variable testConstraints
- if {[string compare \
- [file pathtype $::tcltest::temporaryDirectory] \
- "absolute"] != 0} {
- set ::tcltest::temporaryDirectory [file join [pwd] \
- $::tcltest::temporaryDirectory]
+ if {$testLevel == 1} {
+ incr numTests(Total)
+ }
+ # skip the test if it's name matches an element of skip
+ foreach pattern [skip] {
+ if {[string match $pattern $name]} {
+ if {$testLevel == 1} {
+ incr numTests(Skipped)
+ DebugDo 1 {AddToSkippedBecause userSpecifiedSkip}
+ }
+ return 1
}
- set tmpDirError "bad argument \"$flag(-tmpdir)\" to -tmpdir: "
}
- if {[file exists $::tcltest::temporaryDirectory]} {
- if {![file isdir $::tcltest::temporaryDirectory]} {
- ::tcltest::PrintError "$tmpDirError \"$::tcltest::temporaryDirectory\" \
- is not a directory"
- exit 1
- } elseif {![file writable $::tcltest::temporaryDirectory]} {
- ::tcltest::PrintError "$tmpDirError \"$::tcltest::temporaryDirectory\" \
- is not writeable"
- exit 1
- } elseif {![file readable $::tcltest::temporaryDirectory]} {
- ::tcltest::PrintError "$tmpDirError \"$::tcltest::temporaryDirectory\" \
- is not readable"
- exit 1
+ # skip the test if it's name doesn't match any element of match
+ set ok 0
+ foreach pattern [match] {
+ if {[string match $pattern $name]} {
+ set ok 1
+ break
}
- } else {
- file mkdir $::tcltest::temporaryDirectory
}
- set oldpwd [pwd]
- cd $::tcltest::temporaryDirectory
- set ::tcltest::temporaryDirectory [pwd]
- cd $oldpwd
-
- # Save the names of files that already exist in
- # the output directory.
- foreach file [glob -nocomplain \
- [file join $::tcltest::temporaryDirectory *]] {
- lappend ::tcltest::filesExisted [file tail $file]
+ if {!$ok} {
+ if {$testLevel == 1} {
+ incr numTests(Skipped)
+ DebugDo 1 {AddToSkippedBecause userSpecifiedNonMatch}
+ }
+ return 1
}
+ if {$constraints eq {}} {
+ # If we're limited to the listed constraints and there aren't
+ # any listed, then we shouldn't run the test.
+ if {[limitConstraints]} {
+ AddToSkippedBecause userSpecifiedLimitConstraint
+ if {$testLevel == 1} {
+ incr numTests(Skipped)
+ }
+ return 1
+ }
+ } else {
+ # "constraints" argument exists;
+ # make sure that the constraints are satisfied.
- # If an alternate error or output files are specified, change the
- # default channels.
+ set doTest 0
+ if {[string match {*[$\[]*} $constraints] != 0} {
+ # full expression, e.g. {$foo > [info tclversion]}
+ catch {set doTest [uplevel #0 [list expr $constraints]]}
+ } elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} {
+ # something like {a || b} should be turned into
+ # $testConstraints(a) || $testConstraints(b).
+ regsub -all {[.\w]+} $constraints {$testConstraints(&)} c
+ catch {set doTest [eval [list expr $c]]}
+ } elseif {![catch {llength $constraints}]} {
+ # just simple constraints such as {unixOnly fonts}.
+ set doTest 1
+ foreach constraint $constraints {
+ if {(![info exists testConstraints($constraint)]) \
+ || (!$testConstraints($constraint))} {
+ set doTest 0
- if {[info exists flag(-outfile)]} {
- set tmp $flag(-outfile)
- if {[string compare [file pathtype $tmp] "absolute"] != 0} {
- set tmp [file join $::tcltest::temporaryDirectory $tmp]
+ # store the constraint that kept the test from
+ # running
+ set constraints $constraint
+ break
+ }
+ }
}
- set ::tcltest::outputChannel [open $tmp w]
- }
+
+ if {!$doTest} {
+ if {[IsVerbose skip]} {
+ puts [outputChannel] "++++ $name SKIPPED: $constraints"
+ }
- if {[info exists flag(-errfile)]} {
- set tmp $flag(-errfile)
- if {[string compare [file pathtype $tmp] "absolute"] != 0} {
- set tmp [file join $::tcltest::temporaryDirectory $tmp]
+ if {$testLevel == 1} {
+ incr numTests(Skipped)
+ AddToSkippedBecause $constraints
+ }
+ return 1
}
- set ::tcltest::errorChannel [open $tmp w]
}
+ return 0
+}
- # If the user specifies debug testing, print out extra information during
- # the run.
- if {[info exists flag(-debug)]} {
- set ::tcltest::debug $flag(-debug)
- }
+# RunTest --
+#
+# This is where the body of a test is evaluated. The combination of
+# [RunTest] and [Eval] allows the output and error output of the test
+# body to be captured for comparison against the expected values.
- # Handle -preservecore
- if {[info exists flag(-preservecore)]} {
- set ::tcltest::preserveCore $flag(-preservecore)
- }
+proc tcltest::RunTest {name script} {
+ DebugPuts 3 "Running $name {$script}"
- # Call the hook
- ::tcltest::processCmdLineArgsHook [array get flag]
-
- # Spit out everything you know if we're at debug level 2 or greater
- if {$::tcltest::debug > 1} {
- puts "Flags passed into tcltest:"
- parray flag
- puts "::tcltest::debug = $::tcltest::debug"
- puts "::tcltest::testsDirectory = $::tcltest::testsDirectory"
- puts "::tcltest::workingDirectory = $::tcltest::workingDirectory"
- puts "::tcltest::temporaryDirectory = $::tcltest::temporaryDirectory"
- puts "::tcltest::outputChannel = $::tcltest::outputChannel"
- puts "::tcltest::errorChannel = $::tcltest::errorChannel"
- puts "Original environment (::tcltest::originalEnv):"
- parray ::tcltest::originalEnv
- puts "Constraints:"
- parray ::tcltest::testConstraints
+ # If there is no "memory" command (because memory debugging isn't
+ # enabled), then don't attempt to use the command.
+
+ if {[llength [info commands memory]] == 1} {
+ memory tag $name
}
+
+ set code [catch {uplevel 1 $script} actualAnswer]
+
+ return [list $actualAnswer $code]
+}
+
+#####################################################################
+
+# tcltest::cleanupTestsHook --
+#
+# This hook allows a harness that builds upon tcltest to specify
+# additional things that should be done at cleanup.
+#
+
+if {[llength [info commands tcltest::cleanupTestsHook]] == 0} {
+ proc tcltest::cleanupTestsHook {} {}
}
-# ::tcltest::cleanupTests --
+# tcltest::cleanupTests --
#
# Remove files and dirs created using the makeFile and makeDirectory
# commands since the last time this proc was invoked.
@@ -848,120 +2336,157 @@ proc ::tcltest::processCmdLineArgs {} {
#
# Print the number tests (total, passed, failed, and skipped) since the
# tests were invoked.
-#
+#
# Restore original environment (as reported by special variable env).
-
-proc ::tcltest::cleanupTests {{calledFromAllFile 0}} {
-
+#
+# Arguments:
+# calledFromAllFile - if 0, behave as if we are running a single
+# test file within an entire suite of tests. if we aren't running
+# a single test file, then don't report status. check for new
+# files created during the test run and report on them. if 1,
+# report collated status from all the test file runs.
+#
+# Results:
+# None.
+#
+# Side Effects:
+# None
+#
+
+proc tcltest::cleanupTests {{calledFromAllFile 0}} {
+ variable filesMade
+ variable filesExisted
+ variable createdNewFiles
+ variable testSingleFile
+ variable numTests
+ variable numTestFiles
+ variable failFiles
+ variable skippedBecause
+ variable currentFailure
+ variable originalEnv
+ variable originalTclPlatform
+ variable coreModTime
+
+ FillFilesExisted
set testFileName [file tail [info script]]
+ # Hook to handle reporting to a parent interpreter
+ if {[llength [info commands [namespace current]::ReportToMaster]]} {
+ ReportToMaster $numTests(Total) $numTests(Passed) $numTests(Skipped) \
+ $numTests(Failed) [array get skippedBecause] \
+ [array get createdNewFiles]
+ set testSingleFile false
+ }
+
# Call the cleanup hook
- ::tcltest::cleanupTestsHook
+ cleanupTestsHook
- # Remove files and directories created by the :tcltest::makeFile and
- # ::tcltest::makeDirectory procedures.
- # Record the names of files in ::tcltest::workingDirectory that were not
- # pre-existing, and associate them with the test file that created them.
+ # Remove files and directories created by the makeFile and
+ # makeDirectory procedures. Record the names of files in
+ # workingDirectory that were not pre-existing, and associate them
+ # with the test file that created them.
if {!$calledFromAllFile} {
- foreach file $::tcltest::filesMade {
+ foreach file $filesMade {
if {[file exists $file]} {
- catch {file delete -force $file}
+ DebugDo 1 {Warn "cleanupTests deleting $file..."}
+ catch {file delete -force -- $file}
}
}
set currentFiles {}
foreach file [glob -nocomplain \
- [file join $::tcltest::temporaryDirectory *]] {
+ -directory [temporaryDirectory] *] {
lappend currentFiles [file tail $file]
}
set newFiles {}
foreach file $currentFiles {
- if {[lsearch -exact $::tcltest::filesExisted $file] == -1} {
+ if {$file ni $filesExisted} {
lappend newFiles $file
}
}
- set ::tcltest::filesExisted $currentFiles
+ set filesExisted $currentFiles
if {[llength $newFiles] > 0} {
- set ::tcltest::createdNewFiles($testFileName) $newFiles
+ set createdNewFiles($testFileName) $newFiles
}
}
- if {$calledFromAllFile || $::tcltest::testSingleFile} {
+ if {$calledFromAllFile || $testSingleFile} {
# print stats
- puts -nonewline $::tcltest::outputChannel "$testFileName:"
+ puts -nonewline [outputChannel] "$testFileName:"
foreach index [list "Total" "Passed" "Skipped" "Failed"] {
- puts -nonewline $::tcltest::outputChannel \
- "\t$index\t$::tcltest::numTests($index)"
+ puts -nonewline [outputChannel] \
+ "\t$index\t$numTests($index)"
}
- puts $::tcltest::outputChannel ""
+ puts [outputChannel] ""
# print number test files sourced
# print names of files that ran tests which failed
if {$calledFromAllFile} {
- puts $::tcltest::outputChannel \
- "Sourced $::tcltest::numTestFiles Test Files."
- set ::tcltest::numTestFiles 0
- if {[llength $::tcltest::failFiles] > 0} {
- puts $::tcltest::outputChannel \
- "Files with failing tests: $::tcltest::failFiles"
- set ::tcltest::failFiles {}
+ puts [outputChannel] \
+ "Sourced $numTestFiles Test Files."
+ set numTestFiles 0
+ if {[llength $failFiles] > 0} {
+ puts [outputChannel] \
+ "Files with failing tests: $failFiles"
+ set failFiles {}
}
}
- # if any tests were skipped, print the constraints that kept them
- # from running.
+ # if any tests were skipped, print the constraints that kept
+ # them from running.
- set constraintList [array names ::tcltest::skippedBecause]
+ set constraintList [array names skippedBecause]
if {[llength $constraintList] > 0} {
- puts $::tcltest::outputChannel \
+ puts [outputChannel] \
"Number of tests skipped for each constraint:"
foreach constraint [lsort $constraintList] {
- puts $::tcltest::outputChannel \
- "\t$::tcltest::skippedBecause($constraint)\t$constraint"
- unset ::tcltest::skippedBecause($constraint)
+ puts [outputChannel] \
+ "\t$skippedBecause($constraint)\t$constraint"
+ unset skippedBecause($constraint)
}
}
- # report the names of test files in ::tcltest::createdNewFiles, and
- # reset the array to be empty.
+ # report the names of test files in createdNewFiles, and reset
+ # the array to be empty.
- set testFilesThatTurded [lsort [array names ::tcltest::createdNewFiles]]
+ set testFilesThatTurded [lsort [array names createdNewFiles]]
if {[llength $testFilesThatTurded] > 0} {
- puts $::tcltest::outputChannel "Warning: files left behind:"
+ puts [outputChannel] "Warning: files left behind:"
foreach testFile $testFilesThatTurded {
- puts "\t$testFile:\t$::tcltest::createdNewFiles($testFile)"
- unset ::tcltest::createdNewFiles($testFile)
+ puts [outputChannel] \
+ "\t$testFile:\t$createdNewFiles($testFile)"
+ unset createdNewFiles($testFile)
}
}
# reset filesMade, filesExisted, and numTests
- set ::tcltest::filesMade {}
+ set filesMade {}
foreach index [list "Total" "Passed" "Skipped" "Failed"] {
- set ::tcltest::numTests($index) 0
+ set numTests($index) 0
}
# exit only if running Tk in non-interactive mode
-
- global tk_version tcl_interactive
- if {[info exists tk_version] && !$tcl_interactive} {
+ # This should be changed to determine if an event
+ # loop is running, which is the real issue.
+ # Actually, this doesn't belong here at all. A package
+ # really has no business [exit]-ing an application.
+ if {![catch {package present Tk}] && ![testConstraint interactive]} {
exit
}
} else {
# if we're deferring stat-reporting until all files are sourced,
- # then add current file to failFile list if any tests in this file
- # failed
+ # then add current file to failFile list if any tests in this
+ # file failed
- incr ::tcltest::numTestFiles
- if {($::tcltest::currentFailure) && \
- ([lsearch -exact $::tcltest::failFiles $testFileName] == -1)} {
- lappend ::tcltest::failFiles $testFileName
+ if {$currentFailure && ($testFileName ni $failFiles)} {
+ lappend failFiles $testFileName
}
- set ::tcltest::currentFailure false
+ set currentFailure false
# restore the environment to the state it was in before this package
# was loaded
@@ -970,372 +2495,381 @@ proc ::tcltest::cleanupTests {{calledFromAllFile 0}} {
set changedEnv {}
set removedEnv {}
foreach index [array names ::env] {
- if {![info exists ::tcltest::originalEnv($index)]} {
+ if {![info exists originalEnv($index)]} {
lappend newEnv $index
unset ::env($index)
- } else {
- if {$::env($index) != $::tcltest::originalEnv($index)} {
- lappend changedEnv $index
- set ::env($index) $::tcltest::originalEnv($index)
- }
}
}
- foreach index [array names ::tcltest::originalEnv] {
+ foreach index [array names originalEnv] {
if {![info exists ::env($index)]} {
lappend removedEnv $index
- set ::env($index) $::tcltest::originalEnv($index)
+ set ::env($index) $originalEnv($index)
+ } elseif {$::env($index) ne $originalEnv($index)} {
+ lappend changedEnv $index
+ set ::env($index) $originalEnv($index)
}
}
if {[llength $newEnv] > 0} {
- puts $::tcltest::outputChannel \
+ puts [outputChannel] \
"env array elements created:\t$newEnv"
}
if {[llength $changedEnv] > 0} {
- puts $::tcltest::outputChannel \
+ puts [outputChannel] \
"env array elements changed:\t$changedEnv"
}
if {[llength $removedEnv] > 0} {
- puts $::tcltest::outputChannel \
+ puts [outputChannel] \
"env array elements removed:\t$removedEnv"
}
set changedTclPlatform {}
- foreach index [array names ::tcltest::originalTclPlatform] {
- if {$::tcl_platform($index) != \
- $::tcltest::originalTclPlatform($index)} {
+ foreach index [array names originalTclPlatform] {
+ if {$::tcl_platform($index) \
+ != $originalTclPlatform($index)} {
lappend changedTclPlatform $index
- set ::tcl_platform($index) \
- $::tcltest::originalTclPlatform($index)
+ set ::tcl_platform($index) $originalTclPlatform($index)
}
}
if {[llength $changedTclPlatform] > 0} {
- puts $::tcltest::outputChannel \
- "tcl_platform array elements changed:\t$changedTclPlatform"
- }
+ puts [outputChannel] "tcl_platform array elements\
+ changed:\t$changedTclPlatform"
+ }
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- if {$::tcltest::preserveCore > 1} {
- puts $::tcltest::outputChannel "produced core file! \
+ if {[file exists [file join [workingDirectory] core]]} {
+ if {[preserveCore] > 1} {
+ puts "rename core file (> 1)"
+ puts [outputChannel] "produced core file! \
Moving file to: \
- [file join $::tcltest::temporaryDirectory core-$name]"
- flush $::tcltest::outputChannel
- catch {file rename -force \
- [file join $::tcltest::workingDirectory core] \
- [file join $::tcltest::temporaryDirectory \
- core-$name]} msg
- if {[string length $msg] > 0} {
- ::tcltest::PrintError "Problem renaming file: $msg"
+ [file join [temporaryDirectory] core-$testFileName]"
+ catch {file rename -force -- \
+ [file join [workingDirectory] core] \
+ [file join [temporaryDirectory] core-$testFileName]
+ } msg
+ if {$msg ne {}} {
+ PrintError "Problem renaming file: $msg"
}
} else {
# Print a message if there is a core file and (1) there
- # previously wasn't one or (2) the new one is different from
- # the old one.
+ # previously wasn't one or (2) the new one is different
+ # from the old one.
- if {[info exists ::tcltest::coreModificationTime]} {
- if {$::tcltest::coreModificationTime != [file mtime \
- [file join $::tcltest::workingDirectory core]]} {
- puts $::tcltest::outputChannel "A core file was created!"
+ if {[info exists coreModTime]} {
+ if {$coreModTime != [file mtime \
+ [file join [workingDirectory] core]]} {
+ puts [outputChannel] "A core file was created!"
}
} else {
- puts $::tcltest::outputChannel "A core file was created!"
- }
+ puts [outputChannel] "A core file was created!"
+ }
}
}
}
+ flush [outputChannel]
+ flush [errorChannel]
+ return
}
-# ::tcltest::cleanupTestsHook --
-#
-# This hook allows a harness that builds upon tcltest to specify
-# additional things that should be done at cleanup.
-#
+#####################################################################
-proc ::tcltest::cleanupTestsHook {} {}
+# Procs that determine which tests/test files to run
-# test --
+# tcltest::GetMatchingFiles
#
-# This procedure runs a test and prints an error message if the test fails.
-# If ::tcltest::verbose has been set, it also prints a message even if the
-# test succeeds. The test will be skipped if it doesn't match the
-# ::tcltest::match variable, if it matches an element in
-# ::tcltest::skip, or if one of the elements of "constraints" turns
-# out not to be true.
+# Looks at the patterns given to match and skip files and uses
+# them to put together a list of the tests that will be run.
#
# Arguments:
-# name - Name of test, in the form foo-1.2.
-# description - Short textual description of the test, to
-# help humans understand what it does.
-# constraints - A list of one or more keywords, each of
-# which must be the name of an element in
-# the array "::tcltest::testConstraints". If any of these
-# elements is zero, the test is skipped.
-# This argument may be omitted.
-# script - Script to run to carry out the test. It must
-# return a result that can be checked for
-# correctness.
-# expectedAnswer - Expected result from script.
-
-proc ::tcltest::test {name description script expectedAnswer args} {
- if {$::tcltest::debug > 2} {
- puts "Running $name ($description)"
- }
-
- incr ::tcltest::numTests(Total)
+# directory to search
+#
+# Results:
+# The constructed list is returned to the user. This will
+# primarily be used in 'all.tcl' files. It is used in
+# runAllTests.
+#
+# Side Effects:
+# None
- # skip the test if it's name matches an element of skip
+# a lower case version is needed for compatibility with tcltest 1.0
+proc tcltest::getMatchingFiles args {GetMatchingFiles {*}$args}
- foreach pattern $::tcltest::skip {
- if {[string match $pattern $name]} {
- incr ::tcltest::numTests(Skipped)
- if {$::tcltest::debug} {
- ::tcltest::AddToSkippedBecause userSpecifiedSkip
- }
- return
- }
+proc tcltest::GetMatchingFiles { args } {
+ if {[llength $args]} {
+ set dirList $args
+ } else {
+ # Finding tests only in [testsDirectory] is normal operation.
+ # This procedure is written to accept multiple directory arguments
+ # only to satisfy version 1 compatibility.
+ set dirList [list [testsDirectory]]
}
- # skip the test if it's name doesn't match any element of match
+ set matchingFiles [list]
+ foreach directory $dirList {
- if {[llength $::tcltest::match] > 0} {
- set ok 0
- foreach pattern $::tcltest::match {
- if {[string match $pattern $name]} {
- set ok 1
- break
- }
- }
- if {!$ok} {
- incr ::tcltest::numTests(Skipped)
- if {$::tcltest::debug} {
- ::tcltest::AddToSkippedBecause userSpecifiedNonMatch
- }
- return
+ # List files in $directory that match patterns to run.
+ set matchFileList [list]
+ foreach match [matchFiles] {
+ set matchFileList [concat $matchFileList \
+ [glob -directory $directory -types {b c f p s} \
+ -nocomplain -- $match]]
}
- }
- set i [llength $args]
- if {$i == 0} {
- set constraints {}
- # If we're limited to the listed constraints and there aren't any
- # listed, then we shouldn't run the test.
- if {$::tcltest::limitConstraints} {
- ::tcltest::AddToSkippedBecause userSpecifiedLimitConstraint
- incr ::tcltest::numTests(Skipped)
- return
+ # List files in $directory that match patterns to skip.
+ set skipFileList [list]
+ foreach skip [skipFiles] {
+ set skipFileList [concat $skipFileList \
+ [glob -directory $directory -types {b c f p s} \
+ -nocomplain -- $skip]]
}
- } elseif {$i == 1} {
-
- # "constraints" argument exists; shuffle arguments down, then
- # make sure that the constraints are satisfied.
-
- set constraints $script
- set script $expectedAnswer
- set expectedAnswer [lindex $args 0]
- set doTest 0
- if {[string match {*[$\[]*} $constraints] != 0} {
- # full expression, e.g. {$foo > [info tclversion]}
- catch {set doTest [uplevel #0 expr $constraints]}
-
- } elseif {[regexp {[^.a-zA-Z0-9 ]+} $constraints] != 0} {
- # something like {a || b} should be turned into
- # $::tcltest::testConstraints(a) || $::tcltest::testConstraints(b).
- regsub -all {[.a-zA-Z0-9]+} $constraints \
- {$::tcltest::testConstraints(&)} c
- catch {set doTest [eval expr $c]}
- } else {
- # just simple constraints such as {unixOnly fonts}.
- set doTest 1
- foreach constraint $constraints {
- if {(![info exists ::tcltest::testConstraints($constraint)]) \
- || (!$::tcltest::testConstraints($constraint))} {
- set doTest 0
-
- # store the constraint that kept the test from running
- set constraints $constraint
- break
- }
+ # Add to result list all files in match list and not in skip list
+ foreach file $matchFileList {
+ if {$file ni $skipFileList} {
+ lappend matchingFiles $file
}
}
- if {$doTest == 0} {
- if {[string first s $::tcltest::verbose] != -1} {
- puts $::tcltest::outputChannel "++++ $name SKIPPED: $constraints"
- }
+ }
- incr ::tcltest::numTests(Skipped)
- ::tcltest::AddToSkippedBecause $constraints
- return
- }
- } else {
- error "wrong # args: must be \"test name description ?constraints? script expectedAnswer\""
- }
+ if {[llength $matchingFiles] == 0} {
+ PrintError "No test files remain after applying your match and\
+ skip patterns!"
+ }
+ return $matchingFiles
+}
- # Save information about the core file. You need to restore the original
- # tcl_platform environment because some of the tests mess with tcl_platform.
+# tcltest::GetMatchingDirectories --
+#
+# Looks at the patterns given to match and skip directories and
+# uses them to put together a list of the test directories that we
+# should attempt to run. (Only subdirectories containing an
+# "all.tcl" file are put into the list.)
+#
+# Arguments:
+# root directory from which to search
+#
+# Results:
+# The constructed list is returned to the user. This is used in
+# the primary all.tcl file.
+#
+# Side Effects:
+# None.
- if {$::tcltest::preserveCore} {
- set currentTclPlatform [array get tcl_platform]
- array set tcl_platform $::tcltest::originalTclPlatform
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- set coreModTime [file mtime [file join \
- $::tcltest::workingDirectory core]]
- }
- array set tcl_platform $currentTclPlatform
- }
+proc tcltest::GetMatchingDirectories {rootdir} {
- # If there is no "memory" command (because memory debugging isn't
- # enabled), then don't attempt to use the command.
-
- if {[info commands memory] != {}} {
- memory tag $name
+ # Determine the skip list first, to avoid [glob]-ing over subdirectories
+ # we're going to throw away anyway. Be sure we skip the $rootdir if it
+ # comes up to avoid infinite loops.
+ set skipDirs [list $rootdir]
+ foreach pattern [skipDirectories] {
+ set skipDirs [concat $skipDirs [glob -directory $rootdir -types d \
+ -nocomplain -- $pattern]]
}
- set code [catch {uplevel $script} actualAnswer]
- if {([string compare $actualAnswer $expectedAnswer] == 0) && ($code == 0)} {
- incr ::tcltest::numTests(Passed)
- if {[string first p $::tcltest::verbose] != -1} {
- puts $::tcltest::outputChannel "++++ $name PASSED"
- }
- } else {
- incr ::tcltest::numTests(Failed)
- set ::tcltest::currentFailure true
- if {[string first b $::tcltest::verbose] == -1} {
- set script ""
- }
- puts $::tcltest::outputChannel "\n==== $name $description FAILED"
- if {$script != ""} {
- puts $::tcltest::outputChannel "==== Contents of test case:"
- puts $::tcltest::outputChannel $script
- }
- if {$code != 0} {
- if {$code == 1} {
- puts $::tcltest::outputChannel "==== Test generated error:"
- puts $::tcltest::outputChannel $actualAnswer
- } elseif {$code == 2} {
- puts $::tcltest::outputChannel "==== Test generated return exception; result was:"
- puts $::tcltest::outputChannel $actualAnswer
- } elseif {$code == 3} {
- puts $::tcltest::outputChannel "==== Test generated break exception"
- } elseif {$code == 4} {
- puts $::tcltest::outputChannel "==== Test generated continue exception"
- } else {
- puts $::tcltest::outputChannel "==== Test generated exception $code; message was:"
- puts $::tcltest::outputChannel $actualAnswer
+ # Now step through the matching directories, prune out the skipped ones
+ # as you go.
+ set matchDirs [list]
+ foreach pattern [matchDirectories] {
+ foreach path [glob -directory $rootdir -types d -nocomplain -- \
+ $pattern] {
+ if {$path ni $skipDirs} {
+ set matchDirs [concat $matchDirs [GetMatchingDirectories $path]]
+ if {[file exists [file join $path all.tcl]]} {
+ lappend matchDirs $path
+ }
}
- } else {
- puts $::tcltest::outputChannel "---- Result was:\n$actualAnswer"
}
- puts $::tcltest::outputChannel "---- Result should have been:\n$expectedAnswer"
- puts $::tcltest::outputChannel "==== $name FAILED\n"
}
- if {$::tcltest::preserveCore} {
- set currentTclPlatform [array get tcl_platform]
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- if {$::tcltest::preserveCore > 1} {
- puts $::tcltest::outputChannel "==== $name produced core file! \
- Moving file to: \
- [file join $::tcltest::temporaryDirectory core-$name]"
- catch {file rename -force \
- [file join $::tcltest::workingDirectory core] \
- [file join $::tcltest::temporaryDirectory \
- core-$name]} msg
- if {[string length $msg] > 0} {
- ::tcltest::PrintError "Problem renaming file: $msg"
- }
- } else {
- # Print a message if there is a core file and (1) there
- # previously wasn't one or (2) the new one is different from
- # the old one.
- if {[info exists coreModTime]} {
- if {$coreModTime != [file mtime \
- [file join $::tcltest::workingDirectory core]]} {
- puts $::tcltest::outputChannel "==== $name produced core file!"
- }
- } else {
- puts $::tcltest::outputChannel "==== $name produced core file!"
- }
- }
- }
- array set tcl_platform $currentTclPlatform
+ if {[llength $matchDirs] == 0} {
+ DebugPuts 1 "No test directories remain after applying match\
+ and skip patterns!"
}
+ return $matchDirs
}
-# ::tcltest::getMatchingTestFiles
+# tcltest::runAllTests --
#
-# Looks at the patterns given to match and skip files
-# and uses them to put together a list of the tests that will be run.
+# prints output and sources test files according to the match and
+# skip patterns provided. after sourcing test files, it goes on
+# to source all.tcl files in matching test subdirectories.
#
# Arguments:
-# none
+# shell being tested
#
# Results:
-# The constructed list is returned to the user. This will primarily
-# be used in 'all.tcl' files.
+# None.
+#
+# Side effects:
+# None.
+
+proc tcltest::runAllTests { {shell ""} } {
+ variable testSingleFile
+ variable numTestFiles
+ variable numTests
+ variable failFiles
+ variable DefaultValue
+
+ FillFilesExisted
+ if {[llength [info level 0]] == 1} {
+ set shell [interpreter]
+ }
+
+ set testSingleFile false
+
+ puts [outputChannel] "Tests running in interp: $shell"
+ puts [outputChannel] "Tests located in: [testsDirectory]"
+ puts [outputChannel] "Tests running in: [workingDirectory]"
+ puts [outputChannel] "Temporary files stored in\
+ [temporaryDirectory]"
+
+ # [file system] first available in Tcl 8.4
+ if {![catch {file system [testsDirectory]} result]
+ && ([lindex $result 0] ne "native")} {
+ # If we aren't running in the native filesystem, then we must
+ # run the tests in a single process (via 'source'), because
+ # trying to run then via a pipe will fail since the files don't
+ # really exist.
+ singleProcess 1
+ }
-proc ::tcltest::getMatchingFiles {args} {
- set matchingFiles {}
- if {[llength $args] > 0} {
- set searchDirectory $args
+ if {[singleProcess]} {
+ puts [outputChannel] \
+ "Test files sourced into current interpreter"
} else {
- set searchDirectory $::tcltest::testsDirectory
+ puts [outputChannel] \
+ "Test files run in separate interpreters"
}
- # Find the matching files in the list of directories and then remove the
- # ones that match the skip pattern
- foreach directory $searchDirectory {
- set matchFileList {}
- foreach match $::tcltest::matchFiles {
- set matchFileList [concat $matchFileList \
- [glob -nocomplain [file join $directory $match]]]
- }
- if {$::tcltest::skipFiles != {}} {
- set skipFileList {}
- foreach skip $::tcltest::skipFiles {
- set skipFileList [concat $skipFileList \
- [glob -nocomplain [file join $directory $skip]]]
+ if {[llength [skip]] > 0} {
+ puts [outputChannel] "Skipping tests that match: [skip]"
+ }
+ puts [outputChannel] "Running tests that match: [match]"
+
+ if {[llength [skipFiles]] > 0} {
+ puts [outputChannel] \
+ "Skipping test files that match: [skipFiles]"
+ }
+ if {[llength [matchFiles]] > 0} {
+ puts [outputChannel] \
+ "Only running test files that match: [matchFiles]"
+ }
+
+ set timeCmd {clock format [clock seconds]}
+ puts [outputChannel] "Tests began at [eval $timeCmd]"
+
+ # Run each of the specified tests
+ foreach file [lsort [GetMatchingFiles]] {
+ set tail [file tail $file]
+ puts [outputChannel] $tail
+ flush [outputChannel]
+
+ if {[singleProcess]} {
+ incr numTestFiles
+ uplevel 1 [list ::source $file]
+ } else {
+ # Pass along our configuration to the child processes.
+ # EXCEPT for the -outfile, because the parent process
+ # needs to read and process output of children.
+ set childargv [list]
+ foreach opt [Configure] {
+ if {$opt eq "-outfile"} {continue}
+ set value [Configure $opt]
+ # Don't bother passing default configuration options
+ if {$value eq $DefaultValue($opt)} {
+ continue
+ }
+ lappend childargv $opt $value
}
- foreach file $matchFileList {
- # Only include files that don't match the skip pattern and
- # aren't SCCS lock files.
- if {([lsearch -exact $skipFileList $file] == -1) && \
- (![string match l.*.test [file tail $file]])} {
- lappend matchingFiles $file
+ set cmd [linsert $childargv 0 | $shell $file]
+ if {[catch {
+ incr numTestFiles
+ set pipeFd [open $cmd "r"]
+ while {[gets $pipeFd line] >= 0} {
+ if {[regexp [join {
+ {^([^:]+):\t}
+ {Total\t([0-9]+)\t}
+ {Passed\t([0-9]+)\t}
+ {Skipped\t([0-9]+)\t}
+ {Failed\t([0-9]+)}
+ } ""] $line null testFile \
+ Total Passed Skipped Failed]} {
+ foreach index {Total Passed Skipped Failed} {
+ incr numTests($index) [set $index]
+ }
+ if {$Failed > 0} {
+ lappend failFiles $testFile
+ }
+ } elseif {[regexp [join {
+ {^Number of tests skipped }
+ {for each constraint:}
+ {|^\t(\d+)\t(.+)$}
+ } ""] $line match skipped constraint]} {
+ if {[string match \t* $match]} {
+ AddToSkippedBecause $constraint $skipped
+ }
+ } else {
+ puts [outputChannel] $line
+ }
}
- }
- } else {
- set matchingFiles [concat $matchingFiles $matchFileList]
+ close $pipeFd
+ } msg]} {
+ puts [outputChannel] "Test file error: $msg"
+ # append the name of the test to a list to be reported
+ # later
+ lappend testFileFailures $file
+ }
}
}
- if {$matchingFiles == {}} {
- ::tcltest::PrintError "No test files remain after applying \
- your match and skip patterns!"
- }
- return $matchingFiles
-}
-# The following two procs are used in the io tests.
+ # cleanup
+ puts [outputChannel] "\nTests ended at [eval $timeCmd]"
+ cleanupTests 1
+ if {[info exists testFileFailures]} {
+ puts [outputChannel] "\nTest files exiting with errors: \n"
+ foreach file $testFileFailures {
+ puts [outputChannel] " [file tail $file]\n"
+ }
+ }
-proc ::tcltest::openfiles {} {
- if {[catch {testchannel open} result]} {
- return {}
+ # Checking for subdirectories in which to run tests
+ foreach directory [GetMatchingDirectories [testsDirectory]] {
+ set dir [file tail $directory]
+ puts [outputChannel] [string repeat ~ 44]
+ puts [outputChannel] "$dir test began at [eval $timeCmd]\n"
+
+ uplevel 1 [list ::source [file join $directory all.tcl]]
+
+ set endTime [eval $timeCmd]
+ puts [outputChannel] "\n$dir test ended at $endTime"
+ puts [outputChannel] ""
+ puts [outputChannel] [string repeat ~ 44]
}
- return $result
+ return
}
-proc ::tcltest::leakfiles {old} {
- if {[catch {testchannel open} new]} {
- return {}
- }
- set leak {}
- foreach p $new {
- if {[lsearch $old $p] < 0} {
- lappend leak $p
- }
- }
- return $leak
+#####################################################################
+
+# Test utility procs - not used in tcltest, but may be useful for
+# testing.
+
+# tcltest::loadTestedCommands --
+#
+# Uses the specified script to load the commands to test. Allowed to
+# be empty, as the tested commands could have been compiled into the
+# interpreter.
+#
+# Arguments
+# none
+#
+# Results
+# none
+#
+# Side Effects:
+# none.
+
+proc tcltest::loadTestedCommands {} {
+ return [uplevel 1 [loadScript]]
}
-# ::tcltest::saveState --
+# tcltest::saveState --
#
# Save information regarding what procs and variables exist.
#
@@ -1343,224 +2877,378 @@ proc ::tcltest::leakfiles {old} {
# none
#
# Results:
-# Modifies the variable ::tcltest::saveState
+# Modifies the variable saveState
+#
+# Side effects:
+# None.
-proc ::tcltest::saveState {} {
- uplevel #0 {set ::tcltest::saveState [list [info procs] [info vars]]}
- if {$::tcltest::debug > 1} {
- puts "::tcltest::saveState: $::tcltest::saveState"
- }
+proc tcltest::saveState {} {
+ variable saveState
+ uplevel 1 [list ::set [namespace which -variable saveState]] \
+ {[::list [::info procs] [::info vars]]}
+ DebugPuts 2 "[lindex [info level 0] 0]: $saveState"
+ return
}
-# ::tcltest::restoreState --
+# tcltest::restoreState --
#
# Remove procs and variables that didn't exist before the call to
-# ::tcltest::saveState.
+# [saveState].
#
# Arguments:
# none
#
# Results:
-# Removes procs and variables from your environment if they don't exist
-# in the ::tcltest::saveState variable.
-
-proc ::tcltest::restoreState {} {
- foreach p [info procs] {
- if {([lsearch [lindex $::tcltest::saveState 0] $p] < 0) && \
- (![string equal ::tcltest::$p [namespace origin $p]])} {
- if {$::tcltest::debug > 2} {
- puts "::tcltest::restoreState: Removing proc $p"
- }
- rename $p {}
+# Removes procs and variables from your environment if they don't
+# exist in the saveState variable.
+#
+# Side effects:
+# None.
+
+proc tcltest::restoreState {} {
+ variable saveState
+ foreach p [uplevel 1 {::info procs}] {
+ if {($p ni [lindex $saveState 0]) && ("[namespace current]::$p" ne
+ [uplevel 1 [list ::namespace origin $p]])} {
+
+ DebugPuts 2 "[lindex [info level 0] 0]: Removing proc $p"
+ uplevel 1 [list ::catch [list ::rename $p {}]]
}
}
- foreach p [uplevel #0 {info vars}] {
- if {[lsearch [lindex $::tcltest::saveState 1] $p] < 0} {
- if {$::tcltest::debug > 2} {
- puts "::tcltest::restoreState: Removing variable $p"
- }
- uplevel #0 "unset $p"
+ foreach p [uplevel 1 {::info vars}] {
+ if {$p ni [lindex $saveState 1]} {
+ DebugPuts 2 "[lindex [info level 0] 0]:\
+ Removing variable $p"
+ uplevel 1 [list ::catch [list ::unset $p]]
}
}
+ return
}
-# ::tcltest::normalizeMsg --
+# tcltest::normalizeMsg --
#
# Removes "extra" newlines from a string.
#
# Arguments:
# msg String to be modified
#
+# Results:
+# string with extra newlines removed
+#
+# Side effects:
+# None.
-proc ::tcltest::normalizeMsg {msg} {
+proc tcltest::normalizeMsg {msg} {
regsub "\n$" [string tolower $msg] "" msg
- regsub -all "\n\n" $msg "\n" msg
- regsub -all "\n\}" $msg "\}" msg
- return $msg
+ set msg [string map [list "\n\n" "\n"] $msg]
+ return [string map [list "\n\}" "\}"] $msg]
}
-# makeFile --
+# tcltest::makeFile --
#
# Create a new file with the name <name>, and write <contents> to it.
#
# If this file hasn't been created via makeFile since the last time
-# cleanupTests was called, add it to the $filesMade list, so it will
-# be removed by the next call to cleanupTests.
+# cleanupTests was called, add it to the $filesMade list, so it will be
+# removed by the next call to cleanupTests.
#
-proc ::tcltest::makeFile {contents name} {
- global tcl_platform
-
- if {$::tcltest::debug > 2} {
- puts "::tcltest::makeFile: putting $contents into $name"
+# Arguments:
+# contents content of the new file
+# name name of the new file
+# directory directory name for new file
+#
+# Results:
+# absolute path to the file created
+#
+# Side effects:
+# None.
+
+proc tcltest::makeFile {contents name {directory ""}} {
+ variable filesMade
+ FillFilesExisted
+
+ if {[llength [info level 0]] == 3} {
+ set directory [temporaryDirectory]
}
- set fd [open [file join $::tcltest::temporaryDirectory $name] w]
- fconfigure $fd -translation lf
+ set fullName [file join $directory $name]
+
+ DebugPuts 3 "[lindex [info level 0] 0]:\
+ putting ``$contents'' into $fullName"
- if {[string equal \
- [string index $contents [expr {[string length $contents] - 1}]] \
- "\n"]} {
+ set fd [open $fullName w]
+ chan configure $fd -translation lf
+ if {[string index $contents end] eq "\n"} {
puts -nonewline $fd $contents
} else {
puts $fd $contents
}
close $fd
- set fullName [file join [pwd] $name]
- if {[lsearch -exact $::tcltest::filesMade $fullName] == -1} {
- lappend ::tcltest::filesMade $fullName
+ if {$fullName ni $filesMade} {
+ lappend filesMade $fullName
}
+ return $fullName
}
-# ::tcltest::removeFile --
+# tcltest::removeFile --
#
# Removes the named file from the filesystem
#
# Arguments:
-# name file to be removed
+# name file to be removed
+# directory directory from which to remove file
#
+# Results:
+# return value from [file delete]
+#
+# Side effects:
+# None.
-proc ::tcltest::removeFile {name} {
- if {$::tcltest::debug > 2} {
- puts "::tcltest::removeFile: removing $name"
+proc tcltest::removeFile {name {directory ""}} {
+ variable filesMade
+ FillFilesExisted
+ if {[llength [info level 0]] == 2} {
+ set directory [temporaryDirectory]
+ }
+ set fullName [file join $directory $name]
+ DebugPuts 3 "[lindex [info level 0] 0]: removing $fullName"
+ set idx [lsearch -exact $filesMade $fullName]
+ set filesMade [lreplace $filesMade $idx $idx]
+ if {$idx == -1} {
+ DebugDo 1 {
+ Warn "removeFile removing \"$fullName\":\n not created by makeFile"
+ }
+ }
+ if {![file isfile $fullName]} {
+ DebugDo 1 {
+ Warn "removeFile removing \"$fullName\":\n not a file"
+ }
}
- file delete [file join $::tcltest::temporaryDirectory $name]
+ return [file delete -- $fullName]
}
-# makeDirectory --
+# tcltest::makeDirectory --
#
# Create a new dir with the name <name>.
#
# If this dir hasn't been created via makeDirectory since the last time
-# cleanupTests was called, add it to the $directoriesMade list, so it will
-# be removed by the next call to cleanupTests.
+# cleanupTests was called, add it to the $directoriesMade list, so it
+# will be removed by the next call to cleanupTests.
#
-proc ::tcltest::makeDirectory {name} {
- file mkdir $name
+# Arguments:
+# name name of the new directory
+# directory directory in which to create new dir
+#
+# Results:
+# absolute path to the directory created
+#
+# Side effects:
+# None.
- set fullName [file join [pwd] $name]
- if {[lsearch -exact $::tcltest::filesMade $fullName] == -1} {
- lappend ::tcltest::filesMade $fullName
+proc tcltest::makeDirectory {name {directory ""}} {
+ variable filesMade
+ FillFilesExisted
+ if {[llength [info level 0]] == 2} {
+ set directory [temporaryDirectory]
+ }
+ set fullName [file join $directory $name]
+ DebugPuts 3 "[lindex [info level 0] 0]: creating $fullName"
+ file mkdir $fullName
+ if {$fullName ni $filesMade} {
+ lappend filesMade $fullName
}
+ return $fullName
}
-# ::tcltest::removeDirectory --
+# tcltest::removeDirectory --
#
# Removes a named directory from the file system.
#
# Arguments:
-# name Name of the directory to remove
+# name Name of the directory to remove
+# directory Directory from which to remove
#
+# Results:
+# return value from [file delete]
+#
+# Side effects:
+# None
-proc ::tcltest::removeDirectory {name} {
- file delete -force $name
-}
-
-proc ::tcltest::viewFile {name} {
- global tcl_platform
- if {([string equal $tcl_platform(platform) "macintosh"]) || \
- ($::tcltest::testConstraints(unixExecs) == 0)} {
- set f [open [file join $::tcltest::temporaryDirectory $name]]
- set data [read -nonewline $f]
- close $f
- return $data
- } else {
- exec cat [file join $::tcltest::temporaryDirectory $name]
+proc tcltest::removeDirectory {name {directory ""}} {
+ variable filesMade
+ FillFilesExisted
+ if {[llength [info level 0]] == 2} {
+ set directory [temporaryDirectory]
}
+ set fullName [file join $directory $name]
+ DebugPuts 3 "[lindex [info level 0] 0]: deleting $fullName"
+ set idx [lsearch -exact $filesMade $fullName]
+ set filesMade [lreplace $filesMade $idx $idx]
+ if {$idx == -1} {
+ DebugDo 1 {
+ Warn "removeDirectory removing \"$fullName\":\n not created\
+ by makeDirectory"
+ }
+ }
+ if {![file isdirectory $fullName]} {
+ DebugDo 1 {
+ Warn "removeDirectory removing \"$fullName\":\n not a directory"
+ }
+ }
+ return [file delete -force -- $fullName]
}
-# grep --
+# tcltest::viewFile --
#
-# Evaluate a given expression against each element of a list and return all
-# elements for which the expression evaluates to true. For the purposes of
-# this proc, use of the keyword "CURRENT_ELEMENT" will flag the proc to use the
-# value of the current element within the expression. This is equivalent to
-# the perl grep command where CURRENT_ELEMENT would be the name for the special
-# variable $_.
+# reads the content of a file and returns it
#
-# Examples of usage would be:
-# set subList [grep {CURRENT_ELEMENT == 1} $listOfNumbers]
-# set subList [grep {regexp {abc} CURRENT_ELEMENT} $listOfStrings]
+# Arguments:
+# name of the file to read
+# directory in which file is located
#
-# Use of the CURRENT_ELEMENT keyword is optional. If it is left out, it is
-# assumed to be the final argument to the expression provided.
-#
-# Example:
-# grep {regexp a} $someList
+# Results:
+# content of the named file
#
-proc ::tcltest:grep { expression searchList } {
- foreach element $searchList {
- if {[regsub -all CURRENT_ELEMENT $expression $element \
- newExpression] == 0} {
- set newExpression "$expression {$element}"
- }
- if {[eval $newExpression] == 1} {
- lappend returnList $element
- }
- }
- if {[info exists returnList]} {
- return $returnList
+# Side effects:
+# None.
+
+proc tcltest::viewFile {name {directory ""}} {
+ FillFilesExisted
+ if {[llength [info level 0]] == 2} {
+ set directory [temporaryDirectory]
}
- return
+ set fullName [file join $directory $name]
+ set f [open $fullName]
+ set data [read -nonewline $f]
+ close $f
+ return $data
}
+# tcltest::bytestring --
#
# Construct a string that consists of the requested sequence of bytes,
-# as opposed to a string of properly formed UTF-8 characters.
-# This allows the tester to
-# 1. Create denormalized or improperly formed strings to pass to C procedures
-# that are supposed to accept strings with embedded NULL bytes.
-# 2. Confirm that a string result has a certain pattern of bytes, for instance
-# to confirm that "\xe0\0" in a Tcl script is stored internally in
-# UTF-8 as the sequence of bytes "\xc3\xa0\xc0\x80".
+# as opposed to a string of properly formed UTF-8 characters.
+# This allows the tester to
+# 1. Create denormalized or improperly formed strings to pass to C
+# procedures that are supposed to accept strings with embedded NULL
+# bytes.
+# 2. Confirm that a string result has a certain pattern of bytes, for
+# instance to confirm that "\xe0\0" in a Tcl script is stored
+# internally in UTF-8 as the sequence of bytes "\xc3\xa0\xc0\x80".
#
# Generally, it's a bad idea to examine the bytes in a Tcl string or to
# construct improperly formed strings in this manner, because it involves
# exposing that Tcl uses UTF-8 internally.
+#
+# Arguments:
+# string being converted
+#
+# Results:
+# result fom encoding
+#
+# Side effects:
+# None
+
+proc tcltest::bytestring {string} {
+ return [encoding convertfrom identity $string]
+}
+
+# tcltest::OpenFiles --
+#
+# used in io tests, uses testchannel
+#
+# Arguments:
+# None.
+#
+# Results:
+# ???
+#
+# Side effects:
+# None.
-proc ::tcltest::bytestring {string} {
- encoding convertfrom identity $string
+proc tcltest::OpenFiles {} {
+ if {[catch {testchannel open} result]} {
+ return {}
+ }
+ return $result
+}
+
+# tcltest::LeakFiles --
+#
+# used in io tests, uses testchannel
+#
+# Arguments:
+# None.
+#
+# Results:
+# ???
+#
+# Side effects:
+# None.
+
+proc tcltest::LeakFiles {old} {
+ if {[catch {testchannel open} new]} {
+ return {}
+ }
+ set leak {}
+ foreach p $new {
+ if {$p ni $old} {
+ lappend leak $p
+ }
+ }
+ return $leak
}
#
# Internationalization / ISO support procs -- dl
#
-proc ::tcltest::set_iso8859_1_locale {} {
+
+# tcltest::SetIso8859_1_Locale --
+#
+# used in cmdIL.test, uses testlocale
+#
+# Arguments:
+# None.
+#
+# Results:
+# None.
+#
+# Side effects:
+# None.
+
+proc tcltest::SetIso8859_1_Locale {} {
+ variable previousLocale
+ variable isoLocale
if {[info commands testlocale] != ""} {
- set ::tcltest::previousLocale [testlocale ctype]
- testlocale ctype $::tcltest::isoLocale
+ set previousLocale [testlocale ctype]
+ testlocale ctype $isoLocale
}
return
}
-proc ::tcltest::restore_locale {} {
+# tcltest::RestoreLocale --
+#
+# used in cmdIL.test, uses testlocale
+#
+# Arguments:
+# None.
+#
+# Results:
+# None.
+#
+# Side effects:
+# None.
+
+proc tcltest::RestoreLocale {} {
+ variable previousLocale
if {[info commands testlocale] != ""} {
- testlocale ctype $::tcltest::previousLocale
+ testlocale ctype $previousLocale
}
return
}
-# threadReap --
+# tcltest::threadReap --
#
# Kill all threads except for the main thread.
# Do nothing if testthread is not defined.
@@ -1570,28 +3258,137 @@ proc ::tcltest::restore_locale {} {
#
# Results:
# Returns the number of existing threads.
-proc ::tcltest::threadReap {} {
- if {[info commands testthread] != {}} {
+#
+# Side Effects:
+# none.
+#
+
+proc tcltest::threadReap {} {
+ if {[info commands testthread] ne {}} {
+
+ # testthread built into tcltest
+
testthread errorproc ThreadNullError
while {[llength [testthread names]] > 1} {
foreach tid [testthread names] {
- if {$tid != $::tcltest::mainThread} {
- catch {testthread send -async $tid {testthread exit}}
- update
+ if {$tid != [mainThread]} {
+ catch {
+ testthread send -async $tid {testthread exit}
+ }
}
}
+ ## Enter a bit a sleep to give the threads enough breathing
+ ## room to kill themselves off, otherwise the end up with a
+ ## massive queue of repeated events
+ after 1
}
testthread errorproc ThreadError
return [llength [testthread names]]
+ } elseif {[info commands thread::id] ne {}} {
+
+ # Thread extension
+
+ thread::errorproc ThreadNullError
+ while {[llength [thread::names]] > 1} {
+ foreach tid [thread::names] {
+ if {$tid != [mainThread]} {
+ catch {thread::send -async $tid {thread::exit}}
+ }
+ }
+ ## Enter a bit a sleep to give the threads enough breathing
+ ## room to kill themselves off, otherwise the end up with a
+ ## massive queue of repeated events
+ after 1
+ }
+ thread::errorproc ThreadError
+ return [llength [thread::names]]
} else {
return 1
}
+ return 0
}
-# Initialize the constraints and set up command line arguments
+# Initialize the constraints and set up command line arguments
namespace eval tcltest {
- ::tcltest::initConstraints
- ::tcltest::processCmdLineArgs
-}
+ # Define initializers for all the built-in contraint definitions
+ DefineConstraintInitializers
+
+ # Set up the constraints in the testConstraints array to be lazily
+ # initialized by a registered initializer, or by "false" if no
+ # initializer is registered.
+ trace add variable testConstraints read [namespace code SafeFetch]
+
+ # Only initialize constraints at package load time if an
+ # [initConstraintsHook] has been pre-defined. This is only
+ # for compatibility support. The modern way to add a custom
+ # test constraint is to just call the [testConstraint] command
+ # straight away, without all this "hook" nonsense.
+ if {[namespace current] eq
+ [namespace qualifiers [namespace which initConstraintsHook]]} {
+ InitConstraints
+ } else {
+ proc initConstraintsHook {} {}
+ }
+
+ # Define the standard match commands
+ customMatch exact [list string equal]
+ customMatch glob [list string match]
+ customMatch regexp [list regexp --]
+
+ # If the TCLTEST_OPTIONS environment variable exists, configure
+ # tcltest according to the option values it specifies. This has
+ # the effect of resetting tcltest's default configuration.
+ proc ConfigureFromEnvironment {} {
+ upvar #0 env(TCLTEST_OPTIONS) options
+ if {[catch {llength $options} msg]} {
+ Warn "invalid TCLTEST_OPTIONS \"$options\":\n invalid\
+ Tcl list: $msg"
+ return
+ }
+ if {[llength $options] % 2} {
+ Warn "invalid TCLTEST_OPTIONS: \"$options\":\n should be\
+ -option value ?-option value ...?"
+ return
+ }
+ if {[catch {Configure {*}$options} msg]} {
+ Warn "invalid TCLTEST_OPTIONS: \"$options\":\n $msg"
+ return
+ }
+ }
+ if {[info exists ::env(TCLTEST_OPTIONS)]} {
+ ConfigureFromEnvironment
+ }
+
+ proc LoadTimeCmdLineArgParsingRequired {} {
+ set required false
+ if {[info exists ::argv] && ("-help" in $::argv)} {
+ # The command line asks for -help, so give it (and exit)
+ # right now. ([configure] does not process -help)
+ set required true
+ }
+ foreach hook { PrintUsageInfoHook processCmdLineArgsHook
+ processCmdLineArgsAddFlagsHook } {
+ if {[namespace current] eq
+ [namespace qualifiers [namespace which $hook]]} {
+ set required true
+ } else {
+ proc $hook args {}
+ }
+ }
+ return $required
+ }
+
+ # Only initialize configurable options from the command line arguments
+ # at package load time if necessary for backward compatibility. This
+ # lets the tcltest user call [configure] for themselves if they wish.
+ # Traces are established for auto-configuration from the command line
+ # if any configurable options are accessed before the user calls
+ # [configure].
+ if {[LoadTimeCmdLineArgParsingRequired]} {
+ ProcessCmdLineArgs
+ } else {
+ EstablishAutoConfigureTraces
+ }
-return
+ package provide [namespace tail [namespace current]] $Version
+}
diff --git a/library/tcltest1.0/pkgIndex.tcl b/library/tcltest1.0/pkgIndex.tcl
deleted file mode 100644
index 96b38cc..0000000
--- a/library/tcltest1.0/pkgIndex.tcl
+++ /dev/null
@@ -1,18 +0,0 @@
-# Tcl package index file, version 1.1
-# This file is generated by the "pkg_mkIndex" command
-# and sourced either when an application starts up or
-# by a "package unknown" script. It invokes the
-# "package ifneeded" command to set up package-related
-# information so that packages will be loaded automatically
-# in response to "package require" commands. When this
-# script is sourced, the variable $dir must contain the
-# full path name of this file's directory.
-
-package ifneeded tcltest 1.0 [list tclPkgSetup $dir tcltest 1.0 \
- {{tcltest.tcl source {::tcltest::bytestring ::tcltest::cleanupTests \
- ::tcltest::dotests ::tcltest::makeDirectory ::tcltest::makeFile \
- ::tcltest::normalizeMsg ::tcltest::removeDirectory \
- ::tcltest::removeFile ::tcltest::restoreState ::tcltest::saveState \
- ::tcltest::test ::tcltest::threadReap ::tcltest::viewFile memory \
- ::tcltest:grep ::tcltest::getMatchingTestFiles }}}]
-
diff --git a/library/tcltest1.0/tcltest.tcl b/library/tcltest1.0/tcltest.tcl
deleted file mode 100644
index 039c560..0000000
--- a/library/tcltest1.0/tcltest.tcl
+++ /dev/null
@@ -1,1597 +0,0 @@
-# tcltest.tcl --
-#
-# This file contains support code for the Tcl test suite. It
-# defines the ::tcltest namespace and finds and defines the output
-# directory, constraints available, output and error channels, etc. used
-# by Tcl tests. See the README file for more details.
-#
-# This design was based on the Tcl testing approach designed and
-# initially implemented by Mary Ann May-Pumphrey of Sun Microsystems.
-#
-# Copyright (c) 1994-1997 Sun Microsystems, Inc.
-# Copyright (c) 1998-1999 by Scriptics Corporation.
-# All rights reserved.
-#
-# RCS: @(#) $Id: tcltest.tcl,v 1.9 1999/07/30 01:35:27 jenn Exp $
-
-package provide tcltest 1.0
-
-# Ensure that we have a minimal auto_path so we don't pick up extra junk.
-set auto_path [list [info library]]
-
-# create the "tcltest" namespace for all testing variables and procedures
-
-namespace eval tcltest {
-
- # Export the public tcltest procs
- set procList [list test cleanupTests saveState restoreState \
- normalizeMsg makeFile removeFile makeDirectory removeDirectory \
- viewFile bytestring safeFetch threadReap getMatchingTestFiles]
- foreach proc $procList {
- namespace export $proc
- }
-
- # ::tcltest::verbose defaults to "b"
-
- variable verbose "b"
-
- # Match and skip patterns default to the empty list, except for
- # matchFiles, which defaults to all .test files in the testsDirectory
-
- variable match {}
- variable skip {}
-
- variable matchFiles {*.test}
- variable skipFiles {}
-
- # By default, don't save core files
- variable preserveCore 0
-
- # output goes to stdout by default
-
- variable outputChannel stdout
-
- # errors go to stderr by default
-
- variable errorChannel stderr
-
- # debug output doesn't get printed by default; debug level 1 spits
- # up only the tets that were skipped because they didn't match or were
- # specifically skipped. A debug level of 2 would spit up the tcltest
- # variables and flags provided; a debug level of 3 causes some additional
- # output regarding operations of the test harness. The tcltest package
- # currently implements only up to debug level 3.
-
- variable debug 0
-
- # Count the number of files tested (0 if all.tcl wasn't called).
- # The all.tcl file will set testSingleFile to false, so stats will
- # not be printed until all.tcl calls the cleanupTests proc.
- # The currentFailure var stores the boolean value of whether the
- # current test file has had any failures. The failFiles list
- # stores the names of test files that had failures.
-
- variable numTestFiles 0
- variable testSingleFile true
- variable currentFailure false
- variable failFiles {}
-
- # Tests should remove all files they create. The test suite will
- # check the current working dir for files created by the tests.
- # ::tcltest::filesMade keeps track of such files created using the
- # ::tcltest::makeFile and ::tcltest::makeDirectory procedures.
- # ::tcltest::filesExisted stores the names of pre-existing files.
-
- variable filesMade {}
- variable filesExisted {}
-
- # ::tcltest::numTests will store test files as indices and the list
- # of files (that should not have been) left behind by the test files.
-
- array set ::tcltest::createdNewFiles {}
-
- # initialize ::tcltest::numTests array to keep track fo the number of
- # tests that pass, fial, and are skipped.
-
- array set ::tcltest::numTests [list Total 0 Passed 0 Skipped 0 Failed 0]
-
- # initialize ::tcltest::skippedBecause array to keep track of
- # constraints that kept tests from running; a constraint name of
- # "userSpecifiedSkip" means that the test appeared on the list of tests
- # that matched the -skip value given to the flag; "userSpecifiedNonMatch"
- # means that the test didn't match the argument given to the -match flag;
- # both of these constraints are counted only if ::tcltest::debug is set to
- # true.
-
- array set ::tcltest::skippedBecause {}
-
- # initialize the ::tcltest::testConstraints array to keep track of valid
- # predefined constraints (see the explanation for the
- # ::tcltest::initConstraints proc for more details).
-
- array set ::tcltest::testConstraints {}
-
- # Don't run only the constrained tests by default
- variable limitConstraints false
-
- # tests that use thread need to know which is the main thread
-
- variable mainThread 1
- if {[info commands testthread] != {}} {
- set mainThread [testthread names]
- }
-
- # save the original environment so that it can be restored later
-
- array set ::tcltest::originalEnv [array get ::env]
-
- # Set ::tcltest::workingDirectory to [pwd]. The default output directory
- # for Tcl tests is the working directory.
-
- variable workingDirectory [pwd]
- variable temporaryDirectory $workingDirectory
-
- # Tests should not rely on the current working directory.
- # Files that are part of the test suite should be accessed relative to
- # ::tcltest::testsDirectory.
-
- set oDir [pwd]
- catch {cd [file join [file dirname [info script]] .. .. tests]}
- variable testsDirectory [pwd]
- cd $oDir
-
- # the variables and procs that existed when ::tcltest::saveState was
- # called are stored in a variable of the same name
- variable saveState {}
-
- # Internationalization support
- if {![info exists ::tcltest::isoLocale]} {
- variable isoLocale fr
- switch $tcl_platform(platform) {
- "unix" {
-
- # Try some 'known' values for some platforms:
-
- switch -exact -- $tcl_platform(os) {
- "FreeBSD" {
- set ::tcltest::isoLocale fr_FR.ISO_8859-1
- }
- HP-UX {
- set ::tcltest::isoLocale fr_FR.iso88591
- }
- Linux -
- IRIX {
- set ::tcltest::isoLocale fr
- }
- default {
-
- # Works on SunOS 4 and Solaris, and maybe others...
- # define it to something else on your system
- #if you want to test those.
-
- set ::tcltest::isoLocale iso_8859_1
- }
- }
- }
- "windows" {
- set ::tcltest::isoLocale French
- }
- }
- }
-
- # Set the location of the execuatble
- variable tcltest [info nameofexecutable]
-
- # save the platform information so it can be restored later
- variable originalTclPlatform [array get tcl_platform]
-
-
- # If a core file exists, save its modification time.
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- variable coreModificationTime [file mtime [file join \
- $::tcltest::workingDirectory core]]
- }
-
-}
-
-# ::tcltest::AddToSkippedBecause --
-#
-# Increments the variable used to track how many tests were skipped
-# because of a particular constraint.
-#
-# Arguments:
-# constraint The name of the constraint to be modified
-#
-# Results:
-# Modifies ::tcltest::skippedBecause; sets the variable to 1 if didn't
-# previously exist - otherwise, it just increments it.
-
-proc ::tcltest::AddToSkippedBecause { constraint } {
- # add the constraint to the list of constraints the kept tests
- # from running
-
- if {[info exists ::tcltest::skippedBecause($constraint)]} {
- incr ::tcltest::skippedBecause($constraint)
- } else {
- set ::tcltest::skippedBecause($constraint) 1
- }
- return
-}
-
-# ::tcltest::PrintError --
-#
-# Prints errors to ::tcltest::errorChannel and then flushes that
-# channel, making sure that all messages are < 80 characters per line.
-#
-# Arguments:
-# errorMsg String containing the error to be printed
-#
-
-proc ::tcltest::PrintError {errorMsg} {
- set InitialMessage "Error: "
- set InitialMsgLen [string length $InitialMessage]
- puts -nonewline $::tcltest::errorChannel $InitialMessage
-
- # Keep track of where the end of the string is.
- set endingIndex [string length $errorMsg]
-
- if {$endingIndex < 80} {
- puts $::tcltest::errorChannel $errorMsg
- } else {
- # Print up to 80 characters on the first line, including the
- # InitialMessage.
- set beginningIndex [string last " " [string range $errorMsg 0 \
- [expr {80 - $InitialMsgLen}]]]
- puts $::tcltest::errorChannel [string range $errorMsg 0 $beginningIndex]
-
- while {$beginningIndex != "end"} {
- puts -nonewline $::tcltest::errorChannel \
- [string repeat " " $InitialMsgLen]
- if {[expr {$endingIndex - $beginningIndex}] < 72} {
- puts $::tcltest::errorChannel [string trim \
- [string range $errorMsg $beginningIndex end]]
- set beginningIndex end
- } else {
- set newEndingIndex [expr [string last " " [string range \
- $errorMsg $beginningIndex \
- [expr {$beginningIndex + 72}]]] + $beginningIndex]
- if {($newEndingIndex <= 0) \
- || ($newEndingIndex <= $beginningIndex)} {
- set newEndingIndex end
- }
- puts $::tcltest::errorChannel [string trim \
- [string range $errorMsg \
- $beginningIndex $newEndingIndex]]
- set beginningIndex $newEndingIndex
- }
- }
- }
- flush $::tcltest::errorChannel
- return
-}
-
-proc ::tcltest::initConstraintsHook {} {}
-
-# ::tcltest::initConstraints --
-#
-# Check Constraintsuration information that will determine which tests
-# to run. To do this, create an array ::tcltest::testConstraints. Each
-# element has a 0 or 1 value. If the element is "true" then tests
-# with that constraint will be run, otherwise tests with that constraint
-# will be skipped. See the README file for the list of built-in
-# constraints defined in this procedure.
-#
-# Arguments:
-# none
-#
-# Results:
-# The ::tcltest::testConstraints array is reset to have an index for
-# each built-in test constraint.
-
-proc ::tcltest::initConstraints {} {
- global tcl_platform tcl_interactive tk_version
-
- catch {unset ::tcltest::testConstraints}
-
- # The following trace procedure makes it so that we can safely refer to
- # non-existent members of the ::tcltest::testConstraints array without
- # causing an error. Instead, reading a non-existent member will return 0.
- # This is necessary because tests are allowed to use constraint "X" without
- # ensuring that ::tcltest::testConstraints("X") is defined.
-
- trace variable ::tcltest::testConstraints r ::tcltest::safeFetch
-
- proc ::tcltest::safeFetch {n1 n2 op} {
- if {($n2 != {}) && ([info exists ::tcltest::testConstraints($n2)] == 0)} {
- set ::tcltest::testConstraints($n2) 0
- }
- }
-
- ::tcltest::initConstraintsHook
-
- set ::tcltest::testConstraints(unixOnly) \
- [string equal $tcl_platform(platform) "unix"]
- set ::tcltest::testConstraints(macOnly) \
- [string equal $tcl_platform(platform) "macintosh"]
- set ::tcltest::testConstraints(pcOnly) \
- [string equal $tcl_platform(platform) "windows"]
-
- set ::tcltest::testConstraints(unix) $::tcltest::testConstraints(unixOnly)
- set ::tcltest::testConstraints(mac) $::tcltest::testConstraints(macOnly)
- set ::tcltest::testConstraints(pc) $::tcltest::testConstraints(pcOnly)
-
- set ::tcltest::testConstraints(unixOrPc) \
- [expr {$::tcltest::testConstraints(unix) \
- || $::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(macOrPc) \
- [expr {$::tcltest::testConstraints(mac) \
- || $::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(macOrUnix) \
- [expr {$::tcltest::testConstraints(mac) \
- || $::tcltest::testConstraints(unix)}]
-
- set ::tcltest::testConstraints(nt) [string equal $tcl_platform(os) \
- "Windows NT"]
- set ::tcltest::testConstraints(95) [string equal $tcl_platform(os) \
- "Windows 95"]
- set ::tcltest::testConstraints(98) [string equal $tcl_platform(os) \
- "Windows 98"]
- set ::tcltest::testConstraints(win32s) [string equal $tcl_platform(os) \
- "Win32s"]
-
- # The following Constraints switches are used to mark tests that should work,
- # but have been temporarily disabled on certain platforms because they don't
- # and we haven't gotten around to fixing the underlying problem.
-
- set ::tcltest::testConstraints(tempNotPc) \
- [expr {!$::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(tempNotMac) \
- [expr {!$::tcltest::testConstraints(mac)}]
- set ::tcltest::testConstraints(tempNotUnix) \
- [expr {!$::tcltest::testConstraints(unix)}]
-
- # The following Constraints switches are used to mark tests that crash on
- # certain platforms, so that they can be reactivated again when the
- # underlying problem is fixed.
-
- set ::tcltest::testConstraints(pcCrash) \
- [expr {!$::tcltest::testConstraints(pc)}]
- set ::tcltest::testConstraints(win32sCrash) \
- [expr {!$::tcltest::testConstraints(win32s)}]
- set ::tcltest::testConstraints(macCrash) \
- [expr {!$::tcltest::testConstraints(mac)}]
- set ::tcltest::testConstraints(unixCrash) \
- [expr {!$::tcltest::testConstraints(unix)}]
-
- # Skip empty tests
-
- set ::tcltest::testConstraints(emptyTest) 0
-
- # By default, tests that expose known bugs are skipped.
-
- set ::tcltest::testConstraints(knownBug) 0
-
- # By default, non-portable tests are skipped.
-
- set ::tcltest::testConstraints(nonPortable) 0
-
- # Some tests require user interaction.
-
- set ::tcltest::testConstraints(userInteraction) 0
-
- # Some tests must be skipped if the interpreter is not in interactive mode
-
- set ::tcltest::testConstraints(interactive) $tcl_interactive
-
- # Some tests can only be run if the installation came from a CD image
- # instead of a web image
- # Some tests must be skipped if you are running as root on Unix.
- # Other tests can only be run if you are running as root on Unix.
-
- set ::tcltest::testConstraints(root) 0
- set ::tcltest::testConstraints(notRoot) 1
- set user {}
- if {[string equal $tcl_platform(platform) "unix"]} {
- catch {set user [exec whoami]}
- if {[string equal $user ""]} {
- catch {regexp {^[^(]*\(([^)]*)\)} [exec id] dummy user}
- }
- if {([string equal $user "root"]) || ([string equal $user ""])} {
- set ::tcltest::testConstraints(root) 1
- set ::tcltest::testConstraints(notRoot) 0
- }
- }
-
- # Set nonBlockFiles constraint: 1 means this platform supports
- # setting files into nonblocking mode.
-
- if {[catch {set f [open defs r]}]} {
- set ::tcltest::testConstraints(nonBlockFiles) 1
- } else {
- if {[catch {fconfigure $f -blocking off}] == 0} {
- set ::tcltest::testConstraints(nonBlockFiles) 1
- } else {
- set ::tcltest::testConstraints(nonBlockFiles) 0
- }
- close $f
- }
-
- # Set asyncPipeClose constraint: 1 means this platform supports
- # async flush and async close on a pipe.
- #
- # Test for SCO Unix - cannot run async flushing tests because a
- # potential problem with select is apparently interfering.
- # (Mark Diekhans).
-
- if {[string equal $tcl_platform(platform) "unix"]} {
- if {[catch {exec uname -X | fgrep {Release = 3.2v}}] == 0} {
- set ::tcltest::testConstraints(asyncPipeClose) 0
- } else {
- set ::tcltest::testConstraints(asyncPipeClose) 1
- }
- } else {
- set ::tcltest::testConstraints(asyncPipeClose) 1
- }
-
- # Test to see if we have a broken version of sprintf with respect
- # to the "e" format of floating-point numbers.
-
- set ::tcltest::testConstraints(eformat) 1
- if {[string compare "[format %g 5e-5]" "5e-05"] != 0} {
- set ::tcltest::testConstraints(eformat) 0
- }
-
- # Test to see if execed commands such as cat, echo, rm and so forth are
- # present on this machine.
-
- set ::tcltest::testConstraints(unixExecs) 1
- if {[string equal $tcl_platform(platform) "macintosh"]} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([string equal $tcl_platform(platform) "windows"])} {
- if {[catch {exec cat defs}] == 1} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec echo hello}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec sh -c echo hello}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec wc defs}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {$::tcltest::testConstraints(unixExecs) == 1} {
- exec echo hello > removeMe
- if {[catch {exec rm removeMe}] == 1} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec sleep 1}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec fgrep unixExecs defs}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec ps}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec echo abc > removeMe}] == 0) && \
- ([catch {exec chmod 644 removeMe}] == 1) && \
- ([catch {exec rm removeMe}] == 0)} {
- set ::tcltest::testConstraints(unixExecs) 0
- } else {
- catch {exec rm -f removeMe}
- }
- if {($::tcltest::testConstraints(unixExecs) == 1) && \
- ([catch {exec mkdir removeMe}] == 1)} {
- set ::tcltest::testConstraints(unixExecs) 0
- } else {
- catch {exec rm -r removeMe}
- }
- }
-
- # Locate tcltest executable
-
- if {![info exists tk_version]} {
- set tcltest [info nameofexecutable]
-
- if {$tcltest == "{}"} {
- set tcltest {}
- }
- }
-
- set ::tcltest::testConstraints(stdio) 0
- catch {
- catch {file delete -force tmp}
- set f [open tmp w]
- puts $f {
- exit
- }
- close $f
-
- set f [open "|[list $tcltest tmp]" r]
- close $f
-
- set ::tcltest::testConstraints(stdio) 1
- }
- catch {file delete -force tmp}
-
- # Deliberately call socket with the wrong number of arguments. The error
- # message you get will indicate whether sockets are available on this
- # system.
-
- catch {socket} msg
- set ::tcltest::testConstraints(socket) \
- [expr {$msg != "sockets are not available on this system"}]
-
- # Check for internationalization
-
- if {[info commands testlocale] == ""} {
- # No testlocale command, no tests...
- set ::tcltest::testConstraints(hasIsoLocale) 0
- } else {
- set ::tcltest::testConstraints(hasIsoLocale) \
- [string length [::tcltest::set_iso8859_1_locale]]
- ::tcltest::restore_locale
- }
-}
-
-# ::tcltest::PrintUsageInfoHook
-#
-# Hook used for customization of display of usage information.
-#
-
-proc ::tcltest::PrintUsageInfoHook {} {}
-
-# ::tcltest::PrintUsageInfo
-#
-# Prints out the usage information for package tcltest. This can be
-# customized with the redefinition of ::tcltest::PrintUsageInfoHook.
-#
-# Arguments:
-# none
-#
-
-proc ::tcltest::PrintUsageInfo {} {
- puts [format "Usage: [file tail [info nameofexecutable]] \
- script ?-help? ?flag value? ... \n\
- Available flags (and valid input values) are: \n\
- -help \t Display this usage information. \n\
- -verbose level \t Takes any combination of the values \n\
- \t 'p', 's' and 'b'. Test suite will \n\
- \t display all passed tests if 'p' is \n\
- \t specified, all skipped tests if 's' \n\
- \t is specified, and the bodies of \n\
- \t failed tests if 'b' is specified. \n\
- \t The default value is 'b'. \n\
- -constraints list\t Do not skip the listed constraints\n\
- -limitconstraints bool\t Only run tests with the constraints\n\
- \t listed in -constraints.\n\
- -match pattern \t Run all tests within the specified \n\
- \t files that match the glob pattern \n\
- \t given. \n\
- -skip pattern \t Skip all tests within the set of \n\
- \t specified tests (via -match) and \n\
- \t files that match the glob pattern \n\
- \t given. \n\
- -file pattern \t Run tests in all test files that \n\
- \t match the glob pattern given. \n\
- -notfile pattern\t Skip all test files that match the \n\
- \t glob pattern given. \n\
- -preservecore level \t If 2, save any core files produced \n\
- \t during testing in the directory \n\
- \t specified by -tmpdir. If 1, notify the\n\
- \t user if core files are created. The default \n\
- \t is $::tcltest::preserveCore. \n\
- -tmpdir directory\t Save temporary files in the specified\n\
- \t directory. The default value is \n\
- \t $::tcltest::temporaryDirectory. \n\
- -outfile file \t Send output from test runs to the \n\
- \t specified file. The default is \n\
- \t stdout. \n\
- -errfile file \t Send errors from test runs to the \n\
- \t specified file. The default is \n\
- \t stderr. \n\
- -debug level \t Internal debug flag."]
- ::tcltest::PrintUsageInfoHook
- return
-}
-
-# ::tcltest::processCmdLineArgsFlagsHook --
-#
-# This hook is used to add to the list of command line arguments that are
-# processed by ::tcltest::processCmdLineArgs.
-#
-
-proc ::tcltest::processCmdLineArgsAddFlagsHook {} {}
-
-# ::tcltest::processCmdLineArgsHook --
-#
-# This hook is used to actually process the flags added by
-# ::tcltest::processCmdLineArgsAddFlagsHook.
-#
-# Arguments:
-# flags The flags that have been pulled out of argv
-#
-
-proc ::tcltest::processCmdLineArgsHook {flag} {}
-
-# ::tcltest::processCmdLineArgs --
-#
-# Use command line args to set the verbose, skip, and
-# match, outputChannel, errorChannel, debug, and temporaryDirectory
-# variables.
-#
-# This procedure must be run after constraints are initialized, because
-# some constraints can be overridden.
-#
-# Arguments:
-# none
-#
-# Results:
-# Sets the above-named variables in the tcltest namespace.
-
-proc ::tcltest::processCmdLineArgs {} {
- global argv
-
- # The "argv" var doesn't exist in some cases, so use {}.
-
- if {(![info exists argv]) || ([llength $argv] < 1)} {
- set flagArray {}
- } else {
- set flagArray $argv
- }
-
- # Allow for 1-char abbreviations, where applicable (e.g., -match == -m).
- # Note that -verbose cannot be abbreviated to -v in wish because it
- # conflicts with the wish option -visual.
-
- # Process -help first
- if {([lsearch -exact $flagArray {-help}] != -1) || \
- ([lsearch -exact $flagArray {-h}] != -1)} {
- ::tcltest::PrintUsageInfo
- exit 1
- }
-
- if {[catch {array set flag $flagArray}]} {
- ::tcltest::PrintError "odd number of arguments specified on command line: \
- $argv"
- ::tcltest::PrintUsageInfo
- exit 1
- }
-
- # -help is not listed since it has already been processed
- lappend defaultFlags -verbose -match -skip -constraints \
- -outfile -errfile -debug -tmpdir -file -notfile \
- -preservecore -limitconstraints
- set defaultFlags [concat $defaultFlags \
- [ ::tcltest::processCmdLineArgsAddFlagsHook ]]
-
- foreach arg $defaultFlags {
- set abbrev [string range $arg 0 1]
- if {([info exists flag($abbrev)]) && \
- ([lsearch -exact $flagArray $arg] < [lsearch -exact \
- $flagArray $abbrev])} {
- set flag($arg) $flag($abbrev)
- }
- }
-
- # Set ::tcltest::verbose to the arg of the -verbose flag, if given
-
- if {[info exists flag(-verbose)]} {
- set ::tcltest::verbose $flag(-verbose)
- }
-
- # Set ::tcltest::match to the arg of the -match flag, if given.
-
- if {[info exists flag(-match)]} {
- set ::tcltest::match $flag(-match)
- }
-
- # Set ::tcltest::skip to the arg of the -skip flag, if given
-
- if {[info exists flag(-skip)]} {
- set ::tcltest::skip $flag(-skip)
- }
-
- # Handle the -file and -notfile flags
- if {[info exists flag(-file)]} {
- set ::tcltest::matchFiles $flag(-file)
- }
- if {[info exists flag(-notfile)]} {
- set ::tcltest::skipFiles $flag(-notfile)
- }
-
- # Use the -constraints flag, if given, to turn on constraints that are
- # turned off by default: userInteractive knownBug nonPortable. This
- # code fragment must be run after constraints are initialized.
-
- if {[info exists flag(-constraints)]} {
- foreach elt $flag(-constraints) {
- set ::tcltest::testConstraints($elt) 1
- }
- }
-
- # Use the -limitconstraints flag, if given, to tell the harness to limit
- # tests run to those that were specified using the -constraints flag. If
- # the -constraints flag was not specified, print out an error and exit.
- if {[info exists flag(-limitconstraints)]} {
- if {![info exists flag(-constraints)]} {
- puts "You can only use the -limitconstraints flag with \
- -constraints"
- exit 1
- }
- set ::tcltest::limitConstraints $flag(-limitconstraints)
- foreach elt [array names ::tcltest::testConstraints] {
- if {[lsearch -exact $flag(-constraints) $elt] == -1} {
- set ::tcltest::testConstraints($elt) 0
- }
- }
- }
-
- # Set the ::tcltest::temporaryDirectory to the arg of -tmpdir, if
- # given.
- #
- # If the path is relative, make it absolute. If the file exists but
- # is not a dir, then return an error.
- #
- # If ::tcltest::temporaryDirectory does not already exist, create it.
- # If you cannot create it, then return an error.
-
- set tmpDirError ""
- if {[info exists flag(-tmpdir)]} {
- set ::tcltest::temporaryDirectory $flag(-tmpdir)
-
- if {[string compare \
- [file pathtype $::tcltest::temporaryDirectory] \
- "absolute"] != 0} {
- set ::tcltest::temporaryDirectory [file join [pwd] \
- $::tcltest::temporaryDirectory]
- }
- set tmpDirError "bad argument \"$flag(-tmpdir)\" to -tmpdir: "
- }
- if {[file exists $::tcltest::temporaryDirectory]} {
- if {![file isdir $::tcltest::temporaryDirectory]} {
- ::tcltest::PrintError "$tmpDirError \"$::tcltest::temporaryDirectory\" \
- is not a directory"
- exit 1
- } elseif {![file writable $::tcltest::temporaryDirectory]} {
- ::tcltest::PrintError "$tmpDirError \"$::tcltest::temporaryDirectory\" \
- is not writeable"
- exit 1
- } elseif {![file readable $::tcltest::temporaryDirectory]} {
- ::tcltest::PrintError "$tmpDirError \"$::tcltest::temporaryDirectory\" \
- is not readable"
- exit 1
- }
- } else {
- file mkdir $::tcltest::temporaryDirectory
- }
- set oldpwd [pwd]
- cd $::tcltest::temporaryDirectory
- set ::tcltest::temporaryDirectory [pwd]
- cd $oldpwd
-
- # Save the names of files that already exist in
- # the output directory.
- foreach file [glob -nocomplain \
- [file join $::tcltest::temporaryDirectory *]] {
- lappend ::tcltest::filesExisted [file tail $file]
- }
-
- # If an alternate error or output files are specified, change the
- # default channels.
-
- if {[info exists flag(-outfile)]} {
- set tmp $flag(-outfile)
- if {[string compare [file pathtype $tmp] "absolute"] != 0} {
- set tmp [file join $::tcltest::temporaryDirectory $tmp]
- }
- set ::tcltest::outputChannel [open $tmp w]
- }
-
- if {[info exists flag(-errfile)]} {
- set tmp $flag(-errfile)
- if {[string compare [file pathtype $tmp] "absolute"] != 0} {
- set tmp [file join $::tcltest::temporaryDirectory $tmp]
- }
- set ::tcltest::errorChannel [open $tmp w]
- }
-
- # If the user specifies debug testing, print out extra information during
- # the run.
- if {[info exists flag(-debug)]} {
- set ::tcltest::debug $flag(-debug)
- }
-
- # Handle -preservecore
- if {[info exists flag(-preservecore)]} {
- set ::tcltest::preserveCore $flag(-preservecore)
- }
-
- # Call the hook
- ::tcltest::processCmdLineArgsHook [array get flag]
-
- # Spit out everything you know if we're at debug level 2 or greater
- if {$::tcltest::debug > 1} {
- puts "Flags passed into tcltest:"
- parray flag
- puts "::tcltest::debug = $::tcltest::debug"
- puts "::tcltest::testsDirectory = $::tcltest::testsDirectory"
- puts "::tcltest::workingDirectory = $::tcltest::workingDirectory"
- puts "::tcltest::temporaryDirectory = $::tcltest::temporaryDirectory"
- puts "::tcltest::outputChannel = $::tcltest::outputChannel"
- puts "::tcltest::errorChannel = $::tcltest::errorChannel"
- puts "Original environment (::tcltest::originalEnv):"
- parray ::tcltest::originalEnv
- puts "Constraints:"
- parray ::tcltest::testConstraints
- }
-}
-
-# ::tcltest::cleanupTests --
-#
-# Remove files and dirs created using the makeFile and makeDirectory
-# commands since the last time this proc was invoked.
-#
-# Print the names of the files created without the makeFile command
-# since the tests were invoked.
-#
-# Print the number tests (total, passed, failed, and skipped) since the
-# tests were invoked.
-#
-# Restore original environment (as reported by special variable env).
-
-proc ::tcltest::cleanupTests {{calledFromAllFile 0}} {
-
- set testFileName [file tail [info script]]
-
- # Call the cleanup hook
- ::tcltest::cleanupTestsHook
-
- # Remove files and directories created by the :tcltest::makeFile and
- # ::tcltest::makeDirectory procedures.
- # Record the names of files in ::tcltest::workingDirectory that were not
- # pre-existing, and associate them with the test file that created them.
-
- if {!$calledFromAllFile} {
- foreach file $::tcltest::filesMade {
- if {[file exists $file]} {
- catch {file delete -force $file}
- }
- }
- set currentFiles {}
- foreach file [glob -nocomplain \
- [file join $::tcltest::temporaryDirectory *]] {
- lappend currentFiles [file tail $file]
- }
- set newFiles {}
- foreach file $currentFiles {
- if {[lsearch -exact $::tcltest::filesExisted $file] == -1} {
- lappend newFiles $file
- }
- }
- set ::tcltest::filesExisted $currentFiles
- if {[llength $newFiles] > 0} {
- set ::tcltest::createdNewFiles($testFileName) $newFiles
- }
- }
-
- if {$calledFromAllFile || $::tcltest::testSingleFile} {
-
- # print stats
-
- puts -nonewline $::tcltest::outputChannel "$testFileName:"
- foreach index [list "Total" "Passed" "Skipped" "Failed"] {
- puts -nonewline $::tcltest::outputChannel \
- "\t$index\t$::tcltest::numTests($index)"
- }
- puts $::tcltest::outputChannel ""
-
- # print number test files sourced
- # print names of files that ran tests which failed
-
- if {$calledFromAllFile} {
- puts $::tcltest::outputChannel \
- "Sourced $::tcltest::numTestFiles Test Files."
- set ::tcltest::numTestFiles 0
- if {[llength $::tcltest::failFiles] > 0} {
- puts $::tcltest::outputChannel \
- "Files with failing tests: $::tcltest::failFiles"
- set ::tcltest::failFiles {}
- }
- }
-
- # if any tests were skipped, print the constraints that kept them
- # from running.
-
- set constraintList [array names ::tcltest::skippedBecause]
- if {[llength $constraintList] > 0} {
- puts $::tcltest::outputChannel \
- "Number of tests skipped for each constraint:"
- foreach constraint [lsort $constraintList] {
- puts $::tcltest::outputChannel \
- "\t$::tcltest::skippedBecause($constraint)\t$constraint"
- unset ::tcltest::skippedBecause($constraint)
- }
- }
-
- # report the names of test files in ::tcltest::createdNewFiles, and
- # reset the array to be empty.
-
- set testFilesThatTurded [lsort [array names ::tcltest::createdNewFiles]]
- if {[llength $testFilesThatTurded] > 0} {
- puts $::tcltest::outputChannel "Warning: files left behind:"
- foreach testFile $testFilesThatTurded {
- puts "\t$testFile:\t$::tcltest::createdNewFiles($testFile)"
- unset ::tcltest::createdNewFiles($testFile)
- }
- }
-
- # reset filesMade, filesExisted, and numTests
-
- set ::tcltest::filesMade {}
- foreach index [list "Total" "Passed" "Skipped" "Failed"] {
- set ::tcltest::numTests($index) 0
- }
-
- # exit only if running Tk in non-interactive mode
-
- global tk_version tcl_interactive
- if {[info exists tk_version] && !$tcl_interactive} {
- exit
- }
- } else {
-
- # if we're deferring stat-reporting until all files are sourced,
- # then add current file to failFile list if any tests in this file
- # failed
-
- incr ::tcltest::numTestFiles
- if {($::tcltest::currentFailure) && \
- ([lsearch -exact $::tcltest::failFiles $testFileName] == -1)} {
- lappend ::tcltest::failFiles $testFileName
- }
- set ::tcltest::currentFailure false
-
- # restore the environment to the state it was in before this package
- # was loaded
-
- set newEnv {}
- set changedEnv {}
- set removedEnv {}
- foreach index [array names ::env] {
- if {![info exists ::tcltest::originalEnv($index)]} {
- lappend newEnv $index
- unset ::env($index)
- } else {
- if {$::env($index) != $::tcltest::originalEnv($index)} {
- lappend changedEnv $index
- set ::env($index) $::tcltest::originalEnv($index)
- }
- }
- }
- foreach index [array names ::tcltest::originalEnv] {
- if {![info exists ::env($index)]} {
- lappend removedEnv $index
- set ::env($index) $::tcltest::originalEnv($index)
- }
- }
- if {[llength $newEnv] > 0} {
- puts $::tcltest::outputChannel \
- "env array elements created:\t$newEnv"
- }
- if {[llength $changedEnv] > 0} {
- puts $::tcltest::outputChannel \
- "env array elements changed:\t$changedEnv"
- }
- if {[llength $removedEnv] > 0} {
- puts $::tcltest::outputChannel \
- "env array elements removed:\t$removedEnv"
- }
-
- set changedTclPlatform {}
- foreach index [array names ::tcltest::originalTclPlatform] {
- if {$::tcl_platform($index) != \
- $::tcltest::originalTclPlatform($index)} {
- lappend changedTclPlatform $index
- set ::tcl_platform($index) \
- $::tcltest::originalTclPlatform($index)
- }
- }
- if {[llength $changedTclPlatform] > 0} {
- puts $::tcltest::outputChannel \
- "tcl_platform array elements changed:\t$changedTclPlatform"
- }
-
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- if {$::tcltest::preserveCore > 1} {
- puts $::tcltest::outputChannel "produced core file! \
- Moving file to: \
- [file join $::tcltest::temporaryDirectory core-$name]"
- flush $::tcltest::outputChannel
- catch {file rename -force \
- [file join $::tcltest::workingDirectory core] \
- [file join $::tcltest::temporaryDirectory \
- core-$name]} msg
- if {[string length $msg] > 0} {
- ::tcltest::PrintError "Problem renaming file: $msg"
- }
- } else {
- # Print a message if there is a core file and (1) there
- # previously wasn't one or (2) the new one is different from
- # the old one.
-
- if {[info exists ::tcltest::coreModificationTime]} {
- if {$::tcltest::coreModificationTime != [file mtime \
- [file join $::tcltest::workingDirectory core]]} {
- puts $::tcltest::outputChannel "A core file was created!"
- }
- } else {
- puts $::tcltest::outputChannel "A core file was created!"
- }
- }
- }
- }
-}
-
-# ::tcltest::cleanupTestsHook --
-#
-# This hook allows a harness that builds upon tcltest to specify
-# additional things that should be done at cleanup.
-#
-
-proc ::tcltest::cleanupTestsHook {} {}
-
-# test --
-#
-# This procedure runs a test and prints an error message if the test fails.
-# If ::tcltest::verbose has been set, it also prints a message even if the
-# test succeeds. The test will be skipped if it doesn't match the
-# ::tcltest::match variable, if it matches an element in
-# ::tcltest::skip, or if one of the elements of "constraints" turns
-# out not to be true.
-#
-# Arguments:
-# name - Name of test, in the form foo-1.2.
-# description - Short textual description of the test, to
-# help humans understand what it does.
-# constraints - A list of one or more keywords, each of
-# which must be the name of an element in
-# the array "::tcltest::testConstraints". If any of these
-# elements is zero, the test is skipped.
-# This argument may be omitted.
-# script - Script to run to carry out the test. It must
-# return a result that can be checked for
-# correctness.
-# expectedAnswer - Expected result from script.
-
-proc ::tcltest::test {name description script expectedAnswer args} {
- if {$::tcltest::debug > 2} {
- puts "Running $name ($description)"
- }
-
- incr ::tcltest::numTests(Total)
-
- # skip the test if it's name matches an element of skip
-
- foreach pattern $::tcltest::skip {
- if {[string match $pattern $name]} {
- incr ::tcltest::numTests(Skipped)
- if {$::tcltest::debug} {
- ::tcltest::AddToSkippedBecause userSpecifiedSkip
- }
- return
- }
- }
-
- # skip the test if it's name doesn't match any element of match
-
- if {[llength $::tcltest::match] > 0} {
- set ok 0
- foreach pattern $::tcltest::match {
- if {[string match $pattern $name]} {
- set ok 1
- break
- }
- }
- if {!$ok} {
- incr ::tcltest::numTests(Skipped)
- if {$::tcltest::debug} {
- ::tcltest::AddToSkippedBecause userSpecifiedNonMatch
- }
- return
- }
- }
-
- set i [llength $args]
- if {$i == 0} {
- set constraints {}
- # If we're limited to the listed constraints and there aren't any
- # listed, then we shouldn't run the test.
- if {$::tcltest::limitConstraints} {
- ::tcltest::AddToSkippedBecause userSpecifiedLimitConstraint
- incr ::tcltest::numTests(Skipped)
- return
- }
- } elseif {$i == 1} {
-
- # "constraints" argument exists; shuffle arguments down, then
- # make sure that the constraints are satisfied.
-
- set constraints $script
- set script $expectedAnswer
- set expectedAnswer [lindex $args 0]
- set doTest 0
- if {[string match {*[$\[]*} $constraints] != 0} {
- # full expression, e.g. {$foo > [info tclversion]}
- catch {set doTest [uplevel #0 expr $constraints]}
-
- } elseif {[regexp {[^.a-zA-Z0-9 ]+} $constraints] != 0} {
- # something like {a || b} should be turned into
- # $::tcltest::testConstraints(a) || $::tcltest::testConstraints(b).
- regsub -all {[.a-zA-Z0-9]+} $constraints \
- {$::tcltest::testConstraints(&)} c
- catch {set doTest [eval expr $c]}
- } else {
- # just simple constraints such as {unixOnly fonts}.
-
- set doTest 1
- foreach constraint $constraints {
- if {(![info exists ::tcltest::testConstraints($constraint)]) \
- || (!$::tcltest::testConstraints($constraint))} {
- set doTest 0
-
- # store the constraint that kept the test from running
- set constraints $constraint
- break
- }
- }
- }
- if {$doTest == 0} {
- if {[string first s $::tcltest::verbose] != -1} {
- puts $::tcltest::outputChannel "++++ $name SKIPPED: $constraints"
- }
-
- incr ::tcltest::numTests(Skipped)
- ::tcltest::AddToSkippedBecause $constraints
- return
- }
- } else {
- error "wrong # args: must be \"test name description ?constraints? script expectedAnswer\""
- }
-
- # Save information about the core file. You need to restore the original
- # tcl_platform environment because some of the tests mess with tcl_platform.
-
- if {$::tcltest::preserveCore} {
- set currentTclPlatform [array get tcl_platform]
- array set tcl_platform $::tcltest::originalTclPlatform
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- set coreModTime [file mtime [file join \
- $::tcltest::workingDirectory core]]
- }
- array set tcl_platform $currentTclPlatform
- }
-
- # If there is no "memory" command (because memory debugging isn't
- # enabled), then don't attempt to use the command.
-
- if {[info commands memory] != {}} {
- memory tag $name
- }
-
- set code [catch {uplevel $script} actualAnswer]
- if {([string compare $actualAnswer $expectedAnswer] == 0) && ($code == 0)} {
- incr ::tcltest::numTests(Passed)
- if {[string first p $::tcltest::verbose] != -1} {
- puts $::tcltest::outputChannel "++++ $name PASSED"
- }
- } else {
- incr ::tcltest::numTests(Failed)
- set ::tcltest::currentFailure true
- if {[string first b $::tcltest::verbose] == -1} {
- set script ""
- }
- puts $::tcltest::outputChannel "\n==== $name $description FAILED"
- if {$script != ""} {
- puts $::tcltest::outputChannel "==== Contents of test case:"
- puts $::tcltest::outputChannel $script
- }
- if {$code != 0} {
- if {$code == 1} {
- puts $::tcltest::outputChannel "==== Test generated error:"
- puts $::tcltest::outputChannel $actualAnswer
- } elseif {$code == 2} {
- puts $::tcltest::outputChannel "==== Test generated return exception; result was:"
- puts $::tcltest::outputChannel $actualAnswer
- } elseif {$code == 3} {
- puts $::tcltest::outputChannel "==== Test generated break exception"
- } elseif {$code == 4} {
- puts $::tcltest::outputChannel "==== Test generated continue exception"
- } else {
- puts $::tcltest::outputChannel "==== Test generated exception $code; message was:"
- puts $::tcltest::outputChannel $actualAnswer
- }
- } else {
- puts $::tcltest::outputChannel "---- Result was:\n$actualAnswer"
- }
- puts $::tcltest::outputChannel "---- Result should have been:\n$expectedAnswer"
- puts $::tcltest::outputChannel "==== $name FAILED\n"
- }
- if {$::tcltest::preserveCore} {
- set currentTclPlatform [array get tcl_platform]
- if {[file exists [file join $::tcltest::workingDirectory core]]} {
- if {$::tcltest::preserveCore > 1} {
- puts $::tcltest::outputChannel "==== $name produced core file! \
- Moving file to: \
- [file join $::tcltest::temporaryDirectory core-$name]"
- catch {file rename -force \
- [file join $::tcltest::workingDirectory core] \
- [file join $::tcltest::temporaryDirectory \
- core-$name]} msg
- if {[string length $msg] > 0} {
- ::tcltest::PrintError "Problem renaming file: $msg"
- }
- } else {
- # Print a message if there is a core file and (1) there
- # previously wasn't one or (2) the new one is different from
- # the old one.
-
- if {[info exists coreModTime]} {
- if {$coreModTime != [file mtime \
- [file join $::tcltest::workingDirectory core]]} {
- puts $::tcltest::outputChannel "==== $name produced core file!"
- }
- } else {
- puts $::tcltest::outputChannel "==== $name produced core file!"
- }
- }
- }
- array set tcl_platform $currentTclPlatform
- }
-}
-
-# ::tcltest::getMatchingTestFiles
-#
-# Looks at the patterns given to match and skip files
-# and uses them to put together a list of the tests that will be run.
-#
-# Arguments:
-# none
-#
-# Results:
-# The constructed list is returned to the user. This will primarily
-# be used in 'all.tcl' files.
-
-proc ::tcltest::getMatchingFiles {args} {
- set matchingFiles {}
- if {[llength $args] > 0} {
- set searchDirectory $args
- } else {
- set searchDirectory $::tcltest::testsDirectory
- }
- # Find the matching files in the list of directories and then remove the
- # ones that match the skip pattern
- foreach directory $searchDirectory {
- set matchFileList {}
- foreach match $::tcltest::matchFiles {
- set matchFileList [concat $matchFileList \
- [glob -nocomplain [file join $directory $match]]]
- }
- if {$::tcltest::skipFiles != {}} {
- set skipFileList {}
- foreach skip $::tcltest::skipFiles {
- set skipFileList [concat $skipFileList \
- [glob -nocomplain [file join $directory $skip]]]
- }
- foreach file $matchFileList {
- # Only include files that don't match the skip pattern and
- # aren't SCCS lock files.
- if {([lsearch -exact $skipFileList $file] == -1) && \
- (![string match l.*.test [file tail $file]])} {
- lappend matchingFiles $file
- }
- }
- } else {
- set matchingFiles [concat $matchingFiles $matchFileList]
- }
- }
- if {$matchingFiles == {}} {
- ::tcltest::PrintError "No test files remain after applying \
- your match and skip patterns!"
- }
- return $matchingFiles
-}
-
-# The following two procs are used in the io tests.
-
-proc ::tcltest::openfiles {} {
- if {[catch {testchannel open} result]} {
- return {}
- }
- return $result
-}
-
-proc ::tcltest::leakfiles {old} {
- if {[catch {testchannel open} new]} {
- return {}
- }
- set leak {}
- foreach p $new {
- if {[lsearch $old $p] < 0} {
- lappend leak $p
- }
- }
- return $leak
-}
-
-# ::tcltest::saveState --
-#
-# Save information regarding what procs and variables exist.
-#
-# Arguments:
-# none
-#
-# Results:
-# Modifies the variable ::tcltest::saveState
-
-proc ::tcltest::saveState {} {
- uplevel #0 {set ::tcltest::saveState [list [info procs] [info vars]]}
- if {$::tcltest::debug > 1} {
- puts "::tcltest::saveState: $::tcltest::saveState"
- }
-}
-
-# ::tcltest::restoreState --
-#
-# Remove procs and variables that didn't exist before the call to
-# ::tcltest::saveState.
-#
-# Arguments:
-# none
-#
-# Results:
-# Removes procs and variables from your environment if they don't exist
-# in the ::tcltest::saveState variable.
-
-proc ::tcltest::restoreState {} {
- foreach p [info procs] {
- if {([lsearch [lindex $::tcltest::saveState 0] $p] < 0) && \
- (![string equal ::tcltest::$p [namespace origin $p]])} {
- if {$::tcltest::debug > 2} {
- puts "::tcltest::restoreState: Removing proc $p"
- }
- rename $p {}
- }
- }
- foreach p [uplevel #0 {info vars}] {
- if {[lsearch [lindex $::tcltest::saveState 1] $p] < 0} {
- if {$::tcltest::debug > 2} {
- puts "::tcltest::restoreState: Removing variable $p"
- }
- uplevel #0 "unset $p"
- }
- }
-}
-
-# ::tcltest::normalizeMsg --
-#
-# Removes "extra" newlines from a string.
-#
-# Arguments:
-# msg String to be modified
-#
-
-proc ::tcltest::normalizeMsg {msg} {
- regsub "\n$" [string tolower $msg] "" msg
- regsub -all "\n\n" $msg "\n" msg
- regsub -all "\n\}" $msg "\}" msg
- return $msg
-}
-
-# makeFile --
-#
-# Create a new file with the name <name>, and write <contents> to it.
-#
-# If this file hasn't been created via makeFile since the last time
-# cleanupTests was called, add it to the $filesMade list, so it will
-# be removed by the next call to cleanupTests.
-#
-proc ::tcltest::makeFile {contents name} {
- global tcl_platform
-
- if {$::tcltest::debug > 2} {
- puts "::tcltest::makeFile: putting $contents into $name"
- }
- set fd [open [file join $::tcltest::temporaryDirectory $name] w]
-
- fconfigure $fd -translation lf
-
- if {[string equal \
- [string index $contents [expr {[string length $contents] - 1}]] \
- "\n"]} {
- puts -nonewline $fd $contents
- } else {
- puts $fd $contents
- }
- close $fd
-
- set fullName [file join [pwd] $name]
- if {[lsearch -exact $::tcltest::filesMade $fullName] == -1} {
- lappend ::tcltest::filesMade $fullName
- }
-}
-
-# ::tcltest::removeFile --
-#
-# Removes the named file from the filesystem
-#
-# Arguments:
-# name file to be removed
-#
-
-proc ::tcltest::removeFile {name} {
- if {$::tcltest::debug > 2} {
- puts "::tcltest::removeFile: removing $name"
- }
- file delete [file join $::tcltest::temporaryDirectory $name]
-}
-
-# makeDirectory --
-#
-# Create a new dir with the name <name>.
-#
-# If this dir hasn't been created via makeDirectory since the last time
-# cleanupTests was called, add it to the $directoriesMade list, so it will
-# be removed by the next call to cleanupTests.
-#
-proc ::tcltest::makeDirectory {name} {
- file mkdir $name
-
- set fullName [file join [pwd] $name]
- if {[lsearch -exact $::tcltest::filesMade $fullName] == -1} {
- lappend ::tcltest::filesMade $fullName
- }
-}
-
-# ::tcltest::removeDirectory --
-#
-# Removes a named directory from the file system.
-#
-# Arguments:
-# name Name of the directory to remove
-#
-
-proc ::tcltest::removeDirectory {name} {
- file delete -force $name
-}
-
-proc ::tcltest::viewFile {name} {
- global tcl_platform
- if {([string equal $tcl_platform(platform) "macintosh"]) || \
- ($::tcltest::testConstraints(unixExecs) == 0)} {
- set f [open [file join $::tcltest::temporaryDirectory $name]]
- set data [read -nonewline $f]
- close $f
- return $data
- } else {
- exec cat [file join $::tcltest::temporaryDirectory $name]
- }
-}
-
-# grep --
-#
-# Evaluate a given expression against each element of a list and return all
-# elements for which the expression evaluates to true. For the purposes of
-# this proc, use of the keyword "CURRENT_ELEMENT" will flag the proc to use the
-# value of the current element within the expression. This is equivalent to
-# the perl grep command where CURRENT_ELEMENT would be the name for the special
-# variable $_.
-#
-# Examples of usage would be:
-# set subList [grep {CURRENT_ELEMENT == 1} $listOfNumbers]
-# set subList [grep {regexp {abc} CURRENT_ELEMENT} $listOfStrings]
-#
-# Use of the CURRENT_ELEMENT keyword is optional. If it is left out, it is
-# assumed to be the final argument to the expression provided.
-#
-# Example:
-# grep {regexp a} $someList
-#
-proc ::tcltest:grep { expression searchList } {
- foreach element $searchList {
- if {[regsub -all CURRENT_ELEMENT $expression $element \
- newExpression] == 0} {
- set newExpression "$expression {$element}"
- }
- if {[eval $newExpression] == 1} {
- lappend returnList $element
- }
- }
- if {[info exists returnList]} {
- return $returnList
- }
- return
-}
-
-#
-# Construct a string that consists of the requested sequence of bytes,
-# as opposed to a string of properly formed UTF-8 characters.
-# This allows the tester to
-# 1. Create denormalized or improperly formed strings to pass to C procedures
-# that are supposed to accept strings with embedded NULL bytes.
-# 2. Confirm that a string result has a certain pattern of bytes, for instance
-# to confirm that "\xe0\0" in a Tcl script is stored internally in
-# UTF-8 as the sequence of bytes "\xc3\xa0\xc0\x80".
-#
-# Generally, it's a bad idea to examine the bytes in a Tcl string or to
-# construct improperly formed strings in this manner, because it involves
-# exposing that Tcl uses UTF-8 internally.
-
-proc ::tcltest::bytestring {string} {
- encoding convertfrom identity $string
-}
-
-#
-# Internationalization / ISO support procs -- dl
-#
-proc ::tcltest::set_iso8859_1_locale {} {
- if {[info commands testlocale] != ""} {
- set ::tcltest::previousLocale [testlocale ctype]
- testlocale ctype $::tcltest::isoLocale
- }
- return
-}
-
-proc ::tcltest::restore_locale {} {
- if {[info commands testlocale] != ""} {
- testlocale ctype $::tcltest::previousLocale
- }
- return
-}
-
-# threadReap --
-#
-# Kill all threads except for the main thread.
-# Do nothing if testthread is not defined.
-#
-# Arguments:
-# none.
-#
-# Results:
-# Returns the number of existing threads.
-proc ::tcltest::threadReap {} {
- if {[info commands testthread] != {}} {
- testthread errorproc ThreadNullError
- while {[llength [testthread names]] > 1} {
- foreach tid [testthread names] {
- if {$tid != $::tcltest::mainThread} {
- catch {testthread send -async $tid {testthread exit}}
- update
- }
- }
- }
- testthread errorproc ThreadError
- return [llength [testthread names]]
- } else {
- return 1
- }
-}
-
-# Initialize the constraints and set up command line arguments
-namespace eval tcltest {
- ::tcltest::initConstraints
- ::tcltest::processCmdLineArgs
-}
-
-return
diff --git a/library/tm.tcl b/library/tm.tcl
new file mode 100644
index 0000000..55efda6
--- /dev/null
+++ b/library/tm.tcl
@@ -0,0 +1,375 @@
+# -*- tcl -*-
+#
+# Searching for Tcl Modules. Defines a procedure, declares it as the primary
+# command for finding packages, however also uses the former 'package unknown'
+# command as a fallback.
+#
+# Locates all possible packages in a directory via a less restricted glob. The
+# targeted directory is derived from the name of the requested package, i.e.
+# the TM scan will look only at directories which can contain the requested
+# package. It will register all packages it found in the directory so that
+# future requests have a higher chance of being fulfilled by the ifneeded
+# database without having to come to us again.
+#
+# We do not remember where we have been and simply rescan targeted directories
+# when invoked again. The reasoning is this:
+#
+# - The only way we get back to the same directory is if someone is trying to
+# [package require] something that wasn't there on the first scan.
+#
+# Either
+# 1) It is there now: If we rescan, you get it; if not you don't.
+#
+# This covers the possibility that the application asked for a package
+# late, and the package was actually added to the installation after the
+# application was started. It shoukld still be able to find it.
+#
+# 2) It still is not there: Either way, you don't get it, but the rescan
+# takes time. This is however an error case and we dont't care that much
+# about it
+#
+# 3) It was there the first time; but for some reason a "package forget" has
+# been run, and "package" doesn't know about it anymore.
+#
+# This can be an indication that the application wishes to reload some
+# functionality. And should work as well.
+#
+# Note that this also strikes a balance between doing a glob targeting a
+# single package, and thus most likely requiring multiple globs of the same
+# directory when the application is asking for many packages, and trying to
+# glob for _everything_ in all subdirectories when looking for a package,
+# which comes with a heavy startup cost.
+#
+# We scan for regular packages only if no satisfying module was found.
+
+namespace eval ::tcl::tm {
+ # Default paths. None yet.
+
+ variable paths {}
+
+ # The regex pattern a file name has to match to make it a Tcl Module.
+
+ set pkgpattern {^([_[:alpha:]][:_[:alnum:]]*)-([[:digit:]].*)[.]tm$}
+
+ # Export the public API
+
+ namespace export path
+ namespace ensemble create -command path -subcommands {add remove list}
+}
+
+# ::tcl::tm::path implementations --
+#
+# Public API to the module path. See specification.
+#
+# Arguments
+# cmd - The subcommand to execute
+# args - The paths to add/remove. Must not appear querying the
+# path with 'list'.
+#
+# Results
+# No result for subcommands 'add' and 'remove'. A list of paths for
+# 'list'.
+#
+# Sideeffects
+# The subcommands 'add' and 'remove' manipulate the list of paths to
+# search for Tcl Modules. The subcommand 'list' has no sideeffects.
+
+proc ::tcl::tm::add {args} {
+ # PART OF THE ::tcl::tm::path ENSEMBLE
+ #
+ # The path is added at the head to the list of module paths.
+ #
+ # The command enforces the restriction that no path may be an ancestor
+ # directory of any other path on the list. If the new path violates this
+ # restriction an error wil be raised.
+ #
+ # If the path is already present as is no error will be raised and no
+ # action will be taken.
+
+ variable paths
+
+ # We use a copy of the path as source during validation, and extend it as
+ # well. Because we not only have to detect if the new paths are bogus with
+ # respect to the existing paths, but also between themselves. Otherwise we
+ # can still add bogus paths, by specifying them in a single call. This
+ # makes the use of the new paths simpler as well, a trivial assignment of
+ # the collected paths to the official state var.
+
+ set newpaths $paths
+ foreach p $args {
+ if {$p in $newpaths} {
+ # Ignore a path already on the list.
+ continue
+ }
+
+ # Search for paths which are subdirectories of the new one. If there
+ # are any then the new path violates the restriction about ancestors.
+
+ set pos [lsearch -glob $newpaths ${p}/*]
+ # Cannot use "in", we need the position for the message.
+ if {$pos >= 0} {
+ return -code error \
+ "$p is ancestor of existing module path [lindex $newpaths $pos]."
+ }
+
+ # Now look for existing paths which are ancestors of the new one. This
+ # reverse question forces us to loop over the existing paths, as each
+ # element is the pattern, not the new path :(
+
+ foreach ep $newpaths {
+ if {[string match ${ep}/* $p]} {
+ return -code error \
+ "$p is subdirectory of existing module path $ep."
+ }
+ }
+
+ set newpaths [linsert $newpaths 0 $p]
+ }
+
+ # The validation of the input is complete and successful, and everything
+ # in newpaths is either an old path, or added. We can now extend the
+ # official list of paths, a simple assignment is sufficient.
+
+ set paths $newpaths
+ return
+}
+
+proc ::tcl::tm::remove {args} {
+ # PART OF THE ::tcl::tm::path ENSEMBLE
+ #
+ # Removes the path from the list of module paths. The command is silently
+ # ignored if the path is not on the list.
+
+ variable paths
+
+ foreach p $args {
+ set pos [lsearch -exact $paths $p]
+ if {$pos >= 0} {
+ set paths [lreplace $paths $pos $pos]
+ }
+ }
+}
+
+proc ::tcl::tm::list {} {
+ # PART OF THE ::tcl::tm::path ENSEMBLE
+
+ variable paths
+ return $paths
+}
+
+# ::tcl::tm::UnknownHandler --
+#
+# Unknown handler for Tcl Modules, i.e. packages in module form.
+#
+# Arguments
+# original - Original [package unknown] procedure.
+# name - Name of desired package.
+# version - Version of desired package. Can be the
+# empty string.
+# exact - Either -exact or ommitted.
+#
+# Name, version, and exact are used to determine satisfaction. The
+# original is called iff no satisfaction was achieved. The name is also
+# used to compute the directory to target in the search.
+#
+# Results
+# None.
+#
+# Sideeffects
+# May populate the package ifneeded database with additional provide
+# scripts.
+
+proc ::tcl::tm::UnknownHandler {original name args} {
+ # Import the list of paths to search for packages in module form.
+ # Import the pattern used to check package names in detail.
+
+ variable paths
+ variable pkgpattern
+
+ # Without paths to search we can do nothing. (Except falling back to the
+ # regular search).
+
+ if {[llength $paths]} {
+ set pkgpath [string map {:: /} $name]
+ set pkgroot [file dirname $pkgpath]
+ if {$pkgroot eq "."} {
+ set pkgroot ""
+ }
+
+ # We don't remember a copy of the paths while looping. Tcl Modules are
+ # unable to change the list while we are searching for them. This also
+ # simplifies the loop, as we cannot get additional directories while
+ # iterating over the list. A simple foreach is sufficient.
+
+ set satisfied 0
+ foreach path $paths {
+ if {![interp issafe] && ![file exists $path]} {
+ continue
+ }
+ set currentsearchpath [file join $path $pkgroot]
+ if {![interp issafe] && ![file exists $currentsearchpath]} {
+ continue
+ }
+ set strip [llength [file split $path]]
+
+ # We can't use glob in safe interps, so enclose the following in a
+ # catch statement, where we get the module files out of the
+ # subdirectories. In other words, Tcl Modules are not-functional
+ # in such an interpreter. This is the same as for the command
+ # "tclPkgUnknown", i.e. the search for regular packages.
+
+ catch {
+ # We always look for _all_ possible modules in the current
+ # path, to get the max result out of the glob.
+
+ foreach file [glob -nocomplain -directory $currentsearchpath *.tm] {
+ set pkgfilename [join [lrange [file split $file] $strip end] ::]
+
+ if {![regexp -- $pkgpattern $pkgfilename --> pkgname pkgversion]} {
+ # Ignore everything not matching our pattern for
+ # package names.
+ continue
+ }
+ try {
+ package vcompare $pkgversion 0
+ } on error {} {
+ # Ignore everything where the version part is not
+ # acceptable to "package vcompare".
+ continue
+ }
+
+ if {[package ifneeded $pkgname $pkgversion] ne {}} {
+ # There's already a provide script registered for
+ # this version of this package. Since all units of
+ # code claiming to be the same version of the same
+ # package ought to be identical, just stick with
+ # the one we already have.
+ continue
+ }
+
+ # We have found a candidate, generate a "provide script"
+ # for it, and remember it. Note that we are using ::list
+ # to do this; locally [list] means something else without
+ # the namespace specifier.
+
+ # NOTE. When making changes to the format of the provide
+ # command generated below CHECK that the 'LOCATE'
+ # procedure in core file 'platform/shell.tcl' still
+ # understands it, or, if not, update its implementation
+ # appropriately.
+ #
+ # Right now LOCATE's implementation assumes that the path
+ # of the package file is the last element in the list.
+
+ package ifneeded $pkgname $pkgversion \
+ "[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]"
+
+ # We abort in this unknown handler only if we got a
+ # satisfying candidate for the requested package.
+ # Otherwise we still have to fallback to the regular
+ # package search to complete the processing.
+
+ if {($pkgname eq $name)
+ && [package vsatisfies $pkgversion {*}$args]} {
+ set satisfied 1
+
+ # We do not abort the loop, and keep adding provide
+ # scripts for every candidate in the directory, just
+ # remember to not fall back to the regular search
+ # anymore.
+ }
+ }
+ }
+ }
+
+ if {$satisfied} {
+ return
+ }
+ }
+
+ # Fallback to previous command, if existing. See comment above about
+ # ::list...
+
+ if {[llength $original]} {
+ uplevel 1 $original [::linsert $args 0 $name]
+ }
+}
+
+# ::tcl::tm::Defaults --
+#
+# Determines the default search paths.
+#
+# Arguments
+# None
+#
+# Results
+# None.
+#
+# Sideeffects
+# May add paths to the list of defaults.
+
+proc ::tcl::tm::Defaults {} {
+ global env tcl_platform
+
+ lassign [split [info tclversion] .] major minor
+ set exe [file normalize [info nameofexecutable]]
+
+ # Note that we're using [::list], not [list] because [list] means
+ # something other than [::list] in this namespace.
+ roots [::list \
+ [file dirname [info library]] \
+ [file join [file dirname [file dirname $exe]] lib] \
+ ]
+
+ if {$tcl_platform(platform) eq "windows"} {
+ set sep ";"
+ } else {
+ set sep ":"
+ }
+ for {set n $minor} {$n >= 0} {incr n -1} {
+ foreach ev [::list \
+ TCL${major}.${n}_TM_PATH \
+ TCL${major}_${n}_TM_PATH \
+ ] {
+ if {![info exists env($ev)]} continue
+ foreach p [split $env($ev) $sep] {
+ path add $p
+ }
+ }
+ }
+ return
+}
+
+# ::tcl::tm::roots --
+#
+# Public API to the module path. See specification.
+#
+# Arguments
+# paths - List of 'root' paths to derive search paths from.
+#
+# Results
+# No result.
+#
+# Sideeffects
+# Calls 'path add' to paths to the list of module search paths.
+
+proc ::tcl::tm::roots {paths} {
+ lassign [split [package present Tcl] .] major minor
+ foreach pa $paths {
+ set p [file join $pa tcl$major]
+ for {set n $minor} {$n >= 0} {incr n -1} {
+ set px [file join $p ${major}.${n}]
+ if {![interp issafe]} {set px [file normalize $px]}
+ path add $px
+ }
+ set px [file join $p site-tcl]
+ if {![interp issafe]} {set px [file normalize $px]}
+ path add $px
+ }
+ return
+}
+
+# Initialization. Set up the default paths, then insert the new handler into
+# the chain.
+
+if {![interp issafe]} {::tcl::tm::Defaults}
diff --git a/library/tzdata/Africa/Abidjan b/library/tzdata/Africa/Abidjan
new file mode 100644
index 0000000..4b4f5b2
--- /dev/null
+++ b/library/tzdata/Africa/Abidjan
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Abidjan) {
+ {-9223372036854775808 -968 0 LMT}
+ {-1830383032 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Accra b/library/tzdata/Africa/Accra
new file mode 100644
index 0000000..faf58fb
--- /dev/null
+++ b/library/tzdata/Africa/Accra
@@ -0,0 +1,20 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Accra) {
+ {-9223372036854775808 -52 0 LMT}
+ {-1640995148 0 0 GMT}
+ {-1051920000 1200 1 GHST}
+ {-1041466800 0 0 GMT}
+ {-1020384000 1200 1 GHST}
+ {-1009930800 0 0 GMT}
+ {-988848000 1200 1 GHST}
+ {-978394800 0 0 GMT}
+ {-957312000 1200 1 GHST}
+ {-946858800 0 0 GMT}
+ {-925689600 1200 1 GHST}
+ {-915236400 0 0 GMT}
+ {-894153600 1200 1 GHST}
+ {-883700400 0 0 GMT}
+ {-862617600 1200 1 GHST}
+ {-852164400 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Addis_Ababa b/library/tzdata/Africa/Addis_Ababa
new file mode 100644
index 0000000..4b92483
--- /dev/null
+++ b/library/tzdata/Africa/Addis_Ababa
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Addis_Ababa) {
+ {-9223372036854775808 9288 0 LMT}
+ {-3155682888 9320 0 ADMT}
+ {-1062210920 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Algiers b/library/tzdata/Africa/Algiers
new file mode 100644
index 0000000..fe4de22
--- /dev/null
+++ b/library/tzdata/Africa/Algiers
@@ -0,0 +1,39 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Algiers) {
+ {-9223372036854775808 732 0 LMT}
+ {-2486679072 561 0 PMT}
+ {-1855958961 0 0 WET}
+ {-1689814800 3600 1 WEST}
+ {-1680397200 0 0 WET}
+ {-1665363600 3600 1 WEST}
+ {-1648342800 0 0 WET}
+ {-1635123600 3600 1 WEST}
+ {-1616893200 0 0 WET}
+ {-1604278800 3600 1 WEST}
+ {-1585443600 0 0 WET}
+ {-1574038800 3600 1 WEST}
+ {-1552266000 0 0 WET}
+ {-1539997200 3600 1 WEST}
+ {-1531443600 0 0 WET}
+ {-956365200 3600 1 WEST}
+ {-950486400 0 0 WET}
+ {-942012000 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796262400 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-766630800 3600 0 CET}
+ {-733280400 0 0 WET}
+ {-439430400 3600 0 CET}
+ {-212029200 0 0 WET}
+ {41468400 3600 1 WEST}
+ {54774000 0 0 WET}
+ {231724800 3600 1 WEST}
+ {246240000 3600 0 CET}
+ {259545600 7200 1 CEST}
+ {275274000 3600 0 CET}
+ {309740400 0 0 WET}
+ {325468800 3600 1 WEST}
+ {341802000 0 0 WET}
+ {357523200 3600 0 CET}
+}
diff --git a/library/tzdata/Africa/Asmara b/library/tzdata/Africa/Asmara
new file mode 100644
index 0000000..1f0f13e
--- /dev/null
+++ b/library/tzdata/Africa/Asmara
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Asmara) {
+ {-9223372036854775808 9332 0 LMT}
+ {-3155682932 9332 0 AMT}
+ {-2524530932 9320 0 ADMT}
+ {-1062210920 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Asmera b/library/tzdata/Africa/Asmera
new file mode 100644
index 0000000..931c36d
--- /dev/null
+++ b/library/tzdata/Africa/Asmera
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Africa/Asmara)]} {
+ LoadTimeZoneFile Africa/Asmara
+}
+set TZData(:Africa/Asmera) $TZData(:Africa/Asmara)
diff --git a/library/tzdata/Africa/Bamako b/library/tzdata/Africa/Bamako
new file mode 100644
index 0000000..7ed62e0
--- /dev/null
+++ b/library/tzdata/Africa/Bamako
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Bamako) {
+ {-9223372036854775808 -1920 0 LMT}
+ {-1830382080 0 0 GMT}
+ {-1131235200 -3600 0 WAT}
+ {-300841200 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Bangui b/library/tzdata/Africa/Bangui
new file mode 100644
index 0000000..94f5058
--- /dev/null
+++ b/library/tzdata/Africa/Bangui
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Bangui) {
+ {-9223372036854775808 4460 0 LMT}
+ {-1830388460 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Banjul b/library/tzdata/Africa/Banjul
new file mode 100644
index 0000000..a7f0168
--- /dev/null
+++ b/library/tzdata/Africa/Banjul
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Banjul) {
+ {-9223372036854775808 -3996 0 LMT}
+ {-1830380004 -3996 0 BMT}
+ {-1104533604 -3600 0 WAT}
+ {-189385200 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Bissau b/library/tzdata/Africa/Bissau
new file mode 100644
index 0000000..d51cb9f
--- /dev/null
+++ b/library/tzdata/Africa/Bissau
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Bissau) {
+ {-9223372036854775808 -3740 0 LMT}
+ {-1849388260 -3600 0 WAT}
+ {157770000 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Blantyre b/library/tzdata/Africa/Blantyre
new file mode 100644
index 0000000..17b58f4
--- /dev/null
+++ b/library/tzdata/Africa/Blantyre
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Blantyre) {
+ {-9223372036854775808 8400 0 LMT}
+ {-2109291600 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Brazzaville b/library/tzdata/Africa/Brazzaville
new file mode 100644
index 0000000..b4e0923
--- /dev/null
+++ b/library/tzdata/Africa/Brazzaville
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Brazzaville) {
+ {-9223372036854775808 3668 0 LMT}
+ {-1830387668 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Bujumbura b/library/tzdata/Africa/Bujumbura
new file mode 100644
index 0000000..c26d053
--- /dev/null
+++ b/library/tzdata/Africa/Bujumbura
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Bujumbura) {
+ {-9223372036854775808 7048 0 LMT}
+ {-2524528648 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo
new file mode 100644
index 0000000..842b7b2
--- /dev/null
+++ b/library/tzdata/Africa/Cairo
@@ -0,0 +1,128 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Cairo) {
+ {-9223372036854775808 7509 0 LMT}
+ {-2185409109 7200 0 EET}
+ {-929844000 10800 1 EEST}
+ {-923108400 7200 0 EET}
+ {-906170400 10800 1 EEST}
+ {-892868400 7200 0 EET}
+ {-875844000 10800 1 EEST}
+ {-857790000 7200 0 EET}
+ {-844308000 10800 1 EEST}
+ {-825822000 7200 0 EET}
+ {-812685600 10800 1 EEST}
+ {-794199600 7200 0 EET}
+ {-779853600 10800 1 EEST}
+ {-762663600 7200 0 EET}
+ {-399088800 10800 1 EEST}
+ {-386650800 7200 0 EET}
+ {-368330400 10800 1 EEST}
+ {-355114800 7200 0 EET}
+ {-336790800 10800 1 EEST}
+ {-323654400 7200 0 EET}
+ {-305168400 10800 1 EEST}
+ {-292032000 7200 0 EET}
+ {-273632400 10800 1 EEST}
+ {-260496000 7200 0 EET}
+ {-242096400 10800 1 EEST}
+ {-228960000 7200 0 EET}
+ {-210560400 10800 1 EEST}
+ {-197424000 7200 0 EET}
+ {-178938000 10800 1 EEST}
+ {-165801600 7200 0 EET}
+ {-147402000 10800 1 EEST}
+ {-134265600 7200 0 EET}
+ {-115866000 10800 1 EEST}
+ {-102643200 7200 0 EET}
+ {-84330000 10800 1 EEST}
+ {-71107200 7200 0 EET}
+ {-52707600 10800 1 EEST}
+ {-39484800 7200 0 EET}
+ {-21171600 10800 1 EEST}
+ {-7948800 7200 0 EET}
+ {10364400 10800 1 EEST}
+ {23587200 7200 0 EET}
+ {41900400 10800 1 EEST}
+ {55123200 7200 0 EET}
+ {73522800 10800 1 EEST}
+ {86745600 7200 0 EET}
+ {105058800 10800 1 EEST}
+ {118281600 7200 0 EET}
+ {136594800 10800 1 EEST}
+ {149817600 7200 0 EET}
+ {168130800 10800 1 EEST}
+ {181353600 7200 0 EET}
+ {199753200 10800 1 EEST}
+ {212976000 7200 0 EET}
+ {231289200 10800 1 EEST}
+ {244512000 7200 0 EET}
+ {262825200 10800 1 EEST}
+ {276048000 7200 0 EET}
+ {294361200 10800 1 EEST}
+ {307584000 7200 0 EET}
+ {325983600 10800 1 EEST}
+ {339206400 7200 0 EET}
+ {357519600 10800 1 EEST}
+ {370742400 7200 0 EET}
+ {396399600 10800 1 EEST}
+ {402278400 7200 0 EET}
+ {426812400 10800 1 EEST}
+ {433814400 7200 0 EET}
+ {452214000 10800 1 EEST}
+ {465436800 7200 0 EET}
+ {483750000 10800 1 EEST}
+ {496972800 7200 0 EET}
+ {515286000 10800 1 EEST}
+ {528508800 7200 0 EET}
+ {546822000 10800 1 EEST}
+ {560044800 7200 0 EET}
+ {578444400 10800 1 EEST}
+ {591667200 7200 0 EET}
+ {610412400 10800 1 EEST}
+ {623203200 7200 0 EET}
+ {641516400 10800 1 EEST}
+ {654739200 7200 0 EET}
+ {673052400 10800 1 EEST}
+ {686275200 7200 0 EET}
+ {704674800 10800 1 EEST}
+ {717897600 7200 0 EET}
+ {736210800 10800 1 EEST}
+ {749433600 7200 0 EET}
+ {767746800 10800 1 EEST}
+ {780969600 7200 0 EET}
+ {799020000 10800 1 EEST}
+ {812322000 7200 0 EET}
+ {830469600 10800 1 EEST}
+ {843771600 7200 0 EET}
+ {861919200 10800 1 EEST}
+ {875221200 7200 0 EET}
+ {893368800 10800 1 EEST}
+ {906670800 7200 0 EET}
+ {925423200 10800 1 EEST}
+ {938725200 7200 0 EET}
+ {956872800 10800 1 EEST}
+ {970174800 7200 0 EET}
+ {988322400 10800 1 EEST}
+ {1001624400 7200 0 EET}
+ {1019772000 10800 1 EEST}
+ {1033074000 7200 0 EET}
+ {1051221600 10800 1 EEST}
+ {1064523600 7200 0 EET}
+ {1083276000 10800 1 EEST}
+ {1096578000 7200 0 EET}
+ {1114725600 10800 1 EEST}
+ {1128027600 7200 0 EET}
+ {1146175200 10800 1 EEST}
+ {1158872400 7200 0 EET}
+ {1177624800 10800 1 EEST}
+ {1189112400 7200 0 EET}
+ {1209074400 10800 1 EEST}
+ {1219957200 7200 0 EET}
+ {1240524000 10800 1 EEST}
+ {1250802000 7200 0 EET}
+ {1272578400 10800 1 EEST}
+ {1281474000 7200 0 EET}
+ {1284069600 10800 1 EEST}
+ {1285880400 7200 0 EET}
+}
diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca
new file mode 100644
index 0000000..dec2778
--- /dev/null
+++ b/library/tzdata/Africa/Casablanca
@@ -0,0 +1,168 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Casablanca) {
+ {-9223372036854775808 -1820 0 LMT}
+ {-1773012580 0 0 WET}
+ {-956361600 3600 1 WEST}
+ {-950490000 0 0 WET}
+ {-942019200 3600 1 WEST}
+ {-761187600 0 0 WET}
+ {-617241600 3600 1 WEST}
+ {-605149200 0 0 WET}
+ {-81432000 3600 1 WEST}
+ {-71110800 0 0 WET}
+ {141264000 3600 1 WEST}
+ {147222000 0 0 WET}
+ {199756800 3600 1 WEST}
+ {207702000 0 0 WET}
+ {231292800 3600 1 WEST}
+ {244249200 0 0 WET}
+ {265507200 3600 1 WEST}
+ {271033200 0 0 WET}
+ {448243200 3600 0 CET}
+ {504918000 0 0 WET}
+ {1212278400 3600 1 WEST}
+ {1220223600 0 0 WET}
+ {1243814400 3600 1 WEST}
+ {1250809200 0 0 WET}
+ {1272758400 3600 1 WEST}
+ {1281222000 0 0 WET}
+ {1301788800 3600 1 WEST}
+ {1312066800 0 0 WET}
+ {1335664800 3600 1 WEST}
+ {1342749600 0 0 WET}
+ {1345428000 3600 1 WEST}
+ {1348970400 0 0 WET}
+ {1367114400 3600 1 WEST}
+ {1373162400 0 0 WET}
+ {1376100000 3600 1 WEST}
+ {1382839200 0 0 WET}
+ {1396144800 3600 1 WEST}
+ {1404007200 0 0 WET}
+ {1406599200 3600 1 WEST}
+ {1414288800 0 0 WET}
+ {1427594400 3600 1 WEST}
+ {1434592800 0 0 WET}
+ {1437184800 3600 1 WEST}
+ {1445738400 0 0 WET}
+ {1459044000 3600 1 WEST}
+ {1465264800 0 0 WET}
+ {1467856800 3600 1 WEST}
+ {1477792800 0 0 WET}
+ {1490493600 3600 1 WEST}
+ {1495850400 0 0 WET}
+ {1498442400 3600 1 WEST}
+ {1509242400 0 0 WET}
+ {1521943200 3600 1 WEST}
+ {1526436000 0 0 WET}
+ {1529028000 3600 1 WEST}
+ {1540692000 0 0 WET}
+ {1553997600 3600 1 WEST}
+ {1557108000 0 0 WET}
+ {1559700000 3600 1 WEST}
+ {1572141600 0 0 WET}
+ {1585447200 3600 1 WEST}
+ {1587693600 0 0 WET}
+ {1590285600 3600 1 WEST}
+ {1603591200 0 0 WET}
+ {1616896800 3600 1 WEST}
+ {1618279200 0 0 WET}
+ {1620871200 3600 1 WEST}
+ {1635645600 0 0 WET}
+ {1648346400 3600 1 WEST}
+ {1648951200 0 0 WET}
+ {1651543200 3600 1 WEST}
+ {1667095200 0 0 WET}
+ {1682128800 3600 1 WEST}
+ {1698544800 0 0 WET}
+ {1712714400 3600 1 WEST}
+ {1729994400 0 0 WET}
+ {1743386400 3600 1 WEST}
+ {1761444000 0 0 WET}
+ {1774749600 3600 1 WEST}
+ {1792893600 0 0 WET}
+ {1806199200 3600 1 WEST}
+ {1824948000 0 0 WET}
+ {1837648800 3600 1 WEST}
+ {1856397600 0 0 WET}
+ {1869098400 3600 1 WEST}
+ {1887847200 0 0 WET}
+ {1901152800 3600 1 WEST}
+ {1919296800 0 0 WET}
+ {1932602400 3600 1 WEST}
+ {1950746400 0 0 WET}
+ {1964052000 3600 1 WEST}
+ {1982800800 0 0 WET}
+ {1995501600 3600 1 WEST}
+ {2014250400 0 0 WET}
+ {2026951200 3600 1 WEST}
+ {2045700000 0 0 WET}
+ {2058400800 3600 1 WEST}
+ {2077149600 0 0 WET}
+ {2090455200 3600 1 WEST}
+ {2108167200 0 0 WET}
+ {2121904800 3600 1 WEST}
+ {2138839200 0 0 WET}
+ {2153354400 3600 1 WEST}
+ {2184800400 3600 1 WEST}
+ {2216250000 3600 1 WEST}
+ {2248304400 3600 1 WEST}
+ {2279754000 3600 1 WEST}
+ {2311203600 3600 1 WEST}
+ {2342653200 3600 1 WEST}
+ {2374102800 3600 1 WEST}
+ {2405552400 3600 1 WEST}
+ {2437606800 3600 1 WEST}
+ {2469056400 3600 1 WEST}
+ {2500506000 3600 1 WEST}
+ {2531955600 3600 1 WEST}
+ {2563405200 3600 1 WEST}
+ {2595459600 3600 1 WEST}
+ {2626909200 3600 1 WEST}
+ {2658358800 3600 1 WEST}
+ {2689808400 3600 1 WEST}
+ {2721258000 3600 1 WEST}
+ {2752707600 3600 1 WEST}
+ {2784762000 3600 1 WEST}
+ {2816211600 3600 1 WEST}
+ {2847661200 3600 1 WEST}
+ {2879110800 3600 1 WEST}
+ {2910560400 3600 1 WEST}
+ {2942010000 3600 1 WEST}
+ {2974064400 3600 1 WEST}
+ {3005514000 3600 1 WEST}
+ {3036963600 3600 1 WEST}
+ {3068413200 3600 1 WEST}
+ {3099862800 3600 1 WEST}
+ {3131917200 3600 1 WEST}
+ {3163366800 3600 1 WEST}
+ {3194816400 3600 1 WEST}
+ {3226266000 3600 1 WEST}
+ {3257715600 3600 1 WEST}
+ {3289165200 3600 1 WEST}
+ {3321219600 3600 1 WEST}
+ {3352669200 3600 1 WEST}
+ {3384118800 3600 1 WEST}
+ {3415568400 3600 1 WEST}
+ {3447018000 3600 1 WEST}
+ {3479072400 3600 1 WEST}
+ {3510522000 3600 1 WEST}
+ {3541971600 3600 1 WEST}
+ {3573421200 3600 1 WEST}
+ {3604870800 3600 1 WEST}
+ {3636320400 3600 1 WEST}
+ {3668374800 3600 1 WEST}
+ {3699824400 3600 1 WEST}
+ {3731274000 3600 1 WEST}
+ {3762723600 3600 1 WEST}
+ {3794173200 3600 1 WEST}
+ {3825622800 3600 1 WEST}
+ {3857677200 3600 1 WEST}
+ {3889126800 3600 1 WEST}
+ {3920576400 3600 1 WEST}
+ {3952026000 3600 1 WEST}
+ {3983475600 3600 1 WEST}
+ {4015530000 3600 1 WEST}
+ {4046979600 3600 1 WEST}
+ {4078429200 3600 1 WEST}
+}
diff --git a/library/tzdata/Africa/Ceuta b/library/tzdata/Africa/Ceuta
new file mode 100644
index 0000000..882c13d
--- /dev/null
+++ b/library/tzdata/Africa/Ceuta
@@ -0,0 +1,258 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Ceuta) {
+ {-9223372036854775808 -1276 0 LMT}
+ {-2177451524 0 0 WET}
+ {-1630112400 3600 1 WEST}
+ {-1616810400 0 0 WET}
+ {-1451692800 0 0 WET}
+ {-1442451600 3600 1 WEST}
+ {-1427677200 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364778000 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333328400 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301274000 0 0 WET}
+ {-1293840000 0 0 WET}
+ {-81432000 3600 1 WEST}
+ {-71110800 0 0 WET}
+ {141264000 3600 1 WEST}
+ {147222000 0 0 WET}
+ {199756800 3600 1 WEST}
+ {207702000 0 0 WET}
+ {231292800 3600 1 WEST}
+ {244249200 0 0 WET}
+ {265507200 3600 1 WEST}
+ {271033200 0 0 WET}
+ {448243200 3600 0 CET}
+ {504918000 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Africa/Conakry b/library/tzdata/Africa/Conakry
new file mode 100644
index 0000000..d17ce4b
--- /dev/null
+++ b/library/tzdata/Africa/Conakry
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Conakry) {
+ {-9223372036854775808 -3292 0 LMT}
+ {-1830380708 0 0 GMT}
+ {-1131235200 -3600 0 WAT}
+ {-315615600 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Dakar b/library/tzdata/Africa/Dakar
new file mode 100644
index 0000000..487dc62
--- /dev/null
+++ b/library/tzdata/Africa/Dakar
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Dakar) {
+ {-9223372036854775808 -4184 0 LMT}
+ {-1830379816 -3600 0 WAT}
+ {-902098800 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Dar_es_Salaam b/library/tzdata/Africa/Dar_es_Salaam
new file mode 100644
index 0000000..98151ec
--- /dev/null
+++ b/library/tzdata/Africa/Dar_es_Salaam
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Dar_es_Salaam) {
+ {-9223372036854775808 9428 0 LMT}
+ {-1230777428 10800 0 EAT}
+ {-694321200 9900 0 BEAUT}
+ {-284006700 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Djibouti b/library/tzdata/Africa/Djibouti
new file mode 100644
index 0000000..0ec510c
--- /dev/null
+++ b/library/tzdata/Africa/Djibouti
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Djibouti) {
+ {-9223372036854775808 10356 0 LMT}
+ {-1846291956 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Douala b/library/tzdata/Africa/Douala
new file mode 100644
index 0000000..301a530
--- /dev/null
+++ b/library/tzdata/Africa/Douala
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Douala) {
+ {-9223372036854775808 2328 0 LMT}
+ {-1830386328 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/El_Aaiun b/library/tzdata/Africa/El_Aaiun
new file mode 100644
index 0000000..a8b9d34
--- /dev/null
+++ b/library/tzdata/Africa/El_Aaiun
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/El_Aaiun) {
+ {-9223372036854775808 -3168 0 LMT}
+ {-1136070432 -3600 0 WAT}
+ {198291600 0 0 WET}
+}
diff --git a/library/tzdata/Africa/Freetown b/library/tzdata/Africa/Freetown
new file mode 100644
index 0000000..c3f2d2e
--- /dev/null
+++ b/library/tzdata/Africa/Freetown
@@ -0,0 +1,36 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Freetown) {
+ {-9223372036854775808 -3180 0 LMT}
+ {-2776979220 -3180 0 FMT}
+ {-1785712020 -3600 0 WAT}
+ {-1091487600 -1200 1 SLST}
+ {-1080949200 -3600 0 WAT}
+ {-1059865200 -1200 1 SLST}
+ {-1049326800 -3600 0 WAT}
+ {-1028329200 -1200 1 SLST}
+ {-1017790800 -3600 0 WAT}
+ {-996793200 -1200 1 SLST}
+ {-986254800 -3600 0 WAT}
+ {-965257200 -1200 1 SLST}
+ {-954718800 -3600 0 WAT}
+ {-933634800 -1200 1 SLST}
+ {-923096400 -3600 0 WAT}
+ {-902098800 -1200 1 SLST}
+ {-891560400 -3600 0 WAT}
+ {-870562800 -1200 1 SLST}
+ {-860024400 -3600 0 WAT}
+ {-410223600 0 0 WAT}
+ {-397180800 3600 1 SLST}
+ {-389235600 0 0 GMT}
+ {-365644800 3600 1 SLST}
+ {-357699600 0 0 GMT}
+ {-334108800 3600 1 SLST}
+ {-326163600 0 0 GMT}
+ {-302486400 3600 1 SLST}
+ {-294541200 0 0 GMT}
+ {-270950400 3600 1 SLST}
+ {-263005200 0 0 GMT}
+ {-239414400 3600 1 SLST}
+ {-231469200 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Gaborone b/library/tzdata/Africa/Gaborone
new file mode 100644
index 0000000..bd38673
--- /dev/null
+++ b/library/tzdata/Africa/Gaborone
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Gaborone) {
+ {-9223372036854775808 6220 0 LMT}
+ {-2682294220 5400 0 SAST}
+ {-2109288600 7200 0 CAT}
+ {-829526400 10800 1 CAST}
+ {-813805200 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Harare b/library/tzdata/Africa/Harare
new file mode 100644
index 0000000..7482b15
--- /dev/null
+++ b/library/tzdata/Africa/Harare
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Harare) {
+ {-9223372036854775808 7452 0 LMT}
+ {-2109290652 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Johannesburg b/library/tzdata/Africa/Johannesburg
new file mode 100644
index 0000000..b9a8348
--- /dev/null
+++ b/library/tzdata/Africa/Johannesburg
@@ -0,0 +1,11 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Johannesburg) {
+ {-9223372036854775808 6720 0 LMT}
+ {-2458173120 5400 0 SAST}
+ {-2109288600 7200 0 SAST}
+ {-860976000 10800 1 SAST}
+ {-845254800 7200 0 SAST}
+ {-829526400 10800 1 SAST}
+ {-813805200 7200 0 SAST}
+}
diff --git a/library/tzdata/Africa/Juba b/library/tzdata/Africa/Juba
new file mode 100644
index 0000000..40551f2
--- /dev/null
+++ b/library/tzdata/Africa/Juba
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Africa/Khartoum)]} {
+ LoadTimeZoneFile Africa/Khartoum
+}
+set TZData(:Africa/Juba) $TZData(:Africa/Khartoum)
diff --git a/library/tzdata/Africa/Kampala b/library/tzdata/Africa/Kampala
new file mode 100644
index 0000000..4cc9be1
--- /dev/null
+++ b/library/tzdata/Africa/Kampala
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Kampala) {
+ {-9223372036854775808 7780 0 LMT}
+ {-1309745380 10800 0 EAT}
+ {-1262314800 9000 0 BEAT}
+ {-694319400 9900 0 BEAUT}
+ {-410237100 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Khartoum b/library/tzdata/Africa/Khartoum
new file mode 100644
index 0000000..dfcac82
--- /dev/null
+++ b/library/tzdata/Africa/Khartoum
@@ -0,0 +1,39 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Khartoum) {
+ {-9223372036854775808 7808 0 LMT}
+ {-1230775808 7200 0 CAT}
+ {10360800 10800 1 CAST}
+ {24786000 7200 0 CAT}
+ {41810400 10800 1 CAST}
+ {56322000 7200 0 CAT}
+ {73432800 10800 1 CAST}
+ {87944400 7200 0 CAT}
+ {104882400 10800 1 CAST}
+ {119480400 7200 0 CAT}
+ {136332000 10800 1 CAST}
+ {151016400 7200 0 CAT}
+ {167781600 10800 1 CAST}
+ {182552400 7200 0 CAT}
+ {199231200 10800 1 CAST}
+ {214174800 7200 0 CAT}
+ {230680800 10800 1 CAST}
+ {245710800 7200 0 CAT}
+ {262735200 10800 1 CAST}
+ {277246800 7200 0 CAT}
+ {294184800 10800 1 CAST}
+ {308782800 7200 0 CAT}
+ {325634400 10800 1 CAST}
+ {340405200 7200 0 CAT}
+ {357084000 10800 1 CAST}
+ {371941200 7200 0 CAT}
+ {388533600 10800 1 CAST}
+ {403477200 7200 0 CAT}
+ {419983200 10800 1 CAST}
+ {435013200 7200 0 CAT}
+ {452037600 10800 1 CAST}
+ {466635600 7200 0 CAT}
+ {483487200 10800 1 CAST}
+ {498171600 7200 0 CAT}
+ {947930400 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Kigali b/library/tzdata/Africa/Kigali
new file mode 100644
index 0000000..f723bcd
--- /dev/null
+++ b/library/tzdata/Africa/Kigali
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Kigali) {
+ {-9223372036854775808 7216 0 LMT}
+ {-1091498416 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Kinshasa b/library/tzdata/Africa/Kinshasa
new file mode 100644
index 0000000..050c1fa
--- /dev/null
+++ b/library/tzdata/Africa/Kinshasa
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Kinshasa) {
+ {-9223372036854775808 3672 0 LMT}
+ {-2276643672 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Lagos b/library/tzdata/Africa/Lagos
new file mode 100644
index 0000000..079572f
--- /dev/null
+++ b/library/tzdata/Africa/Lagos
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Lagos) {
+ {-9223372036854775808 816 0 LMT}
+ {-1588464816 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Libreville b/library/tzdata/Africa/Libreville
new file mode 100644
index 0000000..8427551
--- /dev/null
+++ b/library/tzdata/Africa/Libreville
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Libreville) {
+ {-9223372036854775808 2268 0 LMT}
+ {-1830386268 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Lome b/library/tzdata/Africa/Lome
new file mode 100644
index 0000000..606625c
--- /dev/null
+++ b/library/tzdata/Africa/Lome
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Lome) {
+ {-9223372036854775808 292 0 LMT}
+ {-2429827492 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Luanda b/library/tzdata/Africa/Luanda
new file mode 100644
index 0000000..cd1b29e
--- /dev/null
+++ b/library/tzdata/Africa/Luanda
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Luanda) {
+ {-9223372036854775808 3176 0 LMT}
+ {-2461452776 3124 0 AOT}
+ {-1849395124 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Lubumbashi b/library/tzdata/Africa/Lubumbashi
new file mode 100644
index 0000000..bd67221
--- /dev/null
+++ b/library/tzdata/Africa/Lubumbashi
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Lubumbashi) {
+ {-9223372036854775808 6592 0 LMT}
+ {-2276646592 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Lusaka b/library/tzdata/Africa/Lusaka
new file mode 100644
index 0000000..ed9c30d
--- /dev/null
+++ b/library/tzdata/Africa/Lusaka
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Lusaka) {
+ {-9223372036854775808 6788 0 LMT}
+ {-2109289988 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Malabo b/library/tzdata/Africa/Malabo
new file mode 100644
index 0000000..bec0524
--- /dev/null
+++ b/library/tzdata/Africa/Malabo
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Malabo) {
+ {-9223372036854775808 2108 0 LMT}
+ {-1830386108 0 0 GMT}
+ {-190857600 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Maputo b/library/tzdata/Africa/Maputo
new file mode 100644
index 0000000..6ee208c
--- /dev/null
+++ b/library/tzdata/Africa/Maputo
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Maputo) {
+ {-9223372036854775808 7820 0 LMT}
+ {-2109291020 7200 0 CAT}
+}
diff --git a/library/tzdata/Africa/Maseru b/library/tzdata/Africa/Maseru
new file mode 100644
index 0000000..21ca968
--- /dev/null
+++ b/library/tzdata/Africa/Maseru
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Maseru) {
+ {-9223372036854775808 6600 0 LMT}
+ {-2109289800 7200 0 SAST}
+ {-829526400 10800 1 SAST}
+ {-813805200 7200 0 SAST}
+}
diff --git a/library/tzdata/Africa/Mbabane b/library/tzdata/Africa/Mbabane
new file mode 100644
index 0000000..4d174d5
--- /dev/null
+++ b/library/tzdata/Africa/Mbabane
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Mbabane) {
+ {-9223372036854775808 7464 0 LMT}
+ {-2109290664 7200 0 SAST}
+}
diff --git a/library/tzdata/Africa/Mogadishu b/library/tzdata/Africa/Mogadishu
new file mode 100644
index 0000000..570d3ea
--- /dev/null
+++ b/library/tzdata/Africa/Mogadishu
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Mogadishu) {
+ {-9223372036854775808 10888 0 LMT}
+ {-2403572488 10800 0 EAT}
+ {-1230778800 9000 0 BEAT}
+ {-410236200 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Monrovia b/library/tzdata/Africa/Monrovia
new file mode 100644
index 0000000..1cfff58
--- /dev/null
+++ b/library/tzdata/Africa/Monrovia
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Monrovia) {
+ {-9223372036854775808 -2588 0 LMT}
+ {-2776979812 -2588 0 MMT}
+ {-1604359012 -2670 0 LRT}
+ {73529070 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Nairobi b/library/tzdata/Africa/Nairobi
new file mode 100644
index 0000000..6846069
--- /dev/null
+++ b/library/tzdata/Africa/Nairobi
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Nairobi) {
+ {-9223372036854775808 8836 0 LMT}
+ {-1309746436 10800 0 EAT}
+ {-1262314800 9000 0 BEAT}
+ {-946780200 9900 0 BEAUT}
+ {-315629100 10800 0 EAT}
+}
diff --git a/library/tzdata/Africa/Ndjamena b/library/tzdata/Africa/Ndjamena
new file mode 100644
index 0000000..af4daaa
--- /dev/null
+++ b/library/tzdata/Africa/Ndjamena
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Ndjamena) {
+ {-9223372036854775808 3612 0 LMT}
+ {-1830387612 3600 0 WAT}
+ {308703600 7200 1 WAST}
+ {321314400 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Niamey b/library/tzdata/Africa/Niamey
new file mode 100644
index 0000000..40ded06b
--- /dev/null
+++ b/library/tzdata/Africa/Niamey
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Niamey) {
+ {-9223372036854775808 508 0 LMT}
+ {-1830384508 -3600 0 WAT}
+ {-1131231600 0 0 GMT}
+ {-315619200 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Nouakchott b/library/tzdata/Africa/Nouakchott
new file mode 100644
index 0000000..f7369d0
--- /dev/null
+++ b/library/tzdata/Africa/Nouakchott
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Nouakchott) {
+ {-9223372036854775808 -3828 0 LMT}
+ {-1830380172 0 0 GMT}
+ {-1131235200 -3600 0 WAT}
+ {-286930800 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Ouagadougou b/library/tzdata/Africa/Ouagadougou
new file mode 100644
index 0000000..88a7145
--- /dev/null
+++ b/library/tzdata/Africa/Ouagadougou
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Ouagadougou) {
+ {-9223372036854775808 -364 0 LMT}
+ {-1830383636 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Porto-Novo b/library/tzdata/Africa/Porto-Novo
new file mode 100644
index 0000000..b89cf1b
--- /dev/null
+++ b/library/tzdata/Africa/Porto-Novo
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Porto-Novo) {
+ {-9223372036854775808 628 0 LMT}
+ {-1830384628 0 0 GMT}
+ {-1131235200 3600 0 WAT}
+}
diff --git a/library/tzdata/Africa/Sao_Tome b/library/tzdata/Africa/Sao_Tome
new file mode 100644
index 0000000..ab1590d
--- /dev/null
+++ b/library/tzdata/Africa/Sao_Tome
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Sao_Tome) {
+ {-9223372036854775808 1616 0 LMT}
+ {-2713912016 -2192 0 LMT}
+ {-1830381808 0 0 GMT}
+}
diff --git a/library/tzdata/Africa/Timbuktu b/library/tzdata/Africa/Timbuktu
new file mode 100644
index 0000000..8057eed
--- /dev/null
+++ b/library/tzdata/Africa/Timbuktu
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Africa/Bamako)]} {
+ LoadTimeZoneFile Africa/Bamako
+}
+set TZData(:Africa/Timbuktu) $TZData(:Africa/Bamako)
diff --git a/library/tzdata/Africa/Tripoli b/library/tzdata/Africa/Tripoli
new file mode 100644
index 0000000..ac78218
--- /dev/null
+++ b/library/tzdata/Africa/Tripoli
@@ -0,0 +1,206 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Tripoli) {
+ {-9223372036854775808 3164 0 LMT}
+ {-1577926364 3600 0 CET}
+ {-574902000 7200 1 CEST}
+ {-512175600 7200 1 CEST}
+ {-449888400 7200 1 CEST}
+ {-347158800 7200 0 EET}
+ {378684000 3600 0 CET}
+ {386463600 7200 1 CEST}
+ {402271200 3600 0 CET}
+ {417999600 7200 1 CEST}
+ {433807200 3600 0 CET}
+ {449622000 7200 1 CEST}
+ {465429600 3600 0 CET}
+ {481590000 7200 1 CEST}
+ {496965600 3600 0 CET}
+ {512953200 7200 1 CEST}
+ {528674400 3600 0 CET}
+ {544230000 7200 1 CEST}
+ {560037600 3600 0 CET}
+ {575852400 7200 1 CEST}
+ {591660000 3600 0 CET}
+ {607388400 7200 1 CEST}
+ {623196000 3600 0 CET}
+ {641775600 7200 0 EET}
+ {844034400 3600 0 CET}
+ {860108400 7200 1 CEST}
+ {875919600 7200 0 EET}
+ {1352505600 3600 0 CET}
+ {1364515200 7200 1 CEST}
+ {1382659200 3600 0 CET}
+ {1395964800 7200 1 CEST}
+ {1414713600 3600 0 CET}
+ {1427414400 7200 1 CEST}
+ {1446163200 3600 0 CET}
+ {1458864000 7200 1 CEST}
+ {1477612800 3600 0 CET}
+ {1490918400 7200 1 CEST}
+ {1509062400 3600 0 CET}
+ {1522368000 7200 1 CEST}
+ {1540512000 3600 0 CET}
+ {1553817600 7200 1 CEST}
+ {1571961600 3600 0 CET}
+ {1585267200 7200 1 CEST}
+ {1604016000 3600 0 CET}
+ {1616716800 7200 1 CEST}
+ {1635465600 3600 0 CET}
+ {1648166400 7200 1 CEST}
+ {1666915200 3600 0 CET}
+ {1680220800 7200 1 CEST}
+ {1698364800 3600 0 CET}
+ {1711670400 7200 1 CEST}
+ {1729814400 3600 0 CET}
+ {1743120000 7200 1 CEST}
+ {1761868800 3600 0 CET}
+ {1774569600 7200 1 CEST}
+ {1793318400 3600 0 CET}
+ {1806019200 7200 1 CEST}
+ {1824768000 3600 0 CET}
+ {1838073600 7200 1 CEST}
+ {1856217600 3600 0 CET}
+ {1869523200 7200 1 CEST}
+ {1887667200 3600 0 CET}
+ {1900972800 7200 1 CEST}
+ {1919116800 3600 0 CET}
+ {1932422400 7200 1 CEST}
+ {1951171200 3600 0 CET}
+ {1963872000 7200 1 CEST}
+ {1982620800 3600 0 CET}
+ {1995321600 7200 1 CEST}
+ {2014070400 3600 0 CET}
+ {2027376000 7200 1 CEST}
+ {2045520000 3600 0 CET}
+ {2058825600 7200 1 CEST}
+ {2076969600 3600 0 CET}
+ {2090275200 7200 1 CEST}
+ {2109024000 3600 0 CET}
+ {2121724800 7200 1 CEST}
+ {2140473600 3600 0 CET}
+ {2153174400 7200 1 CEST}
+ {2171923200 3600 0 CET}
+ {2184624000 7200 1 CEST}
+ {2203372800 3600 0 CET}
+ {2216678400 7200 1 CEST}
+ {2234822400 3600 0 CET}
+ {2248128000 7200 1 CEST}
+ {2266272000 3600 0 CET}
+ {2279577600 7200 1 CEST}
+ {2298326400 3600 0 CET}
+ {2311027200 7200 1 CEST}
+ {2329776000 3600 0 CET}
+ {2342476800 7200 1 CEST}
+ {2361225600 3600 0 CET}
+ {2374531200 7200 1 CEST}
+ {2392675200 3600 0 CET}
+ {2405980800 7200 1 CEST}
+ {2424124800 3600 0 CET}
+ {2437430400 7200 1 CEST}
+ {2455574400 3600 0 CET}
+ {2468880000 7200 1 CEST}
+ {2487628800 3600 0 CET}
+ {2500329600 7200 1 CEST}
+ {2519078400 3600 0 CET}
+ {2531779200 7200 1 CEST}
+ {2550528000 3600 0 CET}
+ {2563833600 7200 1 CEST}
+ {2581977600 3600 0 CET}
+ {2595283200 7200 1 CEST}
+ {2613427200 3600 0 CET}
+ {2626732800 7200 1 CEST}
+ {2645481600 3600 0 CET}
+ {2658182400 7200 1 CEST}
+ {2676931200 3600 0 CET}
+ {2689632000 7200 1 CEST}
+ {2708380800 3600 0 CET}
+ {2721686400 7200 1 CEST}
+ {2739830400 3600 0 CET}
+ {2753136000 7200 1 CEST}
+ {2771280000 3600 0 CET}
+ {2784585600 7200 1 CEST}
+ {2802729600 3600 0 CET}
+ {2816035200 7200 1 CEST}
+ {2834784000 3600 0 CET}
+ {2847484800 7200 1 CEST}
+ {2866233600 3600 0 CET}
+ {2878934400 7200 1 CEST}
+ {2897683200 3600 0 CET}
+ {2910988800 7200 1 CEST}
+ {2929132800 3600 0 CET}
+ {2942438400 7200 1 CEST}
+ {2960582400 3600 0 CET}
+ {2973888000 7200 1 CEST}
+ {2992636800 3600 0 CET}
+ {3005337600 7200 1 CEST}
+ {3024086400 3600 0 CET}
+ {3036787200 7200 1 CEST}
+ {3055536000 3600 0 CET}
+ {3068236800 7200 1 CEST}
+ {3086985600 3600 0 CET}
+ {3100291200 7200 1 CEST}
+ {3118435200 3600 0 CET}
+ {3131740800 7200 1 CEST}
+ {3149884800 3600 0 CET}
+ {3163190400 7200 1 CEST}
+ {3181939200 3600 0 CET}
+ {3194640000 7200 1 CEST}
+ {3213388800 3600 0 CET}
+ {3226089600 7200 1 CEST}
+ {3244838400 3600 0 CET}
+ {3258144000 7200 1 CEST}
+ {3276288000 3600 0 CET}
+ {3289593600 7200 1 CEST}
+ {3307737600 3600 0 CET}
+ {3321043200 7200 1 CEST}
+ {3339187200 3600 0 CET}
+ {3352492800 7200 1 CEST}
+ {3371241600 3600 0 CET}
+ {3383942400 7200 1 CEST}
+ {3402691200 3600 0 CET}
+ {3415392000 7200 1 CEST}
+ {3434140800 3600 0 CET}
+ {3447446400 7200 1 CEST}
+ {3465590400 3600 0 CET}
+ {3478896000 7200 1 CEST}
+ {3497040000 3600 0 CET}
+ {3510345600 7200 1 CEST}
+ {3529094400 3600 0 CET}
+ {3541795200 7200 1 CEST}
+ {3560544000 3600 0 CET}
+ {3573244800 7200 1 CEST}
+ {3591993600 3600 0 CET}
+ {3605299200 7200 1 CEST}
+ {3623443200 3600 0 CET}
+ {3636748800 7200 1 CEST}
+ {3654892800 3600 0 CET}
+ {3668198400 7200 1 CEST}
+ {3686342400 3600 0 CET}
+ {3699648000 7200 1 CEST}
+ {3718396800 3600 0 CET}
+ {3731097600 7200 1 CEST}
+ {3749846400 3600 0 CET}
+ {3762547200 7200 1 CEST}
+ {3781296000 3600 0 CET}
+ {3794601600 7200 1 CEST}
+ {3812745600 3600 0 CET}
+ {3826051200 7200 1 CEST}
+ {3844195200 3600 0 CET}
+ {3857500800 7200 1 CEST}
+ {3876249600 3600 0 CET}
+ {3888950400 7200 1 CEST}
+ {3907699200 3600 0 CET}
+ {3920400000 7200 1 CEST}
+ {3939148800 3600 0 CET}
+ {3951849600 7200 1 CEST}
+ {3970598400 3600 0 CET}
+ {3983904000 7200 1 CEST}
+ {4002048000 3600 0 CET}
+ {4015353600 7200 1 CEST}
+ {4033497600 3600 0 CET}
+ {4046803200 7200 1 CEST}
+ {4065552000 3600 0 CET}
+ {4078252800 7200 1 CEST}
+ {4097001600 3600 0 CET}
+}
diff --git a/library/tzdata/Africa/Tunis b/library/tzdata/Africa/Tunis
new file mode 100644
index 0000000..0c1db4d
--- /dev/null
+++ b/library/tzdata/Africa/Tunis
@@ -0,0 +1,39 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Tunis) {
+ {-9223372036854775808 2444 0 LMT}
+ {-2797202444 561 0 PMT}
+ {-1855958961 3600 0 CET}
+ {-969242400 7200 1 CEST}
+ {-950493600 3600 0 CET}
+ {-941940000 7200 1 CEST}
+ {-891136800 3600 0 CET}
+ {-877827600 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-842918400 3600 0 CET}
+ {-842223600 7200 1 CEST}
+ {-828230400 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796269600 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-766634400 3600 0 CET}
+ {231202800 7200 1 CEST}
+ {243903600 3600 0 CET}
+ {262825200 7200 1 CEST}
+ {276044400 3600 0 CET}
+ {581122800 7200 1 CEST}
+ {591145200 3600 0 CET}
+ {606870000 7200 1 CEST}
+ {622594800 3600 0 CET}
+ {641516400 7200 1 CEST}
+ {654649200 3600 0 CET}
+ {1114902000 7200 1 CEST}
+ {1128038400 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+}
diff --git a/library/tzdata/Africa/Windhoek b/library/tzdata/Africa/Windhoek
new file mode 100644
index 0000000..a655f2e
--- /dev/null
+++ b/library/tzdata/Africa/Windhoek
@@ -0,0 +1,222 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Africa/Windhoek) {
+ {-9223372036854775808 4104 0 LMT}
+ {-2458170504 5400 0 SWAT}
+ {-2109288600 7200 0 SAST}
+ {-860976000 10800 1 SAST}
+ {-845254800 7200 0 SAST}
+ {637970400 7200 0 CAT}
+ {765324000 3600 0 WAT}
+ {778640400 7200 1 WAST}
+ {796780800 3600 0 WAT}
+ {810090000 7200 1 WAST}
+ {828835200 3600 0 WAT}
+ {841539600 7200 1 WAST}
+ {860284800 3600 0 WAT}
+ {873594000 7200 1 WAST}
+ {891734400 3600 0 WAT}
+ {905043600 7200 1 WAST}
+ {923184000 3600 0 WAT}
+ {936493200 7200 1 WAST}
+ {954633600 3600 0 WAT}
+ {967942800 7200 1 WAST}
+ {986083200 3600 0 WAT}
+ {999392400 7200 1 WAST}
+ {1018137600 3600 0 WAT}
+ {1030842000 7200 1 WAST}
+ {1049587200 3600 0 WAT}
+ {1062896400 7200 1 WAST}
+ {1081036800 3600 0 WAT}
+ {1094346000 7200 1 WAST}
+ {1112486400 3600 0 WAT}
+ {1125795600 7200 1 WAST}
+ {1143936000 3600 0 WAT}
+ {1157245200 7200 1 WAST}
+ {1175385600 3600 0 WAT}
+ {1188694800 7200 1 WAST}
+ {1207440000 3600 0 WAT}
+ {1220749200 7200 1 WAST}
+ {1238889600 3600 0 WAT}
+ {1252198800 7200 1 WAST}
+ {1270339200 3600 0 WAT}
+ {1283648400 7200 1 WAST}
+ {1301788800 3600 0 WAT}
+ {1315098000 7200 1 WAST}
+ {1333238400 3600 0 WAT}
+ {1346547600 7200 1 WAST}
+ {1365292800 3600 0 WAT}
+ {1377997200 7200 1 WAST}
+ {1396742400 3600 0 WAT}
+ {1410051600 7200 1 WAST}
+ {1428192000 3600 0 WAT}
+ {1441501200 7200 1 WAST}
+ {1459641600 3600 0 WAT}
+ {1472950800 7200 1 WAST}
+ {1491091200 3600 0 WAT}
+ {1504400400 7200 1 WAST}
+ {1522540800 3600 0 WAT}
+ {1535850000 7200 1 WAST}
+ {1554595200 3600 0 WAT}
+ {1567299600 7200 1 WAST}
+ {1586044800 3600 0 WAT}
+ {1599354000 7200 1 WAST}
+ {1617494400 3600 0 WAT}
+ {1630803600 7200 1 WAST}
+ {1648944000 3600 0 WAT}
+ {1662253200 7200 1 WAST}
+ {1680393600 3600 0 WAT}
+ {1693702800 7200 1 WAST}
+ {1712448000 3600 0 WAT}
+ {1725152400 7200 1 WAST}
+ {1743897600 3600 0 WAT}
+ {1757206800 7200 1 WAST}
+ {1775347200 3600 0 WAT}
+ {1788656400 7200 1 WAST}
+ {1806796800 3600 0 WAT}
+ {1820106000 7200 1 WAST}
+ {1838246400 3600 0 WAT}
+ {1851555600 7200 1 WAST}
+ {1869696000 3600 0 WAT}
+ {1883005200 7200 1 WAST}
+ {1901750400 3600 0 WAT}
+ {1914454800 7200 1 WAST}
+ {1933200000 3600 0 WAT}
+ {1946509200 7200 1 WAST}
+ {1964649600 3600 0 WAT}
+ {1977958800 7200 1 WAST}
+ {1996099200 3600 0 WAT}
+ {2009408400 7200 1 WAST}
+ {2027548800 3600 0 WAT}
+ {2040858000 7200 1 WAST}
+ {2058998400 3600 0 WAT}
+ {2072307600 7200 1 WAST}
+ {2091052800 3600 0 WAT}
+ {2104362000 7200 1 WAST}
+ {2122502400 3600 0 WAT}
+ {2135811600 7200 1 WAST}
+ {2153952000 3600 0 WAT}
+ {2167261200 7200 1 WAST}
+ {2185401600 3600 0 WAT}
+ {2198710800 7200 1 WAST}
+ {2216851200 3600 0 WAT}
+ {2230160400 7200 1 WAST}
+ {2248905600 3600 0 WAT}
+ {2261610000 7200 1 WAST}
+ {2280355200 3600 0 WAT}
+ {2293664400 7200 1 WAST}
+ {2311804800 3600 0 WAT}
+ {2325114000 7200 1 WAST}
+ {2343254400 3600 0 WAT}
+ {2356563600 7200 1 WAST}
+ {2374704000 3600 0 WAT}
+ {2388013200 7200 1 WAST}
+ {2406153600 3600 0 WAT}
+ {2419462800 7200 1 WAST}
+ {2438208000 3600 0 WAT}
+ {2450912400 7200 1 WAST}
+ {2469657600 3600 0 WAT}
+ {2482966800 7200 1 WAST}
+ {2501107200 3600 0 WAT}
+ {2514416400 7200 1 WAST}
+ {2532556800 3600 0 WAT}
+ {2545866000 7200 1 WAST}
+ {2564006400 3600 0 WAT}
+ {2577315600 7200 1 WAST}
+ {2596060800 3600 0 WAT}
+ {2608765200 7200 1 WAST}
+ {2627510400 3600 0 WAT}
+ {2640819600 7200 1 WAST}
+ {2658960000 3600 0 WAT}
+ {2672269200 7200 1 WAST}
+ {2690409600 3600 0 WAT}
+ {2703718800 7200 1 WAST}
+ {2721859200 3600 0 WAT}
+ {2735168400 7200 1 WAST}
+ {2753308800 3600 0 WAT}
+ {2766618000 7200 1 WAST}
+ {2785363200 3600 0 WAT}
+ {2798067600 7200 1 WAST}
+ {2816812800 3600 0 WAT}
+ {2830122000 7200 1 WAST}
+ {2848262400 3600 0 WAT}
+ {2861571600 7200 1 WAST}
+ {2879712000 3600 0 WAT}
+ {2893021200 7200 1 WAST}
+ {2911161600 3600 0 WAT}
+ {2924470800 7200 1 WAST}
+ {2942611200 3600 0 WAT}
+ {2955920400 7200 1 WAST}
+ {2974665600 3600 0 WAT}
+ {2987974800 7200 1 WAST}
+ {3006115200 3600 0 WAT}
+ {3019424400 7200 1 WAST}
+ {3037564800 3600 0 WAT}
+ {3050874000 7200 1 WAST}
+ {3069014400 3600 0 WAT}
+ {3082323600 7200 1 WAST}
+ {3100464000 3600 0 WAT}
+ {3113773200 7200 1 WAST}
+ {3132518400 3600 0 WAT}
+ {3145222800 7200 1 WAST}
+ {3163968000 3600 0 WAT}
+ {3177277200 7200 1 WAST}
+ {3195417600 3600 0 WAT}
+ {3208726800 7200 1 WAST}
+ {3226867200 3600 0 WAT}
+ {3240176400 7200 1 WAST}
+ {3258316800 3600 0 WAT}
+ {3271626000 7200 1 WAST}
+ {3289766400 3600 0 WAT}
+ {3303075600 7200 1 WAST}
+ {3321820800 3600 0 WAT}
+ {3334525200 7200 1 WAST}
+ {3353270400 3600 0 WAT}
+ {3366579600 7200 1 WAST}
+ {3384720000 3600 0 WAT}
+ {3398029200 7200 1 WAST}
+ {3416169600 3600 0 WAT}
+ {3429478800 7200 1 WAST}
+ {3447619200 3600 0 WAT}
+ {3460928400 7200 1 WAST}
+ {3479673600 3600 0 WAT}
+ {3492378000 7200 1 WAST}
+ {3511123200 3600 0 WAT}
+ {3524432400 7200 1 WAST}
+ {3542572800 3600 0 WAT}
+ {3555882000 7200 1 WAST}
+ {3574022400 3600 0 WAT}
+ {3587331600 7200 1 WAST}
+ {3605472000 3600 0 WAT}
+ {3618781200 7200 1 WAST}
+ {3636921600 3600 0 WAT}
+ {3650230800 7200 1 WAST}
+ {3668976000 3600 0 WAT}
+ {3681680400 7200 1 WAST}
+ {3700425600 3600 0 WAT}
+ {3713734800 7200 1 WAST}
+ {3731875200 3600 0 WAT}
+ {3745184400 7200 1 WAST}
+ {3763324800 3600 0 WAT}
+ {3776634000 7200 1 WAST}
+ {3794774400 3600 0 WAT}
+ {3808083600 7200 1 WAST}
+ {3826224000 3600 0 WAT}
+ {3839533200 7200 1 WAST}
+ {3858278400 3600 0 WAT}
+ {3871587600 7200 1 WAST}
+ {3889728000 3600 0 WAT}
+ {3903037200 7200 1 WAST}
+ {3921177600 3600 0 WAT}
+ {3934486800 7200 1 WAST}
+ {3952627200 3600 0 WAT}
+ {3965936400 7200 1 WAST}
+ {3984076800 3600 0 WAT}
+ {3997386000 7200 1 WAST}
+ {4016131200 3600 0 WAT}
+ {4028835600 7200 1 WAST}
+ {4047580800 3600 0 WAT}
+ {4060890000 7200 1 WAST}
+ {4079030400 3600 0 WAT}
+ {4092339600 7200 1 WAST}
+}
diff --git a/library/tzdata/America/Adak b/library/tzdata/America/Adak
new file mode 100644
index 0000000..f3c5e5c
--- /dev/null
+++ b/library/tzdata/America/Adak
@@ -0,0 +1,276 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Adak) {
+ {-9223372036854775808 44001 0 LMT}
+ {-3225356001 -42398 0 LMT}
+ {-2188944802 -39600 0 NST}
+ {-883573200 -39600 0 NST}
+ {-880196400 -36000 1 NWT}
+ {-769395600 -36000 1 NPT}
+ {-765374400 -39600 0 NST}
+ {-757342800 -39600 0 NST}
+ {-86878800 -39600 0 BST}
+ {-31496400 -39600 0 BST}
+ {-21466800 -36000 1 BDT}
+ {-5745600 -39600 0 BST}
+ {9982800 -36000 1 BDT}
+ {25704000 -39600 0 BST}
+ {41432400 -36000 1 BDT}
+ {57758400 -39600 0 BST}
+ {73486800 -36000 1 BDT}
+ {89208000 -39600 0 BST}
+ {104936400 -36000 1 BDT}
+ {120657600 -39600 0 BST}
+ {126709200 -36000 1 BDT}
+ {152107200 -39600 0 BST}
+ {162392400 -36000 1 BDT}
+ {183556800 -39600 0 BST}
+ {199285200 -36000 1 BDT}
+ {215611200 -39600 0 BST}
+ {230734800 -36000 1 BDT}
+ {247060800 -39600 0 BST}
+ {262789200 -36000 1 BDT}
+ {278510400 -39600 0 BST}
+ {294238800 -36000 1 BDT}
+ {309960000 -39600 0 BST}
+ {325688400 -36000 1 BDT}
+ {341409600 -39600 0 BST}
+ {357138000 -36000 1 BDT}
+ {372859200 -39600 0 BST}
+ {388587600 -36000 1 BDT}
+ {404913600 -39600 0 BST}
+ {420037200 -36000 1 BDT}
+ {439034400 -36000 0 HAST}
+ {452088000 -32400 1 HADT}
+ {467809200 -36000 0 HAST}
+ {483537600 -32400 1 HADT}
+ {499258800 -36000 0 HAST}
+ {514987200 -32400 1 HADT}
+ {530708400 -36000 0 HAST}
+ {544622400 -32400 1 HADT}
+ {562158000 -36000 0 HAST}
+ {576072000 -32400 1 HADT}
+ {594212400 -36000 0 HAST}
+ {607521600 -32400 1 HADT}
+ {625662000 -36000 0 HAST}
+ {638971200 -32400 1 HADT}
+ {657111600 -36000 0 HAST}
+ {671025600 -32400 1 HADT}
+ {688561200 -36000 0 HAST}
+ {702475200 -32400 1 HADT}
+ {720010800 -36000 0 HAST}
+ {733924800 -32400 1 HADT}
+ {752065200 -36000 0 HAST}
+ {765374400 -32400 1 HADT}
+ {783514800 -36000 0 HAST}
+ {796824000 -32400 1 HADT}
+ {814964400 -36000 0 HAST}
+ {828878400 -32400 1 HADT}
+ {846414000 -36000 0 HAST}
+ {860328000 -32400 1 HADT}
+ {877863600 -36000 0 HAST}
+ {891777600 -32400 1 HADT}
+ {909313200 -36000 0 HAST}
+ {923227200 -32400 1 HADT}
+ {941367600 -36000 0 HAST}
+ {954676800 -32400 1 HADT}
+ {972817200 -36000 0 HAST}
+ {986126400 -32400 1 HADT}
+ {1004266800 -36000 0 HAST}
+ {1018180800 -32400 1 HADT}
+ {1035716400 -36000 0 HAST}
+ {1049630400 -32400 1 HADT}
+ {1067166000 -36000 0 HAST}
+ {1081080000 -32400 1 HADT}
+ {1099220400 -36000 0 HAST}
+ {1112529600 -32400 1 HADT}
+ {1130670000 -36000 0 HAST}
+ {1143979200 -32400 1 HADT}
+ {1162119600 -36000 0 HAST}
+ {1173614400 -32400 1 HADT}
+ {1194174000 -36000 0 HAST}
+ {1205064000 -32400 1 HADT}
+ {1225623600 -36000 0 HAST}
+ {1236513600 -32400 1 HADT}
+ {1257073200 -36000 0 HAST}
+ {1268568000 -32400 1 HADT}
+ {1289127600 -36000 0 HAST}
+ {1300017600 -32400 1 HADT}
+ {1320577200 -36000 0 HAST}
+ {1331467200 -32400 1 HADT}
+ {1352026800 -36000 0 HAST}
+ {1362916800 -32400 1 HADT}
+ {1383476400 -36000 0 HAST}
+ {1394366400 -32400 1 HADT}
+ {1414926000 -36000 0 HAST}
+ {1425816000 -32400 1 HADT}
+ {1446375600 -36000 0 HAST}
+ {1457870400 -32400 1 HADT}
+ {1478430000 -36000 0 HAST}
+ {1489320000 -32400 1 HADT}
+ {1509879600 -36000 0 HAST}
+ {1520769600 -32400 1 HADT}
+ {1541329200 -36000 0 HAST}
+ {1552219200 -32400 1 HADT}
+ {1572778800 -36000 0 HAST}
+ {1583668800 -32400 1 HADT}
+ {1604228400 -36000 0 HAST}
+ {1615723200 -32400 1 HADT}
+ {1636282800 -36000 0 HAST}
+ {1647172800 -32400 1 HADT}
+ {1667732400 -36000 0 HAST}
+ {1678622400 -32400 1 HADT}
+ {1699182000 -36000 0 HAST}
+ {1710072000 -32400 1 HADT}
+ {1730631600 -36000 0 HAST}
+ {1741521600 -32400 1 HADT}
+ {1762081200 -36000 0 HAST}
+ {1772971200 -32400 1 HADT}
+ {1793530800 -36000 0 HAST}
+ {1805025600 -32400 1 HADT}
+ {1825585200 -36000 0 HAST}
+ {1836475200 -32400 1 HADT}
+ {1857034800 -36000 0 HAST}
+ {1867924800 -32400 1 HADT}
+ {1888484400 -36000 0 HAST}
+ {1899374400 -32400 1 HADT}
+ {1919934000 -36000 0 HAST}
+ {1930824000 -32400 1 HADT}
+ {1951383600 -36000 0 HAST}
+ {1962878400 -32400 1 HADT}
+ {1983438000 -36000 0 HAST}
+ {1994328000 -32400 1 HADT}
+ {2014887600 -36000 0 HAST}
+ {2025777600 -32400 1 HADT}
+ {2046337200 -36000 0 HAST}
+ {2057227200 -32400 1 HADT}
+ {2077786800 -36000 0 HAST}
+ {2088676800 -32400 1 HADT}
+ {2109236400 -36000 0 HAST}
+ {2120126400 -32400 1 HADT}
+ {2140686000 -36000 0 HAST}
+ {2152180800 -32400 1 HADT}
+ {2172740400 -36000 0 HAST}
+ {2183630400 -32400 1 HADT}
+ {2204190000 -36000 0 HAST}
+ {2215080000 -32400 1 HADT}
+ {2235639600 -36000 0 HAST}
+ {2246529600 -32400 1 HADT}
+ {2267089200 -36000 0 HAST}
+ {2277979200 -32400 1 HADT}
+ {2298538800 -36000 0 HAST}
+ {2309428800 -32400 1 HADT}
+ {2329988400 -36000 0 HAST}
+ {2341483200 -32400 1 HADT}
+ {2362042800 -36000 0 HAST}
+ {2372932800 -32400 1 HADT}
+ {2393492400 -36000 0 HAST}
+ {2404382400 -32400 1 HADT}
+ {2424942000 -36000 0 HAST}
+ {2435832000 -32400 1 HADT}
+ {2456391600 -36000 0 HAST}
+ {2467281600 -32400 1 HADT}
+ {2487841200 -36000 0 HAST}
+ {2499336000 -32400 1 HADT}
+ {2519895600 -36000 0 HAST}
+ {2530785600 -32400 1 HADT}
+ {2551345200 -36000 0 HAST}
+ {2562235200 -32400 1 HADT}
+ {2582794800 -36000 0 HAST}
+ {2593684800 -32400 1 HADT}
+ {2614244400 -36000 0 HAST}
+ {2625134400 -32400 1 HADT}
+ {2645694000 -36000 0 HAST}
+ {2656584000 -32400 1 HADT}
+ {2677143600 -36000 0 HAST}
+ {2688638400 -32400 1 HADT}
+ {2709198000 -36000 0 HAST}
+ {2720088000 -32400 1 HADT}
+ {2740647600 -36000 0 HAST}
+ {2751537600 -32400 1 HADT}
+ {2772097200 -36000 0 HAST}
+ {2782987200 -32400 1 HADT}
+ {2803546800 -36000 0 HAST}
+ {2814436800 -32400 1 HADT}
+ {2834996400 -36000 0 HAST}
+ {2846491200 -32400 1 HADT}
+ {2867050800 -36000 0 HAST}
+ {2877940800 -32400 1 HADT}
+ {2898500400 -36000 0 HAST}
+ {2909390400 -32400 1 HADT}
+ {2929950000 -36000 0 HAST}
+ {2940840000 -32400 1 HADT}
+ {2961399600 -36000 0 HAST}
+ {2972289600 -32400 1 HADT}
+ {2992849200 -36000 0 HAST}
+ {3003739200 -32400 1 HADT}
+ {3024298800 -36000 0 HAST}
+ {3035793600 -32400 1 HADT}
+ {3056353200 -36000 0 HAST}
+ {3067243200 -32400 1 HADT}
+ {3087802800 -36000 0 HAST}
+ {3098692800 -32400 1 HADT}
+ {3119252400 -36000 0 HAST}
+ {3130142400 -32400 1 HADT}
+ {3150702000 -36000 0 HAST}
+ {3161592000 -32400 1 HADT}
+ {3182151600 -36000 0 HAST}
+ {3193041600 -32400 1 HADT}
+ {3213601200 -36000 0 HAST}
+ {3225096000 -32400 1 HADT}
+ {3245655600 -36000 0 HAST}
+ {3256545600 -32400 1 HADT}
+ {3277105200 -36000 0 HAST}
+ {3287995200 -32400 1 HADT}
+ {3308554800 -36000 0 HAST}
+ {3319444800 -32400 1 HADT}
+ {3340004400 -36000 0 HAST}
+ {3350894400 -32400 1 HADT}
+ {3371454000 -36000 0 HAST}
+ {3382948800 -32400 1 HADT}
+ {3403508400 -36000 0 HAST}
+ {3414398400 -32400 1 HADT}
+ {3434958000 -36000 0 HAST}
+ {3445848000 -32400 1 HADT}
+ {3466407600 -36000 0 HAST}
+ {3477297600 -32400 1 HADT}
+ {3497857200 -36000 0 HAST}
+ {3508747200 -32400 1 HADT}
+ {3529306800 -36000 0 HAST}
+ {3540196800 -32400 1 HADT}
+ {3560756400 -36000 0 HAST}
+ {3572251200 -32400 1 HADT}
+ {3592810800 -36000 0 HAST}
+ {3603700800 -32400 1 HADT}
+ {3624260400 -36000 0 HAST}
+ {3635150400 -32400 1 HADT}
+ {3655710000 -36000 0 HAST}
+ {3666600000 -32400 1 HADT}
+ {3687159600 -36000 0 HAST}
+ {3698049600 -32400 1 HADT}
+ {3718609200 -36000 0 HAST}
+ {3730104000 -32400 1 HADT}
+ {3750663600 -36000 0 HAST}
+ {3761553600 -32400 1 HADT}
+ {3782113200 -36000 0 HAST}
+ {3793003200 -32400 1 HADT}
+ {3813562800 -36000 0 HAST}
+ {3824452800 -32400 1 HADT}
+ {3845012400 -36000 0 HAST}
+ {3855902400 -32400 1 HADT}
+ {3876462000 -36000 0 HAST}
+ {3887352000 -32400 1 HADT}
+ {3907911600 -36000 0 HAST}
+ {3919406400 -32400 1 HADT}
+ {3939966000 -36000 0 HAST}
+ {3950856000 -32400 1 HADT}
+ {3971415600 -36000 0 HAST}
+ {3982305600 -32400 1 HADT}
+ {4002865200 -36000 0 HAST}
+ {4013755200 -32400 1 HADT}
+ {4034314800 -36000 0 HAST}
+ {4045204800 -32400 1 HADT}
+ {4065764400 -36000 0 HAST}
+ {4076654400 -32400 1 HADT}
+ {4097214000 -36000 0 HAST}
+}
diff --git a/library/tzdata/America/Anchorage b/library/tzdata/America/Anchorage
new file mode 100644
index 0000000..e02dd01
--- /dev/null
+++ b/library/tzdata/America/Anchorage
@@ -0,0 +1,276 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Anchorage) {
+ {-9223372036854775808 50424 0 LMT}
+ {-3225362424 -35976 0 LMT}
+ {-2188951224 -36000 0 CAT}
+ {-883576800 -36000 0 CAWT}
+ {-880200000 -32400 1 CAWT}
+ {-769395600 -32400 0 CAPT}
+ {-765378000 -36000 0 CAPT}
+ {-757346400 -36000 0 CAT}
+ {-86882400 -36000 0 AHST}
+ {-31500000 -36000 0 AHST}
+ {-21470400 -32400 1 AHDT}
+ {-5749200 -36000 0 AHST}
+ {9979200 -32400 1 AHDT}
+ {25700400 -36000 0 AHST}
+ {41428800 -32400 1 AHDT}
+ {57754800 -36000 0 AHST}
+ {73483200 -32400 1 AHDT}
+ {89204400 -36000 0 AHST}
+ {104932800 -32400 1 AHDT}
+ {120654000 -36000 0 AHST}
+ {126705600 -32400 1 AHDT}
+ {152103600 -36000 0 AHST}
+ {162388800 -32400 1 AHDT}
+ {183553200 -36000 0 AHST}
+ {199281600 -32400 1 AHDT}
+ {215607600 -36000 0 AHST}
+ {230731200 -32400 1 AHDT}
+ {247057200 -36000 0 AHST}
+ {262785600 -32400 1 AHDT}
+ {278506800 -36000 0 AHST}
+ {294235200 -32400 1 AHDT}
+ {309956400 -36000 0 AHST}
+ {325684800 -32400 1 AHDT}
+ {341406000 -36000 0 AHST}
+ {357134400 -32400 1 AHDT}
+ {372855600 -36000 0 AHST}
+ {388584000 -32400 1 AHDT}
+ {404910000 -36000 0 AHST}
+ {420033600 -32400 1 AHDT}
+ {439030800 -32400 0 AKST}
+ {452084400 -28800 1 AKDT}
+ {467805600 -32400 0 AKST}
+ {483534000 -28800 1 AKDT}
+ {499255200 -32400 0 AKST}
+ {514983600 -28800 1 AKDT}
+ {530704800 -32400 0 AKST}
+ {544618800 -28800 1 AKDT}
+ {562154400 -32400 0 AKST}
+ {576068400 -28800 1 AKDT}
+ {594208800 -32400 0 AKST}
+ {607518000 -28800 1 AKDT}
+ {625658400 -32400 0 AKST}
+ {638967600 -28800 1 AKDT}
+ {657108000 -32400 0 AKST}
+ {671022000 -28800 1 AKDT}
+ {688557600 -32400 0 AKST}
+ {702471600 -28800 1 AKDT}
+ {720007200 -32400 0 AKST}
+ {733921200 -28800 1 AKDT}
+ {752061600 -32400 0 AKST}
+ {765370800 -28800 1 AKDT}
+ {783511200 -32400 0 AKST}
+ {796820400 -28800 1 AKDT}
+ {814960800 -32400 0 AKST}
+ {828874800 -28800 1 AKDT}
+ {846410400 -32400 0 AKST}
+ {860324400 -28800 1 AKDT}
+ {877860000 -32400 0 AKST}
+ {891774000 -28800 1 AKDT}
+ {909309600 -32400 0 AKST}
+ {923223600 -28800 1 AKDT}
+ {941364000 -32400 0 AKST}
+ {954673200 -28800 1 AKDT}
+ {972813600 -32400 0 AKST}
+ {986122800 -28800 1 AKDT}
+ {1004263200 -32400 0 AKST}
+ {1018177200 -28800 1 AKDT}
+ {1035712800 -32400 0 AKST}
+ {1049626800 -28800 1 AKDT}
+ {1067162400 -32400 0 AKST}
+ {1081076400 -28800 1 AKDT}
+ {1099216800 -32400 0 AKST}
+ {1112526000 -28800 1 AKDT}
+ {1130666400 -32400 0 AKST}
+ {1143975600 -28800 1 AKDT}
+ {1162116000 -32400 0 AKST}
+ {1173610800 -28800 1 AKDT}
+ {1194170400 -32400 0 AKST}
+ {1205060400 -28800 1 AKDT}
+ {1225620000 -32400 0 AKST}
+ {1236510000 -28800 1 AKDT}
+ {1257069600 -32400 0 AKST}
+ {1268564400 -28800 1 AKDT}
+ {1289124000 -32400 0 AKST}
+ {1300014000 -28800 1 AKDT}
+ {1320573600 -32400 0 AKST}
+ {1331463600 -28800 1 AKDT}
+ {1352023200 -32400 0 AKST}
+ {1362913200 -28800 1 AKDT}
+ {1383472800 -32400 0 AKST}
+ {1394362800 -28800 1 AKDT}
+ {1414922400 -32400 0 AKST}
+ {1425812400 -28800 1 AKDT}
+ {1446372000 -32400 0 AKST}
+ {1457866800 -28800 1 AKDT}
+ {1478426400 -32400 0 AKST}
+ {1489316400 -28800 1 AKDT}
+ {1509876000 -32400 0 AKST}
+ {1520766000 -28800 1 AKDT}
+ {1541325600 -32400 0 AKST}
+ {1552215600 -28800 1 AKDT}
+ {1572775200 -32400 0 AKST}
+ {1583665200 -28800 1 AKDT}
+ {1604224800 -32400 0 AKST}
+ {1615719600 -28800 1 AKDT}
+ {1636279200 -32400 0 AKST}
+ {1647169200 -28800 1 AKDT}
+ {1667728800 -32400 0 AKST}
+ {1678618800 -28800 1 AKDT}
+ {1699178400 -32400 0 AKST}
+ {1710068400 -28800 1 AKDT}
+ {1730628000 -32400 0 AKST}
+ {1741518000 -28800 1 AKDT}
+ {1762077600 -32400 0 AKST}
+ {1772967600 -28800 1 AKDT}
+ {1793527200 -32400 0 AKST}
+ {1805022000 -28800 1 AKDT}
+ {1825581600 -32400 0 AKST}
+ {1836471600 -28800 1 AKDT}
+ {1857031200 -32400 0 AKST}
+ {1867921200 -28800 1 AKDT}
+ {1888480800 -32400 0 AKST}
+ {1899370800 -28800 1 AKDT}
+ {1919930400 -32400 0 AKST}
+ {1930820400 -28800 1 AKDT}
+ {1951380000 -32400 0 AKST}
+ {1962874800 -28800 1 AKDT}
+ {1983434400 -32400 0 AKST}
+ {1994324400 -28800 1 AKDT}
+ {2014884000 -32400 0 AKST}
+ {2025774000 -28800 1 AKDT}
+ {2046333600 -32400 0 AKST}
+ {2057223600 -28800 1 AKDT}
+ {2077783200 -32400 0 AKST}
+ {2088673200 -28800 1 AKDT}
+ {2109232800 -32400 0 AKST}
+ {2120122800 -28800 1 AKDT}
+ {2140682400 -32400 0 AKST}
+ {2152177200 -28800 1 AKDT}
+ {2172736800 -32400 0 AKST}
+ {2183626800 -28800 1 AKDT}
+ {2204186400 -32400 0 AKST}
+ {2215076400 -28800 1 AKDT}
+ {2235636000 -32400 0 AKST}
+ {2246526000 -28800 1 AKDT}
+ {2267085600 -32400 0 AKST}
+ {2277975600 -28800 1 AKDT}
+ {2298535200 -32400 0 AKST}
+ {2309425200 -28800 1 AKDT}
+ {2329984800 -32400 0 AKST}
+ {2341479600 -28800 1 AKDT}
+ {2362039200 -32400 0 AKST}
+ {2372929200 -28800 1 AKDT}
+ {2393488800 -32400 0 AKST}
+ {2404378800 -28800 1 AKDT}
+ {2424938400 -32400 0 AKST}
+ {2435828400 -28800 1 AKDT}
+ {2456388000 -32400 0 AKST}
+ {2467278000 -28800 1 AKDT}
+ {2487837600 -32400 0 AKST}
+ {2499332400 -28800 1 AKDT}
+ {2519892000 -32400 0 AKST}
+ {2530782000 -28800 1 AKDT}
+ {2551341600 -32400 0 AKST}
+ {2562231600 -28800 1 AKDT}
+ {2582791200 -32400 0 AKST}
+ {2593681200 -28800 1 AKDT}
+ {2614240800 -32400 0 AKST}
+ {2625130800 -28800 1 AKDT}
+ {2645690400 -32400 0 AKST}
+ {2656580400 -28800 1 AKDT}
+ {2677140000 -32400 0 AKST}
+ {2688634800 -28800 1 AKDT}
+ {2709194400 -32400 0 AKST}
+ {2720084400 -28800 1 AKDT}
+ {2740644000 -32400 0 AKST}
+ {2751534000 -28800 1 AKDT}
+ {2772093600 -32400 0 AKST}
+ {2782983600 -28800 1 AKDT}
+ {2803543200 -32400 0 AKST}
+ {2814433200 -28800 1 AKDT}
+ {2834992800 -32400 0 AKST}
+ {2846487600 -28800 1 AKDT}
+ {2867047200 -32400 0 AKST}
+ {2877937200 -28800 1 AKDT}
+ {2898496800 -32400 0 AKST}
+ {2909386800 -28800 1 AKDT}
+ {2929946400 -32400 0 AKST}
+ {2940836400 -28800 1 AKDT}
+ {2961396000 -32400 0 AKST}
+ {2972286000 -28800 1 AKDT}
+ {2992845600 -32400 0 AKST}
+ {3003735600 -28800 1 AKDT}
+ {3024295200 -32400 0 AKST}
+ {3035790000 -28800 1 AKDT}
+ {3056349600 -32400 0 AKST}
+ {3067239600 -28800 1 AKDT}
+ {3087799200 -32400 0 AKST}
+ {3098689200 -28800 1 AKDT}
+ {3119248800 -32400 0 AKST}
+ {3130138800 -28800 1 AKDT}
+ {3150698400 -32400 0 AKST}
+ {3161588400 -28800 1 AKDT}
+ {3182148000 -32400 0 AKST}
+ {3193038000 -28800 1 AKDT}
+ {3213597600 -32400 0 AKST}
+ {3225092400 -28800 1 AKDT}
+ {3245652000 -32400 0 AKST}
+ {3256542000 -28800 1 AKDT}
+ {3277101600 -32400 0 AKST}
+ {3287991600 -28800 1 AKDT}
+ {3308551200 -32400 0 AKST}
+ {3319441200 -28800 1 AKDT}
+ {3340000800 -32400 0 AKST}
+ {3350890800 -28800 1 AKDT}
+ {3371450400 -32400 0 AKST}
+ {3382945200 -28800 1 AKDT}
+ {3403504800 -32400 0 AKST}
+ {3414394800 -28800 1 AKDT}
+ {3434954400 -32400 0 AKST}
+ {3445844400 -28800 1 AKDT}
+ {3466404000 -32400 0 AKST}
+ {3477294000 -28800 1 AKDT}
+ {3497853600 -32400 0 AKST}
+ {3508743600 -28800 1 AKDT}
+ {3529303200 -32400 0 AKST}
+ {3540193200 -28800 1 AKDT}
+ {3560752800 -32400 0 AKST}
+ {3572247600 -28800 1 AKDT}
+ {3592807200 -32400 0 AKST}
+ {3603697200 -28800 1 AKDT}
+ {3624256800 -32400 0 AKST}
+ {3635146800 -28800 1 AKDT}
+ {3655706400 -32400 0 AKST}
+ {3666596400 -28800 1 AKDT}
+ {3687156000 -32400 0 AKST}
+ {3698046000 -28800 1 AKDT}
+ {3718605600 -32400 0 AKST}
+ {3730100400 -28800 1 AKDT}
+ {3750660000 -32400 0 AKST}
+ {3761550000 -28800 1 AKDT}
+ {3782109600 -32400 0 AKST}
+ {3792999600 -28800 1 AKDT}
+ {3813559200 -32400 0 AKST}
+ {3824449200 -28800 1 AKDT}
+ {3845008800 -32400 0 AKST}
+ {3855898800 -28800 1 AKDT}
+ {3876458400 -32400 0 AKST}
+ {3887348400 -28800 1 AKDT}
+ {3907908000 -32400 0 AKST}
+ {3919402800 -28800 1 AKDT}
+ {3939962400 -32400 0 AKST}
+ {3950852400 -28800 1 AKDT}
+ {3971412000 -32400 0 AKST}
+ {3982302000 -28800 1 AKDT}
+ {4002861600 -32400 0 AKST}
+ {4013751600 -28800 1 AKDT}
+ {4034311200 -32400 0 AKST}
+ {4045201200 -28800 1 AKDT}
+ {4065760800 -32400 0 AKST}
+ {4076650800 -28800 1 AKDT}
+ {4097210400 -32400 0 AKST}
+}
diff --git a/library/tzdata/America/Anguilla b/library/tzdata/America/Anguilla
new file mode 100644
index 0000000..39a0d18
--- /dev/null
+++ b/library/tzdata/America/Anguilla
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Anguilla) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Antigua b/library/tzdata/America/Antigua
new file mode 100644
index 0000000..5433e9b
--- /dev/null
+++ b/library/tzdata/America/Antigua
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Antigua) {
+ {-9223372036854775808 -14832 0 LMT}
+ {-1825098768 -18000 0 EST}
+ {-599598000 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Araguaina b/library/tzdata/America/Araguaina
new file mode 100644
index 0000000..e4a0d52
--- /dev/null
+++ b/library/tzdata/America/Araguaina
@@ -0,0 +1,60 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Araguaina) {
+ {-9223372036854775808 -11568 0 LMT}
+ {-1767214032 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-191365200 -7200 1 BRST}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {592974000 -7200 1 BRST}
+ {602042400 -10800 0 BRT}
+ {624423600 -7200 1 BRST}
+ {634701600 -10800 0 BRT}
+ {653536800 -10800 0 BRT}
+ {811047600 -10800 0 BRT}
+ {813726000 -7200 1 BRST}
+ {824004000 -10800 0 BRT}
+ {844570800 -7200 1 BRST}
+ {856058400 -10800 0 BRT}
+ {876106800 -7200 1 BRST}
+ {888717600 -10800 0 BRT}
+ {908074800 -7200 1 BRST}
+ {919562400 -10800 0 BRT}
+ {938919600 -7200 1 BRST}
+ {951616800 -10800 0 BRT}
+ {970974000 -7200 1 BRST}
+ {982461600 -10800 0 BRT}
+ {1003028400 -7200 1 BRST}
+ {1013911200 -10800 0 BRT}
+ {1036292400 -7200 1 BRST}
+ {1045360800 -10800 0 BRT}
+ {1064368800 -10800 0 BRT}
+ {1350788400 -7200 0 BRST}
+ {1361066400 -10800 0 BRT}
+ {1378000800 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires
new file mode 100644
index 0000000..73cc8e9
--- /dev/null
+++ b/library/tzdata/America/Argentina/Buenos_Aires
@@ -0,0 +1,67 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Buenos_Aires) {
+ {-9223372036854775808 -14028 0 LMT}
+ {-2372097972 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -10800 0 ART}
+ {687927600 -7200 1 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224385200 -7200 1 ARST}
+ {1237082400 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Catamarca b/library/tzdata/America/Argentina/Catamarca
new file mode 100644
index 0000000..7739203
--- /dev/null
+++ b/library/tzdata/America/Argentina/Catamarca
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Catamarca) {
+ {-9223372036854775808 -15788 0 LMT}
+ {-2372096212 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -14400 0 WART}
+ {687931200 -7200 0 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1086058800 -14400 0 WART}
+ {1087704000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/ComodRivadavia b/library/tzdata/America/Argentina/ComodRivadavia
new file mode 100644
index 0000000..2611a3d
--- /dev/null
+++ b/library/tzdata/America/Argentina/ComodRivadavia
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Catamarca)]} {
+ LoadTimeZoneFile America/Argentina/Catamarca
+}
+set TZData(:America/Argentina/ComodRivadavia) $TZData(:America/Argentina/Catamarca)
diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba
new file mode 100644
index 0000000..b08539e
--- /dev/null
+++ b/library/tzdata/America/Argentina/Cordoba
@@ -0,0 +1,67 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Cordoba) {
+ {-9223372036854775808 -15408 0 LMT}
+ {-2372096592 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -14400 0 WART}
+ {687931200 -7200 0 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224385200 -7200 1 ARST}
+ {1237082400 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Jujuy b/library/tzdata/America/Argentina/Jujuy
new file mode 100644
index 0000000..4f95f8a
--- /dev/null
+++ b/library/tzdata/America/Argentina/Jujuy
@@ -0,0 +1,67 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Jujuy) {
+ {-9223372036854775808 -15672 0 LMT}
+ {-2372096328 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -14400 0 WART}
+ {657086400 -10800 1 WARST}
+ {669178800 -14400 0 WART}
+ {686721600 -7200 1 ARST}
+ {694231200 -7200 0 ART}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/La_Rioja b/library/tzdata/America/Argentina/La_Rioja
new file mode 100644
index 0000000..835e29d
--- /dev/null
+++ b/library/tzdata/America/Argentina/La_Rioja
@@ -0,0 +1,69 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/La_Rioja) {
+ {-9223372036854775808 -16044 0 LMT}
+ {-2372095956 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667792800 -14400 0 WART}
+ {673588800 -10800 0 ART}
+ {687927600 -7200 1 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1086058800 -14400 0 WART}
+ {1087704000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Mendoza b/library/tzdata/America/Argentina/Mendoza
new file mode 100644
index 0000000..2c6fb58
--- /dev/null
+++ b/library/tzdata/America/Argentina/Mendoza
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Mendoza) {
+ {-9223372036854775808 -16516 0 LMT}
+ {-2372095484 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -14400 0 WART}
+ {655963200 -10800 1 WARST}
+ {667796400 -14400 0 WART}
+ {687499200 -10800 1 WARST}
+ {699418800 -14400 0 WART}
+ {719380800 -7200 0 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1085281200 -14400 0 WART}
+ {1096171200 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Rio_Gallegos b/library/tzdata/America/Argentina/Rio_Gallegos
new file mode 100644
index 0000000..91d37dd
--- /dev/null
+++ b/library/tzdata/America/Argentina/Rio_Gallegos
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Rio_Gallegos) {
+ {-9223372036854775808 -16612 0 LMT}
+ {-2372095388 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -10800 0 ART}
+ {687927600 -7200 1 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1086058800 -14400 0 WART}
+ {1087704000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Salta b/library/tzdata/America/Argentina/Salta
new file mode 100644
index 0000000..a5a7010
--- /dev/null
+++ b/library/tzdata/America/Argentina/Salta
@@ -0,0 +1,66 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Salta) {
+ {-9223372036854775808 -15700 0 LMT}
+ {-2372096300 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -14400 0 WART}
+ {687931200 -7200 0 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/San_Juan b/library/tzdata/America/Argentina/San_Juan
new file mode 100644
index 0000000..417e234
--- /dev/null
+++ b/library/tzdata/America/Argentina/San_Juan
@@ -0,0 +1,69 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/San_Juan) {
+ {-9223372036854775808 -16444 0 LMT}
+ {-2372095556 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667792800 -14400 0 WART}
+ {673588800 -10800 0 ART}
+ {687927600 -7200 1 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1085972400 -14400 0 WART}
+ {1090728000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis
new file mode 100644
index 0000000..8ca55d7
--- /dev/null
+++ b/library/tzdata/America/Argentina/San_Luis
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/San_Luis) {
+ {-9223372036854775808 -15924 0 LMT}
+ {-2372096076 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {631159200 -7200 1 ARST}
+ {637380000 -14400 0 WART}
+ {655963200 -10800 1 WARST}
+ {667796400 -14400 0 WART}
+ {675748800 -10800 0 ART}
+ {938919600 -10800 1 WARST}
+ {952052400 -10800 0 ART}
+ {1085972400 -14400 0 WART}
+ {1090728000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1200880800 -10800 0 WART}
+ {1205031600 -14400 0 WART}
+ {1223784000 -10800 1 WARST}
+ {1236481200 -14400 0 WART}
+ {1255233600 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman
new file mode 100644
index 0000000..3500986
--- /dev/null
+++ b/library/tzdata/America/Argentina/Tucuman
@@ -0,0 +1,69 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Tucuman) {
+ {-9223372036854775808 -15652 0 LMT}
+ {-2372096348 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -14400 0 WART}
+ {687931200 -7200 0 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1086058800 -14400 0 WART}
+ {1087099200 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224385200 -7200 1 ARST}
+ {1237082400 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Argentina/Ushuaia b/library/tzdata/America/Argentina/Ushuaia
new file mode 100644
index 0000000..4fcf92d
--- /dev/null
+++ b/library/tzdata/America/Argentina/Ushuaia
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Ushuaia) {
+ {-9223372036854775808 -16392 0 LMT}
+ {-2372095608 -15408 0 CMT}
+ {-1567453392 -14400 0 ART}
+ {-1233432000 -10800 0 ARST}
+ {-1222981200 -14400 0 ART}
+ {-1205956800 -10800 1 ARST}
+ {-1194037200 -14400 0 ART}
+ {-1172865600 -10800 1 ARST}
+ {-1162501200 -14400 0 ART}
+ {-1141329600 -10800 1 ARST}
+ {-1130965200 -14400 0 ART}
+ {-1109793600 -10800 1 ARST}
+ {-1099429200 -14400 0 ART}
+ {-1078257600 -10800 1 ARST}
+ {-1067806800 -14400 0 ART}
+ {-1046635200 -10800 1 ARST}
+ {-1036270800 -14400 0 ART}
+ {-1015099200 -10800 1 ARST}
+ {-1004734800 -14400 0 ART}
+ {-983563200 -10800 1 ARST}
+ {-973198800 -14400 0 ART}
+ {-952027200 -10800 1 ARST}
+ {-941576400 -14400 0 ART}
+ {-931032000 -10800 1 ARST}
+ {-900882000 -14400 0 ART}
+ {-890337600 -10800 1 ARST}
+ {-833749200 -14400 0 ART}
+ {-827265600 -10800 1 ARST}
+ {-752274000 -14400 0 ART}
+ {-733780800 -10800 1 ARST}
+ {-197326800 -14400 0 ART}
+ {-190843200 -10800 1 ARST}
+ {-184194000 -14400 0 ART}
+ {-164491200 -10800 1 ARST}
+ {-152658000 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {596948400 -7200 1 ARST}
+ {605066400 -10800 0 ART}
+ {624423600 -7200 1 ARST}
+ {636516000 -10800 0 ART}
+ {656478000 -7200 1 ARST}
+ {667965600 -10800 0 ART}
+ {687927600 -7200 1 ARST}
+ {699415200 -10800 0 ART}
+ {719377200 -7200 1 ARST}
+ {731469600 -10800 0 ART}
+ {938916000 -10800 0 ART}
+ {938919600 -10800 1 ARST}
+ {952056000 -10800 0 ART}
+ {1085886000 -14400 0 WART}
+ {1087704000 -10800 0 ART}
+ {1198983600 -7200 1 ARST}
+ {1205632800 -10800 0 ART}
+ {1224295200 -10800 0 ART}
+}
diff --git a/library/tzdata/America/Aruba b/library/tzdata/America/Aruba
new file mode 100644
index 0000000..e02d5fc
--- /dev/null
+++ b/library/tzdata/America/Aruba
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Curacao)]} {
+ LoadTimeZoneFile America/Curacao
+}
+set TZData(:America/Aruba) $TZData(:America/Curacao)
diff --git a/library/tzdata/America/Asuncion b/library/tzdata/America/Asuncion
new file mode 100644
index 0000000..9ea30da
--- /dev/null
+++ b/library/tzdata/America/Asuncion
@@ -0,0 +1,259 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Asuncion) {
+ {-9223372036854775808 -13840 0 LMT}
+ {-2524507760 -13840 0 AMT}
+ {-1206389360 -14400 0 PYT}
+ {86760000 -10800 0 PYT}
+ {134017200 -14400 0 PYT}
+ {162878400 -14400 0 PYT}
+ {181368000 -10800 1 PYST}
+ {194497200 -14400 0 PYT}
+ {212990400 -10800 1 PYST}
+ {226033200 -14400 0 PYT}
+ {244526400 -10800 1 PYST}
+ {257569200 -14400 0 PYT}
+ {276062400 -10800 1 PYST}
+ {291783600 -14400 0 PYT}
+ {307598400 -10800 1 PYST}
+ {323406000 -14400 0 PYT}
+ {339220800 -10800 1 PYST}
+ {354942000 -14400 0 PYT}
+ {370756800 -10800 1 PYST}
+ {386478000 -14400 0 PYT}
+ {402292800 -10800 1 PYST}
+ {418014000 -14400 0 PYT}
+ {433828800 -10800 1 PYST}
+ {449636400 -14400 0 PYT}
+ {465451200 -10800 1 PYST}
+ {481172400 -14400 0 PYT}
+ {496987200 -10800 1 PYST}
+ {512708400 -14400 0 PYT}
+ {528523200 -10800 1 PYST}
+ {544244400 -14400 0 PYT}
+ {560059200 -10800 1 PYST}
+ {575866800 -14400 0 PYT}
+ {591681600 -10800 1 PYST}
+ {607402800 -14400 0 PYT}
+ {625032000 -10800 1 PYST}
+ {638938800 -14400 0 PYT}
+ {654753600 -10800 1 PYST}
+ {670474800 -14400 0 PYT}
+ {686721600 -10800 1 PYST}
+ {699418800 -14400 0 PYT}
+ {718257600 -10800 1 PYST}
+ {733546800 -14400 0 PYT}
+ {749448000 -10800 1 PYST}
+ {762318000 -14400 0 PYT}
+ {780984000 -10800 1 PYST}
+ {793767600 -14400 0 PYT}
+ {812520000 -10800 1 PYST}
+ {825649200 -14400 0 PYT}
+ {844574400 -10800 1 PYST}
+ {856666800 -14400 0 PYT}
+ {876024000 -10800 1 PYST}
+ {888721200 -14400 0 PYT}
+ {907473600 -10800 1 PYST}
+ {920775600 -14400 0 PYT}
+ {938923200 -10800 1 PYST}
+ {952225200 -14400 0 PYT}
+ {970372800 -10800 1 PYST}
+ {983674800 -14400 0 PYT}
+ {1002427200 -10800 1 PYST}
+ {1018148400 -14400 0 PYT}
+ {1030852800 -10800 1 PYST}
+ {1049598000 -14400 0 PYT}
+ {1062907200 -10800 1 PYST}
+ {1081047600 -14400 0 PYT}
+ {1097985600 -10800 1 PYST}
+ {1110682800 -14400 0 PYT}
+ {1129435200 -10800 1 PYST}
+ {1142132400 -14400 0 PYT}
+ {1160884800 -10800 1 PYST}
+ {1173582000 -14400 0 PYT}
+ {1192939200 -10800 1 PYST}
+ {1205031600 -14400 0 PYT}
+ {1224388800 -10800 1 PYST}
+ {1236481200 -14400 0 PYT}
+ {1255838400 -10800 1 PYST}
+ {1270954800 -14400 0 PYT}
+ {1286078400 -10800 1 PYST}
+ {1302404400 -14400 0 PYT}
+ {1317528000 -10800 1 PYST}
+ {1333854000 -14400 0 PYT}
+ {1349582400 -10800 1 PYST}
+ {1364094000 -14400 0 PYT}
+ {1381032000 -10800 1 PYST}
+ {1395543600 -14400 0 PYT}
+ {1412481600 -10800 1 PYST}
+ {1426993200 -14400 0 PYT}
+ {1443931200 -10800 1 PYST}
+ {1459047600 -14400 0 PYT}
+ {1475380800 -10800 1 PYST}
+ {1490497200 -14400 0 PYT}
+ {1506830400 -10800 1 PYST}
+ {1521946800 -14400 0 PYT}
+ {1538884800 -10800 1 PYST}
+ {1553396400 -14400 0 PYT}
+ {1570334400 -10800 1 PYST}
+ {1584846000 -14400 0 PYT}
+ {1601784000 -10800 1 PYST}
+ {1616900400 -14400 0 PYT}
+ {1633233600 -10800 1 PYST}
+ {1648350000 -14400 0 PYT}
+ {1664683200 -10800 1 PYST}
+ {1679799600 -14400 0 PYT}
+ {1696132800 -10800 1 PYST}
+ {1711249200 -14400 0 PYT}
+ {1728187200 -10800 1 PYST}
+ {1742698800 -14400 0 PYT}
+ {1759636800 -10800 1 PYST}
+ {1774148400 -14400 0 PYT}
+ {1791086400 -10800 1 PYST}
+ {1806202800 -14400 0 PYT}
+ {1822536000 -10800 1 PYST}
+ {1837652400 -14400 0 PYT}
+ {1853985600 -10800 1 PYST}
+ {1869102000 -14400 0 PYT}
+ {1886040000 -10800 1 PYST}
+ {1900551600 -14400 0 PYT}
+ {1917489600 -10800 1 PYST}
+ {1932001200 -14400 0 PYT}
+ {1948939200 -10800 1 PYST}
+ {1964055600 -14400 0 PYT}
+ {1980388800 -10800 1 PYST}
+ {1995505200 -14400 0 PYT}
+ {2011838400 -10800 1 PYST}
+ {2026954800 -14400 0 PYT}
+ {2043288000 -10800 1 PYST}
+ {2058404400 -14400 0 PYT}
+ {2075342400 -10800 1 PYST}
+ {2089854000 -14400 0 PYT}
+ {2106792000 -10800 1 PYST}
+ {2121303600 -14400 0 PYT}
+ {2138241600 -10800 1 PYST}
+ {2153358000 -14400 0 PYT}
+ {2169691200 -10800 1 PYST}
+ {2184807600 -14400 0 PYT}
+ {2201140800 -10800 1 PYST}
+ {2216257200 -14400 0 PYT}
+ {2233195200 -10800 1 PYST}
+ {2247706800 -14400 0 PYT}
+ {2264644800 -10800 1 PYST}
+ {2279156400 -14400 0 PYT}
+ {2296094400 -10800 1 PYST}
+ {2310606000 -14400 0 PYT}
+ {2327544000 -10800 1 PYST}
+ {2342660400 -14400 0 PYT}
+ {2358993600 -10800 1 PYST}
+ {2374110000 -14400 0 PYT}
+ {2390443200 -10800 1 PYST}
+ {2405559600 -14400 0 PYT}
+ {2422497600 -10800 1 PYST}
+ {2437009200 -14400 0 PYT}
+ {2453947200 -10800 1 PYST}
+ {2468458800 -14400 0 PYT}
+ {2485396800 -10800 1 PYST}
+ {2500513200 -14400 0 PYT}
+ {2516846400 -10800 1 PYST}
+ {2531962800 -14400 0 PYT}
+ {2548296000 -10800 1 PYST}
+ {2563412400 -14400 0 PYT}
+ {2579745600 -10800 1 PYST}
+ {2594862000 -14400 0 PYT}
+ {2611800000 -10800 1 PYST}
+ {2626311600 -14400 0 PYT}
+ {2643249600 -10800 1 PYST}
+ {2657761200 -14400 0 PYT}
+ {2674699200 -10800 1 PYST}
+ {2689815600 -14400 0 PYT}
+ {2706148800 -10800 1 PYST}
+ {2721265200 -14400 0 PYT}
+ {2737598400 -10800 1 PYST}
+ {2752714800 -14400 0 PYT}
+ {2769652800 -10800 1 PYST}
+ {2784164400 -14400 0 PYT}
+ {2801102400 -10800 1 PYST}
+ {2815614000 -14400 0 PYT}
+ {2832552000 -10800 1 PYST}
+ {2847668400 -14400 0 PYT}
+ {2864001600 -10800 1 PYST}
+ {2879118000 -14400 0 PYT}
+ {2895451200 -10800 1 PYST}
+ {2910567600 -14400 0 PYT}
+ {2926900800 -10800 1 PYST}
+ {2942017200 -14400 0 PYT}
+ {2958955200 -10800 1 PYST}
+ {2973466800 -14400 0 PYT}
+ {2990404800 -10800 1 PYST}
+ {3004916400 -14400 0 PYT}
+ {3021854400 -10800 1 PYST}
+ {3036970800 -14400 0 PYT}
+ {3053304000 -10800 1 PYST}
+ {3068420400 -14400 0 PYT}
+ {3084753600 -10800 1 PYST}
+ {3099870000 -14400 0 PYT}
+ {3116808000 -10800 1 PYST}
+ {3131319600 -14400 0 PYT}
+ {3148257600 -10800 1 PYST}
+ {3162769200 -14400 0 PYT}
+ {3179707200 -10800 1 PYST}
+ {3194218800 -14400 0 PYT}
+ {3211156800 -10800 1 PYST}
+ {3226273200 -14400 0 PYT}
+ {3242606400 -10800 1 PYST}
+ {3257722800 -14400 0 PYT}
+ {3274056000 -10800 1 PYST}
+ {3289172400 -14400 0 PYT}
+ {3306110400 -10800 1 PYST}
+ {3320622000 -14400 0 PYT}
+ {3337560000 -10800 1 PYST}
+ {3352071600 -14400 0 PYT}
+ {3369009600 -10800 1 PYST}
+ {3384126000 -14400 0 PYT}
+ {3400459200 -10800 1 PYST}
+ {3415575600 -14400 0 PYT}
+ {3431908800 -10800 1 PYST}
+ {3447025200 -14400 0 PYT}
+ {3463358400 -10800 1 PYST}
+ {3478474800 -14400 0 PYT}
+ {3495412800 -10800 1 PYST}
+ {3509924400 -14400 0 PYT}
+ {3526862400 -10800 1 PYST}
+ {3541374000 -14400 0 PYT}
+ {3558312000 -10800 1 PYST}
+ {3573428400 -14400 0 PYT}
+ {3589761600 -10800 1 PYST}
+ {3604878000 -14400 0 PYT}
+ {3621211200 -10800 1 PYST}
+ {3636327600 -14400 0 PYT}
+ {3653265600 -10800 1 PYST}
+ {3667777200 -14400 0 PYT}
+ {3684715200 -10800 1 PYST}
+ {3699226800 -14400 0 PYT}
+ {3716164800 -10800 1 PYST}
+ {3731281200 -14400 0 PYT}
+ {3747614400 -10800 1 PYST}
+ {3762730800 -14400 0 PYT}
+ {3779064000 -10800 1 PYST}
+ {3794180400 -14400 0 PYT}
+ {3810513600 -10800 1 PYST}
+ {3825630000 -14400 0 PYT}
+ {3842568000 -10800 1 PYST}
+ {3857079600 -14400 0 PYT}
+ {3874017600 -10800 1 PYST}
+ {3888529200 -14400 0 PYT}
+ {3905467200 -10800 1 PYST}
+ {3920583600 -14400 0 PYT}
+ {3936916800 -10800 1 PYST}
+ {3952033200 -14400 0 PYT}
+ {3968366400 -10800 1 PYST}
+ {3983482800 -14400 0 PYT}
+ {4000420800 -10800 1 PYST}
+ {4014932400 -14400 0 PYT}
+ {4031870400 -10800 1 PYST}
+ {4046382000 -14400 0 PYT}
+ {4063320000 -10800 1 PYST}
+ {4077831600 -14400 0 PYT}
+ {4094769600 -10800 1 PYST}
+}
diff --git a/library/tzdata/America/Atikokan b/library/tzdata/America/Atikokan
new file mode 100644
index 0000000..e72b04f
--- /dev/null
+++ b/library/tzdata/America/Atikokan
@@ -0,0 +1,12 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Atikokan) {
+ {-9223372036854775808 -21988 0 LMT}
+ {-2366733212 -21600 0 CST}
+ {-1632067200 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-923248800 -18000 1 CDT}
+ {-880214400 -18000 0 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765388800 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Atka b/library/tzdata/America/Atka
new file mode 100644
index 0000000..8da3302
--- /dev/null
+++ b/library/tzdata/America/Atka
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Adak)]} {
+ LoadTimeZoneFile America/Adak
+}
+set TZData(:America/Atka) $TZData(:America/Adak)
diff --git a/library/tzdata/America/Bahia b/library/tzdata/America/Bahia
new file mode 100644
index 0000000..ac67b71
--- /dev/null
+++ b/library/tzdata/America/Bahia
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Bahia) {
+ {-9223372036854775808 -9244 0 LMT}
+ {-1767216356 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-191365200 -7200 1 BRST}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {592974000 -7200 1 BRST}
+ {602042400 -10800 0 BRT}
+ {624423600 -7200 1 BRST}
+ {634701600 -10800 0 BRT}
+ {656478000 -7200 1 BRST}
+ {666756000 -10800 0 BRT}
+ {687927600 -7200 1 BRST}
+ {697600800 -10800 0 BRT}
+ {719982000 -7200 1 BRST}
+ {728445600 -10800 0 BRT}
+ {750826800 -7200 1 BRST}
+ {761709600 -10800 0 BRT}
+ {782276400 -7200 1 BRST}
+ {793159200 -10800 0 BRT}
+ {813726000 -7200 1 BRST}
+ {824004000 -10800 0 BRT}
+ {844570800 -7200 1 BRST}
+ {856058400 -10800 0 BRT}
+ {876106800 -7200 1 BRST}
+ {888717600 -10800 0 BRT}
+ {908074800 -7200 1 BRST}
+ {919562400 -10800 0 BRT}
+ {938919600 -7200 1 BRST}
+ {951616800 -10800 0 BRT}
+ {970974000 -7200 1 BRST}
+ {982461600 -10800 0 BRT}
+ {1003028400 -7200 1 BRST}
+ {1013911200 -10800 0 BRT}
+ {1036292400 -7200 1 BRST}
+ {1045360800 -10800 0 BRT}
+ {1064368800 -10800 0 BRT}
+ {1318734000 -7200 0 BRST}
+ {1330221600 -10800 0 BRT}
+ {1350784800 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Bahia_Banderas b/library/tzdata/America/Bahia_Banderas
new file mode 100644
index 0000000..8c40a0e
--- /dev/null
+++ b/library/tzdata/America/Bahia_Banderas
@@ -0,0 +1,222 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Bahia_Banderas) {
+ {-9223372036854775808 -25260 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {-873828000 -25200 0 MST}
+ {-661539600 -28800 0 PST}
+ {28800 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {989139600 -21600 1 MDT}
+ {1001836800 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1175418000 -21600 1 MDT}
+ {1193558400 -25200 0 MST}
+ {1207472400 -21600 1 MDT}
+ {1225008000 -25200 0 MST}
+ {1238922000 -21600 1 MDT}
+ {1256457600 -25200 0 MST}
+ {1270371600 -18000 0 CDT}
+ {1288508400 -21600 0 CST}
+ {1301817600 -18000 1 CDT}
+ {1319958000 -21600 0 CST}
+ {1333267200 -18000 1 CDT}
+ {1351407600 -21600 0 CST}
+ {1365321600 -18000 1 CDT}
+ {1382857200 -21600 0 CST}
+ {1396771200 -18000 1 CDT}
+ {1414306800 -21600 0 CST}
+ {1428220800 -18000 1 CDT}
+ {1445756400 -21600 0 CST}
+ {1459670400 -18000 1 CDT}
+ {1477810800 -21600 0 CST}
+ {1491120000 -18000 1 CDT}
+ {1509260400 -21600 0 CST}
+ {1522569600 -18000 1 CDT}
+ {1540710000 -21600 0 CST}
+ {1554624000 -18000 1 CDT}
+ {1572159600 -21600 0 CST}
+ {1586073600 -18000 1 CDT}
+ {1603609200 -21600 0 CST}
+ {1617523200 -18000 1 CDT}
+ {1635663600 -21600 0 CST}
+ {1648972800 -18000 1 CDT}
+ {1667113200 -21600 0 CST}
+ {1680422400 -18000 1 CDT}
+ {1698562800 -21600 0 CST}
+ {1712476800 -18000 1 CDT}
+ {1730012400 -21600 0 CST}
+ {1743926400 -18000 1 CDT}
+ {1761462000 -21600 0 CST}
+ {1775376000 -18000 1 CDT}
+ {1792911600 -21600 0 CST}
+ {1806825600 -18000 1 CDT}
+ {1824966000 -21600 0 CST}
+ {1838275200 -18000 1 CDT}
+ {1856415600 -21600 0 CST}
+ {1869724800 -18000 1 CDT}
+ {1887865200 -21600 0 CST}
+ {1901779200 -18000 1 CDT}
+ {1919314800 -21600 0 CST}
+ {1933228800 -18000 1 CDT}
+ {1950764400 -21600 0 CST}
+ {1964678400 -18000 1 CDT}
+ {1982818800 -21600 0 CST}
+ {1996128000 -18000 1 CDT}
+ {2014268400 -21600 0 CST}
+ {2027577600 -18000 1 CDT}
+ {2045718000 -21600 0 CST}
+ {2059027200 -18000 1 CDT}
+ {2077167600 -21600 0 CST}
+ {2091081600 -18000 1 CDT}
+ {2108617200 -21600 0 CST}
+ {2122531200 -18000 1 CDT}
+ {2140066800 -21600 0 CST}
+ {2153980800 -18000 1 CDT}
+ {2172121200 -21600 0 CST}
+ {2185430400 -18000 1 CDT}
+ {2203570800 -21600 0 CST}
+ {2216880000 -18000 1 CDT}
+ {2235020400 -21600 0 CST}
+ {2248934400 -18000 1 CDT}
+ {2266470000 -21600 0 CST}
+ {2280384000 -18000 1 CDT}
+ {2297919600 -21600 0 CST}
+ {2311833600 -18000 1 CDT}
+ {2329369200 -21600 0 CST}
+ {2343283200 -18000 1 CDT}
+ {2361423600 -21600 0 CST}
+ {2374732800 -18000 1 CDT}
+ {2392873200 -21600 0 CST}
+ {2406182400 -18000 1 CDT}
+ {2424322800 -21600 0 CST}
+ {2438236800 -18000 1 CDT}
+ {2455772400 -21600 0 CST}
+ {2469686400 -18000 1 CDT}
+ {2487222000 -21600 0 CST}
+ {2501136000 -18000 1 CDT}
+ {2519276400 -21600 0 CST}
+ {2532585600 -18000 1 CDT}
+ {2550726000 -21600 0 CST}
+ {2564035200 -18000 1 CDT}
+ {2582175600 -21600 0 CST}
+ {2596089600 -18000 1 CDT}
+ {2613625200 -21600 0 CST}
+ {2627539200 -18000 1 CDT}
+ {2645074800 -21600 0 CST}
+ {2658988800 -18000 1 CDT}
+ {2676524400 -21600 0 CST}
+ {2690438400 -18000 1 CDT}
+ {2708578800 -21600 0 CST}
+ {2721888000 -18000 1 CDT}
+ {2740028400 -21600 0 CST}
+ {2753337600 -18000 1 CDT}
+ {2771478000 -21600 0 CST}
+ {2785392000 -18000 1 CDT}
+ {2802927600 -21600 0 CST}
+ {2816841600 -18000 1 CDT}
+ {2834377200 -21600 0 CST}
+ {2848291200 -18000 1 CDT}
+ {2866431600 -21600 0 CST}
+ {2879740800 -18000 1 CDT}
+ {2897881200 -21600 0 CST}
+ {2911190400 -18000 1 CDT}
+ {2929330800 -21600 0 CST}
+ {2942640000 -18000 1 CDT}
+ {2960780400 -21600 0 CST}
+ {2974694400 -18000 1 CDT}
+ {2992230000 -21600 0 CST}
+ {3006144000 -18000 1 CDT}
+ {3023679600 -21600 0 CST}
+ {3037593600 -18000 1 CDT}
+ {3055734000 -21600 0 CST}
+ {3069043200 -18000 1 CDT}
+ {3087183600 -21600 0 CST}
+ {3100492800 -18000 1 CDT}
+ {3118633200 -21600 0 CST}
+ {3132547200 -18000 1 CDT}
+ {3150082800 -21600 0 CST}
+ {3163996800 -18000 1 CDT}
+ {3181532400 -21600 0 CST}
+ {3195446400 -18000 1 CDT}
+ {3212982000 -21600 0 CST}
+ {3226896000 -18000 1 CDT}
+ {3245036400 -21600 0 CST}
+ {3258345600 -18000 1 CDT}
+ {3276486000 -21600 0 CST}
+ {3289795200 -18000 1 CDT}
+ {3307935600 -21600 0 CST}
+ {3321849600 -18000 1 CDT}
+ {3339385200 -21600 0 CST}
+ {3353299200 -18000 1 CDT}
+ {3370834800 -21600 0 CST}
+ {3384748800 -18000 1 CDT}
+ {3402889200 -21600 0 CST}
+ {3416198400 -18000 1 CDT}
+ {3434338800 -21600 0 CST}
+ {3447648000 -18000 1 CDT}
+ {3465788400 -21600 0 CST}
+ {3479702400 -18000 1 CDT}
+ {3497238000 -21600 0 CST}
+ {3511152000 -18000 1 CDT}
+ {3528687600 -21600 0 CST}
+ {3542601600 -18000 1 CDT}
+ {3560137200 -21600 0 CST}
+ {3574051200 -18000 1 CDT}
+ {3592191600 -21600 0 CST}
+ {3605500800 -18000 1 CDT}
+ {3623641200 -21600 0 CST}
+ {3636950400 -18000 1 CDT}
+ {3655090800 -21600 0 CST}
+ {3669004800 -18000 1 CDT}
+ {3686540400 -21600 0 CST}
+ {3700454400 -18000 1 CDT}
+ {3717990000 -21600 0 CST}
+ {3731904000 -18000 1 CDT}
+ {3750044400 -21600 0 CST}
+ {3763353600 -18000 1 CDT}
+ {3781494000 -21600 0 CST}
+ {3794803200 -18000 1 CDT}
+ {3812943600 -21600 0 CST}
+ {3826252800 -18000 1 CDT}
+ {3844393200 -21600 0 CST}
+ {3858307200 -18000 1 CDT}
+ {3875842800 -21600 0 CST}
+ {3889756800 -18000 1 CDT}
+ {3907292400 -21600 0 CST}
+ {3921206400 -18000 1 CDT}
+ {3939346800 -21600 0 CST}
+ {3952656000 -18000 1 CDT}
+ {3970796400 -21600 0 CST}
+ {3984105600 -18000 1 CDT}
+ {4002246000 -21600 0 CST}
+ {4016160000 -18000 1 CDT}
+ {4033695600 -21600 0 CST}
+ {4047609600 -18000 1 CDT}
+ {4065145200 -21600 0 CST}
+ {4079059200 -18000 1 CDT}
+ {4096594800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Barbados b/library/tzdata/America/Barbados
new file mode 100644
index 0000000..ea17073
--- /dev/null
+++ b/library/tzdata/America/Barbados
@@ -0,0 +1,15 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Barbados) {
+ {-9223372036854775808 -14309 0 LMT}
+ {-1451678491 -14309 0 BMT}
+ {-1199217691 -14400 0 AST}
+ {234943200 -10800 1 ADT}
+ {244616400 -14400 0 AST}
+ {261554400 -10800 1 ADT}
+ {276066000 -14400 0 AST}
+ {293004000 -10800 1 ADT}
+ {307515600 -14400 0 AST}
+ {325058400 -10800 1 ADT}
+ {338706000 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Belem b/library/tzdata/America/Belem
new file mode 100644
index 0000000..ed92fd1
--- /dev/null
+++ b/library/tzdata/America/Belem
@@ -0,0 +1,35 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Belem) {
+ {-9223372036854775808 -11636 0 LMT}
+ {-1767213964 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-191365200 -7200 1 BRST}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {590032800 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Belize b/library/tzdata/America/Belize
new file mode 100644
index 0000000..547fd72
--- /dev/null
+++ b/library/tzdata/America/Belize
@@ -0,0 +1,60 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Belize) {
+ {-9223372036854775808 -21168 0 LMT}
+ {-1822500432 -21600 0 CST}
+ {-1616954400 -19800 1 CHDT}
+ {-1606069800 -21600 0 CST}
+ {-1585504800 -19800 1 CHDT}
+ {-1574015400 -21600 0 CST}
+ {-1554055200 -19800 1 CHDT}
+ {-1542565800 -21600 0 CST}
+ {-1522605600 -19800 1 CHDT}
+ {-1511116200 -21600 0 CST}
+ {-1490551200 -19800 1 CHDT}
+ {-1479666600 -21600 0 CST}
+ {-1459101600 -19800 1 CHDT}
+ {-1448217000 -21600 0 CST}
+ {-1427652000 -19800 1 CHDT}
+ {-1416162600 -21600 0 CST}
+ {-1396202400 -19800 1 CHDT}
+ {-1384713000 -21600 0 CST}
+ {-1364752800 -19800 1 CHDT}
+ {-1353263400 -21600 0 CST}
+ {-1333303200 -19800 1 CHDT}
+ {-1321813800 -21600 0 CST}
+ {-1301248800 -19800 1 CHDT}
+ {-1290364200 -21600 0 CST}
+ {-1269799200 -19800 1 CHDT}
+ {-1258914600 -21600 0 CST}
+ {-1238349600 -19800 1 CHDT}
+ {-1226860200 -21600 0 CST}
+ {-1206900000 -19800 1 CHDT}
+ {-1195410600 -21600 0 CST}
+ {-1175450400 -19800 1 CHDT}
+ {-1163961000 -21600 0 CST}
+ {-1143396000 -19800 1 CHDT}
+ {-1132511400 -21600 0 CST}
+ {-1111946400 -19800 1 CHDT}
+ {-1101061800 -21600 0 CST}
+ {-1080496800 -19800 1 CHDT}
+ {-1069612200 -21600 0 CST}
+ {-1049047200 -19800 1 CHDT}
+ {-1037557800 -21600 0 CST}
+ {-1017597600 -19800 1 CHDT}
+ {-1006108200 -21600 0 CST}
+ {-986148000 -19800 1 CHDT}
+ {-974658600 -21600 0 CST}
+ {-954093600 -19800 1 CHDT}
+ {-943209000 -21600 0 CST}
+ {-922644000 -19800 1 CHDT}
+ {-911759400 -21600 0 CST}
+ {-891194400 -19800 1 CHDT}
+ {-879705000 -21600 0 CST}
+ {-859744800 -19800 1 CHDT}
+ {-848255400 -21600 0 CST}
+ {123919200 -18000 1 CDT}
+ {129618000 -21600 0 CST}
+ {409039200 -18000 1 CDT}
+ {413874000 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Blanc-Sablon b/library/tzdata/America/Blanc-Sablon
new file mode 100644
index 0000000..d5485e8
--- /dev/null
+++ b/library/tzdata/America/Blanc-Sablon
@@ -0,0 +1,12 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Blanc-Sablon) {
+ {-9223372036854775808 -13708 0 LMT}
+ {-2713896692 -14400 0 AST}
+ {-1632074400 -10800 1 ADT}
+ {-1615143600 -14400 0 AST}
+ {-880221600 -10800 1 AWT}
+ {-769395600 -10800 1 APT}
+ {-765399600 -14400 0 AST}
+ {14400 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Boa_Vista b/library/tzdata/America/Boa_Vista
new file mode 100644
index 0000000..c85bc27
--- /dev/null
+++ b/library/tzdata/America/Boa_Vista
@@ -0,0 +1,40 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Boa_Vista) {
+ {-9223372036854775808 -14560 0 LMT}
+ {-1767211040 -14400 0 AMT}
+ {-1206954000 -10800 1 AMST}
+ {-1191358800 -14400 0 AMT}
+ {-1175371200 -10800 1 AMST}
+ {-1159822800 -14400 0 AMT}
+ {-633816000 -10800 1 AMST}
+ {-622065600 -14400 0 AMT}
+ {-602280000 -10800 1 AMST}
+ {-591829200 -14400 0 AMT}
+ {-570744000 -10800 1 AMST}
+ {-560206800 -14400 0 AMT}
+ {-539121600 -10800 1 AMST}
+ {-531349200 -14400 0 AMT}
+ {-191361600 -10800 1 AMST}
+ {-184194000 -14400 0 AMT}
+ {-155160000 -10800 1 AMST}
+ {-150066000 -14400 0 AMT}
+ {-128894400 -10800 1 AMST}
+ {-121122000 -14400 0 AMT}
+ {-99950400 -10800 1 AMST}
+ {-89586000 -14400 0 AMT}
+ {-68414400 -10800 1 AMST}
+ {-57963600 -14400 0 AMT}
+ {499752000 -10800 1 AMST}
+ {511239600 -14400 0 AMT}
+ {530596800 -10800 1 AMST}
+ {540270000 -14400 0 AMT}
+ {562132800 -10800 1 AMST}
+ {571201200 -14400 0 AMT}
+ {590036400 -14400 0 AMT}
+ {938664000 -14400 0 AMT}
+ {938923200 -10800 1 AMST}
+ {951620400 -14400 0 AMT}
+ {970977600 -10800 1 AMST}
+ {971578800 -14400 0 AMT}
+}
diff --git a/library/tzdata/America/Bogota b/library/tzdata/America/Bogota
new file mode 100644
index 0000000..b28abc1
--- /dev/null
+++ b/library/tzdata/America/Bogota
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Bogota) {
+ {-9223372036854775808 -17776 0 LMT}
+ {-2707671824 -17776 0 BMT}
+ {-1739041424 -18000 0 COT}
+ {704869200 -14400 1 COST}
+ {733896000 -18000 0 COT}
+}
diff --git a/library/tzdata/America/Boise b/library/tzdata/America/Boise
new file mode 100644
index 0000000..62b22a0
--- /dev/null
+++ b/library/tzdata/America/Boise
@@ -0,0 +1,281 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Boise) {
+ {-9223372036854775808 -27889 0 LMT}
+ {-2717640000 -28800 0 PST}
+ {-1633269600 -25200 1 PDT}
+ {-1615129200 -28800 0 PST}
+ {-1601820000 -25200 1 PDT}
+ {-1583679600 -28800 0 PST}
+ {-1471788000 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126255600 -25200 0 MST}
+ {129114000 -21600 0 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Buenos_Aires b/library/tzdata/America/Buenos_Aires
new file mode 100644
index 0000000..1389195
--- /dev/null
+++ b/library/tzdata/America/Buenos_Aires
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Buenos_Aires)]} {
+ LoadTimeZoneFile America/Argentina/Buenos_Aires
+}
+set TZData(:America/Buenos_Aires) $TZData(:America/Argentina/Buenos_Aires)
diff --git a/library/tzdata/America/Cambridge_Bay b/library/tzdata/America/Cambridge_Bay
new file mode 100644
index 0000000..23004bb
--- /dev/null
+++ b/library/tzdata/America/Cambridge_Bay
@@ -0,0 +1,252 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Cambridge_Bay) {
+ {-9223372036854775808 0 0 zzz}
+ {-1577923200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-147891600 -18000 1 MDDT}
+ {-131562000 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941360400 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -18000 0 EST}
+ {973400400 -21600 0 CST}
+ {986115600 -21600 0 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Campo_Grande b/library/tzdata/America/Campo_Grande
new file mode 100644
index 0000000..2cafe14
--- /dev/null
+++ b/library/tzdata/America/Campo_Grande
@@ -0,0 +1,257 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Campo_Grande) {
+ {-9223372036854775808 -13108 0 LMT}
+ {-1767212492 -14400 0 AMT}
+ {-1206954000 -10800 1 AMST}
+ {-1191358800 -14400 0 AMT}
+ {-1175371200 -10800 1 AMST}
+ {-1159822800 -14400 0 AMT}
+ {-633816000 -10800 1 AMST}
+ {-622065600 -14400 0 AMT}
+ {-602280000 -10800 1 AMST}
+ {-591829200 -14400 0 AMT}
+ {-570744000 -10800 1 AMST}
+ {-560206800 -14400 0 AMT}
+ {-539121600 -10800 1 AMST}
+ {-531349200 -14400 0 AMT}
+ {-191361600 -10800 1 AMST}
+ {-184194000 -14400 0 AMT}
+ {-155160000 -10800 1 AMST}
+ {-150066000 -14400 0 AMT}
+ {-128894400 -10800 1 AMST}
+ {-121122000 -14400 0 AMT}
+ {-99950400 -10800 1 AMST}
+ {-89586000 -14400 0 AMT}
+ {-68414400 -10800 1 AMST}
+ {-57963600 -14400 0 AMT}
+ {499752000 -10800 1 AMST}
+ {511239600 -14400 0 AMT}
+ {530596800 -10800 1 AMST}
+ {540270000 -14400 0 AMT}
+ {562132800 -10800 1 AMST}
+ {571201200 -14400 0 AMT}
+ {592977600 -10800 1 AMST}
+ {602046000 -14400 0 AMT}
+ {624427200 -10800 1 AMST}
+ {634705200 -14400 0 AMT}
+ {656481600 -10800 1 AMST}
+ {666759600 -14400 0 AMT}
+ {687931200 -10800 1 AMST}
+ {697604400 -14400 0 AMT}
+ {719985600 -10800 1 AMST}
+ {728449200 -14400 0 AMT}
+ {750830400 -10800 1 AMST}
+ {761713200 -14400 0 AMT}
+ {782280000 -10800 1 AMST}
+ {793162800 -14400 0 AMT}
+ {813729600 -10800 1 AMST}
+ {824007600 -14400 0 AMT}
+ {844574400 -10800 1 AMST}
+ {856062000 -14400 0 AMT}
+ {876110400 -10800 1 AMST}
+ {888721200 -14400 0 AMT}
+ {908078400 -10800 1 AMST}
+ {919566000 -14400 0 AMT}
+ {938923200 -10800 1 AMST}
+ {951620400 -14400 0 AMT}
+ {970977600 -10800 1 AMST}
+ {982465200 -14400 0 AMT}
+ {1003032000 -10800 1 AMST}
+ {1013914800 -14400 0 AMT}
+ {1036296000 -10800 1 AMST}
+ {1045364400 -14400 0 AMT}
+ {1066536000 -10800 1 AMST}
+ {1076814000 -14400 0 AMT}
+ {1099368000 -10800 1 AMST}
+ {1108868400 -14400 0 AMT}
+ {1129435200 -10800 1 AMST}
+ {1140318000 -14400 0 AMT}
+ {1162699200 -10800 1 AMST}
+ {1172372400 -14400 0 AMT}
+ {1192334400 -10800 1 AMST}
+ {1203217200 -14400 0 AMT}
+ {1224388800 -10800 1 AMST}
+ {1234666800 -14400 0 AMT}
+ {1255838400 -10800 1 AMST}
+ {1266721200 -14400 0 AMT}
+ {1287288000 -10800 1 AMST}
+ {1298170800 -14400 0 AMT}
+ {1318737600 -10800 1 AMST}
+ {1330225200 -14400 0 AMT}
+ {1350792000 -10800 1 AMST}
+ {1361070000 -14400 0 AMT}
+ {1382241600 -10800 1 AMST}
+ {1392519600 -14400 0 AMT}
+ {1413691200 -10800 1 AMST}
+ {1424574000 -14400 0 AMT}
+ {1445140800 -10800 1 AMST}
+ {1456023600 -14400 0 AMT}
+ {1476590400 -10800 1 AMST}
+ {1487473200 -14400 0 AMT}
+ {1508040000 -10800 1 AMST}
+ {1518922800 -14400 0 AMT}
+ {1540094400 -10800 1 AMST}
+ {1550372400 -14400 0 AMT}
+ {1571544000 -10800 1 AMST}
+ {1581822000 -14400 0 AMT}
+ {1602993600 -10800 1 AMST}
+ {1613876400 -14400 0 AMT}
+ {1634443200 -10800 1 AMST}
+ {1645326000 -14400 0 AMT}
+ {1665892800 -10800 1 AMST}
+ {1677380400 -14400 0 AMT}
+ {1697342400 -10800 1 AMST}
+ {1708225200 -14400 0 AMT}
+ {1729396800 -10800 1 AMST}
+ {1739674800 -14400 0 AMT}
+ {1760846400 -10800 1 AMST}
+ {1771729200 -14400 0 AMT}
+ {1792296000 -10800 1 AMST}
+ {1803178800 -14400 0 AMT}
+ {1823745600 -10800 1 AMST}
+ {1834628400 -14400 0 AMT}
+ {1855195200 -10800 1 AMST}
+ {1866078000 -14400 0 AMT}
+ {1887249600 -10800 1 AMST}
+ {1897527600 -14400 0 AMT}
+ {1918699200 -10800 1 AMST}
+ {1928977200 -14400 0 AMT}
+ {1950148800 -10800 1 AMST}
+ {1960426800 -14400 0 AMT}
+ {1981598400 -10800 1 AMST}
+ {1992481200 -14400 0 AMT}
+ {2013048000 -10800 1 AMST}
+ {2024535600 -14400 0 AMT}
+ {2044497600 -10800 1 AMST}
+ {2055380400 -14400 0 AMT}
+ {2076552000 -10800 1 AMST}
+ {2086830000 -14400 0 AMT}
+ {2108001600 -10800 1 AMST}
+ {2118884400 -14400 0 AMT}
+ {2139451200 -10800 1 AMST}
+ {2150334000 -14400 0 AMT}
+ {2170900800 -10800 1 AMST}
+ {2181783600 -14400 0 AMT}
+ {2202350400 -10800 1 AMST}
+ {2213233200 -14400 0 AMT}
+ {2234404800 -10800 1 AMST}
+ {2244682800 -14400 0 AMT}
+ {2265854400 -10800 1 AMST}
+ {2276132400 -14400 0 AMT}
+ {2297304000 -10800 1 AMST}
+ {2307582000 -14400 0 AMT}
+ {2328753600 -10800 1 AMST}
+ {2339636400 -14400 0 AMT}
+ {2360203200 -10800 1 AMST}
+ {2371086000 -14400 0 AMT}
+ {2391652800 -10800 1 AMST}
+ {2402535600 -14400 0 AMT}
+ {2423707200 -10800 1 AMST}
+ {2433985200 -14400 0 AMT}
+ {2455156800 -10800 1 AMST}
+ {2465434800 -14400 0 AMT}
+ {2486606400 -10800 1 AMST}
+ {2497489200 -14400 0 AMT}
+ {2518056000 -10800 1 AMST}
+ {2528938800 -14400 0 AMT}
+ {2549505600 -10800 1 AMST}
+ {2560388400 -14400 0 AMT}
+ {2580955200 -10800 1 AMST}
+ {2591838000 -14400 0 AMT}
+ {2613009600 -10800 1 AMST}
+ {2623287600 -14400 0 AMT}
+ {2644459200 -10800 1 AMST}
+ {2654737200 -14400 0 AMT}
+ {2675908800 -10800 1 AMST}
+ {2686791600 -14400 0 AMT}
+ {2707358400 -10800 1 AMST}
+ {2718241200 -14400 0 AMT}
+ {2738808000 -10800 1 AMST}
+ {2749690800 -14400 0 AMT}
+ {2770862400 -10800 1 AMST}
+ {2781140400 -14400 0 AMT}
+ {2802312000 -10800 1 AMST}
+ {2812590000 -14400 0 AMT}
+ {2833761600 -10800 1 AMST}
+ {2844039600 -14400 0 AMT}
+ {2865211200 -10800 1 AMST}
+ {2876094000 -14400 0 AMT}
+ {2896660800 -10800 1 AMST}
+ {2907543600 -14400 0 AMT}
+ {2928110400 -10800 1 AMST}
+ {2938993200 -14400 0 AMT}
+ {2960164800 -10800 1 AMST}
+ {2970442800 -14400 0 AMT}
+ {2991614400 -10800 1 AMST}
+ {3001892400 -14400 0 AMT}
+ {3023064000 -10800 1 AMST}
+ {3033946800 -14400 0 AMT}
+ {3054513600 -10800 1 AMST}
+ {3065396400 -14400 0 AMT}
+ {3085963200 -10800 1 AMST}
+ {3096846000 -14400 0 AMT}
+ {3118017600 -10800 1 AMST}
+ {3128295600 -14400 0 AMT}
+ {3149467200 -10800 1 AMST}
+ {3159745200 -14400 0 AMT}
+ {3180916800 -10800 1 AMST}
+ {3191194800 -14400 0 AMT}
+ {3212366400 -10800 1 AMST}
+ {3223249200 -14400 0 AMT}
+ {3243816000 -10800 1 AMST}
+ {3254698800 -14400 0 AMT}
+ {3275265600 -10800 1 AMST}
+ {3286148400 -14400 0 AMT}
+ {3307320000 -10800 1 AMST}
+ {3317598000 -14400 0 AMT}
+ {3338769600 -10800 1 AMST}
+ {3349047600 -14400 0 AMT}
+ {3370219200 -10800 1 AMST}
+ {3381102000 -14400 0 AMT}
+ {3401668800 -10800 1 AMST}
+ {3412551600 -14400 0 AMT}
+ {3433118400 -10800 1 AMST}
+ {3444001200 -14400 0 AMT}
+ {3464568000 -10800 1 AMST}
+ {3475450800 -14400 0 AMT}
+ {3496622400 -10800 1 AMST}
+ {3506900400 -14400 0 AMT}
+ {3528072000 -10800 1 AMST}
+ {3538350000 -14400 0 AMT}
+ {3559521600 -10800 1 AMST}
+ {3570404400 -14400 0 AMT}
+ {3590971200 -10800 1 AMST}
+ {3601854000 -14400 0 AMT}
+ {3622420800 -10800 1 AMST}
+ {3633303600 -14400 0 AMT}
+ {3654475200 -10800 1 AMST}
+ {3664753200 -14400 0 AMT}
+ {3685924800 -10800 1 AMST}
+ {3696202800 -14400 0 AMT}
+ {3717374400 -10800 1 AMST}
+ {3727652400 -14400 0 AMT}
+ {3748824000 -10800 1 AMST}
+ {3759706800 -14400 0 AMT}
+ {3780273600 -10800 1 AMST}
+ {3791156400 -14400 0 AMT}
+ {3811723200 -10800 1 AMST}
+ {3822606000 -14400 0 AMT}
+ {3843777600 -10800 1 AMST}
+ {3854055600 -14400 0 AMT}
+ {3875227200 -10800 1 AMST}
+ {3885505200 -14400 0 AMT}
+ {3906676800 -10800 1 AMST}
+ {3917559600 -14400 0 AMT}
+ {3938126400 -10800 1 AMST}
+ {3949009200 -14400 0 AMT}
+ {3969576000 -10800 1 AMST}
+ {3980458800 -14400 0 AMT}
+ {4001630400 -10800 1 AMST}
+ {4011908400 -14400 0 AMT}
+ {4033080000 -10800 1 AMST}
+ {4043358000 -14400 0 AMT}
+ {4064529600 -10800 1 AMST}
+ {4074807600 -14400 0 AMT}
+ {4095979200 -10800 1 AMST}
+}
diff --git a/library/tzdata/America/Cancun b/library/tzdata/America/Cancun
new file mode 100644
index 0000000..1620b15
--- /dev/null
+++ b/library/tzdata/America/Cancun
@@ -0,0 +1,216 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Cancun) {
+ {-9223372036854775808 -20824 0 LMT}
+ {-1514743200 -21600 0 CST}
+ {377935200 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {902041200 -18000 0 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {989136000 -18000 1 CDT}
+ {1001833200 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1175414400 -18000 1 CDT}
+ {1193554800 -21600 0 CST}
+ {1207468800 -18000 1 CDT}
+ {1225004400 -21600 0 CST}
+ {1238918400 -18000 1 CDT}
+ {1256454000 -21600 0 CST}
+ {1270368000 -18000 1 CDT}
+ {1288508400 -21600 0 CST}
+ {1301817600 -18000 1 CDT}
+ {1319958000 -21600 0 CST}
+ {1333267200 -18000 1 CDT}
+ {1351407600 -21600 0 CST}
+ {1365321600 -18000 1 CDT}
+ {1382857200 -21600 0 CST}
+ {1396771200 -18000 1 CDT}
+ {1414306800 -21600 0 CST}
+ {1428220800 -18000 1 CDT}
+ {1445756400 -21600 0 CST}
+ {1459670400 -18000 1 CDT}
+ {1477810800 -21600 0 CST}
+ {1491120000 -18000 1 CDT}
+ {1509260400 -21600 0 CST}
+ {1522569600 -18000 1 CDT}
+ {1540710000 -21600 0 CST}
+ {1554624000 -18000 1 CDT}
+ {1572159600 -21600 0 CST}
+ {1586073600 -18000 1 CDT}
+ {1603609200 -21600 0 CST}
+ {1617523200 -18000 1 CDT}
+ {1635663600 -21600 0 CST}
+ {1648972800 -18000 1 CDT}
+ {1667113200 -21600 0 CST}
+ {1680422400 -18000 1 CDT}
+ {1698562800 -21600 0 CST}
+ {1712476800 -18000 1 CDT}
+ {1730012400 -21600 0 CST}
+ {1743926400 -18000 1 CDT}
+ {1761462000 -21600 0 CST}
+ {1775376000 -18000 1 CDT}
+ {1792911600 -21600 0 CST}
+ {1806825600 -18000 1 CDT}
+ {1824966000 -21600 0 CST}
+ {1838275200 -18000 1 CDT}
+ {1856415600 -21600 0 CST}
+ {1869724800 -18000 1 CDT}
+ {1887865200 -21600 0 CST}
+ {1901779200 -18000 1 CDT}
+ {1919314800 -21600 0 CST}
+ {1933228800 -18000 1 CDT}
+ {1950764400 -21600 0 CST}
+ {1964678400 -18000 1 CDT}
+ {1982818800 -21600 0 CST}
+ {1996128000 -18000 1 CDT}
+ {2014268400 -21600 0 CST}
+ {2027577600 -18000 1 CDT}
+ {2045718000 -21600 0 CST}
+ {2059027200 -18000 1 CDT}
+ {2077167600 -21600 0 CST}
+ {2091081600 -18000 1 CDT}
+ {2108617200 -21600 0 CST}
+ {2122531200 -18000 1 CDT}
+ {2140066800 -21600 0 CST}
+ {2153980800 -18000 1 CDT}
+ {2172121200 -21600 0 CST}
+ {2185430400 -18000 1 CDT}
+ {2203570800 -21600 0 CST}
+ {2216880000 -18000 1 CDT}
+ {2235020400 -21600 0 CST}
+ {2248934400 -18000 1 CDT}
+ {2266470000 -21600 0 CST}
+ {2280384000 -18000 1 CDT}
+ {2297919600 -21600 0 CST}
+ {2311833600 -18000 1 CDT}
+ {2329369200 -21600 0 CST}
+ {2343283200 -18000 1 CDT}
+ {2361423600 -21600 0 CST}
+ {2374732800 -18000 1 CDT}
+ {2392873200 -21600 0 CST}
+ {2406182400 -18000 1 CDT}
+ {2424322800 -21600 0 CST}
+ {2438236800 -18000 1 CDT}
+ {2455772400 -21600 0 CST}
+ {2469686400 -18000 1 CDT}
+ {2487222000 -21600 0 CST}
+ {2501136000 -18000 1 CDT}
+ {2519276400 -21600 0 CST}
+ {2532585600 -18000 1 CDT}
+ {2550726000 -21600 0 CST}
+ {2564035200 -18000 1 CDT}
+ {2582175600 -21600 0 CST}
+ {2596089600 -18000 1 CDT}
+ {2613625200 -21600 0 CST}
+ {2627539200 -18000 1 CDT}
+ {2645074800 -21600 0 CST}
+ {2658988800 -18000 1 CDT}
+ {2676524400 -21600 0 CST}
+ {2690438400 -18000 1 CDT}
+ {2708578800 -21600 0 CST}
+ {2721888000 -18000 1 CDT}
+ {2740028400 -21600 0 CST}
+ {2753337600 -18000 1 CDT}
+ {2771478000 -21600 0 CST}
+ {2785392000 -18000 1 CDT}
+ {2802927600 -21600 0 CST}
+ {2816841600 -18000 1 CDT}
+ {2834377200 -21600 0 CST}
+ {2848291200 -18000 1 CDT}
+ {2866431600 -21600 0 CST}
+ {2879740800 -18000 1 CDT}
+ {2897881200 -21600 0 CST}
+ {2911190400 -18000 1 CDT}
+ {2929330800 -21600 0 CST}
+ {2942640000 -18000 1 CDT}
+ {2960780400 -21600 0 CST}
+ {2974694400 -18000 1 CDT}
+ {2992230000 -21600 0 CST}
+ {3006144000 -18000 1 CDT}
+ {3023679600 -21600 0 CST}
+ {3037593600 -18000 1 CDT}
+ {3055734000 -21600 0 CST}
+ {3069043200 -18000 1 CDT}
+ {3087183600 -21600 0 CST}
+ {3100492800 -18000 1 CDT}
+ {3118633200 -21600 0 CST}
+ {3132547200 -18000 1 CDT}
+ {3150082800 -21600 0 CST}
+ {3163996800 -18000 1 CDT}
+ {3181532400 -21600 0 CST}
+ {3195446400 -18000 1 CDT}
+ {3212982000 -21600 0 CST}
+ {3226896000 -18000 1 CDT}
+ {3245036400 -21600 0 CST}
+ {3258345600 -18000 1 CDT}
+ {3276486000 -21600 0 CST}
+ {3289795200 -18000 1 CDT}
+ {3307935600 -21600 0 CST}
+ {3321849600 -18000 1 CDT}
+ {3339385200 -21600 0 CST}
+ {3353299200 -18000 1 CDT}
+ {3370834800 -21600 0 CST}
+ {3384748800 -18000 1 CDT}
+ {3402889200 -21600 0 CST}
+ {3416198400 -18000 1 CDT}
+ {3434338800 -21600 0 CST}
+ {3447648000 -18000 1 CDT}
+ {3465788400 -21600 0 CST}
+ {3479702400 -18000 1 CDT}
+ {3497238000 -21600 0 CST}
+ {3511152000 -18000 1 CDT}
+ {3528687600 -21600 0 CST}
+ {3542601600 -18000 1 CDT}
+ {3560137200 -21600 0 CST}
+ {3574051200 -18000 1 CDT}
+ {3592191600 -21600 0 CST}
+ {3605500800 -18000 1 CDT}
+ {3623641200 -21600 0 CST}
+ {3636950400 -18000 1 CDT}
+ {3655090800 -21600 0 CST}
+ {3669004800 -18000 1 CDT}
+ {3686540400 -21600 0 CST}
+ {3700454400 -18000 1 CDT}
+ {3717990000 -21600 0 CST}
+ {3731904000 -18000 1 CDT}
+ {3750044400 -21600 0 CST}
+ {3763353600 -18000 1 CDT}
+ {3781494000 -21600 0 CST}
+ {3794803200 -18000 1 CDT}
+ {3812943600 -21600 0 CST}
+ {3826252800 -18000 1 CDT}
+ {3844393200 -21600 0 CST}
+ {3858307200 -18000 1 CDT}
+ {3875842800 -21600 0 CST}
+ {3889756800 -18000 1 CDT}
+ {3907292400 -21600 0 CST}
+ {3921206400 -18000 1 CDT}
+ {3939346800 -21600 0 CST}
+ {3952656000 -18000 1 CDT}
+ {3970796400 -21600 0 CST}
+ {3984105600 -18000 1 CDT}
+ {4002246000 -21600 0 CST}
+ {4016160000 -18000 1 CDT}
+ {4033695600 -21600 0 CST}
+ {4047609600 -18000 1 CDT}
+ {4065145200 -21600 0 CST}
+ {4079059200 -18000 1 CDT}
+ {4096594800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Caracas b/library/tzdata/America/Caracas
new file mode 100644
index 0000000..2ba87ae
--- /dev/null
+++ b/library/tzdata/America/Caracas
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Caracas) {
+ {-9223372036854775808 -16064 0 LMT}
+ {-2524505536 -16060 0 CMT}
+ {-1826739140 -16200 0 VET}
+ {-157750200 -14400 0 VET}
+ {1197183600 -16200 0 VET}
+}
diff --git a/library/tzdata/America/Catamarca b/library/tzdata/America/Catamarca
new file mode 100644
index 0000000..01c8ab6
--- /dev/null
+++ b/library/tzdata/America/Catamarca
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Catamarca)]} {
+ LoadTimeZoneFile America/Argentina/Catamarca
+}
+set TZData(:America/Catamarca) $TZData(:America/Argentina/Catamarca)
diff --git a/library/tzdata/America/Cayenne b/library/tzdata/America/Cayenne
new file mode 100644
index 0000000..de3d65b
--- /dev/null
+++ b/library/tzdata/America/Cayenne
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Cayenne) {
+ {-9223372036854775808 -12560 0 LMT}
+ {-1846269040 -14400 0 GFT}
+ {-71092800 -10800 0 GFT}
+}
diff --git a/library/tzdata/America/Cayman b/library/tzdata/America/Cayman
new file mode 100644
index 0000000..3e2e3cc
--- /dev/null
+++ b/library/tzdata/America/Cayman
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Cayman) {
+ {-9223372036854775808 -19532 0 LMT}
+ {-2524502068 -18431 0 KMT}
+ {-1827687169 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Chicago b/library/tzdata/America/Chicago
new file mode 100644
index 0000000..545aedb
--- /dev/null
+++ b/library/tzdata/America/Chicago
@@ -0,0 +1,369 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Chicago) {
+ {-9223372036854775808 -21036 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-1577901600 -21600 0 CST}
+ {-1563724800 -18000 1 CDT}
+ {-1551632400 -21600 0 CST}
+ {-1538928000 -18000 1 CDT}
+ {-1520182800 -21600 0 CST}
+ {-1504454400 -18000 1 CDT}
+ {-1491757200 -21600 0 CST}
+ {-1473004800 -18000 1 CDT}
+ {-1459702800 -21600 0 CST}
+ {-1441555200 -18000 1 CDT}
+ {-1428253200 -21600 0 CST}
+ {-1410105600 -18000 1 CDT}
+ {-1396803600 -21600 0 CST}
+ {-1378656000 -18000 1 CDT}
+ {-1365354000 -21600 0 CST}
+ {-1347206400 -18000 1 CDT}
+ {-1333904400 -21600 0 CST}
+ {-1315152000 -18000 1 CDT}
+ {-1301850000 -21600 0 CST}
+ {-1283702400 -18000 1 CDT}
+ {-1270400400 -21600 0 CST}
+ {-1252252800 -18000 1 CDT}
+ {-1238950800 -21600 0 CST}
+ {-1220803200 -18000 1 CDT}
+ {-1207501200 -21600 0 CST}
+ {-1189353600 -18000 1 CDT}
+ {-1176051600 -21600 0 CST}
+ {-1157299200 -18000 1 CDT}
+ {-1144602000 -21600 0 CST}
+ {-1125849600 -18000 1 CDT}
+ {-1112547600 -21600 0 CST}
+ {-1094400000 -18000 1 CDT}
+ {-1081098000 -21600 0 CST}
+ {-1067788800 -18000 0 EST}
+ {-1045414800 -21600 0 CST}
+ {-1031500800 -18000 1 CDT}
+ {-1018198800 -21600 0 CST}
+ {-1000051200 -18000 1 CDT}
+ {-986749200 -21600 0 CST}
+ {-967996800 -18000 1 CDT}
+ {-955299600 -21600 0 CST}
+ {-936547200 -18000 1 CDT}
+ {-923245200 -21600 0 CST}
+ {-905097600 -18000 1 CDT}
+ {-891795600 -21600 0 CST}
+ {-883591200 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-733942800 -21600 0 CST}
+ {-715795200 -18000 1 CDT}
+ {-702493200 -21600 0 CST}
+ {-684345600 -18000 1 CDT}
+ {-671043600 -21600 0 CST}
+ {-652896000 -18000 1 CDT}
+ {-639594000 -21600 0 CST}
+ {-620841600 -18000 1 CDT}
+ {-608144400 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-557942400 -18000 1 CDT}
+ {-544640400 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 1 CDT}
+ {-447267600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-415818000 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-384368400 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-352918800 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-321469200 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-289414800 -21600 0 CST}
+ {-273686400 -18000 1 CDT}
+ {-257965200 -21600 0 CST}
+ {-242236800 -18000 1 CDT}
+ {-226515600 -21600 0 CST}
+ {-210787200 -18000 1 CDT}
+ {-195066000 -21600 0 CST}
+ {-179337600 -18000 1 CDT}
+ {-163616400 -21600 0 CST}
+ {-147888000 -18000 1 CDT}
+ {-131562000 -21600 0 CST}
+ {-116438400 -18000 1 CDT}
+ {-100112400 -21600 0 CST}
+ {-94672800 -21600 0 CST}
+ {-84384000 -18000 1 CDT}
+ {-68662800 -21600 0 CST}
+ {-52934400 -18000 1 CDT}
+ {-37213200 -21600 0 CST}
+ {-21484800 -18000 1 CDT}
+ {-5763600 -21600 0 CST}
+ {9964800 -18000 1 CDT}
+ {25686000 -21600 0 CST}
+ {41414400 -18000 1 CDT}
+ {57740400 -21600 0 CST}
+ {73468800 -18000 1 CDT}
+ {89190000 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120639600 -21600 0 CST}
+ {126691200 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {162374400 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247042800 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278492400 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309942000 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {986112000 -18000 1 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Chihuahua b/library/tzdata/America/Chihuahua
new file mode 100644
index 0000000..5444930
--- /dev/null
+++ b/library/tzdata/America/Chihuahua
@@ -0,0 +1,221 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Chihuahua) {
+ {-9223372036854775808 -25460 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {820476000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {883634400 -21600 0 CST}
+ {891766800 -21600 0 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {989139600 -21600 1 MDT}
+ {1001836800 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1175418000 -21600 1 MDT}
+ {1193558400 -25200 0 MST}
+ {1207472400 -21600 1 MDT}
+ {1225008000 -25200 0 MST}
+ {1238922000 -21600 1 MDT}
+ {1256457600 -25200 0 MST}
+ {1270371600 -21600 1 MDT}
+ {1288512000 -25200 0 MST}
+ {1301821200 -21600 1 MDT}
+ {1319961600 -25200 0 MST}
+ {1333270800 -21600 1 MDT}
+ {1351411200 -25200 0 MST}
+ {1365325200 -21600 1 MDT}
+ {1382860800 -25200 0 MST}
+ {1396774800 -21600 1 MDT}
+ {1414310400 -25200 0 MST}
+ {1428224400 -21600 1 MDT}
+ {1445760000 -25200 0 MST}
+ {1459674000 -21600 1 MDT}
+ {1477814400 -25200 0 MST}
+ {1491123600 -21600 1 MDT}
+ {1509264000 -25200 0 MST}
+ {1522573200 -21600 1 MDT}
+ {1540713600 -25200 0 MST}
+ {1554627600 -21600 1 MDT}
+ {1572163200 -25200 0 MST}
+ {1586077200 -21600 1 MDT}
+ {1603612800 -25200 0 MST}
+ {1617526800 -21600 1 MDT}
+ {1635667200 -25200 0 MST}
+ {1648976400 -21600 1 MDT}
+ {1667116800 -25200 0 MST}
+ {1680426000 -21600 1 MDT}
+ {1698566400 -25200 0 MST}
+ {1712480400 -21600 1 MDT}
+ {1730016000 -25200 0 MST}
+ {1743930000 -21600 1 MDT}
+ {1761465600 -25200 0 MST}
+ {1775379600 -21600 1 MDT}
+ {1792915200 -25200 0 MST}
+ {1806829200 -21600 1 MDT}
+ {1824969600 -25200 0 MST}
+ {1838278800 -21600 1 MDT}
+ {1856419200 -25200 0 MST}
+ {1869728400 -21600 1 MDT}
+ {1887868800 -25200 0 MST}
+ {1901782800 -21600 1 MDT}
+ {1919318400 -25200 0 MST}
+ {1933232400 -21600 1 MDT}
+ {1950768000 -25200 0 MST}
+ {1964682000 -21600 1 MDT}
+ {1982822400 -25200 0 MST}
+ {1996131600 -21600 1 MDT}
+ {2014272000 -25200 0 MST}
+ {2027581200 -21600 1 MDT}
+ {2045721600 -25200 0 MST}
+ {2059030800 -21600 1 MDT}
+ {2077171200 -25200 0 MST}
+ {2091085200 -21600 1 MDT}
+ {2108620800 -25200 0 MST}
+ {2122534800 -21600 1 MDT}
+ {2140070400 -25200 0 MST}
+ {2153984400 -21600 1 MDT}
+ {2172124800 -25200 0 MST}
+ {2185434000 -21600 1 MDT}
+ {2203574400 -25200 0 MST}
+ {2216883600 -21600 1 MDT}
+ {2235024000 -25200 0 MST}
+ {2248938000 -21600 1 MDT}
+ {2266473600 -25200 0 MST}
+ {2280387600 -21600 1 MDT}
+ {2297923200 -25200 0 MST}
+ {2311837200 -21600 1 MDT}
+ {2329372800 -25200 0 MST}
+ {2343286800 -21600 1 MDT}
+ {2361427200 -25200 0 MST}
+ {2374736400 -21600 1 MDT}
+ {2392876800 -25200 0 MST}
+ {2406186000 -21600 1 MDT}
+ {2424326400 -25200 0 MST}
+ {2438240400 -21600 1 MDT}
+ {2455776000 -25200 0 MST}
+ {2469690000 -21600 1 MDT}
+ {2487225600 -25200 0 MST}
+ {2501139600 -21600 1 MDT}
+ {2519280000 -25200 0 MST}
+ {2532589200 -21600 1 MDT}
+ {2550729600 -25200 0 MST}
+ {2564038800 -21600 1 MDT}
+ {2582179200 -25200 0 MST}
+ {2596093200 -21600 1 MDT}
+ {2613628800 -25200 0 MST}
+ {2627542800 -21600 1 MDT}
+ {2645078400 -25200 0 MST}
+ {2658992400 -21600 1 MDT}
+ {2676528000 -25200 0 MST}
+ {2690442000 -21600 1 MDT}
+ {2708582400 -25200 0 MST}
+ {2721891600 -21600 1 MDT}
+ {2740032000 -25200 0 MST}
+ {2753341200 -21600 1 MDT}
+ {2771481600 -25200 0 MST}
+ {2785395600 -21600 1 MDT}
+ {2802931200 -25200 0 MST}
+ {2816845200 -21600 1 MDT}
+ {2834380800 -25200 0 MST}
+ {2848294800 -21600 1 MDT}
+ {2866435200 -25200 0 MST}
+ {2879744400 -21600 1 MDT}
+ {2897884800 -25200 0 MST}
+ {2911194000 -21600 1 MDT}
+ {2929334400 -25200 0 MST}
+ {2942643600 -21600 1 MDT}
+ {2960784000 -25200 0 MST}
+ {2974698000 -21600 1 MDT}
+ {2992233600 -25200 0 MST}
+ {3006147600 -21600 1 MDT}
+ {3023683200 -25200 0 MST}
+ {3037597200 -21600 1 MDT}
+ {3055737600 -25200 0 MST}
+ {3069046800 -21600 1 MDT}
+ {3087187200 -25200 0 MST}
+ {3100496400 -21600 1 MDT}
+ {3118636800 -25200 0 MST}
+ {3132550800 -21600 1 MDT}
+ {3150086400 -25200 0 MST}
+ {3164000400 -21600 1 MDT}
+ {3181536000 -25200 0 MST}
+ {3195450000 -21600 1 MDT}
+ {3212985600 -25200 0 MST}
+ {3226899600 -21600 1 MDT}
+ {3245040000 -25200 0 MST}
+ {3258349200 -21600 1 MDT}
+ {3276489600 -25200 0 MST}
+ {3289798800 -21600 1 MDT}
+ {3307939200 -25200 0 MST}
+ {3321853200 -21600 1 MDT}
+ {3339388800 -25200 0 MST}
+ {3353302800 -21600 1 MDT}
+ {3370838400 -25200 0 MST}
+ {3384752400 -21600 1 MDT}
+ {3402892800 -25200 0 MST}
+ {3416202000 -21600 1 MDT}
+ {3434342400 -25200 0 MST}
+ {3447651600 -21600 1 MDT}
+ {3465792000 -25200 0 MST}
+ {3479706000 -21600 1 MDT}
+ {3497241600 -25200 0 MST}
+ {3511155600 -21600 1 MDT}
+ {3528691200 -25200 0 MST}
+ {3542605200 -21600 1 MDT}
+ {3560140800 -25200 0 MST}
+ {3574054800 -21600 1 MDT}
+ {3592195200 -25200 0 MST}
+ {3605504400 -21600 1 MDT}
+ {3623644800 -25200 0 MST}
+ {3636954000 -21600 1 MDT}
+ {3655094400 -25200 0 MST}
+ {3669008400 -21600 1 MDT}
+ {3686544000 -25200 0 MST}
+ {3700458000 -21600 1 MDT}
+ {3717993600 -25200 0 MST}
+ {3731907600 -21600 1 MDT}
+ {3750048000 -25200 0 MST}
+ {3763357200 -21600 1 MDT}
+ {3781497600 -25200 0 MST}
+ {3794806800 -21600 1 MDT}
+ {3812947200 -25200 0 MST}
+ {3826256400 -21600 1 MDT}
+ {3844396800 -25200 0 MST}
+ {3858310800 -21600 1 MDT}
+ {3875846400 -25200 0 MST}
+ {3889760400 -21600 1 MDT}
+ {3907296000 -25200 0 MST}
+ {3921210000 -21600 1 MDT}
+ {3939350400 -25200 0 MST}
+ {3952659600 -21600 1 MDT}
+ {3970800000 -25200 0 MST}
+ {3984109200 -21600 1 MDT}
+ {4002249600 -25200 0 MST}
+ {4016163600 -21600 1 MDT}
+ {4033699200 -25200 0 MST}
+ {4047613200 -21600 1 MDT}
+ {4065148800 -25200 0 MST}
+ {4079062800 -21600 1 MDT}
+ {4096598400 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Coral_Harbour b/library/tzdata/America/Coral_Harbour
new file mode 100644
index 0000000..a27dc03
--- /dev/null
+++ b/library/tzdata/America/Coral_Harbour
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Atikokan)]} {
+ LoadTimeZoneFile America/Atikokan
+}
+set TZData(:America/Coral_Harbour) $TZData(:America/Atikokan)
diff --git a/library/tzdata/America/Cordoba b/library/tzdata/America/Cordoba
new file mode 100644
index 0000000..c881558
--- /dev/null
+++ b/library/tzdata/America/Cordoba
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Cordoba)]} {
+ LoadTimeZoneFile America/Argentina/Cordoba
+}
+set TZData(:America/Cordoba) $TZData(:America/Argentina/Cordoba)
diff --git a/library/tzdata/America/Costa_Rica b/library/tzdata/America/Costa_Rica
new file mode 100644
index 0000000..8fc9343
--- /dev/null
+++ b/library/tzdata/America/Costa_Rica
@@ -0,0 +1,15 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Costa_Rica) {
+ {-9223372036854775808 -20173 0 LMT}
+ {-2524501427 -20173 0 SJMT}
+ {-1545071027 -21600 0 CST}
+ {288770400 -18000 1 CDT}
+ {297234000 -21600 0 CST}
+ {320220000 -18000 1 CDT}
+ {328683600 -21600 0 CST}
+ {664264800 -18000 1 CDT}
+ {678344400 -21600 0 CST}
+ {695714400 -18000 1 CDT}
+ {700635600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Creston b/library/tzdata/America/Creston
new file mode 100644
index 0000000..30369a9
--- /dev/null
+++ b/library/tzdata/America/Creston
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Creston) {
+ {-9223372036854775808 -27964 0 LMT}
+ {-2713882436 -25200 0 MST}
+ {-1680454800 -28800 0 PST}
+ {-1627833600 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Cuiaba b/library/tzdata/America/Cuiaba
new file mode 100644
index 0000000..0301862
--- /dev/null
+++ b/library/tzdata/America/Cuiaba
@@ -0,0 +1,257 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Cuiaba) {
+ {-9223372036854775808 -13460 0 LMT}
+ {-1767212140 -14400 0 AMT}
+ {-1206954000 -10800 1 AMST}
+ {-1191358800 -14400 0 AMT}
+ {-1175371200 -10800 1 AMST}
+ {-1159822800 -14400 0 AMT}
+ {-633816000 -10800 1 AMST}
+ {-622065600 -14400 0 AMT}
+ {-602280000 -10800 1 AMST}
+ {-591829200 -14400 0 AMT}
+ {-570744000 -10800 1 AMST}
+ {-560206800 -14400 0 AMT}
+ {-539121600 -10800 1 AMST}
+ {-531349200 -14400 0 AMT}
+ {-191361600 -10800 1 AMST}
+ {-184194000 -14400 0 AMT}
+ {-155160000 -10800 1 AMST}
+ {-150066000 -14400 0 AMT}
+ {-128894400 -10800 1 AMST}
+ {-121122000 -14400 0 AMT}
+ {-99950400 -10800 1 AMST}
+ {-89586000 -14400 0 AMT}
+ {-68414400 -10800 1 AMST}
+ {-57963600 -14400 0 AMT}
+ {499752000 -10800 1 AMST}
+ {511239600 -14400 0 AMT}
+ {530596800 -10800 1 AMST}
+ {540270000 -14400 0 AMT}
+ {562132800 -10800 1 AMST}
+ {571201200 -14400 0 AMT}
+ {592977600 -10800 1 AMST}
+ {602046000 -14400 0 AMT}
+ {624427200 -10800 1 AMST}
+ {634705200 -14400 0 AMT}
+ {656481600 -10800 1 AMST}
+ {666759600 -14400 0 AMT}
+ {687931200 -10800 1 AMST}
+ {697604400 -14400 0 AMT}
+ {719985600 -10800 1 AMST}
+ {728449200 -14400 0 AMT}
+ {750830400 -10800 1 AMST}
+ {761713200 -14400 0 AMT}
+ {782280000 -10800 1 AMST}
+ {793162800 -14400 0 AMT}
+ {813729600 -10800 1 AMST}
+ {824007600 -14400 0 AMT}
+ {844574400 -10800 1 AMST}
+ {856062000 -14400 0 AMT}
+ {876110400 -10800 1 AMST}
+ {888721200 -14400 0 AMT}
+ {908078400 -10800 1 AMST}
+ {919566000 -14400 0 AMT}
+ {938923200 -10800 1 AMST}
+ {951620400 -14400 0 AMT}
+ {970977600 -10800 1 AMST}
+ {982465200 -14400 0 AMT}
+ {1003032000 -10800 1 AMST}
+ {1013914800 -14400 0 AMT}
+ {1036296000 -10800 1 AMST}
+ {1045364400 -14400 0 AMT}
+ {1064372400 -14400 0 AMT}
+ {1096603200 -14400 0 AMT}
+ {1099368000 -10800 1 AMST}
+ {1108868400 -14400 0 AMT}
+ {1129435200 -10800 1 AMST}
+ {1140318000 -14400 0 AMT}
+ {1162699200 -10800 1 AMST}
+ {1172372400 -14400 0 AMT}
+ {1192334400 -10800 1 AMST}
+ {1203217200 -14400 0 AMT}
+ {1224388800 -10800 1 AMST}
+ {1234666800 -14400 0 AMT}
+ {1255838400 -10800 1 AMST}
+ {1266721200 -14400 0 AMT}
+ {1287288000 -10800 1 AMST}
+ {1298170800 -14400 0 AMT}
+ {1318737600 -10800 1 AMST}
+ {1330225200 -14400 0 AMT}
+ {1350792000 -10800 1 AMST}
+ {1361070000 -14400 0 AMT}
+ {1382241600 -10800 1 AMST}
+ {1392519600 -14400 0 AMT}
+ {1413691200 -10800 1 AMST}
+ {1424574000 -14400 0 AMT}
+ {1445140800 -10800 1 AMST}
+ {1456023600 -14400 0 AMT}
+ {1476590400 -10800 1 AMST}
+ {1487473200 -14400 0 AMT}
+ {1508040000 -10800 1 AMST}
+ {1518922800 -14400 0 AMT}
+ {1540094400 -10800 1 AMST}
+ {1550372400 -14400 0 AMT}
+ {1571544000 -10800 1 AMST}
+ {1581822000 -14400 0 AMT}
+ {1602993600 -10800 1 AMST}
+ {1613876400 -14400 0 AMT}
+ {1634443200 -10800 1 AMST}
+ {1645326000 -14400 0 AMT}
+ {1665892800 -10800 1 AMST}
+ {1677380400 -14400 0 AMT}
+ {1697342400 -10800 1 AMST}
+ {1708225200 -14400 0 AMT}
+ {1729396800 -10800 1 AMST}
+ {1739674800 -14400 0 AMT}
+ {1760846400 -10800 1 AMST}
+ {1771729200 -14400 0 AMT}
+ {1792296000 -10800 1 AMST}
+ {1803178800 -14400 0 AMT}
+ {1823745600 -10800 1 AMST}
+ {1834628400 -14400 0 AMT}
+ {1855195200 -10800 1 AMST}
+ {1866078000 -14400 0 AMT}
+ {1887249600 -10800 1 AMST}
+ {1897527600 -14400 0 AMT}
+ {1918699200 -10800 1 AMST}
+ {1928977200 -14400 0 AMT}
+ {1950148800 -10800 1 AMST}
+ {1960426800 -14400 0 AMT}
+ {1981598400 -10800 1 AMST}
+ {1992481200 -14400 0 AMT}
+ {2013048000 -10800 1 AMST}
+ {2024535600 -14400 0 AMT}
+ {2044497600 -10800 1 AMST}
+ {2055380400 -14400 0 AMT}
+ {2076552000 -10800 1 AMST}
+ {2086830000 -14400 0 AMT}
+ {2108001600 -10800 1 AMST}
+ {2118884400 -14400 0 AMT}
+ {2139451200 -10800 1 AMST}
+ {2150334000 -14400 0 AMT}
+ {2170900800 -10800 1 AMST}
+ {2181783600 -14400 0 AMT}
+ {2202350400 -10800 1 AMST}
+ {2213233200 -14400 0 AMT}
+ {2234404800 -10800 1 AMST}
+ {2244682800 -14400 0 AMT}
+ {2265854400 -10800 1 AMST}
+ {2276132400 -14400 0 AMT}
+ {2297304000 -10800 1 AMST}
+ {2307582000 -14400 0 AMT}
+ {2328753600 -10800 1 AMST}
+ {2339636400 -14400 0 AMT}
+ {2360203200 -10800 1 AMST}
+ {2371086000 -14400 0 AMT}
+ {2391652800 -10800 1 AMST}
+ {2402535600 -14400 0 AMT}
+ {2423707200 -10800 1 AMST}
+ {2433985200 -14400 0 AMT}
+ {2455156800 -10800 1 AMST}
+ {2465434800 -14400 0 AMT}
+ {2486606400 -10800 1 AMST}
+ {2497489200 -14400 0 AMT}
+ {2518056000 -10800 1 AMST}
+ {2528938800 -14400 0 AMT}
+ {2549505600 -10800 1 AMST}
+ {2560388400 -14400 0 AMT}
+ {2580955200 -10800 1 AMST}
+ {2591838000 -14400 0 AMT}
+ {2613009600 -10800 1 AMST}
+ {2623287600 -14400 0 AMT}
+ {2644459200 -10800 1 AMST}
+ {2654737200 -14400 0 AMT}
+ {2675908800 -10800 1 AMST}
+ {2686791600 -14400 0 AMT}
+ {2707358400 -10800 1 AMST}
+ {2718241200 -14400 0 AMT}
+ {2738808000 -10800 1 AMST}
+ {2749690800 -14400 0 AMT}
+ {2770862400 -10800 1 AMST}
+ {2781140400 -14400 0 AMT}
+ {2802312000 -10800 1 AMST}
+ {2812590000 -14400 0 AMT}
+ {2833761600 -10800 1 AMST}
+ {2844039600 -14400 0 AMT}
+ {2865211200 -10800 1 AMST}
+ {2876094000 -14400 0 AMT}
+ {2896660800 -10800 1 AMST}
+ {2907543600 -14400 0 AMT}
+ {2928110400 -10800 1 AMST}
+ {2938993200 -14400 0 AMT}
+ {2960164800 -10800 1 AMST}
+ {2970442800 -14400 0 AMT}
+ {2991614400 -10800 1 AMST}
+ {3001892400 -14400 0 AMT}
+ {3023064000 -10800 1 AMST}
+ {3033946800 -14400 0 AMT}
+ {3054513600 -10800 1 AMST}
+ {3065396400 -14400 0 AMT}
+ {3085963200 -10800 1 AMST}
+ {3096846000 -14400 0 AMT}
+ {3118017600 -10800 1 AMST}
+ {3128295600 -14400 0 AMT}
+ {3149467200 -10800 1 AMST}
+ {3159745200 -14400 0 AMT}
+ {3180916800 -10800 1 AMST}
+ {3191194800 -14400 0 AMT}
+ {3212366400 -10800 1 AMST}
+ {3223249200 -14400 0 AMT}
+ {3243816000 -10800 1 AMST}
+ {3254698800 -14400 0 AMT}
+ {3275265600 -10800 1 AMST}
+ {3286148400 -14400 0 AMT}
+ {3307320000 -10800 1 AMST}
+ {3317598000 -14400 0 AMT}
+ {3338769600 -10800 1 AMST}
+ {3349047600 -14400 0 AMT}
+ {3370219200 -10800 1 AMST}
+ {3381102000 -14400 0 AMT}
+ {3401668800 -10800 1 AMST}
+ {3412551600 -14400 0 AMT}
+ {3433118400 -10800 1 AMST}
+ {3444001200 -14400 0 AMT}
+ {3464568000 -10800 1 AMST}
+ {3475450800 -14400 0 AMT}
+ {3496622400 -10800 1 AMST}
+ {3506900400 -14400 0 AMT}
+ {3528072000 -10800 1 AMST}
+ {3538350000 -14400 0 AMT}
+ {3559521600 -10800 1 AMST}
+ {3570404400 -14400 0 AMT}
+ {3590971200 -10800 1 AMST}
+ {3601854000 -14400 0 AMT}
+ {3622420800 -10800 1 AMST}
+ {3633303600 -14400 0 AMT}
+ {3654475200 -10800 1 AMST}
+ {3664753200 -14400 0 AMT}
+ {3685924800 -10800 1 AMST}
+ {3696202800 -14400 0 AMT}
+ {3717374400 -10800 1 AMST}
+ {3727652400 -14400 0 AMT}
+ {3748824000 -10800 1 AMST}
+ {3759706800 -14400 0 AMT}
+ {3780273600 -10800 1 AMST}
+ {3791156400 -14400 0 AMT}
+ {3811723200 -10800 1 AMST}
+ {3822606000 -14400 0 AMT}
+ {3843777600 -10800 1 AMST}
+ {3854055600 -14400 0 AMT}
+ {3875227200 -10800 1 AMST}
+ {3885505200 -14400 0 AMT}
+ {3906676800 -10800 1 AMST}
+ {3917559600 -14400 0 AMT}
+ {3938126400 -10800 1 AMST}
+ {3949009200 -14400 0 AMT}
+ {3969576000 -10800 1 AMST}
+ {3980458800 -14400 0 AMT}
+ {4001630400 -10800 1 AMST}
+ {4011908400 -14400 0 AMT}
+ {4033080000 -10800 1 AMST}
+ {4043358000 -14400 0 AMT}
+ {4064529600 -10800 1 AMST}
+ {4074807600 -14400 0 AMT}
+ {4095979200 -10800 1 AMST}
+}
diff --git a/library/tzdata/America/Curacao b/library/tzdata/America/Curacao
new file mode 100644
index 0000000..5189e9c
--- /dev/null
+++ b/library/tzdata/America/Curacao
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Curacao) {
+ {-9223372036854775808 -16547 0 LMT}
+ {-1826738653 -16200 0 ANT}
+ {-157750200 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Danmarkshavn b/library/tzdata/America/Danmarkshavn
new file mode 100644
index 0000000..8d66d3a
--- /dev/null
+++ b/library/tzdata/America/Danmarkshavn
@@ -0,0 +1,39 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Danmarkshavn) {
+ {-9223372036854775808 -4480 0 LMT}
+ {-1686091520 -10800 0 WGT}
+ {323845200 -7200 0 WGST}
+ {338950800 -10800 0 WGT}
+ {354675600 -7200 1 WGST}
+ {370400400 -10800 0 WGT}
+ {386125200 -7200 1 WGST}
+ {401850000 -10800 0 WGT}
+ {417574800 -7200 1 WGST}
+ {433299600 -10800 0 WGT}
+ {449024400 -7200 1 WGST}
+ {465354000 -10800 0 WGT}
+ {481078800 -7200 1 WGST}
+ {496803600 -10800 0 WGT}
+ {512528400 -7200 1 WGST}
+ {528253200 -10800 0 WGT}
+ {543978000 -7200 1 WGST}
+ {559702800 -10800 0 WGT}
+ {575427600 -7200 1 WGST}
+ {591152400 -10800 0 WGT}
+ {606877200 -7200 1 WGST}
+ {622602000 -10800 0 WGT}
+ {638326800 -7200 1 WGST}
+ {654656400 -10800 0 WGT}
+ {670381200 -7200 1 WGST}
+ {686106000 -10800 0 WGT}
+ {701830800 -7200 1 WGST}
+ {717555600 -10800 0 WGT}
+ {733280400 -7200 1 WGST}
+ {749005200 -10800 0 WGT}
+ {764730000 -7200 1 WGST}
+ {780454800 -10800 0 WGT}
+ {796179600 -7200 1 WGST}
+ {811904400 -10800 0 WGT}
+ {820465200 0 0 GMT}
+}
diff --git a/library/tzdata/America/Dawson b/library/tzdata/America/Dawson
new file mode 100644
index 0000000..8d2b641
--- /dev/null
+++ b/library/tzdata/America/Dawson
@@ -0,0 +1,256 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Dawson) {
+ {-9223372036854775808 -33460 0 LMT}
+ {-2188996940 -32400 0 YST}
+ {-1632056400 -28800 1 YDT}
+ {-1615125600 -32400 0 YST}
+ {-1596978000 -28800 1 YDT}
+ {-1583164800 -32400 0 YST}
+ {-880203600 -28800 1 YWT}
+ {-769395600 -28800 1 YPT}
+ {-765381600 -32400 0 YST}
+ {-147884400 -25200 1 YDDT}
+ {-131554800 -32400 0 YST}
+ {315561600 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1173607200 -25200 1 PDT}
+ {1194166800 -28800 0 PST}
+ {1205056800 -25200 1 PDT}
+ {1225616400 -28800 0 PST}
+ {1236506400 -25200 1 PDT}
+ {1257066000 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Dawson_Creek b/library/tzdata/America/Dawson_Creek
new file mode 100644
index 0000000..a0b5c44
--- /dev/null
+++ b/library/tzdata/America/Dawson_Creek
@@ -0,0 +1,64 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Dawson_Creek) {
+ {-9223372036854775808 -28856 0 LMT}
+ {-2713881544 -28800 0 PST}
+ {-1632060000 -25200 1 PDT}
+ {-1615129200 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-725817600 -28800 0 PST}
+ {-715788000 -25200 1 PDT}
+ {-702486000 -28800 0 PST}
+ {-684338400 -25200 1 PDT}
+ {-671036400 -28800 0 PST}
+ {-652888800 -25200 1 PDT}
+ {-639586800 -28800 0 PST}
+ {-620834400 -25200 1 PDT}
+ {-608137200 -28800 0 PST}
+ {-589384800 -25200 1 PDT}
+ {-576082800 -28800 0 PST}
+ {-557935200 -25200 1 PDT}
+ {-544633200 -28800 0 PST}
+ {-526485600 -25200 1 PDT}
+ {-513183600 -28800 0 PST}
+ {-495036000 -25200 1 PDT}
+ {-481734000 -28800 0 PST}
+ {-463586400 -25200 1 PDT}
+ {-450284400 -28800 0 PST}
+ {-431532000 -25200 1 PDT}
+ {-418230000 -28800 0 PST}
+ {-400082400 -25200 1 PDT}
+ {-386780400 -28800 0 PST}
+ {-368632800 -25200 1 PDT}
+ {-355330800 -28800 0 PST}
+ {-337183200 -25200 1 PDT}
+ {-323881200 -28800 0 PST}
+ {-305733600 -25200 1 PDT}
+ {-292431600 -28800 0 PST}
+ {-273679200 -25200 1 PDT}
+ {-260982000 -28800 0 PST}
+ {-242229600 -25200 1 PDT}
+ {-226508400 -28800 0 PST}
+ {-210780000 -25200 1 PDT}
+ {-195058800 -28800 0 PST}
+ {-179330400 -25200 1 PDT}
+ {-163609200 -28800 0 PST}
+ {-147880800 -25200 1 PDT}
+ {-131554800 -28800 0 PST}
+ {-116431200 -25200 1 PDT}
+ {-100105200 -28800 0 PST}
+ {-84376800 -25200 1 PDT}
+ {-68655600 -28800 0 PST}
+ {-52927200 -25200 1 PDT}
+ {-37206000 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {84016800 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Denver b/library/tzdata/America/Denver
new file mode 100644
index 0000000..06bc80d
--- /dev/null
+++ b/library/tzdata/America/Denver
@@ -0,0 +1,291 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Denver) {
+ {-9223372036854775808 -25196 0 LMT}
+ {-2717643600 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-1577898000 -25200 0 MST}
+ {-1570374000 -21600 1 MDT}
+ {-1551628800 -25200 0 MST}
+ {-1538924400 -21600 1 MDT}
+ {-1534089600 -25200 0 MST}
+ {-883587600 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-757357200 -25200 0 MST}
+ {-147884400 -21600 1 MDT}
+ {-131558400 -25200 0 MST}
+ {-116434800 -21600 1 MDT}
+ {-100108800 -25200 0 MST}
+ {-94669200 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126694800 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Detroit b/library/tzdata/America/Detroit
new file mode 100644
index 0000000..696a663
--- /dev/null
+++ b/library/tzdata/America/Detroit
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Detroit) {
+ {-9223372036854775808 -19931 0 LMT}
+ {-2051202469 -21600 0 CST}
+ {-1724083200 -18000 0 EST}
+ {-883594800 -18000 0 EST}
+ {-880218000 -14400 1 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {-757364400 -18000 0 EST}
+ {-684349200 -14400 1 EDT}
+ {-671047200 -18000 0 EST}
+ {-80499600 -14400 1 EDT}
+ {-68666400 -18000 0 EST}
+ {94712400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126687600 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {157784400 -18000 0 EST}
+ {167814000 -14400 0 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Dominica b/library/tzdata/America/Dominica
new file mode 100644
index 0000000..b97cb0e
--- /dev/null
+++ b/library/tzdata/America/Dominica
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Dominica) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Edmonton b/library/tzdata/America/Edmonton
new file mode 100644
index 0000000..1ed38be
--- /dev/null
+++ b/library/tzdata/America/Edmonton
@@ -0,0 +1,284 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Edmonton) {
+ {-9223372036854775808 -27232 0 LMT}
+ {-1998663968 -25200 0 MST}
+ {-1632063600 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1600614000 -21600 1 MDT}
+ {-1596816000 -25200 0 MST}
+ {-1567954800 -21600 1 MDT}
+ {-1551628800 -25200 0 MST}
+ {-1536505200 -21600 1 MDT}
+ {-1523203200 -25200 0 MST}
+ {-1504450800 -21600 1 MDT}
+ {-1491753600 -25200 0 MST}
+ {-1473001200 -21600 1 MDT}
+ {-1459699200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-715791600 -21600 1 MDT}
+ {-702489600 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {136371600 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {167821200 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {536482800 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Eirunepe b/library/tzdata/America/Eirunepe
new file mode 100644
index 0000000..86dcd8f
--- /dev/null
+++ b/library/tzdata/America/Eirunepe
@@ -0,0 +1,40 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Eirunepe) {
+ {-9223372036854775808 -16768 0 LMT}
+ {-1767208832 -18000 0 ACT}
+ {-1206950400 -14400 1 ACST}
+ {-1191355200 -18000 0 ACT}
+ {-1175367600 -14400 1 ACST}
+ {-1159819200 -18000 0 ACT}
+ {-633812400 -14400 1 ACST}
+ {-622062000 -18000 0 ACT}
+ {-602276400 -14400 1 ACST}
+ {-591825600 -18000 0 ACT}
+ {-570740400 -14400 1 ACST}
+ {-560203200 -18000 0 ACT}
+ {-539118000 -14400 1 ACST}
+ {-531345600 -18000 0 ACT}
+ {-191358000 -14400 1 ACST}
+ {-184190400 -18000 0 ACT}
+ {-155156400 -14400 1 ACST}
+ {-150062400 -18000 0 ACT}
+ {-128890800 -14400 1 ACST}
+ {-121118400 -18000 0 ACT}
+ {-99946800 -14400 1 ACST}
+ {-89582400 -18000 0 ACT}
+ {-68410800 -14400 1 ACST}
+ {-57960000 -18000 0 ACT}
+ {499755600 -14400 1 ACST}
+ {511243200 -18000 0 ACT}
+ {530600400 -14400 1 ACST}
+ {540273600 -18000 0 ACT}
+ {562136400 -14400 1 ACST}
+ {571204800 -18000 0 ACT}
+ {590040000 -18000 0 ACT}
+ {749192400 -18000 0 ACT}
+ {750834000 -14400 1 ACST}
+ {761716800 -18000 0 ACT}
+ {780206400 -18000 0 ACT}
+ {1214283600 -14400 0 AMT}
+}
diff --git a/library/tzdata/America/El_Salvador b/library/tzdata/America/El_Salvador
new file mode 100644
index 0000000..75d8129
--- /dev/null
+++ b/library/tzdata/America/El_Salvador
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/El_Salvador) {
+ {-9223372036854775808 -21408 0 LMT}
+ {-1546279392 -21600 0 CST}
+ {547020000 -18000 1 CDT}
+ {559717200 -21600 0 CST}
+ {578469600 -18000 1 CDT}
+ {591166800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Ensenada b/library/tzdata/America/Ensenada
new file mode 100644
index 0000000..f600305
--- /dev/null
+++ b/library/tzdata/America/Ensenada
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Tijuana)]} {
+ LoadTimeZoneFile America/Tijuana
+}
+set TZData(:America/Ensenada) $TZData(:America/Tijuana)
diff --git a/library/tzdata/America/Fort_Wayne b/library/tzdata/America/Fort_Wayne
new file mode 100644
index 0000000..9514d57
--- /dev/null
+++ b/library/tzdata/America/Fort_Wayne
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Indiana/Indianapolis)]} {
+ LoadTimeZoneFile America/Indiana/Indianapolis
+}
+set TZData(:America/Fort_Wayne) $TZData(:America/Indiana/Indianapolis)
diff --git a/library/tzdata/America/Fortaleza b/library/tzdata/America/Fortaleza
new file mode 100644
index 0000000..581faa5
--- /dev/null
+++ b/library/tzdata/America/Fortaleza
@@ -0,0 +1,48 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Fortaleza) {
+ {-9223372036854775808 -9240 0 LMT}
+ {-1767216360 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-191365200 -7200 1 BRST}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {592974000 -7200 1 BRST}
+ {602042400 -10800 0 BRT}
+ {624423600 -7200 1 BRST}
+ {634701600 -10800 0 BRT}
+ {653536800 -10800 0 BRT}
+ {938660400 -10800 0 BRT}
+ {938919600 -7200 1 BRST}
+ {951616800 -10800 0 BRT}
+ {970974000 -7200 1 BRST}
+ {972180000 -10800 0 BRT}
+ {1000350000 -10800 0 BRT}
+ {1003028400 -7200 1 BRST}
+ {1013911200 -10800 0 BRT}
+ {1033437600 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Glace_Bay b/library/tzdata/America/Glace_Bay
new file mode 100644
index 0000000..8ee9eec
--- /dev/null
+++ b/library/tzdata/America/Glace_Bay
@@ -0,0 +1,273 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Glace_Bay) {
+ {-9223372036854775808 -14388 0 LMT}
+ {-2131646412 -14400 0 AST}
+ {-1632074400 -10800 1 ADT}
+ {-1615143600 -14400 0 AST}
+ {-880221600 -10800 1 AWT}
+ {-769395600 -10800 1 APT}
+ {-765399600 -14400 0 AST}
+ {-536443200 -14400 0 AST}
+ {-526500000 -10800 1 ADT}
+ {-513198000 -14400 0 AST}
+ {-504907200 -14400 0 AST}
+ {63086400 -14400 0 AST}
+ {73461600 -10800 1 ADT}
+ {89182800 -14400 0 AST}
+ {104911200 -10800 1 ADT}
+ {120632400 -14400 0 AST}
+ {126244800 -14400 0 AST}
+ {136360800 -10800 1 ADT}
+ {152082000 -14400 0 AST}
+ {167810400 -10800 1 ADT}
+ {183531600 -14400 0 AST}
+ {199260000 -10800 1 ADT}
+ {215586000 -14400 0 AST}
+ {230709600 -10800 1 ADT}
+ {247035600 -14400 0 AST}
+ {262764000 -10800 1 ADT}
+ {278485200 -14400 0 AST}
+ {294213600 -10800 1 ADT}
+ {309934800 -14400 0 AST}
+ {325663200 -10800 1 ADT}
+ {341384400 -14400 0 AST}
+ {357112800 -10800 1 ADT}
+ {372834000 -14400 0 AST}
+ {388562400 -10800 1 ADT}
+ {404888400 -14400 0 AST}
+ {420012000 -10800 1 ADT}
+ {436338000 -14400 0 AST}
+ {452066400 -10800 1 ADT}
+ {467787600 -14400 0 AST}
+ {483516000 -10800 1 ADT}
+ {499237200 -14400 0 AST}
+ {514965600 -10800 1 ADT}
+ {530686800 -14400 0 AST}
+ {544600800 -10800 1 ADT}
+ {562136400 -14400 0 AST}
+ {576050400 -10800 1 ADT}
+ {594190800 -14400 0 AST}
+ {607500000 -10800 1 ADT}
+ {625640400 -14400 0 AST}
+ {638949600 -10800 1 ADT}
+ {657090000 -14400 0 AST}
+ {671004000 -10800 1 ADT}
+ {688539600 -14400 0 AST}
+ {702453600 -10800 1 ADT}
+ {719989200 -14400 0 AST}
+ {733903200 -10800 1 ADT}
+ {752043600 -14400 0 AST}
+ {765352800 -10800 1 ADT}
+ {783493200 -14400 0 AST}
+ {796802400 -10800 1 ADT}
+ {814942800 -14400 0 AST}
+ {828856800 -10800 1 ADT}
+ {846392400 -14400 0 AST}
+ {860306400 -10800 1 ADT}
+ {877842000 -14400 0 AST}
+ {891756000 -10800 1 ADT}
+ {909291600 -14400 0 AST}
+ {923205600 -10800 1 ADT}
+ {941346000 -14400 0 AST}
+ {954655200 -10800 1 ADT}
+ {972795600 -14400 0 AST}
+ {986104800 -10800 1 ADT}
+ {1004245200 -14400 0 AST}
+ {1018159200 -10800 1 ADT}
+ {1035694800 -14400 0 AST}
+ {1049608800 -10800 1 ADT}
+ {1067144400 -14400 0 AST}
+ {1081058400 -10800 1 ADT}
+ {1099198800 -14400 0 AST}
+ {1112508000 -10800 1 ADT}
+ {1130648400 -14400 0 AST}
+ {1143957600 -10800 1 ADT}
+ {1162098000 -14400 0 AST}
+ {1173592800 -10800 1 ADT}
+ {1194152400 -14400 0 AST}
+ {1205042400 -10800 1 ADT}
+ {1225602000 -14400 0 AST}
+ {1236492000 -10800 1 ADT}
+ {1257051600 -14400 0 AST}
+ {1268546400 -10800 1 ADT}
+ {1289106000 -14400 0 AST}
+ {1299996000 -10800 1 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Godthab b/library/tzdata/America/Godthab
new file mode 100644
index 0000000..3c003cc
--- /dev/null
+++ b/library/tzdata/America/Godthab
@@ -0,0 +1,246 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Godthab) {
+ {-9223372036854775808 -12416 0 LMT}
+ {-1686083584 -10800 0 WGT}
+ {323845200 -7200 0 WGST}
+ {338950800 -10800 0 WGT}
+ {354675600 -7200 1 WGST}
+ {370400400 -10800 0 WGT}
+ {386125200 -7200 1 WGST}
+ {401850000 -10800 0 WGT}
+ {417574800 -7200 1 WGST}
+ {433299600 -10800 0 WGT}
+ {449024400 -7200 1 WGST}
+ {465354000 -10800 0 WGT}
+ {481078800 -7200 1 WGST}
+ {496803600 -10800 0 WGT}
+ {512528400 -7200 1 WGST}
+ {528253200 -10800 0 WGT}
+ {543978000 -7200 1 WGST}
+ {559702800 -10800 0 WGT}
+ {575427600 -7200 1 WGST}
+ {591152400 -10800 0 WGT}
+ {606877200 -7200 1 WGST}
+ {622602000 -10800 0 WGT}
+ {638326800 -7200 1 WGST}
+ {654656400 -10800 0 WGT}
+ {670381200 -7200 1 WGST}
+ {686106000 -10800 0 WGT}
+ {701830800 -7200 1 WGST}
+ {717555600 -10800 0 WGT}
+ {733280400 -7200 1 WGST}
+ {749005200 -10800 0 WGT}
+ {764730000 -7200 1 WGST}
+ {780454800 -10800 0 WGT}
+ {796179600 -7200 1 WGST}
+ {811904400 -10800 0 WGT}
+ {828234000 -7200 1 WGST}
+ {846378000 -10800 0 WGT}
+ {859683600 -7200 1 WGST}
+ {877827600 -10800 0 WGT}
+ {891133200 -7200 1 WGST}
+ {909277200 -10800 0 WGT}
+ {922582800 -7200 1 WGST}
+ {941331600 -10800 0 WGT}
+ {954032400 -7200 1 WGST}
+ {972781200 -10800 0 WGT}
+ {985482000 -7200 1 WGST}
+ {1004230800 -10800 0 WGT}
+ {1017536400 -7200 1 WGST}
+ {1035680400 -10800 0 WGT}
+ {1048986000 -7200 1 WGST}
+ {1067130000 -10800 0 WGT}
+ {1080435600 -7200 1 WGST}
+ {1099184400 -10800 0 WGT}
+ {1111885200 -7200 1 WGST}
+ {1130634000 -10800 0 WGT}
+ {1143334800 -7200 1 WGST}
+ {1162083600 -10800 0 WGT}
+ {1174784400 -7200 1 WGST}
+ {1193533200 -10800 0 WGT}
+ {1206838800 -7200 1 WGST}
+ {1224982800 -10800 0 WGT}
+ {1238288400 -7200 1 WGST}
+ {1256432400 -10800 0 WGT}
+ {1269738000 -7200 1 WGST}
+ {1288486800 -10800 0 WGT}
+ {1301187600 -7200 1 WGST}
+ {1319936400 -10800 0 WGT}
+ {1332637200 -7200 1 WGST}
+ {1351386000 -10800 0 WGT}
+ {1364691600 -7200 1 WGST}
+ {1382835600 -10800 0 WGT}
+ {1396141200 -7200 1 WGST}
+ {1414285200 -10800 0 WGT}
+ {1427590800 -7200 1 WGST}
+ {1445734800 -10800 0 WGT}
+ {1459040400 -7200 1 WGST}
+ {1477789200 -10800 0 WGT}
+ {1490490000 -7200 1 WGST}
+ {1509238800 -10800 0 WGT}
+ {1521939600 -7200 1 WGST}
+ {1540688400 -10800 0 WGT}
+ {1553994000 -7200 1 WGST}
+ {1572138000 -10800 0 WGT}
+ {1585443600 -7200 1 WGST}
+ {1603587600 -10800 0 WGT}
+ {1616893200 -7200 1 WGST}
+ {1635642000 -10800 0 WGT}
+ {1648342800 -7200 1 WGST}
+ {1667091600 -10800 0 WGT}
+ {1679792400 -7200 1 WGST}
+ {1698541200 -10800 0 WGT}
+ {1711846800 -7200 1 WGST}
+ {1729990800 -10800 0 WGT}
+ {1743296400 -7200 1 WGST}
+ {1761440400 -10800 0 WGT}
+ {1774746000 -7200 1 WGST}
+ {1792890000 -10800 0 WGT}
+ {1806195600 -7200 1 WGST}
+ {1824944400 -10800 0 WGT}
+ {1837645200 -7200 1 WGST}
+ {1856394000 -10800 0 WGT}
+ {1869094800 -7200 1 WGST}
+ {1887843600 -10800 0 WGT}
+ {1901149200 -7200 1 WGST}
+ {1919293200 -10800 0 WGT}
+ {1932598800 -7200 1 WGST}
+ {1950742800 -10800 0 WGT}
+ {1964048400 -7200 1 WGST}
+ {1982797200 -10800 0 WGT}
+ {1995498000 -7200 1 WGST}
+ {2014246800 -10800 0 WGT}
+ {2026947600 -7200 1 WGST}
+ {2045696400 -10800 0 WGT}
+ {2058397200 -7200 1 WGST}
+ {2077146000 -10800 0 WGT}
+ {2090451600 -7200 1 WGST}
+ {2108595600 -10800 0 WGT}
+ {2121901200 -7200 1 WGST}
+ {2140045200 -10800 0 WGT}
+ {2153350800 -7200 1 WGST}
+ {2172099600 -10800 0 WGT}
+ {2184800400 -7200 1 WGST}
+ {2203549200 -10800 0 WGT}
+ {2216250000 -7200 1 WGST}
+ {2234998800 -10800 0 WGT}
+ {2248304400 -7200 1 WGST}
+ {2266448400 -10800 0 WGT}
+ {2279754000 -7200 1 WGST}
+ {2297898000 -10800 0 WGT}
+ {2311203600 -7200 1 WGST}
+ {2329347600 -10800 0 WGT}
+ {2342653200 -7200 1 WGST}
+ {2361402000 -10800 0 WGT}
+ {2374102800 -7200 1 WGST}
+ {2392851600 -10800 0 WGT}
+ {2405552400 -7200 1 WGST}
+ {2424301200 -10800 0 WGT}
+ {2437606800 -7200 1 WGST}
+ {2455750800 -10800 0 WGT}
+ {2469056400 -7200 1 WGST}
+ {2487200400 -10800 0 WGT}
+ {2500506000 -7200 1 WGST}
+ {2519254800 -10800 0 WGT}
+ {2531955600 -7200 1 WGST}
+ {2550704400 -10800 0 WGT}
+ {2563405200 -7200 1 WGST}
+ {2582154000 -10800 0 WGT}
+ {2595459600 -7200 1 WGST}
+ {2613603600 -10800 0 WGT}
+ {2626909200 -7200 1 WGST}
+ {2645053200 -10800 0 WGT}
+ {2658358800 -7200 1 WGST}
+ {2676502800 -10800 0 WGT}
+ {2689808400 -7200 1 WGST}
+ {2708557200 -10800 0 WGT}
+ {2721258000 -7200 1 WGST}
+ {2740006800 -10800 0 WGT}
+ {2752707600 -7200 1 WGST}
+ {2771456400 -10800 0 WGT}
+ {2784762000 -7200 1 WGST}
+ {2802906000 -10800 0 WGT}
+ {2816211600 -7200 1 WGST}
+ {2834355600 -10800 0 WGT}
+ {2847661200 -7200 1 WGST}
+ {2866410000 -10800 0 WGT}
+ {2879110800 -7200 1 WGST}
+ {2897859600 -10800 0 WGT}
+ {2910560400 -7200 1 WGST}
+ {2929309200 -10800 0 WGT}
+ {2942010000 -7200 1 WGST}
+ {2960758800 -10800 0 WGT}
+ {2974064400 -7200 1 WGST}
+ {2992208400 -10800 0 WGT}
+ {3005514000 -7200 1 WGST}
+ {3023658000 -10800 0 WGT}
+ {3036963600 -7200 1 WGST}
+ {3055712400 -10800 0 WGT}
+ {3068413200 -7200 1 WGST}
+ {3087162000 -10800 0 WGT}
+ {3099862800 -7200 1 WGST}
+ {3118611600 -10800 0 WGT}
+ {3131917200 -7200 1 WGST}
+ {3150061200 -10800 0 WGT}
+ {3163366800 -7200 1 WGST}
+ {3181510800 -10800 0 WGT}
+ {3194816400 -7200 1 WGST}
+ {3212960400 -10800 0 WGT}
+ {3226266000 -7200 1 WGST}
+ {3245014800 -10800 0 WGT}
+ {3257715600 -7200 1 WGST}
+ {3276464400 -10800 0 WGT}
+ {3289165200 -7200 1 WGST}
+ {3307914000 -10800 0 WGT}
+ {3321219600 -7200 1 WGST}
+ {3339363600 -10800 0 WGT}
+ {3352669200 -7200 1 WGST}
+ {3370813200 -10800 0 WGT}
+ {3384118800 -7200 1 WGST}
+ {3402867600 -10800 0 WGT}
+ {3415568400 -7200 1 WGST}
+ {3434317200 -10800 0 WGT}
+ {3447018000 -7200 1 WGST}
+ {3465766800 -10800 0 WGT}
+ {3479072400 -7200 1 WGST}
+ {3497216400 -10800 0 WGT}
+ {3510522000 -7200 1 WGST}
+ {3528666000 -10800 0 WGT}
+ {3541971600 -7200 1 WGST}
+ {3560115600 -10800 0 WGT}
+ {3573421200 -7200 1 WGST}
+ {3592170000 -10800 0 WGT}
+ {3604870800 -7200 1 WGST}
+ {3623619600 -10800 0 WGT}
+ {3636320400 -7200 1 WGST}
+ {3655069200 -10800 0 WGT}
+ {3668374800 -7200 1 WGST}
+ {3686518800 -10800 0 WGT}
+ {3699824400 -7200 1 WGST}
+ {3717968400 -10800 0 WGT}
+ {3731274000 -7200 1 WGST}
+ {3750022800 -10800 0 WGT}
+ {3762723600 -7200 1 WGST}
+ {3781472400 -10800 0 WGT}
+ {3794173200 -7200 1 WGST}
+ {3812922000 -10800 0 WGT}
+ {3825622800 -7200 1 WGST}
+ {3844371600 -10800 0 WGT}
+ {3857677200 -7200 1 WGST}
+ {3875821200 -10800 0 WGT}
+ {3889126800 -7200 1 WGST}
+ {3907270800 -10800 0 WGT}
+ {3920576400 -7200 1 WGST}
+ {3939325200 -10800 0 WGT}
+ {3952026000 -7200 1 WGST}
+ {3970774800 -10800 0 WGT}
+ {3983475600 -7200 1 WGST}
+ {4002224400 -10800 0 WGT}
+ {4015530000 -7200 1 WGST}
+ {4033674000 -10800 0 WGT}
+ {4046979600 -7200 1 WGST}
+ {4065123600 -10800 0 WGT}
+ {4078429200 -7200 1 WGST}
+ {4096573200 -10800 0 WGT}
+}
diff --git a/library/tzdata/America/Goose_Bay b/library/tzdata/America/Goose_Bay
new file mode 100644
index 0000000..7b7b3d8
--- /dev/null
+++ b/library/tzdata/America/Goose_Bay
@@ -0,0 +1,338 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Goose_Bay) {
+ {-9223372036854775808 -14500 0 LMT}
+ {-2713895900 -12652 0 NST}
+ {-1640982548 -12652 0 NST}
+ {-1632076148 -9052 1 NDT}
+ {-1615145348 -12652 0 NST}
+ {-1609446548 -12652 0 NST}
+ {-1096921748 -12600 0 NST}
+ {-1072989000 -12600 0 NST}
+ {-1061670600 -9000 1 NDT}
+ {-1048973400 -12600 0 NST}
+ {-1030221000 -9000 1 NDT}
+ {-1017523800 -12600 0 NST}
+ {-998771400 -9000 1 NDT}
+ {-986074200 -12600 0 NST}
+ {-966717000 -9000 1 NDT}
+ {-954624600 -12600 0 NST}
+ {-935267400 -9000 1 NDT}
+ {-922570200 -12600 0 NST}
+ {-903817800 -9000 1 NDT}
+ {-891120600 -12600 0 NST}
+ {-872368200 -9000 0 NWT}
+ {-769395600 -9000 1 NPT}
+ {-765401400 -12600 0 NST}
+ {-757369800 -12600 0 NST}
+ {-746044200 -9000 1 NDT}
+ {-733347000 -12600 0 NST}
+ {-714594600 -9000 1 NDT}
+ {-701897400 -12600 0 NST}
+ {-683145000 -9000 1 NDT}
+ {-670447800 -12600 0 NST}
+ {-651695400 -9000 1 NDT}
+ {-638998200 -12600 0 NST}
+ {-619641000 -9000 1 NDT}
+ {-606943800 -12600 0 NST}
+ {-589401000 -9000 1 NDT}
+ {-576099000 -12600 0 NST}
+ {-557951400 -9000 1 NDT}
+ {-544649400 -12600 0 NST}
+ {-526501800 -9000 1 NDT}
+ {-513199800 -12600 0 NST}
+ {-495052200 -9000 1 NDT}
+ {-481750200 -12600 0 NST}
+ {-463602600 -9000 1 NDT}
+ {-450300600 -12600 0 NST}
+ {-431548200 -9000 1 NDT}
+ {-418246200 -12600 0 NST}
+ {-400098600 -9000 1 NDT}
+ {-386796600 -12600 0 NST}
+ {-368649000 -9000 1 NDT}
+ {-355347000 -12600 0 NST}
+ {-337199400 -9000 1 NDT}
+ {-323897400 -12600 0 NST}
+ {-305749800 -9000 1 NDT}
+ {-289423800 -12600 0 NST}
+ {-273695400 -9000 1 NDT}
+ {-257974200 -12600 0 NST}
+ {-242245800 -9000 1 NDT}
+ {-226524600 -12600 0 NST}
+ {-210796200 -9000 1 NDT}
+ {-195075000 -12600 0 NST}
+ {-179346600 -9000 1 NDT}
+ {-163625400 -12600 0 NST}
+ {-147897000 -9000 1 NDT}
+ {-131571000 -12600 0 NST}
+ {-119903400 -14400 0 AST}
+ {-116445600 -10800 1 ADT}
+ {-100119600 -14400 0 AST}
+ {-84391200 -10800 1 ADT}
+ {-68670000 -14400 0 AST}
+ {-52941600 -10800 1 ADT}
+ {-37220400 -14400 0 AST}
+ {-21492000 -10800 1 ADT}
+ {-5770800 -14400 0 AST}
+ {9957600 -10800 1 ADT}
+ {25678800 -14400 0 AST}
+ {41407200 -10800 1 ADT}
+ {57733200 -14400 0 AST}
+ {73461600 -10800 1 ADT}
+ {89182800 -14400 0 AST}
+ {104911200 -10800 1 ADT}
+ {120632400 -14400 0 AST}
+ {136360800 -10800 1 ADT}
+ {152082000 -14400 0 AST}
+ {167810400 -10800 1 ADT}
+ {183531600 -14400 0 AST}
+ {199260000 -10800 1 ADT}
+ {215586000 -14400 0 AST}
+ {230709600 -10800 1 ADT}
+ {247035600 -14400 0 AST}
+ {262764000 -10800 1 ADT}
+ {278485200 -14400 0 AST}
+ {294213600 -10800 1 ADT}
+ {309934800 -14400 0 AST}
+ {325663200 -10800 1 ADT}
+ {341384400 -14400 0 AST}
+ {357112800 -10800 1 ADT}
+ {372834000 -14400 0 AST}
+ {388562400 -10800 1 ADT}
+ {404888400 -14400 0 AST}
+ {420012000 -10800 1 ADT}
+ {436338000 -14400 0 AST}
+ {452066400 -10800 1 ADT}
+ {467787600 -14400 0 AST}
+ {483516000 -10800 1 ADT}
+ {499237200 -14400 0 AST}
+ {514965600 -10800 1 ADT}
+ {530686800 -14400 0 AST}
+ {544593660 -10800 1 ADT}
+ {562129260 -14400 0 AST}
+ {576043260 -7200 1 ADDT}
+ {594180060 -14400 0 AST}
+ {607492860 -10800 1 ADT}
+ {625633260 -14400 0 AST}
+ {638942460 -10800 1 ADT}
+ {657082860 -14400 0 AST}
+ {670996860 -10800 1 ADT}
+ {688532460 -14400 0 AST}
+ {702446460 -10800 1 ADT}
+ {719982060 -14400 0 AST}
+ {733896060 -10800 1 ADT}
+ {752036460 -14400 0 AST}
+ {765345660 -10800 1 ADT}
+ {783486060 -14400 0 AST}
+ {796795260 -10800 1 ADT}
+ {814935660 -14400 0 AST}
+ {828849660 -10800 1 ADT}
+ {846385260 -14400 0 AST}
+ {860299260 -10800 1 ADT}
+ {877834860 -14400 0 AST}
+ {891748860 -10800 1 ADT}
+ {909284460 -14400 0 AST}
+ {923198460 -10800 1 ADT}
+ {941338860 -14400 0 AST}
+ {954648060 -10800 1 ADT}
+ {972788460 -14400 0 AST}
+ {986097660 -10800 1 ADT}
+ {1004238060 -14400 0 AST}
+ {1018152060 -10800 1 ADT}
+ {1035687660 -14400 0 AST}
+ {1049601660 -10800 1 ADT}
+ {1067137260 -14400 0 AST}
+ {1081051260 -10800 1 ADT}
+ {1099191660 -14400 0 AST}
+ {1112500860 -10800 1 ADT}
+ {1130641260 -14400 0 AST}
+ {1143950460 -10800 1 ADT}
+ {1162090860 -14400 0 AST}
+ {1173585660 -10800 1 ADT}
+ {1194145260 -14400 0 AST}
+ {1205035260 -10800 1 ADT}
+ {1225594860 -14400 0 AST}
+ {1236484860 -10800 1 ADT}
+ {1257044460 -14400 0 AST}
+ {1268539260 -10800 1 ADT}
+ {1289098860 -14400 0 AST}
+ {1299988860 -10800 1 ADT}
+ {1320116400 -10800 0 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Grand_Turk b/library/tzdata/America/Grand_Turk
new file mode 100644
index 0000000..6c8ea4a
--- /dev/null
+++ b/library/tzdata/America/Grand_Turk
@@ -0,0 +1,249 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Grand_Turk) {
+ {-9223372036854775808 -17072 0 LMT}
+ {-2524504528 -18431 0 KMT}
+ {-1827687169 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Grenada b/library/tzdata/America/Grenada
new file mode 100644
index 0000000..92300c3
--- /dev/null
+++ b/library/tzdata/America/Grenada
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Grenada) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Guadeloupe b/library/tzdata/America/Guadeloupe
new file mode 100644
index 0000000..aba6bd7
--- /dev/null
+++ b/library/tzdata/America/Guadeloupe
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Guadeloupe) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Guatemala b/library/tzdata/America/Guatemala
new file mode 100644
index 0000000..e4db5ac
--- /dev/null
+++ b/library/tzdata/America/Guatemala
@@ -0,0 +1,14 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Guatemala) {
+ {-9223372036854775808 -21724 0 LMT}
+ {-1617040676 -21600 0 CST}
+ {123055200 -18000 1 CDT}
+ {130914000 -21600 0 CST}
+ {422344800 -18000 1 CDT}
+ {433054800 -21600 0 CST}
+ {669708000 -18000 1 CDT}
+ {684219600 -21600 0 CST}
+ {1146376800 -18000 1 CDT}
+ {1159678800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Guayaquil b/library/tzdata/America/Guayaquil
new file mode 100644
index 0000000..e940a5b
--- /dev/null
+++ b/library/tzdata/America/Guayaquil
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Guayaquil) {
+ {-9223372036854775808 -19160 0 LMT}
+ {-2524502440 -18840 0 QMT}
+ {-1230749160 -18000 0 ECT}
+}
diff --git a/library/tzdata/America/Guyana b/library/tzdata/America/Guyana
new file mode 100644
index 0000000..c58a989
--- /dev/null
+++ b/library/tzdata/America/Guyana
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Guyana) {
+ {-9223372036854775808 -13960 0 LMT}
+ {-1730578040 -13500 0 GBGT}
+ {-113688900 -13500 0 GYT}
+ {176010300 -10800 0 GYT}
+ {662698800 -14400 0 GYT}
+}
diff --git a/library/tzdata/America/Halifax b/library/tzdata/America/Halifax
new file mode 100644
index 0000000..08e3754
--- /dev/null
+++ b/library/tzdata/America/Halifax
@@ -0,0 +1,361 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Halifax) {
+ {-9223372036854775808 -15264 0 LMT}
+ {-2131645536 -14400 0 AST}
+ {-1696276800 -10800 1 ADT}
+ {-1680469200 -14400 0 AST}
+ {-1640980800 -14400 0 AST}
+ {-1632074400 -10800 1 ADT}
+ {-1615143600 -14400 0 AST}
+ {-1609444800 -14400 0 AST}
+ {-1566763200 -10800 1 ADT}
+ {-1557090000 -14400 0 AST}
+ {-1535486400 -10800 1 ADT}
+ {-1524949200 -14400 0 AST}
+ {-1504468800 -10800 1 ADT}
+ {-1493413200 -14400 0 AST}
+ {-1472414400 -10800 1 ADT}
+ {-1461963600 -14400 0 AST}
+ {-1440964800 -10800 1 ADT}
+ {-1429390800 -14400 0 AST}
+ {-1409515200 -10800 1 ADT}
+ {-1396731600 -14400 0 AST}
+ {-1376856000 -10800 1 ADT}
+ {-1366491600 -14400 0 AST}
+ {-1346616000 -10800 1 ADT}
+ {-1333832400 -14400 0 AST}
+ {-1313956800 -10800 1 ADT}
+ {-1303678800 -14400 0 AST}
+ {-1282507200 -10800 1 ADT}
+ {-1272661200 -14400 0 AST}
+ {-1251057600 -10800 1 ADT}
+ {-1240088400 -14400 0 AST}
+ {-1219608000 -10800 1 ADT}
+ {-1207429200 -14400 0 AST}
+ {-1188763200 -10800 1 ADT}
+ {-1175979600 -14400 0 AST}
+ {-1157313600 -10800 1 ADT}
+ {-1143925200 -14400 0 AST}
+ {-1124049600 -10800 1 ADT}
+ {-1113771600 -14400 0 AST}
+ {-1091390400 -10800 1 ADT}
+ {-1081026000 -14400 0 AST}
+ {-1059854400 -10800 1 ADT}
+ {-1050786000 -14400 0 AST}
+ {-1030910400 -10800 1 ADT}
+ {-1018126800 -14400 0 AST}
+ {-999460800 -10800 1 ADT}
+ {-986677200 -14400 0 AST}
+ {-965592000 -10800 1 ADT}
+ {-955227600 -14400 0 AST}
+ {-935956800 -10800 1 ADT}
+ {-923173200 -14400 0 AST}
+ {-904507200 -10800 1 ADT}
+ {-891723600 -14400 0 AST}
+ {-880221600 -10800 0 AWT}
+ {-769395600 -10800 1 APT}
+ {-765399600 -14400 0 AST}
+ {-757368000 -14400 0 AST}
+ {-747252000 -10800 1 ADT}
+ {-733950000 -14400 0 AST}
+ {-715802400 -10800 1 ADT}
+ {-702500400 -14400 0 AST}
+ {-684352800 -10800 1 ADT}
+ {-671050800 -14400 0 AST}
+ {-652903200 -10800 1 ADT}
+ {-639601200 -14400 0 AST}
+ {-589399200 -10800 1 ADT}
+ {-576097200 -14400 0 AST}
+ {-557949600 -10800 1 ADT}
+ {-544647600 -14400 0 AST}
+ {-526500000 -10800 1 ADT}
+ {-513198000 -14400 0 AST}
+ {-495050400 -10800 1 ADT}
+ {-481748400 -14400 0 AST}
+ {-431546400 -10800 1 ADT}
+ {-418244400 -14400 0 AST}
+ {-400096800 -10800 1 ADT}
+ {-386794800 -14400 0 AST}
+ {-368647200 -10800 1 ADT}
+ {-355345200 -14400 0 AST}
+ {-337197600 -10800 1 ADT}
+ {-323895600 -14400 0 AST}
+ {-242244000 -10800 1 ADT}
+ {-226522800 -14400 0 AST}
+ {-210794400 -10800 1 ADT}
+ {-195073200 -14400 0 AST}
+ {-179344800 -10800 1 ADT}
+ {-163623600 -14400 0 AST}
+ {-147895200 -10800 1 ADT}
+ {-131569200 -14400 0 AST}
+ {-116445600 -10800 1 ADT}
+ {-100119600 -14400 0 AST}
+ {-84391200 -10800 1 ADT}
+ {-68670000 -14400 0 AST}
+ {-52941600 -10800 1 ADT}
+ {-37220400 -14400 0 AST}
+ {-21492000 -10800 1 ADT}
+ {-5770800 -14400 0 AST}
+ {9957600 -10800 1 ADT}
+ {25678800 -14400 0 AST}
+ {41407200 -10800 1 ADT}
+ {57733200 -14400 0 AST}
+ {73461600 -10800 1 ADT}
+ {89182800 -14400 0 AST}
+ {104911200 -10800 1 ADT}
+ {120632400 -14400 0 AST}
+ {126244800 -14400 0 AST}
+ {136360800 -10800 1 ADT}
+ {152082000 -14400 0 AST}
+ {167810400 -10800 1 ADT}
+ {183531600 -14400 0 AST}
+ {199260000 -10800 1 ADT}
+ {215586000 -14400 0 AST}
+ {230709600 -10800 1 ADT}
+ {247035600 -14400 0 AST}
+ {262764000 -10800 1 ADT}
+ {278485200 -14400 0 AST}
+ {294213600 -10800 1 ADT}
+ {309934800 -14400 0 AST}
+ {325663200 -10800 1 ADT}
+ {341384400 -14400 0 AST}
+ {357112800 -10800 1 ADT}
+ {372834000 -14400 0 AST}
+ {388562400 -10800 1 ADT}
+ {404888400 -14400 0 AST}
+ {420012000 -10800 1 ADT}
+ {436338000 -14400 0 AST}
+ {452066400 -10800 1 ADT}
+ {467787600 -14400 0 AST}
+ {483516000 -10800 1 ADT}
+ {499237200 -14400 0 AST}
+ {514965600 -10800 1 ADT}
+ {530686800 -14400 0 AST}
+ {544600800 -10800 1 ADT}
+ {562136400 -14400 0 AST}
+ {576050400 -10800 1 ADT}
+ {594190800 -14400 0 AST}
+ {607500000 -10800 1 ADT}
+ {625640400 -14400 0 AST}
+ {638949600 -10800 1 ADT}
+ {657090000 -14400 0 AST}
+ {671004000 -10800 1 ADT}
+ {688539600 -14400 0 AST}
+ {702453600 -10800 1 ADT}
+ {719989200 -14400 0 AST}
+ {733903200 -10800 1 ADT}
+ {752043600 -14400 0 AST}
+ {765352800 -10800 1 ADT}
+ {783493200 -14400 0 AST}
+ {796802400 -10800 1 ADT}
+ {814942800 -14400 0 AST}
+ {828856800 -10800 1 ADT}
+ {846392400 -14400 0 AST}
+ {860306400 -10800 1 ADT}
+ {877842000 -14400 0 AST}
+ {891756000 -10800 1 ADT}
+ {909291600 -14400 0 AST}
+ {923205600 -10800 1 ADT}
+ {941346000 -14400 0 AST}
+ {954655200 -10800 1 ADT}
+ {972795600 -14400 0 AST}
+ {986104800 -10800 1 ADT}
+ {1004245200 -14400 0 AST}
+ {1018159200 -10800 1 ADT}
+ {1035694800 -14400 0 AST}
+ {1049608800 -10800 1 ADT}
+ {1067144400 -14400 0 AST}
+ {1081058400 -10800 1 ADT}
+ {1099198800 -14400 0 AST}
+ {1112508000 -10800 1 ADT}
+ {1130648400 -14400 0 AST}
+ {1143957600 -10800 1 ADT}
+ {1162098000 -14400 0 AST}
+ {1173592800 -10800 1 ADT}
+ {1194152400 -14400 0 AST}
+ {1205042400 -10800 1 ADT}
+ {1225602000 -14400 0 AST}
+ {1236492000 -10800 1 ADT}
+ {1257051600 -14400 0 AST}
+ {1268546400 -10800 1 ADT}
+ {1289106000 -14400 0 AST}
+ {1299996000 -10800 1 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Havana b/library/tzdata/America/Havana
new file mode 100644
index 0000000..89cbc9a
--- /dev/null
+++ b/library/tzdata/America/Havana
@@ -0,0 +1,285 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Havana) {
+ {-9223372036854775808 -19768 0 LMT}
+ {-2524501832 -19776 0 HMT}
+ {-1402813824 -18000 0 CST}
+ {-1311534000 -14400 1 CDT}
+ {-1300996800 -18000 0 CST}
+ {-933534000 -14400 1 CDT}
+ {-925675200 -18000 0 CST}
+ {-902084400 -14400 1 CDT}
+ {-893620800 -18000 0 CST}
+ {-870030000 -14400 1 CDT}
+ {-862171200 -18000 0 CST}
+ {-775681200 -14400 1 CDT}
+ {-767822400 -18000 0 CST}
+ {-744231600 -14400 1 CDT}
+ {-736372800 -18000 0 CST}
+ {-144702000 -14400 1 CDT}
+ {-134251200 -18000 0 CST}
+ {-113425200 -14400 1 CDT}
+ {-102542400 -18000 0 CST}
+ {-86295600 -14400 1 CDT}
+ {-72907200 -18000 0 CST}
+ {-54154800 -14400 1 CDT}
+ {-41457600 -18000 0 CST}
+ {-21495600 -14400 1 CDT}
+ {-5774400 -18000 0 CST}
+ {9954000 -14400 1 CDT}
+ {25675200 -18000 0 CST}
+ {41403600 -14400 1 CDT}
+ {57729600 -18000 0 CST}
+ {73458000 -14400 1 CDT}
+ {87364800 -18000 0 CST}
+ {104907600 -14400 1 CDT}
+ {118900800 -18000 0 CST}
+ {136357200 -14400 1 CDT}
+ {150436800 -18000 0 CST}
+ {167806800 -14400 1 CDT}
+ {183528000 -18000 0 CST}
+ {199256400 -14400 1 CDT}
+ {215582400 -18000 0 CST}
+ {230706000 -14400 1 CDT}
+ {247032000 -18000 0 CST}
+ {263365200 -14400 1 CDT}
+ {276667200 -18000 0 CST}
+ {290581200 -14400 1 CDT}
+ {308721600 -18000 0 CST}
+ {322030800 -14400 1 CDT}
+ {340171200 -18000 0 CST}
+ {358318800 -14400 1 CDT}
+ {371620800 -18000 0 CST}
+ {389768400 -14400 1 CDT}
+ {403070400 -18000 0 CST}
+ {421218000 -14400 1 CDT}
+ {434520000 -18000 0 CST}
+ {452667600 -14400 1 CDT}
+ {466574400 -18000 0 CST}
+ {484117200 -14400 1 CDT}
+ {498024000 -18000 0 CST}
+ {511333200 -14400 1 CDT}
+ {529473600 -18000 0 CST}
+ {542782800 -14400 1 CDT}
+ {560923200 -18000 0 CST}
+ {574837200 -14400 1 CDT}
+ {592372800 -18000 0 CST}
+ {606286800 -14400 1 CDT}
+ {623822400 -18000 0 CST}
+ {638946000 -14400 1 CDT}
+ {655876800 -18000 0 CST}
+ {671000400 -14400 1 CDT}
+ {687330000 -18000 0 CST}
+ {702450000 -14400 1 CDT}
+ {718779600 -18000 0 CST}
+ {733899600 -14400 1 CDT}
+ {750229200 -18000 0 CST}
+ {765349200 -14400 1 CDT}
+ {781678800 -18000 0 CST}
+ {796798800 -14400 1 CDT}
+ {813128400 -18000 0 CST}
+ {828853200 -14400 1 CDT}
+ {844578000 -18000 0 CST}
+ {860302800 -14400 1 CDT}
+ {876632400 -18000 0 CST}
+ {891147600 -14400 1 CDT}
+ {909291600 -18000 0 CST}
+ {922597200 -14400 1 CDT}
+ {941346000 -18000 0 CST}
+ {954651600 -14400 1 CDT}
+ {972795600 -18000 0 CST}
+ {986101200 -14400 1 CDT}
+ {1004245200 -18000 0 CST}
+ {1018155600 -14400 1 CDT}
+ {1035694800 -18000 0 CST}
+ {1049605200 -14400 1 CDT}
+ {1067144400 -18000 0 CST}
+ {1081054800 -14400 1 CDT}
+ {1162098000 -18000 0 CST}
+ {1173589200 -14400 1 CDT}
+ {1193547600 -18000 0 CST}
+ {1205643600 -14400 1 CDT}
+ {1224997200 -18000 0 CST}
+ {1236488400 -14400 1 CDT}
+ {1256446800 -18000 0 CST}
+ {1268542800 -14400 1 CDT}
+ {1288501200 -18000 0 CST}
+ {1300597200 -14400 1 CDT}
+ {1321160400 -18000 0 CST}
+ {1333256400 -14400 1 CDT}
+ {1352005200 -18000 0 CST}
+ {1362891600 -14400 1 CDT}
+ {1383454800 -18000 0 CST}
+ {1394341200 -14400 1 CDT}
+ {1414904400 -18000 0 CST}
+ {1425790800 -14400 1 CDT}
+ {1446354000 -18000 0 CST}
+ {1457845200 -14400 1 CDT}
+ {1478408400 -18000 0 CST}
+ {1489294800 -14400 1 CDT}
+ {1509858000 -18000 0 CST}
+ {1520744400 -14400 1 CDT}
+ {1541307600 -18000 0 CST}
+ {1552194000 -14400 1 CDT}
+ {1572757200 -18000 0 CST}
+ {1583643600 -14400 1 CDT}
+ {1604206800 -18000 0 CST}
+ {1615698000 -14400 1 CDT}
+ {1636261200 -18000 0 CST}
+ {1647147600 -14400 1 CDT}
+ {1667710800 -18000 0 CST}
+ {1678597200 -14400 1 CDT}
+ {1699160400 -18000 0 CST}
+ {1710046800 -14400 1 CDT}
+ {1730610000 -18000 0 CST}
+ {1741496400 -14400 1 CDT}
+ {1762059600 -18000 0 CST}
+ {1772946000 -14400 1 CDT}
+ {1793509200 -18000 0 CST}
+ {1805000400 -14400 1 CDT}
+ {1825563600 -18000 0 CST}
+ {1836450000 -14400 1 CDT}
+ {1857013200 -18000 0 CST}
+ {1867899600 -14400 1 CDT}
+ {1888462800 -18000 0 CST}
+ {1899349200 -14400 1 CDT}
+ {1919912400 -18000 0 CST}
+ {1930798800 -14400 1 CDT}
+ {1951362000 -18000 0 CST}
+ {1962853200 -14400 1 CDT}
+ {1983416400 -18000 0 CST}
+ {1994302800 -14400 1 CDT}
+ {2014866000 -18000 0 CST}
+ {2025752400 -14400 1 CDT}
+ {2046315600 -18000 0 CST}
+ {2057202000 -14400 1 CDT}
+ {2077765200 -18000 0 CST}
+ {2088651600 -14400 1 CDT}
+ {2109214800 -18000 0 CST}
+ {2120101200 -14400 1 CDT}
+ {2140664400 -18000 0 CST}
+ {2152155600 -14400 1 CDT}
+ {2172718800 -18000 0 CST}
+ {2183605200 -14400 1 CDT}
+ {2204168400 -18000 0 CST}
+ {2215054800 -14400 1 CDT}
+ {2235618000 -18000 0 CST}
+ {2246504400 -14400 1 CDT}
+ {2267067600 -18000 0 CST}
+ {2277954000 -14400 1 CDT}
+ {2298517200 -18000 0 CST}
+ {2309403600 -14400 1 CDT}
+ {2329966800 -18000 0 CST}
+ {2341458000 -14400 1 CDT}
+ {2362021200 -18000 0 CST}
+ {2372907600 -14400 1 CDT}
+ {2393470800 -18000 0 CST}
+ {2404357200 -14400 1 CDT}
+ {2424920400 -18000 0 CST}
+ {2435806800 -14400 1 CDT}
+ {2456370000 -18000 0 CST}
+ {2467256400 -14400 1 CDT}
+ {2487819600 -18000 0 CST}
+ {2499310800 -14400 1 CDT}
+ {2519874000 -18000 0 CST}
+ {2530760400 -14400 1 CDT}
+ {2551323600 -18000 0 CST}
+ {2562210000 -14400 1 CDT}
+ {2582773200 -18000 0 CST}
+ {2593659600 -14400 1 CDT}
+ {2614222800 -18000 0 CST}
+ {2625109200 -14400 1 CDT}
+ {2645672400 -18000 0 CST}
+ {2656558800 -14400 1 CDT}
+ {2677122000 -18000 0 CST}
+ {2688613200 -14400 1 CDT}
+ {2709176400 -18000 0 CST}
+ {2720062800 -14400 1 CDT}
+ {2740626000 -18000 0 CST}
+ {2751512400 -14400 1 CDT}
+ {2772075600 -18000 0 CST}
+ {2782962000 -14400 1 CDT}
+ {2803525200 -18000 0 CST}
+ {2814411600 -14400 1 CDT}
+ {2834974800 -18000 0 CST}
+ {2846466000 -14400 1 CDT}
+ {2867029200 -18000 0 CST}
+ {2877915600 -14400 1 CDT}
+ {2898478800 -18000 0 CST}
+ {2909365200 -14400 1 CDT}
+ {2929928400 -18000 0 CST}
+ {2940814800 -14400 1 CDT}
+ {2961378000 -18000 0 CST}
+ {2972264400 -14400 1 CDT}
+ {2992827600 -18000 0 CST}
+ {3003714000 -14400 1 CDT}
+ {3024277200 -18000 0 CST}
+ {3035768400 -14400 1 CDT}
+ {3056331600 -18000 0 CST}
+ {3067218000 -14400 1 CDT}
+ {3087781200 -18000 0 CST}
+ {3098667600 -14400 1 CDT}
+ {3119230800 -18000 0 CST}
+ {3130117200 -14400 1 CDT}
+ {3150680400 -18000 0 CST}
+ {3161566800 -14400 1 CDT}
+ {3182130000 -18000 0 CST}
+ {3193016400 -14400 1 CDT}
+ {3213579600 -18000 0 CST}
+ {3225070800 -14400 1 CDT}
+ {3245634000 -18000 0 CST}
+ {3256520400 -14400 1 CDT}
+ {3277083600 -18000 0 CST}
+ {3287970000 -14400 1 CDT}
+ {3308533200 -18000 0 CST}
+ {3319419600 -14400 1 CDT}
+ {3339982800 -18000 0 CST}
+ {3350869200 -14400 1 CDT}
+ {3371432400 -18000 0 CST}
+ {3382923600 -14400 1 CDT}
+ {3403486800 -18000 0 CST}
+ {3414373200 -14400 1 CDT}
+ {3434936400 -18000 0 CST}
+ {3445822800 -14400 1 CDT}
+ {3466386000 -18000 0 CST}
+ {3477272400 -14400 1 CDT}
+ {3497835600 -18000 0 CST}
+ {3508722000 -14400 1 CDT}
+ {3529285200 -18000 0 CST}
+ {3540171600 -14400 1 CDT}
+ {3560734800 -18000 0 CST}
+ {3572226000 -14400 1 CDT}
+ {3592789200 -18000 0 CST}
+ {3603675600 -14400 1 CDT}
+ {3624238800 -18000 0 CST}
+ {3635125200 -14400 1 CDT}
+ {3655688400 -18000 0 CST}
+ {3666574800 -14400 1 CDT}
+ {3687138000 -18000 0 CST}
+ {3698024400 -14400 1 CDT}
+ {3718587600 -18000 0 CST}
+ {3730078800 -14400 1 CDT}
+ {3750642000 -18000 0 CST}
+ {3761528400 -14400 1 CDT}
+ {3782091600 -18000 0 CST}
+ {3792978000 -14400 1 CDT}
+ {3813541200 -18000 0 CST}
+ {3824427600 -14400 1 CDT}
+ {3844990800 -18000 0 CST}
+ {3855877200 -14400 1 CDT}
+ {3876440400 -18000 0 CST}
+ {3887326800 -14400 1 CDT}
+ {3907890000 -18000 0 CST}
+ {3919381200 -14400 1 CDT}
+ {3939944400 -18000 0 CST}
+ {3950830800 -14400 1 CDT}
+ {3971394000 -18000 0 CST}
+ {3982280400 -14400 1 CDT}
+ {4002843600 -18000 0 CST}
+ {4013730000 -14400 1 CDT}
+ {4034293200 -18000 0 CST}
+ {4045179600 -14400 1 CDT}
+ {4065742800 -18000 0 CST}
+ {4076629200 -14400 1 CDT}
+ {4097192400 -18000 0 CST}
+}
diff --git a/library/tzdata/America/Hermosillo b/library/tzdata/America/Hermosillo
new file mode 100644
index 0000000..779020e
--- /dev/null
+++ b/library/tzdata/America/Hermosillo
@@ -0,0 +1,21 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Hermosillo) {
+ {-9223372036854775808 -26632 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {-873828000 -25200 0 MST}
+ {-661539600 -28800 0 PST}
+ {28800 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {915174000 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Indiana/Indianapolis b/library/tzdata/America/Indiana/Indianapolis
new file mode 100644
index 0000000..63c410c
--- /dev/null
+++ b/library/tzdata/America/Indiana/Indianapolis
@@ -0,0 +1,234 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Indianapolis) {
+ {-9223372036854775808 -20678 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-1577901600 -21600 0 CST}
+ {-900259200 -18000 1 CDT}
+ {-891795600 -21600 0 CST}
+ {-883591200 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-733942800 -21600 0 CST}
+ {-715795200 -18000 1 CDT}
+ {-702493200 -21600 0 CST}
+ {-684345600 -18000 1 CDT}
+ {-671043600 -21600 0 CST}
+ {-652896000 -18000 1 CDT}
+ {-639594000 -21600 0 CST}
+ {-620841600 -18000 1 CDT}
+ {-608144400 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-557942400 -18000 1 CDT}
+ {-544640400 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 0 EST}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 0 EST}
+ {-31518000 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {31554000 -18000 0 EST}
+ {1136091600 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Indiana/Knox b/library/tzdata/America/Indiana/Knox
new file mode 100644
index 0000000..eee3ff4
--- /dev/null
+++ b/library/tzdata/America/Indiana/Knox
@@ -0,0 +1,285 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Knox) {
+ {-9223372036854775808 -20790 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-725824800 -21600 0 CST}
+ {-715795200 -18000 1 CDT}
+ {-702493200 -21600 0 CST}
+ {-684345600 -18000 1 CDT}
+ {-671043600 -21600 0 CST}
+ {-652896000 -18000 1 CDT}
+ {-639594000 -21600 0 CST}
+ {-620841600 -18000 1 CDT}
+ {-608144400 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-557942400 -18000 1 CDT}
+ {-544640400 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 1 CDT}
+ {-447267600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-415818000 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-321469200 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-289414800 -21600 0 CST}
+ {-273686400 -18000 1 CDT}
+ {-257965200 -21600 0 CST}
+ {-242236800 -18000 0 EST}
+ {-195066000 -21600 0 CST}
+ {-84384000 -18000 1 CDT}
+ {-68662800 -21600 0 CST}
+ {-52934400 -18000 1 CDT}
+ {-37213200 -21600 0 CST}
+ {-21484800 -18000 1 CDT}
+ {-5763600 -21600 0 CST}
+ {9964800 -18000 1 CDT}
+ {25686000 -21600 0 CST}
+ {41414400 -18000 1 CDT}
+ {57740400 -21600 0 CST}
+ {73468800 -18000 1 CDT}
+ {89190000 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120639600 -21600 0 CST}
+ {126691200 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {162374400 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247042800 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278492400 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309942000 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688550400 -18000 0 EST}
+ {1143961200 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Indiana/Marengo b/library/tzdata/America/Indiana/Marengo
new file mode 100644
index 0000000..3f1d578
--- /dev/null
+++ b/library/tzdata/America/Indiana/Marengo
@@ -0,0 +1,236 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Marengo) {
+ {-9223372036854775808 -20723 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-599594400 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 1 CDT}
+ {-450291600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-418237200 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-323888400 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-292438800 -21600 0 CST}
+ {-273686400 -18000 0 EST}
+ {-31518000 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126687600 -18000 1 CDT}
+ {152089200 -18000 0 EST}
+ {162370800 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {189320400 -18000 0 EST}
+ {1136091600 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Indiana/Petersburg b/library/tzdata/America/Indiana/Petersburg
new file mode 100644
index 0000000..6992bfc
--- /dev/null
+++ b/library/tzdata/America/Indiana/Petersburg
@@ -0,0 +1,247 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Petersburg) {
+ {-9223372036854775808 -20947 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-473364000 -21600 0 CST}
+ {-462996000 -18000 1 CDT}
+ {-450291600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-418237200 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-323888400 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-292438800 -21600 0 CST}
+ {-273686400 -18000 1 CDT}
+ {-257965200 -21600 0 CST}
+ {-242236800 -18000 1 CDT}
+ {-226515600 -21600 0 CST}
+ {-210787200 -18000 1 CDT}
+ {-195066000 -21600 0 CST}
+ {-179337600 -18000 1 CDT}
+ {-163616400 -21600 0 CST}
+ {-147888000 -18000 0 EST}
+ {-100112400 -21600 0 CST}
+ {-84384000 -18000 1 CDT}
+ {-68662800 -21600 0 CST}
+ {-52934400 -18000 1 CDT}
+ {-37213200 -21600 0 CST}
+ {-21484800 -18000 1 CDT}
+ {-5763600 -21600 0 CST}
+ {9964800 -18000 1 CDT}
+ {25686000 -21600 0 CST}
+ {41414400 -18000 1 CDT}
+ {57740400 -21600 0 CST}
+ {73468800 -18000 1 CDT}
+ {89190000 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120639600 -21600 0 CST}
+ {126691200 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {162374400 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247046400 -18000 0 EST}
+ {1143961200 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194163200 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Indiana/Tell_City b/library/tzdata/America/Indiana/Tell_City
new file mode 100644
index 0000000..9eebcf7
--- /dev/null
+++ b/library/tzdata/America/Indiana/Tell_City
@@ -0,0 +1,234 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Tell_City) {
+ {-9223372036854775808 -20823 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-733942800 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-462996000 -18000 1 CDT}
+ {-450291600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-418237200 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-323888400 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-289414800 -21600 0 CST}
+ {-273686400 -18000 1 CDT}
+ {-260989200 -21600 0 CST}
+ {-242236800 -18000 1 CDT}
+ {-226515600 -21600 0 CST}
+ {-210787200 -18000 1 CDT}
+ {-195066000 -21600 0 CST}
+ {-179337600 -18000 0 EST}
+ {-31518000 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {31554000 -18000 0 EST}
+ {1143961200 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Indiana/Vevay b/library/tzdata/America/Indiana/Vevay
new file mode 100644
index 0000000..8d4157f
--- /dev/null
+++ b/library/tzdata/America/Indiana/Vevay
@@ -0,0 +1,213 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Vevay) {
+ {-9223372036854775808 -20416 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-495043200 -18000 0 EST}
+ {-31518000 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {94712400 -18000 0 EST}
+ {1136091600 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Indiana/Vincennes b/library/tzdata/America/Indiana/Vincennes
new file mode 100644
index 0000000..1af7fc9
--- /dev/null
+++ b/library/tzdata/America/Indiana/Vincennes
@@ -0,0 +1,234 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Vincennes) {
+ {-9223372036854775808 -21007 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-733942800 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-462996000 -18000 1 CDT}
+ {-450291600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-418237200 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-323888400 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-289414800 -21600 0 CST}
+ {-273686400 -18000 1 CDT}
+ {-260989200 -21600 0 CST}
+ {-242236800 -18000 1 CDT}
+ {-226515600 -21600 0 CST}
+ {-210787200 -18000 1 CDT}
+ {-195066000 -21600 0 CST}
+ {-179337600 -18000 0 EST}
+ {-31518000 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {31554000 -18000 0 EST}
+ {1143961200 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194163200 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Indiana/Winamac b/library/tzdata/America/Indiana/Winamac
new file mode 100644
index 0000000..fb6cd37
--- /dev/null
+++ b/library/tzdata/America/Indiana/Winamac
@@ -0,0 +1,240 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Winamac) {
+ {-9223372036854775808 -20785 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-733942800 -21600 0 CST}
+ {-715795200 -18000 1 CDT}
+ {-702493200 -21600 0 CST}
+ {-684345600 -18000 1 CDT}
+ {-671043600 -21600 0 CST}
+ {-652896000 -18000 1 CDT}
+ {-639594000 -21600 0 CST}
+ {-620841600 -18000 1 CDT}
+ {-608144400 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-557942400 -18000 1 CDT}
+ {-544640400 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 1 CDT}
+ {-447267600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-415818000 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-323888400 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-292438800 -21600 0 CST}
+ {-273686400 -18000 0 EST}
+ {-31518000 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {31554000 -18000 0 EST}
+ {1143961200 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -14400 0 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Indianapolis b/library/tzdata/America/Indianapolis
new file mode 100644
index 0000000..7398545
--- /dev/null
+++ b/library/tzdata/America/Indianapolis
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Indiana/Indianapolis)]} {
+ LoadTimeZoneFile America/Indiana/Indianapolis
+}
+set TZData(:America/Indianapolis) $TZData(:America/Indiana/Indianapolis)
diff --git a/library/tzdata/America/Inuvik b/library/tzdata/America/Inuvik
new file mode 100644
index 0000000..dd0d151
--- /dev/null
+++ b/library/tzdata/America/Inuvik
@@ -0,0 +1,249 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Inuvik) {
+ {-9223372036854775808 0 0 zzz}
+ {-536457600 -28800 0 PST}
+ {-147888000 -21600 1 PDDT}
+ {-131558400 -28800 0 PST}
+ {315558000 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Iqaluit b/library/tzdata/America/Iqaluit
new file mode 100644
index 0000000..2a2e9fe
--- /dev/null
+++ b/library/tzdata/America/Iqaluit
@@ -0,0 +1,250 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Iqaluit) {
+ {-9223372036854775808 0 0 zzz}
+ {-865296000 -14400 0 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {-147898800 -10800 1 EDDT}
+ {-131569200 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Jamaica b/library/tzdata/America/Jamaica
new file mode 100644
index 0000000..682e47c
--- /dev/null
+++ b/library/tzdata/America/Jamaica
@@ -0,0 +1,28 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Jamaica) {
+ {-9223372036854775808 -18431 0 LMT}
+ {-2524503169 -18431 0 KMT}
+ {-1827687169 -18000 0 EST}
+ {136364400 -14400 0 EDT}
+ {152085600 -18000 0 EST}
+ {162370800 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {441781200 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Jujuy b/library/tzdata/America/Jujuy
new file mode 100644
index 0000000..b4c5da3
--- /dev/null
+++ b/library/tzdata/America/Jujuy
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Jujuy)]} {
+ LoadTimeZoneFile America/Argentina/Jujuy
+}
+set TZData(:America/Jujuy) $TZData(:America/Argentina/Jujuy)
diff --git a/library/tzdata/America/Juneau b/library/tzdata/America/Juneau
new file mode 100644
index 0000000..fead810
--- /dev/null
+++ b/library/tzdata/America/Juneau
@@ -0,0 +1,276 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Juneau) {
+ {-9223372036854775808 54139 0 LMT}
+ {-3225366139 -32261 0 LMT}
+ {-2188954939 -28800 0 PST}
+ {-883584000 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-757353600 -28800 0 PST}
+ {-31507200 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -32400 0 YST}
+ {325681200 -28800 1 YDT}
+ {341406000 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {439030800 -32400 0 AKST}
+ {452084400 -28800 1 AKDT}
+ {467805600 -32400 0 AKST}
+ {483534000 -28800 1 AKDT}
+ {499255200 -32400 0 AKST}
+ {514983600 -28800 1 AKDT}
+ {530704800 -32400 0 AKST}
+ {544618800 -28800 1 AKDT}
+ {562154400 -32400 0 AKST}
+ {576068400 -28800 1 AKDT}
+ {594208800 -32400 0 AKST}
+ {607518000 -28800 1 AKDT}
+ {625658400 -32400 0 AKST}
+ {638967600 -28800 1 AKDT}
+ {657108000 -32400 0 AKST}
+ {671022000 -28800 1 AKDT}
+ {688557600 -32400 0 AKST}
+ {702471600 -28800 1 AKDT}
+ {720007200 -32400 0 AKST}
+ {733921200 -28800 1 AKDT}
+ {752061600 -32400 0 AKST}
+ {765370800 -28800 1 AKDT}
+ {783511200 -32400 0 AKST}
+ {796820400 -28800 1 AKDT}
+ {814960800 -32400 0 AKST}
+ {828874800 -28800 1 AKDT}
+ {846410400 -32400 0 AKST}
+ {860324400 -28800 1 AKDT}
+ {877860000 -32400 0 AKST}
+ {891774000 -28800 1 AKDT}
+ {909309600 -32400 0 AKST}
+ {923223600 -28800 1 AKDT}
+ {941364000 -32400 0 AKST}
+ {954673200 -28800 1 AKDT}
+ {972813600 -32400 0 AKST}
+ {986122800 -28800 1 AKDT}
+ {1004263200 -32400 0 AKST}
+ {1018177200 -28800 1 AKDT}
+ {1035712800 -32400 0 AKST}
+ {1049626800 -28800 1 AKDT}
+ {1067162400 -32400 0 AKST}
+ {1081076400 -28800 1 AKDT}
+ {1099216800 -32400 0 AKST}
+ {1112526000 -28800 1 AKDT}
+ {1130666400 -32400 0 AKST}
+ {1143975600 -28800 1 AKDT}
+ {1162116000 -32400 0 AKST}
+ {1173610800 -28800 1 AKDT}
+ {1194170400 -32400 0 AKST}
+ {1205060400 -28800 1 AKDT}
+ {1225620000 -32400 0 AKST}
+ {1236510000 -28800 1 AKDT}
+ {1257069600 -32400 0 AKST}
+ {1268564400 -28800 1 AKDT}
+ {1289124000 -32400 0 AKST}
+ {1300014000 -28800 1 AKDT}
+ {1320573600 -32400 0 AKST}
+ {1331463600 -28800 1 AKDT}
+ {1352023200 -32400 0 AKST}
+ {1362913200 -28800 1 AKDT}
+ {1383472800 -32400 0 AKST}
+ {1394362800 -28800 1 AKDT}
+ {1414922400 -32400 0 AKST}
+ {1425812400 -28800 1 AKDT}
+ {1446372000 -32400 0 AKST}
+ {1457866800 -28800 1 AKDT}
+ {1478426400 -32400 0 AKST}
+ {1489316400 -28800 1 AKDT}
+ {1509876000 -32400 0 AKST}
+ {1520766000 -28800 1 AKDT}
+ {1541325600 -32400 0 AKST}
+ {1552215600 -28800 1 AKDT}
+ {1572775200 -32400 0 AKST}
+ {1583665200 -28800 1 AKDT}
+ {1604224800 -32400 0 AKST}
+ {1615719600 -28800 1 AKDT}
+ {1636279200 -32400 0 AKST}
+ {1647169200 -28800 1 AKDT}
+ {1667728800 -32400 0 AKST}
+ {1678618800 -28800 1 AKDT}
+ {1699178400 -32400 0 AKST}
+ {1710068400 -28800 1 AKDT}
+ {1730628000 -32400 0 AKST}
+ {1741518000 -28800 1 AKDT}
+ {1762077600 -32400 0 AKST}
+ {1772967600 -28800 1 AKDT}
+ {1793527200 -32400 0 AKST}
+ {1805022000 -28800 1 AKDT}
+ {1825581600 -32400 0 AKST}
+ {1836471600 -28800 1 AKDT}
+ {1857031200 -32400 0 AKST}
+ {1867921200 -28800 1 AKDT}
+ {1888480800 -32400 0 AKST}
+ {1899370800 -28800 1 AKDT}
+ {1919930400 -32400 0 AKST}
+ {1930820400 -28800 1 AKDT}
+ {1951380000 -32400 0 AKST}
+ {1962874800 -28800 1 AKDT}
+ {1983434400 -32400 0 AKST}
+ {1994324400 -28800 1 AKDT}
+ {2014884000 -32400 0 AKST}
+ {2025774000 -28800 1 AKDT}
+ {2046333600 -32400 0 AKST}
+ {2057223600 -28800 1 AKDT}
+ {2077783200 -32400 0 AKST}
+ {2088673200 -28800 1 AKDT}
+ {2109232800 -32400 0 AKST}
+ {2120122800 -28800 1 AKDT}
+ {2140682400 -32400 0 AKST}
+ {2152177200 -28800 1 AKDT}
+ {2172736800 -32400 0 AKST}
+ {2183626800 -28800 1 AKDT}
+ {2204186400 -32400 0 AKST}
+ {2215076400 -28800 1 AKDT}
+ {2235636000 -32400 0 AKST}
+ {2246526000 -28800 1 AKDT}
+ {2267085600 -32400 0 AKST}
+ {2277975600 -28800 1 AKDT}
+ {2298535200 -32400 0 AKST}
+ {2309425200 -28800 1 AKDT}
+ {2329984800 -32400 0 AKST}
+ {2341479600 -28800 1 AKDT}
+ {2362039200 -32400 0 AKST}
+ {2372929200 -28800 1 AKDT}
+ {2393488800 -32400 0 AKST}
+ {2404378800 -28800 1 AKDT}
+ {2424938400 -32400 0 AKST}
+ {2435828400 -28800 1 AKDT}
+ {2456388000 -32400 0 AKST}
+ {2467278000 -28800 1 AKDT}
+ {2487837600 -32400 0 AKST}
+ {2499332400 -28800 1 AKDT}
+ {2519892000 -32400 0 AKST}
+ {2530782000 -28800 1 AKDT}
+ {2551341600 -32400 0 AKST}
+ {2562231600 -28800 1 AKDT}
+ {2582791200 -32400 0 AKST}
+ {2593681200 -28800 1 AKDT}
+ {2614240800 -32400 0 AKST}
+ {2625130800 -28800 1 AKDT}
+ {2645690400 -32400 0 AKST}
+ {2656580400 -28800 1 AKDT}
+ {2677140000 -32400 0 AKST}
+ {2688634800 -28800 1 AKDT}
+ {2709194400 -32400 0 AKST}
+ {2720084400 -28800 1 AKDT}
+ {2740644000 -32400 0 AKST}
+ {2751534000 -28800 1 AKDT}
+ {2772093600 -32400 0 AKST}
+ {2782983600 -28800 1 AKDT}
+ {2803543200 -32400 0 AKST}
+ {2814433200 -28800 1 AKDT}
+ {2834992800 -32400 0 AKST}
+ {2846487600 -28800 1 AKDT}
+ {2867047200 -32400 0 AKST}
+ {2877937200 -28800 1 AKDT}
+ {2898496800 -32400 0 AKST}
+ {2909386800 -28800 1 AKDT}
+ {2929946400 -32400 0 AKST}
+ {2940836400 -28800 1 AKDT}
+ {2961396000 -32400 0 AKST}
+ {2972286000 -28800 1 AKDT}
+ {2992845600 -32400 0 AKST}
+ {3003735600 -28800 1 AKDT}
+ {3024295200 -32400 0 AKST}
+ {3035790000 -28800 1 AKDT}
+ {3056349600 -32400 0 AKST}
+ {3067239600 -28800 1 AKDT}
+ {3087799200 -32400 0 AKST}
+ {3098689200 -28800 1 AKDT}
+ {3119248800 -32400 0 AKST}
+ {3130138800 -28800 1 AKDT}
+ {3150698400 -32400 0 AKST}
+ {3161588400 -28800 1 AKDT}
+ {3182148000 -32400 0 AKST}
+ {3193038000 -28800 1 AKDT}
+ {3213597600 -32400 0 AKST}
+ {3225092400 -28800 1 AKDT}
+ {3245652000 -32400 0 AKST}
+ {3256542000 -28800 1 AKDT}
+ {3277101600 -32400 0 AKST}
+ {3287991600 -28800 1 AKDT}
+ {3308551200 -32400 0 AKST}
+ {3319441200 -28800 1 AKDT}
+ {3340000800 -32400 0 AKST}
+ {3350890800 -28800 1 AKDT}
+ {3371450400 -32400 0 AKST}
+ {3382945200 -28800 1 AKDT}
+ {3403504800 -32400 0 AKST}
+ {3414394800 -28800 1 AKDT}
+ {3434954400 -32400 0 AKST}
+ {3445844400 -28800 1 AKDT}
+ {3466404000 -32400 0 AKST}
+ {3477294000 -28800 1 AKDT}
+ {3497853600 -32400 0 AKST}
+ {3508743600 -28800 1 AKDT}
+ {3529303200 -32400 0 AKST}
+ {3540193200 -28800 1 AKDT}
+ {3560752800 -32400 0 AKST}
+ {3572247600 -28800 1 AKDT}
+ {3592807200 -32400 0 AKST}
+ {3603697200 -28800 1 AKDT}
+ {3624256800 -32400 0 AKST}
+ {3635146800 -28800 1 AKDT}
+ {3655706400 -32400 0 AKST}
+ {3666596400 -28800 1 AKDT}
+ {3687156000 -32400 0 AKST}
+ {3698046000 -28800 1 AKDT}
+ {3718605600 -32400 0 AKST}
+ {3730100400 -28800 1 AKDT}
+ {3750660000 -32400 0 AKST}
+ {3761550000 -28800 1 AKDT}
+ {3782109600 -32400 0 AKST}
+ {3792999600 -28800 1 AKDT}
+ {3813559200 -32400 0 AKST}
+ {3824449200 -28800 1 AKDT}
+ {3845008800 -32400 0 AKST}
+ {3855898800 -28800 1 AKDT}
+ {3876458400 -32400 0 AKST}
+ {3887348400 -28800 1 AKDT}
+ {3907908000 -32400 0 AKST}
+ {3919402800 -28800 1 AKDT}
+ {3939962400 -32400 0 AKST}
+ {3950852400 -28800 1 AKDT}
+ {3971412000 -32400 0 AKST}
+ {3982302000 -28800 1 AKDT}
+ {4002861600 -32400 0 AKST}
+ {4013751600 -28800 1 AKDT}
+ {4034311200 -32400 0 AKST}
+ {4045201200 -28800 1 AKDT}
+ {4065760800 -32400 0 AKST}
+ {4076650800 -28800 1 AKDT}
+ {4097210400 -32400 0 AKST}
+}
diff --git a/library/tzdata/America/Kentucky/Louisville b/library/tzdata/America/Kentucky/Louisville
new file mode 100644
index 0000000..c2aa10c
--- /dev/null
+++ b/library/tzdata/America/Kentucky/Louisville
@@ -0,0 +1,314 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Kentucky/Louisville) {
+ {-9223372036854775808 -20582 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-1546279200 -21600 0 CST}
+ {-1535904000 -18000 1 CDT}
+ {-1525280400 -21600 0 CST}
+ {-905097600 -18000 1 CDT}
+ {-891795600 -21600 0 CST}
+ {-883591200 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-744224400 -21600 0 CST}
+ {-715795200 -18000 1 CDT}
+ {-684349200 -18000 1 CDT}
+ {-652899600 -18000 1 CDT}
+ {-620845200 -18000 1 CDT}
+ {-608144400 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-557942400 -18000 1 CDT}
+ {-544640400 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 1 CDT}
+ {-450291600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-415818000 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-384368400 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-352918800 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-321469200 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-289414800 -21600 0 CST}
+ {-273686400 -18000 1 CDT}
+ {-266432400 -18000 0 EST}
+ {-63140400 -18000 0 EST}
+ {-52938000 -14400 1 EDT}
+ {-37216800 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126687600 -18000 1 CDT}
+ {152089200 -18000 0 EST}
+ {162370800 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Kentucky/Monticello b/library/tzdata/America/Kentucky/Monticello
new file mode 100644
index 0000000..e523ecb
--- /dev/null
+++ b/library/tzdata/America/Kentucky/Monticello
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Kentucky/Monticello) {
+ {-9223372036854775808 -20364 0 LMT}
+ {-2717647200 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-63136800 -21600 0 CST}
+ {-52934400 -18000 1 CDT}
+ {-37213200 -21600 0 CST}
+ {-21484800 -18000 1 CDT}
+ {-5763600 -21600 0 CST}
+ {9964800 -18000 1 CDT}
+ {25686000 -21600 0 CST}
+ {41414400 -18000 1 CDT}
+ {57740400 -21600 0 CST}
+ {73468800 -18000 1 CDT}
+ {89190000 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120639600 -21600 0 CST}
+ {126691200 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {162374400 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247042800 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278492400 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309942000 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Knox_IN b/library/tzdata/America/Knox_IN
new file mode 100644
index 0000000..00d21c0
--- /dev/null
+++ b/library/tzdata/America/Knox_IN
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Indiana/Knox)]} {
+ LoadTimeZoneFile America/Indiana/Knox
+}
+set TZData(:America/Knox_IN) $TZData(:America/Indiana/Knox)
diff --git a/library/tzdata/America/Kralendijk b/library/tzdata/America/Kralendijk
new file mode 100644
index 0000000..8b6db86
--- /dev/null
+++ b/library/tzdata/America/Kralendijk
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Curacao)]} {
+ LoadTimeZoneFile America/Curacao
+}
+set TZData(:America/Kralendijk) $TZData(:America/Curacao)
diff --git a/library/tzdata/America/La_Paz b/library/tzdata/America/La_Paz
new file mode 100644
index 0000000..38ffbb0
--- /dev/null
+++ b/library/tzdata/America/La_Paz
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/La_Paz) {
+ {-9223372036854775808 -16356 0 LMT}
+ {-2524505244 -16356 0 CMT}
+ {-1205954844 -12756 1 BOST}
+ {-1192307244 -14400 0 BOT}
+}
diff --git a/library/tzdata/America/Lima b/library/tzdata/America/Lima
new file mode 100644
index 0000000..c6e6ac1
--- /dev/null
+++ b/library/tzdata/America/Lima
@@ -0,0 +1,16 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Lima) {
+ {-9223372036854775808 -18492 0 LMT}
+ {-2524503108 -18516 0 LMT}
+ {-1938538284 -14400 0 PEST}
+ {-1002052800 -18000 0 PET}
+ {-986756400 -14400 1 PEST}
+ {-971035200 -18000 0 PET}
+ {-955306800 -14400 1 PEST}
+ {-939585600 -18000 0 PET}
+ {512712000 -18000 0 PET}
+ {544248000 -18000 0 PET}
+ {638942400 -18000 0 PET}
+ {765172800 -18000 0 PET}
+}
diff --git a/library/tzdata/America/Los_Angeles b/library/tzdata/America/Los_Angeles
new file mode 100644
index 0000000..da6ca99
--- /dev/null
+++ b/library/tzdata/America/Los_Angeles
@@ -0,0 +1,317 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Los_Angeles) {
+ {-9223372036854775808 -28378 0 LMT}
+ {-2717640000 -28800 0 PST}
+ {-1633269600 -25200 1 PDT}
+ {-1615129200 -28800 0 PST}
+ {-1601820000 -25200 1 PDT}
+ {-1583679600 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-757353600 -28800 0 PST}
+ {-687967200 -25200 1 PDT}
+ {-662655600 -28800 0 PST}
+ {-620834400 -25200 1 PDT}
+ {-608137200 -28800 0 PST}
+ {-589384800 -25200 1 PDT}
+ {-576082800 -28800 0 PST}
+ {-557935200 -25200 1 PDT}
+ {-544633200 -28800 0 PST}
+ {-526485600 -25200 1 PDT}
+ {-513183600 -28800 0 PST}
+ {-495036000 -25200 1 PDT}
+ {-481734000 -28800 0 PST}
+ {-463586400 -25200 1 PDT}
+ {-450284400 -28800 0 PST}
+ {-431532000 -25200 1 PDT}
+ {-418230000 -28800 0 PST}
+ {-400082400 -25200 1 PDT}
+ {-386780400 -28800 0 PST}
+ {-368632800 -25200 1 PDT}
+ {-355330800 -28800 0 PST}
+ {-337183200 -25200 1 PDT}
+ {-323881200 -28800 0 PST}
+ {-305733600 -25200 1 PDT}
+ {-292431600 -28800 0 PST}
+ {-273679200 -25200 1 PDT}
+ {-260982000 -28800 0 PST}
+ {-242229600 -25200 1 PDT}
+ {-226508400 -28800 0 PST}
+ {-210780000 -25200 1 PDT}
+ {-195058800 -28800 0 PST}
+ {-179330400 -25200 1 PDT}
+ {-163609200 -28800 0 PST}
+ {-147880800 -25200 1 PDT}
+ {-131554800 -28800 0 PST}
+ {-116431200 -25200 1 PDT}
+ {-100105200 -28800 0 PST}
+ {-94665600 -28800 0 PST}
+ {-84376800 -25200 1 PDT}
+ {-68655600 -28800 0 PST}
+ {-52927200 -25200 1 PDT}
+ {-37206000 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1173607200 -25200 1 PDT}
+ {1194166800 -28800 0 PST}
+ {1205056800 -25200 1 PDT}
+ {1225616400 -28800 0 PST}
+ {1236506400 -25200 1 PDT}
+ {1257066000 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Louisville b/library/tzdata/America/Louisville
new file mode 100644
index 0000000..c5a3e1c
--- /dev/null
+++ b/library/tzdata/America/Louisville
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Kentucky/Louisville)]} {
+ LoadTimeZoneFile America/Kentucky/Louisville
+}
+set TZData(:America/Louisville) $TZData(:America/Kentucky/Louisville)
diff --git a/library/tzdata/America/Lower_Princes b/library/tzdata/America/Lower_Princes
new file mode 100644
index 0000000..94c9197
--- /dev/null
+++ b/library/tzdata/America/Lower_Princes
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Curacao)]} {
+ LoadTimeZoneFile America/Curacao
+}
+set TZData(:America/Lower_Princes) $TZData(:America/Curacao)
diff --git a/library/tzdata/America/Maceio b/library/tzdata/America/Maceio
new file mode 100644
index 0000000..333b878
--- /dev/null
+++ b/library/tzdata/America/Maceio
@@ -0,0 +1,52 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Maceio) {
+ {-9223372036854775808 -8572 0 LMT}
+ {-1767217028 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-191365200 -7200 1 BRST}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {592974000 -7200 1 BRST}
+ {602042400 -10800 0 BRT}
+ {624423600 -7200 1 BRST}
+ {634701600 -10800 0 BRT}
+ {653536800 -10800 0 BRT}
+ {813553200 -10800 0 BRT}
+ {813726000 -7200 1 BRST}
+ {824004000 -10800 0 BRT}
+ {841802400 -10800 0 BRT}
+ {938660400 -10800 0 BRT}
+ {938919600 -7200 1 BRST}
+ {951616800 -10800 0 BRT}
+ {970974000 -7200 1 BRST}
+ {972180000 -10800 0 BRT}
+ {1000350000 -10800 0 BRT}
+ {1003028400 -7200 1 BRST}
+ {1013911200 -10800 0 BRT}
+ {1033437600 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Managua b/library/tzdata/America/Managua
new file mode 100644
index 0000000..f729b8a
--- /dev/null
+++ b/library/tzdata/America/Managua
@@ -0,0 +1,21 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Managua) {
+ {-9223372036854775808 -20708 0 LMT}
+ {-2524500892 -20712 0 MMT}
+ {-1121105688 -21600 0 CST}
+ {105084000 -18000 0 EST}
+ {161758800 -21600 0 CST}
+ {290584800 -18000 1 CDT}
+ {299134800 -21600 0 CST}
+ {322034400 -18000 1 CDT}
+ {330584400 -21600 0 CST}
+ {694260000 -18000 0 EST}
+ {717310800 -21600 0 CST}
+ {725868000 -18000 0 EST}
+ {852094800 -21600 0 CST}
+ {1113112800 -18000 1 CDT}
+ {1128229200 -21600 0 CST}
+ {1146384000 -18000 1 CDT}
+ {1159682400 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Manaus b/library/tzdata/America/Manaus
new file mode 100644
index 0000000..058e0f7
--- /dev/null
+++ b/library/tzdata/America/Manaus
@@ -0,0 +1,39 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Manaus) {
+ {-9223372036854775808 -14404 0 LMT}
+ {-1767211196 -14400 0 AMT}
+ {-1206954000 -10800 1 AMST}
+ {-1191358800 -14400 0 AMT}
+ {-1175371200 -10800 1 AMST}
+ {-1159822800 -14400 0 AMT}
+ {-633816000 -10800 1 AMST}
+ {-622065600 -14400 0 AMT}
+ {-602280000 -10800 1 AMST}
+ {-591829200 -14400 0 AMT}
+ {-570744000 -10800 1 AMST}
+ {-560206800 -14400 0 AMT}
+ {-539121600 -10800 1 AMST}
+ {-531349200 -14400 0 AMT}
+ {-191361600 -10800 1 AMST}
+ {-184194000 -14400 0 AMT}
+ {-155160000 -10800 1 AMST}
+ {-150066000 -14400 0 AMT}
+ {-128894400 -10800 1 AMST}
+ {-121122000 -14400 0 AMT}
+ {-99950400 -10800 1 AMST}
+ {-89586000 -14400 0 AMT}
+ {-68414400 -10800 1 AMST}
+ {-57963600 -14400 0 AMT}
+ {499752000 -10800 1 AMST}
+ {511239600 -14400 0 AMT}
+ {530596800 -10800 1 AMST}
+ {540270000 -14400 0 AMT}
+ {562132800 -10800 1 AMST}
+ {571201200 -14400 0 AMT}
+ {590036400 -14400 0 AMT}
+ {749188800 -14400 0 AMT}
+ {750830400 -10800 1 AMST}
+ {761713200 -14400 0 AMT}
+ {780202800 -14400 0 AMT}
+}
diff --git a/library/tzdata/America/Marigot b/library/tzdata/America/Marigot
new file mode 100644
index 0000000..c2b3873
--- /dev/null
+++ b/library/tzdata/America/Marigot
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Marigot) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Martinique b/library/tzdata/America/Martinique
new file mode 100644
index 0000000..1f1b491
--- /dev/null
+++ b/library/tzdata/America/Martinique
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Martinique) {
+ {-9223372036854775808 -14660 0 LMT}
+ {-2524506940 -14660 0 FFMT}
+ {-1851537340 -14400 0 AST}
+ {323841600 -10800 1 ADT}
+ {338958000 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Matamoros b/library/tzdata/America/Matamoros
new file mode 100644
index 0000000..2b98652
--- /dev/null
+++ b/library/tzdata/America/Matamoros
@@ -0,0 +1,219 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Matamoros) {
+ {-9223372036854775808 -24000 0 LMT}
+ {-1514743200 -21600 0 CST}
+ {568015200 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {599637600 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {989136000 -18000 1 CDT}
+ {1001833200 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1175414400 -18000 1 CDT}
+ {1193554800 -21600 0 CST}
+ {1207468800 -18000 1 CDT}
+ {1225004400 -21600 0 CST}
+ {1238918400 -18000 1 CDT}
+ {1256454000 -21600 0 CST}
+ {1262325600 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Mazatlan b/library/tzdata/America/Mazatlan
new file mode 100644
index 0000000..e56d7d0
--- /dev/null
+++ b/library/tzdata/America/Mazatlan
@@ -0,0 +1,222 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Mazatlan) {
+ {-9223372036854775808 -25540 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {-873828000 -25200 0 MST}
+ {-661539600 -28800 0 PST}
+ {28800 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {989139600 -21600 1 MDT}
+ {1001836800 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1175418000 -21600 1 MDT}
+ {1193558400 -25200 0 MST}
+ {1207472400 -21600 1 MDT}
+ {1225008000 -25200 0 MST}
+ {1238922000 -21600 1 MDT}
+ {1256457600 -25200 0 MST}
+ {1270371600 -21600 1 MDT}
+ {1288512000 -25200 0 MST}
+ {1301821200 -21600 1 MDT}
+ {1319961600 -25200 0 MST}
+ {1333270800 -21600 1 MDT}
+ {1351411200 -25200 0 MST}
+ {1365325200 -21600 1 MDT}
+ {1382860800 -25200 0 MST}
+ {1396774800 -21600 1 MDT}
+ {1414310400 -25200 0 MST}
+ {1428224400 -21600 1 MDT}
+ {1445760000 -25200 0 MST}
+ {1459674000 -21600 1 MDT}
+ {1477814400 -25200 0 MST}
+ {1491123600 -21600 1 MDT}
+ {1509264000 -25200 0 MST}
+ {1522573200 -21600 1 MDT}
+ {1540713600 -25200 0 MST}
+ {1554627600 -21600 1 MDT}
+ {1572163200 -25200 0 MST}
+ {1586077200 -21600 1 MDT}
+ {1603612800 -25200 0 MST}
+ {1617526800 -21600 1 MDT}
+ {1635667200 -25200 0 MST}
+ {1648976400 -21600 1 MDT}
+ {1667116800 -25200 0 MST}
+ {1680426000 -21600 1 MDT}
+ {1698566400 -25200 0 MST}
+ {1712480400 -21600 1 MDT}
+ {1730016000 -25200 0 MST}
+ {1743930000 -21600 1 MDT}
+ {1761465600 -25200 0 MST}
+ {1775379600 -21600 1 MDT}
+ {1792915200 -25200 0 MST}
+ {1806829200 -21600 1 MDT}
+ {1824969600 -25200 0 MST}
+ {1838278800 -21600 1 MDT}
+ {1856419200 -25200 0 MST}
+ {1869728400 -21600 1 MDT}
+ {1887868800 -25200 0 MST}
+ {1901782800 -21600 1 MDT}
+ {1919318400 -25200 0 MST}
+ {1933232400 -21600 1 MDT}
+ {1950768000 -25200 0 MST}
+ {1964682000 -21600 1 MDT}
+ {1982822400 -25200 0 MST}
+ {1996131600 -21600 1 MDT}
+ {2014272000 -25200 0 MST}
+ {2027581200 -21600 1 MDT}
+ {2045721600 -25200 0 MST}
+ {2059030800 -21600 1 MDT}
+ {2077171200 -25200 0 MST}
+ {2091085200 -21600 1 MDT}
+ {2108620800 -25200 0 MST}
+ {2122534800 -21600 1 MDT}
+ {2140070400 -25200 0 MST}
+ {2153984400 -21600 1 MDT}
+ {2172124800 -25200 0 MST}
+ {2185434000 -21600 1 MDT}
+ {2203574400 -25200 0 MST}
+ {2216883600 -21600 1 MDT}
+ {2235024000 -25200 0 MST}
+ {2248938000 -21600 1 MDT}
+ {2266473600 -25200 0 MST}
+ {2280387600 -21600 1 MDT}
+ {2297923200 -25200 0 MST}
+ {2311837200 -21600 1 MDT}
+ {2329372800 -25200 0 MST}
+ {2343286800 -21600 1 MDT}
+ {2361427200 -25200 0 MST}
+ {2374736400 -21600 1 MDT}
+ {2392876800 -25200 0 MST}
+ {2406186000 -21600 1 MDT}
+ {2424326400 -25200 0 MST}
+ {2438240400 -21600 1 MDT}
+ {2455776000 -25200 0 MST}
+ {2469690000 -21600 1 MDT}
+ {2487225600 -25200 0 MST}
+ {2501139600 -21600 1 MDT}
+ {2519280000 -25200 0 MST}
+ {2532589200 -21600 1 MDT}
+ {2550729600 -25200 0 MST}
+ {2564038800 -21600 1 MDT}
+ {2582179200 -25200 0 MST}
+ {2596093200 -21600 1 MDT}
+ {2613628800 -25200 0 MST}
+ {2627542800 -21600 1 MDT}
+ {2645078400 -25200 0 MST}
+ {2658992400 -21600 1 MDT}
+ {2676528000 -25200 0 MST}
+ {2690442000 -21600 1 MDT}
+ {2708582400 -25200 0 MST}
+ {2721891600 -21600 1 MDT}
+ {2740032000 -25200 0 MST}
+ {2753341200 -21600 1 MDT}
+ {2771481600 -25200 0 MST}
+ {2785395600 -21600 1 MDT}
+ {2802931200 -25200 0 MST}
+ {2816845200 -21600 1 MDT}
+ {2834380800 -25200 0 MST}
+ {2848294800 -21600 1 MDT}
+ {2866435200 -25200 0 MST}
+ {2879744400 -21600 1 MDT}
+ {2897884800 -25200 0 MST}
+ {2911194000 -21600 1 MDT}
+ {2929334400 -25200 0 MST}
+ {2942643600 -21600 1 MDT}
+ {2960784000 -25200 0 MST}
+ {2974698000 -21600 1 MDT}
+ {2992233600 -25200 0 MST}
+ {3006147600 -21600 1 MDT}
+ {3023683200 -25200 0 MST}
+ {3037597200 -21600 1 MDT}
+ {3055737600 -25200 0 MST}
+ {3069046800 -21600 1 MDT}
+ {3087187200 -25200 0 MST}
+ {3100496400 -21600 1 MDT}
+ {3118636800 -25200 0 MST}
+ {3132550800 -21600 1 MDT}
+ {3150086400 -25200 0 MST}
+ {3164000400 -21600 1 MDT}
+ {3181536000 -25200 0 MST}
+ {3195450000 -21600 1 MDT}
+ {3212985600 -25200 0 MST}
+ {3226899600 -21600 1 MDT}
+ {3245040000 -25200 0 MST}
+ {3258349200 -21600 1 MDT}
+ {3276489600 -25200 0 MST}
+ {3289798800 -21600 1 MDT}
+ {3307939200 -25200 0 MST}
+ {3321853200 -21600 1 MDT}
+ {3339388800 -25200 0 MST}
+ {3353302800 -21600 1 MDT}
+ {3370838400 -25200 0 MST}
+ {3384752400 -21600 1 MDT}
+ {3402892800 -25200 0 MST}
+ {3416202000 -21600 1 MDT}
+ {3434342400 -25200 0 MST}
+ {3447651600 -21600 1 MDT}
+ {3465792000 -25200 0 MST}
+ {3479706000 -21600 1 MDT}
+ {3497241600 -25200 0 MST}
+ {3511155600 -21600 1 MDT}
+ {3528691200 -25200 0 MST}
+ {3542605200 -21600 1 MDT}
+ {3560140800 -25200 0 MST}
+ {3574054800 -21600 1 MDT}
+ {3592195200 -25200 0 MST}
+ {3605504400 -21600 1 MDT}
+ {3623644800 -25200 0 MST}
+ {3636954000 -21600 1 MDT}
+ {3655094400 -25200 0 MST}
+ {3669008400 -21600 1 MDT}
+ {3686544000 -25200 0 MST}
+ {3700458000 -21600 1 MDT}
+ {3717993600 -25200 0 MST}
+ {3731907600 -21600 1 MDT}
+ {3750048000 -25200 0 MST}
+ {3763357200 -21600 1 MDT}
+ {3781497600 -25200 0 MST}
+ {3794806800 -21600 1 MDT}
+ {3812947200 -25200 0 MST}
+ {3826256400 -21600 1 MDT}
+ {3844396800 -25200 0 MST}
+ {3858310800 -21600 1 MDT}
+ {3875846400 -25200 0 MST}
+ {3889760400 -21600 1 MDT}
+ {3907296000 -25200 0 MST}
+ {3921210000 -21600 1 MDT}
+ {3939350400 -25200 0 MST}
+ {3952659600 -21600 1 MDT}
+ {3970800000 -25200 0 MST}
+ {3984109200 -21600 1 MDT}
+ {4002249600 -25200 0 MST}
+ {4016163600 -21600 1 MDT}
+ {4033699200 -25200 0 MST}
+ {4047613200 -21600 1 MDT}
+ {4065148800 -25200 0 MST}
+ {4079062800 -21600 1 MDT}
+ {4096598400 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Mendoza b/library/tzdata/America/Mendoza
new file mode 100644
index 0000000..511d83e
--- /dev/null
+++ b/library/tzdata/America/Mendoza
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Mendoza)]} {
+ LoadTimeZoneFile America/Argentina/Mendoza
+}
+set TZData(:America/Mendoza) $TZData(:America/Argentina/Mendoza)
diff --git a/library/tzdata/America/Menominee b/library/tzdata/America/Menominee
new file mode 100644
index 0000000..382aeda
--- /dev/null
+++ b/library/tzdata/America/Menominee
@@ -0,0 +1,274 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Menominee) {
+ {-9223372036854775808 -21027 0 LMT}
+ {-2659759773 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-757360800 -21600 0 CST}
+ {-747244800 -18000 1 CDT}
+ {-733942800 -21600 0 CST}
+ {-116438400 -18000 1 CDT}
+ {-100112400 -21600 0 CST}
+ {-21484800 -18000 0 EST}
+ {104914800 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120639600 -21600 0 CST}
+ {126691200 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {162374400 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247042800 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278492400 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309942000 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {986112000 -18000 1 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Merida b/library/tzdata/America/Merida
new file mode 100644
index 0000000..ebf5927
--- /dev/null
+++ b/library/tzdata/America/Merida
@@ -0,0 +1,216 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Merida) {
+ {-9223372036854775808 -21508 0 LMT}
+ {-1514743200 -21600 0 CST}
+ {377935200 -18000 0 EST}
+ {407653200 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {989136000 -18000 1 CDT}
+ {1001833200 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1175414400 -18000 1 CDT}
+ {1193554800 -21600 0 CST}
+ {1207468800 -18000 1 CDT}
+ {1225004400 -21600 0 CST}
+ {1238918400 -18000 1 CDT}
+ {1256454000 -21600 0 CST}
+ {1270368000 -18000 1 CDT}
+ {1288508400 -21600 0 CST}
+ {1301817600 -18000 1 CDT}
+ {1319958000 -21600 0 CST}
+ {1333267200 -18000 1 CDT}
+ {1351407600 -21600 0 CST}
+ {1365321600 -18000 1 CDT}
+ {1382857200 -21600 0 CST}
+ {1396771200 -18000 1 CDT}
+ {1414306800 -21600 0 CST}
+ {1428220800 -18000 1 CDT}
+ {1445756400 -21600 0 CST}
+ {1459670400 -18000 1 CDT}
+ {1477810800 -21600 0 CST}
+ {1491120000 -18000 1 CDT}
+ {1509260400 -21600 0 CST}
+ {1522569600 -18000 1 CDT}
+ {1540710000 -21600 0 CST}
+ {1554624000 -18000 1 CDT}
+ {1572159600 -21600 0 CST}
+ {1586073600 -18000 1 CDT}
+ {1603609200 -21600 0 CST}
+ {1617523200 -18000 1 CDT}
+ {1635663600 -21600 0 CST}
+ {1648972800 -18000 1 CDT}
+ {1667113200 -21600 0 CST}
+ {1680422400 -18000 1 CDT}
+ {1698562800 -21600 0 CST}
+ {1712476800 -18000 1 CDT}
+ {1730012400 -21600 0 CST}
+ {1743926400 -18000 1 CDT}
+ {1761462000 -21600 0 CST}
+ {1775376000 -18000 1 CDT}
+ {1792911600 -21600 0 CST}
+ {1806825600 -18000 1 CDT}
+ {1824966000 -21600 0 CST}
+ {1838275200 -18000 1 CDT}
+ {1856415600 -21600 0 CST}
+ {1869724800 -18000 1 CDT}
+ {1887865200 -21600 0 CST}
+ {1901779200 -18000 1 CDT}
+ {1919314800 -21600 0 CST}
+ {1933228800 -18000 1 CDT}
+ {1950764400 -21600 0 CST}
+ {1964678400 -18000 1 CDT}
+ {1982818800 -21600 0 CST}
+ {1996128000 -18000 1 CDT}
+ {2014268400 -21600 0 CST}
+ {2027577600 -18000 1 CDT}
+ {2045718000 -21600 0 CST}
+ {2059027200 -18000 1 CDT}
+ {2077167600 -21600 0 CST}
+ {2091081600 -18000 1 CDT}
+ {2108617200 -21600 0 CST}
+ {2122531200 -18000 1 CDT}
+ {2140066800 -21600 0 CST}
+ {2153980800 -18000 1 CDT}
+ {2172121200 -21600 0 CST}
+ {2185430400 -18000 1 CDT}
+ {2203570800 -21600 0 CST}
+ {2216880000 -18000 1 CDT}
+ {2235020400 -21600 0 CST}
+ {2248934400 -18000 1 CDT}
+ {2266470000 -21600 0 CST}
+ {2280384000 -18000 1 CDT}
+ {2297919600 -21600 0 CST}
+ {2311833600 -18000 1 CDT}
+ {2329369200 -21600 0 CST}
+ {2343283200 -18000 1 CDT}
+ {2361423600 -21600 0 CST}
+ {2374732800 -18000 1 CDT}
+ {2392873200 -21600 0 CST}
+ {2406182400 -18000 1 CDT}
+ {2424322800 -21600 0 CST}
+ {2438236800 -18000 1 CDT}
+ {2455772400 -21600 0 CST}
+ {2469686400 -18000 1 CDT}
+ {2487222000 -21600 0 CST}
+ {2501136000 -18000 1 CDT}
+ {2519276400 -21600 0 CST}
+ {2532585600 -18000 1 CDT}
+ {2550726000 -21600 0 CST}
+ {2564035200 -18000 1 CDT}
+ {2582175600 -21600 0 CST}
+ {2596089600 -18000 1 CDT}
+ {2613625200 -21600 0 CST}
+ {2627539200 -18000 1 CDT}
+ {2645074800 -21600 0 CST}
+ {2658988800 -18000 1 CDT}
+ {2676524400 -21600 0 CST}
+ {2690438400 -18000 1 CDT}
+ {2708578800 -21600 0 CST}
+ {2721888000 -18000 1 CDT}
+ {2740028400 -21600 0 CST}
+ {2753337600 -18000 1 CDT}
+ {2771478000 -21600 0 CST}
+ {2785392000 -18000 1 CDT}
+ {2802927600 -21600 0 CST}
+ {2816841600 -18000 1 CDT}
+ {2834377200 -21600 0 CST}
+ {2848291200 -18000 1 CDT}
+ {2866431600 -21600 0 CST}
+ {2879740800 -18000 1 CDT}
+ {2897881200 -21600 0 CST}
+ {2911190400 -18000 1 CDT}
+ {2929330800 -21600 0 CST}
+ {2942640000 -18000 1 CDT}
+ {2960780400 -21600 0 CST}
+ {2974694400 -18000 1 CDT}
+ {2992230000 -21600 0 CST}
+ {3006144000 -18000 1 CDT}
+ {3023679600 -21600 0 CST}
+ {3037593600 -18000 1 CDT}
+ {3055734000 -21600 0 CST}
+ {3069043200 -18000 1 CDT}
+ {3087183600 -21600 0 CST}
+ {3100492800 -18000 1 CDT}
+ {3118633200 -21600 0 CST}
+ {3132547200 -18000 1 CDT}
+ {3150082800 -21600 0 CST}
+ {3163996800 -18000 1 CDT}
+ {3181532400 -21600 0 CST}
+ {3195446400 -18000 1 CDT}
+ {3212982000 -21600 0 CST}
+ {3226896000 -18000 1 CDT}
+ {3245036400 -21600 0 CST}
+ {3258345600 -18000 1 CDT}
+ {3276486000 -21600 0 CST}
+ {3289795200 -18000 1 CDT}
+ {3307935600 -21600 0 CST}
+ {3321849600 -18000 1 CDT}
+ {3339385200 -21600 0 CST}
+ {3353299200 -18000 1 CDT}
+ {3370834800 -21600 0 CST}
+ {3384748800 -18000 1 CDT}
+ {3402889200 -21600 0 CST}
+ {3416198400 -18000 1 CDT}
+ {3434338800 -21600 0 CST}
+ {3447648000 -18000 1 CDT}
+ {3465788400 -21600 0 CST}
+ {3479702400 -18000 1 CDT}
+ {3497238000 -21600 0 CST}
+ {3511152000 -18000 1 CDT}
+ {3528687600 -21600 0 CST}
+ {3542601600 -18000 1 CDT}
+ {3560137200 -21600 0 CST}
+ {3574051200 -18000 1 CDT}
+ {3592191600 -21600 0 CST}
+ {3605500800 -18000 1 CDT}
+ {3623641200 -21600 0 CST}
+ {3636950400 -18000 1 CDT}
+ {3655090800 -21600 0 CST}
+ {3669004800 -18000 1 CDT}
+ {3686540400 -21600 0 CST}
+ {3700454400 -18000 1 CDT}
+ {3717990000 -21600 0 CST}
+ {3731904000 -18000 1 CDT}
+ {3750044400 -21600 0 CST}
+ {3763353600 -18000 1 CDT}
+ {3781494000 -21600 0 CST}
+ {3794803200 -18000 1 CDT}
+ {3812943600 -21600 0 CST}
+ {3826252800 -18000 1 CDT}
+ {3844393200 -21600 0 CST}
+ {3858307200 -18000 1 CDT}
+ {3875842800 -21600 0 CST}
+ {3889756800 -18000 1 CDT}
+ {3907292400 -21600 0 CST}
+ {3921206400 -18000 1 CDT}
+ {3939346800 -21600 0 CST}
+ {3952656000 -18000 1 CDT}
+ {3970796400 -21600 0 CST}
+ {3984105600 -18000 1 CDT}
+ {4002246000 -21600 0 CST}
+ {4016160000 -18000 1 CDT}
+ {4033695600 -21600 0 CST}
+ {4047609600 -18000 1 CDT}
+ {4065145200 -21600 0 CST}
+ {4079059200 -18000 1 CDT}
+ {4096594800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla
new file mode 100644
index 0000000..e8af1c0
--- /dev/null
+++ b/library/tzdata/America/Metlakatla
@@ -0,0 +1,43 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Metlakatla) {
+ {-9223372036854775808 54822 0 LMT}
+ {-3225366822 -31578 0 LMT}
+ {-2188955622 -28800 0 PST}
+ {-883584000 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-757353600 -28800 0 PST}
+ {-31507200 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436356000 -28800 0 MeST}
+}
diff --git a/library/tzdata/America/Mexico_City b/library/tzdata/America/Mexico_City
new file mode 100644
index 0000000..48462e4
--- /dev/null
+++ b/library/tzdata/America/Mexico_City
@@ -0,0 +1,228 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Mexico_City) {
+ {-9223372036854775808 -23796 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {-975261600 -18000 1 CDT}
+ {-963169200 -21600 0 CST}
+ {-917114400 -18000 1 CDT}
+ {-907354800 -21600 0 CST}
+ {-821901600 -18000 1 CWT}
+ {-810068400 -21600 0 CST}
+ {-627501600 -18000 1 CDT}
+ {-612990000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {989136000 -18000 1 CDT}
+ {1001836800 -21600 0 CST}
+ {1014184800 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1175414400 -18000 1 CDT}
+ {1193554800 -21600 0 CST}
+ {1207468800 -18000 1 CDT}
+ {1225004400 -21600 0 CST}
+ {1238918400 -18000 1 CDT}
+ {1256454000 -21600 0 CST}
+ {1270368000 -18000 1 CDT}
+ {1288508400 -21600 0 CST}
+ {1301817600 -18000 1 CDT}
+ {1319958000 -21600 0 CST}
+ {1333267200 -18000 1 CDT}
+ {1351407600 -21600 0 CST}
+ {1365321600 -18000 1 CDT}
+ {1382857200 -21600 0 CST}
+ {1396771200 -18000 1 CDT}
+ {1414306800 -21600 0 CST}
+ {1428220800 -18000 1 CDT}
+ {1445756400 -21600 0 CST}
+ {1459670400 -18000 1 CDT}
+ {1477810800 -21600 0 CST}
+ {1491120000 -18000 1 CDT}
+ {1509260400 -21600 0 CST}
+ {1522569600 -18000 1 CDT}
+ {1540710000 -21600 0 CST}
+ {1554624000 -18000 1 CDT}
+ {1572159600 -21600 0 CST}
+ {1586073600 -18000 1 CDT}
+ {1603609200 -21600 0 CST}
+ {1617523200 -18000 1 CDT}
+ {1635663600 -21600 0 CST}
+ {1648972800 -18000 1 CDT}
+ {1667113200 -21600 0 CST}
+ {1680422400 -18000 1 CDT}
+ {1698562800 -21600 0 CST}
+ {1712476800 -18000 1 CDT}
+ {1730012400 -21600 0 CST}
+ {1743926400 -18000 1 CDT}
+ {1761462000 -21600 0 CST}
+ {1775376000 -18000 1 CDT}
+ {1792911600 -21600 0 CST}
+ {1806825600 -18000 1 CDT}
+ {1824966000 -21600 0 CST}
+ {1838275200 -18000 1 CDT}
+ {1856415600 -21600 0 CST}
+ {1869724800 -18000 1 CDT}
+ {1887865200 -21600 0 CST}
+ {1901779200 -18000 1 CDT}
+ {1919314800 -21600 0 CST}
+ {1933228800 -18000 1 CDT}
+ {1950764400 -21600 0 CST}
+ {1964678400 -18000 1 CDT}
+ {1982818800 -21600 0 CST}
+ {1996128000 -18000 1 CDT}
+ {2014268400 -21600 0 CST}
+ {2027577600 -18000 1 CDT}
+ {2045718000 -21600 0 CST}
+ {2059027200 -18000 1 CDT}
+ {2077167600 -21600 0 CST}
+ {2091081600 -18000 1 CDT}
+ {2108617200 -21600 0 CST}
+ {2122531200 -18000 1 CDT}
+ {2140066800 -21600 0 CST}
+ {2153980800 -18000 1 CDT}
+ {2172121200 -21600 0 CST}
+ {2185430400 -18000 1 CDT}
+ {2203570800 -21600 0 CST}
+ {2216880000 -18000 1 CDT}
+ {2235020400 -21600 0 CST}
+ {2248934400 -18000 1 CDT}
+ {2266470000 -21600 0 CST}
+ {2280384000 -18000 1 CDT}
+ {2297919600 -21600 0 CST}
+ {2311833600 -18000 1 CDT}
+ {2329369200 -21600 0 CST}
+ {2343283200 -18000 1 CDT}
+ {2361423600 -21600 0 CST}
+ {2374732800 -18000 1 CDT}
+ {2392873200 -21600 0 CST}
+ {2406182400 -18000 1 CDT}
+ {2424322800 -21600 0 CST}
+ {2438236800 -18000 1 CDT}
+ {2455772400 -21600 0 CST}
+ {2469686400 -18000 1 CDT}
+ {2487222000 -21600 0 CST}
+ {2501136000 -18000 1 CDT}
+ {2519276400 -21600 0 CST}
+ {2532585600 -18000 1 CDT}
+ {2550726000 -21600 0 CST}
+ {2564035200 -18000 1 CDT}
+ {2582175600 -21600 0 CST}
+ {2596089600 -18000 1 CDT}
+ {2613625200 -21600 0 CST}
+ {2627539200 -18000 1 CDT}
+ {2645074800 -21600 0 CST}
+ {2658988800 -18000 1 CDT}
+ {2676524400 -21600 0 CST}
+ {2690438400 -18000 1 CDT}
+ {2708578800 -21600 0 CST}
+ {2721888000 -18000 1 CDT}
+ {2740028400 -21600 0 CST}
+ {2753337600 -18000 1 CDT}
+ {2771478000 -21600 0 CST}
+ {2785392000 -18000 1 CDT}
+ {2802927600 -21600 0 CST}
+ {2816841600 -18000 1 CDT}
+ {2834377200 -21600 0 CST}
+ {2848291200 -18000 1 CDT}
+ {2866431600 -21600 0 CST}
+ {2879740800 -18000 1 CDT}
+ {2897881200 -21600 0 CST}
+ {2911190400 -18000 1 CDT}
+ {2929330800 -21600 0 CST}
+ {2942640000 -18000 1 CDT}
+ {2960780400 -21600 0 CST}
+ {2974694400 -18000 1 CDT}
+ {2992230000 -21600 0 CST}
+ {3006144000 -18000 1 CDT}
+ {3023679600 -21600 0 CST}
+ {3037593600 -18000 1 CDT}
+ {3055734000 -21600 0 CST}
+ {3069043200 -18000 1 CDT}
+ {3087183600 -21600 0 CST}
+ {3100492800 -18000 1 CDT}
+ {3118633200 -21600 0 CST}
+ {3132547200 -18000 1 CDT}
+ {3150082800 -21600 0 CST}
+ {3163996800 -18000 1 CDT}
+ {3181532400 -21600 0 CST}
+ {3195446400 -18000 1 CDT}
+ {3212982000 -21600 0 CST}
+ {3226896000 -18000 1 CDT}
+ {3245036400 -21600 0 CST}
+ {3258345600 -18000 1 CDT}
+ {3276486000 -21600 0 CST}
+ {3289795200 -18000 1 CDT}
+ {3307935600 -21600 0 CST}
+ {3321849600 -18000 1 CDT}
+ {3339385200 -21600 0 CST}
+ {3353299200 -18000 1 CDT}
+ {3370834800 -21600 0 CST}
+ {3384748800 -18000 1 CDT}
+ {3402889200 -21600 0 CST}
+ {3416198400 -18000 1 CDT}
+ {3434338800 -21600 0 CST}
+ {3447648000 -18000 1 CDT}
+ {3465788400 -21600 0 CST}
+ {3479702400 -18000 1 CDT}
+ {3497238000 -21600 0 CST}
+ {3511152000 -18000 1 CDT}
+ {3528687600 -21600 0 CST}
+ {3542601600 -18000 1 CDT}
+ {3560137200 -21600 0 CST}
+ {3574051200 -18000 1 CDT}
+ {3592191600 -21600 0 CST}
+ {3605500800 -18000 1 CDT}
+ {3623641200 -21600 0 CST}
+ {3636950400 -18000 1 CDT}
+ {3655090800 -21600 0 CST}
+ {3669004800 -18000 1 CDT}
+ {3686540400 -21600 0 CST}
+ {3700454400 -18000 1 CDT}
+ {3717990000 -21600 0 CST}
+ {3731904000 -18000 1 CDT}
+ {3750044400 -21600 0 CST}
+ {3763353600 -18000 1 CDT}
+ {3781494000 -21600 0 CST}
+ {3794803200 -18000 1 CDT}
+ {3812943600 -21600 0 CST}
+ {3826252800 -18000 1 CDT}
+ {3844393200 -21600 0 CST}
+ {3858307200 -18000 1 CDT}
+ {3875842800 -21600 0 CST}
+ {3889756800 -18000 1 CDT}
+ {3907292400 -21600 0 CST}
+ {3921206400 -18000 1 CDT}
+ {3939346800 -21600 0 CST}
+ {3952656000 -18000 1 CDT}
+ {3970796400 -21600 0 CST}
+ {3984105600 -18000 1 CDT}
+ {4002246000 -21600 0 CST}
+ {4016160000 -18000 1 CDT}
+ {4033695600 -21600 0 CST}
+ {4047609600 -18000 1 CDT}
+ {4065145200 -21600 0 CST}
+ {4079059200 -18000 1 CDT}
+ {4096594800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Miquelon b/library/tzdata/America/Miquelon
new file mode 100644
index 0000000..a7410f1
--- /dev/null
+++ b/library/tzdata/America/Miquelon
@@ -0,0 +1,234 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Miquelon) {
+ {-9223372036854775808 -13480 0 LMT}
+ {-1850328920 -14400 0 AST}
+ {326001600 -10800 0 PMST}
+ {536468400 -10800 0 PMST}
+ {544597200 -7200 1 PMDT}
+ {562132800 -10800 0 PMST}
+ {576046800 -7200 1 PMDT}
+ {594187200 -10800 0 PMST}
+ {607496400 -7200 1 PMDT}
+ {625636800 -10800 0 PMST}
+ {638946000 -7200 1 PMDT}
+ {657086400 -10800 0 PMST}
+ {671000400 -7200 1 PMDT}
+ {688536000 -10800 0 PMST}
+ {702450000 -7200 1 PMDT}
+ {719985600 -10800 0 PMST}
+ {733899600 -7200 1 PMDT}
+ {752040000 -10800 0 PMST}
+ {765349200 -7200 1 PMDT}
+ {783489600 -10800 0 PMST}
+ {796798800 -7200 1 PMDT}
+ {814939200 -10800 0 PMST}
+ {828853200 -7200 1 PMDT}
+ {846388800 -10800 0 PMST}
+ {860302800 -7200 1 PMDT}
+ {877838400 -10800 0 PMST}
+ {891752400 -7200 1 PMDT}
+ {909288000 -10800 0 PMST}
+ {923202000 -7200 1 PMDT}
+ {941342400 -10800 0 PMST}
+ {954651600 -7200 1 PMDT}
+ {972792000 -10800 0 PMST}
+ {986101200 -7200 1 PMDT}
+ {1004241600 -10800 0 PMST}
+ {1018155600 -7200 1 PMDT}
+ {1035691200 -10800 0 PMST}
+ {1049605200 -7200 1 PMDT}
+ {1067140800 -10800 0 PMST}
+ {1081054800 -7200 1 PMDT}
+ {1099195200 -10800 0 PMST}
+ {1112504400 -7200 1 PMDT}
+ {1130644800 -10800 0 PMST}
+ {1143954000 -7200 1 PMDT}
+ {1162094400 -10800 0 PMST}
+ {1173589200 -7200 1 PMDT}
+ {1194148800 -10800 0 PMST}
+ {1205038800 -7200 1 PMDT}
+ {1225598400 -10800 0 PMST}
+ {1236488400 -7200 1 PMDT}
+ {1257048000 -10800 0 PMST}
+ {1268542800 -7200 1 PMDT}
+ {1289102400 -10800 0 PMST}
+ {1299992400 -7200 1 PMDT}
+ {1320552000 -10800 0 PMST}
+ {1331442000 -7200 1 PMDT}
+ {1352001600 -10800 0 PMST}
+ {1362891600 -7200 1 PMDT}
+ {1383451200 -10800 0 PMST}
+ {1394341200 -7200 1 PMDT}
+ {1414900800 -10800 0 PMST}
+ {1425790800 -7200 1 PMDT}
+ {1446350400 -10800 0 PMST}
+ {1457845200 -7200 1 PMDT}
+ {1478404800 -10800 0 PMST}
+ {1489294800 -7200 1 PMDT}
+ {1509854400 -10800 0 PMST}
+ {1520744400 -7200 1 PMDT}
+ {1541304000 -10800 0 PMST}
+ {1552194000 -7200 1 PMDT}
+ {1572753600 -10800 0 PMST}
+ {1583643600 -7200 1 PMDT}
+ {1604203200 -10800 0 PMST}
+ {1615698000 -7200 1 PMDT}
+ {1636257600 -10800 0 PMST}
+ {1647147600 -7200 1 PMDT}
+ {1667707200 -10800 0 PMST}
+ {1678597200 -7200 1 PMDT}
+ {1699156800 -10800 0 PMST}
+ {1710046800 -7200 1 PMDT}
+ {1730606400 -10800 0 PMST}
+ {1741496400 -7200 1 PMDT}
+ {1762056000 -10800 0 PMST}
+ {1772946000 -7200 1 PMDT}
+ {1793505600 -10800 0 PMST}
+ {1805000400 -7200 1 PMDT}
+ {1825560000 -10800 0 PMST}
+ {1836450000 -7200 1 PMDT}
+ {1857009600 -10800 0 PMST}
+ {1867899600 -7200 1 PMDT}
+ {1888459200 -10800 0 PMST}
+ {1899349200 -7200 1 PMDT}
+ {1919908800 -10800 0 PMST}
+ {1930798800 -7200 1 PMDT}
+ {1951358400 -10800 0 PMST}
+ {1962853200 -7200 1 PMDT}
+ {1983412800 -10800 0 PMST}
+ {1994302800 -7200 1 PMDT}
+ {2014862400 -10800 0 PMST}
+ {2025752400 -7200 1 PMDT}
+ {2046312000 -10800 0 PMST}
+ {2057202000 -7200 1 PMDT}
+ {2077761600 -10800 0 PMST}
+ {2088651600 -7200 1 PMDT}
+ {2109211200 -10800 0 PMST}
+ {2120101200 -7200 1 PMDT}
+ {2140660800 -10800 0 PMST}
+ {2152155600 -7200 1 PMDT}
+ {2172715200 -10800 0 PMST}
+ {2183605200 -7200 1 PMDT}
+ {2204164800 -10800 0 PMST}
+ {2215054800 -7200 1 PMDT}
+ {2235614400 -10800 0 PMST}
+ {2246504400 -7200 1 PMDT}
+ {2267064000 -10800 0 PMST}
+ {2277954000 -7200 1 PMDT}
+ {2298513600 -10800 0 PMST}
+ {2309403600 -7200 1 PMDT}
+ {2329963200 -10800 0 PMST}
+ {2341458000 -7200 1 PMDT}
+ {2362017600 -10800 0 PMST}
+ {2372907600 -7200 1 PMDT}
+ {2393467200 -10800 0 PMST}
+ {2404357200 -7200 1 PMDT}
+ {2424916800 -10800 0 PMST}
+ {2435806800 -7200 1 PMDT}
+ {2456366400 -10800 0 PMST}
+ {2467256400 -7200 1 PMDT}
+ {2487816000 -10800 0 PMST}
+ {2499310800 -7200 1 PMDT}
+ {2519870400 -10800 0 PMST}
+ {2530760400 -7200 1 PMDT}
+ {2551320000 -10800 0 PMST}
+ {2562210000 -7200 1 PMDT}
+ {2582769600 -10800 0 PMST}
+ {2593659600 -7200 1 PMDT}
+ {2614219200 -10800 0 PMST}
+ {2625109200 -7200 1 PMDT}
+ {2645668800 -10800 0 PMST}
+ {2656558800 -7200 1 PMDT}
+ {2677118400 -10800 0 PMST}
+ {2688613200 -7200 1 PMDT}
+ {2709172800 -10800 0 PMST}
+ {2720062800 -7200 1 PMDT}
+ {2740622400 -10800 0 PMST}
+ {2751512400 -7200 1 PMDT}
+ {2772072000 -10800 0 PMST}
+ {2782962000 -7200 1 PMDT}
+ {2803521600 -10800 0 PMST}
+ {2814411600 -7200 1 PMDT}
+ {2834971200 -10800 0 PMST}
+ {2846466000 -7200 1 PMDT}
+ {2867025600 -10800 0 PMST}
+ {2877915600 -7200 1 PMDT}
+ {2898475200 -10800 0 PMST}
+ {2909365200 -7200 1 PMDT}
+ {2929924800 -10800 0 PMST}
+ {2940814800 -7200 1 PMDT}
+ {2961374400 -10800 0 PMST}
+ {2972264400 -7200 1 PMDT}
+ {2992824000 -10800 0 PMST}
+ {3003714000 -7200 1 PMDT}
+ {3024273600 -10800 0 PMST}
+ {3035768400 -7200 1 PMDT}
+ {3056328000 -10800 0 PMST}
+ {3067218000 -7200 1 PMDT}
+ {3087777600 -10800 0 PMST}
+ {3098667600 -7200 1 PMDT}
+ {3119227200 -10800 0 PMST}
+ {3130117200 -7200 1 PMDT}
+ {3150676800 -10800 0 PMST}
+ {3161566800 -7200 1 PMDT}
+ {3182126400 -10800 0 PMST}
+ {3193016400 -7200 1 PMDT}
+ {3213576000 -10800 0 PMST}
+ {3225070800 -7200 1 PMDT}
+ {3245630400 -10800 0 PMST}
+ {3256520400 -7200 1 PMDT}
+ {3277080000 -10800 0 PMST}
+ {3287970000 -7200 1 PMDT}
+ {3308529600 -10800 0 PMST}
+ {3319419600 -7200 1 PMDT}
+ {3339979200 -10800 0 PMST}
+ {3350869200 -7200 1 PMDT}
+ {3371428800 -10800 0 PMST}
+ {3382923600 -7200 1 PMDT}
+ {3403483200 -10800 0 PMST}
+ {3414373200 -7200 1 PMDT}
+ {3434932800 -10800 0 PMST}
+ {3445822800 -7200 1 PMDT}
+ {3466382400 -10800 0 PMST}
+ {3477272400 -7200 1 PMDT}
+ {3497832000 -10800 0 PMST}
+ {3508722000 -7200 1 PMDT}
+ {3529281600 -10800 0 PMST}
+ {3540171600 -7200 1 PMDT}
+ {3560731200 -10800 0 PMST}
+ {3572226000 -7200 1 PMDT}
+ {3592785600 -10800 0 PMST}
+ {3603675600 -7200 1 PMDT}
+ {3624235200 -10800 0 PMST}
+ {3635125200 -7200 1 PMDT}
+ {3655684800 -10800 0 PMST}
+ {3666574800 -7200 1 PMDT}
+ {3687134400 -10800 0 PMST}
+ {3698024400 -7200 1 PMDT}
+ {3718584000 -10800 0 PMST}
+ {3730078800 -7200 1 PMDT}
+ {3750638400 -10800 0 PMST}
+ {3761528400 -7200 1 PMDT}
+ {3782088000 -10800 0 PMST}
+ {3792978000 -7200 1 PMDT}
+ {3813537600 -10800 0 PMST}
+ {3824427600 -7200 1 PMDT}
+ {3844987200 -10800 0 PMST}
+ {3855877200 -7200 1 PMDT}
+ {3876436800 -10800 0 PMST}
+ {3887326800 -7200 1 PMDT}
+ {3907886400 -10800 0 PMST}
+ {3919381200 -7200 1 PMDT}
+ {3939940800 -10800 0 PMST}
+ {3950830800 -7200 1 PMDT}
+ {3971390400 -10800 0 PMST}
+ {3982280400 -7200 1 PMDT}
+ {4002840000 -10800 0 PMST}
+ {4013730000 -7200 1 PMDT}
+ {4034289600 -10800 0 PMST}
+ {4045179600 -7200 1 PMDT}
+ {4065739200 -10800 0 PMST}
+ {4076629200 -7200 1 PMDT}
+ {4097188800 -10800 0 PMST}
+}
diff --git a/library/tzdata/America/Moncton b/library/tzdata/America/Moncton
new file mode 100644
index 0000000..d286c88
--- /dev/null
+++ b/library/tzdata/America/Moncton
@@ -0,0 +1,342 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Moncton) {
+ {-9223372036854775808 -15548 0 LMT}
+ {-2715882052 -18000 0 EST}
+ {-2131642800 -14400 0 AST}
+ {-1632074400 -10800 1 ADT}
+ {-1615143600 -14400 0 AST}
+ {-1167595200 -14400 0 AST}
+ {-1153681200 -10800 1 ADT}
+ {-1145822400 -14400 0 AST}
+ {-1122231600 -10800 1 ADT}
+ {-1114372800 -14400 0 AST}
+ {-1090782000 -10800 1 ADT}
+ {-1082923200 -14400 0 AST}
+ {-1059332400 -10800 1 ADT}
+ {-1051473600 -14400 0 AST}
+ {-1027882800 -10800 1 ADT}
+ {-1020024000 -14400 0 AST}
+ {-996433200 -10800 1 ADT}
+ {-988574400 -14400 0 AST}
+ {-965674800 -10800 1 ADT}
+ {-955396800 -14400 0 AST}
+ {-934743600 -10800 1 ADT}
+ {-923947200 -14400 0 AST}
+ {-904503600 -10800 1 ADT}
+ {-891892800 -14400 0 AST}
+ {-883598400 -14400 0 AST}
+ {-880221600 -10800 1 AWT}
+ {-769395600 -10800 1 APT}
+ {-765399600 -14400 0 AST}
+ {-757368000 -14400 0 AST}
+ {-747252000 -10800 1 ADT}
+ {-733950000 -14400 0 AST}
+ {-715802400 -10800 1 ADT}
+ {-702500400 -14400 0 AST}
+ {-684352800 -10800 1 ADT}
+ {-671050800 -14400 0 AST}
+ {-652903200 -10800 1 ADT}
+ {-639601200 -14400 0 AST}
+ {-620848800 -10800 1 ADT}
+ {-608151600 -14400 0 AST}
+ {-589399200 -10800 1 ADT}
+ {-576097200 -14400 0 AST}
+ {-557949600 -10800 1 ADT}
+ {-544647600 -14400 0 AST}
+ {-526500000 -10800 1 ADT}
+ {-513198000 -14400 0 AST}
+ {-495050400 -10800 1 ADT}
+ {-481748400 -14400 0 AST}
+ {-463600800 -10800 1 ADT}
+ {-450298800 -14400 0 AST}
+ {-431546400 -10800 1 ADT}
+ {-418244400 -14400 0 AST}
+ {-400096800 -10800 1 ADT}
+ {-384375600 -14400 0 AST}
+ {-368647200 -10800 1 ADT}
+ {-352926000 -14400 0 AST}
+ {-337197600 -10800 1 ADT}
+ {-321476400 -14400 0 AST}
+ {-305748000 -10800 1 ADT}
+ {-289422000 -14400 0 AST}
+ {-273693600 -10800 1 ADT}
+ {-257972400 -14400 0 AST}
+ {-242244000 -10800 1 ADT}
+ {-226522800 -14400 0 AST}
+ {-210794400 -10800 1 ADT}
+ {-195073200 -14400 0 AST}
+ {-179344800 -10800 1 ADT}
+ {-163623600 -14400 0 AST}
+ {-147895200 -10800 1 ADT}
+ {-131569200 -14400 0 AST}
+ {-116445600 -10800 1 ADT}
+ {-100119600 -14400 0 AST}
+ {-84391200 -10800 1 ADT}
+ {-68670000 -14400 0 AST}
+ {-52941600 -10800 1 ADT}
+ {-37220400 -14400 0 AST}
+ {-21492000 -10800 1 ADT}
+ {-5770800 -14400 0 AST}
+ {9957600 -10800 1 ADT}
+ {25678800 -14400 0 AST}
+ {41407200 -10800 1 ADT}
+ {57733200 -14400 0 AST}
+ {73461600 -10800 1 ADT}
+ {89182800 -14400 0 AST}
+ {94708800 -14400 0 AST}
+ {136360800 -10800 1 ADT}
+ {152082000 -14400 0 AST}
+ {167810400 -10800 1 ADT}
+ {183531600 -14400 0 AST}
+ {199260000 -10800 1 ADT}
+ {215586000 -14400 0 AST}
+ {230709600 -10800 1 ADT}
+ {247035600 -14400 0 AST}
+ {262764000 -10800 1 ADT}
+ {278485200 -14400 0 AST}
+ {294213600 -10800 1 ADT}
+ {309934800 -14400 0 AST}
+ {325663200 -10800 1 ADT}
+ {341384400 -14400 0 AST}
+ {357112800 -10800 1 ADT}
+ {372834000 -14400 0 AST}
+ {388562400 -10800 1 ADT}
+ {404888400 -14400 0 AST}
+ {420012000 -10800 1 ADT}
+ {436338000 -14400 0 AST}
+ {452066400 -10800 1 ADT}
+ {467787600 -14400 0 AST}
+ {483516000 -10800 1 ADT}
+ {499237200 -14400 0 AST}
+ {514965600 -10800 1 ADT}
+ {530686800 -14400 0 AST}
+ {544600800 -10800 1 ADT}
+ {562136400 -14400 0 AST}
+ {576050400 -10800 1 ADT}
+ {594190800 -14400 0 AST}
+ {607500000 -10800 1 ADT}
+ {625640400 -14400 0 AST}
+ {638949600 -10800 1 ADT}
+ {657090000 -14400 0 AST}
+ {671004000 -10800 1 ADT}
+ {688539600 -14400 0 AST}
+ {702453600 -10800 1 ADT}
+ {719989200 -14400 0 AST}
+ {725860800 -14400 0 AST}
+ {733896060 -10800 1 ADT}
+ {752036460 -14400 0 AST}
+ {765345660 -10800 1 ADT}
+ {783486060 -14400 0 AST}
+ {796795260 -10800 1 ADT}
+ {814935660 -14400 0 AST}
+ {828849660 -10800 1 ADT}
+ {846385260 -14400 0 AST}
+ {860299260 -10800 1 ADT}
+ {877834860 -14400 0 AST}
+ {891748860 -10800 1 ADT}
+ {909284460 -14400 0 AST}
+ {923198460 -10800 1 ADT}
+ {941338860 -14400 0 AST}
+ {954648060 -10800 1 ADT}
+ {972788460 -14400 0 AST}
+ {986097660 -10800 1 ADT}
+ {1004238060 -14400 0 AST}
+ {1018152060 -10800 1 ADT}
+ {1035687660 -14400 0 AST}
+ {1049601660 -10800 1 ADT}
+ {1067137260 -14400 0 AST}
+ {1081051260 -10800 1 ADT}
+ {1099191660 -14400 0 AST}
+ {1112500860 -10800 1 ADT}
+ {1130641260 -14400 0 AST}
+ {1143950460 -10800 1 ADT}
+ {1162090860 -14400 0 AST}
+ {1167624000 -14400 0 AST}
+ {1173592800 -10800 1 ADT}
+ {1194152400 -14400 0 AST}
+ {1205042400 -10800 1 ADT}
+ {1225602000 -14400 0 AST}
+ {1236492000 -10800 1 ADT}
+ {1257051600 -14400 0 AST}
+ {1268546400 -10800 1 ADT}
+ {1289106000 -14400 0 AST}
+ {1299996000 -10800 1 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Monterrey b/library/tzdata/America/Monterrey
new file mode 100644
index 0000000..4135884
--- /dev/null
+++ b/library/tzdata/America/Monterrey
@@ -0,0 +1,218 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Monterrey) {
+ {-9223372036854775808 -24076 0 LMT}
+ {-1514743200 -21600 0 CST}
+ {568015200 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {599637600 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {989136000 -18000 1 CDT}
+ {1001833200 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1175414400 -18000 1 CDT}
+ {1193554800 -21600 0 CST}
+ {1207468800 -18000 1 CDT}
+ {1225004400 -21600 0 CST}
+ {1238918400 -18000 1 CDT}
+ {1256454000 -21600 0 CST}
+ {1270368000 -18000 1 CDT}
+ {1288508400 -21600 0 CST}
+ {1301817600 -18000 1 CDT}
+ {1319958000 -21600 0 CST}
+ {1333267200 -18000 1 CDT}
+ {1351407600 -21600 0 CST}
+ {1365321600 -18000 1 CDT}
+ {1382857200 -21600 0 CST}
+ {1396771200 -18000 1 CDT}
+ {1414306800 -21600 0 CST}
+ {1428220800 -18000 1 CDT}
+ {1445756400 -21600 0 CST}
+ {1459670400 -18000 1 CDT}
+ {1477810800 -21600 0 CST}
+ {1491120000 -18000 1 CDT}
+ {1509260400 -21600 0 CST}
+ {1522569600 -18000 1 CDT}
+ {1540710000 -21600 0 CST}
+ {1554624000 -18000 1 CDT}
+ {1572159600 -21600 0 CST}
+ {1586073600 -18000 1 CDT}
+ {1603609200 -21600 0 CST}
+ {1617523200 -18000 1 CDT}
+ {1635663600 -21600 0 CST}
+ {1648972800 -18000 1 CDT}
+ {1667113200 -21600 0 CST}
+ {1680422400 -18000 1 CDT}
+ {1698562800 -21600 0 CST}
+ {1712476800 -18000 1 CDT}
+ {1730012400 -21600 0 CST}
+ {1743926400 -18000 1 CDT}
+ {1761462000 -21600 0 CST}
+ {1775376000 -18000 1 CDT}
+ {1792911600 -21600 0 CST}
+ {1806825600 -18000 1 CDT}
+ {1824966000 -21600 0 CST}
+ {1838275200 -18000 1 CDT}
+ {1856415600 -21600 0 CST}
+ {1869724800 -18000 1 CDT}
+ {1887865200 -21600 0 CST}
+ {1901779200 -18000 1 CDT}
+ {1919314800 -21600 0 CST}
+ {1933228800 -18000 1 CDT}
+ {1950764400 -21600 0 CST}
+ {1964678400 -18000 1 CDT}
+ {1982818800 -21600 0 CST}
+ {1996128000 -18000 1 CDT}
+ {2014268400 -21600 0 CST}
+ {2027577600 -18000 1 CDT}
+ {2045718000 -21600 0 CST}
+ {2059027200 -18000 1 CDT}
+ {2077167600 -21600 0 CST}
+ {2091081600 -18000 1 CDT}
+ {2108617200 -21600 0 CST}
+ {2122531200 -18000 1 CDT}
+ {2140066800 -21600 0 CST}
+ {2153980800 -18000 1 CDT}
+ {2172121200 -21600 0 CST}
+ {2185430400 -18000 1 CDT}
+ {2203570800 -21600 0 CST}
+ {2216880000 -18000 1 CDT}
+ {2235020400 -21600 0 CST}
+ {2248934400 -18000 1 CDT}
+ {2266470000 -21600 0 CST}
+ {2280384000 -18000 1 CDT}
+ {2297919600 -21600 0 CST}
+ {2311833600 -18000 1 CDT}
+ {2329369200 -21600 0 CST}
+ {2343283200 -18000 1 CDT}
+ {2361423600 -21600 0 CST}
+ {2374732800 -18000 1 CDT}
+ {2392873200 -21600 0 CST}
+ {2406182400 -18000 1 CDT}
+ {2424322800 -21600 0 CST}
+ {2438236800 -18000 1 CDT}
+ {2455772400 -21600 0 CST}
+ {2469686400 -18000 1 CDT}
+ {2487222000 -21600 0 CST}
+ {2501136000 -18000 1 CDT}
+ {2519276400 -21600 0 CST}
+ {2532585600 -18000 1 CDT}
+ {2550726000 -21600 0 CST}
+ {2564035200 -18000 1 CDT}
+ {2582175600 -21600 0 CST}
+ {2596089600 -18000 1 CDT}
+ {2613625200 -21600 0 CST}
+ {2627539200 -18000 1 CDT}
+ {2645074800 -21600 0 CST}
+ {2658988800 -18000 1 CDT}
+ {2676524400 -21600 0 CST}
+ {2690438400 -18000 1 CDT}
+ {2708578800 -21600 0 CST}
+ {2721888000 -18000 1 CDT}
+ {2740028400 -21600 0 CST}
+ {2753337600 -18000 1 CDT}
+ {2771478000 -21600 0 CST}
+ {2785392000 -18000 1 CDT}
+ {2802927600 -21600 0 CST}
+ {2816841600 -18000 1 CDT}
+ {2834377200 -21600 0 CST}
+ {2848291200 -18000 1 CDT}
+ {2866431600 -21600 0 CST}
+ {2879740800 -18000 1 CDT}
+ {2897881200 -21600 0 CST}
+ {2911190400 -18000 1 CDT}
+ {2929330800 -21600 0 CST}
+ {2942640000 -18000 1 CDT}
+ {2960780400 -21600 0 CST}
+ {2974694400 -18000 1 CDT}
+ {2992230000 -21600 0 CST}
+ {3006144000 -18000 1 CDT}
+ {3023679600 -21600 0 CST}
+ {3037593600 -18000 1 CDT}
+ {3055734000 -21600 0 CST}
+ {3069043200 -18000 1 CDT}
+ {3087183600 -21600 0 CST}
+ {3100492800 -18000 1 CDT}
+ {3118633200 -21600 0 CST}
+ {3132547200 -18000 1 CDT}
+ {3150082800 -21600 0 CST}
+ {3163996800 -18000 1 CDT}
+ {3181532400 -21600 0 CST}
+ {3195446400 -18000 1 CDT}
+ {3212982000 -21600 0 CST}
+ {3226896000 -18000 1 CDT}
+ {3245036400 -21600 0 CST}
+ {3258345600 -18000 1 CDT}
+ {3276486000 -21600 0 CST}
+ {3289795200 -18000 1 CDT}
+ {3307935600 -21600 0 CST}
+ {3321849600 -18000 1 CDT}
+ {3339385200 -21600 0 CST}
+ {3353299200 -18000 1 CDT}
+ {3370834800 -21600 0 CST}
+ {3384748800 -18000 1 CDT}
+ {3402889200 -21600 0 CST}
+ {3416198400 -18000 1 CDT}
+ {3434338800 -21600 0 CST}
+ {3447648000 -18000 1 CDT}
+ {3465788400 -21600 0 CST}
+ {3479702400 -18000 1 CDT}
+ {3497238000 -21600 0 CST}
+ {3511152000 -18000 1 CDT}
+ {3528687600 -21600 0 CST}
+ {3542601600 -18000 1 CDT}
+ {3560137200 -21600 0 CST}
+ {3574051200 -18000 1 CDT}
+ {3592191600 -21600 0 CST}
+ {3605500800 -18000 1 CDT}
+ {3623641200 -21600 0 CST}
+ {3636950400 -18000 1 CDT}
+ {3655090800 -21600 0 CST}
+ {3669004800 -18000 1 CDT}
+ {3686540400 -21600 0 CST}
+ {3700454400 -18000 1 CDT}
+ {3717990000 -21600 0 CST}
+ {3731904000 -18000 1 CDT}
+ {3750044400 -21600 0 CST}
+ {3763353600 -18000 1 CDT}
+ {3781494000 -21600 0 CST}
+ {3794803200 -18000 1 CDT}
+ {3812943600 -21600 0 CST}
+ {3826252800 -18000 1 CDT}
+ {3844393200 -21600 0 CST}
+ {3858307200 -18000 1 CDT}
+ {3875842800 -21600 0 CST}
+ {3889756800 -18000 1 CDT}
+ {3907292400 -21600 0 CST}
+ {3921206400 -18000 1 CDT}
+ {3939346800 -21600 0 CST}
+ {3952656000 -18000 1 CDT}
+ {3970796400 -21600 0 CST}
+ {3984105600 -18000 1 CDT}
+ {4002246000 -21600 0 CST}
+ {4016160000 -18000 1 CDT}
+ {4033695600 -21600 0 CST}
+ {4047609600 -18000 1 CDT}
+ {4065145200 -21600 0 CST}
+ {4079059200 -18000 1 CDT}
+ {4096594800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Montevideo b/library/tzdata/America/Montevideo
new file mode 100644
index 0000000..aa469b9
--- /dev/null
+++ b/library/tzdata/America/Montevideo
@@ -0,0 +1,261 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Montevideo) {
+ {-9223372036854775808 -13484 0 LMT}
+ {-2256668116 -13484 0 MMT}
+ {-1567455316 -12600 0 UYT}
+ {-1459542600 -10800 1 UYHST}
+ {-1443819600 -12600 0 UYT}
+ {-1428006600 -10800 1 UYHST}
+ {-1412283600 -12600 0 UYT}
+ {-1396470600 -10800 1 UYHST}
+ {-1380747600 -12600 0 UYT}
+ {-1141590600 -10800 1 UYHST}
+ {-1128286800 -12600 0 UYT}
+ {-1110141000 -10800 1 UYHST}
+ {-1096837200 -12600 0 UYT}
+ {-1078691400 -10800 1 UYHST}
+ {-1065387600 -12600 0 UYT}
+ {-1046637000 -10800 1 UYHST}
+ {-1033938000 -12600 0 UYT}
+ {-1015187400 -10800 1 UYHST}
+ {-1002488400 -12600 0 UYT}
+ {-983737800 -10800 1 UYHST}
+ {-971038800 -12600 0 UYT}
+ {-952288200 -10800 1 UYHST}
+ {-938984400 -12600 0 UYT}
+ {-920838600 -10800 1 UYHST}
+ {-907534800 -12600 0 UYT}
+ {-896819400 -10800 1 UYHST}
+ {-853623000 -10800 0 UYT}
+ {-853621200 -7200 1 UYST}
+ {-845848800 -10800 0 UYT}
+ {-334789200 -7200 1 UYST}
+ {-319672800 -10800 0 UYT}
+ {-314226000 -7200 1 UYST}
+ {-309996000 -10800 0 UYT}
+ {-149720400 -7200 1 UYST}
+ {-134604000 -10800 0 UYT}
+ {-118270800 -7200 1 UYST}
+ {-100044000 -10800 0 UYT}
+ {-86821200 -7200 1 UYST}
+ {-68508000 -10800 0 UYT}
+ {-50446800 -9000 1 UYHST}
+ {-34119000 -10800 0 UYT}
+ {-18910800 -9000 1 UYHST}
+ {-2583000 -10800 0 UYT}
+ {12625200 -9000 1 UYHST}
+ {28953000 -10800 0 UYT}
+ {72932400 -7200 1 UYST}
+ {82692000 -10800 0 UYT}
+ {132116400 -9000 1 UYHST}
+ {156911400 -7200 1 UYST}
+ {212983200 -10800 0 UYT}
+ {250052400 -7200 1 UYST}
+ {260244000 -10800 0 UYT}
+ {307594800 -7200 1 UYST}
+ {325994400 -10800 0 UYT}
+ {566449200 -7200 1 UYST}
+ {574308000 -10800 0 UYT}
+ {597812400 -7200 1 UYST}
+ {605671200 -10800 0 UYT}
+ {625633200 -7200 1 UYST}
+ {636516000 -10800 0 UYT}
+ {656478000 -7200 1 UYST}
+ {667965600 -10800 0 UYT}
+ {688532400 -7200 1 UYST}
+ {699415200 -10800 0 UYT}
+ {719377200 -7200 1 UYST}
+ {730864800 -10800 0 UYT}
+ {1095562800 -7200 1 UYST}
+ {1111896000 -10800 0 UYT}
+ {1128834000 -7200 1 UYST}
+ {1142136000 -10800 0 UYT}
+ {1159678800 -7200 1 UYST}
+ {1173585600 -10800 0 UYT}
+ {1191733200 -7200 1 UYST}
+ {1205035200 -10800 0 UYT}
+ {1223182800 -7200 1 UYST}
+ {1236484800 -10800 0 UYT}
+ {1254632400 -7200 1 UYST}
+ {1268539200 -10800 0 UYT}
+ {1286082000 -7200 1 UYST}
+ {1299988800 -10800 0 UYT}
+ {1317531600 -7200 1 UYST}
+ {1331438400 -10800 0 UYT}
+ {1349586000 -7200 1 UYST}
+ {1362888000 -10800 0 UYT}
+ {1381035600 -7200 1 UYST}
+ {1394337600 -10800 0 UYT}
+ {1412485200 -7200 1 UYST}
+ {1425787200 -10800 0 UYT}
+ {1443934800 -7200 1 UYST}
+ {1457841600 -10800 0 UYT}
+ {1475384400 -7200 1 UYST}
+ {1489291200 -10800 0 UYT}
+ {1506834000 -7200 1 UYST}
+ {1520740800 -10800 0 UYT}
+ {1538888400 -7200 1 UYST}
+ {1552190400 -10800 0 UYT}
+ {1570338000 -7200 1 UYST}
+ {1583640000 -10800 0 UYT}
+ {1601787600 -7200 1 UYST}
+ {1615694400 -10800 0 UYT}
+ {1633237200 -7200 1 UYST}
+ {1647144000 -10800 0 UYT}
+ {1664686800 -7200 1 UYST}
+ {1678593600 -10800 0 UYT}
+ {1696136400 -7200 1 UYST}
+ {1710043200 -10800 0 UYT}
+ {1728190800 -7200 1 UYST}
+ {1741492800 -10800 0 UYT}
+ {1759640400 -7200 1 UYST}
+ {1772942400 -10800 0 UYT}
+ {1791090000 -7200 1 UYST}
+ {1804996800 -10800 0 UYT}
+ {1822539600 -7200 1 UYST}
+ {1836446400 -10800 0 UYT}
+ {1853989200 -7200 1 UYST}
+ {1867896000 -10800 0 UYT}
+ {1886043600 -7200 1 UYST}
+ {1899345600 -10800 0 UYT}
+ {1917493200 -7200 1 UYST}
+ {1930795200 -10800 0 UYT}
+ {1948942800 -7200 1 UYST}
+ {1962849600 -10800 0 UYT}
+ {1980392400 -7200 1 UYST}
+ {1994299200 -10800 0 UYT}
+ {2011842000 -7200 1 UYST}
+ {2025748800 -10800 0 UYT}
+ {2043291600 -7200 1 UYST}
+ {2057198400 -10800 0 UYT}
+ {2075346000 -7200 1 UYST}
+ {2088648000 -10800 0 UYT}
+ {2106795600 -7200 1 UYST}
+ {2120097600 -10800 0 UYT}
+ {2138245200 -7200 1 UYST}
+ {2152152000 -10800 0 UYT}
+ {2169694800 -7200 1 UYST}
+ {2183601600 -10800 0 UYT}
+ {2201144400 -7200 1 UYST}
+ {2215051200 -10800 0 UYT}
+ {2233198800 -7200 1 UYST}
+ {2246500800 -10800 0 UYT}
+ {2264648400 -7200 1 UYST}
+ {2277950400 -10800 0 UYT}
+ {2296098000 -7200 1 UYST}
+ {2309400000 -10800 0 UYT}
+ {2327547600 -7200 1 UYST}
+ {2341454400 -10800 0 UYT}
+ {2358997200 -7200 1 UYST}
+ {2372904000 -10800 0 UYT}
+ {2390446800 -7200 1 UYST}
+ {2404353600 -10800 0 UYT}
+ {2422501200 -7200 1 UYST}
+ {2435803200 -10800 0 UYT}
+ {2453950800 -7200 1 UYST}
+ {2467252800 -10800 0 UYT}
+ {2485400400 -7200 1 UYST}
+ {2499307200 -10800 0 UYT}
+ {2516850000 -7200 1 UYST}
+ {2530756800 -10800 0 UYT}
+ {2548299600 -7200 1 UYST}
+ {2562206400 -10800 0 UYT}
+ {2579749200 -7200 1 UYST}
+ {2593656000 -10800 0 UYT}
+ {2611803600 -7200 1 UYST}
+ {2625105600 -10800 0 UYT}
+ {2643253200 -7200 1 UYST}
+ {2656555200 -10800 0 UYT}
+ {2674702800 -7200 1 UYST}
+ {2688609600 -10800 0 UYT}
+ {2706152400 -7200 1 UYST}
+ {2720059200 -10800 0 UYT}
+ {2737602000 -7200 1 UYST}
+ {2751508800 -10800 0 UYT}
+ {2769656400 -7200 1 UYST}
+ {2782958400 -10800 0 UYT}
+ {2801106000 -7200 1 UYST}
+ {2814408000 -10800 0 UYT}
+ {2832555600 -7200 1 UYST}
+ {2846462400 -10800 0 UYT}
+ {2864005200 -7200 1 UYST}
+ {2877912000 -10800 0 UYT}
+ {2895454800 -7200 1 UYST}
+ {2909361600 -10800 0 UYT}
+ {2926904400 -7200 1 UYST}
+ {2940811200 -10800 0 UYT}
+ {2958958800 -7200 1 UYST}
+ {2972260800 -10800 0 UYT}
+ {2990408400 -7200 1 UYST}
+ {3003710400 -10800 0 UYT}
+ {3021858000 -7200 1 UYST}
+ {3035764800 -10800 0 UYT}
+ {3053307600 -7200 1 UYST}
+ {3067214400 -10800 0 UYT}
+ {3084757200 -7200 1 UYST}
+ {3098664000 -10800 0 UYT}
+ {3116811600 -7200 1 UYST}
+ {3130113600 -10800 0 UYT}
+ {3148261200 -7200 1 UYST}
+ {3161563200 -10800 0 UYT}
+ {3179710800 -7200 1 UYST}
+ {3193012800 -10800 0 UYT}
+ {3211160400 -7200 1 UYST}
+ {3225067200 -10800 0 UYT}
+ {3242610000 -7200 1 UYST}
+ {3256516800 -10800 0 UYT}
+ {3274059600 -7200 1 UYST}
+ {3287966400 -10800 0 UYT}
+ {3306114000 -7200 1 UYST}
+ {3319416000 -10800 0 UYT}
+ {3337563600 -7200 1 UYST}
+ {3350865600 -10800 0 UYT}
+ {3369013200 -7200 1 UYST}
+ {3382920000 -10800 0 UYT}
+ {3400462800 -7200 1 UYST}
+ {3414369600 -10800 0 UYT}
+ {3431912400 -7200 1 UYST}
+ {3445819200 -10800 0 UYT}
+ {3463362000 -7200 1 UYST}
+ {3477268800 -10800 0 UYT}
+ {3495416400 -7200 1 UYST}
+ {3508718400 -10800 0 UYT}
+ {3526866000 -7200 1 UYST}
+ {3540168000 -10800 0 UYT}
+ {3558315600 -7200 1 UYST}
+ {3572222400 -10800 0 UYT}
+ {3589765200 -7200 1 UYST}
+ {3603672000 -10800 0 UYT}
+ {3621214800 -7200 1 UYST}
+ {3635121600 -10800 0 UYT}
+ {3653269200 -7200 1 UYST}
+ {3666571200 -10800 0 UYT}
+ {3684718800 -7200 1 UYST}
+ {3698020800 -10800 0 UYT}
+ {3716168400 -7200 1 UYST}
+ {3730075200 -10800 0 UYT}
+ {3747618000 -7200 1 UYST}
+ {3761524800 -10800 0 UYT}
+ {3779067600 -7200 1 UYST}
+ {3792974400 -10800 0 UYT}
+ {3810517200 -7200 1 UYST}
+ {3824424000 -10800 0 UYT}
+ {3842571600 -7200 1 UYST}
+ {3855873600 -10800 0 UYT}
+ {3874021200 -7200 1 UYST}
+ {3887323200 -10800 0 UYT}
+ {3905470800 -7200 1 UYST}
+ {3919377600 -10800 0 UYT}
+ {3936920400 -7200 1 UYST}
+ {3950827200 -10800 0 UYT}
+ {3968370000 -7200 1 UYST}
+ {3982276800 -10800 0 UYT}
+ {4000424400 -7200 1 UYST}
+ {4013726400 -10800 0 UYT}
+ {4031874000 -7200 1 UYST}
+ {4045176000 -10800 0 UYT}
+ {4063323600 -7200 1 UYST}
+ {4076625600 -10800 0 UYT}
+ {4094773200 -7200 1 UYST}
+}
diff --git a/library/tzdata/America/Montreal b/library/tzdata/America/Montreal
new file mode 100644
index 0000000..bebe7dc
--- /dev/null
+++ b/library/tzdata/America/Montreal
@@ -0,0 +1,366 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Montreal) {
+ {-9223372036854775808 -17656 0 LMT}
+ {-2713892744 -18000 0 EST}
+ {-1665334800 -14400 1 EDT}
+ {-1662753600 -18000 0 EST}
+ {-1640977200 -18000 0 EST}
+ {-1632070800 -14400 1 EDT}
+ {-1615140000 -18000 0 EST}
+ {-1609441200 -18000 0 EST}
+ {-1601742600 -14400 1 EDT}
+ {-1583775000 -18000 0 EST}
+ {-1567355400 -14400 1 EDT}
+ {-1554053400 -18000 0 EST}
+ {-1535907600 -14400 1 EDT}
+ {-1522603800 -18000 0 EST}
+ {-1504458000 -14400 1 EDT}
+ {-1491154200 -18000 0 EST}
+ {-1439830800 -14400 1 EDT}
+ {-1428255000 -18000 0 EST}
+ {-1409504400 -14400 1 EDT}
+ {-1396805400 -18000 0 EST}
+ {-1378054800 -14400 1 EDT}
+ {-1365355800 -18000 0 EST}
+ {-1346612400 -14400 1 EDT}
+ {-1333915200 -18000 0 EST}
+ {-1315162800 -14400 1 EDT}
+ {-1301860800 -18000 0 EST}
+ {-1283713200 -14400 1 EDT}
+ {-1270411200 -18000 0 EST}
+ {-1252263600 -14400 1 EDT}
+ {-1238961600 -18000 0 EST}
+ {-1220814000 -14400 1 EDT}
+ {-1207512000 -18000 0 EST}
+ {-1188759600 -14400 1 EDT}
+ {-1176062400 -18000 0 EST}
+ {-1157310000 -14400 1 EDT}
+ {-1144008000 -18000 0 EST}
+ {-1125860400 -14400 1 EDT}
+ {-1112558400 -18000 0 EST}
+ {-1094410800 -14400 1 EDT}
+ {-1081108800 -18000 0 EST}
+ {-1062961200 -14400 1 EDT}
+ {-1049659200 -18000 0 EST}
+ {-1031511600 -14400 1 EDT}
+ {-1018209600 -18000 0 EST}
+ {-1000062000 -14400 1 EDT}
+ {-986760000 -18000 0 EST}
+ {-968007600 -14400 1 EDT}
+ {-955310400 -18000 0 EST}
+ {-936558000 -14400 1 EDT}
+ {-880218000 -14400 0 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {-757364400 -18000 0 EST}
+ {-747248400 -14400 1 EDT}
+ {-733946400 -18000 0 EST}
+ {-715798800 -14400 1 EDT}
+ {-702496800 -18000 0 EST}
+ {-684349200 -14400 1 EDT}
+ {-671047200 -18000 0 EST}
+ {-652899600 -14400 1 EDT}
+ {-636573600 -18000 0 EST}
+ {-620845200 -14400 1 EDT}
+ {-605124000 -18000 0 EST}
+ {-589395600 -14400 1 EDT}
+ {-576093600 -18000 0 EST}
+ {-557946000 -14400 1 EDT}
+ {-544644000 -18000 0 EST}
+ {-526496400 -14400 1 EDT}
+ {-513194400 -18000 0 EST}
+ {-495046800 -14400 1 EDT}
+ {-481744800 -18000 0 EST}
+ {-463597200 -14400 1 EDT}
+ {-450295200 -18000 0 EST}
+ {-431542800 -14400 1 EDT}
+ {-418240800 -18000 0 EST}
+ {-400093200 -14400 1 EDT}
+ {-384372000 -18000 0 EST}
+ {-368643600 -14400 1 EDT}
+ {-352922400 -18000 0 EST}
+ {-337194000 -14400 1 EDT}
+ {-321472800 -18000 0 EST}
+ {-305744400 -14400 1 EDT}
+ {-289418400 -18000 0 EST}
+ {-273690000 -14400 1 EDT}
+ {-257968800 -18000 0 EST}
+ {-242240400 -14400 1 EDT}
+ {-226519200 -18000 0 EST}
+ {-210790800 -14400 1 EDT}
+ {-195069600 -18000 0 EST}
+ {-179341200 -14400 1 EDT}
+ {-163620000 -18000 0 EST}
+ {-147891600 -14400 1 EDT}
+ {-131565600 -18000 0 EST}
+ {-116442000 -14400 1 EDT}
+ {-100116000 -18000 0 EST}
+ {-84387600 -14400 1 EDT}
+ {-68666400 -18000 0 EST}
+ {-52938000 -14400 1 EDT}
+ {-37216800 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126248400 -18000 0 EST}
+ {136364400 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {167814000 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Montserrat b/library/tzdata/America/Montserrat
new file mode 100644
index 0000000..0a656d3
--- /dev/null
+++ b/library/tzdata/America/Montserrat
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Montserrat) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Nassau b/library/tzdata/America/Nassau
new file mode 100644
index 0000000..1c35e93
--- /dev/null
+++ b/library/tzdata/America/Nassau
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Nassau) {
+ {-9223372036854775808 -18570 0 LMT}
+ {-1825095030 -18000 0 EST}
+ {-179341200 -14400 1 EDT}
+ {-163620000 -18000 0 EST}
+ {-147891600 -14400 1 EDT}
+ {-131565600 -18000 0 EST}
+ {-116442000 -14400 1 EDT}
+ {-100116000 -18000 0 EST}
+ {-84387600 -14400 1 EDT}
+ {-68666400 -18000 0 EST}
+ {-52938000 -14400 1 EDT}
+ {-37216800 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {136364400 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {167814000 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {189320400 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/New_York b/library/tzdata/America/New_York
new file mode 100644
index 0000000..72f2c96
--- /dev/null
+++ b/library/tzdata/America/New_York
@@ -0,0 +1,369 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/New_York) {
+ {-9223372036854775808 -17762 0 LMT}
+ {-2717650800 -18000 0 EST}
+ {-1633280400 -14400 1 EDT}
+ {-1615140000 -18000 0 EST}
+ {-1601830800 -14400 1 EDT}
+ {-1583690400 -18000 0 EST}
+ {-1577905200 -18000 0 EST}
+ {-1570381200 -14400 1 EDT}
+ {-1551636000 -18000 0 EST}
+ {-1536512400 -14400 1 EDT}
+ {-1523210400 -18000 0 EST}
+ {-1504458000 -14400 1 EDT}
+ {-1491760800 -18000 0 EST}
+ {-1473008400 -14400 1 EDT}
+ {-1459706400 -18000 0 EST}
+ {-1441558800 -14400 1 EDT}
+ {-1428256800 -18000 0 EST}
+ {-1410109200 -14400 1 EDT}
+ {-1396807200 -18000 0 EST}
+ {-1378659600 -14400 1 EDT}
+ {-1365357600 -18000 0 EST}
+ {-1347210000 -14400 1 EDT}
+ {-1333908000 -18000 0 EST}
+ {-1315155600 -14400 1 EDT}
+ {-1301853600 -18000 0 EST}
+ {-1283706000 -14400 1 EDT}
+ {-1270404000 -18000 0 EST}
+ {-1252256400 -14400 1 EDT}
+ {-1238954400 -18000 0 EST}
+ {-1220806800 -14400 1 EDT}
+ {-1207504800 -18000 0 EST}
+ {-1189357200 -14400 1 EDT}
+ {-1176055200 -18000 0 EST}
+ {-1157302800 -14400 1 EDT}
+ {-1144605600 -18000 0 EST}
+ {-1125853200 -14400 1 EDT}
+ {-1112551200 -18000 0 EST}
+ {-1094403600 -14400 1 EDT}
+ {-1081101600 -18000 0 EST}
+ {-1062954000 -14400 1 EDT}
+ {-1049652000 -18000 0 EST}
+ {-1031504400 -14400 1 EDT}
+ {-1018202400 -18000 0 EST}
+ {-1000054800 -14400 1 EDT}
+ {-986752800 -18000 0 EST}
+ {-968000400 -14400 1 EDT}
+ {-955303200 -18000 0 EST}
+ {-936550800 -14400 1 EDT}
+ {-923248800 -18000 0 EST}
+ {-905101200 -14400 1 EDT}
+ {-891799200 -18000 0 EST}
+ {-883594800 -18000 0 EST}
+ {-880218000 -14400 1 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {-757364400 -18000 0 EST}
+ {-747248400 -14400 1 EDT}
+ {-733946400 -18000 0 EST}
+ {-715798800 -14400 1 EDT}
+ {-702496800 -18000 0 EST}
+ {-684349200 -14400 1 EDT}
+ {-671047200 -18000 0 EST}
+ {-652899600 -14400 1 EDT}
+ {-639597600 -18000 0 EST}
+ {-620845200 -14400 1 EDT}
+ {-608148000 -18000 0 EST}
+ {-589395600 -14400 1 EDT}
+ {-576093600 -18000 0 EST}
+ {-557946000 -14400 1 EDT}
+ {-544644000 -18000 0 EST}
+ {-526496400 -14400 1 EDT}
+ {-513194400 -18000 0 EST}
+ {-495046800 -14400 1 EDT}
+ {-481744800 -18000 0 EST}
+ {-463597200 -14400 1 EDT}
+ {-447271200 -18000 0 EST}
+ {-431542800 -14400 1 EDT}
+ {-415821600 -18000 0 EST}
+ {-400093200 -14400 1 EDT}
+ {-384372000 -18000 0 EST}
+ {-368643600 -14400 1 EDT}
+ {-352922400 -18000 0 EST}
+ {-337194000 -14400 1 EDT}
+ {-321472800 -18000 0 EST}
+ {-305744400 -14400 1 EDT}
+ {-289418400 -18000 0 EST}
+ {-273690000 -14400 1 EDT}
+ {-257968800 -18000 0 EST}
+ {-242240400 -14400 1 EDT}
+ {-226519200 -18000 0 EST}
+ {-210790800 -14400 1 EDT}
+ {-195069600 -18000 0 EST}
+ {-179341200 -14400 1 EDT}
+ {-163620000 -18000 0 EST}
+ {-147891600 -14400 1 EDT}
+ {-131565600 -18000 0 EST}
+ {-116442000 -14400 1 EDT}
+ {-100116000 -18000 0 EST}
+ {-94676400 -18000 0 EST}
+ {-84387600 -14400 1 EDT}
+ {-68666400 -18000 0 EST}
+ {-52938000 -14400 1 EDT}
+ {-37216800 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126687600 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {162370800 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Nipigon b/library/tzdata/America/Nipigon
new file mode 100644
index 0000000..30690aa
--- /dev/null
+++ b/library/tzdata/America/Nipigon
@@ -0,0 +1,264 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Nipigon) {
+ {-9223372036854775808 -21184 0 LMT}
+ {-2366734016 -18000 0 EST}
+ {-1632070800 -14400 1 EDT}
+ {-1615140000 -18000 0 EST}
+ {-923252400 -14400 1 EDT}
+ {-880218000 -14400 0 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {136364400 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {167814000 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Nome b/library/tzdata/America/Nome
new file mode 100644
index 0000000..c095b79
--- /dev/null
+++ b/library/tzdata/America/Nome
@@ -0,0 +1,276 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Nome) {
+ {-9223372036854775808 46701 0 LMT}
+ {-3225358701 -39698 0 LMT}
+ {-2188947502 -39600 0 NST}
+ {-883573200 -39600 0 NST}
+ {-880196400 -36000 1 NWT}
+ {-769395600 -36000 1 NPT}
+ {-765374400 -39600 0 NST}
+ {-757342800 -39600 0 NST}
+ {-86878800 -39600 0 BST}
+ {-31496400 -39600 0 BST}
+ {-21466800 -36000 1 BDT}
+ {-5745600 -39600 0 BST}
+ {9982800 -36000 1 BDT}
+ {25704000 -39600 0 BST}
+ {41432400 -36000 1 BDT}
+ {57758400 -39600 0 BST}
+ {73486800 -36000 1 BDT}
+ {89208000 -39600 0 BST}
+ {104936400 -36000 1 BDT}
+ {120657600 -39600 0 BST}
+ {126709200 -36000 1 BDT}
+ {152107200 -39600 0 BST}
+ {162392400 -36000 1 BDT}
+ {183556800 -39600 0 BST}
+ {199285200 -36000 1 BDT}
+ {215611200 -39600 0 BST}
+ {230734800 -36000 1 BDT}
+ {247060800 -39600 0 BST}
+ {262789200 -36000 1 BDT}
+ {278510400 -39600 0 BST}
+ {294238800 -36000 1 BDT}
+ {309960000 -39600 0 BST}
+ {325688400 -36000 1 BDT}
+ {341409600 -39600 0 BST}
+ {357138000 -36000 1 BDT}
+ {372859200 -39600 0 BST}
+ {388587600 -36000 1 BDT}
+ {404913600 -39600 0 BST}
+ {420037200 -36000 1 BDT}
+ {439030800 -32400 0 AKST}
+ {452084400 -28800 1 AKDT}
+ {467805600 -32400 0 AKST}
+ {483534000 -28800 1 AKDT}
+ {499255200 -32400 0 AKST}
+ {514983600 -28800 1 AKDT}
+ {530704800 -32400 0 AKST}
+ {544618800 -28800 1 AKDT}
+ {562154400 -32400 0 AKST}
+ {576068400 -28800 1 AKDT}
+ {594208800 -32400 0 AKST}
+ {607518000 -28800 1 AKDT}
+ {625658400 -32400 0 AKST}
+ {638967600 -28800 1 AKDT}
+ {657108000 -32400 0 AKST}
+ {671022000 -28800 1 AKDT}
+ {688557600 -32400 0 AKST}
+ {702471600 -28800 1 AKDT}
+ {720007200 -32400 0 AKST}
+ {733921200 -28800 1 AKDT}
+ {752061600 -32400 0 AKST}
+ {765370800 -28800 1 AKDT}
+ {783511200 -32400 0 AKST}
+ {796820400 -28800 1 AKDT}
+ {814960800 -32400 0 AKST}
+ {828874800 -28800 1 AKDT}
+ {846410400 -32400 0 AKST}
+ {860324400 -28800 1 AKDT}
+ {877860000 -32400 0 AKST}
+ {891774000 -28800 1 AKDT}
+ {909309600 -32400 0 AKST}
+ {923223600 -28800 1 AKDT}
+ {941364000 -32400 0 AKST}
+ {954673200 -28800 1 AKDT}
+ {972813600 -32400 0 AKST}
+ {986122800 -28800 1 AKDT}
+ {1004263200 -32400 0 AKST}
+ {1018177200 -28800 1 AKDT}
+ {1035712800 -32400 0 AKST}
+ {1049626800 -28800 1 AKDT}
+ {1067162400 -32400 0 AKST}
+ {1081076400 -28800 1 AKDT}
+ {1099216800 -32400 0 AKST}
+ {1112526000 -28800 1 AKDT}
+ {1130666400 -32400 0 AKST}
+ {1143975600 -28800 1 AKDT}
+ {1162116000 -32400 0 AKST}
+ {1173610800 -28800 1 AKDT}
+ {1194170400 -32400 0 AKST}
+ {1205060400 -28800 1 AKDT}
+ {1225620000 -32400 0 AKST}
+ {1236510000 -28800 1 AKDT}
+ {1257069600 -32400 0 AKST}
+ {1268564400 -28800 1 AKDT}
+ {1289124000 -32400 0 AKST}
+ {1300014000 -28800 1 AKDT}
+ {1320573600 -32400 0 AKST}
+ {1331463600 -28800 1 AKDT}
+ {1352023200 -32400 0 AKST}
+ {1362913200 -28800 1 AKDT}
+ {1383472800 -32400 0 AKST}
+ {1394362800 -28800 1 AKDT}
+ {1414922400 -32400 0 AKST}
+ {1425812400 -28800 1 AKDT}
+ {1446372000 -32400 0 AKST}
+ {1457866800 -28800 1 AKDT}
+ {1478426400 -32400 0 AKST}
+ {1489316400 -28800 1 AKDT}
+ {1509876000 -32400 0 AKST}
+ {1520766000 -28800 1 AKDT}
+ {1541325600 -32400 0 AKST}
+ {1552215600 -28800 1 AKDT}
+ {1572775200 -32400 0 AKST}
+ {1583665200 -28800 1 AKDT}
+ {1604224800 -32400 0 AKST}
+ {1615719600 -28800 1 AKDT}
+ {1636279200 -32400 0 AKST}
+ {1647169200 -28800 1 AKDT}
+ {1667728800 -32400 0 AKST}
+ {1678618800 -28800 1 AKDT}
+ {1699178400 -32400 0 AKST}
+ {1710068400 -28800 1 AKDT}
+ {1730628000 -32400 0 AKST}
+ {1741518000 -28800 1 AKDT}
+ {1762077600 -32400 0 AKST}
+ {1772967600 -28800 1 AKDT}
+ {1793527200 -32400 0 AKST}
+ {1805022000 -28800 1 AKDT}
+ {1825581600 -32400 0 AKST}
+ {1836471600 -28800 1 AKDT}
+ {1857031200 -32400 0 AKST}
+ {1867921200 -28800 1 AKDT}
+ {1888480800 -32400 0 AKST}
+ {1899370800 -28800 1 AKDT}
+ {1919930400 -32400 0 AKST}
+ {1930820400 -28800 1 AKDT}
+ {1951380000 -32400 0 AKST}
+ {1962874800 -28800 1 AKDT}
+ {1983434400 -32400 0 AKST}
+ {1994324400 -28800 1 AKDT}
+ {2014884000 -32400 0 AKST}
+ {2025774000 -28800 1 AKDT}
+ {2046333600 -32400 0 AKST}
+ {2057223600 -28800 1 AKDT}
+ {2077783200 -32400 0 AKST}
+ {2088673200 -28800 1 AKDT}
+ {2109232800 -32400 0 AKST}
+ {2120122800 -28800 1 AKDT}
+ {2140682400 -32400 0 AKST}
+ {2152177200 -28800 1 AKDT}
+ {2172736800 -32400 0 AKST}
+ {2183626800 -28800 1 AKDT}
+ {2204186400 -32400 0 AKST}
+ {2215076400 -28800 1 AKDT}
+ {2235636000 -32400 0 AKST}
+ {2246526000 -28800 1 AKDT}
+ {2267085600 -32400 0 AKST}
+ {2277975600 -28800 1 AKDT}
+ {2298535200 -32400 0 AKST}
+ {2309425200 -28800 1 AKDT}
+ {2329984800 -32400 0 AKST}
+ {2341479600 -28800 1 AKDT}
+ {2362039200 -32400 0 AKST}
+ {2372929200 -28800 1 AKDT}
+ {2393488800 -32400 0 AKST}
+ {2404378800 -28800 1 AKDT}
+ {2424938400 -32400 0 AKST}
+ {2435828400 -28800 1 AKDT}
+ {2456388000 -32400 0 AKST}
+ {2467278000 -28800 1 AKDT}
+ {2487837600 -32400 0 AKST}
+ {2499332400 -28800 1 AKDT}
+ {2519892000 -32400 0 AKST}
+ {2530782000 -28800 1 AKDT}
+ {2551341600 -32400 0 AKST}
+ {2562231600 -28800 1 AKDT}
+ {2582791200 -32400 0 AKST}
+ {2593681200 -28800 1 AKDT}
+ {2614240800 -32400 0 AKST}
+ {2625130800 -28800 1 AKDT}
+ {2645690400 -32400 0 AKST}
+ {2656580400 -28800 1 AKDT}
+ {2677140000 -32400 0 AKST}
+ {2688634800 -28800 1 AKDT}
+ {2709194400 -32400 0 AKST}
+ {2720084400 -28800 1 AKDT}
+ {2740644000 -32400 0 AKST}
+ {2751534000 -28800 1 AKDT}
+ {2772093600 -32400 0 AKST}
+ {2782983600 -28800 1 AKDT}
+ {2803543200 -32400 0 AKST}
+ {2814433200 -28800 1 AKDT}
+ {2834992800 -32400 0 AKST}
+ {2846487600 -28800 1 AKDT}
+ {2867047200 -32400 0 AKST}
+ {2877937200 -28800 1 AKDT}
+ {2898496800 -32400 0 AKST}
+ {2909386800 -28800 1 AKDT}
+ {2929946400 -32400 0 AKST}
+ {2940836400 -28800 1 AKDT}
+ {2961396000 -32400 0 AKST}
+ {2972286000 -28800 1 AKDT}
+ {2992845600 -32400 0 AKST}
+ {3003735600 -28800 1 AKDT}
+ {3024295200 -32400 0 AKST}
+ {3035790000 -28800 1 AKDT}
+ {3056349600 -32400 0 AKST}
+ {3067239600 -28800 1 AKDT}
+ {3087799200 -32400 0 AKST}
+ {3098689200 -28800 1 AKDT}
+ {3119248800 -32400 0 AKST}
+ {3130138800 -28800 1 AKDT}
+ {3150698400 -32400 0 AKST}
+ {3161588400 -28800 1 AKDT}
+ {3182148000 -32400 0 AKST}
+ {3193038000 -28800 1 AKDT}
+ {3213597600 -32400 0 AKST}
+ {3225092400 -28800 1 AKDT}
+ {3245652000 -32400 0 AKST}
+ {3256542000 -28800 1 AKDT}
+ {3277101600 -32400 0 AKST}
+ {3287991600 -28800 1 AKDT}
+ {3308551200 -32400 0 AKST}
+ {3319441200 -28800 1 AKDT}
+ {3340000800 -32400 0 AKST}
+ {3350890800 -28800 1 AKDT}
+ {3371450400 -32400 0 AKST}
+ {3382945200 -28800 1 AKDT}
+ {3403504800 -32400 0 AKST}
+ {3414394800 -28800 1 AKDT}
+ {3434954400 -32400 0 AKST}
+ {3445844400 -28800 1 AKDT}
+ {3466404000 -32400 0 AKST}
+ {3477294000 -28800 1 AKDT}
+ {3497853600 -32400 0 AKST}
+ {3508743600 -28800 1 AKDT}
+ {3529303200 -32400 0 AKST}
+ {3540193200 -28800 1 AKDT}
+ {3560752800 -32400 0 AKST}
+ {3572247600 -28800 1 AKDT}
+ {3592807200 -32400 0 AKST}
+ {3603697200 -28800 1 AKDT}
+ {3624256800 -32400 0 AKST}
+ {3635146800 -28800 1 AKDT}
+ {3655706400 -32400 0 AKST}
+ {3666596400 -28800 1 AKDT}
+ {3687156000 -32400 0 AKST}
+ {3698046000 -28800 1 AKDT}
+ {3718605600 -32400 0 AKST}
+ {3730100400 -28800 1 AKDT}
+ {3750660000 -32400 0 AKST}
+ {3761550000 -28800 1 AKDT}
+ {3782109600 -32400 0 AKST}
+ {3792999600 -28800 1 AKDT}
+ {3813559200 -32400 0 AKST}
+ {3824449200 -28800 1 AKDT}
+ {3845008800 -32400 0 AKST}
+ {3855898800 -28800 1 AKDT}
+ {3876458400 -32400 0 AKST}
+ {3887348400 -28800 1 AKDT}
+ {3907908000 -32400 0 AKST}
+ {3919402800 -28800 1 AKDT}
+ {3939962400 -32400 0 AKST}
+ {3950852400 -28800 1 AKDT}
+ {3971412000 -32400 0 AKST}
+ {3982302000 -28800 1 AKDT}
+ {4002861600 -32400 0 AKST}
+ {4013751600 -28800 1 AKDT}
+ {4034311200 -32400 0 AKST}
+ {4045201200 -28800 1 AKDT}
+ {4065760800 -32400 0 AKST}
+ {4076650800 -28800 1 AKDT}
+ {4097210400 -32400 0 AKST}
+}
diff --git a/library/tzdata/America/Noronha b/library/tzdata/America/Noronha
new file mode 100644
index 0000000..94d6f42
--- /dev/null
+++ b/library/tzdata/America/Noronha
@@ -0,0 +1,48 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Noronha) {
+ {-9223372036854775808 -7780 0 LMT}
+ {-1767217820 -7200 0 FNT}
+ {-1206961200 -3600 1 FNST}
+ {-1191366000 -7200 0 FNT}
+ {-1175378400 -3600 1 FNST}
+ {-1159830000 -7200 0 FNT}
+ {-633823200 -3600 1 FNST}
+ {-622072800 -7200 0 FNT}
+ {-602287200 -3600 1 FNST}
+ {-591836400 -7200 0 FNT}
+ {-570751200 -3600 1 FNST}
+ {-560214000 -7200 0 FNT}
+ {-539128800 -3600 1 FNST}
+ {-531356400 -7200 0 FNT}
+ {-191368800 -3600 1 FNST}
+ {-184201200 -7200 0 FNT}
+ {-155167200 -3600 1 FNST}
+ {-150073200 -7200 0 FNT}
+ {-128901600 -3600 1 FNST}
+ {-121129200 -7200 0 FNT}
+ {-99957600 -3600 1 FNST}
+ {-89593200 -7200 0 FNT}
+ {-68421600 -3600 1 FNST}
+ {-57970800 -7200 0 FNT}
+ {499744800 -3600 1 FNST}
+ {511232400 -7200 0 FNT}
+ {530589600 -3600 1 FNST}
+ {540262800 -7200 0 FNT}
+ {562125600 -3600 1 FNST}
+ {571194000 -7200 0 FNT}
+ {592970400 -3600 1 FNST}
+ {602038800 -7200 0 FNT}
+ {624420000 -3600 1 FNST}
+ {634698000 -7200 0 FNT}
+ {653533200 -7200 0 FNT}
+ {938656800 -7200 0 FNT}
+ {938916000 -3600 1 FNST}
+ {951613200 -7200 0 FNT}
+ {970970400 -3600 1 FNST}
+ {971571600 -7200 0 FNT}
+ {1000346400 -7200 0 FNT}
+ {1003024800 -3600 1 FNST}
+ {1013907600 -7200 0 FNT}
+ {1033434000 -7200 0 FNT}
+}
diff --git a/library/tzdata/America/North_Dakota/Beulah b/library/tzdata/America/North_Dakota/Beulah
new file mode 100644
index 0000000..95407c6
--- /dev/null
+++ b/library/tzdata/America/North_Dakota/Beulah
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/Beulah) {
+ {-9223372036854775808 -24427 0 LMT}
+ {-2717643600 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126694800 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289120400 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/North_Dakota/Center b/library/tzdata/America/North_Dakota/Center
new file mode 100644
index 0000000..30782f7
--- /dev/null
+++ b/library/tzdata/America/North_Dakota/Center
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/Center) {
+ {-9223372036854775808 -24312 0 LMT}
+ {-2717643600 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126694800 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720003600 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {986112000 -18000 1 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/North_Dakota/New_Salem b/library/tzdata/America/North_Dakota/New_Salem
new file mode 100644
index 0000000..5a9d229
--- /dev/null
+++ b/library/tzdata/America/North_Dakota/New_Salem
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/New_Salem) {
+ {-9223372036854775808 -24339 0 LMT}
+ {-2717643600 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126694800 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067158800 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Ojinaga b/library/tzdata/America/Ojinaga
new file mode 100644
index 0000000..1172708
--- /dev/null
+++ b/library/tzdata/America/Ojinaga
@@ -0,0 +1,222 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Ojinaga) {
+ {-9223372036854775808 -25060 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {820476000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {883634400 -21600 0 CST}
+ {891766800 -21600 0 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {989139600 -21600 1 MDT}
+ {1001836800 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1175418000 -21600 1 MDT}
+ {1193558400 -25200 0 MST}
+ {1207472400 -21600 1 MDT}
+ {1225008000 -25200 0 MST}
+ {1238922000 -21600 1 MDT}
+ {1256457600 -25200 0 MST}
+ {1262329200 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Panama b/library/tzdata/America/Panama
new file mode 100644
index 0000000..3006785
--- /dev/null
+++ b/library/tzdata/America/Panama
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Panama) {
+ {-9223372036854775808 -19088 0 LMT}
+ {-2524502512 -19176 0 CMT}
+ {-1946918424 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Pangnirtung b/library/tzdata/America/Pangnirtung
new file mode 100644
index 0000000..640808e
--- /dev/null
+++ b/library/tzdata/America/Pangnirtung
@@ -0,0 +1,252 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Pangnirtung) {
+ {-9223372036854775808 0 0 zzz}
+ {-1546300800 -14400 0 AST}
+ {-880221600 -10800 1 AWT}
+ {-769395600 -10800 1 APT}
+ {-765399600 -14400 0 AST}
+ {-147902400 -7200 1 ADDT}
+ {-131572800 -14400 0 AST}
+ {325663200 -10800 1 ADT}
+ {341384400 -14400 0 AST}
+ {357112800 -10800 1 ADT}
+ {372834000 -14400 0 AST}
+ {388562400 -10800 1 ADT}
+ {404888400 -14400 0 AST}
+ {420012000 -10800 1 ADT}
+ {436338000 -14400 0 AST}
+ {452066400 -10800 1 ADT}
+ {467787600 -14400 0 AST}
+ {483516000 -10800 1 ADT}
+ {499237200 -14400 0 AST}
+ {514965600 -10800 1 ADT}
+ {530686800 -14400 0 AST}
+ {544600800 -10800 1 ADT}
+ {562136400 -14400 0 AST}
+ {576050400 -10800 1 ADT}
+ {594190800 -14400 0 AST}
+ {607500000 -10800 1 ADT}
+ {625640400 -14400 0 AST}
+ {638949600 -10800 1 ADT}
+ {657090000 -14400 0 AST}
+ {671004000 -10800 1 ADT}
+ {688539600 -14400 0 AST}
+ {702453600 -10800 1 ADT}
+ {719989200 -14400 0 AST}
+ {733903200 -10800 1 ADT}
+ {752043600 -14400 0 AST}
+ {765352800 -10800 1 ADT}
+ {783493200 -14400 0 AST}
+ {796802400 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Paramaribo b/library/tzdata/America/Paramaribo
new file mode 100644
index 0000000..d15f5c7
--- /dev/null
+++ b/library/tzdata/America/Paramaribo
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Paramaribo) {
+ {-9223372036854775808 -13240 0 LMT}
+ {-1861906760 -13252 0 PMT}
+ {-1104524348 -13236 0 PMT}
+ {-765317964 -12600 0 NEGT}
+ {185686200 -12600 0 SRT}
+ {465449400 -10800 0 SRT}
+}
diff --git a/library/tzdata/America/Phoenix b/library/tzdata/America/Phoenix
new file mode 100644
index 0000000..3d37bb4
--- /dev/null
+++ b/library/tzdata/America/Phoenix
@@ -0,0 +1,17 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Phoenix) {
+ {-9223372036854775808 -26898 0 LMT}
+ {-2717643600 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-820519140 -25200 0 MST}
+ {-796841940 -25200 0 MST}
+ {-94669200 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-56221200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince
new file mode 100644
index 0000000..f1d7fc4
--- /dev/null
+++ b/library/tzdata/America/Port-au-Prince
@@ -0,0 +1,217 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Port-au-Prince) {
+ {-9223372036854775808 -17360 0 LMT}
+ {-2524504240 -17340 0 PPMT}
+ {-1670483460 -18000 0 EST}
+ {421218000 -14400 1 EDT}
+ {436334400 -18000 0 EST}
+ {452062800 -14400 1 EDT}
+ {467784000 -18000 0 EST}
+ {483512400 -14400 1 EDT}
+ {499233600 -18000 0 EST}
+ {514962000 -14400 1 EDT}
+ {530683200 -18000 0 EST}
+ {546411600 -14400 1 EDT}
+ {562132800 -18000 0 EST}
+ {576050400 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607500000 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638949600 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671004000 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702453600 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733903200 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765352800 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796802400 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828856800 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860306400 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {1112504400 -14400 1 EDT}
+ {1130644800 -18000 0 EST}
+ {1143954000 -14400 1 EDT}
+ {1162094400 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Port_of_Spain b/library/tzdata/America/Port_of_Spain
new file mode 100644
index 0000000..c360c87
--- /dev/null
+++ b/library/tzdata/America/Port_of_Spain
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Port_of_Spain) {
+ {-9223372036854775808 -14764 0 LMT}
+ {-1825098836 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Porto_Acre b/library/tzdata/America/Porto_Acre
new file mode 100644
index 0000000..0626001
--- /dev/null
+++ b/library/tzdata/America/Porto_Acre
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Rio_Branco)]} {
+ LoadTimeZoneFile America/Rio_Branco
+}
+set TZData(:America/Porto_Acre) $TZData(:America/Rio_Branco)
diff --git a/library/tzdata/America/Porto_Velho b/library/tzdata/America/Porto_Velho
new file mode 100644
index 0000000..ce611d2
--- /dev/null
+++ b/library/tzdata/America/Porto_Velho
@@ -0,0 +1,35 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Porto_Velho) {
+ {-9223372036854775808 -15336 0 LMT}
+ {-1767210264 -14400 0 AMT}
+ {-1206954000 -10800 1 AMST}
+ {-1191358800 -14400 0 AMT}
+ {-1175371200 -10800 1 AMST}
+ {-1159822800 -14400 0 AMT}
+ {-633816000 -10800 1 AMST}
+ {-622065600 -14400 0 AMT}
+ {-602280000 -10800 1 AMST}
+ {-591829200 -14400 0 AMT}
+ {-570744000 -10800 1 AMST}
+ {-560206800 -14400 0 AMT}
+ {-539121600 -10800 1 AMST}
+ {-531349200 -14400 0 AMT}
+ {-191361600 -10800 1 AMST}
+ {-184194000 -14400 0 AMT}
+ {-155160000 -10800 1 AMST}
+ {-150066000 -14400 0 AMT}
+ {-128894400 -10800 1 AMST}
+ {-121122000 -14400 0 AMT}
+ {-99950400 -10800 1 AMST}
+ {-89586000 -14400 0 AMT}
+ {-68414400 -10800 1 AMST}
+ {-57963600 -14400 0 AMT}
+ {499752000 -10800 1 AMST}
+ {511239600 -14400 0 AMT}
+ {530596800 -10800 1 AMST}
+ {540270000 -14400 0 AMT}
+ {562132800 -10800 1 AMST}
+ {571201200 -14400 0 AMT}
+ {590036400 -14400 0 AMT}
+}
diff --git a/library/tzdata/America/Puerto_Rico b/library/tzdata/America/Puerto_Rico
new file mode 100644
index 0000000..0d5c9b4
--- /dev/null
+++ b/library/tzdata/America/Puerto_Rico
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Puerto_Rico) {
+ {-9223372036854775808 -15865 0 LMT}
+ {-2233035335 -14400 0 AST}
+ {-873057600 -10800 0 AWT}
+ {-769395600 -10800 1 APT}
+ {-765399600 -14400 0 AST}
+ {-757368000 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Rainy_River b/library/tzdata/America/Rainy_River
new file mode 100644
index 0000000..a2b11aa
--- /dev/null
+++ b/library/tzdata/America/Rainy_River
@@ -0,0 +1,264 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Rainy_River) {
+ {-9223372036854775808 -22696 0 LMT}
+ {-2366732504 -21600 0 CST}
+ {-1632067200 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-923248800 -18000 1 CDT}
+ {-880214400 -18000 0 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {136368000 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {167817600 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247042800 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278492400 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309942000 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {986112000 -18000 1 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Rankin_Inlet b/library/tzdata/America/Rankin_Inlet
new file mode 100644
index 0000000..770ec5d
--- /dev/null
+++ b/library/tzdata/America/Rankin_Inlet
@@ -0,0 +1,248 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Rankin_Inlet) {
+ {-9223372036854775808 0 0 zzz}
+ {-410227200 -21600 0 CST}
+ {-147895200 -14400 1 CDDT}
+ {-131565600 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -18000 0 EST}
+ {986112000 -18000 0 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Recife b/library/tzdata/America/Recife
new file mode 100644
index 0000000..f6ae00e
--- /dev/null
+++ b/library/tzdata/America/Recife
@@ -0,0 +1,48 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Recife) {
+ {-9223372036854775808 -8376 0 LMT}
+ {-1767217224 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-191365200 -7200 1 BRST}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {592974000 -7200 1 BRST}
+ {602042400 -10800 0 BRT}
+ {624423600 -7200 1 BRST}
+ {634701600 -10800 0 BRT}
+ {653536800 -10800 0 BRT}
+ {938660400 -10800 0 BRT}
+ {938919600 -7200 1 BRST}
+ {951616800 -10800 0 BRT}
+ {970974000 -7200 1 BRST}
+ {971575200 -10800 0 BRT}
+ {1000350000 -10800 0 BRT}
+ {1003028400 -7200 1 BRST}
+ {1013911200 -10800 0 BRT}
+ {1033437600 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Regina b/library/tzdata/America/Regina
new file mode 100644
index 0000000..e42b5be
--- /dev/null
+++ b/library/tzdata/America/Regina
@@ -0,0 +1,58 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Regina) {
+ {-9223372036854775808 -25116 0 LMT}
+ {-2030202084 -25200 0 MST}
+ {-1632063600 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1251651600 -21600 1 MDT}
+ {-1238349600 -25200 0 MST}
+ {-1220202000 -21600 1 MDT}
+ {-1206900000 -25200 0 MST}
+ {-1188752400 -21600 1 MDT}
+ {-1175450400 -25200 0 MST}
+ {-1156698000 -21600 1 MDT}
+ {-1144000800 -25200 0 MST}
+ {-1125248400 -21600 1 MDT}
+ {-1111946400 -25200 0 MST}
+ {-1032714000 -21600 1 MDT}
+ {-1016992800 -25200 0 MST}
+ {-1001264400 -21600 1 MDT}
+ {-986148000 -25200 0 MST}
+ {-969814800 -21600 1 MDT}
+ {-954093600 -25200 0 MST}
+ {-937760400 -21600 1 MDT}
+ {-922039200 -25200 0 MST}
+ {-906310800 -21600 1 MDT}
+ {-890589600 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-748450800 -21600 1 MDT}
+ {-732729600 -25200 0 MST}
+ {-715791600 -21600 1 MDT}
+ {-702489600 -25200 0 MST}
+ {-684342000 -21600 1 MDT}
+ {-671040000 -25200 0 MST}
+ {-652892400 -21600 1 MDT}
+ {-639590400 -25200 0 MST}
+ {-620838000 -21600 1 MDT}
+ {-608140800 -25200 0 MST}
+ {-589388400 -21600 1 MDT}
+ {-576086400 -25200 0 MST}
+ {-557938800 -21600 1 MDT}
+ {-544636800 -25200 0 MST}
+ {-526489200 -21600 1 MDT}
+ {-513187200 -25200 0 MST}
+ {-495039600 -21600 1 MDT}
+ {-481737600 -25200 0 MST}
+ {-463590000 -21600 1 MDT}
+ {-450288000 -25200 0 MST}
+ {-431535600 -21600 1 MDT}
+ {-418233600 -25200 0 MST}
+ {-400086000 -21600 1 MDT}
+ {-386784000 -25200 0 MST}
+ {-337186800 -21600 1 MDT}
+ {-321465600 -25200 0 MST}
+ {-305737200 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute
new file mode 100644
index 0000000..b4c0bab
--- /dev/null
+++ b/library/tzdata/America/Resolute
@@ -0,0 +1,248 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Resolute) {
+ {-9223372036854775808 0 0 zzz}
+ {-704937600 -21600 0 CST}
+ {-147895200 -14400 1 CDDT}
+ {-131565600 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -18000 0 EST}
+ {986112000 -18000 0 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162108800 -18000 0 EST}
+ {1173600000 -18000 0 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Rio_Branco b/library/tzdata/America/Rio_Branco
new file mode 100644
index 0000000..20889cb
--- /dev/null
+++ b/library/tzdata/America/Rio_Branco
@@ -0,0 +1,36 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Rio_Branco) {
+ {-9223372036854775808 -16272 0 LMT}
+ {-1767209328 -18000 0 ACT}
+ {-1206950400 -14400 1 ACST}
+ {-1191355200 -18000 0 ACT}
+ {-1175367600 -14400 1 ACST}
+ {-1159819200 -18000 0 ACT}
+ {-633812400 -14400 1 ACST}
+ {-622062000 -18000 0 ACT}
+ {-602276400 -14400 1 ACST}
+ {-591825600 -18000 0 ACT}
+ {-570740400 -14400 1 ACST}
+ {-560203200 -18000 0 ACT}
+ {-539118000 -14400 1 ACST}
+ {-531345600 -18000 0 ACT}
+ {-191358000 -14400 1 ACST}
+ {-184190400 -18000 0 ACT}
+ {-155156400 -14400 1 ACST}
+ {-150062400 -18000 0 ACT}
+ {-128890800 -14400 1 ACST}
+ {-121118400 -18000 0 ACT}
+ {-99946800 -14400 1 ACST}
+ {-89582400 -18000 0 ACT}
+ {-68410800 -14400 1 ACST}
+ {-57960000 -18000 0 ACT}
+ {499755600 -14400 1 ACST}
+ {511243200 -18000 0 ACT}
+ {530600400 -14400 1 ACST}
+ {540273600 -18000 0 ACT}
+ {562136400 -14400 1 ACST}
+ {571204800 -18000 0 ACT}
+ {590040000 -18000 0 ACT}
+ {1214283600 -14400 0 AMT}
+}
diff --git a/library/tzdata/America/Rosario b/library/tzdata/America/Rosario
new file mode 100644
index 0000000..6687f88
--- /dev/null
+++ b/library/tzdata/America/Rosario
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Cordoba)]} {
+ LoadTimeZoneFile America/Argentina/Cordoba
+}
+set TZData(:America/Rosario) $TZData(:America/Argentina/Cordoba)
diff --git a/library/tzdata/America/Santa_Isabel b/library/tzdata/America/Santa_Isabel
new file mode 100644
index 0000000..87cb5a8
--- /dev/null
+++ b/library/tzdata/America/Santa_Isabel
@@ -0,0 +1,284 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Santa_Isabel) {
+ {-9223372036854775808 -27568 0 LMT}
+ {-1514736000 -25200 0 MST}
+ {-1451667600 -28800 0 PST}
+ {-1343062800 -25200 0 MST}
+ {-1234803600 -28800 0 PST}
+ {-1222963200 -25200 1 PDT}
+ {-1207242000 -28800 0 PST}
+ {-873820800 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-761677200 -28800 0 PST}
+ {-686073600 -25200 1 PDT}
+ {-661539600 -28800 0 PST}
+ {-504892800 -28800 0 PST}
+ {-495036000 -25200 1 PDT}
+ {-481734000 -28800 0 PST}
+ {-463586400 -25200 1 PDT}
+ {-450284400 -28800 0 PST}
+ {-431532000 -25200 1 PDT}
+ {-418230000 -28800 0 PST}
+ {-400082400 -25200 1 PDT}
+ {-386780400 -28800 0 PST}
+ {-368632800 -25200 1 PDT}
+ {-355330800 -28800 0 PST}
+ {-337183200 -25200 1 PDT}
+ {-323881200 -28800 0 PST}
+ {-305733600 -25200 1 PDT}
+ {-292431600 -28800 0 PST}
+ {-283968000 -28800 0 PST}
+ {189331200 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {820483200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {978336000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1014192000 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1175421600 -25200 1 PDT}
+ {1193562000 -28800 0 PST}
+ {1207476000 -25200 1 PDT}
+ {1225011600 -28800 0 PST}
+ {1238925600 -25200 1 PDT}
+ {1256461200 -28800 0 PST}
+ {1270375200 -25200 1 PDT}
+ {1288515600 -28800 0 PST}
+ {1301824800 -25200 1 PDT}
+ {1319965200 -28800 0 PST}
+ {1333274400 -25200 1 PDT}
+ {1351414800 -28800 0 PST}
+ {1365328800 -25200 1 PDT}
+ {1382864400 -28800 0 PST}
+ {1396778400 -25200 1 PDT}
+ {1414314000 -28800 0 PST}
+ {1428228000 -25200 1 PDT}
+ {1445763600 -28800 0 PST}
+ {1459677600 -25200 1 PDT}
+ {1477818000 -28800 0 PST}
+ {1491127200 -25200 1 PDT}
+ {1509267600 -28800 0 PST}
+ {1522576800 -25200 1 PDT}
+ {1540717200 -28800 0 PST}
+ {1554631200 -25200 1 PDT}
+ {1572166800 -28800 0 PST}
+ {1586080800 -25200 1 PDT}
+ {1603616400 -28800 0 PST}
+ {1617530400 -25200 1 PDT}
+ {1635670800 -28800 0 PST}
+ {1648980000 -25200 1 PDT}
+ {1667120400 -28800 0 PST}
+ {1680429600 -25200 1 PDT}
+ {1698570000 -28800 0 PST}
+ {1712484000 -25200 1 PDT}
+ {1730019600 -28800 0 PST}
+ {1743933600 -25200 1 PDT}
+ {1761469200 -28800 0 PST}
+ {1775383200 -25200 1 PDT}
+ {1792918800 -28800 0 PST}
+ {1806832800 -25200 1 PDT}
+ {1824973200 -28800 0 PST}
+ {1838282400 -25200 1 PDT}
+ {1856422800 -28800 0 PST}
+ {1869732000 -25200 1 PDT}
+ {1887872400 -28800 0 PST}
+ {1901786400 -25200 1 PDT}
+ {1919322000 -28800 0 PST}
+ {1933236000 -25200 1 PDT}
+ {1950771600 -28800 0 PST}
+ {1964685600 -25200 1 PDT}
+ {1982826000 -28800 0 PST}
+ {1996135200 -25200 1 PDT}
+ {2014275600 -28800 0 PST}
+ {2027584800 -25200 1 PDT}
+ {2045725200 -28800 0 PST}
+ {2059034400 -25200 1 PDT}
+ {2077174800 -28800 0 PST}
+ {2091088800 -25200 1 PDT}
+ {2108624400 -28800 0 PST}
+ {2122538400 -25200 1 PDT}
+ {2140074000 -28800 0 PST}
+ {2153988000 -25200 1 PDT}
+ {2172128400 -28800 0 PST}
+ {2185437600 -25200 1 PDT}
+ {2203578000 -28800 0 PST}
+ {2216887200 -25200 1 PDT}
+ {2235027600 -28800 0 PST}
+ {2248941600 -25200 1 PDT}
+ {2266477200 -28800 0 PST}
+ {2280391200 -25200 1 PDT}
+ {2297926800 -28800 0 PST}
+ {2311840800 -25200 1 PDT}
+ {2329376400 -28800 0 PST}
+ {2343290400 -25200 1 PDT}
+ {2361430800 -28800 0 PST}
+ {2374740000 -25200 1 PDT}
+ {2392880400 -28800 0 PST}
+ {2406189600 -25200 1 PDT}
+ {2424330000 -28800 0 PST}
+ {2438244000 -25200 1 PDT}
+ {2455779600 -28800 0 PST}
+ {2469693600 -25200 1 PDT}
+ {2487229200 -28800 0 PST}
+ {2501143200 -25200 1 PDT}
+ {2519283600 -28800 0 PST}
+ {2532592800 -25200 1 PDT}
+ {2550733200 -28800 0 PST}
+ {2564042400 -25200 1 PDT}
+ {2582182800 -28800 0 PST}
+ {2596096800 -25200 1 PDT}
+ {2613632400 -28800 0 PST}
+ {2627546400 -25200 1 PDT}
+ {2645082000 -28800 0 PST}
+ {2658996000 -25200 1 PDT}
+ {2676531600 -28800 0 PST}
+ {2690445600 -25200 1 PDT}
+ {2708586000 -28800 0 PST}
+ {2721895200 -25200 1 PDT}
+ {2740035600 -28800 0 PST}
+ {2753344800 -25200 1 PDT}
+ {2771485200 -28800 0 PST}
+ {2785399200 -25200 1 PDT}
+ {2802934800 -28800 0 PST}
+ {2816848800 -25200 1 PDT}
+ {2834384400 -28800 0 PST}
+ {2848298400 -25200 1 PDT}
+ {2866438800 -28800 0 PST}
+ {2879748000 -25200 1 PDT}
+ {2897888400 -28800 0 PST}
+ {2911197600 -25200 1 PDT}
+ {2929338000 -28800 0 PST}
+ {2942647200 -25200 1 PDT}
+ {2960787600 -28800 0 PST}
+ {2974701600 -25200 1 PDT}
+ {2992237200 -28800 0 PST}
+ {3006151200 -25200 1 PDT}
+ {3023686800 -28800 0 PST}
+ {3037600800 -25200 1 PDT}
+ {3055741200 -28800 0 PST}
+ {3069050400 -25200 1 PDT}
+ {3087190800 -28800 0 PST}
+ {3100500000 -25200 1 PDT}
+ {3118640400 -28800 0 PST}
+ {3132554400 -25200 1 PDT}
+ {3150090000 -28800 0 PST}
+ {3164004000 -25200 1 PDT}
+ {3181539600 -28800 0 PST}
+ {3195453600 -25200 1 PDT}
+ {3212989200 -28800 0 PST}
+ {3226903200 -25200 1 PDT}
+ {3245043600 -28800 0 PST}
+ {3258352800 -25200 1 PDT}
+ {3276493200 -28800 0 PST}
+ {3289802400 -25200 1 PDT}
+ {3307942800 -28800 0 PST}
+ {3321856800 -25200 1 PDT}
+ {3339392400 -28800 0 PST}
+ {3353306400 -25200 1 PDT}
+ {3370842000 -28800 0 PST}
+ {3384756000 -25200 1 PDT}
+ {3402896400 -28800 0 PST}
+ {3416205600 -25200 1 PDT}
+ {3434346000 -28800 0 PST}
+ {3447655200 -25200 1 PDT}
+ {3465795600 -28800 0 PST}
+ {3479709600 -25200 1 PDT}
+ {3497245200 -28800 0 PST}
+ {3511159200 -25200 1 PDT}
+ {3528694800 -28800 0 PST}
+ {3542608800 -25200 1 PDT}
+ {3560144400 -28800 0 PST}
+ {3574058400 -25200 1 PDT}
+ {3592198800 -28800 0 PST}
+ {3605508000 -25200 1 PDT}
+ {3623648400 -28800 0 PST}
+ {3636957600 -25200 1 PDT}
+ {3655098000 -28800 0 PST}
+ {3669012000 -25200 1 PDT}
+ {3686547600 -28800 0 PST}
+ {3700461600 -25200 1 PDT}
+ {3717997200 -28800 0 PST}
+ {3731911200 -25200 1 PDT}
+ {3750051600 -28800 0 PST}
+ {3763360800 -25200 1 PDT}
+ {3781501200 -28800 0 PST}
+ {3794810400 -25200 1 PDT}
+ {3812950800 -28800 0 PST}
+ {3826260000 -25200 1 PDT}
+ {3844400400 -28800 0 PST}
+ {3858314400 -25200 1 PDT}
+ {3875850000 -28800 0 PST}
+ {3889764000 -25200 1 PDT}
+ {3907299600 -28800 0 PST}
+ {3921213600 -25200 1 PDT}
+ {3939354000 -28800 0 PST}
+ {3952663200 -25200 1 PDT}
+ {3970803600 -28800 0 PST}
+ {3984112800 -25200 1 PDT}
+ {4002253200 -28800 0 PST}
+ {4016167200 -25200 1 PDT}
+ {4033702800 -28800 0 PST}
+ {4047616800 -25200 1 PDT}
+ {4065152400 -28800 0 PST}
+ {4079066400 -25200 1 PDT}
+ {4096602000 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Santarem b/library/tzdata/America/Santarem
new file mode 100644
index 0000000..b6e9264
--- /dev/null
+++ b/library/tzdata/America/Santarem
@@ -0,0 +1,36 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Santarem) {
+ {-9223372036854775808 -13128 0 LMT}
+ {-1767212472 -14400 0 AMT}
+ {-1206954000 -10800 1 AMST}
+ {-1191358800 -14400 0 AMT}
+ {-1175371200 -10800 1 AMST}
+ {-1159822800 -14400 0 AMT}
+ {-633816000 -10800 1 AMST}
+ {-622065600 -14400 0 AMT}
+ {-602280000 -10800 1 AMST}
+ {-591829200 -14400 0 AMT}
+ {-570744000 -10800 1 AMST}
+ {-560206800 -14400 0 AMT}
+ {-539121600 -10800 1 AMST}
+ {-531349200 -14400 0 AMT}
+ {-191361600 -10800 1 AMST}
+ {-184194000 -14400 0 AMT}
+ {-155160000 -10800 1 AMST}
+ {-150066000 -14400 0 AMT}
+ {-128894400 -10800 1 AMST}
+ {-121122000 -14400 0 AMT}
+ {-99950400 -10800 1 AMST}
+ {-89586000 -14400 0 AMT}
+ {-68414400 -10800 1 AMST}
+ {-57963600 -14400 0 AMT}
+ {499752000 -10800 1 AMST}
+ {511239600 -14400 0 AMT}
+ {530596800 -10800 1 AMST}
+ {540270000 -14400 0 AMT}
+ {562132800 -10800 1 AMST}
+ {571201200 -14400 0 AMT}
+ {590036400 -14400 0 AMT}
+ {1214280000 -10800 0 BRT}
+}
diff --git a/library/tzdata/America/Santiago b/library/tzdata/America/Santiago
new file mode 100644
index 0000000..44be9f8
--- /dev/null
+++ b/library/tzdata/America/Santiago
@@ -0,0 +1,291 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Santiago) {
+ {-9223372036854775808 -16966 0 LMT}
+ {-2524504634 -16966 0 SMT}
+ {-1893439034 -18000 0 CLT}
+ {-1688410800 -16966 0 SMT}
+ {-1619983034 -14400 0 CLT}
+ {-1593806400 -16966 0 SMT}
+ {-1335986234 -18000 0 CLT}
+ {-1335985200 -14400 1 CLST}
+ {-1317585600 -18000 0 CLT}
+ {-1304362800 -14400 1 CLST}
+ {-1286049600 -18000 0 CLT}
+ {-1272826800 -14400 1 CLST}
+ {-1254513600 -18000 0 CLT}
+ {-1241290800 -14400 1 CLST}
+ {-1222977600 -18000 0 CLT}
+ {-1209754800 -14400 1 CLST}
+ {-1191355200 -18000 0 CLT}
+ {-1178132400 -14400 1 CLST}
+ {-870552000 -18000 0 CLT}
+ {-865278000 -14400 1 CLST}
+ {-740520000 -14400 1 CLST}
+ {-736376400 -18000 0 CLT}
+ {-718056000 -18000 0 CLT}
+ {-713646000 -14400 0 CLT}
+ {-36619200 -10800 1 CLST}
+ {-23922000 -14400 0 CLT}
+ {-3355200 -10800 1 CLST}
+ {7527600 -14400 0 CLT}
+ {24465600 -10800 1 CLST}
+ {37767600 -14400 0 CLT}
+ {55915200 -10800 1 CLST}
+ {69217200 -14400 0 CLT}
+ {87969600 -10800 1 CLST}
+ {100666800 -14400 0 CLT}
+ {118209600 -10800 1 CLST}
+ {132116400 -14400 0 CLT}
+ {150868800 -10800 1 CLST}
+ {163566000 -14400 0 CLT}
+ {182318400 -10800 1 CLST}
+ {195620400 -14400 0 CLT}
+ {213768000 -10800 1 CLST}
+ {227070000 -14400 0 CLT}
+ {245217600 -10800 1 CLST}
+ {258519600 -14400 0 CLT}
+ {277272000 -10800 1 CLST}
+ {289969200 -14400 0 CLT}
+ {308721600 -10800 1 CLST}
+ {321418800 -14400 0 CLT}
+ {340171200 -10800 1 CLST}
+ {353473200 -14400 0 CLT}
+ {371620800 -10800 1 CLST}
+ {384922800 -14400 0 CLT}
+ {403070400 -10800 1 CLST}
+ {416372400 -14400 0 CLT}
+ {434520000 -10800 1 CLST}
+ {447822000 -14400 0 CLT}
+ {466574400 -10800 1 CLST}
+ {479271600 -14400 0 CLT}
+ {498024000 -10800 1 CLST}
+ {510721200 -14400 0 CLT}
+ {529473600 -10800 1 CLST}
+ {545194800 -14400 0 CLT}
+ {560923200 -10800 1 CLST}
+ {574225200 -14400 0 CLT}
+ {591768000 -10800 1 CLST}
+ {605674800 -14400 0 CLT}
+ {624427200 -10800 1 CLST}
+ {637729200 -14400 0 CLT}
+ {653457600 -10800 1 CLST}
+ {668574000 -14400 0 CLT}
+ {687326400 -10800 1 CLST}
+ {700628400 -14400 0 CLT}
+ {718776000 -10800 1 CLST}
+ {732078000 -14400 0 CLT}
+ {750225600 -10800 1 CLST}
+ {763527600 -14400 0 CLT}
+ {781675200 -10800 1 CLST}
+ {794977200 -14400 0 CLT}
+ {813729600 -10800 1 CLST}
+ {826426800 -14400 0 CLT}
+ {845179200 -10800 1 CLST}
+ {859690800 -14400 0 CLT}
+ {876628800 -10800 1 CLST}
+ {889930800 -14400 0 CLT}
+ {906868800 -10800 1 CLST}
+ {923194800 -14400 0 CLT}
+ {939528000 -10800 1 CLST}
+ {952830000 -14400 0 CLT}
+ {971582400 -10800 1 CLST}
+ {984279600 -14400 0 CLT}
+ {1003032000 -10800 1 CLST}
+ {1015729200 -14400 0 CLT}
+ {1034481600 -10800 1 CLST}
+ {1047178800 -14400 0 CLT}
+ {1065931200 -10800 1 CLST}
+ {1079233200 -14400 0 CLT}
+ {1097380800 -10800 1 CLST}
+ {1110682800 -14400 0 CLT}
+ {1128830400 -10800 1 CLST}
+ {1142132400 -14400 0 CLT}
+ {1160884800 -10800 1 CLST}
+ {1173582000 -14400 0 CLT}
+ {1192334400 -10800 1 CLST}
+ {1206846000 -14400 0 CLT}
+ {1223784000 -10800 1 CLST}
+ {1237086000 -14400 0 CLT}
+ {1255233600 -10800 1 CLST}
+ {1270350000 -14400 0 CLT}
+ {1286683200 -10800 1 CLST}
+ {1304823600 -14400 0 CLT}
+ {1313899200 -10800 1 CLST}
+ {1335668400 -14400 0 CLT}
+ {1346558400 -10800 1 CLST}
+ {1367118000 -14400 0 CLT}
+ {1378612800 -10800 1 CLST}
+ {1398567600 -14400 0 CLT}
+ {1410062400 -10800 1 CLST}
+ {1430017200 -14400 0 CLT}
+ {1441512000 -10800 1 CLST}
+ {1461466800 -14400 0 CLT}
+ {1472961600 -10800 1 CLST}
+ {1492916400 -14400 0 CLT}
+ {1504411200 -10800 1 CLST}
+ {1524970800 -14400 0 CLT}
+ {1535860800 -10800 1 CLST}
+ {1556420400 -14400 0 CLT}
+ {1567915200 -10800 1 CLST}
+ {1587870000 -14400 0 CLT}
+ {1599364800 -10800 1 CLST}
+ {1619319600 -14400 0 CLT}
+ {1630814400 -10800 1 CLST}
+ {1650769200 -14400 0 CLT}
+ {1662264000 -10800 1 CLST}
+ {1682218800 -14400 0 CLT}
+ {1693713600 -10800 1 CLST}
+ {1714273200 -14400 0 CLT}
+ {1725768000 -10800 1 CLST}
+ {1745722800 -14400 0 CLT}
+ {1757217600 -10800 1 CLST}
+ {1777172400 -14400 0 CLT}
+ {1788667200 -10800 1 CLST}
+ {1808622000 -14400 0 CLT}
+ {1820116800 -10800 1 CLST}
+ {1840071600 -14400 0 CLT}
+ {1851566400 -10800 1 CLST}
+ {1872126000 -14400 0 CLT}
+ {1883016000 -10800 1 CLST}
+ {1903575600 -14400 0 CLT}
+ {1915070400 -10800 1 CLST}
+ {1935025200 -14400 0 CLT}
+ {1946520000 -10800 1 CLST}
+ {1966474800 -14400 0 CLT}
+ {1977969600 -10800 1 CLST}
+ {1997924400 -14400 0 CLT}
+ {2009419200 -10800 1 CLST}
+ {2029374000 -14400 0 CLT}
+ {2040868800 -10800 1 CLST}
+ {2061428400 -14400 0 CLT}
+ {2072318400 -10800 1 CLST}
+ {2092878000 -14400 0 CLT}
+ {2104372800 -10800 1 CLST}
+ {2124327600 -14400 0 CLT}
+ {2135822400 -10800 1 CLST}
+ {2155777200 -14400 0 CLT}
+ {2167272000 -10800 1 CLST}
+ {2187226800 -14400 0 CLT}
+ {2198721600 -10800 1 CLST}
+ {2219281200 -14400 0 CLT}
+ {2230171200 -10800 1 CLST}
+ {2250730800 -14400 0 CLT}
+ {2262225600 -10800 1 CLST}
+ {2282180400 -14400 0 CLT}
+ {2293675200 -10800 1 CLST}
+ {2313630000 -14400 0 CLT}
+ {2325124800 -10800 1 CLST}
+ {2345079600 -14400 0 CLT}
+ {2356574400 -10800 1 CLST}
+ {2376529200 -14400 0 CLT}
+ {2388024000 -10800 1 CLST}
+ {2408583600 -14400 0 CLT}
+ {2419473600 -10800 1 CLST}
+ {2440033200 -14400 0 CLT}
+ {2451528000 -10800 1 CLST}
+ {2471482800 -14400 0 CLT}
+ {2482977600 -10800 1 CLST}
+ {2502932400 -14400 0 CLT}
+ {2514427200 -10800 1 CLST}
+ {2534382000 -14400 0 CLT}
+ {2545876800 -10800 1 CLST}
+ {2565831600 -14400 0 CLT}
+ {2577326400 -10800 1 CLST}
+ {2597886000 -14400 0 CLT}
+ {2609380800 -10800 1 CLST}
+ {2629335600 -14400 0 CLT}
+ {2640830400 -10800 1 CLST}
+ {2660785200 -14400 0 CLT}
+ {2672280000 -10800 1 CLST}
+ {2692234800 -14400 0 CLT}
+ {2703729600 -10800 1 CLST}
+ {2723684400 -14400 0 CLT}
+ {2735179200 -10800 1 CLST}
+ {2755738800 -14400 0 CLT}
+ {2766628800 -10800 1 CLST}
+ {2787188400 -14400 0 CLT}
+ {2798683200 -10800 1 CLST}
+ {2818638000 -14400 0 CLT}
+ {2830132800 -10800 1 CLST}
+ {2850087600 -14400 0 CLT}
+ {2861582400 -10800 1 CLST}
+ {2881537200 -14400 0 CLT}
+ {2893032000 -10800 1 CLST}
+ {2912986800 -14400 0 CLT}
+ {2924481600 -10800 1 CLST}
+ {2945041200 -14400 0 CLT}
+ {2955931200 -10800 1 CLST}
+ {2976490800 -14400 0 CLT}
+ {2987985600 -10800 1 CLST}
+ {3007940400 -14400 0 CLT}
+ {3019435200 -10800 1 CLST}
+ {3039390000 -14400 0 CLT}
+ {3050884800 -10800 1 CLST}
+ {3070839600 -14400 0 CLT}
+ {3082334400 -10800 1 CLST}
+ {3102894000 -14400 0 CLT}
+ {3113784000 -10800 1 CLST}
+ {3134343600 -14400 0 CLT}
+ {3145838400 -10800 1 CLST}
+ {3165793200 -14400 0 CLT}
+ {3177288000 -10800 1 CLST}
+ {3197242800 -14400 0 CLT}
+ {3208737600 -10800 1 CLST}
+ {3228692400 -14400 0 CLT}
+ {3240187200 -10800 1 CLST}
+ {3260142000 -14400 0 CLT}
+ {3271636800 -10800 1 CLST}
+ {3292196400 -14400 0 CLT}
+ {3303086400 -10800 1 CLST}
+ {3323646000 -14400 0 CLT}
+ {3335140800 -10800 1 CLST}
+ {3355095600 -14400 0 CLT}
+ {3366590400 -10800 1 CLST}
+ {3386545200 -14400 0 CLT}
+ {3398040000 -10800 1 CLST}
+ {3417994800 -14400 0 CLT}
+ {3429489600 -10800 1 CLST}
+ {3449444400 -14400 0 CLT}
+ {3460939200 -10800 1 CLST}
+ {3481498800 -14400 0 CLT}
+ {3492993600 -10800 1 CLST}
+ {3512948400 -14400 0 CLT}
+ {3524443200 -10800 1 CLST}
+ {3544398000 -14400 0 CLT}
+ {3555892800 -10800 1 CLST}
+ {3575847600 -14400 0 CLT}
+ {3587342400 -10800 1 CLST}
+ {3607297200 -14400 0 CLT}
+ {3618792000 -10800 1 CLST}
+ {3639351600 -14400 0 CLT}
+ {3650241600 -10800 1 CLST}
+ {3670801200 -14400 0 CLT}
+ {3682296000 -10800 1 CLST}
+ {3702250800 -14400 0 CLT}
+ {3713745600 -10800 1 CLST}
+ {3733700400 -14400 0 CLT}
+ {3745195200 -10800 1 CLST}
+ {3765150000 -14400 0 CLT}
+ {3776644800 -10800 1 CLST}
+ {3796599600 -14400 0 CLT}
+ {3808094400 -10800 1 CLST}
+ {3828654000 -14400 0 CLT}
+ {3839544000 -10800 1 CLST}
+ {3860103600 -14400 0 CLT}
+ {3871598400 -10800 1 CLST}
+ {3891553200 -14400 0 CLT}
+ {3903048000 -10800 1 CLST}
+ {3923002800 -14400 0 CLT}
+ {3934497600 -10800 1 CLST}
+ {3954452400 -14400 0 CLT}
+ {3965947200 -10800 1 CLST}
+ {3986506800 -14400 0 CLT}
+ {3997396800 -10800 1 CLST}
+ {4017956400 -14400 0 CLT}
+ {4029451200 -10800 1 CLST}
+ {4049406000 -14400 0 CLT}
+ {4060900800 -10800 1 CLST}
+ {4080855600 -14400 0 CLT}
+ {4092350400 -10800 1 CLST}
+}
diff --git a/library/tzdata/America/Santo_Domingo b/library/tzdata/America/Santo_Domingo
new file mode 100644
index 0000000..7706918
--- /dev/null
+++ b/library/tzdata/America/Santo_Domingo
@@ -0,0 +1,21 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Santo_Domingo) {
+ {-9223372036854775808 -16776 0 LMT}
+ {-2524504824 -16800 0 SDMT}
+ {-1159773600 -18000 0 EST}
+ {-100119600 -14400 1 EDT}
+ {-89668800 -18000 0 EST}
+ {-5770800 -16200 1 EHDT}
+ {4422600 -18000 0 EST}
+ {25678800 -16200 1 EHDT}
+ {33193800 -18000 0 EST}
+ {57733200 -16200 1 EHDT}
+ {64816200 -18000 0 EST}
+ {89182800 -16200 1 EHDT}
+ {96438600 -18000 0 EST}
+ {120632400 -16200 1 EHDT}
+ {127974600 -18000 0 EST}
+ {152082000 -14400 0 AST}
+ {975823200 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Sao_Paulo b/library/tzdata/America/Sao_Paulo
new file mode 100644
index 0000000..8d70063
--- /dev/null
+++ b/library/tzdata/America/Sao_Paulo
@@ -0,0 +1,258 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Sao_Paulo) {
+ {-9223372036854775808 -11188 0 LMT}
+ {-1767214412 -10800 0 BRT}
+ {-1206957600 -7200 1 BRST}
+ {-1191362400 -10800 0 BRT}
+ {-1175374800 -7200 1 BRST}
+ {-1159826400 -10800 0 BRT}
+ {-633819600 -7200 1 BRST}
+ {-622069200 -10800 0 BRT}
+ {-602283600 -7200 1 BRST}
+ {-591832800 -10800 0 BRT}
+ {-570747600 -7200 1 BRST}
+ {-560210400 -10800 0 BRT}
+ {-539125200 -7200 1 BRST}
+ {-531352800 -10800 0 BRT}
+ {-195429600 -7200 1 BRST}
+ {-189381600 -7200 0 BRT}
+ {-184197600 -10800 0 BRT}
+ {-155163600 -7200 1 BRST}
+ {-150069600 -10800 0 BRT}
+ {-128898000 -7200 1 BRST}
+ {-121125600 -10800 0 BRT}
+ {-99954000 -7200 1 BRST}
+ {-89589600 -10800 0 BRT}
+ {-68418000 -7200 1 BRST}
+ {-57967200 -10800 0 BRT}
+ {499748400 -7200 1 BRST}
+ {511236000 -10800 0 BRT}
+ {530593200 -7200 1 BRST}
+ {540266400 -10800 0 BRT}
+ {562129200 -7200 1 BRST}
+ {571197600 -10800 0 BRT}
+ {592974000 -7200 1 BRST}
+ {602042400 -10800 0 BRT}
+ {624423600 -7200 1 BRST}
+ {634701600 -10800 0 BRT}
+ {656478000 -7200 1 BRST}
+ {666756000 -10800 0 BRT}
+ {687927600 -7200 1 BRST}
+ {697600800 -10800 0 BRT}
+ {719982000 -7200 1 BRST}
+ {728445600 -10800 0 BRT}
+ {750826800 -7200 1 BRST}
+ {761709600 -10800 0 BRT}
+ {782276400 -7200 1 BRST}
+ {793159200 -10800 0 BRT}
+ {813726000 -7200 1 BRST}
+ {824004000 -10800 0 BRT}
+ {844570800 -7200 1 BRST}
+ {856058400 -10800 0 BRT}
+ {876106800 -7200 1 BRST}
+ {888717600 -10800 0 BRT}
+ {908074800 -7200 1 BRST}
+ {919562400 -10800 0 BRT}
+ {938919600 -7200 1 BRST}
+ {951616800 -10800 0 BRT}
+ {970974000 -7200 1 BRST}
+ {982461600 -10800 0 BRT}
+ {1003028400 -7200 1 BRST}
+ {1013911200 -10800 0 BRT}
+ {1036292400 -7200 1 BRST}
+ {1045360800 -10800 0 BRT}
+ {1066532400 -7200 1 BRST}
+ {1076810400 -10800 0 BRT}
+ {1099364400 -7200 1 BRST}
+ {1108864800 -10800 0 BRT}
+ {1129431600 -7200 1 BRST}
+ {1140314400 -10800 0 BRT}
+ {1162695600 -7200 1 BRST}
+ {1172368800 -10800 0 BRT}
+ {1192330800 -7200 1 BRST}
+ {1203213600 -10800 0 BRT}
+ {1224385200 -7200 1 BRST}
+ {1234663200 -10800 0 BRT}
+ {1255834800 -7200 1 BRST}
+ {1266717600 -10800 0 BRT}
+ {1287284400 -7200 1 BRST}
+ {1298167200 -10800 0 BRT}
+ {1318734000 -7200 1 BRST}
+ {1330221600 -10800 0 BRT}
+ {1350788400 -7200 1 BRST}
+ {1361066400 -10800 0 BRT}
+ {1382238000 -7200 1 BRST}
+ {1392516000 -10800 0 BRT}
+ {1413687600 -7200 1 BRST}
+ {1424570400 -10800 0 BRT}
+ {1445137200 -7200 1 BRST}
+ {1456020000 -10800 0 BRT}
+ {1476586800 -7200 1 BRST}
+ {1487469600 -10800 0 BRT}
+ {1508036400 -7200 1 BRST}
+ {1518919200 -10800 0 BRT}
+ {1540090800 -7200 1 BRST}
+ {1550368800 -10800 0 BRT}
+ {1571540400 -7200 1 BRST}
+ {1581818400 -10800 0 BRT}
+ {1602990000 -7200 1 BRST}
+ {1613872800 -10800 0 BRT}
+ {1634439600 -7200 1 BRST}
+ {1645322400 -10800 0 BRT}
+ {1665889200 -7200 1 BRST}
+ {1677376800 -10800 0 BRT}
+ {1697338800 -7200 1 BRST}
+ {1708221600 -10800 0 BRT}
+ {1729393200 -7200 1 BRST}
+ {1739671200 -10800 0 BRT}
+ {1760842800 -7200 1 BRST}
+ {1771725600 -10800 0 BRT}
+ {1792292400 -7200 1 BRST}
+ {1803175200 -10800 0 BRT}
+ {1823742000 -7200 1 BRST}
+ {1834624800 -10800 0 BRT}
+ {1855191600 -7200 1 BRST}
+ {1866074400 -10800 0 BRT}
+ {1887246000 -7200 1 BRST}
+ {1897524000 -10800 0 BRT}
+ {1918695600 -7200 1 BRST}
+ {1928973600 -10800 0 BRT}
+ {1950145200 -7200 1 BRST}
+ {1960423200 -10800 0 BRT}
+ {1981594800 -7200 1 BRST}
+ {1992477600 -10800 0 BRT}
+ {2013044400 -7200 1 BRST}
+ {2024532000 -10800 0 BRT}
+ {2044494000 -7200 1 BRST}
+ {2055376800 -10800 0 BRT}
+ {2076548400 -7200 1 BRST}
+ {2086826400 -10800 0 BRT}
+ {2107998000 -7200 1 BRST}
+ {2118880800 -10800 0 BRT}
+ {2139447600 -7200 1 BRST}
+ {2150330400 -10800 0 BRT}
+ {2170897200 -7200 1 BRST}
+ {2181780000 -10800 0 BRT}
+ {2202346800 -7200 1 BRST}
+ {2213229600 -10800 0 BRT}
+ {2234401200 -7200 1 BRST}
+ {2244679200 -10800 0 BRT}
+ {2265850800 -7200 1 BRST}
+ {2276128800 -10800 0 BRT}
+ {2297300400 -7200 1 BRST}
+ {2307578400 -10800 0 BRT}
+ {2328750000 -7200 1 BRST}
+ {2339632800 -10800 0 BRT}
+ {2360199600 -7200 1 BRST}
+ {2371082400 -10800 0 BRT}
+ {2391649200 -7200 1 BRST}
+ {2402532000 -10800 0 BRT}
+ {2423703600 -7200 1 BRST}
+ {2433981600 -10800 0 BRT}
+ {2455153200 -7200 1 BRST}
+ {2465431200 -10800 0 BRT}
+ {2486602800 -7200 1 BRST}
+ {2497485600 -10800 0 BRT}
+ {2518052400 -7200 1 BRST}
+ {2528935200 -10800 0 BRT}
+ {2549502000 -7200 1 BRST}
+ {2560384800 -10800 0 BRT}
+ {2580951600 -7200 1 BRST}
+ {2591834400 -10800 0 BRT}
+ {2613006000 -7200 1 BRST}
+ {2623284000 -10800 0 BRT}
+ {2644455600 -7200 1 BRST}
+ {2654733600 -10800 0 BRT}
+ {2675905200 -7200 1 BRST}
+ {2686788000 -10800 0 BRT}
+ {2707354800 -7200 1 BRST}
+ {2718237600 -10800 0 BRT}
+ {2738804400 -7200 1 BRST}
+ {2749687200 -10800 0 BRT}
+ {2770858800 -7200 1 BRST}
+ {2781136800 -10800 0 BRT}
+ {2802308400 -7200 1 BRST}
+ {2812586400 -10800 0 BRT}
+ {2833758000 -7200 1 BRST}
+ {2844036000 -10800 0 BRT}
+ {2865207600 -7200 1 BRST}
+ {2876090400 -10800 0 BRT}
+ {2896657200 -7200 1 BRST}
+ {2907540000 -10800 0 BRT}
+ {2928106800 -7200 1 BRST}
+ {2938989600 -10800 0 BRT}
+ {2960161200 -7200 1 BRST}
+ {2970439200 -10800 0 BRT}
+ {2991610800 -7200 1 BRST}
+ {3001888800 -10800 0 BRT}
+ {3023060400 -7200 1 BRST}
+ {3033943200 -10800 0 BRT}
+ {3054510000 -7200 1 BRST}
+ {3065392800 -10800 0 BRT}
+ {3085959600 -7200 1 BRST}
+ {3096842400 -10800 0 BRT}
+ {3118014000 -7200 1 BRST}
+ {3128292000 -10800 0 BRT}
+ {3149463600 -7200 1 BRST}
+ {3159741600 -10800 0 BRT}
+ {3180913200 -7200 1 BRST}
+ {3191191200 -10800 0 BRT}
+ {3212362800 -7200 1 BRST}
+ {3223245600 -10800 0 BRT}
+ {3243812400 -7200 1 BRST}
+ {3254695200 -10800 0 BRT}
+ {3275262000 -7200 1 BRST}
+ {3286144800 -10800 0 BRT}
+ {3307316400 -7200 1 BRST}
+ {3317594400 -10800 0 BRT}
+ {3338766000 -7200 1 BRST}
+ {3349044000 -10800 0 BRT}
+ {3370215600 -7200 1 BRST}
+ {3381098400 -10800 0 BRT}
+ {3401665200 -7200 1 BRST}
+ {3412548000 -10800 0 BRT}
+ {3433114800 -7200 1 BRST}
+ {3443997600 -10800 0 BRT}
+ {3464564400 -7200 1 BRST}
+ {3475447200 -10800 0 BRT}
+ {3496618800 -7200 1 BRST}
+ {3506896800 -10800 0 BRT}
+ {3528068400 -7200 1 BRST}
+ {3538346400 -10800 0 BRT}
+ {3559518000 -7200 1 BRST}
+ {3570400800 -10800 0 BRT}
+ {3590967600 -7200 1 BRST}
+ {3601850400 -10800 0 BRT}
+ {3622417200 -7200 1 BRST}
+ {3633300000 -10800 0 BRT}
+ {3654471600 -7200 1 BRST}
+ {3664749600 -10800 0 BRT}
+ {3685921200 -7200 1 BRST}
+ {3696199200 -10800 0 BRT}
+ {3717370800 -7200 1 BRST}
+ {3727648800 -10800 0 BRT}
+ {3748820400 -7200 1 BRST}
+ {3759703200 -10800 0 BRT}
+ {3780270000 -7200 1 BRST}
+ {3791152800 -10800 0 BRT}
+ {3811719600 -7200 1 BRST}
+ {3822602400 -10800 0 BRT}
+ {3843774000 -7200 1 BRST}
+ {3854052000 -10800 0 BRT}
+ {3875223600 -7200 1 BRST}
+ {3885501600 -10800 0 BRT}
+ {3906673200 -7200 1 BRST}
+ {3917556000 -10800 0 BRT}
+ {3938122800 -7200 1 BRST}
+ {3949005600 -10800 0 BRT}
+ {3969572400 -7200 1 BRST}
+ {3980455200 -10800 0 BRT}
+ {4001626800 -7200 1 BRST}
+ {4011904800 -10800 0 BRT}
+ {4033076400 -7200 1 BRST}
+ {4043354400 -10800 0 BRT}
+ {4064526000 -7200 1 BRST}
+ {4074804000 -10800 0 BRT}
+ {4095975600 -7200 1 BRST}
+}
diff --git a/library/tzdata/America/Scoresbysund b/library/tzdata/America/Scoresbysund
new file mode 100644
index 0000000..74a332c
--- /dev/null
+++ b/library/tzdata/America/Scoresbysund
@@ -0,0 +1,246 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Scoresbysund) {
+ {-9223372036854775808 -5272 0 LMT}
+ {-1686090728 -7200 0 CGT}
+ {323841600 -3600 0 CGST}
+ {338961600 -7200 0 CGT}
+ {354679200 0 0 EGST}
+ {370400400 -3600 0 EGT}
+ {386125200 0 1 EGST}
+ {401850000 -3600 0 EGT}
+ {417574800 0 1 EGST}
+ {433299600 -3600 0 EGT}
+ {449024400 0 1 EGST}
+ {465354000 -3600 0 EGT}
+ {481078800 0 1 EGST}
+ {496803600 -3600 0 EGT}
+ {512528400 0 1 EGST}
+ {528253200 -3600 0 EGT}
+ {543978000 0 1 EGST}
+ {559702800 -3600 0 EGT}
+ {575427600 0 1 EGST}
+ {591152400 -3600 0 EGT}
+ {606877200 0 1 EGST}
+ {622602000 -3600 0 EGT}
+ {638326800 0 1 EGST}
+ {654656400 -3600 0 EGT}
+ {670381200 0 1 EGST}
+ {686106000 -3600 0 EGT}
+ {701830800 0 1 EGST}
+ {717555600 -3600 0 EGT}
+ {733280400 0 1 EGST}
+ {749005200 -3600 0 EGT}
+ {764730000 0 1 EGST}
+ {780454800 -3600 0 EGT}
+ {796179600 0 1 EGST}
+ {811904400 -3600 0 EGT}
+ {828234000 0 1 EGST}
+ {846378000 -3600 0 EGT}
+ {859683600 0 1 EGST}
+ {877827600 -3600 0 EGT}
+ {891133200 0 1 EGST}
+ {909277200 -3600 0 EGT}
+ {922582800 0 1 EGST}
+ {941331600 -3600 0 EGT}
+ {954032400 0 1 EGST}
+ {972781200 -3600 0 EGT}
+ {985482000 0 1 EGST}
+ {1004230800 -3600 0 EGT}
+ {1017536400 0 1 EGST}
+ {1035680400 -3600 0 EGT}
+ {1048986000 0 1 EGST}
+ {1067130000 -3600 0 EGT}
+ {1080435600 0 1 EGST}
+ {1099184400 -3600 0 EGT}
+ {1111885200 0 1 EGST}
+ {1130634000 -3600 0 EGT}
+ {1143334800 0 1 EGST}
+ {1162083600 -3600 0 EGT}
+ {1174784400 0 1 EGST}
+ {1193533200 -3600 0 EGT}
+ {1206838800 0 1 EGST}
+ {1224982800 -3600 0 EGT}
+ {1238288400 0 1 EGST}
+ {1256432400 -3600 0 EGT}
+ {1269738000 0 1 EGST}
+ {1288486800 -3600 0 EGT}
+ {1301187600 0 1 EGST}
+ {1319936400 -3600 0 EGT}
+ {1332637200 0 1 EGST}
+ {1351386000 -3600 0 EGT}
+ {1364691600 0 1 EGST}
+ {1382835600 -3600 0 EGT}
+ {1396141200 0 1 EGST}
+ {1414285200 -3600 0 EGT}
+ {1427590800 0 1 EGST}
+ {1445734800 -3600 0 EGT}
+ {1459040400 0 1 EGST}
+ {1477789200 -3600 0 EGT}
+ {1490490000 0 1 EGST}
+ {1509238800 -3600 0 EGT}
+ {1521939600 0 1 EGST}
+ {1540688400 -3600 0 EGT}
+ {1553994000 0 1 EGST}
+ {1572138000 -3600 0 EGT}
+ {1585443600 0 1 EGST}
+ {1603587600 -3600 0 EGT}
+ {1616893200 0 1 EGST}
+ {1635642000 -3600 0 EGT}
+ {1648342800 0 1 EGST}
+ {1667091600 -3600 0 EGT}
+ {1679792400 0 1 EGST}
+ {1698541200 -3600 0 EGT}
+ {1711846800 0 1 EGST}
+ {1729990800 -3600 0 EGT}
+ {1743296400 0 1 EGST}
+ {1761440400 -3600 0 EGT}
+ {1774746000 0 1 EGST}
+ {1792890000 -3600 0 EGT}
+ {1806195600 0 1 EGST}
+ {1824944400 -3600 0 EGT}
+ {1837645200 0 1 EGST}
+ {1856394000 -3600 0 EGT}
+ {1869094800 0 1 EGST}
+ {1887843600 -3600 0 EGT}
+ {1901149200 0 1 EGST}
+ {1919293200 -3600 0 EGT}
+ {1932598800 0 1 EGST}
+ {1950742800 -3600 0 EGT}
+ {1964048400 0 1 EGST}
+ {1982797200 -3600 0 EGT}
+ {1995498000 0 1 EGST}
+ {2014246800 -3600 0 EGT}
+ {2026947600 0 1 EGST}
+ {2045696400 -3600 0 EGT}
+ {2058397200 0 1 EGST}
+ {2077146000 -3600 0 EGT}
+ {2090451600 0 1 EGST}
+ {2108595600 -3600 0 EGT}
+ {2121901200 0 1 EGST}
+ {2140045200 -3600 0 EGT}
+ {2153350800 0 1 EGST}
+ {2172099600 -3600 0 EGT}
+ {2184800400 0 1 EGST}
+ {2203549200 -3600 0 EGT}
+ {2216250000 0 1 EGST}
+ {2234998800 -3600 0 EGT}
+ {2248304400 0 1 EGST}
+ {2266448400 -3600 0 EGT}
+ {2279754000 0 1 EGST}
+ {2297898000 -3600 0 EGT}
+ {2311203600 0 1 EGST}
+ {2329347600 -3600 0 EGT}
+ {2342653200 0 1 EGST}
+ {2361402000 -3600 0 EGT}
+ {2374102800 0 1 EGST}
+ {2392851600 -3600 0 EGT}
+ {2405552400 0 1 EGST}
+ {2424301200 -3600 0 EGT}
+ {2437606800 0 1 EGST}
+ {2455750800 -3600 0 EGT}
+ {2469056400 0 1 EGST}
+ {2487200400 -3600 0 EGT}
+ {2500506000 0 1 EGST}
+ {2519254800 -3600 0 EGT}
+ {2531955600 0 1 EGST}
+ {2550704400 -3600 0 EGT}
+ {2563405200 0 1 EGST}
+ {2582154000 -3600 0 EGT}
+ {2595459600 0 1 EGST}
+ {2613603600 -3600 0 EGT}
+ {2626909200 0 1 EGST}
+ {2645053200 -3600 0 EGT}
+ {2658358800 0 1 EGST}
+ {2676502800 -3600 0 EGT}
+ {2689808400 0 1 EGST}
+ {2708557200 -3600 0 EGT}
+ {2721258000 0 1 EGST}
+ {2740006800 -3600 0 EGT}
+ {2752707600 0 1 EGST}
+ {2771456400 -3600 0 EGT}
+ {2784762000 0 1 EGST}
+ {2802906000 -3600 0 EGT}
+ {2816211600 0 1 EGST}
+ {2834355600 -3600 0 EGT}
+ {2847661200 0 1 EGST}
+ {2866410000 -3600 0 EGT}
+ {2879110800 0 1 EGST}
+ {2897859600 -3600 0 EGT}
+ {2910560400 0 1 EGST}
+ {2929309200 -3600 0 EGT}
+ {2942010000 0 1 EGST}
+ {2960758800 -3600 0 EGT}
+ {2974064400 0 1 EGST}
+ {2992208400 -3600 0 EGT}
+ {3005514000 0 1 EGST}
+ {3023658000 -3600 0 EGT}
+ {3036963600 0 1 EGST}
+ {3055712400 -3600 0 EGT}
+ {3068413200 0 1 EGST}
+ {3087162000 -3600 0 EGT}
+ {3099862800 0 1 EGST}
+ {3118611600 -3600 0 EGT}
+ {3131917200 0 1 EGST}
+ {3150061200 -3600 0 EGT}
+ {3163366800 0 1 EGST}
+ {3181510800 -3600 0 EGT}
+ {3194816400 0 1 EGST}
+ {3212960400 -3600 0 EGT}
+ {3226266000 0 1 EGST}
+ {3245014800 -3600 0 EGT}
+ {3257715600 0 1 EGST}
+ {3276464400 -3600 0 EGT}
+ {3289165200 0 1 EGST}
+ {3307914000 -3600 0 EGT}
+ {3321219600 0 1 EGST}
+ {3339363600 -3600 0 EGT}
+ {3352669200 0 1 EGST}
+ {3370813200 -3600 0 EGT}
+ {3384118800 0 1 EGST}
+ {3402867600 -3600 0 EGT}
+ {3415568400 0 1 EGST}
+ {3434317200 -3600 0 EGT}
+ {3447018000 0 1 EGST}
+ {3465766800 -3600 0 EGT}
+ {3479072400 0 1 EGST}
+ {3497216400 -3600 0 EGT}
+ {3510522000 0 1 EGST}
+ {3528666000 -3600 0 EGT}
+ {3541971600 0 1 EGST}
+ {3560115600 -3600 0 EGT}
+ {3573421200 0 1 EGST}
+ {3592170000 -3600 0 EGT}
+ {3604870800 0 1 EGST}
+ {3623619600 -3600 0 EGT}
+ {3636320400 0 1 EGST}
+ {3655069200 -3600 0 EGT}
+ {3668374800 0 1 EGST}
+ {3686518800 -3600 0 EGT}
+ {3699824400 0 1 EGST}
+ {3717968400 -3600 0 EGT}
+ {3731274000 0 1 EGST}
+ {3750022800 -3600 0 EGT}
+ {3762723600 0 1 EGST}
+ {3781472400 -3600 0 EGT}
+ {3794173200 0 1 EGST}
+ {3812922000 -3600 0 EGT}
+ {3825622800 0 1 EGST}
+ {3844371600 -3600 0 EGT}
+ {3857677200 0 1 EGST}
+ {3875821200 -3600 0 EGT}
+ {3889126800 0 1 EGST}
+ {3907270800 -3600 0 EGT}
+ {3920576400 0 1 EGST}
+ {3939325200 -3600 0 EGT}
+ {3952026000 0 1 EGST}
+ {3970774800 -3600 0 EGT}
+ {3983475600 0 1 EGST}
+ {4002224400 -3600 0 EGT}
+ {4015530000 0 1 EGST}
+ {4033674000 -3600 0 EGT}
+ {4046979600 0 1 EGST}
+ {4065123600 -3600 0 EGT}
+ {4078429200 0 1 EGST}
+ {4096573200 -3600 0 EGT}
+}
diff --git a/library/tzdata/America/Shiprock b/library/tzdata/America/Shiprock
new file mode 100644
index 0000000..995d25d
--- /dev/null
+++ b/library/tzdata/America/Shiprock
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Denver)]} {
+ LoadTimeZoneFile America/Denver
+}
+set TZData(:America/Shiprock) $TZData(:America/Denver)
diff --git a/library/tzdata/America/Sitka b/library/tzdata/America/Sitka
new file mode 100644
index 0000000..8c53d93
--- /dev/null
+++ b/library/tzdata/America/Sitka
@@ -0,0 +1,275 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Sitka) {
+ {-9223372036854775808 53927 0 LMT}
+ {-3225365927 -32473 0 LMT}
+ {-2188954727 -28800 0 PST}
+ {-883584000 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-757353600 -28800 0 PST}
+ {-31507200 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {439030800 -32400 0 AKST}
+ {452084400 -28800 1 AKDT}
+ {467805600 -32400 0 AKST}
+ {483534000 -28800 1 AKDT}
+ {499255200 -32400 0 AKST}
+ {514983600 -28800 1 AKDT}
+ {530704800 -32400 0 AKST}
+ {544618800 -28800 1 AKDT}
+ {562154400 -32400 0 AKST}
+ {576068400 -28800 1 AKDT}
+ {594208800 -32400 0 AKST}
+ {607518000 -28800 1 AKDT}
+ {625658400 -32400 0 AKST}
+ {638967600 -28800 1 AKDT}
+ {657108000 -32400 0 AKST}
+ {671022000 -28800 1 AKDT}
+ {688557600 -32400 0 AKST}
+ {702471600 -28800 1 AKDT}
+ {720007200 -32400 0 AKST}
+ {733921200 -28800 1 AKDT}
+ {752061600 -32400 0 AKST}
+ {765370800 -28800 1 AKDT}
+ {783511200 -32400 0 AKST}
+ {796820400 -28800 1 AKDT}
+ {814960800 -32400 0 AKST}
+ {828874800 -28800 1 AKDT}
+ {846410400 -32400 0 AKST}
+ {860324400 -28800 1 AKDT}
+ {877860000 -32400 0 AKST}
+ {891774000 -28800 1 AKDT}
+ {909309600 -32400 0 AKST}
+ {923223600 -28800 1 AKDT}
+ {941364000 -32400 0 AKST}
+ {954673200 -28800 1 AKDT}
+ {972813600 -32400 0 AKST}
+ {986122800 -28800 1 AKDT}
+ {1004263200 -32400 0 AKST}
+ {1018177200 -28800 1 AKDT}
+ {1035712800 -32400 0 AKST}
+ {1049626800 -28800 1 AKDT}
+ {1067162400 -32400 0 AKST}
+ {1081076400 -28800 1 AKDT}
+ {1099216800 -32400 0 AKST}
+ {1112526000 -28800 1 AKDT}
+ {1130666400 -32400 0 AKST}
+ {1143975600 -28800 1 AKDT}
+ {1162116000 -32400 0 AKST}
+ {1173610800 -28800 1 AKDT}
+ {1194170400 -32400 0 AKST}
+ {1205060400 -28800 1 AKDT}
+ {1225620000 -32400 0 AKST}
+ {1236510000 -28800 1 AKDT}
+ {1257069600 -32400 0 AKST}
+ {1268564400 -28800 1 AKDT}
+ {1289124000 -32400 0 AKST}
+ {1300014000 -28800 1 AKDT}
+ {1320573600 -32400 0 AKST}
+ {1331463600 -28800 1 AKDT}
+ {1352023200 -32400 0 AKST}
+ {1362913200 -28800 1 AKDT}
+ {1383472800 -32400 0 AKST}
+ {1394362800 -28800 1 AKDT}
+ {1414922400 -32400 0 AKST}
+ {1425812400 -28800 1 AKDT}
+ {1446372000 -32400 0 AKST}
+ {1457866800 -28800 1 AKDT}
+ {1478426400 -32400 0 AKST}
+ {1489316400 -28800 1 AKDT}
+ {1509876000 -32400 0 AKST}
+ {1520766000 -28800 1 AKDT}
+ {1541325600 -32400 0 AKST}
+ {1552215600 -28800 1 AKDT}
+ {1572775200 -32400 0 AKST}
+ {1583665200 -28800 1 AKDT}
+ {1604224800 -32400 0 AKST}
+ {1615719600 -28800 1 AKDT}
+ {1636279200 -32400 0 AKST}
+ {1647169200 -28800 1 AKDT}
+ {1667728800 -32400 0 AKST}
+ {1678618800 -28800 1 AKDT}
+ {1699178400 -32400 0 AKST}
+ {1710068400 -28800 1 AKDT}
+ {1730628000 -32400 0 AKST}
+ {1741518000 -28800 1 AKDT}
+ {1762077600 -32400 0 AKST}
+ {1772967600 -28800 1 AKDT}
+ {1793527200 -32400 0 AKST}
+ {1805022000 -28800 1 AKDT}
+ {1825581600 -32400 0 AKST}
+ {1836471600 -28800 1 AKDT}
+ {1857031200 -32400 0 AKST}
+ {1867921200 -28800 1 AKDT}
+ {1888480800 -32400 0 AKST}
+ {1899370800 -28800 1 AKDT}
+ {1919930400 -32400 0 AKST}
+ {1930820400 -28800 1 AKDT}
+ {1951380000 -32400 0 AKST}
+ {1962874800 -28800 1 AKDT}
+ {1983434400 -32400 0 AKST}
+ {1994324400 -28800 1 AKDT}
+ {2014884000 -32400 0 AKST}
+ {2025774000 -28800 1 AKDT}
+ {2046333600 -32400 0 AKST}
+ {2057223600 -28800 1 AKDT}
+ {2077783200 -32400 0 AKST}
+ {2088673200 -28800 1 AKDT}
+ {2109232800 -32400 0 AKST}
+ {2120122800 -28800 1 AKDT}
+ {2140682400 -32400 0 AKST}
+ {2152177200 -28800 1 AKDT}
+ {2172736800 -32400 0 AKST}
+ {2183626800 -28800 1 AKDT}
+ {2204186400 -32400 0 AKST}
+ {2215076400 -28800 1 AKDT}
+ {2235636000 -32400 0 AKST}
+ {2246526000 -28800 1 AKDT}
+ {2267085600 -32400 0 AKST}
+ {2277975600 -28800 1 AKDT}
+ {2298535200 -32400 0 AKST}
+ {2309425200 -28800 1 AKDT}
+ {2329984800 -32400 0 AKST}
+ {2341479600 -28800 1 AKDT}
+ {2362039200 -32400 0 AKST}
+ {2372929200 -28800 1 AKDT}
+ {2393488800 -32400 0 AKST}
+ {2404378800 -28800 1 AKDT}
+ {2424938400 -32400 0 AKST}
+ {2435828400 -28800 1 AKDT}
+ {2456388000 -32400 0 AKST}
+ {2467278000 -28800 1 AKDT}
+ {2487837600 -32400 0 AKST}
+ {2499332400 -28800 1 AKDT}
+ {2519892000 -32400 0 AKST}
+ {2530782000 -28800 1 AKDT}
+ {2551341600 -32400 0 AKST}
+ {2562231600 -28800 1 AKDT}
+ {2582791200 -32400 0 AKST}
+ {2593681200 -28800 1 AKDT}
+ {2614240800 -32400 0 AKST}
+ {2625130800 -28800 1 AKDT}
+ {2645690400 -32400 0 AKST}
+ {2656580400 -28800 1 AKDT}
+ {2677140000 -32400 0 AKST}
+ {2688634800 -28800 1 AKDT}
+ {2709194400 -32400 0 AKST}
+ {2720084400 -28800 1 AKDT}
+ {2740644000 -32400 0 AKST}
+ {2751534000 -28800 1 AKDT}
+ {2772093600 -32400 0 AKST}
+ {2782983600 -28800 1 AKDT}
+ {2803543200 -32400 0 AKST}
+ {2814433200 -28800 1 AKDT}
+ {2834992800 -32400 0 AKST}
+ {2846487600 -28800 1 AKDT}
+ {2867047200 -32400 0 AKST}
+ {2877937200 -28800 1 AKDT}
+ {2898496800 -32400 0 AKST}
+ {2909386800 -28800 1 AKDT}
+ {2929946400 -32400 0 AKST}
+ {2940836400 -28800 1 AKDT}
+ {2961396000 -32400 0 AKST}
+ {2972286000 -28800 1 AKDT}
+ {2992845600 -32400 0 AKST}
+ {3003735600 -28800 1 AKDT}
+ {3024295200 -32400 0 AKST}
+ {3035790000 -28800 1 AKDT}
+ {3056349600 -32400 0 AKST}
+ {3067239600 -28800 1 AKDT}
+ {3087799200 -32400 0 AKST}
+ {3098689200 -28800 1 AKDT}
+ {3119248800 -32400 0 AKST}
+ {3130138800 -28800 1 AKDT}
+ {3150698400 -32400 0 AKST}
+ {3161588400 -28800 1 AKDT}
+ {3182148000 -32400 0 AKST}
+ {3193038000 -28800 1 AKDT}
+ {3213597600 -32400 0 AKST}
+ {3225092400 -28800 1 AKDT}
+ {3245652000 -32400 0 AKST}
+ {3256542000 -28800 1 AKDT}
+ {3277101600 -32400 0 AKST}
+ {3287991600 -28800 1 AKDT}
+ {3308551200 -32400 0 AKST}
+ {3319441200 -28800 1 AKDT}
+ {3340000800 -32400 0 AKST}
+ {3350890800 -28800 1 AKDT}
+ {3371450400 -32400 0 AKST}
+ {3382945200 -28800 1 AKDT}
+ {3403504800 -32400 0 AKST}
+ {3414394800 -28800 1 AKDT}
+ {3434954400 -32400 0 AKST}
+ {3445844400 -28800 1 AKDT}
+ {3466404000 -32400 0 AKST}
+ {3477294000 -28800 1 AKDT}
+ {3497853600 -32400 0 AKST}
+ {3508743600 -28800 1 AKDT}
+ {3529303200 -32400 0 AKST}
+ {3540193200 -28800 1 AKDT}
+ {3560752800 -32400 0 AKST}
+ {3572247600 -28800 1 AKDT}
+ {3592807200 -32400 0 AKST}
+ {3603697200 -28800 1 AKDT}
+ {3624256800 -32400 0 AKST}
+ {3635146800 -28800 1 AKDT}
+ {3655706400 -32400 0 AKST}
+ {3666596400 -28800 1 AKDT}
+ {3687156000 -32400 0 AKST}
+ {3698046000 -28800 1 AKDT}
+ {3718605600 -32400 0 AKST}
+ {3730100400 -28800 1 AKDT}
+ {3750660000 -32400 0 AKST}
+ {3761550000 -28800 1 AKDT}
+ {3782109600 -32400 0 AKST}
+ {3792999600 -28800 1 AKDT}
+ {3813559200 -32400 0 AKST}
+ {3824449200 -28800 1 AKDT}
+ {3845008800 -32400 0 AKST}
+ {3855898800 -28800 1 AKDT}
+ {3876458400 -32400 0 AKST}
+ {3887348400 -28800 1 AKDT}
+ {3907908000 -32400 0 AKST}
+ {3919402800 -28800 1 AKDT}
+ {3939962400 -32400 0 AKST}
+ {3950852400 -28800 1 AKDT}
+ {3971412000 -32400 0 AKST}
+ {3982302000 -28800 1 AKDT}
+ {4002861600 -32400 0 AKST}
+ {4013751600 -28800 1 AKDT}
+ {4034311200 -32400 0 AKST}
+ {4045201200 -28800 1 AKDT}
+ {4065760800 -32400 0 AKST}
+ {4076650800 -28800 1 AKDT}
+ {4097210400 -32400 0 AKST}
+}
diff --git a/library/tzdata/America/St_Barthelemy b/library/tzdata/America/St_Barthelemy
new file mode 100644
index 0000000..46bc287
--- /dev/null
+++ b/library/tzdata/America/St_Barthelemy
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/St_Barthelemy) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Johns b/library/tzdata/America/St_Johns
new file mode 100644
index 0000000..1492961
--- /dev/null
+++ b/library/tzdata/America/St_Johns
@@ -0,0 +1,372 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/St_Johns) {
+ {-9223372036854775808 -12652 0 LMT}
+ {-2713897748 -12652 0 NST}
+ {-1664130548 -9052 1 NDT}
+ {-1650137348 -12652 0 NST}
+ {-1640982548 -12652 0 NST}
+ {-1632076148 -9052 1 NDT}
+ {-1615145348 -12652 0 NST}
+ {-1609446548 -12652 0 NST}
+ {-1598650148 -9052 1 NDT}
+ {-1590100148 -12652 0 NST}
+ {-1567286948 -9052 1 NDT}
+ {-1551565748 -12652 0 NST}
+ {-1535837348 -9052 1 NDT}
+ {-1520116148 -12652 0 NST}
+ {-1503782948 -9052 1 NDT}
+ {-1488666548 -12652 0 NST}
+ {-1472333348 -9052 1 NDT}
+ {-1457216948 -12652 0 NST}
+ {-1440883748 -9052 1 NDT}
+ {-1425767348 -12652 0 NST}
+ {-1409434148 -9052 1 NDT}
+ {-1394317748 -12652 0 NST}
+ {-1377984548 -9052 1 NDT}
+ {-1362263348 -12652 0 NST}
+ {-1346534948 -9052 1 NDT}
+ {-1330813748 -12652 0 NST}
+ {-1314480548 -9052 1 NDT}
+ {-1299364148 -12652 0 NST}
+ {-1283030948 -9052 1 NDT}
+ {-1267914548 -12652 0 NST}
+ {-1251581348 -9052 1 NDT}
+ {-1236464948 -12652 0 NST}
+ {-1220131748 -9052 1 NDT}
+ {-1205015348 -12652 0 NST}
+ {-1188682148 -9052 1 NDT}
+ {-1172960948 -12652 0 NST}
+ {-1156627748 -9052 1 NDT}
+ {-1141511348 -12652 0 NST}
+ {-1125178148 -9052 1 NDT}
+ {-1110061748 -12652 0 NST}
+ {-1096921748 -12600 0 NST}
+ {-1093728600 -9000 1 NDT}
+ {-1078612200 -12600 0 NST}
+ {-1061670600 -9000 1 NDT}
+ {-1048973400 -12600 0 NST}
+ {-1030221000 -9000 1 NDT}
+ {-1017523800 -12600 0 NST}
+ {-998771400 -9000 1 NDT}
+ {-986074200 -12600 0 NST}
+ {-966717000 -9000 1 NDT}
+ {-954624600 -12600 0 NST}
+ {-935267400 -9000 1 NDT}
+ {-922570200 -12600 0 NST}
+ {-903817800 -9000 1 NDT}
+ {-891120600 -12600 0 NST}
+ {-872368200 -9000 0 NWT}
+ {-769395600 -9000 1 NPT}
+ {-765401400 -12600 0 NST}
+ {-757369800 -12600 0 NST}
+ {-746044200 -9000 1 NDT}
+ {-733347000 -12600 0 NST}
+ {-714594600 -9000 1 NDT}
+ {-701897400 -12600 0 NST}
+ {-683145000 -9000 1 NDT}
+ {-670447800 -12600 0 NST}
+ {-651695400 -9000 1 NDT}
+ {-638998200 -12600 0 NST}
+ {-619641000 -9000 1 NDT}
+ {-606943800 -12600 0 NST}
+ {-589401000 -9000 1 NDT}
+ {-576099000 -12600 0 NST}
+ {-557951400 -9000 1 NDT}
+ {-544649400 -12600 0 NST}
+ {-526501800 -9000 1 NDT}
+ {-513199800 -12600 0 NST}
+ {-495052200 -9000 1 NDT}
+ {-481750200 -12600 0 NST}
+ {-463602600 -9000 1 NDT}
+ {-450300600 -12600 0 NST}
+ {-431548200 -9000 1 NDT}
+ {-418246200 -12600 0 NST}
+ {-400098600 -9000 1 NDT}
+ {-386796600 -12600 0 NST}
+ {-368649000 -9000 1 NDT}
+ {-355347000 -12600 0 NST}
+ {-337199400 -9000 1 NDT}
+ {-323897400 -12600 0 NST}
+ {-305749800 -9000 1 NDT}
+ {-289423800 -12600 0 NST}
+ {-273695400 -9000 1 NDT}
+ {-257974200 -12600 0 NST}
+ {-242245800 -9000 1 NDT}
+ {-226524600 -12600 0 NST}
+ {-210796200 -9000 1 NDT}
+ {-195075000 -12600 0 NST}
+ {-179346600 -9000 1 NDT}
+ {-163625400 -12600 0 NST}
+ {-147897000 -9000 1 NDT}
+ {-131571000 -12600 0 NST}
+ {-116447400 -9000 1 NDT}
+ {-100121400 -12600 0 NST}
+ {-84393000 -9000 1 NDT}
+ {-68671800 -12600 0 NST}
+ {-52943400 -9000 1 NDT}
+ {-37222200 -12600 0 NST}
+ {-21493800 -9000 1 NDT}
+ {-5772600 -12600 0 NST}
+ {9955800 -9000 1 NDT}
+ {25677000 -12600 0 NST}
+ {41405400 -9000 1 NDT}
+ {57731400 -12600 0 NST}
+ {73459800 -9000 1 NDT}
+ {89181000 -12600 0 NST}
+ {104909400 -9000 1 NDT}
+ {120630600 -12600 0 NST}
+ {136359000 -9000 1 NDT}
+ {152080200 -12600 0 NST}
+ {167808600 -9000 1 NDT}
+ {183529800 -12600 0 NST}
+ {199258200 -9000 1 NDT}
+ {215584200 -12600 0 NST}
+ {230707800 -9000 1 NDT}
+ {247033800 -12600 0 NST}
+ {262762200 -9000 1 NDT}
+ {278483400 -12600 0 NST}
+ {294211800 -9000 1 NDT}
+ {309933000 -12600 0 NST}
+ {325661400 -9000 1 NDT}
+ {341382600 -12600 0 NST}
+ {357111000 -9000 1 NDT}
+ {372832200 -12600 0 NST}
+ {388560600 -9000 1 NDT}
+ {404886600 -12600 0 NST}
+ {420010200 -9000 1 NDT}
+ {436336200 -12600 0 NST}
+ {452064600 -9000 1 NDT}
+ {467785800 -12600 0 NST}
+ {483514200 -9000 1 NDT}
+ {499235400 -12600 0 NST}
+ {514963800 -9000 1 NDT}
+ {530685000 -12600 0 NST}
+ {544591860 -9000 1 NDT}
+ {562127460 -12600 0 NST}
+ {576041460 -5400 1 NDDT}
+ {594178260 -12600 0 NST}
+ {607491060 -9000 1 NDT}
+ {625631460 -12600 0 NST}
+ {638940660 -9000 1 NDT}
+ {657081060 -12600 0 NST}
+ {670995060 -9000 1 NDT}
+ {688530660 -12600 0 NST}
+ {702444660 -9000 1 NDT}
+ {719980260 -12600 0 NST}
+ {733894260 -9000 1 NDT}
+ {752034660 -12600 0 NST}
+ {765343860 -9000 1 NDT}
+ {783484260 -12600 0 NST}
+ {796793460 -9000 1 NDT}
+ {814933860 -12600 0 NST}
+ {828847860 -9000 1 NDT}
+ {846383460 -12600 0 NST}
+ {860297460 -9000 1 NDT}
+ {877833060 -12600 0 NST}
+ {891747060 -9000 1 NDT}
+ {909282660 -12600 0 NST}
+ {923196660 -9000 1 NDT}
+ {941337060 -12600 0 NST}
+ {954646260 -9000 1 NDT}
+ {972786660 -12600 0 NST}
+ {986095860 -9000 1 NDT}
+ {1004236260 -12600 0 NST}
+ {1018150260 -9000 1 NDT}
+ {1035685860 -12600 0 NST}
+ {1049599860 -9000 1 NDT}
+ {1067135460 -12600 0 NST}
+ {1081049460 -9000 1 NDT}
+ {1099189860 -12600 0 NST}
+ {1112499060 -9000 1 NDT}
+ {1130639460 -12600 0 NST}
+ {1143948660 -9000 1 NDT}
+ {1162089060 -12600 0 NST}
+ {1173583860 -9000 1 NDT}
+ {1194143460 -12600 0 NST}
+ {1205033460 -9000 1 NDT}
+ {1225593060 -12600 0 NST}
+ {1236483060 -9000 1 NDT}
+ {1257042660 -12600 0 NST}
+ {1268537460 -9000 1 NDT}
+ {1289097060 -12600 0 NST}
+ {1299987060 -9000 1 NDT}
+ {1320114600 -9000 0 NDT}
+ {1320553800 -12600 0 NST}
+ {1331443800 -9000 1 NDT}
+ {1352003400 -12600 0 NST}
+ {1362893400 -9000 1 NDT}
+ {1383453000 -12600 0 NST}
+ {1394343000 -9000 1 NDT}
+ {1414902600 -12600 0 NST}
+ {1425792600 -9000 1 NDT}
+ {1446352200 -12600 0 NST}
+ {1457847000 -9000 1 NDT}
+ {1478406600 -12600 0 NST}
+ {1489296600 -9000 1 NDT}
+ {1509856200 -12600 0 NST}
+ {1520746200 -9000 1 NDT}
+ {1541305800 -12600 0 NST}
+ {1552195800 -9000 1 NDT}
+ {1572755400 -12600 0 NST}
+ {1583645400 -9000 1 NDT}
+ {1604205000 -12600 0 NST}
+ {1615699800 -9000 1 NDT}
+ {1636259400 -12600 0 NST}
+ {1647149400 -9000 1 NDT}
+ {1667709000 -12600 0 NST}
+ {1678599000 -9000 1 NDT}
+ {1699158600 -12600 0 NST}
+ {1710048600 -9000 1 NDT}
+ {1730608200 -12600 0 NST}
+ {1741498200 -9000 1 NDT}
+ {1762057800 -12600 0 NST}
+ {1772947800 -9000 1 NDT}
+ {1793507400 -12600 0 NST}
+ {1805002200 -9000 1 NDT}
+ {1825561800 -12600 0 NST}
+ {1836451800 -9000 1 NDT}
+ {1857011400 -12600 0 NST}
+ {1867901400 -9000 1 NDT}
+ {1888461000 -12600 0 NST}
+ {1899351000 -9000 1 NDT}
+ {1919910600 -12600 0 NST}
+ {1930800600 -9000 1 NDT}
+ {1951360200 -12600 0 NST}
+ {1962855000 -9000 1 NDT}
+ {1983414600 -12600 0 NST}
+ {1994304600 -9000 1 NDT}
+ {2014864200 -12600 0 NST}
+ {2025754200 -9000 1 NDT}
+ {2046313800 -12600 0 NST}
+ {2057203800 -9000 1 NDT}
+ {2077763400 -12600 0 NST}
+ {2088653400 -9000 1 NDT}
+ {2109213000 -12600 0 NST}
+ {2120103000 -9000 1 NDT}
+ {2140662600 -12600 0 NST}
+ {2152157400 -9000 1 NDT}
+ {2172717000 -12600 0 NST}
+ {2183607000 -9000 1 NDT}
+ {2204166600 -12600 0 NST}
+ {2215056600 -9000 1 NDT}
+ {2235616200 -12600 0 NST}
+ {2246506200 -9000 1 NDT}
+ {2267065800 -12600 0 NST}
+ {2277955800 -9000 1 NDT}
+ {2298515400 -12600 0 NST}
+ {2309405400 -9000 1 NDT}
+ {2329965000 -12600 0 NST}
+ {2341459800 -9000 1 NDT}
+ {2362019400 -12600 0 NST}
+ {2372909400 -9000 1 NDT}
+ {2393469000 -12600 0 NST}
+ {2404359000 -9000 1 NDT}
+ {2424918600 -12600 0 NST}
+ {2435808600 -9000 1 NDT}
+ {2456368200 -12600 0 NST}
+ {2467258200 -9000 1 NDT}
+ {2487817800 -12600 0 NST}
+ {2499312600 -9000 1 NDT}
+ {2519872200 -12600 0 NST}
+ {2530762200 -9000 1 NDT}
+ {2551321800 -12600 0 NST}
+ {2562211800 -9000 1 NDT}
+ {2582771400 -12600 0 NST}
+ {2593661400 -9000 1 NDT}
+ {2614221000 -12600 0 NST}
+ {2625111000 -9000 1 NDT}
+ {2645670600 -12600 0 NST}
+ {2656560600 -9000 1 NDT}
+ {2677120200 -12600 0 NST}
+ {2688615000 -9000 1 NDT}
+ {2709174600 -12600 0 NST}
+ {2720064600 -9000 1 NDT}
+ {2740624200 -12600 0 NST}
+ {2751514200 -9000 1 NDT}
+ {2772073800 -12600 0 NST}
+ {2782963800 -9000 1 NDT}
+ {2803523400 -12600 0 NST}
+ {2814413400 -9000 1 NDT}
+ {2834973000 -12600 0 NST}
+ {2846467800 -9000 1 NDT}
+ {2867027400 -12600 0 NST}
+ {2877917400 -9000 1 NDT}
+ {2898477000 -12600 0 NST}
+ {2909367000 -9000 1 NDT}
+ {2929926600 -12600 0 NST}
+ {2940816600 -9000 1 NDT}
+ {2961376200 -12600 0 NST}
+ {2972266200 -9000 1 NDT}
+ {2992825800 -12600 0 NST}
+ {3003715800 -9000 1 NDT}
+ {3024275400 -12600 0 NST}
+ {3035770200 -9000 1 NDT}
+ {3056329800 -12600 0 NST}
+ {3067219800 -9000 1 NDT}
+ {3087779400 -12600 0 NST}
+ {3098669400 -9000 1 NDT}
+ {3119229000 -12600 0 NST}
+ {3130119000 -9000 1 NDT}
+ {3150678600 -12600 0 NST}
+ {3161568600 -9000 1 NDT}
+ {3182128200 -12600 0 NST}
+ {3193018200 -9000 1 NDT}
+ {3213577800 -12600 0 NST}
+ {3225072600 -9000 1 NDT}
+ {3245632200 -12600 0 NST}
+ {3256522200 -9000 1 NDT}
+ {3277081800 -12600 0 NST}
+ {3287971800 -9000 1 NDT}
+ {3308531400 -12600 0 NST}
+ {3319421400 -9000 1 NDT}
+ {3339981000 -12600 0 NST}
+ {3350871000 -9000 1 NDT}
+ {3371430600 -12600 0 NST}
+ {3382925400 -9000 1 NDT}
+ {3403485000 -12600 0 NST}
+ {3414375000 -9000 1 NDT}
+ {3434934600 -12600 0 NST}
+ {3445824600 -9000 1 NDT}
+ {3466384200 -12600 0 NST}
+ {3477274200 -9000 1 NDT}
+ {3497833800 -12600 0 NST}
+ {3508723800 -9000 1 NDT}
+ {3529283400 -12600 0 NST}
+ {3540173400 -9000 1 NDT}
+ {3560733000 -12600 0 NST}
+ {3572227800 -9000 1 NDT}
+ {3592787400 -12600 0 NST}
+ {3603677400 -9000 1 NDT}
+ {3624237000 -12600 0 NST}
+ {3635127000 -9000 1 NDT}
+ {3655686600 -12600 0 NST}
+ {3666576600 -9000 1 NDT}
+ {3687136200 -12600 0 NST}
+ {3698026200 -9000 1 NDT}
+ {3718585800 -12600 0 NST}
+ {3730080600 -9000 1 NDT}
+ {3750640200 -12600 0 NST}
+ {3761530200 -9000 1 NDT}
+ {3782089800 -12600 0 NST}
+ {3792979800 -9000 1 NDT}
+ {3813539400 -12600 0 NST}
+ {3824429400 -9000 1 NDT}
+ {3844989000 -12600 0 NST}
+ {3855879000 -9000 1 NDT}
+ {3876438600 -12600 0 NST}
+ {3887328600 -9000 1 NDT}
+ {3907888200 -12600 0 NST}
+ {3919383000 -9000 1 NDT}
+ {3939942600 -12600 0 NST}
+ {3950832600 -9000 1 NDT}
+ {3971392200 -12600 0 NST}
+ {3982282200 -9000 1 NDT}
+ {4002841800 -12600 0 NST}
+ {4013731800 -9000 1 NDT}
+ {4034291400 -12600 0 NST}
+ {4045181400 -9000 1 NDT}
+ {4065741000 -12600 0 NST}
+ {4076631000 -9000 1 NDT}
+ {4097190600 -12600 0 NST}
+}
diff --git a/library/tzdata/America/St_Kitts b/library/tzdata/America/St_Kitts
new file mode 100644
index 0000000..6ad7f04
--- /dev/null
+++ b/library/tzdata/America/St_Kitts
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/St_Kitts) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Lucia b/library/tzdata/America/St_Lucia
new file mode 100644
index 0000000..e479b31
--- /dev/null
+++ b/library/tzdata/America/St_Lucia
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/St_Lucia) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Thomas b/library/tzdata/America/St_Thomas
new file mode 100644
index 0000000..24698b8
--- /dev/null
+++ b/library/tzdata/America/St_Thomas
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/St_Thomas) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Vincent b/library/tzdata/America/St_Vincent
new file mode 100644
index 0000000..e3b32fb
--- /dev/null
+++ b/library/tzdata/America/St_Vincent
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/St_Vincent) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Swift_Current b/library/tzdata/America/Swift_Current
new file mode 100644
index 0000000..ad07762
--- /dev/null
+++ b/library/tzdata/America/Swift_Current
@@ -0,0 +1,29 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Swift_Current) {
+ {-9223372036854775808 -25880 0 LMT}
+ {-2030201320 -25200 0 MST}
+ {-1632063600 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-747241200 -21600 0 MDT}
+ {-732729600 -25200 0 MST}
+ {-715791600 -21600 1 MDT}
+ {-702489600 -25200 0 MST}
+ {-684342000 -21600 1 MDT}
+ {-671040000 -25200 0 MST}
+ {-652892400 -21600 1 MDT}
+ {-639590400 -25200 0 MST}
+ {-631126800 -25200 0 MST}
+ {-400086000 -21600 1 MDT}
+ {-384364800 -25200 0 MST}
+ {-337186800 -21600 1 MDT}
+ {-321465600 -25200 0 MST}
+ {-305737200 -21600 1 MDT}
+ {-292435200 -25200 0 MST}
+ {-273682800 -21600 1 MDT}
+ {-260985600 -25200 0 MST}
+ {73472400 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Tegucigalpa b/library/tzdata/America/Tegucigalpa
new file mode 100644
index 0000000..050661e
--- /dev/null
+++ b/library/tzdata/America/Tegucigalpa
@@ -0,0 +1,12 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Tegucigalpa) {
+ {-9223372036854775808 -20932 0 LMT}
+ {-1538503868 -21600 0 CST}
+ {547020000 -18000 1 CDT}
+ {559717200 -21600 0 CST}
+ {578469600 -18000 1 CDT}
+ {591166800 -21600 0 CST}
+ {1146981600 -18000 1 CDT}
+ {1154926800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Thule b/library/tzdata/America/Thule
new file mode 100644
index 0000000..0aaf9a1
--- /dev/null
+++ b/library/tzdata/America/Thule
@@ -0,0 +1,224 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Thule) {
+ {-9223372036854775808 -16508 0 LMT}
+ {-1686079492 -14400 0 AST}
+ {670399200 -10800 1 ADT}
+ {686120400 -14400 0 AST}
+ {701848800 -10800 1 ADT}
+ {717570000 -14400 0 AST}
+ {733903200 -10800 1 ADT}
+ {752043600 -14400 0 AST}
+ {765352800 -10800 1 ADT}
+ {783493200 -14400 0 AST}
+ {796802400 -10800 1 ADT}
+ {814942800 -14400 0 AST}
+ {828856800 -10800 1 ADT}
+ {846392400 -14400 0 AST}
+ {860306400 -10800 1 ADT}
+ {877842000 -14400 0 AST}
+ {891756000 -10800 1 ADT}
+ {909291600 -14400 0 AST}
+ {923205600 -10800 1 ADT}
+ {941346000 -14400 0 AST}
+ {954655200 -10800 1 ADT}
+ {972795600 -14400 0 AST}
+ {986104800 -10800 1 ADT}
+ {1004245200 -14400 0 AST}
+ {1018159200 -10800 1 ADT}
+ {1035694800 -14400 0 AST}
+ {1049608800 -10800 1 ADT}
+ {1067144400 -14400 0 AST}
+ {1081058400 -10800 1 ADT}
+ {1099198800 -14400 0 AST}
+ {1112508000 -10800 1 ADT}
+ {1130648400 -14400 0 AST}
+ {1143957600 -10800 1 ADT}
+ {1162098000 -14400 0 AST}
+ {1173592800 -10800 1 ADT}
+ {1194152400 -14400 0 AST}
+ {1205042400 -10800 1 ADT}
+ {1225602000 -14400 0 AST}
+ {1236492000 -10800 1 ADT}
+ {1257051600 -14400 0 AST}
+ {1268546400 -10800 1 ADT}
+ {1289106000 -14400 0 AST}
+ {1299996000 -10800 1 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
+}
diff --git a/library/tzdata/America/Thunder_Bay b/library/tzdata/America/Thunder_Bay
new file mode 100644
index 0000000..8a454be
--- /dev/null
+++ b/library/tzdata/America/Thunder_Bay
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Thunder_Bay) {
+ {-9223372036854775808 -21420 0 LMT}
+ {-2366733780 -21600 0 CST}
+ {-1893434400 -18000 0 EST}
+ {-883594800 -18000 0 EST}
+ {-880218000 -14400 1 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {18000 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {94712400 -18000 0 EST}
+ {126248400 -18000 0 EST}
+ {136364400 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {167814000 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana
new file mode 100644
index 0000000..6118cde
--- /dev/null
+++ b/library/tzdata/America/Tijuana
@@ -0,0 +1,285 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Tijuana) {
+ {-9223372036854775808 -28084 0 LMT}
+ {-1514736000 -25200 0 MST}
+ {-1451667600 -28800 0 PST}
+ {-1343062800 -25200 0 MST}
+ {-1234803600 -28800 0 PST}
+ {-1222963200 -25200 1 PDT}
+ {-1207242000 -28800 0 PST}
+ {-873820800 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-761677200 -28800 0 PST}
+ {-686073600 -25200 1 PDT}
+ {-661539600 -28800 0 PST}
+ {-504892800 -28800 0 PST}
+ {-495036000 -25200 1 PDT}
+ {-481734000 -28800 0 PST}
+ {-463586400 -25200 1 PDT}
+ {-450284400 -28800 0 PST}
+ {-431532000 -25200 1 PDT}
+ {-418230000 -28800 0 PST}
+ {-400082400 -25200 1 PDT}
+ {-386780400 -28800 0 PST}
+ {-368632800 -25200 1 PDT}
+ {-355330800 -28800 0 PST}
+ {-337183200 -25200 1 PDT}
+ {-323881200 -28800 0 PST}
+ {-305733600 -25200 1 PDT}
+ {-292431600 -28800 0 PST}
+ {-283968000 -28800 0 PST}
+ {189331200 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {820483200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {978336000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1014192000 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1175421600 -25200 1 PDT}
+ {1193562000 -28800 0 PST}
+ {1207476000 -25200 1 PDT}
+ {1225011600 -28800 0 PST}
+ {1238925600 -25200 1 PDT}
+ {1256461200 -28800 0 PST}
+ {1262332800 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Toronto b/library/tzdata/America/Toronto
new file mode 100644
index 0000000..09bf786
--- /dev/null
+++ b/library/tzdata/America/Toronto
@@ -0,0 +1,365 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Toronto) {
+ {-9223372036854775808 -19052 0 LMT}
+ {-2366736148 -18000 0 EST}
+ {-1632070800 -14400 1 EDT}
+ {-1615140000 -18000 0 EST}
+ {-1609441200 -18000 0 EST}
+ {-1601753400 -14400 1 EDT}
+ {-1583697600 -18000 0 EST}
+ {-1567357200 -14400 1 EDT}
+ {-1554667200 -18000 0 EST}
+ {-1534698000 -14400 1 EDT}
+ {-1524074400 -18000 0 EST}
+ {-1503248400 -14400 1 EDT}
+ {-1492365600 -18000 0 EST}
+ {-1471798800 -14400 1 EDT}
+ {-1460916000 -18000 0 EST}
+ {-1440954000 -14400 1 EDT}
+ {-1428861600 -18000 0 EST}
+ {-1409504400 -14400 1 EDT}
+ {-1397412000 -18000 0 EST}
+ {-1378054800 -14400 1 EDT}
+ {-1365962400 -18000 0 EST}
+ {-1346605200 -14400 1 EDT}
+ {-1333908000 -18000 0 EST}
+ {-1315155600 -14400 1 EDT}
+ {-1301853600 -18000 0 EST}
+ {-1283706000 -14400 1 EDT}
+ {-1270404000 -18000 0 EST}
+ {-1252256400 -14400 1 EDT}
+ {-1238954400 -18000 0 EST}
+ {-1220806800 -14400 1 EDT}
+ {-1207504800 -18000 0 EST}
+ {-1188752400 -14400 1 EDT}
+ {-1176055200 -18000 0 EST}
+ {-1157302800 -14400 1 EDT}
+ {-1144000800 -18000 0 EST}
+ {-1125853200 -14400 1 EDT}
+ {-1112551200 -18000 0 EST}
+ {-1094403600 -14400 1 EDT}
+ {-1081101600 -18000 0 EST}
+ {-1062954000 -14400 1 EDT}
+ {-1049652000 -18000 0 EST}
+ {-1031504400 -14400 1 EDT}
+ {-1018202400 -18000 0 EST}
+ {-1000054800 -14400 1 EDT}
+ {-986752800 -18000 0 EST}
+ {-968000400 -14400 1 EDT}
+ {-955303200 -18000 0 EST}
+ {-936550800 -14400 1 EDT}
+ {-880218000 -14400 0 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {-757364400 -18000 0 EST}
+ {-747248400 -14400 1 EDT}
+ {-733946400 -18000 0 EST}
+ {-715806000 -14400 1 EDT}
+ {-702504000 -18000 0 EST}
+ {-684356400 -14400 1 EDT}
+ {-671054400 -18000 0 EST}
+ {-652906800 -14400 1 EDT}
+ {-634161600 -18000 0 EST}
+ {-620845200 -14400 1 EDT}
+ {-602704800 -18000 0 EST}
+ {-589395600 -14400 1 EDT}
+ {-576093600 -18000 0 EST}
+ {-557946000 -14400 1 EDT}
+ {-544644000 -18000 0 EST}
+ {-526496400 -14400 1 EDT}
+ {-513194400 -18000 0 EST}
+ {-495046800 -14400 1 EDT}
+ {-481744800 -18000 0 EST}
+ {-463597200 -14400 1 EDT}
+ {-450295200 -18000 0 EST}
+ {-431542800 -14400 1 EDT}
+ {-418240800 -18000 0 EST}
+ {-400093200 -14400 1 EDT}
+ {-384372000 -18000 0 EST}
+ {-368643600 -14400 1 EDT}
+ {-352922400 -18000 0 EST}
+ {-337194000 -14400 1 EDT}
+ {-321472800 -18000 0 EST}
+ {-305744400 -14400 1 EDT}
+ {-289418400 -18000 0 EST}
+ {-273690000 -14400 1 EDT}
+ {-257968800 -18000 0 EST}
+ {-242240400 -14400 1 EDT}
+ {-226519200 -18000 0 EST}
+ {-210790800 -14400 1 EDT}
+ {-195069600 -18000 0 EST}
+ {-179341200 -14400 1 EDT}
+ {-163620000 -18000 0 EST}
+ {-147891600 -14400 1 EDT}
+ {-131565600 -18000 0 EST}
+ {-116442000 -14400 1 EDT}
+ {-100116000 -18000 0 EST}
+ {-84387600 -14400 1 EDT}
+ {-68666400 -18000 0 EST}
+ {-52938000 -14400 1 EDT}
+ {-37216800 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126248400 -18000 0 EST}
+ {136364400 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {167814000 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/America/Tortola b/library/tzdata/America/Tortola
new file mode 100644
index 0000000..aa6f655
--- /dev/null
+++ b/library/tzdata/America/Tortola
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Tortola) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Vancouver b/library/tzdata/America/Vancouver
new file mode 100644
index 0000000..aef639a
--- /dev/null
+++ b/library/tzdata/America/Vancouver
@@ -0,0 +1,320 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Vancouver) {
+ {-9223372036854775808 -29548 0 LMT}
+ {-2713880852 -28800 0 PST}
+ {-1632060000 -25200 1 PDT}
+ {-1615129200 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-747237600 -25200 1 PDT}
+ {-732726000 -28800 0 PST}
+ {-715788000 -25200 1 PDT}
+ {-702486000 -28800 0 PST}
+ {-684338400 -25200 1 PDT}
+ {-671036400 -28800 0 PST}
+ {-652888800 -25200 1 PDT}
+ {-639586800 -28800 0 PST}
+ {-620834400 -25200 1 PDT}
+ {-608137200 -28800 0 PST}
+ {-589384800 -25200 1 PDT}
+ {-576082800 -28800 0 PST}
+ {-557935200 -25200 1 PDT}
+ {-544633200 -28800 0 PST}
+ {-526485600 -25200 1 PDT}
+ {-513183600 -28800 0 PST}
+ {-495036000 -25200 1 PDT}
+ {-481734000 -28800 0 PST}
+ {-463586400 -25200 1 PDT}
+ {-450284400 -28800 0 PST}
+ {-431532000 -25200 1 PDT}
+ {-418230000 -28800 0 PST}
+ {-400082400 -25200 1 PDT}
+ {-386780400 -28800 0 PST}
+ {-368632800 -25200 1 PDT}
+ {-355330800 -28800 0 PST}
+ {-337183200 -25200 1 PDT}
+ {-323881200 -28800 0 PST}
+ {-305733600 -25200 1 PDT}
+ {-292431600 -28800 0 PST}
+ {-273679200 -25200 1 PDT}
+ {-260982000 -28800 0 PST}
+ {-242229600 -25200 1 PDT}
+ {-226508400 -28800 0 PST}
+ {-210780000 -25200 1 PDT}
+ {-195058800 -28800 0 PST}
+ {-179330400 -25200 1 PDT}
+ {-163609200 -28800 0 PST}
+ {-147880800 -25200 1 PDT}
+ {-131554800 -28800 0 PST}
+ {-116431200 -25200 1 PDT}
+ {-100105200 -28800 0 PST}
+ {-84376800 -25200 1 PDT}
+ {-68655600 -28800 0 PST}
+ {-52927200 -25200 1 PDT}
+ {-37206000 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {136375200 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {167824800 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {536486400 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1173607200 -25200 1 PDT}
+ {1194166800 -28800 0 PST}
+ {1205056800 -25200 1 PDT}
+ {1225616400 -28800 0 PST}
+ {1236506400 -25200 1 PDT}
+ {1257066000 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Virgin b/library/tzdata/America/Virgin
new file mode 100644
index 0000000..c267e5b
--- /dev/null
+++ b/library/tzdata/America/Virgin
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
+}
+set TZData(:America/Virgin) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Whitehorse b/library/tzdata/America/Whitehorse
new file mode 100644
index 0000000..1d61093
--- /dev/null
+++ b/library/tzdata/America/Whitehorse
@@ -0,0 +1,256 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Whitehorse) {
+ {-9223372036854775808 -32412 0 LMT}
+ {-2188997988 -32400 0 YST}
+ {-1632056400 -28800 1 YDT}
+ {-1615125600 -32400 0 YST}
+ {-1596978000 -28800 1 YDT}
+ {-1583164800 -32400 0 YST}
+ {-880203600 -28800 1 YWT}
+ {-769395600 -28800 1 YPT}
+ {-765381600 -32400 0 YST}
+ {-147884400 -25200 1 YDDT}
+ {-131554800 -32400 0 YST}
+ {315561600 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1173607200 -25200 1 PDT}
+ {1194166800 -28800 0 PST}
+ {1205056800 -25200 1 PDT}
+ {1225616400 -28800 0 PST}
+ {1236506400 -25200 1 PDT}
+ {1257066000 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Winnipeg b/library/tzdata/America/Winnipeg
new file mode 100644
index 0000000..e6efe47
--- /dev/null
+++ b/library/tzdata/America/Winnipeg
@@ -0,0 +1,316 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Winnipeg) {
+ {-9223372036854775808 -23316 0 LMT}
+ {-2602258284 -21600 0 CST}
+ {-1694368800 -18000 1 CDT}
+ {-1681671600 -21600 0 CST}
+ {-1632067200 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1029686400 -18000 1 CDT}
+ {-1018198800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-746035200 -18000 1 CDT}
+ {-732733200 -21600 0 CST}
+ {-715795200 -18000 1 CDT}
+ {-702493200 -21600 0 CST}
+ {-684345600 -18000 1 CDT}
+ {-671043600 -21600 0 CST}
+ {-652896000 -18000 1 CDT}
+ {-639594000 -21600 0 CST}
+ {-620755200 -18000 1 CDT}
+ {-607626000 -21600 0 CST}
+ {-589392000 -18000 1 CDT}
+ {-576090000 -21600 0 CST}
+ {-557942400 -18000 1 CDT}
+ {-544640400 -21600 0 CST}
+ {-526492800 -18000 1 CDT}
+ {-513190800 -21600 0 CST}
+ {-495043200 -18000 1 CDT}
+ {-481741200 -21600 0 CST}
+ {-463593600 -18000 1 CDT}
+ {-450291600 -21600 0 CST}
+ {-431539200 -18000 1 CDT}
+ {-418237200 -21600 0 CST}
+ {-400089600 -18000 1 CDT}
+ {-386787600 -21600 0 CST}
+ {-368640000 -18000 1 CDT}
+ {-355338000 -21600 0 CST}
+ {-337190400 -18000 1 CDT}
+ {-321469200 -21600 0 CST}
+ {-305740800 -18000 1 CDT}
+ {-292438800 -21600 0 CST}
+ {-210787200 -18000 1 CDT}
+ {-198090000 -21600 0 CST}
+ {-116438400 -18000 1 CDT}
+ {-100108800 -21600 0 CST}
+ {-84384000 -18000 1 CDT}
+ {-68659200 -21600 0 CST}
+ {-52934400 -18000 1 CDT}
+ {-37209600 -21600 0 CST}
+ {-21484800 -18000 1 CDT}
+ {-5760000 -21600 0 CST}
+ {9964800 -18000 1 CDT}
+ {25689600 -21600 0 CST}
+ {41414400 -18000 1 CDT}
+ {57744000 -21600 0 CST}
+ {73468800 -18000 1 CDT}
+ {89193600 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120643200 -21600 0 CST}
+ {136368000 -18000 1 CDT}
+ {152092800 -21600 0 CST}
+ {167817600 -18000 1 CDT}
+ {183542400 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215596800 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247046400 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278496000 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309945600 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341395200 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372844800 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404899200 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436348800 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467798400 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499248000 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530697600 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562147200 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594201600 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625651200 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657100800 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688550400 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {720000000 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752054400 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783504000 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814953600 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846403200 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877852800 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909302400 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941356800 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972806400 -21600 0 CST}
+ {986112000 -18000 1 CDT}
+ {1004256000 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035705600 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067155200 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099209600 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130659200 -21600 0 CST}
+ {1136095200 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Yakutat b/library/tzdata/America/Yakutat
new file mode 100644
index 0000000..a0420c5
--- /dev/null
+++ b/library/tzdata/America/Yakutat
@@ -0,0 +1,276 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Yakutat) {
+ {-9223372036854775808 52865 0 LMT}
+ {-3225364865 -33535 0 LMT}
+ {-2188953665 -32400 0 YST}
+ {-883580400 -32400 0 YST}
+ {-880203600 -28800 1 YWT}
+ {-769395600 -28800 1 YPT}
+ {-765381600 -32400 0 YST}
+ {-757350000 -32400 0 YST}
+ {-31503600 -32400 0 YST}
+ {-21474000 -28800 1 YDT}
+ {-5752800 -32400 0 YST}
+ {9975600 -28800 1 YDT}
+ {25696800 -32400 0 YST}
+ {41425200 -28800 1 YDT}
+ {57751200 -32400 0 YST}
+ {73479600 -28800 1 YDT}
+ {89200800 -32400 0 YST}
+ {104929200 -28800 1 YDT}
+ {120650400 -32400 0 YST}
+ {126702000 -28800 1 YDT}
+ {152100000 -32400 0 YST}
+ {162385200 -28800 1 YDT}
+ {183549600 -32400 0 YST}
+ {199278000 -28800 1 YDT}
+ {215604000 -32400 0 YST}
+ {230727600 -28800 1 YDT}
+ {247053600 -32400 0 YST}
+ {262782000 -28800 1 YDT}
+ {278503200 -32400 0 YST}
+ {294231600 -28800 1 YDT}
+ {309952800 -32400 0 YST}
+ {325681200 -28800 1 YDT}
+ {341402400 -32400 0 YST}
+ {357130800 -28800 1 YDT}
+ {372852000 -32400 0 YST}
+ {388580400 -28800 1 YDT}
+ {404906400 -32400 0 YST}
+ {420030000 -28800 1 YDT}
+ {436356000 -32400 0 YST}
+ {439030800 -32400 0 AKST}
+ {452084400 -28800 1 AKDT}
+ {467805600 -32400 0 AKST}
+ {483534000 -28800 1 AKDT}
+ {499255200 -32400 0 AKST}
+ {514983600 -28800 1 AKDT}
+ {530704800 -32400 0 AKST}
+ {544618800 -28800 1 AKDT}
+ {562154400 -32400 0 AKST}
+ {576068400 -28800 1 AKDT}
+ {594208800 -32400 0 AKST}
+ {607518000 -28800 1 AKDT}
+ {625658400 -32400 0 AKST}
+ {638967600 -28800 1 AKDT}
+ {657108000 -32400 0 AKST}
+ {671022000 -28800 1 AKDT}
+ {688557600 -32400 0 AKST}
+ {702471600 -28800 1 AKDT}
+ {720007200 -32400 0 AKST}
+ {733921200 -28800 1 AKDT}
+ {752061600 -32400 0 AKST}
+ {765370800 -28800 1 AKDT}
+ {783511200 -32400 0 AKST}
+ {796820400 -28800 1 AKDT}
+ {814960800 -32400 0 AKST}
+ {828874800 -28800 1 AKDT}
+ {846410400 -32400 0 AKST}
+ {860324400 -28800 1 AKDT}
+ {877860000 -32400 0 AKST}
+ {891774000 -28800 1 AKDT}
+ {909309600 -32400 0 AKST}
+ {923223600 -28800 1 AKDT}
+ {941364000 -32400 0 AKST}
+ {954673200 -28800 1 AKDT}
+ {972813600 -32400 0 AKST}
+ {986122800 -28800 1 AKDT}
+ {1004263200 -32400 0 AKST}
+ {1018177200 -28800 1 AKDT}
+ {1035712800 -32400 0 AKST}
+ {1049626800 -28800 1 AKDT}
+ {1067162400 -32400 0 AKST}
+ {1081076400 -28800 1 AKDT}
+ {1099216800 -32400 0 AKST}
+ {1112526000 -28800 1 AKDT}
+ {1130666400 -32400 0 AKST}
+ {1143975600 -28800 1 AKDT}
+ {1162116000 -32400 0 AKST}
+ {1173610800 -28800 1 AKDT}
+ {1194170400 -32400 0 AKST}
+ {1205060400 -28800 1 AKDT}
+ {1225620000 -32400 0 AKST}
+ {1236510000 -28800 1 AKDT}
+ {1257069600 -32400 0 AKST}
+ {1268564400 -28800 1 AKDT}
+ {1289124000 -32400 0 AKST}
+ {1300014000 -28800 1 AKDT}
+ {1320573600 -32400 0 AKST}
+ {1331463600 -28800 1 AKDT}
+ {1352023200 -32400 0 AKST}
+ {1362913200 -28800 1 AKDT}
+ {1383472800 -32400 0 AKST}
+ {1394362800 -28800 1 AKDT}
+ {1414922400 -32400 0 AKST}
+ {1425812400 -28800 1 AKDT}
+ {1446372000 -32400 0 AKST}
+ {1457866800 -28800 1 AKDT}
+ {1478426400 -32400 0 AKST}
+ {1489316400 -28800 1 AKDT}
+ {1509876000 -32400 0 AKST}
+ {1520766000 -28800 1 AKDT}
+ {1541325600 -32400 0 AKST}
+ {1552215600 -28800 1 AKDT}
+ {1572775200 -32400 0 AKST}
+ {1583665200 -28800 1 AKDT}
+ {1604224800 -32400 0 AKST}
+ {1615719600 -28800 1 AKDT}
+ {1636279200 -32400 0 AKST}
+ {1647169200 -28800 1 AKDT}
+ {1667728800 -32400 0 AKST}
+ {1678618800 -28800 1 AKDT}
+ {1699178400 -32400 0 AKST}
+ {1710068400 -28800 1 AKDT}
+ {1730628000 -32400 0 AKST}
+ {1741518000 -28800 1 AKDT}
+ {1762077600 -32400 0 AKST}
+ {1772967600 -28800 1 AKDT}
+ {1793527200 -32400 0 AKST}
+ {1805022000 -28800 1 AKDT}
+ {1825581600 -32400 0 AKST}
+ {1836471600 -28800 1 AKDT}
+ {1857031200 -32400 0 AKST}
+ {1867921200 -28800 1 AKDT}
+ {1888480800 -32400 0 AKST}
+ {1899370800 -28800 1 AKDT}
+ {1919930400 -32400 0 AKST}
+ {1930820400 -28800 1 AKDT}
+ {1951380000 -32400 0 AKST}
+ {1962874800 -28800 1 AKDT}
+ {1983434400 -32400 0 AKST}
+ {1994324400 -28800 1 AKDT}
+ {2014884000 -32400 0 AKST}
+ {2025774000 -28800 1 AKDT}
+ {2046333600 -32400 0 AKST}
+ {2057223600 -28800 1 AKDT}
+ {2077783200 -32400 0 AKST}
+ {2088673200 -28800 1 AKDT}
+ {2109232800 -32400 0 AKST}
+ {2120122800 -28800 1 AKDT}
+ {2140682400 -32400 0 AKST}
+ {2152177200 -28800 1 AKDT}
+ {2172736800 -32400 0 AKST}
+ {2183626800 -28800 1 AKDT}
+ {2204186400 -32400 0 AKST}
+ {2215076400 -28800 1 AKDT}
+ {2235636000 -32400 0 AKST}
+ {2246526000 -28800 1 AKDT}
+ {2267085600 -32400 0 AKST}
+ {2277975600 -28800 1 AKDT}
+ {2298535200 -32400 0 AKST}
+ {2309425200 -28800 1 AKDT}
+ {2329984800 -32400 0 AKST}
+ {2341479600 -28800 1 AKDT}
+ {2362039200 -32400 0 AKST}
+ {2372929200 -28800 1 AKDT}
+ {2393488800 -32400 0 AKST}
+ {2404378800 -28800 1 AKDT}
+ {2424938400 -32400 0 AKST}
+ {2435828400 -28800 1 AKDT}
+ {2456388000 -32400 0 AKST}
+ {2467278000 -28800 1 AKDT}
+ {2487837600 -32400 0 AKST}
+ {2499332400 -28800 1 AKDT}
+ {2519892000 -32400 0 AKST}
+ {2530782000 -28800 1 AKDT}
+ {2551341600 -32400 0 AKST}
+ {2562231600 -28800 1 AKDT}
+ {2582791200 -32400 0 AKST}
+ {2593681200 -28800 1 AKDT}
+ {2614240800 -32400 0 AKST}
+ {2625130800 -28800 1 AKDT}
+ {2645690400 -32400 0 AKST}
+ {2656580400 -28800 1 AKDT}
+ {2677140000 -32400 0 AKST}
+ {2688634800 -28800 1 AKDT}
+ {2709194400 -32400 0 AKST}
+ {2720084400 -28800 1 AKDT}
+ {2740644000 -32400 0 AKST}
+ {2751534000 -28800 1 AKDT}
+ {2772093600 -32400 0 AKST}
+ {2782983600 -28800 1 AKDT}
+ {2803543200 -32400 0 AKST}
+ {2814433200 -28800 1 AKDT}
+ {2834992800 -32400 0 AKST}
+ {2846487600 -28800 1 AKDT}
+ {2867047200 -32400 0 AKST}
+ {2877937200 -28800 1 AKDT}
+ {2898496800 -32400 0 AKST}
+ {2909386800 -28800 1 AKDT}
+ {2929946400 -32400 0 AKST}
+ {2940836400 -28800 1 AKDT}
+ {2961396000 -32400 0 AKST}
+ {2972286000 -28800 1 AKDT}
+ {2992845600 -32400 0 AKST}
+ {3003735600 -28800 1 AKDT}
+ {3024295200 -32400 0 AKST}
+ {3035790000 -28800 1 AKDT}
+ {3056349600 -32400 0 AKST}
+ {3067239600 -28800 1 AKDT}
+ {3087799200 -32400 0 AKST}
+ {3098689200 -28800 1 AKDT}
+ {3119248800 -32400 0 AKST}
+ {3130138800 -28800 1 AKDT}
+ {3150698400 -32400 0 AKST}
+ {3161588400 -28800 1 AKDT}
+ {3182148000 -32400 0 AKST}
+ {3193038000 -28800 1 AKDT}
+ {3213597600 -32400 0 AKST}
+ {3225092400 -28800 1 AKDT}
+ {3245652000 -32400 0 AKST}
+ {3256542000 -28800 1 AKDT}
+ {3277101600 -32400 0 AKST}
+ {3287991600 -28800 1 AKDT}
+ {3308551200 -32400 0 AKST}
+ {3319441200 -28800 1 AKDT}
+ {3340000800 -32400 0 AKST}
+ {3350890800 -28800 1 AKDT}
+ {3371450400 -32400 0 AKST}
+ {3382945200 -28800 1 AKDT}
+ {3403504800 -32400 0 AKST}
+ {3414394800 -28800 1 AKDT}
+ {3434954400 -32400 0 AKST}
+ {3445844400 -28800 1 AKDT}
+ {3466404000 -32400 0 AKST}
+ {3477294000 -28800 1 AKDT}
+ {3497853600 -32400 0 AKST}
+ {3508743600 -28800 1 AKDT}
+ {3529303200 -32400 0 AKST}
+ {3540193200 -28800 1 AKDT}
+ {3560752800 -32400 0 AKST}
+ {3572247600 -28800 1 AKDT}
+ {3592807200 -32400 0 AKST}
+ {3603697200 -28800 1 AKDT}
+ {3624256800 -32400 0 AKST}
+ {3635146800 -28800 1 AKDT}
+ {3655706400 -32400 0 AKST}
+ {3666596400 -28800 1 AKDT}
+ {3687156000 -32400 0 AKST}
+ {3698046000 -28800 1 AKDT}
+ {3718605600 -32400 0 AKST}
+ {3730100400 -28800 1 AKDT}
+ {3750660000 -32400 0 AKST}
+ {3761550000 -28800 1 AKDT}
+ {3782109600 -32400 0 AKST}
+ {3792999600 -28800 1 AKDT}
+ {3813559200 -32400 0 AKST}
+ {3824449200 -28800 1 AKDT}
+ {3845008800 -32400 0 AKST}
+ {3855898800 -28800 1 AKDT}
+ {3876458400 -32400 0 AKST}
+ {3887348400 -28800 1 AKDT}
+ {3907908000 -32400 0 AKST}
+ {3919402800 -28800 1 AKDT}
+ {3939962400 -32400 0 AKST}
+ {3950852400 -28800 1 AKDT}
+ {3971412000 -32400 0 AKST}
+ {3982302000 -28800 1 AKDT}
+ {4002861600 -32400 0 AKST}
+ {4013751600 -28800 1 AKDT}
+ {4034311200 -32400 0 AKST}
+ {4045201200 -28800 1 AKDT}
+ {4065760800 -32400 0 AKST}
+ {4076650800 -28800 1 AKDT}
+ {4097210400 -32400 0 AKST}
+}
diff --git a/library/tzdata/America/Yellowknife b/library/tzdata/America/Yellowknife
new file mode 100644
index 0000000..44ca658
--- /dev/null
+++ b/library/tzdata/America/Yellowknife
@@ -0,0 +1,252 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Yellowknife) {
+ {-9223372036854775808 0 0 zzz}
+ {-1104537600 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-147891600 -18000 1 MDDT}
+ {-131562000 -25200 0 MST}
+ {315558000 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey
new file mode 100644
index 0000000..cbe3e3c
--- /dev/null
+++ b/library/tzdata/Antarctica/Casey
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Casey) {
+ {-9223372036854775808 0 0 zzz}
+ {-31536000 28800 0 WST}
+ {1255802400 39600 0 CAST}
+ {1267714800 28800 0 WST}
+ {1319738400 39600 0 CAST}
+ {1329843600 28800 0 WST}
+}
diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis
new file mode 100644
index 0000000..2762d2f
--- /dev/null
+++ b/library/tzdata/Antarctica/Davis
@@ -0,0 +1,12 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Davis) {
+ {-9223372036854775808 0 0 zzz}
+ {-409190400 25200 0 DAVT}
+ {-163062000 0 0 zzz}
+ {-28857600 25200 0 DAVT}
+ {1255806000 18000 0 DAVT}
+ {1268251200 25200 0 DAVT}
+ {1319742000 18000 0 DAVT}
+ {1329854400 25200 0 DAVT}
+}
diff --git a/library/tzdata/Antarctica/DumontDUrville b/library/tzdata/Antarctica/DumontDUrville
new file mode 100644
index 0000000..41dc1e3
--- /dev/null
+++ b/library/tzdata/Antarctica/DumontDUrville
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/DumontDUrville) {
+ {-9223372036854775808 0 0 zzz}
+ {-725846400 36000 0 PMT}
+ {-566992800 0 0 zzz}
+ {-415497600 36000 0 DDUT}
+}
diff --git a/library/tzdata/Antarctica/Macquarie b/library/tzdata/Antarctica/Macquarie
new file mode 100644
index 0000000..bd5cf8a
--- /dev/null
+++ b/library/tzdata/Antarctica/Macquarie
@@ -0,0 +1,97 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Macquarie) {
+ {-9223372036854775808 0 0 zzz}
+ {-2214259200 36000 0 EST}
+ {-1680508800 39600 1 EST}
+ {-1669892400 39600 0 EST}
+ {-1665392400 36000 0 EST}
+ {-1601719200 0 0 zzz}
+ {-94730400 36000 0 EST}
+ {-71136000 39600 1 EST}
+ {-55411200 36000 0 EST}
+ {-37267200 39600 1 EST}
+ {-25776000 36000 0 EST}
+ {-5817600 39600 1 EST}
+ {5673600 36000 0 EST}
+ {25632000 39600 1 EST}
+ {37728000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {89136000 39600 1 EST}
+ {100022400 36000 0 EST}
+ {120585600 39600 1 EST}
+ {131472000 36000 0 EST}
+ {152035200 39600 1 EST}
+ {162921600 36000 0 EST}
+ {183484800 39600 1 EST}
+ {194976000 36000 0 EST}
+ {215539200 39600 1 EST}
+ {226425600 36000 0 EST}
+ {246988800 39600 1 EST}
+ {257875200 36000 0 EST}
+ {278438400 39600 1 EST}
+ {289324800 36000 0 EST}
+ {309888000 39600 1 EST}
+ {320774400 36000 0 EST}
+ {341337600 39600 1 EST}
+ {352224000 36000 0 EST}
+ {372787200 39600 1 EST}
+ {386092800 36000 0 EST}
+ {404841600 39600 1 EST}
+ {417542400 36000 0 EST}
+ {436291200 39600 1 EST}
+ {447177600 36000 0 EST}
+ {467740800 39600 1 EST}
+ {478627200 36000 0 EST}
+ {499190400 39600 1 EST}
+ {510076800 36000 0 EST}
+ {530035200 39600 1 EST}
+ {542736000 36000 0 EST}
+ {562089600 39600 1 EST}
+ {574790400 36000 0 EST}
+ {594144000 39600 1 EST}
+ {606240000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {637689600 36000 0 EST}
+ {657043200 39600 1 EST}
+ {670348800 36000 0 EST}
+ {686678400 39600 1 EST}
+ {701798400 36000 0 EST}
+ {718128000 39600 1 EST}
+ {733248000 36000 0 EST}
+ {749577600 39600 1 EST}
+ {764697600 36000 0 EST}
+ {781027200 39600 1 EST}
+ {796147200 36000 0 EST}
+ {812476800 39600 1 EST}
+ {828201600 36000 0 EST}
+ {844531200 39600 1 EST}
+ {859651200 36000 0 EST}
+ {875980800 39600 1 EST}
+ {891100800 36000 0 EST}
+ {907430400 39600 1 EST}
+ {922550400 36000 0 EST}
+ {938880000 39600 1 EST}
+ {954000000 36000 0 EST}
+ {967305600 39600 1 EST}
+ {985449600 36000 0 EST}
+ {1002384000 39600 1 EST}
+ {1017504000 36000 0 EST}
+ {1033833600 39600 1 EST}
+ {1048953600 36000 0 EST}
+ {1065283200 39600 1 EST}
+ {1080403200 36000 0 EST}
+ {1096732800 39600 1 EST}
+ {1111852800 36000 0 EST}
+ {1128182400 39600 1 EST}
+ {1143907200 36000 0 EST}
+ {1159632000 39600 1 EST}
+ {1174752000 36000 0 EST}
+ {1191686400 39600 1 EST}
+ {1207411200 36000 0 EST}
+ {1223136000 39600 1 EST}
+ {1238860800 36000 0 EST}
+ {1254585600 39600 1 EST}
+ {1270310400 39600 0 MIST}
+}
diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson
new file mode 100644
index 0000000..ba03ba1
--- /dev/null
+++ b/library/tzdata/Antarctica/Mawson
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Mawson) {
+ {-9223372036854775808 0 0 zzz}
+ {-501206400 21600 0 MAWT}
+ {1255809600 18000 0 MAWT}
+}
diff --git a/library/tzdata/Antarctica/McMurdo b/library/tzdata/Antarctica/McMurdo
new file mode 100644
index 0000000..3b29ba1
--- /dev/null
+++ b/library/tzdata/Antarctica/McMurdo
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Auckland)]} {
+ LoadTimeZoneFile Pacific/Auckland
+}
+set TZData(:Antarctica/McMurdo) $TZData(:Pacific/Auckland)
diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer
new file mode 100644
index 0000000..e87b171
--- /dev/null
+++ b/library/tzdata/Antarctica/Palmer
@@ -0,0 +1,254 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Palmer) {
+ {-9223372036854775808 0 0 zzz}
+ {-157766400 -14400 0 ART}
+ {-152654400 -14400 0 ART}
+ {-132955200 -10800 1 ARST}
+ {-121122000 -14400 0 ART}
+ {-101419200 -10800 1 ARST}
+ {-86821200 -14400 0 ART}
+ {-71092800 -10800 1 ARST}
+ {-54766800 -14400 0 ART}
+ {-39038400 -10800 1 ARST}
+ {-23317200 -14400 0 ART}
+ {-7588800 -10800 0 ART}
+ {128142000 -7200 1 ARST}
+ {136605600 -10800 0 ART}
+ {389070000 -14400 0 CLT}
+ {403070400 -10800 1 CLST}
+ {416372400 -14400 0 CLT}
+ {434520000 -10800 1 CLST}
+ {447822000 -14400 0 CLT}
+ {466574400 -10800 1 CLST}
+ {479271600 -14400 0 CLT}
+ {498024000 -10800 1 CLST}
+ {510721200 -14400 0 CLT}
+ {529473600 -10800 1 CLST}
+ {545194800 -14400 0 CLT}
+ {560923200 -10800 1 CLST}
+ {574225200 -14400 0 CLT}
+ {591768000 -10800 1 CLST}
+ {605674800 -14400 0 CLT}
+ {624427200 -10800 1 CLST}
+ {637729200 -14400 0 CLT}
+ {653457600 -10800 1 CLST}
+ {668574000 -14400 0 CLT}
+ {687326400 -10800 1 CLST}
+ {700628400 -14400 0 CLT}
+ {718776000 -10800 1 CLST}
+ {732078000 -14400 0 CLT}
+ {750225600 -10800 1 CLST}
+ {763527600 -14400 0 CLT}
+ {781675200 -10800 1 CLST}
+ {794977200 -14400 0 CLT}
+ {813729600 -10800 1 CLST}
+ {826426800 -14400 0 CLT}
+ {845179200 -10800 1 CLST}
+ {859690800 -14400 0 CLT}
+ {876628800 -10800 1 CLST}
+ {889930800 -14400 0 CLT}
+ {906868800 -10800 1 CLST}
+ {923194800 -14400 0 CLT}
+ {939528000 -10800 1 CLST}
+ {952830000 -14400 0 CLT}
+ {971582400 -10800 1 CLST}
+ {984279600 -14400 0 CLT}
+ {1003032000 -10800 1 CLST}
+ {1015729200 -14400 0 CLT}
+ {1034481600 -10800 1 CLST}
+ {1047178800 -14400 0 CLT}
+ {1065931200 -10800 1 CLST}
+ {1079233200 -14400 0 CLT}
+ {1097380800 -10800 1 CLST}
+ {1110682800 -14400 0 CLT}
+ {1128830400 -10800 1 CLST}
+ {1142132400 -14400 0 CLT}
+ {1160884800 -10800 1 CLST}
+ {1173582000 -14400 0 CLT}
+ {1192334400 -10800 1 CLST}
+ {1206846000 -14400 0 CLT}
+ {1223784000 -10800 1 CLST}
+ {1237086000 -14400 0 CLT}
+ {1255233600 -10800 1 CLST}
+ {1270350000 -14400 0 CLT}
+ {1286683200 -10800 1 CLST}
+ {1304823600 -14400 0 CLT}
+ {1313899200 -10800 1 CLST}
+ {1335668400 -14400 0 CLT}
+ {1346558400 -10800 1 CLST}
+ {1367118000 -14400 0 CLT}
+ {1378612800 -10800 1 CLST}
+ {1398567600 -14400 0 CLT}
+ {1410062400 -10800 1 CLST}
+ {1430017200 -14400 0 CLT}
+ {1441512000 -10800 1 CLST}
+ {1461466800 -14400 0 CLT}
+ {1472961600 -10800 1 CLST}
+ {1492916400 -14400 0 CLT}
+ {1504411200 -10800 1 CLST}
+ {1524970800 -14400 0 CLT}
+ {1535860800 -10800 1 CLST}
+ {1556420400 -14400 0 CLT}
+ {1567915200 -10800 1 CLST}
+ {1587870000 -14400 0 CLT}
+ {1599364800 -10800 1 CLST}
+ {1619319600 -14400 0 CLT}
+ {1630814400 -10800 1 CLST}
+ {1650769200 -14400 0 CLT}
+ {1662264000 -10800 1 CLST}
+ {1682218800 -14400 0 CLT}
+ {1693713600 -10800 1 CLST}
+ {1714273200 -14400 0 CLT}
+ {1725768000 -10800 1 CLST}
+ {1745722800 -14400 0 CLT}
+ {1757217600 -10800 1 CLST}
+ {1777172400 -14400 0 CLT}
+ {1788667200 -10800 1 CLST}
+ {1808622000 -14400 0 CLT}
+ {1820116800 -10800 1 CLST}
+ {1840071600 -14400 0 CLT}
+ {1851566400 -10800 1 CLST}
+ {1872126000 -14400 0 CLT}
+ {1883016000 -10800 1 CLST}
+ {1903575600 -14400 0 CLT}
+ {1915070400 -10800 1 CLST}
+ {1935025200 -14400 0 CLT}
+ {1946520000 -10800 1 CLST}
+ {1966474800 -14400 0 CLT}
+ {1977969600 -10800 1 CLST}
+ {1997924400 -14400 0 CLT}
+ {2009419200 -10800 1 CLST}
+ {2029374000 -14400 0 CLT}
+ {2040868800 -10800 1 CLST}
+ {2061428400 -14400 0 CLT}
+ {2072318400 -10800 1 CLST}
+ {2092878000 -14400 0 CLT}
+ {2104372800 -10800 1 CLST}
+ {2124327600 -14400 0 CLT}
+ {2135822400 -10800 1 CLST}
+ {2155777200 -14400 0 CLT}
+ {2167272000 -10800 1 CLST}
+ {2187226800 -14400 0 CLT}
+ {2198721600 -10800 1 CLST}
+ {2219281200 -14400 0 CLT}
+ {2230171200 -10800 1 CLST}
+ {2250730800 -14400 0 CLT}
+ {2262225600 -10800 1 CLST}
+ {2282180400 -14400 0 CLT}
+ {2293675200 -10800 1 CLST}
+ {2313630000 -14400 0 CLT}
+ {2325124800 -10800 1 CLST}
+ {2345079600 -14400 0 CLT}
+ {2356574400 -10800 1 CLST}
+ {2376529200 -14400 0 CLT}
+ {2388024000 -10800 1 CLST}
+ {2408583600 -14400 0 CLT}
+ {2419473600 -10800 1 CLST}
+ {2440033200 -14400 0 CLT}
+ {2451528000 -10800 1 CLST}
+ {2471482800 -14400 0 CLT}
+ {2482977600 -10800 1 CLST}
+ {2502932400 -14400 0 CLT}
+ {2514427200 -10800 1 CLST}
+ {2534382000 -14400 0 CLT}
+ {2545876800 -10800 1 CLST}
+ {2565831600 -14400 0 CLT}
+ {2577326400 -10800 1 CLST}
+ {2597886000 -14400 0 CLT}
+ {2609380800 -10800 1 CLST}
+ {2629335600 -14400 0 CLT}
+ {2640830400 -10800 1 CLST}
+ {2660785200 -14400 0 CLT}
+ {2672280000 -10800 1 CLST}
+ {2692234800 -14400 0 CLT}
+ {2703729600 -10800 1 CLST}
+ {2723684400 -14400 0 CLT}
+ {2735179200 -10800 1 CLST}
+ {2755738800 -14400 0 CLT}
+ {2766628800 -10800 1 CLST}
+ {2787188400 -14400 0 CLT}
+ {2798683200 -10800 1 CLST}
+ {2818638000 -14400 0 CLT}
+ {2830132800 -10800 1 CLST}
+ {2850087600 -14400 0 CLT}
+ {2861582400 -10800 1 CLST}
+ {2881537200 -14400 0 CLT}
+ {2893032000 -10800 1 CLST}
+ {2912986800 -14400 0 CLT}
+ {2924481600 -10800 1 CLST}
+ {2945041200 -14400 0 CLT}
+ {2955931200 -10800 1 CLST}
+ {2976490800 -14400 0 CLT}
+ {2987985600 -10800 1 CLST}
+ {3007940400 -14400 0 CLT}
+ {3019435200 -10800 1 CLST}
+ {3039390000 -14400 0 CLT}
+ {3050884800 -10800 1 CLST}
+ {3070839600 -14400 0 CLT}
+ {3082334400 -10800 1 CLST}
+ {3102894000 -14400 0 CLT}
+ {3113784000 -10800 1 CLST}
+ {3134343600 -14400 0 CLT}
+ {3145838400 -10800 1 CLST}
+ {3165793200 -14400 0 CLT}
+ {3177288000 -10800 1 CLST}
+ {3197242800 -14400 0 CLT}
+ {3208737600 -10800 1 CLST}
+ {3228692400 -14400 0 CLT}
+ {3240187200 -10800 1 CLST}
+ {3260142000 -14400 0 CLT}
+ {3271636800 -10800 1 CLST}
+ {3292196400 -14400 0 CLT}
+ {3303086400 -10800 1 CLST}
+ {3323646000 -14400 0 CLT}
+ {3335140800 -10800 1 CLST}
+ {3355095600 -14400 0 CLT}
+ {3366590400 -10800 1 CLST}
+ {3386545200 -14400 0 CLT}
+ {3398040000 -10800 1 CLST}
+ {3417994800 -14400 0 CLT}
+ {3429489600 -10800 1 CLST}
+ {3449444400 -14400 0 CLT}
+ {3460939200 -10800 1 CLST}
+ {3481498800 -14400 0 CLT}
+ {3492993600 -10800 1 CLST}
+ {3512948400 -14400 0 CLT}
+ {3524443200 -10800 1 CLST}
+ {3544398000 -14400 0 CLT}
+ {3555892800 -10800 1 CLST}
+ {3575847600 -14400 0 CLT}
+ {3587342400 -10800 1 CLST}
+ {3607297200 -14400 0 CLT}
+ {3618792000 -10800 1 CLST}
+ {3639351600 -14400 0 CLT}
+ {3650241600 -10800 1 CLST}
+ {3670801200 -14400 0 CLT}
+ {3682296000 -10800 1 CLST}
+ {3702250800 -14400 0 CLT}
+ {3713745600 -10800 1 CLST}
+ {3733700400 -14400 0 CLT}
+ {3745195200 -10800 1 CLST}
+ {3765150000 -14400 0 CLT}
+ {3776644800 -10800 1 CLST}
+ {3796599600 -14400 0 CLT}
+ {3808094400 -10800 1 CLST}
+ {3828654000 -14400 0 CLT}
+ {3839544000 -10800 1 CLST}
+ {3860103600 -14400 0 CLT}
+ {3871598400 -10800 1 CLST}
+ {3891553200 -14400 0 CLT}
+ {3903048000 -10800 1 CLST}
+ {3923002800 -14400 0 CLT}
+ {3934497600 -10800 1 CLST}
+ {3954452400 -14400 0 CLT}
+ {3965947200 -10800 1 CLST}
+ {3986506800 -14400 0 CLT}
+ {3997396800 -10800 1 CLST}
+ {4017956400 -14400 0 CLT}
+ {4029451200 -10800 1 CLST}
+ {4049406000 -14400 0 CLT}
+ {4060900800 -10800 1 CLST}
+ {4080855600 -14400 0 CLT}
+ {4092350400 -10800 1 CLST}
+}
diff --git a/library/tzdata/Antarctica/Rothera b/library/tzdata/Antarctica/Rothera
new file mode 100644
index 0000000..24d7f3e
--- /dev/null
+++ b/library/tzdata/Antarctica/Rothera
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Rothera) {
+ {-9223372036854775808 0 0 zzz}
+ {218246400 -10800 0 ROTT}
+}
diff --git a/library/tzdata/Antarctica/South_Pole b/library/tzdata/Antarctica/South_Pole
new file mode 100644
index 0000000..544bde4
--- /dev/null
+++ b/library/tzdata/Antarctica/South_Pole
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Auckland)]} {
+ LoadTimeZoneFile Pacific/Auckland
+}
+set TZData(:Antarctica/South_Pole) $TZData(:Pacific/Auckland)
diff --git a/library/tzdata/Antarctica/Syowa b/library/tzdata/Antarctica/Syowa
new file mode 100644
index 0000000..4d046b5
--- /dev/null
+++ b/library/tzdata/Antarctica/Syowa
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Syowa) {
+ {-9223372036854775808 0 0 zzz}
+ {-407808000 10800 0 SYOT}
+}
diff --git a/library/tzdata/Antarctica/Vostok b/library/tzdata/Antarctica/Vostok
new file mode 100644
index 0000000..f846f65
--- /dev/null
+++ b/library/tzdata/Antarctica/Vostok
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Vostok) {
+ {-9223372036854775808 0 0 zzz}
+ {-380073600 21600 0 VOST}
+}
diff --git a/library/tzdata/Arctic/Longyearbyen b/library/tzdata/Arctic/Longyearbyen
new file mode 100644
index 0000000..51f83dc
--- /dev/null
+++ b/library/tzdata/Arctic/Longyearbyen
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Oslo)]} {
+ LoadTimeZoneFile Europe/Oslo
+}
+set TZData(:Arctic/Longyearbyen) $TZData(:Europe/Oslo)
diff --git a/library/tzdata/Asia/Aden b/library/tzdata/Asia/Aden
new file mode 100644
index 0000000..399d9f0
--- /dev/null
+++ b/library/tzdata/Asia/Aden
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Aden) {
+ {-9223372036854775808 10794 0 LMT}
+ {-631162794 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Almaty b/library/tzdata/Asia/Almaty
new file mode 100644
index 0000000..68dee29
--- /dev/null
+++ b/library/tzdata/Asia/Almaty
@@ -0,0 +1,56 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Almaty) {
+ {-9223372036854775808 18468 0 LMT}
+ {-1441170468 18000 0 ALMT}
+ {-1247547600 21600 0 ALMT}
+ {354909600 25200 1 ALMST}
+ {370717200 21600 0 ALMT}
+ {386445600 25200 1 ALMST}
+ {402253200 21600 0 ALMT}
+ {417981600 25200 1 ALMST}
+ {433789200 21600 0 ALMT}
+ {449604000 25200 1 ALMST}
+ {465336000 21600 0 ALMT}
+ {481060800 25200 1 ALMST}
+ {496785600 21600 0 ALMT}
+ {512510400 25200 1 ALMST}
+ {528235200 21600 0 ALMT}
+ {543960000 25200 1 ALMST}
+ {559684800 21600 0 ALMT}
+ {575409600 25200 1 ALMST}
+ {591134400 21600 0 ALMT}
+ {606859200 25200 1 ALMST}
+ {622584000 21600 0 ALMT}
+ {638308800 25200 1 ALMST}
+ {654638400 21600 0 ALMT}
+ {662666400 21600 0 ALMT}
+ {694202400 21600 0 ALMT}
+ {701802000 25200 1 ALMST}
+ {717523200 21600 0 ALMT}
+ {733262400 25200 1 ALMST}
+ {748987200 21600 0 ALMT}
+ {764712000 25200 1 ALMST}
+ {780436800 21600 0 ALMT}
+ {796161600 25200 1 ALMST}
+ {811886400 21600 0 ALMT}
+ {828216000 25200 1 ALMST}
+ {846360000 21600 0 ALMT}
+ {859665600 25200 1 ALMST}
+ {877809600 21600 0 ALMT}
+ {891115200 25200 1 ALMST}
+ {909259200 21600 0 ALMT}
+ {922564800 25200 1 ALMST}
+ {941313600 21600 0 ALMT}
+ {954014400 25200 1 ALMST}
+ {972763200 21600 0 ALMT}
+ {985464000 25200 1 ALMST}
+ {1004212800 21600 0 ALMT}
+ {1017518400 25200 1 ALMST}
+ {1035662400 21600 0 ALMT}
+ {1048968000 25200 1 ALMST}
+ {1067112000 21600 0 ALMT}
+ {1080417600 25200 1 ALMST}
+ {1099166400 21600 0 ALMT}
+ {1110823200 21600 0 ALMT}
+}
diff --git a/library/tzdata/Asia/Amman b/library/tzdata/Asia/Amman
new file mode 100644
index 0000000..d5e8616
--- /dev/null
+++ b/library/tzdata/Asia/Amman
@@ -0,0 +1,74 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Amman) {
+ {-9223372036854775808 8624 0 LMT}
+ {-1230776624 7200 0 EET}
+ {108165600 10800 1 EEST}
+ {118270800 7200 0 EET}
+ {136591200 10800 1 EEST}
+ {149806800 7200 0 EET}
+ {168127200 10800 1 EEST}
+ {181342800 7200 0 EET}
+ {199749600 10800 1 EEST}
+ {215643600 7200 0 EET}
+ {231285600 10800 1 EEST}
+ {244501200 7200 0 EET}
+ {262735200 10800 1 EEST}
+ {275950800 7200 0 EET}
+ {481154400 10800 1 EEST}
+ {496962000 7200 0 EET}
+ {512949600 10800 1 EEST}
+ {528670800 7200 0 EET}
+ {544399200 10800 1 EEST}
+ {560120400 7200 0 EET}
+ {575848800 10800 1 EEST}
+ {592174800 7200 0 EET}
+ {610581600 10800 1 EEST}
+ {623624400 7200 0 EET}
+ {641167200 10800 1 EEST}
+ {655074000 7200 0 EET}
+ {671839200 10800 1 EEST}
+ {685918800 7200 0 EET}
+ {702856800 10800 1 EEST}
+ {717973200 7200 0 EET}
+ {733701600 10800 1 EEST}
+ {749422800 7200 0 EET}
+ {765151200 10800 1 EEST}
+ {779662800 7200 0 EET}
+ {797205600 10800 1 EEST}
+ {811116000 7200 0 EET}
+ {828655200 10800 1 EEST}
+ {843170400 7200 0 EET}
+ {860104800 10800 1 EEST}
+ {874620000 7200 0 EET}
+ {891554400 10800 1 EEST}
+ {906069600 7200 0 EET}
+ {930780000 10800 1 EEST}
+ {938124000 7200 0 EET}
+ {954367200 10800 1 EEST}
+ {970178400 7200 0 EET}
+ {985816800 10800 1 EEST}
+ {1001628000 7200 0 EET}
+ {1017352800 10800 1 EEST}
+ {1033077600 7200 0 EET}
+ {1048802400 10800 1 EEST}
+ {1066946400 7200 0 EET}
+ {1080252000 10800 1 EEST}
+ {1097791200 7200 0 EET}
+ {1112306400 10800 1 EEST}
+ {1128031200 7200 0 EET}
+ {1143756000 10800 1 EEST}
+ {1161900000 7200 0 EET}
+ {1175205600 10800 1 EEST}
+ {1193349600 7200 0 EET}
+ {1206655200 10800 1 EEST}
+ {1225404000 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1256853600 7200 0 EET}
+ {1269554400 10800 1 EEST}
+ {1288303200 7200 0 EET}
+ {1301608800 10800 1 EEST}
+ {1319752800 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1351202400 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr
new file mode 100644
index 0000000..50ace50
--- /dev/null
+++ b/library/tzdata/Asia/Anadyr
@@ -0,0 +1,72 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Anadyr) {
+ {-9223372036854775808 42596 0 LMT}
+ {-1441194596 43200 0 ANAT}
+ {-1247572800 46800 0 ANAMMTT}
+ {354884400 50400 1 ANAST}
+ {370692000 46800 0 ANAT}
+ {386420400 43200 0 ANAMMTT}
+ {386424000 46800 1 ANAST}
+ {402231600 43200 0 ANAT}
+ {417960000 46800 1 ANAST}
+ {433767600 43200 0 ANAT}
+ {449582400 46800 1 ANAST}
+ {465314400 43200 0 ANAT}
+ {481039200 46800 1 ANAST}
+ {496764000 43200 0 ANAT}
+ {512488800 46800 1 ANAST}
+ {528213600 43200 0 ANAT}
+ {543938400 46800 1 ANAST}
+ {559663200 43200 0 ANAT}
+ {575388000 46800 1 ANAST}
+ {591112800 43200 0 ANAT}
+ {606837600 46800 1 ANAST}
+ {622562400 43200 0 ANAT}
+ {638287200 46800 1 ANAST}
+ {654616800 43200 0 ANAT}
+ {670341600 39600 0 ANAMMTT}
+ {670345200 43200 1 ANAST}
+ {686070000 39600 0 ANAT}
+ {695746800 43200 0 ANAMMTT}
+ {701780400 46800 1 ANAST}
+ {717501600 43200 0 ANAT}
+ {733240800 46800 1 ANAST}
+ {748965600 43200 0 ANAT}
+ {764690400 46800 1 ANAST}
+ {780415200 43200 0 ANAT}
+ {796140000 46800 1 ANAST}
+ {811864800 43200 0 ANAT}
+ {828194400 46800 1 ANAST}
+ {846338400 43200 0 ANAT}
+ {859644000 46800 1 ANAST}
+ {877788000 43200 0 ANAT}
+ {891093600 46800 1 ANAST}
+ {909237600 43200 0 ANAT}
+ {922543200 46800 1 ANAST}
+ {941292000 43200 0 ANAT}
+ {953992800 46800 1 ANAST}
+ {972741600 43200 0 ANAT}
+ {985442400 46800 1 ANAST}
+ {1004191200 43200 0 ANAT}
+ {1017496800 46800 1 ANAST}
+ {1035640800 43200 0 ANAT}
+ {1048946400 46800 1 ANAST}
+ {1067090400 43200 0 ANAT}
+ {1080396000 46800 1 ANAST}
+ {1099144800 43200 0 ANAT}
+ {1111845600 46800 1 ANAST}
+ {1130594400 43200 0 ANAT}
+ {1143295200 46800 1 ANAST}
+ {1162044000 43200 0 ANAT}
+ {1174744800 46800 1 ANAST}
+ {1193493600 43200 0 ANAT}
+ {1206799200 46800 1 ANAST}
+ {1224943200 43200 0 ANAT}
+ {1238248800 46800 1 ANAST}
+ {1256392800 43200 0 ANAT}
+ {1269698400 39600 0 ANAMMTT}
+ {1269702000 43200 1 ANAST}
+ {1288450800 39600 0 ANAT}
+ {1301151600 43200 0 ANAT}
+}
diff --git a/library/tzdata/Asia/Aqtau b/library/tzdata/Asia/Aqtau
new file mode 100644
index 0000000..11e89a2
--- /dev/null
+++ b/library/tzdata/Asia/Aqtau
@@ -0,0 +1,58 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Aqtau) {
+ {-9223372036854775808 12064 0 LMT}
+ {-1441164064 14400 0 FORT}
+ {-1247544000 18000 0 FORT}
+ {-220942800 18000 0 SHET}
+ {370724400 21600 0 SHET}
+ {386445600 18000 0 SHET}
+ {386449200 21600 1 SHEST}
+ {402256800 18000 0 SHET}
+ {417985200 21600 1 SHEST}
+ {433792800 18000 0 SHET}
+ {449607600 21600 1 SHEST}
+ {465339600 18000 0 SHET}
+ {481064400 21600 1 SHEST}
+ {496789200 18000 0 SHET}
+ {512514000 21600 1 SHEST}
+ {528238800 18000 0 SHET}
+ {543963600 21600 1 SHEST}
+ {559688400 18000 0 SHET}
+ {575413200 21600 1 SHEST}
+ {591138000 18000 0 SHET}
+ {606862800 21600 1 SHEST}
+ {622587600 18000 0 SHET}
+ {638312400 21600 1 SHEST}
+ {654642000 18000 0 SHET}
+ {662670000 18000 0 SHET}
+ {692823600 18000 0 AQTT}
+ {701805600 21600 1 AQTST}
+ {717526800 18000 0 AQTT}
+ {733266000 21600 1 AQTST}
+ {748990800 18000 0 AQTT}
+ {764715600 21600 1 AQTST}
+ {780440400 18000 0 AQTT}
+ {796165200 14400 0 AQTT}
+ {796168800 18000 1 AQTST}
+ {811893600 14400 0 AQTT}
+ {828223200 18000 1 AQTST}
+ {846367200 14400 0 AQTT}
+ {859672800 18000 1 AQTST}
+ {877816800 14400 0 AQTT}
+ {891122400 18000 1 AQTST}
+ {909266400 14400 0 AQTT}
+ {922572000 18000 1 AQTST}
+ {941320800 14400 0 AQTT}
+ {954021600 18000 1 AQTST}
+ {972770400 14400 0 AQTT}
+ {985471200 18000 1 AQTST}
+ {1004220000 14400 0 AQTT}
+ {1017525600 18000 1 AQTST}
+ {1035669600 14400 0 AQTT}
+ {1048975200 18000 1 AQTST}
+ {1067119200 14400 0 AQTT}
+ {1080424800 18000 1 AQTST}
+ {1099173600 14400 0 AQTT}
+ {1110830400 18000 0 AQTT}
+}
diff --git a/library/tzdata/Asia/Aqtobe b/library/tzdata/Asia/Aqtobe
new file mode 100644
index 0000000..c857491
--- /dev/null
+++ b/library/tzdata/Asia/Aqtobe
@@ -0,0 +1,57 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Aqtobe) {
+ {-9223372036854775808 13720 0 LMT}
+ {-1441165720 14400 0 AKTT}
+ {-1247544000 18000 0 AKTT}
+ {354913200 21600 1 AKTST}
+ {370720800 21600 0 AKTT}
+ {386445600 18000 0 AKTT}
+ {386449200 21600 1 AKTST}
+ {402256800 18000 0 AKTT}
+ {417985200 21600 1 AKTST}
+ {433792800 18000 0 AKTT}
+ {449607600 21600 1 AKTST}
+ {465339600 18000 0 AKTT}
+ {481064400 21600 1 AKTST}
+ {496789200 18000 0 AKTT}
+ {512514000 21600 1 AKTST}
+ {528238800 18000 0 AKTT}
+ {543963600 21600 1 AKTST}
+ {559688400 18000 0 AKTT}
+ {575413200 21600 1 AKTST}
+ {591138000 18000 0 AKTT}
+ {606862800 21600 1 AKTST}
+ {622587600 18000 0 AKTT}
+ {638312400 21600 1 AKTST}
+ {654642000 18000 0 AKTT}
+ {662670000 18000 0 AKTT}
+ {692823600 18000 0 AQTT}
+ {701805600 21600 1 AQTST}
+ {717526800 18000 0 AQTT}
+ {733266000 21600 1 AQTST}
+ {748990800 18000 0 AQTT}
+ {764715600 21600 1 AQTST}
+ {780440400 18000 0 AQTT}
+ {796165200 21600 1 AQTST}
+ {811890000 18000 0 AQTT}
+ {828219600 21600 1 AQTST}
+ {846363600 18000 0 AQTT}
+ {859669200 21600 1 AQTST}
+ {877813200 18000 0 AQTT}
+ {891118800 21600 1 AQTST}
+ {909262800 18000 0 AQTT}
+ {922568400 21600 1 AQTST}
+ {941317200 18000 0 AQTT}
+ {954018000 21600 1 AQTST}
+ {972766800 18000 0 AQTT}
+ {985467600 21600 1 AQTST}
+ {1004216400 18000 0 AQTT}
+ {1017522000 21600 1 AQTST}
+ {1035666000 18000 0 AQTT}
+ {1048971600 21600 1 AQTST}
+ {1067115600 18000 0 AQTT}
+ {1080421200 21600 1 AQTST}
+ {1099170000 18000 0 AQTT}
+ {1110826800 18000 0 AQTT}
+}
diff --git a/library/tzdata/Asia/Ashgabat b/library/tzdata/Asia/Ashgabat
new file mode 100644
index 0000000..64bdb3a
--- /dev/null
+++ b/library/tzdata/Asia/Ashgabat
@@ -0,0 +1,31 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Ashgabat) {
+ {-9223372036854775808 14012 0 LMT}
+ {-1441166012 14400 0 ASHT}
+ {-1247544000 18000 0 ASHT}
+ {354913200 21600 1 ASHST}
+ {370720800 18000 0 ASHT}
+ {386449200 21600 1 ASHST}
+ {402256800 18000 0 ASHT}
+ {417985200 21600 1 ASHST}
+ {433792800 18000 0 ASHT}
+ {449607600 21600 1 ASHST}
+ {465339600 18000 0 ASHT}
+ {481064400 21600 1 ASHST}
+ {496789200 18000 0 ASHT}
+ {512514000 21600 1 ASHST}
+ {528238800 18000 0 ASHT}
+ {543963600 21600 1 ASHST}
+ {559688400 18000 0 ASHT}
+ {575413200 21600 1 ASHST}
+ {591138000 18000 0 ASHT}
+ {606862800 21600 1 ASHST}
+ {622587600 18000 0 ASHT}
+ {638312400 21600 1 ASHST}
+ {654642000 18000 0 ASHT}
+ {670366800 14400 0 ASHT}
+ {670370400 18000 1 ASHST}
+ {686095200 14400 0 ASHT}
+ {695772000 18000 0 TMT}
+}
diff --git a/library/tzdata/Asia/Ashkhabad b/library/tzdata/Asia/Ashkhabad
new file mode 100644
index 0000000..3000c94
--- /dev/null
+++ b/library/tzdata/Asia/Ashkhabad
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Ashgabat)]} {
+ LoadTimeZoneFile Asia/Ashgabat
+}
+set TZData(:Asia/Ashkhabad) $TZData(:Asia/Ashgabat)
diff --git a/library/tzdata/Asia/Baghdad b/library/tzdata/Asia/Baghdad
new file mode 100644
index 0000000..c1058cb
--- /dev/null
+++ b/library/tzdata/Asia/Baghdad
@@ -0,0 +1,59 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Baghdad) {
+ {-9223372036854775808 10660 0 LMT}
+ {-2524532260 10656 0 BMT}
+ {-1641005856 10800 0 AST}
+ {389048400 14400 0 ADT}
+ {402264000 10800 0 AST}
+ {417906000 14400 1 ADT}
+ {433800000 10800 0 AST}
+ {449614800 14400 1 ADT}
+ {465422400 10800 0 AST}
+ {481150800 14400 1 ADT}
+ {496792800 10800 0 AST}
+ {512517600 14400 1 ADT}
+ {528242400 10800 0 AST}
+ {543967200 14400 1 ADT}
+ {559692000 10800 0 AST}
+ {575416800 14400 1 ADT}
+ {591141600 10800 0 AST}
+ {606866400 14400 1 ADT}
+ {622591200 10800 0 AST}
+ {638316000 14400 1 ADT}
+ {654645600 10800 0 AST}
+ {670464000 14400 1 ADT}
+ {686275200 10800 0 AST}
+ {702086400 14400 1 ADT}
+ {717897600 10800 0 AST}
+ {733622400 14400 1 ADT}
+ {749433600 10800 0 AST}
+ {765158400 14400 1 ADT}
+ {780969600 10800 0 AST}
+ {796694400 14400 1 ADT}
+ {812505600 10800 0 AST}
+ {828316800 14400 1 ADT}
+ {844128000 10800 0 AST}
+ {859852800 14400 1 ADT}
+ {875664000 10800 0 AST}
+ {891388800 14400 1 ADT}
+ {907200000 10800 0 AST}
+ {922924800 14400 1 ADT}
+ {938736000 10800 0 AST}
+ {954547200 14400 1 ADT}
+ {970358400 10800 0 AST}
+ {986083200 14400 1 ADT}
+ {1001894400 10800 0 AST}
+ {1017619200 14400 1 ADT}
+ {1033430400 10800 0 AST}
+ {1049155200 14400 1 ADT}
+ {1064966400 10800 0 AST}
+ {1080777600 14400 1 ADT}
+ {1096588800 10800 0 AST}
+ {1112313600 14400 1 ADT}
+ {1128124800 10800 0 AST}
+ {1143849600 14400 1 ADT}
+ {1159660800 10800 0 AST}
+ {1175385600 14400 1 ADT}
+ {1191196800 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Bahrain b/library/tzdata/Asia/Bahrain
new file mode 100644
index 0000000..d4b7d2c
--- /dev/null
+++ b/library/tzdata/Asia/Bahrain
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Bahrain) {
+ {-9223372036854775808 12140 0 LMT}
+ {-1577935340 14400 0 GST}
+ {76190400 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Baku b/library/tzdata/Asia/Baku
new file mode 100644
index 0000000..e50071b
--- /dev/null
+++ b/library/tzdata/Asia/Baku
@@ -0,0 +1,242 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Baku) {
+ {-9223372036854775808 11964 0 LMT}
+ {-1441163964 10800 0 BAKT}
+ {-405140400 14400 0 BAKT}
+ {354916800 18000 1 BAKST}
+ {370724400 14400 0 BAKT}
+ {386452800 18000 1 BAKST}
+ {402260400 14400 0 BAKT}
+ {417988800 18000 1 BAKST}
+ {433796400 14400 0 BAKT}
+ {449611200 18000 1 BAKST}
+ {465343200 14400 0 BAKT}
+ {481068000 18000 1 BAKST}
+ {496792800 14400 0 BAKT}
+ {512517600 18000 1 BAKST}
+ {528242400 14400 0 BAKT}
+ {543967200 18000 1 BAKST}
+ {559692000 14400 0 BAKT}
+ {575416800 18000 1 BAKST}
+ {591141600 14400 0 BAKT}
+ {606866400 18000 1 BAKST}
+ {622591200 14400 0 BAKT}
+ {638316000 18000 1 BAKST}
+ {654645600 14400 0 BAKT}
+ {670370400 14400 1 BAKST}
+ {683496000 14400 0 AZST}
+ {686098800 10800 0 AZT}
+ {701812800 14400 1 AZST}
+ {717537600 14400 0 AZT}
+ {820440000 14400 0 AZT}
+ {828234000 18000 1 AZST}
+ {846378000 14400 0 AZT}
+ {852062400 14400 0 AZT}
+ {859680000 18000 1 AZST}
+ {877824000 14400 0 AZT}
+ {891129600 18000 1 AZST}
+ {909273600 14400 0 AZT}
+ {922579200 18000 1 AZST}
+ {941328000 14400 0 AZT}
+ {954028800 18000 1 AZST}
+ {972777600 14400 0 AZT}
+ {985478400 18000 1 AZST}
+ {1004227200 14400 0 AZT}
+ {1017532800 18000 1 AZST}
+ {1035676800 14400 0 AZT}
+ {1048982400 18000 1 AZST}
+ {1067126400 14400 0 AZT}
+ {1080432000 18000 1 AZST}
+ {1099180800 14400 0 AZT}
+ {1111881600 18000 1 AZST}
+ {1130630400 14400 0 AZT}
+ {1143331200 18000 1 AZST}
+ {1162080000 14400 0 AZT}
+ {1174780800 18000 1 AZST}
+ {1193529600 14400 0 AZT}
+ {1206835200 18000 1 AZST}
+ {1224979200 14400 0 AZT}
+ {1238284800 18000 1 AZST}
+ {1256428800 14400 0 AZT}
+ {1269734400 18000 1 AZST}
+ {1288483200 14400 0 AZT}
+ {1301184000 18000 1 AZST}
+ {1319932800 14400 0 AZT}
+ {1332633600 18000 1 AZST}
+ {1351382400 14400 0 AZT}
+ {1364688000 18000 1 AZST}
+ {1382832000 14400 0 AZT}
+ {1396137600 18000 1 AZST}
+ {1414281600 14400 0 AZT}
+ {1427587200 18000 1 AZST}
+ {1445731200 14400 0 AZT}
+ {1459036800 18000 1 AZST}
+ {1477785600 14400 0 AZT}
+ {1490486400 18000 1 AZST}
+ {1509235200 14400 0 AZT}
+ {1521936000 18000 1 AZST}
+ {1540684800 14400 0 AZT}
+ {1553990400 18000 1 AZST}
+ {1572134400 14400 0 AZT}
+ {1585440000 18000 1 AZST}
+ {1603584000 14400 0 AZT}
+ {1616889600 18000 1 AZST}
+ {1635638400 14400 0 AZT}
+ {1648339200 18000 1 AZST}
+ {1667088000 14400 0 AZT}
+ {1679788800 18000 1 AZST}
+ {1698537600 14400 0 AZT}
+ {1711843200 18000 1 AZST}
+ {1729987200 14400 0 AZT}
+ {1743292800 18000 1 AZST}
+ {1761436800 14400 0 AZT}
+ {1774742400 18000 1 AZST}
+ {1792886400 14400 0 AZT}
+ {1806192000 18000 1 AZST}
+ {1824940800 14400 0 AZT}
+ {1837641600 18000 1 AZST}
+ {1856390400 14400 0 AZT}
+ {1869091200 18000 1 AZST}
+ {1887840000 14400 0 AZT}
+ {1901145600 18000 1 AZST}
+ {1919289600 14400 0 AZT}
+ {1932595200 18000 1 AZST}
+ {1950739200 14400 0 AZT}
+ {1964044800 18000 1 AZST}
+ {1982793600 14400 0 AZT}
+ {1995494400 18000 1 AZST}
+ {2014243200 14400 0 AZT}
+ {2026944000 18000 1 AZST}
+ {2045692800 14400 0 AZT}
+ {2058393600 18000 1 AZST}
+ {2077142400 14400 0 AZT}
+ {2090448000 18000 1 AZST}
+ {2108592000 14400 0 AZT}
+ {2121897600 18000 1 AZST}
+ {2140041600 14400 0 AZT}
+ {2153347200 18000 1 AZST}
+ {2172096000 14400 0 AZT}
+ {2184796800 18000 1 AZST}
+ {2203545600 14400 0 AZT}
+ {2216246400 18000 1 AZST}
+ {2234995200 14400 0 AZT}
+ {2248300800 18000 1 AZST}
+ {2266444800 14400 0 AZT}
+ {2279750400 18000 1 AZST}
+ {2297894400 14400 0 AZT}
+ {2311200000 18000 1 AZST}
+ {2329344000 14400 0 AZT}
+ {2342649600 18000 1 AZST}
+ {2361398400 14400 0 AZT}
+ {2374099200 18000 1 AZST}
+ {2392848000 14400 0 AZT}
+ {2405548800 18000 1 AZST}
+ {2424297600 14400 0 AZT}
+ {2437603200 18000 1 AZST}
+ {2455747200 14400 0 AZT}
+ {2469052800 18000 1 AZST}
+ {2487196800 14400 0 AZT}
+ {2500502400 18000 1 AZST}
+ {2519251200 14400 0 AZT}
+ {2531952000 18000 1 AZST}
+ {2550700800 14400 0 AZT}
+ {2563401600 18000 1 AZST}
+ {2582150400 14400 0 AZT}
+ {2595456000 18000 1 AZST}
+ {2613600000 14400 0 AZT}
+ {2626905600 18000 1 AZST}
+ {2645049600 14400 0 AZT}
+ {2658355200 18000 1 AZST}
+ {2676499200 14400 0 AZT}
+ {2689804800 18000 1 AZST}
+ {2708553600 14400 0 AZT}
+ {2721254400 18000 1 AZST}
+ {2740003200 14400 0 AZT}
+ {2752704000 18000 1 AZST}
+ {2771452800 14400 0 AZT}
+ {2784758400 18000 1 AZST}
+ {2802902400 14400 0 AZT}
+ {2816208000 18000 1 AZST}
+ {2834352000 14400 0 AZT}
+ {2847657600 18000 1 AZST}
+ {2866406400 14400 0 AZT}
+ {2879107200 18000 1 AZST}
+ {2897856000 14400 0 AZT}
+ {2910556800 18000 1 AZST}
+ {2929305600 14400 0 AZT}
+ {2942006400 18000 1 AZST}
+ {2960755200 14400 0 AZT}
+ {2974060800 18000 1 AZST}
+ {2992204800 14400 0 AZT}
+ {3005510400 18000 1 AZST}
+ {3023654400 14400 0 AZT}
+ {3036960000 18000 1 AZST}
+ {3055708800 14400 0 AZT}
+ {3068409600 18000 1 AZST}
+ {3087158400 14400 0 AZT}
+ {3099859200 18000 1 AZST}
+ {3118608000 14400 0 AZT}
+ {3131913600 18000 1 AZST}
+ {3150057600 14400 0 AZT}
+ {3163363200 18000 1 AZST}
+ {3181507200 14400 0 AZT}
+ {3194812800 18000 1 AZST}
+ {3212956800 14400 0 AZT}
+ {3226262400 18000 1 AZST}
+ {3245011200 14400 0 AZT}
+ {3257712000 18000 1 AZST}
+ {3276460800 14400 0 AZT}
+ {3289161600 18000 1 AZST}
+ {3307910400 14400 0 AZT}
+ {3321216000 18000 1 AZST}
+ {3339360000 14400 0 AZT}
+ {3352665600 18000 1 AZST}
+ {3370809600 14400 0 AZT}
+ {3384115200 18000 1 AZST}
+ {3402864000 14400 0 AZT}
+ {3415564800 18000 1 AZST}
+ {3434313600 14400 0 AZT}
+ {3447014400 18000 1 AZST}
+ {3465763200 14400 0 AZT}
+ {3479068800 18000 1 AZST}
+ {3497212800 14400 0 AZT}
+ {3510518400 18000 1 AZST}
+ {3528662400 14400 0 AZT}
+ {3541968000 18000 1 AZST}
+ {3560112000 14400 0 AZT}
+ {3573417600 18000 1 AZST}
+ {3592166400 14400 0 AZT}
+ {3604867200 18000 1 AZST}
+ {3623616000 14400 0 AZT}
+ {3636316800 18000 1 AZST}
+ {3655065600 14400 0 AZT}
+ {3668371200 18000 1 AZST}
+ {3686515200 14400 0 AZT}
+ {3699820800 18000 1 AZST}
+ {3717964800 14400 0 AZT}
+ {3731270400 18000 1 AZST}
+ {3750019200 14400 0 AZT}
+ {3762720000 18000 1 AZST}
+ {3781468800 14400 0 AZT}
+ {3794169600 18000 1 AZST}
+ {3812918400 14400 0 AZT}
+ {3825619200 18000 1 AZST}
+ {3844368000 14400 0 AZT}
+ {3857673600 18000 1 AZST}
+ {3875817600 14400 0 AZT}
+ {3889123200 18000 1 AZST}
+ {3907267200 14400 0 AZT}
+ {3920572800 18000 1 AZST}
+ {3939321600 14400 0 AZT}
+ {3952022400 18000 1 AZST}
+ {3970771200 14400 0 AZT}
+ {3983472000 18000 1 AZST}
+ {4002220800 14400 0 AZT}
+ {4015526400 18000 1 AZST}
+ {4033670400 14400 0 AZT}
+ {4046976000 18000 1 AZST}
+ {4065120000 14400 0 AZT}
+ {4078425600 18000 1 AZST}
+ {4096569600 14400 0 AZT}
+}
diff --git a/library/tzdata/Asia/Bangkok b/library/tzdata/Asia/Bangkok
new file mode 100644
index 0000000..6df7680
--- /dev/null
+++ b/library/tzdata/Asia/Bangkok
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Bangkok) {
+ {-9223372036854775808 24124 0 LMT}
+ {-2840164924 24124 0 BMT}
+ {-1570084924 25200 0 ICT}
+}
diff --git a/library/tzdata/Asia/Beirut b/library/tzdata/Asia/Beirut
new file mode 100644
index 0000000..ac0a64e
--- /dev/null
+++ b/library/tzdata/Asia/Beirut
@@ -0,0 +1,270 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Beirut) {
+ {-9223372036854775808 8520 0 LMT}
+ {-2840149320 7200 0 EET}
+ {-1570413600 10800 1 EEST}
+ {-1552186800 7200 0 EET}
+ {-1538359200 10800 1 EEST}
+ {-1522551600 7200 0 EET}
+ {-1507514400 10800 1 EEST}
+ {-1490583600 7200 0 EET}
+ {-1473645600 10800 1 EEST}
+ {-1460948400 7200 0 EET}
+ {-399866400 10800 1 EEST}
+ {-386650800 7200 0 EET}
+ {-368330400 10800 1 EEST}
+ {-355114800 7200 0 EET}
+ {-336794400 10800 1 EEST}
+ {-323578800 7200 0 EET}
+ {-305172000 10800 1 EEST}
+ {-291956400 7200 0 EET}
+ {-273636000 10800 1 EEST}
+ {-260420400 7200 0 EET}
+ {78012000 10800 1 EEST}
+ {86734800 7200 0 EET}
+ {105055200 10800 1 EEST}
+ {118270800 7200 0 EET}
+ {136591200 10800 1 EEST}
+ {149806800 7200 0 EET}
+ {168127200 10800 1 EEST}
+ {181342800 7200 0 EET}
+ {199749600 10800 1 EEST}
+ {212965200 7200 0 EET}
+ {231285600 10800 1 EEST}
+ {244501200 7200 0 EET}
+ {262735200 10800 1 EEST}
+ {275950800 7200 0 EET}
+ {452210400 10800 1 EEST}
+ {466722000 7200 0 EET}
+ {483746400 10800 1 EEST}
+ {498258000 7200 0 EET}
+ {515282400 10800 1 EEST}
+ {529794000 7200 0 EET}
+ {546818400 10800 1 EEST}
+ {561330000 7200 0 EET}
+ {581119200 10800 1 EEST}
+ {592952400 7200 0 EET}
+ {610754400 10800 1 EEST}
+ {624488400 7200 0 EET}
+ {641512800 10800 1 EEST}
+ {656024400 7200 0 EET}
+ {673048800 10800 1 EEST}
+ {687560400 7200 0 EET}
+ {704671200 10800 1 EEST}
+ {718146000 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {796168800 10800 1 EEST}
+ {811890000 7200 0 EET}
+ {828223200 10800 1 EEST}
+ {843944400 7200 0 EET}
+ {859672800 10800 1 EEST}
+ {875394000 7200 0 EET}
+ {891122400 10800 1 EEST}
+ {906843600 7200 0 EET}
+ {922572000 10800 1 EEST}
+ {941317200 7200 0 EET}
+ {954021600 10800 1 EEST}
+ {972766800 7200 0 EET}
+ {985471200 10800 1 EEST}
+ {1004216400 7200 0 EET}
+ {1017525600 10800 1 EEST}
+ {1035666000 7200 0 EET}
+ {1048975200 10800 1 EEST}
+ {1067115600 7200 0 EET}
+ {1080424800 10800 1 EEST}
+ {1099170000 7200 0 EET}
+ {1111874400 10800 1 EEST}
+ {1130619600 7200 0 EET}
+ {1143324000 10800 1 EEST}
+ {1162069200 7200 0 EET}
+ {1174773600 10800 1 EEST}
+ {1193518800 7200 0 EET}
+ {1206828000 10800 1 EEST}
+ {1224968400 7200 0 EET}
+ {1238277600 10800 1 EEST}
+ {1256418000 7200 0 EET}
+ {1269727200 10800 1 EEST}
+ {1288472400 7200 0 EET}
+ {1301176800 10800 1 EEST}
+ {1319922000 7200 0 EET}
+ {1332626400 10800 1 EEST}
+ {1351371600 7200 0 EET}
+ {1364680800 10800 1 EEST}
+ {1382821200 7200 0 EET}
+ {1396130400 10800 1 EEST}
+ {1414270800 7200 0 EET}
+ {1427580000 10800 1 EEST}
+ {1445720400 7200 0 EET}
+ {1459029600 10800 1 EEST}
+ {1477774800 7200 0 EET}
+ {1490479200 10800 1 EEST}
+ {1509224400 7200 0 EET}
+ {1521928800 10800 1 EEST}
+ {1540674000 7200 0 EET}
+ {1553983200 10800 1 EEST}
+ {1572123600 7200 0 EET}
+ {1585432800 10800 1 EEST}
+ {1603573200 7200 0 EET}
+ {1616882400 10800 1 EEST}
+ {1635627600 7200 0 EET}
+ {1648332000 10800 1 EEST}
+ {1667077200 7200 0 EET}
+ {1679781600 10800 1 EEST}
+ {1698526800 7200 0 EET}
+ {1711836000 10800 1 EEST}
+ {1729976400 7200 0 EET}
+ {1743285600 10800 1 EEST}
+ {1761426000 7200 0 EET}
+ {1774735200 10800 1 EEST}
+ {1792875600 7200 0 EET}
+ {1806184800 10800 1 EEST}
+ {1824930000 7200 0 EET}
+ {1837634400 10800 1 EEST}
+ {1856379600 7200 0 EET}
+ {1869084000 10800 1 EEST}
+ {1887829200 7200 0 EET}
+ {1901138400 10800 1 EEST}
+ {1919278800 7200 0 EET}
+ {1932588000 10800 1 EEST}
+ {1950728400 7200 0 EET}
+ {1964037600 10800 1 EEST}
+ {1982782800 7200 0 EET}
+ {1995487200 10800 1 EEST}
+ {2014232400 7200 0 EET}
+ {2026936800 10800 1 EEST}
+ {2045682000 7200 0 EET}
+ {2058386400 10800 1 EEST}
+ {2077131600 7200 0 EET}
+ {2090440800 10800 1 EEST}
+ {2108581200 7200 0 EET}
+ {2121890400 10800 1 EEST}
+ {2140030800 7200 0 EET}
+ {2153340000 10800 1 EEST}
+ {2172085200 7200 0 EET}
+ {2184789600 10800 1 EEST}
+ {2203534800 7200 0 EET}
+ {2216239200 10800 1 EEST}
+ {2234984400 7200 0 EET}
+ {2248293600 10800 1 EEST}
+ {2266434000 7200 0 EET}
+ {2279743200 10800 1 EEST}
+ {2297883600 7200 0 EET}
+ {2311192800 10800 1 EEST}
+ {2329333200 7200 0 EET}
+ {2342642400 10800 1 EEST}
+ {2361387600 7200 0 EET}
+ {2374092000 10800 1 EEST}
+ {2392837200 7200 0 EET}
+ {2405541600 10800 1 EEST}
+ {2424286800 7200 0 EET}
+ {2437596000 10800 1 EEST}
+ {2455736400 7200 0 EET}
+ {2469045600 10800 1 EEST}
+ {2487186000 7200 0 EET}
+ {2500495200 10800 1 EEST}
+ {2519240400 7200 0 EET}
+ {2531944800 10800 1 EEST}
+ {2550690000 7200 0 EET}
+ {2563394400 10800 1 EEST}
+ {2582139600 7200 0 EET}
+ {2595448800 10800 1 EEST}
+ {2613589200 7200 0 EET}
+ {2626898400 10800 1 EEST}
+ {2645038800 7200 0 EET}
+ {2658348000 10800 1 EEST}
+ {2676488400 7200 0 EET}
+ {2689797600 10800 1 EEST}
+ {2708542800 7200 0 EET}
+ {2721247200 10800 1 EEST}
+ {2739992400 7200 0 EET}
+ {2752696800 10800 1 EEST}
+ {2771442000 7200 0 EET}
+ {2784751200 10800 1 EEST}
+ {2802891600 7200 0 EET}
+ {2816200800 10800 1 EEST}
+ {2834341200 7200 0 EET}
+ {2847650400 10800 1 EEST}
+ {2866395600 7200 0 EET}
+ {2879100000 10800 1 EEST}
+ {2897845200 7200 0 EET}
+ {2910549600 10800 1 EEST}
+ {2929294800 7200 0 EET}
+ {2941999200 10800 1 EEST}
+ {2960744400 7200 0 EET}
+ {2974053600 10800 1 EEST}
+ {2992194000 7200 0 EET}
+ {3005503200 10800 1 EEST}
+ {3023643600 7200 0 EET}
+ {3036952800 10800 1 EEST}
+ {3055698000 7200 0 EET}
+ {3068402400 10800 1 EEST}
+ {3087147600 7200 0 EET}
+ {3099852000 10800 1 EEST}
+ {3118597200 7200 0 EET}
+ {3131906400 10800 1 EEST}
+ {3150046800 7200 0 EET}
+ {3163356000 10800 1 EEST}
+ {3181496400 7200 0 EET}
+ {3194805600 10800 1 EEST}
+ {3212946000 7200 0 EET}
+ {3226255200 10800 1 EEST}
+ {3245000400 7200 0 EET}
+ {3257704800 10800 1 EEST}
+ {3276450000 7200 0 EET}
+ {3289154400 10800 1 EEST}
+ {3307899600 7200 0 EET}
+ {3321208800 10800 1 EEST}
+ {3339349200 7200 0 EET}
+ {3352658400 10800 1 EEST}
+ {3370798800 7200 0 EET}
+ {3384108000 10800 1 EEST}
+ {3402853200 7200 0 EET}
+ {3415557600 10800 1 EEST}
+ {3434302800 7200 0 EET}
+ {3447007200 10800 1 EEST}
+ {3465752400 7200 0 EET}
+ {3479061600 10800 1 EEST}
+ {3497202000 7200 0 EET}
+ {3510511200 10800 1 EEST}
+ {3528651600 7200 0 EET}
+ {3541960800 10800 1 EEST}
+ {3560101200 7200 0 EET}
+ {3573410400 10800 1 EEST}
+ {3592155600 7200 0 EET}
+ {3604860000 10800 1 EEST}
+ {3623605200 7200 0 EET}
+ {3636309600 10800 1 EEST}
+ {3655054800 7200 0 EET}
+ {3668364000 10800 1 EEST}
+ {3686504400 7200 0 EET}
+ {3699813600 10800 1 EEST}
+ {3717954000 7200 0 EET}
+ {3731263200 10800 1 EEST}
+ {3750008400 7200 0 EET}
+ {3762712800 10800 1 EEST}
+ {3781458000 7200 0 EET}
+ {3794162400 10800 1 EEST}
+ {3812907600 7200 0 EET}
+ {3825612000 10800 1 EEST}
+ {3844357200 7200 0 EET}
+ {3857666400 10800 1 EEST}
+ {3875806800 7200 0 EET}
+ {3889116000 10800 1 EEST}
+ {3907256400 7200 0 EET}
+ {3920565600 10800 1 EEST}
+ {3939310800 7200 0 EET}
+ {3952015200 10800 1 EEST}
+ {3970760400 7200 0 EET}
+ {3983464800 10800 1 EEST}
+ {4002210000 7200 0 EET}
+ {4015519200 10800 1 EEST}
+ {4033659600 7200 0 EET}
+ {4046968800 10800 1 EEST}
+ {4065109200 7200 0 EET}
+ {4078418400 10800 1 EEST}
+ {4096558800 7200 0 EET}
+}
diff --git a/library/tzdata/Asia/Bishkek b/library/tzdata/Asia/Bishkek
new file mode 100644
index 0000000..6ba3896
--- /dev/null
+++ b/library/tzdata/Asia/Bishkek
@@ -0,0 +1,57 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Bishkek) {
+ {-9223372036854775808 17904 0 LMT}
+ {-1441169904 18000 0 FRUT}
+ {-1247547600 21600 0 FRUT}
+ {354909600 25200 1 FRUST}
+ {370717200 21600 0 FRUT}
+ {386445600 25200 1 FRUST}
+ {402253200 21600 0 FRUT}
+ {417981600 25200 1 FRUST}
+ {433789200 21600 0 FRUT}
+ {449604000 25200 1 FRUST}
+ {465336000 21600 0 FRUT}
+ {481060800 25200 1 FRUST}
+ {496785600 21600 0 FRUT}
+ {512510400 25200 1 FRUST}
+ {528235200 21600 0 FRUT}
+ {543960000 25200 1 FRUST}
+ {559684800 21600 0 FRUT}
+ {575409600 25200 1 FRUST}
+ {591134400 21600 0 FRUT}
+ {606859200 25200 1 FRUST}
+ {622584000 21600 0 FRUT}
+ {638308800 25200 1 FRUST}
+ {654638400 21600 0 FRUT}
+ {670363200 21600 1 FRUST}
+ {683582400 21600 0 KGT}
+ {703018800 21600 1 KGST}
+ {717530400 18000 0 KGT}
+ {734468400 21600 1 KGST}
+ {748980000 18000 0 KGT}
+ {765918000 21600 1 KGST}
+ {780429600 18000 0 KGT}
+ {797367600 21600 1 KGST}
+ {811879200 18000 0 KGT}
+ {828817200 21600 1 KGST}
+ {843933600 18000 0 KGT}
+ {859671000 21600 1 KGST}
+ {877811400 18000 0 KGT}
+ {891120600 21600 1 KGST}
+ {909261000 18000 0 KGT}
+ {922570200 21600 1 KGST}
+ {941315400 18000 0 KGT}
+ {954019800 21600 1 KGST}
+ {972765000 18000 0 KGT}
+ {985469400 21600 1 KGST}
+ {1004214600 18000 0 KGT}
+ {1017523800 21600 1 KGST}
+ {1035664200 18000 0 KGT}
+ {1048973400 21600 1 KGST}
+ {1067113800 18000 0 KGT}
+ {1080423000 21600 1 KGST}
+ {1099168200 18000 0 KGT}
+ {1111872600 21600 1 KGST}
+ {1123783200 21600 0 KGT}
+}
diff --git a/library/tzdata/Asia/Brunei b/library/tzdata/Asia/Brunei
new file mode 100644
index 0000000..63d380b
--- /dev/null
+++ b/library/tzdata/Asia/Brunei
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Brunei) {
+ {-9223372036854775808 27580 0 LMT}
+ {-1383464380 27000 0 BNT}
+ {-1167636600 28800 0 BNT}
+}
diff --git a/library/tzdata/Asia/Calcutta b/library/tzdata/Asia/Calcutta
new file mode 100644
index 0000000..7243ef8
--- /dev/null
+++ b/library/tzdata/Asia/Calcutta
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Kolkata)]} {
+ LoadTimeZoneFile Asia/Kolkata
+}
+set TZData(:Asia/Calcutta) $TZData(:Asia/Kolkata)
diff --git a/library/tzdata/Asia/Choibalsan b/library/tzdata/Asia/Choibalsan
new file mode 100644
index 0000000..3d42617
--- /dev/null
+++ b/library/tzdata/Asia/Choibalsan
@@ -0,0 +1,51 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Choibalsan) {
+ {-9223372036854775808 27480 0 LMT}
+ {-2032933080 25200 0 ULAT}
+ {252435600 28800 0 ULAT}
+ {417974400 36000 0 CHOST}
+ {433778400 32400 0 CHOT}
+ {449593200 36000 1 CHOST}
+ {465314400 32400 0 CHOT}
+ {481042800 36000 1 CHOST}
+ {496764000 32400 0 CHOT}
+ {512492400 36000 1 CHOST}
+ {528213600 32400 0 CHOT}
+ {543942000 36000 1 CHOST}
+ {559663200 32400 0 CHOT}
+ {575391600 36000 1 CHOST}
+ {591112800 32400 0 CHOT}
+ {606841200 36000 1 CHOST}
+ {622562400 32400 0 CHOT}
+ {638290800 36000 1 CHOST}
+ {654616800 32400 0 CHOT}
+ {670345200 36000 1 CHOST}
+ {686066400 32400 0 CHOT}
+ {701794800 36000 1 CHOST}
+ {717516000 32400 0 CHOT}
+ {733244400 36000 1 CHOST}
+ {748965600 32400 0 CHOT}
+ {764694000 36000 1 CHOST}
+ {780415200 32400 0 CHOT}
+ {796143600 36000 1 CHOST}
+ {811864800 32400 0 CHOT}
+ {828198000 36000 1 CHOST}
+ {843919200 32400 0 CHOT}
+ {859647600 36000 1 CHOST}
+ {875368800 32400 0 CHOT}
+ {891097200 36000 1 CHOST}
+ {906818400 32400 0 CHOT}
+ {988390800 36000 1 CHOST}
+ {1001692800 32400 0 CHOT}
+ {1017421200 36000 1 CHOST}
+ {1033142400 32400 0 CHOT}
+ {1048870800 36000 1 CHOST}
+ {1064592000 32400 0 CHOT}
+ {1080320400 36000 1 CHOST}
+ {1096041600 32400 0 CHOT}
+ {1111770000 36000 1 CHOST}
+ {1127491200 32400 0 CHOT}
+ {1143219600 36000 1 CHOST}
+ {1159545600 32400 0 CHOT}
+}
diff --git a/library/tzdata/Asia/Chongqing b/library/tzdata/Asia/Chongqing
new file mode 100644
index 0000000..eff3536
--- /dev/null
+++ b/library/tzdata/Asia/Chongqing
@@ -0,0 +1,19 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Chongqing) {
+ {-9223372036854775808 25580 0 LMT}
+ {-1325487980 25200 0 LONT}
+ {325962000 28800 0 CST}
+ {515520000 32400 1 CDT}
+ {527007600 28800 0 CST}
+ {545155200 32400 1 CDT}
+ {558457200 28800 0 CST}
+ {576604800 32400 1 CDT}
+ {589906800 28800 0 CST}
+ {608659200 32400 1 CDT}
+ {621961200 28800 0 CST}
+ {640108800 32400 1 CDT}
+ {653410800 28800 0 CST}
+ {671558400 32400 1 CDT}
+ {684860400 28800 0 CST}
+}
diff --git a/library/tzdata/Asia/Chungking b/library/tzdata/Asia/Chungking
new file mode 100644
index 0000000..f10d8a1
--- /dev/null
+++ b/library/tzdata/Asia/Chungking
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Chongqing)]} {
+ LoadTimeZoneFile Asia/Chongqing
+}
+set TZData(:Asia/Chungking) $TZData(:Asia/Chongqing)
diff --git a/library/tzdata/Asia/Colombo b/library/tzdata/Asia/Colombo
new file mode 100644
index 0000000..ca7bffc
--- /dev/null
+++ b/library/tzdata/Asia/Colombo
@@ -0,0 +1,13 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Colombo) {
+ {-9223372036854775808 19164 0 LMT}
+ {-2840159964 19172 0 MMT}
+ {-2019705572 19800 0 IST}
+ {-883287000 21600 1 IHST}
+ {-862639200 23400 1 IST}
+ {-764051400 19800 0 IST}
+ {832962600 23400 0 LKT}
+ {846266400 21600 0 LKT}
+ {1145039400 19800 0 IST}
+}
diff --git a/library/tzdata/Asia/Dacca b/library/tzdata/Asia/Dacca
new file mode 100644
index 0000000..b91d7fa
--- /dev/null
+++ b/library/tzdata/Asia/Dacca
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Dhaka)]} {
+ LoadTimeZoneFile Asia/Dhaka
+}
+set TZData(:Asia/Dacca) $TZData(:Asia/Dhaka)
diff --git a/library/tzdata/Asia/Damascus b/library/tzdata/Asia/Damascus
new file mode 100644
index 0000000..fafef49
--- /dev/null
+++ b/library/tzdata/Asia/Damascus
@@ -0,0 +1,280 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Damascus) {
+ {-9223372036854775808 8712 0 LMT}
+ {-1577931912 7200 0 EET}
+ {-1568592000 10800 1 EEST}
+ {-1554080400 7200 0 EET}
+ {-1537142400 10800 1 EEST}
+ {-1522630800 7200 0 EET}
+ {-1505692800 10800 1 EEST}
+ {-1491181200 7200 0 EET}
+ {-1474243200 10800 1 EEST}
+ {-1459126800 7200 0 EET}
+ {-242265600 10800 1 EEST}
+ {-228877200 7200 0 EET}
+ {-210556800 10800 1 EEST}
+ {-197427600 7200 0 EET}
+ {-178934400 10800 1 EEST}
+ {-165718800 7200 0 EET}
+ {-147398400 10800 1 EEST}
+ {-134269200 7200 0 EET}
+ {-116467200 10800 1 EEST}
+ {-102646800 7200 0 EET}
+ {-84326400 10800 1 EEST}
+ {-71110800 7200 0 EET}
+ {-52704000 10800 1 EEST}
+ {-39488400 7200 0 EET}
+ {-21168000 10800 1 EEST}
+ {-7952400 7200 0 EET}
+ {10368000 10800 1 EEST}
+ {23583600 7200 0 EET}
+ {41904000 10800 1 EEST}
+ {55119600 7200 0 EET}
+ {73526400 10800 1 EEST}
+ {86742000 7200 0 EET}
+ {105062400 10800 1 EEST}
+ {118278000 7200 0 EET}
+ {136598400 10800 1 EEST}
+ {149814000 7200 0 EET}
+ {168134400 10800 1 EEST}
+ {181350000 7200 0 EET}
+ {199756800 10800 1 EEST}
+ {212972400 7200 0 EET}
+ {231292800 10800 1 EEST}
+ {241916400 7200 0 EET}
+ {262828800 10800 1 EEST}
+ {273452400 7200 0 EET}
+ {418694400 10800 1 EEST}
+ {433810800 7200 0 EET}
+ {450316800 10800 1 EEST}
+ {465433200 7200 0 EET}
+ {508896000 10800 1 EEST}
+ {529196400 7200 0 EET}
+ {541555200 10800 1 EEST}
+ {562633200 7200 0 EET}
+ {574387200 10800 1 EEST}
+ {594255600 7200 0 EET}
+ {607305600 10800 1 EEST}
+ {623199600 7200 0 EET}
+ {638928000 10800 1 EEST}
+ {654649200 7200 0 EET}
+ {670456800 10800 1 EEST}
+ {686264400 7200 0 EET}
+ {702684000 10800 1 EEST}
+ {717886800 7200 0 EET}
+ {733096800 10800 1 EEST}
+ {748904400 7200 0 EET}
+ {765151200 10800 1 EEST}
+ {780958800 7200 0 EET}
+ {796687200 10800 1 EEST}
+ {812494800 7200 0 EET}
+ {828309600 10800 1 EEST}
+ {844117200 7200 0 EET}
+ {859759200 10800 1 EEST}
+ {875653200 7200 0 EET}
+ {891208800 10800 1 EEST}
+ {907189200 7200 0 EET}
+ {922917600 10800 1 EEST}
+ {938725200 7200 0 EET}
+ {954540000 10800 1 EEST}
+ {970347600 7200 0 EET}
+ {986076000 10800 1 EEST}
+ {1001883600 7200 0 EET}
+ {1017612000 10800 1 EEST}
+ {1033419600 7200 0 EET}
+ {1049148000 10800 1 EEST}
+ {1064955600 7200 0 EET}
+ {1080770400 10800 1 EEST}
+ {1096578000 7200 0 EET}
+ {1112306400 10800 1 EEST}
+ {1128114000 7200 0 EET}
+ {1143842400 10800 1 EEST}
+ {1158872400 7200 0 EET}
+ {1175205600 10800 1 EEST}
+ {1193950800 7200 0 EET}
+ {1207260000 10800 1 EEST}
+ {1225486800 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1256850000 7200 0 EET}
+ {1270159200 10800 1 EEST}
+ {1288299600 7200 0 EET}
+ {1301608800 10800 1 EEST}
+ {1319749200 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1351198800 7200 0 EET}
+ {1364508000 10800 1 EEST}
+ {1382648400 7200 0 EET}
+ {1395957600 10800 1 EEST}
+ {1414702800 7200 0 EET}
+ {1427407200 10800 1 EEST}
+ {1446152400 7200 0 EET}
+ {1458856800 10800 1 EEST}
+ {1477602000 7200 0 EET}
+ {1490911200 10800 1 EEST}
+ {1509051600 7200 0 EET}
+ {1522360800 10800 1 EEST}
+ {1540501200 7200 0 EET}
+ {1553810400 10800 1 EEST}
+ {1571950800 7200 0 EET}
+ {1585260000 10800 1 EEST}
+ {1604005200 7200 0 EET}
+ {1616709600 10800 1 EEST}
+ {1635454800 7200 0 EET}
+ {1648159200 10800 1 EEST}
+ {1666904400 7200 0 EET}
+ {1680213600 10800 1 EEST}
+ {1698354000 7200 0 EET}
+ {1711663200 10800 1 EEST}
+ {1729803600 7200 0 EET}
+ {1743112800 10800 1 EEST}
+ {1761858000 7200 0 EET}
+ {1774562400 10800 1 EEST}
+ {1793307600 7200 0 EET}
+ {1806012000 10800 1 EEST}
+ {1824757200 7200 0 EET}
+ {1838066400 10800 1 EEST}
+ {1856206800 7200 0 EET}
+ {1869516000 10800 1 EEST}
+ {1887656400 7200 0 EET}
+ {1900965600 10800 1 EEST}
+ {1919106000 7200 0 EET}
+ {1932415200 10800 1 EEST}
+ {1951160400 7200 0 EET}
+ {1963864800 10800 1 EEST}
+ {1982610000 7200 0 EET}
+ {1995314400 10800 1 EEST}
+ {2014059600 7200 0 EET}
+ {2027368800 10800 1 EEST}
+ {2045509200 7200 0 EET}
+ {2058818400 10800 1 EEST}
+ {2076958800 7200 0 EET}
+ {2090268000 10800 1 EEST}
+ {2109013200 7200 0 EET}
+ {2121717600 10800 1 EEST}
+ {2140462800 7200 0 EET}
+ {2153167200 10800 1 EEST}
+ {2171912400 7200 0 EET}
+ {2184616800 10800 1 EEST}
+ {2203362000 7200 0 EET}
+ {2216671200 10800 1 EEST}
+ {2234811600 7200 0 EET}
+ {2248120800 10800 1 EEST}
+ {2266261200 7200 0 EET}
+ {2279570400 10800 1 EEST}
+ {2298315600 7200 0 EET}
+ {2311020000 10800 1 EEST}
+ {2329765200 7200 0 EET}
+ {2342469600 10800 1 EEST}
+ {2361214800 7200 0 EET}
+ {2374524000 10800 1 EEST}
+ {2392664400 7200 0 EET}
+ {2405973600 10800 1 EEST}
+ {2424114000 7200 0 EET}
+ {2437423200 10800 1 EEST}
+ {2455563600 7200 0 EET}
+ {2468872800 10800 1 EEST}
+ {2487618000 7200 0 EET}
+ {2500322400 10800 1 EEST}
+ {2519067600 7200 0 EET}
+ {2531772000 10800 1 EEST}
+ {2550517200 7200 0 EET}
+ {2563826400 10800 1 EEST}
+ {2581966800 7200 0 EET}
+ {2595276000 10800 1 EEST}
+ {2613416400 7200 0 EET}
+ {2626725600 10800 1 EEST}
+ {2645470800 7200 0 EET}
+ {2658175200 10800 1 EEST}
+ {2676920400 7200 0 EET}
+ {2689624800 10800 1 EEST}
+ {2708370000 7200 0 EET}
+ {2721679200 10800 1 EEST}
+ {2739819600 7200 0 EET}
+ {2753128800 10800 1 EEST}
+ {2771269200 7200 0 EET}
+ {2784578400 10800 1 EEST}
+ {2802718800 7200 0 EET}
+ {2816028000 10800 1 EEST}
+ {2834773200 7200 0 EET}
+ {2847477600 10800 1 EEST}
+ {2866222800 7200 0 EET}
+ {2878927200 10800 1 EEST}
+ {2897672400 7200 0 EET}
+ {2910981600 10800 1 EEST}
+ {2929122000 7200 0 EET}
+ {2942431200 10800 1 EEST}
+ {2960571600 7200 0 EET}
+ {2973880800 10800 1 EEST}
+ {2992626000 7200 0 EET}
+ {3005330400 10800 1 EEST}
+ {3024075600 7200 0 EET}
+ {3036780000 10800 1 EEST}
+ {3055525200 7200 0 EET}
+ {3068229600 10800 1 EEST}
+ {3086974800 7200 0 EET}
+ {3100284000 10800 1 EEST}
+ {3118424400 7200 0 EET}
+ {3131733600 10800 1 EEST}
+ {3149874000 7200 0 EET}
+ {3163183200 10800 1 EEST}
+ {3181928400 7200 0 EET}
+ {3194632800 10800 1 EEST}
+ {3213378000 7200 0 EET}
+ {3226082400 10800 1 EEST}
+ {3244827600 7200 0 EET}
+ {3258136800 10800 1 EEST}
+ {3276277200 7200 0 EET}
+ {3289586400 10800 1 EEST}
+ {3307726800 7200 0 EET}
+ {3321036000 10800 1 EEST}
+ {3339176400 7200 0 EET}
+ {3352485600 10800 1 EEST}
+ {3371230800 7200 0 EET}
+ {3383935200 10800 1 EEST}
+ {3402680400 7200 0 EET}
+ {3415384800 10800 1 EEST}
+ {3434130000 7200 0 EET}
+ {3447439200 10800 1 EEST}
+ {3465579600 7200 0 EET}
+ {3478888800 10800 1 EEST}
+ {3497029200 7200 0 EET}
+ {3510338400 10800 1 EEST}
+ {3529083600 7200 0 EET}
+ {3541788000 10800 1 EEST}
+ {3560533200 7200 0 EET}
+ {3573237600 10800 1 EEST}
+ {3591982800 7200 0 EET}
+ {3605292000 10800 1 EEST}
+ {3623432400 7200 0 EET}
+ {3636741600 10800 1 EEST}
+ {3654882000 7200 0 EET}
+ {3668191200 10800 1 EEST}
+ {3686331600 7200 0 EET}
+ {3699640800 10800 1 EEST}
+ {3718386000 7200 0 EET}
+ {3731090400 10800 1 EEST}
+ {3749835600 7200 0 EET}
+ {3762540000 10800 1 EEST}
+ {3781285200 7200 0 EET}
+ {3794594400 10800 1 EEST}
+ {3812734800 7200 0 EET}
+ {3826044000 10800 1 EEST}
+ {3844184400 7200 0 EET}
+ {3857493600 10800 1 EEST}
+ {3876238800 7200 0 EET}
+ {3888943200 10800 1 EEST}
+ {3907688400 7200 0 EET}
+ {3920392800 10800 1 EEST}
+ {3939138000 7200 0 EET}
+ {3951842400 10800 1 EEST}
+ {3970587600 7200 0 EET}
+ {3983896800 10800 1 EEST}
+ {4002037200 7200 0 EET}
+ {4015346400 10800 1 EEST}
+ {4033486800 7200 0 EET}
+ {4046796000 10800 1 EEST}
+ {4065541200 7200 0 EET}
+ {4078245600 10800 1 EEST}
+ {4096990800 7200 0 EET}
+}
diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka
new file mode 100644
index 0000000..e0c270d
--- /dev/null
+++ b/library/tzdata/Asia/Dhaka
@@ -0,0 +1,14 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Dhaka) {
+ {-9223372036854775808 21700 0 LMT}
+ {-2524543300 21200 0 HMT}
+ {-891582800 23400 0 BURT}
+ {-872058600 19800 0 IST}
+ {-862637400 23400 0 BURT}
+ {-576138600 21600 0 DACT}
+ {38772000 21600 0 BDT}
+ {1230746400 21600 0 BDT}
+ {1245430800 25200 1 BDST}
+ {1262278740 21600 0 BDT}
+}
diff --git a/library/tzdata/Asia/Dili b/library/tzdata/Asia/Dili
new file mode 100644
index 0000000..f783557
--- /dev/null
+++ b/library/tzdata/Asia/Dili
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Dili) {
+ {-9223372036854775808 30140 0 LMT}
+ {-1830414140 28800 0 TLT}
+ {-879152400 32400 0 JST}
+ {-766054800 32400 0 TLT}
+ {199897200 28800 0 WITA}
+ {969120000 32400 0 TLT}
+}
diff --git a/library/tzdata/Asia/Dubai b/library/tzdata/Asia/Dubai
new file mode 100644
index 0000000..b8730e5
--- /dev/null
+++ b/library/tzdata/Asia/Dubai
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Dubai) {
+ {-9223372036854775808 13272 0 LMT}
+ {-1577936472 14400 0 GST}
+}
diff --git a/library/tzdata/Asia/Dushanbe b/library/tzdata/Asia/Dushanbe
new file mode 100644
index 0000000..59f8cb6
--- /dev/null
+++ b/library/tzdata/Asia/Dushanbe
@@ -0,0 +1,29 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Dushanbe) {
+ {-9223372036854775808 16512 0 LMT}
+ {-1441168512 18000 0 DUST}
+ {-1247547600 21600 0 DUST}
+ {354909600 25200 1 DUSST}
+ {370717200 21600 0 DUST}
+ {386445600 25200 1 DUSST}
+ {402253200 21600 0 DUST}
+ {417981600 25200 1 DUSST}
+ {433789200 21600 0 DUST}
+ {449604000 25200 1 DUSST}
+ {465336000 21600 0 DUST}
+ {481060800 25200 1 DUSST}
+ {496785600 21600 0 DUST}
+ {512510400 25200 1 DUSST}
+ {528235200 21600 0 DUST}
+ {543960000 25200 1 DUSST}
+ {559684800 21600 0 DUST}
+ {575409600 25200 1 DUSST}
+ {591134400 21600 0 DUST}
+ {606859200 25200 1 DUSST}
+ {622584000 21600 0 DUST}
+ {638308800 25200 1 DUSST}
+ {654638400 21600 0 DUST}
+ {670363200 21600 1 DUSST}
+ {684363600 18000 0 TJT}
+}
diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza
new file mode 100644
index 0000000..7d62a96
--- /dev/null
+++ b/library/tzdata/Asia/Gaza
@@ -0,0 +1,278 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Gaza) {
+ {-9223372036854775808 8272 0 LMT}
+ {-2185409872 7200 0 EET}
+ {-933645600 10800 1 EET}
+ {-857358000 7200 0 EET}
+ {-844300800 10800 1 EET}
+ {-825822000 7200 0 EET}
+ {-812685600 10800 1 EET}
+ {-794199600 7200 0 EET}
+ {-779853600 10800 1 EET}
+ {-762656400 7200 0 EET}
+ {-748310400 10800 1 EET}
+ {-731127600 7200 0 EET}
+ {-682653600 7200 0 EET}
+ {-399088800 10800 1 EEST}
+ {-386650800 7200 0 EET}
+ {-368330400 10800 1 EEST}
+ {-355114800 7200 0 EET}
+ {-336790800 10800 1 EEST}
+ {-323654400 7200 0 EET}
+ {-305168400 10800 1 EEST}
+ {-292032000 7200 0 EET}
+ {-273632400 10800 1 EEST}
+ {-260496000 7200 0 EET}
+ {-242096400 10800 1 EEST}
+ {-228960000 7200 0 EET}
+ {-210560400 10800 1 EEST}
+ {-197424000 7200 0 EET}
+ {-178938000 10800 1 EEST}
+ {-165801600 7200 0 EET}
+ {-147402000 10800 1 EEST}
+ {-134265600 7200 0 EET}
+ {-115866000 10800 1 EEST}
+ {-102643200 7200 0 EET}
+ {-84330000 10800 1 EEST}
+ {-81313200 10800 0 IST}
+ {142376400 10800 1 IDT}
+ {150843600 7200 0 IST}
+ {167176800 10800 1 IDT}
+ {178664400 7200 0 IST}
+ {482277600 10800 1 IDT}
+ {495579600 7200 0 IST}
+ {516751200 10800 1 IDT}
+ {526424400 7200 0 IST}
+ {545436000 10800 1 IDT}
+ {558478800 7200 0 IST}
+ {576540000 10800 1 IDT}
+ {589237200 7200 0 IST}
+ {609890400 10800 1 IDT}
+ {620773200 7200 0 IST}
+ {638316000 10800 1 IDT}
+ {651618000 7200 0 IST}
+ {669765600 10800 1 IDT}
+ {683672400 7200 0 IST}
+ {701820000 10800 1 IDT}
+ {715726800 7200 0 IST}
+ {733701600 10800 1 IDT}
+ {747176400 7200 0 IST}
+ {765151200 10800 1 IDT}
+ {778021200 7200 0 IST}
+ {796600800 10800 1 IDT}
+ {810075600 7200 0 IST}
+ {820447200 7200 0 EET}
+ {828655200 10800 1 EEST}
+ {843170400 7200 0 EET}
+ {860104800 10800 1 EEST}
+ {874620000 7200 0 EET}
+ {891554400 10800 1 EEST}
+ {906069600 7200 0 EET}
+ {915141600 7200 0 EET}
+ {924213600 10800 1 EEST}
+ {939934800 7200 0 EET}
+ {956268000 10800 1 EEST}
+ {971989200 7200 0 EET}
+ {987717600 10800 1 EEST}
+ {1003438800 7200 0 EET}
+ {1019167200 10800 1 EEST}
+ {1034888400 7200 0 EET}
+ {1050616800 10800 1 EEST}
+ {1066338000 7200 0 EET}
+ {1082066400 10800 1 EEST}
+ {1096581600 7200 0 EET}
+ {1113516000 10800 1 EEST}
+ {1128380400 7200 0 EET}
+ {1143842400 10800 1 EEST}
+ {1158872400 7200 0 EET}
+ {1175378400 10800 1 EEST}
+ {1189638000 7200 0 EET}
+ {1206655200 10800 1 EEST}
+ {1219960800 7200 0 EET}
+ {1220220000 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1252015200 7200 0 EET}
+ {1262296800 7200 0 EET}
+ {1269640860 10800 0 EEST}
+ {1281474000 7200 0 EET}
+ {1301608860 10800 1 EEST}
+ {1312149600 7200 0 EET}
+ {1325368800 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1348178400 7200 0 EET}
+ {1364508000 10800 1 EEST}
+ {1380229200 7200 0 EET}
+ {1395957600 10800 1 EEST}
+ {1411678800 7200 0 EET}
+ {1427407200 10800 1 EEST}
+ {1443128400 7200 0 EET}
+ {1459461600 10800 1 EEST}
+ {1474578000 7200 0 EET}
+ {1490911200 10800 1 EEST}
+ {1506027600 7200 0 EET}
+ {1522360800 10800 1 EEST}
+ {1537477200 7200 0 EET}
+ {1553810400 10800 1 EEST}
+ {1569531600 7200 0 EET}
+ {1585260000 10800 1 EEST}
+ {1600981200 7200 0 EET}
+ {1616709600 10800 1 EEST}
+ {1632430800 7200 0 EET}
+ {1648764000 10800 1 EEST}
+ {1663880400 7200 0 EET}
+ {1680213600 10800 1 EEST}
+ {1695330000 7200 0 EET}
+ {1711663200 10800 1 EEST}
+ {1727384400 7200 0 EET}
+ {1743112800 10800 1 EEST}
+ {1758834000 7200 0 EET}
+ {1774562400 10800 1 EEST}
+ {1790283600 7200 0 EET}
+ {1806012000 10800 1 EEST}
+ {1821733200 7200 0 EET}
+ {1838066400 10800 1 EEST}
+ {1853182800 7200 0 EET}
+ {1869516000 10800 1 EEST}
+ {1884632400 7200 0 EET}
+ {1900965600 10800 1 EEST}
+ {1916686800 7200 0 EET}
+ {1932415200 10800 1 EEST}
+ {1948136400 7200 0 EET}
+ {1963864800 10800 1 EEST}
+ {1979586000 7200 0 EET}
+ {1995919200 10800 1 EEST}
+ {2011035600 7200 0 EET}
+ {2027368800 10800 1 EEST}
+ {2042485200 7200 0 EET}
+ {2058818400 10800 1 EEST}
+ {2073934800 7200 0 EET}
+ {2090268000 10800 1 EEST}
+ {2105989200 7200 0 EET}
+ {2121717600 10800 1 EEST}
+ {2137438800 7200 0 EET}
+ {2153167200 10800 1 EEST}
+ {2168888400 7200 0 EET}
+ {2185221600 10800 1 EEST}
+ {2200338000 7200 0 EET}
+ {2216671200 10800 1 EEST}
+ {2231787600 7200 0 EET}
+ {2248120800 10800 1 EEST}
+ {2263842000 7200 0 EET}
+ {2279570400 10800 1 EEST}
+ {2295291600 7200 0 EET}
+ {2311020000 10800 1 EEST}
+ {2326741200 7200 0 EET}
+ {2343074400 10800 1 EEST}
+ {2358190800 7200 0 EET}
+ {2374524000 10800 1 EEST}
+ {2389640400 7200 0 EET}
+ {2405973600 10800 1 EEST}
+ {2421090000 7200 0 EET}
+ {2437423200 10800 1 EEST}
+ {2453144400 7200 0 EET}
+ {2468872800 10800 1 EEST}
+ {2484594000 7200 0 EET}
+ {2500322400 10800 1 EEST}
+ {2516043600 7200 0 EET}
+ {2532376800 10800 1 EEST}
+ {2547493200 7200 0 EET}
+ {2563826400 10800 1 EEST}
+ {2578942800 7200 0 EET}
+ {2595276000 10800 1 EEST}
+ {2610997200 7200 0 EET}
+ {2626725600 10800 1 EEST}
+ {2642446800 7200 0 EET}
+ {2658175200 10800 1 EEST}
+ {2673896400 7200 0 EET}
+ {2689624800 10800 1 EEST}
+ {2705346000 7200 0 EET}
+ {2721679200 10800 1 EEST}
+ {2736795600 7200 0 EET}
+ {2753128800 10800 1 EEST}
+ {2768245200 7200 0 EET}
+ {2784578400 10800 1 EEST}
+ {2800299600 7200 0 EET}
+ {2816028000 10800 1 EEST}
+ {2831749200 7200 0 EET}
+ {2847477600 10800 1 EEST}
+ {2863198800 7200 0 EET}
+ {2879532000 10800 1 EEST}
+ {2894648400 7200 0 EET}
+ {2910981600 10800 1 EEST}
+ {2926098000 7200 0 EET}
+ {2942431200 10800 1 EEST}
+ {2957547600 7200 0 EET}
+ {2973880800 10800 1 EEST}
+ {2989602000 7200 0 EET}
+ {3005330400 10800 1 EEST}
+ {3021051600 7200 0 EET}
+ {3036780000 10800 1 EEST}
+ {3052501200 7200 0 EET}
+ {3068834400 10800 1 EEST}
+ {3083950800 7200 0 EET}
+ {3100284000 10800 1 EEST}
+ {3115400400 7200 0 EET}
+ {3131733600 10800 1 EEST}
+ {3147454800 7200 0 EET}
+ {3163183200 10800 1 EEST}
+ {3178904400 7200 0 EET}
+ {3194632800 10800 1 EEST}
+ {3210354000 7200 0 EET}
+ {3226687200 10800 1 EEST}
+ {3241803600 7200 0 EET}
+ {3258136800 10800 1 EEST}
+ {3273253200 7200 0 EET}
+ {3289586400 10800 1 EEST}
+ {3304702800 7200 0 EET}
+ {3321036000 10800 1 EEST}
+ {3336757200 7200 0 EET}
+ {3352485600 10800 1 EEST}
+ {3368206800 7200 0 EET}
+ {3383935200 10800 1 EEST}
+ {3399656400 7200 0 EET}
+ {3415989600 10800 1 EEST}
+ {3431106000 7200 0 EET}
+ {3447439200 10800 1 EEST}
+ {3462555600 7200 0 EET}
+ {3478888800 10800 1 EEST}
+ {3494610000 7200 0 EET}
+ {3510338400 10800 1 EEST}
+ {3526059600 7200 0 EET}
+ {3541788000 10800 1 EEST}
+ {3557509200 7200 0 EET}
+ {3573237600 10800 1 EEST}
+ {3588958800 7200 0 EET}
+ {3605292000 10800 1 EEST}
+ {3620408400 7200 0 EET}
+ {3636741600 10800 1 EEST}
+ {3651858000 7200 0 EET}
+ {3668191200 10800 1 EEST}
+ {3683912400 7200 0 EET}
+ {3699640800 10800 1 EEST}
+ {3715362000 7200 0 EET}
+ {3731090400 10800 1 EEST}
+ {3746811600 7200 0 EET}
+ {3763144800 10800 1 EEST}
+ {3778261200 7200 0 EET}
+ {3794594400 10800 1 EEST}
+ {3809710800 7200 0 EET}
+ {3826044000 10800 1 EEST}
+ {3841160400 7200 0 EET}
+ {3857493600 10800 1 EEST}
+ {3873214800 7200 0 EET}
+ {3888943200 10800 1 EEST}
+ {3904664400 7200 0 EET}
+ {3920392800 10800 1 EEST}
+ {3936114000 7200 0 EET}
+ {3952447200 10800 1 EEST}
+ {3967563600 7200 0 EET}
+ {3983896800 10800 1 EEST}
+ {3999013200 7200 0 EET}
+ {4015346400 10800 1 EEST}
+ {4031067600 7200 0 EET}
+ {4046796000 10800 1 EEST}
+ {4062517200 7200 0 EET}
+ {4078245600 10800 1 EEST}
+ {4093966800 7200 0 EET}
+}
diff --git a/library/tzdata/Asia/Harbin b/library/tzdata/Asia/Harbin
new file mode 100644
index 0000000..0eb0c12
--- /dev/null
+++ b/library/tzdata/Asia/Harbin
@@ -0,0 +1,22 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Harbin) {
+ {-9223372036854775808 30404 0 LMT}
+ {-1325492804 30600 0 CHAT}
+ {-1194078600 28800 0 CST}
+ {-946800000 32400 0 CHAT}
+ {-115894800 30600 0 CHAT}
+ {325956600 28800 0 CST}
+ {515520000 32400 1 CDT}
+ {527007600 28800 0 CST}
+ {545155200 32400 1 CDT}
+ {558457200 28800 0 CST}
+ {576604800 32400 1 CDT}
+ {589906800 28800 0 CST}
+ {608659200 32400 1 CDT}
+ {621961200 28800 0 CST}
+ {640108800 32400 1 CDT}
+ {653410800 28800 0 CST}
+ {671558400 32400 1 CDT}
+ {684860400 28800 0 CST}
+}
diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron
new file mode 100644
index 0000000..1333d5a
--- /dev/null
+++ b/library/tzdata/Asia/Hebron
@@ -0,0 +1,277 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Hebron) {
+ {-9223372036854775808 8423 0 LMT}
+ {-2185410023 7200 0 EET}
+ {-933645600 10800 1 EET}
+ {-857358000 7200 0 EET}
+ {-844300800 10800 1 EET}
+ {-825822000 7200 0 EET}
+ {-812685600 10800 1 EET}
+ {-794199600 7200 0 EET}
+ {-779853600 10800 1 EET}
+ {-762656400 7200 0 EET}
+ {-748310400 10800 1 EET}
+ {-731127600 7200 0 EET}
+ {-682653600 7200 0 EET}
+ {-399088800 10800 1 EEST}
+ {-386650800 7200 0 EET}
+ {-368330400 10800 1 EEST}
+ {-355114800 7200 0 EET}
+ {-336790800 10800 1 EEST}
+ {-323654400 7200 0 EET}
+ {-305168400 10800 1 EEST}
+ {-292032000 7200 0 EET}
+ {-273632400 10800 1 EEST}
+ {-260496000 7200 0 EET}
+ {-242096400 10800 1 EEST}
+ {-228960000 7200 0 EET}
+ {-210560400 10800 1 EEST}
+ {-197424000 7200 0 EET}
+ {-178938000 10800 1 EEST}
+ {-165801600 7200 0 EET}
+ {-147402000 10800 1 EEST}
+ {-134265600 7200 0 EET}
+ {-115866000 10800 1 EEST}
+ {-102643200 7200 0 EET}
+ {-84330000 10800 1 EEST}
+ {-81313200 10800 0 IST}
+ {142376400 10800 1 IDT}
+ {150843600 7200 0 IST}
+ {167176800 10800 1 IDT}
+ {178664400 7200 0 IST}
+ {482277600 10800 1 IDT}
+ {495579600 7200 0 IST}
+ {516751200 10800 1 IDT}
+ {526424400 7200 0 IST}
+ {545436000 10800 1 IDT}
+ {558478800 7200 0 IST}
+ {576540000 10800 1 IDT}
+ {589237200 7200 0 IST}
+ {609890400 10800 1 IDT}
+ {620773200 7200 0 IST}
+ {638316000 10800 1 IDT}
+ {651618000 7200 0 IST}
+ {669765600 10800 1 IDT}
+ {683672400 7200 0 IST}
+ {701820000 10800 1 IDT}
+ {715726800 7200 0 IST}
+ {733701600 10800 1 IDT}
+ {747176400 7200 0 IST}
+ {765151200 10800 1 IDT}
+ {778021200 7200 0 IST}
+ {796600800 10800 1 IDT}
+ {810075600 7200 0 IST}
+ {820447200 7200 0 EET}
+ {828655200 10800 1 EEST}
+ {843170400 7200 0 EET}
+ {860104800 10800 1 EEST}
+ {874620000 7200 0 EET}
+ {891554400 10800 1 EEST}
+ {906069600 7200 0 EET}
+ {915141600 7200 0 EET}
+ {924213600 10800 1 EEST}
+ {939934800 7200 0 EET}
+ {956268000 10800 1 EEST}
+ {971989200 7200 0 EET}
+ {987717600 10800 1 EEST}
+ {1003438800 7200 0 EET}
+ {1019167200 10800 1 EEST}
+ {1034888400 7200 0 EET}
+ {1050616800 10800 1 EEST}
+ {1066338000 7200 0 EET}
+ {1082066400 10800 1 EEST}
+ {1096581600 7200 0 EET}
+ {1113516000 10800 1 EEST}
+ {1128380400 7200 0 EET}
+ {1143842400 10800 1 EEST}
+ {1158872400 7200 0 EET}
+ {1175378400 10800 1 EEST}
+ {1189638000 7200 0 EET}
+ {1206655200 10800 1 EEST}
+ {1220216400 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1252015200 7200 0 EET}
+ {1269554400 10800 1 EEST}
+ {1281474000 7200 0 EET}
+ {1301608860 10800 1 EEST}
+ {1312146000 7200 0 EET}
+ {1314655200 10800 1 EEST}
+ {1317330000 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1348178400 7200 0 EET}
+ {1364508000 10800 1 EEST}
+ {1380229200 7200 0 EET}
+ {1395957600 10800 1 EEST}
+ {1411678800 7200 0 EET}
+ {1427407200 10800 1 EEST}
+ {1443128400 7200 0 EET}
+ {1459461600 10800 1 EEST}
+ {1474578000 7200 0 EET}
+ {1490911200 10800 1 EEST}
+ {1506027600 7200 0 EET}
+ {1522360800 10800 1 EEST}
+ {1537477200 7200 0 EET}
+ {1553810400 10800 1 EEST}
+ {1569531600 7200 0 EET}
+ {1585260000 10800 1 EEST}
+ {1600981200 7200 0 EET}
+ {1616709600 10800 1 EEST}
+ {1632430800 7200 0 EET}
+ {1648764000 10800 1 EEST}
+ {1663880400 7200 0 EET}
+ {1680213600 10800 1 EEST}
+ {1695330000 7200 0 EET}
+ {1711663200 10800 1 EEST}
+ {1727384400 7200 0 EET}
+ {1743112800 10800 1 EEST}
+ {1758834000 7200 0 EET}
+ {1774562400 10800 1 EEST}
+ {1790283600 7200 0 EET}
+ {1806012000 10800 1 EEST}
+ {1821733200 7200 0 EET}
+ {1838066400 10800 1 EEST}
+ {1853182800 7200 0 EET}
+ {1869516000 10800 1 EEST}
+ {1884632400 7200 0 EET}
+ {1900965600 10800 1 EEST}
+ {1916686800 7200 0 EET}
+ {1932415200 10800 1 EEST}
+ {1948136400 7200 0 EET}
+ {1963864800 10800 1 EEST}
+ {1979586000 7200 0 EET}
+ {1995919200 10800 1 EEST}
+ {2011035600 7200 0 EET}
+ {2027368800 10800 1 EEST}
+ {2042485200 7200 0 EET}
+ {2058818400 10800 1 EEST}
+ {2073934800 7200 0 EET}
+ {2090268000 10800 1 EEST}
+ {2105989200 7200 0 EET}
+ {2121717600 10800 1 EEST}
+ {2137438800 7200 0 EET}
+ {2153167200 10800 1 EEST}
+ {2168888400 7200 0 EET}
+ {2185221600 10800 1 EEST}
+ {2200338000 7200 0 EET}
+ {2216671200 10800 1 EEST}
+ {2231787600 7200 0 EET}
+ {2248120800 10800 1 EEST}
+ {2263842000 7200 0 EET}
+ {2279570400 10800 1 EEST}
+ {2295291600 7200 0 EET}
+ {2311020000 10800 1 EEST}
+ {2326741200 7200 0 EET}
+ {2343074400 10800 1 EEST}
+ {2358190800 7200 0 EET}
+ {2374524000 10800 1 EEST}
+ {2389640400 7200 0 EET}
+ {2405973600 10800 1 EEST}
+ {2421090000 7200 0 EET}
+ {2437423200 10800 1 EEST}
+ {2453144400 7200 0 EET}
+ {2468872800 10800 1 EEST}
+ {2484594000 7200 0 EET}
+ {2500322400 10800 1 EEST}
+ {2516043600 7200 0 EET}
+ {2532376800 10800 1 EEST}
+ {2547493200 7200 0 EET}
+ {2563826400 10800 1 EEST}
+ {2578942800 7200 0 EET}
+ {2595276000 10800 1 EEST}
+ {2610997200 7200 0 EET}
+ {2626725600 10800 1 EEST}
+ {2642446800 7200 0 EET}
+ {2658175200 10800 1 EEST}
+ {2673896400 7200 0 EET}
+ {2689624800 10800 1 EEST}
+ {2705346000 7200 0 EET}
+ {2721679200 10800 1 EEST}
+ {2736795600 7200 0 EET}
+ {2753128800 10800 1 EEST}
+ {2768245200 7200 0 EET}
+ {2784578400 10800 1 EEST}
+ {2800299600 7200 0 EET}
+ {2816028000 10800 1 EEST}
+ {2831749200 7200 0 EET}
+ {2847477600 10800 1 EEST}
+ {2863198800 7200 0 EET}
+ {2879532000 10800 1 EEST}
+ {2894648400 7200 0 EET}
+ {2910981600 10800 1 EEST}
+ {2926098000 7200 0 EET}
+ {2942431200 10800 1 EEST}
+ {2957547600 7200 0 EET}
+ {2973880800 10800 1 EEST}
+ {2989602000 7200 0 EET}
+ {3005330400 10800 1 EEST}
+ {3021051600 7200 0 EET}
+ {3036780000 10800 1 EEST}
+ {3052501200 7200 0 EET}
+ {3068834400 10800 1 EEST}
+ {3083950800 7200 0 EET}
+ {3100284000 10800 1 EEST}
+ {3115400400 7200 0 EET}
+ {3131733600 10800 1 EEST}
+ {3147454800 7200 0 EET}
+ {3163183200 10800 1 EEST}
+ {3178904400 7200 0 EET}
+ {3194632800 10800 1 EEST}
+ {3210354000 7200 0 EET}
+ {3226687200 10800 1 EEST}
+ {3241803600 7200 0 EET}
+ {3258136800 10800 1 EEST}
+ {3273253200 7200 0 EET}
+ {3289586400 10800 1 EEST}
+ {3304702800 7200 0 EET}
+ {3321036000 10800 1 EEST}
+ {3336757200 7200 0 EET}
+ {3352485600 10800 1 EEST}
+ {3368206800 7200 0 EET}
+ {3383935200 10800 1 EEST}
+ {3399656400 7200 0 EET}
+ {3415989600 10800 1 EEST}
+ {3431106000 7200 0 EET}
+ {3447439200 10800 1 EEST}
+ {3462555600 7200 0 EET}
+ {3478888800 10800 1 EEST}
+ {3494610000 7200 0 EET}
+ {3510338400 10800 1 EEST}
+ {3526059600 7200 0 EET}
+ {3541788000 10800 1 EEST}
+ {3557509200 7200 0 EET}
+ {3573237600 10800 1 EEST}
+ {3588958800 7200 0 EET}
+ {3605292000 10800 1 EEST}
+ {3620408400 7200 0 EET}
+ {3636741600 10800 1 EEST}
+ {3651858000 7200 0 EET}
+ {3668191200 10800 1 EEST}
+ {3683912400 7200 0 EET}
+ {3699640800 10800 1 EEST}
+ {3715362000 7200 0 EET}
+ {3731090400 10800 1 EEST}
+ {3746811600 7200 0 EET}
+ {3763144800 10800 1 EEST}
+ {3778261200 7200 0 EET}
+ {3794594400 10800 1 EEST}
+ {3809710800 7200 0 EET}
+ {3826044000 10800 1 EEST}
+ {3841160400 7200 0 EET}
+ {3857493600 10800 1 EEST}
+ {3873214800 7200 0 EET}
+ {3888943200 10800 1 EEST}
+ {3904664400 7200 0 EET}
+ {3920392800 10800 1 EEST}
+ {3936114000 7200 0 EET}
+ {3952447200 10800 1 EEST}
+ {3967563600 7200 0 EET}
+ {3983896800 10800 1 EEST}
+ {3999013200 7200 0 EET}
+ {4015346400 10800 1 EEST}
+ {4031067600 7200 0 EET}
+ {4046796000 10800 1 EEST}
+ {4062517200 7200 0 EET}
+ {4078245600 10800 1 EEST}
+ {4093966800 7200 0 EET}
+}
diff --git a/library/tzdata/Asia/Ho_Chi_Minh b/library/tzdata/Asia/Ho_Chi_Minh
new file mode 100644
index 0000000..777c8db
--- /dev/null
+++ b/library/tzdata/Asia/Ho_Chi_Minh
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Ho_Chi_Minh) {
+ {-9223372036854775808 25600 0 LMT}
+ {-2005974400 25580 0 SMT}
+ {-1855983920 25200 0 ICT}
+ {-1819954800 28800 0 ICT}
+ {-1220428800 25200 0 ICT}
+}
diff --git a/library/tzdata/Asia/Hong_Kong b/library/tzdata/Asia/Hong_Kong
new file mode 100644
index 0000000..fcf98a6
--- /dev/null
+++ b/library/tzdata/Asia/Hong_Kong
@@ -0,0 +1,75 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Hong_Kong) {
+ {-9223372036854775808 27402 0 LMT}
+ {-2056693002 28800 0 HKT}
+ {-907389000 32400 1 HKST}
+ {-891667800 28800 0 HKT}
+ {-884246400 32400 0 JST}
+ {-766746000 28800 0 HKT}
+ {-747981000 32400 1 HKST}
+ {-728544600 28800 0 HKT}
+ {-717049800 32400 1 HKST}
+ {-694503000 28800 0 HKT}
+ {-683785800 32400 1 HKST}
+ {-668064600 28800 0 HKT}
+ {-654755400 32400 1 HKST}
+ {-636615000 28800 0 HKT}
+ {-623305800 32400 1 HKST}
+ {-605165400 28800 0 HKT}
+ {-591856200 32400 1 HKST}
+ {-573715800 28800 0 HKT}
+ {-559801800 32400 1 HKST}
+ {-542352600 28800 0 HKT}
+ {-528352200 32400 1 HKST}
+ {-510211800 28800 0 HKT}
+ {-498112200 32400 1 HKST}
+ {-478762200 28800 0 HKT}
+ {-466662600 32400 1 HKST}
+ {-446707800 28800 0 HKT}
+ {-435213000 32400 1 HKST}
+ {-415258200 28800 0 HKT}
+ {-403158600 32400 1 HKST}
+ {-383808600 28800 0 HKT}
+ {-371709000 32400 1 HKST}
+ {-352359000 28800 0 HKT}
+ {-340259400 32400 1 HKST}
+ {-320909400 28800 0 HKT}
+ {-308809800 32400 1 HKST}
+ {-288855000 28800 0 HKT}
+ {-277360200 32400 1 HKST}
+ {-257405400 28800 0 HKT}
+ {-245910600 32400 1 HKST}
+ {-225955800 28800 0 HKT}
+ {-213856200 32400 1 HKST}
+ {-194506200 28800 0 HKT}
+ {-182406600 32400 1 HKST}
+ {-163056600 28800 0 HKT}
+ {-148537800 32400 1 HKST}
+ {-132816600 28800 0 HKT}
+ {-117088200 32400 1 HKST}
+ {-101367000 28800 0 HKT}
+ {-85638600 32400 1 HKST}
+ {-69312600 28800 0 HKT}
+ {-53584200 32400 1 HKST}
+ {-37863000 28800 0 HKT}
+ {-22134600 32400 1 HKST}
+ {-6413400 28800 0 HKT}
+ {9315000 32400 1 HKST}
+ {25036200 28800 0 HKT}
+ {40764600 32400 1 HKST}
+ {56485800 28800 0 HKT}
+ {72214200 32400 1 HKST}
+ {88540200 28800 0 HKT}
+ {104268600 32400 1 HKST}
+ {119989800 28800 0 HKT}
+ {126041400 32400 1 HKST}
+ {135714600 32400 1 HKST}
+ {151439400 28800 0 HKT}
+ {167167800 32400 1 HKST}
+ {182889000 28800 0 HKT}
+ {198617400 32400 1 HKST}
+ {214338600 28800 0 HKT}
+ {295385400 32400 1 HKST}
+ {309292200 28800 0 HKT}
+}
diff --git a/library/tzdata/Asia/Hovd b/library/tzdata/Asia/Hovd
new file mode 100644
index 0000000..2a87dab
--- /dev/null
+++ b/library/tzdata/Asia/Hovd
@@ -0,0 +1,51 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Hovd) {
+ {-9223372036854775808 21996 0 LMT}
+ {-2032927596 21600 0 HOVT}
+ {252439200 25200 0 HOVT}
+ {417978000 28800 1 HOVST}
+ {433785600 25200 0 HOVT}
+ {449600400 28800 1 HOVST}
+ {465321600 25200 0 HOVT}
+ {481050000 28800 1 HOVST}
+ {496771200 25200 0 HOVT}
+ {512499600 28800 1 HOVST}
+ {528220800 25200 0 HOVT}
+ {543949200 28800 1 HOVST}
+ {559670400 25200 0 HOVT}
+ {575398800 28800 1 HOVST}
+ {591120000 25200 0 HOVT}
+ {606848400 28800 1 HOVST}
+ {622569600 25200 0 HOVT}
+ {638298000 28800 1 HOVST}
+ {654624000 25200 0 HOVT}
+ {670352400 28800 1 HOVST}
+ {686073600 25200 0 HOVT}
+ {701802000 28800 1 HOVST}
+ {717523200 25200 0 HOVT}
+ {733251600 28800 1 HOVST}
+ {748972800 25200 0 HOVT}
+ {764701200 28800 1 HOVST}
+ {780422400 25200 0 HOVT}
+ {796150800 28800 1 HOVST}
+ {811872000 25200 0 HOVT}
+ {828205200 28800 1 HOVST}
+ {843926400 25200 0 HOVT}
+ {859654800 28800 1 HOVST}
+ {875376000 25200 0 HOVT}
+ {891104400 28800 1 HOVST}
+ {906825600 25200 0 HOVT}
+ {988398000 28800 1 HOVST}
+ {1001700000 25200 0 HOVT}
+ {1017428400 28800 1 HOVST}
+ {1033149600 25200 0 HOVT}
+ {1048878000 28800 1 HOVST}
+ {1064599200 25200 0 HOVT}
+ {1080327600 28800 1 HOVST}
+ {1096048800 25200 0 HOVT}
+ {1111777200 28800 1 HOVST}
+ {1127498400 25200 0 HOVT}
+ {1143226800 28800 1 HOVST}
+ {1159552800 25200 0 HOVT}
+}
diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk
new file mode 100644
index 0000000..bca1dcc
--- /dev/null
+++ b/library/tzdata/Asia/Irkutsk
@@ -0,0 +1,71 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Irkutsk) {
+ {-9223372036854775808 25040 0 LMT}
+ {-2840165840 25040 0 IMT}
+ {-1575874640 25200 0 IRKT}
+ {-1247554800 28800 0 IRKMMTT}
+ {354902400 32400 1 IRKST}
+ {370710000 28800 0 IRKT}
+ {386438400 32400 1 IRKST}
+ {402246000 28800 0 IRKT}
+ {417974400 32400 1 IRKST}
+ {433782000 28800 0 IRKT}
+ {449596800 32400 1 IRKST}
+ {465328800 28800 0 IRKT}
+ {481053600 32400 1 IRKST}
+ {496778400 28800 0 IRKT}
+ {512503200 32400 1 IRKST}
+ {528228000 28800 0 IRKT}
+ {543952800 32400 1 IRKST}
+ {559677600 28800 0 IRKT}
+ {575402400 32400 1 IRKST}
+ {591127200 28800 0 IRKT}
+ {606852000 32400 1 IRKST}
+ {622576800 28800 0 IRKT}
+ {638301600 32400 1 IRKST}
+ {654631200 28800 0 IRKT}
+ {670356000 25200 0 IRKMMTT}
+ {670359600 28800 1 IRKST}
+ {686084400 25200 0 IRKT}
+ {695761200 28800 0 IRKMMTT}
+ {701794800 32400 1 IRKST}
+ {717516000 28800 0 IRKT}
+ {733255200 32400 1 IRKST}
+ {748980000 28800 0 IRKT}
+ {764704800 32400 1 IRKST}
+ {780429600 28800 0 IRKT}
+ {796154400 32400 1 IRKST}
+ {811879200 28800 0 IRKT}
+ {828208800 32400 1 IRKST}
+ {846352800 28800 0 IRKT}
+ {859658400 32400 1 IRKST}
+ {877802400 28800 0 IRKT}
+ {891108000 32400 1 IRKST}
+ {909252000 28800 0 IRKT}
+ {922557600 32400 1 IRKST}
+ {941306400 28800 0 IRKT}
+ {954007200 32400 1 IRKST}
+ {972756000 28800 0 IRKT}
+ {985456800 32400 1 IRKST}
+ {1004205600 28800 0 IRKT}
+ {1017511200 32400 1 IRKST}
+ {1035655200 28800 0 IRKT}
+ {1048960800 32400 1 IRKST}
+ {1067104800 28800 0 IRKT}
+ {1080410400 32400 1 IRKST}
+ {1099159200 28800 0 IRKT}
+ {1111860000 32400 1 IRKST}
+ {1130608800 28800 0 IRKT}
+ {1143309600 32400 1 IRKST}
+ {1162058400 28800 0 IRKT}
+ {1174759200 32400 1 IRKST}
+ {1193508000 28800 0 IRKT}
+ {1206813600 32400 1 IRKST}
+ {1224957600 28800 0 IRKT}
+ {1238263200 32400 1 IRKST}
+ {1256407200 28800 0 IRKT}
+ {1269712800 32400 1 IRKST}
+ {1288461600 28800 0 IRKT}
+ {1301162400 32400 0 IRKT}
+}
diff --git a/library/tzdata/Asia/Istanbul b/library/tzdata/Asia/Istanbul
new file mode 100644
index 0000000..85b3fc2
--- /dev/null
+++ b/library/tzdata/Asia/Istanbul
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Istanbul)]} {
+ LoadTimeZoneFile Europe/Istanbul
+}
+set TZData(:Asia/Istanbul) $TZData(:Europe/Istanbul)
diff --git a/library/tzdata/Asia/Jakarta b/library/tzdata/Asia/Jakarta
new file mode 100644
index 0000000..75cd659
--- /dev/null
+++ b/library/tzdata/Asia/Jakarta
@@ -0,0 +1,13 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Jakarta) {
+ {-9223372036854775808 25632 0 LMT}
+ {-3231299232 25632 0 BMT}
+ {-1451719200 26400 0 JAVT}
+ {-1172906400 27000 0 WIB}
+ {-876641400 32400 0 JST}
+ {-766054800 27000 0 WIB}
+ {-683883000 28800 0 WIB}
+ {-620812800 27000 0 WIB}
+ {-189415800 25200 0 WIB}
+}
diff --git a/library/tzdata/Asia/Jayapura b/library/tzdata/Asia/Jayapura
new file mode 100644
index 0000000..a71228f
--- /dev/null
+++ b/library/tzdata/Asia/Jayapura
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Jayapura) {
+ {-9223372036854775808 33768 0 LMT}
+ {-1172913768 32400 0 WIT}
+ {-799491600 34200 0 CST}
+ {-189423000 32400 0 WIT}
+}
diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem
new file mode 100644
index 0000000..7662680
--- /dev/null
+++ b/library/tzdata/Asia/Jerusalem
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Jerusalem) {
+ {-9223372036854775808 8454 0 LMT}
+ {-2840149254 8440 0 JMT}
+ {-1641003640 7200 0 IST}
+ {-933645600 10800 1 IDT}
+ {-857358000 7200 0 IST}
+ {-844300800 10800 1 IDT}
+ {-825822000 7200 0 IST}
+ {-812685600 10800 1 IDT}
+ {-794199600 7200 0 IST}
+ {-779853600 10800 1 IDT}
+ {-762656400 7200 0 IST}
+ {-748310400 10800 1 IDT}
+ {-731127600 7200 0 IST}
+ {-681962400 14400 1 IDDT}
+ {-673243200 10800 1 IDT}
+ {-667962000 7200 0 IST}
+ {-652327200 10800 1 IDT}
+ {-636426000 7200 0 IST}
+ {-622087200 10800 1 IDT}
+ {-608947200 7200 0 IST}
+ {-591847200 10800 1 IDT}
+ {-572486400 7200 0 IST}
+ {-558576000 10800 1 IDT}
+ {-542851200 7200 0 IST}
+ {-527731200 10800 1 IDT}
+ {-514425600 7200 0 IST}
+ {-490845600 10800 1 IDT}
+ {-482986800 7200 0 IST}
+ {-459475200 10800 1 IDT}
+ {-451537200 7200 0 IST}
+ {-428551200 10800 1 IDT}
+ {-418262400 7200 0 IST}
+ {-400032000 10800 1 IDT}
+ {-387428400 7200 0 IST}
+ {142380000 10800 1 IDT}
+ {150843600 7200 0 IST}
+ {167176800 10800 1 IDT}
+ {178664400 7200 0 IST}
+ {482277600 10800 1 IDT}
+ {495579600 7200 0 IST}
+ {516751200 10800 1 IDT}
+ {526424400 7200 0 IST}
+ {545436000 10800 1 IDT}
+ {558478800 7200 0 IST}
+ {576540000 10800 1 IDT}
+ {589237200 7200 0 IST}
+ {609890400 10800 1 IDT}
+ {620773200 7200 0 IST}
+ {638316000 10800 1 IDT}
+ {651618000 7200 0 IST}
+ {669765600 10800 1 IDT}
+ {683672400 7200 0 IST}
+ {701820000 10800 1 IDT}
+ {715726800 7200 0 IST}
+ {733701600 10800 1 IDT}
+ {747176400 7200 0 IST}
+ {765151200 10800 1 IDT}
+ {778021200 7200 0 IST}
+ {796600800 10800 1 IDT}
+ {810075600 7200 0 IST}
+ {826840800 10800 1 IDT}
+ {842821200 7200 0 IST}
+ {858895200 10800 1 IDT}
+ {874184400 7200 0 IST}
+ {890344800 10800 1 IDT}
+ {905029200 7200 0 IST}
+ {923011200 10800 1 IDT}
+ {936313200 7200 0 IST}
+ {955670400 10800 1 IDT}
+ {970783200 7200 0 IST}
+ {986770800 10800 1 IDT}
+ {1001282400 7200 0 IST}
+ {1017356400 10800 1 IDT}
+ {1033941600 7200 0 IST}
+ {1048806000 10800 1 IDT}
+ {1065132000 7200 0 IST}
+ {1081292400 10800 1 IDT}
+ {1095804000 7200 0 IST}
+ {1112313600 10800 1 IDT}
+ {1128812400 7200 0 IST}
+ {1143763200 10800 1 IDT}
+ {1159657200 7200 0 IST}
+ {1175212800 10800 1 IDT}
+ {1189897200 7200 0 IST}
+ {1206662400 10800 1 IDT}
+ {1223161200 7200 0 IST}
+ {1238112000 10800 1 IDT}
+ {1254006000 7200 0 IST}
+ {1269561600 10800 1 IDT}
+ {1284246000 7200 0 IST}
+ {1301616000 10800 1 IDT}
+ {1317510000 7200 0 IST}
+ {1333065600 10800 1 IDT}
+ {1348354800 7200 0 IST}
+ {1364515200 10800 1 IDT}
+ {1382828400 7200 0 IST}
+ {1395964800 10800 1 IDT}
+ {1414278000 7200 0 IST}
+ {1427414400 10800 1 IDT}
+ {1445727600 7200 0 IST}
+ {1458864000 10800 1 IDT}
+ {1477782000 7200 0 IST}
+ {1490313600 10800 1 IDT}
+ {1509231600 7200 0 IST}
+ {1521763200 10800 1 IDT}
+ {1540681200 7200 0 IST}
+ {1553817600 10800 1 IDT}
+ {1572130800 7200 0 IST}
+ {1585267200 10800 1 IDT}
+ {1603580400 7200 0 IST}
+ {1616716800 10800 1 IDT}
+ {1635634800 7200 0 IST}
+ {1648166400 10800 1 IDT}
+ {1667084400 7200 0 IST}
+ {1679616000 10800 1 IDT}
+ {1698534000 7200 0 IST}
+ {1711670400 10800 1 IDT}
+ {1729983600 7200 0 IST}
+ {1743120000 10800 1 IDT}
+ {1761433200 7200 0 IST}
+ {1774569600 10800 1 IDT}
+ {1792882800 7200 0 IST}
+ {1806019200 10800 1 IDT}
+ {1824937200 7200 0 IST}
+ {1837468800 10800 1 IDT}
+ {1856386800 7200 0 IST}
+ {1868918400 10800 1 IDT}
+ {1887836400 7200 0 IST}
+ {1900972800 10800 1 IDT}
+ {1919286000 7200 0 IST}
+ {1932422400 10800 1 IDT}
+ {1950735600 7200 0 IST}
+ {1963872000 10800 1 IDT}
+ {1982790000 7200 0 IST}
+ {1995321600 10800 1 IDT}
+ {2014239600 7200 0 IST}
+ {2026771200 10800 1 IDT}
+ {2045689200 7200 0 IST}
+ {2058220800 10800 1 IDT}
+ {2077138800 7200 0 IST}
+ {2090275200 10800 1 IDT}
+ {2108588400 7200 0 IST}
+ {2121724800 10800 1 IDT}
+ {2140038000 7200 0 IST}
+ {2153174400 10800 1 IDT}
+ {2172092400 7200 0 IST}
+ {2184624000 10800 1 IDT}
+ {2203542000 7200 0 IST}
+ {2216073600 10800 1 IDT}
+ {2234991600 7200 0 IST}
+ {2248128000 10800 1 IDT}
+ {2266441200 7200 0 IST}
+ {2279577600 10800 1 IDT}
+ {2297890800 7200 0 IST}
+ {2311027200 10800 1 IDT}
+ {2329340400 7200 0 IST}
+ {2342476800 10800 1 IDT}
+ {2361394800 7200 0 IST}
+ {2373926400 10800 1 IDT}
+ {2392844400 7200 0 IST}
+ {2405376000 10800 1 IDT}
+ {2424294000 7200 0 IST}
+ {2437430400 10800 1 IDT}
+ {2455743600 7200 0 IST}
+ {2468880000 10800 1 IDT}
+ {2487193200 7200 0 IST}
+ {2500329600 10800 1 IDT}
+ {2519247600 7200 0 IST}
+ {2531779200 10800 1 IDT}
+ {2550697200 7200 0 IST}
+ {2563228800 10800 1 IDT}
+ {2582146800 7200 0 IST}
+ {2595283200 10800 1 IDT}
+ {2613596400 7200 0 IST}
+ {2626732800 10800 1 IDT}
+ {2645046000 7200 0 IST}
+ {2658182400 10800 1 IDT}
+ {2676495600 7200 0 IST}
+ {2689632000 10800 1 IDT}
+ {2708550000 7200 0 IST}
+ {2721081600 10800 1 IDT}
+ {2739999600 7200 0 IST}
+ {2752531200 10800 1 IDT}
+ {2771449200 7200 0 IST}
+ {2784585600 10800 1 IDT}
+ {2802898800 7200 0 IST}
+ {2816035200 10800 1 IDT}
+ {2834348400 7200 0 IST}
+ {2847484800 10800 1 IDT}
+ {2866402800 7200 0 IST}
+ {2878934400 10800 1 IDT}
+ {2897852400 7200 0 IST}
+ {2910384000 10800 1 IDT}
+ {2929302000 7200 0 IST}
+ {2941833600 10800 1 IDT}
+ {2960751600 7200 0 IST}
+ {2973888000 10800 1 IDT}
+ {2992201200 7200 0 IST}
+ {3005337600 10800 1 IDT}
+ {3023650800 7200 0 IST}
+ {3036787200 10800 1 IDT}
+ {3055705200 7200 0 IST}
+ {3068236800 10800 1 IDT}
+ {3087154800 7200 0 IST}
+ {3099686400 10800 1 IDT}
+ {3118604400 7200 0 IST}
+ {3131740800 10800 1 IDT}
+ {3150054000 7200 0 IST}
+ {3163190400 10800 1 IDT}
+ {3181503600 7200 0 IST}
+ {3194640000 10800 1 IDT}
+ {3212953200 7200 0 IST}
+ {3226089600 10800 1 IDT}
+ {3245007600 7200 0 IST}
+ {3257539200 10800 1 IDT}
+ {3276457200 7200 0 IST}
+ {3288988800 10800 1 IDT}
+ {3307906800 7200 0 IST}
+ {3321043200 10800 1 IDT}
+ {3339356400 7200 0 IST}
+ {3352492800 10800 1 IDT}
+ {3370806000 7200 0 IST}
+ {3383942400 10800 1 IDT}
+ {3402860400 7200 0 IST}
+ {3415392000 10800 1 IDT}
+ {3434310000 7200 0 IST}
+ {3446841600 10800 1 IDT}
+ {3465759600 7200 0 IST}
+ {3478896000 10800 1 IDT}
+ {3497209200 7200 0 IST}
+ {3510345600 10800 1 IDT}
+ {3528658800 7200 0 IST}
+ {3541795200 10800 1 IDT}
+ {3560108400 7200 0 IST}
+ {3573244800 10800 1 IDT}
+ {3592162800 7200 0 IST}
+ {3604694400 10800 1 IDT}
+ {3623612400 7200 0 IST}
+ {3636144000 10800 1 IDT}
+ {3655062000 7200 0 IST}
+ {3668198400 10800 1 IDT}
+ {3686511600 7200 0 IST}
+ {3699648000 10800 1 IDT}
+ {3717961200 7200 0 IST}
+ {3731097600 10800 1 IDT}
+ {3750015600 7200 0 IST}
+ {3762547200 10800 1 IDT}
+ {3781465200 7200 0 IST}
+ {3793996800 10800 1 IDT}
+ {3812914800 7200 0 IST}
+ {3825446400 10800 1 IDT}
+ {3844364400 7200 0 IST}
+ {3857500800 10800 1 IDT}
+ {3875814000 7200 0 IST}
+ {3888950400 10800 1 IDT}
+ {3907263600 7200 0 IST}
+ {3920400000 10800 1 IDT}
+ {3939318000 7200 0 IST}
+ {3951849600 10800 1 IDT}
+ {3970767600 7200 0 IST}
+ {3983299200 10800 1 IDT}
+ {4002217200 7200 0 IST}
+ {4015353600 10800 1 IDT}
+ {4033666800 7200 0 IST}
+ {4046803200 10800 1 IDT}
+ {4065116400 7200 0 IST}
+ {4078252800 10800 1 IDT}
+ {4096566000 7200 0 IST}
+}
diff --git a/library/tzdata/Asia/Kabul b/library/tzdata/Asia/Kabul
new file mode 100644
index 0000000..33d7282
--- /dev/null
+++ b/library/tzdata/Asia/Kabul
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kabul) {
+ {-9223372036854775808 16608 0 LMT}
+ {-2524538208 14400 0 AFT}
+ {-788932800 16200 0 AFT}
+}
diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka
new file mode 100644
index 0000000..82abcfa
--- /dev/null
+++ b/library/tzdata/Asia/Kamchatka
@@ -0,0 +1,71 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kamchatka) {
+ {-9223372036854775808 38076 0 LMT}
+ {-1487759676 39600 0 PETT}
+ {-1247569200 43200 0 PETMMTT}
+ {354888000 46800 1 PETST}
+ {370695600 43200 0 PETT}
+ {386424000 46800 1 PETST}
+ {402231600 43200 0 PETT}
+ {417960000 46800 1 PETST}
+ {433767600 43200 0 PETT}
+ {449582400 46800 1 PETST}
+ {465314400 43200 0 PETT}
+ {481039200 46800 1 PETST}
+ {496764000 43200 0 PETT}
+ {512488800 46800 1 PETST}
+ {528213600 43200 0 PETT}
+ {543938400 46800 1 PETST}
+ {559663200 43200 0 PETT}
+ {575388000 46800 1 PETST}
+ {591112800 43200 0 PETT}
+ {606837600 46800 1 PETST}
+ {622562400 43200 0 PETT}
+ {638287200 46800 1 PETST}
+ {654616800 43200 0 PETT}
+ {670341600 39600 0 PETMMTT}
+ {670345200 43200 1 PETST}
+ {686070000 39600 0 PETT}
+ {695746800 43200 0 PETMMTT}
+ {701780400 46800 1 PETST}
+ {717501600 43200 0 PETT}
+ {733240800 46800 1 PETST}
+ {748965600 43200 0 PETT}
+ {764690400 46800 1 PETST}
+ {780415200 43200 0 PETT}
+ {796140000 46800 1 PETST}
+ {811864800 43200 0 PETT}
+ {828194400 46800 1 PETST}
+ {846338400 43200 0 PETT}
+ {859644000 46800 1 PETST}
+ {877788000 43200 0 PETT}
+ {891093600 46800 1 PETST}
+ {909237600 43200 0 PETT}
+ {922543200 46800 1 PETST}
+ {941292000 43200 0 PETT}
+ {953992800 46800 1 PETST}
+ {972741600 43200 0 PETT}
+ {985442400 46800 1 PETST}
+ {1004191200 43200 0 PETT}
+ {1017496800 46800 1 PETST}
+ {1035640800 43200 0 PETT}
+ {1048946400 46800 1 PETST}
+ {1067090400 43200 0 PETT}
+ {1080396000 46800 1 PETST}
+ {1099144800 43200 0 PETT}
+ {1111845600 46800 1 PETST}
+ {1130594400 43200 0 PETT}
+ {1143295200 46800 1 PETST}
+ {1162044000 43200 0 PETT}
+ {1174744800 46800 1 PETST}
+ {1193493600 43200 0 PETT}
+ {1206799200 46800 1 PETST}
+ {1224943200 43200 0 PETT}
+ {1238248800 46800 1 PETST}
+ {1256392800 43200 0 PETT}
+ {1269698400 39600 0 PETMMTT}
+ {1269702000 43200 1 PETST}
+ {1288450800 39600 0 PETT}
+ {1301151600 43200 0 PETT}
+}
diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi
new file mode 100644
index 0000000..3faa31e
--- /dev/null
+++ b/library/tzdata/Asia/Karachi
@@ -0,0 +1,16 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Karachi) {
+ {-9223372036854775808 16092 0 LMT}
+ {-1988166492 19800 0 IST}
+ {-862637400 23400 1 IST}
+ {-764145000 19800 0 IST}
+ {-576135000 18000 0 KART}
+ {38775600 18000 0 PKT}
+ {1018119660 21600 1 PKST}
+ {1033840860 18000 0 PKT}
+ {1212260400 21600 1 PKST}
+ {1225476000 18000 0 PKT}
+ {1239735600 21600 1 PKST}
+ {1257012000 18000 0 PKT}
+}
diff --git a/library/tzdata/Asia/Kashgar b/library/tzdata/Asia/Kashgar
new file mode 100644
index 0000000..2f64f42
--- /dev/null
+++ b/library/tzdata/Asia/Kashgar
@@ -0,0 +1,20 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kashgar) {
+ {-9223372036854775808 18236 0 LMT}
+ {-1325480636 19800 0 KAST}
+ {-946791000 18000 0 KAST}
+ {325969200 28800 0 CST}
+ {515520000 32400 1 CDT}
+ {527007600 28800 0 CST}
+ {545155200 32400 1 CDT}
+ {558457200 28800 0 CST}
+ {576604800 32400 1 CDT}
+ {589906800 28800 0 CST}
+ {608659200 32400 1 CDT}
+ {621961200 28800 0 CST}
+ {640108800 32400 1 CDT}
+ {653410800 28800 0 CST}
+ {671558400 32400 1 CDT}
+ {684860400 28800 0 CST}
+}
diff --git a/library/tzdata/Asia/Kathmandu b/library/tzdata/Asia/Kathmandu
new file mode 100644
index 0000000..dbec1f0
--- /dev/null
+++ b/library/tzdata/Asia/Kathmandu
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kathmandu) {
+ {-9223372036854775808 20476 0 LMT}
+ {-1577943676 19800 0 IST}
+ {504901800 20700 0 NPT}
+}
diff --git a/library/tzdata/Asia/Katmandu b/library/tzdata/Asia/Katmandu
new file mode 100644
index 0000000..2d6d060
--- /dev/null
+++ b/library/tzdata/Asia/Katmandu
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Kathmandu)]} {
+ LoadTimeZoneFile Asia/Kathmandu
+}
+set TZData(:Asia/Katmandu) $TZData(:Asia/Kathmandu)
diff --git a/library/tzdata/Asia/Khandyga b/library/tzdata/Asia/Khandyga
new file mode 100644
index 0000000..2464b9f
--- /dev/null
+++ b/library/tzdata/Asia/Khandyga
@@ -0,0 +1,72 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Khandyga) {
+ {-9223372036854775808 32533 0 LMT}
+ {-1579424533 28800 0 YAKT}
+ {-1247558400 32400 0 YAKMMTT}
+ {354898800 36000 1 YAKST}
+ {370706400 32400 0 YAKT}
+ {386434800 36000 1 YAKST}
+ {402242400 32400 0 YAKT}
+ {417970800 36000 1 YAKST}
+ {433778400 32400 0 YAKT}
+ {449593200 36000 1 YAKST}
+ {465325200 32400 0 YAKT}
+ {481050000 36000 1 YAKST}
+ {496774800 32400 0 YAKT}
+ {512499600 36000 1 YAKST}
+ {528224400 32400 0 YAKT}
+ {543949200 36000 1 YAKST}
+ {559674000 32400 0 YAKT}
+ {575398800 36000 1 YAKST}
+ {591123600 32400 0 YAKT}
+ {606848400 36000 1 YAKST}
+ {622573200 32400 0 YAKT}
+ {638298000 36000 1 YAKST}
+ {654627600 32400 0 YAKT}
+ {670352400 28800 0 YAKMMTT}
+ {670356000 32400 1 YAKST}
+ {686080800 28800 0 YAKT}
+ {695757600 32400 0 YAKMMTT}
+ {701791200 36000 1 YAKST}
+ {717512400 32400 0 YAKT}
+ {733251600 36000 1 YAKST}
+ {748976400 32400 0 YAKT}
+ {764701200 36000 1 YAKST}
+ {780426000 32400 0 YAKT}
+ {796150800 36000 1 YAKST}
+ {811875600 32400 0 YAKT}
+ {828205200 36000 1 YAKST}
+ {846349200 32400 0 YAKT}
+ {859654800 36000 1 YAKST}
+ {877798800 32400 0 YAKT}
+ {891104400 36000 1 YAKST}
+ {909248400 32400 0 YAKT}
+ {922554000 36000 1 YAKST}
+ {941302800 32400 0 YAKT}
+ {954003600 36000 1 YAKST}
+ {972752400 32400 0 YAKT}
+ {985453200 36000 1 YAKST}
+ {1004202000 32400 0 YAKT}
+ {1017507600 36000 1 YAKST}
+ {1035651600 32400 0 YAKT}
+ {1048957200 36000 1 YAKST}
+ {1067101200 32400 0 YAKT}
+ {1072882800 36000 0 VLAMMTT}
+ {1080403200 39600 1 VLAST}
+ {1099152000 36000 0 VLAT}
+ {1111852800 39600 1 VLAST}
+ {1130601600 36000 0 VLAT}
+ {1143302400 39600 1 VLAST}
+ {1162051200 36000 0 VLAT}
+ {1174752000 39600 1 VLAST}
+ {1193500800 36000 0 VLAT}
+ {1206806400 39600 1 VLAST}
+ {1224950400 36000 0 VLAT}
+ {1238256000 39600 1 VLAST}
+ {1256400000 36000 0 VLAT}
+ {1269705600 39600 1 VLAST}
+ {1288454400 36000 0 VLAT}
+ {1301155200 39600 0 VLAT}
+ {1315832400 36000 0 YAKT}
+}
diff --git a/library/tzdata/Asia/Kolkata b/library/tzdata/Asia/Kolkata
new file mode 100644
index 0000000..a87bf31
--- /dev/null
+++ b/library/tzdata/Asia/Kolkata
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kolkata) {
+ {-9223372036854775808 21208 0 LMT}
+ {-2840162008 21200 0 HMT}
+ {-891582800 23400 0 BURT}
+ {-872058600 19800 0 IST}
+ {-862637400 23400 1 IST}
+ {-764145000 19800 0 IST}
+}
diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk
new file mode 100644
index 0000000..13dfeb5
--- /dev/null
+++ b/library/tzdata/Asia/Krasnoyarsk
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Krasnoyarsk) {
+ {-9223372036854775808 22280 0 LMT}
+ {-1577513480 21600 0 KRAT}
+ {-1247551200 25200 0 KRAMMTT}
+ {354906000 28800 1 KRAST}
+ {370713600 25200 0 KRAT}
+ {386442000 28800 1 KRAST}
+ {402249600 25200 0 KRAT}
+ {417978000 28800 1 KRAST}
+ {433785600 25200 0 KRAT}
+ {449600400 28800 1 KRAST}
+ {465332400 25200 0 KRAT}
+ {481057200 28800 1 KRAST}
+ {496782000 25200 0 KRAT}
+ {512506800 28800 1 KRAST}
+ {528231600 25200 0 KRAT}
+ {543956400 28800 1 KRAST}
+ {559681200 25200 0 KRAT}
+ {575406000 28800 1 KRAST}
+ {591130800 25200 0 KRAT}
+ {606855600 28800 1 KRAST}
+ {622580400 25200 0 KRAT}
+ {638305200 28800 1 KRAST}
+ {654634800 25200 0 KRAT}
+ {670359600 21600 0 KRAMMTT}
+ {670363200 25200 1 KRAST}
+ {686088000 21600 0 KRAT}
+ {695764800 25200 0 KRAMMTT}
+ {701798400 28800 1 KRAST}
+ {717519600 25200 0 KRAT}
+ {733258800 28800 1 KRAST}
+ {748983600 25200 0 KRAT}
+ {764708400 28800 1 KRAST}
+ {780433200 25200 0 KRAT}
+ {796158000 28800 1 KRAST}
+ {811882800 25200 0 KRAT}
+ {828212400 28800 1 KRAST}
+ {846356400 25200 0 KRAT}
+ {859662000 28800 1 KRAST}
+ {877806000 25200 0 KRAT}
+ {891111600 28800 1 KRAST}
+ {909255600 25200 0 KRAT}
+ {922561200 28800 1 KRAST}
+ {941310000 25200 0 KRAT}
+ {954010800 28800 1 KRAST}
+ {972759600 25200 0 KRAT}
+ {985460400 28800 1 KRAST}
+ {1004209200 25200 0 KRAT}
+ {1017514800 28800 1 KRAST}
+ {1035658800 25200 0 KRAT}
+ {1048964400 28800 1 KRAST}
+ {1067108400 25200 0 KRAT}
+ {1080414000 28800 1 KRAST}
+ {1099162800 25200 0 KRAT}
+ {1111863600 28800 1 KRAST}
+ {1130612400 25200 0 KRAT}
+ {1143313200 28800 1 KRAST}
+ {1162062000 25200 0 KRAT}
+ {1174762800 28800 1 KRAST}
+ {1193511600 25200 0 KRAT}
+ {1206817200 28800 1 KRAST}
+ {1224961200 25200 0 KRAT}
+ {1238266800 28800 1 KRAST}
+ {1256410800 25200 0 KRAT}
+ {1269716400 28800 1 KRAST}
+ {1288465200 25200 0 KRAT}
+ {1301166000 28800 0 KRAT}
+}
diff --git a/library/tzdata/Asia/Kuala_Lumpur b/library/tzdata/Asia/Kuala_Lumpur
new file mode 100644
index 0000000..7a54bd6
--- /dev/null
+++ b/library/tzdata/Asia/Kuala_Lumpur
@@ -0,0 +1,13 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kuala_Lumpur) {
+ {-9223372036854775808 24406 0 LMT}
+ {-2177477206 24925 0 SMT}
+ {-2038200925 25200 0 MALT}
+ {-1167634800 26400 1 MALST}
+ {-1073028000 26400 0 MALT}
+ {-894180000 27000 0 MALT}
+ {-879665400 32400 0 JST}
+ {-767005200 27000 0 MALT}
+ {378664200 28800 0 MYT}
+}
diff --git a/library/tzdata/Asia/Kuching b/library/tzdata/Asia/Kuching
new file mode 100644
index 0000000..0f9110c
--- /dev/null
+++ b/library/tzdata/Asia/Kuching
@@ -0,0 +1,24 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kuching) {
+ {-9223372036854775808 26480 0 LMT}
+ {-1383463280 27000 0 BORT}
+ {-1167636600 28800 0 BORT}
+ {-1082448000 30000 1 BORTST}
+ {-1074586800 28800 0 BORT}
+ {-1050825600 30000 1 BORTST}
+ {-1042964400 28800 0 BORT}
+ {-1019289600 30000 1 BORTST}
+ {-1011428400 28800 0 BORT}
+ {-987753600 30000 1 BORTST}
+ {-979892400 28800 0 BORT}
+ {-956217600 30000 1 BORTST}
+ {-948356400 28800 0 BORT}
+ {-924595200 30000 1 BORTST}
+ {-916734000 28800 0 BORT}
+ {-893059200 30000 1 BORTST}
+ {-885198000 28800 0 BORT}
+ {-879667200 32400 0 JST}
+ {-767005200 28800 0 BORT}
+ {378662400 28800 0 MYT}
+}
diff --git a/library/tzdata/Asia/Kuwait b/library/tzdata/Asia/Kuwait
new file mode 100644
index 0000000..15d26db
--- /dev/null
+++ b/library/tzdata/Asia/Kuwait
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kuwait) {
+ {-9223372036854775808 11516 0 LMT}
+ {-631163516 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Macao b/library/tzdata/Asia/Macao
new file mode 100644
index 0000000..6e972ff
--- /dev/null
+++ b/library/tzdata/Asia/Macao
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Macau)]} {
+ LoadTimeZoneFile Asia/Macau
+}
+set TZData(:Asia/Macao) $TZData(:Asia/Macau)
diff --git a/library/tzdata/Asia/Macau b/library/tzdata/Asia/Macau
new file mode 100644
index 0000000..9d4abfe
--- /dev/null
+++ b/library/tzdata/Asia/Macau
@@ -0,0 +1,46 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Macau) {
+ {-9223372036854775808 27260 0 LMT}
+ {-1830411260 28800 0 MOT}
+ {-277360200 32400 1 MOST}
+ {-257405400 28800 0 MOT}
+ {-245910600 32400 1 MOST}
+ {-225955800 28800 0 MOT}
+ {-214473600 32400 1 MOST}
+ {-194506200 28800 0 MOT}
+ {-182406600 32400 1 MOST}
+ {-163056600 28800 0 MOT}
+ {-150969600 32400 1 MOST}
+ {-131619600 28800 0 MOT}
+ {-117088200 32400 1 MOST}
+ {-101367000 28800 0 MOT}
+ {-85638600 32400 1 MOST}
+ {-69312600 28800 0 MOT}
+ {-53584200 32400 1 MOST}
+ {-37863000 28800 0 MOT}
+ {-22134600 32400 1 MOST}
+ {-6413400 28800 0 MOT}
+ {9315000 32400 1 MOST}
+ {25036200 28800 0 MOT}
+ {40764600 32400 1 MOST}
+ {56485800 28800 0 MOT}
+ {72201600 32400 1 MOST}
+ {87922800 28800 0 MOT}
+ {103651200 32400 1 MOST}
+ {119977200 28800 0 MOT}
+ {135705600 32400 1 MOST}
+ {151439400 28800 0 MOT}
+ {167167800 32400 1 MOST}
+ {182889000 28800 0 MOT}
+ {198617400 32400 1 MOST}
+ {214338600 28800 0 MOT}
+ {230067000 32400 1 MOST}
+ {245788200 28800 0 MOT}
+ {261504000 32400 1 MOST}
+ {277225200 28800 0 MOT}
+ {292953600 32400 1 MOST}
+ {309279600 28800 0 MOT}
+ {325008000 32400 1 MOST}
+ {340729200 28800 0 MOT}
+}
diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan
new file mode 100644
index 0000000..62e01c5
--- /dev/null
+++ b/library/tzdata/Asia/Magadan
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Magadan) {
+ {-9223372036854775808 36192 0 LMT}
+ {-1441188192 36000 0 MAGT}
+ {-1247565600 39600 0 MAGMMTT}
+ {354891600 43200 1 MAGST}
+ {370699200 39600 0 MAGT}
+ {386427600 43200 1 MAGST}
+ {402235200 39600 0 MAGT}
+ {417963600 43200 1 MAGST}
+ {433771200 39600 0 MAGT}
+ {449586000 43200 1 MAGST}
+ {465318000 39600 0 MAGT}
+ {481042800 43200 1 MAGST}
+ {496767600 39600 0 MAGT}
+ {512492400 43200 1 MAGST}
+ {528217200 39600 0 MAGT}
+ {543942000 43200 1 MAGST}
+ {559666800 39600 0 MAGT}
+ {575391600 43200 1 MAGST}
+ {591116400 39600 0 MAGT}
+ {606841200 43200 1 MAGST}
+ {622566000 39600 0 MAGT}
+ {638290800 43200 1 MAGST}
+ {654620400 39600 0 MAGT}
+ {670345200 36000 0 MAGMMTT}
+ {670348800 39600 1 MAGST}
+ {686073600 36000 0 MAGT}
+ {695750400 39600 0 MAGMMTT}
+ {701784000 43200 1 MAGST}
+ {717505200 39600 0 MAGT}
+ {733244400 43200 1 MAGST}
+ {748969200 39600 0 MAGT}
+ {764694000 43200 1 MAGST}
+ {780418800 39600 0 MAGT}
+ {796143600 43200 1 MAGST}
+ {811868400 39600 0 MAGT}
+ {828198000 43200 1 MAGST}
+ {846342000 39600 0 MAGT}
+ {859647600 43200 1 MAGST}
+ {877791600 39600 0 MAGT}
+ {891097200 43200 1 MAGST}
+ {909241200 39600 0 MAGT}
+ {922546800 43200 1 MAGST}
+ {941295600 39600 0 MAGT}
+ {953996400 43200 1 MAGST}
+ {972745200 39600 0 MAGT}
+ {985446000 43200 1 MAGST}
+ {1004194800 39600 0 MAGT}
+ {1017500400 43200 1 MAGST}
+ {1035644400 39600 0 MAGT}
+ {1048950000 43200 1 MAGST}
+ {1067094000 39600 0 MAGT}
+ {1080399600 43200 1 MAGST}
+ {1099148400 39600 0 MAGT}
+ {1111849200 43200 1 MAGST}
+ {1130598000 39600 0 MAGT}
+ {1143298800 43200 1 MAGST}
+ {1162047600 39600 0 MAGT}
+ {1174748400 43200 1 MAGST}
+ {1193497200 39600 0 MAGT}
+ {1206802800 43200 1 MAGST}
+ {1224946800 39600 0 MAGT}
+ {1238252400 43200 1 MAGST}
+ {1256396400 39600 0 MAGT}
+ {1269702000 43200 1 MAGST}
+ {1288450800 39600 0 MAGT}
+ {1301151600 43200 0 MAGT}
+}
diff --git a/library/tzdata/Asia/Makassar b/library/tzdata/Asia/Makassar
new file mode 100644
index 0000000..be947f3
--- /dev/null
+++ b/library/tzdata/Asia/Makassar
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Makassar) {
+ {-9223372036854775808 28656 0 LMT}
+ {-1577951856 28656 0 MMT}
+ {-1172908656 28800 0 WITA}
+ {-880272000 32400 0 JST}
+ {-766054800 28800 0 WITA}
+}
diff --git a/library/tzdata/Asia/Manila b/library/tzdata/Asia/Manila
new file mode 100644
index 0000000..9cc25e8
--- /dev/null
+++ b/library/tzdata/Asia/Manila
@@ -0,0 +1,15 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Manila) {
+ {-9223372036854775808 -57360 0 LMT}
+ {-3944621040 29040 0 LMT}
+ {-2229321840 28800 0 PHT}
+ {-1046678400 32400 1 PHST}
+ {-1038733200 28800 0 PHT}
+ {-873273600 32400 0 JST}
+ {-794221200 28800 0 PHT}
+ {-496224000 32400 1 PHST}
+ {-489315600 28800 0 PHT}
+ {259344000 32400 1 PHST}
+ {275151600 28800 0 PHT}
+}
diff --git a/library/tzdata/Asia/Muscat b/library/tzdata/Asia/Muscat
new file mode 100644
index 0000000..a69b880
--- /dev/null
+++ b/library/tzdata/Asia/Muscat
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Muscat) {
+ {-9223372036854775808 14064 0 LMT}
+ {-1577937264 14400 0 GST}
+}
diff --git a/library/tzdata/Asia/Nicosia b/library/tzdata/Asia/Nicosia
new file mode 100644
index 0000000..73a7b4c
--- /dev/null
+++ b/library/tzdata/Asia/Nicosia
@@ -0,0 +1,257 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Nicosia) {
+ {-9223372036854775808 8008 0 LMT}
+ {-1518920008 7200 0 EET}
+ {166572000 10800 1 EEST}
+ {182293200 7200 0 EET}
+ {200959200 10800 1 EEST}
+ {213829200 7200 0 EET}
+ {228866400 10800 1 EEST}
+ {243982800 7200 0 EET}
+ {260316000 10800 1 EEST}
+ {276123600 7200 0 EET}
+ {291765600 10800 1 EEST}
+ {307486800 7200 0 EET}
+ {323820000 10800 1 EEST}
+ {338936400 7200 0 EET}
+ {354664800 10800 1 EEST}
+ {370386000 7200 0 EET}
+ {386114400 10800 1 EEST}
+ {401835600 7200 0 EET}
+ {417564000 10800 1 EEST}
+ {433285200 7200 0 EET}
+ {449013600 10800 1 EEST}
+ {465339600 7200 0 EET}
+ {481068000 10800 1 EEST}
+ {496789200 7200 0 EET}
+ {512517600 10800 1 EEST}
+ {528238800 7200 0 EET}
+ {543967200 10800 1 EEST}
+ {559688400 7200 0 EET}
+ {575416800 10800 1 EEST}
+ {591138000 7200 0 EET}
+ {606866400 10800 1 EEST}
+ {622587600 7200 0 EET}
+ {638316000 10800 1 EEST}
+ {654642000 7200 0 EET}
+ {670370400 10800 1 EEST}
+ {686091600 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {796168800 10800 1 EEST}
+ {811890000 7200 0 EET}
+ {828223200 10800 1 EEST}
+ {843944400 7200 0 EET}
+ {859672800 10800 1 EEST}
+ {875394000 7200 0 EET}
+ {891122400 10800 1 EEST}
+ {904597200 10800 0 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Asia/Novokuznetsk b/library/tzdata/Asia/Novokuznetsk
new file mode 100644
index 0000000..9cd45c0
--- /dev/null
+++ b/library/tzdata/Asia/Novokuznetsk
@@ -0,0 +1,71 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Novokuznetsk) {
+ {-9223372036854775808 20928 0 NMT}
+ {-1577512128 21600 0 KRAT}
+ {-1247551200 25200 0 KRAMMTT}
+ {354906000 28800 1 KRAST}
+ {370713600 25200 0 KRAT}
+ {386442000 28800 1 KRAST}
+ {402249600 25200 0 KRAT}
+ {417978000 28800 1 KRAST}
+ {433785600 25200 0 KRAT}
+ {449600400 28800 1 KRAST}
+ {465332400 25200 0 KRAT}
+ {481057200 28800 1 KRAST}
+ {496782000 25200 0 KRAT}
+ {512506800 28800 1 KRAST}
+ {528231600 25200 0 KRAT}
+ {543956400 28800 1 KRAST}
+ {559681200 25200 0 KRAT}
+ {575406000 28800 1 KRAST}
+ {591130800 25200 0 KRAT}
+ {606855600 28800 1 KRAST}
+ {622580400 25200 0 KRAT}
+ {638305200 28800 1 KRAST}
+ {654634800 25200 0 KRAT}
+ {670359600 21600 0 KRAMMTT}
+ {670363200 25200 1 KRAST}
+ {686088000 21600 0 KRAT}
+ {695764800 25200 0 KRAMMTT}
+ {701798400 28800 1 KRAST}
+ {717519600 25200 0 KRAT}
+ {733258800 28800 1 KRAST}
+ {748983600 25200 0 KRAT}
+ {764708400 28800 1 KRAST}
+ {780433200 25200 0 KRAT}
+ {796158000 28800 1 KRAST}
+ {811882800 25200 0 KRAT}
+ {828212400 28800 1 KRAST}
+ {846356400 25200 0 KRAT}
+ {859662000 28800 1 KRAST}
+ {877806000 25200 0 KRAT}
+ {891111600 28800 1 KRAST}
+ {909255600 25200 0 KRAT}
+ {922561200 28800 1 KRAST}
+ {941310000 25200 0 KRAT}
+ {954010800 28800 1 KRAST}
+ {972759600 25200 0 KRAT}
+ {985460400 28800 1 KRAST}
+ {1004209200 25200 0 KRAT}
+ {1017514800 28800 1 KRAST}
+ {1035658800 25200 0 KRAT}
+ {1048964400 28800 1 KRAST}
+ {1067108400 25200 0 KRAT}
+ {1080414000 28800 1 KRAST}
+ {1099162800 25200 0 KRAT}
+ {1111863600 28800 1 KRAST}
+ {1130612400 25200 0 KRAT}
+ {1143313200 28800 1 KRAST}
+ {1162062000 25200 0 KRAT}
+ {1174762800 28800 1 KRAST}
+ {1193511600 25200 0 KRAT}
+ {1206817200 28800 1 KRAST}
+ {1224961200 25200 0 KRAT}
+ {1238266800 28800 1 KRAST}
+ {1256410800 25200 0 KRAT}
+ {1269716400 21600 0 NOVMMTT}
+ {1269720000 25200 1 NOVST}
+ {1288468800 21600 0 NOVT}
+ {1301169600 25200 0 NOVT}
+}
diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk
new file mode 100644
index 0000000..5032eec
--- /dev/null
+++ b/library/tzdata/Asia/Novosibirsk
@@ -0,0 +1,71 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Novosibirsk) {
+ {-9223372036854775808 19900 0 LMT}
+ {-1579476700 21600 0 NOVT}
+ {-1247551200 25200 0 NOVMMTT}
+ {354906000 28800 1 NOVST}
+ {370713600 25200 0 NOVT}
+ {386442000 28800 1 NOVST}
+ {402249600 25200 0 NOVT}
+ {417978000 28800 1 NOVST}
+ {433785600 25200 0 NOVT}
+ {449600400 28800 1 NOVST}
+ {465332400 25200 0 NOVT}
+ {481057200 28800 1 NOVST}
+ {496782000 25200 0 NOVT}
+ {512506800 28800 1 NOVST}
+ {528231600 25200 0 NOVT}
+ {543956400 28800 1 NOVST}
+ {559681200 25200 0 NOVT}
+ {575406000 28800 1 NOVST}
+ {591130800 25200 0 NOVT}
+ {606855600 28800 1 NOVST}
+ {622580400 25200 0 NOVT}
+ {638305200 28800 1 NOVST}
+ {654634800 25200 0 NOVT}
+ {670359600 21600 0 NOVMMTT}
+ {670363200 25200 1 NOVST}
+ {686088000 21600 0 NOVT}
+ {695764800 25200 0 NOVMMTT}
+ {701798400 28800 1 NOVST}
+ {717519600 25200 0 NOVT}
+ {733258800 28800 1 NOVST}
+ {738090000 25200 0 NOVST}
+ {748987200 21600 0 NOVT}
+ {764712000 25200 1 NOVST}
+ {780436800 21600 0 NOVT}
+ {796161600 25200 1 NOVST}
+ {811886400 21600 0 NOVT}
+ {828216000 25200 1 NOVST}
+ {846360000 21600 0 NOVT}
+ {859665600 25200 1 NOVST}
+ {877809600 21600 0 NOVT}
+ {891115200 25200 1 NOVST}
+ {909259200 21600 0 NOVT}
+ {922564800 25200 1 NOVST}
+ {941313600 21600 0 NOVT}
+ {954014400 25200 1 NOVST}
+ {972763200 21600 0 NOVT}
+ {985464000 25200 1 NOVST}
+ {1004212800 21600 0 NOVT}
+ {1017518400 25200 1 NOVST}
+ {1035662400 21600 0 NOVT}
+ {1048968000 25200 1 NOVST}
+ {1067112000 21600 0 NOVT}
+ {1080417600 25200 1 NOVST}
+ {1099166400 21600 0 NOVT}
+ {1111867200 25200 1 NOVST}
+ {1130616000 21600 0 NOVT}
+ {1143316800 25200 1 NOVST}
+ {1162065600 21600 0 NOVT}
+ {1174766400 25200 1 NOVST}
+ {1193515200 21600 0 NOVT}
+ {1206820800 25200 1 NOVST}
+ {1224964800 21600 0 NOVT}
+ {1238270400 25200 1 NOVST}
+ {1256414400 21600 0 NOVT}
+ {1269720000 25200 1 NOVST}
+ {1288468800 21600 0 NOVT}
+ {1301169600 25200 0 NOVT}
+}
diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk
new file mode 100644
index 0000000..ca90d2e
--- /dev/null
+++ b/library/tzdata/Asia/Omsk
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Omsk) {
+ {-9223372036854775808 17616 0 LMT}
+ {-1582088016 18000 0 OMST}
+ {-1247547600 21600 0 OMSMMTT}
+ {354909600 25200 1 OMSST}
+ {370717200 21600 0 OMST}
+ {386445600 25200 1 OMSST}
+ {402253200 21600 0 OMST}
+ {417981600 25200 1 OMSST}
+ {433789200 21600 0 OMST}
+ {449604000 25200 1 OMSST}
+ {465336000 21600 0 OMST}
+ {481060800 25200 1 OMSST}
+ {496785600 21600 0 OMST}
+ {512510400 25200 1 OMSST}
+ {528235200 21600 0 OMST}
+ {543960000 25200 1 OMSST}
+ {559684800 21600 0 OMST}
+ {575409600 25200 1 OMSST}
+ {591134400 21600 0 OMST}
+ {606859200 25200 1 OMSST}
+ {622584000 21600 0 OMST}
+ {638308800 25200 1 OMSST}
+ {654638400 21600 0 OMST}
+ {670363200 18000 0 OMSMMTT}
+ {670366800 21600 1 OMSST}
+ {686091600 18000 0 OMST}
+ {695768400 21600 0 OMSMMTT}
+ {701802000 25200 1 OMSST}
+ {717523200 21600 0 OMST}
+ {733262400 25200 1 OMSST}
+ {748987200 21600 0 OMST}
+ {764712000 25200 1 OMSST}
+ {780436800 21600 0 OMST}
+ {796161600 25200 1 OMSST}
+ {811886400 21600 0 OMST}
+ {828216000 25200 1 OMSST}
+ {846360000 21600 0 OMST}
+ {859665600 25200 1 OMSST}
+ {877809600 21600 0 OMST}
+ {891115200 25200 1 OMSST}
+ {909259200 21600 0 OMST}
+ {922564800 25200 1 OMSST}
+ {941313600 21600 0 OMST}
+ {954014400 25200 1 OMSST}
+ {972763200 21600 0 OMST}
+ {985464000 25200 1 OMSST}
+ {1004212800 21600 0 OMST}
+ {1017518400 25200 1 OMSST}
+ {1035662400 21600 0 OMST}
+ {1048968000 25200 1 OMSST}
+ {1067112000 21600 0 OMST}
+ {1080417600 25200 1 OMSST}
+ {1099166400 21600 0 OMST}
+ {1111867200 25200 1 OMSST}
+ {1130616000 21600 0 OMST}
+ {1143316800 25200 1 OMSST}
+ {1162065600 21600 0 OMST}
+ {1174766400 25200 1 OMSST}
+ {1193515200 21600 0 OMST}
+ {1206820800 25200 1 OMSST}
+ {1224964800 21600 0 OMST}
+ {1238270400 25200 1 OMSST}
+ {1256414400 21600 0 OMST}
+ {1269720000 25200 1 OMSST}
+ {1288468800 21600 0 OMST}
+ {1301169600 25200 0 OMST}
+}
diff --git a/library/tzdata/Asia/Oral b/library/tzdata/Asia/Oral
new file mode 100644
index 0000000..88b9a29
--- /dev/null
+++ b/library/tzdata/Asia/Oral
@@ -0,0 +1,58 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Oral) {
+ {-9223372036854775808 12324 0 LMT}
+ {-1441164324 14400 0 URAT}
+ {-1247544000 18000 0 URAT}
+ {354913200 21600 1 URAST}
+ {370720800 21600 0 URAT}
+ {386445600 18000 0 URAT}
+ {386449200 21600 1 URAST}
+ {402256800 18000 0 URAT}
+ {417985200 21600 1 URAST}
+ {433792800 18000 0 URAT}
+ {449607600 21600 1 URAST}
+ {465339600 18000 0 URAT}
+ {481064400 21600 1 URAST}
+ {496789200 18000 0 URAT}
+ {512514000 21600 1 URAST}
+ {528238800 18000 0 URAT}
+ {543963600 21600 1 URAST}
+ {559688400 18000 0 URAT}
+ {575413200 21600 1 URAST}
+ {591138000 18000 0 URAT}
+ {606862800 14400 0 URAT}
+ {606866400 18000 1 URAST}
+ {622591200 14400 0 URAT}
+ {638316000 18000 1 URAST}
+ {654645600 14400 0 URAT}
+ {662673600 14400 0 URAT}
+ {692827200 14400 0 ORAT}
+ {701809200 18000 1 ORAST}
+ {717530400 14400 0 ORAT}
+ {733269600 18000 1 ORAST}
+ {748994400 14400 0 ORAT}
+ {764719200 18000 1 ORAST}
+ {780444000 14400 0 ORAT}
+ {796168800 18000 1 ORAST}
+ {811893600 14400 0 ORAT}
+ {828223200 18000 1 ORAST}
+ {846367200 14400 0 ORAT}
+ {859672800 18000 1 ORAST}
+ {877816800 14400 0 ORAT}
+ {891122400 18000 1 ORAST}
+ {909266400 14400 0 ORAT}
+ {922572000 18000 1 ORAST}
+ {941320800 14400 0 ORAT}
+ {954021600 18000 1 ORAST}
+ {972770400 14400 0 ORAT}
+ {985471200 18000 1 ORAST}
+ {1004220000 14400 0 ORAT}
+ {1017525600 18000 1 ORAST}
+ {1035669600 14400 0 ORAT}
+ {1048975200 18000 1 ORAST}
+ {1067119200 14400 0 ORAT}
+ {1080424800 18000 1 ORAST}
+ {1099173600 14400 0 ORAT}
+ {1110830400 18000 0 ORAT}
+}
diff --git a/library/tzdata/Asia/Phnom_Penh b/library/tzdata/Asia/Phnom_Penh
new file mode 100644
index 0000000..4f28420
--- /dev/null
+++ b/library/tzdata/Asia/Phnom_Penh
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Phnom_Penh) {
+ {-9223372036854775808 25180 0 LMT}
+ {-2005973980 25580 0 SMT}
+ {-1855983920 25200 0 ICT}
+ {-1819954800 28800 0 ICT}
+ {-1220428800 25200 0 ICT}
+}
diff --git a/library/tzdata/Asia/Pontianak b/library/tzdata/Asia/Pontianak
new file mode 100644
index 0000000..728b552
--- /dev/null
+++ b/library/tzdata/Asia/Pontianak
@@ -0,0 +1,13 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Pontianak) {
+ {-9223372036854775808 26240 0 LMT}
+ {-1946186240 26240 0 PMT}
+ {-1172906240 27000 0 WIB}
+ {-881220600 32400 0 JST}
+ {-766054800 27000 0 WIB}
+ {-683883000 28800 0 WIB}
+ {-620812800 27000 0 WIB}
+ {-189415800 28800 0 WITA}
+ {567964800 25200 0 WIB}
+}
diff --git a/library/tzdata/Asia/Pyongyang b/library/tzdata/Asia/Pyongyang
new file mode 100644
index 0000000..21c9a68
--- /dev/null
+++ b/library/tzdata/Asia/Pyongyang
@@ -0,0 +1,11 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Pyongyang) {
+ {-9223372036854775808 30180 0 LMT}
+ {-2524551780 30600 0 KST}
+ {-2053931400 32400 0 KST}
+ {-1325494800 30600 0 KST}
+ {-1199262600 32400 0 KST}
+ {-498128400 28800 0 KST}
+ {-264931200 32400 0 KST}
+}
diff --git a/library/tzdata/Asia/Qatar b/library/tzdata/Asia/Qatar
new file mode 100644
index 0000000..bfb4eb4
--- /dev/null
+++ b/library/tzdata/Asia/Qatar
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Qatar) {
+ {-9223372036854775808 12368 0 LMT}
+ {-1577935568 14400 0 GST}
+ {76190400 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Qyzylorda b/library/tzdata/Asia/Qyzylorda
new file mode 100644
index 0000000..16da574
--- /dev/null
+++ b/library/tzdata/Asia/Qyzylorda
@@ -0,0 +1,58 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Qyzylorda) {
+ {-9223372036854775808 15712 0 LMT}
+ {-1441167712 14400 0 KIZT}
+ {-1247544000 18000 0 KIZT}
+ {354913200 21600 1 KIZST}
+ {370720800 21600 0 KIZT}
+ {386445600 18000 0 KIZT}
+ {386449200 21600 1 KIZST}
+ {402256800 18000 0 KIZT}
+ {417985200 21600 1 KIZST}
+ {433792800 18000 0 KIZT}
+ {449607600 21600 1 KIZST}
+ {465339600 18000 0 KIZT}
+ {481064400 21600 1 KIZST}
+ {496789200 18000 0 KIZT}
+ {512514000 21600 1 KIZST}
+ {528238800 18000 0 KIZT}
+ {543963600 21600 1 KIZST}
+ {559688400 18000 0 KIZT}
+ {575413200 21600 1 KIZST}
+ {591138000 18000 0 KIZT}
+ {606862800 21600 1 KIZST}
+ {622587600 18000 0 KIZT}
+ {638312400 21600 1 KIZST}
+ {654642000 18000 0 KIZT}
+ {662670000 18000 0 KIZT}
+ {692823600 18000 0 QYZT}
+ {695768400 21600 0 QYZT}
+ {701802000 25200 1 QYZST}
+ {717523200 21600 0 QYZT}
+ {733262400 25200 1 QYZST}
+ {748987200 21600 0 QYZT}
+ {764712000 25200 1 QYZST}
+ {780436800 21600 0 QYZT}
+ {796161600 25200 1 QYZST}
+ {811886400 21600 0 QYZT}
+ {828216000 25200 1 QYZST}
+ {846360000 21600 0 QYZT}
+ {859665600 25200 1 QYZST}
+ {877809600 21600 0 QYZT}
+ {891115200 25200 1 QYZST}
+ {909259200 21600 0 QYZT}
+ {922564800 25200 1 QYZST}
+ {941313600 21600 0 QYZT}
+ {954014400 25200 1 QYZST}
+ {972763200 21600 0 QYZT}
+ {985464000 25200 1 QYZST}
+ {1004212800 21600 0 QYZT}
+ {1017518400 25200 1 QYZST}
+ {1035662400 21600 0 QYZT}
+ {1048968000 25200 1 QYZST}
+ {1067112000 21600 0 QYZT}
+ {1080417600 25200 1 QYZST}
+ {1099166400 21600 0 QYZT}
+ {1110823200 21600 0 QYZT}
+}
diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon
new file mode 100644
index 0000000..4f3ac02
--- /dev/null
+++ b/library/tzdata/Asia/Rangoon
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Rangoon) {
+ {-9223372036854775808 23080 0 LMT}
+ {-2840163880 23080 0 RMT}
+ {-1577946280 23400 0 BURT}
+ {-873268200 32400 0 JST}
+ {-778410000 23400 0 MMT}
+}
diff --git a/library/tzdata/Asia/Riyadh b/library/tzdata/Asia/Riyadh
new file mode 100644
index 0000000..0ef28a9
--- /dev/null
+++ b/library/tzdata/Asia/Riyadh
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Riyadh) {
+ {-9223372036854775808 11212 0 LMT}
+ {-631163212 10800 0 AST}
+}
diff --git a/library/tzdata/Asia/Saigon b/library/tzdata/Asia/Saigon
new file mode 100644
index 0000000..1e42eed
--- /dev/null
+++ b/library/tzdata/Asia/Saigon
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Ho_Chi_Minh)]} {
+ LoadTimeZoneFile Asia/Ho_Chi_Minh
+}
+set TZData(:Asia/Saigon) $TZData(:Asia/Ho_Chi_Minh)
diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin
new file mode 100644
index 0000000..0b29e82
--- /dev/null
+++ b/library/tzdata/Asia/Sakhalin
@@ -0,0 +1,72 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Sakhalin) {
+ {-9223372036854775808 34248 0 LMT}
+ {-2031039048 32400 0 CJT}
+ {-1009875600 32400 0 JST}
+ {-768560400 39600 0 SAKMMTT}
+ {354891600 43200 1 SAKST}
+ {370699200 39600 0 SAKT}
+ {386427600 43200 1 SAKST}
+ {402235200 39600 0 SAKT}
+ {417963600 43200 1 SAKST}
+ {433771200 39600 0 SAKT}
+ {449586000 43200 1 SAKST}
+ {465318000 39600 0 SAKT}
+ {481042800 43200 1 SAKST}
+ {496767600 39600 0 SAKT}
+ {512492400 43200 1 SAKST}
+ {528217200 39600 0 SAKT}
+ {543942000 43200 1 SAKST}
+ {559666800 39600 0 SAKT}
+ {575391600 43200 1 SAKST}
+ {591116400 39600 0 SAKT}
+ {606841200 43200 1 SAKST}
+ {622566000 39600 0 SAKT}
+ {638290800 43200 1 SAKST}
+ {654620400 39600 0 SAKT}
+ {670345200 36000 0 SAKMMTT}
+ {670348800 39600 1 SAKST}
+ {686073600 36000 0 SAKT}
+ {695750400 39600 0 SAKMMTT}
+ {701784000 43200 1 SAKST}
+ {717505200 39600 0 SAKT}
+ {733244400 43200 1 SAKST}
+ {748969200 39600 0 SAKT}
+ {764694000 43200 1 SAKST}
+ {780418800 39600 0 SAKT}
+ {796143600 43200 1 SAKST}
+ {811868400 39600 0 SAKT}
+ {828198000 43200 1 SAKST}
+ {846342000 39600 0 SAKT}
+ {859647600 36000 0 SAKMMTT}
+ {859651200 39600 1 SAKST}
+ {877795200 36000 0 SAKT}
+ {891100800 39600 1 SAKST}
+ {909244800 36000 0 SAKT}
+ {922550400 39600 1 SAKST}
+ {941299200 36000 0 SAKT}
+ {954000000 39600 1 SAKST}
+ {972748800 36000 0 SAKT}
+ {985449600 39600 1 SAKST}
+ {1004198400 36000 0 SAKT}
+ {1017504000 39600 1 SAKST}
+ {1035648000 36000 0 SAKT}
+ {1048953600 39600 1 SAKST}
+ {1067097600 36000 0 SAKT}
+ {1080403200 39600 1 SAKST}
+ {1099152000 36000 0 SAKT}
+ {1111852800 39600 1 SAKST}
+ {1130601600 36000 0 SAKT}
+ {1143302400 39600 1 SAKST}
+ {1162051200 36000 0 SAKT}
+ {1174752000 39600 1 SAKST}
+ {1193500800 36000 0 SAKT}
+ {1206806400 39600 1 SAKST}
+ {1224950400 36000 0 SAKT}
+ {1238256000 39600 1 SAKST}
+ {1256400000 36000 0 SAKT}
+ {1269705600 39600 1 SAKST}
+ {1288454400 36000 0 SAKT}
+ {1301155200 39600 0 SAKT}
+}
diff --git a/library/tzdata/Asia/Samarkand b/library/tzdata/Asia/Samarkand
new file mode 100644
index 0000000..6a1be11
--- /dev/null
+++ b/library/tzdata/Asia/Samarkand
@@ -0,0 +1,32 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Samarkand) {
+ {-9223372036854775808 16032 0 LMT}
+ {-1441168032 14400 0 SAMT}
+ {-1247544000 18000 0 SAMT}
+ {354913200 21600 1 SAMST}
+ {370720800 21600 0 TAST}
+ {386445600 18000 0 SAMT}
+ {386449200 21600 1 SAMST}
+ {402256800 18000 0 SAMT}
+ {417985200 21600 1 SAMST}
+ {433792800 18000 0 SAMT}
+ {449607600 21600 1 SAMST}
+ {465339600 18000 0 SAMT}
+ {481064400 21600 1 SAMST}
+ {496789200 18000 0 SAMT}
+ {512514000 21600 1 SAMST}
+ {528238800 18000 0 SAMT}
+ {543963600 21600 1 SAMST}
+ {559688400 18000 0 SAMT}
+ {575413200 21600 1 SAMST}
+ {591138000 18000 0 SAMT}
+ {606862800 21600 1 SAMST}
+ {622587600 18000 0 SAMT}
+ {638312400 21600 1 SAMST}
+ {654642000 18000 0 SAMT}
+ {670366800 21600 1 SAMST}
+ {683665200 21600 0 UZST}
+ {686091600 18000 0 UZT}
+ {694206000 18000 0 UZT}
+}
diff --git a/library/tzdata/Asia/Seoul b/library/tzdata/Asia/Seoul
new file mode 100644
index 0000000..9c83e30
--- /dev/null
+++ b/library/tzdata/Asia/Seoul
@@ -0,0 +1,18 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Seoul) {
+ {-9223372036854775808 30472 0 LMT}
+ {-2524552072 30600 0 KST}
+ {-2053931400 32400 0 KST}
+ {-1325494800 30600 0 KST}
+ {-1199262600 32400 0 KST}
+ {-498128400 28800 0 KST}
+ {-303984000 32400 1 KDT}
+ {-293533200 28800 0 KST}
+ {-264931200 30600 0 KST}
+ {-39515400 32400 0 KST}
+ {547570800 36000 1 KDT}
+ {560872800 32400 0 KST}
+ {579020400 36000 1 KDT}
+ {592322400 32400 0 KST}
+}
diff --git a/library/tzdata/Asia/Shanghai b/library/tzdata/Asia/Shanghai
new file mode 100644
index 0000000..4b3cc3b
--- /dev/null
+++ b/library/tzdata/Asia/Shanghai
@@ -0,0 +1,23 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Shanghai) {
+ {-9223372036854775808 29157 0 LMT}
+ {-1325491557 28800 0 CST}
+ {-933494400 32400 1 CDT}
+ {-923130000 28800 0 CST}
+ {-908784000 32400 1 CDT}
+ {-891594000 28800 0 CST}
+ {-662716800 28800 0 CST}
+ {515520000 32400 1 CDT}
+ {527007600 28800 0 CST}
+ {545155200 32400 1 CDT}
+ {558457200 28800 0 CST}
+ {576604800 32400 1 CDT}
+ {589906800 28800 0 CST}
+ {608659200 32400 1 CDT}
+ {621961200 28800 0 CST}
+ {640108800 32400 1 CDT}
+ {653410800 28800 0 CST}
+ {671558400 32400 1 CDT}
+ {684860400 28800 0 CST}
+}
diff --git a/library/tzdata/Asia/Singapore b/library/tzdata/Asia/Singapore
new file mode 100644
index 0000000..e2f226e
--- /dev/null
+++ b/library/tzdata/Asia/Singapore
@@ -0,0 +1,14 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Singapore) {
+ {-9223372036854775808 24925 0 LMT}
+ {-2177477725 24925 0 SMT}
+ {-2038200925 25200 0 MALT}
+ {-1167634800 26400 1 MALST}
+ {-1073028000 26400 0 MALT}
+ {-894180000 27000 0 MALT}
+ {-879665400 32400 0 JST}
+ {-767005200 27000 0 MALT}
+ {-138785400 27000 0 SGT}
+ {378664200 28800 0 SGT}
+}
diff --git a/library/tzdata/Asia/Taipei b/library/tzdata/Asia/Taipei
new file mode 100644
index 0000000..a3c7ecf
--- /dev/null
+++ b/library/tzdata/Asia/Taipei
@@ -0,0 +1,46 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Taipei) {
+ {-9223372036854775808 29160 0 LMT}
+ {-2335248360 28800 0 CST}
+ {-778579200 32400 1 CDT}
+ {-765363600 28800 0 CST}
+ {-747043200 32400 1 CDT}
+ {-733827600 28800 0 CST}
+ {-715507200 32400 1 CDT}
+ {-702291600 28800 0 CST}
+ {-683884800 32400 1 CDT}
+ {-670669200 28800 0 CST}
+ {-652348800 32400 1 CDT}
+ {-639133200 28800 0 CST}
+ {-620812800 32400 1 CDT}
+ {-607597200 28800 0 CST}
+ {-589276800 32400 1 CDT}
+ {-576061200 28800 0 CST}
+ {-562924800 32400 1 CDT}
+ {-541760400 28800 0 CST}
+ {-528710400 32400 1 CDT}
+ {-510224400 28800 0 CST}
+ {-497174400 32400 1 CDT}
+ {-478688400 28800 0 CST}
+ {-465638400 32400 1 CDT}
+ {-449830800 28800 0 CST}
+ {-434016000 32400 1 CDT}
+ {-418208400 28800 0 CST}
+ {-402480000 32400 1 CDT}
+ {-386672400 28800 0 CST}
+ {-370944000 32400 1 CDT}
+ {-355136400 28800 0 CST}
+ {-339408000 32400 1 CDT}
+ {-323600400 28800 0 CST}
+ {-302515200 32400 1 CDT}
+ {-291978000 28800 0 CST}
+ {-270979200 32400 1 CDT}
+ {-260442000 28800 0 CST}
+ {133977600 32400 1 CDT}
+ {149785200 28800 0 CST}
+ {165513600 32400 1 CDT}
+ {181321200 28800 0 CST}
+ {299520000 32400 1 CDT}
+ {307465200 28800 0 CST}
+}
diff --git a/library/tzdata/Asia/Tashkent b/library/tzdata/Asia/Tashkent
new file mode 100644
index 0000000..fcee755
--- /dev/null
+++ b/library/tzdata/Asia/Tashkent
@@ -0,0 +1,32 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Tashkent) {
+ {-9223372036854775808 16632 0 LMT}
+ {-1441168632 18000 0 TAST}
+ {-1247547600 21600 0 TAST}
+ {354909600 25200 1 TASST}
+ {370717200 21600 0 TAST}
+ {386445600 25200 1 TASST}
+ {402253200 21600 0 TAST}
+ {417981600 25200 1 TASST}
+ {433789200 21600 0 TAST}
+ {449604000 25200 1 TASST}
+ {465336000 21600 0 TAST}
+ {481060800 25200 1 TASST}
+ {496785600 21600 0 TAST}
+ {512510400 25200 1 TASST}
+ {528235200 21600 0 TAST}
+ {543960000 25200 1 TASST}
+ {559684800 21600 0 TAST}
+ {575409600 25200 1 TASST}
+ {591134400 21600 0 TAST}
+ {606859200 25200 1 TASST}
+ {622584000 21600 0 TAST}
+ {638308800 25200 1 TASST}
+ {654638400 21600 0 TAST}
+ {670363200 18000 0 TAST}
+ {670366800 21600 1 TASST}
+ {683665200 21600 0 UZST}
+ {686091600 18000 0 UZT}
+ {694206000 18000 0 UZT}
+}
diff --git a/library/tzdata/Asia/Tbilisi b/library/tzdata/Asia/Tbilisi
new file mode 100644
index 0000000..a716917
--- /dev/null
+++ b/library/tzdata/Asia/Tbilisi
@@ -0,0 +1,60 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Tbilisi) {
+ {-9223372036854775808 10756 0 LMT}
+ {-2840151556 10756 0 TBMT}
+ {-1441162756 10800 0 TBIT}
+ {-405140400 14400 0 TBIT}
+ {354916800 18000 1 TBIST}
+ {370724400 14400 0 TBIT}
+ {386452800 18000 1 TBIST}
+ {402260400 14400 0 TBIT}
+ {417988800 18000 1 TBIST}
+ {433796400 14400 0 TBIT}
+ {449611200 18000 1 TBIST}
+ {465343200 14400 0 TBIT}
+ {481068000 18000 1 TBIST}
+ {496792800 14400 0 TBIT}
+ {512517600 18000 1 TBIST}
+ {528242400 14400 0 TBIT}
+ {543967200 18000 1 TBIST}
+ {559692000 14400 0 TBIT}
+ {575416800 18000 1 TBIST}
+ {591141600 14400 0 TBIT}
+ {606866400 18000 1 TBIST}
+ {622591200 14400 0 TBIT}
+ {638316000 18000 1 TBIST}
+ {654645600 14400 0 TBIT}
+ {670370400 14400 1 TBIST}
+ {671140800 14400 0 GEST}
+ {686098800 10800 0 GET}
+ {694213200 10800 0 GET}
+ {701816400 14400 1 GEST}
+ {717537600 10800 0 GET}
+ {733266000 14400 1 GEST}
+ {748987200 10800 0 GET}
+ {764715600 14400 1 GEST}
+ {780440400 14400 0 GET}
+ {796161600 18000 1 GEST}
+ {811882800 14400 0 GET}
+ {828216000 18000 1 GEST}
+ {846360000 18000 1 GEST}
+ {859662000 18000 0 GEST}
+ {877806000 14400 0 GET}
+ {891115200 18000 1 GEST}
+ {909255600 14400 0 GET}
+ {922564800 18000 1 GEST}
+ {941310000 14400 0 GET}
+ {954014400 18000 1 GEST}
+ {972759600 14400 0 GET}
+ {985464000 18000 1 GEST}
+ {1004209200 14400 0 GET}
+ {1017518400 18000 1 GEST}
+ {1035658800 14400 0 GET}
+ {1048968000 18000 1 GEST}
+ {1067108400 14400 0 GET}
+ {1080417600 18000 1 GEST}
+ {1088280000 14400 0 GEST}
+ {1099177200 10800 0 GET}
+ {1111878000 14400 0 GET}
+}
diff --git a/library/tzdata/Asia/Tehran b/library/tzdata/Asia/Tehran
new file mode 100644
index 0000000..7dca0ae
--- /dev/null
+++ b/library/tzdata/Asia/Tehran
@@ -0,0 +1,105 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Tehran) {
+ {-9223372036854775808 12344 0 LMT}
+ {-1704165944 12344 0 TMT}
+ {-757394744 12600 0 IRST}
+ {247177800 14400 0 IRST}
+ {259272000 18000 1 IRDT}
+ {277758000 14400 0 IRST}
+ {283982400 12600 0 IRST}
+ {290809800 16200 1 IRDT}
+ {306531000 12600 0 IRST}
+ {322432200 16200 1 IRDT}
+ {338499000 12600 0 IRST}
+ {673216200 16200 1 IRDT}
+ {685481400 12600 0 IRST}
+ {701209800 16200 1 IRDT}
+ {717103800 12600 0 IRST}
+ {732745800 16200 1 IRDT}
+ {748639800 12600 0 IRST}
+ {764281800 16200 1 IRDT}
+ {780175800 12600 0 IRST}
+ {795817800 16200 1 IRDT}
+ {811711800 12600 0 IRST}
+ {827353800 16200 1 IRDT}
+ {843247800 12600 0 IRST}
+ {858976200 16200 1 IRDT}
+ {874870200 12600 0 IRST}
+ {890512200 16200 1 IRDT}
+ {906406200 12600 0 IRST}
+ {922048200 16200 1 IRDT}
+ {937942200 12600 0 IRST}
+ {953584200 16200 1 IRDT}
+ {969478200 12600 0 IRST}
+ {985206600 16200 1 IRDT}
+ {1001100600 12600 0 IRST}
+ {1016742600 16200 1 IRDT}
+ {1032636600 12600 0 IRST}
+ {1048278600 16200 1 IRDT}
+ {1064172600 12600 0 IRST}
+ {1079814600 16200 1 IRDT}
+ {1095708600 12600 0 IRST}
+ {1111437000 16200 1 IRDT}
+ {1127331000 12600 0 IRST}
+ {1206045000 16200 1 IRDT}
+ {1221939000 12600 0 IRST}
+ {1237667400 16200 1 IRDT}
+ {1253561400 12600 0 IRST}
+ {1269203400 16200 1 IRDT}
+ {1285097400 12600 0 IRST}
+ {1300739400 16200 1 IRDT}
+ {1316633400 12600 0 IRST}
+ {1332275400 16200 1 IRDT}
+ {1348169400 12600 0 IRST}
+ {1363897800 16200 1 IRDT}
+ {1379791800 12600 0 IRST}
+ {1395433800 16200 1 IRDT}
+ {1411327800 12600 0 IRST}
+ {1426969800 16200 1 IRDT}
+ {1442863800 12600 0 IRST}
+ {1458505800 16200 1 IRDT}
+ {1474399800 12600 0 IRST}
+ {1490128200 16200 1 IRDT}
+ {1506022200 12600 0 IRST}
+ {1521664200 16200 1 IRDT}
+ {1537558200 12600 0 IRST}
+ {1553200200 16200 1 IRDT}
+ {1569094200 12600 0 IRST}
+ {1584736200 16200 1 IRDT}
+ {1600630200 12600 0 IRST}
+ {1616358600 16200 1 IRDT}
+ {1632252600 12600 0 IRST}
+ {1647894600 16200 1 IRDT}
+ {1663788600 12600 0 IRST}
+ {1679430600 16200 1 IRDT}
+ {1695324600 12600 0 IRST}
+ {1710966600 16200 1 IRDT}
+ {1726860600 12600 0 IRST}
+ {1742589000 16200 1 IRDT}
+ {1758483000 12600 0 IRST}
+ {1774125000 16200 1 IRDT}
+ {1790019000 12600 0 IRST}
+ {1805661000 16200 1 IRDT}
+ {1821555000 12600 0 IRST}
+ {1837197000 16200 1 IRDT}
+ {1853091000 12600 0 IRST}
+ {1868733000 16200 1 IRDT}
+ {1884627000 12600 0 IRST}
+ {1900355400 16200 1 IRDT}
+ {1916249400 12600 0 IRST}
+ {1931891400 16200 1 IRDT}
+ {1947785400 12600 0 IRST}
+ {1963427400 16200 1 IRDT}
+ {1979321400 12600 0 IRST}
+ {1994963400 16200 1 IRDT}
+ {2010857400 12600 0 IRST}
+ {2026585800 16200 1 IRDT}
+ {2042479800 12600 0 IRST}
+ {2058121800 16200 1 IRDT}
+ {2074015800 12600 0 IRST}
+ {2089657800 16200 1 IRDT}
+ {2105551800 12600 0 IRST}
+ {2121193800 16200 1 IRDT}
+ {2137087800 12600 0 IRST}
+}
diff --git a/library/tzdata/Asia/Tel_Aviv b/library/tzdata/Asia/Tel_Aviv
new file mode 100644
index 0000000..3e7278d
--- /dev/null
+++ b/library/tzdata/Asia/Tel_Aviv
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Jerusalem)]} {
+ LoadTimeZoneFile Asia/Jerusalem
+}
+set TZData(:Asia/Tel_Aviv) $TZData(:Asia/Jerusalem)
diff --git a/library/tzdata/Asia/Thimbu b/library/tzdata/Asia/Thimbu
new file mode 100644
index 0000000..94b0846
--- /dev/null
+++ b/library/tzdata/Asia/Thimbu
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Thimphu)]} {
+ LoadTimeZoneFile Asia/Thimphu
+}
+set TZData(:Asia/Thimbu) $TZData(:Asia/Thimphu)
diff --git a/library/tzdata/Asia/Thimphu b/library/tzdata/Asia/Thimphu
new file mode 100644
index 0000000..8c981de
--- /dev/null
+++ b/library/tzdata/Asia/Thimphu
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Thimphu) {
+ {-9223372036854775808 21516 0 LMT}
+ {-706341516 19800 0 IST}
+ {560025000 21600 0 BTT}
+}
diff --git a/library/tzdata/Asia/Tokyo b/library/tzdata/Asia/Tokyo
new file mode 100644
index 0000000..8d1ce11
--- /dev/null
+++ b/library/tzdata/Asia/Tokyo
@@ -0,0 +1,16 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Tokyo) {
+ {-9223372036854775808 33539 0 LMT}
+ {-2587712400 32400 0 JST}
+ {-2335251600 32400 0 CJT}
+ {-1009875600 32400 0 JST}
+ {-683794800 36000 1 JDT}
+ {-672393600 32400 0 JST}
+ {-654764400 36000 1 JDT}
+ {-640944000 32400 0 JST}
+ {-620290800 36000 1 JDT}
+ {-609494400 32400 0 JST}
+ {-588841200 36000 1 JDT}
+ {-578044800 32400 0 JST}
+}
diff --git a/library/tzdata/Asia/Ujung_Pandang b/library/tzdata/Asia/Ujung_Pandang
new file mode 100644
index 0000000..abe142e
--- /dev/null
+++ b/library/tzdata/Asia/Ujung_Pandang
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Makassar)]} {
+ LoadTimeZoneFile Asia/Makassar
+}
+set TZData(:Asia/Ujung_Pandang) $TZData(:Asia/Makassar)
diff --git a/library/tzdata/Asia/Ulaanbaatar b/library/tzdata/Asia/Ulaanbaatar
new file mode 100644
index 0000000..fef76ec
--- /dev/null
+++ b/library/tzdata/Asia/Ulaanbaatar
@@ -0,0 +1,51 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Ulaanbaatar) {
+ {-9223372036854775808 25652 0 LMT}
+ {-2032931252 25200 0 ULAT}
+ {252435600 28800 0 ULAT}
+ {417974400 32400 1 ULAST}
+ {433782000 28800 0 ULAT}
+ {449596800 32400 1 ULAST}
+ {465318000 28800 0 ULAT}
+ {481046400 32400 1 ULAST}
+ {496767600 28800 0 ULAT}
+ {512496000 32400 1 ULAST}
+ {528217200 28800 0 ULAT}
+ {543945600 32400 1 ULAST}
+ {559666800 28800 0 ULAT}
+ {575395200 32400 1 ULAST}
+ {591116400 28800 0 ULAT}
+ {606844800 32400 1 ULAST}
+ {622566000 28800 0 ULAT}
+ {638294400 32400 1 ULAST}
+ {654620400 28800 0 ULAT}
+ {670348800 32400 1 ULAST}
+ {686070000 28800 0 ULAT}
+ {701798400 32400 1 ULAST}
+ {717519600 28800 0 ULAT}
+ {733248000 32400 1 ULAST}
+ {748969200 28800 0 ULAT}
+ {764697600 32400 1 ULAST}
+ {780418800 28800 0 ULAT}
+ {796147200 32400 1 ULAST}
+ {811868400 28800 0 ULAT}
+ {828201600 32400 1 ULAST}
+ {843922800 28800 0 ULAT}
+ {859651200 32400 1 ULAST}
+ {875372400 28800 0 ULAT}
+ {891100800 32400 1 ULAST}
+ {906822000 28800 0 ULAT}
+ {988394400 32400 1 ULAST}
+ {1001696400 28800 0 ULAT}
+ {1017424800 32400 1 ULAST}
+ {1033146000 28800 0 ULAT}
+ {1048874400 32400 1 ULAST}
+ {1064595600 28800 0 ULAT}
+ {1080324000 32400 1 ULAST}
+ {1096045200 28800 0 ULAT}
+ {1111773600 32400 1 ULAST}
+ {1127494800 28800 0 ULAT}
+ {1143223200 32400 1 ULAST}
+ {1159549200 28800 0 ULAT}
+}
diff --git a/library/tzdata/Asia/Ulan_Bator b/library/tzdata/Asia/Ulan_Bator
new file mode 100644
index 0000000..3215ee7
--- /dev/null
+++ b/library/tzdata/Asia/Ulan_Bator
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Ulaanbaatar)]} {
+ LoadTimeZoneFile Asia/Ulaanbaatar
+}
+set TZData(:Asia/Ulan_Bator) $TZData(:Asia/Ulaanbaatar)
diff --git a/library/tzdata/Asia/Urumqi b/library/tzdata/Asia/Urumqi
new file mode 100644
index 0000000..93fc909
--- /dev/null
+++ b/library/tzdata/Asia/Urumqi
@@ -0,0 +1,19 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Urumqi) {
+ {-9223372036854775808 21020 0 LMT}
+ {-1325483420 21600 0 URUT}
+ {325965600 28800 0 CST}
+ {515520000 32400 1 CDT}
+ {527007600 28800 0 CST}
+ {545155200 32400 1 CDT}
+ {558457200 28800 0 CST}
+ {576604800 32400 1 CDT}
+ {589906800 28800 0 CST}
+ {608659200 32400 1 CDT}
+ {621961200 28800 0 CST}
+ {640108800 32400 1 CDT}
+ {653410800 28800 0 CST}
+ {671558400 32400 1 CDT}
+ {684860400 28800 0 CST}
+}
diff --git a/library/tzdata/Asia/Ust-Nera b/library/tzdata/Asia/Ust-Nera
new file mode 100644
index 0000000..c8de7a5
--- /dev/null
+++ b/library/tzdata/Asia/Ust-Nera
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Ust-Nera) {
+ {-9223372036854775808 34374 0 LMT}
+ {-1579426374 28800 0 YAKT}
+ {354898800 43200 0 MAGST}
+ {370699200 39600 0 MAGT}
+ {386427600 43200 1 MAGST}
+ {402235200 39600 0 MAGT}
+ {417963600 43200 1 MAGST}
+ {433771200 39600 0 MAGT}
+ {449586000 43200 1 MAGST}
+ {465318000 39600 0 MAGT}
+ {481042800 43200 1 MAGST}
+ {496767600 39600 0 MAGT}
+ {512492400 43200 1 MAGST}
+ {528217200 39600 0 MAGT}
+ {543942000 43200 1 MAGST}
+ {559666800 39600 0 MAGT}
+ {575391600 43200 1 MAGST}
+ {591116400 39600 0 MAGT}
+ {606841200 43200 1 MAGST}
+ {622566000 39600 0 MAGT}
+ {638290800 43200 1 MAGST}
+ {654620400 39600 0 MAGT}
+ {670345200 36000 0 MAGMMTT}
+ {670348800 39600 1 MAGST}
+ {686073600 36000 0 MAGT}
+ {695750400 39600 0 MAGMMTT}
+ {701784000 43200 1 MAGST}
+ {717505200 39600 0 MAGT}
+ {733244400 43200 1 MAGST}
+ {748969200 39600 0 MAGT}
+ {764694000 43200 1 MAGST}
+ {780418800 39600 0 MAGT}
+ {796143600 43200 1 MAGST}
+ {811868400 39600 0 MAGT}
+ {828198000 43200 1 MAGST}
+ {846342000 39600 0 MAGT}
+ {859647600 43200 1 MAGST}
+ {877791600 39600 0 MAGT}
+ {891097200 43200 1 MAGST}
+ {909241200 39600 0 MAGT}
+ {922546800 43200 1 MAGST}
+ {941295600 39600 0 MAGT}
+ {953996400 43200 1 MAGST}
+ {972745200 39600 0 MAGT}
+ {985446000 43200 1 MAGST}
+ {1004194800 39600 0 MAGT}
+ {1017500400 43200 1 MAGST}
+ {1035644400 39600 0 MAGT}
+ {1048950000 43200 1 MAGST}
+ {1067094000 39600 0 MAGT}
+ {1080399600 43200 1 MAGST}
+ {1099148400 39600 0 MAGT}
+ {1111849200 43200 1 MAGST}
+ {1130598000 39600 0 MAGT}
+ {1143298800 43200 1 MAGST}
+ {1162047600 39600 0 MAGT}
+ {1174748400 43200 1 MAGST}
+ {1193497200 39600 0 MAGT}
+ {1206802800 43200 1 MAGST}
+ {1224946800 39600 0 MAGT}
+ {1238252400 43200 1 MAGST}
+ {1256396400 39600 0 MAGT}
+ {1269702000 43200 1 MAGST}
+ {1288450800 39600 0 MAGT}
+ {1301151600 43200 0 MAGT}
+ {1315828800 39600 0 VLAT}
+}
diff --git a/library/tzdata/Asia/Vientiane b/library/tzdata/Asia/Vientiane
new file mode 100644
index 0000000..18ade4d
--- /dev/null
+++ b/library/tzdata/Asia/Vientiane
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Vientiane) {
+ {-9223372036854775808 24624 0 LMT}
+ {-2005973424 25580 0 SMT}
+ {-1855983920 25200 0 ICT}
+ {-1819954800 28800 0 ICT}
+ {-1220428800 25200 0 ICT}
+}
diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok
new file mode 100644
index 0000000..54101a5
--- /dev/null
+++ b/library/tzdata/Asia/Vladivostok
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Vladivostok) {
+ {-9223372036854775808 31664 0 LMT}
+ {-1487321264 32400 0 VLAT}
+ {-1247562000 36000 0 VLAMMTT}
+ {354895200 39600 1 VLAST}
+ {370702800 36000 0 VLAT}
+ {386431200 39600 1 VLAST}
+ {402238800 36000 0 VLAT}
+ {417967200 39600 1 VLAST}
+ {433774800 36000 0 VLAT}
+ {449589600 39600 1 VLAST}
+ {465321600 36000 0 VLAT}
+ {481046400 39600 1 VLAST}
+ {496771200 36000 0 VLAT}
+ {512496000 39600 1 VLAST}
+ {528220800 36000 0 VLAT}
+ {543945600 39600 1 VLAST}
+ {559670400 36000 0 VLAT}
+ {575395200 39600 1 VLAST}
+ {591120000 36000 0 VLAT}
+ {606844800 39600 1 VLAST}
+ {622569600 36000 0 VLAT}
+ {638294400 39600 1 VLAST}
+ {654624000 36000 0 VLAT}
+ {670348800 32400 0 VLAMMTST}
+ {670352400 36000 1 VLASST}
+ {686077200 32400 0 VLAST}
+ {695754000 36000 0 VLAMMTT}
+ {701787600 39600 1 VLAST}
+ {717508800 36000 0 VLAT}
+ {733248000 39600 1 VLAST}
+ {748972800 36000 0 VLAT}
+ {764697600 39600 1 VLAST}
+ {780422400 36000 0 VLAT}
+ {796147200 39600 1 VLAST}
+ {811872000 36000 0 VLAT}
+ {828201600 39600 1 VLAST}
+ {846345600 36000 0 VLAT}
+ {859651200 39600 1 VLAST}
+ {877795200 36000 0 VLAT}
+ {891100800 39600 1 VLAST}
+ {909244800 36000 0 VLAT}
+ {922550400 39600 1 VLAST}
+ {941299200 36000 0 VLAT}
+ {954000000 39600 1 VLAST}
+ {972748800 36000 0 VLAT}
+ {985449600 39600 1 VLAST}
+ {1004198400 36000 0 VLAT}
+ {1017504000 39600 1 VLAST}
+ {1035648000 36000 0 VLAT}
+ {1048953600 39600 1 VLAST}
+ {1067097600 36000 0 VLAT}
+ {1080403200 39600 1 VLAST}
+ {1099152000 36000 0 VLAT}
+ {1111852800 39600 1 VLAST}
+ {1130601600 36000 0 VLAT}
+ {1143302400 39600 1 VLAST}
+ {1162051200 36000 0 VLAT}
+ {1174752000 39600 1 VLAST}
+ {1193500800 36000 0 VLAT}
+ {1206806400 39600 1 VLAST}
+ {1224950400 36000 0 VLAT}
+ {1238256000 39600 1 VLAST}
+ {1256400000 36000 0 VLAT}
+ {1269705600 39600 1 VLAST}
+ {1288454400 36000 0 VLAT}
+ {1301155200 39600 0 VLAT}
+}
diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk
new file mode 100644
index 0000000..5c32cc9
--- /dev/null
+++ b/library/tzdata/Asia/Yakutsk
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Yakutsk) {
+ {-9223372036854775808 31120 0 LMT}
+ {-1579423120 28800 0 YAKT}
+ {-1247558400 32400 0 YAKMMTT}
+ {354898800 36000 1 YAKST}
+ {370706400 32400 0 YAKT}
+ {386434800 36000 1 YAKST}
+ {402242400 32400 0 YAKT}
+ {417970800 36000 1 YAKST}
+ {433778400 32400 0 YAKT}
+ {449593200 36000 1 YAKST}
+ {465325200 32400 0 YAKT}
+ {481050000 36000 1 YAKST}
+ {496774800 32400 0 YAKT}
+ {512499600 36000 1 YAKST}
+ {528224400 32400 0 YAKT}
+ {543949200 36000 1 YAKST}
+ {559674000 32400 0 YAKT}
+ {575398800 36000 1 YAKST}
+ {591123600 32400 0 YAKT}
+ {606848400 36000 1 YAKST}
+ {622573200 32400 0 YAKT}
+ {638298000 36000 1 YAKST}
+ {654627600 32400 0 YAKT}
+ {670352400 28800 0 YAKMMTT}
+ {670356000 32400 1 YAKST}
+ {686080800 28800 0 YAKT}
+ {695757600 32400 0 YAKMMTT}
+ {701791200 36000 1 YAKST}
+ {717512400 32400 0 YAKT}
+ {733251600 36000 1 YAKST}
+ {748976400 32400 0 YAKT}
+ {764701200 36000 1 YAKST}
+ {780426000 32400 0 YAKT}
+ {796150800 36000 1 YAKST}
+ {811875600 32400 0 YAKT}
+ {828205200 36000 1 YAKST}
+ {846349200 32400 0 YAKT}
+ {859654800 36000 1 YAKST}
+ {877798800 32400 0 YAKT}
+ {891104400 36000 1 YAKST}
+ {909248400 32400 0 YAKT}
+ {922554000 36000 1 YAKST}
+ {941302800 32400 0 YAKT}
+ {954003600 36000 1 YAKST}
+ {972752400 32400 0 YAKT}
+ {985453200 36000 1 YAKST}
+ {1004202000 32400 0 YAKT}
+ {1017507600 36000 1 YAKST}
+ {1035651600 32400 0 YAKT}
+ {1048957200 36000 1 YAKST}
+ {1067101200 32400 0 YAKT}
+ {1080406800 36000 1 YAKST}
+ {1099155600 32400 0 YAKT}
+ {1111856400 36000 1 YAKST}
+ {1130605200 32400 0 YAKT}
+ {1143306000 36000 1 YAKST}
+ {1162054800 32400 0 YAKT}
+ {1174755600 36000 1 YAKST}
+ {1193504400 32400 0 YAKT}
+ {1206810000 36000 1 YAKST}
+ {1224954000 32400 0 YAKT}
+ {1238259600 36000 1 YAKST}
+ {1256403600 32400 0 YAKT}
+ {1269709200 36000 1 YAKST}
+ {1288458000 32400 0 YAKT}
+ {1301158800 36000 0 YAKT}
+}
diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg
new file mode 100644
index 0000000..2045496
--- /dev/null
+++ b/library/tzdata/Asia/Yekaterinburg
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Yekaterinburg) {
+ {-9223372036854775808 14544 0 LMT}
+ {-1592611344 14400 0 SVET}
+ {-1247544000 18000 0 SVEMMTT}
+ {354913200 21600 1 SVEST}
+ {370720800 18000 0 SVET}
+ {386449200 21600 1 SVEST}
+ {402256800 18000 0 SVET}
+ {417985200 21600 1 SVEST}
+ {433792800 18000 0 SVET}
+ {449607600 21600 1 SVEST}
+ {465339600 18000 0 SVET}
+ {481064400 21600 1 SVEST}
+ {496789200 18000 0 SVET}
+ {512514000 21600 1 SVEST}
+ {528238800 18000 0 SVET}
+ {543963600 21600 1 SVEST}
+ {559688400 18000 0 SVET}
+ {575413200 21600 1 SVEST}
+ {591138000 18000 0 SVET}
+ {606862800 21600 1 SVEST}
+ {622587600 18000 0 SVET}
+ {638312400 21600 1 SVEST}
+ {654642000 18000 0 SVET}
+ {670366800 14400 0 SVEMMTT}
+ {670370400 18000 1 SVEST}
+ {686095200 14400 0 SVET}
+ {695772000 18000 0 YEKMMTT}
+ {701805600 21600 1 YEKST}
+ {717526800 18000 0 YEKT}
+ {733266000 21600 1 YEKST}
+ {748990800 18000 0 YEKT}
+ {764715600 21600 1 YEKST}
+ {780440400 18000 0 YEKT}
+ {796165200 21600 1 YEKST}
+ {811890000 18000 0 YEKT}
+ {828219600 21600 1 YEKST}
+ {846363600 18000 0 YEKT}
+ {859669200 21600 1 YEKST}
+ {877813200 18000 0 YEKT}
+ {891118800 21600 1 YEKST}
+ {909262800 18000 0 YEKT}
+ {922568400 21600 1 YEKST}
+ {941317200 18000 0 YEKT}
+ {954018000 21600 1 YEKST}
+ {972766800 18000 0 YEKT}
+ {985467600 21600 1 YEKST}
+ {1004216400 18000 0 YEKT}
+ {1017522000 21600 1 YEKST}
+ {1035666000 18000 0 YEKT}
+ {1048971600 21600 1 YEKST}
+ {1067115600 18000 0 YEKT}
+ {1080421200 21600 1 YEKST}
+ {1099170000 18000 0 YEKT}
+ {1111870800 21600 1 YEKST}
+ {1130619600 18000 0 YEKT}
+ {1143320400 21600 1 YEKST}
+ {1162069200 18000 0 YEKT}
+ {1174770000 21600 1 YEKST}
+ {1193518800 18000 0 YEKT}
+ {1206824400 21600 1 YEKST}
+ {1224968400 18000 0 YEKT}
+ {1238274000 21600 1 YEKST}
+ {1256418000 18000 0 YEKT}
+ {1269723600 21600 1 YEKST}
+ {1288472400 18000 0 YEKT}
+ {1301173200 21600 0 YEKT}
+}
diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan
new file mode 100644
index 0000000..22008ef
--- /dev/null
+++ b/library/tzdata/Asia/Yerevan
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Yerevan) {
+ {-9223372036854775808 10680 0 LMT}
+ {-1441162680 10800 0 YERT}
+ {-405140400 14400 0 YERT}
+ {354916800 18000 1 YERST}
+ {370724400 14400 0 YERT}
+ {386452800 18000 1 YERST}
+ {402260400 14400 0 YERT}
+ {417988800 18000 1 YERST}
+ {433796400 14400 0 YERT}
+ {449611200 18000 1 YERST}
+ {465343200 14400 0 YERT}
+ {481068000 18000 1 YERST}
+ {496792800 14400 0 YERT}
+ {512517600 18000 1 YERST}
+ {528242400 14400 0 YERT}
+ {543967200 18000 1 YERST}
+ {559692000 14400 0 YERT}
+ {575416800 18000 1 YERST}
+ {591141600 14400 0 YERT}
+ {606866400 18000 1 YERST}
+ {622591200 14400 0 YERT}
+ {638316000 18000 1 YERST}
+ {654645600 14400 0 YERT}
+ {670370400 14400 1 YERST}
+ {685569600 14400 0 AMST}
+ {686098800 10800 0 AMT}
+ {701812800 14400 1 AMST}
+ {717534000 10800 0 AMT}
+ {733273200 14400 1 AMST}
+ {748998000 10800 0 AMT}
+ {764722800 14400 1 AMST}
+ {780447600 10800 0 AMT}
+ {796172400 14400 1 AMST}
+ {811897200 14400 0 AMT}
+ {852062400 14400 0 AMT}
+ {859672800 18000 1 AMST}
+ {877816800 14400 0 AMT}
+ {891122400 18000 1 AMST}
+ {909266400 14400 0 AMT}
+ {922572000 18000 1 AMST}
+ {941320800 14400 0 AMT}
+ {954021600 18000 1 AMST}
+ {972770400 14400 0 AMT}
+ {985471200 18000 1 AMST}
+ {1004220000 14400 0 AMT}
+ {1017525600 18000 1 AMST}
+ {1035669600 14400 0 AMT}
+ {1048975200 18000 1 AMST}
+ {1067119200 14400 0 AMT}
+ {1080424800 18000 1 AMST}
+ {1099173600 14400 0 AMT}
+ {1111874400 18000 1 AMST}
+ {1130623200 14400 0 AMT}
+ {1143324000 18000 1 AMST}
+ {1162072800 14400 0 AMT}
+ {1174773600 18000 1 AMST}
+ {1193522400 14400 0 AMT}
+ {1206828000 18000 1 AMST}
+ {1224972000 14400 0 AMT}
+ {1238277600 18000 1 AMST}
+ {1256421600 14400 0 AMT}
+ {1269727200 18000 1 AMST}
+ {1288476000 14400 0 AMT}
+ {1301176800 18000 1 AMST}
+ {1319925600 14400 0 AMT}
+ {1332626400 14400 0 AMT}
+}
diff --git a/library/tzdata/Atlantic/Azores b/library/tzdata/Atlantic/Azores
new file mode 100644
index 0000000..c476191
--- /dev/null
+++ b/library/tzdata/Atlantic/Azores
@@ -0,0 +1,349 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Azores) {
+ {-9223372036854775808 -6160 0 LMT}
+ {-2713904240 -6872 0 HMT}
+ {-1849557928 -7200 0 AZOT}
+ {-1689548400 -3600 1 AZOST}
+ {-1677794400 -7200 0 AZOT}
+ {-1667430000 -3600 1 AZOST}
+ {-1647730800 -7200 0 AZOT}
+ {-1635807600 -3600 1 AZOST}
+ {-1616194800 -7200 0 AZOT}
+ {-1604358000 -3600 1 AZOST}
+ {-1584658800 -7200 0 AZOT}
+ {-1572735600 -3600 1 AZOST}
+ {-1553036400 -7200 0 AZOT}
+ {-1541199600 -3600 1 AZOST}
+ {-1521500400 -7200 0 AZOT}
+ {-1442444400 -3600 1 AZOST}
+ {-1426806000 -7200 0 AZOT}
+ {-1379286000 -3600 1 AZOST}
+ {-1364770800 -7200 0 AZOT}
+ {-1348441200 -3600 1 AZOST}
+ {-1333321200 -7200 0 AZOT}
+ {-1316386800 -3600 1 AZOST}
+ {-1301266800 -7200 0 AZOT}
+ {-1284332400 -3600 1 AZOST}
+ {-1269817200 -7200 0 AZOT}
+ {-1221433200 -3600 1 AZOST}
+ {-1206918000 -7200 0 AZOT}
+ {-1191193200 -3600 1 AZOST}
+ {-1175468400 -7200 0 AZOT}
+ {-1127689200 -3600 1 AZOST}
+ {-1111964400 -7200 0 AZOT}
+ {-1096844400 -3600 1 AZOST}
+ {-1080514800 -7200 0 AZOT}
+ {-1063580400 -3600 1 AZOST}
+ {-1049065200 -7200 0 AZOT}
+ {-1033340400 -3600 1 AZOST}
+ {-1017615600 -7200 0 AZOT}
+ {-1002495600 -3600 1 AZOST}
+ {-986166000 -7200 0 AZOT}
+ {-969231600 -3600 1 AZOST}
+ {-950482800 -7200 0 AZOT}
+ {-942015600 -3600 1 AZOST}
+ {-922662000 -7200 0 AZOT}
+ {-906937200 -3600 1 AZOST}
+ {-891126000 -7200 0 AZOT}
+ {-877302000 -3600 1 AZOST}
+ {-873676800 0 1 AZOMT}
+ {-864000000 -3600 1 AZOST}
+ {-857948400 -7200 0 AZOT}
+ {-845852400 -3600 1 AZOST}
+ {-842832000 0 1 AZOMT}
+ {-831340800 -3600 1 AZOST}
+ {-825894000 -7200 0 AZOT}
+ {-814402800 -3600 1 AZOST}
+ {-810777600 0 1 AZOMT}
+ {-799891200 -3600 1 AZOST}
+ {-794444400 -7200 0 AZOT}
+ {-782953200 -3600 1 AZOST}
+ {-779328000 0 1 AZOMT}
+ {-768441600 -3600 1 AZOST}
+ {-762994800 -7200 0 AZOT}
+ {-749084400 -3600 1 AZOST}
+ {-733359600 -7200 0 AZOT}
+ {-717624000 -3600 1 AZOST}
+ {-701899200 -7200 0 AZOT}
+ {-686174400 -3600 1 AZOST}
+ {-670449600 -7200 0 AZOT}
+ {-654724800 -3600 1 AZOST}
+ {-639000000 -7200 0 AZOT}
+ {-591825600 -3600 1 AZOST}
+ {-575496000 -7200 0 AZOT}
+ {-559771200 -3600 1 AZOST}
+ {-544046400 -7200 0 AZOT}
+ {-528321600 -3600 1 AZOST}
+ {-512596800 -7200 0 AZOT}
+ {-496872000 -3600 1 AZOST}
+ {-481147200 -7200 0 AZOT}
+ {-465422400 -3600 1 AZOST}
+ {-449697600 -7200 0 AZOT}
+ {-433972800 -3600 1 AZOST}
+ {-417643200 -7200 0 AZOT}
+ {-401918400 -3600 1 AZOST}
+ {-386193600 -7200 0 AZOT}
+ {-370468800 -3600 1 AZOST}
+ {-354744000 -7200 0 AZOT}
+ {-339019200 -3600 1 AZOST}
+ {-323294400 -7200 0 AZOT}
+ {-307569600 -3600 1 AZOST}
+ {-291844800 -7200 0 AZOT}
+ {-276120000 -3600 1 AZOST}
+ {-260395200 -7200 0 AZOT}
+ {-244670400 -3600 1 AZOST}
+ {-228340800 -7200 0 AZOT}
+ {-212616000 -3600 1 AZOST}
+ {-196891200 -7200 0 AZOT}
+ {-181166400 -3600 1 AZOST}
+ {-165441600 -7200 0 AZOT}
+ {-149716800 -3600 1 AZOST}
+ {-133992000 -7200 0 AZOT}
+ {-118267200 -3600 0 AZOT}
+ {228272400 0 1 AZOST}
+ {243997200 -3600 0 AZOT}
+ {260326800 0 1 AZOST}
+ {276051600 -3600 0 AZOT}
+ {291776400 0 1 AZOST}
+ {307504800 -3600 0 AZOT}
+ {323226000 0 1 AZOST}
+ {338954400 -3600 0 AZOT}
+ {354679200 0 1 AZOST}
+ {370404000 -3600 0 AZOT}
+ {386128800 0 1 AZOST}
+ {401853600 -3600 0 AZOT}
+ {417582000 0 1 AZOST}
+ {433303200 -3600 0 AZOT}
+ {449028000 0 1 AZOST}
+ {465357600 -3600 0 AZOT}
+ {481082400 0 1 AZOST}
+ {496807200 -3600 0 AZOT}
+ {512532000 0 1 AZOST}
+ {528256800 -3600 0 AZOT}
+ {543981600 0 1 AZOST}
+ {559706400 -3600 0 AZOT}
+ {575431200 0 1 AZOST}
+ {591156000 -3600 0 AZOT}
+ {606880800 0 1 AZOST}
+ {622605600 -3600 0 AZOT}
+ {638330400 0 1 AZOST}
+ {654660000 -3600 0 AZOT}
+ {670384800 0 1 AZOST}
+ {686109600 -3600 0 AZOT}
+ {701834400 0 1 AZOST}
+ {733280400 0 0 AZOST}
+ {749005200 -3600 0 AZOT}
+ {764730000 0 1 AZOST}
+ {780454800 -3600 0 AZOT}
+ {796179600 0 1 AZOST}
+ {811904400 -3600 0 AZOT}
+ {828234000 0 1 AZOST}
+ {846378000 -3600 0 AZOT}
+ {859683600 0 1 AZOST}
+ {877827600 -3600 0 AZOT}
+ {891133200 0 1 AZOST}
+ {909277200 -3600 0 AZOT}
+ {922582800 0 1 AZOST}
+ {941331600 -3600 0 AZOT}
+ {954032400 0 1 AZOST}
+ {972781200 -3600 0 AZOT}
+ {985482000 0 1 AZOST}
+ {1004230800 -3600 0 AZOT}
+ {1017536400 0 1 AZOST}
+ {1035680400 -3600 0 AZOT}
+ {1048986000 0 1 AZOST}
+ {1067130000 -3600 0 AZOT}
+ {1080435600 0 1 AZOST}
+ {1099184400 -3600 0 AZOT}
+ {1111885200 0 1 AZOST}
+ {1130634000 -3600 0 AZOT}
+ {1143334800 0 1 AZOST}
+ {1162083600 -3600 0 AZOT}
+ {1174784400 0 1 AZOST}
+ {1193533200 -3600 0 AZOT}
+ {1206838800 0 1 AZOST}
+ {1224982800 -3600 0 AZOT}
+ {1238288400 0 1 AZOST}
+ {1256432400 -3600 0 AZOT}
+ {1269738000 0 1 AZOST}
+ {1288486800 -3600 0 AZOT}
+ {1301187600 0 1 AZOST}
+ {1319936400 -3600 0 AZOT}
+ {1332637200 0 1 AZOST}
+ {1351386000 -3600 0 AZOT}
+ {1364691600 0 1 AZOST}
+ {1382835600 -3600 0 AZOT}
+ {1396141200 0 1 AZOST}
+ {1414285200 -3600 0 AZOT}
+ {1427590800 0 1 AZOST}
+ {1445734800 -3600 0 AZOT}
+ {1459040400 0 1 AZOST}
+ {1477789200 -3600 0 AZOT}
+ {1490490000 0 1 AZOST}
+ {1509238800 -3600 0 AZOT}
+ {1521939600 0 1 AZOST}
+ {1540688400 -3600 0 AZOT}
+ {1553994000 0 1 AZOST}
+ {1572138000 -3600 0 AZOT}
+ {1585443600 0 1 AZOST}
+ {1603587600 -3600 0 AZOT}
+ {1616893200 0 1 AZOST}
+ {1635642000 -3600 0 AZOT}
+ {1648342800 0 1 AZOST}
+ {1667091600 -3600 0 AZOT}
+ {1679792400 0 1 AZOST}
+ {1698541200 -3600 0 AZOT}
+ {1711846800 0 1 AZOST}
+ {1729990800 -3600 0 AZOT}
+ {1743296400 0 1 AZOST}
+ {1761440400 -3600 0 AZOT}
+ {1774746000 0 1 AZOST}
+ {1792890000 -3600 0 AZOT}
+ {1806195600 0 1 AZOST}
+ {1824944400 -3600 0 AZOT}
+ {1837645200 0 1 AZOST}
+ {1856394000 -3600 0 AZOT}
+ {1869094800 0 1 AZOST}
+ {1887843600 -3600 0 AZOT}
+ {1901149200 0 1 AZOST}
+ {1919293200 -3600 0 AZOT}
+ {1932598800 0 1 AZOST}
+ {1950742800 -3600 0 AZOT}
+ {1964048400 0 1 AZOST}
+ {1982797200 -3600 0 AZOT}
+ {1995498000 0 1 AZOST}
+ {2014246800 -3600 0 AZOT}
+ {2026947600 0 1 AZOST}
+ {2045696400 -3600 0 AZOT}
+ {2058397200 0 1 AZOST}
+ {2077146000 -3600 0 AZOT}
+ {2090451600 0 1 AZOST}
+ {2108595600 -3600 0 AZOT}
+ {2121901200 0 1 AZOST}
+ {2140045200 -3600 0 AZOT}
+ {2153350800 0 1 AZOST}
+ {2172099600 -3600 0 AZOT}
+ {2184800400 0 1 AZOST}
+ {2203549200 -3600 0 AZOT}
+ {2216250000 0 1 AZOST}
+ {2234998800 -3600 0 AZOT}
+ {2248304400 0 1 AZOST}
+ {2266448400 -3600 0 AZOT}
+ {2279754000 0 1 AZOST}
+ {2297898000 -3600 0 AZOT}
+ {2311203600 0 1 AZOST}
+ {2329347600 -3600 0 AZOT}
+ {2342653200 0 1 AZOST}
+ {2361402000 -3600 0 AZOT}
+ {2374102800 0 1 AZOST}
+ {2392851600 -3600 0 AZOT}
+ {2405552400 0 1 AZOST}
+ {2424301200 -3600 0 AZOT}
+ {2437606800 0 1 AZOST}
+ {2455750800 -3600 0 AZOT}
+ {2469056400 0 1 AZOST}
+ {2487200400 -3600 0 AZOT}
+ {2500506000 0 1 AZOST}
+ {2519254800 -3600 0 AZOT}
+ {2531955600 0 1 AZOST}
+ {2550704400 -3600 0 AZOT}
+ {2563405200 0 1 AZOST}
+ {2582154000 -3600 0 AZOT}
+ {2595459600 0 1 AZOST}
+ {2613603600 -3600 0 AZOT}
+ {2626909200 0 1 AZOST}
+ {2645053200 -3600 0 AZOT}
+ {2658358800 0 1 AZOST}
+ {2676502800 -3600 0 AZOT}
+ {2689808400 0 1 AZOST}
+ {2708557200 -3600 0 AZOT}
+ {2721258000 0 1 AZOST}
+ {2740006800 -3600 0 AZOT}
+ {2752707600 0 1 AZOST}
+ {2771456400 -3600 0 AZOT}
+ {2784762000 0 1 AZOST}
+ {2802906000 -3600 0 AZOT}
+ {2816211600 0 1 AZOST}
+ {2834355600 -3600 0 AZOT}
+ {2847661200 0 1 AZOST}
+ {2866410000 -3600 0 AZOT}
+ {2879110800 0 1 AZOST}
+ {2897859600 -3600 0 AZOT}
+ {2910560400 0 1 AZOST}
+ {2929309200 -3600 0 AZOT}
+ {2942010000 0 1 AZOST}
+ {2960758800 -3600 0 AZOT}
+ {2974064400 0 1 AZOST}
+ {2992208400 -3600 0 AZOT}
+ {3005514000 0 1 AZOST}
+ {3023658000 -3600 0 AZOT}
+ {3036963600 0 1 AZOST}
+ {3055712400 -3600 0 AZOT}
+ {3068413200 0 1 AZOST}
+ {3087162000 -3600 0 AZOT}
+ {3099862800 0 1 AZOST}
+ {3118611600 -3600 0 AZOT}
+ {3131917200 0 1 AZOST}
+ {3150061200 -3600 0 AZOT}
+ {3163366800 0 1 AZOST}
+ {3181510800 -3600 0 AZOT}
+ {3194816400 0 1 AZOST}
+ {3212960400 -3600 0 AZOT}
+ {3226266000 0 1 AZOST}
+ {3245014800 -3600 0 AZOT}
+ {3257715600 0 1 AZOST}
+ {3276464400 -3600 0 AZOT}
+ {3289165200 0 1 AZOST}
+ {3307914000 -3600 0 AZOT}
+ {3321219600 0 1 AZOST}
+ {3339363600 -3600 0 AZOT}
+ {3352669200 0 1 AZOST}
+ {3370813200 -3600 0 AZOT}
+ {3384118800 0 1 AZOST}
+ {3402867600 -3600 0 AZOT}
+ {3415568400 0 1 AZOST}
+ {3434317200 -3600 0 AZOT}
+ {3447018000 0 1 AZOST}
+ {3465766800 -3600 0 AZOT}
+ {3479072400 0 1 AZOST}
+ {3497216400 -3600 0 AZOT}
+ {3510522000 0 1 AZOST}
+ {3528666000 -3600 0 AZOT}
+ {3541971600 0 1 AZOST}
+ {3560115600 -3600 0 AZOT}
+ {3573421200 0 1 AZOST}
+ {3592170000 -3600 0 AZOT}
+ {3604870800 0 1 AZOST}
+ {3623619600 -3600 0 AZOT}
+ {3636320400 0 1 AZOST}
+ {3655069200 -3600 0 AZOT}
+ {3668374800 0 1 AZOST}
+ {3686518800 -3600 0 AZOT}
+ {3699824400 0 1 AZOST}
+ {3717968400 -3600 0 AZOT}
+ {3731274000 0 1 AZOST}
+ {3750022800 -3600 0 AZOT}
+ {3762723600 0 1 AZOST}
+ {3781472400 -3600 0 AZOT}
+ {3794173200 0 1 AZOST}
+ {3812922000 -3600 0 AZOT}
+ {3825622800 0 1 AZOST}
+ {3844371600 -3600 0 AZOT}
+ {3857677200 0 1 AZOST}
+ {3875821200 -3600 0 AZOT}
+ {3889126800 0 1 AZOST}
+ {3907270800 -3600 0 AZOT}
+ {3920576400 0 1 AZOST}
+ {3939325200 -3600 0 AZOT}
+ {3952026000 0 1 AZOST}
+ {3970774800 -3600 0 AZOT}
+ {3983475600 0 1 AZOST}
+ {4002224400 -3600 0 AZOT}
+ {4015530000 0 1 AZOST}
+ {4033674000 -3600 0 AZOT}
+ {4046979600 0 1 AZOST}
+ {4065123600 -3600 0 AZOT}
+ {4078429200 0 1 AZOST}
+ {4096573200 -3600 0 AZOT}
+}
diff --git a/library/tzdata/Atlantic/Bermuda b/library/tzdata/Atlantic/Bermuda
new file mode 100644
index 0000000..2d4d983
--- /dev/null
+++ b/library/tzdata/Atlantic/Bermuda
@@ -0,0 +1,259 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Bermuda) {
+ {-9223372036854775808 -15558 0 LMT}
+ {-1262281242 -14400 0 AST}
+ {136360800 -10800 0 ADT}
+ {152082000 -14400 0 AST}
+ {167810400 -10800 1 ADT}
+ {183531600 -14400 0 AST}
+ {189316800 -14400 0 AST}
+ {199260000 -10800 1 ADT}
+ {215586000 -14400 0 AST}
+ {230709600 -10800 1 ADT}
+ {247035600 -14400 0 AST}
+ {262764000 -10800 1 ADT}
+ {278485200 -14400 0 AST}
+ {294213600 -10800 1 ADT}
+ {309934800 -14400 0 AST}
+ {325663200 -10800 1 ADT}
+ {341384400 -14400 0 AST}
+ {357112800 -10800 1 ADT}
+ {372834000 -14400 0 AST}
+ {388562400 -10800 1 ADT}
+ {404888400 -14400 0 AST}
+ {420012000 -10800 1 ADT}
+ {436338000 -14400 0 AST}
+ {452066400 -10800 1 ADT}
+ {467787600 -14400 0 AST}
+ {483516000 -10800 1 ADT}
+ {499237200 -14400 0 AST}
+ {514965600 -10800 1 ADT}
+ {530686800 -14400 0 AST}
+ {544600800 -10800 1 ADT}
+ {562136400 -14400 0 AST}
+ {576050400 -10800 1 ADT}
+ {594190800 -14400 0 AST}
+ {607500000 -10800 1 ADT}
+ {625640400 -14400 0 AST}
+ {638949600 -10800 1 ADT}
+ {657090000 -14400 0 AST}
+ {671004000 -10800 1 ADT}
+ {688539600 -14400 0 AST}
+ {702453600 -10800 1 ADT}
+ {719989200 -14400 0 AST}
+ {733903200 -10800 1 ADT}
+ {752043600 -14400 0 AST}
+ {765352800 -10800 1 ADT}
+ {783493200 -14400 0 AST}
+ {796802400 -10800 1 ADT}
+ {814942800 -14400 0 AST}
+ {828856800 -10800 1 ADT}
+ {846392400 -14400 0 AST}
+ {860306400 -10800 1 ADT}
+ {877842000 -14400 0 AST}
+ {891756000 -10800 1 ADT}
+ {909291600 -14400 0 AST}
+ {923205600 -10800 1 ADT}
+ {941346000 -14400 0 AST}
+ {954655200 -10800 1 ADT}
+ {972795600 -14400 0 AST}
+ {986104800 -10800 1 ADT}
+ {1004245200 -14400 0 AST}
+ {1018159200 -10800 1 ADT}
+ {1035694800 -14400 0 AST}
+ {1049608800 -10800 1 ADT}
+ {1067144400 -14400 0 AST}
+ {1081058400 -10800 1 ADT}
+ {1099198800 -14400 0 AST}
+ {1112508000 -10800 1 ADT}
+ {1130648400 -14400 0 AST}
+ {1143957600 -10800 1 ADT}
+ {1162098000 -14400 0 AST}
+ {1173592800 -10800 1 ADT}
+ {1194152400 -14400 0 AST}
+ {1205042400 -10800 1 ADT}
+ {1225602000 -14400 0 AST}
+ {1236492000 -10800 1 ADT}
+ {1257051600 -14400 0 AST}
+ {1268546400 -10800 1 ADT}
+ {1289106000 -14400 0 AST}
+ {1299996000 -10800 1 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
+}
diff --git a/library/tzdata/Atlantic/Canary b/library/tzdata/Atlantic/Canary
new file mode 100644
index 0000000..4b802c7
--- /dev/null
+++ b/library/tzdata/Atlantic/Canary
@@ -0,0 +1,248 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Canary) {
+ {-9223372036854775808 -3696 0 LMT}
+ {-1509663504 -3600 0 CANT}
+ {-733874400 0 0 WET}
+ {323827200 3600 1 WEST}
+ {338947200 3600 0 WEST}
+ {338950800 0 0 WET}
+ {354675600 3600 1 WEST}
+ {370400400 0 0 WET}
+ {386125200 3600 1 WEST}
+ {401850000 0 0 WET}
+ {417574800 3600 1 WEST}
+ {433299600 0 0 WET}
+ {449024400 3600 1 WEST}
+ {465354000 0 0 WET}
+ {481078800 3600 1 WEST}
+ {496803600 0 0 WET}
+ {512528400 3600 1 WEST}
+ {528253200 0 0 WET}
+ {543978000 3600 1 WEST}
+ {559702800 0 0 WET}
+ {575427600 3600 1 WEST}
+ {591152400 0 0 WET}
+ {606877200 3600 1 WEST}
+ {622602000 0 0 WET}
+ {638326800 3600 1 WEST}
+ {654656400 0 0 WET}
+ {670381200 3600 1 WEST}
+ {686106000 0 0 WET}
+ {701830800 3600 1 WEST}
+ {717555600 0 0 WET}
+ {733280400 3600 1 WEST}
+ {749005200 0 0 WET}
+ {764730000 3600 1 WEST}
+ {780454800 0 0 WET}
+ {796179600 3600 1 WEST}
+ {811904400 0 0 WET}
+ {828234000 3600 1 WEST}
+ {846378000 0 0 WET}
+ {859683600 3600 1 WEST}
+ {877827600 0 0 WET}
+ {891133200 3600 1 WEST}
+ {909277200 0 0 WET}
+ {922582800 3600 1 WEST}
+ {941331600 0 0 WET}
+ {954032400 3600 1 WEST}
+ {972781200 0 0 WET}
+ {985482000 3600 1 WEST}
+ {1004230800 0 0 WET}
+ {1017536400 3600 1 WEST}
+ {1035680400 0 0 WET}
+ {1048986000 3600 1 WEST}
+ {1067130000 0 0 WET}
+ {1080435600 3600 1 WEST}
+ {1099184400 0 0 WET}
+ {1111885200 3600 1 WEST}
+ {1130634000 0 0 WET}
+ {1143334800 3600 1 WEST}
+ {1162083600 0 0 WET}
+ {1174784400 3600 1 WEST}
+ {1193533200 0 0 WET}
+ {1206838800 3600 1 WEST}
+ {1224982800 0 0 WET}
+ {1238288400 3600 1 WEST}
+ {1256432400 0 0 WET}
+ {1269738000 3600 1 WEST}
+ {1288486800 0 0 WET}
+ {1301187600 3600 1 WEST}
+ {1319936400 0 0 WET}
+ {1332637200 3600 1 WEST}
+ {1351386000 0 0 WET}
+ {1364691600 3600 1 WEST}
+ {1382835600 0 0 WET}
+ {1396141200 3600 1 WEST}
+ {1414285200 0 0 WET}
+ {1427590800 3600 1 WEST}
+ {1445734800 0 0 WET}
+ {1459040400 3600 1 WEST}
+ {1477789200 0 0 WET}
+ {1490490000 3600 1 WEST}
+ {1509238800 0 0 WET}
+ {1521939600 3600 1 WEST}
+ {1540688400 0 0 WET}
+ {1553994000 3600 1 WEST}
+ {1572138000 0 0 WET}
+ {1585443600 3600 1 WEST}
+ {1603587600 0 0 WET}
+ {1616893200 3600 1 WEST}
+ {1635642000 0 0 WET}
+ {1648342800 3600 1 WEST}
+ {1667091600 0 0 WET}
+ {1679792400 3600 1 WEST}
+ {1698541200 0 0 WET}
+ {1711846800 3600 1 WEST}
+ {1729990800 0 0 WET}
+ {1743296400 3600 1 WEST}
+ {1761440400 0 0 WET}
+ {1774746000 3600 1 WEST}
+ {1792890000 0 0 WET}
+ {1806195600 3600 1 WEST}
+ {1824944400 0 0 WET}
+ {1837645200 3600 1 WEST}
+ {1856394000 0 0 WET}
+ {1869094800 3600 1 WEST}
+ {1887843600 0 0 WET}
+ {1901149200 3600 1 WEST}
+ {1919293200 0 0 WET}
+ {1932598800 3600 1 WEST}
+ {1950742800 0 0 WET}
+ {1964048400 3600 1 WEST}
+ {1982797200 0 0 WET}
+ {1995498000 3600 1 WEST}
+ {2014246800 0 0 WET}
+ {2026947600 3600 1 WEST}
+ {2045696400 0 0 WET}
+ {2058397200 3600 1 WEST}
+ {2077146000 0 0 WET}
+ {2090451600 3600 1 WEST}
+ {2108595600 0 0 WET}
+ {2121901200 3600 1 WEST}
+ {2140045200 0 0 WET}
+ {2153350800 3600 1 WEST}
+ {2172099600 0 0 WET}
+ {2184800400 3600 1 WEST}
+ {2203549200 0 0 WET}
+ {2216250000 3600 1 WEST}
+ {2234998800 0 0 WET}
+ {2248304400 3600 1 WEST}
+ {2266448400 0 0 WET}
+ {2279754000 3600 1 WEST}
+ {2297898000 0 0 WET}
+ {2311203600 3600 1 WEST}
+ {2329347600 0 0 WET}
+ {2342653200 3600 1 WEST}
+ {2361402000 0 0 WET}
+ {2374102800 3600 1 WEST}
+ {2392851600 0 0 WET}
+ {2405552400 3600 1 WEST}
+ {2424301200 0 0 WET}
+ {2437606800 3600 1 WEST}
+ {2455750800 0 0 WET}
+ {2469056400 3600 1 WEST}
+ {2487200400 0 0 WET}
+ {2500506000 3600 1 WEST}
+ {2519254800 0 0 WET}
+ {2531955600 3600 1 WEST}
+ {2550704400 0 0 WET}
+ {2563405200 3600 1 WEST}
+ {2582154000 0 0 WET}
+ {2595459600 3600 1 WEST}
+ {2613603600 0 0 WET}
+ {2626909200 3600 1 WEST}
+ {2645053200 0 0 WET}
+ {2658358800 3600 1 WEST}
+ {2676502800 0 0 WET}
+ {2689808400 3600 1 WEST}
+ {2708557200 0 0 WET}
+ {2721258000 3600 1 WEST}
+ {2740006800 0 0 WET}
+ {2752707600 3600 1 WEST}
+ {2771456400 0 0 WET}
+ {2784762000 3600 1 WEST}
+ {2802906000 0 0 WET}
+ {2816211600 3600 1 WEST}
+ {2834355600 0 0 WET}
+ {2847661200 3600 1 WEST}
+ {2866410000 0 0 WET}
+ {2879110800 3600 1 WEST}
+ {2897859600 0 0 WET}
+ {2910560400 3600 1 WEST}
+ {2929309200 0 0 WET}
+ {2942010000 3600 1 WEST}
+ {2960758800 0 0 WET}
+ {2974064400 3600 1 WEST}
+ {2992208400 0 0 WET}
+ {3005514000 3600 1 WEST}
+ {3023658000 0 0 WET}
+ {3036963600 3600 1 WEST}
+ {3055712400 0 0 WET}
+ {3068413200 3600 1 WEST}
+ {3087162000 0 0 WET}
+ {3099862800 3600 1 WEST}
+ {3118611600 0 0 WET}
+ {3131917200 3600 1 WEST}
+ {3150061200 0 0 WET}
+ {3163366800 3600 1 WEST}
+ {3181510800 0 0 WET}
+ {3194816400 3600 1 WEST}
+ {3212960400 0 0 WET}
+ {3226266000 3600 1 WEST}
+ {3245014800 0 0 WET}
+ {3257715600 3600 1 WEST}
+ {3276464400 0 0 WET}
+ {3289165200 3600 1 WEST}
+ {3307914000 0 0 WET}
+ {3321219600 3600 1 WEST}
+ {3339363600 0 0 WET}
+ {3352669200 3600 1 WEST}
+ {3370813200 0 0 WET}
+ {3384118800 3600 1 WEST}
+ {3402867600 0 0 WET}
+ {3415568400 3600 1 WEST}
+ {3434317200 0 0 WET}
+ {3447018000 3600 1 WEST}
+ {3465766800 0 0 WET}
+ {3479072400 3600 1 WEST}
+ {3497216400 0 0 WET}
+ {3510522000 3600 1 WEST}
+ {3528666000 0 0 WET}
+ {3541971600 3600 1 WEST}
+ {3560115600 0 0 WET}
+ {3573421200 3600 1 WEST}
+ {3592170000 0 0 WET}
+ {3604870800 3600 1 WEST}
+ {3623619600 0 0 WET}
+ {3636320400 3600 1 WEST}
+ {3655069200 0 0 WET}
+ {3668374800 3600 1 WEST}
+ {3686518800 0 0 WET}
+ {3699824400 3600 1 WEST}
+ {3717968400 0 0 WET}
+ {3731274000 3600 1 WEST}
+ {3750022800 0 0 WET}
+ {3762723600 3600 1 WEST}
+ {3781472400 0 0 WET}
+ {3794173200 3600 1 WEST}
+ {3812922000 0 0 WET}
+ {3825622800 3600 1 WEST}
+ {3844371600 0 0 WET}
+ {3857677200 3600 1 WEST}
+ {3875821200 0 0 WET}
+ {3889126800 3600 1 WEST}
+ {3907270800 0 0 WET}
+ {3920576400 3600 1 WEST}
+ {3939325200 0 0 WET}
+ {3952026000 3600 1 WEST}
+ {3970774800 0 0 WET}
+ {3983475600 3600 1 WEST}
+ {4002224400 0 0 WET}
+ {4015530000 3600 1 WEST}
+ {4033674000 0 0 WET}
+ {4046979600 3600 1 WEST}
+ {4065123600 0 0 WET}
+ {4078429200 3600 1 WEST}
+ {4096573200 0 0 WET}
+}
diff --git a/library/tzdata/Atlantic/Cape_Verde b/library/tzdata/Atlantic/Cape_Verde
new file mode 100644
index 0000000..f0bb79f
--- /dev/null
+++ b/library/tzdata/Atlantic/Cape_Verde
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Cape_Verde) {
+ {-9223372036854775808 -5644 0 LMT}
+ {-1988144756 -7200 0 CVT}
+ {-862610400 -3600 1 CVST}
+ {-764118000 -7200 0 CVT}
+ {186120000 -3600 0 CVT}
+}
diff --git a/library/tzdata/Atlantic/Faeroe b/library/tzdata/Atlantic/Faeroe
new file mode 100644
index 0000000..4cafc34
--- /dev/null
+++ b/library/tzdata/Atlantic/Faeroe
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Atlantic/Faroe)]} {
+ LoadTimeZoneFile Atlantic/Faroe
+}
+set TZData(:Atlantic/Faeroe) $TZData(:Atlantic/Faroe)
diff --git a/library/tzdata/Atlantic/Faroe b/library/tzdata/Atlantic/Faroe
new file mode 100644
index 0000000..d2c314a
--- /dev/null
+++ b/library/tzdata/Atlantic/Faroe
@@ -0,0 +1,245 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Faroe) {
+ {-9223372036854775808 -1624 0 LMT}
+ {-1955748776 0 0 WET}
+ {347155200 0 0 WET}
+ {354675600 3600 1 WEST}
+ {370400400 0 0 WET}
+ {386125200 3600 1 WEST}
+ {401850000 0 0 WET}
+ {417574800 3600 1 WEST}
+ {433299600 0 0 WET}
+ {449024400 3600 1 WEST}
+ {465354000 0 0 WET}
+ {481078800 3600 1 WEST}
+ {496803600 0 0 WET}
+ {512528400 3600 1 WEST}
+ {528253200 0 0 WET}
+ {543978000 3600 1 WEST}
+ {559702800 0 0 WET}
+ {575427600 3600 1 WEST}
+ {591152400 0 0 WET}
+ {606877200 3600 1 WEST}
+ {622602000 0 0 WET}
+ {638326800 3600 1 WEST}
+ {654656400 0 0 WET}
+ {670381200 3600 1 WEST}
+ {686106000 0 0 WET}
+ {701830800 3600 1 WEST}
+ {717555600 0 0 WET}
+ {733280400 3600 1 WEST}
+ {749005200 0 0 WET}
+ {764730000 3600 1 WEST}
+ {780454800 0 0 WET}
+ {796179600 3600 1 WEST}
+ {811904400 0 0 WET}
+ {828234000 3600 1 WEST}
+ {846378000 0 0 WET}
+ {859683600 3600 1 WEST}
+ {877827600 0 0 WET}
+ {891133200 3600 1 WEST}
+ {909277200 0 0 WET}
+ {922582800 3600 1 WEST}
+ {941331600 0 0 WET}
+ {954032400 3600 1 WEST}
+ {972781200 0 0 WET}
+ {985482000 3600 1 WEST}
+ {1004230800 0 0 WET}
+ {1017536400 3600 1 WEST}
+ {1035680400 0 0 WET}
+ {1048986000 3600 1 WEST}
+ {1067130000 0 0 WET}
+ {1080435600 3600 1 WEST}
+ {1099184400 0 0 WET}
+ {1111885200 3600 1 WEST}
+ {1130634000 0 0 WET}
+ {1143334800 3600 1 WEST}
+ {1162083600 0 0 WET}
+ {1174784400 3600 1 WEST}
+ {1193533200 0 0 WET}
+ {1206838800 3600 1 WEST}
+ {1224982800 0 0 WET}
+ {1238288400 3600 1 WEST}
+ {1256432400 0 0 WET}
+ {1269738000 3600 1 WEST}
+ {1288486800 0 0 WET}
+ {1301187600 3600 1 WEST}
+ {1319936400 0 0 WET}
+ {1332637200 3600 1 WEST}
+ {1351386000 0 0 WET}
+ {1364691600 3600 1 WEST}
+ {1382835600 0 0 WET}
+ {1396141200 3600 1 WEST}
+ {1414285200 0 0 WET}
+ {1427590800 3600 1 WEST}
+ {1445734800 0 0 WET}
+ {1459040400 3600 1 WEST}
+ {1477789200 0 0 WET}
+ {1490490000 3600 1 WEST}
+ {1509238800 0 0 WET}
+ {1521939600 3600 1 WEST}
+ {1540688400 0 0 WET}
+ {1553994000 3600 1 WEST}
+ {1572138000 0 0 WET}
+ {1585443600 3600 1 WEST}
+ {1603587600 0 0 WET}
+ {1616893200 3600 1 WEST}
+ {1635642000 0 0 WET}
+ {1648342800 3600 1 WEST}
+ {1667091600 0 0 WET}
+ {1679792400 3600 1 WEST}
+ {1698541200 0 0 WET}
+ {1711846800 3600 1 WEST}
+ {1729990800 0 0 WET}
+ {1743296400 3600 1 WEST}
+ {1761440400 0 0 WET}
+ {1774746000 3600 1 WEST}
+ {1792890000 0 0 WET}
+ {1806195600 3600 1 WEST}
+ {1824944400 0 0 WET}
+ {1837645200 3600 1 WEST}
+ {1856394000 0 0 WET}
+ {1869094800 3600 1 WEST}
+ {1887843600 0 0 WET}
+ {1901149200 3600 1 WEST}
+ {1919293200 0 0 WET}
+ {1932598800 3600 1 WEST}
+ {1950742800 0 0 WET}
+ {1964048400 3600 1 WEST}
+ {1982797200 0 0 WET}
+ {1995498000 3600 1 WEST}
+ {2014246800 0 0 WET}
+ {2026947600 3600 1 WEST}
+ {2045696400 0 0 WET}
+ {2058397200 3600 1 WEST}
+ {2077146000 0 0 WET}
+ {2090451600 3600 1 WEST}
+ {2108595600 0 0 WET}
+ {2121901200 3600 1 WEST}
+ {2140045200 0 0 WET}
+ {2153350800 3600 1 WEST}
+ {2172099600 0 0 WET}
+ {2184800400 3600 1 WEST}
+ {2203549200 0 0 WET}
+ {2216250000 3600 1 WEST}
+ {2234998800 0 0 WET}
+ {2248304400 3600 1 WEST}
+ {2266448400 0 0 WET}
+ {2279754000 3600 1 WEST}
+ {2297898000 0 0 WET}
+ {2311203600 3600 1 WEST}
+ {2329347600 0 0 WET}
+ {2342653200 3600 1 WEST}
+ {2361402000 0 0 WET}
+ {2374102800 3600 1 WEST}
+ {2392851600 0 0 WET}
+ {2405552400 3600 1 WEST}
+ {2424301200 0 0 WET}
+ {2437606800 3600 1 WEST}
+ {2455750800 0 0 WET}
+ {2469056400 3600 1 WEST}
+ {2487200400 0 0 WET}
+ {2500506000 3600 1 WEST}
+ {2519254800 0 0 WET}
+ {2531955600 3600 1 WEST}
+ {2550704400 0 0 WET}
+ {2563405200 3600 1 WEST}
+ {2582154000 0 0 WET}
+ {2595459600 3600 1 WEST}
+ {2613603600 0 0 WET}
+ {2626909200 3600 1 WEST}
+ {2645053200 0 0 WET}
+ {2658358800 3600 1 WEST}
+ {2676502800 0 0 WET}
+ {2689808400 3600 1 WEST}
+ {2708557200 0 0 WET}
+ {2721258000 3600 1 WEST}
+ {2740006800 0 0 WET}
+ {2752707600 3600 1 WEST}
+ {2771456400 0 0 WET}
+ {2784762000 3600 1 WEST}
+ {2802906000 0 0 WET}
+ {2816211600 3600 1 WEST}
+ {2834355600 0 0 WET}
+ {2847661200 3600 1 WEST}
+ {2866410000 0 0 WET}
+ {2879110800 3600 1 WEST}
+ {2897859600 0 0 WET}
+ {2910560400 3600 1 WEST}
+ {2929309200 0 0 WET}
+ {2942010000 3600 1 WEST}
+ {2960758800 0 0 WET}
+ {2974064400 3600 1 WEST}
+ {2992208400 0 0 WET}
+ {3005514000 3600 1 WEST}
+ {3023658000 0 0 WET}
+ {3036963600 3600 1 WEST}
+ {3055712400 0 0 WET}
+ {3068413200 3600 1 WEST}
+ {3087162000 0 0 WET}
+ {3099862800 3600 1 WEST}
+ {3118611600 0 0 WET}
+ {3131917200 3600 1 WEST}
+ {3150061200 0 0 WET}
+ {3163366800 3600 1 WEST}
+ {3181510800 0 0 WET}
+ {3194816400 3600 1 WEST}
+ {3212960400 0 0 WET}
+ {3226266000 3600 1 WEST}
+ {3245014800 0 0 WET}
+ {3257715600 3600 1 WEST}
+ {3276464400 0 0 WET}
+ {3289165200 3600 1 WEST}
+ {3307914000 0 0 WET}
+ {3321219600 3600 1 WEST}
+ {3339363600 0 0 WET}
+ {3352669200 3600 1 WEST}
+ {3370813200 0 0 WET}
+ {3384118800 3600 1 WEST}
+ {3402867600 0 0 WET}
+ {3415568400 3600 1 WEST}
+ {3434317200 0 0 WET}
+ {3447018000 3600 1 WEST}
+ {3465766800 0 0 WET}
+ {3479072400 3600 1 WEST}
+ {3497216400 0 0 WET}
+ {3510522000 3600 1 WEST}
+ {3528666000 0 0 WET}
+ {3541971600 3600 1 WEST}
+ {3560115600 0 0 WET}
+ {3573421200 3600 1 WEST}
+ {3592170000 0 0 WET}
+ {3604870800 3600 1 WEST}
+ {3623619600 0 0 WET}
+ {3636320400 3600 1 WEST}
+ {3655069200 0 0 WET}
+ {3668374800 3600 1 WEST}
+ {3686518800 0 0 WET}
+ {3699824400 3600 1 WEST}
+ {3717968400 0 0 WET}
+ {3731274000 3600 1 WEST}
+ {3750022800 0 0 WET}
+ {3762723600 3600 1 WEST}
+ {3781472400 0 0 WET}
+ {3794173200 3600 1 WEST}
+ {3812922000 0 0 WET}
+ {3825622800 3600 1 WEST}
+ {3844371600 0 0 WET}
+ {3857677200 3600 1 WEST}
+ {3875821200 0 0 WET}
+ {3889126800 3600 1 WEST}
+ {3907270800 0 0 WET}
+ {3920576400 3600 1 WEST}
+ {3939325200 0 0 WET}
+ {3952026000 3600 1 WEST}
+ {3970774800 0 0 WET}
+ {3983475600 3600 1 WEST}
+ {4002224400 0 0 WET}
+ {4015530000 3600 1 WEST}
+ {4033674000 0 0 WET}
+ {4046979600 3600 1 WEST}
+ {4065123600 0 0 WET}
+ {4078429200 3600 1 WEST}
+ {4096573200 0 0 WET}
+}
diff --git a/library/tzdata/Atlantic/Jan_Mayen b/library/tzdata/Atlantic/Jan_Mayen
new file mode 100644
index 0000000..e592187
--- /dev/null
+++ b/library/tzdata/Atlantic/Jan_Mayen
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Oslo)]} {
+ LoadTimeZoneFile Europe/Oslo
+}
+set TZData(:Atlantic/Jan_Mayen) $TZData(:Europe/Oslo)
diff --git a/library/tzdata/Atlantic/Madeira b/library/tzdata/Atlantic/Madeira
new file mode 100644
index 0000000..4960eeb
--- /dev/null
+++ b/library/tzdata/Atlantic/Madeira
@@ -0,0 +1,350 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Madeira) {
+ {-9223372036854775808 -4056 0 LMT}
+ {-2713906344 -4056 0 FMT}
+ {-1849560744 -3600 0 MADT}
+ {-1689552000 0 1 MADST}
+ {-1677798000 -3600 0 MADT}
+ {-1667433600 0 1 MADST}
+ {-1647734400 -3600 0 MADT}
+ {-1635811200 0 1 MADST}
+ {-1616198400 -3600 0 MADT}
+ {-1604361600 0 1 MADST}
+ {-1584662400 -3600 0 MADT}
+ {-1572739200 0 1 MADST}
+ {-1553040000 -3600 0 MADT}
+ {-1541203200 0 1 MADST}
+ {-1521504000 -3600 0 MADT}
+ {-1442448000 0 1 MADST}
+ {-1426809600 -3600 0 MADT}
+ {-1379289600 0 1 MADST}
+ {-1364774400 -3600 0 MADT}
+ {-1348444800 0 1 MADST}
+ {-1333324800 -3600 0 MADT}
+ {-1316390400 0 1 MADST}
+ {-1301270400 -3600 0 MADT}
+ {-1284336000 0 1 MADST}
+ {-1269820800 -3600 0 MADT}
+ {-1221436800 0 1 MADST}
+ {-1206921600 -3600 0 MADT}
+ {-1191196800 0 1 MADST}
+ {-1175472000 -3600 0 MADT}
+ {-1127692800 0 1 MADST}
+ {-1111968000 -3600 0 MADT}
+ {-1096848000 0 1 MADST}
+ {-1080518400 -3600 0 MADT}
+ {-1063584000 0 1 MADST}
+ {-1049068800 -3600 0 MADT}
+ {-1033344000 0 1 MADST}
+ {-1017619200 -3600 0 MADT}
+ {-1002499200 0 1 MADST}
+ {-986169600 -3600 0 MADT}
+ {-969235200 0 1 MADST}
+ {-950486400 -3600 0 MADT}
+ {-942019200 0 1 MADST}
+ {-922665600 -3600 0 MADT}
+ {-906940800 0 1 MADST}
+ {-891129600 -3600 0 MADT}
+ {-877305600 0 1 MADST}
+ {-873680400 3600 1 MADMT}
+ {-864003600 0 1 MADST}
+ {-857952000 -3600 0 MADT}
+ {-845856000 0 1 MADST}
+ {-842835600 3600 1 MADMT}
+ {-831344400 0 1 MADST}
+ {-825897600 -3600 0 MADT}
+ {-814406400 0 1 MADST}
+ {-810781200 3600 1 MADMT}
+ {-799894800 0 1 MADST}
+ {-794448000 -3600 0 MADT}
+ {-782956800 0 1 MADST}
+ {-779331600 3600 1 MADMT}
+ {-768445200 0 1 MADST}
+ {-762998400 -3600 0 MADT}
+ {-749088000 0 1 MADST}
+ {-733363200 -3600 0 MADT}
+ {-717627600 0 1 MADST}
+ {-701902800 -3600 0 MADT}
+ {-686178000 0 1 MADST}
+ {-670453200 -3600 0 MADT}
+ {-654728400 0 1 MADST}
+ {-639003600 -3600 0 MADT}
+ {-591829200 0 1 MADST}
+ {-575499600 -3600 0 MADT}
+ {-559774800 0 1 MADST}
+ {-544050000 -3600 0 MADT}
+ {-528325200 0 1 MADST}
+ {-512600400 -3600 0 MADT}
+ {-496875600 0 1 MADST}
+ {-481150800 -3600 0 MADT}
+ {-465426000 0 1 MADST}
+ {-449701200 -3600 0 MADT}
+ {-433976400 0 1 MADST}
+ {-417646800 -3600 0 MADT}
+ {-401922000 0 1 MADST}
+ {-386197200 -3600 0 MADT}
+ {-370472400 0 1 MADST}
+ {-354747600 -3600 0 MADT}
+ {-339022800 0 1 MADST}
+ {-323298000 -3600 0 MADT}
+ {-307573200 0 1 MADST}
+ {-291848400 -3600 0 MADT}
+ {-276123600 0 1 MADST}
+ {-260398800 -3600 0 MADT}
+ {-244674000 0 1 MADST}
+ {-228344400 -3600 0 MADT}
+ {-212619600 0 1 MADST}
+ {-196894800 -3600 0 MADT}
+ {-181170000 0 1 MADST}
+ {-165445200 -3600 0 MADT}
+ {-149720400 0 1 MADST}
+ {-133995600 -3600 0 MADT}
+ {-118270800 0 0 WET}
+ {228268800 3600 1 WEST}
+ {243993600 0 0 WET}
+ {260323200 3600 1 WEST}
+ {276048000 0 0 WET}
+ {291772800 3600 1 WEST}
+ {307501200 0 0 WET}
+ {323222400 3600 1 WEST}
+ {338950800 0 0 WET}
+ {354675600 3600 1 WEST}
+ {370400400 0 0 WET}
+ {386125200 3600 1 WEST}
+ {401850000 0 0 WET}
+ {417578400 3600 1 WEST}
+ {433299600 0 0 WET}
+ {449024400 3600 1 WEST}
+ {465354000 0 0 WET}
+ {481078800 3600 1 WEST}
+ {496803600 0 0 WET}
+ {512528400 3600 1 WEST}
+ {528253200 0 0 WET}
+ {543978000 3600 1 WEST}
+ {559702800 0 0 WET}
+ {575427600 3600 1 WEST}
+ {591152400 0 0 WET}
+ {606877200 3600 1 WEST}
+ {622602000 0 0 WET}
+ {638326800 3600 1 WEST}
+ {654656400 0 0 WET}
+ {670381200 3600 1 WEST}
+ {686106000 0 0 WET}
+ {701830800 3600 1 WEST}
+ {717555600 0 0 WET}
+ {733280400 3600 1 WEST}
+ {749005200 0 0 WET}
+ {764730000 3600 1 WEST}
+ {780454800 0 0 WET}
+ {796179600 3600 1 WEST}
+ {811904400 0 0 WET}
+ {828234000 3600 1 WEST}
+ {846378000 0 0 WET}
+ {859683600 3600 1 WEST}
+ {877827600 0 0 WET}
+ {891133200 3600 1 WEST}
+ {909277200 0 0 WET}
+ {922582800 3600 1 WEST}
+ {941331600 0 0 WET}
+ {954032400 3600 1 WEST}
+ {972781200 0 0 WET}
+ {985482000 3600 1 WEST}
+ {1004230800 0 0 WET}
+ {1017536400 3600 1 WEST}
+ {1035680400 0 0 WET}
+ {1048986000 3600 1 WEST}
+ {1067130000 0 0 WET}
+ {1080435600 3600 1 WEST}
+ {1099184400 0 0 WET}
+ {1111885200 3600 1 WEST}
+ {1130634000 0 0 WET}
+ {1143334800 3600 1 WEST}
+ {1162083600 0 0 WET}
+ {1174784400 3600 1 WEST}
+ {1193533200 0 0 WET}
+ {1206838800 3600 1 WEST}
+ {1224982800 0 0 WET}
+ {1238288400 3600 1 WEST}
+ {1256432400 0 0 WET}
+ {1269738000 3600 1 WEST}
+ {1288486800 0 0 WET}
+ {1301187600 3600 1 WEST}
+ {1319936400 0 0 WET}
+ {1332637200 3600 1 WEST}
+ {1351386000 0 0 WET}
+ {1364691600 3600 1 WEST}
+ {1382835600 0 0 WET}
+ {1396141200 3600 1 WEST}
+ {1414285200 0 0 WET}
+ {1427590800 3600 1 WEST}
+ {1445734800 0 0 WET}
+ {1459040400 3600 1 WEST}
+ {1477789200 0 0 WET}
+ {1490490000 3600 1 WEST}
+ {1509238800 0 0 WET}
+ {1521939600 3600 1 WEST}
+ {1540688400 0 0 WET}
+ {1553994000 3600 1 WEST}
+ {1572138000 0 0 WET}
+ {1585443600 3600 1 WEST}
+ {1603587600 0 0 WET}
+ {1616893200 3600 1 WEST}
+ {1635642000 0 0 WET}
+ {1648342800 3600 1 WEST}
+ {1667091600 0 0 WET}
+ {1679792400 3600 1 WEST}
+ {1698541200 0 0 WET}
+ {1711846800 3600 1 WEST}
+ {1729990800 0 0 WET}
+ {1743296400 3600 1 WEST}
+ {1761440400 0 0 WET}
+ {1774746000 3600 1 WEST}
+ {1792890000 0 0 WET}
+ {1806195600 3600 1 WEST}
+ {1824944400 0 0 WET}
+ {1837645200 3600 1 WEST}
+ {1856394000 0 0 WET}
+ {1869094800 3600 1 WEST}
+ {1887843600 0 0 WET}
+ {1901149200 3600 1 WEST}
+ {1919293200 0 0 WET}
+ {1932598800 3600 1 WEST}
+ {1950742800 0 0 WET}
+ {1964048400 3600 1 WEST}
+ {1982797200 0 0 WET}
+ {1995498000 3600 1 WEST}
+ {2014246800 0 0 WET}
+ {2026947600 3600 1 WEST}
+ {2045696400 0 0 WET}
+ {2058397200 3600 1 WEST}
+ {2077146000 0 0 WET}
+ {2090451600 3600 1 WEST}
+ {2108595600 0 0 WET}
+ {2121901200 3600 1 WEST}
+ {2140045200 0 0 WET}
+ {2153350800 3600 1 WEST}
+ {2172099600 0 0 WET}
+ {2184800400 3600 1 WEST}
+ {2203549200 0 0 WET}
+ {2216250000 3600 1 WEST}
+ {2234998800 0 0 WET}
+ {2248304400 3600 1 WEST}
+ {2266448400 0 0 WET}
+ {2279754000 3600 1 WEST}
+ {2297898000 0 0 WET}
+ {2311203600 3600 1 WEST}
+ {2329347600 0 0 WET}
+ {2342653200 3600 1 WEST}
+ {2361402000 0 0 WET}
+ {2374102800 3600 1 WEST}
+ {2392851600 0 0 WET}
+ {2405552400 3600 1 WEST}
+ {2424301200 0 0 WET}
+ {2437606800 3600 1 WEST}
+ {2455750800 0 0 WET}
+ {2469056400 3600 1 WEST}
+ {2487200400 0 0 WET}
+ {2500506000 3600 1 WEST}
+ {2519254800 0 0 WET}
+ {2531955600 3600 1 WEST}
+ {2550704400 0 0 WET}
+ {2563405200 3600 1 WEST}
+ {2582154000 0 0 WET}
+ {2595459600 3600 1 WEST}
+ {2613603600 0 0 WET}
+ {2626909200 3600 1 WEST}
+ {2645053200 0 0 WET}
+ {2658358800 3600 1 WEST}
+ {2676502800 0 0 WET}
+ {2689808400 3600 1 WEST}
+ {2708557200 0 0 WET}
+ {2721258000 3600 1 WEST}
+ {2740006800 0 0 WET}
+ {2752707600 3600 1 WEST}
+ {2771456400 0 0 WET}
+ {2784762000 3600 1 WEST}
+ {2802906000 0 0 WET}
+ {2816211600 3600 1 WEST}
+ {2834355600 0 0 WET}
+ {2847661200 3600 1 WEST}
+ {2866410000 0 0 WET}
+ {2879110800 3600 1 WEST}
+ {2897859600 0 0 WET}
+ {2910560400 3600 1 WEST}
+ {2929309200 0 0 WET}
+ {2942010000 3600 1 WEST}
+ {2960758800 0 0 WET}
+ {2974064400 3600 1 WEST}
+ {2992208400 0 0 WET}
+ {3005514000 3600 1 WEST}
+ {3023658000 0 0 WET}
+ {3036963600 3600 1 WEST}
+ {3055712400 0 0 WET}
+ {3068413200 3600 1 WEST}
+ {3087162000 0 0 WET}
+ {3099862800 3600 1 WEST}
+ {3118611600 0 0 WET}
+ {3131917200 3600 1 WEST}
+ {3150061200 0 0 WET}
+ {3163366800 3600 1 WEST}
+ {3181510800 0 0 WET}
+ {3194816400 3600 1 WEST}
+ {3212960400 0 0 WET}
+ {3226266000 3600 1 WEST}
+ {3245014800 0 0 WET}
+ {3257715600 3600 1 WEST}
+ {3276464400 0 0 WET}
+ {3289165200 3600 1 WEST}
+ {3307914000 0 0 WET}
+ {3321219600 3600 1 WEST}
+ {3339363600 0 0 WET}
+ {3352669200 3600 1 WEST}
+ {3370813200 0 0 WET}
+ {3384118800 3600 1 WEST}
+ {3402867600 0 0 WET}
+ {3415568400 3600 1 WEST}
+ {3434317200 0 0 WET}
+ {3447018000 3600 1 WEST}
+ {3465766800 0 0 WET}
+ {3479072400 3600 1 WEST}
+ {3497216400 0 0 WET}
+ {3510522000 3600 1 WEST}
+ {3528666000 0 0 WET}
+ {3541971600 3600 1 WEST}
+ {3560115600 0 0 WET}
+ {3573421200 3600 1 WEST}
+ {3592170000 0 0 WET}
+ {3604870800 3600 1 WEST}
+ {3623619600 0 0 WET}
+ {3636320400 3600 1 WEST}
+ {3655069200 0 0 WET}
+ {3668374800 3600 1 WEST}
+ {3686518800 0 0 WET}
+ {3699824400 3600 1 WEST}
+ {3717968400 0 0 WET}
+ {3731274000 3600 1 WEST}
+ {3750022800 0 0 WET}
+ {3762723600 3600 1 WEST}
+ {3781472400 0 0 WET}
+ {3794173200 3600 1 WEST}
+ {3812922000 0 0 WET}
+ {3825622800 3600 1 WEST}
+ {3844371600 0 0 WET}
+ {3857677200 3600 1 WEST}
+ {3875821200 0 0 WET}
+ {3889126800 3600 1 WEST}
+ {3907270800 0 0 WET}
+ {3920576400 3600 1 WEST}
+ {3939325200 0 0 WET}
+ {3952026000 3600 1 WEST}
+ {3970774800 0 0 WET}
+ {3983475600 3600 1 WEST}
+ {4002224400 0 0 WET}
+ {4015530000 3600 1 WEST}
+ {4033674000 0 0 WET}
+ {4046979600 3600 1 WEST}
+ {4065123600 0 0 WET}
+ {4078429200 3600 1 WEST}
+ {4096573200 0 0 WET}
+}
diff --git a/library/tzdata/Atlantic/Reykjavik b/library/tzdata/Atlantic/Reykjavik
new file mode 100644
index 0000000..f0248ad
--- /dev/null
+++ b/library/tzdata/Atlantic/Reykjavik
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Reykjavik) {
+ {-9223372036854775808 -5244 0 LMT}
+ {-4197047556 -5268 0 RMT}
+ {-1956609132 -3600 0 IST}
+ {-1668211200 0 1 ISST}
+ {-1647212400 -3600 0 IST}
+ {-1636675200 0 1 ISST}
+ {-1613430000 -3600 0 IST}
+ {-968025600 0 1 ISST}
+ {-949615200 -3600 0 IST}
+ {-942008400 0 1 ISST}
+ {-920239200 -3600 0 IST}
+ {-909957600 0 1 ISST}
+ {-888789600 -3600 0 IST}
+ {-877903200 0 1 ISST}
+ {-857944800 -3600 0 IST}
+ {-846453600 0 1 ISST}
+ {-826495200 -3600 0 IST}
+ {-815004000 0 1 ISST}
+ {-795045600 -3600 0 IST}
+ {-783554400 0 1 ISST}
+ {-762991200 -3600 0 IST}
+ {-752104800 0 1 ISST}
+ {-731541600 -3600 0 IST}
+ {-717631200 0 1 ISST}
+ {-700092000 -3600 0 IST}
+ {-686181600 0 1 ISST}
+ {-668642400 -3600 0 IST}
+ {-654732000 0 1 ISST}
+ {-636588000 -3600 0 IST}
+ {-623282400 0 1 ISST}
+ {-605743200 -3600 0 IST}
+ {-591832800 0 1 ISST}
+ {-573688800 -3600 0 IST}
+ {-559778400 0 1 ISST}
+ {-542239200 -3600 0 IST}
+ {-528328800 0 1 ISST}
+ {-510789600 -3600 0 IST}
+ {-496879200 0 1 ISST}
+ {-479340000 -3600 0 IST}
+ {-465429600 0 1 ISST}
+ {-447890400 -3600 0 IST}
+ {-433980000 0 1 ISST}
+ {-415836000 -3600 0 IST}
+ {-401925600 0 1 ISST}
+ {-384386400 -3600 0 IST}
+ {-370476000 0 1 ISST}
+ {-352936800 -3600 0 IST}
+ {-339026400 0 1 ISST}
+ {-321487200 -3600 0 IST}
+ {-307576800 0 1 ISST}
+ {-290037600 -3600 0 IST}
+ {-276127200 0 1 ISST}
+ {-258588000 -3600 0 IST}
+ {-244677600 0 1 ISST}
+ {-226533600 -3600 0 IST}
+ {-212623200 0 1 ISST}
+ {-195084000 -3600 0 IST}
+ {-181173600 0 1 ISST}
+ {-163634400 -3600 0 IST}
+ {-149724000 0 1 ISST}
+ {-132184800 -3600 0 IST}
+ {-118274400 0 1 ISST}
+ {-100735200 -3600 0 IST}
+ {-86824800 0 1 ISST}
+ {-68680800 -3600 0 IST}
+ {-54770400 0 0 GMT}
+}
diff --git a/library/tzdata/Atlantic/South_Georgia b/library/tzdata/Atlantic/South_Georgia
new file mode 100644
index 0000000..cbfc826
--- /dev/null
+++ b/library/tzdata/Atlantic/South_Georgia
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/South_Georgia) {
+ {-9223372036854775808 -8768 0 LMT}
+ {-2524512832 -7200 0 GST}
+}
diff --git a/library/tzdata/Atlantic/St_Helena b/library/tzdata/Atlantic/St_Helena
new file mode 100644
index 0000000..6d0c00d
--- /dev/null
+++ b/library/tzdata/Atlantic/St_Helena
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/St_Helena) {
+ {-9223372036854775808 -1368 0 LMT}
+ {-2524520232 -1368 0 JMT}
+ {-599614632 0 0 GMT}
+}
diff --git a/library/tzdata/Atlantic/Stanley b/library/tzdata/Atlantic/Stanley
new file mode 100644
index 0000000..c287238
--- /dev/null
+++ b/library/tzdata/Atlantic/Stanley
@@ -0,0 +1,75 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Atlantic/Stanley) {
+ {-9223372036854775808 -13884 0 LMT}
+ {-2524507716 -13884 0 SMT}
+ {-1824235716 -14400 0 FKT}
+ {-1018209600 -10800 1 FKST}
+ {-1003093200 -14400 0 FKT}
+ {-986760000 -10800 1 FKST}
+ {-971643600 -14400 0 FKT}
+ {-954705600 -10800 1 FKST}
+ {-939589200 -14400 0 FKT}
+ {-923256000 -10800 1 FKST}
+ {-908139600 -14400 0 FKT}
+ {-891806400 -10800 1 FKST}
+ {-876690000 -14400 0 FKT}
+ {-860356800 -10800 1 FKST}
+ {420606000 -7200 0 FKT}
+ {433303200 -7200 1 FKST}
+ {452052000 -10800 0 FKT}
+ {464151600 -7200 1 FKST}
+ {483501600 -10800 0 FKT}
+ {495597600 -14400 0 FKT}
+ {495604800 -10800 1 FKST}
+ {514350000 -14400 0 FKT}
+ {527054400 -10800 1 FKST}
+ {545799600 -14400 0 FKT}
+ {558504000 -10800 1 FKST}
+ {577249200 -14400 0 FKT}
+ {589953600 -10800 1 FKST}
+ {608698800 -14400 0 FKT}
+ {621403200 -10800 1 FKST}
+ {640753200 -14400 0 FKT}
+ {652852800 -10800 1 FKST}
+ {672202800 -14400 0 FKT}
+ {684907200 -10800 1 FKST}
+ {703652400 -14400 0 FKT}
+ {716356800 -10800 1 FKST}
+ {735102000 -14400 0 FKT}
+ {747806400 -10800 1 FKST}
+ {766551600 -14400 0 FKT}
+ {779256000 -10800 1 FKST}
+ {798001200 -14400 0 FKT}
+ {810705600 -10800 1 FKST}
+ {830055600 -14400 0 FKT}
+ {842760000 -10800 1 FKST}
+ {861505200 -14400 0 FKT}
+ {874209600 -10800 1 FKST}
+ {892954800 -14400 0 FKT}
+ {905659200 -10800 1 FKST}
+ {924404400 -14400 0 FKT}
+ {937108800 -10800 1 FKST}
+ {955854000 -14400 0 FKT}
+ {968558400 -10800 1 FKST}
+ {987310800 -14400 0 FKT}
+ {999410400 -10800 1 FKST}
+ {1019365200 -14400 0 FKT}
+ {1030860000 -10800 1 FKST}
+ {1050814800 -14400 0 FKT}
+ {1062914400 -10800 1 FKST}
+ {1082264400 -14400 0 FKT}
+ {1094364000 -10800 1 FKST}
+ {1113714000 -14400 0 FKT}
+ {1125813600 -10800 1 FKST}
+ {1145163600 -14400 0 FKT}
+ {1157263200 -10800 1 FKST}
+ {1176613200 -14400 0 FKT}
+ {1188712800 -10800 1 FKST}
+ {1208667600 -14400 0 FKT}
+ {1220767200 -10800 1 FKST}
+ {1240117200 -14400 0 FKT}
+ {1252216800 -10800 1 FKST}
+ {1271566800 -14400 0 FKT}
+ {1283662800 -10800 0 FKST}
+}
diff --git a/library/tzdata/Australia/ACT b/library/tzdata/Australia/ACT
new file mode 100644
index 0000000..f7da281
--- /dev/null
+++ b/library/tzdata/Australia/ACT
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Sydney)]} {
+ LoadTimeZoneFile Australia/Sydney
+}
+set TZData(:Australia/ACT) $TZData(:Australia/Sydney)
diff --git a/library/tzdata/Australia/Adelaide b/library/tzdata/Australia/Adelaide
new file mode 100644
index 0000000..9abe192
--- /dev/null
+++ b/library/tzdata/Australia/Adelaide
@@ -0,0 +1,273 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Adelaide) {
+ {-9223372036854775808 33260 0 LMT}
+ {-2364110060 32400 0 CST}
+ {-2230189200 34200 0 CST}
+ {-1672565340 37800 1 CST}
+ {-1665390600 34200 0 CST}
+ {-883639800 37800 1 CST}
+ {-876126600 34200 0 CST}
+ {-860398200 37800 1 CST}
+ {-844677000 34200 0 CST}
+ {-828343800 37800 1 CST}
+ {-813227400 34200 0 CST}
+ {31501800 34200 0 CST}
+ {57688200 37800 1 CST}
+ {67969800 34200 0 CST}
+ {89137800 37800 1 CST}
+ {100024200 34200 0 CST}
+ {120587400 37800 1 CST}
+ {131473800 34200 0 CST}
+ {152037000 37800 1 CST}
+ {162923400 34200 0 CST}
+ {183486600 37800 1 CST}
+ {194977800 34200 0 CST}
+ {215541000 37800 1 CST}
+ {226427400 34200 0 CST}
+ {246990600 37800 1 CST}
+ {257877000 34200 0 CST}
+ {278440200 37800 1 CST}
+ {289326600 34200 0 CST}
+ {309889800 37800 1 CST}
+ {320776200 34200 0 CST}
+ {341339400 37800 1 CST}
+ {352225800 34200 0 CST}
+ {372789000 37800 1 CST}
+ {384280200 34200 0 CST}
+ {404843400 37800 1 CST}
+ {415729800 34200 0 CST}
+ {436293000 37800 1 CST}
+ {447179400 34200 0 CST}
+ {467742600 37800 1 CST}
+ {478629000 34200 0 CST}
+ {499192200 37800 1 CST}
+ {511288200 34200 0 CST}
+ {530037000 37800 1 CST}
+ {542737800 34200 0 CST}
+ {562091400 37800 1 CST}
+ {574792200 34200 0 CST}
+ {594145800 37800 1 CST}
+ {606241800 34200 0 CST}
+ {625595400 37800 1 CST}
+ {637691400 34200 0 CST}
+ {657045000 37800 1 CST}
+ {667931400 34200 0 CST}
+ {688494600 37800 1 CST}
+ {701195400 34200 0 CST}
+ {719944200 37800 1 CST}
+ {731435400 34200 0 CST}
+ {751998600 37800 1 CST}
+ {764094600 34200 0 CST}
+ {783448200 37800 1 CST}
+ {796149000 34200 0 CST}
+ {814897800 37800 1 CST}
+ {828203400 34200 0 CST}
+ {846347400 37800 1 CST}
+ {859653000 34200 0 CST}
+ {877797000 37800 1 CST}
+ {891102600 34200 0 CST}
+ {909246600 37800 1 CST}
+ {922552200 34200 0 CST}
+ {941301000 37800 1 CST}
+ {954001800 34200 0 CST}
+ {972750600 37800 1 CST}
+ {985451400 34200 0 CST}
+ {1004200200 37800 1 CST}
+ {1017505800 34200 0 CST}
+ {1035649800 37800 1 CST}
+ {1048955400 34200 0 CST}
+ {1067099400 37800 1 CST}
+ {1080405000 34200 0 CST}
+ {1099153800 37800 1 CST}
+ {1111854600 34200 0 CST}
+ {1130603400 37800 1 CST}
+ {1143909000 34200 0 CST}
+ {1162053000 37800 1 CST}
+ {1174753800 34200 0 CST}
+ {1193502600 37800 1 CST}
+ {1207413000 34200 0 CST}
+ {1223137800 37800 1 CST}
+ {1238862600 34200 0 CST}
+ {1254587400 37800 1 CST}
+ {1270312200 34200 0 CST}
+ {1286037000 37800 1 CST}
+ {1301761800 34200 0 CST}
+ {1317486600 37800 1 CST}
+ {1333211400 34200 0 CST}
+ {1349541000 37800 1 CST}
+ {1365265800 34200 0 CST}
+ {1380990600 37800 1 CST}
+ {1396715400 34200 0 CST}
+ {1412440200 37800 1 CST}
+ {1428165000 34200 0 CST}
+ {1443889800 37800 1 CST}
+ {1459614600 34200 0 CST}
+ {1475339400 37800 1 CST}
+ {1491064200 34200 0 CST}
+ {1506789000 37800 1 CST}
+ {1522513800 34200 0 CST}
+ {1538843400 37800 1 CST}
+ {1554568200 34200 0 CST}
+ {1570293000 37800 1 CST}
+ {1586017800 34200 0 CST}
+ {1601742600 37800 1 CST}
+ {1617467400 34200 0 CST}
+ {1633192200 37800 1 CST}
+ {1648917000 34200 0 CST}
+ {1664641800 37800 1 CST}
+ {1680366600 34200 0 CST}
+ {1696091400 37800 1 CST}
+ {1712421000 34200 0 CST}
+ {1728145800 37800 1 CST}
+ {1743870600 34200 0 CST}
+ {1759595400 37800 1 CST}
+ {1775320200 34200 0 CST}
+ {1791045000 37800 1 CST}
+ {1806769800 34200 0 CST}
+ {1822494600 37800 1 CST}
+ {1838219400 34200 0 CST}
+ {1853944200 37800 1 CST}
+ {1869669000 34200 0 CST}
+ {1885998600 37800 1 CST}
+ {1901723400 34200 0 CST}
+ {1917448200 37800 1 CST}
+ {1933173000 34200 0 CST}
+ {1948897800 37800 1 CST}
+ {1964622600 34200 0 CST}
+ {1980347400 37800 1 CST}
+ {1996072200 34200 0 CST}
+ {2011797000 37800 1 CST}
+ {2027521800 34200 0 CST}
+ {2043246600 37800 1 CST}
+ {2058971400 34200 0 CST}
+ {2075301000 37800 1 CST}
+ {2091025800 34200 0 CST}
+ {2106750600 37800 1 CST}
+ {2122475400 34200 0 CST}
+ {2138200200 37800 1 CST}
+ {2153925000 34200 0 CST}
+ {2169649800 37800 1 CST}
+ {2185374600 34200 0 CST}
+ {2201099400 37800 1 CST}
+ {2216824200 34200 0 CST}
+ {2233153800 37800 1 CST}
+ {2248878600 34200 0 CST}
+ {2264603400 37800 1 CST}
+ {2280328200 34200 0 CST}
+ {2296053000 37800 1 CST}
+ {2311777800 34200 0 CST}
+ {2327502600 37800 1 CST}
+ {2343227400 34200 0 CST}
+ {2358952200 37800 1 CST}
+ {2374677000 34200 0 CST}
+ {2390401800 37800 1 CST}
+ {2406126600 34200 0 CST}
+ {2422456200 37800 1 CST}
+ {2438181000 34200 0 CST}
+ {2453905800 37800 1 CST}
+ {2469630600 34200 0 CST}
+ {2485355400 37800 1 CST}
+ {2501080200 34200 0 CST}
+ {2516805000 37800 1 CST}
+ {2532529800 34200 0 CST}
+ {2548254600 37800 1 CST}
+ {2563979400 34200 0 CST}
+ {2579704200 37800 1 CST}
+ {2596033800 34200 0 CST}
+ {2611758600 37800 1 CST}
+ {2627483400 34200 0 CST}
+ {2643208200 37800 1 CST}
+ {2658933000 34200 0 CST}
+ {2674657800 37800 1 CST}
+ {2690382600 34200 0 CST}
+ {2706107400 37800 1 CST}
+ {2721832200 34200 0 CST}
+ {2737557000 37800 1 CST}
+ {2753281800 34200 0 CST}
+ {2769611400 37800 1 CST}
+ {2785336200 34200 0 CST}
+ {2801061000 37800 1 CST}
+ {2816785800 34200 0 CST}
+ {2832510600 37800 1 CST}
+ {2848235400 34200 0 CST}
+ {2863960200 37800 1 CST}
+ {2879685000 34200 0 CST}
+ {2895409800 37800 1 CST}
+ {2911134600 34200 0 CST}
+ {2926859400 37800 1 CST}
+ {2942584200 34200 0 CST}
+ {2958913800 37800 1 CST}
+ {2974638600 34200 0 CST}
+ {2990363400 37800 1 CST}
+ {3006088200 34200 0 CST}
+ {3021813000 37800 1 CST}
+ {3037537800 34200 0 CST}
+ {3053262600 37800 1 CST}
+ {3068987400 34200 0 CST}
+ {3084712200 37800 1 CST}
+ {3100437000 34200 0 CST}
+ {3116766600 37800 1 CST}
+ {3132491400 34200 0 CST}
+ {3148216200 37800 1 CST}
+ {3163941000 34200 0 CST}
+ {3179665800 37800 1 CST}
+ {3195390600 34200 0 CST}
+ {3211115400 37800 1 CST}
+ {3226840200 34200 0 CST}
+ {3242565000 37800 1 CST}
+ {3258289800 34200 0 CST}
+ {3274014600 37800 1 CST}
+ {3289739400 34200 0 CST}
+ {3306069000 37800 1 CST}
+ {3321793800 34200 0 CST}
+ {3337518600 37800 1 CST}
+ {3353243400 34200 0 CST}
+ {3368968200 37800 1 CST}
+ {3384693000 34200 0 CST}
+ {3400417800 37800 1 CST}
+ {3416142600 34200 0 CST}
+ {3431867400 37800 1 CST}
+ {3447592200 34200 0 CST}
+ {3463317000 37800 1 CST}
+ {3479646600 34200 0 CST}
+ {3495371400 37800 1 CST}
+ {3511096200 34200 0 CST}
+ {3526821000 37800 1 CST}
+ {3542545800 34200 0 CST}
+ {3558270600 37800 1 CST}
+ {3573995400 34200 0 CST}
+ {3589720200 37800 1 CST}
+ {3605445000 34200 0 CST}
+ {3621169800 37800 1 CST}
+ {3636894600 34200 0 CST}
+ {3653224200 37800 1 CST}
+ {3668949000 34200 0 CST}
+ {3684673800 37800 1 CST}
+ {3700398600 34200 0 CST}
+ {3716123400 37800 1 CST}
+ {3731848200 34200 0 CST}
+ {3747573000 37800 1 CST}
+ {3763297800 34200 0 CST}
+ {3779022600 37800 1 CST}
+ {3794747400 34200 0 CST}
+ {3810472200 37800 1 CST}
+ {3826197000 34200 0 CST}
+ {3842526600 37800 1 CST}
+ {3858251400 34200 0 CST}
+ {3873976200 37800 1 CST}
+ {3889701000 34200 0 CST}
+ {3905425800 37800 1 CST}
+ {3921150600 34200 0 CST}
+ {3936875400 37800 1 CST}
+ {3952600200 34200 0 CST}
+ {3968325000 37800 1 CST}
+ {3984049800 34200 0 CST}
+ {4000379400 37800 1 CST}
+ {4016104200 34200 0 CST}
+ {4031829000 37800 1 CST}
+ {4047553800 34200 0 CST}
+ {4063278600 37800 1 CST}
+ {4079003400 34200 0 CST}
+ {4094728200 37800 1 CST}
+}
diff --git a/library/tzdata/Australia/Brisbane b/library/tzdata/Australia/Brisbane
new file mode 100644
index 0000000..fe6d154
--- /dev/null
+++ b/library/tzdata/Australia/Brisbane
@@ -0,0 +1,23 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Brisbane) {
+ {-9223372036854775808 36728 0 LMT}
+ {-2366791928 36000 0 EST}
+ {-1672567140 39600 1 EST}
+ {-1665392400 36000 0 EST}
+ {-883641600 39600 1 EST}
+ {-876128400 36000 0 EST}
+ {-860400000 39600 1 EST}
+ {-844678800 36000 0 EST}
+ {-828345600 39600 1 EST}
+ {-813229200 36000 0 EST}
+ {31500000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {636480000 36000 0 EST}
+ {657043200 39600 1 EST}
+ {667929600 36000 0 EST}
+ {688492800 39600 1 EST}
+ {699379200 36000 0 EST}
+}
diff --git a/library/tzdata/Australia/Broken_Hill b/library/tzdata/Australia/Broken_Hill
new file mode 100644
index 0000000..35cbb7e
--- /dev/null
+++ b/library/tzdata/Australia/Broken_Hill
@@ -0,0 +1,275 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Broken_Hill) {
+ {-9223372036854775808 33948 0 LMT}
+ {-2364110748 36000 0 EST}
+ {-2314951200 32400 0 CST}
+ {-2230189200 34200 0 CST}
+ {-1672565340 37800 1 CST}
+ {-1665390600 34200 0 CST}
+ {-883639800 37800 1 CST}
+ {-876126600 34200 0 CST}
+ {-860398200 37800 1 CST}
+ {-844677000 34200 0 CST}
+ {-828343800 37800 1 CST}
+ {-813227400 34200 0 CST}
+ {31501800 34200 0 CST}
+ {57688200 37800 1 CST}
+ {67969800 34200 0 CST}
+ {89137800 37800 1 CST}
+ {100024200 34200 0 CST}
+ {120587400 37800 1 CST}
+ {131473800 34200 0 CST}
+ {152037000 37800 1 CST}
+ {162923400 34200 0 CST}
+ {183486600 37800 1 CST}
+ {194977800 34200 0 CST}
+ {215541000 37800 1 CST}
+ {226427400 34200 0 CST}
+ {246990600 37800 1 CST}
+ {257877000 34200 0 CST}
+ {278440200 37800 1 CST}
+ {289326600 34200 0 CST}
+ {309889800 37800 1 CST}
+ {320776200 34200 0 CST}
+ {341339400 37800 1 CST}
+ {352225800 34200 0 CST}
+ {372789000 37800 1 CST}
+ {386699400 34200 0 CST}
+ {404843400 37800 1 CST}
+ {415729800 34200 0 CST}
+ {436293000 37800 1 CST}
+ {447179400 34200 0 CST}
+ {467742600 37800 1 CST}
+ {478629000 34200 0 CST}
+ {499192200 37800 1 CST}
+ {511288200 34200 0 CST}
+ {530037000 37800 1 CST}
+ {542737800 34200 0 CST}
+ {562091400 37800 1 CST}
+ {574792200 34200 0 CST}
+ {594145800 37800 1 CST}
+ {606241800 34200 0 CST}
+ {625595400 37800 1 CST}
+ {636481800 34200 0 CST}
+ {657045000 37800 1 CST}
+ {667931400 34200 0 CST}
+ {688494600 37800 1 CST}
+ {699381000 34200 0 CST}
+ {719944200 37800 1 CST}
+ {731435400 34200 0 CST}
+ {751998600 37800 1 CST}
+ {762885000 34200 0 CST}
+ {783448200 37800 1 CST}
+ {794334600 34200 0 CST}
+ {814897800 37800 1 CST}
+ {828203400 34200 0 CST}
+ {846347400 37800 1 CST}
+ {859653000 34200 0 CST}
+ {877797000 37800 1 CST}
+ {891102600 34200 0 CST}
+ {909246600 37800 1 CST}
+ {922552200 34200 0 CST}
+ {941301000 37800 1 CST}
+ {946647000 37800 0 CST}
+ {954001800 34200 0 CST}
+ {972750600 37800 1 CST}
+ {985451400 34200 0 CST}
+ {1004200200 37800 1 CST}
+ {1017505800 34200 0 CST}
+ {1035649800 37800 1 CST}
+ {1048955400 34200 0 CST}
+ {1067099400 37800 1 CST}
+ {1080405000 34200 0 CST}
+ {1099153800 37800 1 CST}
+ {1111854600 34200 0 CST}
+ {1130603400 37800 1 CST}
+ {1143909000 34200 0 CST}
+ {1162053000 37800 1 CST}
+ {1174753800 34200 0 CST}
+ {1193502600 37800 1 CST}
+ {1207413000 34200 0 CST}
+ {1223137800 37800 1 CST}
+ {1238862600 34200 0 CST}
+ {1254587400 37800 1 CST}
+ {1270312200 34200 0 CST}
+ {1286037000 37800 1 CST}
+ {1301761800 34200 0 CST}
+ {1317486600 37800 1 CST}
+ {1333211400 34200 0 CST}
+ {1349541000 37800 1 CST}
+ {1365265800 34200 0 CST}
+ {1380990600 37800 1 CST}
+ {1396715400 34200 0 CST}
+ {1412440200 37800 1 CST}
+ {1428165000 34200 0 CST}
+ {1443889800 37800 1 CST}
+ {1459614600 34200 0 CST}
+ {1475339400 37800 1 CST}
+ {1491064200 34200 0 CST}
+ {1506789000 37800 1 CST}
+ {1522513800 34200 0 CST}
+ {1538843400 37800 1 CST}
+ {1554568200 34200 0 CST}
+ {1570293000 37800 1 CST}
+ {1586017800 34200 0 CST}
+ {1601742600 37800 1 CST}
+ {1617467400 34200 0 CST}
+ {1633192200 37800 1 CST}
+ {1648917000 34200 0 CST}
+ {1664641800 37800 1 CST}
+ {1680366600 34200 0 CST}
+ {1696091400 37800 1 CST}
+ {1712421000 34200 0 CST}
+ {1728145800 37800 1 CST}
+ {1743870600 34200 0 CST}
+ {1759595400 37800 1 CST}
+ {1775320200 34200 0 CST}
+ {1791045000 37800 1 CST}
+ {1806769800 34200 0 CST}
+ {1822494600 37800 1 CST}
+ {1838219400 34200 0 CST}
+ {1853944200 37800 1 CST}
+ {1869669000 34200 0 CST}
+ {1885998600 37800 1 CST}
+ {1901723400 34200 0 CST}
+ {1917448200 37800 1 CST}
+ {1933173000 34200 0 CST}
+ {1948897800 37800 1 CST}
+ {1964622600 34200 0 CST}
+ {1980347400 37800 1 CST}
+ {1996072200 34200 0 CST}
+ {2011797000 37800 1 CST}
+ {2027521800 34200 0 CST}
+ {2043246600 37800 1 CST}
+ {2058971400 34200 0 CST}
+ {2075301000 37800 1 CST}
+ {2091025800 34200 0 CST}
+ {2106750600 37800 1 CST}
+ {2122475400 34200 0 CST}
+ {2138200200 37800 1 CST}
+ {2153925000 34200 0 CST}
+ {2169649800 37800 1 CST}
+ {2185374600 34200 0 CST}
+ {2201099400 37800 1 CST}
+ {2216824200 34200 0 CST}
+ {2233153800 37800 1 CST}
+ {2248878600 34200 0 CST}
+ {2264603400 37800 1 CST}
+ {2280328200 34200 0 CST}
+ {2296053000 37800 1 CST}
+ {2311777800 34200 0 CST}
+ {2327502600 37800 1 CST}
+ {2343227400 34200 0 CST}
+ {2358952200 37800 1 CST}
+ {2374677000 34200 0 CST}
+ {2390401800 37800 1 CST}
+ {2406126600 34200 0 CST}
+ {2422456200 37800 1 CST}
+ {2438181000 34200 0 CST}
+ {2453905800 37800 1 CST}
+ {2469630600 34200 0 CST}
+ {2485355400 37800 1 CST}
+ {2501080200 34200 0 CST}
+ {2516805000 37800 1 CST}
+ {2532529800 34200 0 CST}
+ {2548254600 37800 1 CST}
+ {2563979400 34200 0 CST}
+ {2579704200 37800 1 CST}
+ {2596033800 34200 0 CST}
+ {2611758600 37800 1 CST}
+ {2627483400 34200 0 CST}
+ {2643208200 37800 1 CST}
+ {2658933000 34200 0 CST}
+ {2674657800 37800 1 CST}
+ {2690382600 34200 0 CST}
+ {2706107400 37800 1 CST}
+ {2721832200 34200 0 CST}
+ {2737557000 37800 1 CST}
+ {2753281800 34200 0 CST}
+ {2769611400 37800 1 CST}
+ {2785336200 34200 0 CST}
+ {2801061000 37800 1 CST}
+ {2816785800 34200 0 CST}
+ {2832510600 37800 1 CST}
+ {2848235400 34200 0 CST}
+ {2863960200 37800 1 CST}
+ {2879685000 34200 0 CST}
+ {2895409800 37800 1 CST}
+ {2911134600 34200 0 CST}
+ {2926859400 37800 1 CST}
+ {2942584200 34200 0 CST}
+ {2958913800 37800 1 CST}
+ {2974638600 34200 0 CST}
+ {2990363400 37800 1 CST}
+ {3006088200 34200 0 CST}
+ {3021813000 37800 1 CST}
+ {3037537800 34200 0 CST}
+ {3053262600 37800 1 CST}
+ {3068987400 34200 0 CST}
+ {3084712200 37800 1 CST}
+ {3100437000 34200 0 CST}
+ {3116766600 37800 1 CST}
+ {3132491400 34200 0 CST}
+ {3148216200 37800 1 CST}
+ {3163941000 34200 0 CST}
+ {3179665800 37800 1 CST}
+ {3195390600 34200 0 CST}
+ {3211115400 37800 1 CST}
+ {3226840200 34200 0 CST}
+ {3242565000 37800 1 CST}
+ {3258289800 34200 0 CST}
+ {3274014600 37800 1 CST}
+ {3289739400 34200 0 CST}
+ {3306069000 37800 1 CST}
+ {3321793800 34200 0 CST}
+ {3337518600 37800 1 CST}
+ {3353243400 34200 0 CST}
+ {3368968200 37800 1 CST}
+ {3384693000 34200 0 CST}
+ {3400417800 37800 1 CST}
+ {3416142600 34200 0 CST}
+ {3431867400 37800 1 CST}
+ {3447592200 34200 0 CST}
+ {3463317000 37800 1 CST}
+ {3479646600 34200 0 CST}
+ {3495371400 37800 1 CST}
+ {3511096200 34200 0 CST}
+ {3526821000 37800 1 CST}
+ {3542545800 34200 0 CST}
+ {3558270600 37800 1 CST}
+ {3573995400 34200 0 CST}
+ {3589720200 37800 1 CST}
+ {3605445000 34200 0 CST}
+ {3621169800 37800 1 CST}
+ {3636894600 34200 0 CST}
+ {3653224200 37800 1 CST}
+ {3668949000 34200 0 CST}
+ {3684673800 37800 1 CST}
+ {3700398600 34200 0 CST}
+ {3716123400 37800 1 CST}
+ {3731848200 34200 0 CST}
+ {3747573000 37800 1 CST}
+ {3763297800 34200 0 CST}
+ {3779022600 37800 1 CST}
+ {3794747400 34200 0 CST}
+ {3810472200 37800 1 CST}
+ {3826197000 34200 0 CST}
+ {3842526600 37800 1 CST}
+ {3858251400 34200 0 CST}
+ {3873976200 37800 1 CST}
+ {3889701000 34200 0 CST}
+ {3905425800 37800 1 CST}
+ {3921150600 34200 0 CST}
+ {3936875400 37800 1 CST}
+ {3952600200 34200 0 CST}
+ {3968325000 37800 1 CST}
+ {3984049800 34200 0 CST}
+ {4000379400 37800 1 CST}
+ {4016104200 34200 0 CST}
+ {4031829000 37800 1 CST}
+ {4047553800 34200 0 CST}
+ {4063278600 37800 1 CST}
+ {4079003400 34200 0 CST}
+ {4094728200 37800 1 CST}
+}
diff --git a/library/tzdata/Australia/Canberra b/library/tzdata/Australia/Canberra
new file mode 100644
index 0000000..0b7b9ca
--- /dev/null
+++ b/library/tzdata/Australia/Canberra
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Sydney)]} {
+ LoadTimeZoneFile Australia/Sydney
+}
+set TZData(:Australia/Canberra) $TZData(:Australia/Sydney)
diff --git a/library/tzdata/Australia/Currie b/library/tzdata/Australia/Currie
new file mode 100644
index 0000000..ae6d1f0
--- /dev/null
+++ b/library/tzdata/Australia/Currie
@@ -0,0 +1,273 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Currie) {
+ {-9223372036854775808 34528 0 LMT}
+ {-2345794528 36000 0 EST}
+ {-1680508800 39600 1 EST}
+ {-1669892400 39600 0 EST}
+ {-1665392400 36000 0 EST}
+ {-883641600 39600 1 EST}
+ {-876128400 36000 0 EST}
+ {-860400000 39600 1 EST}
+ {-844678800 36000 0 EST}
+ {-828345600 39600 1 EST}
+ {-813229200 36000 0 EST}
+ {47138400 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {89136000 39600 1 EST}
+ {100022400 36000 0 EST}
+ {120585600 39600 1 EST}
+ {131472000 36000 0 EST}
+ {152035200 39600 1 EST}
+ {162921600 36000 0 EST}
+ {183484800 39600 1 EST}
+ {194976000 36000 0 EST}
+ {215539200 39600 1 EST}
+ {226425600 36000 0 EST}
+ {246988800 39600 1 EST}
+ {257875200 36000 0 EST}
+ {278438400 39600 1 EST}
+ {289324800 36000 0 EST}
+ {309888000 39600 1 EST}
+ {320774400 36000 0 EST}
+ {341337600 39600 1 EST}
+ {352224000 36000 0 EST}
+ {372787200 39600 1 EST}
+ {386092800 36000 0 EST}
+ {404841600 39600 1 EST}
+ {417542400 36000 0 EST}
+ {436291200 39600 1 EST}
+ {447177600 36000 0 EST}
+ {467740800 39600 1 EST}
+ {478627200 36000 0 EST}
+ {499190400 39600 1 EST}
+ {510076800 36000 0 EST}
+ {530035200 39600 1 EST}
+ {542736000 36000 0 EST}
+ {562089600 39600 1 EST}
+ {574790400 36000 0 EST}
+ {594144000 39600 1 EST}
+ {606240000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {637689600 36000 0 EST}
+ {657043200 39600 1 EST}
+ {670348800 36000 0 EST}
+ {686678400 39600 1 EST}
+ {701798400 36000 0 EST}
+ {718128000 39600 1 EST}
+ {733248000 36000 0 EST}
+ {749577600 39600 1 EST}
+ {764697600 36000 0 EST}
+ {781027200 39600 1 EST}
+ {796147200 36000 0 EST}
+ {812476800 39600 1 EST}
+ {828201600 36000 0 EST}
+ {844531200 39600 1 EST}
+ {859651200 36000 0 EST}
+ {875980800 39600 1 EST}
+ {891100800 36000 0 EST}
+ {907430400 39600 1 EST}
+ {922550400 36000 0 EST}
+ {938880000 39600 1 EST}
+ {954000000 36000 0 EST}
+ {967305600 39600 1 EST}
+ {985449600 36000 0 EST}
+ {1002384000 39600 1 EST}
+ {1017504000 36000 0 EST}
+ {1033833600 39600 1 EST}
+ {1048953600 36000 0 EST}
+ {1065283200 39600 1 EST}
+ {1080403200 36000 0 EST}
+ {1096732800 39600 1 EST}
+ {1111852800 36000 0 EST}
+ {1128182400 39600 1 EST}
+ {1143907200 36000 0 EST}
+ {1159632000 39600 1 EST}
+ {1174752000 36000 0 EST}
+ {1191686400 39600 1 EST}
+ {1207411200 36000 0 EST}
+ {1223136000 39600 1 EST}
+ {1238860800 36000 0 EST}
+ {1254585600 39600 1 EST}
+ {1270310400 36000 0 EST}
+ {1286035200 39600 1 EST}
+ {1301760000 36000 0 EST}
+ {1317484800 39600 1 EST}
+ {1333209600 36000 0 EST}
+ {1349539200 39600 1 EST}
+ {1365264000 36000 0 EST}
+ {1380988800 39600 1 EST}
+ {1396713600 36000 0 EST}
+ {1412438400 39600 1 EST}
+ {1428163200 36000 0 EST}
+ {1443888000 39600 1 EST}
+ {1459612800 36000 0 EST}
+ {1475337600 39600 1 EST}
+ {1491062400 36000 0 EST}
+ {1506787200 39600 1 EST}
+ {1522512000 36000 0 EST}
+ {1538841600 39600 1 EST}
+ {1554566400 36000 0 EST}
+ {1570291200 39600 1 EST}
+ {1586016000 36000 0 EST}
+ {1601740800 39600 1 EST}
+ {1617465600 36000 0 EST}
+ {1633190400 39600 1 EST}
+ {1648915200 36000 0 EST}
+ {1664640000 39600 1 EST}
+ {1680364800 36000 0 EST}
+ {1696089600 39600 1 EST}
+ {1712419200 36000 0 EST}
+ {1728144000 39600 1 EST}
+ {1743868800 36000 0 EST}
+ {1759593600 39600 1 EST}
+ {1775318400 36000 0 EST}
+ {1791043200 39600 1 EST}
+ {1806768000 36000 0 EST}
+ {1822492800 39600 1 EST}
+ {1838217600 36000 0 EST}
+ {1853942400 39600 1 EST}
+ {1869667200 36000 0 EST}
+ {1885996800 39600 1 EST}
+ {1901721600 36000 0 EST}
+ {1917446400 39600 1 EST}
+ {1933171200 36000 0 EST}
+ {1948896000 39600 1 EST}
+ {1964620800 36000 0 EST}
+ {1980345600 39600 1 EST}
+ {1996070400 36000 0 EST}
+ {2011795200 39600 1 EST}
+ {2027520000 36000 0 EST}
+ {2043244800 39600 1 EST}
+ {2058969600 36000 0 EST}
+ {2075299200 39600 1 EST}
+ {2091024000 36000 0 EST}
+ {2106748800 39600 1 EST}
+ {2122473600 36000 0 EST}
+ {2138198400 39600 1 EST}
+ {2153923200 36000 0 EST}
+ {2169648000 39600 1 EST}
+ {2185372800 36000 0 EST}
+ {2201097600 39600 1 EST}
+ {2216822400 36000 0 EST}
+ {2233152000 39600 1 EST}
+ {2248876800 36000 0 EST}
+ {2264601600 39600 1 EST}
+ {2280326400 36000 0 EST}
+ {2296051200 39600 1 EST}
+ {2311776000 36000 0 EST}
+ {2327500800 39600 1 EST}
+ {2343225600 36000 0 EST}
+ {2358950400 39600 1 EST}
+ {2374675200 36000 0 EST}
+ {2390400000 39600 1 EST}
+ {2406124800 36000 0 EST}
+ {2422454400 39600 1 EST}
+ {2438179200 36000 0 EST}
+ {2453904000 39600 1 EST}
+ {2469628800 36000 0 EST}
+ {2485353600 39600 1 EST}
+ {2501078400 36000 0 EST}
+ {2516803200 39600 1 EST}
+ {2532528000 36000 0 EST}
+ {2548252800 39600 1 EST}
+ {2563977600 36000 0 EST}
+ {2579702400 39600 1 EST}
+ {2596032000 36000 0 EST}
+ {2611756800 39600 1 EST}
+ {2627481600 36000 0 EST}
+ {2643206400 39600 1 EST}
+ {2658931200 36000 0 EST}
+ {2674656000 39600 1 EST}
+ {2690380800 36000 0 EST}
+ {2706105600 39600 1 EST}
+ {2721830400 36000 0 EST}
+ {2737555200 39600 1 EST}
+ {2753280000 36000 0 EST}
+ {2769609600 39600 1 EST}
+ {2785334400 36000 0 EST}
+ {2801059200 39600 1 EST}
+ {2816784000 36000 0 EST}
+ {2832508800 39600 1 EST}
+ {2848233600 36000 0 EST}
+ {2863958400 39600 1 EST}
+ {2879683200 36000 0 EST}
+ {2895408000 39600 1 EST}
+ {2911132800 36000 0 EST}
+ {2926857600 39600 1 EST}
+ {2942582400 36000 0 EST}
+ {2958912000 39600 1 EST}
+ {2974636800 36000 0 EST}
+ {2990361600 39600 1 EST}
+ {3006086400 36000 0 EST}
+ {3021811200 39600 1 EST}
+ {3037536000 36000 0 EST}
+ {3053260800 39600 1 EST}
+ {3068985600 36000 0 EST}
+ {3084710400 39600 1 EST}
+ {3100435200 36000 0 EST}
+ {3116764800 39600 1 EST}
+ {3132489600 36000 0 EST}
+ {3148214400 39600 1 EST}
+ {3163939200 36000 0 EST}
+ {3179664000 39600 1 EST}
+ {3195388800 36000 0 EST}
+ {3211113600 39600 1 EST}
+ {3226838400 36000 0 EST}
+ {3242563200 39600 1 EST}
+ {3258288000 36000 0 EST}
+ {3274012800 39600 1 EST}
+ {3289737600 36000 0 EST}
+ {3306067200 39600 1 EST}
+ {3321792000 36000 0 EST}
+ {3337516800 39600 1 EST}
+ {3353241600 36000 0 EST}
+ {3368966400 39600 1 EST}
+ {3384691200 36000 0 EST}
+ {3400416000 39600 1 EST}
+ {3416140800 36000 0 EST}
+ {3431865600 39600 1 EST}
+ {3447590400 36000 0 EST}
+ {3463315200 39600 1 EST}
+ {3479644800 36000 0 EST}
+ {3495369600 39600 1 EST}
+ {3511094400 36000 0 EST}
+ {3526819200 39600 1 EST}
+ {3542544000 36000 0 EST}
+ {3558268800 39600 1 EST}
+ {3573993600 36000 0 EST}
+ {3589718400 39600 1 EST}
+ {3605443200 36000 0 EST}
+ {3621168000 39600 1 EST}
+ {3636892800 36000 0 EST}
+ {3653222400 39600 1 EST}
+ {3668947200 36000 0 EST}
+ {3684672000 39600 1 EST}
+ {3700396800 36000 0 EST}
+ {3716121600 39600 1 EST}
+ {3731846400 36000 0 EST}
+ {3747571200 39600 1 EST}
+ {3763296000 36000 0 EST}
+ {3779020800 39600 1 EST}
+ {3794745600 36000 0 EST}
+ {3810470400 39600 1 EST}
+ {3826195200 36000 0 EST}
+ {3842524800 39600 1 EST}
+ {3858249600 36000 0 EST}
+ {3873974400 39600 1 EST}
+ {3889699200 36000 0 EST}
+ {3905424000 39600 1 EST}
+ {3921148800 36000 0 EST}
+ {3936873600 39600 1 EST}
+ {3952598400 36000 0 EST}
+ {3968323200 39600 1 EST}
+ {3984048000 36000 0 EST}
+ {4000377600 39600 1 EST}
+ {4016102400 36000 0 EST}
+ {4031827200 39600 1 EST}
+ {4047552000 36000 0 EST}
+ {4063276800 39600 1 EST}
+ {4079001600 36000 0 EST}
+ {4094726400 39600 1 EST}
+}
diff --git a/library/tzdata/Australia/Darwin b/library/tzdata/Australia/Darwin
new file mode 100644
index 0000000..9be372d
--- /dev/null
+++ b/library/tzdata/Australia/Darwin
@@ -0,0 +1,15 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Darwin) {
+ {-9223372036854775808 31400 0 LMT}
+ {-2364108200 32400 0 CST}
+ {-2230189200 34200 0 CST}
+ {-1672565340 37800 1 CST}
+ {-1665390600 34200 0 CST}
+ {-883639800 37800 1 CST}
+ {-876126600 34200 0 CST}
+ {-860398200 37800 1 CST}
+ {-844677000 34200 0 CST}
+ {-828343800 37800 1 CST}
+ {-813227400 34200 0 CST}
+}
diff --git a/library/tzdata/Australia/Eucla b/library/tzdata/Australia/Eucla
new file mode 100644
index 0000000..0f8ed4d
--- /dev/null
+++ b/library/tzdata/Australia/Eucla
@@ -0,0 +1,25 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Eucla) {
+ {-9223372036854775808 30928 0 LMT}
+ {-2337928528 31500 0 CWST}
+ {-1672562640 35100 1 CWST}
+ {-1665387900 31500 0 CWST}
+ {-883637100 35100 1 CWST}
+ {-876123900 31500 0 CWST}
+ {-860395500 35100 1 CWST}
+ {-844674300 31500 0 CWST}
+ {-836473500 35100 0 CWST}
+ {152039700 35100 1 CWST}
+ {162926100 31500 0 CWST}
+ {436295700 35100 1 CWST}
+ {447182100 31500 0 CWST}
+ {690311700 35100 1 CWST}
+ {699383700 31500 0 CWST}
+ {1165079700 35100 1 CWST}
+ {1174756500 31500 0 CWST}
+ {1193505300 35100 1 CWST}
+ {1206810900 31500 0 CWST}
+ {1224954900 35100 1 CWST}
+ {1238260500 31500 0 CWST}
+}
diff --git a/library/tzdata/Australia/Hobart b/library/tzdata/Australia/Hobart
new file mode 100644
index 0000000..8f27110
--- /dev/null
+++ b/library/tzdata/Australia/Hobart
@@ -0,0 +1,281 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Hobart) {
+ {-9223372036854775808 35356 0 LMT}
+ {-2345795356 36000 0 EST}
+ {-1680508800 39600 1 EST}
+ {-1669892400 39600 0 EST}
+ {-1665392400 36000 0 EST}
+ {-883641600 39600 1 EST}
+ {-876128400 36000 0 EST}
+ {-860400000 39600 1 EST}
+ {-844678800 36000 0 EST}
+ {-828345600 39600 1 EST}
+ {-813229200 36000 0 EST}
+ {-94730400 36000 0 EST}
+ {-71136000 39600 1 EST}
+ {-55411200 36000 0 EST}
+ {-37267200 39600 1 EST}
+ {-25776000 36000 0 EST}
+ {-5817600 39600 1 EST}
+ {5673600 36000 0 EST}
+ {25632000 39600 1 EST}
+ {37728000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {89136000 39600 1 EST}
+ {100022400 36000 0 EST}
+ {120585600 39600 1 EST}
+ {131472000 36000 0 EST}
+ {152035200 39600 1 EST}
+ {162921600 36000 0 EST}
+ {183484800 39600 1 EST}
+ {194976000 36000 0 EST}
+ {215539200 39600 1 EST}
+ {226425600 36000 0 EST}
+ {246988800 39600 1 EST}
+ {257875200 36000 0 EST}
+ {278438400 39600 1 EST}
+ {289324800 36000 0 EST}
+ {309888000 39600 1 EST}
+ {320774400 36000 0 EST}
+ {341337600 39600 1 EST}
+ {352224000 36000 0 EST}
+ {372787200 39600 1 EST}
+ {386092800 36000 0 EST}
+ {404841600 39600 1 EST}
+ {417542400 36000 0 EST}
+ {436291200 39600 1 EST}
+ {447177600 36000 0 EST}
+ {467740800 39600 1 EST}
+ {478627200 36000 0 EST}
+ {499190400 39600 1 EST}
+ {510076800 36000 0 EST}
+ {530035200 39600 1 EST}
+ {542736000 36000 0 EST}
+ {562089600 39600 1 EST}
+ {574790400 36000 0 EST}
+ {594144000 39600 1 EST}
+ {606240000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {637689600 36000 0 EST}
+ {657043200 39600 1 EST}
+ {670348800 36000 0 EST}
+ {686678400 39600 1 EST}
+ {701798400 36000 0 EST}
+ {718128000 39600 1 EST}
+ {733248000 36000 0 EST}
+ {749577600 39600 1 EST}
+ {764697600 36000 0 EST}
+ {781027200 39600 1 EST}
+ {796147200 36000 0 EST}
+ {812476800 39600 1 EST}
+ {828201600 36000 0 EST}
+ {844531200 39600 1 EST}
+ {859651200 36000 0 EST}
+ {875980800 39600 1 EST}
+ {891100800 36000 0 EST}
+ {907430400 39600 1 EST}
+ {922550400 36000 0 EST}
+ {938880000 39600 1 EST}
+ {954000000 36000 0 EST}
+ {967305600 39600 1 EST}
+ {985449600 36000 0 EST}
+ {1002384000 39600 1 EST}
+ {1017504000 36000 0 EST}
+ {1033833600 39600 1 EST}
+ {1048953600 36000 0 EST}
+ {1065283200 39600 1 EST}
+ {1080403200 36000 0 EST}
+ {1096732800 39600 1 EST}
+ {1111852800 36000 0 EST}
+ {1128182400 39600 1 EST}
+ {1143907200 36000 0 EST}
+ {1159632000 39600 1 EST}
+ {1174752000 36000 0 EST}
+ {1191686400 39600 1 EST}
+ {1207411200 36000 0 EST}
+ {1223136000 39600 1 EST}
+ {1238860800 36000 0 EST}
+ {1254585600 39600 1 EST}
+ {1270310400 36000 0 EST}
+ {1286035200 39600 1 EST}
+ {1301760000 36000 0 EST}
+ {1317484800 39600 1 EST}
+ {1333209600 36000 0 EST}
+ {1349539200 39600 1 EST}
+ {1365264000 36000 0 EST}
+ {1380988800 39600 1 EST}
+ {1396713600 36000 0 EST}
+ {1412438400 39600 1 EST}
+ {1428163200 36000 0 EST}
+ {1443888000 39600 1 EST}
+ {1459612800 36000 0 EST}
+ {1475337600 39600 1 EST}
+ {1491062400 36000 0 EST}
+ {1506787200 39600 1 EST}
+ {1522512000 36000 0 EST}
+ {1538841600 39600 1 EST}
+ {1554566400 36000 0 EST}
+ {1570291200 39600 1 EST}
+ {1586016000 36000 0 EST}
+ {1601740800 39600 1 EST}
+ {1617465600 36000 0 EST}
+ {1633190400 39600 1 EST}
+ {1648915200 36000 0 EST}
+ {1664640000 39600 1 EST}
+ {1680364800 36000 0 EST}
+ {1696089600 39600 1 EST}
+ {1712419200 36000 0 EST}
+ {1728144000 39600 1 EST}
+ {1743868800 36000 0 EST}
+ {1759593600 39600 1 EST}
+ {1775318400 36000 0 EST}
+ {1791043200 39600 1 EST}
+ {1806768000 36000 0 EST}
+ {1822492800 39600 1 EST}
+ {1838217600 36000 0 EST}
+ {1853942400 39600 1 EST}
+ {1869667200 36000 0 EST}
+ {1885996800 39600 1 EST}
+ {1901721600 36000 0 EST}
+ {1917446400 39600 1 EST}
+ {1933171200 36000 0 EST}
+ {1948896000 39600 1 EST}
+ {1964620800 36000 0 EST}
+ {1980345600 39600 1 EST}
+ {1996070400 36000 0 EST}
+ {2011795200 39600 1 EST}
+ {2027520000 36000 0 EST}
+ {2043244800 39600 1 EST}
+ {2058969600 36000 0 EST}
+ {2075299200 39600 1 EST}
+ {2091024000 36000 0 EST}
+ {2106748800 39600 1 EST}
+ {2122473600 36000 0 EST}
+ {2138198400 39600 1 EST}
+ {2153923200 36000 0 EST}
+ {2169648000 39600 1 EST}
+ {2185372800 36000 0 EST}
+ {2201097600 39600 1 EST}
+ {2216822400 36000 0 EST}
+ {2233152000 39600 1 EST}
+ {2248876800 36000 0 EST}
+ {2264601600 39600 1 EST}
+ {2280326400 36000 0 EST}
+ {2296051200 39600 1 EST}
+ {2311776000 36000 0 EST}
+ {2327500800 39600 1 EST}
+ {2343225600 36000 0 EST}
+ {2358950400 39600 1 EST}
+ {2374675200 36000 0 EST}
+ {2390400000 39600 1 EST}
+ {2406124800 36000 0 EST}
+ {2422454400 39600 1 EST}
+ {2438179200 36000 0 EST}
+ {2453904000 39600 1 EST}
+ {2469628800 36000 0 EST}
+ {2485353600 39600 1 EST}
+ {2501078400 36000 0 EST}
+ {2516803200 39600 1 EST}
+ {2532528000 36000 0 EST}
+ {2548252800 39600 1 EST}
+ {2563977600 36000 0 EST}
+ {2579702400 39600 1 EST}
+ {2596032000 36000 0 EST}
+ {2611756800 39600 1 EST}
+ {2627481600 36000 0 EST}
+ {2643206400 39600 1 EST}
+ {2658931200 36000 0 EST}
+ {2674656000 39600 1 EST}
+ {2690380800 36000 0 EST}
+ {2706105600 39600 1 EST}
+ {2721830400 36000 0 EST}
+ {2737555200 39600 1 EST}
+ {2753280000 36000 0 EST}
+ {2769609600 39600 1 EST}
+ {2785334400 36000 0 EST}
+ {2801059200 39600 1 EST}
+ {2816784000 36000 0 EST}
+ {2832508800 39600 1 EST}
+ {2848233600 36000 0 EST}
+ {2863958400 39600 1 EST}
+ {2879683200 36000 0 EST}
+ {2895408000 39600 1 EST}
+ {2911132800 36000 0 EST}
+ {2926857600 39600 1 EST}
+ {2942582400 36000 0 EST}
+ {2958912000 39600 1 EST}
+ {2974636800 36000 0 EST}
+ {2990361600 39600 1 EST}
+ {3006086400 36000 0 EST}
+ {3021811200 39600 1 EST}
+ {3037536000 36000 0 EST}
+ {3053260800 39600 1 EST}
+ {3068985600 36000 0 EST}
+ {3084710400 39600 1 EST}
+ {3100435200 36000 0 EST}
+ {3116764800 39600 1 EST}
+ {3132489600 36000 0 EST}
+ {3148214400 39600 1 EST}
+ {3163939200 36000 0 EST}
+ {3179664000 39600 1 EST}
+ {3195388800 36000 0 EST}
+ {3211113600 39600 1 EST}
+ {3226838400 36000 0 EST}
+ {3242563200 39600 1 EST}
+ {3258288000 36000 0 EST}
+ {3274012800 39600 1 EST}
+ {3289737600 36000 0 EST}
+ {3306067200 39600 1 EST}
+ {3321792000 36000 0 EST}
+ {3337516800 39600 1 EST}
+ {3353241600 36000 0 EST}
+ {3368966400 39600 1 EST}
+ {3384691200 36000 0 EST}
+ {3400416000 39600 1 EST}
+ {3416140800 36000 0 EST}
+ {3431865600 39600 1 EST}
+ {3447590400 36000 0 EST}
+ {3463315200 39600 1 EST}
+ {3479644800 36000 0 EST}
+ {3495369600 39600 1 EST}
+ {3511094400 36000 0 EST}
+ {3526819200 39600 1 EST}
+ {3542544000 36000 0 EST}
+ {3558268800 39600 1 EST}
+ {3573993600 36000 0 EST}
+ {3589718400 39600 1 EST}
+ {3605443200 36000 0 EST}
+ {3621168000 39600 1 EST}
+ {3636892800 36000 0 EST}
+ {3653222400 39600 1 EST}
+ {3668947200 36000 0 EST}
+ {3684672000 39600 1 EST}
+ {3700396800 36000 0 EST}
+ {3716121600 39600 1 EST}
+ {3731846400 36000 0 EST}
+ {3747571200 39600 1 EST}
+ {3763296000 36000 0 EST}
+ {3779020800 39600 1 EST}
+ {3794745600 36000 0 EST}
+ {3810470400 39600 1 EST}
+ {3826195200 36000 0 EST}
+ {3842524800 39600 1 EST}
+ {3858249600 36000 0 EST}
+ {3873974400 39600 1 EST}
+ {3889699200 36000 0 EST}
+ {3905424000 39600 1 EST}
+ {3921148800 36000 0 EST}
+ {3936873600 39600 1 EST}
+ {3952598400 36000 0 EST}
+ {3968323200 39600 1 EST}
+ {3984048000 36000 0 EST}
+ {4000377600 39600 1 EST}
+ {4016102400 36000 0 EST}
+ {4031827200 39600 1 EST}
+ {4047552000 36000 0 EST}
+ {4063276800 39600 1 EST}
+ {4079001600 36000 0 EST}
+ {4094726400 39600 1 EST}
+}
diff --git a/library/tzdata/Australia/LHI b/library/tzdata/Australia/LHI
new file mode 100644
index 0000000..ddc79ce
--- /dev/null
+++ b/library/tzdata/Australia/LHI
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Lord_Howe)]} {
+ LoadTimeZoneFile Australia/Lord_Howe
+}
+set TZData(:Australia/LHI) $TZData(:Australia/Lord_Howe)
diff --git a/library/tzdata/Australia/Lindeman b/library/tzdata/Australia/Lindeman
new file mode 100644
index 0000000..de11c35
--- /dev/null
+++ b/library/tzdata/Australia/Lindeman
@@ -0,0 +1,28 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Lindeman) {
+ {-9223372036854775808 35756 0 LMT}
+ {-2366790956 36000 0 EST}
+ {-1672567140 39600 1 EST}
+ {-1665392400 36000 0 EST}
+ {-883641600 39600 1 EST}
+ {-876128400 36000 0 EST}
+ {-860400000 39600 1 EST}
+ {-844678800 36000 0 EST}
+ {-828345600 39600 1 EST}
+ {-813229200 36000 0 EST}
+ {31500000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {636480000 36000 0 EST}
+ {657043200 39600 1 EST}
+ {667929600 36000 0 EST}
+ {688492800 39600 1 EST}
+ {699379200 36000 0 EST}
+ {709912800 36000 0 EST}
+ {719942400 39600 1 EST}
+ {731433600 36000 0 EST}
+ {751996800 39600 1 EST}
+ {762883200 36000 0 EST}
+}
diff --git a/library/tzdata/Australia/Lord_Howe b/library/tzdata/Australia/Lord_Howe
new file mode 100644
index 0000000..da094e5
--- /dev/null
+++ b/library/tzdata/Australia/Lord_Howe
@@ -0,0 +1,244 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Lord_Howe) {
+ {-9223372036854775808 38180 0 LMT}
+ {-2364114980 36000 0 EST}
+ {352216800 37800 0 LHST}
+ {372785400 41400 1 LHST}
+ {384273000 37800 0 LHST}
+ {404839800 41400 1 LHST}
+ {415722600 37800 0 LHST}
+ {436289400 41400 1 LHST}
+ {447172200 37800 0 LHST}
+ {467739000 41400 1 LHST}
+ {478621800 37800 0 LHST}
+ {499188600 39600 1 LHST}
+ {511282800 37800 0 LHST}
+ {530033400 39600 1 LHST}
+ {542732400 37800 0 LHST}
+ {562087800 39600 1 LHST}
+ {574786800 37800 0 LHST}
+ {594142200 39600 1 LHST}
+ {606236400 37800 0 LHST}
+ {625591800 39600 1 LHST}
+ {636476400 37800 0 LHST}
+ {657041400 39600 1 LHST}
+ {667926000 37800 0 LHST}
+ {688491000 39600 1 LHST}
+ {699375600 37800 0 LHST}
+ {719940600 39600 1 LHST}
+ {731430000 37800 0 LHST}
+ {751995000 39600 1 LHST}
+ {762879600 37800 0 LHST}
+ {783444600 39600 1 LHST}
+ {794329200 37800 0 LHST}
+ {814894200 39600 1 LHST}
+ {828198000 37800 0 LHST}
+ {846343800 39600 1 LHST}
+ {859647600 37800 0 LHST}
+ {877793400 39600 1 LHST}
+ {891097200 37800 0 LHST}
+ {909243000 39600 1 LHST}
+ {922546800 37800 0 LHST}
+ {941297400 39600 1 LHST}
+ {953996400 37800 0 LHST}
+ {967303800 39600 1 LHST}
+ {985446000 37800 0 LHST}
+ {1004196600 39600 1 LHST}
+ {1017500400 37800 0 LHST}
+ {1035646200 39600 1 LHST}
+ {1048950000 37800 0 LHST}
+ {1067095800 39600 1 LHST}
+ {1080399600 37800 0 LHST}
+ {1099150200 39600 1 LHST}
+ {1111849200 37800 0 LHST}
+ {1130599800 39600 1 LHST}
+ {1143903600 37800 0 LHST}
+ {1162049400 39600 1 LHST}
+ {1174748400 37800 0 LHST}
+ {1193499000 39600 1 LHST}
+ {1207407600 37800 0 LHST}
+ {1223134200 39600 1 LHST}
+ {1238857200 37800 0 LHST}
+ {1254583800 39600 1 LHST}
+ {1270306800 37800 0 LHST}
+ {1286033400 39600 1 LHST}
+ {1301756400 37800 0 LHST}
+ {1317483000 39600 1 LHST}
+ {1333206000 37800 0 LHST}
+ {1349537400 39600 1 LHST}
+ {1365260400 37800 0 LHST}
+ {1380987000 39600 1 LHST}
+ {1396710000 37800 0 LHST}
+ {1412436600 39600 1 LHST}
+ {1428159600 37800 0 LHST}
+ {1443886200 39600 1 LHST}
+ {1459609200 37800 0 LHST}
+ {1475335800 39600 1 LHST}
+ {1491058800 37800 0 LHST}
+ {1506785400 39600 1 LHST}
+ {1522508400 37800 0 LHST}
+ {1538839800 39600 1 LHST}
+ {1554562800 37800 0 LHST}
+ {1570289400 39600 1 LHST}
+ {1586012400 37800 0 LHST}
+ {1601739000 39600 1 LHST}
+ {1617462000 37800 0 LHST}
+ {1633188600 39600 1 LHST}
+ {1648911600 37800 0 LHST}
+ {1664638200 39600 1 LHST}
+ {1680361200 37800 0 LHST}
+ {1696087800 39600 1 LHST}
+ {1712415600 37800 0 LHST}
+ {1728142200 39600 1 LHST}
+ {1743865200 37800 0 LHST}
+ {1759591800 39600 1 LHST}
+ {1775314800 37800 0 LHST}
+ {1791041400 39600 1 LHST}
+ {1806764400 37800 0 LHST}
+ {1822491000 39600 1 LHST}
+ {1838214000 37800 0 LHST}
+ {1853940600 39600 1 LHST}
+ {1869663600 37800 0 LHST}
+ {1885995000 39600 1 LHST}
+ {1901718000 37800 0 LHST}
+ {1917444600 39600 1 LHST}
+ {1933167600 37800 0 LHST}
+ {1948894200 39600 1 LHST}
+ {1964617200 37800 0 LHST}
+ {1980343800 39600 1 LHST}
+ {1996066800 37800 0 LHST}
+ {2011793400 39600 1 LHST}
+ {2027516400 37800 0 LHST}
+ {2043243000 39600 1 LHST}
+ {2058966000 37800 0 LHST}
+ {2075297400 39600 1 LHST}
+ {2091020400 37800 0 LHST}
+ {2106747000 39600 1 LHST}
+ {2122470000 37800 0 LHST}
+ {2138196600 39600 1 LHST}
+ {2153919600 37800 0 LHST}
+ {2169646200 39600 1 LHST}
+ {2185369200 37800 0 LHST}
+ {2201095800 39600 1 LHST}
+ {2216818800 37800 0 LHST}
+ {2233150200 39600 1 LHST}
+ {2248873200 37800 0 LHST}
+ {2264599800 39600 1 LHST}
+ {2280322800 37800 0 LHST}
+ {2296049400 39600 1 LHST}
+ {2311772400 37800 0 LHST}
+ {2327499000 39600 1 LHST}
+ {2343222000 37800 0 LHST}
+ {2358948600 39600 1 LHST}
+ {2374671600 37800 0 LHST}
+ {2390398200 39600 1 LHST}
+ {2406121200 37800 0 LHST}
+ {2422452600 39600 1 LHST}
+ {2438175600 37800 0 LHST}
+ {2453902200 39600 1 LHST}
+ {2469625200 37800 0 LHST}
+ {2485351800 39600 1 LHST}
+ {2501074800 37800 0 LHST}
+ {2516801400 39600 1 LHST}
+ {2532524400 37800 0 LHST}
+ {2548251000 39600 1 LHST}
+ {2563974000 37800 0 LHST}
+ {2579700600 39600 1 LHST}
+ {2596028400 37800 0 LHST}
+ {2611755000 39600 1 LHST}
+ {2627478000 37800 0 LHST}
+ {2643204600 39600 1 LHST}
+ {2658927600 37800 0 LHST}
+ {2674654200 39600 1 LHST}
+ {2690377200 37800 0 LHST}
+ {2706103800 39600 1 LHST}
+ {2721826800 37800 0 LHST}
+ {2737553400 39600 1 LHST}
+ {2753276400 37800 0 LHST}
+ {2769607800 39600 1 LHST}
+ {2785330800 37800 0 LHST}
+ {2801057400 39600 1 LHST}
+ {2816780400 37800 0 LHST}
+ {2832507000 39600 1 LHST}
+ {2848230000 37800 0 LHST}
+ {2863956600 39600 1 LHST}
+ {2879679600 37800 0 LHST}
+ {2895406200 39600 1 LHST}
+ {2911129200 37800 0 LHST}
+ {2926855800 39600 1 LHST}
+ {2942578800 37800 0 LHST}
+ {2958910200 39600 1 LHST}
+ {2974633200 37800 0 LHST}
+ {2990359800 39600 1 LHST}
+ {3006082800 37800 0 LHST}
+ {3021809400 39600 1 LHST}
+ {3037532400 37800 0 LHST}
+ {3053259000 39600 1 LHST}
+ {3068982000 37800 0 LHST}
+ {3084708600 39600 1 LHST}
+ {3100431600 37800 0 LHST}
+ {3116763000 39600 1 LHST}
+ {3132486000 37800 0 LHST}
+ {3148212600 39600 1 LHST}
+ {3163935600 37800 0 LHST}
+ {3179662200 39600 1 LHST}
+ {3195385200 37800 0 LHST}
+ {3211111800 39600 1 LHST}
+ {3226834800 37800 0 LHST}
+ {3242561400 39600 1 LHST}
+ {3258284400 37800 0 LHST}
+ {3274011000 39600 1 LHST}
+ {3289734000 37800 0 LHST}
+ {3306065400 39600 1 LHST}
+ {3321788400 37800 0 LHST}
+ {3337515000 39600 1 LHST}
+ {3353238000 37800 0 LHST}
+ {3368964600 39600 1 LHST}
+ {3384687600 37800 0 LHST}
+ {3400414200 39600 1 LHST}
+ {3416137200 37800 0 LHST}
+ {3431863800 39600 1 LHST}
+ {3447586800 37800 0 LHST}
+ {3463313400 39600 1 LHST}
+ {3479641200 37800 0 LHST}
+ {3495367800 39600 1 LHST}
+ {3511090800 37800 0 LHST}
+ {3526817400 39600 1 LHST}
+ {3542540400 37800 0 LHST}
+ {3558267000 39600 1 LHST}
+ {3573990000 37800 0 LHST}
+ {3589716600 39600 1 LHST}
+ {3605439600 37800 0 LHST}
+ {3621166200 39600 1 LHST}
+ {3636889200 37800 0 LHST}
+ {3653220600 39600 1 LHST}
+ {3668943600 37800 0 LHST}
+ {3684670200 39600 1 LHST}
+ {3700393200 37800 0 LHST}
+ {3716119800 39600 1 LHST}
+ {3731842800 37800 0 LHST}
+ {3747569400 39600 1 LHST}
+ {3763292400 37800 0 LHST}
+ {3779019000 39600 1 LHST}
+ {3794742000 37800 0 LHST}
+ {3810468600 39600 1 LHST}
+ {3826191600 37800 0 LHST}
+ {3842523000 39600 1 LHST}
+ {3858246000 37800 0 LHST}
+ {3873972600 39600 1 LHST}
+ {3889695600 37800 0 LHST}
+ {3905422200 39600 1 LHST}
+ {3921145200 37800 0 LHST}
+ {3936871800 39600 1 LHST}
+ {3952594800 37800 0 LHST}
+ {3968321400 39600 1 LHST}
+ {3984044400 37800 0 LHST}
+ {4000375800 39600 1 LHST}
+ {4016098800 37800 0 LHST}
+ {4031825400 39600 1 LHST}
+ {4047548400 37800 0 LHST}
+ {4063275000 39600 1 LHST}
+ {4078998000 37800 0 LHST}
+ {4094724600 39600 1 LHST}
+}
diff --git a/library/tzdata/Australia/Melbourne b/library/tzdata/Australia/Melbourne
new file mode 100644
index 0000000..907b8b9
--- /dev/null
+++ b/library/tzdata/Australia/Melbourne
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Melbourne) {
+ {-9223372036854775808 34792 0 LMT}
+ {-2364111592 36000 0 EST}
+ {-1672567140 39600 1 EST}
+ {-1665392400 36000 0 EST}
+ {-883641600 39600 1 EST}
+ {-876128400 36000 0 EST}
+ {-860400000 39600 1 EST}
+ {-844678800 36000 0 EST}
+ {-828345600 39600 1 EST}
+ {-813229200 36000 0 EST}
+ {31500000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {89136000 39600 1 EST}
+ {100022400 36000 0 EST}
+ {120585600 39600 1 EST}
+ {131472000 36000 0 EST}
+ {152035200 39600 1 EST}
+ {162921600 36000 0 EST}
+ {183484800 39600 1 EST}
+ {194976000 36000 0 EST}
+ {215539200 39600 1 EST}
+ {226425600 36000 0 EST}
+ {246988800 39600 1 EST}
+ {257875200 36000 0 EST}
+ {278438400 39600 1 EST}
+ {289324800 36000 0 EST}
+ {309888000 39600 1 EST}
+ {320774400 36000 0 EST}
+ {341337600 39600 1 EST}
+ {352224000 36000 0 EST}
+ {372787200 39600 1 EST}
+ {384278400 36000 0 EST}
+ {404841600 39600 1 EST}
+ {415728000 36000 0 EST}
+ {436291200 39600 1 EST}
+ {447177600 36000 0 EST}
+ {467740800 39600 1 EST}
+ {478627200 36000 0 EST}
+ {499190400 39600 1 EST}
+ {511286400 36000 0 EST}
+ {530035200 39600 1 EST}
+ {542736000 36000 0 EST}
+ {561484800 39600 1 EST}
+ {574790400 36000 0 EST}
+ {594144000 39600 1 EST}
+ {606240000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {637689600 36000 0 EST}
+ {657043200 39600 1 EST}
+ {667929600 36000 0 EST}
+ {688492800 39600 1 EST}
+ {699379200 36000 0 EST}
+ {719942400 39600 1 EST}
+ {731433600 36000 0 EST}
+ {751996800 39600 1 EST}
+ {762883200 36000 0 EST}
+ {783446400 39600 1 EST}
+ {796147200 36000 0 EST}
+ {814896000 39600 1 EST}
+ {828201600 36000 0 EST}
+ {846345600 39600 1 EST}
+ {859651200 36000 0 EST}
+ {877795200 39600 1 EST}
+ {891100800 36000 0 EST}
+ {909244800 39600 1 EST}
+ {922550400 36000 0 EST}
+ {941299200 39600 1 EST}
+ {954000000 36000 0 EST}
+ {967305600 39600 1 EST}
+ {985449600 36000 0 EST}
+ {1004198400 39600 1 EST}
+ {1017504000 36000 0 EST}
+ {1035648000 39600 1 EST}
+ {1048953600 36000 0 EST}
+ {1067097600 39600 1 EST}
+ {1080403200 36000 0 EST}
+ {1099152000 39600 1 EST}
+ {1111852800 36000 0 EST}
+ {1130601600 39600 1 EST}
+ {1143907200 36000 0 EST}
+ {1162051200 39600 1 EST}
+ {1174752000 36000 0 EST}
+ {1193500800 39600 1 EST}
+ {1207411200 36000 0 EST}
+ {1223136000 39600 1 EST}
+ {1238860800 36000 0 EST}
+ {1254585600 39600 1 EST}
+ {1270310400 36000 0 EST}
+ {1286035200 39600 1 EST}
+ {1301760000 36000 0 EST}
+ {1317484800 39600 1 EST}
+ {1333209600 36000 0 EST}
+ {1349539200 39600 1 EST}
+ {1365264000 36000 0 EST}
+ {1380988800 39600 1 EST}
+ {1396713600 36000 0 EST}
+ {1412438400 39600 1 EST}
+ {1428163200 36000 0 EST}
+ {1443888000 39600 1 EST}
+ {1459612800 36000 0 EST}
+ {1475337600 39600 1 EST}
+ {1491062400 36000 0 EST}
+ {1506787200 39600 1 EST}
+ {1522512000 36000 0 EST}
+ {1538841600 39600 1 EST}
+ {1554566400 36000 0 EST}
+ {1570291200 39600 1 EST}
+ {1586016000 36000 0 EST}
+ {1601740800 39600 1 EST}
+ {1617465600 36000 0 EST}
+ {1633190400 39600 1 EST}
+ {1648915200 36000 0 EST}
+ {1664640000 39600 1 EST}
+ {1680364800 36000 0 EST}
+ {1696089600 39600 1 EST}
+ {1712419200 36000 0 EST}
+ {1728144000 39600 1 EST}
+ {1743868800 36000 0 EST}
+ {1759593600 39600 1 EST}
+ {1775318400 36000 0 EST}
+ {1791043200 39600 1 EST}
+ {1806768000 36000 0 EST}
+ {1822492800 39600 1 EST}
+ {1838217600 36000 0 EST}
+ {1853942400 39600 1 EST}
+ {1869667200 36000 0 EST}
+ {1885996800 39600 1 EST}
+ {1901721600 36000 0 EST}
+ {1917446400 39600 1 EST}
+ {1933171200 36000 0 EST}
+ {1948896000 39600 1 EST}
+ {1964620800 36000 0 EST}
+ {1980345600 39600 1 EST}
+ {1996070400 36000 0 EST}
+ {2011795200 39600 1 EST}
+ {2027520000 36000 0 EST}
+ {2043244800 39600 1 EST}
+ {2058969600 36000 0 EST}
+ {2075299200 39600 1 EST}
+ {2091024000 36000 0 EST}
+ {2106748800 39600 1 EST}
+ {2122473600 36000 0 EST}
+ {2138198400 39600 1 EST}
+ {2153923200 36000 0 EST}
+ {2169648000 39600 1 EST}
+ {2185372800 36000 0 EST}
+ {2201097600 39600 1 EST}
+ {2216822400 36000 0 EST}
+ {2233152000 39600 1 EST}
+ {2248876800 36000 0 EST}
+ {2264601600 39600 1 EST}
+ {2280326400 36000 0 EST}
+ {2296051200 39600 1 EST}
+ {2311776000 36000 0 EST}
+ {2327500800 39600 1 EST}
+ {2343225600 36000 0 EST}
+ {2358950400 39600 1 EST}
+ {2374675200 36000 0 EST}
+ {2390400000 39600 1 EST}
+ {2406124800 36000 0 EST}
+ {2422454400 39600 1 EST}
+ {2438179200 36000 0 EST}
+ {2453904000 39600 1 EST}
+ {2469628800 36000 0 EST}
+ {2485353600 39600 1 EST}
+ {2501078400 36000 0 EST}
+ {2516803200 39600 1 EST}
+ {2532528000 36000 0 EST}
+ {2548252800 39600 1 EST}
+ {2563977600 36000 0 EST}
+ {2579702400 39600 1 EST}
+ {2596032000 36000 0 EST}
+ {2611756800 39600 1 EST}
+ {2627481600 36000 0 EST}
+ {2643206400 39600 1 EST}
+ {2658931200 36000 0 EST}
+ {2674656000 39600 1 EST}
+ {2690380800 36000 0 EST}
+ {2706105600 39600 1 EST}
+ {2721830400 36000 0 EST}
+ {2737555200 39600 1 EST}
+ {2753280000 36000 0 EST}
+ {2769609600 39600 1 EST}
+ {2785334400 36000 0 EST}
+ {2801059200 39600 1 EST}
+ {2816784000 36000 0 EST}
+ {2832508800 39600 1 EST}
+ {2848233600 36000 0 EST}
+ {2863958400 39600 1 EST}
+ {2879683200 36000 0 EST}
+ {2895408000 39600 1 EST}
+ {2911132800 36000 0 EST}
+ {2926857600 39600 1 EST}
+ {2942582400 36000 0 EST}
+ {2958912000 39600 1 EST}
+ {2974636800 36000 0 EST}
+ {2990361600 39600 1 EST}
+ {3006086400 36000 0 EST}
+ {3021811200 39600 1 EST}
+ {3037536000 36000 0 EST}
+ {3053260800 39600 1 EST}
+ {3068985600 36000 0 EST}
+ {3084710400 39600 1 EST}
+ {3100435200 36000 0 EST}
+ {3116764800 39600 1 EST}
+ {3132489600 36000 0 EST}
+ {3148214400 39600 1 EST}
+ {3163939200 36000 0 EST}
+ {3179664000 39600 1 EST}
+ {3195388800 36000 0 EST}
+ {3211113600 39600 1 EST}
+ {3226838400 36000 0 EST}
+ {3242563200 39600 1 EST}
+ {3258288000 36000 0 EST}
+ {3274012800 39600 1 EST}
+ {3289737600 36000 0 EST}
+ {3306067200 39600 1 EST}
+ {3321792000 36000 0 EST}
+ {3337516800 39600 1 EST}
+ {3353241600 36000 0 EST}
+ {3368966400 39600 1 EST}
+ {3384691200 36000 0 EST}
+ {3400416000 39600 1 EST}
+ {3416140800 36000 0 EST}
+ {3431865600 39600 1 EST}
+ {3447590400 36000 0 EST}
+ {3463315200 39600 1 EST}
+ {3479644800 36000 0 EST}
+ {3495369600 39600 1 EST}
+ {3511094400 36000 0 EST}
+ {3526819200 39600 1 EST}
+ {3542544000 36000 0 EST}
+ {3558268800 39600 1 EST}
+ {3573993600 36000 0 EST}
+ {3589718400 39600 1 EST}
+ {3605443200 36000 0 EST}
+ {3621168000 39600 1 EST}
+ {3636892800 36000 0 EST}
+ {3653222400 39600 1 EST}
+ {3668947200 36000 0 EST}
+ {3684672000 39600 1 EST}
+ {3700396800 36000 0 EST}
+ {3716121600 39600 1 EST}
+ {3731846400 36000 0 EST}
+ {3747571200 39600 1 EST}
+ {3763296000 36000 0 EST}
+ {3779020800 39600 1 EST}
+ {3794745600 36000 0 EST}
+ {3810470400 39600 1 EST}
+ {3826195200 36000 0 EST}
+ {3842524800 39600 1 EST}
+ {3858249600 36000 0 EST}
+ {3873974400 39600 1 EST}
+ {3889699200 36000 0 EST}
+ {3905424000 39600 1 EST}
+ {3921148800 36000 0 EST}
+ {3936873600 39600 1 EST}
+ {3952598400 36000 0 EST}
+ {3968323200 39600 1 EST}
+ {3984048000 36000 0 EST}
+ {4000377600 39600 1 EST}
+ {4016102400 36000 0 EST}
+ {4031827200 39600 1 EST}
+ {4047552000 36000 0 EST}
+ {4063276800 39600 1 EST}
+ {4079001600 36000 0 EST}
+ {4094726400 39600 1 EST}
+}
diff --git a/library/tzdata/Australia/NSW b/library/tzdata/Australia/NSW
new file mode 100644
index 0000000..905bdfe
--- /dev/null
+++ b/library/tzdata/Australia/NSW
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Sydney)]} {
+ LoadTimeZoneFile Australia/Sydney
+}
+set TZData(:Australia/NSW) $TZData(:Australia/Sydney)
diff --git a/library/tzdata/Australia/North b/library/tzdata/Australia/North
new file mode 100644
index 0000000..950c88c
--- /dev/null
+++ b/library/tzdata/Australia/North
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Darwin)]} {
+ LoadTimeZoneFile Australia/Darwin
+}
+set TZData(:Australia/North) $TZData(:Australia/Darwin)
diff --git a/library/tzdata/Australia/Perth b/library/tzdata/Australia/Perth
new file mode 100644
index 0000000..5d8f116
--- /dev/null
+++ b/library/tzdata/Australia/Perth
@@ -0,0 +1,25 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Perth) {
+ {-9223372036854775808 27804 0 LMT}
+ {-2337925404 28800 0 WST}
+ {-1672559940 32400 1 WST}
+ {-1665385200 28800 0 WST}
+ {-883634400 32400 1 WST}
+ {-876121200 28800 0 WST}
+ {-860392800 32400 1 WST}
+ {-844671600 28800 0 WST}
+ {-836470800 32400 0 WST}
+ {152042400 32400 1 WST}
+ {162928800 28800 0 WST}
+ {436298400 32400 1 WST}
+ {447184800 28800 0 WST}
+ {690314400 32400 1 WST}
+ {699386400 28800 0 WST}
+ {1165082400 32400 1 WST}
+ {1174759200 28800 0 WST}
+ {1193508000 32400 1 WST}
+ {1206813600 28800 0 WST}
+ {1224957600 32400 1 WST}
+ {1238263200 28800 0 WST}
+}
diff --git a/library/tzdata/Australia/Queensland b/library/tzdata/Australia/Queensland
new file mode 100644
index 0000000..6246e92
--- /dev/null
+++ b/library/tzdata/Australia/Queensland
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Brisbane)]} {
+ LoadTimeZoneFile Australia/Brisbane
+}
+set TZData(:Australia/Queensland) $TZData(:Australia/Brisbane)
diff --git a/library/tzdata/Australia/South b/library/tzdata/Australia/South
new file mode 100644
index 0000000..9c7dd95
--- /dev/null
+++ b/library/tzdata/Australia/South
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Adelaide)]} {
+ LoadTimeZoneFile Australia/Adelaide
+}
+set TZData(:Australia/South) $TZData(:Australia/Adelaide)
diff --git a/library/tzdata/Australia/Sydney b/library/tzdata/Australia/Sydney
new file mode 100644
index 0000000..84b1d14
--- /dev/null
+++ b/library/tzdata/Australia/Sydney
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Australia/Sydney) {
+ {-9223372036854775808 36292 0 LMT}
+ {-2364113092 36000 0 EST}
+ {-1672567140 39600 1 EST}
+ {-1665392400 36000 0 EST}
+ {-883641600 39600 1 EST}
+ {-876128400 36000 0 EST}
+ {-860400000 39600 1 EST}
+ {-844678800 36000 0 EST}
+ {-828345600 39600 1 EST}
+ {-813229200 36000 0 EST}
+ {31500000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {89136000 39600 1 EST}
+ {100022400 36000 0 EST}
+ {120585600 39600 1 EST}
+ {131472000 36000 0 EST}
+ {152035200 39600 1 EST}
+ {162921600 36000 0 EST}
+ {183484800 39600 1 EST}
+ {194976000 36000 0 EST}
+ {215539200 39600 1 EST}
+ {226425600 36000 0 EST}
+ {246988800 39600 1 EST}
+ {257875200 36000 0 EST}
+ {278438400 39600 1 EST}
+ {289324800 36000 0 EST}
+ {309888000 39600 1 EST}
+ {320774400 36000 0 EST}
+ {341337600 39600 1 EST}
+ {352224000 36000 0 EST}
+ {372787200 39600 1 EST}
+ {386697600 36000 0 EST}
+ {404841600 39600 1 EST}
+ {415728000 36000 0 EST}
+ {436291200 39600 1 EST}
+ {447177600 36000 0 EST}
+ {467740800 39600 1 EST}
+ {478627200 36000 0 EST}
+ {499190400 39600 1 EST}
+ {511286400 36000 0 EST}
+ {530035200 39600 1 EST}
+ {542736000 36000 0 EST}
+ {562089600 39600 1 EST}
+ {574790400 36000 0 EST}
+ {594144000 39600 1 EST}
+ {606240000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {636480000 36000 0 EST}
+ {657043200 39600 1 EST}
+ {667929600 36000 0 EST}
+ {688492800 39600 1 EST}
+ {699379200 36000 0 EST}
+ {719942400 39600 1 EST}
+ {731433600 36000 0 EST}
+ {751996800 39600 1 EST}
+ {762883200 36000 0 EST}
+ {783446400 39600 1 EST}
+ {794332800 36000 0 EST}
+ {814896000 39600 1 EST}
+ {828201600 36000 0 EST}
+ {846345600 39600 1 EST}
+ {859651200 36000 0 EST}
+ {877795200 39600 1 EST}
+ {891100800 36000 0 EST}
+ {909244800 39600 1 EST}
+ {922550400 36000 0 EST}
+ {941299200 39600 1 EST}
+ {954000000 36000 0 EST}
+ {967305600 39600 1 EST}
+ {985449600 36000 0 EST}
+ {1004198400 39600 1 EST}
+ {1017504000 36000 0 EST}
+ {1035648000 39600 1 EST}
+ {1048953600 36000 0 EST}
+ {1067097600 39600 1 EST}
+ {1080403200 36000 0 EST}
+ {1099152000 39600 1 EST}
+ {1111852800 36000 0 EST}
+ {1130601600 39600 1 EST}
+ {1143907200 36000 0 EST}
+ {1162051200 39600 1 EST}
+ {1174752000 36000 0 EST}
+ {1193500800 39600 1 EST}
+ {1207411200 36000 0 EST}
+ {1223136000 39600 1 EST}
+ {1238860800 36000 0 EST}
+ {1254585600 39600 1 EST}
+ {1270310400 36000 0 EST}
+ {1286035200 39600 1 EST}
+ {1301760000 36000 0 EST}
+ {1317484800 39600 1 EST}
+ {1333209600 36000 0 EST}
+ {1349539200 39600 1 EST}
+ {1365264000 36000 0 EST}
+ {1380988800 39600 1 EST}
+ {1396713600 36000 0 EST}
+ {1412438400 39600 1 EST}
+ {1428163200 36000 0 EST}
+ {1443888000 39600 1 EST}
+ {1459612800 36000 0 EST}
+ {1475337600 39600 1 EST}
+ {1491062400 36000 0 EST}
+ {1506787200 39600 1 EST}
+ {1522512000 36000 0 EST}
+ {1538841600 39600 1 EST}
+ {1554566400 36000 0 EST}
+ {1570291200 39600 1 EST}
+ {1586016000 36000 0 EST}
+ {1601740800 39600 1 EST}
+ {1617465600 36000 0 EST}
+ {1633190400 39600 1 EST}
+ {1648915200 36000 0 EST}
+ {1664640000 39600 1 EST}
+ {1680364800 36000 0 EST}
+ {1696089600 39600 1 EST}
+ {1712419200 36000 0 EST}
+ {1728144000 39600 1 EST}
+ {1743868800 36000 0 EST}
+ {1759593600 39600 1 EST}
+ {1775318400 36000 0 EST}
+ {1791043200 39600 1 EST}
+ {1806768000 36000 0 EST}
+ {1822492800 39600 1 EST}
+ {1838217600 36000 0 EST}
+ {1853942400 39600 1 EST}
+ {1869667200 36000 0 EST}
+ {1885996800 39600 1 EST}
+ {1901721600 36000 0 EST}
+ {1917446400 39600 1 EST}
+ {1933171200 36000 0 EST}
+ {1948896000 39600 1 EST}
+ {1964620800 36000 0 EST}
+ {1980345600 39600 1 EST}
+ {1996070400 36000 0 EST}
+ {2011795200 39600 1 EST}
+ {2027520000 36000 0 EST}
+ {2043244800 39600 1 EST}
+ {2058969600 36000 0 EST}
+ {2075299200 39600 1 EST}
+ {2091024000 36000 0 EST}
+ {2106748800 39600 1 EST}
+ {2122473600 36000 0 EST}
+ {2138198400 39600 1 EST}
+ {2153923200 36000 0 EST}
+ {2169648000 39600 1 EST}
+ {2185372800 36000 0 EST}
+ {2201097600 39600 1 EST}
+ {2216822400 36000 0 EST}
+ {2233152000 39600 1 EST}
+ {2248876800 36000 0 EST}
+ {2264601600 39600 1 EST}
+ {2280326400 36000 0 EST}
+ {2296051200 39600 1 EST}
+ {2311776000 36000 0 EST}
+ {2327500800 39600 1 EST}
+ {2343225600 36000 0 EST}
+ {2358950400 39600 1 EST}
+ {2374675200 36000 0 EST}
+ {2390400000 39600 1 EST}
+ {2406124800 36000 0 EST}
+ {2422454400 39600 1 EST}
+ {2438179200 36000 0 EST}
+ {2453904000 39600 1 EST}
+ {2469628800 36000 0 EST}
+ {2485353600 39600 1 EST}
+ {2501078400 36000 0 EST}
+ {2516803200 39600 1 EST}
+ {2532528000 36000 0 EST}
+ {2548252800 39600 1 EST}
+ {2563977600 36000 0 EST}
+ {2579702400 39600 1 EST}
+ {2596032000 36000 0 EST}
+ {2611756800 39600 1 EST}
+ {2627481600 36000 0 EST}
+ {2643206400 39600 1 EST}
+ {2658931200 36000 0 EST}
+ {2674656000 39600 1 EST}
+ {2690380800 36000 0 EST}
+ {2706105600 39600 1 EST}
+ {2721830400 36000 0 EST}
+ {2737555200 39600 1 EST}
+ {2753280000 36000 0 EST}
+ {2769609600 39600 1 EST}
+ {2785334400 36000 0 EST}
+ {2801059200 39600 1 EST}
+ {2816784000 36000 0 EST}
+ {2832508800 39600 1 EST}
+ {2848233600 36000 0 EST}
+ {2863958400 39600 1 EST}
+ {2879683200 36000 0 EST}
+ {2895408000 39600 1 EST}
+ {2911132800 36000 0 EST}
+ {2926857600 39600 1 EST}
+ {2942582400 36000 0 EST}
+ {2958912000 39600 1 EST}
+ {2974636800 36000 0 EST}
+ {2990361600 39600 1 EST}
+ {3006086400 36000 0 EST}
+ {3021811200 39600 1 EST}
+ {3037536000 36000 0 EST}
+ {3053260800 39600 1 EST}
+ {3068985600 36000 0 EST}
+ {3084710400 39600 1 EST}
+ {3100435200 36000 0 EST}
+ {3116764800 39600 1 EST}
+ {3132489600 36000 0 EST}
+ {3148214400 39600 1 EST}
+ {3163939200 36000 0 EST}
+ {3179664000 39600 1 EST}
+ {3195388800 36000 0 EST}
+ {3211113600 39600 1 EST}
+ {3226838400 36000 0 EST}
+ {3242563200 39600 1 EST}
+ {3258288000 36000 0 EST}
+ {3274012800 39600 1 EST}
+ {3289737600 36000 0 EST}
+ {3306067200 39600 1 EST}
+ {3321792000 36000 0 EST}
+ {3337516800 39600 1 EST}
+ {3353241600 36000 0 EST}
+ {3368966400 39600 1 EST}
+ {3384691200 36000 0 EST}
+ {3400416000 39600 1 EST}
+ {3416140800 36000 0 EST}
+ {3431865600 39600 1 EST}
+ {3447590400 36000 0 EST}
+ {3463315200 39600 1 EST}
+ {3479644800 36000 0 EST}
+ {3495369600 39600 1 EST}
+ {3511094400 36000 0 EST}
+ {3526819200 39600 1 EST}
+ {3542544000 36000 0 EST}
+ {3558268800 39600 1 EST}
+ {3573993600 36000 0 EST}
+ {3589718400 39600 1 EST}
+ {3605443200 36000 0 EST}
+ {3621168000 39600 1 EST}
+ {3636892800 36000 0 EST}
+ {3653222400 39600 1 EST}
+ {3668947200 36000 0 EST}
+ {3684672000 39600 1 EST}
+ {3700396800 36000 0 EST}
+ {3716121600 39600 1 EST}
+ {3731846400 36000 0 EST}
+ {3747571200 39600 1 EST}
+ {3763296000 36000 0 EST}
+ {3779020800 39600 1 EST}
+ {3794745600 36000 0 EST}
+ {3810470400 39600 1 EST}
+ {3826195200 36000 0 EST}
+ {3842524800 39600 1 EST}
+ {3858249600 36000 0 EST}
+ {3873974400 39600 1 EST}
+ {3889699200 36000 0 EST}
+ {3905424000 39600 1 EST}
+ {3921148800 36000 0 EST}
+ {3936873600 39600 1 EST}
+ {3952598400 36000 0 EST}
+ {3968323200 39600 1 EST}
+ {3984048000 36000 0 EST}
+ {4000377600 39600 1 EST}
+ {4016102400 36000 0 EST}
+ {4031827200 39600 1 EST}
+ {4047552000 36000 0 EST}
+ {4063276800 39600 1 EST}
+ {4079001600 36000 0 EST}
+ {4094726400 39600 1 EST}
+}
diff --git a/library/tzdata/Australia/Tasmania b/library/tzdata/Australia/Tasmania
new file mode 100644
index 0000000..1849bde
--- /dev/null
+++ b/library/tzdata/Australia/Tasmania
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Hobart)]} {
+ LoadTimeZoneFile Australia/Hobart
+}
+set TZData(:Australia/Tasmania) $TZData(:Australia/Hobart)
diff --git a/library/tzdata/Australia/Victoria b/library/tzdata/Australia/Victoria
new file mode 100644
index 0000000..037bfeb
--- /dev/null
+++ b/library/tzdata/Australia/Victoria
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Melbourne)]} {
+ LoadTimeZoneFile Australia/Melbourne
+}
+set TZData(:Australia/Victoria) $TZData(:Australia/Melbourne)
diff --git a/library/tzdata/Australia/West b/library/tzdata/Australia/West
new file mode 100644
index 0000000..4689f7e
--- /dev/null
+++ b/library/tzdata/Australia/West
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Perth)]} {
+ LoadTimeZoneFile Australia/Perth
+}
+set TZData(:Australia/West) $TZData(:Australia/Perth)
diff --git a/library/tzdata/Australia/Yancowinna b/library/tzdata/Australia/Yancowinna
new file mode 100644
index 0000000..b7d668d
--- /dev/null
+++ b/library/tzdata/Australia/Yancowinna
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Australia/Broken_Hill)]} {
+ LoadTimeZoneFile Australia/Broken_Hill
+}
+set TZData(:Australia/Yancowinna) $TZData(:Australia/Broken_Hill)
diff --git a/library/tzdata/Brazil/Acre b/library/tzdata/Brazil/Acre
new file mode 100644
index 0000000..abb0b98
--- /dev/null
+++ b/library/tzdata/Brazil/Acre
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Rio_Branco)]} {
+ LoadTimeZoneFile America/Rio_Branco
+}
+set TZData(:Brazil/Acre) $TZData(:America/Rio_Branco)
diff --git a/library/tzdata/Brazil/DeNoronha b/library/tzdata/Brazil/DeNoronha
new file mode 100644
index 0000000..53accb4
--- /dev/null
+++ b/library/tzdata/Brazil/DeNoronha
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Noronha)]} {
+ LoadTimeZoneFile America/Noronha
+}
+set TZData(:Brazil/DeNoronha) $TZData(:America/Noronha)
diff --git a/library/tzdata/Brazil/East b/library/tzdata/Brazil/East
new file mode 100644
index 0000000..f684633
--- /dev/null
+++ b/library/tzdata/Brazil/East
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Sao_Paulo)]} {
+ LoadTimeZoneFile America/Sao_Paulo
+}
+set TZData(:Brazil/East) $TZData(:America/Sao_Paulo)
diff --git a/library/tzdata/Brazil/West b/library/tzdata/Brazil/West
new file mode 100644
index 0000000..67676d9
--- /dev/null
+++ b/library/tzdata/Brazil/West
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Manaus)]} {
+ LoadTimeZoneFile America/Manaus
+}
+set TZData(:Brazil/West) $TZData(:America/Manaus)
diff --git a/library/tzdata/CET b/library/tzdata/CET
new file mode 100644
index 0000000..b08750a
--- /dev/null
+++ b/library/tzdata/CET
@@ -0,0 +1,265 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:CET) {
+ {-9223372036854775808 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-938905200 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-766623600 3600 0 CET}
+ {228877200 7200 1 CEST}
+ {243997200 3600 0 CET}
+ {260326800 7200 1 CEST}
+ {276051600 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/CST6CDT b/library/tzdata/CST6CDT
new file mode 100644
index 0000000..11e45f0
--- /dev/null
+++ b/library/tzdata/CST6CDT
@@ -0,0 +1,278 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:CST6CDT) {
+ {-9223372036854775808 -21600 0 CST}
+ {-1633276800 -18000 1 CDT}
+ {-1615136400 -21600 0 CST}
+ {-1601827200 -18000 1 CDT}
+ {-1583686800 -21600 0 CST}
+ {-880214400 -18000 1 CWT}
+ {-769395600 -18000 1 CPT}
+ {-765392400 -21600 0 CST}
+ {-84384000 -18000 1 CDT}
+ {-68662800 -21600 0 CST}
+ {-52934400 -18000 1 CDT}
+ {-37213200 -21600 0 CST}
+ {-21484800 -18000 1 CDT}
+ {-5763600 -21600 0 CST}
+ {9964800 -18000 1 CDT}
+ {25686000 -21600 0 CST}
+ {41414400 -18000 1 CDT}
+ {57740400 -21600 0 CST}
+ {73468800 -18000 1 CDT}
+ {89190000 -21600 0 CST}
+ {104918400 -18000 1 CDT}
+ {120639600 -21600 0 CST}
+ {126691200 -18000 1 CDT}
+ {152089200 -21600 0 CST}
+ {162374400 -18000 1 CDT}
+ {183538800 -21600 0 CST}
+ {199267200 -18000 1 CDT}
+ {215593200 -21600 0 CST}
+ {230716800 -18000 1 CDT}
+ {247042800 -21600 0 CST}
+ {262771200 -18000 1 CDT}
+ {278492400 -21600 0 CST}
+ {294220800 -18000 1 CDT}
+ {309942000 -21600 0 CST}
+ {325670400 -18000 1 CDT}
+ {341391600 -21600 0 CST}
+ {357120000 -18000 1 CDT}
+ {372841200 -21600 0 CST}
+ {388569600 -18000 1 CDT}
+ {404895600 -21600 0 CST}
+ {420019200 -18000 1 CDT}
+ {436345200 -21600 0 CST}
+ {452073600 -18000 1 CDT}
+ {467794800 -21600 0 CST}
+ {483523200 -18000 1 CDT}
+ {499244400 -21600 0 CST}
+ {514972800 -18000 1 CDT}
+ {530694000 -21600 0 CST}
+ {544608000 -18000 1 CDT}
+ {562143600 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {607507200 -18000 1 CDT}
+ {625647600 -21600 0 CST}
+ {638956800 -18000 1 CDT}
+ {657097200 -21600 0 CST}
+ {671011200 -18000 1 CDT}
+ {688546800 -21600 0 CST}
+ {702460800 -18000 1 CDT}
+ {719996400 -21600 0 CST}
+ {733910400 -18000 1 CDT}
+ {752050800 -21600 0 CST}
+ {765360000 -18000 1 CDT}
+ {783500400 -21600 0 CST}
+ {796809600 -18000 1 CDT}
+ {814950000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {986112000 -18000 1 CDT}
+ {1004252400 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1173600000 -18000 1 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/Canada/Atlantic b/library/tzdata/Canada/Atlantic
new file mode 100644
index 0000000..d1478d9
--- /dev/null
+++ b/library/tzdata/Canada/Atlantic
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Halifax)]} {
+ LoadTimeZoneFile America/Halifax
+}
+set TZData(:Canada/Atlantic) $TZData(:America/Halifax)
diff --git a/library/tzdata/Canada/Central b/library/tzdata/Canada/Central
new file mode 100644
index 0000000..b04bef9
--- /dev/null
+++ b/library/tzdata/Canada/Central
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Winnipeg)]} {
+ LoadTimeZoneFile America/Winnipeg
+}
+set TZData(:Canada/Central) $TZData(:America/Winnipeg)
diff --git a/library/tzdata/Canada/East-Saskatchewan b/library/tzdata/Canada/East-Saskatchewan
new file mode 100644
index 0000000..f7e500c
--- /dev/null
+++ b/library/tzdata/Canada/East-Saskatchewan
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Regina)]} {
+ LoadTimeZoneFile America/Regina
+}
+set TZData(:Canada/East-Saskatchewan) $TZData(:America/Regina)
diff --git a/library/tzdata/Canada/Eastern b/library/tzdata/Canada/Eastern
new file mode 100644
index 0000000..74528eb
--- /dev/null
+++ b/library/tzdata/Canada/Eastern
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Toronto)]} {
+ LoadTimeZoneFile America/Toronto
+}
+set TZData(:Canada/Eastern) $TZData(:America/Toronto)
diff --git a/library/tzdata/Canada/Mountain b/library/tzdata/Canada/Mountain
new file mode 100644
index 0000000..8c6458d
--- /dev/null
+++ b/library/tzdata/Canada/Mountain
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Edmonton)]} {
+ LoadTimeZoneFile America/Edmonton
+}
+set TZData(:Canada/Mountain) $TZData(:America/Edmonton)
diff --git a/library/tzdata/Canada/Newfoundland b/library/tzdata/Canada/Newfoundland
new file mode 100644
index 0000000..6904cde
--- /dev/null
+++ b/library/tzdata/Canada/Newfoundland
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/St_Johns)]} {
+ LoadTimeZoneFile America/St_Johns
+}
+set TZData(:Canada/Newfoundland) $TZData(:America/St_Johns)
diff --git a/library/tzdata/Canada/Pacific b/library/tzdata/Canada/Pacific
new file mode 100644
index 0000000..4d70342
--- /dev/null
+++ b/library/tzdata/Canada/Pacific
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Vancouver)]} {
+ LoadTimeZoneFile America/Vancouver
+}
+set TZData(:Canada/Pacific) $TZData(:America/Vancouver)
diff --git a/library/tzdata/Canada/Saskatchewan b/library/tzdata/Canada/Saskatchewan
new file mode 100644
index 0000000..cd56446
--- /dev/null
+++ b/library/tzdata/Canada/Saskatchewan
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Regina)]} {
+ LoadTimeZoneFile America/Regina
+}
+set TZData(:Canada/Saskatchewan) $TZData(:America/Regina)
diff --git a/library/tzdata/Canada/Yukon b/library/tzdata/Canada/Yukon
new file mode 100644
index 0000000..04b8368
--- /dev/null
+++ b/library/tzdata/Canada/Yukon
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Whitehorse)]} {
+ LoadTimeZoneFile America/Whitehorse
+}
+set TZData(:Canada/Yukon) $TZData(:America/Whitehorse)
diff --git a/library/tzdata/Chile/Continental b/library/tzdata/Chile/Continental
new file mode 100644
index 0000000..0f858a3
--- /dev/null
+++ b/library/tzdata/Chile/Continental
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Santiago)]} {
+ LoadTimeZoneFile America/Santiago
+}
+set TZData(:Chile/Continental) $TZData(:America/Santiago)
diff --git a/library/tzdata/Chile/EasterIsland b/library/tzdata/Chile/EasterIsland
new file mode 100644
index 0000000..4edc034
--- /dev/null
+++ b/library/tzdata/Chile/EasterIsland
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Easter)]} {
+ LoadTimeZoneFile Pacific/Easter
+}
+set TZData(:Chile/EasterIsland) $TZData(:Pacific/Easter)
diff --git a/library/tzdata/Cuba b/library/tzdata/Cuba
new file mode 100644
index 0000000..17f7b45
--- /dev/null
+++ b/library/tzdata/Cuba
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Havana)]} {
+ LoadTimeZoneFile America/Havana
+}
+set TZData(:Cuba) $TZData(:America/Havana)
diff --git a/library/tzdata/EET b/library/tzdata/EET
new file mode 100644
index 0000000..e7c102a
--- /dev/null
+++ b/library/tzdata/EET
@@ -0,0 +1,251 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:EET) {
+ {-9223372036854775808 7200 0 EET}
+ {228877200 10800 1 EEST}
+ {243997200 7200 0 EET}
+ {260326800 10800 1 EEST}
+ {276051600 7200 0 EET}
+ {291776400 10800 1 EEST}
+ {307501200 7200 0 EET}
+ {323830800 10800 1 EEST}
+ {338950800 7200 0 EET}
+ {354675600 10800 1 EEST}
+ {370400400 7200 0 EET}
+ {386125200 10800 1 EEST}
+ {401850000 7200 0 EET}
+ {417574800 10800 1 EEST}
+ {433299600 7200 0 EET}
+ {449024400 10800 1 EEST}
+ {465354000 7200 0 EET}
+ {481078800 10800 1 EEST}
+ {496803600 7200 0 EET}
+ {512528400 10800 1 EEST}
+ {528253200 7200 0 EET}
+ {543978000 10800 1 EEST}
+ {559702800 7200 0 EET}
+ {575427600 10800 1 EEST}
+ {591152400 7200 0 EET}
+ {606877200 10800 1 EEST}
+ {622602000 7200 0 EET}
+ {638326800 10800 1 EEST}
+ {654656400 7200 0 EET}
+ {670381200 10800 1 EEST}
+ {686106000 7200 0 EET}
+ {701830800 10800 1 EEST}
+ {717555600 7200 0 EET}
+ {733280400 10800 1 EEST}
+ {749005200 7200 0 EET}
+ {764730000 10800 1 EEST}
+ {780454800 7200 0 EET}
+ {796179600 10800 1 EEST}
+ {811904400 7200 0 EET}
+ {828234000 10800 1 EEST}
+ {846378000 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/EST b/library/tzdata/EST
new file mode 100644
index 0000000..72c5b17
--- /dev/null
+++ b/library/tzdata/EST
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:EST) {
+ {-9223372036854775808 -18000 0 EST}
+}
diff --git a/library/tzdata/EST5EDT b/library/tzdata/EST5EDT
new file mode 100644
index 0000000..968833e
--- /dev/null
+++ b/library/tzdata/EST5EDT
@@ -0,0 +1,278 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:EST5EDT) {
+ {-9223372036854775808 -18000 0 EST}
+ {-1633280400 -14400 1 EDT}
+ {-1615140000 -18000 0 EST}
+ {-1601830800 -14400 1 EDT}
+ {-1583690400 -18000 0 EST}
+ {-880218000 -14400 1 EWT}
+ {-769395600 -14400 1 EPT}
+ {-765396000 -18000 0 EST}
+ {-84387600 -14400 1 EDT}
+ {-68666400 -18000 0 EST}
+ {-52938000 -14400 1 EDT}
+ {-37216800 -18000 0 EST}
+ {-21488400 -14400 1 EDT}
+ {-5767200 -18000 0 EST}
+ {9961200 -14400 1 EDT}
+ {25682400 -18000 0 EST}
+ {41410800 -14400 1 EDT}
+ {57736800 -18000 0 EST}
+ {73465200 -14400 1 EDT}
+ {89186400 -18000 0 EST}
+ {104914800 -14400 1 EDT}
+ {120636000 -18000 0 EST}
+ {126687600 -14400 1 EDT}
+ {152085600 -18000 0 EST}
+ {162370800 -14400 1 EDT}
+ {183535200 -18000 0 EST}
+ {199263600 -14400 1 EDT}
+ {215589600 -18000 0 EST}
+ {230713200 -14400 1 EDT}
+ {247039200 -18000 0 EST}
+ {262767600 -14400 1 EDT}
+ {278488800 -18000 0 EST}
+ {294217200 -14400 1 EDT}
+ {309938400 -18000 0 EST}
+ {325666800 -14400 1 EDT}
+ {341388000 -18000 0 EST}
+ {357116400 -14400 1 EDT}
+ {372837600 -18000 0 EST}
+ {388566000 -14400 1 EDT}
+ {404892000 -18000 0 EST}
+ {420015600 -14400 1 EDT}
+ {436341600 -18000 0 EST}
+ {452070000 -14400 1 EDT}
+ {467791200 -18000 0 EST}
+ {483519600 -14400 1 EDT}
+ {499240800 -18000 0 EST}
+ {514969200 -14400 1 EDT}
+ {530690400 -18000 0 EST}
+ {544604400 -14400 1 EDT}
+ {562140000 -18000 0 EST}
+ {576054000 -14400 1 EDT}
+ {594194400 -18000 0 EST}
+ {607503600 -14400 1 EDT}
+ {625644000 -18000 0 EST}
+ {638953200 -14400 1 EDT}
+ {657093600 -18000 0 EST}
+ {671007600 -14400 1 EDT}
+ {688543200 -18000 0 EST}
+ {702457200 -14400 1 EDT}
+ {719992800 -18000 0 EST}
+ {733906800 -14400 1 EDT}
+ {752047200 -18000 0 EST}
+ {765356400 -14400 1 EDT}
+ {783496800 -18000 0 EST}
+ {796806000 -14400 1 EDT}
+ {814946400 -18000 0 EST}
+ {828860400 -14400 1 EDT}
+ {846396000 -18000 0 EST}
+ {860310000 -14400 1 EDT}
+ {877845600 -18000 0 EST}
+ {891759600 -14400 1 EDT}
+ {909295200 -18000 0 EST}
+ {923209200 -14400 1 EDT}
+ {941349600 -18000 0 EST}
+ {954658800 -14400 1 EDT}
+ {972799200 -18000 0 EST}
+ {986108400 -14400 1 EDT}
+ {1004248800 -18000 0 EST}
+ {1018162800 -14400 1 EDT}
+ {1035698400 -18000 0 EST}
+ {1049612400 -14400 1 EDT}
+ {1067148000 -18000 0 EST}
+ {1081062000 -14400 1 EDT}
+ {1099202400 -18000 0 EST}
+ {1112511600 -14400 1 EDT}
+ {1130652000 -18000 0 EST}
+ {1143961200 -14400 1 EDT}
+ {1162101600 -18000 0 EST}
+ {1173596400 -14400 1 EDT}
+ {1194156000 -18000 0 EST}
+ {1205046000 -14400 1 EDT}
+ {1225605600 -18000 0 EST}
+ {1236495600 -14400 1 EDT}
+ {1257055200 -18000 0 EST}
+ {1268550000 -14400 1 EDT}
+ {1289109600 -18000 0 EST}
+ {1299999600 -14400 1 EDT}
+ {1320559200 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
+}
diff --git a/library/tzdata/Egypt b/library/tzdata/Egypt
new file mode 100644
index 0000000..63341bc
--- /dev/null
+++ b/library/tzdata/Egypt
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Africa/Cairo)]} {
+ LoadTimeZoneFile Africa/Cairo
+}
+set TZData(:Egypt) $TZData(:Africa/Cairo)
diff --git a/library/tzdata/Eire b/library/tzdata/Eire
new file mode 100644
index 0000000..c86c91c
--- /dev/null
+++ b/library/tzdata/Eire
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Dublin)]} {
+ LoadTimeZoneFile Europe/Dublin
+}
+set TZData(:Eire) $TZData(:Europe/Dublin)
diff --git a/library/tzdata/Etc/GMT b/library/tzdata/Etc/GMT
new file mode 100644
index 0000000..7454fd5
--- /dev/null
+++ b/library/tzdata/Etc/GMT
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT) {
+ {-9223372036854775808 0 0 GMT}
+}
diff --git a/library/tzdata/Etc/GMT+0 b/library/tzdata/Etc/GMT+0
new file mode 100644
index 0000000..017dee1
--- /dev/null
+++ b/library/tzdata/Etc/GMT+0
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:Etc/GMT+0) $TZData(:Etc/GMT)
diff --git a/library/tzdata/Etc/GMT+1 b/library/tzdata/Etc/GMT+1
new file mode 100644
index 0000000..12f97ba
--- /dev/null
+++ b/library/tzdata/Etc/GMT+1
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+1) {
+ {-9223372036854775808 -3600 0 GMT+1}
+}
diff --git a/library/tzdata/Etc/GMT+10 b/library/tzdata/Etc/GMT+10
new file mode 100644
index 0000000..6ea50bb
--- /dev/null
+++ b/library/tzdata/Etc/GMT+10
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+10) {
+ {-9223372036854775808 -36000 0 GMT+10}
+}
diff --git a/library/tzdata/Etc/GMT+11 b/library/tzdata/Etc/GMT+11
new file mode 100644
index 0000000..c91b169
--- /dev/null
+++ b/library/tzdata/Etc/GMT+11
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+11) {
+ {-9223372036854775808 -39600 0 GMT+11}
+}
diff --git a/library/tzdata/Etc/GMT+12 b/library/tzdata/Etc/GMT+12
new file mode 100644
index 0000000..29a4cee
--- /dev/null
+++ b/library/tzdata/Etc/GMT+12
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+12) {
+ {-9223372036854775808 -43200 0 GMT+12}
+}
diff --git a/library/tzdata/Etc/GMT+2 b/library/tzdata/Etc/GMT+2
new file mode 100644
index 0000000..8c6b526
--- /dev/null
+++ b/library/tzdata/Etc/GMT+2
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+2) {
+ {-9223372036854775808 -7200 0 GMT+2}
+}
diff --git a/library/tzdata/Etc/GMT+3 b/library/tzdata/Etc/GMT+3
new file mode 100644
index 0000000..862571d
--- /dev/null
+++ b/library/tzdata/Etc/GMT+3
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+3) {
+ {-9223372036854775808 -10800 0 GMT+3}
+}
diff --git a/library/tzdata/Etc/GMT+4 b/library/tzdata/Etc/GMT+4
new file mode 100644
index 0000000..a933bbc
--- /dev/null
+++ b/library/tzdata/Etc/GMT+4
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+4) {
+ {-9223372036854775808 -14400 0 GMT+4}
+}
diff --git a/library/tzdata/Etc/GMT+5 b/library/tzdata/Etc/GMT+5
new file mode 100644
index 0000000..80cc25c
--- /dev/null
+++ b/library/tzdata/Etc/GMT+5
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+5) {
+ {-9223372036854775808 -18000 0 GMT+5}
+}
diff --git a/library/tzdata/Etc/GMT+6 b/library/tzdata/Etc/GMT+6
new file mode 100644
index 0000000..bc57bd6
--- /dev/null
+++ b/library/tzdata/Etc/GMT+6
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+6) {
+ {-9223372036854775808 -21600 0 GMT+6}
+}
diff --git a/library/tzdata/Etc/GMT+7 b/library/tzdata/Etc/GMT+7
new file mode 100644
index 0000000..d419eb9
--- /dev/null
+++ b/library/tzdata/Etc/GMT+7
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+7) {
+ {-9223372036854775808 -25200 0 GMT+7}
+}
diff --git a/library/tzdata/Etc/GMT+8 b/library/tzdata/Etc/GMT+8
new file mode 100644
index 0000000..705ad40
--- /dev/null
+++ b/library/tzdata/Etc/GMT+8
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+8) {
+ {-9223372036854775808 -28800 0 GMT+8}
+}
diff --git a/library/tzdata/Etc/GMT+9 b/library/tzdata/Etc/GMT+9
new file mode 100644
index 0000000..4086639
--- /dev/null
+++ b/library/tzdata/Etc/GMT+9
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT+9) {
+ {-9223372036854775808 -32400 0 GMT+9}
+}
diff --git a/library/tzdata/Etc/GMT-0 b/library/tzdata/Etc/GMT-0
new file mode 100644
index 0000000..d8913d5
--- /dev/null
+++ b/library/tzdata/Etc/GMT-0
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:Etc/GMT-0) $TZData(:Etc/GMT)
diff --git a/library/tzdata/Etc/GMT-1 b/library/tzdata/Etc/GMT-1
new file mode 100644
index 0000000..a44dd1f
--- /dev/null
+++ b/library/tzdata/Etc/GMT-1
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-1) {
+ {-9223372036854775808 3600 0 GMT-1}
+}
diff --git a/library/tzdata/Etc/GMT-10 b/library/tzdata/Etc/GMT-10
new file mode 100644
index 0000000..1c50d01
--- /dev/null
+++ b/library/tzdata/Etc/GMT-10
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-10) {
+ {-9223372036854775808 36000 0 GMT-10}
+}
diff --git a/library/tzdata/Etc/GMT-11 b/library/tzdata/Etc/GMT-11
new file mode 100644
index 0000000..d07710f
--- /dev/null
+++ b/library/tzdata/Etc/GMT-11
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-11) {
+ {-9223372036854775808 39600 0 GMT-11}
+}
diff --git a/library/tzdata/Etc/GMT-12 b/library/tzdata/Etc/GMT-12
new file mode 100644
index 0000000..a23b98d
--- /dev/null
+++ b/library/tzdata/Etc/GMT-12
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-12) {
+ {-9223372036854775808 43200 0 GMT-12}
+}
diff --git a/library/tzdata/Etc/GMT-13 b/library/tzdata/Etc/GMT-13
new file mode 100644
index 0000000..1a6700a
--- /dev/null
+++ b/library/tzdata/Etc/GMT-13
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-13) {
+ {-9223372036854775808 46800 0 GMT-13}
+}
diff --git a/library/tzdata/Etc/GMT-14 b/library/tzdata/Etc/GMT-14
new file mode 100644
index 0000000..3707e21
--- /dev/null
+++ b/library/tzdata/Etc/GMT-14
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-14) {
+ {-9223372036854775808 50400 0 GMT-14}
+}
diff --git a/library/tzdata/Etc/GMT-2 b/library/tzdata/Etc/GMT-2
new file mode 100644
index 0000000..f9dea16
--- /dev/null
+++ b/library/tzdata/Etc/GMT-2
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-2) {
+ {-9223372036854775808 7200 0 GMT-2}
+}
diff --git a/library/tzdata/Etc/GMT-3 b/library/tzdata/Etc/GMT-3
new file mode 100644
index 0000000..99145b8
--- /dev/null
+++ b/library/tzdata/Etc/GMT-3
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-3) {
+ {-9223372036854775808 10800 0 GMT-3}
+}
diff --git a/library/tzdata/Etc/GMT-4 b/library/tzdata/Etc/GMT-4
new file mode 100644
index 0000000..27b4fec
--- /dev/null
+++ b/library/tzdata/Etc/GMT-4
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-4) {
+ {-9223372036854775808 14400 0 GMT-4}
+}
diff --git a/library/tzdata/Etc/GMT-5 b/library/tzdata/Etc/GMT-5
new file mode 100644
index 0000000..dbe3df7
--- /dev/null
+++ b/library/tzdata/Etc/GMT-5
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-5) {
+ {-9223372036854775808 18000 0 GMT-5}
+}
diff --git a/library/tzdata/Etc/GMT-6 b/library/tzdata/Etc/GMT-6
new file mode 100644
index 0000000..414dbfa
--- /dev/null
+++ b/library/tzdata/Etc/GMT-6
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-6) {
+ {-9223372036854775808 21600 0 GMT-6}
+}
diff --git a/library/tzdata/Etc/GMT-7 b/library/tzdata/Etc/GMT-7
new file mode 100644
index 0000000..2bd59db
--- /dev/null
+++ b/library/tzdata/Etc/GMT-7
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-7) {
+ {-9223372036854775808 25200 0 GMT-7}
+}
diff --git a/library/tzdata/Etc/GMT-8 b/library/tzdata/Etc/GMT-8
new file mode 100644
index 0000000..7303721
--- /dev/null
+++ b/library/tzdata/Etc/GMT-8
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-8) {
+ {-9223372036854775808 28800 0 GMT-8}
+}
diff --git a/library/tzdata/Etc/GMT-9 b/library/tzdata/Etc/GMT-9
new file mode 100644
index 0000000..46e6878
--- /dev/null
+++ b/library/tzdata/Etc/GMT-9
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/GMT-9) {
+ {-9223372036854775808 32400 0 GMT-9}
+}
diff --git a/library/tzdata/Etc/GMT0 b/library/tzdata/Etc/GMT0
new file mode 100644
index 0000000..dba1fe9
--- /dev/null
+++ b/library/tzdata/Etc/GMT0
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:Etc/GMT0) $TZData(:Etc/GMT)
diff --git a/library/tzdata/Etc/Greenwich b/library/tzdata/Etc/Greenwich
new file mode 100644
index 0000000..53acea0
--- /dev/null
+++ b/library/tzdata/Etc/Greenwich
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:Etc/Greenwich) $TZData(:Etc/GMT)
diff --git a/library/tzdata/Etc/UCT b/library/tzdata/Etc/UCT
new file mode 100644
index 0000000..f7d795e
--- /dev/null
+++ b/library/tzdata/Etc/UCT
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/UCT) {
+ {-9223372036854775808 0 0 UCT}
+}
diff --git a/library/tzdata/Etc/UTC b/library/tzdata/Etc/UTC
new file mode 100644
index 0000000..db5954b
--- /dev/null
+++ b/library/tzdata/Etc/UTC
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Etc/UTC) {
+ {-9223372036854775808 0 0 UTC}
+}
diff --git a/library/tzdata/Etc/Universal b/library/tzdata/Etc/Universal
new file mode 100644
index 0000000..a3b7547
--- /dev/null
+++ b/library/tzdata/Etc/Universal
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/UTC)]} {
+ LoadTimeZoneFile Etc/UTC
+}
+set TZData(:Etc/Universal) $TZData(:Etc/UTC)
diff --git a/library/tzdata/Etc/Zulu b/library/tzdata/Etc/Zulu
new file mode 100644
index 0000000..f643db9
--- /dev/null
+++ b/library/tzdata/Etc/Zulu
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/UTC)]} {
+ LoadTimeZoneFile Etc/UTC
+}
+set TZData(:Etc/Zulu) $TZData(:Etc/UTC)
diff --git a/library/tzdata/Europe/Amsterdam b/library/tzdata/Europe/Amsterdam
new file mode 100644
index 0000000..bd89127
--- /dev/null
+++ b/library/tzdata/Europe/Amsterdam
@@ -0,0 +1,310 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Amsterdam) {
+ {-9223372036854775808 1172 0 LMT}
+ {-4260212372 1172 0 AMT}
+ {-1693700372 4772 1 NST}
+ {-1680484772 1172 0 AMT}
+ {-1663453172 4772 1 NST}
+ {-1650147572 1172 0 AMT}
+ {-1633213172 4772 1 NST}
+ {-1617488372 1172 0 AMT}
+ {-1601158772 4772 1 NST}
+ {-1586038772 1172 0 AMT}
+ {-1569709172 4772 1 NST}
+ {-1554589172 1172 0 AMT}
+ {-1538259572 4772 1 NST}
+ {-1523139572 1172 0 AMT}
+ {-1507501172 4772 1 NST}
+ {-1490566772 1172 0 AMT}
+ {-1470176372 4772 1 NST}
+ {-1459117172 1172 0 AMT}
+ {-1443997172 4772 1 NST}
+ {-1427667572 1172 0 AMT}
+ {-1406672372 4772 1 NST}
+ {-1396217972 1172 0 AMT}
+ {-1376950772 4772 1 NST}
+ {-1364768372 1172 0 AMT}
+ {-1345414772 4772 1 NST}
+ {-1333318772 1172 0 AMT}
+ {-1313792372 4772 1 NST}
+ {-1301264372 1172 0 AMT}
+ {-1282256372 4772 1 NST}
+ {-1269814772 1172 0 AMT}
+ {-1250720372 4772 1 NST}
+ {-1238365172 1172 0 AMT}
+ {-1219184372 4772 1 NST}
+ {-1206915572 1172 0 AMT}
+ {-1186957172 4772 1 NST}
+ {-1175465972 1172 0 AMT}
+ {-1156025972 4772 1 NST}
+ {-1143411572 1172 0 AMT}
+ {-1124489972 4772 1 NST}
+ {-1111961972 1172 0 AMT}
+ {-1092953972 4772 1 NST}
+ {-1080512372 1172 0 AMT}
+ {-1061331572 4772 1 NST}
+ {-1049062772 1172 0 AMT}
+ {-1029190772 4772 1 NST}
+ {-1025741972 4800 0 NEST}
+ {-1017613200 1200 0 NET}
+ {-998259600 4800 1 NEST}
+ {-986163600 1200 0 NET}
+ {-966723600 4800 1 NEST}
+ {-954109200 1200 0 NET}
+ {-935022000 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 0 CEST}
+ {-766623600 3600 0 CET}
+ {220921200 3600 0 CET}
+ {228877200 7200 1 CEST}
+ {243997200 3600 0 CET}
+ {260326800 7200 1 CEST}
+ {276051600 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Andorra b/library/tzdata/Europe/Andorra
new file mode 100644
index 0000000..89233fe
--- /dev/null
+++ b/library/tzdata/Europe/Andorra
@@ -0,0 +1,237 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Andorra) {
+ {-9223372036854775808 364 0 LMT}
+ {-2177453164 0 0 WET}
+ {-733881600 3600 0 CET}
+ {481078800 7200 0 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Athens b/library/tzdata/Europe/Athens
new file mode 100644
index 0000000..f8df408
--- /dev/null
+++ b/library/tzdata/Europe/Athens
@@ -0,0 +1,268 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Athens) {
+ {-9223372036854775808 5692 0 LMT}
+ {-2344642492 5692 0 AMT}
+ {-1686101632 7200 0 EET}
+ {-1182996000 10800 1 EEST}
+ {-1178161200 7200 0 EET}
+ {-906861600 10800 1 EEST}
+ {-904878000 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844477200 7200 1 CEST}
+ {-828237600 3600 0 CET}
+ {-812422800 7200 0 EET}
+ {-552362400 10800 1 EEST}
+ {-541652400 7200 0 EET}
+ {166485600 10800 1 EEST}
+ {186184800 7200 0 EET}
+ {198028800 10800 1 EEST}
+ {213753600 7200 0 EET}
+ {228873600 10800 1 EEST}
+ {244080000 7200 0 EET}
+ {260323200 10800 1 EEST}
+ {275446800 7200 0 EET}
+ {291798000 10800 1 EEST}
+ {307407600 7200 0 EET}
+ {323388000 10800 1 EEST}
+ {338936400 7200 0 EET}
+ {347148000 7200 0 EET}
+ {354675600 10800 1 EEST}
+ {370400400 7200 0 EET}
+ {386125200 10800 1 EEST}
+ {401850000 7200 0 EET}
+ {417574800 10800 1 EEST}
+ {433299600 7200 0 EET}
+ {449024400 10800 1 EEST}
+ {465354000 7200 0 EET}
+ {481078800 10800 1 EEST}
+ {496803600 7200 0 EET}
+ {512528400 10800 1 EEST}
+ {528253200 7200 0 EET}
+ {543978000 10800 1 EEST}
+ {559702800 7200 0 EET}
+ {575427600 10800 1 EEST}
+ {591152400 7200 0 EET}
+ {606877200 10800 1 EEST}
+ {622602000 7200 0 EET}
+ {638326800 10800 1 EEST}
+ {654656400 7200 0 EET}
+ {670381200 10800 1 EEST}
+ {686106000 7200 0 EET}
+ {701830800 10800 1 EEST}
+ {717555600 7200 0 EET}
+ {733280400 10800 1 EEST}
+ {749005200 7200 0 EET}
+ {764730000 10800 1 EEST}
+ {780454800 7200 0 EET}
+ {796179600 10800 1 EEST}
+ {811904400 7200 0 EET}
+ {828234000 10800 1 EEST}
+ {846378000 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Belfast b/library/tzdata/Europe/Belfast
new file mode 100644
index 0000000..51cd3ce
--- /dev/null
+++ b/library/tzdata/Europe/Belfast
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/London)]} {
+ LoadTimeZoneFile Europe/London
+}
+set TZData(:Europe/Belfast) $TZData(:Europe/London)
diff --git a/library/tzdata/Europe/Belgrade b/library/tzdata/Europe/Belgrade
new file mode 100644
index 0000000..b11f7b3
--- /dev/null
+++ b/library/tzdata/Europe/Belgrade
@@ -0,0 +1,250 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Belgrade) {
+ {-9223372036854775808 4920 0 LMT}
+ {-2713915320 3600 0 CET}
+ {-905824800 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-788922000 3600 0 CET}
+ {-777942000 7200 1 CEST}
+ {-766623600 3600 0 CET}
+ {407199600 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Berlin b/library/tzdata/Europe/Berlin
new file mode 100644
index 0000000..5469cf6
--- /dev/null
+++ b/library/tzdata/Europe/Berlin
@@ -0,0 +1,274 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Berlin) {
+ {-9223372036854775808 3208 0 LMT}
+ {-2422054408 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-938905200 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-776559600 10800 0 CEMT}
+ {-765936000 7200 1 CEST}
+ {-761180400 3600 0 CET}
+ {-757386000 3600 0 CET}
+ {-748479600 7200 1 CEST}
+ {-733273200 3600 0 CET}
+ {-717631200 7200 1 CEST}
+ {-714610800 10800 1 CEMT}
+ {-710380800 7200 1 CEST}
+ {-701910000 3600 0 CET}
+ {-684975600 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {-654130800 7200 1 CEST}
+ {-639010800 3600 0 CET}
+ {315529200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Bratislava b/library/tzdata/Europe/Bratislava
new file mode 100644
index 0000000..d65ea5a
--- /dev/null
+++ b/library/tzdata/Europe/Bratislava
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Prague)]} {
+ LoadTimeZoneFile Europe/Prague
+}
+set TZData(:Europe/Bratislava) $TZData(:Europe/Prague)
diff --git a/library/tzdata/Europe/Brussels b/library/tzdata/Europe/Brussels
new file mode 100644
index 0000000..3cb9b14
--- /dev/null
+++ b/library/tzdata/Europe/Brussels
@@ -0,0 +1,316 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Brussels) {
+ {-9223372036854775808 1050 0 LMT}
+ {-2840141850 1050 0 BMT}
+ {-2450953050 0 0 WET}
+ {-1740355200 3600 0 CET}
+ {-1693702800 7200 0 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-1613826000 0 0 WET}
+ {-1604278800 3600 1 WEST}
+ {-1585530000 0 0 WET}
+ {-1574038800 3600 1 WEST}
+ {-1552266000 0 0 WET}
+ {-1539997200 3600 1 WEST}
+ {-1520557200 0 0 WET}
+ {-1507510800 3600 1 WEST}
+ {-1490576400 0 0 WET}
+ {-1473642000 3600 1 WEST}
+ {-1459126800 0 0 WET}
+ {-1444006800 3600 1 WEST}
+ {-1427677200 0 0 WET}
+ {-1411952400 3600 1 WEST}
+ {-1396227600 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364778000 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333328400 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301263200 0 0 WET}
+ {-1284328800 3600 1 WEST}
+ {-1269813600 0 0 WET}
+ {-1253484000 3600 1 WEST}
+ {-1238364000 0 0 WET}
+ {-1221429600 3600 1 WEST}
+ {-1206914400 0 0 WET}
+ {-1191189600 3600 1 WEST}
+ {-1175464800 0 0 WET}
+ {-1160344800 3600 1 WEST}
+ {-1143410400 0 0 WET}
+ {-1127685600 3600 1 WEST}
+ {-1111960800 0 0 WET}
+ {-1096840800 3600 1 WEST}
+ {-1080511200 0 0 WET}
+ {-1063576800 3600 1 WEST}
+ {-1049061600 0 0 WET}
+ {-1033336800 3600 1 WEST}
+ {-1017612000 0 0 WET}
+ {-1002492000 3600 1 WEST}
+ {-986162400 0 0 WET}
+ {-969228000 3600 1 WEST}
+ {-950479200 0 0 WET}
+ {-942012000 3600 1 WEST}
+ {-934668000 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-799290000 3600 0 CET}
+ {-798073200 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-766623600 3600 0 CET}
+ {-745455600 7200 1 CEST}
+ {-733273200 3600 0 CET}
+ {220921200 3600 0 CET}
+ {228877200 7200 1 CEST}
+ {243997200 3600 0 CET}
+ {260326800 7200 1 CEST}
+ {276051600 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Bucharest b/library/tzdata/Europe/Bucharest
new file mode 100644
index 0000000..7b3bed4
--- /dev/null
+++ b/library/tzdata/Europe/Bucharest
@@ -0,0 +1,268 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Bucharest) {
+ {-9223372036854775808 6264 0 LMT}
+ {-2469404664 6264 0 BMT}
+ {-1213148664 7200 0 EET}
+ {-1187056800 10800 1 EEST}
+ {-1175479200 7200 0 EET}
+ {-1159754400 10800 1 EEST}
+ {-1144029600 7200 0 EET}
+ {-1127700000 10800 1 EEST}
+ {-1111975200 7200 0 EET}
+ {-1096250400 10800 1 EEST}
+ {-1080525600 7200 0 EET}
+ {-1064800800 10800 1 EEST}
+ {-1049076000 7200 0 EET}
+ {-1033351200 10800 1 EEST}
+ {-1017626400 7200 0 EET}
+ {-1001901600 10800 1 EEST}
+ {-986176800 7200 0 EET}
+ {-970452000 10800 1 EEST}
+ {-954727200 7200 0 EET}
+ {296604000 10800 1 EEST}
+ {307486800 7200 0 EET}
+ {323816400 10800 1 EEST}
+ {338940000 7200 0 EET}
+ {354672000 10800 0 EEST}
+ {370396800 7200 0 EET}
+ {386121600 10800 1 EEST}
+ {401846400 7200 0 EET}
+ {417571200 10800 1 EEST}
+ {433296000 7200 0 EET}
+ {449020800 10800 1 EEST}
+ {465350400 7200 0 EET}
+ {481075200 10800 1 EEST}
+ {496800000 7200 0 EET}
+ {512524800 10800 1 EEST}
+ {528249600 7200 0 EET}
+ {543974400 10800 1 EEST}
+ {559699200 7200 0 EET}
+ {575424000 10800 1 EEST}
+ {591148800 7200 0 EET}
+ {606873600 10800 1 EEST}
+ {622598400 7200 0 EET}
+ {638323200 10800 1 EEST}
+ {654652800 7200 0 EET}
+ {662680800 7200 0 EET}
+ {670370400 10800 1 EEST}
+ {686095200 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717544800 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748994400 7200 0 EET}
+ {757375200 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {796168800 10800 1 EEST}
+ {811890000 7200 0 EET}
+ {828223200 10800 1 EEST}
+ {846363600 7200 0 EET}
+ {852069600 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Budapest b/library/tzdata/Europe/Budapest
new file mode 100644
index 0000000..fd41acc
--- /dev/null
+++ b/library/tzdata/Europe/Budapest
@@ -0,0 +1,284 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Budapest) {
+ {-9223372036854775808 4580 0 LMT}
+ {-2500938980 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1640998800 3600 0 CET}
+ {-1633212000 7200 1 CEST}
+ {-1617577200 3600 0 CET}
+ {-1600466400 7200 1 CEST}
+ {-1587250800 3600 0 CET}
+ {-1569708000 7200 1 CEST}
+ {-1554332400 3600 0 CET}
+ {-906937200 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-788922000 3600 0 CET}
+ {-778471200 7200 1 CEST}
+ {-762487200 3600 0 CET}
+ {-749689200 7200 1 CEST}
+ {-733359600 3600 0 CET}
+ {-717634800 7200 1 CEST}
+ {-701910000 3600 0 CET}
+ {-686185200 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {-654130800 7200 1 CEST}
+ {-639010800 3600 0 CET}
+ {-621990000 7200 1 CEST}
+ {-605660400 3600 0 CET}
+ {-492656400 7200 1 CEST}
+ {-481168800 3600 0 CET}
+ {-461120400 7200 1 CEST}
+ {-449632800 3600 0 CET}
+ {-428547600 7200 1 CEST}
+ {-418269600 3600 0 CET}
+ {-397094400 7200 1 CEST}
+ {-386809200 3600 0 CET}
+ {323827200 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Busingen b/library/tzdata/Europe/Busingen
new file mode 100644
index 0000000..62abc29
--- /dev/null
+++ b/library/tzdata/Europe/Busingen
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Zurich)]} {
+ LoadTimeZoneFile Europe/Zurich
+}
+set TZData(:Europe/Busingen) $TZData(:Europe/Zurich)
diff --git a/library/tzdata/Europe/Chisinau b/library/tzdata/Europe/Chisinau
new file mode 100644
index 0000000..4ef466b
--- /dev/null
+++ b/library/tzdata/Europe/Chisinau
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Chisinau) {
+ {-9223372036854775808 6920 0 LMT}
+ {-2840147720 6900 0 CMT}
+ {-1637114100 6264 0 BMT}
+ {-1213148664 7200 0 EET}
+ {-1187056800 10800 1 EEST}
+ {-1175479200 7200 0 EET}
+ {-1159754400 10800 1 EEST}
+ {-1144029600 7200 0 EET}
+ {-1127700000 10800 1 EEST}
+ {-1111975200 7200 0 EET}
+ {-1096250400 10800 1 EEST}
+ {-1080525600 7200 0 EET}
+ {-1064800800 10800 1 EEST}
+ {-1049076000 7200 0 EET}
+ {-1033351200 10800 1 EEST}
+ {-1017626400 7200 0 EET}
+ {-1001901600 10800 1 EEST}
+ {-986176800 7200 0 EET}
+ {-970452000 10800 1 EEST}
+ {-954727200 7200 0 EET}
+ {-927165600 10800 1 EEST}
+ {-898138800 7200 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-800154000 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {631141200 10800 0 MSK}
+ {641941200 7200 0 EET}
+ {662680800 7200 0 EEMMTT}
+ {670377600 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {694216800 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {796168800 10800 1 EEST}
+ {811890000 7200 0 EET}
+ {828223200 10800 1 EEST}
+ {846363600 7200 0 EET}
+ {852069600 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Copenhagen b/library/tzdata/Europe/Copenhagen
new file mode 100644
index 0000000..c747e58
--- /dev/null
+++ b/library/tzdata/Europe/Copenhagen
@@ -0,0 +1,264 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Copenhagen) {
+ {-9223372036854775808 3020 0 LMT}
+ {-2524524620 3020 0 CMT}
+ {-2398294220 3600 0 CET}
+ {-1692496800 7200 1 CEST}
+ {-1680490800 3600 0 CET}
+ {-935110800 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 0 CEST}
+ {-769388400 3600 0 CET}
+ {-747010800 7200 1 CEST}
+ {-736383600 3600 0 CET}
+ {-715215600 7200 1 CEST}
+ {-706748400 3600 0 CET}
+ {-683161200 7200 1 CEST}
+ {-675298800 3600 0 CET}
+ {315529200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Dublin b/library/tzdata/Europe/Dublin
new file mode 100644
index 0000000..4b43bc0
--- /dev/null
+++ b/library/tzdata/Europe/Dublin
@@ -0,0 +1,359 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Dublin) {
+ {-9223372036854775808 -1500 0 LMT}
+ {-2821649700 -1521 0 DMT}
+ {-1691962479 2079 1 IST}
+ {-1680471279 0 0 GMT}
+ {-1664143200 3600 1 BST}
+ {-1650146400 0 0 GMT}
+ {-1633903200 3600 1 BST}
+ {-1617487200 0 0 GMT}
+ {-1601848800 3600 1 BST}
+ {-1586037600 0 0 GMT}
+ {-1570399200 3600 1 BST}
+ {-1552168800 0 0 GMT}
+ {-1538344800 3600 1 BST}
+ {-1522533600 0 0 GMT}
+ {-1517011200 0 0 IST}
+ {-1507500000 3600 1 IST}
+ {-1490565600 0 0 IST}
+ {-1473631200 3600 1 IST}
+ {-1460930400 0 0 IST}
+ {-1442786400 3600 1 IST}
+ {-1428876000 0 0 IST}
+ {-1410732000 3600 1 IST}
+ {-1396216800 0 0 IST}
+ {-1379282400 3600 1 IST}
+ {-1364767200 0 0 IST}
+ {-1348437600 3600 1 IST}
+ {-1333317600 0 0 IST}
+ {-1315778400 3600 1 IST}
+ {-1301263200 0 0 IST}
+ {-1284328800 3600 1 IST}
+ {-1269813600 0 0 IST}
+ {-1253484000 3600 1 IST}
+ {-1238364000 0 0 IST}
+ {-1221429600 3600 1 IST}
+ {-1206914400 0 0 IST}
+ {-1189980000 3600 1 IST}
+ {-1175464800 0 0 IST}
+ {-1159135200 3600 1 IST}
+ {-1143410400 0 0 IST}
+ {-1126476000 3600 1 IST}
+ {-1111960800 0 0 IST}
+ {-1095631200 3600 1 IST}
+ {-1080511200 0 0 IST}
+ {-1063576800 3600 1 IST}
+ {-1049061600 0 0 IST}
+ {-1032127200 3600 1 IST}
+ {-1017612000 0 0 IST}
+ {-1001282400 3600 1 IST}
+ {-986162400 0 0 IST}
+ {-969228000 3600 1 IST}
+ {-950479200 0 0 IST}
+ {-942015600 3600 1 IST}
+ {-733359600 0 0 GMT}
+ {-719445600 3600 1 IST}
+ {-699490800 0 0 GMT}
+ {-684972000 3600 0 IST}
+ {-668037600 0 0 IST}
+ {-654732000 3600 1 IST}
+ {-636588000 0 0 IST}
+ {-622072800 3600 1 IST}
+ {-605743200 0 0 IST}
+ {-590623200 3600 1 IST}
+ {-574293600 0 0 IST}
+ {-558568800 3600 1 IST}
+ {-542239200 0 0 IST}
+ {-527119200 3600 1 IST}
+ {-512604000 0 0 IST}
+ {-496274400 3600 1 IST}
+ {-481154400 0 0 IST}
+ {-464220000 3600 1 IST}
+ {-449704800 0 0 IST}
+ {-432165600 3600 1 IST}
+ {-417650400 0 0 IST}
+ {-401320800 3600 1 IST}
+ {-386200800 0 0 IST}
+ {-369266400 3600 1 IST}
+ {-354751200 0 0 IST}
+ {-337816800 3600 1 IST}
+ {-323301600 0 0 IST}
+ {-306972000 3600 1 IST}
+ {-291852000 0 0 IST}
+ {-276732000 3600 1 IST}
+ {-257983200 0 0 IST}
+ {-245282400 3600 1 IST}
+ {-226533600 0 0 IST}
+ {-213228000 3600 1 IST}
+ {-195084000 0 0 IST}
+ {-182383200 3600 1 IST}
+ {-163634400 0 0 IST}
+ {-150933600 3600 1 IST}
+ {-132184800 0 0 IST}
+ {-119484000 3600 1 IST}
+ {-100735200 0 0 IST}
+ {-88034400 3600 1 IST}
+ {-68680800 0 0 IST}
+ {-59004000 3600 1 IST}
+ {-37238400 3600 0 IST}
+ {57722400 0 0 IST}
+ {69818400 3600 1 IST}
+ {89172000 0 0 IST}
+ {101268000 3600 1 IST}
+ {120621600 0 0 IST}
+ {132717600 3600 1 IST}
+ {152071200 0 0 IST}
+ {164167200 3600 1 IST}
+ {183520800 0 0 IST}
+ {196221600 3600 1 IST}
+ {214970400 0 0 IST}
+ {227671200 3600 1 IST}
+ {246420000 0 0 IST}
+ {259120800 3600 1 IST}
+ {278474400 0 0 IST}
+ {290570400 3600 1 IST}
+ {309924000 0 0 IST}
+ {322020000 3600 1 IST}
+ {341373600 0 0 IST}
+ {354675600 3600 1 IST}
+ {372819600 0 0 IST}
+ {386125200 3600 1 IST}
+ {404269200 0 0 IST}
+ {417574800 3600 1 IST}
+ {435718800 0 0 IST}
+ {449024400 3600 1 IST}
+ {467773200 0 0 IST}
+ {481078800 3600 1 IST}
+ {499222800 0 0 IST}
+ {512528400 3600 1 IST}
+ {530672400 0 0 IST}
+ {543978000 3600 1 IST}
+ {562122000 0 0 IST}
+ {575427600 3600 1 IST}
+ {593571600 0 0 IST}
+ {606877200 3600 1 IST}
+ {625626000 0 0 IST}
+ {638326800 3600 1 IST}
+ {657075600 0 0 IST}
+ {670381200 3600 1 IST}
+ {688525200 0 0 IST}
+ {701830800 3600 1 IST}
+ {719974800 0 0 IST}
+ {733280400 3600 1 IST}
+ {751424400 0 0 IST}
+ {764730000 3600 1 IST}
+ {782874000 0 0 IST}
+ {796179600 3600 1 IST}
+ {814323600 0 0 IST}
+ {820454400 0 0 GMT}
+ {828234000 3600 1 IST}
+ {846378000 0 0 GMT}
+ {859683600 3600 1 IST}
+ {877827600 0 0 GMT}
+ {891133200 3600 1 IST}
+ {909277200 0 0 GMT}
+ {922582800 3600 1 IST}
+ {941331600 0 0 GMT}
+ {954032400 3600 1 IST}
+ {972781200 0 0 GMT}
+ {985482000 3600 1 IST}
+ {1004230800 0 0 GMT}
+ {1017536400 3600 1 IST}
+ {1035680400 0 0 GMT}
+ {1048986000 3600 1 IST}
+ {1067130000 0 0 GMT}
+ {1080435600 3600 1 IST}
+ {1099184400 0 0 GMT}
+ {1111885200 3600 1 IST}
+ {1130634000 0 0 GMT}
+ {1143334800 3600 1 IST}
+ {1162083600 0 0 GMT}
+ {1174784400 3600 1 IST}
+ {1193533200 0 0 GMT}
+ {1206838800 3600 1 IST}
+ {1224982800 0 0 GMT}
+ {1238288400 3600 1 IST}
+ {1256432400 0 0 GMT}
+ {1269738000 3600 1 IST}
+ {1288486800 0 0 GMT}
+ {1301187600 3600 1 IST}
+ {1319936400 0 0 GMT}
+ {1332637200 3600 1 IST}
+ {1351386000 0 0 GMT}
+ {1364691600 3600 1 IST}
+ {1382835600 0 0 GMT}
+ {1396141200 3600 1 IST}
+ {1414285200 0 0 GMT}
+ {1427590800 3600 1 IST}
+ {1445734800 0 0 GMT}
+ {1459040400 3600 1 IST}
+ {1477789200 0 0 GMT}
+ {1490490000 3600 1 IST}
+ {1509238800 0 0 GMT}
+ {1521939600 3600 1 IST}
+ {1540688400 0 0 GMT}
+ {1553994000 3600 1 IST}
+ {1572138000 0 0 GMT}
+ {1585443600 3600 1 IST}
+ {1603587600 0 0 GMT}
+ {1616893200 3600 1 IST}
+ {1635642000 0 0 GMT}
+ {1648342800 3600 1 IST}
+ {1667091600 0 0 GMT}
+ {1679792400 3600 1 IST}
+ {1698541200 0 0 GMT}
+ {1711846800 3600 1 IST}
+ {1729990800 0 0 GMT}
+ {1743296400 3600 1 IST}
+ {1761440400 0 0 GMT}
+ {1774746000 3600 1 IST}
+ {1792890000 0 0 GMT}
+ {1806195600 3600 1 IST}
+ {1824944400 0 0 GMT}
+ {1837645200 3600 1 IST}
+ {1856394000 0 0 GMT}
+ {1869094800 3600 1 IST}
+ {1887843600 0 0 GMT}
+ {1901149200 3600 1 IST}
+ {1919293200 0 0 GMT}
+ {1932598800 3600 1 IST}
+ {1950742800 0 0 GMT}
+ {1964048400 3600 1 IST}
+ {1982797200 0 0 GMT}
+ {1995498000 3600 1 IST}
+ {2014246800 0 0 GMT}
+ {2026947600 3600 1 IST}
+ {2045696400 0 0 GMT}
+ {2058397200 3600 1 IST}
+ {2077146000 0 0 GMT}
+ {2090451600 3600 1 IST}
+ {2108595600 0 0 GMT}
+ {2121901200 3600 1 IST}
+ {2140045200 0 0 GMT}
+ {2153350800 3600 1 IST}
+ {2172099600 0 0 GMT}
+ {2184800400 3600 1 IST}
+ {2203549200 0 0 GMT}
+ {2216250000 3600 1 IST}
+ {2234998800 0 0 GMT}
+ {2248304400 3600 1 IST}
+ {2266448400 0 0 GMT}
+ {2279754000 3600 1 IST}
+ {2297898000 0 0 GMT}
+ {2311203600 3600 1 IST}
+ {2329347600 0 0 GMT}
+ {2342653200 3600 1 IST}
+ {2361402000 0 0 GMT}
+ {2374102800 3600 1 IST}
+ {2392851600 0 0 GMT}
+ {2405552400 3600 1 IST}
+ {2424301200 0 0 GMT}
+ {2437606800 3600 1 IST}
+ {2455750800 0 0 GMT}
+ {2469056400 3600 1 IST}
+ {2487200400 0 0 GMT}
+ {2500506000 3600 1 IST}
+ {2519254800 0 0 GMT}
+ {2531955600 3600 1 IST}
+ {2550704400 0 0 GMT}
+ {2563405200 3600 1 IST}
+ {2582154000 0 0 GMT}
+ {2595459600 3600 1 IST}
+ {2613603600 0 0 GMT}
+ {2626909200 3600 1 IST}
+ {2645053200 0 0 GMT}
+ {2658358800 3600 1 IST}
+ {2676502800 0 0 GMT}
+ {2689808400 3600 1 IST}
+ {2708557200 0 0 GMT}
+ {2721258000 3600 1 IST}
+ {2740006800 0 0 GMT}
+ {2752707600 3600 1 IST}
+ {2771456400 0 0 GMT}
+ {2784762000 3600 1 IST}
+ {2802906000 0 0 GMT}
+ {2816211600 3600 1 IST}
+ {2834355600 0 0 GMT}
+ {2847661200 3600 1 IST}
+ {2866410000 0 0 GMT}
+ {2879110800 3600 1 IST}
+ {2897859600 0 0 GMT}
+ {2910560400 3600 1 IST}
+ {2929309200 0 0 GMT}
+ {2942010000 3600 1 IST}
+ {2960758800 0 0 GMT}
+ {2974064400 3600 1 IST}
+ {2992208400 0 0 GMT}
+ {3005514000 3600 1 IST}
+ {3023658000 0 0 GMT}
+ {3036963600 3600 1 IST}
+ {3055712400 0 0 GMT}
+ {3068413200 3600 1 IST}
+ {3087162000 0 0 GMT}
+ {3099862800 3600 1 IST}
+ {3118611600 0 0 GMT}
+ {3131917200 3600 1 IST}
+ {3150061200 0 0 GMT}
+ {3163366800 3600 1 IST}
+ {3181510800 0 0 GMT}
+ {3194816400 3600 1 IST}
+ {3212960400 0 0 GMT}
+ {3226266000 3600 1 IST}
+ {3245014800 0 0 GMT}
+ {3257715600 3600 1 IST}
+ {3276464400 0 0 GMT}
+ {3289165200 3600 1 IST}
+ {3307914000 0 0 GMT}
+ {3321219600 3600 1 IST}
+ {3339363600 0 0 GMT}
+ {3352669200 3600 1 IST}
+ {3370813200 0 0 GMT}
+ {3384118800 3600 1 IST}
+ {3402867600 0 0 GMT}
+ {3415568400 3600 1 IST}
+ {3434317200 0 0 GMT}
+ {3447018000 3600 1 IST}
+ {3465766800 0 0 GMT}
+ {3479072400 3600 1 IST}
+ {3497216400 0 0 GMT}
+ {3510522000 3600 1 IST}
+ {3528666000 0 0 GMT}
+ {3541971600 3600 1 IST}
+ {3560115600 0 0 GMT}
+ {3573421200 3600 1 IST}
+ {3592170000 0 0 GMT}
+ {3604870800 3600 1 IST}
+ {3623619600 0 0 GMT}
+ {3636320400 3600 1 IST}
+ {3655069200 0 0 GMT}
+ {3668374800 3600 1 IST}
+ {3686518800 0 0 GMT}
+ {3699824400 3600 1 IST}
+ {3717968400 0 0 GMT}
+ {3731274000 3600 1 IST}
+ {3750022800 0 0 GMT}
+ {3762723600 3600 1 IST}
+ {3781472400 0 0 GMT}
+ {3794173200 3600 1 IST}
+ {3812922000 0 0 GMT}
+ {3825622800 3600 1 IST}
+ {3844371600 0 0 GMT}
+ {3857677200 3600 1 IST}
+ {3875821200 0 0 GMT}
+ {3889126800 3600 1 IST}
+ {3907270800 0 0 GMT}
+ {3920576400 3600 1 IST}
+ {3939325200 0 0 GMT}
+ {3952026000 3600 1 IST}
+ {3970774800 0 0 GMT}
+ {3983475600 3600 1 IST}
+ {4002224400 0 0 GMT}
+ {4015530000 3600 1 IST}
+ {4033674000 0 0 GMT}
+ {4046979600 3600 1 IST}
+ {4065123600 0 0 GMT}
+ {4078429200 3600 1 IST}
+ {4096573200 0 0 GMT}
+}
diff --git a/library/tzdata/Europe/Gibraltar b/library/tzdata/Europe/Gibraltar
new file mode 100644
index 0000000..de29c03
--- /dev/null
+++ b/library/tzdata/Europe/Gibraltar
@@ -0,0 +1,328 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Gibraltar) {
+ {-9223372036854775808 -1284 0 LMT}
+ {-2821649916 0 0 GMT}
+ {-1691964000 3600 1 BST}
+ {-1680472800 0 0 GMT}
+ {-1664143200 3600 1 BST}
+ {-1650146400 0 0 GMT}
+ {-1633903200 3600 1 BST}
+ {-1617487200 0 0 GMT}
+ {-1601848800 3600 1 BST}
+ {-1586037600 0 0 GMT}
+ {-1570399200 3600 1 BST}
+ {-1552168800 0 0 GMT}
+ {-1538344800 3600 1 BST}
+ {-1522533600 0 0 GMT}
+ {-1507500000 3600 1 BST}
+ {-1490565600 0 0 GMT}
+ {-1473631200 3600 1 BST}
+ {-1460930400 0 0 GMT}
+ {-1442786400 3600 1 BST}
+ {-1428876000 0 0 GMT}
+ {-1410732000 3600 1 BST}
+ {-1396216800 0 0 GMT}
+ {-1379282400 3600 1 BST}
+ {-1364767200 0 0 GMT}
+ {-1348437600 3600 1 BST}
+ {-1333317600 0 0 GMT}
+ {-1315778400 3600 1 BST}
+ {-1301263200 0 0 GMT}
+ {-1284328800 3600 1 BST}
+ {-1269813600 0 0 GMT}
+ {-1253484000 3600 1 BST}
+ {-1238364000 0 0 GMT}
+ {-1221429600 3600 1 BST}
+ {-1206914400 0 0 GMT}
+ {-1189980000 3600 1 BST}
+ {-1175464800 0 0 GMT}
+ {-1159135200 3600 1 BST}
+ {-1143410400 0 0 GMT}
+ {-1126476000 3600 1 BST}
+ {-1111960800 0 0 GMT}
+ {-1095631200 3600 1 BST}
+ {-1080511200 0 0 GMT}
+ {-1063576800 3600 1 BST}
+ {-1049061600 0 0 GMT}
+ {-1032127200 3600 1 BST}
+ {-1017612000 0 0 GMT}
+ {-1001282400 3600 1 BST}
+ {-986162400 0 0 GMT}
+ {-969228000 3600 1 BST}
+ {-950479200 0 0 GMT}
+ {-942012000 3600 1 BST}
+ {-904518000 7200 1 BDST}
+ {-896050800 3600 1 BST}
+ {-875487600 7200 1 BDST}
+ {-864601200 3600 1 BST}
+ {-844038000 7200 1 BDST}
+ {-832546800 3600 1 BST}
+ {-812588400 7200 1 BDST}
+ {-798073200 3600 1 BST}
+ {-781052400 7200 1 BDST}
+ {-772066800 3600 1 BST}
+ {-764805600 0 0 GMT}
+ {-748476000 3600 1 BST}
+ {-733356000 0 0 GMT}
+ {-719445600 3600 1 BST}
+ {-717030000 7200 1 BDST}
+ {-706748400 3600 1 BST}
+ {-699487200 0 0 GMT}
+ {-687996000 3600 1 BST}
+ {-668037600 0 0 GMT}
+ {-654732000 3600 1 BST}
+ {-636588000 0 0 GMT}
+ {-622072800 3600 1 BST}
+ {-605743200 0 0 GMT}
+ {-590623200 3600 1 BST}
+ {-574293600 0 0 GMT}
+ {-558568800 3600 1 BST}
+ {-542239200 0 0 GMT}
+ {-527119200 3600 1 BST}
+ {-512604000 0 0 GMT}
+ {-496274400 3600 1 BST}
+ {-481154400 0 0 GMT}
+ {-464220000 3600 1 BST}
+ {-449704800 0 0 GMT}
+ {-432165600 3600 1 BST}
+ {-417650400 0 0 GMT}
+ {-401320800 3600 0 CET}
+ {378687600 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Guernsey b/library/tzdata/Europe/Guernsey
new file mode 100644
index 0000000..4372c64
--- /dev/null
+++ b/library/tzdata/Europe/Guernsey
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/London)]} {
+ LoadTimeZoneFile Europe/London
+}
+set TZData(:Europe/Guernsey) $TZData(:Europe/London)
diff --git a/library/tzdata/Europe/Helsinki b/library/tzdata/Europe/Helsinki
new file mode 100644
index 0000000..3abf790
--- /dev/null
+++ b/library/tzdata/Europe/Helsinki
@@ -0,0 +1,248 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Helsinki) {
+ {-9223372036854775808 5992 0 LMT}
+ {-2890258792 5992 0 HMT}
+ {-1535938792 7200 0 EET}
+ {-875671200 10800 1 EEST}
+ {-859863600 7200 0 EET}
+ {354672000 10800 1 EEST}
+ {370396800 7200 0 EET}
+ {386121600 10800 1 EEST}
+ {401846400 7200 0 EET}
+ {410220000 7200 0 EET}
+ {417574800 10800 1 EEST}
+ {433299600 7200 0 EET}
+ {449024400 10800 1 EEST}
+ {465354000 7200 0 EET}
+ {481078800 10800 1 EEST}
+ {496803600 7200 0 EET}
+ {512528400 10800 1 EEST}
+ {528253200 7200 0 EET}
+ {543978000 10800 1 EEST}
+ {559702800 7200 0 EET}
+ {575427600 10800 1 EEST}
+ {591152400 7200 0 EET}
+ {606877200 10800 1 EEST}
+ {622602000 7200 0 EET}
+ {638326800 10800 1 EEST}
+ {654656400 7200 0 EET}
+ {670381200 10800 1 EEST}
+ {686106000 7200 0 EET}
+ {701830800 10800 1 EEST}
+ {717555600 7200 0 EET}
+ {733280400 10800 1 EEST}
+ {749005200 7200 0 EET}
+ {764730000 10800 1 EEST}
+ {780454800 7200 0 EET}
+ {796179600 10800 1 EEST}
+ {811904400 7200 0 EET}
+ {828234000 10800 1 EEST}
+ {846378000 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Isle_of_Man b/library/tzdata/Europe/Isle_of_Man
new file mode 100644
index 0000000..870ac45
--- /dev/null
+++ b/library/tzdata/Europe/Isle_of_Man
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/London)]} {
+ LoadTimeZoneFile Europe/London
+}
+set TZData(:Europe/Isle_of_Man) $TZData(:Europe/London)
diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul
new file mode 100644
index 0000000..7737d75
--- /dev/null
+++ b/library/tzdata/Europe/Istanbul
@@ -0,0 +1,304 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Istanbul) {
+ {-9223372036854775808 6952 0 LMT}
+ {-2840147752 7016 0 IMT}
+ {-1869875816 7200 0 EET}
+ {-1693706400 10800 1 EEST}
+ {-1680490800 7200 0 EET}
+ {-1570413600 10800 1 EEST}
+ {-1552186800 7200 0 EET}
+ {-1538359200 10800 1 EEST}
+ {-1522551600 7200 0 EET}
+ {-1507514400 10800 1 EEST}
+ {-1490583600 7200 0 EET}
+ {-1440208800 10800 1 EEST}
+ {-1428030000 7200 0 EET}
+ {-1409709600 10800 1 EEST}
+ {-1396494000 7200 0 EET}
+ {-931140000 10800 1 EEST}
+ {-922762800 7200 0 EET}
+ {-917834400 10800 1 EEST}
+ {-892436400 7200 0 EET}
+ {-875844000 10800 1 EEST}
+ {-857358000 7200 0 EET}
+ {-781063200 10800 1 EEST}
+ {-764737200 7200 0 EET}
+ {-744343200 10800 1 EEST}
+ {-733806000 7200 0 EET}
+ {-716436000 10800 1 EEST}
+ {-701924400 7200 0 EET}
+ {-684986400 10800 1 EEST}
+ {-670474800 7200 0 EET}
+ {-654141600 10800 1 EEST}
+ {-639025200 7200 0 EET}
+ {-621828000 10800 1 EEST}
+ {-606970800 7200 0 EET}
+ {-590032800 10800 1 EEST}
+ {-575434800 7200 0 EET}
+ {-235620000 10800 1 EEST}
+ {-228279600 7200 0 EET}
+ {-177732000 10800 1 EEST}
+ {-165726000 7200 0 EET}
+ {10533600 10800 1 EEST}
+ {23835600 7200 0 EET}
+ {41983200 10800 1 EEST}
+ {55285200 7200 0 EET}
+ {74037600 10800 1 EEST}
+ {87339600 7200 0 EET}
+ {107910000 10800 1 EEST}
+ {121219200 7200 0 EET}
+ {133920000 10800 1 EEST}
+ {152676000 7200 0 EET}
+ {165362400 10800 1 EEST}
+ {183502800 7200 0 EET}
+ {202428000 10800 1 EEST}
+ {215557200 7200 0 EET}
+ {228866400 10800 1 EEST}
+ {245797200 7200 0 EET}
+ {260316000 10800 1 EEST}
+ {277246800 14400 0 TRST}
+ {291769200 14400 1 TRST}
+ {308779200 10800 0 TRT}
+ {323827200 14400 1 TRST}
+ {340228800 10800 0 TRT}
+ {354672000 14400 1 TRST}
+ {371678400 10800 0 TRT}
+ {386121600 14400 1 TRST}
+ {403128000 10800 0 TRT}
+ {428446800 14400 1 TRST}
+ {433886400 10800 0 TRT}
+ {482792400 7200 0 EET}
+ {482796000 10800 1 EEST}
+ {496702800 7200 0 EET}
+ {512524800 10800 1 EEST}
+ {528249600 7200 0 EET}
+ {543974400 10800 1 EEST}
+ {559699200 7200 0 EET}
+ {575424000 10800 1 EEST}
+ {591148800 7200 0 EET}
+ {606873600 10800 1 EEST}
+ {622598400 7200 0 EET}
+ {638323200 10800 1 EEST}
+ {654652800 7200 0 EET}
+ {670374000 10800 1 EEST}
+ {686098800 7200 0 EET}
+ {701823600 10800 1 EEST}
+ {717548400 7200 0 EET}
+ {733273200 10800 1 EEST}
+ {748998000 7200 0 EET}
+ {764722800 10800 1 EEST}
+ {780447600 7200 0 EET}
+ {796172400 10800 1 EEST}
+ {811897200 7200 0 EET}
+ {828226800 10800 1 EEST}
+ {846370800 7200 0 EET}
+ {859676400 10800 1 EEST}
+ {877820400 7200 0 EET}
+ {891126000 10800 1 EEST}
+ {909270000 7200 0 EET}
+ {922575600 10800 1 EEST}
+ {941324400 7200 0 EET}
+ {954025200 10800 1 EEST}
+ {972774000 7200 0 EET}
+ {985474800 10800 1 EEST}
+ {1004223600 7200 0 EET}
+ {1017529200 10800 1 EEST}
+ {1035673200 7200 0 EET}
+ {1048978800 10800 1 EEST}
+ {1067122800 7200 0 EET}
+ {1080428400 10800 1 EEST}
+ {1099177200 7200 0 EET}
+ {1111878000 10800 1 EEST}
+ {1130626800 7200 0 EET}
+ {1143327600 10800 1 EEST}
+ {1162076400 7200 0 EET}
+ {1167602400 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 7200 0 EET}
+ {1301274000 10800 0 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Jersey b/library/tzdata/Europe/Jersey
new file mode 100644
index 0000000..e4da512
--- /dev/null
+++ b/library/tzdata/Europe/Jersey
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/London)]} {
+ LoadTimeZoneFile Europe/London
+}
+set TZData(:Europe/Jersey) $TZData(:Europe/London)
diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad
new file mode 100644
index 0000000..d5be459
--- /dev/null
+++ b/library/tzdata/Europe/Kaliningrad
@@ -0,0 +1,84 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Kaliningrad) {
+ {-9223372036854775808 4920 0 LMT}
+ {-2422056120 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-938905200 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-788922000 7200 0 CET}
+ {-778730400 10800 1 CEST}
+ {-762663600 7200 0 CET}
+ {-757389600 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {638319600 14400 1 MSD}
+ {654649200 10800 0 MSK}
+ {670374000 7200 0 EEMMTT}
+ {670377600 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {701816400 10800 1 EEST}
+ {717537600 7200 0 EET}
+ {733276800 10800 1 EEST}
+ {749001600 7200 0 EET}
+ {764726400 10800 1 EEST}
+ {780451200 7200 0 EET}
+ {796176000 10800 1 EEST}
+ {811900800 7200 0 EET}
+ {828230400 10800 1 EEST}
+ {846374400 7200 0 EET}
+ {859680000 10800 1 EEST}
+ {877824000 7200 0 EET}
+ {891129600 10800 1 EEST}
+ {909273600 7200 0 EET}
+ {922579200 10800 1 EEST}
+ {941328000 7200 0 EET}
+ {954028800 10800 1 EEST}
+ {972777600 7200 0 EET}
+ {985478400 10800 1 EEST}
+ {1004227200 7200 0 EET}
+ {1017532800 10800 1 EEST}
+ {1035676800 7200 0 EET}
+ {1048982400 10800 1 EEST}
+ {1067126400 7200 0 EET}
+ {1080432000 10800 1 EEST}
+ {1099180800 7200 0 EET}
+ {1111881600 10800 1 EEST}
+ {1130630400 7200 0 EET}
+ {1143331200 10800 1 EEST}
+ {1162080000 7200 0 EET}
+ {1174780800 10800 1 EEST}
+ {1193529600 7200 0 EET}
+ {1206835200 10800 1 EEST}
+ {1224979200 7200 0 EET}
+ {1238284800 10800 1 EEST}
+ {1256428800 7200 0 EET}
+ {1269734400 10800 1 EEST}
+ {1288483200 7200 0 EET}
+ {1301184000 10800 0 FET}
+}
diff --git a/library/tzdata/Europe/Kiev b/library/tzdata/Europe/Kiev
new file mode 100644
index 0000000..0206be7
--- /dev/null
+++ b/library/tzdata/Europe/Kiev
@@ -0,0 +1,251 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Kiev) {
+ {-9223372036854775808 7324 0 LMT}
+ {-2840148124 7324 0 KMT}
+ {-1441159324 7200 0 EET}
+ {-1247536800 10800 0 MSK}
+ {-892522800 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-825382800 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {631141200 10800 0 MSK}
+ {646786800 7200 0 EET}
+ {694216800 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {788911200 7200 0 EET}
+ {796179600 10800 1 EEST}
+ {811904400 7200 0 EET}
+ {828234000 10800 1 EEST}
+ {846378000 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Lisbon b/library/tzdata/Europe/Lisbon
new file mode 100644
index 0000000..79c688a
--- /dev/null
+++ b/library/tzdata/Europe/Lisbon
@@ -0,0 +1,351 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Lisbon) {
+ {-9223372036854775808 -2192 0 LMT}
+ {-2713908208 -2192 0 LMT}
+ {-1830381808 0 0 WET}
+ {-1689555600 3600 1 WEST}
+ {-1677801600 0 0 WET}
+ {-1667437200 3600 1 WEST}
+ {-1647738000 0 0 WET}
+ {-1635814800 3600 1 WEST}
+ {-1616202000 0 0 WET}
+ {-1604365200 3600 1 WEST}
+ {-1584666000 0 0 WET}
+ {-1572742800 3600 1 WEST}
+ {-1553043600 0 0 WET}
+ {-1541206800 3600 1 WEST}
+ {-1521507600 0 0 WET}
+ {-1442451600 3600 1 WEST}
+ {-1426813200 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364778000 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333328400 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301274000 0 0 WET}
+ {-1284339600 3600 1 WEST}
+ {-1269824400 0 0 WET}
+ {-1221440400 3600 1 WEST}
+ {-1206925200 0 0 WET}
+ {-1191200400 3600 1 WEST}
+ {-1175475600 0 0 WET}
+ {-1127696400 3600 1 WEST}
+ {-1111971600 0 0 WET}
+ {-1096851600 3600 1 WEST}
+ {-1080522000 0 0 WET}
+ {-1063587600 3600 1 WEST}
+ {-1049072400 0 0 WET}
+ {-1033347600 3600 1 WEST}
+ {-1017622800 0 0 WET}
+ {-1002502800 3600 1 WEST}
+ {-986173200 0 0 WET}
+ {-969238800 3600 1 WEST}
+ {-950490000 0 0 WET}
+ {-942022800 3600 1 WEST}
+ {-922669200 0 0 WET}
+ {-906944400 3600 1 WEST}
+ {-891133200 0 0 WET}
+ {-877309200 3600 1 WEST}
+ {-873684000 7200 1 WEMT}
+ {-864007200 3600 1 WEST}
+ {-857955600 0 0 WET}
+ {-845859600 3600 1 WEST}
+ {-842839200 7200 1 WEMT}
+ {-831348000 3600 1 WEST}
+ {-825901200 0 0 WET}
+ {-814410000 3600 1 WEST}
+ {-810784800 7200 1 WEMT}
+ {-799898400 3600 1 WEST}
+ {-794451600 0 0 WET}
+ {-782960400 3600 1 WEST}
+ {-779335200 7200 1 WEMT}
+ {-768448800 3600 1 WEST}
+ {-763002000 0 0 WET}
+ {-749091600 3600 1 WEST}
+ {-733366800 0 0 WET}
+ {-717631200 3600 1 WEST}
+ {-701906400 0 0 WET}
+ {-686181600 3600 1 WEST}
+ {-670456800 0 0 WET}
+ {-654732000 3600 1 WEST}
+ {-639007200 0 0 WET}
+ {-591832800 3600 1 WEST}
+ {-575503200 0 0 WET}
+ {-559778400 3600 1 WEST}
+ {-544053600 0 0 WET}
+ {-528328800 3600 1 WEST}
+ {-512604000 0 0 WET}
+ {-496879200 3600 1 WEST}
+ {-481154400 0 0 WET}
+ {-465429600 3600 1 WEST}
+ {-449704800 0 0 WET}
+ {-433980000 3600 1 WEST}
+ {-417650400 0 0 WET}
+ {-401925600 3600 1 WEST}
+ {-386200800 0 0 WET}
+ {-370476000 3600 1 WEST}
+ {-354751200 0 0 WET}
+ {-339026400 3600 1 WEST}
+ {-323301600 0 0 WET}
+ {-307576800 3600 1 WEST}
+ {-291852000 0 0 WET}
+ {-276127200 3600 1 WEST}
+ {-260402400 0 0 WET}
+ {-244677600 3600 1 WEST}
+ {-228348000 0 0 WET}
+ {-212623200 3600 1 WEST}
+ {-196898400 0 0 WET}
+ {-181173600 3600 1 WEST}
+ {-165448800 0 0 WET}
+ {-149724000 3600 1 WEST}
+ {-133999200 0 0 WET}
+ {-118274400 3600 0 CET}
+ {212544000 0 0 WET}
+ {228268800 3600 1 WEST}
+ {243993600 0 0 WET}
+ {260323200 3600 1 WEST}
+ {276048000 0 0 WET}
+ {291772800 3600 1 WEST}
+ {307501200 0 0 WET}
+ {323222400 3600 1 WEST}
+ {338950800 0 0 WET}
+ {354675600 3600 1 WEST}
+ {370400400 0 0 WET}
+ {386125200 3600 1 WEST}
+ {401850000 0 0 WET}
+ {417578400 3600 1 WEST}
+ {433299600 0 0 WET}
+ {449024400 3600 1 WEST}
+ {465354000 0 0 WET}
+ {481078800 3600 1 WEST}
+ {496803600 0 0 WET}
+ {512528400 3600 1 WEST}
+ {528253200 0 0 WET}
+ {543978000 3600 1 WEST}
+ {559702800 0 0 WET}
+ {575427600 3600 1 WEST}
+ {591152400 0 0 WET}
+ {606877200 3600 1 WEST}
+ {622602000 0 0 WET}
+ {638326800 3600 1 WEST}
+ {654656400 0 0 WET}
+ {670381200 3600 1 WEST}
+ {686106000 0 0 WET}
+ {701830800 3600 1 WEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 3600 0 WEST}
+ {846378000 0 0 WET}
+ {859683600 3600 1 WEST}
+ {877827600 0 0 WET}
+ {891133200 3600 1 WEST}
+ {909277200 0 0 WET}
+ {922582800 3600 1 WEST}
+ {941331600 0 0 WET}
+ {954032400 3600 1 WEST}
+ {972781200 0 0 WET}
+ {985482000 3600 1 WEST}
+ {1004230800 0 0 WET}
+ {1017536400 3600 1 WEST}
+ {1035680400 0 0 WET}
+ {1048986000 3600 1 WEST}
+ {1067130000 0 0 WET}
+ {1080435600 3600 1 WEST}
+ {1099184400 0 0 WET}
+ {1111885200 3600 1 WEST}
+ {1130634000 0 0 WET}
+ {1143334800 3600 1 WEST}
+ {1162083600 0 0 WET}
+ {1174784400 3600 1 WEST}
+ {1193533200 0 0 WET}
+ {1206838800 3600 1 WEST}
+ {1224982800 0 0 WET}
+ {1238288400 3600 1 WEST}
+ {1256432400 0 0 WET}
+ {1269738000 3600 1 WEST}
+ {1288486800 0 0 WET}
+ {1301187600 3600 1 WEST}
+ {1319936400 0 0 WET}
+ {1332637200 3600 1 WEST}
+ {1351386000 0 0 WET}
+ {1364691600 3600 1 WEST}
+ {1382835600 0 0 WET}
+ {1396141200 3600 1 WEST}
+ {1414285200 0 0 WET}
+ {1427590800 3600 1 WEST}
+ {1445734800 0 0 WET}
+ {1459040400 3600 1 WEST}
+ {1477789200 0 0 WET}
+ {1490490000 3600 1 WEST}
+ {1509238800 0 0 WET}
+ {1521939600 3600 1 WEST}
+ {1540688400 0 0 WET}
+ {1553994000 3600 1 WEST}
+ {1572138000 0 0 WET}
+ {1585443600 3600 1 WEST}
+ {1603587600 0 0 WET}
+ {1616893200 3600 1 WEST}
+ {1635642000 0 0 WET}
+ {1648342800 3600 1 WEST}
+ {1667091600 0 0 WET}
+ {1679792400 3600 1 WEST}
+ {1698541200 0 0 WET}
+ {1711846800 3600 1 WEST}
+ {1729990800 0 0 WET}
+ {1743296400 3600 1 WEST}
+ {1761440400 0 0 WET}
+ {1774746000 3600 1 WEST}
+ {1792890000 0 0 WET}
+ {1806195600 3600 1 WEST}
+ {1824944400 0 0 WET}
+ {1837645200 3600 1 WEST}
+ {1856394000 0 0 WET}
+ {1869094800 3600 1 WEST}
+ {1887843600 0 0 WET}
+ {1901149200 3600 1 WEST}
+ {1919293200 0 0 WET}
+ {1932598800 3600 1 WEST}
+ {1950742800 0 0 WET}
+ {1964048400 3600 1 WEST}
+ {1982797200 0 0 WET}
+ {1995498000 3600 1 WEST}
+ {2014246800 0 0 WET}
+ {2026947600 3600 1 WEST}
+ {2045696400 0 0 WET}
+ {2058397200 3600 1 WEST}
+ {2077146000 0 0 WET}
+ {2090451600 3600 1 WEST}
+ {2108595600 0 0 WET}
+ {2121901200 3600 1 WEST}
+ {2140045200 0 0 WET}
+ {2153350800 3600 1 WEST}
+ {2172099600 0 0 WET}
+ {2184800400 3600 1 WEST}
+ {2203549200 0 0 WET}
+ {2216250000 3600 1 WEST}
+ {2234998800 0 0 WET}
+ {2248304400 3600 1 WEST}
+ {2266448400 0 0 WET}
+ {2279754000 3600 1 WEST}
+ {2297898000 0 0 WET}
+ {2311203600 3600 1 WEST}
+ {2329347600 0 0 WET}
+ {2342653200 3600 1 WEST}
+ {2361402000 0 0 WET}
+ {2374102800 3600 1 WEST}
+ {2392851600 0 0 WET}
+ {2405552400 3600 1 WEST}
+ {2424301200 0 0 WET}
+ {2437606800 3600 1 WEST}
+ {2455750800 0 0 WET}
+ {2469056400 3600 1 WEST}
+ {2487200400 0 0 WET}
+ {2500506000 3600 1 WEST}
+ {2519254800 0 0 WET}
+ {2531955600 3600 1 WEST}
+ {2550704400 0 0 WET}
+ {2563405200 3600 1 WEST}
+ {2582154000 0 0 WET}
+ {2595459600 3600 1 WEST}
+ {2613603600 0 0 WET}
+ {2626909200 3600 1 WEST}
+ {2645053200 0 0 WET}
+ {2658358800 3600 1 WEST}
+ {2676502800 0 0 WET}
+ {2689808400 3600 1 WEST}
+ {2708557200 0 0 WET}
+ {2721258000 3600 1 WEST}
+ {2740006800 0 0 WET}
+ {2752707600 3600 1 WEST}
+ {2771456400 0 0 WET}
+ {2784762000 3600 1 WEST}
+ {2802906000 0 0 WET}
+ {2816211600 3600 1 WEST}
+ {2834355600 0 0 WET}
+ {2847661200 3600 1 WEST}
+ {2866410000 0 0 WET}
+ {2879110800 3600 1 WEST}
+ {2897859600 0 0 WET}
+ {2910560400 3600 1 WEST}
+ {2929309200 0 0 WET}
+ {2942010000 3600 1 WEST}
+ {2960758800 0 0 WET}
+ {2974064400 3600 1 WEST}
+ {2992208400 0 0 WET}
+ {3005514000 3600 1 WEST}
+ {3023658000 0 0 WET}
+ {3036963600 3600 1 WEST}
+ {3055712400 0 0 WET}
+ {3068413200 3600 1 WEST}
+ {3087162000 0 0 WET}
+ {3099862800 3600 1 WEST}
+ {3118611600 0 0 WET}
+ {3131917200 3600 1 WEST}
+ {3150061200 0 0 WET}
+ {3163366800 3600 1 WEST}
+ {3181510800 0 0 WET}
+ {3194816400 3600 1 WEST}
+ {3212960400 0 0 WET}
+ {3226266000 3600 1 WEST}
+ {3245014800 0 0 WET}
+ {3257715600 3600 1 WEST}
+ {3276464400 0 0 WET}
+ {3289165200 3600 1 WEST}
+ {3307914000 0 0 WET}
+ {3321219600 3600 1 WEST}
+ {3339363600 0 0 WET}
+ {3352669200 3600 1 WEST}
+ {3370813200 0 0 WET}
+ {3384118800 3600 1 WEST}
+ {3402867600 0 0 WET}
+ {3415568400 3600 1 WEST}
+ {3434317200 0 0 WET}
+ {3447018000 3600 1 WEST}
+ {3465766800 0 0 WET}
+ {3479072400 3600 1 WEST}
+ {3497216400 0 0 WET}
+ {3510522000 3600 1 WEST}
+ {3528666000 0 0 WET}
+ {3541971600 3600 1 WEST}
+ {3560115600 0 0 WET}
+ {3573421200 3600 1 WEST}
+ {3592170000 0 0 WET}
+ {3604870800 3600 1 WEST}
+ {3623619600 0 0 WET}
+ {3636320400 3600 1 WEST}
+ {3655069200 0 0 WET}
+ {3668374800 3600 1 WEST}
+ {3686518800 0 0 WET}
+ {3699824400 3600 1 WEST}
+ {3717968400 0 0 WET}
+ {3731274000 3600 1 WEST}
+ {3750022800 0 0 WET}
+ {3762723600 3600 1 WEST}
+ {3781472400 0 0 WET}
+ {3794173200 3600 1 WEST}
+ {3812922000 0 0 WET}
+ {3825622800 3600 1 WEST}
+ {3844371600 0 0 WET}
+ {3857677200 3600 1 WEST}
+ {3875821200 0 0 WET}
+ {3889126800 3600 1 WEST}
+ {3907270800 0 0 WET}
+ {3920576400 3600 1 WEST}
+ {3939325200 0 0 WET}
+ {3952026000 3600 1 WEST}
+ {3970774800 0 0 WET}
+ {3983475600 3600 1 WEST}
+ {4002224400 0 0 WET}
+ {4015530000 3600 1 WEST}
+ {4033674000 0 0 WET}
+ {4046979600 3600 1 WEST}
+ {4065123600 0 0 WET}
+ {4078429200 3600 1 WEST}
+ {4096573200 0 0 WET}
+}
diff --git a/library/tzdata/Europe/Ljubljana b/library/tzdata/Europe/Ljubljana
new file mode 100644
index 0000000..42c7df4
--- /dev/null
+++ b/library/tzdata/Europe/Ljubljana
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Belgrade)]} {
+ LoadTimeZoneFile Europe/Belgrade
+}
+set TZData(:Europe/Ljubljana) $TZData(:Europe/Belgrade)
diff --git a/library/tzdata/Europe/London b/library/tzdata/Europe/London
new file mode 100644
index 0000000..2014e00
--- /dev/null
+++ b/library/tzdata/Europe/London
@@ -0,0 +1,372 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/London) {
+ {-9223372036854775808 -75 0 LMT}
+ {-3852662325 0 0 GMT}
+ {-1691964000 3600 1 BST}
+ {-1680472800 0 0 GMT}
+ {-1664143200 3600 1 BST}
+ {-1650146400 0 0 GMT}
+ {-1633903200 3600 1 BST}
+ {-1617487200 0 0 GMT}
+ {-1601848800 3600 1 BST}
+ {-1586037600 0 0 GMT}
+ {-1570399200 3600 1 BST}
+ {-1552168800 0 0 GMT}
+ {-1538344800 3600 1 BST}
+ {-1522533600 0 0 GMT}
+ {-1507500000 3600 1 BST}
+ {-1490565600 0 0 GMT}
+ {-1473631200 3600 1 BST}
+ {-1460930400 0 0 GMT}
+ {-1442786400 3600 1 BST}
+ {-1428876000 0 0 GMT}
+ {-1410732000 3600 1 BST}
+ {-1396216800 0 0 GMT}
+ {-1379282400 3600 1 BST}
+ {-1364767200 0 0 GMT}
+ {-1348437600 3600 1 BST}
+ {-1333317600 0 0 GMT}
+ {-1315778400 3600 1 BST}
+ {-1301263200 0 0 GMT}
+ {-1284328800 3600 1 BST}
+ {-1269813600 0 0 GMT}
+ {-1253484000 3600 1 BST}
+ {-1238364000 0 0 GMT}
+ {-1221429600 3600 1 BST}
+ {-1206914400 0 0 GMT}
+ {-1189980000 3600 1 BST}
+ {-1175464800 0 0 GMT}
+ {-1159135200 3600 1 BST}
+ {-1143410400 0 0 GMT}
+ {-1126476000 3600 1 BST}
+ {-1111960800 0 0 GMT}
+ {-1095631200 3600 1 BST}
+ {-1080511200 0 0 GMT}
+ {-1063576800 3600 1 BST}
+ {-1049061600 0 0 GMT}
+ {-1032127200 3600 1 BST}
+ {-1017612000 0 0 GMT}
+ {-1001282400 3600 1 BST}
+ {-986162400 0 0 GMT}
+ {-969228000 3600 1 BST}
+ {-950479200 0 0 GMT}
+ {-942012000 3600 1 BST}
+ {-904518000 7200 1 BDST}
+ {-896050800 3600 1 BST}
+ {-875487600 7200 1 BDST}
+ {-864601200 3600 1 BST}
+ {-844038000 7200 1 BDST}
+ {-832546800 3600 1 BST}
+ {-812588400 7200 1 BDST}
+ {-798073200 3600 1 BST}
+ {-781052400 7200 1 BDST}
+ {-772066800 3600 1 BST}
+ {-764805600 0 0 GMT}
+ {-748476000 3600 1 BST}
+ {-733356000 0 0 GMT}
+ {-719445600 3600 1 BST}
+ {-717030000 7200 1 BDST}
+ {-706748400 3600 1 BST}
+ {-699487200 0 0 GMT}
+ {-687996000 3600 1 BST}
+ {-668037600 0 0 GMT}
+ {-654732000 3600 1 BST}
+ {-636588000 0 0 GMT}
+ {-622072800 3600 1 BST}
+ {-605743200 0 0 GMT}
+ {-590623200 3600 1 BST}
+ {-574293600 0 0 GMT}
+ {-558568800 3600 1 BST}
+ {-542239200 0 0 GMT}
+ {-527119200 3600 1 BST}
+ {-512604000 0 0 GMT}
+ {-496274400 3600 1 BST}
+ {-481154400 0 0 GMT}
+ {-464220000 3600 1 BST}
+ {-449704800 0 0 GMT}
+ {-432165600 3600 1 BST}
+ {-417650400 0 0 GMT}
+ {-401320800 3600 1 BST}
+ {-386200800 0 0 GMT}
+ {-369266400 3600 1 BST}
+ {-354751200 0 0 GMT}
+ {-337816800 3600 1 BST}
+ {-323301600 0 0 GMT}
+ {-306972000 3600 1 BST}
+ {-291852000 0 0 GMT}
+ {-276732000 3600 1 BST}
+ {-257983200 0 0 GMT}
+ {-245282400 3600 1 BST}
+ {-226533600 0 0 GMT}
+ {-213228000 3600 1 BST}
+ {-195084000 0 0 GMT}
+ {-182383200 3600 1 BST}
+ {-163634400 0 0 GMT}
+ {-150933600 3600 1 BST}
+ {-132184800 0 0 GMT}
+ {-119484000 3600 1 BST}
+ {-100735200 0 0 GMT}
+ {-88034400 3600 1 BST}
+ {-68680800 0 0 GMT}
+ {-59004000 3600 1 BST}
+ {-37238400 3600 0 BST}
+ {57722400 0 0 GMT}
+ {69818400 3600 1 BST}
+ {89172000 0 0 GMT}
+ {101268000 3600 1 BST}
+ {120621600 0 0 GMT}
+ {132717600 3600 1 BST}
+ {152071200 0 0 GMT}
+ {164167200 3600 1 BST}
+ {183520800 0 0 GMT}
+ {196221600 3600 1 BST}
+ {214970400 0 0 GMT}
+ {227671200 3600 1 BST}
+ {246420000 0 0 GMT}
+ {259120800 3600 1 BST}
+ {278474400 0 0 GMT}
+ {290570400 3600 1 BST}
+ {309924000 0 0 GMT}
+ {322020000 3600 1 BST}
+ {341373600 0 0 GMT}
+ {354675600 3600 1 BST}
+ {372819600 0 0 GMT}
+ {386125200 3600 1 BST}
+ {404269200 0 0 GMT}
+ {417574800 3600 1 BST}
+ {435718800 0 0 GMT}
+ {449024400 3600 1 BST}
+ {467773200 0 0 GMT}
+ {481078800 3600 1 BST}
+ {499222800 0 0 GMT}
+ {512528400 3600 1 BST}
+ {530672400 0 0 GMT}
+ {543978000 3600 1 BST}
+ {562122000 0 0 GMT}
+ {575427600 3600 1 BST}
+ {593571600 0 0 GMT}
+ {606877200 3600 1 BST}
+ {625626000 0 0 GMT}
+ {638326800 3600 1 BST}
+ {657075600 0 0 GMT}
+ {670381200 3600 1 BST}
+ {688525200 0 0 GMT}
+ {701830800 3600 1 BST}
+ {719974800 0 0 GMT}
+ {733280400 3600 1 BST}
+ {751424400 0 0 GMT}
+ {764730000 3600 1 BST}
+ {782874000 0 0 GMT}
+ {796179600 3600 1 BST}
+ {814323600 0 0 GMT}
+ {820454400 0 0 GMT}
+ {828234000 3600 1 BST}
+ {846378000 0 0 GMT}
+ {859683600 3600 1 BST}
+ {877827600 0 0 GMT}
+ {891133200 3600 1 BST}
+ {909277200 0 0 GMT}
+ {922582800 3600 1 BST}
+ {941331600 0 0 GMT}
+ {954032400 3600 1 BST}
+ {972781200 0 0 GMT}
+ {985482000 3600 1 BST}
+ {1004230800 0 0 GMT}
+ {1017536400 3600 1 BST}
+ {1035680400 0 0 GMT}
+ {1048986000 3600 1 BST}
+ {1067130000 0 0 GMT}
+ {1080435600 3600 1 BST}
+ {1099184400 0 0 GMT}
+ {1111885200 3600 1 BST}
+ {1130634000 0 0 GMT}
+ {1143334800 3600 1 BST}
+ {1162083600 0 0 GMT}
+ {1174784400 3600 1 BST}
+ {1193533200 0 0 GMT}
+ {1206838800 3600 1 BST}
+ {1224982800 0 0 GMT}
+ {1238288400 3600 1 BST}
+ {1256432400 0 0 GMT}
+ {1269738000 3600 1 BST}
+ {1288486800 0 0 GMT}
+ {1301187600 3600 1 BST}
+ {1319936400 0 0 GMT}
+ {1332637200 3600 1 BST}
+ {1351386000 0 0 GMT}
+ {1364691600 3600 1 BST}
+ {1382835600 0 0 GMT}
+ {1396141200 3600 1 BST}
+ {1414285200 0 0 GMT}
+ {1427590800 3600 1 BST}
+ {1445734800 0 0 GMT}
+ {1459040400 3600 1 BST}
+ {1477789200 0 0 GMT}
+ {1490490000 3600 1 BST}
+ {1509238800 0 0 GMT}
+ {1521939600 3600 1 BST}
+ {1540688400 0 0 GMT}
+ {1553994000 3600 1 BST}
+ {1572138000 0 0 GMT}
+ {1585443600 3600 1 BST}
+ {1603587600 0 0 GMT}
+ {1616893200 3600 1 BST}
+ {1635642000 0 0 GMT}
+ {1648342800 3600 1 BST}
+ {1667091600 0 0 GMT}
+ {1679792400 3600 1 BST}
+ {1698541200 0 0 GMT}
+ {1711846800 3600 1 BST}
+ {1729990800 0 0 GMT}
+ {1743296400 3600 1 BST}
+ {1761440400 0 0 GMT}
+ {1774746000 3600 1 BST}
+ {1792890000 0 0 GMT}
+ {1806195600 3600 1 BST}
+ {1824944400 0 0 GMT}
+ {1837645200 3600 1 BST}
+ {1856394000 0 0 GMT}
+ {1869094800 3600 1 BST}
+ {1887843600 0 0 GMT}
+ {1901149200 3600 1 BST}
+ {1919293200 0 0 GMT}
+ {1932598800 3600 1 BST}
+ {1950742800 0 0 GMT}
+ {1964048400 3600 1 BST}
+ {1982797200 0 0 GMT}
+ {1995498000 3600 1 BST}
+ {2014246800 0 0 GMT}
+ {2026947600 3600 1 BST}
+ {2045696400 0 0 GMT}
+ {2058397200 3600 1 BST}
+ {2077146000 0 0 GMT}
+ {2090451600 3600 1 BST}
+ {2108595600 0 0 GMT}
+ {2121901200 3600 1 BST}
+ {2140045200 0 0 GMT}
+ {2153350800 3600 1 BST}
+ {2172099600 0 0 GMT}
+ {2184800400 3600 1 BST}
+ {2203549200 0 0 GMT}
+ {2216250000 3600 1 BST}
+ {2234998800 0 0 GMT}
+ {2248304400 3600 1 BST}
+ {2266448400 0 0 GMT}
+ {2279754000 3600 1 BST}
+ {2297898000 0 0 GMT}
+ {2311203600 3600 1 BST}
+ {2329347600 0 0 GMT}
+ {2342653200 3600 1 BST}
+ {2361402000 0 0 GMT}
+ {2374102800 3600 1 BST}
+ {2392851600 0 0 GMT}
+ {2405552400 3600 1 BST}
+ {2424301200 0 0 GMT}
+ {2437606800 3600 1 BST}
+ {2455750800 0 0 GMT}
+ {2469056400 3600 1 BST}
+ {2487200400 0 0 GMT}
+ {2500506000 3600 1 BST}
+ {2519254800 0 0 GMT}
+ {2531955600 3600 1 BST}
+ {2550704400 0 0 GMT}
+ {2563405200 3600 1 BST}
+ {2582154000 0 0 GMT}
+ {2595459600 3600 1 BST}
+ {2613603600 0 0 GMT}
+ {2626909200 3600 1 BST}
+ {2645053200 0 0 GMT}
+ {2658358800 3600 1 BST}
+ {2676502800 0 0 GMT}
+ {2689808400 3600 1 BST}
+ {2708557200 0 0 GMT}
+ {2721258000 3600 1 BST}
+ {2740006800 0 0 GMT}
+ {2752707600 3600 1 BST}
+ {2771456400 0 0 GMT}
+ {2784762000 3600 1 BST}
+ {2802906000 0 0 GMT}
+ {2816211600 3600 1 BST}
+ {2834355600 0 0 GMT}
+ {2847661200 3600 1 BST}
+ {2866410000 0 0 GMT}
+ {2879110800 3600 1 BST}
+ {2897859600 0 0 GMT}
+ {2910560400 3600 1 BST}
+ {2929309200 0 0 GMT}
+ {2942010000 3600 1 BST}
+ {2960758800 0 0 GMT}
+ {2974064400 3600 1 BST}
+ {2992208400 0 0 GMT}
+ {3005514000 3600 1 BST}
+ {3023658000 0 0 GMT}
+ {3036963600 3600 1 BST}
+ {3055712400 0 0 GMT}
+ {3068413200 3600 1 BST}
+ {3087162000 0 0 GMT}
+ {3099862800 3600 1 BST}
+ {3118611600 0 0 GMT}
+ {3131917200 3600 1 BST}
+ {3150061200 0 0 GMT}
+ {3163366800 3600 1 BST}
+ {3181510800 0 0 GMT}
+ {3194816400 3600 1 BST}
+ {3212960400 0 0 GMT}
+ {3226266000 3600 1 BST}
+ {3245014800 0 0 GMT}
+ {3257715600 3600 1 BST}
+ {3276464400 0 0 GMT}
+ {3289165200 3600 1 BST}
+ {3307914000 0 0 GMT}
+ {3321219600 3600 1 BST}
+ {3339363600 0 0 GMT}
+ {3352669200 3600 1 BST}
+ {3370813200 0 0 GMT}
+ {3384118800 3600 1 BST}
+ {3402867600 0 0 GMT}
+ {3415568400 3600 1 BST}
+ {3434317200 0 0 GMT}
+ {3447018000 3600 1 BST}
+ {3465766800 0 0 GMT}
+ {3479072400 3600 1 BST}
+ {3497216400 0 0 GMT}
+ {3510522000 3600 1 BST}
+ {3528666000 0 0 GMT}
+ {3541971600 3600 1 BST}
+ {3560115600 0 0 GMT}
+ {3573421200 3600 1 BST}
+ {3592170000 0 0 GMT}
+ {3604870800 3600 1 BST}
+ {3623619600 0 0 GMT}
+ {3636320400 3600 1 BST}
+ {3655069200 0 0 GMT}
+ {3668374800 3600 1 BST}
+ {3686518800 0 0 GMT}
+ {3699824400 3600 1 BST}
+ {3717968400 0 0 GMT}
+ {3731274000 3600 1 BST}
+ {3750022800 0 0 GMT}
+ {3762723600 3600 1 BST}
+ {3781472400 0 0 GMT}
+ {3794173200 3600 1 BST}
+ {3812922000 0 0 GMT}
+ {3825622800 3600 1 BST}
+ {3844371600 0 0 GMT}
+ {3857677200 3600 1 BST}
+ {3875821200 0 0 GMT}
+ {3889126800 3600 1 BST}
+ {3907270800 0 0 GMT}
+ {3920576400 3600 1 BST}
+ {3939325200 0 0 GMT}
+ {3952026000 3600 1 BST}
+ {3970774800 0 0 GMT}
+ {3983475600 3600 1 BST}
+ {4002224400 0 0 GMT}
+ {4015530000 3600 1 BST}
+ {4033674000 0 0 GMT}
+ {4046979600 3600 1 BST}
+ {4065123600 0 0 GMT}
+ {4078429200 3600 1 BST}
+ {4096573200 0 0 GMT}
+}
diff --git a/library/tzdata/Europe/Luxembourg b/library/tzdata/Europe/Luxembourg
new file mode 100644
index 0000000..2a88c4b
--- /dev/null
+++ b/library/tzdata/Europe/Luxembourg
@@ -0,0 +1,313 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Luxembourg) {
+ {-9223372036854775808 1476 0 LMT}
+ {-2069713476 3600 0 CET}
+ {-1692496800 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1662343200 7200 1 CEST}
+ {-1650157200 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-1612659600 0 0 WET}
+ {-1604278800 3600 1 WEST}
+ {-1585519200 0 0 WET}
+ {-1574038800 3600 1 WEST}
+ {-1552258800 0 0 WET}
+ {-1539997200 3600 1 WEST}
+ {-1520550000 0 0 WET}
+ {-1507510800 3600 1 WEST}
+ {-1490572800 0 0 WET}
+ {-1473642000 3600 1 WEST}
+ {-1459119600 0 0 WET}
+ {-1444006800 3600 1 WEST}
+ {-1427673600 0 0 WET}
+ {-1411866000 3600 1 WEST}
+ {-1396224000 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364774400 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333324800 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301270400 0 0 WET}
+ {-1284339600 3600 1 WEST}
+ {-1269813600 0 0 WET}
+ {-1253484000 3600 1 WEST}
+ {-1238364000 0 0 WET}
+ {-1221429600 3600 1 WEST}
+ {-1206914400 0 0 WET}
+ {-1191189600 3600 1 WEST}
+ {-1175464800 0 0 WET}
+ {-1160344800 3600 1 WEST}
+ {-1143410400 0 0 WET}
+ {-1127685600 3600 1 WEST}
+ {-1111960800 0 0 WET}
+ {-1096840800 3600 1 WEST}
+ {-1080511200 0 0 WET}
+ {-1063576800 3600 1 WEST}
+ {-1049061600 0 0 WET}
+ {-1033336800 3600 1 WEST}
+ {-1017612000 0 0 WET}
+ {-1002492000 3600 1 WEST}
+ {-986162400 0 0 WET}
+ {-969228000 3600 1 WEST}
+ {-950479200 0 0 WET}
+ {-942012000 3600 1 WEST}
+ {-935186400 7200 0 WEST}
+ {-857257200 3600 0 WET}
+ {-844556400 7200 1 WEST}
+ {-828226800 3600 0 WET}
+ {-812502000 7200 1 WEST}
+ {-797983200 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-766623600 3600 0 CET}
+ {-745455600 7200 1 CEST}
+ {-733273200 3600 0 CET}
+ {220921200 3600 0 CET}
+ {228877200 7200 1 CEST}
+ {243997200 3600 0 CET}
+ {260326800 7200 1 CEST}
+ {276051600 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Madrid b/library/tzdata/Europe/Madrid
new file mode 100644
index 0000000..50de14f
--- /dev/null
+++ b/library/tzdata/Europe/Madrid
@@ -0,0 +1,294 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Madrid) {
+ {-9223372036854775808 -884 0 LMT}
+ {-2177451916 0 0 WET}
+ {-1661734800 3600 1 WEST}
+ {-1648429200 0 0 WET}
+ {-1631926800 3600 1 WEST}
+ {-1616893200 0 0 WET}
+ {-1601254800 3600 1 WEST}
+ {-1585357200 0 0 WET}
+ {-1442451600 3600 1 WEST}
+ {-1427677200 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364778000 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333328400 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301274000 0 0 WET}
+ {-1284339600 3600 1 WEST}
+ {-1269824400 0 0 WET}
+ {-1029114000 3600 1 WEST}
+ {-1017622800 0 0 WET}
+ {-1002848400 3600 1 WEST}
+ {-986173200 0 0 WET}
+ {-969238800 3600 1 WEST}
+ {-954118800 0 0 WET}
+ {-940208400 3600 1 WEST}
+ {-873079200 7200 1 WEMT}
+ {-862538400 3600 1 WEST}
+ {-842839200 7200 1 WEMT}
+ {-828237600 3600 1 WEST}
+ {-811389600 7200 1 WEMT}
+ {-796010400 3600 1 WEST}
+ {-779940000 7200 1 WEMT}
+ {-765421200 3600 1 WEST}
+ {-748490400 7200 1 WEMT}
+ {-733881600 3600 0 CET}
+ {-652327200 7200 1 CEST}
+ {-639190800 3600 0 CET}
+ {135122400 7200 1 CEST}
+ {150246000 3600 0 CET}
+ {167176800 7200 1 CEST}
+ {181695600 3600 0 CET}
+ {196812000 7200 1 CEST}
+ {212540400 3600 0 CET}
+ {228866400 7200 1 CEST}
+ {243990000 3600 0 CET}
+ {260402400 7200 1 CEST}
+ {276044400 3600 0 CET}
+ {283993200 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Malta b/library/tzdata/Europe/Malta
new file mode 100644
index 0000000..b84f68e
--- /dev/null
+++ b/library/tzdata/Europe/Malta
@@ -0,0 +1,299 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Malta) {
+ {-9223372036854775808 3484 0 LMT}
+ {-2403478684 3600 0 CET}
+ {-1690851600 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1664758800 7200 1 CEST}
+ {-1649034000 3600 0 CET}
+ {-1635123600 7200 1 CEST}
+ {-1616979600 3600 0 CET}
+ {-1604278800 7200 1 CEST}
+ {-1585530000 3600 0 CET}
+ {-1571014800 7200 1 CEST}
+ {-1555290000 3600 0 CET}
+ {-932432400 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 0 CEST}
+ {-766717200 3600 0 CET}
+ {-750898800 7200 1 CEST}
+ {-733359600 3600 0 CET}
+ {-719456400 7200 1 CEST}
+ {-701917200 3600 0 CET}
+ {-689209200 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {-114051600 7200 1 CEST}
+ {-103168800 3600 0 CET}
+ {-81997200 7200 1 CEST}
+ {-71719200 3600 0 CET}
+ {-50547600 7200 1 CEST}
+ {-40269600 3600 0 CET}
+ {-18493200 7200 1 CEST}
+ {-8215200 3600 0 CET}
+ {12956400 7200 1 CEST}
+ {23234400 3600 0 CET}
+ {43801200 7200 1 CEST}
+ {54687600 3600 0 CET}
+ {75855600 7200 1 CEST}
+ {86738400 3600 0 CET}
+ {102380400 7200 0 CEST}
+ {118105200 3600 0 CET}
+ {135730800 7200 1 CEST}
+ {148518000 3600 0 CET}
+ {167187600 7200 1 CEST}
+ {180489600 3600 0 CET}
+ {198637200 7200 1 CEST}
+ {211939200 3600 0 CET}
+ {230086800 7200 1 CEST}
+ {243388800 3600 0 CET}
+ {261536400 7200 1 CEST}
+ {274838400 3600 0 CET}
+ {292986000 7200 1 CEST}
+ {306288000 3600 0 CET}
+ {323312400 7200 1 CEST}
+ {338342400 3600 0 CET}
+ {347151600 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Mariehamn b/library/tzdata/Europe/Mariehamn
new file mode 100644
index 0000000..26d9177
--- /dev/null
+++ b/library/tzdata/Europe/Mariehamn
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Helsinki)]} {
+ LoadTimeZoneFile Europe/Helsinki
+}
+set TZData(:Europe/Mariehamn) $TZData(:Europe/Helsinki)
diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk
new file mode 100644
index 0000000..1adcff8
--- /dev/null
+++ b/library/tzdata/Europe/Minsk
@@ -0,0 +1,74 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Minsk) {
+ {-9223372036854775808 6616 0 LMT}
+ {-2840147416 6600 0 MMT}
+ {-1441158600 7200 0 EET}
+ {-1247536800 10800 0 MSK}
+ {-899780400 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-804646800 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {631141200 10800 0 MSK}
+ {670374000 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717544800 7200 0 EET}
+ {733276800 10800 1 EEST}
+ {749001600 7200 0 EET}
+ {764726400 10800 1 EEST}
+ {780451200 7200 0 EET}
+ {796176000 10800 1 EEST}
+ {811900800 7200 0 EET}
+ {828230400 10800 1 EEST}
+ {846374400 7200 0 EET}
+ {859680000 10800 1 EEST}
+ {877824000 7200 0 EET}
+ {891129600 10800 1 EEST}
+ {909273600 7200 0 EET}
+ {922579200 10800 1 EEST}
+ {941328000 7200 0 EET}
+ {954028800 10800 1 EEST}
+ {972777600 7200 0 EET}
+ {985478400 10800 1 EEST}
+ {1004227200 7200 0 EET}
+ {1017532800 10800 1 EEST}
+ {1035676800 7200 0 EET}
+ {1048982400 10800 1 EEST}
+ {1067126400 7200 0 EET}
+ {1080432000 10800 1 EEST}
+ {1099180800 7200 0 EET}
+ {1111881600 10800 1 EEST}
+ {1130630400 7200 0 EET}
+ {1143331200 10800 1 EEST}
+ {1162080000 7200 0 EET}
+ {1174780800 10800 1 EEST}
+ {1193529600 7200 0 EET}
+ {1206835200 10800 1 EEST}
+ {1224979200 7200 0 EET}
+ {1238284800 10800 1 EEST}
+ {1256428800 7200 0 EET}
+ {1269734400 10800 1 EEST}
+ {1288483200 7200 0 EET}
+ {1301184000 10800 0 FET}
+}
diff --git a/library/tzdata/Europe/Monaco b/library/tzdata/Europe/Monaco
new file mode 100644
index 0000000..f887b0b
--- /dev/null
+++ b/library/tzdata/Europe/Monaco
@@ -0,0 +1,315 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Monaco) {
+ {-9223372036854775808 1772 0 LMT}
+ {-2486680172 561 0 PMT}
+ {-1855958961 0 0 WET}
+ {-1689814800 3600 1 WEST}
+ {-1680397200 0 0 WET}
+ {-1665363600 3600 1 WEST}
+ {-1648342800 0 0 WET}
+ {-1635123600 3600 1 WEST}
+ {-1616893200 0 0 WET}
+ {-1604278800 3600 1 WEST}
+ {-1585443600 0 0 WET}
+ {-1574038800 3600 1 WEST}
+ {-1552266000 0 0 WET}
+ {-1539997200 3600 1 WEST}
+ {-1520557200 0 0 WET}
+ {-1507510800 3600 1 WEST}
+ {-1490576400 0 0 WET}
+ {-1470618000 3600 1 WEST}
+ {-1459126800 0 0 WET}
+ {-1444006800 3600 1 WEST}
+ {-1427677200 0 0 WET}
+ {-1411952400 3600 1 WEST}
+ {-1396227600 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364778000 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333328400 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301274000 0 0 WET}
+ {-1284339600 3600 1 WEST}
+ {-1269824400 0 0 WET}
+ {-1253494800 3600 1 WEST}
+ {-1238374800 0 0 WET}
+ {-1221440400 3600 1 WEST}
+ {-1206925200 0 0 WET}
+ {-1191200400 3600 1 WEST}
+ {-1175475600 0 0 WET}
+ {-1160355600 3600 1 WEST}
+ {-1143421200 0 0 WET}
+ {-1127696400 3600 1 WEST}
+ {-1111971600 0 0 WET}
+ {-1096851600 3600 1 WEST}
+ {-1080522000 0 0 WET}
+ {-1063587600 3600 1 WEST}
+ {-1049072400 0 0 WET}
+ {-1033347600 3600 1 WEST}
+ {-1017622800 0 0 WET}
+ {-1002502800 3600 1 WEST}
+ {-986173200 0 0 WET}
+ {-969238800 3600 1 WEST}
+ {-950490000 0 0 WET}
+ {-942012000 3600 1 WEST}
+ {-904438800 7200 1 WEMT}
+ {-891136800 3600 1 WEST}
+ {-877827600 7200 1 WEMT}
+ {-857257200 3600 1 WEST}
+ {-844556400 7200 1 WEMT}
+ {-828226800 3600 1 WEST}
+ {-812502000 7200 1 WEMT}
+ {-796266000 3600 1 WEST}
+ {-781052400 7200 1 WEMT}
+ {-766616400 3600 0 CET}
+ {196819200 7200 1 CEST}
+ {212540400 3600 0 CET}
+ {220921200 3600 0 CET}
+ {228877200 7200 1 CEST}
+ {243997200 3600 0 CET}
+ {260326800 7200 1 CEST}
+ {276051600 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow
new file mode 100644
index 0000000..8f40741
--- /dev/null
+++ b/library/tzdata/Europe/Moscow
@@ -0,0 +1,83 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Moscow) {
+ {-9223372036854775808 9020 0 LMT}
+ {-2840149820 9000 0 MMT}
+ {-1688265000 9048 0 MMT}
+ {-1656819048 12648 1 MST}
+ {-1641353448 9048 0 MMT}
+ {-1627965048 16248 1 MDST}
+ {-1618716648 12648 1 MST}
+ {-1596429048 16248 1 MDST}
+ {-1593822648 14400 0 MSD}
+ {-1589860800 10800 0 MSK}
+ {-1542427200 14400 1 MSD}
+ {-1539493200 18000 1 MSD}
+ {-1525323600 14400 1 MSD}
+ {-1522728000 10800 0 MSK}
+ {-1491188400 7200 0 EET}
+ {-1247536800 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {638319600 14400 1 MSD}
+ {654649200 10800 0 MSK}
+ {670374000 7200 0 EEMMTT}
+ {670377600 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {695779200 10800 0 MSD}
+ {701812800 14400 1 MSD}
+ {717534000 10800 0 MSK}
+ {733273200 14400 1 MSD}
+ {748998000 10800 0 MSK}
+ {764722800 14400 1 MSD}
+ {780447600 10800 0 MSK}
+ {796172400 14400 1 MSD}
+ {811897200 10800 0 MSK}
+ {828226800 14400 1 MSD}
+ {846370800 10800 0 MSK}
+ {859676400 14400 1 MSD}
+ {877820400 10800 0 MSK}
+ {891126000 14400 1 MSD}
+ {909270000 10800 0 MSK}
+ {922575600 14400 1 MSD}
+ {941324400 10800 0 MSK}
+ {954025200 14400 1 MSD}
+ {972774000 10800 0 MSK}
+ {985474800 14400 1 MSD}
+ {1004223600 10800 0 MSK}
+ {1017529200 14400 1 MSD}
+ {1035673200 10800 0 MSK}
+ {1048978800 14400 1 MSD}
+ {1067122800 10800 0 MSK}
+ {1080428400 14400 1 MSD}
+ {1099177200 10800 0 MSK}
+ {1111878000 14400 1 MSD}
+ {1130626800 10800 0 MSK}
+ {1143327600 14400 1 MSD}
+ {1162076400 10800 0 MSK}
+ {1174777200 14400 1 MSD}
+ {1193526000 10800 0 MSK}
+ {1206831600 14400 1 MSD}
+ {1224975600 10800 0 MSK}
+ {1238281200 14400 1 MSD}
+ {1256425200 10800 0 MSK}
+ {1269730800 14400 1 MSD}
+ {1288479600 10800 0 MSK}
+ {1301180400 14400 0 MSK}
+}
diff --git a/library/tzdata/Europe/Nicosia b/library/tzdata/Europe/Nicosia
new file mode 100644
index 0000000..2d58355
--- /dev/null
+++ b/library/tzdata/Europe/Nicosia
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Nicosia)]} {
+ LoadTimeZoneFile Asia/Nicosia
+}
+set TZData(:Europe/Nicosia) $TZData(:Asia/Nicosia)
diff --git a/library/tzdata/Europe/Oslo b/library/tzdata/Europe/Oslo
new file mode 100644
index 0000000..6787c1e
--- /dev/null
+++ b/library/tzdata/Europe/Oslo
@@ -0,0 +1,271 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Oslo) {
+ {-9223372036854775808 2580 0 LMT}
+ {-2366757780 3600 0 CET}
+ {-1691884800 7200 1 CEST}
+ {-1680573600 3600 0 CET}
+ {-927511200 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 0 CEST}
+ {-765327600 3600 0 CET}
+ {-340844400 7200 1 CEST}
+ {-324514800 3600 0 CET}
+ {-308790000 7200 1 CEST}
+ {-293065200 3600 0 CET}
+ {-277340400 7200 1 CEST}
+ {-261615600 3600 0 CET}
+ {-245890800 7200 1 CEST}
+ {-230166000 3600 0 CET}
+ {-214441200 7200 1 CEST}
+ {-198716400 3600 0 CET}
+ {-182991600 7200 1 CEST}
+ {-166662000 3600 0 CET}
+ {-147913200 7200 1 CEST}
+ {-135212400 3600 0 CET}
+ {315529200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Paris b/library/tzdata/Europe/Paris
new file mode 100644
index 0000000..4b22a09
--- /dev/null
+++ b/library/tzdata/Europe/Paris
@@ -0,0 +1,314 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Paris) {
+ {-9223372036854775808 561 0 LMT}
+ {-2486678901 561 0 PMT}
+ {-1855958901 0 0 WET}
+ {-1689814800 3600 1 WEST}
+ {-1680397200 0 0 WET}
+ {-1665363600 3600 1 WEST}
+ {-1648342800 0 0 WET}
+ {-1635123600 3600 1 WEST}
+ {-1616893200 0 0 WET}
+ {-1604278800 3600 1 WEST}
+ {-1585443600 0 0 WET}
+ {-1574038800 3600 1 WEST}
+ {-1552266000 0 0 WET}
+ {-1539997200 3600 1 WEST}
+ {-1520557200 0 0 WET}
+ {-1507510800 3600 1 WEST}
+ {-1490576400 0 0 WET}
+ {-1470618000 3600 1 WEST}
+ {-1459126800 0 0 WET}
+ {-1444006800 3600 1 WEST}
+ {-1427677200 0 0 WET}
+ {-1411952400 3600 1 WEST}
+ {-1396227600 0 0 WET}
+ {-1379293200 3600 1 WEST}
+ {-1364778000 0 0 WET}
+ {-1348448400 3600 1 WEST}
+ {-1333328400 0 0 WET}
+ {-1316394000 3600 1 WEST}
+ {-1301274000 0 0 WET}
+ {-1284339600 3600 1 WEST}
+ {-1269824400 0 0 WET}
+ {-1253494800 3600 1 WEST}
+ {-1238374800 0 0 WET}
+ {-1221440400 3600 1 WEST}
+ {-1206925200 0 0 WET}
+ {-1191200400 3600 1 WEST}
+ {-1175475600 0 0 WET}
+ {-1160355600 3600 1 WEST}
+ {-1143421200 0 0 WET}
+ {-1127696400 3600 1 WEST}
+ {-1111971600 0 0 WET}
+ {-1096851600 3600 1 WEST}
+ {-1080522000 0 0 WET}
+ {-1063587600 3600 1 WEST}
+ {-1049072400 0 0 WET}
+ {-1033347600 3600 1 WEST}
+ {-1017622800 0 0 WET}
+ {-1002502800 3600 1 WEST}
+ {-986173200 0 0 WET}
+ {-969238800 3600 1 WEST}
+ {-950490000 0 0 WET}
+ {-942012000 3600 1 WEST}
+ {-932436000 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-800067600 7200 0 WEMT}
+ {-796266000 3600 1 WEST}
+ {-781052400 7200 1 WEMT}
+ {-766616400 3600 0 CET}
+ {196819200 7200 1 CEST}
+ {212540400 3600 0 CET}
+ {220921200 3600 0 CET}
+ {228877200 7200 1 CEST}
+ {243997200 3600 0 CET}
+ {260326800 7200 1 CEST}
+ {276051600 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Podgorica b/library/tzdata/Europe/Podgorica
new file mode 100644
index 0000000..f4f9066
--- /dev/null
+++ b/library/tzdata/Europe/Podgorica
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Belgrade)]} {
+ LoadTimeZoneFile Europe/Belgrade
+}
+set TZData(:Europe/Podgorica) $TZData(:Europe/Belgrade)
diff --git a/library/tzdata/Europe/Prague b/library/tzdata/Europe/Prague
new file mode 100644
index 0000000..222b1ae
--- /dev/null
+++ b/library/tzdata/Europe/Prague
@@ -0,0 +1,272 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Prague) {
+ {-9223372036854775808 3464 0 LMT}
+ {-3786829064 3464 0 PMT}
+ {-2469401864 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-938905200 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-798073200 3600 0 CET}
+ {-780534000 7200 1 CEST}
+ {-761180400 3600 0 CET}
+ {-746578800 7200 1 CEST}
+ {-733359600 3600 0 CET}
+ {-716425200 7200 1 CEST}
+ {-701910000 3600 0 CET}
+ {-684975600 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {-654217200 7200 1 CEST}
+ {-639010800 3600 0 CET}
+ {283993200 3600 0 CET}
+ {291776400 7200 1 CEST}
+ {307501200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Riga b/library/tzdata/Europe/Riga
new file mode 100644
index 0000000..9fad0f8
--- /dev/null
+++ b/library/tzdata/Europe/Riga
@@ -0,0 +1,258 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Riga) {
+ {-9223372036854775808 5784 0 LMT}
+ {-2840146584 5784 0 RMT}
+ {-1632008184 9384 1 LST}
+ {-1618702584 5784 0 RMT}
+ {-1601681784 9384 1 LST}
+ {-1597275384 5784 0 RMT}
+ {-1377308184 7200 0 EET}
+ {-928029600 10800 0 MSK}
+ {-899521200 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-795834000 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 10800 1 EEST}
+ {622598400 7200 0 EET}
+ {638323200 10800 1 EEST}
+ {654652800 7200 0 EET}
+ {670377600 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {701827200 10800 1 EEST}
+ {717552000 7200 0 EET}
+ {733276800 10800 1 EEST}
+ {749001600 7200 0 EET}
+ {764726400 10800 1 EEST}
+ {780451200 7200 0 EET}
+ {796176000 10800 1 EEST}
+ {811900800 7200 0 EET}
+ {828230400 10800 1 EEST}
+ {843955200 7200 0 EET}
+ {853797600 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {951775200 7200 0 EET}
+ {978386400 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Rome b/library/tzdata/Europe/Rome
new file mode 100644
index 0000000..64948b8
--- /dev/null
+++ b/library/tzdata/Europe/Rome
@@ -0,0 +1,301 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Rome) {
+ {-9223372036854775808 2996 0 LMT}
+ {-3259097396 2996 0 RMT}
+ {-2403564596 3600 0 CET}
+ {-1690851600 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1664758800 7200 1 CEST}
+ {-1649034000 3600 0 CET}
+ {-1635123600 7200 1 CEST}
+ {-1616979600 3600 0 CET}
+ {-1604278800 7200 1 CEST}
+ {-1585530000 3600 0 CET}
+ {-1571014800 7200 1 CEST}
+ {-1555290000 3600 0 CET}
+ {-932432400 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-804819600 3600 0 CET}
+ {-798080400 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-766717200 3600 0 CET}
+ {-750898800 7200 1 CEST}
+ {-733359600 3600 0 CET}
+ {-719456400 7200 1 CEST}
+ {-701917200 3600 0 CET}
+ {-689209200 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {-114051600 7200 1 CEST}
+ {-103168800 3600 0 CET}
+ {-81997200 7200 1 CEST}
+ {-71719200 3600 0 CET}
+ {-50547600 7200 1 CEST}
+ {-40269600 3600 0 CET}
+ {-18493200 7200 1 CEST}
+ {-8215200 3600 0 CET}
+ {12956400 7200 1 CEST}
+ {23234400 3600 0 CET}
+ {43801200 7200 1 CEST}
+ {54687600 3600 0 CET}
+ {75855600 7200 1 CEST}
+ {86738400 3600 0 CET}
+ {107910000 7200 1 CEST}
+ {118188000 3600 0 CET}
+ {138754800 7200 1 CEST}
+ {149637600 3600 0 CET}
+ {170809200 7200 1 CEST}
+ {181090800 3600 0 CET}
+ {202258800 7200 1 CEST}
+ {212540400 3600 0 CET}
+ {233103600 7200 1 CEST}
+ {243990000 3600 0 CET}
+ {265158000 7200 1 CEST}
+ {276044400 3600 0 CET}
+ {296607600 7200 1 CEST}
+ {307494000 3600 0 CET}
+ {315529200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara
new file mode 100644
index 0000000..f2ac911
--- /dev/null
+++ b/library/tzdata/Europe/Samara
@@ -0,0 +1,73 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Samara) {
+ {-9223372036854775808 12036 0 LMT}
+ {-1593825636 10800 0 SAMT}
+ {-1247540400 14400 0 SAMT}
+ {-1102305600 14400 0 KUYMMTT}
+ {354916800 18000 1 KUYST}
+ {370724400 14400 0 KUYT}
+ {386452800 18000 1 KUYST}
+ {402260400 14400 0 KUYT}
+ {417988800 18000 1 KUYST}
+ {433796400 14400 0 KUYT}
+ {449611200 18000 1 KUYST}
+ {465343200 14400 0 KUYT}
+ {481068000 18000 1 KUYST}
+ {496792800 14400 0 KUYT}
+ {512517600 18000 1 KUYST}
+ {528242400 14400 0 KUYT}
+ {543967200 18000 1 KUYST}
+ {559692000 14400 0 KUYT}
+ {575416800 18000 1 KUYST}
+ {591141600 14400 0 KUYT}
+ {606866400 10800 0 KUYMMTT}
+ {606870000 14400 1 KUYST}
+ {622594800 10800 0 KUYT}
+ {638319600 14400 1 KUYST}
+ {654649200 10800 0 KUYT}
+ {670374000 7200 0 KUYMMTT}
+ {670377600 10800 1 KUYST}
+ {686102400 10800 0 KUYT}
+ {687916800 14400 0 SAMT}
+ {701809200 18000 1 SAMST}
+ {717530400 14400 0 SAMT}
+ {733269600 18000 1 SAMST}
+ {748994400 14400 0 SAMT}
+ {764719200 18000 1 SAMST}
+ {780444000 14400 0 SAMT}
+ {796168800 18000 1 SAMST}
+ {811893600 14400 0 SAMT}
+ {828223200 18000 1 SAMST}
+ {846367200 14400 0 SAMT}
+ {859672800 18000 1 SAMST}
+ {877816800 14400 0 SAMT}
+ {891122400 18000 1 SAMST}
+ {909266400 14400 0 SAMT}
+ {922572000 18000 1 SAMST}
+ {941320800 14400 0 SAMT}
+ {954021600 18000 1 SAMST}
+ {972770400 14400 0 SAMT}
+ {985471200 18000 1 SAMST}
+ {1004220000 14400 0 SAMT}
+ {1017525600 18000 1 SAMST}
+ {1035669600 14400 0 SAMT}
+ {1048975200 18000 1 SAMST}
+ {1067119200 14400 0 SAMT}
+ {1080424800 18000 1 SAMST}
+ {1099173600 14400 0 SAMT}
+ {1111874400 18000 1 SAMST}
+ {1130623200 14400 0 SAMT}
+ {1143324000 18000 1 SAMST}
+ {1162072800 14400 0 SAMT}
+ {1174773600 18000 1 SAMST}
+ {1193522400 14400 0 SAMT}
+ {1206828000 18000 1 SAMST}
+ {1224972000 14400 0 SAMT}
+ {1238277600 18000 1 SAMST}
+ {1256421600 14400 0 SAMT}
+ {1269727200 10800 0 SAMMMTT}
+ {1269730800 14400 1 SAMST}
+ {1288479600 10800 0 SAMT}
+ {1301180400 14400 0 SAMT}
+}
diff --git a/library/tzdata/Europe/San_Marino b/library/tzdata/Europe/San_Marino
new file mode 100644
index 0000000..927ad29
--- /dev/null
+++ b/library/tzdata/Europe/San_Marino
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Rome)]} {
+ LoadTimeZoneFile Europe/Rome
+}
+set TZData(:Europe/San_Marino) $TZData(:Europe/Rome)
diff --git a/library/tzdata/Europe/Sarajevo b/library/tzdata/Europe/Sarajevo
new file mode 100644
index 0000000..1b14286
--- /dev/null
+++ b/library/tzdata/Europe/Sarajevo
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Belgrade)]} {
+ LoadTimeZoneFile Europe/Belgrade
+}
+set TZData(:Europe/Sarajevo) $TZData(:Europe/Belgrade)
diff --git a/library/tzdata/Europe/Simferopol b/library/tzdata/Europe/Simferopol
new file mode 100644
index 0000000..9836560
--- /dev/null
+++ b/library/tzdata/Europe/Simferopol
@@ -0,0 +1,253 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Simferopol) {
+ {-9223372036854775808 8184 0 LMT}
+ {-2840148984 8160 0 SMT}
+ {-1441160160 7200 0 EET}
+ {-1247536800 10800 0 MSK}
+ {-888894000 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-811645200 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {631141200 10800 0 MSK}
+ {646786800 7200 0 EET}
+ {694216800 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {767743200 14400 0 MSD}
+ {780436800 10800 0 MSK}
+ {796165200 14400 1 MSD}
+ {811886400 10800 0 MSK}
+ {828219600 14400 1 MSD}
+ {828230400 14400 1 MSD}
+ {852066000 10800 0 MSK}
+ {859683600 10800 0 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Skopje b/library/tzdata/Europe/Skopje
new file mode 100644
index 0000000..07eedbe
--- /dev/null
+++ b/library/tzdata/Europe/Skopje
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Belgrade)]} {
+ LoadTimeZoneFile Europe/Belgrade
+}
+set TZData(:Europe/Skopje) $TZData(:Europe/Belgrade)
diff --git a/library/tzdata/Europe/Sofia b/library/tzdata/Europe/Sofia
new file mode 100644
index 0000000..8fd55f6
--- /dev/null
+++ b/library/tzdata/Europe/Sofia
@@ -0,0 +1,259 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Sofia) {
+ {-9223372036854775808 5596 0 LMT}
+ {-2840146396 7016 0 IMT}
+ {-2369527016 7200 0 EET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-788922000 3600 0 CET}
+ {-781048800 7200 0 EET}
+ {291762000 10800 0 EEST}
+ {307576800 7200 0 EET}
+ {323816400 10800 1 EEST}
+ {339026400 7200 0 EET}
+ {355266000 10800 1 EEST}
+ {370393200 7200 0 EET}
+ {386715600 10800 1 EEST}
+ {401842800 10800 0 EEST}
+ {401846400 7200 0 EET}
+ {417571200 10800 1 EEST}
+ {433296000 7200 0 EET}
+ {449020800 10800 1 EEST}
+ {465350400 7200 0 EET}
+ {481075200 10800 1 EEST}
+ {496800000 7200 0 EET}
+ {512524800 10800 1 EEST}
+ {528249600 7200 0 EET}
+ {543974400 10800 1 EEST}
+ {559699200 7200 0 EET}
+ {575424000 10800 1 EEST}
+ {591148800 7200 0 EET}
+ {606873600 10800 1 EEST}
+ {622598400 7200 0 EET}
+ {638323200 10800 1 EEST}
+ {654652800 7200 0 EET}
+ {662680800 7200 0 EET}
+ {670370400 10800 1 EEST}
+ {686091600 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {796168800 10800 1 EEST}
+ {811890000 7200 0 EET}
+ {828223200 10800 1 EEST}
+ {846363600 7200 0 EET}
+ {852069600 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Stockholm b/library/tzdata/Europe/Stockholm
new file mode 100644
index 0000000..b74d327
--- /dev/null
+++ b/library/tzdata/Europe/Stockholm
@@ -0,0 +1,250 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Stockholm) {
+ {-9223372036854775808 4332 0 LMT}
+ {-2871681132 3614 0 SET}
+ {-2208992414 3600 0 CET}
+ {-1692496800 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {315529200 3600 0 CET}
+ {323830800 7200 1 CEST}
+ {338950800 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Tallinn b/library/tzdata/Europe/Tallinn
new file mode 100644
index 0000000..17f14e6
--- /dev/null
+++ b/library/tzdata/Europe/Tallinn
@@ -0,0 +1,255 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Tallinn) {
+ {-9223372036854775808 5940 0 LMT}
+ {-2840146740 5940 0 TMT}
+ {-1638322740 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-1593824400 5940 0 TMT}
+ {-1535938740 7200 0 EET}
+ {-927943200 10800 0 MSK}
+ {-892954800 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-797648400 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 10800 1 EEST}
+ {622598400 7200 0 EET}
+ {638323200 10800 1 EEST}
+ {654652800 7200 0 EET}
+ {670377600 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {701827200 10800 1 EEST}
+ {717552000 7200 0 EET}
+ {733276800 10800 1 EEST}
+ {749001600 7200 0 EET}
+ {764726400 10800 1 EEST}
+ {780451200 7200 0 EET}
+ {796176000 10800 1 EEST}
+ {811900800 7200 0 EET}
+ {828230400 10800 1 EEST}
+ {846374400 7200 0 EET}
+ {859680000 10800 1 EEST}
+ {877824000 7200 0 EET}
+ {891129600 10800 1 EEST}
+ {906415200 10800 0 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {941407200 7200 0 EET}
+ {1014242400 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Tirane b/library/tzdata/Europe/Tirane
new file mode 100644
index 0000000..14ace2e
--- /dev/null
+++ b/library/tzdata/Europe/Tirane
@@ -0,0 +1,263 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Tirane) {
+ {-9223372036854775808 4760 0 LMT}
+ {-1767230360 3600 0 CET}
+ {-932346000 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-843519600 3600 0 CET}
+ {136854000 7200 1 CEST}
+ {149896800 3600 0 CET}
+ {168130800 7200 1 CEST}
+ {181432800 3600 0 CET}
+ {199839600 7200 1 CEST}
+ {213141600 3600 0 CET}
+ {231894000 7200 1 CEST}
+ {244591200 3600 0 CET}
+ {263257200 7200 1 CEST}
+ {276040800 3600 0 CET}
+ {294706800 7200 1 CEST}
+ {307490400 3600 0 CET}
+ {326156400 7200 1 CEST}
+ {339458400 3600 0 CET}
+ {357087600 7200 1 CEST}
+ {370389600 3600 0 CET}
+ {389142000 7200 1 CEST}
+ {402444000 3600 0 CET}
+ {419468400 7200 1 CEST}
+ {433807200 3600 0 CET}
+ {449622000 7200 1 CEST}
+ {457480800 7200 0 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Tiraspol b/library/tzdata/Europe/Tiraspol
new file mode 100644
index 0000000..ea8f671
--- /dev/null
+++ b/library/tzdata/Europe/Tiraspol
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Chisinau)]} {
+ LoadTimeZoneFile Europe/Chisinau
+}
+set TZData(:Europe/Tiraspol) $TZData(:Europe/Chisinau)
diff --git a/library/tzdata/Europe/Uzhgorod b/library/tzdata/Europe/Uzhgorod
new file mode 100644
index 0000000..f6e580b
--- /dev/null
+++ b/library/tzdata/Europe/Uzhgorod
@@ -0,0 +1,254 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Uzhgorod) {
+ {-9223372036854775808 5352 0 LMT}
+ {-2500939752 3600 0 CET}
+ {-946774800 3600 0 CET}
+ {-938905200 7200 1 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796870800 7200 1 CEST}
+ {-794714400 3600 0 CET}
+ {-773456400 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {631141200 10800 0 MSK}
+ {646786800 3600 0 CET}
+ {670384800 7200 0 EET}
+ {694216800 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {788911200 7200 0 EET}
+ {796179600 10800 1 EEST}
+ {811904400 7200 0 EET}
+ {828234000 10800 1 EEST}
+ {846378000 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Vaduz b/library/tzdata/Europe/Vaduz
new file mode 100644
index 0000000..095e018
--- /dev/null
+++ b/library/tzdata/Europe/Vaduz
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Zurich)]} {
+ LoadTimeZoneFile Europe/Zurich
+}
+set TZData(:Europe/Vaduz) $TZData(:Europe/Zurich)
diff --git a/library/tzdata/Europe/Vatican b/library/tzdata/Europe/Vatican
new file mode 100644
index 0000000..fe50765
--- /dev/null
+++ b/library/tzdata/Europe/Vatican
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Rome)]} {
+ LoadTimeZoneFile Europe/Rome
+}
+set TZData(:Europe/Vatican) $TZData(:Europe/Rome)
diff --git a/library/tzdata/Europe/Vienna b/library/tzdata/Europe/Vienna
new file mode 100644
index 0000000..95283eb
--- /dev/null
+++ b/library/tzdata/Europe/Vienna
@@ -0,0 +1,271 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Vienna) {
+ {-9223372036854775808 3921 0 LMT}
+ {-2422055121 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618700400 3600 0 CET}
+ {-1577926800 3600 0 CET}
+ {-1569711600 7200 1 CEST}
+ {-1555801200 3600 0 CET}
+ {-938905200 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796777200 3600 0 CET}
+ {-781052400 7200 1 CEST}
+ {-780188400 3600 0 CET}
+ {-757386000 3600 0 CET}
+ {-748479600 7200 1 CEST}
+ {-733359600 3600 0 CET}
+ {-717634800 7200 1 CEST}
+ {-701910000 3600 0 CET}
+ {-684975600 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {323823600 7200 1 CEST}
+ {338940000 3600 0 CET}
+ {347151600 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Vilnius b/library/tzdata/Europe/Vilnius
new file mode 100644
index 0000000..62d5d87
--- /dev/null
+++ b/library/tzdata/Europe/Vilnius
@@ -0,0 +1,251 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Vilnius) {
+ {-9223372036854775808 6076 0 LMT}
+ {-2840146876 5040 0 WMT}
+ {-1672536240 5736 0 KMT}
+ {-1585100136 3600 0 CET}
+ {-1561251600 7200 0 EET}
+ {-1553565600 3600 0 CET}
+ {-928198800 10800 0 MSK}
+ {-900126000 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-802141200 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {638319600 14400 1 MSD}
+ {654649200 10800 0 MSK}
+ {670374000 10800 1 EEST}
+ {686102400 7200 0 EET}
+ {701827200 10800 1 EEST}
+ {717552000 7200 0 EET}
+ {733276800 10800 1 EEST}
+ {749001600 7200 0 EET}
+ {764726400 10800 1 EEST}
+ {780451200 7200 0 EET}
+ {796176000 10800 1 EEST}
+ {811900800 7200 0 EET}
+ {828230400 10800 1 EEST}
+ {846374400 7200 0 EET}
+ {859680000 10800 1 EEST}
+ {877824000 7200 0 EET}
+ {883605600 7200 0 EET}
+ {891133200 7200 0 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 7200 0 EET}
+ {1041372000 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd
new file mode 100644
index 0000000..c3f148f
--- /dev/null
+++ b/library/tzdata/Europe/Volgograd
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Volgograd) {
+ {-9223372036854775808 10660 0 LMT}
+ {-1577761060 10800 0 TSAT}
+ {-1411873200 10800 0 STAT}
+ {-1247540400 14400 0 STAT}
+ {-256881600 14400 0 VOLMMTT}
+ {354916800 18000 1 VOLST}
+ {370724400 14400 0 VOLT}
+ {386452800 18000 1 VOLST}
+ {402260400 14400 0 VOLT}
+ {417988800 18000 1 VOLST}
+ {433796400 14400 0 VOLT}
+ {449611200 18000 1 VOLST}
+ {465343200 14400 0 VOLT}
+ {481068000 18000 1 VOLST}
+ {496792800 14400 0 VOLT}
+ {512517600 18000 1 VOLST}
+ {528242400 14400 0 VOLT}
+ {543967200 18000 1 VOLST}
+ {559692000 14400 0 VOLT}
+ {575416800 18000 1 VOLST}
+ {591141600 14400 0 VOLT}
+ {606866400 10800 0 VOLMMTT}
+ {606870000 14400 1 VOLST}
+ {622594800 10800 0 VOLT}
+ {638319600 14400 1 VOLST}
+ {654649200 10800 0 VOLT}
+ {670374000 14400 0 VOLT}
+ {701820000 14400 0 VOLST}
+ {717534000 10800 0 VOLT}
+ {733273200 14400 1 VOLST}
+ {748998000 10800 0 VOLT}
+ {764722800 14400 1 VOLST}
+ {780447600 10800 0 VOLT}
+ {796172400 14400 1 VOLST}
+ {811897200 10800 0 VOLT}
+ {828226800 14400 1 VOLST}
+ {846370800 10800 0 VOLT}
+ {859676400 14400 1 VOLST}
+ {877820400 10800 0 VOLT}
+ {891126000 14400 1 VOLST}
+ {909270000 10800 0 VOLT}
+ {922575600 14400 1 VOLST}
+ {941324400 10800 0 VOLT}
+ {954025200 14400 1 VOLST}
+ {972774000 10800 0 VOLT}
+ {985474800 14400 1 VOLST}
+ {1004223600 10800 0 VOLT}
+ {1017529200 14400 1 VOLST}
+ {1035673200 10800 0 VOLT}
+ {1048978800 14400 1 VOLST}
+ {1067122800 10800 0 VOLT}
+ {1080428400 14400 1 VOLST}
+ {1099177200 10800 0 VOLT}
+ {1111878000 14400 1 VOLST}
+ {1130626800 10800 0 VOLT}
+ {1143327600 14400 1 VOLST}
+ {1162076400 10800 0 VOLT}
+ {1174777200 14400 1 VOLST}
+ {1193526000 10800 0 VOLT}
+ {1206831600 14400 1 VOLST}
+ {1224975600 10800 0 VOLT}
+ {1238281200 14400 1 VOLST}
+ {1256425200 10800 0 VOLT}
+ {1269730800 14400 1 VOLST}
+ {1288479600 10800 0 VOLT}
+ {1301180400 14400 0 VOLT}
+}
diff --git a/library/tzdata/Europe/Warsaw b/library/tzdata/Europe/Warsaw
new file mode 100644
index 0000000..6288a8a
--- /dev/null
+++ b/library/tzdata/Europe/Warsaw
@@ -0,0 +1,296 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Warsaw) {
+ {-9223372036854775808 5040 0 LMT}
+ {-2840145840 5040 0 WMT}
+ {-1717032240 3600 0 CET}
+ {-1693706400 7200 1 CEST}
+ {-1680483600 3600 0 CET}
+ {-1663455600 7200 1 CEST}
+ {-1650150000 3600 0 CET}
+ {-1632006000 7200 1 CEST}
+ {-1618696800 7200 0 EET}
+ {-1600473600 10800 1 EEST}
+ {-1587168000 7200 0 EET}
+ {-931734000 7200 0 CEST}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-812502000 7200 1 CEST}
+ {-796870800 7200 0 CEST}
+ {-796608000 3600 0 CET}
+ {-778726800 7200 1 CEST}
+ {-762660000 3600 0 CET}
+ {-748486800 7200 1 CEST}
+ {-733273200 3600 0 CET}
+ {-715215600 7200 1 CEST}
+ {-701910000 3600 0 CET}
+ {-684975600 7200 1 CEST}
+ {-670460400 3600 0 CET}
+ {-654130800 7200 1 CEST}
+ {-639010800 3600 0 CET}
+ {-397094400 7200 1 CEST}
+ {-386812800 3600 0 CET}
+ {-371088000 7200 1 CEST}
+ {-355363200 3600 0 CET}
+ {-334195200 7200 1 CEST}
+ {-323308800 3600 0 CET}
+ {-307584000 7200 1 CEST}
+ {-291859200 3600 0 CET}
+ {-271296000 7200 1 CEST}
+ {-260409600 3600 0 CET}
+ {-239846400 7200 1 CEST}
+ {-228960000 3600 0 CET}
+ {-208396800 7200 1 CEST}
+ {-197510400 3600 0 CET}
+ {-176342400 7200 1 CEST}
+ {-166060800 3600 0 CET}
+ {220921200 3600 0 CET}
+ {228873600 7200 1 CEST}
+ {243993600 3600 0 CET}
+ {260323200 7200 1 CEST}
+ {276048000 3600 0 CET}
+ {291772800 7200 1 CEST}
+ {307497600 3600 0 CET}
+ {323827200 7200 1 CEST}
+ {338947200 3600 0 CET}
+ {354672000 7200 1 CEST}
+ {370396800 3600 0 CET}
+ {386121600 7200 1 CEST}
+ {401846400 3600 0 CET}
+ {417571200 7200 1 CEST}
+ {433296000 3600 0 CET}
+ {449020800 7200 1 CEST}
+ {465350400 3600 0 CET}
+ {481075200 7200 1 CEST}
+ {496800000 3600 0 CET}
+ {512524800 7200 1 CEST}
+ {528249600 3600 0 CET}
+ {543974400 7200 1 CEST}
+ {559699200 3600 0 CET}
+ {567990000 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/Europe/Zagreb b/library/tzdata/Europe/Zagreb
new file mode 100644
index 0000000..46319a4
--- /dev/null
+++ b/library/tzdata/Europe/Zagreb
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Belgrade)]} {
+ LoadTimeZoneFile Europe/Belgrade
+}
+set TZData(:Europe/Zagreb) $TZData(:Europe/Belgrade)
diff --git a/library/tzdata/Europe/Zaporozhye b/library/tzdata/Europe/Zaporozhye
new file mode 100644
index 0000000..01418cd
--- /dev/null
+++ b/library/tzdata/Europe/Zaporozhye
@@ -0,0 +1,252 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Zaporozhye) {
+ {-9223372036854775808 8440 0 LMT}
+ {-2840149240 8400 0 CUT}
+ {-1441160400 7200 0 EET}
+ {-1247536800 10800 0 MSK}
+ {-894769200 3600 0 CET}
+ {-857257200 3600 0 CET}
+ {-844556400 7200 1 CEST}
+ {-828226800 3600 0 CET}
+ {-826419600 10800 0 MSD}
+ {354920400 14400 1 MSD}
+ {370728000 10800 0 MSK}
+ {386456400 14400 1 MSD}
+ {402264000 10800 0 MSK}
+ {417992400 14400 1 MSD}
+ {433800000 10800 0 MSK}
+ {449614800 14400 1 MSD}
+ {465346800 10800 0 MSK}
+ {481071600 14400 1 MSD}
+ {496796400 10800 0 MSK}
+ {512521200 14400 1 MSD}
+ {528246000 10800 0 MSK}
+ {543970800 14400 1 MSD}
+ {559695600 10800 0 MSK}
+ {575420400 14400 1 MSD}
+ {591145200 10800 0 MSK}
+ {606870000 14400 1 MSD}
+ {622594800 10800 0 MSK}
+ {638319600 14400 1 MSD}
+ {654649200 10800 0 MSK}
+ {670374000 10800 0 EEST}
+ {686091600 7200 0 EET}
+ {701820000 10800 1 EEST}
+ {717541200 7200 0 EET}
+ {733269600 10800 1 EEST}
+ {748990800 7200 0 EET}
+ {764719200 10800 1 EEST}
+ {780440400 7200 0 EET}
+ {788911200 7200 0 EET}
+ {796179600 10800 1 EEST}
+ {811904400 7200 0 EET}
+ {828234000 10800 1 EEST}
+ {846378000 7200 0 EET}
+ {859683600 10800 1 EEST}
+ {877827600 7200 0 EET}
+ {891133200 10800 1 EEST}
+ {909277200 7200 0 EET}
+ {922582800 10800 1 EEST}
+ {941331600 7200 0 EET}
+ {954032400 10800 1 EEST}
+ {972781200 7200 0 EET}
+ {985482000 10800 1 EEST}
+ {1004230800 7200 0 EET}
+ {1017536400 10800 1 EEST}
+ {1035680400 7200 0 EET}
+ {1048986000 10800 1 EEST}
+ {1067130000 7200 0 EET}
+ {1080435600 10800 1 EEST}
+ {1099184400 7200 0 EET}
+ {1111885200 10800 1 EEST}
+ {1130634000 7200 0 EET}
+ {1143334800 10800 1 EEST}
+ {1162083600 7200 0 EET}
+ {1174784400 10800 1 EEST}
+ {1193533200 7200 0 EET}
+ {1206838800 10800 1 EEST}
+ {1224982800 7200 0 EET}
+ {1238288400 10800 1 EEST}
+ {1256432400 7200 0 EET}
+ {1269738000 10800 1 EEST}
+ {1288486800 7200 0 EET}
+ {1301187600 10800 1 EEST}
+ {1319936400 7200 0 EET}
+ {1332637200 10800 1 EEST}
+ {1351386000 7200 0 EET}
+ {1364691600 10800 1 EEST}
+ {1382835600 7200 0 EET}
+ {1396141200 10800 1 EEST}
+ {1414285200 7200 0 EET}
+ {1427590800 10800 1 EEST}
+ {1445734800 7200 0 EET}
+ {1459040400 10800 1 EEST}
+ {1477789200 7200 0 EET}
+ {1490490000 10800 1 EEST}
+ {1509238800 7200 0 EET}
+ {1521939600 10800 1 EEST}
+ {1540688400 7200 0 EET}
+ {1553994000 10800 1 EEST}
+ {1572138000 7200 0 EET}
+ {1585443600 10800 1 EEST}
+ {1603587600 7200 0 EET}
+ {1616893200 10800 1 EEST}
+ {1635642000 7200 0 EET}
+ {1648342800 10800 1 EEST}
+ {1667091600 7200 0 EET}
+ {1679792400 10800 1 EEST}
+ {1698541200 7200 0 EET}
+ {1711846800 10800 1 EEST}
+ {1729990800 7200 0 EET}
+ {1743296400 10800 1 EEST}
+ {1761440400 7200 0 EET}
+ {1774746000 10800 1 EEST}
+ {1792890000 7200 0 EET}
+ {1806195600 10800 1 EEST}
+ {1824944400 7200 0 EET}
+ {1837645200 10800 1 EEST}
+ {1856394000 7200 0 EET}
+ {1869094800 10800 1 EEST}
+ {1887843600 7200 0 EET}
+ {1901149200 10800 1 EEST}
+ {1919293200 7200 0 EET}
+ {1932598800 10800 1 EEST}
+ {1950742800 7200 0 EET}
+ {1964048400 10800 1 EEST}
+ {1982797200 7200 0 EET}
+ {1995498000 10800 1 EEST}
+ {2014246800 7200 0 EET}
+ {2026947600 10800 1 EEST}
+ {2045696400 7200 0 EET}
+ {2058397200 10800 1 EEST}
+ {2077146000 7200 0 EET}
+ {2090451600 10800 1 EEST}
+ {2108595600 7200 0 EET}
+ {2121901200 10800 1 EEST}
+ {2140045200 7200 0 EET}
+ {2153350800 10800 1 EEST}
+ {2172099600 7200 0 EET}
+ {2184800400 10800 1 EEST}
+ {2203549200 7200 0 EET}
+ {2216250000 10800 1 EEST}
+ {2234998800 7200 0 EET}
+ {2248304400 10800 1 EEST}
+ {2266448400 7200 0 EET}
+ {2279754000 10800 1 EEST}
+ {2297898000 7200 0 EET}
+ {2311203600 10800 1 EEST}
+ {2329347600 7200 0 EET}
+ {2342653200 10800 1 EEST}
+ {2361402000 7200 0 EET}
+ {2374102800 10800 1 EEST}
+ {2392851600 7200 0 EET}
+ {2405552400 10800 1 EEST}
+ {2424301200 7200 0 EET}
+ {2437606800 10800 1 EEST}
+ {2455750800 7200 0 EET}
+ {2469056400 10800 1 EEST}
+ {2487200400 7200 0 EET}
+ {2500506000 10800 1 EEST}
+ {2519254800 7200 0 EET}
+ {2531955600 10800 1 EEST}
+ {2550704400 7200 0 EET}
+ {2563405200 10800 1 EEST}
+ {2582154000 7200 0 EET}
+ {2595459600 10800 1 EEST}
+ {2613603600 7200 0 EET}
+ {2626909200 10800 1 EEST}
+ {2645053200 7200 0 EET}
+ {2658358800 10800 1 EEST}
+ {2676502800 7200 0 EET}
+ {2689808400 10800 1 EEST}
+ {2708557200 7200 0 EET}
+ {2721258000 10800 1 EEST}
+ {2740006800 7200 0 EET}
+ {2752707600 10800 1 EEST}
+ {2771456400 7200 0 EET}
+ {2784762000 10800 1 EEST}
+ {2802906000 7200 0 EET}
+ {2816211600 10800 1 EEST}
+ {2834355600 7200 0 EET}
+ {2847661200 10800 1 EEST}
+ {2866410000 7200 0 EET}
+ {2879110800 10800 1 EEST}
+ {2897859600 7200 0 EET}
+ {2910560400 10800 1 EEST}
+ {2929309200 7200 0 EET}
+ {2942010000 10800 1 EEST}
+ {2960758800 7200 0 EET}
+ {2974064400 10800 1 EEST}
+ {2992208400 7200 0 EET}
+ {3005514000 10800 1 EEST}
+ {3023658000 7200 0 EET}
+ {3036963600 10800 1 EEST}
+ {3055712400 7200 0 EET}
+ {3068413200 10800 1 EEST}
+ {3087162000 7200 0 EET}
+ {3099862800 10800 1 EEST}
+ {3118611600 7200 0 EET}
+ {3131917200 10800 1 EEST}
+ {3150061200 7200 0 EET}
+ {3163366800 10800 1 EEST}
+ {3181510800 7200 0 EET}
+ {3194816400 10800 1 EEST}
+ {3212960400 7200 0 EET}
+ {3226266000 10800 1 EEST}
+ {3245014800 7200 0 EET}
+ {3257715600 10800 1 EEST}
+ {3276464400 7200 0 EET}
+ {3289165200 10800 1 EEST}
+ {3307914000 7200 0 EET}
+ {3321219600 10800 1 EEST}
+ {3339363600 7200 0 EET}
+ {3352669200 10800 1 EEST}
+ {3370813200 7200 0 EET}
+ {3384118800 10800 1 EEST}
+ {3402867600 7200 0 EET}
+ {3415568400 10800 1 EEST}
+ {3434317200 7200 0 EET}
+ {3447018000 10800 1 EEST}
+ {3465766800 7200 0 EET}
+ {3479072400 10800 1 EEST}
+ {3497216400 7200 0 EET}
+ {3510522000 10800 1 EEST}
+ {3528666000 7200 0 EET}
+ {3541971600 10800 1 EEST}
+ {3560115600 7200 0 EET}
+ {3573421200 10800 1 EEST}
+ {3592170000 7200 0 EET}
+ {3604870800 10800 1 EEST}
+ {3623619600 7200 0 EET}
+ {3636320400 10800 1 EEST}
+ {3655069200 7200 0 EET}
+ {3668374800 10800 1 EEST}
+ {3686518800 7200 0 EET}
+ {3699824400 10800 1 EEST}
+ {3717968400 7200 0 EET}
+ {3731274000 10800 1 EEST}
+ {3750022800 7200 0 EET}
+ {3762723600 10800 1 EEST}
+ {3781472400 7200 0 EET}
+ {3794173200 10800 1 EEST}
+ {3812922000 7200 0 EET}
+ {3825622800 10800 1 EEST}
+ {3844371600 7200 0 EET}
+ {3857677200 10800 1 EEST}
+ {3875821200 7200 0 EET}
+ {3889126800 10800 1 EEST}
+ {3907270800 7200 0 EET}
+ {3920576400 10800 1 EEST}
+ {3939325200 7200 0 EET}
+ {3952026000 10800 1 EEST}
+ {3970774800 7200 0 EET}
+ {3983475600 10800 1 EEST}
+ {4002224400 7200 0 EET}
+ {4015530000 10800 1 EEST}
+ {4033674000 7200 0 EET}
+ {4046979600 10800 1 EEST}
+ {4065123600 7200 0 EET}
+ {4078429200 10800 1 EEST}
+ {4096573200 7200 0 EET}
+}
diff --git a/library/tzdata/Europe/Zurich b/library/tzdata/Europe/Zurich
new file mode 100644
index 0000000..87a20db
--- /dev/null
+++ b/library/tzdata/Europe/Zurich
@@ -0,0 +1,250 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Europe/Zurich) {
+ {-9223372036854775808 2048 0 LMT}
+ {-3675198848 1786 0 BMT}
+ {-2385246586 3600 0 CET}
+ {-904435200 7200 1 CEST}
+ {-891129600 3600 0 CET}
+ {-872985600 7200 1 CEST}
+ {-859680000 3600 0 CET}
+ {347151600 3600 0 CET}
+ {354675600 7200 1 CEST}
+ {370400400 3600 0 CET}
+ {386125200 7200 1 CEST}
+ {401850000 3600 0 CET}
+ {417574800 7200 1 CEST}
+ {433299600 3600 0 CET}
+ {449024400 7200 1 CEST}
+ {465354000 3600 0 CET}
+ {481078800 7200 1 CEST}
+ {496803600 3600 0 CET}
+ {512528400 7200 1 CEST}
+ {528253200 3600 0 CET}
+ {543978000 7200 1 CEST}
+ {559702800 3600 0 CET}
+ {575427600 7200 1 CEST}
+ {591152400 3600 0 CET}
+ {606877200 7200 1 CEST}
+ {622602000 3600 0 CET}
+ {638326800 7200 1 CEST}
+ {654656400 3600 0 CET}
+ {670381200 7200 1 CEST}
+ {686106000 3600 0 CET}
+ {701830800 7200 1 CEST}
+ {717555600 3600 0 CET}
+ {733280400 7200 1 CEST}
+ {749005200 3600 0 CET}
+ {764730000 7200 1 CEST}
+ {780454800 3600 0 CET}
+ {796179600 7200 1 CEST}
+ {811904400 3600 0 CET}
+ {828234000 7200 1 CEST}
+ {846378000 3600 0 CET}
+ {859683600 7200 1 CEST}
+ {877827600 3600 0 CET}
+ {891133200 7200 1 CEST}
+ {909277200 3600 0 CET}
+ {922582800 7200 1 CEST}
+ {941331600 3600 0 CET}
+ {954032400 7200 1 CEST}
+ {972781200 3600 0 CET}
+ {985482000 7200 1 CEST}
+ {1004230800 3600 0 CET}
+ {1017536400 7200 1 CEST}
+ {1035680400 3600 0 CET}
+ {1048986000 7200 1 CEST}
+ {1067130000 3600 0 CET}
+ {1080435600 7200 1 CEST}
+ {1099184400 3600 0 CET}
+ {1111885200 7200 1 CEST}
+ {1130634000 3600 0 CET}
+ {1143334800 7200 1 CEST}
+ {1162083600 3600 0 CET}
+ {1174784400 7200 1 CEST}
+ {1193533200 3600 0 CET}
+ {1206838800 7200 1 CEST}
+ {1224982800 3600 0 CET}
+ {1238288400 7200 1 CEST}
+ {1256432400 3600 0 CET}
+ {1269738000 7200 1 CEST}
+ {1288486800 3600 0 CET}
+ {1301187600 7200 1 CEST}
+ {1319936400 3600 0 CET}
+ {1332637200 7200 1 CEST}
+ {1351386000 3600 0 CET}
+ {1364691600 7200 1 CEST}
+ {1382835600 3600 0 CET}
+ {1396141200 7200 1 CEST}
+ {1414285200 3600 0 CET}
+ {1427590800 7200 1 CEST}
+ {1445734800 3600 0 CET}
+ {1459040400 7200 1 CEST}
+ {1477789200 3600 0 CET}
+ {1490490000 7200 1 CEST}
+ {1509238800 3600 0 CET}
+ {1521939600 7200 1 CEST}
+ {1540688400 3600 0 CET}
+ {1553994000 7200 1 CEST}
+ {1572138000 3600 0 CET}
+ {1585443600 7200 1 CEST}
+ {1603587600 3600 0 CET}
+ {1616893200 7200 1 CEST}
+ {1635642000 3600 0 CET}
+ {1648342800 7200 1 CEST}
+ {1667091600 3600 0 CET}
+ {1679792400 7200 1 CEST}
+ {1698541200 3600 0 CET}
+ {1711846800 7200 1 CEST}
+ {1729990800 3600 0 CET}
+ {1743296400 7200 1 CEST}
+ {1761440400 3600 0 CET}
+ {1774746000 7200 1 CEST}
+ {1792890000 3600 0 CET}
+ {1806195600 7200 1 CEST}
+ {1824944400 3600 0 CET}
+ {1837645200 7200 1 CEST}
+ {1856394000 3600 0 CET}
+ {1869094800 7200 1 CEST}
+ {1887843600 3600 0 CET}
+ {1901149200 7200 1 CEST}
+ {1919293200 3600 0 CET}
+ {1932598800 7200 1 CEST}
+ {1950742800 3600 0 CET}
+ {1964048400 7200 1 CEST}
+ {1982797200 3600 0 CET}
+ {1995498000 7200 1 CEST}
+ {2014246800 3600 0 CET}
+ {2026947600 7200 1 CEST}
+ {2045696400 3600 0 CET}
+ {2058397200 7200 1 CEST}
+ {2077146000 3600 0 CET}
+ {2090451600 7200 1 CEST}
+ {2108595600 3600 0 CET}
+ {2121901200 7200 1 CEST}
+ {2140045200 3600 0 CET}
+ {2153350800 7200 1 CEST}
+ {2172099600 3600 0 CET}
+ {2184800400 7200 1 CEST}
+ {2203549200 3600 0 CET}
+ {2216250000 7200 1 CEST}
+ {2234998800 3600 0 CET}
+ {2248304400 7200 1 CEST}
+ {2266448400 3600 0 CET}
+ {2279754000 7200 1 CEST}
+ {2297898000 3600 0 CET}
+ {2311203600 7200 1 CEST}
+ {2329347600 3600 0 CET}
+ {2342653200 7200 1 CEST}
+ {2361402000 3600 0 CET}
+ {2374102800 7200 1 CEST}
+ {2392851600 3600 0 CET}
+ {2405552400 7200 1 CEST}
+ {2424301200 3600 0 CET}
+ {2437606800 7200 1 CEST}
+ {2455750800 3600 0 CET}
+ {2469056400 7200 1 CEST}
+ {2487200400 3600 0 CET}
+ {2500506000 7200 1 CEST}
+ {2519254800 3600 0 CET}
+ {2531955600 7200 1 CEST}
+ {2550704400 3600 0 CET}
+ {2563405200 7200 1 CEST}
+ {2582154000 3600 0 CET}
+ {2595459600 7200 1 CEST}
+ {2613603600 3600 0 CET}
+ {2626909200 7200 1 CEST}
+ {2645053200 3600 0 CET}
+ {2658358800 7200 1 CEST}
+ {2676502800 3600 0 CET}
+ {2689808400 7200 1 CEST}
+ {2708557200 3600 0 CET}
+ {2721258000 7200 1 CEST}
+ {2740006800 3600 0 CET}
+ {2752707600 7200 1 CEST}
+ {2771456400 3600 0 CET}
+ {2784762000 7200 1 CEST}
+ {2802906000 3600 0 CET}
+ {2816211600 7200 1 CEST}
+ {2834355600 3600 0 CET}
+ {2847661200 7200 1 CEST}
+ {2866410000 3600 0 CET}
+ {2879110800 7200 1 CEST}
+ {2897859600 3600 0 CET}
+ {2910560400 7200 1 CEST}
+ {2929309200 3600 0 CET}
+ {2942010000 7200 1 CEST}
+ {2960758800 3600 0 CET}
+ {2974064400 7200 1 CEST}
+ {2992208400 3600 0 CET}
+ {3005514000 7200 1 CEST}
+ {3023658000 3600 0 CET}
+ {3036963600 7200 1 CEST}
+ {3055712400 3600 0 CET}
+ {3068413200 7200 1 CEST}
+ {3087162000 3600 0 CET}
+ {3099862800 7200 1 CEST}
+ {3118611600 3600 0 CET}
+ {3131917200 7200 1 CEST}
+ {3150061200 3600 0 CET}
+ {3163366800 7200 1 CEST}
+ {3181510800 3600 0 CET}
+ {3194816400 7200 1 CEST}
+ {3212960400 3600 0 CET}
+ {3226266000 7200 1 CEST}
+ {3245014800 3600 0 CET}
+ {3257715600 7200 1 CEST}
+ {3276464400 3600 0 CET}
+ {3289165200 7200 1 CEST}
+ {3307914000 3600 0 CET}
+ {3321219600 7200 1 CEST}
+ {3339363600 3600 0 CET}
+ {3352669200 7200 1 CEST}
+ {3370813200 3600 0 CET}
+ {3384118800 7200 1 CEST}
+ {3402867600 3600 0 CET}
+ {3415568400 7200 1 CEST}
+ {3434317200 3600 0 CET}
+ {3447018000 7200 1 CEST}
+ {3465766800 3600 0 CET}
+ {3479072400 7200 1 CEST}
+ {3497216400 3600 0 CET}
+ {3510522000 7200 1 CEST}
+ {3528666000 3600 0 CET}
+ {3541971600 7200 1 CEST}
+ {3560115600 3600 0 CET}
+ {3573421200 7200 1 CEST}
+ {3592170000 3600 0 CET}
+ {3604870800 7200 1 CEST}
+ {3623619600 3600 0 CET}
+ {3636320400 7200 1 CEST}
+ {3655069200 3600 0 CET}
+ {3668374800 7200 1 CEST}
+ {3686518800 3600 0 CET}
+ {3699824400 7200 1 CEST}
+ {3717968400 3600 0 CET}
+ {3731274000 7200 1 CEST}
+ {3750022800 3600 0 CET}
+ {3762723600 7200 1 CEST}
+ {3781472400 3600 0 CET}
+ {3794173200 7200 1 CEST}
+ {3812922000 3600 0 CET}
+ {3825622800 7200 1 CEST}
+ {3844371600 3600 0 CET}
+ {3857677200 7200 1 CEST}
+ {3875821200 3600 0 CET}
+ {3889126800 7200 1 CEST}
+ {3907270800 3600 0 CET}
+ {3920576400 7200 1 CEST}
+ {3939325200 3600 0 CET}
+ {3952026000 7200 1 CEST}
+ {3970774800 3600 0 CET}
+ {3983475600 7200 1 CEST}
+ {4002224400 3600 0 CET}
+ {4015530000 7200 1 CEST}
+ {4033674000 3600 0 CET}
+ {4046979600 7200 1 CEST}
+ {4065123600 3600 0 CET}
+ {4078429200 7200 1 CEST}
+ {4096573200 3600 0 CET}
+}
diff --git a/library/tzdata/GB b/library/tzdata/GB
new file mode 100644
index 0000000..72d77ee
--- /dev/null
+++ b/library/tzdata/GB
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/London)]} {
+ LoadTimeZoneFile Europe/London
+}
+set TZData(:GB) $TZData(:Europe/London)
diff --git a/library/tzdata/GB-Eire b/library/tzdata/GB-Eire
new file mode 100644
index 0000000..1622417
--- /dev/null
+++ b/library/tzdata/GB-Eire
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/London)]} {
+ LoadTimeZoneFile Europe/London
+}
+set TZData(:GB-Eire) $TZData(:Europe/London)
diff --git a/library/tzdata/GMT b/library/tzdata/GMT
new file mode 100644
index 0000000..4258564
--- /dev/null
+++ b/library/tzdata/GMT
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:GMT) $TZData(:Etc/GMT)
diff --git a/library/tzdata/GMT+0 b/library/tzdata/GMT+0
new file mode 100644
index 0000000..a1e8126
--- /dev/null
+++ b/library/tzdata/GMT+0
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:GMT+0) $TZData(:Etc/GMT)
diff --git a/library/tzdata/GMT-0 b/library/tzdata/GMT-0
new file mode 100644
index 0000000..04ccafe
--- /dev/null
+++ b/library/tzdata/GMT-0
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:GMT-0) $TZData(:Etc/GMT)
diff --git a/library/tzdata/GMT0 b/library/tzdata/GMT0
new file mode 100644
index 0000000..92e95a3
--- /dev/null
+++ b/library/tzdata/GMT0
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:GMT0) $TZData(:Etc/GMT)
diff --git a/library/tzdata/Greenwich b/library/tzdata/Greenwich
new file mode 100644
index 0000000..6115233
--- /dev/null
+++ b/library/tzdata/Greenwich
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/GMT)]} {
+ LoadTimeZoneFile Etc/GMT
+}
+set TZData(:Greenwich) $TZData(:Etc/GMT)
diff --git a/library/tzdata/HST b/library/tzdata/HST
new file mode 100644
index 0000000..fea7f14
--- /dev/null
+++ b/library/tzdata/HST
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:HST) {
+ {-9223372036854775808 -36000 0 HST}
+}
diff --git a/library/tzdata/Hongkong b/library/tzdata/Hongkong
new file mode 100644
index 0000000..f9d4dac
--- /dev/null
+++ b/library/tzdata/Hongkong
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Hong_Kong)]} {
+ LoadTimeZoneFile Asia/Hong_Kong
+}
+set TZData(:Hongkong) $TZData(:Asia/Hong_Kong)
diff --git a/library/tzdata/Iceland b/library/tzdata/Iceland
new file mode 100644
index 0000000..eb3f3eb
--- /dev/null
+++ b/library/tzdata/Iceland
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Atlantic/Reykjavik)]} {
+ LoadTimeZoneFile Atlantic/Reykjavik
+}
+set TZData(:Iceland) $TZData(:Atlantic/Reykjavik)
diff --git a/library/tzdata/Indian/Antananarivo b/library/tzdata/Indian/Antananarivo
new file mode 100644
index 0000000..217715e
--- /dev/null
+++ b/library/tzdata/Indian/Antananarivo
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Antananarivo) {
+ {-9223372036854775808 11404 0 LMT}
+ {-1846293004 10800 0 EAT}
+ {-499924800 14400 1 EAST}
+ {-492062400 10800 0 EAT}
+}
diff --git a/library/tzdata/Indian/Chagos b/library/tzdata/Indian/Chagos
new file mode 100644
index 0000000..a5cec61
--- /dev/null
+++ b/library/tzdata/Indian/Chagos
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Chagos) {
+ {-9223372036854775808 17380 0 LMT}
+ {-1988167780 18000 0 IOT}
+ {820436400 21600 0 IOT}
+}
diff --git a/library/tzdata/Indian/Christmas b/library/tzdata/Indian/Christmas
new file mode 100644
index 0000000..c36e973
--- /dev/null
+++ b/library/tzdata/Indian/Christmas
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Christmas) {
+ {-9223372036854775808 25372 0 LMT}
+ {-2364102172 25200 0 CXT}
+}
diff --git a/library/tzdata/Indian/Cocos b/library/tzdata/Indian/Cocos
new file mode 100644
index 0000000..a63ae68
--- /dev/null
+++ b/library/tzdata/Indian/Cocos
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Cocos) {
+ {-9223372036854775808 23260 0 LMT}
+ {-2209012060 23400 0 CCT}
+}
diff --git a/library/tzdata/Indian/Comoro b/library/tzdata/Indian/Comoro
new file mode 100644
index 0000000..0b3c33a
--- /dev/null
+++ b/library/tzdata/Indian/Comoro
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Comoro) {
+ {-9223372036854775808 10384 0 LMT}
+ {-1846291984 10800 0 EAT}
+}
diff --git a/library/tzdata/Indian/Kerguelen b/library/tzdata/Indian/Kerguelen
new file mode 100644
index 0000000..b41b85a
--- /dev/null
+++ b/library/tzdata/Indian/Kerguelen
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Kerguelen) {
+ {-9223372036854775808 0 0 zzz}
+ {-631152000 18000 0 TFT}
+}
diff --git a/library/tzdata/Indian/Mahe b/library/tzdata/Indian/Mahe
new file mode 100644
index 0000000..c88a24b
--- /dev/null
+++ b/library/tzdata/Indian/Mahe
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Mahe) {
+ {-9223372036854775808 13308 0 LMT}
+ {-2006653308 14400 0 SCT}
+}
diff --git a/library/tzdata/Indian/Maldives b/library/tzdata/Indian/Maldives
new file mode 100644
index 0000000..2c2c739
--- /dev/null
+++ b/library/tzdata/Indian/Maldives
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Maldives) {
+ {-9223372036854775808 17640 0 LMT}
+ {-2840158440 17640 0 MMT}
+ {-315636840 18000 0 MVT}
+}
diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius
new file mode 100644
index 0000000..a9c07eb
--- /dev/null
+++ b/library/tzdata/Indian/Mauritius
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Mauritius) {
+ {-9223372036854775808 13800 0 LMT}
+ {-1988164200 14400 0 MUT}
+ {403041600 18000 1 MUST}
+ {417034800 14400 0 MUT}
+ {1224972000 18000 1 MUST}
+ {1238274000 14400 0 MUT}
+}
diff --git a/library/tzdata/Indian/Mayotte b/library/tzdata/Indian/Mayotte
new file mode 100644
index 0000000..0fe5f56
--- /dev/null
+++ b/library/tzdata/Indian/Mayotte
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Mayotte) {
+ {-9223372036854775808 10856 0 LMT}
+ {-1846292456 10800 0 EAT}
+}
diff --git a/library/tzdata/Indian/Reunion b/library/tzdata/Indian/Reunion
new file mode 100644
index 0000000..de2dd60
--- /dev/null
+++ b/library/tzdata/Indian/Reunion
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Indian/Reunion) {
+ {-9223372036854775808 13312 0 LMT}
+ {-1848886912 14400 0 RET}
+}
diff --git a/library/tzdata/Iran b/library/tzdata/Iran
new file mode 100644
index 0000000..e200b4d
--- /dev/null
+++ b/library/tzdata/Iran
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Tehran)]} {
+ LoadTimeZoneFile Asia/Tehran
+}
+set TZData(:Iran) $TZData(:Asia/Tehran)
diff --git a/library/tzdata/Israel b/library/tzdata/Israel
new file mode 100644
index 0000000..af521f5
--- /dev/null
+++ b/library/tzdata/Israel
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Jerusalem)]} {
+ LoadTimeZoneFile Asia/Jerusalem
+}
+set TZData(:Israel) $TZData(:Asia/Jerusalem)
diff --git a/library/tzdata/Jamaica b/library/tzdata/Jamaica
new file mode 100644
index 0000000..ddb5d45
--- /dev/null
+++ b/library/tzdata/Jamaica
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Jamaica)]} {
+ LoadTimeZoneFile America/Jamaica
+}
+set TZData(:Jamaica) $TZData(:America/Jamaica)
diff --git a/library/tzdata/Japan b/library/tzdata/Japan
new file mode 100644
index 0000000..428a79f
--- /dev/null
+++ b/library/tzdata/Japan
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Tokyo)]} {
+ LoadTimeZoneFile Asia/Tokyo
+}
+set TZData(:Japan) $TZData(:Asia/Tokyo)
diff --git a/library/tzdata/Kwajalein b/library/tzdata/Kwajalein
new file mode 100644
index 0000000..586db6d
--- /dev/null
+++ b/library/tzdata/Kwajalein
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Kwajalein)]} {
+ LoadTimeZoneFile Pacific/Kwajalein
+}
+set TZData(:Kwajalein) $TZData(:Pacific/Kwajalein)
diff --git a/library/tzdata/Libya b/library/tzdata/Libya
new file mode 100644
index 0000000..6cd77e1
--- /dev/null
+++ b/library/tzdata/Libya
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Africa/Tripoli)]} {
+ LoadTimeZoneFile Africa/Tripoli
+}
+set TZData(:Libya) $TZData(:Africa/Tripoli)
diff --git a/library/tzdata/MET b/library/tzdata/MET
new file mode 100644
index 0000000..8789c97
--- /dev/null
+++ b/library/tzdata/MET
@@ -0,0 +1,265 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:MET) {
+ {-9223372036854775808 3600 0 MET}
+ {-1693706400 7200 1 MEST}
+ {-1680483600 3600 0 MET}
+ {-1663455600 7200 1 MEST}
+ {-1650150000 3600 0 MET}
+ {-1632006000 7200 1 MEST}
+ {-1618700400 3600 0 MET}
+ {-938905200 7200 1 MEST}
+ {-857257200 3600 0 MET}
+ {-844556400 7200 1 MEST}
+ {-828226800 3600 0 MET}
+ {-812502000 7200 1 MEST}
+ {-796777200 3600 0 MET}
+ {-781052400 7200 1 MEST}
+ {-766623600 3600 0 MET}
+ {228877200 7200 1 MEST}
+ {243997200 3600 0 MET}
+ {260326800 7200 1 MEST}
+ {276051600 3600 0 MET}
+ {291776400 7200 1 MEST}
+ {307501200 3600 0 MET}
+ {323830800 7200 1 MEST}
+ {338950800 3600 0 MET}
+ {354675600 7200 1 MEST}
+ {370400400 3600 0 MET}
+ {386125200 7200 1 MEST}
+ {401850000 3600 0 MET}
+ {417574800 7200 1 MEST}
+ {433299600 3600 0 MET}
+ {449024400 7200 1 MEST}
+ {465354000 3600 0 MET}
+ {481078800 7200 1 MEST}
+ {496803600 3600 0 MET}
+ {512528400 7200 1 MEST}
+ {528253200 3600 0 MET}
+ {543978000 7200 1 MEST}
+ {559702800 3600 0 MET}
+ {575427600 7200 1 MEST}
+ {591152400 3600 0 MET}
+ {606877200 7200 1 MEST}
+ {622602000 3600 0 MET}
+ {638326800 7200 1 MEST}
+ {654656400 3600 0 MET}
+ {670381200 7200 1 MEST}
+ {686106000 3600 0 MET}
+ {701830800 7200 1 MEST}
+ {717555600 3600 0 MET}
+ {733280400 7200 1 MEST}
+ {749005200 3600 0 MET}
+ {764730000 7200 1 MEST}
+ {780454800 3600 0 MET}
+ {796179600 7200 1 MEST}
+ {811904400 3600 0 MET}
+ {828234000 7200 1 MEST}
+ {846378000 3600 0 MET}
+ {859683600 7200 1 MEST}
+ {877827600 3600 0 MET}
+ {891133200 7200 1 MEST}
+ {909277200 3600 0 MET}
+ {922582800 7200 1 MEST}
+ {941331600 3600 0 MET}
+ {954032400 7200 1 MEST}
+ {972781200 3600 0 MET}
+ {985482000 7200 1 MEST}
+ {1004230800 3600 0 MET}
+ {1017536400 7200 1 MEST}
+ {1035680400 3600 0 MET}
+ {1048986000 7200 1 MEST}
+ {1067130000 3600 0 MET}
+ {1080435600 7200 1 MEST}
+ {1099184400 3600 0 MET}
+ {1111885200 7200 1 MEST}
+ {1130634000 3600 0 MET}
+ {1143334800 7200 1 MEST}
+ {1162083600 3600 0 MET}
+ {1174784400 7200 1 MEST}
+ {1193533200 3600 0 MET}
+ {1206838800 7200 1 MEST}
+ {1224982800 3600 0 MET}
+ {1238288400 7200 1 MEST}
+ {1256432400 3600 0 MET}
+ {1269738000 7200 1 MEST}
+ {1288486800 3600 0 MET}
+ {1301187600 7200 1 MEST}
+ {1319936400 3600 0 MET}
+ {1332637200 7200 1 MEST}
+ {1351386000 3600 0 MET}
+ {1364691600 7200 1 MEST}
+ {1382835600 3600 0 MET}
+ {1396141200 7200 1 MEST}
+ {1414285200 3600 0 MET}
+ {1427590800 7200 1 MEST}
+ {1445734800 3600 0 MET}
+ {1459040400 7200 1 MEST}
+ {1477789200 3600 0 MET}
+ {1490490000 7200 1 MEST}
+ {1509238800 3600 0 MET}
+ {1521939600 7200 1 MEST}
+ {1540688400 3600 0 MET}
+ {1553994000 7200 1 MEST}
+ {1572138000 3600 0 MET}
+ {1585443600 7200 1 MEST}
+ {1603587600 3600 0 MET}
+ {1616893200 7200 1 MEST}
+ {1635642000 3600 0 MET}
+ {1648342800 7200 1 MEST}
+ {1667091600 3600 0 MET}
+ {1679792400 7200 1 MEST}
+ {1698541200 3600 0 MET}
+ {1711846800 7200 1 MEST}
+ {1729990800 3600 0 MET}
+ {1743296400 7200 1 MEST}
+ {1761440400 3600 0 MET}
+ {1774746000 7200 1 MEST}
+ {1792890000 3600 0 MET}
+ {1806195600 7200 1 MEST}
+ {1824944400 3600 0 MET}
+ {1837645200 7200 1 MEST}
+ {1856394000 3600 0 MET}
+ {1869094800 7200 1 MEST}
+ {1887843600 3600 0 MET}
+ {1901149200 7200 1 MEST}
+ {1919293200 3600 0 MET}
+ {1932598800 7200 1 MEST}
+ {1950742800 3600 0 MET}
+ {1964048400 7200 1 MEST}
+ {1982797200 3600 0 MET}
+ {1995498000 7200 1 MEST}
+ {2014246800 3600 0 MET}
+ {2026947600 7200 1 MEST}
+ {2045696400 3600 0 MET}
+ {2058397200 7200 1 MEST}
+ {2077146000 3600 0 MET}
+ {2090451600 7200 1 MEST}
+ {2108595600 3600 0 MET}
+ {2121901200 7200 1 MEST}
+ {2140045200 3600 0 MET}
+ {2153350800 7200 1 MEST}
+ {2172099600 3600 0 MET}
+ {2184800400 7200 1 MEST}
+ {2203549200 3600 0 MET}
+ {2216250000 7200 1 MEST}
+ {2234998800 3600 0 MET}
+ {2248304400 7200 1 MEST}
+ {2266448400 3600 0 MET}
+ {2279754000 7200 1 MEST}
+ {2297898000 3600 0 MET}
+ {2311203600 7200 1 MEST}
+ {2329347600 3600 0 MET}
+ {2342653200 7200 1 MEST}
+ {2361402000 3600 0 MET}
+ {2374102800 7200 1 MEST}
+ {2392851600 3600 0 MET}
+ {2405552400 7200 1 MEST}
+ {2424301200 3600 0 MET}
+ {2437606800 7200 1 MEST}
+ {2455750800 3600 0 MET}
+ {2469056400 7200 1 MEST}
+ {2487200400 3600 0 MET}
+ {2500506000 7200 1 MEST}
+ {2519254800 3600 0 MET}
+ {2531955600 7200 1 MEST}
+ {2550704400 3600 0 MET}
+ {2563405200 7200 1 MEST}
+ {2582154000 3600 0 MET}
+ {2595459600 7200 1 MEST}
+ {2613603600 3600 0 MET}
+ {2626909200 7200 1 MEST}
+ {2645053200 3600 0 MET}
+ {2658358800 7200 1 MEST}
+ {2676502800 3600 0 MET}
+ {2689808400 7200 1 MEST}
+ {2708557200 3600 0 MET}
+ {2721258000 7200 1 MEST}
+ {2740006800 3600 0 MET}
+ {2752707600 7200 1 MEST}
+ {2771456400 3600 0 MET}
+ {2784762000 7200 1 MEST}
+ {2802906000 3600 0 MET}
+ {2816211600 7200 1 MEST}
+ {2834355600 3600 0 MET}
+ {2847661200 7200 1 MEST}
+ {2866410000 3600 0 MET}
+ {2879110800 7200 1 MEST}
+ {2897859600 3600 0 MET}
+ {2910560400 7200 1 MEST}
+ {2929309200 3600 0 MET}
+ {2942010000 7200 1 MEST}
+ {2960758800 3600 0 MET}
+ {2974064400 7200 1 MEST}
+ {2992208400 3600 0 MET}
+ {3005514000 7200 1 MEST}
+ {3023658000 3600 0 MET}
+ {3036963600 7200 1 MEST}
+ {3055712400 3600 0 MET}
+ {3068413200 7200 1 MEST}
+ {3087162000 3600 0 MET}
+ {3099862800 7200 1 MEST}
+ {3118611600 3600 0 MET}
+ {3131917200 7200 1 MEST}
+ {3150061200 3600 0 MET}
+ {3163366800 7200 1 MEST}
+ {3181510800 3600 0 MET}
+ {3194816400 7200 1 MEST}
+ {3212960400 3600 0 MET}
+ {3226266000 7200 1 MEST}
+ {3245014800 3600 0 MET}
+ {3257715600 7200 1 MEST}
+ {3276464400 3600 0 MET}
+ {3289165200 7200 1 MEST}
+ {3307914000 3600 0 MET}
+ {3321219600 7200 1 MEST}
+ {3339363600 3600 0 MET}
+ {3352669200 7200 1 MEST}
+ {3370813200 3600 0 MET}
+ {3384118800 7200 1 MEST}
+ {3402867600 3600 0 MET}
+ {3415568400 7200 1 MEST}
+ {3434317200 3600 0 MET}
+ {3447018000 7200 1 MEST}
+ {3465766800 3600 0 MET}
+ {3479072400 7200 1 MEST}
+ {3497216400 3600 0 MET}
+ {3510522000 7200 1 MEST}
+ {3528666000 3600 0 MET}
+ {3541971600 7200 1 MEST}
+ {3560115600 3600 0 MET}
+ {3573421200 7200 1 MEST}
+ {3592170000 3600 0 MET}
+ {3604870800 7200 1 MEST}
+ {3623619600 3600 0 MET}
+ {3636320400 7200 1 MEST}
+ {3655069200 3600 0 MET}
+ {3668374800 7200 1 MEST}
+ {3686518800 3600 0 MET}
+ {3699824400 7200 1 MEST}
+ {3717968400 3600 0 MET}
+ {3731274000 7200 1 MEST}
+ {3750022800 3600 0 MET}
+ {3762723600 7200 1 MEST}
+ {3781472400 3600 0 MET}
+ {3794173200 7200 1 MEST}
+ {3812922000 3600 0 MET}
+ {3825622800 7200 1 MEST}
+ {3844371600 3600 0 MET}
+ {3857677200 7200 1 MEST}
+ {3875821200 3600 0 MET}
+ {3889126800 7200 1 MEST}
+ {3907270800 3600 0 MET}
+ {3920576400 7200 1 MEST}
+ {3939325200 3600 0 MET}
+ {3952026000 7200 1 MEST}
+ {3970774800 3600 0 MET}
+ {3983475600 7200 1 MEST}
+ {4002224400 3600 0 MET}
+ {4015530000 7200 1 MEST}
+ {4033674000 3600 0 MET}
+ {4046979600 7200 1 MEST}
+ {4065123600 3600 0 MET}
+ {4078429200 7200 1 MEST}
+ {4096573200 3600 0 MET}
+}
diff --git a/library/tzdata/MST b/library/tzdata/MST
new file mode 100644
index 0000000..8c967ab
--- /dev/null
+++ b/library/tzdata/MST
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:MST) {
+ {-9223372036854775808 -25200 0 MST}
+}
diff --git a/library/tzdata/MST7MDT b/library/tzdata/MST7MDT
new file mode 100644
index 0000000..ff52048
--- /dev/null
+++ b/library/tzdata/MST7MDT
@@ -0,0 +1,278 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:MST7MDT) {
+ {-9223372036854775808 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126694800 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/Mexico/BajaNorte b/library/tzdata/Mexico/BajaNorte
new file mode 100644
index 0000000..8f6f459
--- /dev/null
+++ b/library/tzdata/Mexico/BajaNorte
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Tijuana)]} {
+ LoadTimeZoneFile America/Tijuana
+}
+set TZData(:Mexico/BajaNorte) $TZData(:America/Tijuana)
diff --git a/library/tzdata/Mexico/BajaSur b/library/tzdata/Mexico/BajaSur
new file mode 100644
index 0000000..6d335a1
--- /dev/null
+++ b/library/tzdata/Mexico/BajaSur
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Mazatlan)]} {
+ LoadTimeZoneFile America/Mazatlan
+}
+set TZData(:Mexico/BajaSur) $TZData(:America/Mazatlan)
diff --git a/library/tzdata/Mexico/General b/library/tzdata/Mexico/General
new file mode 100644
index 0000000..0cac92f
--- /dev/null
+++ b/library/tzdata/Mexico/General
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Mexico_City)]} {
+ LoadTimeZoneFile America/Mexico_City
+}
+set TZData(:Mexico/General) $TZData(:America/Mexico_City)
diff --git a/library/tzdata/NZ b/library/tzdata/NZ
new file mode 100644
index 0000000..36d22a7
--- /dev/null
+++ b/library/tzdata/NZ
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Auckland)]} {
+ LoadTimeZoneFile Pacific/Auckland
+}
+set TZData(:NZ) $TZData(:Pacific/Auckland)
diff --git a/library/tzdata/NZ-CHAT b/library/tzdata/NZ-CHAT
new file mode 100644
index 0000000..7f7c918
--- /dev/null
+++ b/library/tzdata/NZ-CHAT
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Chatham)]} {
+ LoadTimeZoneFile Pacific/Chatham
+}
+set TZData(:NZ-CHAT) $TZData(:Pacific/Chatham)
diff --git a/library/tzdata/Navajo b/library/tzdata/Navajo
new file mode 100644
index 0000000..78cc2e2
--- /dev/null
+++ b/library/tzdata/Navajo
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Denver)]} {
+ LoadTimeZoneFile America/Denver
+}
+set TZData(:Navajo) $TZData(:America/Denver)
diff --git a/library/tzdata/PRC b/library/tzdata/PRC
new file mode 100644
index 0000000..1d8bb7c
--- /dev/null
+++ b/library/tzdata/PRC
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Shanghai)]} {
+ LoadTimeZoneFile Asia/Shanghai
+}
+set TZData(:PRC) $TZData(:Asia/Shanghai)
diff --git a/library/tzdata/PST8PDT b/library/tzdata/PST8PDT
new file mode 100644
index 0000000..87a94da
--- /dev/null
+++ b/library/tzdata/PST8PDT
@@ -0,0 +1,278 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:PST8PDT) {
+ {-9223372036854775808 -28800 0 PST}
+ {-1633269600 -25200 1 PDT}
+ {-1615129200 -28800 0 PST}
+ {-1601820000 -25200 1 PDT}
+ {-1583679600 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-84376800 -25200 1 PDT}
+ {-68655600 -28800 0 PST}
+ {-52927200 -25200 1 PDT}
+ {-37206000 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1173607200 -25200 1 PDT}
+ {1194166800 -28800 0 PST}
+ {1205056800 -25200 1 PDT}
+ {1225616400 -28800 0 PST}
+ {1236506400 -25200 1 PDT}
+ {1257066000 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
+}
diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia
new file mode 100644
index 0000000..e6f33ad
--- /dev/null
+++ b/library/tzdata/Pacific/Apia
@@ -0,0 +1,188 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Apia) {
+ {-9223372036854775808 45184 0 LMT}
+ {-2855737984 -41216 0 LMT}
+ {-1861878784 -41400 0 SAMT}
+ {-631110600 -39600 0 WST}
+ {1285498800 -36000 1 WSDT}
+ {1301752800 -39600 0 WST}
+ {1316872800 -36000 1 WSDT}
+ {1325239200 50400 1 WSDT}
+ {1333202400 46800 0 WST}
+ {1348927200 50400 1 WSDT}
+ {1365256800 46800 0 WST}
+ {1380376800 50400 1 WSDT}
+ {1396706400 46800 0 WST}
+ {1411826400 50400 1 WSDT}
+ {1428156000 46800 0 WST}
+ {1443276000 50400 1 WSDT}
+ {1459605600 46800 0 WST}
+ {1474725600 50400 1 WSDT}
+ {1491055200 46800 0 WST}
+ {1506175200 50400 1 WSDT}
+ {1522504800 46800 0 WST}
+ {1538229600 50400 1 WSDT}
+ {1554559200 46800 0 WST}
+ {1569679200 50400 1 WSDT}
+ {1586008800 46800 0 WST}
+ {1601128800 50400 1 WSDT}
+ {1617458400 46800 0 WST}
+ {1632578400 50400 1 WSDT}
+ {1648908000 46800 0 WST}
+ {1664028000 50400 1 WSDT}
+ {1680357600 46800 0 WST}
+ {1695477600 50400 1 WSDT}
+ {1712412000 46800 0 WST}
+ {1727532000 50400 1 WSDT}
+ {1743861600 46800 0 WST}
+ {1758981600 50400 1 WSDT}
+ {1775311200 46800 0 WST}
+ {1790431200 50400 1 WSDT}
+ {1806760800 46800 0 WST}
+ {1821880800 50400 1 WSDT}
+ {1838210400 46800 0 WST}
+ {1853330400 50400 1 WSDT}
+ {1869660000 46800 0 WST}
+ {1885384800 50400 1 WSDT}
+ {1901714400 46800 0 WST}
+ {1916834400 50400 1 WSDT}
+ {1933164000 46800 0 WST}
+ {1948284000 50400 1 WSDT}
+ {1964613600 46800 0 WST}
+ {1979733600 50400 1 WSDT}
+ {1996063200 46800 0 WST}
+ {2011183200 50400 1 WSDT}
+ {2027512800 46800 0 WST}
+ {2042632800 50400 1 WSDT}
+ {2058962400 46800 0 WST}
+ {2074687200 50400 1 WSDT}
+ {2091016800 46800 0 WST}
+ {2106136800 50400 1 WSDT}
+ {2122466400 46800 0 WST}
+ {2137586400 50400 1 WSDT}
+ {2153916000 46800 0 WST}
+ {2169036000 50400 1 WSDT}
+ {2185365600 46800 0 WST}
+ {2200485600 50400 1 WSDT}
+ {2216815200 46800 0 WST}
+ {2232540000 50400 1 WSDT}
+ {2248869600 46800 0 WST}
+ {2263989600 50400 1 WSDT}
+ {2280319200 46800 0 WST}
+ {2295439200 50400 1 WSDT}
+ {2311768800 46800 0 WST}
+ {2326888800 50400 1 WSDT}
+ {2343218400 46800 0 WST}
+ {2358338400 50400 1 WSDT}
+ {2374668000 46800 0 WST}
+ {2389788000 50400 1 WSDT}
+ {2406117600 46800 0 WST}
+ {2421842400 50400 1 WSDT}
+ {2438172000 46800 0 WST}
+ {2453292000 50400 1 WSDT}
+ {2469621600 46800 0 WST}
+ {2484741600 50400 1 WSDT}
+ {2501071200 46800 0 WST}
+ {2516191200 50400 1 WSDT}
+ {2532520800 46800 0 WST}
+ {2547640800 50400 1 WSDT}
+ {2563970400 46800 0 WST}
+ {2579090400 50400 1 WSDT}
+ {2596024800 46800 0 WST}
+ {2611144800 50400 1 WSDT}
+ {2627474400 46800 0 WST}
+ {2642594400 50400 1 WSDT}
+ {2658924000 46800 0 WST}
+ {2674044000 50400 1 WSDT}
+ {2690373600 46800 0 WST}
+ {2705493600 50400 1 WSDT}
+ {2721823200 46800 0 WST}
+ {2736943200 50400 1 WSDT}
+ {2753272800 46800 0 WST}
+ {2768997600 50400 1 WSDT}
+ {2785327200 46800 0 WST}
+ {2800447200 50400 1 WSDT}
+ {2816776800 46800 0 WST}
+ {2831896800 50400 1 WSDT}
+ {2848226400 46800 0 WST}
+ {2863346400 50400 1 WSDT}
+ {2879676000 46800 0 WST}
+ {2894796000 50400 1 WSDT}
+ {2911125600 46800 0 WST}
+ {2926245600 50400 1 WSDT}
+ {2942575200 46800 0 WST}
+ {2958300000 50400 1 WSDT}
+ {2974629600 46800 0 WST}
+ {2989749600 50400 1 WSDT}
+ {3006079200 46800 0 WST}
+ {3021199200 50400 1 WSDT}
+ {3037528800 46800 0 WST}
+ {3052648800 50400 1 WSDT}
+ {3068978400 46800 0 WST}
+ {3084098400 50400 1 WSDT}
+ {3100428000 46800 0 WST}
+ {3116152800 50400 1 WSDT}
+ {3132482400 46800 0 WST}
+ {3147602400 50400 1 WSDT}
+ {3163932000 46800 0 WST}
+ {3179052000 50400 1 WSDT}
+ {3195381600 46800 0 WST}
+ {3210501600 50400 1 WSDT}
+ {3226831200 46800 0 WST}
+ {3241951200 50400 1 WSDT}
+ {3258280800 46800 0 WST}
+ {3273400800 50400 1 WSDT}
+ {3289730400 46800 0 WST}
+ {3305455200 50400 1 WSDT}
+ {3321784800 46800 0 WST}
+ {3336904800 50400 1 WSDT}
+ {3353234400 46800 0 WST}
+ {3368354400 50400 1 WSDT}
+ {3384684000 46800 0 WST}
+ {3399804000 50400 1 WSDT}
+ {3416133600 46800 0 WST}
+ {3431253600 50400 1 WSDT}
+ {3447583200 46800 0 WST}
+ {3462703200 50400 1 WSDT}
+ {3479637600 46800 0 WST}
+ {3494757600 50400 1 WSDT}
+ {3511087200 46800 0 WST}
+ {3526207200 50400 1 WSDT}
+ {3542536800 46800 0 WST}
+ {3557656800 50400 1 WSDT}
+ {3573986400 46800 0 WST}
+ {3589106400 50400 1 WSDT}
+ {3605436000 46800 0 WST}
+ {3620556000 50400 1 WSDT}
+ {3636885600 46800 0 WST}
+ {3652610400 50400 1 WSDT}
+ {3668940000 46800 0 WST}
+ {3684060000 50400 1 WSDT}
+ {3700389600 46800 0 WST}
+ {3715509600 50400 1 WSDT}
+ {3731839200 46800 0 WST}
+ {3746959200 50400 1 WSDT}
+ {3763288800 46800 0 WST}
+ {3778408800 50400 1 WSDT}
+ {3794738400 46800 0 WST}
+ {3809858400 50400 1 WSDT}
+ {3826188000 46800 0 WST}
+ {3841912800 50400 1 WSDT}
+ {3858242400 46800 0 WST}
+ {3873362400 50400 1 WSDT}
+ {3889692000 46800 0 WST}
+ {3904812000 50400 1 WSDT}
+ {3921141600 46800 0 WST}
+ {3936261600 50400 1 WSDT}
+ {3952591200 46800 0 WST}
+ {3967711200 50400 1 WSDT}
+ {3984040800 46800 0 WST}
+ {3999765600 50400 1 WSDT}
+ {4016095200 46800 0 WST}
+ {4031215200 50400 1 WSDT}
+ {4047544800 46800 0 WST}
+ {4062664800 50400 1 WSDT}
+ {4078994400 46800 0 WST}
+ {4094114400 50400 1 WSDT}
+}
diff --git a/library/tzdata/Pacific/Auckland b/library/tzdata/Pacific/Auckland
new file mode 100644
index 0000000..5f7e238
--- /dev/null
+++ b/library/tzdata/Pacific/Auckland
@@ -0,0 +1,285 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Auckland) {
+ {-9223372036854775808 41944 0 LMT}
+ {-3192435544 41400 0 NZMT}
+ {-1330335000 45000 1 NZST}
+ {-1320057000 41400 0 NZMT}
+ {-1300699800 43200 1 NZST}
+ {-1287396000 41400 0 NZMT}
+ {-1269250200 43200 1 NZST}
+ {-1255946400 41400 0 NZMT}
+ {-1237800600 43200 1 NZST}
+ {-1224496800 41400 0 NZMT}
+ {-1206351000 43200 1 NZST}
+ {-1192442400 41400 0 NZMT}
+ {-1174901400 43200 1 NZST}
+ {-1160992800 41400 0 NZMT}
+ {-1143451800 43200 1 NZST}
+ {-1125914400 41400 0 NZMT}
+ {-1112607000 43200 1 NZST}
+ {-1094464800 41400 0 NZMT}
+ {-1081157400 43200 1 NZST}
+ {-1063015200 41400 0 NZMT}
+ {-1049707800 43200 1 NZST}
+ {-1031565600 41400 0 NZMT}
+ {-1018258200 43200 1 NZST}
+ {-1000116000 41400 0 NZMT}
+ {-986808600 43200 1 NZST}
+ {-968061600 41400 0 NZMT}
+ {-955359000 43200 1 NZST}
+ {-936612000 41400 0 NZMT}
+ {-923304600 43200 1 NZST}
+ {-757425600 43200 0 NZST}
+ {152632800 46800 1 NZDT}
+ {162309600 43200 0 NZST}
+ {183477600 46800 1 NZDT}
+ {194968800 43200 0 NZST}
+ {215532000 46800 1 NZDT}
+ {226418400 43200 0 NZST}
+ {246981600 46800 1 NZDT}
+ {257868000 43200 0 NZST}
+ {278431200 46800 1 NZDT}
+ {289317600 43200 0 NZST}
+ {309880800 46800 1 NZDT}
+ {320767200 43200 0 NZST}
+ {341330400 46800 1 NZDT}
+ {352216800 43200 0 NZST}
+ {372780000 46800 1 NZDT}
+ {384271200 43200 0 NZST}
+ {404834400 46800 1 NZDT}
+ {415720800 43200 0 NZST}
+ {436284000 46800 1 NZDT}
+ {447170400 43200 0 NZST}
+ {467733600 46800 1 NZDT}
+ {478620000 43200 0 NZST}
+ {499183200 46800 1 NZDT}
+ {510069600 43200 0 NZST}
+ {530632800 46800 1 NZDT}
+ {541519200 43200 0 NZST}
+ {562082400 46800 1 NZDT}
+ {573573600 43200 0 NZST}
+ {594136800 46800 1 NZDT}
+ {605023200 43200 0 NZST}
+ {623772000 46800 1 NZDT}
+ {637682400 43200 0 NZST}
+ {655221600 46800 1 NZDT}
+ {669132000 43200 0 NZST}
+ {686671200 46800 1 NZDT}
+ {700581600 43200 0 NZST}
+ {718120800 46800 1 NZDT}
+ {732636000 43200 0 NZST}
+ {749570400 46800 1 NZDT}
+ {764085600 43200 0 NZST}
+ {781020000 46800 1 NZDT}
+ {795535200 43200 0 NZST}
+ {812469600 46800 1 NZDT}
+ {826984800 43200 0 NZST}
+ {844524000 46800 1 NZDT}
+ {858434400 43200 0 NZST}
+ {875973600 46800 1 NZDT}
+ {889884000 43200 0 NZST}
+ {907423200 46800 1 NZDT}
+ {921938400 43200 0 NZST}
+ {938872800 46800 1 NZDT}
+ {953388000 43200 0 NZST}
+ {970322400 46800 1 NZDT}
+ {984837600 43200 0 NZST}
+ {1002376800 46800 1 NZDT}
+ {1016287200 43200 0 NZST}
+ {1033826400 46800 1 NZDT}
+ {1047736800 43200 0 NZST}
+ {1065276000 46800 1 NZDT}
+ {1079791200 43200 0 NZST}
+ {1096725600 46800 1 NZDT}
+ {1111240800 43200 0 NZST}
+ {1128175200 46800 1 NZDT}
+ {1142690400 43200 0 NZST}
+ {1159624800 46800 1 NZDT}
+ {1174140000 43200 0 NZST}
+ {1191074400 46800 1 NZDT}
+ {1207404000 43200 0 NZST}
+ {1222524000 46800 1 NZDT}
+ {1238853600 43200 0 NZST}
+ {1253973600 46800 1 NZDT}
+ {1270303200 43200 0 NZST}
+ {1285423200 46800 1 NZDT}
+ {1301752800 43200 0 NZST}
+ {1316872800 46800 1 NZDT}
+ {1333202400 43200 0 NZST}
+ {1348927200 46800 1 NZDT}
+ {1365256800 43200 0 NZST}
+ {1380376800 46800 1 NZDT}
+ {1396706400 43200 0 NZST}
+ {1411826400 46800 1 NZDT}
+ {1428156000 43200 0 NZST}
+ {1443276000 46800 1 NZDT}
+ {1459605600 43200 0 NZST}
+ {1474725600 46800 1 NZDT}
+ {1491055200 43200 0 NZST}
+ {1506175200 46800 1 NZDT}
+ {1522504800 43200 0 NZST}
+ {1538229600 46800 1 NZDT}
+ {1554559200 43200 0 NZST}
+ {1569679200 46800 1 NZDT}
+ {1586008800 43200 0 NZST}
+ {1601128800 46800 1 NZDT}
+ {1617458400 43200 0 NZST}
+ {1632578400 46800 1 NZDT}
+ {1648908000 43200 0 NZST}
+ {1664028000 46800 1 NZDT}
+ {1680357600 43200 0 NZST}
+ {1695477600 46800 1 NZDT}
+ {1712412000 43200 0 NZST}
+ {1727532000 46800 1 NZDT}
+ {1743861600 43200 0 NZST}
+ {1758981600 46800 1 NZDT}
+ {1775311200 43200 0 NZST}
+ {1790431200 46800 1 NZDT}
+ {1806760800 43200 0 NZST}
+ {1821880800 46800 1 NZDT}
+ {1838210400 43200 0 NZST}
+ {1853330400 46800 1 NZDT}
+ {1869660000 43200 0 NZST}
+ {1885384800 46800 1 NZDT}
+ {1901714400 43200 0 NZST}
+ {1916834400 46800 1 NZDT}
+ {1933164000 43200 0 NZST}
+ {1948284000 46800 1 NZDT}
+ {1964613600 43200 0 NZST}
+ {1979733600 46800 1 NZDT}
+ {1996063200 43200 0 NZST}
+ {2011183200 46800 1 NZDT}
+ {2027512800 43200 0 NZST}
+ {2042632800 46800 1 NZDT}
+ {2058962400 43200 0 NZST}
+ {2074687200 46800 1 NZDT}
+ {2091016800 43200 0 NZST}
+ {2106136800 46800 1 NZDT}
+ {2122466400 43200 0 NZST}
+ {2137586400 46800 1 NZDT}
+ {2153916000 43200 0 NZST}
+ {2169036000 46800 1 NZDT}
+ {2185365600 43200 0 NZST}
+ {2200485600 46800 1 NZDT}
+ {2216815200 43200 0 NZST}
+ {2232540000 46800 1 NZDT}
+ {2248869600 43200 0 NZST}
+ {2263989600 46800 1 NZDT}
+ {2280319200 43200 0 NZST}
+ {2295439200 46800 1 NZDT}
+ {2311768800 43200 0 NZST}
+ {2326888800 46800 1 NZDT}
+ {2343218400 43200 0 NZST}
+ {2358338400 46800 1 NZDT}
+ {2374668000 43200 0 NZST}
+ {2389788000 46800 1 NZDT}
+ {2406117600 43200 0 NZST}
+ {2421842400 46800 1 NZDT}
+ {2438172000 43200 0 NZST}
+ {2453292000 46800 1 NZDT}
+ {2469621600 43200 0 NZST}
+ {2484741600 46800 1 NZDT}
+ {2501071200 43200 0 NZST}
+ {2516191200 46800 1 NZDT}
+ {2532520800 43200 0 NZST}
+ {2547640800 46800 1 NZDT}
+ {2563970400 43200 0 NZST}
+ {2579090400 46800 1 NZDT}
+ {2596024800 43200 0 NZST}
+ {2611144800 46800 1 NZDT}
+ {2627474400 43200 0 NZST}
+ {2642594400 46800 1 NZDT}
+ {2658924000 43200 0 NZST}
+ {2674044000 46800 1 NZDT}
+ {2690373600 43200 0 NZST}
+ {2705493600 46800 1 NZDT}
+ {2721823200 43200 0 NZST}
+ {2736943200 46800 1 NZDT}
+ {2753272800 43200 0 NZST}
+ {2768997600 46800 1 NZDT}
+ {2785327200 43200 0 NZST}
+ {2800447200 46800 1 NZDT}
+ {2816776800 43200 0 NZST}
+ {2831896800 46800 1 NZDT}
+ {2848226400 43200 0 NZST}
+ {2863346400 46800 1 NZDT}
+ {2879676000 43200 0 NZST}
+ {2894796000 46800 1 NZDT}
+ {2911125600 43200 0 NZST}
+ {2926245600 46800 1 NZDT}
+ {2942575200 43200 0 NZST}
+ {2958300000 46800 1 NZDT}
+ {2974629600 43200 0 NZST}
+ {2989749600 46800 1 NZDT}
+ {3006079200 43200 0 NZST}
+ {3021199200 46800 1 NZDT}
+ {3037528800 43200 0 NZST}
+ {3052648800 46800 1 NZDT}
+ {3068978400 43200 0 NZST}
+ {3084098400 46800 1 NZDT}
+ {3100428000 43200 0 NZST}
+ {3116152800 46800 1 NZDT}
+ {3132482400 43200 0 NZST}
+ {3147602400 46800 1 NZDT}
+ {3163932000 43200 0 NZST}
+ {3179052000 46800 1 NZDT}
+ {3195381600 43200 0 NZST}
+ {3210501600 46800 1 NZDT}
+ {3226831200 43200 0 NZST}
+ {3241951200 46800 1 NZDT}
+ {3258280800 43200 0 NZST}
+ {3273400800 46800 1 NZDT}
+ {3289730400 43200 0 NZST}
+ {3305455200 46800 1 NZDT}
+ {3321784800 43200 0 NZST}
+ {3336904800 46800 1 NZDT}
+ {3353234400 43200 0 NZST}
+ {3368354400 46800 1 NZDT}
+ {3384684000 43200 0 NZST}
+ {3399804000 46800 1 NZDT}
+ {3416133600 43200 0 NZST}
+ {3431253600 46800 1 NZDT}
+ {3447583200 43200 0 NZST}
+ {3462703200 46800 1 NZDT}
+ {3479637600 43200 0 NZST}
+ {3494757600 46800 1 NZDT}
+ {3511087200 43200 0 NZST}
+ {3526207200 46800 1 NZDT}
+ {3542536800 43200 0 NZST}
+ {3557656800 46800 1 NZDT}
+ {3573986400 43200 0 NZST}
+ {3589106400 46800 1 NZDT}
+ {3605436000 43200 0 NZST}
+ {3620556000 46800 1 NZDT}
+ {3636885600 43200 0 NZST}
+ {3652610400 46800 1 NZDT}
+ {3668940000 43200 0 NZST}
+ {3684060000 46800 1 NZDT}
+ {3700389600 43200 0 NZST}
+ {3715509600 46800 1 NZDT}
+ {3731839200 43200 0 NZST}
+ {3746959200 46800 1 NZDT}
+ {3763288800 43200 0 NZST}
+ {3778408800 46800 1 NZDT}
+ {3794738400 43200 0 NZST}
+ {3809858400 46800 1 NZDT}
+ {3826188000 43200 0 NZST}
+ {3841912800 46800 1 NZDT}
+ {3858242400 43200 0 NZST}
+ {3873362400 46800 1 NZDT}
+ {3889692000 43200 0 NZST}
+ {3904812000 46800 1 NZDT}
+ {3921141600 43200 0 NZST}
+ {3936261600 46800 1 NZDT}
+ {3952591200 43200 0 NZST}
+ {3967711200 46800 1 NZDT}
+ {3984040800 43200 0 NZST}
+ {3999765600 46800 1 NZDT}
+ {4016095200 43200 0 NZST}
+ {4031215200 46800 1 NZDT}
+ {4047544800 43200 0 NZST}
+ {4062664800 46800 1 NZDT}
+ {4078994400 43200 0 NZST}
+ {4094114400 46800 1 NZDT}
+}
diff --git a/library/tzdata/Pacific/Chatham b/library/tzdata/Pacific/Chatham
new file mode 100644
index 0000000..0ed2260
--- /dev/null
+++ b/library/tzdata/Pacific/Chatham
@@ -0,0 +1,257 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Chatham) {
+ {-9223372036854775808 44028 0 LMT}
+ {-410271228 45900 0 CHAST}
+ {152632800 49500 1 CHADT}
+ {162309600 45900 0 CHAST}
+ {183477600 49500 1 CHADT}
+ {194968800 45900 0 CHAST}
+ {215532000 49500 1 CHADT}
+ {226418400 45900 0 CHAST}
+ {246981600 49500 1 CHADT}
+ {257868000 45900 0 CHAST}
+ {278431200 49500 1 CHADT}
+ {289317600 45900 0 CHAST}
+ {309880800 49500 1 CHADT}
+ {320767200 45900 0 CHAST}
+ {341330400 49500 1 CHADT}
+ {352216800 45900 0 CHAST}
+ {372780000 49500 1 CHADT}
+ {384271200 45900 0 CHAST}
+ {404834400 49500 1 CHADT}
+ {415720800 45900 0 CHAST}
+ {436284000 49500 1 CHADT}
+ {447170400 45900 0 CHAST}
+ {467733600 49500 1 CHADT}
+ {478620000 45900 0 CHAST}
+ {499183200 49500 1 CHADT}
+ {510069600 45900 0 CHAST}
+ {530632800 49500 1 CHADT}
+ {541519200 45900 0 CHAST}
+ {562082400 49500 1 CHADT}
+ {573573600 45900 0 CHAST}
+ {594136800 49500 1 CHADT}
+ {605023200 45900 0 CHAST}
+ {623772000 49500 1 CHADT}
+ {637682400 45900 0 CHAST}
+ {655221600 49500 1 CHADT}
+ {669132000 45900 0 CHAST}
+ {686671200 49500 1 CHADT}
+ {700581600 45900 0 CHAST}
+ {718120800 49500 1 CHADT}
+ {732636000 45900 0 CHAST}
+ {749570400 49500 1 CHADT}
+ {764085600 45900 0 CHAST}
+ {781020000 49500 1 CHADT}
+ {795535200 45900 0 CHAST}
+ {812469600 49500 1 CHADT}
+ {826984800 45900 0 CHAST}
+ {844524000 49500 1 CHADT}
+ {858434400 45900 0 CHAST}
+ {875973600 49500 1 CHADT}
+ {889884000 45900 0 CHAST}
+ {907423200 49500 1 CHADT}
+ {921938400 45900 0 CHAST}
+ {938872800 49500 1 CHADT}
+ {953388000 45900 0 CHAST}
+ {970322400 49500 1 CHADT}
+ {984837600 45900 0 CHAST}
+ {1002376800 49500 1 CHADT}
+ {1016287200 45900 0 CHAST}
+ {1033826400 49500 1 CHADT}
+ {1047736800 45900 0 CHAST}
+ {1065276000 49500 1 CHADT}
+ {1079791200 45900 0 CHAST}
+ {1096725600 49500 1 CHADT}
+ {1111240800 45900 0 CHAST}
+ {1128175200 49500 1 CHADT}
+ {1142690400 45900 0 CHAST}
+ {1159624800 49500 1 CHADT}
+ {1174140000 45900 0 CHAST}
+ {1191074400 49500 1 CHADT}
+ {1207404000 45900 0 CHAST}
+ {1222524000 49500 1 CHADT}
+ {1238853600 45900 0 CHAST}
+ {1253973600 49500 1 CHADT}
+ {1270303200 45900 0 CHAST}
+ {1285423200 49500 1 CHADT}
+ {1301752800 45900 0 CHAST}
+ {1316872800 49500 1 CHADT}
+ {1333202400 45900 0 CHAST}
+ {1348927200 49500 1 CHADT}
+ {1365256800 45900 0 CHAST}
+ {1380376800 49500 1 CHADT}
+ {1396706400 45900 0 CHAST}
+ {1411826400 49500 1 CHADT}
+ {1428156000 45900 0 CHAST}
+ {1443276000 49500 1 CHADT}
+ {1459605600 45900 0 CHAST}
+ {1474725600 49500 1 CHADT}
+ {1491055200 45900 0 CHAST}
+ {1506175200 49500 1 CHADT}
+ {1522504800 45900 0 CHAST}
+ {1538229600 49500 1 CHADT}
+ {1554559200 45900 0 CHAST}
+ {1569679200 49500 1 CHADT}
+ {1586008800 45900 0 CHAST}
+ {1601128800 49500 1 CHADT}
+ {1617458400 45900 0 CHAST}
+ {1632578400 49500 1 CHADT}
+ {1648908000 45900 0 CHAST}
+ {1664028000 49500 1 CHADT}
+ {1680357600 45900 0 CHAST}
+ {1695477600 49500 1 CHADT}
+ {1712412000 45900 0 CHAST}
+ {1727532000 49500 1 CHADT}
+ {1743861600 45900 0 CHAST}
+ {1758981600 49500 1 CHADT}
+ {1775311200 45900 0 CHAST}
+ {1790431200 49500 1 CHADT}
+ {1806760800 45900 0 CHAST}
+ {1821880800 49500 1 CHADT}
+ {1838210400 45900 0 CHAST}
+ {1853330400 49500 1 CHADT}
+ {1869660000 45900 0 CHAST}
+ {1885384800 49500 1 CHADT}
+ {1901714400 45900 0 CHAST}
+ {1916834400 49500 1 CHADT}
+ {1933164000 45900 0 CHAST}
+ {1948284000 49500 1 CHADT}
+ {1964613600 45900 0 CHAST}
+ {1979733600 49500 1 CHADT}
+ {1996063200 45900 0 CHAST}
+ {2011183200 49500 1 CHADT}
+ {2027512800 45900 0 CHAST}
+ {2042632800 49500 1 CHADT}
+ {2058962400 45900 0 CHAST}
+ {2074687200 49500 1 CHADT}
+ {2091016800 45900 0 CHAST}
+ {2106136800 49500 1 CHADT}
+ {2122466400 45900 0 CHAST}
+ {2137586400 49500 1 CHADT}
+ {2153916000 45900 0 CHAST}
+ {2169036000 49500 1 CHADT}
+ {2185365600 45900 0 CHAST}
+ {2200485600 49500 1 CHADT}
+ {2216815200 45900 0 CHAST}
+ {2232540000 49500 1 CHADT}
+ {2248869600 45900 0 CHAST}
+ {2263989600 49500 1 CHADT}
+ {2280319200 45900 0 CHAST}
+ {2295439200 49500 1 CHADT}
+ {2311768800 45900 0 CHAST}
+ {2326888800 49500 1 CHADT}
+ {2343218400 45900 0 CHAST}
+ {2358338400 49500 1 CHADT}
+ {2374668000 45900 0 CHAST}
+ {2389788000 49500 1 CHADT}
+ {2406117600 45900 0 CHAST}
+ {2421842400 49500 1 CHADT}
+ {2438172000 45900 0 CHAST}
+ {2453292000 49500 1 CHADT}
+ {2469621600 45900 0 CHAST}
+ {2484741600 49500 1 CHADT}
+ {2501071200 45900 0 CHAST}
+ {2516191200 49500 1 CHADT}
+ {2532520800 45900 0 CHAST}
+ {2547640800 49500 1 CHADT}
+ {2563970400 45900 0 CHAST}
+ {2579090400 49500 1 CHADT}
+ {2596024800 45900 0 CHAST}
+ {2611144800 49500 1 CHADT}
+ {2627474400 45900 0 CHAST}
+ {2642594400 49500 1 CHADT}
+ {2658924000 45900 0 CHAST}
+ {2674044000 49500 1 CHADT}
+ {2690373600 45900 0 CHAST}
+ {2705493600 49500 1 CHADT}
+ {2721823200 45900 0 CHAST}
+ {2736943200 49500 1 CHADT}
+ {2753272800 45900 0 CHAST}
+ {2768997600 49500 1 CHADT}
+ {2785327200 45900 0 CHAST}
+ {2800447200 49500 1 CHADT}
+ {2816776800 45900 0 CHAST}
+ {2831896800 49500 1 CHADT}
+ {2848226400 45900 0 CHAST}
+ {2863346400 49500 1 CHADT}
+ {2879676000 45900 0 CHAST}
+ {2894796000 49500 1 CHADT}
+ {2911125600 45900 0 CHAST}
+ {2926245600 49500 1 CHADT}
+ {2942575200 45900 0 CHAST}
+ {2958300000 49500 1 CHADT}
+ {2974629600 45900 0 CHAST}
+ {2989749600 49500 1 CHADT}
+ {3006079200 45900 0 CHAST}
+ {3021199200 49500 1 CHADT}
+ {3037528800 45900 0 CHAST}
+ {3052648800 49500 1 CHADT}
+ {3068978400 45900 0 CHAST}
+ {3084098400 49500 1 CHADT}
+ {3100428000 45900 0 CHAST}
+ {3116152800 49500 1 CHADT}
+ {3132482400 45900 0 CHAST}
+ {3147602400 49500 1 CHADT}
+ {3163932000 45900 0 CHAST}
+ {3179052000 49500 1 CHADT}
+ {3195381600 45900 0 CHAST}
+ {3210501600 49500 1 CHADT}
+ {3226831200 45900 0 CHAST}
+ {3241951200 49500 1 CHADT}
+ {3258280800 45900 0 CHAST}
+ {3273400800 49500 1 CHADT}
+ {3289730400 45900 0 CHAST}
+ {3305455200 49500 1 CHADT}
+ {3321784800 45900 0 CHAST}
+ {3336904800 49500 1 CHADT}
+ {3353234400 45900 0 CHAST}
+ {3368354400 49500 1 CHADT}
+ {3384684000 45900 0 CHAST}
+ {3399804000 49500 1 CHADT}
+ {3416133600 45900 0 CHAST}
+ {3431253600 49500 1 CHADT}
+ {3447583200 45900 0 CHAST}
+ {3462703200 49500 1 CHADT}
+ {3479637600 45900 0 CHAST}
+ {3494757600 49500 1 CHADT}
+ {3511087200 45900 0 CHAST}
+ {3526207200 49500 1 CHADT}
+ {3542536800 45900 0 CHAST}
+ {3557656800 49500 1 CHADT}
+ {3573986400 45900 0 CHAST}
+ {3589106400 49500 1 CHADT}
+ {3605436000 45900 0 CHAST}
+ {3620556000 49500 1 CHADT}
+ {3636885600 45900 0 CHAST}
+ {3652610400 49500 1 CHADT}
+ {3668940000 45900 0 CHAST}
+ {3684060000 49500 1 CHADT}
+ {3700389600 45900 0 CHAST}
+ {3715509600 49500 1 CHADT}
+ {3731839200 45900 0 CHAST}
+ {3746959200 49500 1 CHADT}
+ {3763288800 45900 0 CHAST}
+ {3778408800 49500 1 CHADT}
+ {3794738400 45900 0 CHAST}
+ {3809858400 49500 1 CHADT}
+ {3826188000 45900 0 CHAST}
+ {3841912800 49500 1 CHADT}
+ {3858242400 45900 0 CHAST}
+ {3873362400 49500 1 CHADT}
+ {3889692000 45900 0 CHAST}
+ {3904812000 49500 1 CHADT}
+ {3921141600 45900 0 CHAST}
+ {3936261600 49500 1 CHADT}
+ {3952591200 45900 0 CHAST}
+ {3967711200 49500 1 CHADT}
+ {3984040800 45900 0 CHAST}
+ {3999765600 49500 1 CHADT}
+ {4016095200 45900 0 CHAST}
+ {4031215200 49500 1 CHADT}
+ {4047544800 45900 0 CHAST}
+ {4062664800 49500 1 CHADT}
+ {4078994400 45900 0 CHAST}
+ {4094114400 49500 1 CHADT}
+}
diff --git a/library/tzdata/Pacific/Chuuk b/library/tzdata/Pacific/Chuuk
new file mode 100644
index 0000000..70b14b2
--- /dev/null
+++ b/library/tzdata/Pacific/Chuuk
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Chuuk) {
+ {-9223372036854775808 36428 0 LMT}
+ {-2177489228 36000 0 CHUT}
+}
diff --git a/library/tzdata/Pacific/Easter b/library/tzdata/Pacific/Easter
new file mode 100644
index 0000000..000c6d1
--- /dev/null
+++ b/library/tzdata/Pacific/Easter
@@ -0,0 +1,275 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Easter) {
+ {-9223372036854775808 -26264 0 LMT}
+ {-2524495336 -26248 0 EMT}
+ {-1178124152 -21600 0 EASST}
+ {-870552000 -25200 0 EAST}
+ {-865278000 -21600 1 EASST}
+ {-740520000 -21600 1 EASST}
+ {-736376400 -25200 0 EAST}
+ {-718056000 -25200 0 EAST}
+ {-36619200 -21600 1 EASST}
+ {-23922000 -25200 0 EAST}
+ {-3355200 -21600 1 EASST}
+ {7527600 -25200 0 EAST}
+ {24465600 -21600 1 EASST}
+ {37767600 -25200 0 EAST}
+ {55915200 -21600 1 EASST}
+ {69217200 -25200 0 EAST}
+ {87969600 -21600 1 EASST}
+ {100666800 -25200 0 EAST}
+ {118209600 -21600 1 EASST}
+ {132116400 -25200 0 EAST}
+ {150868800 -21600 1 EASST}
+ {163566000 -25200 0 EAST}
+ {182318400 -21600 1 EASST}
+ {195620400 -25200 0 EAST}
+ {213768000 -21600 1 EASST}
+ {227070000 -25200 0 EAST}
+ {245217600 -21600 1 EASST}
+ {258519600 -25200 0 EAST}
+ {277272000 -21600 1 EASST}
+ {289969200 -25200 0 EAST}
+ {308721600 -21600 1 EASST}
+ {321418800 -25200 0 EAST}
+ {340171200 -21600 1 EASST}
+ {353473200 -25200 0 EAST}
+ {371620800 -21600 1 EASST}
+ {384922800 -21600 0 EAST}
+ {403070400 -18000 1 EASST}
+ {416372400 -21600 0 EAST}
+ {434520000 -18000 1 EASST}
+ {447822000 -21600 0 EAST}
+ {466574400 -18000 1 EASST}
+ {479271600 -21600 0 EAST}
+ {498024000 -18000 1 EASST}
+ {510721200 -21600 0 EAST}
+ {529473600 -18000 1 EASST}
+ {545194800 -21600 0 EAST}
+ {560923200 -18000 1 EASST}
+ {574225200 -21600 0 EAST}
+ {591768000 -18000 1 EASST}
+ {605674800 -21600 0 EAST}
+ {624427200 -18000 1 EASST}
+ {637729200 -21600 0 EAST}
+ {653457600 -18000 1 EASST}
+ {668574000 -21600 0 EAST}
+ {687326400 -18000 1 EASST}
+ {700628400 -21600 0 EAST}
+ {718776000 -18000 1 EASST}
+ {732078000 -21600 0 EAST}
+ {750225600 -18000 1 EASST}
+ {763527600 -21600 0 EAST}
+ {781675200 -18000 1 EASST}
+ {794977200 -21600 0 EAST}
+ {813729600 -18000 1 EASST}
+ {826426800 -21600 0 EAST}
+ {845179200 -18000 1 EASST}
+ {859690800 -21600 0 EAST}
+ {876628800 -18000 1 EASST}
+ {889930800 -21600 0 EAST}
+ {906868800 -18000 1 EASST}
+ {923194800 -21600 0 EAST}
+ {939528000 -18000 1 EASST}
+ {952830000 -21600 0 EAST}
+ {971582400 -18000 1 EASST}
+ {984279600 -21600 0 EAST}
+ {1003032000 -18000 1 EASST}
+ {1015729200 -21600 0 EAST}
+ {1034481600 -18000 1 EASST}
+ {1047178800 -21600 0 EAST}
+ {1065931200 -18000 1 EASST}
+ {1079233200 -21600 0 EAST}
+ {1097380800 -18000 1 EASST}
+ {1110682800 -21600 0 EAST}
+ {1128830400 -18000 1 EASST}
+ {1142132400 -21600 0 EAST}
+ {1160884800 -18000 1 EASST}
+ {1173582000 -21600 0 EAST}
+ {1192334400 -18000 1 EASST}
+ {1206846000 -21600 0 EAST}
+ {1223784000 -18000 1 EASST}
+ {1237086000 -21600 0 EAST}
+ {1255233600 -18000 1 EASST}
+ {1270350000 -21600 0 EAST}
+ {1286683200 -18000 1 EASST}
+ {1304823600 -21600 0 EAST}
+ {1313899200 -18000 1 EASST}
+ {1335668400 -21600 0 EAST}
+ {1346558400 -18000 1 EASST}
+ {1367118000 -21600 0 EAST}
+ {1378612800 -18000 1 EASST}
+ {1398567600 -21600 0 EAST}
+ {1410062400 -18000 1 EASST}
+ {1430017200 -21600 0 EAST}
+ {1441512000 -18000 1 EASST}
+ {1461466800 -21600 0 EAST}
+ {1472961600 -18000 1 EASST}
+ {1492916400 -21600 0 EAST}
+ {1504411200 -18000 1 EASST}
+ {1524970800 -21600 0 EAST}
+ {1535860800 -18000 1 EASST}
+ {1556420400 -21600 0 EAST}
+ {1567915200 -18000 1 EASST}
+ {1587870000 -21600 0 EAST}
+ {1599364800 -18000 1 EASST}
+ {1619319600 -21600 0 EAST}
+ {1630814400 -18000 1 EASST}
+ {1650769200 -21600 0 EAST}
+ {1662264000 -18000 1 EASST}
+ {1682218800 -21600 0 EAST}
+ {1693713600 -18000 1 EASST}
+ {1714273200 -21600 0 EAST}
+ {1725768000 -18000 1 EASST}
+ {1745722800 -21600 0 EAST}
+ {1757217600 -18000 1 EASST}
+ {1777172400 -21600 0 EAST}
+ {1788667200 -18000 1 EASST}
+ {1808622000 -21600 0 EAST}
+ {1820116800 -18000 1 EASST}
+ {1840071600 -21600 0 EAST}
+ {1851566400 -18000 1 EASST}
+ {1872126000 -21600 0 EAST}
+ {1883016000 -18000 1 EASST}
+ {1903575600 -21600 0 EAST}
+ {1915070400 -18000 1 EASST}
+ {1935025200 -21600 0 EAST}
+ {1946520000 -18000 1 EASST}
+ {1966474800 -21600 0 EAST}
+ {1977969600 -18000 1 EASST}
+ {1997924400 -21600 0 EAST}
+ {2009419200 -18000 1 EASST}
+ {2029374000 -21600 0 EAST}
+ {2040868800 -18000 1 EASST}
+ {2061428400 -21600 0 EAST}
+ {2072318400 -18000 1 EASST}
+ {2092878000 -21600 0 EAST}
+ {2104372800 -18000 1 EASST}
+ {2124327600 -21600 0 EAST}
+ {2135822400 -18000 1 EASST}
+ {2155777200 -21600 0 EAST}
+ {2167272000 -18000 1 EASST}
+ {2187226800 -21600 0 EAST}
+ {2198721600 -18000 1 EASST}
+ {2219281200 -21600 0 EAST}
+ {2230171200 -18000 1 EASST}
+ {2250730800 -21600 0 EAST}
+ {2262225600 -18000 1 EASST}
+ {2282180400 -21600 0 EAST}
+ {2293675200 -18000 1 EASST}
+ {2313630000 -21600 0 EAST}
+ {2325124800 -18000 1 EASST}
+ {2345079600 -21600 0 EAST}
+ {2356574400 -18000 1 EASST}
+ {2376529200 -21600 0 EAST}
+ {2388024000 -18000 1 EASST}
+ {2408583600 -21600 0 EAST}
+ {2419473600 -18000 1 EASST}
+ {2440033200 -21600 0 EAST}
+ {2451528000 -18000 1 EASST}
+ {2471482800 -21600 0 EAST}
+ {2482977600 -18000 1 EASST}
+ {2502932400 -21600 0 EAST}
+ {2514427200 -18000 1 EASST}
+ {2534382000 -21600 0 EAST}
+ {2545876800 -18000 1 EASST}
+ {2565831600 -21600 0 EAST}
+ {2577326400 -18000 1 EASST}
+ {2597886000 -21600 0 EAST}
+ {2609380800 -18000 1 EASST}
+ {2629335600 -21600 0 EAST}
+ {2640830400 -18000 1 EASST}
+ {2660785200 -21600 0 EAST}
+ {2672280000 -18000 1 EASST}
+ {2692234800 -21600 0 EAST}
+ {2703729600 -18000 1 EASST}
+ {2723684400 -21600 0 EAST}
+ {2735179200 -18000 1 EASST}
+ {2755738800 -21600 0 EAST}
+ {2766628800 -18000 1 EASST}
+ {2787188400 -21600 0 EAST}
+ {2798683200 -18000 1 EASST}
+ {2818638000 -21600 0 EAST}
+ {2830132800 -18000 1 EASST}
+ {2850087600 -21600 0 EAST}
+ {2861582400 -18000 1 EASST}
+ {2881537200 -21600 0 EAST}
+ {2893032000 -18000 1 EASST}
+ {2912986800 -21600 0 EAST}
+ {2924481600 -18000 1 EASST}
+ {2945041200 -21600 0 EAST}
+ {2955931200 -18000 1 EASST}
+ {2976490800 -21600 0 EAST}
+ {2987985600 -18000 1 EASST}
+ {3007940400 -21600 0 EAST}
+ {3019435200 -18000 1 EASST}
+ {3039390000 -21600 0 EAST}
+ {3050884800 -18000 1 EASST}
+ {3070839600 -21600 0 EAST}
+ {3082334400 -18000 1 EASST}
+ {3102894000 -21600 0 EAST}
+ {3113784000 -18000 1 EASST}
+ {3134343600 -21600 0 EAST}
+ {3145838400 -18000 1 EASST}
+ {3165793200 -21600 0 EAST}
+ {3177288000 -18000 1 EASST}
+ {3197242800 -21600 0 EAST}
+ {3208737600 -18000 1 EASST}
+ {3228692400 -21600 0 EAST}
+ {3240187200 -18000 1 EASST}
+ {3260142000 -21600 0 EAST}
+ {3271636800 -18000 1 EASST}
+ {3292196400 -21600 0 EAST}
+ {3303086400 -18000 1 EASST}
+ {3323646000 -21600 0 EAST}
+ {3335140800 -18000 1 EASST}
+ {3355095600 -21600 0 EAST}
+ {3366590400 -18000 1 EASST}
+ {3386545200 -21600 0 EAST}
+ {3398040000 -18000 1 EASST}
+ {3417994800 -21600 0 EAST}
+ {3429489600 -18000 1 EASST}
+ {3449444400 -21600 0 EAST}
+ {3460939200 -18000 1 EASST}
+ {3481498800 -21600 0 EAST}
+ {3492993600 -18000 1 EASST}
+ {3512948400 -21600 0 EAST}
+ {3524443200 -18000 1 EASST}
+ {3544398000 -21600 0 EAST}
+ {3555892800 -18000 1 EASST}
+ {3575847600 -21600 0 EAST}
+ {3587342400 -18000 1 EASST}
+ {3607297200 -21600 0 EAST}
+ {3618792000 -18000 1 EASST}
+ {3639351600 -21600 0 EAST}
+ {3650241600 -18000 1 EASST}
+ {3670801200 -21600 0 EAST}
+ {3682296000 -18000 1 EASST}
+ {3702250800 -21600 0 EAST}
+ {3713745600 -18000 1 EASST}
+ {3733700400 -21600 0 EAST}
+ {3745195200 -18000 1 EASST}
+ {3765150000 -21600 0 EAST}
+ {3776644800 -18000 1 EASST}
+ {3796599600 -21600 0 EAST}
+ {3808094400 -18000 1 EASST}
+ {3828654000 -21600 0 EAST}
+ {3839544000 -18000 1 EASST}
+ {3860103600 -21600 0 EAST}
+ {3871598400 -18000 1 EASST}
+ {3891553200 -21600 0 EAST}
+ {3903048000 -18000 1 EASST}
+ {3923002800 -21600 0 EAST}
+ {3934497600 -18000 1 EASST}
+ {3954452400 -21600 0 EAST}
+ {3965947200 -18000 1 EASST}
+ {3986506800 -21600 0 EAST}
+ {3997396800 -18000 1 EASST}
+ {4017956400 -21600 0 EAST}
+ {4029451200 -18000 1 EASST}
+ {4049406000 -21600 0 EAST}
+ {4060900800 -18000 1 EASST}
+ {4080855600 -21600 0 EAST}
+ {4092350400 -18000 1 EASST}
+}
diff --git a/library/tzdata/Pacific/Efate b/library/tzdata/Pacific/Efate
new file mode 100644
index 0000000..18db6de
--- /dev/null
+++ b/library/tzdata/Pacific/Efate
@@ -0,0 +1,26 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Efate) {
+ {-9223372036854775808 40396 0 LMT}
+ {-1829387596 39600 0 VUT}
+ {433256400 43200 1 VUST}
+ {448977600 39600 0 VUT}
+ {467298000 43200 1 VUST}
+ {480427200 39600 0 VUT}
+ {496760400 43200 1 VUST}
+ {511876800 39600 0 VUT}
+ {528210000 43200 1 VUST}
+ {543931200 39600 0 VUT}
+ {559659600 43200 1 VUST}
+ {575380800 39600 0 VUT}
+ {591109200 43200 1 VUST}
+ {606830400 39600 0 VUT}
+ {622558800 43200 1 VUST}
+ {638280000 39600 0 VUT}
+ {654008400 43200 1 VUST}
+ {669729600 39600 0 VUT}
+ {686062800 43200 1 VUST}
+ {696340800 39600 0 VUT}
+ {719931600 43200 1 VUST}
+ {727790400 39600 0 VUT}
+}
diff --git a/library/tzdata/Pacific/Enderbury b/library/tzdata/Pacific/Enderbury
new file mode 100644
index 0000000..55784c4
--- /dev/null
+++ b/library/tzdata/Pacific/Enderbury
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Enderbury) {
+ {-9223372036854775808 -41060 0 LMT}
+ {-2177411740 -43200 0 PHOT}
+ {307627200 -39600 0 PHOT}
+ {788958000 46800 0 PHOT}
+}
diff --git a/library/tzdata/Pacific/Fakaofo b/library/tzdata/Pacific/Fakaofo
new file mode 100644
index 0000000..6ec98eb
--- /dev/null
+++ b/library/tzdata/Pacific/Fakaofo
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Fakaofo) {
+ {-9223372036854775808 -41096 0 LMT}
+ {-2177411704 -39600 0 TKT}
+ {1325242800 46800 0 TKT}
+}
diff --git a/library/tzdata/Pacific/Fiji b/library/tzdata/Pacific/Fiji
new file mode 100644
index 0000000..454ee87
--- /dev/null
+++ b/library/tzdata/Pacific/Fiji
@@ -0,0 +1,191 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Fiji) {
+ {-9223372036854775808 42944 0 LMT}
+ {-1709985344 43200 0 FJT}
+ {909842400 46800 1 FJST}
+ {920124000 43200 0 FJT}
+ {941896800 46800 1 FJST}
+ {951573600 43200 0 FJT}
+ {1259416800 46800 1 FJST}
+ {1269698400 43200 0 FJT}
+ {1287842400 46800 1 FJST}
+ {1299333600 43200 0 FJT}
+ {1319292000 46800 1 FJST}
+ {1327154400 43200 0 FJT}
+ {1350741600 46800 1 FJST}
+ {1358604000 43200 0 FJT}
+ {1382796000 46800 1 FJST}
+ {1390053600 43200 0 FJT}
+ {1414245600 46800 1 FJST}
+ {1421503200 43200 0 FJT}
+ {1445695200 46800 1 FJST}
+ {1453557600 43200 0 FJT}
+ {1477144800 46800 1 FJST}
+ {1485007200 43200 0 FJT}
+ {1508594400 46800 1 FJST}
+ {1516456800 43200 0 FJT}
+ {1540044000 46800 1 FJST}
+ {1547906400 43200 0 FJT}
+ {1572098400 46800 1 FJST}
+ {1579356000 43200 0 FJT}
+ {1603548000 46800 1 FJST}
+ {1611410400 43200 0 FJT}
+ {1634997600 46800 1 FJST}
+ {1642860000 43200 0 FJT}
+ {1666447200 46800 1 FJST}
+ {1674309600 43200 0 FJT}
+ {1697896800 46800 1 FJST}
+ {1705759200 43200 0 FJT}
+ {1729951200 46800 1 FJST}
+ {1737208800 43200 0 FJT}
+ {1761400800 46800 1 FJST}
+ {1768658400 43200 0 FJT}
+ {1792850400 46800 1 FJST}
+ {1800712800 43200 0 FJT}
+ {1824300000 46800 1 FJST}
+ {1832162400 43200 0 FJT}
+ {1855749600 46800 1 FJST}
+ {1863612000 43200 0 FJT}
+ {1887199200 46800 1 FJST}
+ {1895061600 43200 0 FJT}
+ {1919253600 46800 1 FJST}
+ {1926511200 43200 0 FJT}
+ {1950703200 46800 1 FJST}
+ {1957960800 43200 0 FJT}
+ {1982152800 46800 1 FJST}
+ {1990015200 43200 0 FJT}
+ {2013602400 46800 1 FJST}
+ {2021464800 43200 0 FJT}
+ {2045052000 46800 1 FJST}
+ {2052914400 43200 0 FJT}
+ {2076501600 46800 1 FJST}
+ {2084364000 43200 0 FJT}
+ {2108556000 46800 1 FJST}
+ {2115813600 43200 0 FJT}
+ {2140005600 46800 1 FJST}
+ {2147868000 43200 0 FJT}
+ {2171455200 46800 1 FJST}
+ {2179317600 43200 0 FJT}
+ {2202904800 46800 1 FJST}
+ {2210767200 43200 0 FJT}
+ {2234354400 46800 1 FJST}
+ {2242216800 43200 0 FJT}
+ {2266408800 46800 1 FJST}
+ {2273666400 43200 0 FJT}
+ {2297858400 46800 1 FJST}
+ {2305116000 43200 0 FJT}
+ {2329308000 46800 1 FJST}
+ {2337170400 43200 0 FJT}
+ {2360757600 46800 1 FJST}
+ {2368620000 43200 0 FJT}
+ {2392207200 46800 1 FJST}
+ {2400069600 43200 0 FJT}
+ {2423656800 46800 1 FJST}
+ {2431519200 43200 0 FJT}
+ {2455711200 46800 1 FJST}
+ {2462968800 43200 0 FJT}
+ {2487160800 46800 1 FJST}
+ {2495023200 43200 0 FJT}
+ {2518610400 46800 1 FJST}
+ {2526472800 43200 0 FJT}
+ {2550060000 46800 1 FJST}
+ {2557922400 43200 0 FJT}
+ {2581509600 46800 1 FJST}
+ {2589372000 43200 0 FJT}
+ {2613564000 46800 1 FJST}
+ {2620821600 43200 0 FJT}
+ {2645013600 46800 1 FJST}
+ {2652271200 43200 0 FJT}
+ {2676463200 46800 1 FJST}
+ {2684325600 43200 0 FJT}
+ {2707912800 46800 1 FJST}
+ {2715775200 43200 0 FJT}
+ {2739362400 46800 1 FJST}
+ {2747224800 43200 0 FJT}
+ {2770812000 46800 1 FJST}
+ {2778674400 43200 0 FJT}
+ {2802866400 46800 1 FJST}
+ {2810124000 43200 0 FJT}
+ {2834316000 46800 1 FJST}
+ {2841573600 43200 0 FJT}
+ {2865765600 46800 1 FJST}
+ {2873628000 43200 0 FJT}
+ {2897215200 46800 1 FJST}
+ {2905077600 43200 0 FJT}
+ {2928664800 46800 1 FJST}
+ {2936527200 43200 0 FJT}
+ {2960114400 46800 1 FJST}
+ {2967976800 43200 0 FJT}
+ {2992168800 46800 1 FJST}
+ {2999426400 43200 0 FJT}
+ {3023618400 46800 1 FJST}
+ {3031480800 43200 0 FJT}
+ {3055068000 46800 1 FJST}
+ {3062930400 43200 0 FJT}
+ {3086517600 46800 1 FJST}
+ {3094380000 43200 0 FJT}
+ {3117967200 46800 1 FJST}
+ {3125829600 43200 0 FJT}
+ {3150021600 46800 1 FJST}
+ {3157279200 43200 0 FJT}
+ {3181471200 46800 1 FJST}
+ {3188728800 43200 0 FJT}
+ {3212920800 46800 1 FJST}
+ {3220783200 43200 0 FJT}
+ {3244370400 46800 1 FJST}
+ {3252232800 43200 0 FJT}
+ {3275820000 46800 1 FJST}
+ {3283682400 43200 0 FJT}
+ {3307269600 46800 1 FJST}
+ {3315132000 43200 0 FJT}
+ {3339324000 46800 1 FJST}
+ {3346581600 43200 0 FJT}
+ {3370773600 46800 1 FJST}
+ {3378636000 43200 0 FJT}
+ {3402223200 46800 1 FJST}
+ {3410085600 43200 0 FJT}
+ {3433672800 46800 1 FJST}
+ {3441535200 43200 0 FJT}
+ {3465122400 46800 1 FJST}
+ {3472984800 43200 0 FJT}
+ {3497176800 46800 1 FJST}
+ {3504434400 43200 0 FJT}
+ {3528626400 46800 1 FJST}
+ {3535884000 43200 0 FJT}
+ {3560076000 46800 1 FJST}
+ {3567938400 43200 0 FJT}
+ {3591525600 46800 1 FJST}
+ {3599388000 43200 0 FJT}
+ {3622975200 46800 1 FJST}
+ {3630837600 43200 0 FJT}
+ {3654424800 46800 1 FJST}
+ {3662287200 43200 0 FJT}
+ {3686479200 46800 1 FJST}
+ {3693736800 43200 0 FJT}
+ {3717928800 46800 1 FJST}
+ {3725186400 43200 0 FJT}
+ {3749378400 46800 1 FJST}
+ {3757240800 43200 0 FJT}
+ {3780828000 46800 1 FJST}
+ {3788690400 43200 0 FJT}
+ {3812277600 46800 1 FJST}
+ {3820140000 43200 0 FJT}
+ {3843727200 46800 1 FJST}
+ {3851589600 43200 0 FJT}
+ {3875781600 46800 1 FJST}
+ {3883039200 43200 0 FJT}
+ {3907231200 46800 1 FJST}
+ {3915093600 43200 0 FJT}
+ {3938680800 46800 1 FJST}
+ {3946543200 43200 0 FJT}
+ {3970130400 46800 1 FJST}
+ {3977992800 43200 0 FJT}
+ {4001580000 46800 1 FJST}
+ {4009442400 43200 0 FJT}
+ {4033634400 46800 1 FJST}
+ {4040892000 43200 0 FJT}
+ {4065084000 46800 1 FJST}
+ {4072341600 43200 0 FJT}
+ {4096533600 46800 1 FJST}
+}
diff --git a/library/tzdata/Pacific/Funafuti b/library/tzdata/Pacific/Funafuti
new file mode 100644
index 0000000..b94e4fb
--- /dev/null
+++ b/library/tzdata/Pacific/Funafuti
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Funafuti) {
+ {-9223372036854775808 43012 0 LMT}
+ {-2177495812 43200 0 TVT}
+}
diff --git a/library/tzdata/Pacific/Galapagos b/library/tzdata/Pacific/Galapagos
new file mode 100644
index 0000000..d8c80e8
--- /dev/null
+++ b/library/tzdata/Pacific/Galapagos
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Galapagos) {
+ {-9223372036854775808 -21504 0 LMT}
+ {-1230746496 -18000 0 ECT}
+ {504939600 -21600 0 GALT}
+}
diff --git a/library/tzdata/Pacific/Gambier b/library/tzdata/Pacific/Gambier
new file mode 100644
index 0000000..d69f99a
--- /dev/null
+++ b/library/tzdata/Pacific/Gambier
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Gambier) {
+ {-9223372036854775808 -32388 0 LMT}
+ {-1806678012 -32400 0 GAMT}
+}
diff --git a/library/tzdata/Pacific/Guadalcanal b/library/tzdata/Pacific/Guadalcanal
new file mode 100644
index 0000000..09a67dd
--- /dev/null
+++ b/library/tzdata/Pacific/Guadalcanal
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Guadalcanal) {
+ {-9223372036854775808 38388 0 LMT}
+ {-1806748788 39600 0 SBT}
+}
diff --git a/library/tzdata/Pacific/Guam b/library/tzdata/Pacific/Guam
new file mode 100644
index 0000000..79cca80
--- /dev/null
+++ b/library/tzdata/Pacific/Guam
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Guam) {
+ {-9223372036854775808 -51660 0 LMT}
+ {-3944626740 34740 0 LMT}
+ {-2177487540 36000 0 GST}
+ {977493600 36000 0 ChST}
+}
diff --git a/library/tzdata/Pacific/Honolulu b/library/tzdata/Pacific/Honolulu
new file mode 100644
index 0000000..5e70598
--- /dev/null
+++ b/library/tzdata/Pacific/Honolulu
@@ -0,0 +1,11 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Honolulu) {
+ {-9223372036854775808 -37886 0 LMT}
+ {-2334101314 -37800 0 HST}
+ {-1157283000 -34200 1 HDT}
+ {-1155436200 -37800 0 HST}
+ {-880198200 -34200 1 HDT}
+ {-765376200 -37800 0 HST}
+ {-712150200 -36000 0 HST}
+}
diff --git a/library/tzdata/Pacific/Johnston b/library/tzdata/Pacific/Johnston
new file mode 100644
index 0000000..21ab39a
--- /dev/null
+++ b/library/tzdata/Pacific/Johnston
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Honolulu)]} {
+ LoadTimeZoneFile Pacific/Honolulu
+}
+set TZData(:Pacific/Johnston) $TZData(:Pacific/Honolulu)
diff --git a/library/tzdata/Pacific/Kiritimati b/library/tzdata/Pacific/Kiritimati
new file mode 100644
index 0000000..06b695b
--- /dev/null
+++ b/library/tzdata/Pacific/Kiritimati
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Kiritimati) {
+ {-9223372036854775808 -37760 0 LMT}
+ {-2177415040 -38400 0 LINT}
+ {307622400 -36000 0 LINT}
+ {788954400 50400 0 LINT}
+}
diff --git a/library/tzdata/Pacific/Kosrae b/library/tzdata/Pacific/Kosrae
new file mode 100644
index 0000000..a16b19d
--- /dev/null
+++ b/library/tzdata/Pacific/Kosrae
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Kosrae) {
+ {-9223372036854775808 39116 0 LMT}
+ {-2177491916 39600 0 KOST}
+ {-7988400 43200 0 KOST}
+ {915105600 39600 0 KOST}
+}
diff --git a/library/tzdata/Pacific/Kwajalein b/library/tzdata/Pacific/Kwajalein
new file mode 100644
index 0000000..8600b3b
--- /dev/null
+++ b/library/tzdata/Pacific/Kwajalein
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Kwajalein) {
+ {-9223372036854775808 40160 0 LMT}
+ {-2177492960 39600 0 MHT}
+ {-7988400 -43200 0 KWAT}
+ {745848000 43200 0 MHT}
+}
diff --git a/library/tzdata/Pacific/Majuro b/library/tzdata/Pacific/Majuro
new file mode 100644
index 0000000..468baab
--- /dev/null
+++ b/library/tzdata/Pacific/Majuro
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Majuro) {
+ {-9223372036854775808 41088 0 LMT}
+ {-2177493888 39600 0 MHT}
+ {-7988400 43200 0 MHT}
+}
diff --git a/library/tzdata/Pacific/Marquesas b/library/tzdata/Pacific/Marquesas
new file mode 100644
index 0000000..9bb508f
--- /dev/null
+++ b/library/tzdata/Pacific/Marquesas
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Marquesas) {
+ {-9223372036854775808 -33480 0 LMT}
+ {-1806676920 -34200 0 MART}
+}
diff --git a/library/tzdata/Pacific/Midway b/library/tzdata/Pacific/Midway
new file mode 100644
index 0000000..c07b030
--- /dev/null
+++ b/library/tzdata/Pacific/Midway
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Midway) {
+ {-9223372036854775808 -42568 0 LMT}
+ {-2177410232 -39600 0 NST}
+ {-428504400 -36000 1 NDT}
+ {-420645600 -39600 0 NST}
+ {-86878800 -39600 0 BST}
+ {439038000 -39600 0 SST}
+}
diff --git a/library/tzdata/Pacific/Nauru b/library/tzdata/Pacific/Nauru
new file mode 100644
index 0000000..2da1e25
--- /dev/null
+++ b/library/tzdata/Pacific/Nauru
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Nauru) {
+ {-9223372036854775808 40060 0 LMT}
+ {-1545131260 41400 0 NRT}
+ {-877347000 32400 0 JST}
+ {-800960400 41400 0 NRT}
+ {294323400 43200 0 NRT}
+}
diff --git a/library/tzdata/Pacific/Niue b/library/tzdata/Pacific/Niue
new file mode 100644
index 0000000..cf149fc
--- /dev/null
+++ b/library/tzdata/Pacific/Niue
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Niue) {
+ {-9223372036854775808 -40780 0 LMT}
+ {-2177412020 -40800 0 NUT}
+ {-599575200 -41400 0 NUT}
+ {276089400 -39600 0 NUT}
+}
diff --git a/library/tzdata/Pacific/Norfolk b/library/tzdata/Pacific/Norfolk
new file mode 100644
index 0000000..a8fac15
--- /dev/null
+++ b/library/tzdata/Pacific/Norfolk
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Norfolk) {
+ {-9223372036854775808 40312 0 LMT}
+ {-2177493112 40320 0 NMT}
+ {-599656320 41400 0 NFT}
+}
diff --git a/library/tzdata/Pacific/Noumea b/library/tzdata/Pacific/Noumea
new file mode 100644
index 0000000..db1eeae
--- /dev/null
+++ b/library/tzdata/Pacific/Noumea
@@ -0,0 +1,12 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Noumea) {
+ {-9223372036854775808 39948 0 LMT}
+ {-1829387148 39600 0 NCT}
+ {250002000 43200 1 NCST}
+ {257342400 39600 0 NCT}
+ {281451600 43200 1 NCST}
+ {288878400 39600 0 NCT}
+ {849366000 43200 1 NCST}
+ {857228400 39600 0 NCT}
+}
diff --git a/library/tzdata/Pacific/Pago_Pago b/library/tzdata/Pacific/Pago_Pago
new file mode 100644
index 0000000..830f9ee
--- /dev/null
+++ b/library/tzdata/Pacific/Pago_Pago
@@ -0,0 +1,10 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Pago_Pago) {
+ {-9223372036854775808 45432 0 LMT}
+ {-2855738232 -40968 0 LMT}
+ {-1861879032 -41400 0 SAMT}
+ {-631110600 -39600 0 NST}
+ {-86878800 -39600 0 BST}
+ {439038000 -39600 0 SST}
+}
diff --git a/library/tzdata/Pacific/Palau b/library/tzdata/Pacific/Palau
new file mode 100644
index 0000000..ee0606d
--- /dev/null
+++ b/library/tzdata/Pacific/Palau
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Palau) {
+ {-9223372036854775808 32276 0 LMT}
+ {-2177485076 32400 0 PWT}
+}
diff --git a/library/tzdata/Pacific/Pitcairn b/library/tzdata/Pacific/Pitcairn
new file mode 100644
index 0000000..d62644e
--- /dev/null
+++ b/library/tzdata/Pacific/Pitcairn
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Pitcairn) {
+ {-9223372036854775808 -31220 0 LMT}
+ {-2177421580 -30600 0 PNT}
+ {893665800 -28800 0 PST}
+}
diff --git a/library/tzdata/Pacific/Pohnpei b/library/tzdata/Pacific/Pohnpei
new file mode 100644
index 0000000..58978da
--- /dev/null
+++ b/library/tzdata/Pacific/Pohnpei
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Pohnpei) {
+ {-9223372036854775808 37972 0 LMT}
+ {-2177490772 39600 0 PONT}
+}
diff --git a/library/tzdata/Pacific/Ponape b/library/tzdata/Pacific/Ponape
new file mode 100644
index 0000000..89644f7
--- /dev/null
+++ b/library/tzdata/Pacific/Ponape
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Pohnpei)]} {
+ LoadTimeZoneFile Pacific/Pohnpei
+}
+set TZData(:Pacific/Ponape) $TZData(:Pacific/Pohnpei)
diff --git a/library/tzdata/Pacific/Port_Moresby b/library/tzdata/Pacific/Port_Moresby
new file mode 100644
index 0000000..65eb533
--- /dev/null
+++ b/library/tzdata/Pacific/Port_Moresby
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Port_Moresby) {
+ {-9223372036854775808 35320 0 LMT}
+ {-2840176120 35312 0 PMMT}
+ {-2366790512 36000 0 PGT}
+}
diff --git a/library/tzdata/Pacific/Rarotonga b/library/tzdata/Pacific/Rarotonga
new file mode 100644
index 0000000..a4ecf8d
--- /dev/null
+++ b/library/tzdata/Pacific/Rarotonga
@@ -0,0 +1,32 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Rarotonga) {
+ {-9223372036854775808 -38344 0 LMT}
+ {-2177414456 -37800 0 CKT}
+ {279714600 -34200 0 CKHST}
+ {289387800 -36000 0 CKT}
+ {309952800 -34200 1 CKHST}
+ {320837400 -36000 0 CKT}
+ {341402400 -34200 1 CKHST}
+ {352287000 -36000 0 CKT}
+ {372852000 -34200 1 CKHST}
+ {384341400 -36000 0 CKT}
+ {404906400 -34200 1 CKHST}
+ {415791000 -36000 0 CKT}
+ {436356000 -34200 1 CKHST}
+ {447240600 -36000 0 CKT}
+ {467805600 -34200 1 CKHST}
+ {478690200 -36000 0 CKT}
+ {499255200 -34200 1 CKHST}
+ {510139800 -36000 0 CKT}
+ {530704800 -34200 1 CKHST}
+ {541589400 -36000 0 CKT}
+ {562154400 -34200 1 CKHST}
+ {573643800 -36000 0 CKT}
+ {594208800 -34200 1 CKHST}
+ {605093400 -36000 0 CKT}
+ {625658400 -34200 1 CKHST}
+ {636543000 -36000 0 CKT}
+ {657108000 -34200 1 CKHST}
+ {667992600 -36000 0 CKT}
+}
diff --git a/library/tzdata/Pacific/Saipan b/library/tzdata/Pacific/Saipan
new file mode 100644
index 0000000..b799298
--- /dev/null
+++ b/library/tzdata/Pacific/Saipan
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Saipan) {
+ {-9223372036854775808 -51420 0 LMT}
+ {-3944626980 34980 0 LMT}
+ {-2177487780 32400 0 MPT}
+ {-7981200 36000 0 MPT}
+ {977493600 36000 0 ChST}
+}
diff --git a/library/tzdata/Pacific/Samoa b/library/tzdata/Pacific/Samoa
new file mode 100644
index 0000000..686eb34
--- /dev/null
+++ b/library/tzdata/Pacific/Samoa
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Pago_Pago)]} {
+ LoadTimeZoneFile Pacific/Pago_Pago
+}
+set TZData(:Pacific/Samoa) $TZData(:Pacific/Pago_Pago)
diff --git a/library/tzdata/Pacific/Tahiti b/library/tzdata/Pacific/Tahiti
new file mode 100644
index 0000000..f739223
--- /dev/null
+++ b/library/tzdata/Pacific/Tahiti
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Tahiti) {
+ {-9223372036854775808 -35896 0 LMT}
+ {-1806674504 -36000 0 TAHT}
+}
diff --git a/library/tzdata/Pacific/Tarawa b/library/tzdata/Pacific/Tarawa
new file mode 100644
index 0000000..2dab5a2
--- /dev/null
+++ b/library/tzdata/Pacific/Tarawa
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Tarawa) {
+ {-9223372036854775808 41524 0 LMT}
+ {-2177494324 43200 0 GILT}
+}
diff --git a/library/tzdata/Pacific/Tongatapu b/library/tzdata/Pacific/Tongatapu
new file mode 100644
index 0000000..da9f857
--- /dev/null
+++ b/library/tzdata/Pacific/Tongatapu
@@ -0,0 +1,14 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Tongatapu) {
+ {-9223372036854775808 44360 0 LMT}
+ {-2177497160 44400 0 TOT}
+ {-915193200 46800 0 TOT}
+ {915102000 46800 0 TOT}
+ {939214800 50400 1 TOST}
+ {953384400 46800 0 TOT}
+ {973342800 50400 1 TOST}
+ {980596800 46800 0 TOT}
+ {1004792400 50400 1 TOST}
+ {1012046400 46800 0 TOT}
+}
diff --git a/library/tzdata/Pacific/Truk b/library/tzdata/Pacific/Truk
new file mode 100644
index 0000000..c9b1894
--- /dev/null
+++ b/library/tzdata/Pacific/Truk
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Chuuk)]} {
+ LoadTimeZoneFile Pacific/Chuuk
+}
+set TZData(:Pacific/Truk) $TZData(:Pacific/Chuuk)
diff --git a/library/tzdata/Pacific/Wake b/library/tzdata/Pacific/Wake
new file mode 100644
index 0000000..5afedf5
--- /dev/null
+++ b/library/tzdata/Pacific/Wake
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Wake) {
+ {-9223372036854775808 39988 0 LMT}
+ {-2177492788 43200 0 WAKT}
+}
diff --git a/library/tzdata/Pacific/Wallis b/library/tzdata/Pacific/Wallis
new file mode 100644
index 0000000..7bdd964
--- /dev/null
+++ b/library/tzdata/Pacific/Wallis
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Wallis) {
+ {-9223372036854775808 44120 0 LMT}
+ {-2177496920 43200 0 WFT}
+}
diff --git a/library/tzdata/Pacific/Yap b/library/tzdata/Pacific/Yap
new file mode 100644
index 0000000..4931030
--- /dev/null
+++ b/library/tzdata/Pacific/Yap
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Chuuk)]} {
+ LoadTimeZoneFile Pacific/Chuuk
+}
+set TZData(:Pacific/Yap) $TZData(:Pacific/Chuuk)
diff --git a/library/tzdata/Poland b/library/tzdata/Poland
new file mode 100644
index 0000000..bd24028
--- /dev/null
+++ b/library/tzdata/Poland
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Warsaw)]} {
+ LoadTimeZoneFile Europe/Warsaw
+}
+set TZData(:Poland) $TZData(:Europe/Warsaw)
diff --git a/library/tzdata/Portugal b/library/tzdata/Portugal
new file mode 100644
index 0000000..d1ffd9f
--- /dev/null
+++ b/library/tzdata/Portugal
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Lisbon)]} {
+ LoadTimeZoneFile Europe/Lisbon
+}
+set TZData(:Portugal) $TZData(:Europe/Lisbon)
diff --git a/library/tzdata/ROC b/library/tzdata/ROC
new file mode 100644
index 0000000..5dd196d
--- /dev/null
+++ b/library/tzdata/ROC
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Taipei)]} {
+ LoadTimeZoneFile Asia/Taipei
+}
+set TZData(:ROC) $TZData(:Asia/Taipei)
diff --git a/library/tzdata/ROK b/library/tzdata/ROK
new file mode 100644
index 0000000..1162ce4
--- /dev/null
+++ b/library/tzdata/ROK
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Seoul)]} {
+ LoadTimeZoneFile Asia/Seoul
+}
+set TZData(:ROK) $TZData(:Asia/Seoul)
diff --git a/library/tzdata/Singapore b/library/tzdata/Singapore
new file mode 100644
index 0000000..1584b35
--- /dev/null
+++ b/library/tzdata/Singapore
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Asia/Singapore)]} {
+ LoadTimeZoneFile Asia/Singapore
+}
+set TZData(:Singapore) $TZData(:Asia/Singapore)
diff --git a/library/tzdata/SystemV/AST4 b/library/tzdata/SystemV/AST4
new file mode 100644
index 0000000..eced0d2
--- /dev/null
+++ b/library/tzdata/SystemV/AST4
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Puerto_Rico)]} {
+ LoadTimeZoneFile America/Puerto_Rico
+}
+set TZData(:SystemV/AST4) $TZData(:America/Puerto_Rico)
diff --git a/library/tzdata/SystemV/AST4ADT b/library/tzdata/SystemV/AST4ADT
new file mode 100644
index 0000000..c24308f
--- /dev/null
+++ b/library/tzdata/SystemV/AST4ADT
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Halifax)]} {
+ LoadTimeZoneFile America/Halifax
+}
+set TZData(:SystemV/AST4ADT) $TZData(:America/Halifax)
diff --git a/library/tzdata/SystemV/CST6 b/library/tzdata/SystemV/CST6
new file mode 100644
index 0000000..d46c015
--- /dev/null
+++ b/library/tzdata/SystemV/CST6
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Regina)]} {
+ LoadTimeZoneFile America/Regina
+}
+set TZData(:SystemV/CST6) $TZData(:America/Regina)
diff --git a/library/tzdata/SystemV/CST6CDT b/library/tzdata/SystemV/CST6CDT
new file mode 100644
index 0000000..234af89
--- /dev/null
+++ b/library/tzdata/SystemV/CST6CDT
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Chicago)]} {
+ LoadTimeZoneFile America/Chicago
+}
+set TZData(:SystemV/CST6CDT) $TZData(:America/Chicago)
diff --git a/library/tzdata/SystemV/EST5 b/library/tzdata/SystemV/EST5
new file mode 100644
index 0000000..52818c1
--- /dev/null
+++ b/library/tzdata/SystemV/EST5
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Indianapolis)]} {
+ LoadTimeZoneFile America/Indianapolis
+}
+set TZData(:SystemV/EST5) $TZData(:America/Indianapolis)
diff --git a/library/tzdata/SystemV/EST5EDT b/library/tzdata/SystemV/EST5EDT
new file mode 100644
index 0000000..6cf2743
--- /dev/null
+++ b/library/tzdata/SystemV/EST5EDT
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/New_York)]} {
+ LoadTimeZoneFile America/New_York
+}
+set TZData(:SystemV/EST5EDT) $TZData(:America/New_York)
diff --git a/library/tzdata/SystemV/HST10 b/library/tzdata/SystemV/HST10
new file mode 100644
index 0000000..a4316af
--- /dev/null
+++ b/library/tzdata/SystemV/HST10
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Honolulu)]} {
+ LoadTimeZoneFile Pacific/Honolulu
+}
+set TZData(:SystemV/HST10) $TZData(:Pacific/Honolulu)
diff --git a/library/tzdata/SystemV/MST7 b/library/tzdata/SystemV/MST7
new file mode 100644
index 0000000..e67a781
--- /dev/null
+++ b/library/tzdata/SystemV/MST7
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Phoenix)]} {
+ LoadTimeZoneFile America/Phoenix
+}
+set TZData(:SystemV/MST7) $TZData(:America/Phoenix)
diff --git a/library/tzdata/SystemV/MST7MDT b/library/tzdata/SystemV/MST7MDT
new file mode 100644
index 0000000..fda5bf1
--- /dev/null
+++ b/library/tzdata/SystemV/MST7MDT
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Denver)]} {
+ LoadTimeZoneFile America/Denver
+}
+set TZData(:SystemV/MST7MDT) $TZData(:America/Denver)
diff --git a/library/tzdata/SystemV/PST8 b/library/tzdata/SystemV/PST8
new file mode 100644
index 0000000..8e30bb8
--- /dev/null
+++ b/library/tzdata/SystemV/PST8
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Pitcairn)]} {
+ LoadTimeZoneFile Pacific/Pitcairn
+}
+set TZData(:SystemV/PST8) $TZData(:Pacific/Pitcairn)
diff --git a/library/tzdata/SystemV/PST8PDT b/library/tzdata/SystemV/PST8PDT
new file mode 100644
index 0000000..8281a9a
--- /dev/null
+++ b/library/tzdata/SystemV/PST8PDT
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Los_Angeles)]} {
+ LoadTimeZoneFile America/Los_Angeles
+}
+set TZData(:SystemV/PST8PDT) $TZData(:America/Los_Angeles)
diff --git a/library/tzdata/SystemV/YST9 b/library/tzdata/SystemV/YST9
new file mode 100644
index 0000000..32d3717
--- /dev/null
+++ b/library/tzdata/SystemV/YST9
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Gambier)]} {
+ LoadTimeZoneFile Pacific/Gambier
+}
+set TZData(:SystemV/YST9) $TZData(:Pacific/Gambier)
diff --git a/library/tzdata/SystemV/YST9YDT b/library/tzdata/SystemV/YST9YDT
new file mode 100644
index 0000000..fba405f
--- /dev/null
+++ b/library/tzdata/SystemV/YST9YDT
@@ -0,0 +1,5 @@
+# created by ../tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Anchorage)]} {
+ LoadTimeZoneFile America/Anchorage
+}
+set TZData(:SystemV/YST9YDT) $TZData(:America/Anchorage)
diff --git a/library/tzdata/Turkey b/library/tzdata/Turkey
new file mode 100644
index 0000000..e20a7a5
--- /dev/null
+++ b/library/tzdata/Turkey
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Istanbul)]} {
+ LoadTimeZoneFile Europe/Istanbul
+}
+set TZData(:Turkey) $TZData(:Europe/Istanbul)
diff --git a/library/tzdata/UCT b/library/tzdata/UCT
new file mode 100644
index 0000000..8449328
--- /dev/null
+++ b/library/tzdata/UCT
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/UCT)]} {
+ LoadTimeZoneFile Etc/UCT
+}
+set TZData(:UCT) $TZData(:Etc/UCT)
diff --git a/library/tzdata/US/Alaska b/library/tzdata/US/Alaska
new file mode 100644
index 0000000..69a3899
--- /dev/null
+++ b/library/tzdata/US/Alaska
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Anchorage)]} {
+ LoadTimeZoneFile America/Anchorage
+}
+set TZData(:US/Alaska) $TZData(:America/Anchorage)
diff --git a/library/tzdata/US/Aleutian b/library/tzdata/US/Aleutian
new file mode 100644
index 0000000..024e70b
--- /dev/null
+++ b/library/tzdata/US/Aleutian
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Adak)]} {
+ LoadTimeZoneFile America/Adak
+}
+set TZData(:US/Aleutian) $TZData(:America/Adak)
diff --git a/library/tzdata/US/Arizona b/library/tzdata/US/Arizona
new file mode 100644
index 0000000..8eaa961
--- /dev/null
+++ b/library/tzdata/US/Arizona
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Phoenix)]} {
+ LoadTimeZoneFile America/Phoenix
+}
+set TZData(:US/Arizona) $TZData(:America/Phoenix)
diff --git a/library/tzdata/US/Central b/library/tzdata/US/Central
new file mode 100644
index 0000000..2aab66e
--- /dev/null
+++ b/library/tzdata/US/Central
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Chicago)]} {
+ LoadTimeZoneFile America/Chicago
+}
+set TZData(:US/Central) $TZData(:America/Chicago)
diff --git a/library/tzdata/US/East-Indiana b/library/tzdata/US/East-Indiana
new file mode 100644
index 0000000..2035a06
--- /dev/null
+++ b/library/tzdata/US/East-Indiana
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Indiana/Indianapolis)]} {
+ LoadTimeZoneFile America/Indiana/Indianapolis
+}
+set TZData(:US/East-Indiana) $TZData(:America/Indiana/Indianapolis)
diff --git a/library/tzdata/US/Eastern b/library/tzdata/US/Eastern
new file mode 100644
index 0000000..3cf2651
--- /dev/null
+++ b/library/tzdata/US/Eastern
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/New_York)]} {
+ LoadTimeZoneFile America/New_York
+}
+set TZData(:US/Eastern) $TZData(:America/New_York)
diff --git a/library/tzdata/US/Hawaii b/library/tzdata/US/Hawaii
new file mode 100644
index 0000000..6d1af65
--- /dev/null
+++ b/library/tzdata/US/Hawaii
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Honolulu)]} {
+ LoadTimeZoneFile Pacific/Honolulu
+}
+set TZData(:US/Hawaii) $TZData(:Pacific/Honolulu)
diff --git a/library/tzdata/US/Indiana-Starke b/library/tzdata/US/Indiana-Starke
new file mode 100644
index 0000000..6ffe0e2
--- /dev/null
+++ b/library/tzdata/US/Indiana-Starke
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Indiana/Knox)]} {
+ LoadTimeZoneFile America/Indiana/Knox
+}
+set TZData(:US/Indiana-Starke) $TZData(:America/Indiana/Knox)
diff --git a/library/tzdata/US/Michigan b/library/tzdata/US/Michigan
new file mode 100644
index 0000000..b15035c
--- /dev/null
+++ b/library/tzdata/US/Michigan
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Detroit)]} {
+ LoadTimeZoneFile America/Detroit
+}
+set TZData(:US/Michigan) $TZData(:America/Detroit)
diff --git a/library/tzdata/US/Mountain b/library/tzdata/US/Mountain
new file mode 100644
index 0000000..b54235f
--- /dev/null
+++ b/library/tzdata/US/Mountain
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Denver)]} {
+ LoadTimeZoneFile America/Denver
+}
+set TZData(:US/Mountain) $TZData(:America/Denver)
diff --git a/library/tzdata/US/Pacific b/library/tzdata/US/Pacific
new file mode 100644
index 0000000..7232215
--- /dev/null
+++ b/library/tzdata/US/Pacific
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Los_Angeles)]} {
+ LoadTimeZoneFile America/Los_Angeles
+}
+set TZData(:US/Pacific) $TZData(:America/Los_Angeles)
diff --git a/library/tzdata/US/Pacific-New b/library/tzdata/US/Pacific-New
new file mode 100644
index 0000000..2eb30f8
--- /dev/null
+++ b/library/tzdata/US/Pacific-New
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Los_Angeles)]} {
+ LoadTimeZoneFile America/Los_Angeles
+}
+set TZData(:US/Pacific-New) $TZData(:America/Los_Angeles)
diff --git a/library/tzdata/US/Samoa b/library/tzdata/US/Samoa
new file mode 100644
index 0000000..ad86b4f
--- /dev/null
+++ b/library/tzdata/US/Samoa
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Pacific/Pago_Pago)]} {
+ LoadTimeZoneFile Pacific/Pago_Pago
+}
+set TZData(:US/Samoa) $TZData(:Pacific/Pago_Pago)
diff --git a/library/tzdata/UTC b/library/tzdata/UTC
new file mode 100644
index 0000000..6d04d96
--- /dev/null
+++ b/library/tzdata/UTC
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/UTC)]} {
+ LoadTimeZoneFile Etc/UTC
+}
+set TZData(:UTC) $TZData(:Etc/UTC)
diff --git a/library/tzdata/Universal b/library/tzdata/Universal
new file mode 100644
index 0000000..4a9ed5e
--- /dev/null
+++ b/library/tzdata/Universal
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/UTC)]} {
+ LoadTimeZoneFile Etc/UTC
+}
+set TZData(:Universal) $TZData(:Etc/UTC)
diff --git a/library/tzdata/W-SU b/library/tzdata/W-SU
new file mode 100644
index 0000000..7e1f613
--- /dev/null
+++ b/library/tzdata/W-SU
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Moscow)]} {
+ LoadTimeZoneFile Europe/Moscow
+}
+set TZData(:W-SU) $TZData(:Europe/Moscow)
diff --git a/library/tzdata/WET b/library/tzdata/WET
new file mode 100644
index 0000000..60366a3
--- /dev/null
+++ b/library/tzdata/WET
@@ -0,0 +1,251 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:WET) {
+ {-9223372036854775808 0 0 WET}
+ {228877200 3600 1 WEST}
+ {243997200 0 0 WET}
+ {260326800 3600 1 WEST}
+ {276051600 0 0 WET}
+ {291776400 3600 1 WEST}
+ {307501200 0 0 WET}
+ {323830800 3600 1 WEST}
+ {338950800 0 0 WET}
+ {354675600 3600 1 WEST}
+ {370400400 0 0 WET}
+ {386125200 3600 1 WEST}
+ {401850000 0 0 WET}
+ {417574800 3600 1 WEST}
+ {433299600 0 0 WET}
+ {449024400 3600 1 WEST}
+ {465354000 0 0 WET}
+ {481078800 3600 1 WEST}
+ {496803600 0 0 WET}
+ {512528400 3600 1 WEST}
+ {528253200 0 0 WET}
+ {543978000 3600 1 WEST}
+ {559702800 0 0 WET}
+ {575427600 3600 1 WEST}
+ {591152400 0 0 WET}
+ {606877200 3600 1 WEST}
+ {622602000 0 0 WET}
+ {638326800 3600 1 WEST}
+ {654656400 0 0 WET}
+ {670381200 3600 1 WEST}
+ {686106000 0 0 WET}
+ {701830800 3600 1 WEST}
+ {717555600 0 0 WET}
+ {733280400 3600 1 WEST}
+ {749005200 0 0 WET}
+ {764730000 3600 1 WEST}
+ {780454800 0 0 WET}
+ {796179600 3600 1 WEST}
+ {811904400 0 0 WET}
+ {828234000 3600 1 WEST}
+ {846378000 0 0 WET}
+ {859683600 3600 1 WEST}
+ {877827600 0 0 WET}
+ {891133200 3600 1 WEST}
+ {909277200 0 0 WET}
+ {922582800 3600 1 WEST}
+ {941331600 0 0 WET}
+ {954032400 3600 1 WEST}
+ {972781200 0 0 WET}
+ {985482000 3600 1 WEST}
+ {1004230800 0 0 WET}
+ {1017536400 3600 1 WEST}
+ {1035680400 0 0 WET}
+ {1048986000 3600 1 WEST}
+ {1067130000 0 0 WET}
+ {1080435600 3600 1 WEST}
+ {1099184400 0 0 WET}
+ {1111885200 3600 1 WEST}
+ {1130634000 0 0 WET}
+ {1143334800 3600 1 WEST}
+ {1162083600 0 0 WET}
+ {1174784400 3600 1 WEST}
+ {1193533200 0 0 WET}
+ {1206838800 3600 1 WEST}
+ {1224982800 0 0 WET}
+ {1238288400 3600 1 WEST}
+ {1256432400 0 0 WET}
+ {1269738000 3600 1 WEST}
+ {1288486800 0 0 WET}
+ {1301187600 3600 1 WEST}
+ {1319936400 0 0 WET}
+ {1332637200 3600 1 WEST}
+ {1351386000 0 0 WET}
+ {1364691600 3600 1 WEST}
+ {1382835600 0 0 WET}
+ {1396141200 3600 1 WEST}
+ {1414285200 0 0 WET}
+ {1427590800 3600 1 WEST}
+ {1445734800 0 0 WET}
+ {1459040400 3600 1 WEST}
+ {1477789200 0 0 WET}
+ {1490490000 3600 1 WEST}
+ {1509238800 0 0 WET}
+ {1521939600 3600 1 WEST}
+ {1540688400 0 0 WET}
+ {1553994000 3600 1 WEST}
+ {1572138000 0 0 WET}
+ {1585443600 3600 1 WEST}
+ {1603587600 0 0 WET}
+ {1616893200 3600 1 WEST}
+ {1635642000 0 0 WET}
+ {1648342800 3600 1 WEST}
+ {1667091600 0 0 WET}
+ {1679792400 3600 1 WEST}
+ {1698541200 0 0 WET}
+ {1711846800 3600 1 WEST}
+ {1729990800 0 0 WET}
+ {1743296400 3600 1 WEST}
+ {1761440400 0 0 WET}
+ {1774746000 3600 1 WEST}
+ {1792890000 0 0 WET}
+ {1806195600 3600 1 WEST}
+ {1824944400 0 0 WET}
+ {1837645200 3600 1 WEST}
+ {1856394000 0 0 WET}
+ {1869094800 3600 1 WEST}
+ {1887843600 0 0 WET}
+ {1901149200 3600 1 WEST}
+ {1919293200 0 0 WET}
+ {1932598800 3600 1 WEST}
+ {1950742800 0 0 WET}
+ {1964048400 3600 1 WEST}
+ {1982797200 0 0 WET}
+ {1995498000 3600 1 WEST}
+ {2014246800 0 0 WET}
+ {2026947600 3600 1 WEST}
+ {2045696400 0 0 WET}
+ {2058397200 3600 1 WEST}
+ {2077146000 0 0 WET}
+ {2090451600 3600 1 WEST}
+ {2108595600 0 0 WET}
+ {2121901200 3600 1 WEST}
+ {2140045200 0 0 WET}
+ {2153350800 3600 1 WEST}
+ {2172099600 0 0 WET}
+ {2184800400 3600 1 WEST}
+ {2203549200 0 0 WET}
+ {2216250000 3600 1 WEST}
+ {2234998800 0 0 WET}
+ {2248304400 3600 1 WEST}
+ {2266448400 0 0 WET}
+ {2279754000 3600 1 WEST}
+ {2297898000 0 0 WET}
+ {2311203600 3600 1 WEST}
+ {2329347600 0 0 WET}
+ {2342653200 3600 1 WEST}
+ {2361402000 0 0 WET}
+ {2374102800 3600 1 WEST}
+ {2392851600 0 0 WET}
+ {2405552400 3600 1 WEST}
+ {2424301200 0 0 WET}
+ {2437606800 3600 1 WEST}
+ {2455750800 0 0 WET}
+ {2469056400 3600 1 WEST}
+ {2487200400 0 0 WET}
+ {2500506000 3600 1 WEST}
+ {2519254800 0 0 WET}
+ {2531955600 3600 1 WEST}
+ {2550704400 0 0 WET}
+ {2563405200 3600 1 WEST}
+ {2582154000 0 0 WET}
+ {2595459600 3600 1 WEST}
+ {2613603600 0 0 WET}
+ {2626909200 3600 1 WEST}
+ {2645053200 0 0 WET}
+ {2658358800 3600 1 WEST}
+ {2676502800 0 0 WET}
+ {2689808400 3600 1 WEST}
+ {2708557200 0 0 WET}
+ {2721258000 3600 1 WEST}
+ {2740006800 0 0 WET}
+ {2752707600 3600 1 WEST}
+ {2771456400 0 0 WET}
+ {2784762000 3600 1 WEST}
+ {2802906000 0 0 WET}
+ {2816211600 3600 1 WEST}
+ {2834355600 0 0 WET}
+ {2847661200 3600 1 WEST}
+ {2866410000 0 0 WET}
+ {2879110800 3600 1 WEST}
+ {2897859600 0 0 WET}
+ {2910560400 3600 1 WEST}
+ {2929309200 0 0 WET}
+ {2942010000 3600 1 WEST}
+ {2960758800 0 0 WET}
+ {2974064400 3600 1 WEST}
+ {2992208400 0 0 WET}
+ {3005514000 3600 1 WEST}
+ {3023658000 0 0 WET}
+ {3036963600 3600 1 WEST}
+ {3055712400 0 0 WET}
+ {3068413200 3600 1 WEST}
+ {3087162000 0 0 WET}
+ {3099862800 3600 1 WEST}
+ {3118611600 0 0 WET}
+ {3131917200 3600 1 WEST}
+ {3150061200 0 0 WET}
+ {3163366800 3600 1 WEST}
+ {3181510800 0 0 WET}
+ {3194816400 3600 1 WEST}
+ {3212960400 0 0 WET}
+ {3226266000 3600 1 WEST}
+ {3245014800 0 0 WET}
+ {3257715600 3600 1 WEST}
+ {3276464400 0 0 WET}
+ {3289165200 3600 1 WEST}
+ {3307914000 0 0 WET}
+ {3321219600 3600 1 WEST}
+ {3339363600 0 0 WET}
+ {3352669200 3600 1 WEST}
+ {3370813200 0 0 WET}
+ {3384118800 3600 1 WEST}
+ {3402867600 0 0 WET}
+ {3415568400 3600 1 WEST}
+ {3434317200 0 0 WET}
+ {3447018000 3600 1 WEST}
+ {3465766800 0 0 WET}
+ {3479072400 3600 1 WEST}
+ {3497216400 0 0 WET}
+ {3510522000 3600 1 WEST}
+ {3528666000 0 0 WET}
+ {3541971600 3600 1 WEST}
+ {3560115600 0 0 WET}
+ {3573421200 3600 1 WEST}
+ {3592170000 0 0 WET}
+ {3604870800 3600 1 WEST}
+ {3623619600 0 0 WET}
+ {3636320400 3600 1 WEST}
+ {3655069200 0 0 WET}
+ {3668374800 3600 1 WEST}
+ {3686518800 0 0 WET}
+ {3699824400 3600 1 WEST}
+ {3717968400 0 0 WET}
+ {3731274000 3600 1 WEST}
+ {3750022800 0 0 WET}
+ {3762723600 3600 1 WEST}
+ {3781472400 0 0 WET}
+ {3794173200 3600 1 WEST}
+ {3812922000 0 0 WET}
+ {3825622800 3600 1 WEST}
+ {3844371600 0 0 WET}
+ {3857677200 3600 1 WEST}
+ {3875821200 0 0 WET}
+ {3889126800 3600 1 WEST}
+ {3907270800 0 0 WET}
+ {3920576400 3600 1 WEST}
+ {3939325200 0 0 WET}
+ {3952026000 3600 1 WEST}
+ {3970774800 0 0 WET}
+ {3983475600 3600 1 WEST}
+ {4002224400 0 0 WET}
+ {4015530000 3600 1 WEST}
+ {4033674000 0 0 WET}
+ {4046979600 3600 1 WEST}
+ {4065123600 0 0 WET}
+ {4078429200 3600 1 WEST}
+ {4096573200 0 0 WET}
+}
diff --git a/library/tzdata/Zulu b/library/tzdata/Zulu
new file mode 100644
index 0000000..e9748e4
--- /dev/null
+++ b/library/tzdata/Zulu
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Etc/UTC)]} {
+ LoadTimeZoneFile Etc/UTC
+}
+set TZData(:Zulu) $TZData(:Etc/UTC)
diff --git a/library/word.tcl b/library/word.tcl
index 0c8d576..b8f34a5 100644
--- a/library/word.tcl
+++ b/library/word.tcl
@@ -1,132 +1,144 @@
# word.tcl --
#
-# This file defines various procedures for computing word boundaries
-# in strings. This file is primarily needed so Tk text and entry
-# widgets behave properly for different platforms.
+# This file defines various procedures for computing word boundaries in
+# strings. This file is primarily needed so Tk text and entry widgets behave
+# properly for different platforms.
#
# Copyright (c) 1996 by Sun Microsystems, Inc.
# Copyright (c) 1998 by Scritpics Corporation.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: word.tcl,v 1.4 1999/04/16 00:46:57 stanton Exp $
# The following variables are used to determine which characters are
-# interpreted as white space.
+# interpreted as white space.
-if {$tcl_platform(platform) == "windows"} {
- # Windows style - any but space, tab, or newline
- set tcl_wordchars "\[^ \t\n\]"
- set tcl_nonwordchars "\[ \t\n\]"
+if {$::tcl_platform(platform) eq "windows"} {
+ # Windows style - any but a unicode space char
+ set ::tcl_wordchars {\S}
+ set ::tcl_nonwordchars {\s}
} else {
- # Motif style - any number, letter, or underscore
- set tcl_wordchars {[a-zA-Z0-9_]}
- set tcl_nonwordchars {[^a-zA-Z0-9_]}
+ # Motif style - any unicode word char (number, letter, or underscore)
+ set ::tcl_wordchars {\w}
+ set ::tcl_nonwordchars {\W}
+}
+
+# Arrange for caches of the real matcher REs to be kept, which enables the REs
+# themselves to be cached for greater performance (and somewhat greater
+# clarity too).
+
+namespace eval ::tcl {
+ variable WordBreakRE
+ array set WordBreakRE {}
+
+ proc UpdateWordBreakREs args {
+ # Ignores the arguments
+ global tcl_wordchars tcl_nonwordchars
+ variable WordBreakRE
+
+ # To keep the RE strings short...
+ set letter $tcl_wordchars
+ set space $tcl_nonwordchars
+
+ set WordBreakRE(after) "$letter$space|$space$letter"
+ set WordBreakRE(before) "^.*($letter$space|$space$letter)"
+ set WordBreakRE(end) "$space*$letter+$space"
+ set WordBreakRE(next) "$letter*$space+$letter"
+ set WordBreakRE(previous) "$space*($letter+)$space*\$"
+ }
+
+ # Initialize the cache
+ UpdateWordBreakREs
+ trace add variable ::tcl_wordchars write ::tcl::UpdateWordBreakREs
+ trace add variable ::tcl_nonwordchars write ::tcl::UpdateWordBreakREs
}
# tcl_wordBreakAfter --
#
-# This procedure returns the index of the first word boundary
-# after the starting point in the given string, or -1 if there
-# are no more boundaries in the given string. The index returned refers
-# to the first character of the pair that comprises a boundary.
+# This procedure returns the index of the first word boundary after the
+# starting point in the given string, or -1 if there are no more boundaries in
+# the given string. The index returned refers to the first character of the
+# pair that comprises a boundary.
#
# Arguments:
# str - String to search.
# start - Index into string specifying starting point.
proc tcl_wordBreakAfter {str start} {
- global tcl_nonwordchars tcl_wordchars
- set str [string range $str $start end]
- if {[regexp -indices "$tcl_wordchars$tcl_nonwordchars|$tcl_nonwordchars$tcl_wordchars" $str result]} {
- return [expr {[lindex $result 1] + $start}]
- }
- return -1
+ variable ::tcl::WordBreakRE
+ set result {-1 -1}
+ regexp -indices -start $start -- $WordBreakRE(after) $str result
+ return [lindex $result 1]
}
# tcl_wordBreakBefore --
#
-# This procedure returns the index of the first word boundary
-# before the starting point in the given string, or -1 if there
-# are no more boundaries in the given string. The index returned
-# refers to the second character of the pair that comprises a boundary.
+# This procedure returns the index of the first word boundary before the
+# starting point in the given string, or -1 if there are no more boundaries in
+# the given string. The index returned refers to the second character of the
+# pair that comprises a boundary.
#
# Arguments:
# str - String to search.
# start - Index into string specifying starting point.
proc tcl_wordBreakBefore {str start} {
- global tcl_nonwordchars tcl_wordchars
- if {[string compare $start end] == 0} {
- set start [string length $str]
- }
- if {[regexp -indices "^.*($tcl_wordchars$tcl_nonwordchars|$tcl_nonwordchars$tcl_wordchars)" [string range $str 0 $start] result]} {
- return [lindex $result 1]
- }
- return -1
+ variable ::tcl::WordBreakRE
+ set result {-1 -1}
+ regexp -indices -- $WordBreakRE(before) [string range $str 0 $start] result
+ return [lindex $result 1]
}
# tcl_endOfWord --
#
-# This procedure returns the index of the first end-of-word location
-# after a starting index in the given string. An end-of-word location
-# is defined to be the first whitespace character following the first
-# non-whitespace character after the starting point. Returns -1 if
-# there are no more words after the starting point.
+# This procedure returns the index of the first end-of-word location after a
+# starting index in the given string. An end-of-word location is defined to be
+# the first whitespace character following the first non-whitespace character
+# after the starting point. Returns -1 if there are no more words after the
+# starting point.
#
# Arguments:
# str - String to search.
# start - Index into string specifying starting point.
proc tcl_endOfWord {str start} {
- global tcl_nonwordchars tcl_wordchars
- if {[regexp -indices "$tcl_nonwordchars*$tcl_wordchars+$tcl_nonwordchars" \
- [string range $str $start end] result]} {
- return [expr {[lindex $result 1] + $start}]
- }
- return -1
+ variable ::tcl::WordBreakRE
+ set result {-1 -1}
+ regexp -indices -start $start -- $WordBreakRE(end) $str result
+ return [lindex $result 1]
}
# tcl_startOfNextWord --
#
-# This procedure returns the index of the first start-of-word location
-# after a starting index in the given string. A start-of-word
-# location is defined to be a non-whitespace character following a
-# whitespace character. Returns -1 if there are no more start-of-word
-# locations after the starting point.
+# This procedure returns the index of the first start-of-word location after a
+# starting index in the given string. A start-of-word location is defined to
+# be a non-whitespace character following a whitespace character. Returns -1
+# if there are no more start-of-word locations after the starting point.
#
# Arguments:
# str - String to search.
# start - Index into string specifying starting point.
proc tcl_startOfNextWord {str start} {
- global tcl_nonwordchars tcl_wordchars
- if {[regexp -indices "$tcl_wordchars*$tcl_nonwordchars+$tcl_wordchars" \
- [string range $str $start end] result]} {
- return [expr {[lindex $result 1] + $start}]
- }
- return -1
+ variable ::tcl::WordBreakRE
+ set result {-1 -1}
+ regexp -indices -start $start -- $WordBreakRE(next) $str result
+ return [lindex $result 1]
}
# tcl_startOfPreviousWord --
#
-# This procedure returns the index of the first start-of-word location
-# before a starting index in the given string.
+# This procedure returns the index of the first start-of-word location before
+# a starting index in the given string.
#
# Arguments:
# str - String to search.
# start - Index into string specifying starting point.
proc tcl_startOfPreviousWord {str start} {
- global tcl_nonwordchars tcl_wordchars
- if {[string compare $start end] == 0} {
- set start [string length $str]
- }
- if {[regexp -indices \
- "$tcl_nonwordchars*($tcl_wordchars+)$tcl_nonwordchars*\$" \
- [string range $str 0 [expr {$start - 1}]] result word]} {
- return [lindex $word 0]
- }
- return -1
+ variable ::tcl::WordBreakRE
+ set word {-1 -1}
+ regexp -indices -- $WordBreakRE(previous) [string range $str 0 $start-1] \
+ result word
+ return [lindex $word 0]
}