ICU-21949 tzdata2022a update in ICU
diff --git a/icu4c/source/data/misc/zoneinfo64.txt b/icu4c/source/data/misc/zoneinfo64.txt
index 28208be..c42e580 100644
--- a/icu4c/source/data/misc/zoneinfo64.txt
+++ b/icu4c/source/data/misc/zoneinfo64.txt
@@ -3,17 +3,17 @@
 // License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------
 // Build tool:  tz2icu
-// Build date:  Thu Nov  4 10:32:31 2021
+// Build date:  Wed Mar 16 23:36:37 2022
 // tz database: ftp://ftp.iana.org/tz/
-// tz version:  2021a4
-// ICU version: 70.1
+// tz version:  2022a
+// ICU version: 71.1
 //---------------------------------------------------------
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<
 // >> !!! >>>            DO NOT EDIT             <<< !!! <<
 //---------------------------------------------------------
 
 zoneinfo64:table(nofallback) {
- TZVersion { "2021a4" }
+ TZVersion { "2022a" }
  Zones:array { 
   /* ACT */ :int { 356 } //Z#0
   /* AET */ :int { 368 } //Z#1
@@ -24,13 +24,9 @@
     trans:intvector { -1830383032 }
     typeOffsets:intvector { -968, 0, 0, 0 }
     typeMap:bin { "01" }
-    links:intvector { 5, 11, 13, 21, 22, 27, 38, 51, 52, 55, 348 }
+    links:intvector { 5, 6, 11, 13, 21, 22, 27, 38, 51, 52, 55, 348 }
   } //Z#5
-  /* Africa/Accra */ :table {
-    trans:intvector { -1709337548, -1581206400, -1577917200, -1556834400, -1546294800, -1525298400, -1514758800, -1493762400, -1483222800, -1462226400, -1451686800, -1430604000, -1420064400, -1399068000, -1388528400, -1367532000, -1356992400, -1335996000, -1325456400, -1304373600, -1293834000, -1272837600, -1262298000, -1241301600, -1230762000, -1209765600, -1199226000, -1178143200, -1167603600, -1146607200, -1136067600, -1115071200, -1104531600, -1083535200, -1072995600, -1051912800, -1041373200, -1020376800, -1009837200, -988840800, -978301200, -957304800, -946765200, -936309600, -915142800, -904773600, -883606800, -880329600, -756952200, -610149600, -599610600, -578613600, -568074600, -546991200, -536452200, -515455200, -504916200, -483919200, -473380200, -452383200, -441844200 }
-    typeOffsets:intvector { -52, 0, 0, 0, 0, 1200, 0, 1800, 1800, 0 }
-    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010401030103010301030103010301" }
-  } //Z#6
+  /* Africa/Accra */ :int { 5 } //Z#6
   /* Africa/Addis_Ababa */ :int { 48 } //Z#7
   /* Africa/Algiers */ :table {
     transPre32:intvector { -1, 1808374564 }
@@ -62,7 +58,7 @@
     trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590890400, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682820000, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835834400, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927764000, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080778400, 2107994400, 2111018400, 2138234400, 2141863200 }
     transPost32:intvector { 0, -2125888096, 0, -2122259296, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969244896, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877315296, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724300896, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632371296, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479356896, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1387427296, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326342496, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1234412896, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1142483296, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1081398496, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -989468896, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -897539296, 0, -870323296, 0, -867299296, 0, -840083296, 0, -836454496, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -744524896, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -652595296, 0, -625379296, 0, -622355296, 0, -595139296, 0, -591510496 }
     typeOffsets:intvector { -1820, 0, 0, 0, 0, 3600, 3600, 0 }
-    typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
+    typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }
   } //Z#19
   /* Africa/Ceuta */ :table {
     transPre32:intvector { -1, 2117514496 }
@@ -81,8 +77,8 @@
   /* Africa/El_Aaiun */ :table {
     trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590890400, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682820000, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835834400, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927764000, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080778400, 2107994400, 2111018400, 2138234400, 2141863200 }
     transPost32:intvector { 0, -2125888096, 0, -2122259296, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969244896, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877315296, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724300896, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632371296, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479356896, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1387427296, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326342496, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1234412896, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1142483296, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1081398496, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -989468896, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -897539296, 0, -870323296, 0, -867299296, 0, -840083296, 0, -836454496, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -744524896, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -652595296, 0, -625379296, 0, -622355296, 0, -595139296, 0, -591510496 }
-    typeOffsets:intvector { -3168, 0, -3600, 0, 0, 0, 0, 3600 }
-    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }
+    typeOffsets:intvector { -3168, 0, -3600, 0, 0, 0, 0, 3600, 3600, 0 }
+    typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030204" }
   } //Z#26
   /* Africa/Freetown */ :int { 5 } //Z#27
   /* Africa/Gaborone */ :int { 43 } //Z#28
@@ -193,8 +189,8 @@
     finalYear:int { 2008 }
     links:intvector { 4, 60, 617 }
   } //Z#60
