AceTime  0.8
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019b --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050
4 //
5 // using the TZ Database files from
6 // https://github.com/eggert/tz/releases/tag/2019b
7 //
8 // Policies: 65
9 // Rules: 359
10 // Memory (8-bit): 3621
11 // Memory (32-bit): 5120
12 //
13 // DO NOT EDIT
14 
15 #include <ace_time/common/compat.h>
16 #include "zone_policies.h"
17 
18 namespace ace_time {
19 namespace zonedb {
20 
21 //---------------------------------------------------------------------------
22 // Policy name: AN
23 // Rules: 9
24 // Memory (8-bit): 87
25 // Memory (32-bit): 120
26 //---------------------------------------------------------------------------
27 
28 static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
29  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
30  {
31  -13 /*fromYearTiny*/,
32  -1 /*toYearTiny*/,
33  10 /*inMonth*/,
34  7 /*onDayOfWeek*/,
35  0 /*onDayOfMonth*/,
36  8 /*atTimeCode*/,
37  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
38  4 /*deltaCode*/,
39  'D' /*letter*/,
40  },
41  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
42  {
43  -10 /*fromYearTiny*/,
44  -5 /*toYearTiny*/,
45  3 /*inMonth*/,
46  7 /*onDayOfWeek*/,
47  1 /*onDayOfMonth*/,
48  8 /*atTimeCode*/,
49  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
50  0 /*deltaCode*/,
51  'S' /*letter*/,
52  },
53  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
54  {
55  -4 /*fromYearTiny*/,
56  5 /*toYearTiny*/,
57  3 /*inMonth*/,
58  7 /*onDayOfWeek*/,
59  0 /*onDayOfMonth*/,
60  8 /*atTimeCode*/,
61  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
62  0 /*deltaCode*/,
63  'S' /*letter*/,
64  },
65  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
66  {
67  0 /*fromYearTiny*/,
68  0 /*toYearTiny*/,
69  8 /*inMonth*/,
70  7 /*onDayOfWeek*/,
71  0 /*onDayOfMonth*/,
72  8 /*atTimeCode*/,
73  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
74  4 /*deltaCode*/,
75  'D' /*letter*/,
76  },
77  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
78  {
79  1 /*fromYearTiny*/,
80  7 /*toYearTiny*/,
81  10 /*inMonth*/,
82  7 /*onDayOfWeek*/,
83  0 /*onDayOfMonth*/,
84  8 /*atTimeCode*/,
85  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
86  4 /*deltaCode*/,
87  'D' /*letter*/,
88  },
89  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
90  {
91  6 /*fromYearTiny*/,
92  6 /*toYearTiny*/,
93  4 /*inMonth*/,
94  7 /*onDayOfWeek*/,
95  1 /*onDayOfMonth*/,
96  8 /*atTimeCode*/,
97  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
98  0 /*deltaCode*/,
99  'S' /*letter*/,
100  },
101  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
102  {
103  7 /*fromYearTiny*/,
104  7 /*toYearTiny*/,
105  3 /*inMonth*/,
106  7 /*onDayOfWeek*/,
107  0 /*onDayOfMonth*/,
108  8 /*atTimeCode*/,
109  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
110  0 /*deltaCode*/,
111  'S' /*letter*/,
112  },
113  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
114  {
115  8 /*fromYearTiny*/,
116  126 /*toYearTiny*/,
117  4 /*inMonth*/,
118  7 /*onDayOfWeek*/,
119  1 /*onDayOfMonth*/,
120  8 /*atTimeCode*/,
121  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
122  0 /*deltaCode*/,
123  'S' /*letter*/,
124  },
125  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
126  {
127  8 /*fromYearTiny*/,
128  126 /*toYearTiny*/,
129  10 /*inMonth*/,
130  7 /*onDayOfWeek*/,
131  1 /*onDayOfMonth*/,
132  8 /*atTimeCode*/,
133  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
134  4 /*deltaCode*/,
135  'D' /*letter*/,
136  },
137 
138 };
139 
140 
141 
142 const basic::ZonePolicy kPolicyAN ACE_TIME_PROGMEM = {
143  kZoneRulesAN /*rules*/,
144  nullptr /* letters */,
145  9 /*numRules*/,
146  0 /* numLetters */,
147 };
148 
149 //---------------------------------------------------------------------------
150 // Policy name: AQ
151 // Rules: 1
152 // Memory (8-bit): 15
153 // Memory (32-bit): 24
154 //---------------------------------------------------------------------------
155 
156 static const basic::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
157  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
158  {
159  -10 /*fromYearTiny*/,
160  -8 /*toYearTiny*/,
161  3 /*inMonth*/,
162  7 /*onDayOfWeek*/,
163  1 /*onDayOfMonth*/,
164  8 /*atTimeCode*/,
165  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
166  0 /*deltaCode*/,
167  'S' /*letter*/,
168  },
169 
170 };
171 
172 
173 
174 const basic::ZonePolicy kPolicyAQ ACE_TIME_PROGMEM = {
175  kZoneRulesAQ /*rules*/,
176  nullptr /* letters */,
177  1 /*numRules*/,
178  0 /* numLetters */,
179 };
180 
181 //---------------------------------------------------------------------------
182 // Policy name: AS
183 // Rules: 7
184 // Memory (8-bit): 69
185 // Memory (32-bit): 96
186 //---------------------------------------------------------------------------
187 
188 static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
189  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
190  {
191  -13 /*fromYearTiny*/,
192  7 /*toYearTiny*/,
193  10 /*inMonth*/,
194  7 /*onDayOfWeek*/,
195  0 /*onDayOfMonth*/,
196  8 /*atTimeCode*/,
197  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
198  4 /*deltaCode*/,
199  'D' /*letter*/,
200  },
201  // Rule AS 1994 only - Mar 20 2:00s 0 S
202  {
203  -6 /*fromYearTiny*/,
204  -6 /*toYearTiny*/,
205  3 /*inMonth*/,
206  0 /*onDayOfWeek*/,
207  20 /*onDayOfMonth*/,
208  8 /*atTimeCode*/,
209  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
210  0 /*deltaCode*/,
211  'S' /*letter*/,
212  },
213  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
214  {
215  -5 /*fromYearTiny*/,
216  5 /*toYearTiny*/,
217  3 /*inMonth*/,
218  7 /*onDayOfWeek*/,
219  0 /*onDayOfMonth*/,
220  8 /*atTimeCode*/,
221  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
222  0 /*deltaCode*/,
223  'S' /*letter*/,
224  },
225  // Rule AS 2006 only - Apr 2 2:00s 0 S
226  {
227  6 /*fromYearTiny*/,
228  6 /*toYearTiny*/,
229  4 /*inMonth*/,
230  0 /*onDayOfWeek*/,
231  2 /*onDayOfMonth*/,
232  8 /*atTimeCode*/,
233  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
234  0 /*deltaCode*/,
235  'S' /*letter*/,
236  },
237  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
238  {
239  7 /*fromYearTiny*/,
240  7 /*toYearTiny*/,
241  3 /*inMonth*/,
242  7 /*onDayOfWeek*/,
243  0 /*onDayOfMonth*/,
244  8 /*atTimeCode*/,
245  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
246  0 /*deltaCode*/,
247  'S' /*letter*/,
248  },
249  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
250  {
251  8 /*fromYearTiny*/,
252  126 /*toYearTiny*/,
253  4 /*inMonth*/,
254  7 /*onDayOfWeek*/,
255  1 /*onDayOfMonth*/,
256  8 /*atTimeCode*/,
257  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
258  0 /*deltaCode*/,
259  'S' /*letter*/,
260  },
261  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
262  {
263  8 /*fromYearTiny*/,
264  126 /*toYearTiny*/,
265  10 /*inMonth*/,
266  7 /*onDayOfWeek*/,
267  1 /*onDayOfMonth*/,
268  8 /*atTimeCode*/,
269  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
270  4 /*deltaCode*/,
271  'D' /*letter*/,
272  },
273 
274 };
275 
276 
277 
278 const basic::ZonePolicy kPolicyAS ACE_TIME_PROGMEM = {
279  kZoneRulesAS /*rules*/,
280  nullptr /* letters */,
281  7 /*numRules*/,
282  0 /* numLetters */,
283 };
284 
285 //---------------------------------------------------------------------------
286 // Policy name: AT
287 // Rules: 8
288 // Memory (8-bit): 78
289 // Memory (32-bit): 108
290 //---------------------------------------------------------------------------
291 
292 static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
293  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
294  {
295  -12 /*fromYearTiny*/,
296  -10 /*toYearTiny*/,
297  10 /*inMonth*/,
298  7 /*onDayOfWeek*/,
299  0 /*onDayOfMonth*/,
300  8 /*atTimeCode*/,
301  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
302  4 /*deltaCode*/,
303  'D' /*letter*/,
304  },
305  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
306  {
307  -9 /*fromYearTiny*/,
308  -1 /*toYearTiny*/,
309  10 /*inMonth*/,
310  7 /*onDayOfWeek*/,
311  1 /*onDayOfMonth*/,
312  8 /*atTimeCode*/,
313  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
314  4 /*deltaCode*/,
315  'D' /*letter*/,
316  },
317  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
318  {
319  -9 /*fromYearTiny*/,
320  5 /*toYearTiny*/,
321  3 /*inMonth*/,
322  7 /*onDayOfWeek*/,
323  0 /*onDayOfMonth*/,
324  8 /*atTimeCode*/,
325  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
326  0 /*deltaCode*/,
327  'S' /*letter*/,
328  },
329  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
330  {
331  0 /*fromYearTiny*/,
332  0 /*toYearTiny*/,
333  8 /*inMonth*/,
334  7 /*onDayOfWeek*/,
335  0 /*onDayOfMonth*/,
336  8 /*atTimeCode*/,
337  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
338  4 /*deltaCode*/,
339  'D' /*letter*/,
340  },
341  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
342  {
343  1 /*fromYearTiny*/,
344  126 /*toYearTiny*/,
345  10 /*inMonth*/,
346  7 /*onDayOfWeek*/,
347  1 /*onDayOfMonth*/,
348  8 /*atTimeCode*/,
349  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
350  4 /*deltaCode*/,
351  'D' /*letter*/,
352  },
353  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
354  {
355  6 /*fromYearTiny*/,
356  6 /*toYearTiny*/,
357  4 /*inMonth*/,
358  7 /*onDayOfWeek*/,
359  1 /*onDayOfMonth*/,
360  8 /*atTimeCode*/,
361  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
362  0 /*deltaCode*/,
363  'S' /*letter*/,
364  },
365  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
366  {
367  7 /*fromYearTiny*/,
368  7 /*toYearTiny*/,
369  3 /*inMonth*/,
370  7 /*onDayOfWeek*/,
371  0 /*onDayOfMonth*/,
372  8 /*atTimeCode*/,
373  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
374  0 /*deltaCode*/,
375  'S' /*letter*/,
376  },
377  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
378  {
379  8 /*fromYearTiny*/,
380  126 /*toYearTiny*/,
381  4 /*inMonth*/,
382  7 /*onDayOfWeek*/,
383  1 /*onDayOfMonth*/,
384  8 /*atTimeCode*/,
385  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
386  0 /*deltaCode*/,
387  'S' /*letter*/,
388  },
389 
390 };
391 
392 
393 
394 const basic::ZonePolicy kPolicyAT ACE_TIME_PROGMEM = {
395  kZoneRulesAT /*rules*/,
396  nullptr /* letters */,
397  8 /*numRules*/,
398  0 /* numLetters */,
399 };
400 
401 //---------------------------------------------------------------------------
402 // Policy name: AV
403 // Rules: 9
404 // Memory (8-bit): 87
405 // Memory (32-bit): 120
406 //---------------------------------------------------------------------------
407 
408 static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
409  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
410  {
411  -12 /*fromYearTiny*/,
412  -1 /*toYearTiny*/,
413  10 /*inMonth*/,
414  7 /*onDayOfWeek*/,
415  0 /*onDayOfMonth*/,
416  8 /*atTimeCode*/,
417  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
418  4 /*deltaCode*/,
419  'D' /*letter*/,
420  },
421  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
422  {
423  -9 /*fromYearTiny*/,
424  -6 /*toYearTiny*/,
425  3 /*inMonth*/,
426  7 /*onDayOfWeek*/,
427  1 /*onDayOfMonth*/,
428  8 /*atTimeCode*/,
429  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
430  0 /*deltaCode*/,
431  'S' /*letter*/,
432  },
433  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
434  {
435  -5 /*fromYearTiny*/,
436  5 /*toYearTiny*/,
437  3 /*inMonth*/,
438  7 /*onDayOfWeek*/,
439  0 /*onDayOfMonth*/,
440  8 /*atTimeCode*/,
441  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
442  0 /*deltaCode*/,
443  'S' /*letter*/,
444  },
445  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
446  {
447  0 /*fromYearTiny*/,
448  0 /*toYearTiny*/,
449  8 /*inMonth*/,
450  7 /*onDayOfWeek*/,
451  0 /*onDayOfMonth*/,
452  8 /*atTimeCode*/,
453  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
454  4 /*deltaCode*/,
455  'D' /*letter*/,
456  },
457  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
458  {
459  1 /*fromYearTiny*/,
460  7 /*toYearTiny*/,
461  10 /*inMonth*/,
462  7 /*onDayOfWeek*/,
463  0 /*onDayOfMonth*/,
464  8 /*atTimeCode*/,
465  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
466  4 /*deltaCode*/,
467  'D' /*letter*/,
468  },
469  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
470  {
471  6 /*fromYearTiny*/,
472  6 /*toYearTiny*/,
473  4 /*inMonth*/,
474  7 /*onDayOfWeek*/,
475  1 /*onDayOfMonth*/,
476  8 /*atTimeCode*/,
477  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
478  0 /*deltaCode*/,
479  'S' /*letter*/,
480  },
481  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
482  {
483  7 /*fromYearTiny*/,
484  7 /*toYearTiny*/,
485  3 /*inMonth*/,
486  7 /*onDayOfWeek*/,
487  0 /*onDayOfMonth*/,
488  8 /*atTimeCode*/,
489  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
490  0 /*deltaCode*/,
491  'S' /*letter*/,
492  },
493  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
494  {
495  8 /*fromYearTiny*/,
496  126 /*toYearTiny*/,
497  4 /*inMonth*/,
498  7 /*onDayOfWeek*/,
499  1 /*onDayOfMonth*/,
500  8 /*atTimeCode*/,
501  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
502  0 /*deltaCode*/,
503  'S' /*letter*/,
504  },
505  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
506  {
507  8 /*fromYearTiny*/,
508  126 /*toYearTiny*/,
509  10 /*inMonth*/,
510  7 /*onDayOfWeek*/,
511  1 /*onDayOfMonth*/,
512  8 /*atTimeCode*/,
513  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
514  4 /*deltaCode*/,
515  'D' /*letter*/,
516  },
517 
518 };
519 
520 
521 
522 const basic::ZonePolicy kPolicyAV ACE_TIME_PROGMEM = {
523  kZoneRulesAV /*rules*/,
524  nullptr /* letters */,
525  9 /*numRules*/,
526  0 /* numLetters */,
527 };
528 
529 //---------------------------------------------------------------------------
530 // Policy name: AW
531 // Rules: 4
532 // Memory (8-bit): 42
533 // Memory (32-bit): 60
534 //---------------------------------------------------------------------------
535 
536 static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
537  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
538  {
539  -8 /*fromYearTiny*/,
540  -8 /*toYearTiny*/,
541  3 /*inMonth*/,
542  7 /*onDayOfWeek*/,
543  1 /*onDayOfMonth*/,
544  8 /*atTimeCode*/,
545  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
546  0 /*deltaCode*/,
547  'S' /*letter*/,
548  },
549  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
550  {
551  6 /*fromYearTiny*/,
552  6 /*toYearTiny*/,
553  12 /*inMonth*/,
554  0 /*onDayOfWeek*/,
555  3 /*onDayOfMonth*/,
556  8 /*atTimeCode*/,
557  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
558  4 /*deltaCode*/,
559  'D' /*letter*/,
560  },
561  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
562  {
563  7 /*fromYearTiny*/,
564  9 /*toYearTiny*/,
565  3 /*inMonth*/,
566  7 /*onDayOfWeek*/,
567  0 /*onDayOfMonth*/,
568  8 /*atTimeCode*/,
569  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
570  0 /*deltaCode*/,
571  'S' /*letter*/,
572  },
573  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
574  {
575  7 /*fromYearTiny*/,
576  8 /*toYearTiny*/,
577  10 /*inMonth*/,
578  7 /*onDayOfWeek*/,
579  0 /*onDayOfMonth*/,
580  8 /*atTimeCode*/,
581  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
582  4 /*deltaCode*/,
583  'D' /*letter*/,
584  },
585 
586 };
587 
588 
589 
590 const basic::ZonePolicy kPolicyAW ACE_TIME_PROGMEM = {
591  kZoneRulesAW /*rules*/,
592  nullptr /* letters */,
593  4 /*numRules*/,
594  0 /* numLetters */,
595 };
596 
597 //---------------------------------------------------------------------------
598 // Policy name: Armenia
599 // Rules: 3
600 // Memory (8-bit): 33
601 // Memory (32-bit): 48
602 //---------------------------------------------------------------------------
603 
604 static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
605  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
606  {
607  -127 /*fromYearTiny*/,
608  -127 /*toYearTiny*/,
609  1 /*inMonth*/,
610  0 /*onDayOfWeek*/,
611  1 /*onDayOfMonth*/,
612  0 /*atTimeCode*/,
613  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
614  0 /*deltaCode*/,
615  '-' /*letter*/,
616  },
617  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
618  {
619  11 /*fromYearTiny*/,
620  11 /*toYearTiny*/,
621  3 /*inMonth*/,
622  7 /*onDayOfWeek*/,
623  0 /*onDayOfMonth*/,
624  8 /*atTimeCode*/,
625  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
626  4 /*deltaCode*/,
627  '-' /*letter*/,
628  },
629  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
630  {
631  11 /*fromYearTiny*/,
632  11 /*toYearTiny*/,
633  10 /*inMonth*/,
634  7 /*onDayOfWeek*/,
635  0 /*onDayOfMonth*/,
636  8 /*atTimeCode*/,
637  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
638  0 /*deltaCode*/,
639  '-' /*letter*/,
640  },
641 
642 };
643 
644 
645 
646 const basic::ZonePolicy kPolicyArmenia ACE_TIME_PROGMEM = {
647  kZoneRulesArmenia /*rules*/,
648  nullptr /* letters */,
649  3 /*numRules*/,
650  0 /* numLetters */,
651 };
652 
653 //---------------------------------------------------------------------------
654 // Policy name: Aus
655 // Rules: 1
656 // Memory (8-bit): 15
657 // Memory (32-bit): 24
658 //---------------------------------------------------------------------------
659 
660 static const basic::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
661  // Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
662  {
663  -57 /*fromYearTiny*/,
664  -56 /*toYearTiny*/,
665  3 /*inMonth*/,
666  7 /*onDayOfWeek*/,
667  0 /*onDayOfMonth*/,
668  8 /*atTimeCode*/,
669  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
670  0 /*deltaCode*/,
671  'S' /*letter*/,
672  },
673 
674 };
675 
676 
677 
678 const basic::ZonePolicy kPolicyAus ACE_TIME_PROGMEM = {
679  kZoneRulesAus /*rules*/,
680  nullptr /* letters */,
681  1 /*numRules*/,
682  0 /* numLetters */,
683 };
684 
685 //---------------------------------------------------------------------------
686 // Policy name: Azer
687 // Rules: 2
688 // Memory (8-bit): 24
689 // Memory (32-bit): 36
690 //---------------------------------------------------------------------------
691 
692 static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
693  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
694  {
695  -3 /*fromYearTiny*/,
696  15 /*toYearTiny*/,
697  3 /*inMonth*/,
698  7 /*onDayOfWeek*/,
699  0 /*onDayOfMonth*/,
700  16 /*atTimeCode*/,
701  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
702  4 /*deltaCode*/,
703  '-' /*letter*/,
704  },
705  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
706  {
707  -3 /*fromYearTiny*/,
708  15 /*toYearTiny*/,
709  10 /*inMonth*/,
710  7 /*onDayOfWeek*/,
711  0 /*onDayOfMonth*/,
712  20 /*atTimeCode*/,
713  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
714  0 /*deltaCode*/,
715  '-' /*letter*/,
716  },
717 
718 };
719 
720 
721 
722 const basic::ZonePolicy kPolicyAzer ACE_TIME_PROGMEM = {
723  kZoneRulesAzer /*rules*/,
724  nullptr /* letters */,
725  2 /*numRules*/,
726  0 /* numLetters */,
727 };
728 
729 //---------------------------------------------------------------------------
730 // Policy name: Barb
731 // Rules: 1
732 // Memory (8-bit): 15
733 // Memory (32-bit): 24
734 //---------------------------------------------------------------------------
735 
736 static const basic::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
737  // Rule Barb 1980 only - Sep 25 2:00 0 S
738  {
739  -20 /*fromYearTiny*/,
740  -20 /*toYearTiny*/,
741  9 /*inMonth*/,
742  0 /*onDayOfWeek*/,
743  25 /*onDayOfMonth*/,
744  8 /*atTimeCode*/,
745  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
746  0 /*deltaCode*/,
747  'S' /*letter*/,
748  },
749 
750 };
751 
752 
753 
754 const basic::ZonePolicy kPolicyBarb ACE_TIME_PROGMEM = {
755  kZoneRulesBarb /*rules*/,
756  nullptr /* letters */,
757  1 /*numRules*/,
758  0 /* numLetters */,
759 };
760 
761 //---------------------------------------------------------------------------
762 // Policy name: Brazil
763 // Rules: 20
764 // Memory (8-bit): 186
765 // Memory (32-bit): 252
766 //---------------------------------------------------------------------------
767 
768 static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
769  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
770  {
771  -2 /*fromYearTiny*/,
772  -2 /*toYearTiny*/,
773  10 /*inMonth*/,
774  0 /*onDayOfWeek*/,
775  11 /*onDayOfMonth*/,
776  0 /*atTimeCode*/,
777  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
778  4 /*deltaCode*/,
779  '-' /*letter*/,
780  },
781  // Rule Brazil 1999 only - Feb 21 0:00 0 -
782  {
783  -1 /*fromYearTiny*/,
784  -1 /*toYearTiny*/,
785  2 /*inMonth*/,
786  0 /*onDayOfWeek*/,
787  21 /*onDayOfMonth*/,
788  0 /*atTimeCode*/,
789  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
790  0 /*deltaCode*/,
791  '-' /*letter*/,
792  },
793  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
794  {
795  -1 /*fromYearTiny*/,
796  -1 /*toYearTiny*/,
797  10 /*inMonth*/,
798  0 /*onDayOfWeek*/,
799  3 /*onDayOfMonth*/,
800  0 /*atTimeCode*/,
801  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
802  4 /*deltaCode*/,
803  '-' /*letter*/,
804  },
805  // Rule Brazil 2000 only - Feb 27 0:00 0 -
806  {
807  0 /*fromYearTiny*/,
808  0 /*toYearTiny*/,
809  2 /*inMonth*/,
810  0 /*onDayOfWeek*/,
811  27 /*onDayOfMonth*/,
812  0 /*atTimeCode*/,
813  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
814  0 /*deltaCode*/,
815  '-' /*letter*/,
816  },
817  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
818  {
819  0 /*fromYearTiny*/,
820  1 /*toYearTiny*/,
821  10 /*inMonth*/,
822  7 /*onDayOfWeek*/,
823  8 /*onDayOfMonth*/,
824  0 /*atTimeCode*/,
825  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
826  4 /*deltaCode*/,
827  '-' /*letter*/,
828  },
829  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
830  {
831  1 /*fromYearTiny*/,
832  6 /*toYearTiny*/,
833  2 /*inMonth*/,
834  7 /*onDayOfWeek*/,
835  15 /*onDayOfMonth*/,
836  0 /*atTimeCode*/,
837  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
838  0 /*deltaCode*/,
839  '-' /*letter*/,
840  },
841  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
842  {
843  2 /*fromYearTiny*/,
844  2 /*toYearTiny*/,
845  11 /*inMonth*/,
846  0 /*onDayOfWeek*/,
847  3 /*onDayOfMonth*/,
848  0 /*atTimeCode*/,
849  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
850  4 /*deltaCode*/,
851  '-' /*letter*/,
852  },
853  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
854  {
855  3 /*fromYearTiny*/,
856  3 /*toYearTiny*/,
857  10 /*inMonth*/,
858  0 /*onDayOfWeek*/,
859  19 /*onDayOfMonth*/,
860  0 /*atTimeCode*/,
861  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
862  4 /*deltaCode*/,
863  '-' /*letter*/,
864  },
865  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
866  {
867  4 /*fromYearTiny*/,
868  4 /*toYearTiny*/,
869  11 /*inMonth*/,
870  0 /*onDayOfWeek*/,
871  2 /*onDayOfMonth*/,
872  0 /*atTimeCode*/,
873  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
874  4 /*deltaCode*/,
875  '-' /*letter*/,
876  },
877  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
878  {
879  5 /*fromYearTiny*/,
880  5 /*toYearTiny*/,
881  10 /*inMonth*/,
882  0 /*onDayOfWeek*/,
883  16 /*onDayOfMonth*/,
884  0 /*atTimeCode*/,
885  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
886  4 /*deltaCode*/,
887  '-' /*letter*/,
888  },
889  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
890  {
891  6 /*fromYearTiny*/,
892  6 /*toYearTiny*/,
893  11 /*inMonth*/,
894  0 /*onDayOfWeek*/,
895  5 /*onDayOfMonth*/,
896  0 /*atTimeCode*/,
897  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
898  4 /*deltaCode*/,
899  '-' /*letter*/,
900  },
901  // Rule Brazil 2007 only - Feb 25 0:00 0 -
902  {
903  7 /*fromYearTiny*/,
904  7 /*toYearTiny*/,
905  2 /*inMonth*/,
906  0 /*onDayOfWeek*/,
907  25 /*onDayOfMonth*/,
908  0 /*atTimeCode*/,
909  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
910  0 /*deltaCode*/,
911  '-' /*letter*/,
912  },
913  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
914  {
915  7 /*fromYearTiny*/,
916  7 /*toYearTiny*/,
917  10 /*inMonth*/,
918  7 /*onDayOfWeek*/,
919  8 /*onDayOfMonth*/,
920  0 /*atTimeCode*/,
921  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
922  4 /*deltaCode*/,
923  '-' /*letter*/,
924  },
925  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
926  {
927  8 /*fromYearTiny*/,
928  17 /*toYearTiny*/,
929  10 /*inMonth*/,
930  7 /*onDayOfWeek*/,
931  15 /*onDayOfMonth*/,
932  0 /*atTimeCode*/,
933  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
934  4 /*deltaCode*/,
935  '-' /*letter*/,
936  },
937  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
938  {
939  8 /*fromYearTiny*/,
940  11 /*toYearTiny*/,
941  2 /*inMonth*/,
942  7 /*onDayOfWeek*/,
943  15 /*onDayOfMonth*/,
944  0 /*atTimeCode*/,
945  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
946  0 /*deltaCode*/,
947  '-' /*letter*/,
948  },
949  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
950  {
951  12 /*fromYearTiny*/,
952  12 /*toYearTiny*/,
953  2 /*inMonth*/,
954  7 /*onDayOfWeek*/,
955  22 /*onDayOfMonth*/,
956  0 /*atTimeCode*/,
957  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
958  0 /*deltaCode*/,
959  '-' /*letter*/,
960  },
961  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
962  {
963  13 /*fromYearTiny*/,
964  14 /*toYearTiny*/,
965  2 /*inMonth*/,
966  7 /*onDayOfWeek*/,
967  15 /*onDayOfMonth*/,
968  0 /*atTimeCode*/,
969  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
970  0 /*deltaCode*/,
971  '-' /*letter*/,
972  },
973  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
974  {
975  15 /*fromYearTiny*/,
976  15 /*toYearTiny*/,
977  2 /*inMonth*/,
978  7 /*onDayOfWeek*/,
979  22 /*onDayOfMonth*/,
980  0 /*atTimeCode*/,
981  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
982  0 /*deltaCode*/,
983  '-' /*letter*/,
984  },
985  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
986  {
987  16 /*fromYearTiny*/,
988  19 /*toYearTiny*/,
989  2 /*inMonth*/,
990  7 /*onDayOfWeek*/,
991  15 /*onDayOfMonth*/,
992  0 /*atTimeCode*/,
993  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
994  0 /*deltaCode*/,
995  '-' /*letter*/,
996  },
997  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
998  {
999  18 /*fromYearTiny*/,
1000  18 /*toYearTiny*/,
1001  11 /*inMonth*/,
1002  7 /*onDayOfWeek*/,
1003  1 /*onDayOfMonth*/,
1004  0 /*atTimeCode*/,
1005  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1006  4 /*deltaCode*/,
1007  '-' /*letter*/,
1008  },
1009 
1010 };
1011 
1012 
1013 
1014 const basic::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = {
1015  kZoneRulesBrazil /*rules*/,
1016  nullptr /* letters */,
1017  20 /*numRules*/,
1018  0 /* numLetters */,
1019 };
1020 
1021 //---------------------------------------------------------------------------
1022 // Policy name: C_Eur
1023 // Rules: 3
1024 // Memory (8-bit): 33
1025 // Memory (32-bit): 48
1026 //---------------------------------------------------------------------------
1027 
1028 static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1029  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1030  {
1031  -21 /*fromYearTiny*/,
1032  -5 /*toYearTiny*/,
1033  9 /*inMonth*/,
1034  7 /*onDayOfWeek*/,
1035  0 /*onDayOfMonth*/,
1036  8 /*atTimeCode*/,
1037  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1038  0 /*deltaCode*/,
1039  '-' /*letter*/,
1040  },
1041  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1042  {
1043  -19 /*fromYearTiny*/,
1044  126 /*toYearTiny*/,
1045  3 /*inMonth*/,
1046  7 /*onDayOfWeek*/,
1047  0 /*onDayOfMonth*/,
1048  8 /*atTimeCode*/,
1049  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1050  4 /*deltaCode*/,
1051  'S' /*letter*/,
1052  },
1053  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1054  {
1055  -4 /*fromYearTiny*/,
1056  126 /*toYearTiny*/,
1057  10 /*inMonth*/,
1058  7 /*onDayOfWeek*/,
1059  0 /*onDayOfMonth*/,
1060  8 /*atTimeCode*/,
1061  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1062  0 /*deltaCode*/,
1063  '-' /*letter*/,
1064  },
1065 
1066 };
1067 
1068 
1069 
1070 const basic::ZonePolicy kPolicyC_Eur ACE_TIME_PROGMEM = {
1071  kZoneRulesC_Eur /*rules*/,
1072  nullptr /* letters */,
1073  3 /*numRules*/,
1074  0 /* numLetters */,
1075 };
1076 
1077 //---------------------------------------------------------------------------
1078 // Policy name: CO
1079 // Rules: 1
1080 // Memory (8-bit): 15
1081 // Memory (32-bit): 24
1082 //---------------------------------------------------------------------------
1083 
1084 static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1085  // Rule CO 1993 only - Apr 4 0:00 0 -
1086  {
1087  -7 /*fromYearTiny*/,
1088  -7 /*toYearTiny*/,
1089  4 /*inMonth*/,
1090  0 /*onDayOfWeek*/,
1091  4 /*onDayOfMonth*/,
1092  0 /*atTimeCode*/,
1093  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1094  0 /*deltaCode*/,
1095  '-' /*letter*/,
1096  },
1097 
1098 };
1099 
1100 
1101 
1102 const basic::ZonePolicy kPolicyCO ACE_TIME_PROGMEM = {
1103  kZoneRulesCO /*rules*/,
1104  nullptr /* letters */,
1105  1 /*numRules*/,
1106  0 /* numLetters */,
1107 };
1108 
1109 //---------------------------------------------------------------------------
1110 // Policy name: CR
1111 // Rules: 1
1112 // Memory (8-bit): 15
1113 // Memory (32-bit): 24
1114 //---------------------------------------------------------------------------
1115 
1116 static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1117  // Rule CR 1992 only - Mar 15 0:00 0 S
1118  {
1119  -8 /*fromYearTiny*/,
1120  -8 /*toYearTiny*/,
1121  3 /*inMonth*/,
1122  0 /*onDayOfWeek*/,
1123  15 /*onDayOfMonth*/,
1124  0 /*atTimeCode*/,
1125  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1126  0 /*deltaCode*/,
1127  'S' /*letter*/,
1128  },
1129 
1130 };
1131 
1132 
1133 
1134 const basic::ZonePolicy kPolicyCR ACE_TIME_PROGMEM = {
1135  kZoneRulesCR /*rules*/,
1136  nullptr /* letters */,
1137  1 /*numRules*/,
1138  0 /* numLetters */,
1139 };
1140 
1141 //---------------------------------------------------------------------------
1142 // Policy name: Canada
1143 // Rules: 5
1144 // Memory (8-bit): 51
1145 // Memory (32-bit): 72
1146 //---------------------------------------------------------------------------
1147 
1148 static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1149  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1150  {
1151  -26 /*fromYearTiny*/,
1152  -14 /*toYearTiny*/,
1153  4 /*inMonth*/,
1154  7 /*onDayOfWeek*/,
1155  0 /*onDayOfMonth*/,
1156  8 /*atTimeCode*/,
1157  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1158  4 /*deltaCode*/,
1159  'D' /*letter*/,
1160  },
1161  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1162  {
1163  -26 /*fromYearTiny*/,
1164  6 /*toYearTiny*/,
1165  10 /*inMonth*/,
1166  7 /*onDayOfWeek*/,
1167  0 /*onDayOfMonth*/,
1168  8 /*atTimeCode*/,
1169  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1170  0 /*deltaCode*/,
1171  'S' /*letter*/,
1172  },
1173  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1174  {
1175  -13 /*fromYearTiny*/,
1176  6 /*toYearTiny*/,
1177  4 /*inMonth*/,
1178  7 /*onDayOfWeek*/,
1179  1 /*onDayOfMonth*/,
1180  8 /*atTimeCode*/,
1181  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1182  4 /*deltaCode*/,
1183  'D' /*letter*/,
1184  },
1185  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1186  {
1187  7 /*fromYearTiny*/,
1188  126 /*toYearTiny*/,
1189  3 /*inMonth*/,
1190  7 /*onDayOfWeek*/,
1191  8 /*onDayOfMonth*/,
1192  8 /*atTimeCode*/,
1193  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1194  4 /*deltaCode*/,
1195  'D' /*letter*/,
1196  },
1197  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1198  {
1199  7 /*fromYearTiny*/,
1200  126 /*toYearTiny*/,
1201  11 /*inMonth*/,
1202  7 /*onDayOfWeek*/,
1203  1 /*onDayOfMonth*/,
1204  8 /*atTimeCode*/,
1205  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1206  0 /*deltaCode*/,
1207  'S' /*letter*/,
1208  },
1209 
1210 };
1211 
1212 
1213 
1214 const basic::ZonePolicy kPolicyCanada ACE_TIME_PROGMEM = {
1215  kZoneRulesCanada /*rules*/,
1216  nullptr /* letters */,
1217  5 /*numRules*/,
1218  0 /* numLetters */,
1219 };
1220 
1221 //---------------------------------------------------------------------------
1222 // Policy name: Chatham
1223 // Rules: 5
1224 // Memory (8-bit): 51
1225 // Memory (32-bit): 72
1226 //---------------------------------------------------------------------------
1227 
1228 static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1229  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1230  {
1231  -11 /*fromYearTiny*/,
1232  -11 /*toYearTiny*/,
1233  10 /*inMonth*/,
1234  7 /*onDayOfWeek*/,
1235  8 /*onDayOfMonth*/,
1236  11 /*atTimeCode*/,
1237  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1238  4 /*deltaCode*/,
1239  '-' /*letter*/,
1240  },
1241  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1242  {
1243  -10 /*fromYearTiny*/,
1244  6 /*toYearTiny*/,
1245  10 /*inMonth*/,
1246  7 /*onDayOfWeek*/,
1247  1 /*onDayOfMonth*/,
1248  11 /*atTimeCode*/,
1249  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1250  4 /*deltaCode*/,
1251  '-' /*letter*/,
1252  },
1253  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1254  {
1255  -10 /*fromYearTiny*/,
1256  7 /*toYearTiny*/,
1257  3 /*inMonth*/,
1258  7 /*onDayOfWeek*/,
1259  15 /*onDayOfMonth*/,
1260  11 /*atTimeCode*/,
1261  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1262  0 /*deltaCode*/,
1263  '-' /*letter*/,
1264  },
1265  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1266  {
1267  7 /*fromYearTiny*/,
1268  126 /*toYearTiny*/,
1269  9 /*inMonth*/,
1270  7 /*onDayOfWeek*/,
1271  0 /*onDayOfMonth*/,
1272  11 /*atTimeCode*/,
1273  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1274  4 /*deltaCode*/,
1275  '-' /*letter*/,
1276  },
1277  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1278  {
1279  8 /*fromYearTiny*/,
1280  126 /*toYearTiny*/,
1281  4 /*inMonth*/,
1282  7 /*onDayOfWeek*/,
1283  1 /*onDayOfMonth*/,
1284  11 /*atTimeCode*/,
1285  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1286  0 /*deltaCode*/,
1287  '-' /*letter*/,
1288  },
1289 
1290 };
1291 
1292 
1293 
1294 const basic::ZonePolicy kPolicyChatham ACE_TIME_PROGMEM = {
1295  kZoneRulesChatham /*rules*/,
1296  nullptr /* letters */,
1297  5 /*numRules*/,
1298  0 /* numLetters */,
1299 };
1300 
1301 //---------------------------------------------------------------------------
1302 // Policy name: Chile
1303 // Rules: 15
1304 // Memory (8-bit): 141
1305 // Memory (32-bit): 192
1306 //---------------------------------------------------------------------------
1307 
1308 static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1309  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1310  {
1311  -2 /*fromYearTiny*/,
1312  -2 /*toYearTiny*/,
1313  9 /*inMonth*/,
1314  0 /*onDayOfWeek*/,
1315  27 /*onDayOfMonth*/,
1316  16 /*atTimeCode*/,
1317  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1318  4 /*deltaCode*/,
1319  '-' /*letter*/,
1320  },
1321  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1322  {
1323  -1 /*fromYearTiny*/,
1324  -1 /*toYearTiny*/,
1325  4 /*inMonth*/,
1326  0 /*onDayOfWeek*/,
1327  4 /*onDayOfMonth*/,
1328  12 /*atTimeCode*/,
1329  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1330  0 /*deltaCode*/,
1331  '-' /*letter*/,
1332  },
1333  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1334  {
1335  -1 /*fromYearTiny*/,
1336  10 /*toYearTiny*/,
1337  10 /*inMonth*/,
1338  7 /*onDayOfWeek*/,
1339  9 /*onDayOfMonth*/,
1340  16 /*atTimeCode*/,
1341  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1342  4 /*deltaCode*/,
1343  '-' /*letter*/,
1344  },
1345  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1346  {
1347  0 /*fromYearTiny*/,
1348  7 /*toYearTiny*/,
1349  3 /*inMonth*/,
1350  7 /*onDayOfWeek*/,
1351  9 /*onDayOfMonth*/,
1352  12 /*atTimeCode*/,
1353  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1354  0 /*deltaCode*/,
1355  '-' /*letter*/,
1356  },
1357  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1358  {
1359  8 /*fromYearTiny*/,
1360  8 /*toYearTiny*/,
1361  3 /*inMonth*/,
1362  0 /*onDayOfWeek*/,
1363  30 /*onDayOfMonth*/,
1364  12 /*atTimeCode*/,
1365  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1366  0 /*deltaCode*/,
1367  '-' /*letter*/,
1368  },
1369  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1370  {
1371  9 /*fromYearTiny*/,
1372  9 /*toYearTiny*/,
1373  3 /*inMonth*/,
1374  7 /*onDayOfWeek*/,
1375  9 /*onDayOfMonth*/,
1376  12 /*atTimeCode*/,
1377  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1378  0 /*deltaCode*/,
1379  '-' /*letter*/,
1380  },
1381  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1382  {
1383  10 /*fromYearTiny*/,
1384  10 /*toYearTiny*/,
1385  4 /*inMonth*/,
1386  7 /*onDayOfWeek*/,
1387  1 /*onDayOfMonth*/,
1388  12 /*atTimeCode*/,
1389  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1390  0 /*deltaCode*/,
1391  '-' /*letter*/,
1392  },
1393  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1394  {
1395  11 /*fromYearTiny*/,
1396  11 /*toYearTiny*/,
1397  5 /*inMonth*/,
1398  7 /*onDayOfWeek*/,
1399  2 /*onDayOfMonth*/,
1400  12 /*atTimeCode*/,
1401  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1402  0 /*deltaCode*/,
1403  '-' /*letter*/,
1404  },
1405  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1406  {
1407  11 /*fromYearTiny*/,
1408  11 /*toYearTiny*/,
1409  8 /*inMonth*/,
1410  7 /*onDayOfWeek*/,
1411  16 /*onDayOfMonth*/,
1412  16 /*atTimeCode*/,
1413  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1414  4 /*deltaCode*/,
1415  '-' /*letter*/,
1416  },
1417  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1418  {
1419  12 /*fromYearTiny*/,
1420  14 /*toYearTiny*/,
1421  4 /*inMonth*/,
1422  7 /*onDayOfWeek*/,
1423  23 /*onDayOfMonth*/,
1424  12 /*atTimeCode*/,
1425  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1426  0 /*deltaCode*/,
1427  '-' /*letter*/,
1428  },
1429  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1430  {
1431  12 /*fromYearTiny*/,
1432  14 /*toYearTiny*/,
1433  9 /*inMonth*/,
1434  7 /*onDayOfWeek*/,
1435  2 /*onDayOfMonth*/,
1436  16 /*atTimeCode*/,
1437  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1438  4 /*deltaCode*/,
1439  '-' /*letter*/,
1440  },
1441  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1442  {
1443  16 /*fromYearTiny*/,
1444  18 /*toYearTiny*/,
1445  5 /*inMonth*/,
1446  7 /*onDayOfWeek*/,
1447  9 /*onDayOfMonth*/,
1448  12 /*atTimeCode*/,
1449  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1450  0 /*deltaCode*/,
1451  '-' /*letter*/,
1452  },
1453  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1454  {
1455  16 /*fromYearTiny*/,
1456  18 /*toYearTiny*/,
1457  8 /*inMonth*/,
1458  7 /*onDayOfWeek*/,
1459  9 /*onDayOfMonth*/,
1460  16 /*atTimeCode*/,
1461  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1462  4 /*deltaCode*/,
1463  '-' /*letter*/,
1464  },
1465  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1466  {
1467  19 /*fromYearTiny*/,
1468  126 /*toYearTiny*/,
1469  4 /*inMonth*/,
1470  7 /*onDayOfWeek*/,
1471  2 /*onDayOfMonth*/,
1472  12 /*atTimeCode*/,
1473  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1474  0 /*deltaCode*/,
1475  '-' /*letter*/,
1476  },
1477  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1478  {
1479  19 /*fromYearTiny*/,
1480  126 /*toYearTiny*/,
1481  9 /*inMonth*/,
1482  7 /*onDayOfWeek*/,
1483  2 /*onDayOfMonth*/,
1484  16 /*atTimeCode*/,
1485  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1486  4 /*deltaCode*/,
1487  '-' /*letter*/,
1488  },
1489 
1490 };
1491 
1492 
1493 
1494 const basic::ZonePolicy kPolicyChile ACE_TIME_PROGMEM = {
1495  kZoneRulesChile /*rules*/,
1496  nullptr /* letters */,
1497  15 /*numRules*/,
1498  0 /* numLetters */,
1499 };
1500 
1501 //---------------------------------------------------------------------------
1502 // Policy name: Cook
1503 // Rules: 1
1504 // Memory (8-bit): 15
1505 // Memory (32-bit): 24
1506 //---------------------------------------------------------------------------
1507 
1508 static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1509  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1510  {
1511  -21 /*fromYearTiny*/,
1512  -9 /*toYearTiny*/,
1513  3 /*inMonth*/,
1514  7 /*onDayOfWeek*/,
1515  1 /*onDayOfMonth*/,
1516  0 /*atTimeCode*/,
1517  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1518  0 /*deltaCode*/,
1519  '-' /*letter*/,
1520  },
1521 
1522 };
1523 
1524 
1525 
1526 const basic::ZonePolicy kPolicyCook ACE_TIME_PROGMEM = {
1527  kZoneRulesCook /*rules*/,
1528  nullptr /* letters */,
1529  1 /*numRules*/,
1530  0 /* numLetters */,
1531 };
1532 
1533 //---------------------------------------------------------------------------
1534 // Policy name: Cuba
1535 // Rules: 14
1536 // Memory (8-bit): 132
1537 // Memory (32-bit): 180
1538 //---------------------------------------------------------------------------
1539 
1540 static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1541  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1542  {
1543  -3 /*fromYearTiny*/,
1544  -3 /*toYearTiny*/,
1545  10 /*inMonth*/,
1546  0 /*onDayOfWeek*/,
1547  12 /*onDayOfMonth*/,
1548  0 /*atTimeCode*/,
1549  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1550  0 /*deltaCode*/,
1551  'S' /*letter*/,
1552  },
1553  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1554  {
1555  -2 /*fromYearTiny*/,
1556  -1 /*toYearTiny*/,
1557  3 /*inMonth*/,
1558  7 /*onDayOfWeek*/,
1559  0 /*onDayOfMonth*/,
1560  0 /*atTimeCode*/,
1561  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1562  4 /*deltaCode*/,
1563  'D' /*letter*/,
1564  },
1565  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1566  {
1567  -2 /*fromYearTiny*/,
1568  3 /*toYearTiny*/,
1569  10 /*inMonth*/,
1570  7 /*onDayOfWeek*/,
1571  0 /*onDayOfMonth*/,
1572  0 /*atTimeCode*/,
1573  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1574  0 /*deltaCode*/,
1575  'S' /*letter*/,
1576  },
1577  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1578  {
1579  0 /*fromYearTiny*/,
1580  3 /*toYearTiny*/,
1581  4 /*inMonth*/,
1582  7 /*onDayOfWeek*/,
1583  1 /*onDayOfMonth*/,
1584  0 /*atTimeCode*/,
1585  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1586  4 /*deltaCode*/,
1587  'D' /*letter*/,
1588  },
1589  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1590  {
1591  4 /*fromYearTiny*/,
1592  4 /*toYearTiny*/,
1593  3 /*inMonth*/,
1594  7 /*onDayOfWeek*/,
1595  0 /*onDayOfMonth*/,
1596  0 /*atTimeCode*/,
1597  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1598  4 /*deltaCode*/,
1599  'D' /*letter*/,
1600  },
1601  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1602  {
1603  6 /*fromYearTiny*/,
1604  10 /*toYearTiny*/,
1605  10 /*inMonth*/,
1606  7 /*onDayOfWeek*/,
1607  0 /*onDayOfMonth*/,
1608  0 /*atTimeCode*/,
1609  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1610  0 /*deltaCode*/,
1611  'S' /*letter*/,
1612  },
1613  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1614  {
1615  7 /*fromYearTiny*/,
1616  7 /*toYearTiny*/,
1617  3 /*inMonth*/,
1618  7 /*onDayOfWeek*/,
1619  8 /*onDayOfMonth*/,
1620  0 /*atTimeCode*/,
1621  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1622  4 /*deltaCode*/,
1623  'D' /*letter*/,
1624  },
1625  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1626  {
1627  8 /*fromYearTiny*/,
1628  8 /*toYearTiny*/,
1629  3 /*inMonth*/,
1630  7 /*onDayOfWeek*/,
1631  15 /*onDayOfMonth*/,
1632  0 /*atTimeCode*/,
1633  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1634  4 /*deltaCode*/,
1635  'D' /*letter*/,
1636  },
1637  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1638  {
1639  9 /*fromYearTiny*/,
1640  10 /*toYearTiny*/,
1641  3 /*inMonth*/,
1642  7 /*onDayOfWeek*/,
1643  8 /*onDayOfMonth*/,
1644  0 /*atTimeCode*/,
1645  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1646  4 /*deltaCode*/,
1647  'D' /*letter*/,
1648  },
1649  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1650  {
1651  11 /*fromYearTiny*/,
1652  11 /*toYearTiny*/,
1653  3 /*inMonth*/,
1654  7 /*onDayOfWeek*/,
1655  15 /*onDayOfMonth*/,
1656  0 /*atTimeCode*/,
1657  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1658  4 /*deltaCode*/,
1659  'D' /*letter*/,
1660  },
1661  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1662  {
1663  11 /*fromYearTiny*/,
1664  11 /*toYearTiny*/,
1665  11 /*inMonth*/,
1666  0 /*onDayOfWeek*/,
1667  13 /*onDayOfMonth*/,
1668  0 /*atTimeCode*/,
1669  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1670  0 /*deltaCode*/,
1671  'S' /*letter*/,
1672  },
1673  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1674  {
1675  12 /*fromYearTiny*/,
1676  12 /*toYearTiny*/,
1677  4 /*inMonth*/,
1678  0 /*onDayOfWeek*/,
1679  1 /*onDayOfMonth*/,
1680  0 /*atTimeCode*/,
1681  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1682  4 /*deltaCode*/,
1683  'D' /*letter*/,
1684  },
1685  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1686  {
1687  12 /*fromYearTiny*/,
1688  126 /*toYearTiny*/,
1689  11 /*inMonth*/,
1690  7 /*onDayOfWeek*/,
1691  1 /*onDayOfMonth*/,
1692  0 /*atTimeCode*/,
1693  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1694  0 /*deltaCode*/,
1695  'S' /*letter*/,
1696  },
1697  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1698  {
1699  13 /*fromYearTiny*/,
1700  126 /*toYearTiny*/,
1701  3 /*inMonth*/,
1702  7 /*onDayOfWeek*/,
1703  8 /*onDayOfMonth*/,
1704  0 /*atTimeCode*/,
1705  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
1706  4 /*deltaCode*/,
1707  'D' /*letter*/,
1708  },
1709 
1710 };
1711 
1712 
1713 
1714 const basic::ZonePolicy kPolicyCuba ACE_TIME_PROGMEM = {
1715  kZoneRulesCuba /*rules*/,
1716  nullptr /* letters */,
1717  14 /*numRules*/,
1718  0 /* numLetters */,
1719 };
1720 
1721 //---------------------------------------------------------------------------
1722 // Policy name: Dhaka
1723 // Rules: 3
1724 // Memory (8-bit): 33
1725 // Memory (32-bit): 48
1726 //---------------------------------------------------------------------------
1727 
1728 static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1729  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1730  {
1731  -127 /*fromYearTiny*/,
1732  -127 /*toYearTiny*/,
1733  1 /*inMonth*/,
1734  0 /*onDayOfWeek*/,
1735  1 /*onDayOfMonth*/,
1736  0 /*atTimeCode*/,
1737  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1738  0 /*deltaCode*/,
1739  '-' /*letter*/,
1740  },
1741  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1742  {
1743  9 /*fromYearTiny*/,
1744  9 /*toYearTiny*/,
1745  6 /*inMonth*/,
1746  0 /*onDayOfWeek*/,
1747  19 /*onDayOfMonth*/,
1748  92 /*atTimeCode*/,
1749  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1750  4 /*deltaCode*/,
1751  '-' /*letter*/,
1752  },
1753  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1754  {
1755  9 /*fromYearTiny*/,
1756  9 /*toYearTiny*/,
1757  12 /*inMonth*/,
1758  0 /*onDayOfWeek*/,
1759  31 /*onDayOfMonth*/,
1760  96 /*atTimeCode*/,
1761  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1762  0 /*deltaCode*/,
1763  '-' /*letter*/,
1764  },
1765 
1766 };
1767 
1768 
1769 
1770 const basic::ZonePolicy kPolicyDhaka ACE_TIME_PROGMEM = {
1771  kZoneRulesDhaka /*rules*/,
1772  nullptr /* letters */,
1773  3 /*numRules*/,
1774  0 /* numLetters */,
1775 };
1776 
1777 //---------------------------------------------------------------------------
1778 // Policy name: EU
1779 // Rules: 3
1780 // Memory (8-bit): 33
1781 // Memory (32-bit): 48
1782 //---------------------------------------------------------------------------
1783 
1784 static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
1785  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1786  {
1787  -21 /*fromYearTiny*/,
1788  -5 /*toYearTiny*/,
1789  9 /*inMonth*/,
1790  7 /*onDayOfWeek*/,
1791  0 /*onDayOfMonth*/,
1792  4 /*atTimeCode*/,
1793  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1794  0 /*deltaCode*/,
1795  '-' /*letter*/,
1796  },
1797  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
1798  {
1799  -19 /*fromYearTiny*/,
1800  126 /*toYearTiny*/,
1801  3 /*inMonth*/,
1802  7 /*onDayOfWeek*/,
1803  0 /*onDayOfMonth*/,
1804  4 /*atTimeCode*/,
1805  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1806  4 /*deltaCode*/,
1807  'S' /*letter*/,
1808  },
1809  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
1810  {
1811  -4 /*fromYearTiny*/,
1812  126 /*toYearTiny*/,
1813  10 /*inMonth*/,
1814  7 /*onDayOfWeek*/,
1815  0 /*onDayOfMonth*/,
1816  4 /*atTimeCode*/,
1817  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1818  0 /*deltaCode*/,
1819  '-' /*letter*/,
1820  },
1821 
1822 };
1823 
1824 
1825 
1826 const basic::ZonePolicy kPolicyEU ACE_TIME_PROGMEM = {
1827  kZoneRulesEU /*rules*/,
1828  nullptr /* letters */,
1829  3 /*numRules*/,
1830  0 /* numLetters */,
1831 };
1832 
1833 //---------------------------------------------------------------------------
1834 // Policy name: EUAsia
1835 // Rules: 3
1836 // Memory (8-bit): 33
1837 // Memory (32-bit): 48
1838 //---------------------------------------------------------------------------
1839 
1840 static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
1841  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
1842  {
1843  -19 /*fromYearTiny*/,
1844  126 /*toYearTiny*/,
1845  3 /*inMonth*/,
1846  7 /*onDayOfWeek*/,
1847  0 /*onDayOfMonth*/,
1848  4 /*atTimeCode*/,
1849  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1850  4 /*deltaCode*/,
1851  'S' /*letter*/,
1852  },
1853  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1854  {
1855  -21 /*fromYearTiny*/,
1856  -5 /*toYearTiny*/,
1857  9 /*inMonth*/,
1858  7 /*onDayOfWeek*/,
1859  0 /*onDayOfMonth*/,
1860  4 /*atTimeCode*/,
1861  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1862  0 /*deltaCode*/,
1863  '-' /*letter*/,
1864  },
1865  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
1866  {
1867  -4 /*fromYearTiny*/,
1868  126 /*toYearTiny*/,
1869  10 /*inMonth*/,
1870  7 /*onDayOfWeek*/,
1871  0 /*onDayOfMonth*/,
1872  4 /*atTimeCode*/,
1873  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1874  0 /*deltaCode*/,
1875  '-' /*letter*/,
1876  },
1877 
1878 };
1879 
1880 
1881 
1882 const basic::ZonePolicy kPolicyEUAsia ACE_TIME_PROGMEM = {
1883  kZoneRulesEUAsia /*rules*/,
1884  nullptr /* letters */,
1885  3 /*numRules*/,
1886  0 /* numLetters */,
1887 };
1888 
1889 //---------------------------------------------------------------------------
1890 // Policy name: Ecuador
1891 // Rules: 1
1892 // Memory (8-bit): 15
1893 // Memory (32-bit): 24
1894 //---------------------------------------------------------------------------
1895 
1896 static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
1897  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
1898  {
1899  -7 /*fromYearTiny*/,
1900  -7 /*toYearTiny*/,
1901  2 /*inMonth*/,
1902  0 /*onDayOfWeek*/,
1903  5 /*onDayOfMonth*/,
1904  0 /*atTimeCode*/,
1905  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1906  0 /*deltaCode*/,
1907  '-' /*letter*/,
1908  },
1909 
1910 };
1911 
1912 
1913 
1914 const basic::ZonePolicy kPolicyEcuador ACE_TIME_PROGMEM = {
1915  kZoneRulesEcuador /*rules*/,
1916  nullptr /* letters */,
1917  1 /*numRules*/,
1918  0 /* numLetters */,
1919 };
1920 
1921 //---------------------------------------------------------------------------
1922 // Policy name: Eire
1923 // Rules: 3
1924 // Memory (8-bit): 33
1925 // Memory (32-bit): 48
1926 //---------------------------------------------------------------------------
1927 
1928 static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
1929  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
1930  {
1931  -19 /*fromYearTiny*/,
1932  126 /*toYearTiny*/,
1933  3 /*inMonth*/,
1934  7 /*onDayOfWeek*/,
1935  0 /*onDayOfMonth*/,
1936  4 /*atTimeCode*/,
1937  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1938  0 /*deltaCode*/,
1939  '-' /*letter*/,
1940  },
1941  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
1942  {
1943  -10 /*fromYearTiny*/,
1944  -5 /*toYearTiny*/,
1945  10 /*inMonth*/,
1946  7 /*onDayOfWeek*/,
1947  22 /*onDayOfMonth*/,
1948  4 /*atTimeCode*/,
1949  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1950  -4 /*deltaCode*/,
1951  '-' /*letter*/,
1952  },
1953  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
1954  {
1955  -4 /*fromYearTiny*/,
1956  126 /*toYearTiny*/,
1957  10 /*inMonth*/,
1958  7 /*onDayOfWeek*/,
1959  0 /*onDayOfMonth*/,
1960  4 /*atTimeCode*/,
1961  basic::ZoneContext::kSuffixU /*atTimeModifier*/,
1962  -4 /*deltaCode*/,
1963  '-' /*letter*/,
1964  },
1965 
1966 };
1967 
1968 
1969 
1970 const basic::ZonePolicy kPolicyEire ACE_TIME_PROGMEM = {
1971  kZoneRulesEire /*rules*/,
1972  nullptr /* letters */,
1973  3 /*numRules*/,
1974  0 /* numLetters */,
1975 };
1976 
1977 //---------------------------------------------------------------------------
1978 // Policy name: Fiji
1979 // Rules: 10
1980 // Memory (8-bit): 96
1981 // Memory (32-bit): 132
1982 //---------------------------------------------------------------------------
1983 
1984 static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
1985  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
1986  {
1987  -2 /*fromYearTiny*/,
1988  -1 /*toYearTiny*/,
1989  11 /*inMonth*/,
1990  7 /*onDayOfWeek*/,
1991  1 /*onDayOfMonth*/,
1992  8 /*atTimeCode*/,
1993  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
1994  4 /*deltaCode*/,
1995  '-' /*letter*/,
1996  },
1997  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
1998  {
1999  -1 /*fromYearTiny*/,
2000  0 /*toYearTiny*/,
2001  2 /*inMonth*/,
2002  7 /*onDayOfWeek*/,
2003  0 /*onDayOfMonth*/,
2004  12 /*atTimeCode*/,
2005  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2006  0 /*deltaCode*/,
2007  '-' /*letter*/,
2008  },
2009  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2010  {
2011  9 /*fromYearTiny*/,
2012  9 /*toYearTiny*/,
2013  11 /*inMonth*/,
2014  0 /*onDayOfWeek*/,
2015  29 /*onDayOfMonth*/,
2016  8 /*atTimeCode*/,
2017  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2018  4 /*deltaCode*/,
2019  '-' /*letter*/,
2020  },
2021  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2022  {
2023  10 /*fromYearTiny*/,
2024  10 /*toYearTiny*/,
2025  3 /*inMonth*/,
2026  7 /*onDayOfWeek*/,
2027  0 /*onDayOfMonth*/,
2028  12 /*atTimeCode*/,
2029  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2030  0 /*deltaCode*/,
2031  '-' /*letter*/,
2032  },
2033  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2034  {
2035  10 /*fromYearTiny*/,
2036  13 /*toYearTiny*/,
2037  10 /*inMonth*/,
2038  7 /*onDayOfWeek*/,
2039  21 /*onDayOfMonth*/,
2040  8 /*atTimeCode*/,
2041  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2042  4 /*deltaCode*/,
2043  '-' /*letter*/,
2044  },
2045  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2046  {
2047  11 /*fromYearTiny*/,
2048  11 /*toYearTiny*/,
2049  3 /*inMonth*/,
2050  7 /*onDayOfWeek*/,
2051  1 /*onDayOfMonth*/,
2052  12 /*atTimeCode*/,
2053  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2054  0 /*deltaCode*/,
2055  '-' /*letter*/,
2056  },
2057  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2058  {
2059  12 /*fromYearTiny*/,
2060  13 /*toYearTiny*/,
2061  1 /*inMonth*/,
2062  7 /*onDayOfWeek*/,
2063  18 /*onDayOfMonth*/,
2064  12 /*atTimeCode*/,
2065  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2066  0 /*deltaCode*/,
2067  '-' /*letter*/,
2068  },
2069  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2070  {
2071  14 /*fromYearTiny*/,
2072  14 /*toYearTiny*/,
2073  1 /*inMonth*/,
2074  7 /*onDayOfWeek*/,
2075  18 /*onDayOfMonth*/,
2076  8 /*atTimeCode*/,
2077  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2078  0 /*deltaCode*/,
2079  '-' /*letter*/,
2080  },
2081  // Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
2082  {
2083  14 /*fromYearTiny*/,
2084  126 /*toYearTiny*/,
2085  11 /*inMonth*/,
2086  7 /*onDayOfWeek*/,
2087  1 /*onDayOfMonth*/,
2088  8 /*atTimeCode*/,
2089  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2090  4 /*deltaCode*/,
2091  '-' /*letter*/,
2092  },
2093  // Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
2094  {
2095  15 /*fromYearTiny*/,
2096  126 /*toYearTiny*/,
2097  1 /*inMonth*/,
2098  7 /*onDayOfWeek*/,
2099  13 /*onDayOfMonth*/,
2100  12 /*atTimeCode*/,
2101  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2102  0 /*deltaCode*/,
2103  '-' /*letter*/,
2104  },
2105 
2106 };
2107 
2108 
2109 
2110 const basic::ZonePolicy kPolicyFiji ACE_TIME_PROGMEM = {
2111  kZoneRulesFiji /*rules*/,
2112  nullptr /* letters */,
2113  10 /*numRules*/,
2114  0 /* numLetters */,
2115 };
2116 
2117 //---------------------------------------------------------------------------
2118 // Policy name: Ghana
2119 // Rules: 1
2120 // Memory (8-bit): 15
2121 // Memory (32-bit): 24
2122 //---------------------------------------------------------------------------
2123 
2124 static const basic::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = {
2125  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2126  {
2127  -80 /*fromYearTiny*/,
2128  -58 /*toYearTiny*/,
2129  12 /*inMonth*/,
2130  0 /*onDayOfWeek*/,
2131  31 /*onDayOfMonth*/,
2132  0 /*atTimeCode*/,
2133  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2134  0 /*deltaCode*/,
2135  '-' /*letter*/,
2136  },
2137 
2138 };
2139 
2140 
2141 
2142 const basic::ZonePolicy kPolicyGhana ACE_TIME_PROGMEM = {
2143  kZoneRulesGhana /*rules*/,
2144  nullptr /* letters */,
2145  1 /*numRules*/,
2146  0 /* numLetters */,
2147 };
2148 
2149 //---------------------------------------------------------------------------
2150 // Policy name: Guat
2151 // Rules: 3
2152 // Memory (8-bit): 33
2153 // Memory (32-bit): 48
2154 //---------------------------------------------------------------------------
2155 
2156 static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2157  // Rule Guat 1991 only - Sep 7 0:00 0 S
2158  {
2159  -9 /*fromYearTiny*/,
2160  -9 /*toYearTiny*/,
2161  9 /*inMonth*/,
2162  0 /*onDayOfWeek*/,
2163  7 /*onDayOfMonth*/,
2164  0 /*atTimeCode*/,
2165  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2166  0 /*deltaCode*/,
2167  'S' /*letter*/,
2168  },
2169  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2170  {
2171  6 /*fromYearTiny*/,
2172  6 /*toYearTiny*/,
2173  4 /*inMonth*/,
2174  0 /*onDayOfWeek*/,
2175  30 /*onDayOfMonth*/,
2176  0 /*atTimeCode*/,
2177  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2178  4 /*deltaCode*/,
2179  'D' /*letter*/,
2180  },
2181  // Rule Guat 2006 only - Oct 1 0:00 0 S
2182  {
2183  6 /*fromYearTiny*/,
2184  6 /*toYearTiny*/,
2185  10 /*inMonth*/,
2186  0 /*onDayOfWeek*/,
2187  1 /*onDayOfMonth*/,
2188  0 /*atTimeCode*/,
2189  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2190  0 /*deltaCode*/,
2191  'S' /*letter*/,
2192  },
2193 
2194 };
2195 
2196 
2197 
2198 const basic::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = {
2199  kZoneRulesGuat /*rules*/,
2200  nullptr /* letters */,
2201  3 /*numRules*/,
2202  0 /* numLetters */,
2203 };
2204 
2205 //---------------------------------------------------------------------------
2206 // Policy name: HK
2207 // Rules: 1
2208 // Memory (8-bit): 15
2209 // Memory (32-bit): 24
2210 //---------------------------------------------------------------------------
2211 
2212 static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2213  // Rule HK 1979 only - Oct 21 3:30 0 -
2214  {
2215  -21 /*fromYearTiny*/,
2216  -21 /*toYearTiny*/,
2217  10 /*inMonth*/,
2218  0 /*onDayOfWeek*/,
2219  21 /*onDayOfMonth*/,
2220  14 /*atTimeCode*/,
2221  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2222  0 /*deltaCode*/,
2223  '-' /*letter*/,
2224  },
2225 
2226 };
2227 
2228 
2229 
2230 const basic::ZonePolicy kPolicyHK ACE_TIME_PROGMEM = {
2231  kZoneRulesHK /*rules*/,
2232  nullptr /* letters */,
2233  1 /*numRules*/,
2234  0 /* numLetters */,
2235 };
2236 
2237 //---------------------------------------------------------------------------
2238 // Policy name: Haiti
2239 // Rules: 7
2240 // Memory (8-bit): 69
2241 // Memory (32-bit): 96
2242 //---------------------------------------------------------------------------
2243 
2244 static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2245  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2246  {
2247  -12 /*fromYearTiny*/,
2248  -3 /*toYearTiny*/,
2249  10 /*inMonth*/,
2250  7 /*onDayOfWeek*/,
2251  0 /*onDayOfMonth*/,
2252  4 /*atTimeCode*/,
2253  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
2254  0 /*deltaCode*/,
2255  'S' /*letter*/,
2256  },
2257  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2258  {
2259  5 /*fromYearTiny*/,
2260  6 /*toYearTiny*/,
2261  4 /*inMonth*/,
2262  7 /*onDayOfWeek*/,
2263  1 /*onDayOfMonth*/,
2264  0 /*atTimeCode*/,
2265  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2266  4 /*deltaCode*/,
2267  'D' /*letter*/,
2268  },
2269  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2270  {
2271  5 /*fromYearTiny*/,
2272  6 /*toYearTiny*/,
2273  10 /*inMonth*/,
2274  7 /*onDayOfWeek*/,
2275  0 /*onDayOfMonth*/,
2276  0 /*atTimeCode*/,
2277  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2278  0 /*deltaCode*/,
2279  'S' /*letter*/,
2280  },
2281  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2282  {
2283  12 /*fromYearTiny*/,
2284  15 /*toYearTiny*/,
2285  3 /*inMonth*/,
2286  7 /*onDayOfWeek*/,
2287  8 /*onDayOfMonth*/,
2288  8 /*atTimeCode*/,
2289  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2290  4 /*deltaCode*/,
2291  'D' /*letter*/,
2292  },
2293  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2294  {
2295  12 /*fromYearTiny*/,
2296  15 /*toYearTiny*/,
2297  11 /*inMonth*/,
2298  7 /*onDayOfWeek*/,
2299  1 /*onDayOfMonth*/,
2300  8 /*atTimeCode*/,
2301  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2302  0 /*deltaCode*/,
2303  'S' /*letter*/,
2304  },
2305  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2306  {
2307  17 /*fromYearTiny*/,
2308  126 /*toYearTiny*/,
2309  3 /*inMonth*/,
2310  7 /*onDayOfWeek*/,
2311  8 /*onDayOfMonth*/,
2312  8 /*atTimeCode*/,
2313  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2314  4 /*deltaCode*/,
2315  'D' /*letter*/,
2316  },
2317  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2318  {
2319  17 /*fromYearTiny*/,
2320  126 /*toYearTiny*/,
2321  11 /*inMonth*/,
2322  7 /*onDayOfWeek*/,
2323  1 /*onDayOfMonth*/,
2324  8 /*atTimeCode*/,
2325  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2326  0 /*deltaCode*/,
2327  'S' /*letter*/,
2328  },
2329 
2330 };
2331 
2332 
2333 
2334 const basic::ZonePolicy kPolicyHaiti ACE_TIME_PROGMEM = {
2335  kZoneRulesHaiti /*rules*/,
2336  nullptr /* letters */,
2337  7 /*numRules*/,
2338  0 /* numLetters */,
2339 };
2340 
2341 //---------------------------------------------------------------------------
2342 // Policy name: Holiday
2343 // Rules: 1
2344 // Memory (8-bit): 15
2345 // Memory (32-bit): 24
2346 //---------------------------------------------------------------------------
2347 
2348 static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2349  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2350  {
2351  -7 /*fromYearTiny*/,
2352  -6 /*toYearTiny*/,
2353  3 /*inMonth*/,
2354  7 /*onDayOfWeek*/,
2355  1 /*onDayOfMonth*/,
2356  8 /*atTimeCode*/,
2357  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
2358  0 /*deltaCode*/,
2359  'S' /*letter*/,
2360  },
2361 
2362 };
2363 
2364 
2365 
2366 const basic::ZonePolicy kPolicyHoliday ACE_TIME_PROGMEM = {
2367  kZoneRulesHoliday /*rules*/,
2368  nullptr /* letters */,
2369  1 /*numRules*/,
2370  0 /* numLetters */,
2371 };
2372 
2373 //---------------------------------------------------------------------------
2374 // Policy name: Hond
2375 // Rules: 3
2376 // Memory (8-bit): 33
2377 // Memory (32-bit): 48
2378 //---------------------------------------------------------------------------
2379 
2380 static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2381  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2382  {
2383  -13 /*fromYearTiny*/,
2384  -12 /*toYearTiny*/,
2385  9 /*inMonth*/,
2386  7 /*onDayOfWeek*/,
2387  0 /*onDayOfMonth*/,
2388  0 /*atTimeCode*/,
2389  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2390  0 /*deltaCode*/,
2391  'S' /*letter*/,
2392  },
2393  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2394  {
2395  6 /*fromYearTiny*/,
2396  6 /*toYearTiny*/,
2397  5 /*inMonth*/,
2398  7 /*onDayOfWeek*/,
2399  1 /*onDayOfMonth*/,
2400  0 /*atTimeCode*/,
2401  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2402  4 /*deltaCode*/,
2403  'D' /*letter*/,
2404  },
2405  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2406  {
2407  6 /*fromYearTiny*/,
2408  6 /*toYearTiny*/,
2409  8 /*inMonth*/,
2410  1 /*onDayOfWeek*/,
2411  1 /*onDayOfMonth*/,
2412  0 /*atTimeCode*/,
2413  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2414  0 /*deltaCode*/,
2415  'S' /*letter*/,
2416  },
2417 
2418 };
2419 
2420 
2421 
2422 const basic::ZonePolicy kPolicyHond ACE_TIME_PROGMEM = {
2423  kZoneRulesHond /*rules*/,
2424  nullptr /* letters */,
2425  3 /*numRules*/,
2426  0 /* numLetters */,
2427 };
2428 
2429 //---------------------------------------------------------------------------
2430 // Policy name: Iran
2431 // Rules: 55
2432 // Memory (8-bit): 501
2433 // Memory (32-bit): 672
2434 //---------------------------------------------------------------------------
2435 
2436 static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2437  // Rule Iran 1996 only - Sep 20 24:00 0 -
2438  {
2439  -4 /*fromYearTiny*/,
2440  -4 /*toYearTiny*/,
2441  9 /*inMonth*/,
2442  0 /*onDayOfWeek*/,
2443  20 /*onDayOfMonth*/,
2444  96 /*atTimeCode*/,
2445  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2446  0 /*deltaCode*/,
2447  '-' /*letter*/,
2448  },
2449  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2450  {
2451  -3 /*fromYearTiny*/,
2452  -1 /*toYearTiny*/,
2453  3 /*inMonth*/,
2454  0 /*onDayOfWeek*/,
2455  21 /*onDayOfMonth*/,
2456  96 /*atTimeCode*/,
2457  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2458  4 /*deltaCode*/,
2459  '-' /*letter*/,
2460  },
2461  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2462  {
2463  -3 /*fromYearTiny*/,
2464  -1 /*toYearTiny*/,
2465  9 /*inMonth*/,
2466  0 /*onDayOfWeek*/,
2467  21 /*onDayOfMonth*/,
2468  96 /*atTimeCode*/,
2469  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2470  0 /*deltaCode*/,
2471  '-' /*letter*/,
2472  },
2473  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2474  {
2475  0 /*fromYearTiny*/,
2476  0 /*toYearTiny*/,
2477  3 /*inMonth*/,
2478  0 /*onDayOfWeek*/,
2479  20 /*onDayOfMonth*/,
2480  96 /*atTimeCode*/,
2481  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2482  4 /*deltaCode*/,
2483  '-' /*letter*/,
2484  },
2485  // Rule Iran 2000 only - Sep 20 24:00 0 -
2486  {
2487  0 /*fromYearTiny*/,
2488  0 /*toYearTiny*/,
2489  9 /*inMonth*/,
2490  0 /*onDayOfWeek*/,
2491  20 /*onDayOfMonth*/,
2492  96 /*atTimeCode*/,
2493  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2494  0 /*deltaCode*/,
2495  '-' /*letter*/,
2496  },
2497  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2498  {
2499  1 /*fromYearTiny*/,
2500  3 /*toYearTiny*/,
2501  3 /*inMonth*/,
2502  0 /*onDayOfWeek*/,
2503  21 /*onDayOfMonth*/,
2504  96 /*atTimeCode*/,
2505  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2506  4 /*deltaCode*/,
2507  '-' /*letter*/,
2508  },
2509  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2510  {
2511  1 /*fromYearTiny*/,
2512  3 /*toYearTiny*/,
2513  9 /*inMonth*/,
2514  0 /*onDayOfWeek*/,
2515  21 /*onDayOfMonth*/,
2516  96 /*atTimeCode*/,
2517  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2518  0 /*deltaCode*/,
2519  '-' /*letter*/,
2520  },
2521  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2522  {
2523  4 /*fromYearTiny*/,
2524  4 /*toYearTiny*/,
2525  3 /*inMonth*/,
2526  0 /*onDayOfWeek*/,
2527  20 /*onDayOfMonth*/,
2528  96 /*atTimeCode*/,
2529  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2530  4 /*deltaCode*/,
2531  '-' /*letter*/,
2532  },
2533  // Rule Iran 2004 only - Sep 20 24:00 0 -
2534  {
2535  4 /*fromYearTiny*/,
2536  4 /*toYearTiny*/,
2537  9 /*inMonth*/,
2538  0 /*onDayOfWeek*/,
2539  20 /*onDayOfMonth*/,
2540  96 /*atTimeCode*/,
2541  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2542  0 /*deltaCode*/,
2543  '-' /*letter*/,
2544  },
2545  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2546  {
2547  5 /*fromYearTiny*/,
2548  5 /*toYearTiny*/,
2549  3 /*inMonth*/,
2550  0 /*onDayOfWeek*/,
2551  21 /*onDayOfMonth*/,
2552  96 /*atTimeCode*/,
2553  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2554  4 /*deltaCode*/,
2555  '-' /*letter*/,
2556  },
2557  // Rule Iran 2005 only - Sep 21 24:00 0 -
2558  {
2559  5 /*fromYearTiny*/,
2560  5 /*toYearTiny*/,
2561  9 /*inMonth*/,
2562  0 /*onDayOfWeek*/,
2563  21 /*onDayOfMonth*/,
2564  96 /*atTimeCode*/,
2565  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2566  0 /*deltaCode*/,
2567  '-' /*letter*/,
2568  },
2569  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2570  {
2571  8 /*fromYearTiny*/,
2572  8 /*toYearTiny*/,
2573  3 /*inMonth*/,
2574  0 /*onDayOfWeek*/,
2575  20 /*onDayOfMonth*/,
2576  96 /*atTimeCode*/,
2577  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2578  4 /*deltaCode*/,
2579  '-' /*letter*/,
2580  },
2581  // Rule Iran 2008 only - Sep 20 24:00 0 -
2582  {
2583  8 /*fromYearTiny*/,
2584  8 /*toYearTiny*/,
2585  9 /*inMonth*/,
2586  0 /*onDayOfWeek*/,
2587  20 /*onDayOfMonth*/,
2588  96 /*atTimeCode*/,
2589  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2590  0 /*deltaCode*/,
2591  '-' /*letter*/,
2592  },
2593  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2594  {
2595  9 /*fromYearTiny*/,
2596  11 /*toYearTiny*/,
2597  3 /*inMonth*/,
2598  0 /*onDayOfWeek*/,
2599  21 /*onDayOfMonth*/,
2600  96 /*atTimeCode*/,
2601  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2602  4 /*deltaCode*/,
2603  '-' /*letter*/,
2604  },
2605  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2606  {
2607  9 /*fromYearTiny*/,
2608  11 /*toYearTiny*/,
2609  9 /*inMonth*/,
2610  0 /*onDayOfWeek*/,
2611  21 /*onDayOfMonth*/,
2612  96 /*atTimeCode*/,
2613  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2614  0 /*deltaCode*/,
2615  '-' /*letter*/,
2616  },
2617  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2618  {
2619  12 /*fromYearTiny*/,
2620  12 /*toYearTiny*/,
2621  3 /*inMonth*/,
2622  0 /*onDayOfWeek*/,
2623  20 /*onDayOfMonth*/,
2624  96 /*atTimeCode*/,
2625  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2626  4 /*deltaCode*/,
2627  '-' /*letter*/,
2628  },
2629  // Rule Iran 2012 only - Sep 20 24:00 0 -
2630  {
2631  12 /*fromYearTiny*/,
2632  12 /*toYearTiny*/,
2633  9 /*inMonth*/,
2634  0 /*onDayOfWeek*/,
2635  20 /*onDayOfMonth*/,
2636  96 /*atTimeCode*/,
2637  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2638  0 /*deltaCode*/,
2639  '-' /*letter*/,
2640  },
2641  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2642  {
2643  13 /*fromYearTiny*/,
2644  15 /*toYearTiny*/,
2645  3 /*inMonth*/,
2646  0 /*onDayOfWeek*/,
2647  21 /*onDayOfMonth*/,
2648  96 /*atTimeCode*/,
2649  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2650  4 /*deltaCode*/,
2651  '-' /*letter*/,
2652  },
2653  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2654  {
2655  13 /*fromYearTiny*/,
2656  15 /*toYearTiny*/,
2657  9 /*inMonth*/,
2658  0 /*onDayOfWeek*/,
2659  21 /*onDayOfMonth*/,
2660  96 /*atTimeCode*/,
2661  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2662  0 /*deltaCode*/,
2663  '-' /*letter*/,
2664  },
2665  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2666  {
2667  16 /*fromYearTiny*/,
2668  16 /*toYearTiny*/,
2669  3 /*inMonth*/,
2670  0 /*onDayOfWeek*/,
2671  20 /*onDayOfMonth*/,
2672  96 /*atTimeCode*/,
2673  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2674  4 /*deltaCode*/,
2675  '-' /*letter*/,
2676  },
2677  // Rule Iran 2016 only - Sep 20 24:00 0 -
2678  {
2679  16 /*fromYearTiny*/,
2680  16 /*toYearTiny*/,
2681  9 /*inMonth*/,
2682  0 /*onDayOfWeek*/,
2683  20 /*onDayOfMonth*/,
2684  96 /*atTimeCode*/,
2685  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2686  0 /*deltaCode*/,
2687  '-' /*letter*/,
2688  },
2689  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2690  {
2691  17 /*fromYearTiny*/,
2692  19 /*toYearTiny*/,
2693  3 /*inMonth*/,
2694  0 /*onDayOfWeek*/,
2695  21 /*onDayOfMonth*/,
2696  96 /*atTimeCode*/,
2697  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2698  4 /*deltaCode*/,
2699  '-' /*letter*/,
2700  },
2701  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2702  {
2703  17 /*fromYearTiny*/,
2704  19 /*toYearTiny*/,
2705  9 /*inMonth*/,
2706  0 /*onDayOfWeek*/,
2707  21 /*onDayOfMonth*/,
2708  96 /*atTimeCode*/,
2709  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2710  0 /*deltaCode*/,
2711  '-' /*letter*/,
2712  },
2713  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2714  {
2715  20 /*fromYearTiny*/,
2716  20 /*toYearTiny*/,
2717  3 /*inMonth*/,
2718  0 /*onDayOfWeek*/,
2719  20 /*onDayOfMonth*/,
2720  96 /*atTimeCode*/,
2721  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2722  4 /*deltaCode*/,
2723  '-' /*letter*/,
2724  },
2725  // Rule Iran 2020 only - Sep 20 24:00 0 -
2726  {
2727  20 /*fromYearTiny*/,
2728  20 /*toYearTiny*/,
2729  9 /*inMonth*/,
2730  0 /*onDayOfWeek*/,
2731  20 /*onDayOfMonth*/,
2732  96 /*atTimeCode*/,
2733  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2734  0 /*deltaCode*/,
2735  '-' /*letter*/,
2736  },
2737  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
2738  {
2739  21 /*fromYearTiny*/,
2740  23 /*toYearTiny*/,
2741  3 /*inMonth*/,
2742  0 /*onDayOfWeek*/,
2743  21 /*onDayOfMonth*/,
2744  96 /*atTimeCode*/,
2745  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2746  4 /*deltaCode*/,
2747  '-' /*letter*/,
2748  },
2749  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
2750  {
2751  21 /*fromYearTiny*/,
2752  23 /*toYearTiny*/,
2753  9 /*inMonth*/,
2754  0 /*onDayOfWeek*/,
2755  21 /*onDayOfMonth*/,
2756  96 /*atTimeCode*/,
2757  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2758  0 /*deltaCode*/,
2759  '-' /*letter*/,
2760  },
2761  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
2762  {
2763  24 /*fromYearTiny*/,
2764  24 /*toYearTiny*/,
2765  3 /*inMonth*/,
2766  0 /*onDayOfWeek*/,
2767  20 /*onDayOfMonth*/,
2768  96 /*atTimeCode*/,
2769  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2770  4 /*deltaCode*/,
2771  '-' /*letter*/,
2772  },
2773  // Rule Iran 2024 only - Sep 20 24:00 0 -
2774  {
2775  24 /*fromYearTiny*/,
2776  24 /*toYearTiny*/,
2777  9 /*inMonth*/,
2778  0 /*onDayOfWeek*/,
2779  20 /*onDayOfMonth*/,
2780  96 /*atTimeCode*/,
2781  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2782  0 /*deltaCode*/,
2783  '-' /*letter*/,
2784  },
2785  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
2786  {
2787  25 /*fromYearTiny*/,
2788  27 /*toYearTiny*/,
2789  3 /*inMonth*/,
2790  0 /*onDayOfWeek*/,
2791  21 /*onDayOfMonth*/,
2792  96 /*atTimeCode*/,
2793  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2794  4 /*deltaCode*/,
2795  '-' /*letter*/,
2796  },
2797  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
2798  {
2799  25 /*fromYearTiny*/,
2800  27 /*toYearTiny*/,
2801  9 /*inMonth*/,
2802  0 /*onDayOfWeek*/,
2803  21 /*onDayOfMonth*/,
2804  96 /*atTimeCode*/,
2805  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2806  0 /*deltaCode*/,
2807  '-' /*letter*/,
2808  },
2809  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
2810  {
2811  28 /*fromYearTiny*/,
2812  29 /*toYearTiny*/,
2813  3 /*inMonth*/,
2814  0 /*onDayOfWeek*/,
2815  20 /*onDayOfMonth*/,
2816  96 /*atTimeCode*/,
2817  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2818  4 /*deltaCode*/,
2819  '-' /*letter*/,
2820  },
2821  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
2822  {
2823  28 /*fromYearTiny*/,
2824  29 /*toYearTiny*/,
2825  9 /*inMonth*/,
2826  0 /*onDayOfWeek*/,
2827  20 /*onDayOfMonth*/,
2828  96 /*atTimeCode*/,
2829  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2830  0 /*deltaCode*/,
2831  '-' /*letter*/,
2832  },
2833  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
2834  {
2835  30 /*fromYearTiny*/,
2836  31 /*toYearTiny*/,
2837  3 /*inMonth*/,
2838  0 /*onDayOfWeek*/,
2839  21 /*onDayOfMonth*/,
2840  96 /*atTimeCode*/,
2841  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2842  4 /*deltaCode*/,
2843  '-' /*letter*/,
2844  },
2845  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
2846  {
2847  30 /*fromYearTiny*/,
2848  31 /*toYearTiny*/,
2849  9 /*inMonth*/,
2850  0 /*onDayOfWeek*/,
2851  21 /*onDayOfMonth*/,
2852  96 /*atTimeCode*/,
2853  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2854  0 /*deltaCode*/,
2855  '-' /*letter*/,
2856  },
2857  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
2858  {
2859  32 /*fromYearTiny*/,
2860  33 /*toYearTiny*/,
2861  3 /*inMonth*/,
2862  0 /*onDayOfWeek*/,
2863  20 /*onDayOfMonth*/,
2864  96 /*atTimeCode*/,
2865  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2866  4 /*deltaCode*/,
2867  '-' /*letter*/,
2868  },
2869  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
2870  {
2871  32 /*fromYearTiny*/,
2872  33 /*toYearTiny*/,
2873  9 /*inMonth*/,
2874  0 /*onDayOfWeek*/,
2875  20 /*onDayOfMonth*/,
2876  96 /*atTimeCode*/,
2877  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2878  0 /*deltaCode*/,
2879  '-' /*letter*/,
2880  },
2881  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
2882  {
2883  34 /*fromYearTiny*/,
2884  35 /*toYearTiny*/,
2885  3 /*inMonth*/,
2886  0 /*onDayOfWeek*/,
2887  21 /*onDayOfMonth*/,
2888  96 /*atTimeCode*/,
2889  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2890  4 /*deltaCode*/,
2891  '-' /*letter*/,
2892  },
2893  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
2894  {
2895  34 /*fromYearTiny*/,
2896  35 /*toYearTiny*/,
2897  9 /*inMonth*/,
2898  0 /*onDayOfWeek*/,
2899  21 /*onDayOfMonth*/,
2900  96 /*atTimeCode*/,
2901  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2902  0 /*deltaCode*/,
2903  '-' /*letter*/,
2904  },
2905  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
2906  {
2907  36 /*fromYearTiny*/,
2908  37 /*toYearTiny*/,
2909  3 /*inMonth*/,
2910  0 /*onDayOfWeek*/,
2911  20 /*onDayOfMonth*/,
2912  96 /*atTimeCode*/,
2913  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2914  4 /*deltaCode*/,
2915  '-' /*letter*/,
2916  },
2917  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
2918  {
2919  36 /*fromYearTiny*/,
2920  37 /*toYearTiny*/,
2921  9 /*inMonth*/,
2922  0 /*onDayOfWeek*/,
2923  20 /*onDayOfMonth*/,
2924  96 /*atTimeCode*/,
2925  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2926  0 /*deltaCode*/,
2927  '-' /*letter*/,
2928  },
2929  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
2930  {
2931  38 /*fromYearTiny*/,
2932  39 /*toYearTiny*/,
2933  3 /*inMonth*/,
2934  0 /*onDayOfWeek*/,
2935  21 /*onDayOfMonth*/,
2936  96 /*atTimeCode*/,
2937  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2938  4 /*deltaCode*/,
2939  '-' /*letter*/,
2940  },
2941  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
2942  {
2943  38 /*fromYearTiny*/,
2944  39 /*toYearTiny*/,
2945  9 /*inMonth*/,
2946  0 /*onDayOfWeek*/,
2947  21 /*onDayOfMonth*/,
2948  96 /*atTimeCode*/,
2949  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2950  0 /*deltaCode*/,
2951  '-' /*letter*/,
2952  },
2953  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
2954  {
2955  40 /*fromYearTiny*/,
2956  41 /*toYearTiny*/,
2957  3 /*inMonth*/,
2958  0 /*onDayOfWeek*/,
2959  20 /*onDayOfMonth*/,
2960  96 /*atTimeCode*/,
2961  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2962  4 /*deltaCode*/,
2963  '-' /*letter*/,
2964  },
2965  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
2966  {
2967  40 /*fromYearTiny*/,
2968  41 /*toYearTiny*/,
2969  9 /*inMonth*/,
2970  0 /*onDayOfWeek*/,
2971  20 /*onDayOfMonth*/,
2972  96 /*atTimeCode*/,
2973  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2974  0 /*deltaCode*/,
2975  '-' /*letter*/,
2976  },
2977  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
2978  {
2979  42 /*fromYearTiny*/,
2980  43 /*toYearTiny*/,
2981  3 /*inMonth*/,
2982  0 /*onDayOfWeek*/,
2983  21 /*onDayOfMonth*/,
2984  96 /*atTimeCode*/,
2985  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2986  4 /*deltaCode*/,
2987  '-' /*letter*/,
2988  },
2989  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
2990  {
2991  42 /*fromYearTiny*/,
2992  43 /*toYearTiny*/,
2993  9 /*inMonth*/,
2994  0 /*onDayOfWeek*/,
2995  21 /*onDayOfMonth*/,
2996  96 /*atTimeCode*/,
2997  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2998  0 /*deltaCode*/,
2999  '-' /*letter*/,
3000  },
3001  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3002  {
3003  44 /*fromYearTiny*/,
3004  45 /*toYearTiny*/,
3005  3 /*inMonth*/,
3006  0 /*onDayOfWeek*/,
3007  20 /*onDayOfMonth*/,
3008  96 /*atTimeCode*/,
3009  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3010  4 /*deltaCode*/,
3011  '-' /*letter*/,
3012  },
3013  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3014  {
3015  44 /*fromYearTiny*/,
3016  45 /*toYearTiny*/,
3017  9 /*inMonth*/,
3018  0 /*onDayOfWeek*/,
3019  20 /*onDayOfMonth*/,
3020  96 /*atTimeCode*/,
3021  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3022  0 /*deltaCode*/,
3023  '-' /*letter*/,
3024  },
3025  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3026  {
3027  46 /*fromYearTiny*/,
3028  47 /*toYearTiny*/,
3029  3 /*inMonth*/,
3030  0 /*onDayOfWeek*/,
3031  21 /*onDayOfMonth*/,
3032  96 /*atTimeCode*/,
3033  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3034  4 /*deltaCode*/,
3035  '-' /*letter*/,
3036  },
3037  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3038  {
3039  46 /*fromYearTiny*/,
3040  47 /*toYearTiny*/,
3041  9 /*inMonth*/,
3042  0 /*onDayOfWeek*/,
3043  21 /*onDayOfMonth*/,
3044  96 /*atTimeCode*/,
3045  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3046  0 /*deltaCode*/,
3047  '-' /*letter*/,
3048  },
3049  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3050  {
3051  48 /*fromYearTiny*/,
3052  49 /*toYearTiny*/,
3053  3 /*inMonth*/,
3054  0 /*onDayOfWeek*/,
3055  20 /*onDayOfMonth*/,
3056  96 /*atTimeCode*/,
3057  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3058  4 /*deltaCode*/,
3059  '-' /*letter*/,
3060  },
3061  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3062  {
3063  48 /*fromYearTiny*/,
3064  49 /*toYearTiny*/,
3065  9 /*inMonth*/,
3066  0 /*onDayOfWeek*/,
3067  20 /*onDayOfMonth*/,
3068  96 /*atTimeCode*/,
3069  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3070  0 /*deltaCode*/,
3071  '-' /*letter*/,
3072  },
3073  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3074  {
3075  50 /*fromYearTiny*/,
3076  51 /*toYearTiny*/,
3077  3 /*inMonth*/,
3078  0 /*onDayOfWeek*/,
3079  21 /*onDayOfMonth*/,
3080  96 /*atTimeCode*/,
3081  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3082  4 /*deltaCode*/,
3083  '-' /*letter*/,
3084  },
3085  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3086  {
3087  50 /*fromYearTiny*/,
3088  51 /*toYearTiny*/,
3089  9 /*inMonth*/,
3090  0 /*onDayOfWeek*/,
3091  21 /*onDayOfMonth*/,
3092  96 /*atTimeCode*/,
3093  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3094  0 /*deltaCode*/,
3095  '-' /*letter*/,
3096  },
3097 
3098 };
3099 
3100 
3101 
3102 const basic::ZonePolicy kPolicyIran ACE_TIME_PROGMEM = {
3103  kZoneRulesIran /*rules*/,
3104  nullptr /* letters */,
3105  55 /*numRules*/,
3106  0 /* numLetters */,
3107 };
3108 
3109 //---------------------------------------------------------------------------
3110 // Policy name: Iraq
3111 // Rules: 3
3112 // Memory (8-bit): 33
3113 // Memory (32-bit): 48
3114 //---------------------------------------------------------------------------
3115 
3116 static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3117  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3118  {
3119  -15 /*fromYearTiny*/,
3120  -10 /*toYearTiny*/,
3121  9 /*inMonth*/,
3122  7 /*onDayOfWeek*/,
3123  0 /*onDayOfMonth*/,
3124  4 /*atTimeCode*/,
3125  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3126  0 /*deltaCode*/,
3127  '-' /*letter*/,
3128  },
3129  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3130  {
3131  -9 /*fromYearTiny*/,
3132  7 /*toYearTiny*/,
3133  4 /*inMonth*/,
3134  0 /*onDayOfWeek*/,
3135  1 /*onDayOfMonth*/,
3136  12 /*atTimeCode*/,
3137  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3138  4 /*deltaCode*/,
3139  '-' /*letter*/,
3140  },
3141  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3142  {
3143  -9 /*fromYearTiny*/,
3144  7 /*toYearTiny*/,
3145  10 /*inMonth*/,
3146  0 /*onDayOfWeek*/,
3147  1 /*onDayOfMonth*/,
3148  12 /*atTimeCode*/,
3149  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3150  0 /*deltaCode*/,
3151  '-' /*letter*/,
3152  },
3153 
3154 };
3155 
3156 
3157 
3158 const basic::ZonePolicy kPolicyIraq ACE_TIME_PROGMEM = {
3159  kZoneRulesIraq /*rules*/,
3160  nullptr /* letters */,
3161  3 /*numRules*/,
3162  0 /* numLetters */,
3163 };
3164 
3165 //---------------------------------------------------------------------------
3166 // Policy name: Japan
3167 // Rules: 1
3168 // Memory (8-bit): 15
3169 // Memory (32-bit): 24
3170 //---------------------------------------------------------------------------
3171 
3172 static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3173  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3174  {
3175  -52 /*fromYearTiny*/,
3176  -49 /*toYearTiny*/,
3177  9 /*inMonth*/,
3178  6 /*onDayOfWeek*/,
3179  8 /*onDayOfMonth*/,
3180  100 /*atTimeCode*/,
3181  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3182  0 /*deltaCode*/,
3183  'S' /*letter*/,
3184  },
3185 
3186 };
3187 
3188 
3189 
3190 const basic::ZonePolicy kPolicyJapan ACE_TIME_PROGMEM = {
3191  kZoneRulesJapan /*rules*/,
3192  nullptr /* letters */,
3193  1 /*numRules*/,
3194  0 /* numLetters */,
3195 };
3196 
3197 //---------------------------------------------------------------------------
3198 // Policy name: Jordan
3199 // Rules: 12
3200 // Memory (8-bit): 114
3201 // Memory (32-bit): 156
3202 //---------------------------------------------------------------------------
3203 
3204 static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3205  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3206  {
3207  -5 /*fromYearTiny*/,
3208  -2 /*toYearTiny*/,
3209  9 /*inMonth*/,
3210  5 /*onDayOfWeek*/,
3211  15 /*onDayOfMonth*/,
3212  0 /*atTimeCode*/,
3213  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3214  0 /*deltaCode*/,
3215  '-' /*letter*/,
3216  },
3217  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3218  {
3219  -1 /*fromYearTiny*/,
3220  -1 /*toYearTiny*/,
3221  7 /*inMonth*/,
3222  0 /*onDayOfWeek*/,
3223  1 /*onDayOfMonth*/,
3224  0 /*atTimeCode*/,
3225  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3226  4 /*deltaCode*/,
3227  'S' /*letter*/,
3228  },
3229  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3230  {
3231  -1 /*fromYearTiny*/,
3232  2 /*toYearTiny*/,
3233  9 /*inMonth*/,
3234  5 /*onDayOfWeek*/,
3235  0 /*onDayOfMonth*/,
3236  0 /*atTimeCode*/,
3237  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3238  0 /*deltaCode*/,
3239  '-' /*letter*/,
3240  },
3241  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3242  {
3243  0 /*fromYearTiny*/,
3244  1 /*toYearTiny*/,
3245  3 /*inMonth*/,
3246  4 /*onDayOfWeek*/,
3247  0 /*onDayOfMonth*/,
3248  0 /*atTimeCode*/,
3249  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3250  4 /*deltaCode*/,
3251  'S' /*letter*/,
3252  },
3253  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3254  {
3255  2 /*fromYearTiny*/,
3256  12 /*toYearTiny*/,
3257  3 /*inMonth*/,
3258  4 /*onDayOfWeek*/,
3259  0 /*onDayOfMonth*/,
3260  96 /*atTimeCode*/,
3261  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3262  4 /*deltaCode*/,
3263  'S' /*letter*/,
3264  },
3265  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3266  {
3267  3 /*fromYearTiny*/,
3268  3 /*toYearTiny*/,
3269  10 /*inMonth*/,
3270  0 /*onDayOfWeek*/,
3271  24 /*onDayOfMonth*/,
3272  0 /*atTimeCode*/,
3273  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3274  0 /*deltaCode*/,
3275  '-' /*letter*/,
3276  },
3277  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3278  {
3279  4 /*fromYearTiny*/,
3280  4 /*toYearTiny*/,
3281  10 /*inMonth*/,
3282  0 /*onDayOfWeek*/,
3283  15 /*onDayOfMonth*/,
3284  0 /*atTimeCode*/,
3285  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3286  0 /*deltaCode*/,
3287  '-' /*letter*/,
3288  },
3289  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3290  {
3291  5 /*fromYearTiny*/,
3292  5 /*toYearTiny*/,
3293  9 /*inMonth*/,
3294  5 /*onDayOfWeek*/,
3295  0 /*onDayOfMonth*/,
3296  0 /*atTimeCode*/,
3297  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3298  0 /*deltaCode*/,
3299  '-' /*letter*/,
3300  },
3301  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3302  {
3303  6 /*fromYearTiny*/,
3304  11 /*toYearTiny*/,
3305  10 /*inMonth*/,
3306  5 /*onDayOfWeek*/,
3307  0 /*onDayOfMonth*/,
3308  0 /*atTimeCode*/,
3309  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3310  0 /*deltaCode*/,
3311  '-' /*letter*/,
3312  },
3313  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3314  {
3315  13 /*fromYearTiny*/,
3316  13 /*toYearTiny*/,
3317  12 /*inMonth*/,
3318  0 /*onDayOfWeek*/,
3319  20 /*onDayOfMonth*/,
3320  0 /*atTimeCode*/,
3321  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3322  0 /*deltaCode*/,
3323  '-' /*letter*/,
3324  },
3325  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3326  {
3327  14 /*fromYearTiny*/,
3328  126 /*toYearTiny*/,
3329  3 /*inMonth*/,
3330  4 /*onDayOfWeek*/,
3331  0 /*onDayOfMonth*/,
3332  96 /*atTimeCode*/,
3333  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3334  4 /*deltaCode*/,
3335  'S' /*letter*/,
3336  },
3337  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3338  {
3339  14 /*fromYearTiny*/,
3340  126 /*toYearTiny*/,
3341  10 /*inMonth*/,
3342  5 /*onDayOfWeek*/,
3343  0 /*onDayOfMonth*/,
3344  0 /*atTimeCode*/,
3345  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3346  0 /*deltaCode*/,
3347  '-' /*letter*/,
3348  },
3349 
3350 };
3351 
3352 
3353 
3354 const basic::ZonePolicy kPolicyJordan ACE_TIME_PROGMEM = {
3355  kZoneRulesJordan /*rules*/,
3356  nullptr /* letters */,
3357  12 /*numRules*/,
3358  0 /* numLetters */,
3359 };
3360 
3361 //---------------------------------------------------------------------------
3362 // Policy name: LH
3363 // Rules: 9
3364 // Memory (8-bit): 87
3365 // Memory (32-bit): 120
3366 //---------------------------------------------------------------------------
3367 
3368 static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3369  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3370  {
3371  -13 /*fromYearTiny*/,
3372  -1 /*toYearTiny*/,
3373  10 /*inMonth*/,
3374  7 /*onDayOfWeek*/,
3375  0 /*onDayOfMonth*/,
3376  8 /*atTimeCode*/,
3377  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3378  2 /*deltaCode*/,
3379  '-' /*letter*/,
3380  },
3381  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3382  {
3383  -10 /*fromYearTiny*/,
3384  -5 /*toYearTiny*/,
3385  3 /*inMonth*/,
3386  7 /*onDayOfWeek*/,
3387  1 /*onDayOfMonth*/,
3388  8 /*atTimeCode*/,
3389  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3390  0 /*deltaCode*/,
3391  '-' /*letter*/,
3392  },
3393  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3394  {
3395  -4 /*fromYearTiny*/,
3396  5 /*toYearTiny*/,
3397  3 /*inMonth*/,
3398  7 /*onDayOfWeek*/,
3399  0 /*onDayOfMonth*/,
3400  8 /*atTimeCode*/,
3401  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3402  0 /*deltaCode*/,
3403  '-' /*letter*/,
3404  },
3405  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3406  {
3407  0 /*fromYearTiny*/,
3408  0 /*toYearTiny*/,
3409  8 /*inMonth*/,
3410  7 /*onDayOfWeek*/,
3411  0 /*onDayOfMonth*/,
3412  8 /*atTimeCode*/,
3413  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3414  2 /*deltaCode*/,
3415  '-' /*letter*/,
3416  },
3417  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3418  {
3419  1 /*fromYearTiny*/,
3420  7 /*toYearTiny*/,
3421  10 /*inMonth*/,
3422  7 /*onDayOfWeek*/,
3423  0 /*onDayOfMonth*/,
3424  8 /*atTimeCode*/,
3425  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3426  2 /*deltaCode*/,
3427  '-' /*letter*/,
3428  },
3429  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3430  {
3431  6 /*fromYearTiny*/,
3432  6 /*toYearTiny*/,
3433  4 /*inMonth*/,
3434  7 /*onDayOfWeek*/,
3435  1 /*onDayOfMonth*/,
3436  8 /*atTimeCode*/,
3437  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3438  0 /*deltaCode*/,
3439  '-' /*letter*/,
3440  },
3441  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3442  {
3443  7 /*fromYearTiny*/,
3444  7 /*toYearTiny*/,
3445  3 /*inMonth*/,
3446  7 /*onDayOfWeek*/,
3447  0 /*onDayOfMonth*/,
3448  8 /*atTimeCode*/,
3449  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3450  0 /*deltaCode*/,
3451  '-' /*letter*/,
3452  },
3453  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3454  {
3455  8 /*fromYearTiny*/,
3456  126 /*toYearTiny*/,
3457  4 /*inMonth*/,
3458  7 /*onDayOfWeek*/,
3459  1 /*onDayOfMonth*/,
3460  8 /*atTimeCode*/,
3461  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3462  0 /*deltaCode*/,
3463  '-' /*letter*/,
3464  },
3465  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3466  {
3467  8 /*fromYearTiny*/,
3468  126 /*toYearTiny*/,
3469  10 /*inMonth*/,
3470  7 /*onDayOfWeek*/,
3471  1 /*onDayOfMonth*/,
3472  8 /*atTimeCode*/,
3473  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3474  2 /*deltaCode*/,
3475  '-' /*letter*/,
3476  },
3477 
3478 };
3479 
3480 
3481 
3482 const basic::ZonePolicy kPolicyLH ACE_TIME_PROGMEM = {
3483  kZoneRulesLH /*rules*/,
3484  nullptr /* letters */,
3485  9 /*numRules*/,
3486  0 /* numLetters */,
3487 };
3488 
3489 //---------------------------------------------------------------------------
3490 // Policy name: Lebanon
3491 // Rules: 3
3492 // Memory (8-bit): 33
3493 // Memory (32-bit): 48
3494 //---------------------------------------------------------------------------
3495 
3496 static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3497  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3498  {
3499  -7 /*fromYearTiny*/,
3500  126 /*toYearTiny*/,
3501  3 /*inMonth*/,
3502  7 /*onDayOfWeek*/,
3503  0 /*onDayOfMonth*/,
3504  0 /*atTimeCode*/,
3505  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3506  4 /*deltaCode*/,
3507  'S' /*letter*/,
3508  },
3509  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3510  {
3511  -7 /*fromYearTiny*/,
3512  -2 /*toYearTiny*/,
3513  9 /*inMonth*/,
3514  7 /*onDayOfWeek*/,
3515  0 /*onDayOfMonth*/,
3516  0 /*atTimeCode*/,
3517  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3518  0 /*deltaCode*/,
3519  '-' /*letter*/,
3520  },
3521  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3522  {
3523  -1 /*fromYearTiny*/,
3524  126 /*toYearTiny*/,
3525  10 /*inMonth*/,
3526  7 /*onDayOfWeek*/,
3527  0 /*onDayOfMonth*/,
3528  0 /*atTimeCode*/,
3529  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3530  0 /*deltaCode*/,
3531  '-' /*letter*/,
3532  },
3533 
3534 };
3535 
3536 
3537 
3538 const basic::ZonePolicy kPolicyLebanon ACE_TIME_PROGMEM = {
3539  kZoneRulesLebanon /*rules*/,
3540  nullptr /* letters */,
3541  3 /*numRules*/,
3542  0 /* numLetters */,
3543 };
3544 
3545 //---------------------------------------------------------------------------
3546 // Policy name: Macau
3547 // Rules: 1
3548 // Memory (8-bit): 15
3549 // Memory (32-bit): 24
3550 //---------------------------------------------------------------------------
3551 
3552 static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3553  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3554  {
3555  -21 /*fromYearTiny*/,
3556  -21 /*toYearTiny*/,
3557  10 /*inMonth*/,
3558  7 /*onDayOfWeek*/,
3559  16 /*onDayOfMonth*/,
3560  14 /*atTimeCode*/,
3561  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3562  0 /*deltaCode*/,
3563  'S' /*letter*/,
3564  },
3565 
3566 };
3567 
3568 
3569 
3570 const basic::ZonePolicy kPolicyMacau ACE_TIME_PROGMEM = {
3571  kZoneRulesMacau /*rules*/,
3572  nullptr /* letters */,
3573  1 /*numRules*/,
3574  0 /* numLetters */,
3575 };
3576 
3577 //---------------------------------------------------------------------------
3578 // Policy name: Mauritius
3579 // Rules: 3
3580 // Memory (8-bit): 33
3581 // Memory (32-bit): 48
3582 //---------------------------------------------------------------------------
3583 
3584 static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3585  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3586  {
3587  -17 /*fromYearTiny*/,
3588  -17 /*toYearTiny*/,
3589  3 /*inMonth*/,
3590  0 /*onDayOfWeek*/,
3591  21 /*onDayOfMonth*/,
3592  0 /*atTimeCode*/,
3593  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3594  0 /*deltaCode*/,
3595  '-' /*letter*/,
3596  },
3597  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3598  {
3599  8 /*fromYearTiny*/,
3600  8 /*toYearTiny*/,
3601  10 /*inMonth*/,
3602  7 /*onDayOfWeek*/,
3603  0 /*onDayOfMonth*/,
3604  8 /*atTimeCode*/,
3605  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3606  4 /*deltaCode*/,
3607  '-' /*letter*/,
3608  },
3609  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3610  {
3611  9 /*fromYearTiny*/,
3612  9 /*toYearTiny*/,
3613  3 /*inMonth*/,
3614  7 /*onDayOfWeek*/,
3615  0 /*onDayOfMonth*/,
3616  8 /*atTimeCode*/,
3617  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3618  0 /*deltaCode*/,
3619  '-' /*letter*/,
3620  },
3621 
3622 };
3623 
3624 
3625 
3626 const basic::ZonePolicy kPolicyMauritius ACE_TIME_PROGMEM = {
3627  kZoneRulesMauritius /*rules*/,
3628  nullptr /* letters */,
3629  3 /*numRules*/,
3630  0 /* numLetters */,
3631 };
3632 
3633 //---------------------------------------------------------------------------
3634 // Policy name: Mexico
3635 // Rules: 7
3636 // Memory (8-bit): 69
3637 // Memory (32-bit): 96
3638 //---------------------------------------------------------------------------
3639 
3640 static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3641  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3642  {
3643  -50 /*fromYearTiny*/,
3644  -50 /*toYearTiny*/,
3645  7 /*inMonth*/,
3646  0 /*onDayOfWeek*/,
3647  30 /*onDayOfMonth*/,
3648  0 /*atTimeCode*/,
3649  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3650  0 /*deltaCode*/,
3651  'S' /*letter*/,
3652  },
3653  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3654  {
3655  -4 /*fromYearTiny*/,
3656  0 /*toYearTiny*/,
3657  4 /*inMonth*/,
3658  7 /*onDayOfWeek*/,
3659  1 /*onDayOfMonth*/,
3660  8 /*atTimeCode*/,
3661  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3662  4 /*deltaCode*/,
3663  'D' /*letter*/,
3664  },
3665  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3666  {
3667  -4 /*fromYearTiny*/,
3668  0 /*toYearTiny*/,
3669  10 /*inMonth*/,
3670  7 /*onDayOfWeek*/,
3671  0 /*onDayOfMonth*/,
3672  8 /*atTimeCode*/,
3673  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3674  0 /*deltaCode*/,
3675  'S' /*letter*/,
3676  },
3677  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
3678  {
3679  1 /*fromYearTiny*/,
3680  1 /*toYearTiny*/,
3681  5 /*inMonth*/,
3682  7 /*onDayOfWeek*/,
3683  1 /*onDayOfMonth*/,
3684  8 /*atTimeCode*/,
3685  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3686  4 /*deltaCode*/,
3687  'D' /*letter*/,
3688  },
3689  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
3690  {
3691  1 /*fromYearTiny*/,
3692  1 /*toYearTiny*/,
3693  9 /*inMonth*/,
3694  7 /*onDayOfWeek*/,
3695  0 /*onDayOfMonth*/,
3696  8 /*atTimeCode*/,
3697  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3698  0 /*deltaCode*/,
3699  'S' /*letter*/,
3700  },
3701  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
3702  {
3703  2 /*fromYearTiny*/,
3704  126 /*toYearTiny*/,
3705  4 /*inMonth*/,
3706  7 /*onDayOfWeek*/,
3707  1 /*onDayOfMonth*/,
3708  8 /*atTimeCode*/,
3709  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3710  4 /*deltaCode*/,
3711  'D' /*letter*/,
3712  },
3713  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
3714  {
3715  2 /*fromYearTiny*/,
3716  126 /*toYearTiny*/,
3717  10 /*inMonth*/,
3718  7 /*onDayOfWeek*/,
3719  0 /*onDayOfMonth*/,
3720  8 /*atTimeCode*/,
3721  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3722  0 /*deltaCode*/,
3723  'S' /*letter*/,
3724  },
3725 
3726 };
3727 
3728 
3729 
3730 const basic::ZonePolicy kPolicyMexico ACE_TIME_PROGMEM = {
3731  kZoneRulesMexico /*rules*/,
3732  nullptr /* letters */,
3733  7 /*numRules*/,
3734  0 /* numLetters */,
3735 };
3736 
3737 //---------------------------------------------------------------------------
3738 // Policy name: Moldova
3739 // Rules: 2
3740 // Memory (8-bit): 24
3741 // Memory (32-bit): 36
3742 //---------------------------------------------------------------------------
3743 
3744 static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
3745  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3746  {
3747  -3 /*fromYearTiny*/,
3748  126 /*toYearTiny*/,
3749  3 /*inMonth*/,
3750  7 /*onDayOfWeek*/,
3751  0 /*onDayOfMonth*/,
3752  8 /*atTimeCode*/,
3753  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3754  4 /*deltaCode*/,
3755  'S' /*letter*/,
3756  },
3757  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3758  {
3759  -3 /*fromYearTiny*/,
3760  126 /*toYearTiny*/,
3761  10 /*inMonth*/,
3762  7 /*onDayOfWeek*/,
3763  0 /*onDayOfMonth*/,
3764  12 /*atTimeCode*/,
3765  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3766  0 /*deltaCode*/,
3767  '-' /*letter*/,
3768  },
3769 
3770 };
3771 
3772 
3773 
3774 const basic::ZonePolicy kPolicyMoldova ACE_TIME_PROGMEM = {
3775  kZoneRulesMoldova /*rules*/,
3776  nullptr /* letters */,
3777  2 /*numRules*/,
3778  0 /* numLetters */,
3779 };
3780 
3781 //---------------------------------------------------------------------------
3782 // Policy name: Moncton
3783 // Rules: 3
3784 // Memory (8-bit): 33
3785 // Memory (32-bit): 48
3786 //---------------------------------------------------------------------------
3787 
3788 static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
3789  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3790  {
3791  -43 /*fromYearTiny*/,
3792  -28 /*toYearTiny*/,
3793  10 /*inMonth*/,
3794  7 /*onDayOfWeek*/,
3795  0 /*onDayOfMonth*/,
3796  8 /*atTimeCode*/,
3797  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3798  0 /*deltaCode*/,
3799  'S' /*letter*/,
3800  },
3801  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3802  {
3803  -7 /*fromYearTiny*/,
3804  6 /*toYearTiny*/,
3805  4 /*inMonth*/,
3806  7 /*onDayOfWeek*/,
3807  1 /*onDayOfMonth*/,
3808  0 /*atTimeCode*/,
3809  basic::ZoneContext::kSuffixW + 1 /*atTimeModifier*/,
3810  4 /*deltaCode*/,
3811  'D' /*letter*/,
3812  },
3813  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3814  {
3815  -7 /*fromYearTiny*/,
3816  6 /*toYearTiny*/,
3817  10 /*inMonth*/,
3818  7 /*onDayOfWeek*/,
3819  0 /*onDayOfMonth*/,
3820  0 /*atTimeCode*/,
3821  basic::ZoneContext::kSuffixW + 1 /*atTimeModifier*/,
3822  0 /*deltaCode*/,
3823  'S' /*letter*/,
3824  },
3825 
3826 };
3827 
3828 
3829 
3830 const basic::ZonePolicy kPolicyMoncton ACE_TIME_PROGMEM = {
3831  kZoneRulesMoncton /*rules*/,
3832  nullptr /* letters */,
3833  3 /*numRules*/,
3834  0 /* numLetters */,
3835 };
3836 
3837 //---------------------------------------------------------------------------
3838 // Policy name: Mongol
3839 // Rules: 6
3840 // Memory (8-bit): 60
3841 // Memory (32-bit): 84
3842 //---------------------------------------------------------------------------
3843 
3844 static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
3845  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3846  {
3847  -16 /*fromYearTiny*/,
3848  -2 /*toYearTiny*/,
3849  9 /*inMonth*/,
3850  7 /*onDayOfWeek*/,
3851  0 /*onDayOfMonth*/,
3852  0 /*atTimeCode*/,
3853  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3854  0 /*deltaCode*/,
3855  '-' /*letter*/,
3856  },
3857  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3858  {
3859  1 /*fromYearTiny*/,
3860  1 /*toYearTiny*/,
3861  4 /*inMonth*/,
3862  6 /*onDayOfWeek*/,
3863  0 /*onDayOfMonth*/,
3864  8 /*atTimeCode*/,
3865  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3866  4 /*deltaCode*/,
3867  '-' /*letter*/,
3868  },
3869  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3870  {
3871  1 /*fromYearTiny*/,
3872  6 /*toYearTiny*/,
3873  9 /*inMonth*/,
3874  6 /*onDayOfWeek*/,
3875  0 /*onDayOfMonth*/,
3876  8 /*atTimeCode*/,
3877  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3878  0 /*deltaCode*/,
3879  '-' /*letter*/,
3880  },
3881  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3882  {
3883  2 /*fromYearTiny*/,
3884  6 /*toYearTiny*/,
3885  3 /*inMonth*/,
3886  6 /*onDayOfWeek*/,
3887  0 /*onDayOfMonth*/,
3888  8 /*atTimeCode*/,
3889  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3890  4 /*deltaCode*/,
3891  '-' /*letter*/,
3892  },
3893  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3894  {
3895  15 /*fromYearTiny*/,
3896  16 /*toYearTiny*/,
3897  3 /*inMonth*/,
3898  6 /*onDayOfWeek*/,
3899  0 /*onDayOfMonth*/,
3900  8 /*atTimeCode*/,
3901  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3902  4 /*deltaCode*/,
3903  '-' /*letter*/,
3904  },
3905  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
3906  {
3907  15 /*fromYearTiny*/,
3908  16 /*toYearTiny*/,
3909  9 /*inMonth*/,
3910  6 /*onDayOfWeek*/,
3911  0 /*onDayOfMonth*/,
3912  0 /*atTimeCode*/,
3913  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3914  0 /*deltaCode*/,
3915  '-' /*letter*/,
3916  },
3917 
3918 };
3919 
3920 
3921 
3922 const basic::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = {
3923  kZoneRulesMongol /*rules*/,
3924  nullptr /* letters */,
3925  6 /*numRules*/,
3926  0 /* numLetters */,
3927 };
3928 
3929 //---------------------------------------------------------------------------
3930 // Policy name: NC
3931 // Rules: 1
3932 // Memory (8-bit): 15
3933 // Memory (32-bit): 24
3934 //---------------------------------------------------------------------------
3935 
3936 static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
3937  // Rule NC 1997 only - Mar 2 2:00s 0 -
3938  {
3939  -3 /*fromYearTiny*/,
3940  -3 /*toYearTiny*/,
3941  3 /*inMonth*/,
3942  0 /*onDayOfWeek*/,
3943  2 /*onDayOfMonth*/,
3944  8 /*atTimeCode*/,
3945  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3946  0 /*deltaCode*/,
3947  '-' /*letter*/,
3948  },
3949 
3950 };
3951 
3952 
3953 
3954 const basic::ZonePolicy kPolicyNC ACE_TIME_PROGMEM = {
3955  kZoneRulesNC /*rules*/,
3956  nullptr /* letters */,
3957  1 /*numRules*/,
3958  0 /* numLetters */,
3959 };
3960 
3961 //---------------------------------------------------------------------------
3962 // Policy name: NZ
3963 // Rules: 5
3964 // Memory (8-bit): 51
3965 // Memory (32-bit): 72
3966 //---------------------------------------------------------------------------
3967 
3968 static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
3969  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
3970  {
3971  -11 /*fromYearTiny*/,
3972  -11 /*toYearTiny*/,
3973  10 /*inMonth*/,
3974  7 /*onDayOfWeek*/,
3975  8 /*onDayOfMonth*/,
3976  8 /*atTimeCode*/,
3977  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3978  4 /*deltaCode*/,
3979  'D' /*letter*/,
3980  },
3981  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
3982  {
3983  -10 /*fromYearTiny*/,
3984  6 /*toYearTiny*/,
3985  10 /*inMonth*/,
3986  7 /*onDayOfWeek*/,
3987  1 /*onDayOfMonth*/,
3988  8 /*atTimeCode*/,
3989  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3990  4 /*deltaCode*/,
3991  'D' /*letter*/,
3992  },
3993  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
3994  {
3995  -10 /*fromYearTiny*/,
3996  7 /*toYearTiny*/,
3997  3 /*inMonth*/,
3998  7 /*onDayOfWeek*/,
3999  15 /*onDayOfMonth*/,
4000  8 /*atTimeCode*/,
4001  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4002  0 /*deltaCode*/,
4003  'S' /*letter*/,
4004  },
4005  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
4006  {
4007  7 /*fromYearTiny*/,
4008  126 /*toYearTiny*/,
4009  9 /*inMonth*/,
4010  7 /*onDayOfWeek*/,
4011  0 /*onDayOfMonth*/,
4012  8 /*atTimeCode*/,
4013  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4014  4 /*deltaCode*/,
4015  'D' /*letter*/,
4016  },
4017  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
4018  {
4019  8 /*fromYearTiny*/,
4020  126 /*toYearTiny*/,
4021  4 /*inMonth*/,
4022  7 /*onDayOfWeek*/,
4023  1 /*onDayOfMonth*/,
4024  8 /*atTimeCode*/,
4025  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4026  0 /*deltaCode*/,
4027  'S' /*letter*/,
4028  },
4029 
4030 };
4031 
4032 
4033 
4034 const basic::ZonePolicy kPolicyNZ ACE_TIME_PROGMEM = {
4035  kZoneRulesNZ /*rules*/,
4036  nullptr /* letters */,
4037  5 /*numRules*/,
4038  0 /* numLetters */,
4039 };
4040 
4041 //---------------------------------------------------------------------------
4042 // Policy name: Nic
4043 // Rules: 5
4044 // Memory (8-bit): 51
4045 // Memory (32-bit): 72
4046 //---------------------------------------------------------------------------
4047 
4048 static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
4049  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
4050  {
4051  -21 /*fromYearTiny*/,
4052  -20 /*toYearTiny*/,
4053  6 /*inMonth*/,
4054  1 /*onDayOfWeek*/,
4055  23 /*onDayOfMonth*/,
4056  0 /*atTimeCode*/,
4057  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4058  0 /*deltaCode*/,
4059  'S' /*letter*/,
4060  },
4061  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
4062  {
4063  5 /*fromYearTiny*/,
4064  5 /*toYearTiny*/,
4065  4 /*inMonth*/,
4066  0 /*onDayOfWeek*/,
4067  10 /*onDayOfMonth*/,
4068  0 /*atTimeCode*/,
4069  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4070  4 /*deltaCode*/,
4071  'D' /*letter*/,
4072  },
4073  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
4074  {
4075  5 /*fromYearTiny*/,
4076  5 /*toYearTiny*/,
4077  10 /*inMonth*/,
4078  7 /*onDayOfWeek*/,
4079  1 /*onDayOfMonth*/,
4080  0 /*atTimeCode*/,
4081  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4082  0 /*deltaCode*/,
4083  'S' /*letter*/,
4084  },
4085  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
4086  {
4087  6 /*fromYearTiny*/,
4088  6 /*toYearTiny*/,
4089  4 /*inMonth*/,
4090  0 /*onDayOfWeek*/,
4091  30 /*onDayOfMonth*/,
4092  8 /*atTimeCode*/,
4093  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4094  4 /*deltaCode*/,
4095  'D' /*letter*/,
4096  },
4097  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
4098  {
4099  6 /*fromYearTiny*/,
4100  6 /*toYearTiny*/,
4101  10 /*inMonth*/,
4102  7 /*onDayOfWeek*/,
4103  1 /*onDayOfMonth*/,
4104  4 /*atTimeCode*/,
4105  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4106  0 /*deltaCode*/,
4107  'S' /*letter*/,
4108  },
4109 
4110 };
4111 
4112 
4113 
4114 const basic::ZonePolicy kPolicyNic ACE_TIME_PROGMEM = {
4115  kZoneRulesNic /*rules*/,
4116  nullptr /* letters */,
4117  5 /*numRules*/,
4118  0 /* numLetters */,
4119 };
4120 
4121 //---------------------------------------------------------------------------
4122 // Policy name: PRC
4123 // Rules: 1
4124 // Memory (8-bit): 15
4125 // Memory (32-bit): 24
4126 //---------------------------------------------------------------------------
4127 
4128 static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
4129  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
4130  {
4131  -14 /*fromYearTiny*/,
4132  -9 /*toYearTiny*/,
4133  9 /*inMonth*/,
4134  7 /*onDayOfWeek*/,
4135  11 /*onDayOfMonth*/,
4136  8 /*atTimeCode*/,
4137  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4138  0 /*deltaCode*/,
4139  'S' /*letter*/,
4140  },
4141 
4142 };
4143 
4144 
4145 
4146 const basic::ZonePolicy kPolicyPRC ACE_TIME_PROGMEM = {
4147  kZoneRulesPRC /*rules*/,
4148  nullptr /* letters */,
4149  1 /*numRules*/,
4150  0 /* numLetters */,
4151 };
4152 
4153 //---------------------------------------------------------------------------
4154 // Policy name: Pakistan
4155 // Rules: 6
4156 // Memory (8-bit): 60
4157 // Memory (32-bit): 84
4158 //---------------------------------------------------------------------------
4159 
4160 static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
4161  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4162  {
4163  -127 /*fromYearTiny*/,
4164  -127 /*toYearTiny*/,
4165  1 /*inMonth*/,
4166  0 /*onDayOfWeek*/,
4167  1 /*onDayOfMonth*/,
4168  0 /*atTimeCode*/,
4169  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4170  0 /*deltaCode*/,
4171  '-' /*letter*/,
4172  },
4173  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4174  {
4175  2 /*fromYearTiny*/,
4176  2 /*toYearTiny*/,
4177  4 /*inMonth*/,
4178  7 /*onDayOfWeek*/,
4179  2 /*onDayOfMonth*/,
4180  0 /*atTimeCode*/,
4181  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4182  4 /*deltaCode*/,
4183  'S' /*letter*/,
4184  },
4185  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4186  {
4187  2 /*fromYearTiny*/,
4188  2 /*toYearTiny*/,
4189  10 /*inMonth*/,
4190  7 /*onDayOfWeek*/,
4191  2 /*onDayOfMonth*/,
4192  0 /*atTimeCode*/,
4193  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4194  0 /*deltaCode*/,
4195  '-' /*letter*/,
4196  },
4197  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4198  {
4199  8 /*fromYearTiny*/,
4200  8 /*toYearTiny*/,
4201  6 /*inMonth*/,
4202  0 /*onDayOfWeek*/,
4203  1 /*onDayOfMonth*/,
4204  0 /*atTimeCode*/,
4205  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4206  4 /*deltaCode*/,
4207  'S' /*letter*/,
4208  },
4209  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4210  {
4211  8 /*fromYearTiny*/,
4212  9 /*toYearTiny*/,
4213  11 /*inMonth*/,
4214  0 /*onDayOfWeek*/,
4215  1 /*onDayOfMonth*/,
4216  0 /*atTimeCode*/,
4217  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4218  0 /*deltaCode*/,
4219  '-' /*letter*/,
4220  },
4221  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4222  {
4223  9 /*fromYearTiny*/,
4224  9 /*toYearTiny*/,
4225  4 /*inMonth*/,
4226  0 /*onDayOfWeek*/,
4227  15 /*onDayOfMonth*/,
4228  0 /*atTimeCode*/,
4229  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4230  4 /*deltaCode*/,
4231  'S' /*letter*/,
4232  },
4233 
4234 };
4235 
4236 
4237 
4238 const basic::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = {
4239  kZoneRulesPakistan /*rules*/,
4240  nullptr /* letters */,
4241  6 /*numRules*/,
4242  0 /* numLetters */,
4243 };
4244 
4245 //---------------------------------------------------------------------------
4246 // Policy name: Para
4247 // Rules: 10
4248 // Memory (8-bit): 96
4249 // Memory (32-bit): 132
4250 //---------------------------------------------------------------------------
4251 
4252 static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
4253  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4254  {
4255  -4 /*fromYearTiny*/,
4256  1 /*toYearTiny*/,
4257  10 /*inMonth*/,
4258  7 /*onDayOfWeek*/,
4259  1 /*onDayOfMonth*/,
4260  0 /*atTimeCode*/,
4261  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4262  4 /*deltaCode*/,
4263  '-' /*letter*/,
4264  },
4265  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4266  {
4267  -3 /*fromYearTiny*/,
4268  -3 /*toYearTiny*/,
4269  2 /*inMonth*/,
4270  7 /*onDayOfWeek*/,
4271  0 /*onDayOfMonth*/,
4272  0 /*atTimeCode*/,
4273  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4274  0 /*deltaCode*/,
4275  '-' /*letter*/,
4276  },
4277  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4278  {
4279  -2 /*fromYearTiny*/,
4280  1 /*toYearTiny*/,
4281  3 /*inMonth*/,
4282  7 /*onDayOfWeek*/,
4283  1 /*onDayOfMonth*/,
4284  0 /*atTimeCode*/,
4285  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4286  0 /*deltaCode*/,
4287  '-' /*letter*/,
4288  },
4289  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4290  {
4291  2 /*fromYearTiny*/,
4292  4 /*toYearTiny*/,
4293  4 /*inMonth*/,
4294  7 /*onDayOfWeek*/,
4295  1 /*onDayOfMonth*/,
4296  0 /*atTimeCode*/,
4297  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4298  0 /*deltaCode*/,
4299  '-' /*letter*/,
4300  },
4301  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4302  {
4303  2 /*fromYearTiny*/,
4304  3 /*toYearTiny*/,
4305  9 /*inMonth*/,
4306  7 /*onDayOfWeek*/,
4307  1 /*onDayOfMonth*/,
4308  0 /*atTimeCode*/,
4309  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4310  4 /*deltaCode*/,
4311  '-' /*letter*/,
4312  },
4313  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4314  {
4315  4 /*fromYearTiny*/,
4316  9 /*toYearTiny*/,
4317  10 /*inMonth*/,
4318  7 /*onDayOfWeek*/,
4319  15 /*onDayOfMonth*/,
4320  0 /*atTimeCode*/,
4321  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4322  4 /*deltaCode*/,
4323  '-' /*letter*/,
4324  },
4325  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4326  {
4327  5 /*fromYearTiny*/,
4328  9 /*toYearTiny*/,
4329  3 /*inMonth*/,
4330  7 /*onDayOfWeek*/,
4331  8 /*onDayOfMonth*/,
4332  0 /*atTimeCode*/,
4333  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4334  0 /*deltaCode*/,
4335  '-' /*letter*/,
4336  },
4337  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4338  {
4339  10 /*fromYearTiny*/,
4340  126 /*toYearTiny*/,
4341  10 /*inMonth*/,
4342  7 /*onDayOfWeek*/,
4343  1 /*onDayOfMonth*/,
4344  0 /*atTimeCode*/,
4345  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4346  4 /*deltaCode*/,
4347  '-' /*letter*/,
4348  },
4349  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4350  {
4351  10 /*fromYearTiny*/,
4352  12 /*toYearTiny*/,
4353  4 /*inMonth*/,
4354  7 /*onDayOfWeek*/,
4355  8 /*onDayOfMonth*/,
4356  0 /*atTimeCode*/,
4357  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4358  0 /*deltaCode*/,
4359  '-' /*letter*/,
4360  },
4361  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4362  {
4363  13 /*fromYearTiny*/,
4364  126 /*toYearTiny*/,
4365  3 /*inMonth*/,
4366  7 /*onDayOfWeek*/,
4367  22 /*onDayOfMonth*/,
4368  0 /*atTimeCode*/,
4369  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4370  0 /*deltaCode*/,
4371  '-' /*letter*/,
4372  },
4373 
4374 };
4375 
4376 
4377 
4378 const basic::ZonePolicy kPolicyPara ACE_TIME_PROGMEM = {
4379  kZoneRulesPara /*rules*/,
4380  nullptr /* letters */,
4381  10 /*numRules*/,
4382  0 /* numLetters */,
4383 };
4384 
4385 //---------------------------------------------------------------------------
4386 // Policy name: Peru
4387 // Rules: 1
4388 // Memory (8-bit): 15
4389 // Memory (32-bit): 24
4390 //---------------------------------------------------------------------------
4391 
4392 static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
4393  // Rule Peru 1994 only - Apr 1 0:00 0 -
4394  {
4395  -6 /*fromYearTiny*/,
4396  -6 /*toYearTiny*/,
4397  4 /*inMonth*/,
4398  0 /*onDayOfWeek*/,
4399  1 /*onDayOfMonth*/,
4400  0 /*atTimeCode*/,
4401  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4402  0 /*deltaCode*/,
4403  '-' /*letter*/,
4404  },
4405 
4406 };
4407 
4408 
4409 
4410 const basic::ZonePolicy kPolicyPeru ACE_TIME_PROGMEM = {
4411  kZoneRulesPeru /*rules*/,
4412  nullptr /* letters */,
4413  1 /*numRules*/,
4414  0 /* numLetters */,
4415 };
4416 
4417 //---------------------------------------------------------------------------
4418 // Policy name: Phil
4419 // Rules: 1
4420 // Memory (8-bit): 15
4421 // Memory (32-bit): 24
4422 //---------------------------------------------------------------------------
4423 
4424 static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
4425  // Rule Phil 1978 only - Sep 21 0:00 0 S
4426  {
4427  -22 /*fromYearTiny*/,
4428  -22 /*toYearTiny*/,
4429  9 /*inMonth*/,
4430  0 /*onDayOfWeek*/,
4431  21 /*onDayOfMonth*/,
4432  0 /*atTimeCode*/,
4433  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4434  0 /*deltaCode*/,
4435  'S' /*letter*/,
4436  },
4437 
4438 };
4439 
4440 
4441 
4442 const basic::ZonePolicy kPolicyPhil ACE_TIME_PROGMEM = {
4443  kZoneRulesPhil /*rules*/,
4444  nullptr /* letters */,
4445  1 /*numRules*/,
4446  0 /* numLetters */,
4447 };
4448 
4449 //---------------------------------------------------------------------------
4450 // Policy name: ROK
4451 // Rules: 1
4452 // Memory (8-bit): 15
4453 // Memory (32-bit): 24
4454 //---------------------------------------------------------------------------
4455 
4456 static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
4457  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4458  {
4459  -13 /*fromYearTiny*/,
4460  -12 /*toYearTiny*/,
4461  10 /*inMonth*/,
4462  7 /*onDayOfWeek*/,
4463  8 /*onDayOfMonth*/,
4464  12 /*atTimeCode*/,
4465  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4466  0 /*deltaCode*/,
4467  'S' /*letter*/,
4468  },
4469 
4470 };
4471 
4472 
4473 
4474 const basic::ZonePolicy kPolicyROK ACE_TIME_PROGMEM = {
4475  kZoneRulesROK /*rules*/,
4476  nullptr /* letters */,
4477  1 /*numRules*/,
4478  0 /* numLetters */,
4479 };
4480 
4481 //---------------------------------------------------------------------------
4482 // Policy name: RussiaAsia
4483 // Rules: 3
4484 // Memory (8-bit): 33
4485 // Memory (32-bit): 48
4486 //---------------------------------------------------------------------------
4487 
4488 static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
4489  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4490  {
4491  -16 /*fromYearTiny*/,
4492  -5 /*toYearTiny*/,
4493  9 /*inMonth*/,
4494  7 /*onDayOfWeek*/,
4495  0 /*onDayOfMonth*/,
4496  8 /*atTimeCode*/,
4497  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4498  0 /*deltaCode*/,
4499  '-' /*letter*/,
4500  },
4501  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4502  {
4503  -15 /*fromYearTiny*/,
4504  10 /*toYearTiny*/,
4505  3 /*inMonth*/,
4506  7 /*onDayOfWeek*/,
4507  0 /*onDayOfMonth*/,
4508  8 /*atTimeCode*/,
4509  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4510  4 /*deltaCode*/,
4511  '-' /*letter*/,
4512  },
4513  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4514  {
4515  -4 /*fromYearTiny*/,
4516  10 /*toYearTiny*/,
4517  10 /*inMonth*/,
4518  7 /*onDayOfWeek*/,
4519  0 /*onDayOfMonth*/,
4520  8 /*atTimeCode*/,
4521  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4522  0 /*deltaCode*/,
4523  '-' /*letter*/,
4524  },
4525 
4526 };
4527 
4528 
4529 
4530 const basic::ZonePolicy kPolicyRussiaAsia ACE_TIME_PROGMEM = {
4531  kZoneRulesRussiaAsia /*rules*/,
4532  nullptr /* letters */,
4533  3 /*numRules*/,
4534  0 /* numLetters */,
4535 };
4536 
4537 //---------------------------------------------------------------------------
4538 // Policy name: SA
4539 // Rules: 1
4540 // Memory (8-bit): 15
4541 // Memory (32-bit): 24
4542 //---------------------------------------------------------------------------
4543 
4544 static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
4545  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4546  {
4547  -57 /*fromYearTiny*/,
4548  -56 /*toYearTiny*/,
4549  3 /*inMonth*/,
4550  7 /*onDayOfWeek*/,
4551  15 /*onDayOfMonth*/,
4552  8 /*atTimeCode*/,
4553  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4554  0 /*deltaCode*/,
4555  '-' /*letter*/,
4556  },
4557 
4558 };
4559 
4560 
4561 
4562 const basic::ZonePolicy kPolicySA ACE_TIME_PROGMEM = {
4563  kZoneRulesSA /*rules*/,
4564  nullptr /* letters */,
4565  1 /*numRules*/,
4566  0 /* numLetters */,
4567 };
4568 
4569 //---------------------------------------------------------------------------
4570 // Policy name: Salv
4571 // Rules: 1
4572 // Memory (8-bit): 15
4573 // Memory (32-bit): 24
4574 //---------------------------------------------------------------------------
4575 
4576 static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
4577  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4578  {
4579  -13 /*fromYearTiny*/,
4580  -12 /*toYearTiny*/,
4581  9 /*inMonth*/,
4582  7 /*onDayOfWeek*/,
4583  0 /*onDayOfMonth*/,
4584  0 /*atTimeCode*/,
4585  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4586  0 /*deltaCode*/,
4587  'S' /*letter*/,
4588  },
4589 
4590 };
4591 
4592 
4593 
4594 const basic::ZonePolicy kPolicySalv ACE_TIME_PROGMEM = {
4595  kZoneRulesSalv /*rules*/,
4596  nullptr /* letters */,
4597  1 /*numRules*/,
4598  0 /* numLetters */,
4599 };
4600 
4601 //---------------------------------------------------------------------------
4602 // Policy name: Syria
4603 // Rules: 12
4604 // Memory (8-bit): 114
4605 // Memory (32-bit): 156
4606 //---------------------------------------------------------------------------
4607 
4608 static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
4609  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
4610  {
4611  -6 /*fromYearTiny*/,
4612  5 /*toYearTiny*/,
4613  10 /*inMonth*/,
4614  0 /*onDayOfWeek*/,
4615  1 /*onDayOfMonth*/,
4616  0 /*atTimeCode*/,
4617  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4618  0 /*deltaCode*/,
4619  '-' /*letter*/,
4620  },
4621  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
4622  {
4623  -3 /*fromYearTiny*/,
4624  -2 /*toYearTiny*/,
4625  3 /*inMonth*/,
4626  1 /*onDayOfWeek*/,
4627  0 /*onDayOfMonth*/,
4628  0 /*atTimeCode*/,
4629  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4630  4 /*deltaCode*/,
4631  'S' /*letter*/,
4632  },
4633  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
4634  {
4635  -1 /*fromYearTiny*/,
4636  6 /*toYearTiny*/,
4637  4 /*inMonth*/,
4638  0 /*onDayOfWeek*/,
4639  1 /*onDayOfMonth*/,
4640  0 /*atTimeCode*/,
4641  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4642  4 /*deltaCode*/,
4643  'S' /*letter*/,
4644  },
4645  // Rule Syria 2006 only - Sep 22 0:00 0 -
4646  {
4647  6 /*fromYearTiny*/,
4648  6 /*toYearTiny*/,
4649  9 /*inMonth*/,
4650  0 /*onDayOfWeek*/,
4651  22 /*onDayOfMonth*/,
4652  0 /*atTimeCode*/,
4653  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4654  0 /*deltaCode*/,
4655  '-' /*letter*/,
4656  },
4657  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
4658  {
4659  7 /*fromYearTiny*/,
4660  7 /*toYearTiny*/,
4661  3 /*inMonth*/,
4662  5 /*onDayOfWeek*/,
4663  0 /*onDayOfMonth*/,
4664  0 /*atTimeCode*/,
4665  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4666  4 /*deltaCode*/,
4667  'S' /*letter*/,
4668  },
4669  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
4670  {
4671  7 /*fromYearTiny*/,
4672  7 /*toYearTiny*/,
4673  11 /*inMonth*/,
4674  5 /*onDayOfWeek*/,
4675  1 /*onDayOfMonth*/,
4676  0 /*atTimeCode*/,
4677  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4678  0 /*deltaCode*/,
4679  '-' /*letter*/,
4680  },
4681  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
4682  {
4683  8 /*fromYearTiny*/,
4684  8 /*toYearTiny*/,
4685  4 /*inMonth*/,
4686  5 /*onDayOfWeek*/,
4687  1 /*onDayOfMonth*/,
4688  0 /*atTimeCode*/,
4689  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4690  4 /*deltaCode*/,
4691  'S' /*letter*/,
4692  },
4693  // Rule Syria 2008 only - Nov 1 0:00 0 -
4694  {
4695  8 /*fromYearTiny*/,
4696  8 /*toYearTiny*/,
4697  11 /*inMonth*/,
4698  0 /*onDayOfWeek*/,
4699  1 /*onDayOfMonth*/,
4700  0 /*atTimeCode*/,
4701  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4702  0 /*deltaCode*/,
4703  '-' /*letter*/,
4704  },
4705  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
4706  {
4707  9 /*fromYearTiny*/,
4708  9 /*toYearTiny*/,
4709  3 /*inMonth*/,
4710  5 /*onDayOfWeek*/,
4711  0 /*onDayOfMonth*/,
4712  0 /*atTimeCode*/,
4713  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4714  4 /*deltaCode*/,
4715  'S' /*letter*/,
4716  },
4717  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
4718  {
4719  10 /*fromYearTiny*/,
4720  11 /*toYearTiny*/,
4721  4 /*inMonth*/,
4722  5 /*onDayOfWeek*/,
4723  1 /*onDayOfMonth*/,
4724  0 /*atTimeCode*/,
4725  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4726  4 /*deltaCode*/,
4727  'S' /*letter*/,
4728  },
4729  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
4730  {
4731  12 /*fromYearTiny*/,
4732  126 /*toYearTiny*/,
4733  3 /*inMonth*/,
4734  5 /*onDayOfWeek*/,
4735  0 /*onDayOfMonth*/,
4736  0 /*atTimeCode*/,
4737  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4738  4 /*deltaCode*/,
4739  'S' /*letter*/,
4740  },
4741  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
4742  {
4743  9 /*fromYearTiny*/,
4744  126 /*toYearTiny*/,
4745  10 /*inMonth*/,
4746  5 /*onDayOfWeek*/,
4747  0 /*onDayOfMonth*/,
4748  0 /*atTimeCode*/,
4749  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4750  0 /*deltaCode*/,
4751  '-' /*letter*/,
4752  },
4753 
4754 };
4755 
4756 
4757 
4758 const basic::ZonePolicy kPolicySyria ACE_TIME_PROGMEM = {
4759  kZoneRulesSyria /*rules*/,
4760  nullptr /* letters */,
4761  12 /*numRules*/,
4762  0 /* numLetters */,
4763 };
4764 
4765 //---------------------------------------------------------------------------
4766 // Policy name: Taiwan
4767 // Rules: 1
4768 // Memory (8-bit): 15
4769 // Memory (32-bit): 24
4770 //---------------------------------------------------------------------------
4771 
4772 static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
4773  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
4774  {
4775  -21 /*fromYearTiny*/,
4776  -21 /*toYearTiny*/,
4777  10 /*inMonth*/,
4778  0 /*onDayOfWeek*/,
4779  1 /*onDayOfMonth*/,
4780  0 /*atTimeCode*/,
4781  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4782  0 /*deltaCode*/,
4783  'S' /*letter*/,
4784  },
4785 
4786 };
4787 
4788 
4789 
4790 const basic::ZonePolicy kPolicyTaiwan ACE_TIME_PROGMEM = {
4791  kZoneRulesTaiwan /*rules*/,
4792  nullptr /* letters */,
4793  1 /*numRules*/,
4794  0 /* numLetters */,
4795 };
4796 
4797 //---------------------------------------------------------------------------
4798 // Policy name: Thule
4799 // Rules: 5
4800 // Memory (8-bit): 51
4801 // Memory (32-bit): 72
4802 //---------------------------------------------------------------------------
4803 
4804 static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
4805  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4806  {
4807  -9 /*fromYearTiny*/,
4808  -8 /*toYearTiny*/,
4809  9 /*inMonth*/,
4810  7 /*onDayOfWeek*/,
4811  0 /*onDayOfMonth*/,
4812  8 /*atTimeCode*/,
4813  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4814  0 /*deltaCode*/,
4815  'S' /*letter*/,
4816  },
4817  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
4818  {
4819  -7 /*fromYearTiny*/,
4820  6 /*toYearTiny*/,
4821  4 /*inMonth*/,
4822  7 /*onDayOfWeek*/,
4823  1 /*onDayOfMonth*/,
4824  8 /*atTimeCode*/,
4825  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4826  4 /*deltaCode*/,
4827  'D' /*letter*/,
4828  },
4829  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4830  {
4831  -7 /*fromYearTiny*/,
4832  6 /*toYearTiny*/,
4833  10 /*inMonth*/,
4834  7 /*onDayOfWeek*/,
4835  0 /*onDayOfMonth*/,
4836  8 /*atTimeCode*/,
4837  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4838  0 /*deltaCode*/,
4839  'S' /*letter*/,
4840  },
4841  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4842  {
4843  7 /*fromYearTiny*/,
4844  126 /*toYearTiny*/,
4845  3 /*inMonth*/,
4846  7 /*onDayOfWeek*/,
4847  8 /*onDayOfMonth*/,
4848  8 /*atTimeCode*/,
4849  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4850  4 /*deltaCode*/,
4851  'D' /*letter*/,
4852  },
4853  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4854  {
4855  7 /*fromYearTiny*/,
4856  126 /*toYearTiny*/,
4857  11 /*inMonth*/,
4858  7 /*onDayOfWeek*/,
4859  1 /*onDayOfMonth*/,
4860  8 /*atTimeCode*/,
4861  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4862  0 /*deltaCode*/,
4863  'S' /*letter*/,
4864  },
4865 
4866 };
4867 
4868 
4869 
4870 const basic::ZonePolicy kPolicyThule ACE_TIME_PROGMEM = {
4871  kZoneRulesThule /*rules*/,
4872  nullptr /* letters */,
4873  5 /*numRules*/,
4874  0 /* numLetters */,
4875 };
4876 
4877 //---------------------------------------------------------------------------
4878 // Policy name: Tonga
4879 // Rules: 7
4880 // Memory (8-bit): 69
4881 // Memory (32-bit): 96
4882 //---------------------------------------------------------------------------
4883 
4884 static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
4885  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4886  {
4887  -127 /*fromYearTiny*/,
4888  -127 /*toYearTiny*/,
4889  1 /*inMonth*/,
4890  0 /*onDayOfWeek*/,
4891  1 /*onDayOfMonth*/,
4892  0 /*atTimeCode*/,
4893  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4894  0 /*deltaCode*/,
4895  '-' /*letter*/,
4896  },
4897  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4898  {
4899  -1 /*fromYearTiny*/,
4900  -1 /*toYearTiny*/,
4901  10 /*inMonth*/,
4902  0 /*onDayOfWeek*/,
4903  7 /*onDayOfMonth*/,
4904  8 /*atTimeCode*/,
4905  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4906  4 /*deltaCode*/,
4907  '-' /*letter*/,
4908  },
4909  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
4910  {
4911  0 /*fromYearTiny*/,
4912  0 /*toYearTiny*/,
4913  3 /*inMonth*/,
4914  0 /*onDayOfWeek*/,
4915  19 /*onDayOfMonth*/,
4916  8 /*atTimeCode*/,
4917  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4918  0 /*deltaCode*/,
4919  '-' /*letter*/,
4920  },
4921  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
4922  {
4923  0 /*fromYearTiny*/,
4924  1 /*toYearTiny*/,
4925  11 /*inMonth*/,
4926  7 /*onDayOfWeek*/,
4927  1 /*onDayOfMonth*/,
4928  8 /*atTimeCode*/,
4929  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4930  4 /*deltaCode*/,
4931  '-' /*letter*/,
4932  },
4933  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
4934  {
4935  1 /*fromYearTiny*/,
4936  2 /*toYearTiny*/,
4937  1 /*inMonth*/,
4938  7 /*onDayOfWeek*/,
4939  0 /*onDayOfMonth*/,
4940  8 /*atTimeCode*/,
4941  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4942  0 /*deltaCode*/,
4943  '-' /*letter*/,
4944  },
4945  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
4946  {
4947  16 /*fromYearTiny*/,
4948  16 /*toYearTiny*/,
4949  11 /*inMonth*/,
4950  7 /*onDayOfWeek*/,
4951  1 /*onDayOfMonth*/,
4952  8 /*atTimeCode*/,
4953  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4954  4 /*deltaCode*/,
4955  '-' /*letter*/,
4956  },
4957  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
4958  {
4959  17 /*fromYearTiny*/,
4960  17 /*toYearTiny*/,
4961  1 /*inMonth*/,
4962  7 /*onDayOfWeek*/,
4963  15 /*onDayOfMonth*/,
4964  12 /*atTimeCode*/,
4965  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4966  0 /*deltaCode*/,
4967  '-' /*letter*/,
4968  },
4969 
4970 };
4971 
4972 
4973 
4974 const basic::ZonePolicy kPolicyTonga ACE_TIME_PROGMEM = {
4975  kZoneRulesTonga /*rules*/,
4976  nullptr /* letters */,
4977  7 /*numRules*/,
4978  0 /* numLetters */,
4979 };
4980 
4981 //---------------------------------------------------------------------------
4982 // Policy name: Tunisia
4983 // Rules: 5
4984 // Memory (8-bit): 51
4985 // Memory (32-bit): 72
4986 //---------------------------------------------------------------------------
4987 
4988 static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
4989  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
4990  {
4991  -12 /*fromYearTiny*/,
4992  -10 /*toYearTiny*/,
4993  9 /*inMonth*/,
4994  7 /*onDayOfWeek*/,
4995  0 /*onDayOfMonth*/,
4996  0 /*atTimeCode*/,
4997  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4998  0 /*deltaCode*/,
4999  '-' /*letter*/,
5000  },
5001  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
5002  {
5003  5 /*fromYearTiny*/,
5004  5 /*toYearTiny*/,
5005  5 /*inMonth*/,
5006  0 /*onDayOfWeek*/,
5007  1 /*onDayOfMonth*/,
5008  0 /*atTimeCode*/,
5009  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5010  4 /*deltaCode*/,
5011  'S' /*letter*/,
5012  },
5013  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
5014  {
5015  5 /*fromYearTiny*/,
5016  5 /*toYearTiny*/,
5017  9 /*inMonth*/,
5018  0 /*onDayOfWeek*/,
5019  30 /*onDayOfMonth*/,
5020  4 /*atTimeCode*/,
5021  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5022  0 /*deltaCode*/,
5023  '-' /*letter*/,
5024  },
5025  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
5026  {
5027  6 /*fromYearTiny*/,
5028  8 /*toYearTiny*/,
5029  3 /*inMonth*/,
5030  7 /*onDayOfWeek*/,
5031  0 /*onDayOfMonth*/,
5032  8 /*atTimeCode*/,
5033  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5034  4 /*deltaCode*/,
5035  'S' /*letter*/,
5036  },
5037  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
5038  {
5039  6 /*fromYearTiny*/,
5040  8 /*toYearTiny*/,
5041  10 /*inMonth*/,
5042  7 /*onDayOfWeek*/,
5043  0 /*onDayOfMonth*/,
5044  8 /*atTimeCode*/,
5045  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5046  0 /*deltaCode*/,
5047  '-' /*letter*/,
5048  },
5049 
5050 };
5051 
5052 
5053 
5054 const basic::ZonePolicy kPolicyTunisia ACE_TIME_PROGMEM = {
5055  kZoneRulesTunisia /*rules*/,
5056  nullptr /* letters */,
5057  5 /*numRules*/,
5058  0 /* numLetters */,
5059 };
5060 
5061 //---------------------------------------------------------------------------
5062 // Policy name: US
5063 // Rules: 5
5064 // Memory (8-bit): 51
5065 // Memory (32-bit): 72
5066 //---------------------------------------------------------------------------
5067 
5068 static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
5069  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
5070  {
5071  -33 /*fromYearTiny*/,
5072  6 /*toYearTiny*/,
5073  10 /*inMonth*/,
5074  7 /*onDayOfWeek*/,
5075  0 /*onDayOfMonth*/,
5076  8 /*atTimeCode*/,
5077  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5078  0 /*deltaCode*/,
5079  'S' /*letter*/,
5080  },
5081  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
5082  {
5083  -24 /*fromYearTiny*/,
5084  -14 /*toYearTiny*/,
5085  4 /*inMonth*/,
5086  7 /*onDayOfWeek*/,
5087  0 /*onDayOfMonth*/,
5088  8 /*atTimeCode*/,
5089  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5090  4 /*deltaCode*/,
5091  'D' /*letter*/,
5092  },
5093  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
5094  {
5095  -13 /*fromYearTiny*/,
5096  6 /*toYearTiny*/,
5097  4 /*inMonth*/,
5098  7 /*onDayOfWeek*/,
5099  1 /*onDayOfMonth*/,
5100  8 /*atTimeCode*/,
5101  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5102  4 /*deltaCode*/,
5103  'D' /*letter*/,
5104  },
5105  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
5106  {
5107  7 /*fromYearTiny*/,
5108  126 /*toYearTiny*/,
5109  3 /*inMonth*/,
5110  7 /*onDayOfWeek*/,
5111  8 /*onDayOfMonth*/,
5112  8 /*atTimeCode*/,
5113  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5114  4 /*deltaCode*/,
5115  'D' /*letter*/,
5116  },
5117  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
5118  {
5119  7 /*fromYearTiny*/,
5120  126 /*toYearTiny*/,
5121  11 /*inMonth*/,
5122  7 /*onDayOfWeek*/,
5123  1 /*onDayOfMonth*/,
5124  8 /*atTimeCode*/,
5125  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5126  0 /*deltaCode*/,
5127  'S' /*letter*/,
5128  },
5129 
5130 };
5131 
5132 
5133 
5134 const basic::ZonePolicy kPolicyUS ACE_TIME_PROGMEM = {
5135  kZoneRulesUS /*rules*/,
5136  nullptr /* letters */,
5137  5 /*numRules*/,
5138  0 /* numLetters */,
5139 };
5140 
5141 //---------------------------------------------------------------------------
5142 // Policy name: Uruguay
5143 // Rules: 6
5144 // Memory (8-bit): 60
5145 // Memory (32-bit): 84
5146 //---------------------------------------------------------------------------
5147 
5148 static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
5149  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
5150  {
5151  -7 /*fromYearTiny*/,
5152  -7 /*toYearTiny*/,
5153  2 /*inMonth*/,
5154  0 /*onDayOfWeek*/,
5155  28 /*onDayOfMonth*/,
5156  0 /*atTimeCode*/,
5157  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5158  0 /*deltaCode*/,
5159  '-' /*letter*/,
5160  },
5161  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
5162  {
5163  4 /*fromYearTiny*/,
5164  4 /*toYearTiny*/,
5165  9 /*inMonth*/,
5166  0 /*onDayOfWeek*/,
5167  19 /*onDayOfMonth*/,
5168  0 /*atTimeCode*/,
5169  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5170  4 /*deltaCode*/,
5171  '-' /*letter*/,
5172  },
5173  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
5174  {
5175  5 /*fromYearTiny*/,
5176  5 /*toYearTiny*/,
5177  3 /*inMonth*/,
5178  0 /*onDayOfWeek*/,
5179  27 /*onDayOfMonth*/,
5180  8 /*atTimeCode*/,
5181  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5182  0 /*deltaCode*/,
5183  '-' /*letter*/,
5184  },
5185  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
5186  {
5187  5 /*fromYearTiny*/,
5188  5 /*toYearTiny*/,
5189  10 /*inMonth*/,
5190  0 /*onDayOfWeek*/,
5191  9 /*onDayOfMonth*/,
5192  8 /*atTimeCode*/,
5193  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5194  4 /*deltaCode*/,
5195  '-' /*letter*/,
5196  },
5197  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
5198  {
5199  6 /*fromYearTiny*/,
5200  15 /*toYearTiny*/,
5201  3 /*inMonth*/,
5202  7 /*onDayOfWeek*/,
5203  8 /*onDayOfMonth*/,
5204  8 /*atTimeCode*/,
5205  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5206  0 /*deltaCode*/,
5207  '-' /*letter*/,
5208  },
5209  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
5210  {
5211  6 /*fromYearTiny*/,
5212  14 /*toYearTiny*/,
5213  10 /*inMonth*/,
5214  7 /*onDayOfWeek*/,
5215  1 /*onDayOfMonth*/,
5216  8 /*atTimeCode*/,
5217  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5218  4 /*deltaCode*/,
5219  '-' /*letter*/,
5220  },
5221 
5222 };
5223 
5224 
5225 
5226 const basic::ZonePolicy kPolicyUruguay ACE_TIME_PROGMEM = {
5227  kZoneRulesUruguay /*rules*/,
5228  nullptr /* letters */,
5229  6 /*numRules*/,
5230  0 /* numLetters */,
5231 };
5232 
5233 //---------------------------------------------------------------------------
5234 // Policy name: Vanuatu
5235 // Rules: 1
5236 // Memory (8-bit): 15
5237 // Memory (32-bit): 24
5238 //---------------------------------------------------------------------------
5239 
5240 static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
5241  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
5242  {
5243  -8 /*fromYearTiny*/,
5244  -7 /*toYearTiny*/,
5245  1 /*inMonth*/,
5246  7 /*onDayOfWeek*/,
5247  23 /*onDayOfMonth*/,
5248  0 /*atTimeCode*/,
5249  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5250  0 /*deltaCode*/,
5251  '-' /*letter*/,
5252  },
5253 
5254 };
5255 
5256 
5257 
5258 const basic::ZonePolicy kPolicyVanuatu ACE_TIME_PROGMEM = {
5259  kZoneRulesVanuatu /*rules*/,
5260  nullptr /* letters */,
5261  1 /*numRules*/,
5262  0 /* numLetters */,
5263 };
5264 
5265 //---------------------------------------------------------------------------
5266 // Policy name: Winn
5267 // Rules: 3
5268 // Memory (8-bit): 33
5269 // Memory (32-bit): 48
5270 //---------------------------------------------------------------------------
5271 
5272 static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
5273  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
5274  {
5275  -34 /*fromYearTiny*/,
5276  -14 /*toYearTiny*/,
5277  4 /*inMonth*/,
5278  7 /*onDayOfWeek*/,
5279  0 /*onDayOfMonth*/,
5280  8 /*atTimeCode*/,
5281  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5282  4 /*deltaCode*/,
5283  'D' /*letter*/,
5284  },
5285  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
5286  {
5287  -34 /*fromYearTiny*/,
5288  5 /*toYearTiny*/,
5289  10 /*inMonth*/,
5290  7 /*onDayOfWeek*/,
5291  0 /*onDayOfMonth*/,
5292  8 /*atTimeCode*/,
5293  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5294  0 /*deltaCode*/,
5295  'S' /*letter*/,
5296  },
5297  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
5298  {
5299  -13 /*fromYearTiny*/,
5300  5 /*toYearTiny*/,
5301  4 /*inMonth*/,
5302  7 /*onDayOfWeek*/,
5303  1 /*onDayOfMonth*/,
5304  8 /*atTimeCode*/,
5305  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5306  4 /*deltaCode*/,
5307  'D' /*letter*/,
5308  },
5309 
5310 };
5311 
5312 
5313 
5314 const basic::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = {
5315  kZoneRulesWinn /*rules*/,
5316  nullptr /* letters */,
5317  3 /*numRules*/,
5318  0 /* numLetters */,
5319 };
5320 
5321 //---------------------------------------------------------------------------
5322 // Policy name: Zion
5323 // Rules: 24
5324 // Memory (8-bit): 222
5325 // Memory (32-bit): 300
5326 //---------------------------------------------------------------------------
5327 
5328 static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
5329  // Rule Zion 1998 only - Sep 6 0:00 0 S
5330  {
5331  -2 /*fromYearTiny*/,
5332  -2 /*toYearTiny*/,
5333  9 /*inMonth*/,
5334  0 /*onDayOfWeek*/,
5335  6 /*onDayOfMonth*/,
5336  0 /*atTimeCode*/,
5337  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5338  0 /*deltaCode*/,
5339  'S' /*letter*/,
5340  },
5341  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5342  {
5343  -1 /*fromYearTiny*/,
5344  -1 /*toYearTiny*/,
5345  4 /*inMonth*/,
5346  0 /*onDayOfWeek*/,
5347  2 /*onDayOfMonth*/,
5348  8 /*atTimeCode*/,
5349  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5350  4 /*deltaCode*/,
5351  'D' /*letter*/,
5352  },
5353  // Rule Zion 1999 only - Sep 3 2:00 0 S
5354  {
5355  -1 /*fromYearTiny*/,
5356  -1 /*toYearTiny*/,
5357  9 /*inMonth*/,
5358  0 /*onDayOfWeek*/,
5359  3 /*onDayOfMonth*/,
5360  8 /*atTimeCode*/,
5361  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5362  0 /*deltaCode*/,
5363  'S' /*letter*/,
5364  },
5365  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5366  {
5367  0 /*fromYearTiny*/,
5368  0 /*toYearTiny*/,
5369  4 /*inMonth*/,
5370  0 /*onDayOfWeek*/,
5371  14 /*onDayOfMonth*/,
5372  8 /*atTimeCode*/,
5373  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5374  4 /*deltaCode*/,
5375  'D' /*letter*/,
5376  },
5377  // Rule Zion 2000 only - Oct 6 1:00 0 S
5378  {
5379  0 /*fromYearTiny*/,
5380  0 /*toYearTiny*/,
5381  10 /*inMonth*/,
5382  0 /*onDayOfWeek*/,
5383  6 /*onDayOfMonth*/,
5384  4 /*atTimeCode*/,
5385  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5386  0 /*deltaCode*/,
5387  'S' /*letter*/,
5388  },
5389  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5390  {
5391  1 /*fromYearTiny*/,
5392  1 /*toYearTiny*/,
5393  4 /*inMonth*/,
5394  0 /*onDayOfWeek*/,
5395  9 /*onDayOfMonth*/,
5396  4 /*atTimeCode*/,
5397  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5398  4 /*deltaCode*/,
5399  'D' /*letter*/,
5400  },
5401  // Rule Zion 2001 only - Sep 24 1:00 0 S
5402  {
5403  1 /*fromYearTiny*/,
5404  1 /*toYearTiny*/,
5405  9 /*inMonth*/,
5406  0 /*onDayOfWeek*/,
5407  24 /*onDayOfMonth*/,
5408  4 /*atTimeCode*/,
5409  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5410  0 /*deltaCode*/,
5411  'S' /*letter*/,
5412  },
5413  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5414  {
5415  2 /*fromYearTiny*/,
5416  2 /*toYearTiny*/,
5417  3 /*inMonth*/,
5418  0 /*onDayOfWeek*/,
5419  29 /*onDayOfMonth*/,
5420  4 /*atTimeCode*/,
5421  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5422  4 /*deltaCode*/,
5423  'D' /*letter*/,
5424  },
5425  // Rule Zion 2002 only - Oct 7 1:00 0 S
5426  {
5427  2 /*fromYearTiny*/,
5428  2 /*toYearTiny*/,
5429  10 /*inMonth*/,
5430  0 /*onDayOfWeek*/,
5431  7 /*onDayOfMonth*/,
5432  4 /*atTimeCode*/,
5433  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5434  0 /*deltaCode*/,
5435  'S' /*letter*/,
5436  },
5437  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5438  {
5439  3 /*fromYearTiny*/,
5440  3 /*toYearTiny*/,
5441  3 /*inMonth*/,
5442  0 /*onDayOfWeek*/,
5443  28 /*onDayOfMonth*/,
5444  4 /*atTimeCode*/,
5445  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5446  4 /*deltaCode*/,
5447  'D' /*letter*/,
5448  },
5449  // Rule Zion 2003 only - Oct 3 1:00 0 S
5450  {
5451  3 /*fromYearTiny*/,
5452  3 /*toYearTiny*/,
5453  10 /*inMonth*/,
5454  0 /*onDayOfWeek*/,
5455  3 /*onDayOfMonth*/,
5456  4 /*atTimeCode*/,
5457  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5458  0 /*deltaCode*/,
5459  'S' /*letter*/,
5460  },
5461  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5462  {
5463  4 /*fromYearTiny*/,
5464  4 /*toYearTiny*/,
5465  4 /*inMonth*/,
5466  0 /*onDayOfWeek*/,
5467  7 /*onDayOfMonth*/,
5468  4 /*atTimeCode*/,
5469  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5470  4 /*deltaCode*/,
5471  'D' /*letter*/,
5472  },
5473  // Rule Zion 2004 only - Sep 22 1:00 0 S
5474  {
5475  4 /*fromYearTiny*/,
5476  4 /*toYearTiny*/,
5477  9 /*inMonth*/,
5478  0 /*onDayOfWeek*/,
5479  22 /*onDayOfMonth*/,
5480  4 /*atTimeCode*/,
5481  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5482  0 /*deltaCode*/,
5483  'S' /*letter*/,
5484  },
5485  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
5486  {
5487  5 /*fromYearTiny*/,
5488  12 /*toYearTiny*/,
5489  4 /*inMonth*/,
5490  5 /*onDayOfWeek*/,
5491  -1 /*onDayOfMonth*/,
5492  8 /*atTimeCode*/,
5493  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5494  4 /*deltaCode*/,
5495  'D' /*letter*/,
5496  },
5497  // Rule Zion 2005 only - Oct 9 2:00 0 S
5498  {
5499  5 /*fromYearTiny*/,
5500  5 /*toYearTiny*/,
5501  10 /*inMonth*/,
5502  0 /*onDayOfWeek*/,
5503  9 /*onDayOfMonth*/,
5504  8 /*atTimeCode*/,
5505  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5506  0 /*deltaCode*/,
5507  'S' /*letter*/,
5508  },
5509  // Rule Zion 2006 only - Oct 1 2:00 0 S
5510  {
5511  6 /*fromYearTiny*/,
5512  6 /*toYearTiny*/,
5513  10 /*inMonth*/,
5514  0 /*onDayOfWeek*/,
5515  1 /*onDayOfMonth*/,
5516  8 /*atTimeCode*/,
5517  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5518  0 /*deltaCode*/,
5519  'S' /*letter*/,
5520  },
5521  // Rule Zion 2007 only - Sep 16 2:00 0 S
5522  {
5523  7 /*fromYearTiny*/,
5524  7 /*toYearTiny*/,
5525  9 /*inMonth*/,
5526  0 /*onDayOfWeek*/,
5527  16 /*onDayOfMonth*/,
5528  8 /*atTimeCode*/,
5529  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5530  0 /*deltaCode*/,
5531  'S' /*letter*/,
5532  },
5533  // Rule Zion 2008 only - Oct 5 2:00 0 S
5534  {
5535  8 /*fromYearTiny*/,
5536  8 /*toYearTiny*/,
5537  10 /*inMonth*/,
5538  0 /*onDayOfWeek*/,
5539  5 /*onDayOfMonth*/,
5540  8 /*atTimeCode*/,
5541  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5542  0 /*deltaCode*/,
5543  'S' /*letter*/,
5544  },
5545  // Rule Zion 2009 only - Sep 27 2:00 0 S
5546  {
5547  9 /*fromYearTiny*/,
5548  9 /*toYearTiny*/,
5549  9 /*inMonth*/,
5550  0 /*onDayOfWeek*/,
5551  27 /*onDayOfMonth*/,
5552  8 /*atTimeCode*/,
5553  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5554  0 /*deltaCode*/,
5555  'S' /*letter*/,
5556  },
5557  // Rule Zion 2010 only - Sep 12 2:00 0 S
5558  {
5559  10 /*fromYearTiny*/,
5560  10 /*toYearTiny*/,
5561  9 /*inMonth*/,
5562  0 /*onDayOfWeek*/,
5563  12 /*onDayOfMonth*/,
5564  8 /*atTimeCode*/,
5565  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5566  0 /*deltaCode*/,
5567  'S' /*letter*/,
5568  },
5569  // Rule Zion 2011 only - Oct 2 2:00 0 S
5570  {
5571  11 /*fromYearTiny*/,
5572  11 /*toYearTiny*/,
5573  10 /*inMonth*/,
5574  0 /*onDayOfWeek*/,
5575  2 /*onDayOfMonth*/,
5576  8 /*atTimeCode*/,
5577  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5578  0 /*deltaCode*/,
5579  'S' /*letter*/,
5580  },
5581  // Rule Zion 2012 only - Sep 23 2:00 0 S
5582  {
5583  12 /*fromYearTiny*/,
5584  12 /*toYearTiny*/,
5585  9 /*inMonth*/,
5586  0 /*onDayOfWeek*/,
5587  23 /*onDayOfMonth*/,
5588  8 /*atTimeCode*/,
5589  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5590  0 /*deltaCode*/,
5591  'S' /*letter*/,
5592  },
5593  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5594  {
5595  13 /*fromYearTiny*/,
5596  126 /*toYearTiny*/,
5597  3 /*inMonth*/,
5598  5 /*onDayOfWeek*/,
5599  23 /*onDayOfMonth*/,
5600  8 /*atTimeCode*/,
5601  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5602  4 /*deltaCode*/,
5603  'D' /*letter*/,
5604  },
5605  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5606  {
5607  13 /*fromYearTiny*/,
5608  126 /*toYearTiny*/,
5609  10 /*inMonth*/,
5610  7 /*onDayOfWeek*/,
5611  0 /*onDayOfMonth*/,
5612  8 /*atTimeCode*/,
5613  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5614  0 /*deltaCode*/,
5615  'S' /*letter*/,
5616  },
5617 
5618 };
5619 
5620 
5621 
5622 const basic::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = {
5623  kZoneRulesZion /*rules*/,
5624  nullptr /* letters */,
5625  24 /*numRules*/,
5626  0 /* numLetters */,
5627 };
5628 
5629 
5630 
5631 }
5632 }
static const uint8_t kSuffixW
Represents &#39;w&#39; or wall time.
Definition: ZoneContext.h:13
static const uint8_t kSuffixU
Represents &#39;u&#39; or UTC time.
Definition: ZoneContext.h:19
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...
static const uint8_t kSuffixS
Represents &#39;s&#39; or standard time.
Definition: ZoneContext.h:16