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