-  /* America/Anguilla */ :int { 187 } //Z#61
-  /* America/Antigua */ :int { 187 } //Z#62
+  /* America/Anguilla */ :int { 190 } //Z#61
+  /* America/Antigua */ :int { 190 } //Z#62
   /* America/Araguaina */ :table {
     trans:intvector { -1767214032, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1350788400, 1361066400 }
     typeOffsets:intvector { -11568, 0, -10800, 0, -10800, 3600 }
@@ -277,7 +273,7 @@
     typeOffsets:intvector { -16392, 0, -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
     typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030204050405040504050405040504030402040504" }
   } //Z#76
-  /* America/Aruba */ :int { 105 } //Z#77
+  /* America/Aruba */ :int { 190 } //Z#77
   /* America/Asuncion */ :table {
     trans:intvector { -1206389360, 86760000, 134017200, 181368000, 194497200, 212990400, 226033200, 244526400, 257569200, 276062400, 291783600, 307598400, 323406000, 339220800, 354942000, 370756800, 386478000, 402292800, 418014000, 433828800, 449636400, 465451200, 481172400, 496987200, 512708400, 528523200, 544244400, 560059200, 575866800, 591681600, 607402800, 625032000, 638938800, 654753600, 670474800, 686721600, 699418800, 718257600, 733546800, 749448000, 762318000, 780984000, 793767600, 812520000, 825649200, 844574400, 856666800, 876024000, 888721200, 907473600, 920775600, 938923200, 952225200, 970372800, 983674800, 1002427200, 1018148400, 1030852800, 1049598000, 1062907200, 1081047600, 1097985600, 1110682800, 1129435200, 1142132400, 1160884800, 1173582000, 1192939200, 1205031600, 1224388800, 1236481200, 1255838400, 1270954800, 1286078400, 1302404400, 1317528000, 1333854000, 1349582400, 1364094000, 1381032000 }
     typeOffsets:intvector { -13840, 0, -14400, 0, -14400, 3600, -10800, 0 }
@@ -286,13 +282,7 @@
     finalRaw:int { -14400 }
     finalYear:int { 2014 }
   } //Z#78
-  /* America/Atikokan */ :table {
-    transPre32:intvector { -1, 1928234084 }
-    trans:intvector { -1632067200, -1615136400, -923248800, -765392400 }
-    typeOffsets:intvector { -21988, 0, -21600, 0, -21600, 3600, -18000, 0 }
-    typeMap:bin { "0102010203" }
-    links:intvector { 79, 100 }
-  } //Z#79
+  /* America/Atikokan */ :int { 182 } //Z#79
   /* America/Atka */ :int { 59 } //Z#80
   /* America/Bahia */ :table {
     trans:intvector { -1767216356, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1318734000, 1330221600 }
@@ -322,12 +312,7 @@
     typeOffsets:intvector { -21168, 0, -21600, 0, -21600, 1800, -21600, 3600 }
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201030102010201020102010201020102010201020102010201020102010201020102010201020102010201020103010301" }
   } //Z#85
-  /* America/Blanc-Sablon */ :table {
-    transPre32:intvector { -1, 1581070604 }
-    trans:intvector { -1632074400, -1615143600, -880221600, -765399600 }
-    typeOffsets:intvector { -13708, 0, -14400, 0, -14400, 3600 }
-    typeMap:bin { "0102010201" }
-  } //Z#86
+  /* America/Blanc-Sablon */ :int { 190 } //Z#86
   /* America/Boa_Vista */ :table {
     trans:intvector { -1767211040, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 938923200, 951620400, 970977600, 971578800 }
     typeOffsets:intvector { -14560, 0, -14400, 0, -14400, 3600 }
@@ -397,30 +382,20 @@
     finalRaw:int { -25200 }
     finalYear:int { 2003 }
   } //Z#99
-  /* America/Coral_Harbour */ :int { 79 } //Z#100
+  /* America/Coral_Harbour */ :int { 182 } //Z#100
   /* America/Cordoba */ :int { 67 } //Z#101
   /* America/Costa_Rica */ :table {
     trans:intvector { -1545071027, 288770400, 297234000, 320220000, 328683600, 664264800, 678344400, 695714400, 700635600 }
     typeOffsets:intvector { -20173, 0, -21600, 0, -21600, 3600 }
     typeMap:bin { "010201020102010201" }
   } //Z#102
-  /* America/Creston */ :table {
-    transPre32:intvector { -1, 1581084860 }
-    trans:intvector { -1680454800, -1627833600 }
-    typeOffsets:intvector { -27964, 0, -28800, 0, -25200, 0 }
-    typeMap:bin { "020102" }
-  } //Z#103
+  /* America/Creston */ :int { 185 } //Z#103
   /* America/Cuiaba */ :table {
     trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400 }
     typeOffsets:intvector { -13460, 0, -14400, 0, -14400, 3600 }
     typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
   } //Z#104
-  /* America/Curacao */ :table {
-    trans:intvector { -1826738653, -157750200 }
-    typeOffsets:intvector { -16547, 0, -16200, 0, -14400, 0 }
-    typeMap:bin { "0102" }
-    links:intvector { 77, 105, 148, 153 }
-  } //Z#105
+  /* America/Curacao */ :int { 190 } //Z#105
   /* America/Danmarkshavn */ :table {
     trans:intvector { -1686091520, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 820465200 }
     typeOffsets:intvector { -4480, 0, -10800, 0, -10800, 3600, 0, 0 }
@@ -457,7 +432,7 @@
     finalYear:int { 2008 }
     links:intvector { 110, 625 }
   } //Z#110
-  /* America/Dominica */ :int { 187 } //Z#111
+  /* America/Dominica */ :int { 190 } //Z#111
   /* America/Edmonton */ :table {
     trans:intvector { -1998663968, -1632063600, -1615132800, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -765388800, -715791600, -702489600, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
     typeOffsets:intvector { -27232, 0, -25200, 0, -25200, 3600 }
@@ -517,8 +492,8 @@
     finalRaw:int { -18000 }
     finalYear:int { 2019 }
   } //Z#122
-  /* America/Grenada */ :int { 187 } //Z#123
-  /* America/Guadeloupe */ :int { 187 } //Z#124
+  /* America/Grenada */ :int { 190 } //Z#123
+  /* America/Guadeloupe */ :int { 190 } //Z#124
   /* America/Guatemala */ :table {
     trans:intvector { -1617040676, 123055200, 130914000, 422344800, 433054800, 669708000, 684219600, 1146376800, 1159678800 }
     typeOffsets:intvector { -21724, 0, -21600, 0, -21600, 3600 }
@@ -686,7 +661,7 @@
     finalYear:int { 2008 }
   } //Z#146
   /* America/Knox_IN */ :int { 132 } //Z#147
-  /* America/Kralendijk */ :int { 105 } //Z#148
+  /* America/Kralendijk */ :int { 190 } //Z#148
   /* America/La_Paz */ :table {
     trans:intvector { -1205954844, -1192307244 }
     typeOffsets:intvector { -16356, 0, -16356, 3600, -14400, 0 }
@@ -709,7 +684,7 @@
     links:intvector { 151, 550, 627, 628 }
   } //Z#151
   /* America/Louisville */ :int { 145 } //Z#152
-  /* America/Lower_Princes */ :int { 105 } //Z#153
+  /* America/Lower_Princes */ :int { 190 } //Z#153
   /* America/Maceio */ :table {
     trans:intvector { -1767217028, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 813726000, 824004000, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 }
     typeOffsets:intvector { -8572, 0, -10800, 0, -10800, 3600 }
@@ -727,7 +702,7 @@
     typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201" }
     links:intvector { 156, 378 }
   } //Z#156
-  /* America/Marigot */ :int { 187 } //Z#157
+  /* America/Marigot */ :int { 190 } //Z#157
   /* America/Martinique */ :table {
     trans:intvector { -1851537340, 323841600, 338958000 }
     typeOffsets:intvector { -14660, 0, -14400, 0, -14400, 3600 }
@@ -817,15 +792,8 @@
     typeMap:bin { "01030203020302030203020302030203020302030203020305040504060406040504060406040705040604060406040604060406040604060406040604060406040604060406040604060406040604060406040604" }
   } //Z#169
   /* America/Montreal */ :int { 218 } //Z#170
-  /* America/Montserrat */ :int { 187 } //Z#171
-  /* America/Nassau */ :table {
-    trans:intvector { -1825095030, -873140400, -788904000, -786222000, -763848000, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
-    typeOffsets:intvector { -18570, 0, -18000, 0, -18000, 3600 }
-    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
-    finalRule { "US" }
-    finalRaw:int { -18000 }
-    finalYear:int { 2008 }
-  } //Z#172
+  /* America/Montserrat */ :int { 190 } //Z#171
+  /* America/Nassau */ :int { 218 } //Z#172
   /* America/New_York */ :table {
     transPre32:intvector { -1, 1577316496 }
     trans:intvector { -1633280400, -1615140000, -1601830800, -1583690400, -1570381200, -1551636000, -1536512400, -1523210400, -1504458000, -1491760800, -1473008400, -1459706400, -1441558800, -1428256800, -1410109200, -1396807200, -1378659600, -1365357600, -1347210000, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1189357200, -1176055200, -1157302800, -1144605600, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -923248800, -905101200, -891799200, -880218000, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -639597600, -620845200, -608148000, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
@@ -909,7 +877,7 @@
     trans:intvector { -1946918424 }
     typeOffsets:intvector { -19088, 0, -19176, 0, -18000, 0 }
     typeMap:bin { "0102" }
-    links:intvector { 97, 182 }
+    links:intvector { 79, 97, 100, 182 }
   } //Z#182
   /* America/Pangnirtung */ :table {
     trans:intvector { -1546300800, -880221600, -765399600, -147902400, -131572800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
@@ -929,7 +897,7 @@
     trans:intvector { -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 }
     typeOffsets:intvector { -26898, 0, -25200, 0, -25200, 3600 }
     typeMap:bin { "0102010201020102010201" }
-    links:intvector { 185, 547, 619 }
+    links:intvector { 103, 185, 547, 619 }
   } //Z#185
   /* America/Port-au-Prince */ :table {
     transPre32:intvector { -1, 1770463056 }
@@ -940,12 +908,7 @@
     finalRaw:int { -18000 }
     finalYear:int { 2018 }
   } //Z#186
-  /* America/Port_of_Spain */ :table {
-    trans:intvector { -1825098836 }
-    typeOffsets:intvector { -14764, 0, -14400, 0 }
-    typeMap:bin { "01" }
-    links:intvector { 61, 62, 111, 123, 124, 157, 171, 187, 207, 209, 210, 211, 212, 219, 221 }
-  } //Z#187
+  /* America/Port_of_Spain */ :int { 190 } //Z#187
   /* America/Porto_Acre */ :int { 197 } //Z#188
   /* America/Porto_Velho */ :table {
     trans:intvector { -1767210264, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200 }
@@ -957,12 +920,12 @@
     trans:intvector { -873057600, -765399600 }
     typeOffsets:intvector { -15865, 0, -14400, 0, -14400, 3600 }
     typeMap:bin { "010201" }
-    links:intvector { 190, 549 }
+    links:intvector { 61, 62, 77, 86, 105, 111, 123, 124, 148, 153, 157, 171, 187, 190, 207, 209, 210, 211, 212, 219, 221, 549 }
   } //Z#190
   /* America/Punta_Arenas */ :table {
     transPre32:intvector { -1, 1770462716 }
-    trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }
-    typeOffsets:intvector { -17020, 0, -18000, 0, -18000, 3600, -16966, 0, -14400, 0, -14400, 3600, -10800, 0 }
+    trans:intvector { -1892661435, -1688410800, -1619205435, -1593806400, -1335986235, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1480820400 }
+    typeOffsets:intvector { -17020, 0, -18000, 0, -18000, 3600, -16965, 0, -14400, 0, -14400, 3600, -10800, 0 }
     typeMap:bin { "0301030403020102010201020102010401040104050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040506" }
   } //Z#191
   /* America/Rainy_River */ :table {
@@ -1015,8 +978,8 @@
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020103" }
   } //Z#200
   /* America/Santiago */ :table {
-    trans:intvector { -1892661434, -1688410800, -1619205434, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736376400, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1494730800, 1502596800, 1526180400, 1534046400, 1554606000, 1567915200 }
-    typeOffsets:intvector { -16966, 0, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 }
+    trans:intvector { -1892661435, -1688410800, -1619205435, -1593806400, -1335986235, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -740520000, -736376400, -718056000, -713649600, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 592372800, 605674800, 624427200, 637124400, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600, 1270350000, 1286683200, 1304823600, 1313899200, 1335668400, 1346558400, 1367118000, 1378612800, 1398567600, 1410062400, 1463281200, 1471147200, 1494730800, 1502596800, 1526180400, 1534046400, 1554606000, 1567915200 }
+    typeOffsets:intvector { -16965, 0, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600 }
     typeMap:bin { "0100030002010201020102010201030103040301030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304" }
     finalRule { "Chile" }
     finalRaw:int { -14400 }
@@ -1053,7 +1016,7 @@
     finalRaw:int { -32400 }
     finalYear:int { 2008 }
   } //Z#206
-  /* America/St_Barthelemy */ :int { 187 } //Z#207
+  /* America/St_Barthelemy */ :int { 190 } //Z#207
   /* America/St_Johns */ :table {
     trans:intvector { -1664130548, -1650137348, -1632076148, -1615145348, -1598650148, -1590100148, -1567286948, -1551565748, -1535837348, -1520116148, -1503782948, -1488666548, -1472333348, -1457216948, -1440883748, -1425767348, -1409434148, -1394317748, -1377984548, -1362263348, -1346534948, -1330813748, -1314480548, -1299364148, -1283030948, -1267914548, -1251581348, -1236464948, -1220131748, -1205015348, -1188682148, -1172960948, -1156627748, -1141511348, -1125178148, -1110061748, -1096921748, -1093728600, -1078612200, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -116447400, -100121400, -84393000, -68671800, -52943400, -37222200, -21493800, -5772600, 9955800, 25677000, 41405400, 57731400, 73459800, 89181000, 104909400, 120630600, 136359000, 152080200, 167808600, 183529800, 199258200, 215584200, 230707800, 247033800, 262762200, 278483400, 294211800, 309933000, 325661400, 341382600, 357111000, 372832200, 388560600, 404886600, 420010200, 436336200, 452064600, 467785800, 483514200, 499235400, 514963800, 530685000, 544591860, 562127460, 576041460, 594178260, 607491060, 625631460, 638940660, 657081060, 670995060, 688530660, 702444660, 719980260, 733894260, 752034660, 765343860, 783484260, 796793460, 814933860, 828847860, 846383460, 860297460, 877833060, 891747060, 909282660, 923196660, 941337060, 954646260, 972786660, 986095860, 1004236260, 1018150260, 1035685860, 1049599860, 1067135460, 1081049460, 1099189860, 1112499060, 1130639460, 1143948660, 1162089060, 1173583860, 1194143460, 1205033460, 1225593060, 1236483060, 1257042660, 1268537460, 1289097060, 1299987060, 1320553800, 1331443800, 1352003400 }
     typeOffsets:intvector { -12652, 0, -12652, 3600, -12600, 0, -12600, 3600, -12600, 7200 }
@@ -1063,10 +1026,10 @@
     finalYear:int { 2013 }
     links:intvector { 208, 381, 390 }
   } //Z#208
-  /* America/St_Kitts */ :int { 187 } //Z#209
-  /* America/St_Lucia */ :int { 187 } //Z#210
-  /* America/St_Thomas */ :int { 187 } //Z#211
-  /* America/St_Vincent */ :int { 187 } //Z#212
+  /* America/St_Kitts */ :int { 190 } //Z#209
+  /* America/St_Lucia */ :int { 190 } //Z#210
+  /* America/St_Thomas */ :int { 190 } //Z#211
+  /* America/St_Vincent */ :int { 190 } //Z#212
   /* America/Swift_Current */ :table {
     trans:intvector { -2030201320, -1632063600, -1615132800, -880210800, -765388800, -747241200, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -400086000, -384364800, -337186800, -321465600, -305737200, -292435200, -273682800, -260985600, 73472400 }
     typeOffsets:intvector { -25880, 0, -25200, 0, -25200, 3600, -21600, 0 }
@@ -1111,9 +1074,9 @@
     finalRule { "Canada" }
     finalRaw:int { -18000 }
     finalYear:int { 2008 }
-    links:intvector { 170, 218, 388 }
+    links:intvector { 170, 172, 218, 388 }
   } //Z#218
-  /* America/Tortola */ :int { 187 } //Z#219
+  /* America/Tortola */ :int { 190 } //Z#219
   /* America/Vancouver */ :table {
     transPre32:intvector { -1, 1581086444 }
     trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -733935600, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
@@ -1124,7 +1087,7 @@
     finalYear:int { 2008 }
     links:intvector { 220, 391 }
   } //Z#220
-  /* America/Virgin */ :int { 187 } //Z#221
+  /* America/Virgin */ :int { 190 } //Z#221
   /* America/Whitehorse */ :table {
     transPre32:intvector { -1, 2105969308 }
     trans:intvector { -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -765381600, -147884400, -131554800, -81961200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800, 1205056800, 1225616400, 1236506400, 1257066000, 1268560800, 1289120400, 1300010400, 1320570000, 1331460000, 1352019600, 1362909600, 1383469200, 1394359200, 1414918800, 1425808800, 1446368400, 1457863200, 1478422800, 1489312800, 1509872400, 1520762400, 1541322000, 1552212000, 1572771600, 1583661600, 1604214000 }
@@ -1169,11 +1132,7 @@
     typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 }
     typeMap:bin { "02000201020102" }
   } //Z#227
-  /* Antarctica/DumontDUrville */ :table {
-    trans:intvector { -725846400, -566992800, -415497600 }
-    typeOffsets:intvector { 0, 0, 36000, 0 }
-    typeMap:bin { "010001" }
-  } //Z#228
+  /* Antarctica/DumontDUrville */ :int { 585 } //Z#228
   /* Antarctica/Macquarie */ :table {
     transPre32:intvector { -1, 2080708096 }
     trans:intvector { -1680508800, -1665388800, -1601719200, -687052800, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000, 1238860800, 1254585600, 1301760000, 1317484800 }
@@ -1200,11 +1159,7 @@
     typeMap:bin { "01" }
   } //Z#233
   /* Antarctica/South_Pole */ :int { 553 } //Z#234
-  /* Antarctica/Syowa */ :table {
-    trans:intvector { -407808000 }
-    typeOffsets:intvector { 0, 0, 10800, 0 }
-    typeMap:bin { "01" }
-  } //Z#235
+  /* Antarctica/Syowa */ :int { 310 } //Z#235
   /* Antarctica/Troll */ :table {
     trans:intvector { 1111885200, 1130634000 }
     typeOffsets:intvector { 0, 0, 0, 7200 }
@@ -1363,22 +1318,22 @@
   } //Z#268
   /* Asia/Gaza */ :table {
     transPre32:intvector { -1, 2109557424 }
-    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400 }
+    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666908000 }
     typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 }
-    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     finalRule { "Palestine" }
     finalRaw:int { 7200 }
-    finalYear:int { 2022 }
+    finalYear:int { 2023 }
   } //Z#269
   /* Asia/Harbin */ :int { 315 } //Z#270
   /* Asia/Hebron */ :table {
     transPre32:intvector { -1, 2109557273 }
-    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400 }
+    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666908000 }
     typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 }
-    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     finalRule { "Palestine" }
     finalRaw:int { 7200 }
-    finalYear:int { 2022 }
+    finalYear:int { 2023 }
   } //Z#271
   /* Asia/Ho_Chi_Minh */ :table {
     trans:intvector { -2004073600, -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }
@@ -1563,7 +1518,7 @@
     trans:intvector { -719636812 }
     typeOffsets:intvector { 11212, 0, 10800, 0 }
     typeMap:bin { "01" }
-    links:intvector { 239, 291, 310 }
+    links:intvector { 235, 239, 291, 310 }
   } //Z#310
   /* Asia/Saigon */ :int { 272 } //Z#311
   /* Asia/Sakhalin */ :table {
@@ -2164,12 +2119,12 @@
     typeMap:bin { "0102010201020102010201020102030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
   } //Z#461
   /* Europe/Kiev */ :table {
-    trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
+    trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846378000, 859683600, 877827600 }
     typeOffsets:intvector { 7324, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
-    typeMap:bin { "0305020102010506050605060506050605060506050605060506040304030403040304030403" }
+    typeMap:bin { "03050201020105060506050605060506050605060506050605060403040304030403040304030403" }
     finalRule { "EU" }
     finalRaw:int { 7200 }
-    finalYear:int { 1997 }
+    finalYear:int { 1998 }
   } //Z#462
   /* Europe/Kirov */ :table {
     trans:intvector { -1593820800, -1247540400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174777200, 1193526000, 1206831600, 1224975600, 1238281200, 1256425200, 1269730800, 1288479600, 1301180400, 1414274400 }
@@ -2307,7 +2262,7 @@
   } //Z#484
   /* Europe/Simferopol */ :table {
     transPre32:intvector { -1, 1454818312 }
-    trans:intvector { -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 767739600, 780436800, 796165200, 811886400, 828219600, 846374400, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396137600, 1414274400 }
+    trans:intvector { -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 701827200, 717552000, 733276800, 749001600, 764726400, 767739600, 780436800, 796165200, 811886400, 828219600, 846374400, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396137600, 1414274400 }
     typeOffsets:intvector { 8184, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8160, 0, 10800, 0, 10800, 3600, 14400, 0 }
     typeMap:bin { "050306020102010206070607060706070607060706070607060706030403040304070607060706040304030403040304030403040304030403040304030403040304030403040304030806" }
   } //Z#485
@@ -2354,12 +2309,12 @@
   } //Z#492
   /* Europe/Uzhgorod */ :table {
     transPre32:intvector { -1, 1794027544 }
-    trans:intvector { -938905200, -857257200, -844556400, -828226800, -812502000, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 670384800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
+    trans:intvector { -938905200, -857257200, -844556400, -828226800, -812502000, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 646786800, 670384800, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846378000, 859683600, 877827600 }
     typeOffsets:intvector { 5352, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
-    typeMap:bin { "0102010201020105060506050605060506050605060506050605010304030403040304030403" }
+    typeMap:bin { "01020102010201050605060506050605060506050605060506050103040304030403040304030403" }
     finalRule { "EU" }
     finalRaw:int { 7200 }
-    finalYear:int { 1997 }
+    finalYear:int { 1998 }
   } //Z#493
   /* Europe/Vaduz */ :int { 502 } //Z#494
   /* Europe/Vatican */ :int { 480 } //Z#495
@@ -2398,12 +2353,12 @@
   /* Europe/Zagreb */ :int { 445 } //Z#500
   /* Europe/Zaporozhye */ :table {
     transPre32:intvector { -1, 1454818056 }
-    trans:intvector { -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
+    trans:intvector { -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846378000, 859683600, 877827600 }
     typeOffsets:intvector { 8440, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8400, 0, 10800, 0, 10800, 3600 }
-    typeMap:bin { "05030602010201060706070607060706070607060706070607060706040304030403040304030403" }
+    typeMap:bin { "050306020102010607060706070607060706070607060706070607060403040304030403040304030403" }
     finalRule { "EU" }
     finalRaw:int { 7200 }
-    finalYear:int { 1997 }
+    finalYear:int { 1998 }
   } //Z#501
   /* Europe/Zurich */ :table {
     transPre32:intvector { -1, 619768448, -1, 1909720710 }
@@ -2719,6 +2674,7 @@
     transPre32:intvector { -1, 1454791176, -1, 1928176784 }
     typeOffsets:intvector { 35320, 0, 35312, 0, 36000, 0 }
     typeMap:bin { "0102" }
+    links:intvector { 228, 585 }
   } //Z#585
   /* Pacific/Rarotonga */ :table {
     transPre32:intvector { -1, 2085412040 }
@@ -3115,7 +3071,7 @@
     8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
   } //_#19
   Palestine:intvector {
-    2, 24, -7, 0, 0, 9, -31, -6, 3600, 0, 3600
+    2, 25, -1, 0, 0, 9, 23, -6, 3600, 0, 3600
   } //_#20
   Para:intvector {
     9, 1, -1, 0, 0, 2, 22, -1, 0, 0, 3600
@@ -3361,7 +3317,7 @@
   "CA", //Z#218 America/Toronto
   "VG", //Z#219 America/Tortola
   "CA", //Z#220 America/Vancouver
-  "TT", //Z#221 America/Virgin
+  "VI", //Z#221 America/Virgin
   "CA", //Z#222 America/Whitehorse
   "CA", //Z#223 America/Winnipeg
   "US", //Z#224 America/Yakutat
diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp
index 1ab0c92..5ae9ae7 100644
--- a/icu4c/source/test/intltest/tztest.cpp
+++ b/icu4c/source/test/intltest/tztest.cpp
@@ -2036,12 +2036,20 @@
 
 void TimeZoneTest::TestCanonicalID() {
 
-    // Some canonical IDs in CLDR are defined as "Link"
-    // in Olson tzdata.
+    // Olson (IANA) tzdata used to have very few "Link"s long time ago.
+    // This test case was written when most of CLDR canonical time zones are
+    // defined as independent "Zone" in the TZ database.
+    // Since then, the TZ maintainer found some historic rules in mid 20th century
+    // were not really reliable, and many zones are now sharing rules.
+    // As of TZ database release 2022a, there are quite a lot of zones defined
+    // by "Link" to another zone, so the exception table below becomes really
+    // big. It might be still useful to make sure CLDR zone aliases are consistent
+    // with zone rules.
     static const struct {
-        const char *alias;
-        const char *zone;
+        const char *alias;  // link-from
+        const char *zone;   // link-to (A zone ID with "Zone" rule)
     } excluded1[] = {
+        {"Africa/Accra", "Africa/Abidjan"},
         {"Africa/Addis_Ababa", "Africa/Nairobi"},
         {"Africa/Asmera", "Africa/Nairobi"},
         {"Africa/Bamako", "Africa/Abidjan"},
@@ -2076,35 +2084,43 @@
         {"Africa/Ouagadougou", "Africa/Abidjan"},
         {"Africa/Porto-Novo", "Africa/Lagos"},
         {"Africa/Sao_Tome", "Africa/Abidjan"},
-        {"America/Antigua", "America/Port_of_Spain"},
-        {"America/Anguilla", "America/Port_of_Spain"},
+        {"America/Antigua", "America/Puerto_Rico"},
+        {"America/Anguilla", "America/Puerto_Rico"},
+        {"America/Aruba", "America/Puerto_Rico"},
+        {"America/Atikokan", "America/Panama"},
+        {"America/Blanc-Sablon", "America/Puerto_Rico"},
         {"America/Cayman", "America/Panama"},
-        {"America/Coral_Harbour", "America/Atikokan"},
-        {"America/Curacao", "America/Aruba"},
-        {"America/Dominica", "America/Port_of_Spain"},
-        {"America/Grenada", "America/Port_of_Spain"},
-        {"America/Guadeloupe", "America/Port_of_Spain"},
-        {"America/Kralendijk", "America/Aruba"},
-        {"America/Lower_Princes", "America/Aruba"},
-        {"America/Marigot", "America/Port_of_Spain"},
-        {"America/Montserrat", "America/Port_of_Spain"},
+        {"America/Coral_Harbour", "America/Panama"},
+        {"America/Creston", "America/Phoenix"},
+        {"America/Curacao", "America/Puerto_Rico"},
+        {"America/Dominica", "America/Puerto_Rico"},
+        {"America/Grenada", "America/Puerto_Rico"},
+        {"America/Guadeloupe", "America/Puerto_Rico"},
+        {"America/Kralendijk", "America/Puerto_Rico"},
+        {"America/Lower_Princes", "America/Puerto_Rico"},
+        {"America/Marigot", "America/Puerto_Rico"},
+        {"America/Montreal", "America/Toronto"},
+        {"America/Montserrat", "America/Puerto_Rico"},
+        {"America/Nassau", "America/Toronto"},
+        {"America/Port_of_Spain", "America/Puerto_Rico"},
         {"America/Santa_Isabel", "America/Tijuana"},
         {"America/Shiprock", "America/Denver"},
-        {"America/St_Barthelemy", "America/Port_of_Spain"},
-        {"America/St_Kitts", "America/Port_of_Spain"},
-        {"America/St_Lucia", "America/Port_of_Spain"},
-        {"America/St_Thomas", "America/Port_of_Spain"},
-        {"America/St_Vincent", "America/Port_of_Spain"},
-        {"America/Toronto", "America/Montreal"},
-        {"America/Tortola", "America/Port_of_Spain"},
+        {"America/St_Barthelemy", "America/Puerto_Rico"},
+        {"America/St_Kitts", "America/Puerto_Rico"},
+        {"America/St_Lucia", "America/Puerto_Rico"},
+        {"America/St_Thomas", "America/Puerto_Rico"},
+        {"America/St_Vincent", "America/Puerto_Rico"},
+        {"America/Tortola", "America/Puerto_Rico"},
         {"America/Virgin", "America/Puerto_Rico"},
+        {"Antarctica/DumontDUrville", "Pacific/Port_Moresby"},
         {"Antarctica/South_Pole", "Antarctica/McMurdo"},
+        {"Antarctica/Syowa", "Asia/Riyadh"},
         {"Arctic/Longyearbyen", "Europe/Oslo"},
-        {"Asia/Kuwait", "Asia/Aden"},
+        {"Asia/Aden", "Asia/Riyadh"},
+        {"Asia/Kuwait", "Asia/Riyadh"},
         {"Asia/Muscat", "Asia/Dubai"},
         {"Asia/Phnom_Penh", "Asia/Bangkok"},
         {"Asia/Qatar", "Asia/Bahrain"},
-        {"Asia/Riyadh", "Asia/Aden"},
         {"Asia/Vientiane", "Asia/Bangkok"},
         {"Atlantic/Jan_Mayen", "Europe/Oslo"},
         {"Atlantic/St_Helena", "Africa/Abidjan"},
diff --git a/icu4c/source/tools/tzcode/icuregions b/icu4c/source/tools/tzcode/icuregions
index 851f324..c3c138a 100644
--- a/icu4c/source/tools/tzcode/icuregions
+++ b/icu4c/source/tools/tzcode/icuregions
@@ -12,6 +12,7 @@
 Africa/Asmera ER
 America/Coral_Harbour CA
 America/Montreal CA
+America/Virgin VI
 Europe/Simferopol UA
 Pacific/Johnston UM
 
diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar
index 7b4479c..9645e03 100644
--- a/icu4j/main/shared/data/icutzdata.jar
+++ b/icu4j/main/shared/data/icutzdata.jar
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:177d2e1826df0b449bbdb55d2db1d3963124e8772b86e389dc56409b2c8391ef
-size 96449
+oid sha256:5fa0fd397507e35fa0a8025868281963a54abc0d03613bf3f1431970b29d4843
+size 95826
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
index 70ec58a..48cf764 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -1479,9 +1479,18 @@
 
     @Test
     public void TestCanonicalID() {
-        // Some canonical IDs in CLDR are defined as "Link"
-        // in Olson tzdata.
+        // Olson (IANA) tzdata used to have very few "Link"s long time ago.
+        // This test case was written when most of CLDR canonical time zones are
+        // defined as independent "Zone" in the TZ database.
+        // Since then, the TZ maintainer found some historic rules in mid 20th century
+        // were not really reliable, and many zones are now sharing rules.
+        // As of TZ database release 2022a, there are quite a lot of zones defined
+        // by "Link" to another zone, so the exception table below becomes really
+        // big. It might be still useful to make sure CLDR zone aliases are consistent
+        // with zone rules.
         final String[][] excluded1 = {
+            //  {"<link-from>", "<link-to> (A zone ID with "Zone" rule)"},
+                {"Africa/Accra", "Africa/Abidjan"},
                 {"Africa/Addis_Ababa", "Africa/Nairobi"},
                 {"Africa/Asmera", "Africa/Nairobi"},
                 {"Africa/Bamako", "Africa/Abidjan"},
@@ -1516,35 +1525,43 @@
                 {"Africa/Ouagadougou", "Africa/Abidjan"},
                 {"Africa/Porto-Novo", "Africa/Lagos"},
                 {"Africa/Sao_Tome", "Africa/Abidjan"},
-                {"America/Antigua", "America/Port_of_Spain"},
-                {"America/Anguilla", "America/Port_of_Spain"},
+                {"America/Antigua", "America/Puerto_Rico"},
+                {"America/Anguilla", "America/Puerto_Rico"},
+                {"America/Aruba", "America/Puerto_Rico"},
+                {"America/Atikokan", "America/Panama"},
+                {"America/Blanc-Sablon", "America/Puerto_Rico"},
                 {"America/Cayman", "America/Panama"},
-                {"America/Coral_Harbour", "America/Atikokan"},
-                {"America/Curacao", "America/Aruba"},
-                {"America/Dominica", "America/Port_of_Spain"},
-                {"America/Grenada", "America/Port_of_Spain"},
-                {"America/Guadeloupe", "America/Port_of_Spain"},
-                {"America/Kralendijk", "America/Aruba"},
-                {"America/Lower_Princes", "America/Aruba"},
-                {"America/Marigot", "America/Port_of_Spain"},
-                {"America/Montserrat", "America/Port_of_Spain"},
+                {"America/Coral_Harbour", "America/Panama"},
+                {"America/Creston", "America/Phoenix"},
+                {"America/Curacao", "America/Puerto_Rico"},
+                {"America/Dominica", "America/Puerto_Rico"},
+                {"America/Grenada", "America/Puerto_Rico"},
+                {"America/Guadeloupe", "America/Puerto_Rico"},
+                {"America/Kralendijk", "America/Puerto_Rico"},
+                {"America/Lower_Princes", "America/Puerto_Rico"},
+                {"America/Marigot", "America/Puerto_Rico"},
+                {"America/Montreal", "America/Toronto"},
+                {"America/Montserrat", "America/Puerto_Rico"},
+                {"America/Nassau", "America/Toronto"},
+                {"America/Port_of_Spain", "America/Puerto_Rico"},
                 {"America/Santa_Isabel", "America/Tijuana"},
                 {"America/Shiprock", "America/Denver"},
-                {"America/St_Barthelemy", "America/Port_of_Spain"},
-                {"America/St_Kitts", "America/Port_of_Spain"},
-                {"America/St_Lucia", "America/Port_of_Spain"},
-                {"America/St_Thomas", "America/Port_of_Spain"},
-                {"America/St_Vincent", "America/Port_of_Spain"},
-                {"America/Toronto", "America/Montreal"},
-                {"America/Tortola", "America/Port_of_Spain"},
+                {"America/St_Barthelemy", "America/Puerto_Rico"},
+                {"America/St_Kitts", "America/Puerto_Rico"},
+                {"America/St_Lucia", "America/Puerto_Rico"},
+                {"America/St_Thomas", "America/Puerto_Rico"},
+                {"America/St_Vincent", "America/Puerto_Rico"},
+                {"America/Tortola", "America/Puerto_Rico"},
                 {"America/Virgin", "America/Puerto_Rico"},
+                {"Antarctica/DumontDUrville", "Pacific/Port_Moresby"},
                 {"Antarctica/South_Pole", "Antarctica/McMurdo"},
+                {"Antarctica/Syowa", "Asia/Riyadh"},
                 {"Arctic/Longyearbyen", "Europe/Oslo"},
-                {"Asia/Kuwait", "Asia/Aden"},
+                {"Asia/Aden", "Asia/Riyadh"},
+                {"Asia/Kuwait", "Asia/Riyadh"},
                 {"Asia/Muscat", "Asia/Dubai"},
                 {"Asia/Phnom_Penh", "Asia/Bangkok"},
                 {"Asia/Qatar", "Asia/Bahrain"},
-                {"Asia/Riyadh", "Asia/Aden"},
                 {"Asia/Vientiane", "Asia/Bangkok"},
                 {"Atlantic/Jan_Mayen", "Europe/Oslo"},
                 {"Atlantic/St_Helena", "Africa/Abidjan"},