AceTime  1.11.6
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/zonedbx
6 // --tz_version 2022e
7 // --action zonedb
8 // --language arduino
9 // --scope extended
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/2022e
26 //
27 // Policies: 83
28 // Rules: 530
29 // Letter Size (bytes): 23
30 // Total Memory 8-bit (bytes): 5303
31 // Total Memory 32-bit (bytes): 7403
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 zonedbx {
40 
41 //---------------------------------------------------------------------------
42 // Policy name: AN
43 // Rules: 9
44 // Memory (8-bit): 87
45 // Memory (32-bit): 120
46 //---------------------------------------------------------------------------
47 
48 static const extended::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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
155  'D' /*letter*/,
156  },
157 
158 };
159 
160 
161 
162 const extended::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 extended::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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
187  'S' /*letter*/,
188  },
189 
190 };
191 
192 
193 
194 const extended::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 extended::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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
291  'D' /*letter*/,
292  },
293 
294 };
295 
296 
297 
298 const extended::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 extended::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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
407  'S' /*letter*/,
408  },
409 
410 };
411 
412 
413 
414 const extended::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 extended::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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
535  'D' /*letter*/,
536  },
537 
538 };
539 
540 
541 
542 const extended::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 extended::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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
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  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
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  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
603  'D' /*letter*/,
604  },
605 
606 };
607 
608 
609 
610 const extended::ZonePolicy kPolicyAW ACE_TIME_PROGMEM = {
611  kZoneRulesAW /*rules*/,
612  nullptr /*letters*/,
613  4 /*numRules*/,
614  0 /*numLetters*/,
615 };
616 
617 //---------------------------------------------------------------------------
618 // Policy name: Arg
619 // Rules: 6
620 // Memory (8-bit): 60
621 // Memory (32-bit): 84
622 //---------------------------------------------------------------------------
623 
624 static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = {
625  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
626  {
627  -11 /*fromYearTiny*/,
628  -7 /*toYearTiny*/,
629  3 /*inMonth*/,
630  7 /*onDayOfWeek*/,
631  1 /*onDayOfMonth*/,
632  0 /*atTimeCode*/,
633  0 /*atTimeModifier (kSuffixW + minute=0)*/,
634  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
635  '-' /*letter*/,
636  },
637  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
638  {
639  -1 /*fromYearTiny*/,
640  -1 /*toYearTiny*/,
641  10 /*inMonth*/,
642  7 /*onDayOfWeek*/,
643  1 /*onDayOfMonth*/,
644  0 /*atTimeCode*/,
645  0 /*atTimeModifier (kSuffixW + minute=0)*/,
646  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
647  '-' /*letter*/,
648  },
649  // Rule Arg 2000 only - Mar 3 0:00 0 -
650  {
651  0 /*fromYearTiny*/,
652  0 /*toYearTiny*/,
653  3 /*inMonth*/,
654  0 /*onDayOfWeek*/,
655  3 /*onDayOfMonth*/,
656  0 /*atTimeCode*/,
657  0 /*atTimeModifier (kSuffixW + minute=0)*/,
658  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
659  '-' /*letter*/,
660  },
661  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
662  {
663  7 /*fromYearTiny*/,
664  7 /*toYearTiny*/,
665  12 /*inMonth*/,
666  0 /*onDayOfWeek*/,
667  30 /*onDayOfMonth*/,
668  0 /*atTimeCode*/,
669  0 /*atTimeModifier (kSuffixW + minute=0)*/,
670  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
671  '-' /*letter*/,
672  },
673  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
674  {
675  8 /*fromYearTiny*/,
676  9 /*toYearTiny*/,
677  3 /*inMonth*/,
678  7 /*onDayOfWeek*/,
679  15 /*onDayOfMonth*/,
680  0 /*atTimeCode*/,
681  0 /*atTimeModifier (kSuffixW + minute=0)*/,
682  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
683  '-' /*letter*/,
684  },
685  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
686  {
687  8 /*fromYearTiny*/,
688  8 /*toYearTiny*/,
689  10 /*inMonth*/,
690  7 /*onDayOfWeek*/,
691  15 /*onDayOfMonth*/,
692  0 /*atTimeCode*/,
693  0 /*atTimeModifier (kSuffixW + minute=0)*/,
694  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
695  '-' /*letter*/,
696  },
697 
698 };
699 
700 
701 
702 const extended::ZonePolicy kPolicyArg ACE_TIME_PROGMEM = {
703  kZoneRulesArg /*rules*/,
704  nullptr /*letters*/,
705  6 /*numRules*/,
706  0 /*numLetters*/,
707 };
708 
709 //---------------------------------------------------------------------------
710 // Policy name: Armenia
711 // Rules: 3
712 // Memory (8-bit): 33
713 // Memory (32-bit): 48
714 //---------------------------------------------------------------------------
715 
716 static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
717  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
718  {
719  -127 /*fromYearTiny*/,
720  -127 /*toYearTiny*/,
721  1 /*inMonth*/,
722  0 /*onDayOfWeek*/,
723  1 /*onDayOfMonth*/,
724  0 /*atTimeCode*/,
725  0 /*atTimeModifier (kSuffixW + minute=0)*/,
726  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
727  '-' /*letter*/,
728  },
729  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
730  {
731  11 /*fromYearTiny*/,
732  11 /*toYearTiny*/,
733  3 /*inMonth*/,
734  7 /*onDayOfWeek*/,
735  0 /*onDayOfMonth*/,
736  8 /*atTimeCode*/,
737  16 /*atTimeModifier (kSuffixS + minute=0)*/,
738  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
739  '-' /*letter*/,
740  },
741  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
742  {
743  11 /*fromYearTiny*/,
744  11 /*toYearTiny*/,
745  10 /*inMonth*/,
746  7 /*onDayOfWeek*/,
747  0 /*onDayOfMonth*/,
748  8 /*atTimeCode*/,
749  16 /*atTimeModifier (kSuffixS + minute=0)*/,
750  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
751  '-' /*letter*/,
752  },
753 
754 };
755 
756 
757 
758 const extended::ZonePolicy kPolicyArmenia ACE_TIME_PROGMEM = {
759  kZoneRulesArmenia /*rules*/,
760  nullptr /*letters*/,
761  3 /*numRules*/,
762  0 /*numLetters*/,
763 };
764 
765 //---------------------------------------------------------------------------
766 // Policy name: Aus
767 // Rules: 1
768 // Memory (8-bit): 15
769 // Memory (32-bit): 24
770 //---------------------------------------------------------------------------
771 
772 static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
773  // Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
774  {
775  -57 /*fromYearTiny*/,
776  -56 /*toYearTiny*/,
777  3 /*inMonth*/,
778  7 /*onDayOfWeek*/,
779  0 /*onDayOfMonth*/,
780  8 /*atTimeCode*/,
781  16 /*atTimeModifier (kSuffixS + minute=0)*/,
782  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
783  'S' /*letter*/,
784  },
785 
786 };
787 
788 
789 
790 const extended::ZonePolicy kPolicyAus ACE_TIME_PROGMEM = {
791  kZoneRulesAus /*rules*/,
792  nullptr /*letters*/,
793  1 /*numRules*/,
794  0 /*numLetters*/,
795 };
796 
797 //---------------------------------------------------------------------------
798 // Policy name: Azer
799 // Rules: 2
800 // Memory (8-bit): 24
801 // Memory (32-bit): 36
802 //---------------------------------------------------------------------------
803 
804 static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
805  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
806  {
807  -3 /*fromYearTiny*/,
808  15 /*toYearTiny*/,
809  3 /*inMonth*/,
810  7 /*onDayOfWeek*/,
811  0 /*onDayOfMonth*/,
812  16 /*atTimeCode*/,
813  0 /*atTimeModifier (kSuffixW + minute=0)*/,
814  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
815  '-' /*letter*/,
816  },
817  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
818  {
819  -3 /*fromYearTiny*/,
820  15 /*toYearTiny*/,
821  10 /*inMonth*/,
822  7 /*onDayOfWeek*/,
823  0 /*onDayOfMonth*/,
824  20 /*atTimeCode*/,
825  0 /*atTimeModifier (kSuffixW + minute=0)*/,
826  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
827  '-' /*letter*/,
828  },
829 
830 };
831 
832 
833 
834 const extended::ZonePolicy kPolicyAzer ACE_TIME_PROGMEM = {
835  kZoneRulesAzer /*rules*/,
836  nullptr /*letters*/,
837  2 /*numRules*/,
838  0 /*numLetters*/,
839 };
840 
841 //---------------------------------------------------------------------------
842 // Policy name: Barb
843 // Rules: 1
844 // Memory (8-bit): 15
845 // Memory (32-bit): 24
846 //---------------------------------------------------------------------------
847 
848 static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
849  // Rule Barb 1980 only - Sep 25 2:00 0 S
850  {
851  -20 /*fromYearTiny*/,
852  -20 /*toYearTiny*/,
853  9 /*inMonth*/,
854  0 /*onDayOfWeek*/,
855  25 /*onDayOfMonth*/,
856  8 /*atTimeCode*/,
857  0 /*atTimeModifier (kSuffixW + minute=0)*/,
858  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
859  'S' /*letter*/,
860  },
861 
862 };
863 
864 
865 
866 const extended::ZonePolicy kPolicyBarb ACE_TIME_PROGMEM = {
867  kZoneRulesBarb /*rules*/,
868  nullptr /*letters*/,
869  1 /*numRules*/,
870  0 /*numLetters*/,
871 };
872 
873 //---------------------------------------------------------------------------
874 // Policy name: Belize
875 // Rules: 1
876 // Memory (8-bit): 21
877 // Memory (32-bit): 32
878 //---------------------------------------------------------------------------
879 
880 static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
881  // Rule Belize 1983 only - Feb 12 0:00 0 CST
882  {
883  -17 /*fromYearTiny*/,
884  -17 /*toYearTiny*/,
885  2 /*inMonth*/,
886  0 /*onDayOfWeek*/,
887  12 /*onDayOfMonth*/,
888  0 /*atTimeCode*/,
889  0 /*atTimeModifier (kSuffixW + minute=0)*/,
890  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
891  0 /*letter (index to "CST")*/,
892  },
893 
894 };
895 
896 static const char* const kLettersBelize[] ACE_TIME_PROGMEM = {
897  /*0*/ "CST",
898 
899 };
900 
901 
902 const extended::ZonePolicy kPolicyBelize ACE_TIME_PROGMEM = {
903  kZoneRulesBelize /*rules*/,
904  kLettersBelize /*letters*/,
905  1 /*numRules*/,
906  1 /*numLetters*/,
907 };
908 
909 //---------------------------------------------------------------------------
910 // Policy name: Brazil
911 // Rules: 20
912 // Memory (8-bit): 186
913 // Memory (32-bit): 252
914 //---------------------------------------------------------------------------
915 
916 static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
917  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
918  {
919  -2 /*fromYearTiny*/,
920  -2 /*toYearTiny*/,
921  10 /*inMonth*/,
922  0 /*onDayOfWeek*/,
923  11 /*onDayOfMonth*/,
924  0 /*atTimeCode*/,
925  0 /*atTimeModifier (kSuffixW + minute=0)*/,
926  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
927  '-' /*letter*/,
928  },
929  // Rule Brazil 1999 only - Feb 21 0:00 0 -
930  {
931  -1 /*fromYearTiny*/,
932  -1 /*toYearTiny*/,
933  2 /*inMonth*/,
934  0 /*onDayOfWeek*/,
935  21 /*onDayOfMonth*/,
936  0 /*atTimeCode*/,
937  0 /*atTimeModifier (kSuffixW + minute=0)*/,
938  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
939  '-' /*letter*/,
940  },
941  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
942  {
943  -1 /*fromYearTiny*/,
944  -1 /*toYearTiny*/,
945  10 /*inMonth*/,
946  0 /*onDayOfWeek*/,
947  3 /*onDayOfMonth*/,
948  0 /*atTimeCode*/,
949  0 /*atTimeModifier (kSuffixW + minute=0)*/,
950  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
951  '-' /*letter*/,
952  },
953  // Rule Brazil 2000 only - Feb 27 0:00 0 -
954  {
955  0 /*fromYearTiny*/,
956  0 /*toYearTiny*/,
957  2 /*inMonth*/,
958  0 /*onDayOfWeek*/,
959  27 /*onDayOfMonth*/,
960  0 /*atTimeCode*/,
961  0 /*atTimeModifier (kSuffixW + minute=0)*/,
962  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
963  '-' /*letter*/,
964  },
965  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
966  {
967  0 /*fromYearTiny*/,
968  1 /*toYearTiny*/,
969  10 /*inMonth*/,
970  7 /*onDayOfWeek*/,
971  8 /*onDayOfMonth*/,
972  0 /*atTimeCode*/,
973  0 /*atTimeModifier (kSuffixW + minute=0)*/,
974  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
975  '-' /*letter*/,
976  },
977  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
978  {
979  1 /*fromYearTiny*/,
980  6 /*toYearTiny*/,
981  2 /*inMonth*/,
982  7 /*onDayOfWeek*/,
983  15 /*onDayOfMonth*/,
984  0 /*atTimeCode*/,
985  0 /*atTimeModifier (kSuffixW + minute=0)*/,
986  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
987  '-' /*letter*/,
988  },
989  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
990  {
991  2 /*fromYearTiny*/,
992  2 /*toYearTiny*/,
993  11 /*inMonth*/,
994  0 /*onDayOfWeek*/,
995  3 /*onDayOfMonth*/,
996  0 /*atTimeCode*/,
997  0 /*atTimeModifier (kSuffixW + minute=0)*/,
998  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
999  '-' /*letter*/,
1000  },
1001  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
1002  {
1003  3 /*fromYearTiny*/,
1004  3 /*toYearTiny*/,
1005  10 /*inMonth*/,
1006  0 /*onDayOfWeek*/,
1007  19 /*onDayOfMonth*/,
1008  0 /*atTimeCode*/,
1009  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1010  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1011  '-' /*letter*/,
1012  },
1013  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
1014  {
1015  4 /*fromYearTiny*/,
1016  4 /*toYearTiny*/,
1017  11 /*inMonth*/,
1018  0 /*onDayOfWeek*/,
1019  2 /*onDayOfMonth*/,
1020  0 /*atTimeCode*/,
1021  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1022  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1023  '-' /*letter*/,
1024  },
1025  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1026  {
1027  5 /*fromYearTiny*/,
1028  5 /*toYearTiny*/,
1029  10 /*inMonth*/,
1030  0 /*onDayOfWeek*/,
1031  16 /*onDayOfMonth*/,
1032  0 /*atTimeCode*/,
1033  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1034  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1035  '-' /*letter*/,
1036  },
1037  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1038  {
1039  6 /*fromYearTiny*/,
1040  6 /*toYearTiny*/,
1041  11 /*inMonth*/,
1042  0 /*onDayOfWeek*/,
1043  5 /*onDayOfMonth*/,
1044  0 /*atTimeCode*/,
1045  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1046  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1047  '-' /*letter*/,
1048  },
1049  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1050  {
1051  7 /*fromYearTiny*/,
1052  7 /*toYearTiny*/,
1053  2 /*inMonth*/,
1054  0 /*onDayOfWeek*/,
1055  25 /*onDayOfMonth*/,
1056  0 /*atTimeCode*/,
1057  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1058  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1059  '-' /*letter*/,
1060  },
1061  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1062  {
1063  7 /*fromYearTiny*/,
1064  7 /*toYearTiny*/,
1065  10 /*inMonth*/,
1066  7 /*onDayOfWeek*/,
1067  8 /*onDayOfMonth*/,
1068  0 /*atTimeCode*/,
1069  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1070  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1071  '-' /*letter*/,
1072  },
1073  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1074  {
1075  8 /*fromYearTiny*/,
1076  17 /*toYearTiny*/,
1077  10 /*inMonth*/,
1078  7 /*onDayOfWeek*/,
1079  15 /*onDayOfMonth*/,
1080  0 /*atTimeCode*/,
1081  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1082  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1083  '-' /*letter*/,
1084  },
1085  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1086  {
1087  8 /*fromYearTiny*/,
1088  11 /*toYearTiny*/,
1089  2 /*inMonth*/,
1090  7 /*onDayOfWeek*/,
1091  15 /*onDayOfMonth*/,
1092  0 /*atTimeCode*/,
1093  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1094  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1095  '-' /*letter*/,
1096  },
1097  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1098  {
1099  12 /*fromYearTiny*/,
1100  12 /*toYearTiny*/,
1101  2 /*inMonth*/,
1102  7 /*onDayOfWeek*/,
1103  22 /*onDayOfMonth*/,
1104  0 /*atTimeCode*/,
1105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1106  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1107  '-' /*letter*/,
1108  },
1109  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1110  {
1111  13 /*fromYearTiny*/,
1112  14 /*toYearTiny*/,
1113  2 /*inMonth*/,
1114  7 /*onDayOfWeek*/,
1115  15 /*onDayOfMonth*/,
1116  0 /*atTimeCode*/,
1117  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1119  '-' /*letter*/,
1120  },
1121  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1122  {
1123  15 /*fromYearTiny*/,
1124  15 /*toYearTiny*/,
1125  2 /*inMonth*/,
1126  7 /*onDayOfWeek*/,
1127  22 /*onDayOfMonth*/,
1128  0 /*atTimeCode*/,
1129  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1130  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1131  '-' /*letter*/,
1132  },
1133  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
1134  {
1135  16 /*fromYearTiny*/,
1136  19 /*toYearTiny*/,
1137  2 /*inMonth*/,
1138  7 /*onDayOfWeek*/,
1139  15 /*onDayOfMonth*/,
1140  0 /*atTimeCode*/,
1141  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1143  '-' /*letter*/,
1144  },
1145  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
1146  {
1147  18 /*fromYearTiny*/,
1148  18 /*toYearTiny*/,
1149  11 /*inMonth*/,
1150  7 /*onDayOfWeek*/,
1151  1 /*onDayOfMonth*/,
1152  0 /*atTimeCode*/,
1153  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1154  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1155  '-' /*letter*/,
1156  },
1157 
1158 };
1159 
1160 
1161 
1162 const extended::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = {
1163  kZoneRulesBrazil /*rules*/,
1164  nullptr /*letters*/,
1165  20 /*numRules*/,
1166  0 /*numLetters*/,
1167 };
1168 
1169 //---------------------------------------------------------------------------
1170 // Policy name: C_Eur
1171 // Rules: 3
1172 // Memory (8-bit): 33
1173 // Memory (32-bit): 48
1174 //---------------------------------------------------------------------------
1175 
1176 static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1177  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1178  {
1179  -21 /*fromYearTiny*/,
1180  -5 /*toYearTiny*/,
1181  9 /*inMonth*/,
1182  7 /*onDayOfWeek*/,
1183  0 /*onDayOfMonth*/,
1184  8 /*atTimeCode*/,
1185  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1186  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1187  '-' /*letter*/,
1188  },
1189  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1190  {
1191  -19 /*fromYearTiny*/,
1192  126 /*toYearTiny*/,
1193  3 /*inMonth*/,
1194  7 /*onDayOfWeek*/,
1195  0 /*onDayOfMonth*/,
1196  8 /*atTimeCode*/,
1197  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1198  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1199  'S' /*letter*/,
1200  },
1201  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1202  {
1203  -4 /*fromYearTiny*/,
1204  126 /*toYearTiny*/,
1205  10 /*inMonth*/,
1206  7 /*onDayOfWeek*/,
1207  0 /*onDayOfMonth*/,
1208  8 /*atTimeCode*/,
1209  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1210  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1211  '-' /*letter*/,
1212  },
1213 
1214 };
1215 
1216 
1217 
1218 const extended::ZonePolicy kPolicyC_Eur ACE_TIME_PROGMEM = {
1219  kZoneRulesC_Eur /*rules*/,
1220  nullptr /*letters*/,
1221  3 /*numRules*/,
1222  0 /*numLetters*/,
1223 };
1224 
1225 //---------------------------------------------------------------------------
1226 // Policy name: CO
1227 // Rules: 1
1228 // Memory (8-bit): 15
1229 // Memory (32-bit): 24
1230 //---------------------------------------------------------------------------
1231 
1232 static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1233  // Rule CO 1993 only - Apr 4 0:00 0 -
1234  {
1235  -7 /*fromYearTiny*/,
1236  -7 /*toYearTiny*/,
1237  4 /*inMonth*/,
1238  0 /*onDayOfWeek*/,
1239  4 /*onDayOfMonth*/,
1240  0 /*atTimeCode*/,
1241  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1242  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1243  '-' /*letter*/,
1244  },
1245 
1246 };
1247 
1248 
1249 
1250 const extended::ZonePolicy kPolicyCO ACE_TIME_PROGMEM = {
1251  kZoneRulesCO /*rules*/,
1252  nullptr /*letters*/,
1253  1 /*numRules*/,
1254  0 /*numLetters*/,
1255 };
1256 
1257 //---------------------------------------------------------------------------
1258 // Policy name: CR
1259 // Rules: 1
1260 // Memory (8-bit): 15
1261 // Memory (32-bit): 24
1262 //---------------------------------------------------------------------------
1263 
1264 static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1265  // Rule CR 1992 only - Mar 15 0:00 0 S
1266  {
1267  -8 /*fromYearTiny*/,
1268  -8 /*toYearTiny*/,
1269  3 /*inMonth*/,
1270  0 /*onDayOfWeek*/,
1271  15 /*onDayOfMonth*/,
1272  0 /*atTimeCode*/,
1273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1274  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1275  'S' /*letter*/,
1276  },
1277 
1278 };
1279 
1280 
1281 
1282 const extended::ZonePolicy kPolicyCR ACE_TIME_PROGMEM = {
1283  kZoneRulesCR /*rules*/,
1284  nullptr /*letters*/,
1285  1 /*numRules*/,
1286  0 /*numLetters*/,
1287 };
1288 
1289 //---------------------------------------------------------------------------
1290 // Policy name: Canada
1291 // Rules: 5
1292 // Memory (8-bit): 51
1293 // Memory (32-bit): 72
1294 //---------------------------------------------------------------------------
1295 
1296 static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1297  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1298  {
1299  -26 /*fromYearTiny*/,
1300  -14 /*toYearTiny*/,
1301  4 /*inMonth*/,
1302  7 /*onDayOfWeek*/,
1303  0 /*onDayOfMonth*/,
1304  8 /*atTimeCode*/,
1305  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1306  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1307  'D' /*letter*/,
1308  },
1309  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1310  {
1311  -26 /*fromYearTiny*/,
1312  6 /*toYearTiny*/,
1313  10 /*inMonth*/,
1314  7 /*onDayOfWeek*/,
1315  0 /*onDayOfMonth*/,
1316  8 /*atTimeCode*/,
1317  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1318  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1319  'S' /*letter*/,
1320  },
1321  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1322  {
1323  -13 /*fromYearTiny*/,
1324  6 /*toYearTiny*/,
1325  4 /*inMonth*/,
1326  7 /*onDayOfWeek*/,
1327  1 /*onDayOfMonth*/,
1328  8 /*atTimeCode*/,
1329  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1330  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1331  'D' /*letter*/,
1332  },
1333  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1334  {
1335  7 /*fromYearTiny*/,
1336  126 /*toYearTiny*/,
1337  3 /*inMonth*/,
1338  7 /*onDayOfWeek*/,
1339  8 /*onDayOfMonth*/,
1340  8 /*atTimeCode*/,
1341  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1342  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1343  'D' /*letter*/,
1344  },
1345  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1346  {
1347  7 /*fromYearTiny*/,
1348  126 /*toYearTiny*/,
1349  11 /*inMonth*/,
1350  7 /*onDayOfWeek*/,
1351  1 /*onDayOfMonth*/,
1352  8 /*atTimeCode*/,
1353  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1354  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1355  'S' /*letter*/,
1356  },
1357 
1358 };
1359 
1360 
1361 
1362 const extended::ZonePolicy kPolicyCanada ACE_TIME_PROGMEM = {
1363  kZoneRulesCanada /*rules*/,
1364  nullptr /*letters*/,
1365  5 /*numRules*/,
1366  0 /*numLetters*/,
1367 };
1368 
1369 //---------------------------------------------------------------------------
1370 // Policy name: Chatham
1371 // Rules: 5
1372 // Memory (8-bit): 51
1373 // Memory (32-bit): 72
1374 //---------------------------------------------------------------------------
1375 
1376 static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1377  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1378  {
1379  -11 /*fromYearTiny*/,
1380  -11 /*toYearTiny*/,
1381  10 /*inMonth*/,
1382  7 /*onDayOfWeek*/,
1383  8 /*onDayOfMonth*/,
1384  11 /*atTimeCode*/,
1385  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1386  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1387  '-' /*letter*/,
1388  },
1389  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1390  {
1391  -10 /*fromYearTiny*/,
1392  6 /*toYearTiny*/,
1393  10 /*inMonth*/,
1394  7 /*onDayOfWeek*/,
1395  1 /*onDayOfMonth*/,
1396  11 /*atTimeCode*/,
1397  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1398  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1399  '-' /*letter*/,
1400  },
1401  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1402  {
1403  -10 /*fromYearTiny*/,
1404  7 /*toYearTiny*/,
1405  3 /*inMonth*/,
1406  7 /*onDayOfWeek*/,
1407  15 /*onDayOfMonth*/,
1408  11 /*atTimeCode*/,
1409  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1410  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1411  '-' /*letter*/,
1412  },
1413  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1414  {
1415  7 /*fromYearTiny*/,
1416  126 /*toYearTiny*/,
1417  9 /*inMonth*/,
1418  7 /*onDayOfWeek*/,
1419  0 /*onDayOfMonth*/,
1420  11 /*atTimeCode*/,
1421  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1422  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1423  '-' /*letter*/,
1424  },
1425  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1426  {
1427  8 /*fromYearTiny*/,
1428  126 /*toYearTiny*/,
1429  4 /*inMonth*/,
1430  7 /*onDayOfWeek*/,
1431  1 /*onDayOfMonth*/,
1432  11 /*atTimeCode*/,
1433  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1434  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1435  '-' /*letter*/,
1436  },
1437 
1438 };
1439 
1440 
1441 
1442 const extended::ZonePolicy kPolicyChatham ACE_TIME_PROGMEM = {
1443  kZoneRulesChatham /*rules*/,
1444  nullptr /*letters*/,
1445  5 /*numRules*/,
1446  0 /*numLetters*/,
1447 };
1448 
1449 //---------------------------------------------------------------------------
1450 // Policy name: Chile
1451 // Rules: 17
1452 // Memory (8-bit): 159
1453 // Memory (32-bit): 216
1454 //---------------------------------------------------------------------------
1455 
1456 static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1457  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1458  {
1459  -2 /*fromYearTiny*/,
1460  -2 /*toYearTiny*/,
1461  9 /*inMonth*/,
1462  0 /*onDayOfWeek*/,
1463  27 /*onDayOfMonth*/,
1464  16 /*atTimeCode*/,
1465  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1466  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1467  '-' /*letter*/,
1468  },
1469  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1470  {
1471  -1 /*fromYearTiny*/,
1472  -1 /*toYearTiny*/,
1473  4 /*inMonth*/,
1474  0 /*onDayOfWeek*/,
1475  4 /*onDayOfMonth*/,
1476  12 /*atTimeCode*/,
1477  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1478  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1479  '-' /*letter*/,
1480  },
1481  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1482  {
1483  -1 /*fromYearTiny*/,
1484  10 /*toYearTiny*/,
1485  10 /*inMonth*/,
1486  7 /*onDayOfWeek*/,
1487  9 /*onDayOfMonth*/,
1488  16 /*atTimeCode*/,
1489  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1490  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1491  '-' /*letter*/,
1492  },
1493  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1494  {
1495  0 /*fromYearTiny*/,
1496  7 /*toYearTiny*/,
1497  3 /*inMonth*/,
1498  7 /*onDayOfWeek*/,
1499  9 /*onDayOfMonth*/,
1500  12 /*atTimeCode*/,
1501  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1502  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1503  '-' /*letter*/,
1504  },
1505  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1506  {
1507  8 /*fromYearTiny*/,
1508  8 /*toYearTiny*/,
1509  3 /*inMonth*/,
1510  0 /*onDayOfWeek*/,
1511  30 /*onDayOfMonth*/,
1512  12 /*atTimeCode*/,
1513  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1514  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1515  '-' /*letter*/,
1516  },
1517  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1518  {
1519  9 /*fromYearTiny*/,
1520  9 /*toYearTiny*/,
1521  3 /*inMonth*/,
1522  7 /*onDayOfWeek*/,
1523  9 /*onDayOfMonth*/,
1524  12 /*atTimeCode*/,
1525  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1526  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1527  '-' /*letter*/,
1528  },
1529  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1530  {
1531  10 /*fromYearTiny*/,
1532  10 /*toYearTiny*/,
1533  4 /*inMonth*/,
1534  7 /*onDayOfWeek*/,
1535  1 /*onDayOfMonth*/,
1536  12 /*atTimeCode*/,
1537  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1538  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1539  '-' /*letter*/,
1540  },
1541  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1542  {
1543  11 /*fromYearTiny*/,
1544  11 /*toYearTiny*/,
1545  5 /*inMonth*/,
1546  7 /*onDayOfWeek*/,
1547  2 /*onDayOfMonth*/,
1548  12 /*atTimeCode*/,
1549  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1550  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1551  '-' /*letter*/,
1552  },
1553  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1554  {
1555  11 /*fromYearTiny*/,
1556  11 /*toYearTiny*/,
1557  8 /*inMonth*/,
1558  7 /*onDayOfWeek*/,
1559  16 /*onDayOfMonth*/,
1560  16 /*atTimeCode*/,
1561  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1562  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1563  '-' /*letter*/,
1564  },
1565  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1566  {
1567  12 /*fromYearTiny*/,
1568  14 /*toYearTiny*/,
1569  4 /*inMonth*/,
1570  7 /*onDayOfWeek*/,
1571  23 /*onDayOfMonth*/,
1572  12 /*atTimeCode*/,
1573  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1574  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1575  '-' /*letter*/,
1576  },
1577  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1578  {
1579  12 /*fromYearTiny*/,
1580  14 /*toYearTiny*/,
1581  9 /*inMonth*/,
1582  7 /*onDayOfWeek*/,
1583  2 /*onDayOfMonth*/,
1584  16 /*atTimeCode*/,
1585  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1586  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1587  '-' /*letter*/,
1588  },
1589  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1590  {
1591  16 /*fromYearTiny*/,
1592  18 /*toYearTiny*/,
1593  5 /*inMonth*/,
1594  7 /*onDayOfWeek*/,
1595  9 /*onDayOfMonth*/,
1596  12 /*atTimeCode*/,
1597  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1598  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1599  '-' /*letter*/,
1600  },
1601  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1602  {
1603  16 /*fromYearTiny*/,
1604  18 /*toYearTiny*/,
1605  8 /*inMonth*/,
1606  7 /*onDayOfWeek*/,
1607  9 /*onDayOfMonth*/,
1608  16 /*atTimeCode*/,
1609  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1610  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1611  '-' /*letter*/,
1612  },
1613  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1614  {
1615  19 /*fromYearTiny*/,
1616  126 /*toYearTiny*/,
1617  4 /*inMonth*/,
1618  7 /*onDayOfWeek*/,
1619  2 /*onDayOfMonth*/,
1620  12 /*atTimeCode*/,
1621  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1622  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1623  '-' /*letter*/,
1624  },
1625  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
1626  {
1627  19 /*fromYearTiny*/,
1628  21 /*toYearTiny*/,
1629  9 /*inMonth*/,
1630  7 /*onDayOfWeek*/,
1631  2 /*onDayOfMonth*/,
1632  16 /*atTimeCode*/,
1633  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1634  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1635  '-' /*letter*/,
1636  },
1637  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
1638  {
1639  22 /*fromYearTiny*/,
1640  22 /*toYearTiny*/,
1641  9 /*inMonth*/,
1642  7 /*onDayOfWeek*/,
1643  9 /*onDayOfMonth*/,
1644  16 /*atTimeCode*/,
1645  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1646  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1647  '-' /*letter*/,
1648  },
1649  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
1650  {
1651  23 /*fromYearTiny*/,
1652  126 /*toYearTiny*/,
1653  9 /*inMonth*/,
1654  7 /*onDayOfWeek*/,
1655  2 /*onDayOfMonth*/,
1656  16 /*atTimeCode*/,
1657  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1658  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1659  '-' /*letter*/,
1660  },
1661 
1662 };
1663 
1664 
1665 
1666 const extended::ZonePolicy kPolicyChile ACE_TIME_PROGMEM = {
1667  kZoneRulesChile /*rules*/,
1668  nullptr /*letters*/,
1669  17 /*numRules*/,
1670  0 /*numLetters*/,
1671 };
1672 
1673 //---------------------------------------------------------------------------
1674 // Policy name: Cook
1675 // Rules: 1
1676 // Memory (8-bit): 15
1677 // Memory (32-bit): 24
1678 //---------------------------------------------------------------------------
1679 
1680 static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1681  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1682  {
1683  -21 /*fromYearTiny*/,
1684  -9 /*toYearTiny*/,
1685  3 /*inMonth*/,
1686  7 /*onDayOfWeek*/,
1687  1 /*onDayOfMonth*/,
1688  0 /*atTimeCode*/,
1689  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1690  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1691  '-' /*letter*/,
1692  },
1693 
1694 };
1695 
1696 
1697 
1698 const extended::ZonePolicy kPolicyCook ACE_TIME_PROGMEM = {
1699  kZoneRulesCook /*rules*/,
1700  nullptr /*letters*/,
1701  1 /*numRules*/,
1702  0 /*numLetters*/,
1703 };
1704 
1705 //---------------------------------------------------------------------------
1706 // Policy name: Cuba
1707 // Rules: 14
1708 // Memory (8-bit): 132
1709 // Memory (32-bit): 180
1710 //---------------------------------------------------------------------------
1711 
1712 static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1713  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1714  {
1715  -3 /*fromYearTiny*/,
1716  -3 /*toYearTiny*/,
1717  10 /*inMonth*/,
1718  0 /*onDayOfWeek*/,
1719  12 /*onDayOfMonth*/,
1720  0 /*atTimeCode*/,
1721  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1722  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1723  'S' /*letter*/,
1724  },
1725  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1726  {
1727  -2 /*fromYearTiny*/,
1728  -1 /*toYearTiny*/,
1729  3 /*inMonth*/,
1730  7 /*onDayOfWeek*/,
1731  0 /*onDayOfMonth*/,
1732  0 /*atTimeCode*/,
1733  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1734  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1735  'D' /*letter*/,
1736  },
1737  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1738  {
1739  -2 /*fromYearTiny*/,
1740  3 /*toYearTiny*/,
1741  10 /*inMonth*/,
1742  7 /*onDayOfWeek*/,
1743  0 /*onDayOfMonth*/,
1744  0 /*atTimeCode*/,
1745  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1746  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1747  'S' /*letter*/,
1748  },
1749  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1750  {
1751  0 /*fromYearTiny*/,
1752  3 /*toYearTiny*/,
1753  4 /*inMonth*/,
1754  7 /*onDayOfWeek*/,
1755  1 /*onDayOfMonth*/,
1756  0 /*atTimeCode*/,
1757  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1758  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1759  'D' /*letter*/,
1760  },
1761  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1762  {
1763  4 /*fromYearTiny*/,
1764  4 /*toYearTiny*/,
1765  3 /*inMonth*/,
1766  7 /*onDayOfWeek*/,
1767  0 /*onDayOfMonth*/,
1768  0 /*atTimeCode*/,
1769  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1770  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1771  'D' /*letter*/,
1772  },
1773  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1774  {
1775  6 /*fromYearTiny*/,
1776  10 /*toYearTiny*/,
1777  10 /*inMonth*/,
1778  7 /*onDayOfWeek*/,
1779  0 /*onDayOfMonth*/,
1780  0 /*atTimeCode*/,
1781  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1782  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1783  'S' /*letter*/,
1784  },
1785  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1786  {
1787  7 /*fromYearTiny*/,
1788  7 /*toYearTiny*/,
1789  3 /*inMonth*/,
1790  7 /*onDayOfWeek*/,
1791  8 /*onDayOfMonth*/,
1792  0 /*atTimeCode*/,
1793  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1794  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1795  'D' /*letter*/,
1796  },
1797  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1798  {
1799  8 /*fromYearTiny*/,
1800  8 /*toYearTiny*/,
1801  3 /*inMonth*/,
1802  7 /*onDayOfWeek*/,
1803  15 /*onDayOfMonth*/,
1804  0 /*atTimeCode*/,
1805  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1806  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1807  'D' /*letter*/,
1808  },
1809  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1810  {
1811  9 /*fromYearTiny*/,
1812  10 /*toYearTiny*/,
1813  3 /*inMonth*/,
1814  7 /*onDayOfWeek*/,
1815  8 /*onDayOfMonth*/,
1816  0 /*atTimeCode*/,
1817  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1818  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1819  'D' /*letter*/,
1820  },
1821  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1822  {
1823  11 /*fromYearTiny*/,
1824  11 /*toYearTiny*/,
1825  3 /*inMonth*/,
1826  7 /*onDayOfWeek*/,
1827  15 /*onDayOfMonth*/,
1828  0 /*atTimeCode*/,
1829  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1830  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1831  'D' /*letter*/,
1832  },
1833  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1834  {
1835  11 /*fromYearTiny*/,
1836  11 /*toYearTiny*/,
1837  11 /*inMonth*/,
1838  0 /*onDayOfWeek*/,
1839  13 /*onDayOfMonth*/,
1840  0 /*atTimeCode*/,
1841  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1842  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1843  'S' /*letter*/,
1844  },
1845  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1846  {
1847  12 /*fromYearTiny*/,
1848  12 /*toYearTiny*/,
1849  4 /*inMonth*/,
1850  0 /*onDayOfWeek*/,
1851  1 /*onDayOfMonth*/,
1852  0 /*atTimeCode*/,
1853  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1854  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1855  'D' /*letter*/,
1856  },
1857  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1858  {
1859  12 /*fromYearTiny*/,
1860  126 /*toYearTiny*/,
1861  11 /*inMonth*/,
1862  7 /*onDayOfWeek*/,
1863  1 /*onDayOfMonth*/,
1864  0 /*atTimeCode*/,
1865  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1866  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1867  'S' /*letter*/,
1868  },
1869  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1870  {
1871  13 /*fromYearTiny*/,
1872  126 /*toYearTiny*/,
1873  3 /*inMonth*/,
1874  7 /*onDayOfWeek*/,
1875  8 /*onDayOfMonth*/,
1876  0 /*atTimeCode*/,
1877  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1878  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1879  'D' /*letter*/,
1880  },
1881 
1882 };
1883 
1884 
1885 
1886 const extended::ZonePolicy kPolicyCuba ACE_TIME_PROGMEM = {
1887  kZoneRulesCuba /*rules*/,
1888  nullptr /*letters*/,
1889  14 /*numRules*/,
1890  0 /*numLetters*/,
1891 };
1892 
1893 //---------------------------------------------------------------------------
1894 // Policy name: Dhaka
1895 // Rules: 3
1896 // Memory (8-bit): 33
1897 // Memory (32-bit): 48
1898 //---------------------------------------------------------------------------
1899 
1900 static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1901  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1902  {
1903  -127 /*fromYearTiny*/,
1904  -127 /*toYearTiny*/,
1905  1 /*inMonth*/,
1906  0 /*onDayOfWeek*/,
1907  1 /*onDayOfMonth*/,
1908  0 /*atTimeCode*/,
1909  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1910  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1911  '-' /*letter*/,
1912  },
1913  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1914  {
1915  9 /*fromYearTiny*/,
1916  9 /*toYearTiny*/,
1917  6 /*inMonth*/,
1918  0 /*onDayOfWeek*/,
1919  19 /*onDayOfMonth*/,
1920  92 /*atTimeCode*/,
1921  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1922  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1923  '-' /*letter*/,
1924  },
1925  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1926  {
1927  9 /*fromYearTiny*/,
1928  9 /*toYearTiny*/,
1929  12 /*inMonth*/,
1930  0 /*onDayOfWeek*/,
1931  31 /*onDayOfMonth*/,
1932  96 /*atTimeCode*/,
1933  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1934  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1935  '-' /*letter*/,
1936  },
1937 
1938 };
1939 
1940 
1941 
1942 const extended::ZonePolicy kPolicyDhaka ACE_TIME_PROGMEM = {
1943  kZoneRulesDhaka /*rules*/,
1944  nullptr /*letters*/,
1945  3 /*numRules*/,
1946  0 /*numLetters*/,
1947 };
1948 
1949 //---------------------------------------------------------------------------
1950 // Policy name: E_EurAsia
1951 // Rules: 3
1952 // Memory (8-bit): 33
1953 // Memory (32-bit): 48
1954 //---------------------------------------------------------------------------
1955 
1956 static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = {
1957  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
1958  {
1959  -19 /*fromYearTiny*/,
1960  126 /*toYearTiny*/,
1961  3 /*inMonth*/,
1962  7 /*onDayOfWeek*/,
1963  0 /*onDayOfMonth*/,
1964  0 /*atTimeCode*/,
1965  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1966  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1967  '-' /*letter*/,
1968  },
1969  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
1970  {
1971  -21 /*fromYearTiny*/,
1972  -5 /*toYearTiny*/,
1973  9 /*inMonth*/,
1974  7 /*onDayOfWeek*/,
1975  0 /*onDayOfMonth*/,
1976  0 /*atTimeCode*/,
1977  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1978  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1979  '-' /*letter*/,
1980  },
1981  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
1982  {
1983  -4 /*fromYearTiny*/,
1984  126 /*toYearTiny*/,
1985  10 /*inMonth*/,
1986  7 /*onDayOfWeek*/,
1987  0 /*onDayOfMonth*/,
1988  0 /*atTimeCode*/,
1989  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1990  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1991  '-' /*letter*/,
1992  },
1993 
1994 };
1995 
1996 
1997 
1998 const extended::ZonePolicy kPolicyE_EurAsia ACE_TIME_PROGMEM = {
1999  kZoneRulesE_EurAsia /*rules*/,
2000  nullptr /*letters*/,
2001  3 /*numRules*/,
2002  0 /*numLetters*/,
2003 };
2004 
2005 //---------------------------------------------------------------------------
2006 // Policy name: EU
2007 // Rules: 3
2008 // Memory (8-bit): 33
2009 // Memory (32-bit): 48
2010 //---------------------------------------------------------------------------
2011 
2012 static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
2013  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2014  {
2015  -21 /*fromYearTiny*/,
2016  -5 /*toYearTiny*/,
2017  9 /*inMonth*/,
2018  7 /*onDayOfWeek*/,
2019  0 /*onDayOfMonth*/,
2020  4 /*atTimeCode*/,
2021  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2022  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2023  '-' /*letter*/,
2024  },
2025  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2026  {
2027  -19 /*fromYearTiny*/,
2028  126 /*toYearTiny*/,
2029  3 /*inMonth*/,
2030  7 /*onDayOfWeek*/,
2031  0 /*onDayOfMonth*/,
2032  4 /*atTimeCode*/,
2033  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2034  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2035  'S' /*letter*/,
2036  },
2037  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2038  {
2039  -4 /*fromYearTiny*/,
2040  126 /*toYearTiny*/,
2041  10 /*inMonth*/,
2042  7 /*onDayOfWeek*/,
2043  0 /*onDayOfMonth*/,
2044  4 /*atTimeCode*/,
2045  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2046  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2047  '-' /*letter*/,
2048  },
2049 
2050 };
2051 
2052 
2053 
2054 const extended::ZonePolicy kPolicyEU ACE_TIME_PROGMEM = {
2055  kZoneRulesEU /*rules*/,
2056  nullptr /*letters*/,
2057  3 /*numRules*/,
2058  0 /*numLetters*/,
2059 };
2060 
2061 //---------------------------------------------------------------------------
2062 // Policy name: EUAsia
2063 // Rules: 3
2064 // Memory (8-bit): 33
2065 // Memory (32-bit): 48
2066 //---------------------------------------------------------------------------
2067 
2068 static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
2069  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2070  {
2071  -19 /*fromYearTiny*/,
2072  126 /*toYearTiny*/,
2073  3 /*inMonth*/,
2074  7 /*onDayOfWeek*/,
2075  0 /*onDayOfMonth*/,
2076  4 /*atTimeCode*/,
2077  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2078  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2079  'S' /*letter*/,
2080  },
2081  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2082  {
2083  -21 /*fromYearTiny*/,
2084  -5 /*toYearTiny*/,
2085  9 /*inMonth*/,
2086  7 /*onDayOfWeek*/,
2087  0 /*onDayOfMonth*/,
2088  4 /*atTimeCode*/,
2089  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2090  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2091  '-' /*letter*/,
2092  },
2093  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2094  {
2095  -4 /*fromYearTiny*/,
2096  126 /*toYearTiny*/,
2097  10 /*inMonth*/,
2098  7 /*onDayOfWeek*/,
2099  0 /*onDayOfMonth*/,
2100  4 /*atTimeCode*/,
2101  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2102  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2103  '-' /*letter*/,
2104  },
2105 
2106 };
2107 
2108 
2109 
2110 const extended::ZonePolicy kPolicyEUAsia ACE_TIME_PROGMEM = {
2111  kZoneRulesEUAsia /*rules*/,
2112  nullptr /*letters*/,
2113  3 /*numRules*/,
2114  0 /*numLetters*/,
2115 };
2116 
2117 //---------------------------------------------------------------------------
2118 // Policy name: Ecuador
2119 // Rules: 1
2120 // Memory (8-bit): 15
2121 // Memory (32-bit): 24
2122 //---------------------------------------------------------------------------
2123 
2124 static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2125  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
2126  {
2127  -7 /*fromYearTiny*/,
2128  -7 /*toYearTiny*/,
2129  2 /*inMonth*/,
2130  0 /*onDayOfWeek*/,
2131  5 /*onDayOfMonth*/,
2132  0 /*atTimeCode*/,
2133  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2134  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2135  '-' /*letter*/,
2136  },
2137 
2138 };
2139 
2140 
2141 
2142 const extended::ZonePolicy kPolicyEcuador ACE_TIME_PROGMEM = {
2143  kZoneRulesEcuador /*rules*/,
2144  nullptr /*letters*/,
2145  1 /*numRules*/,
2146  0 /*numLetters*/,
2147 };
2148 
2149 //---------------------------------------------------------------------------
2150 // Policy name: Egypt
2151 // Rules: 14
2152 // Memory (8-bit): 132
2153 // Memory (32-bit): 180
2154 //---------------------------------------------------------------------------
2155 
2156 static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = {
2157  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2158  {
2159  -34 /*fromYearTiny*/,
2160  -6 /*toYearTiny*/,
2161  10 /*inMonth*/,
2162  0 /*onDayOfWeek*/,
2163  1 /*onDayOfMonth*/,
2164  12 /*atTimeCode*/,
2165  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2166  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2167  '-' /*letter*/,
2168  },
2169  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2170  {
2171  -5 /*fromYearTiny*/,
2172  10 /*toYearTiny*/,
2173  4 /*inMonth*/,
2174  5 /*onDayOfWeek*/,
2175  0 /*onDayOfMonth*/,
2176  0 /*atTimeCode*/,
2177  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2178  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2179  'S' /*letter*/,
2180  },
2181  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2182  {
2183  -5 /*fromYearTiny*/,
2184  5 /*toYearTiny*/,
2185  9 /*inMonth*/,
2186  4 /*onDayOfWeek*/,
2187  0 /*onDayOfMonth*/,
2188  96 /*atTimeCode*/,
2189  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2190  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2191  '-' /*letter*/,
2192  },
2193  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2194  {
2195  6 /*fromYearTiny*/,
2196  6 /*toYearTiny*/,
2197  9 /*inMonth*/,
2198  0 /*onDayOfWeek*/,
2199  21 /*onDayOfMonth*/,
2200  96 /*atTimeCode*/,
2201  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2202  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2203  '-' /*letter*/,
2204  },
2205  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2206  {
2207  7 /*fromYearTiny*/,
2208  7 /*toYearTiny*/,
2209  9 /*inMonth*/,
2210  4 /*onDayOfWeek*/,
2211  1 /*onDayOfMonth*/,
2212  96 /*atTimeCode*/,
2213  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2214  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2215  '-' /*letter*/,
2216  },
2217  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2218  {
2219  8 /*fromYearTiny*/,
2220  8 /*toYearTiny*/,
2221  8 /*inMonth*/,
2222  4 /*onDayOfWeek*/,
2223  0 /*onDayOfMonth*/,
2224  96 /*atTimeCode*/,
2225  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2226  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2227  '-' /*letter*/,
2228  },
2229  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2230  {
2231  9 /*fromYearTiny*/,
2232  9 /*toYearTiny*/,
2233  8 /*inMonth*/,
2234  0 /*onDayOfWeek*/,
2235  20 /*onDayOfMonth*/,
2236  96 /*atTimeCode*/,
2237  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2238  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2239  '-' /*letter*/,
2240  },
2241  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2242  {
2243  10 /*fromYearTiny*/,
2244  10 /*toYearTiny*/,
2245  8 /*inMonth*/,
2246  0 /*onDayOfWeek*/,
2247  10 /*onDayOfMonth*/,
2248  96 /*atTimeCode*/,
2249  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2250  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2251  '-' /*letter*/,
2252  },
2253  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2254  {
2255  10 /*fromYearTiny*/,
2256  10 /*toYearTiny*/,
2257  9 /*inMonth*/,
2258  0 /*onDayOfWeek*/,
2259  9 /*onDayOfMonth*/,
2260  96 /*atTimeCode*/,
2261  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2262  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2263  'S' /*letter*/,
2264  },
2265  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2266  {
2267  10 /*fromYearTiny*/,
2268  10 /*toYearTiny*/,
2269  9 /*inMonth*/,
2270  4 /*onDayOfWeek*/,
2271  0 /*onDayOfMonth*/,
2272  96 /*atTimeCode*/,
2273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2274  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2275  '-' /*letter*/,
2276  },
2277  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2278  {
2279  14 /*fromYearTiny*/,
2280  14 /*toYearTiny*/,
2281  5 /*inMonth*/,
2282  0 /*onDayOfWeek*/,
2283  15 /*onDayOfMonth*/,
2284  96 /*atTimeCode*/,
2285  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2286  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2287  'S' /*letter*/,
2288  },
2289  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2290  {
2291  14 /*fromYearTiny*/,
2292  14 /*toYearTiny*/,
2293  6 /*inMonth*/,
2294  0 /*onDayOfWeek*/,
2295  26 /*onDayOfMonth*/,
2296  96 /*atTimeCode*/,
2297  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2298  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2299  '-' /*letter*/,
2300  },
2301  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2302  {
2303  14 /*fromYearTiny*/,
2304  14 /*toYearTiny*/,
2305  7 /*inMonth*/,
2306  0 /*onDayOfWeek*/,
2307  31 /*onDayOfMonth*/,
2308  96 /*atTimeCode*/,
2309  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2310  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2311  'S' /*letter*/,
2312  },
2313  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2314  {
2315  14 /*fromYearTiny*/,
2316  14 /*toYearTiny*/,
2317  9 /*inMonth*/,
2318  4 /*onDayOfWeek*/,
2319  0 /*onDayOfMonth*/,
2320  96 /*atTimeCode*/,
2321  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2322  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2323  '-' /*letter*/,
2324  },
2325 
2326 };
2327 
2328 
2329 
2330 const extended::ZonePolicy kPolicyEgypt ACE_TIME_PROGMEM = {
2331  kZoneRulesEgypt /*rules*/,
2332  nullptr /*letters*/,
2333  14 /*numRules*/,
2334  0 /*numLetters*/,
2335 };
2336 
2337 //---------------------------------------------------------------------------
2338 // Policy name: Eire
2339 // Rules: 3
2340 // Memory (8-bit): 33
2341 // Memory (32-bit): 48
2342 //---------------------------------------------------------------------------
2343 
2344 static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2345  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2346  {
2347  -19 /*fromYearTiny*/,
2348  126 /*toYearTiny*/,
2349  3 /*inMonth*/,
2350  7 /*onDayOfWeek*/,
2351  0 /*onDayOfMonth*/,
2352  4 /*atTimeCode*/,
2353  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2354  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2355  '-' /*letter*/,
2356  },
2357  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2358  {
2359  -10 /*fromYearTiny*/,
2360  -5 /*toYearTiny*/,
2361  10 /*inMonth*/,
2362  7 /*onDayOfWeek*/,
2363  22 /*onDayOfMonth*/,
2364  4 /*atTimeCode*/,
2365  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2366  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2367  '-' /*letter*/,
2368  },
2369  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2370  {
2371  -4 /*fromYearTiny*/,
2372  126 /*toYearTiny*/,
2373  10 /*inMonth*/,
2374  7 /*onDayOfWeek*/,
2375  0 /*onDayOfMonth*/,
2376  4 /*atTimeCode*/,
2377  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2378  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2379  '-' /*letter*/,
2380  },
2381 
2382 };
2383 
2384 
2385 
2386 const extended::ZonePolicy kPolicyEire ACE_TIME_PROGMEM = {
2387  kZoneRulesEire /*rules*/,
2388  nullptr /*letters*/,
2389  3 /*numRules*/,
2390  0 /*numLetters*/,
2391 };
2392 
2393 //---------------------------------------------------------------------------
2394 // Policy name: Falk
2395 // Rules: 5
2396 // Memory (8-bit): 51
2397 // Memory (32-bit): 72
2398 //---------------------------------------------------------------------------
2399 
2400 static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = {
2401  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2402  {
2403  -16 /*fromYearTiny*/,
2404  -15 /*toYearTiny*/,
2405  4 /*inMonth*/,
2406  7 /*onDayOfWeek*/,
2407  0 /*onDayOfMonth*/,
2408  0 /*atTimeCode*/,
2409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2410  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2411  '-' /*letter*/,
2412  },
2413  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2414  {
2415  -15 /*fromYearTiny*/,
2416  0 /*toYearTiny*/,
2417  9 /*inMonth*/,
2418  7 /*onDayOfWeek*/,
2419  9 /*onDayOfMonth*/,
2420  0 /*atTimeCode*/,
2421  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2422  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2423  '-' /*letter*/,
2424  },
2425  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2426  {
2427  -14 /*fromYearTiny*/,
2428  0 /*toYearTiny*/,
2429  4 /*inMonth*/,
2430  7 /*onDayOfWeek*/,
2431  16 /*onDayOfMonth*/,
2432  0 /*atTimeCode*/,
2433  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2434  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2435  '-' /*letter*/,
2436  },
2437  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2438  {
2439  1 /*fromYearTiny*/,
2440  10 /*toYearTiny*/,
2441  4 /*inMonth*/,
2442  7 /*onDayOfWeek*/,
2443  15 /*onDayOfMonth*/,
2444  8 /*atTimeCode*/,
2445  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2446  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2447  '-' /*letter*/,
2448  },
2449  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2450  {
2451  1 /*fromYearTiny*/,
2452  10 /*toYearTiny*/,
2453  9 /*inMonth*/,
2454  7 /*onDayOfWeek*/,
2455  1 /*onDayOfMonth*/,
2456  8 /*atTimeCode*/,
2457  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2458  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2459  '-' /*letter*/,
2460  },
2461 
2462 };
2463 
2464 
2465 
2466 const extended::ZonePolicy kPolicyFalk ACE_TIME_PROGMEM = {
2467  kZoneRulesFalk /*rules*/,
2468  nullptr /*letters*/,
2469  5 /*numRules*/,
2470  0 /*numLetters*/,
2471 };
2472 
2473 //---------------------------------------------------------------------------
2474 // Policy name: Fiji
2475 // Rules: 14
2476 // Memory (8-bit): 132
2477 // Memory (32-bit): 180
2478 //---------------------------------------------------------------------------
2479 
2480 static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2481  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2482  {
2483  -2 /*fromYearTiny*/,
2484  -1 /*toYearTiny*/,
2485  11 /*inMonth*/,
2486  7 /*onDayOfWeek*/,
2487  1 /*onDayOfMonth*/,
2488  8 /*atTimeCode*/,
2489  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2490  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2491  '-' /*letter*/,
2492  },
2493  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2494  {
2495  -1 /*fromYearTiny*/,
2496  0 /*toYearTiny*/,
2497  2 /*inMonth*/,
2498  7 /*onDayOfWeek*/,
2499  0 /*onDayOfMonth*/,
2500  12 /*atTimeCode*/,
2501  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2502  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2503  '-' /*letter*/,
2504  },
2505  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2506  {
2507  9 /*fromYearTiny*/,
2508  9 /*toYearTiny*/,
2509  11 /*inMonth*/,
2510  0 /*onDayOfWeek*/,
2511  29 /*onDayOfMonth*/,
2512  8 /*atTimeCode*/,
2513  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2514  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2515  '-' /*letter*/,
2516  },
2517  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2518  {
2519  10 /*fromYearTiny*/,
2520  10 /*toYearTiny*/,
2521  3 /*inMonth*/,
2522  7 /*onDayOfWeek*/,
2523  0 /*onDayOfMonth*/,
2524  12 /*atTimeCode*/,
2525  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2526  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2527  '-' /*letter*/,
2528  },
2529  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2530  {
2531  10 /*fromYearTiny*/,
2532  13 /*toYearTiny*/,
2533  10 /*inMonth*/,
2534  7 /*onDayOfWeek*/,
2535  21 /*onDayOfMonth*/,
2536  8 /*atTimeCode*/,
2537  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2538  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2539  '-' /*letter*/,
2540  },
2541  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2542  {
2543  11 /*fromYearTiny*/,
2544  11 /*toYearTiny*/,
2545  3 /*inMonth*/,
2546  7 /*onDayOfWeek*/,
2547  1 /*onDayOfMonth*/,
2548  12 /*atTimeCode*/,
2549  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2550  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2551  '-' /*letter*/,
2552  },
2553  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2554  {
2555  12 /*fromYearTiny*/,
2556  13 /*toYearTiny*/,
2557  1 /*inMonth*/,
2558  7 /*onDayOfWeek*/,
2559  18 /*onDayOfMonth*/,
2560  12 /*atTimeCode*/,
2561  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2562  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2563  '-' /*letter*/,
2564  },
2565  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2566  {
2567  14 /*fromYearTiny*/,
2568  14 /*toYearTiny*/,
2569  1 /*inMonth*/,
2570  7 /*onDayOfWeek*/,
2571  18 /*onDayOfMonth*/,
2572  8 /*atTimeCode*/,
2573  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2574  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2575  '-' /*letter*/,
2576  },
2577  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2578  {
2579  14 /*fromYearTiny*/,
2580  18 /*toYearTiny*/,
2581  11 /*inMonth*/,
2582  7 /*onDayOfWeek*/,
2583  1 /*onDayOfMonth*/,
2584  8 /*atTimeCode*/,
2585  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2586  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2587  '-' /*letter*/,
2588  },
2589  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2590  {
2591  15 /*fromYearTiny*/,
2592  21 /*toYearTiny*/,
2593  1 /*inMonth*/,
2594  7 /*onDayOfWeek*/,
2595  12 /*onDayOfMonth*/,
2596  12 /*atTimeCode*/,
2597  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2598  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2599  '-' /*letter*/,
2600  },
2601  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2602  {
2603  19 /*fromYearTiny*/,
2604  19 /*toYearTiny*/,
2605  11 /*inMonth*/,
2606  7 /*onDayOfWeek*/,
2607  8 /*onDayOfMonth*/,
2608  8 /*atTimeCode*/,
2609  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2610  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2611  '-' /*letter*/,
2612  },
2613  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2614  {
2615  20 /*fromYearTiny*/,
2616  20 /*toYearTiny*/,
2617  12 /*inMonth*/,
2618  0 /*onDayOfWeek*/,
2619  20 /*onDayOfMonth*/,
2620  8 /*atTimeCode*/,
2621  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2622  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2623  '-' /*letter*/,
2624  },
2625  // Rule Fiji 2022 max - Nov Sun>=8 2:00 1:00 -
2626  {
2627  22 /*fromYearTiny*/,
2628  126 /*toYearTiny*/,
2629  11 /*inMonth*/,
2630  7 /*onDayOfWeek*/,
2631  8 /*onDayOfMonth*/,
2632  8 /*atTimeCode*/,
2633  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2634  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2635  '-' /*letter*/,
2636  },
2637  // Rule Fiji 2023 max - Jan Sun>=12 3:00 0 -
2638  {
2639  23 /*fromYearTiny*/,
2640  126 /*toYearTiny*/,
2641  1 /*inMonth*/,
2642  7 /*onDayOfWeek*/,
2643  12 /*onDayOfMonth*/,
2644  12 /*atTimeCode*/,
2645  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2646  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2647  '-' /*letter*/,
2648  },
2649 
2650 };
2651 
2652 
2653 
2654 const extended::ZonePolicy kPolicyFiji ACE_TIME_PROGMEM = {
2655  kZoneRulesFiji /*rules*/,
2656  nullptr /*letters*/,
2657  14 /*numRules*/,
2658  0 /*numLetters*/,
2659 };
2660 
2661 //---------------------------------------------------------------------------
2662 // Policy name: Guam
2663 // Rules: 1
2664 // Memory (8-bit): 15
2665 // Memory (32-bit): 24
2666 //---------------------------------------------------------------------------
2667 
2668 static const extended::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = {
2669  // Rule Guam 1977 only - Aug 28 2:00 0 S
2670  {
2671  -23 /*fromYearTiny*/,
2672  -23 /*toYearTiny*/,
2673  8 /*inMonth*/,
2674  0 /*onDayOfWeek*/,
2675  28 /*onDayOfMonth*/,
2676  8 /*atTimeCode*/,
2677  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2678  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2679  'S' /*letter*/,
2680  },
2681 
2682 };
2683 
2684 
2685 
2686 const extended::ZonePolicy kPolicyGuam ACE_TIME_PROGMEM = {
2687  kZoneRulesGuam /*rules*/,
2688  nullptr /*letters*/,
2689  1 /*numRules*/,
2690  0 /*numLetters*/,
2691 };
2692 
2693 //---------------------------------------------------------------------------
2694 // Policy name: Guat
2695 // Rules: 3
2696 // Memory (8-bit): 33
2697 // Memory (32-bit): 48
2698 //---------------------------------------------------------------------------
2699 
2700 static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2701  // Rule Guat 1991 only - Sep 7 0:00 0 S
2702  {
2703  -9 /*fromYearTiny*/,
2704  -9 /*toYearTiny*/,
2705  9 /*inMonth*/,
2706  0 /*onDayOfWeek*/,
2707  7 /*onDayOfMonth*/,
2708  0 /*atTimeCode*/,
2709  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2710  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2711  'S' /*letter*/,
2712  },
2713  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2714  {
2715  6 /*fromYearTiny*/,
2716  6 /*toYearTiny*/,
2717  4 /*inMonth*/,
2718  0 /*onDayOfWeek*/,
2719  30 /*onDayOfMonth*/,
2720  0 /*atTimeCode*/,
2721  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2722  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2723  'D' /*letter*/,
2724  },
2725  // Rule Guat 2006 only - Oct 1 0:00 0 S
2726  {
2727  6 /*fromYearTiny*/,
2728  6 /*toYearTiny*/,
2729  10 /*inMonth*/,
2730  0 /*onDayOfWeek*/,
2731  1 /*onDayOfMonth*/,
2732  0 /*atTimeCode*/,
2733  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2734  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2735  'S' /*letter*/,
2736  },
2737 
2738 };
2739 
2740 
2741 
2742 const extended::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = {
2743  kZoneRulesGuat /*rules*/,
2744  nullptr /*letters*/,
2745  3 /*numRules*/,
2746  0 /*numLetters*/,
2747 };
2748 
2749 //---------------------------------------------------------------------------
2750 // Policy name: HK
2751 // Rules: 1
2752 // Memory (8-bit): 15
2753 // Memory (32-bit): 24
2754 //---------------------------------------------------------------------------
2755 
2756 static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2757  // Rule HK 1979 only - Oct 21 3:30 0 -
2758  {
2759  -21 /*fromYearTiny*/,
2760  -21 /*toYearTiny*/,
2761  10 /*inMonth*/,
2762  0 /*onDayOfWeek*/,
2763  21 /*onDayOfMonth*/,
2764  14 /*atTimeCode*/,
2765  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2766  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2767  '-' /*letter*/,
2768  },
2769 
2770 };
2771 
2772 
2773 
2774 const extended::ZonePolicy kPolicyHK ACE_TIME_PROGMEM = {
2775  kZoneRulesHK /*rules*/,
2776  nullptr /*letters*/,
2777  1 /*numRules*/,
2778  0 /*numLetters*/,
2779 };
2780 
2781 //---------------------------------------------------------------------------
2782 // Policy name: Haiti
2783 // Rules: 7
2784 // Memory (8-bit): 69
2785 // Memory (32-bit): 96
2786 //---------------------------------------------------------------------------
2787 
2788 static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2789  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2790  {
2791  -12 /*fromYearTiny*/,
2792  -3 /*toYearTiny*/,
2793  10 /*inMonth*/,
2794  7 /*onDayOfWeek*/,
2795  0 /*onDayOfMonth*/,
2796  4 /*atTimeCode*/,
2797  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2798  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2799  'S' /*letter*/,
2800  },
2801  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2802  {
2803  5 /*fromYearTiny*/,
2804  6 /*toYearTiny*/,
2805  4 /*inMonth*/,
2806  7 /*onDayOfWeek*/,
2807  1 /*onDayOfMonth*/,
2808  0 /*atTimeCode*/,
2809  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2810  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2811  'D' /*letter*/,
2812  },
2813  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2814  {
2815  5 /*fromYearTiny*/,
2816  6 /*toYearTiny*/,
2817  10 /*inMonth*/,
2818  7 /*onDayOfWeek*/,
2819  0 /*onDayOfMonth*/,
2820  0 /*atTimeCode*/,
2821  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2822  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2823  'S' /*letter*/,
2824  },
2825  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2826  {
2827  12 /*fromYearTiny*/,
2828  15 /*toYearTiny*/,
2829  3 /*inMonth*/,
2830  7 /*onDayOfWeek*/,
2831  8 /*onDayOfMonth*/,
2832  8 /*atTimeCode*/,
2833  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2834  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2835  'D' /*letter*/,
2836  },
2837  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2838  {
2839  12 /*fromYearTiny*/,
2840  15 /*toYearTiny*/,
2841  11 /*inMonth*/,
2842  7 /*onDayOfWeek*/,
2843  1 /*onDayOfMonth*/,
2844  8 /*atTimeCode*/,
2845  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2846  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2847  'S' /*letter*/,
2848  },
2849  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2850  {
2851  17 /*fromYearTiny*/,
2852  126 /*toYearTiny*/,
2853  3 /*inMonth*/,
2854  7 /*onDayOfWeek*/,
2855  8 /*onDayOfMonth*/,
2856  8 /*atTimeCode*/,
2857  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2858  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2859  'D' /*letter*/,
2860  },
2861  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2862  {
2863  17 /*fromYearTiny*/,
2864  126 /*toYearTiny*/,
2865  11 /*inMonth*/,
2866  7 /*onDayOfWeek*/,
2867  1 /*onDayOfMonth*/,
2868  8 /*atTimeCode*/,
2869  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2870  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2871  'S' /*letter*/,
2872  },
2873 
2874 };
2875 
2876 
2877 
2878 const extended::ZonePolicy kPolicyHaiti ACE_TIME_PROGMEM = {
2879  kZoneRulesHaiti /*rules*/,
2880  nullptr /*letters*/,
2881  7 /*numRules*/,
2882  0 /*numLetters*/,
2883 };
2884 
2885 //---------------------------------------------------------------------------
2886 // Policy name: Holiday
2887 // Rules: 1
2888 // Memory (8-bit): 15
2889 // Memory (32-bit): 24
2890 //---------------------------------------------------------------------------
2891 
2892 static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2893  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2894  {
2895  -7 /*fromYearTiny*/,
2896  -6 /*toYearTiny*/,
2897  3 /*inMonth*/,
2898  7 /*onDayOfWeek*/,
2899  1 /*onDayOfMonth*/,
2900  8 /*atTimeCode*/,
2901  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2902  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2903  'S' /*letter*/,
2904  },
2905 
2906 };
2907 
2908 
2909 
2910 const extended::ZonePolicy kPolicyHoliday ACE_TIME_PROGMEM = {
2911  kZoneRulesHoliday /*rules*/,
2912  nullptr /*letters*/,
2913  1 /*numRules*/,
2914  0 /*numLetters*/,
2915 };
2916 
2917 //---------------------------------------------------------------------------
2918 // Policy name: Hond
2919 // Rules: 3
2920 // Memory (8-bit): 33
2921 // Memory (32-bit): 48
2922 //---------------------------------------------------------------------------
2923 
2924 static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2925  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2926  {
2927  -13 /*fromYearTiny*/,
2928  -12 /*toYearTiny*/,
2929  9 /*inMonth*/,
2930  7 /*onDayOfWeek*/,
2931  0 /*onDayOfMonth*/,
2932  0 /*atTimeCode*/,
2933  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2934  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2935  'S' /*letter*/,
2936  },
2937  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2938  {
2939  6 /*fromYearTiny*/,
2940  6 /*toYearTiny*/,
2941  5 /*inMonth*/,
2942  7 /*onDayOfWeek*/,
2943  1 /*onDayOfMonth*/,
2944  0 /*atTimeCode*/,
2945  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2946  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2947  'D' /*letter*/,
2948  },
2949  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2950  {
2951  6 /*fromYearTiny*/,
2952  6 /*toYearTiny*/,
2953  8 /*inMonth*/,
2954  1 /*onDayOfWeek*/,
2955  1 /*onDayOfMonth*/,
2956  0 /*atTimeCode*/,
2957  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2958  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2959  'S' /*letter*/,
2960  },
2961 
2962 };
2963 
2964 
2965 
2966 const extended::ZonePolicy kPolicyHond ACE_TIME_PROGMEM = {
2967  kZoneRulesHond /*rules*/,
2968  nullptr /*letters*/,
2969  3 /*numRules*/,
2970  0 /*numLetters*/,
2971 };
2972 
2973 //---------------------------------------------------------------------------
2974 // Policy name: Iran
2975 // Rules: 27
2976 // Memory (8-bit): 249
2977 // Memory (32-bit): 336
2978 //---------------------------------------------------------------------------
2979 
2980 static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2981  // Rule Iran 1996 only - Sep 20 24:00 0 -
2982  {
2983  -4 /*fromYearTiny*/,
2984  -4 /*toYearTiny*/,
2985  9 /*inMonth*/,
2986  0 /*onDayOfWeek*/,
2987  20 /*onDayOfMonth*/,
2988  96 /*atTimeCode*/,
2989  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2990  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2991  '-' /*letter*/,
2992  },
2993  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2994  {
2995  -3 /*fromYearTiny*/,
2996  -1 /*toYearTiny*/,
2997  3 /*inMonth*/,
2998  0 /*onDayOfWeek*/,
2999  21 /*onDayOfMonth*/,
3000  96 /*atTimeCode*/,
3001  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3002  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3003  '-' /*letter*/,
3004  },
3005  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
3006  {
3007  -3 /*fromYearTiny*/,
3008  -1 /*toYearTiny*/,
3009  9 /*inMonth*/,
3010  0 /*onDayOfWeek*/,
3011  21 /*onDayOfMonth*/,
3012  96 /*atTimeCode*/,
3013  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3014  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3015  '-' /*letter*/,
3016  },
3017  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
3018  {
3019  0 /*fromYearTiny*/,
3020  0 /*toYearTiny*/,
3021  3 /*inMonth*/,
3022  0 /*onDayOfWeek*/,
3023  20 /*onDayOfMonth*/,
3024  96 /*atTimeCode*/,
3025  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3026  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3027  '-' /*letter*/,
3028  },
3029  // Rule Iran 2000 only - Sep 20 24:00 0 -
3030  {
3031  0 /*fromYearTiny*/,
3032  0 /*toYearTiny*/,
3033  9 /*inMonth*/,
3034  0 /*onDayOfWeek*/,
3035  20 /*onDayOfMonth*/,
3036  96 /*atTimeCode*/,
3037  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3038  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3039  '-' /*letter*/,
3040  },
3041  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3042  {
3043  1 /*fromYearTiny*/,
3044  3 /*toYearTiny*/,
3045  3 /*inMonth*/,
3046  0 /*onDayOfWeek*/,
3047  21 /*onDayOfMonth*/,
3048  96 /*atTimeCode*/,
3049  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3050  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3051  '-' /*letter*/,
3052  },
3053  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3054  {
3055  1 /*fromYearTiny*/,
3056  3 /*toYearTiny*/,
3057  9 /*inMonth*/,
3058  0 /*onDayOfWeek*/,
3059  21 /*onDayOfMonth*/,
3060  96 /*atTimeCode*/,
3061  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3062  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3063  '-' /*letter*/,
3064  },
3065  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3066  {
3067  4 /*fromYearTiny*/,
3068  4 /*toYearTiny*/,
3069  3 /*inMonth*/,
3070  0 /*onDayOfWeek*/,
3071  20 /*onDayOfMonth*/,
3072  96 /*atTimeCode*/,
3073  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3074  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3075  '-' /*letter*/,
3076  },
3077  // Rule Iran 2004 only - Sep 20 24:00 0 -
3078  {
3079  4 /*fromYearTiny*/,
3080  4 /*toYearTiny*/,
3081  9 /*inMonth*/,
3082  0 /*onDayOfWeek*/,
3083  20 /*onDayOfMonth*/,
3084  96 /*atTimeCode*/,
3085  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3086  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3087  '-' /*letter*/,
3088  },
3089  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3090  {
3091  5 /*fromYearTiny*/,
3092  5 /*toYearTiny*/,
3093  3 /*inMonth*/,
3094  0 /*onDayOfWeek*/,
3095  21 /*onDayOfMonth*/,
3096  96 /*atTimeCode*/,
3097  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3098  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3099  '-' /*letter*/,
3100  },
3101  // Rule Iran 2005 only - Sep 21 24:00 0 -
3102  {
3103  5 /*fromYearTiny*/,
3104  5 /*toYearTiny*/,
3105  9 /*inMonth*/,
3106  0 /*onDayOfWeek*/,
3107  21 /*onDayOfMonth*/,
3108  96 /*atTimeCode*/,
3109  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3110  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3111  '-' /*letter*/,
3112  },
3113  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3114  {
3115  8 /*fromYearTiny*/,
3116  8 /*toYearTiny*/,
3117  3 /*inMonth*/,
3118  0 /*onDayOfWeek*/,
3119  20 /*onDayOfMonth*/,
3120  96 /*atTimeCode*/,
3121  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3122  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3123  '-' /*letter*/,
3124  },
3125  // Rule Iran 2008 only - Sep 20 24:00 0 -
3126  {
3127  8 /*fromYearTiny*/,
3128  8 /*toYearTiny*/,
3129  9 /*inMonth*/,
3130  0 /*onDayOfWeek*/,
3131  20 /*onDayOfMonth*/,
3132  96 /*atTimeCode*/,
3133  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3134  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3135  '-' /*letter*/,
3136  },
3137  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3138  {
3139  9 /*fromYearTiny*/,
3140  11 /*toYearTiny*/,
3141  3 /*inMonth*/,
3142  0 /*onDayOfWeek*/,
3143  21 /*onDayOfMonth*/,
3144  96 /*atTimeCode*/,
3145  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3146  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3147  '-' /*letter*/,
3148  },
3149  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3150  {
3151  9 /*fromYearTiny*/,
3152  11 /*toYearTiny*/,
3153  9 /*inMonth*/,
3154  0 /*onDayOfWeek*/,
3155  21 /*onDayOfMonth*/,
3156  96 /*atTimeCode*/,
3157  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3158  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3159  '-' /*letter*/,
3160  },
3161  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3162  {
3163  12 /*fromYearTiny*/,
3164  12 /*toYearTiny*/,
3165  3 /*inMonth*/,
3166  0 /*onDayOfWeek*/,
3167  20 /*onDayOfMonth*/,
3168  96 /*atTimeCode*/,
3169  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3170  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3171  '-' /*letter*/,
3172  },
3173  // Rule Iran 2012 only - Sep 20 24:00 0 -
3174  {
3175  12 /*fromYearTiny*/,
3176  12 /*toYearTiny*/,
3177  9 /*inMonth*/,
3178  0 /*onDayOfWeek*/,
3179  20 /*onDayOfMonth*/,
3180  96 /*atTimeCode*/,
3181  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3182  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3183  '-' /*letter*/,
3184  },
3185  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3186  {
3187  13 /*fromYearTiny*/,
3188  15 /*toYearTiny*/,
3189  3 /*inMonth*/,
3190  0 /*onDayOfWeek*/,
3191  21 /*onDayOfMonth*/,
3192  96 /*atTimeCode*/,
3193  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3194  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3195  '-' /*letter*/,
3196  },
3197  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3198  {
3199  13 /*fromYearTiny*/,
3200  15 /*toYearTiny*/,
3201  9 /*inMonth*/,
3202  0 /*onDayOfWeek*/,
3203  21 /*onDayOfMonth*/,
3204  96 /*atTimeCode*/,
3205  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3206  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3207  '-' /*letter*/,
3208  },
3209  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3210  {
3211  16 /*fromYearTiny*/,
3212  16 /*toYearTiny*/,
3213  3 /*inMonth*/,
3214  0 /*onDayOfWeek*/,
3215  20 /*onDayOfMonth*/,
3216  96 /*atTimeCode*/,
3217  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3218  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3219  '-' /*letter*/,
3220  },
3221  // Rule Iran 2016 only - Sep 20 24:00 0 -
3222  {
3223  16 /*fromYearTiny*/,
3224  16 /*toYearTiny*/,
3225  9 /*inMonth*/,
3226  0 /*onDayOfWeek*/,
3227  20 /*onDayOfMonth*/,
3228  96 /*atTimeCode*/,
3229  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3230  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3231  '-' /*letter*/,
3232  },
3233  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3234  {
3235  17 /*fromYearTiny*/,
3236  19 /*toYearTiny*/,
3237  3 /*inMonth*/,
3238  0 /*onDayOfWeek*/,
3239  21 /*onDayOfMonth*/,
3240  96 /*atTimeCode*/,
3241  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3242  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3243  '-' /*letter*/,
3244  },
3245  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3246  {
3247  17 /*fromYearTiny*/,
3248  19 /*toYearTiny*/,
3249  9 /*inMonth*/,
3250  0 /*onDayOfWeek*/,
3251  21 /*onDayOfMonth*/,
3252  96 /*atTimeCode*/,
3253  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3254  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3255  '-' /*letter*/,
3256  },
3257  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3258  {
3259  20 /*fromYearTiny*/,
3260  20 /*toYearTiny*/,
3261  3 /*inMonth*/,
3262  0 /*onDayOfWeek*/,
3263  20 /*onDayOfMonth*/,
3264  96 /*atTimeCode*/,
3265  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3266  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3267  '-' /*letter*/,
3268  },
3269  // Rule Iran 2020 only - Sep 20 24:00 0 -
3270  {
3271  20 /*fromYearTiny*/,
3272  20 /*toYearTiny*/,
3273  9 /*inMonth*/,
3274  0 /*onDayOfWeek*/,
3275  20 /*onDayOfMonth*/,
3276  96 /*atTimeCode*/,
3277  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3278  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3279  '-' /*letter*/,
3280  },
3281  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
3282  {
3283  21 /*fromYearTiny*/,
3284  22 /*toYearTiny*/,
3285  3 /*inMonth*/,
3286  0 /*onDayOfWeek*/,
3287  21 /*onDayOfMonth*/,
3288  96 /*atTimeCode*/,
3289  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3290  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3291  '-' /*letter*/,
3292  },
3293  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
3294  {
3295  21 /*fromYearTiny*/,
3296  22 /*toYearTiny*/,
3297  9 /*inMonth*/,
3298  0 /*onDayOfWeek*/,
3299  21 /*onDayOfMonth*/,
3300  96 /*atTimeCode*/,
3301  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3302  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3303  '-' /*letter*/,
3304  },
3305 
3306 };
3307 
3308 
3309 
3310 const extended::ZonePolicy kPolicyIran ACE_TIME_PROGMEM = {
3311  kZoneRulesIran /*rules*/,
3312  nullptr /*letters*/,
3313  27 /*numRules*/,
3314  0 /*numLetters*/,
3315 };
3316 
3317 //---------------------------------------------------------------------------
3318 // Policy name: Iraq
3319 // Rules: 3
3320 // Memory (8-bit): 33
3321 // Memory (32-bit): 48
3322 //---------------------------------------------------------------------------
3323 
3324 static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3325  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3326  {
3327  -15 /*fromYearTiny*/,
3328  -10 /*toYearTiny*/,
3329  9 /*inMonth*/,
3330  7 /*onDayOfWeek*/,
3331  0 /*onDayOfMonth*/,
3332  4 /*atTimeCode*/,
3333  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3334  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3335  '-' /*letter*/,
3336  },
3337  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3338  {
3339  -9 /*fromYearTiny*/,
3340  7 /*toYearTiny*/,
3341  4 /*inMonth*/,
3342  0 /*onDayOfWeek*/,
3343  1 /*onDayOfMonth*/,
3344  12 /*atTimeCode*/,
3345  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3346  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3347  '-' /*letter*/,
3348  },
3349  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3350  {
3351  -9 /*fromYearTiny*/,
3352  7 /*toYearTiny*/,
3353  10 /*inMonth*/,
3354  0 /*onDayOfWeek*/,
3355  1 /*onDayOfMonth*/,
3356  12 /*atTimeCode*/,
3357  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3358  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3359  '-' /*letter*/,
3360  },
3361 
3362 };
3363 
3364 
3365 
3366 const extended::ZonePolicy kPolicyIraq ACE_TIME_PROGMEM = {
3367  kZoneRulesIraq /*rules*/,
3368  nullptr /*letters*/,
3369  3 /*numRules*/,
3370  0 /*numLetters*/,
3371 };
3372 
3373 //---------------------------------------------------------------------------
3374 // Policy name: Japan
3375 // Rules: 1
3376 // Memory (8-bit): 15
3377 // Memory (32-bit): 24
3378 //---------------------------------------------------------------------------
3379 
3380 static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3381  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3382  {
3383  -52 /*fromYearTiny*/,
3384  -49 /*toYearTiny*/,
3385  9 /*inMonth*/,
3386  6 /*onDayOfWeek*/,
3387  8 /*onDayOfMonth*/,
3388  100 /*atTimeCode*/,
3389  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3390  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3391  'S' /*letter*/,
3392  },
3393 
3394 };
3395 
3396 
3397 
3398 const extended::ZonePolicy kPolicyJapan ACE_TIME_PROGMEM = {
3399  kZoneRulesJapan /*rules*/,
3400  nullptr /*letters*/,
3401  1 /*numRules*/,
3402  0 /*numLetters*/,
3403 };
3404 
3405 //---------------------------------------------------------------------------
3406 // Policy name: Jordan
3407 // Rules: 13
3408 // Memory (8-bit): 123
3409 // Memory (32-bit): 168
3410 //---------------------------------------------------------------------------
3411 
3412 static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3413  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3414  {
3415  -5 /*fromYearTiny*/,
3416  -2 /*toYearTiny*/,
3417  9 /*inMonth*/,
3418  5 /*onDayOfWeek*/,
3419  15 /*onDayOfMonth*/,
3420  0 /*atTimeCode*/,
3421  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3422  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3423  '-' /*letter*/,
3424  },
3425  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3426  {
3427  -1 /*fromYearTiny*/,
3428  -1 /*toYearTiny*/,
3429  7 /*inMonth*/,
3430  0 /*onDayOfWeek*/,
3431  1 /*onDayOfMonth*/,
3432  0 /*atTimeCode*/,
3433  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3434  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3435  'S' /*letter*/,
3436  },
3437  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3438  {
3439  -1 /*fromYearTiny*/,
3440  2 /*toYearTiny*/,
3441  9 /*inMonth*/,
3442  5 /*onDayOfWeek*/,
3443  0 /*onDayOfMonth*/,
3444  0 /*atTimeCode*/,
3445  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3446  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3447  '-' /*letter*/,
3448  },
3449  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3450  {
3451  0 /*fromYearTiny*/,
3452  1 /*toYearTiny*/,
3453  3 /*inMonth*/,
3454  4 /*onDayOfWeek*/,
3455  0 /*onDayOfMonth*/,
3456  0 /*atTimeCode*/,
3457  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3458  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3459  'S' /*letter*/,
3460  },
3461  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3462  {
3463  2 /*fromYearTiny*/,
3464  12 /*toYearTiny*/,
3465  3 /*inMonth*/,
3466  4 /*onDayOfWeek*/,
3467  0 /*onDayOfMonth*/,
3468  96 /*atTimeCode*/,
3469  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3470  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3471  'S' /*letter*/,
3472  },
3473  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3474  {
3475  3 /*fromYearTiny*/,
3476  3 /*toYearTiny*/,
3477  10 /*inMonth*/,
3478  0 /*onDayOfWeek*/,
3479  24 /*onDayOfMonth*/,
3480  0 /*atTimeCode*/,
3481  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3482  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3483  '-' /*letter*/,
3484  },
3485  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3486  {
3487  4 /*fromYearTiny*/,
3488  4 /*toYearTiny*/,
3489  10 /*inMonth*/,
3490  0 /*onDayOfWeek*/,
3491  15 /*onDayOfMonth*/,
3492  0 /*atTimeCode*/,
3493  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3494  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3495  '-' /*letter*/,
3496  },
3497  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3498  {
3499  5 /*fromYearTiny*/,
3500  5 /*toYearTiny*/,
3501  9 /*inMonth*/,
3502  5 /*onDayOfWeek*/,
3503  0 /*onDayOfMonth*/,
3504  0 /*atTimeCode*/,
3505  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3506  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3507  '-' /*letter*/,
3508  },
3509  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3510  {
3511  6 /*fromYearTiny*/,
3512  11 /*toYearTiny*/,
3513  10 /*inMonth*/,
3514  5 /*onDayOfWeek*/,
3515  0 /*onDayOfMonth*/,
3516  0 /*atTimeCode*/,
3517  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3518  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3519  '-' /*letter*/,
3520  },
3521  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3522  {
3523  13 /*fromYearTiny*/,
3524  13 /*toYearTiny*/,
3525  12 /*inMonth*/,
3526  0 /*onDayOfWeek*/,
3527  20 /*onDayOfMonth*/,
3528  0 /*atTimeCode*/,
3529  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3530  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3531  '-' /*letter*/,
3532  },
3533  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3534  {
3535  14 /*fromYearTiny*/,
3536  21 /*toYearTiny*/,
3537  3 /*inMonth*/,
3538  4 /*onDayOfWeek*/,
3539  0 /*onDayOfMonth*/,
3540  96 /*atTimeCode*/,
3541  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3542  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3543  'S' /*letter*/,
3544  },
3545  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
3546  {
3547  14 /*fromYearTiny*/,
3548  22 /*toYearTiny*/,
3549  10 /*inMonth*/,
3550  5 /*onDayOfWeek*/,
3551  0 /*onDayOfMonth*/,
3552  0 /*atTimeCode*/,
3553  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3554  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3555  '-' /*letter*/,
3556  },
3557  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
3558  {
3559  22 /*fromYearTiny*/,
3560  22 /*toYearTiny*/,
3561  2 /*inMonth*/,
3562  4 /*onDayOfWeek*/,
3563  0 /*onDayOfMonth*/,
3564  96 /*atTimeCode*/,
3565  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3566  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3567  'S' /*letter*/,
3568  },
3569 
3570 };
3571 
3572 
3573 
3574 const extended::ZonePolicy kPolicyJordan ACE_TIME_PROGMEM = {
3575  kZoneRulesJordan /*rules*/,
3576  nullptr /*letters*/,
3577  13 /*numRules*/,
3578  0 /*numLetters*/,
3579 };
3580 
3581 //---------------------------------------------------------------------------
3582 // Policy name: Kyrgyz
3583 // Rules: 3
3584 // Memory (8-bit): 33
3585 // Memory (32-bit): 48
3586 //---------------------------------------------------------------------------
3587 
3588 static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = {
3589  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3590  {
3591  -8 /*fromYearTiny*/,
3592  -4 /*toYearTiny*/,
3593  9 /*inMonth*/,
3594  7 /*onDayOfWeek*/,
3595  0 /*onDayOfMonth*/,
3596  0 /*atTimeCode*/,
3597  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3598  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3599  '-' /*letter*/,
3600  },
3601  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3602  {
3603  -3 /*fromYearTiny*/,
3604  5 /*toYearTiny*/,
3605  3 /*inMonth*/,
3606  7 /*onDayOfWeek*/,
3607  0 /*onDayOfMonth*/,
3608  10 /*atTimeCode*/,
3609  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3610  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3611  '-' /*letter*/,
3612  },
3613  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3614  {
3615  -3 /*fromYearTiny*/,
3616  4 /*toYearTiny*/,
3617  10 /*inMonth*/,
3618  7 /*onDayOfWeek*/,
3619  0 /*onDayOfMonth*/,
3620  10 /*atTimeCode*/,
3621  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3622  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3623  '-' /*letter*/,
3624  },
3625 
3626 };
3627 
3628 
3629 
3630 const extended::ZonePolicy kPolicyKyrgyz ACE_TIME_PROGMEM = {
3631  kZoneRulesKyrgyz /*rules*/,
3632  nullptr /*letters*/,
3633  3 /*numRules*/,
3634  0 /*numLetters*/,
3635 };
3636 
3637 //---------------------------------------------------------------------------
3638 // Policy name: LH
3639 // Rules: 9
3640 // Memory (8-bit): 87
3641 // Memory (32-bit): 120
3642 //---------------------------------------------------------------------------
3643 
3644 static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3645  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3646  {
3647  -13 /*fromYearTiny*/,
3648  -1 /*toYearTiny*/,
3649  10 /*inMonth*/,
3650  7 /*onDayOfWeek*/,
3651  0 /*onDayOfMonth*/,
3652  8 /*atTimeCode*/,
3653  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3654  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3655  '-' /*letter*/,
3656  },
3657  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3658  {
3659  -10 /*fromYearTiny*/,
3660  -5 /*toYearTiny*/,
3661  3 /*inMonth*/,
3662  7 /*onDayOfWeek*/,
3663  1 /*onDayOfMonth*/,
3664  8 /*atTimeCode*/,
3665  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3666  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3667  '-' /*letter*/,
3668  },
3669  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3670  {
3671  -4 /*fromYearTiny*/,
3672  5 /*toYearTiny*/,
3673  3 /*inMonth*/,
3674  7 /*onDayOfWeek*/,
3675  0 /*onDayOfMonth*/,
3676  8 /*atTimeCode*/,
3677  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3678  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3679  '-' /*letter*/,
3680  },
3681  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3682  {
3683  0 /*fromYearTiny*/,
3684  0 /*toYearTiny*/,
3685  8 /*inMonth*/,
3686  7 /*onDayOfWeek*/,
3687  0 /*onDayOfMonth*/,
3688  8 /*atTimeCode*/,
3689  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3690  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3691  '-' /*letter*/,
3692  },
3693  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3694  {
3695  1 /*fromYearTiny*/,
3696  7 /*toYearTiny*/,
3697  10 /*inMonth*/,
3698  7 /*onDayOfWeek*/,
3699  0 /*onDayOfMonth*/,
3700  8 /*atTimeCode*/,
3701  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3702  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3703  '-' /*letter*/,
3704  },
3705  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3706  {
3707  6 /*fromYearTiny*/,
3708  6 /*toYearTiny*/,
3709  4 /*inMonth*/,
3710  7 /*onDayOfWeek*/,
3711  1 /*onDayOfMonth*/,
3712  8 /*atTimeCode*/,
3713  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3714  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3715  '-' /*letter*/,
3716  },
3717  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3718  {
3719  7 /*fromYearTiny*/,
3720  7 /*toYearTiny*/,
3721  3 /*inMonth*/,
3722  7 /*onDayOfWeek*/,
3723  0 /*onDayOfMonth*/,
3724  8 /*atTimeCode*/,
3725  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3726  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3727  '-' /*letter*/,
3728  },
3729  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3730  {
3731  8 /*fromYearTiny*/,
3732  126 /*toYearTiny*/,
3733  4 /*inMonth*/,
3734  7 /*onDayOfWeek*/,
3735  1 /*onDayOfMonth*/,
3736  8 /*atTimeCode*/,
3737  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3738  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3739  '-' /*letter*/,
3740  },
3741  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3742  {
3743  8 /*fromYearTiny*/,
3744  126 /*toYearTiny*/,
3745  10 /*inMonth*/,
3746  7 /*onDayOfWeek*/,
3747  1 /*onDayOfMonth*/,
3748  8 /*atTimeCode*/,
3749  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3750  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3751  '-' /*letter*/,
3752  },
3753 
3754 };
3755 
3756 
3757 
3758 const extended::ZonePolicy kPolicyLH ACE_TIME_PROGMEM = {
3759  kZoneRulesLH /*rules*/,
3760  nullptr /*letters*/,
3761  9 /*numRules*/,
3762  0 /*numLetters*/,
3763 };
3764 
3765 //---------------------------------------------------------------------------
3766 // Policy name: Lebanon
3767 // Rules: 3
3768 // Memory (8-bit): 33
3769 // Memory (32-bit): 48
3770 //---------------------------------------------------------------------------
3771 
3772 static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3773  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3774  {
3775  -7 /*fromYearTiny*/,
3776  126 /*toYearTiny*/,
3777  3 /*inMonth*/,
3778  7 /*onDayOfWeek*/,
3779  0 /*onDayOfMonth*/,
3780  0 /*atTimeCode*/,
3781  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3782  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3783  'S' /*letter*/,
3784  },
3785  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3786  {
3787  -7 /*fromYearTiny*/,
3788  -2 /*toYearTiny*/,
3789  9 /*inMonth*/,
3790  7 /*onDayOfWeek*/,
3791  0 /*onDayOfMonth*/,
3792  0 /*atTimeCode*/,
3793  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3794  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3795  '-' /*letter*/,
3796  },
3797  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3798  {
3799  -1 /*fromYearTiny*/,
3800  126 /*toYearTiny*/,
3801  10 /*inMonth*/,
3802  7 /*onDayOfWeek*/,
3803  0 /*onDayOfMonth*/,
3804  0 /*atTimeCode*/,
3805  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3806  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3807  '-' /*letter*/,
3808  },
3809 
3810 };
3811 
3812 
3813 
3814 const extended::ZonePolicy kPolicyLebanon ACE_TIME_PROGMEM = {
3815  kZoneRulesLebanon /*rules*/,
3816  nullptr /*letters*/,
3817  3 /*numRules*/,
3818  0 /*numLetters*/,
3819 };
3820 
3821 //---------------------------------------------------------------------------
3822 // Policy name: Libya
3823 // Rules: 3
3824 // Memory (8-bit): 33
3825 // Memory (32-bit): 48
3826 //---------------------------------------------------------------------------
3827 
3828 static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = {
3829  // Rule Libya 1997 only - Oct 4 0:00 0 -
3830  {
3831  -3 /*fromYearTiny*/,
3832  -3 /*toYearTiny*/,
3833  10 /*inMonth*/,
3834  0 /*onDayOfWeek*/,
3835  4 /*onDayOfMonth*/,
3836  0 /*atTimeCode*/,
3837  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3838  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3839  '-' /*letter*/,
3840  },
3841  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
3842  {
3843  13 /*fromYearTiny*/,
3844  13 /*toYearTiny*/,
3845  3 /*inMonth*/,
3846  5 /*onDayOfWeek*/,
3847  0 /*onDayOfMonth*/,
3848  4 /*atTimeCode*/,
3849  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3850  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3851  'S' /*letter*/,
3852  },
3853  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
3854  {
3855  13 /*fromYearTiny*/,
3856  13 /*toYearTiny*/,
3857  10 /*inMonth*/,
3858  5 /*onDayOfWeek*/,
3859  0 /*onDayOfMonth*/,
3860  8 /*atTimeCode*/,
3861  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3862  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3863  '-' /*letter*/,
3864  },
3865 
3866 };
3867 
3868 
3869 
3870 const extended::ZonePolicy kPolicyLibya ACE_TIME_PROGMEM = {
3871  kZoneRulesLibya /*rules*/,
3872  nullptr /*letters*/,
3873  3 /*numRules*/,
3874  0 /*numLetters*/,
3875 };
3876 
3877 //---------------------------------------------------------------------------
3878 // Policy name: Macau
3879 // Rules: 1
3880 // Memory (8-bit): 15
3881 // Memory (32-bit): 24
3882 //---------------------------------------------------------------------------
3883 
3884 static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3885  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3886  {
3887  -21 /*fromYearTiny*/,
3888  -21 /*toYearTiny*/,
3889  10 /*inMonth*/,
3890  7 /*onDayOfWeek*/,
3891  16 /*onDayOfMonth*/,
3892  14 /*atTimeCode*/,
3893  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3894  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3895  'S' /*letter*/,
3896  },
3897 
3898 };
3899 
3900 
3901 
3902 const extended::ZonePolicy kPolicyMacau ACE_TIME_PROGMEM = {
3903  kZoneRulesMacau /*rules*/,
3904  nullptr /*letters*/,
3905  1 /*numRules*/,
3906  0 /*numLetters*/,
3907 };
3908 
3909 //---------------------------------------------------------------------------
3910 // Policy name: Mauritius
3911 // Rules: 3
3912 // Memory (8-bit): 33
3913 // Memory (32-bit): 48
3914 //---------------------------------------------------------------------------
3915 
3916 static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3917  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3918  {
3919  -17 /*fromYearTiny*/,
3920  -17 /*toYearTiny*/,
3921  3 /*inMonth*/,
3922  0 /*onDayOfWeek*/,
3923  21 /*onDayOfMonth*/,
3924  0 /*atTimeCode*/,
3925  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3926  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3927  '-' /*letter*/,
3928  },
3929  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3930  {
3931  8 /*fromYearTiny*/,
3932  8 /*toYearTiny*/,
3933  10 /*inMonth*/,
3934  7 /*onDayOfWeek*/,
3935  0 /*onDayOfMonth*/,
3936  8 /*atTimeCode*/,
3937  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3938  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3939  '-' /*letter*/,
3940  },
3941  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3942  {
3943  9 /*fromYearTiny*/,
3944  9 /*toYearTiny*/,
3945  3 /*inMonth*/,
3946  7 /*onDayOfWeek*/,
3947  0 /*onDayOfMonth*/,
3948  8 /*atTimeCode*/,
3949  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3950  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3951  '-' /*letter*/,
3952  },
3953 
3954 };
3955 
3956 
3957 
3958 const extended::ZonePolicy kPolicyMauritius ACE_TIME_PROGMEM = {
3959  kZoneRulesMauritius /*rules*/,
3960  nullptr /*letters*/,
3961  3 /*numRules*/,
3962  0 /*numLetters*/,
3963 };
3964 
3965 //---------------------------------------------------------------------------
3966 // Policy name: Mexico
3967 // Rules: 7
3968 // Memory (8-bit): 69
3969 // Memory (32-bit): 96
3970 //---------------------------------------------------------------------------
3971 
3972 static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3973  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3974  {
3975  -50 /*fromYearTiny*/,
3976  -50 /*toYearTiny*/,
3977  7 /*inMonth*/,
3978  0 /*onDayOfWeek*/,
3979  30 /*onDayOfMonth*/,
3980  0 /*atTimeCode*/,
3981  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3982  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3983  'S' /*letter*/,
3984  },
3985  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3986  {
3987  -4 /*fromYearTiny*/,
3988  0 /*toYearTiny*/,
3989  4 /*inMonth*/,
3990  7 /*onDayOfWeek*/,
3991  1 /*onDayOfMonth*/,
3992  8 /*atTimeCode*/,
3993  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3994  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3995  'D' /*letter*/,
3996  },
3997  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3998  {
3999  -4 /*fromYearTiny*/,
4000  0 /*toYearTiny*/,
4001  10 /*inMonth*/,
4002  7 /*onDayOfWeek*/,
4003  0 /*onDayOfMonth*/,
4004  8 /*atTimeCode*/,
4005  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4006  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4007  'S' /*letter*/,
4008  },
4009  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4010  {
4011  1 /*fromYearTiny*/,
4012  1 /*toYearTiny*/,
4013  5 /*inMonth*/,
4014  7 /*onDayOfWeek*/,
4015  1 /*onDayOfMonth*/,
4016  8 /*atTimeCode*/,
4017  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4018  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4019  'D' /*letter*/,
4020  },
4021  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4022  {
4023  1 /*fromYearTiny*/,
4024  1 /*toYearTiny*/,
4025  9 /*inMonth*/,
4026  7 /*onDayOfWeek*/,
4027  0 /*onDayOfMonth*/,
4028  8 /*atTimeCode*/,
4029  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4030  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4031  'S' /*letter*/,
4032  },
4033  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
4034  {
4035  2 /*fromYearTiny*/,
4036  126 /*toYearTiny*/,
4037  4 /*inMonth*/,
4038  7 /*onDayOfWeek*/,
4039  1 /*onDayOfMonth*/,
4040  8 /*atTimeCode*/,
4041  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4042  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4043  'D' /*letter*/,
4044  },
4045  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
4046  {
4047  2 /*fromYearTiny*/,
4048  126 /*toYearTiny*/,
4049  10 /*inMonth*/,
4050  7 /*onDayOfWeek*/,
4051  0 /*onDayOfMonth*/,
4052  8 /*atTimeCode*/,
4053  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4054  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4055  'S' /*letter*/,
4056  },
4057 
4058 };
4059 
4060 
4061 
4062 const extended::ZonePolicy kPolicyMexico ACE_TIME_PROGMEM = {
4063  kZoneRulesMexico /*rules*/,
4064  nullptr /*letters*/,
4065  7 /*numRules*/,
4066  0 /*numLetters*/,
4067 };
4068 
4069 //---------------------------------------------------------------------------
4070 // Policy name: Moldova
4071 // Rules: 2
4072 // Memory (8-bit): 24
4073 // Memory (32-bit): 36
4074 //---------------------------------------------------------------------------
4075 
4076 static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
4077  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4078  {
4079  -3 /*fromYearTiny*/,
4080  126 /*toYearTiny*/,
4081  3 /*inMonth*/,
4082  7 /*onDayOfWeek*/,
4083  0 /*onDayOfMonth*/,
4084  8 /*atTimeCode*/,
4085  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4086  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4087  'S' /*letter*/,
4088  },
4089  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4090  {
4091  -3 /*fromYearTiny*/,
4092  126 /*toYearTiny*/,
4093  10 /*inMonth*/,
4094  7 /*onDayOfWeek*/,
4095  0 /*onDayOfMonth*/,
4096  12 /*atTimeCode*/,
4097  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4098  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4099  '-' /*letter*/,
4100  },
4101 
4102 };
4103 
4104 
4105 
4106 const extended::ZonePolicy kPolicyMoldova ACE_TIME_PROGMEM = {
4107  kZoneRulesMoldova /*rules*/,
4108  nullptr /*letters*/,
4109  2 /*numRules*/,
4110  0 /*numLetters*/,
4111 };
4112 
4113 //---------------------------------------------------------------------------
4114 // Policy name: Moncton
4115 // Rules: 3
4116 // Memory (8-bit): 33
4117 // Memory (32-bit): 48
4118 //---------------------------------------------------------------------------
4119 
4120 static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
4121  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4122  {
4123  -43 /*fromYearTiny*/,
4124  -28 /*toYearTiny*/,
4125  10 /*inMonth*/,
4126  7 /*onDayOfWeek*/,
4127  0 /*onDayOfMonth*/,
4128  8 /*atTimeCode*/,
4129  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4130  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4131  'S' /*letter*/,
4132  },
4133  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4134  {
4135  -7 /*fromYearTiny*/,
4136  6 /*toYearTiny*/,
4137  4 /*inMonth*/,
4138  7 /*onDayOfWeek*/,
4139  1 /*onDayOfMonth*/,
4140  0 /*atTimeCode*/,
4141  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4142  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4143  'D' /*letter*/,
4144  },
4145  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4146  {
4147  -7 /*fromYearTiny*/,
4148  6 /*toYearTiny*/,
4149  10 /*inMonth*/,
4150  7 /*onDayOfWeek*/,
4151  0 /*onDayOfMonth*/,
4152  0 /*atTimeCode*/,
4153  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4154  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4155  'S' /*letter*/,
4156  },
4157 
4158 };
4159 
4160 
4161 
4162 const extended::ZonePolicy kPolicyMoncton ACE_TIME_PROGMEM = {
4163  kZoneRulesMoncton /*rules*/,
4164  nullptr /*letters*/,
4165  3 /*numRules*/,
4166  0 /*numLetters*/,
4167 };
4168 
4169 //---------------------------------------------------------------------------
4170 // Policy name: Mongol
4171 // Rules: 6
4172 // Memory (8-bit): 60
4173 // Memory (32-bit): 84
4174 //---------------------------------------------------------------------------
4175 
4176 static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
4177  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4178  {
4179  -16 /*fromYearTiny*/,
4180  -2 /*toYearTiny*/,
4181  9 /*inMonth*/,
4182  7 /*onDayOfWeek*/,
4183  0 /*onDayOfMonth*/,
4184  0 /*atTimeCode*/,
4185  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4186  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4187  '-' /*letter*/,
4188  },
4189  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4190  {
4191  1 /*fromYearTiny*/,
4192  1 /*toYearTiny*/,
4193  4 /*inMonth*/,
4194  6 /*onDayOfWeek*/,
4195  0 /*onDayOfMonth*/,
4196  8 /*atTimeCode*/,
4197  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4198  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4199  '-' /*letter*/,
4200  },
4201  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4202  {
4203  1 /*fromYearTiny*/,
4204  6 /*toYearTiny*/,
4205  9 /*inMonth*/,
4206  6 /*onDayOfWeek*/,
4207  0 /*onDayOfMonth*/,
4208  8 /*atTimeCode*/,
4209  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4210  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4211  '-' /*letter*/,
4212  },
4213  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4214  {
4215  2 /*fromYearTiny*/,
4216  6 /*toYearTiny*/,
4217  3 /*inMonth*/,
4218  6 /*onDayOfWeek*/,
4219  0 /*onDayOfMonth*/,
4220  8 /*atTimeCode*/,
4221  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4222  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4223  '-' /*letter*/,
4224  },
4225  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4226  {
4227  15 /*fromYearTiny*/,
4228  16 /*toYearTiny*/,
4229  3 /*inMonth*/,
4230  6 /*onDayOfWeek*/,
4231  0 /*onDayOfMonth*/,
4232  8 /*atTimeCode*/,
4233  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4234  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4235  '-' /*letter*/,
4236  },
4237  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4238  {
4239  15 /*fromYearTiny*/,
4240  16 /*toYearTiny*/,
4241  9 /*inMonth*/,
4242  6 /*onDayOfWeek*/,
4243  0 /*onDayOfMonth*/,
4244  0 /*atTimeCode*/,
4245  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4246  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4247  '-' /*letter*/,
4248  },
4249 
4250 };
4251 
4252 
4253 
4254 const extended::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = {
4255  kZoneRulesMongol /*rules*/,
4256  nullptr /*letters*/,
4257  6 /*numRules*/,
4258  0 /*numLetters*/,
4259 };
4260 
4261 //---------------------------------------------------------------------------
4262 // Policy name: Morocco
4263 // Rules: 94
4264 // Memory (8-bit): 852
4265 // Memory (32-bit): 1140
4266 //---------------------------------------------------------------------------
4267 
4268 static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
4269  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4270  {
4271  -22 /*fromYearTiny*/,
4272  -22 /*toYearTiny*/,
4273  8 /*inMonth*/,
4274  0 /*onDayOfWeek*/,
4275  4 /*onDayOfMonth*/,
4276  0 /*atTimeCode*/,
4277  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4278  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4279  '-' /*letter*/,
4280  },
4281  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4282  {
4283  8 /*fromYearTiny*/,
4284  8 /*toYearTiny*/,
4285  6 /*inMonth*/,
4286  0 /*onDayOfWeek*/,
4287  1 /*onDayOfMonth*/,
4288  0 /*atTimeCode*/,
4289  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4290  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4291  '-' /*letter*/,
4292  },
4293  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4294  {
4295  8 /*fromYearTiny*/,
4296  8 /*toYearTiny*/,
4297  9 /*inMonth*/,
4298  0 /*onDayOfWeek*/,
4299  1 /*onDayOfMonth*/,
4300  0 /*atTimeCode*/,
4301  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4302  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4303  '-' /*letter*/,
4304  },
4305  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4306  {
4307  9 /*fromYearTiny*/,
4308  9 /*toYearTiny*/,
4309  6 /*inMonth*/,
4310  0 /*onDayOfWeek*/,
4311  1 /*onDayOfMonth*/,
4312  0 /*atTimeCode*/,
4313  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4314  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4315  '-' /*letter*/,
4316  },
4317  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4318  {
4319  9 /*fromYearTiny*/,
4320  9 /*toYearTiny*/,
4321  8 /*inMonth*/,
4322  0 /*onDayOfWeek*/,
4323  21 /*onDayOfMonth*/,
4324  0 /*atTimeCode*/,
4325  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4326  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4327  '-' /*letter*/,
4328  },
4329  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4330  {
4331  10 /*fromYearTiny*/,
4332  10 /*toYearTiny*/,
4333  5 /*inMonth*/,
4334  0 /*onDayOfWeek*/,
4335  2 /*onDayOfMonth*/,
4336  0 /*atTimeCode*/,
4337  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4338  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4339  '-' /*letter*/,
4340  },
4341  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4342  {
4343  10 /*fromYearTiny*/,
4344  10 /*toYearTiny*/,
4345  8 /*inMonth*/,
4346  0 /*onDayOfWeek*/,
4347  8 /*onDayOfMonth*/,
4348  0 /*atTimeCode*/,
4349  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4350  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4351  '-' /*letter*/,
4352  },
4353  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4354  {
4355  11 /*fromYearTiny*/,
4356  11 /*toYearTiny*/,
4357  4 /*inMonth*/,
4358  0 /*onDayOfWeek*/,
4359  3 /*onDayOfMonth*/,
4360  0 /*atTimeCode*/,
4361  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4362  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4363  '-' /*letter*/,
4364  },
4365  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4366  {
4367  11 /*fromYearTiny*/,
4368  11 /*toYearTiny*/,
4369  7 /*inMonth*/,
4370  0 /*onDayOfWeek*/,
4371  31 /*onDayOfMonth*/,
4372  0 /*atTimeCode*/,
4373  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4374  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4375  '-' /*letter*/,
4376  },
4377  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4378  {
4379  12 /*fromYearTiny*/,
4380  13 /*toYearTiny*/,
4381  4 /*inMonth*/,
4382  7 /*onDayOfWeek*/,
4383  0 /*onDayOfMonth*/,
4384  8 /*atTimeCode*/,
4385  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4386  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4387  '-' /*letter*/,
4388  },
4389  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4390  {
4391  12 /*fromYearTiny*/,
4392  12 /*toYearTiny*/,
4393  7 /*inMonth*/,
4394  0 /*onDayOfWeek*/,
4395  20 /*onDayOfMonth*/,
4396  12 /*atTimeCode*/,
4397  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4398  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4399  '-' /*letter*/,
4400  },
4401  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4402  {
4403  12 /*fromYearTiny*/,
4404  12 /*toYearTiny*/,
4405  8 /*inMonth*/,
4406  0 /*onDayOfWeek*/,
4407  20 /*onDayOfMonth*/,
4408  8 /*atTimeCode*/,
4409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4410  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4411  '-' /*letter*/,
4412  },
4413  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4414  {
4415  12 /*fromYearTiny*/,
4416  12 /*toYearTiny*/,
4417  9 /*inMonth*/,
4418  0 /*onDayOfWeek*/,
4419  30 /*onDayOfMonth*/,
4420  12 /*atTimeCode*/,
4421  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4422  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4423  '-' /*letter*/,
4424  },
4425  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4426  {
4427  13 /*fromYearTiny*/,
4428  13 /*toYearTiny*/,
4429  7 /*inMonth*/,
4430  0 /*onDayOfWeek*/,
4431  7 /*onDayOfMonth*/,
4432  12 /*atTimeCode*/,
4433  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4434  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4435  '-' /*letter*/,
4436  },
4437  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4438  {
4439  13 /*fromYearTiny*/,
4440  13 /*toYearTiny*/,
4441  8 /*inMonth*/,
4442  0 /*onDayOfWeek*/,
4443  10 /*onDayOfMonth*/,
4444  8 /*atTimeCode*/,
4445  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4446  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4447  '-' /*letter*/,
4448  },
4449  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4450  {
4451  13 /*fromYearTiny*/,
4452  18 /*toYearTiny*/,
4453  10 /*inMonth*/,
4454  7 /*onDayOfWeek*/,
4455  0 /*onDayOfMonth*/,
4456  12 /*atTimeCode*/,
4457  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4458  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4459  '-' /*letter*/,
4460  },
4461  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4462  {
4463  14 /*fromYearTiny*/,
4464  18 /*toYearTiny*/,
4465  3 /*inMonth*/,
4466  7 /*onDayOfWeek*/,
4467  0 /*onDayOfMonth*/,
4468  8 /*atTimeCode*/,
4469  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4470  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4471  '-' /*letter*/,
4472  },
4473  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4474  {
4475  14 /*fromYearTiny*/,
4476  14 /*toYearTiny*/,
4477  6 /*inMonth*/,
4478  0 /*onDayOfWeek*/,
4479  28 /*onDayOfMonth*/,
4480  12 /*atTimeCode*/,
4481  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4482  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4483  '-' /*letter*/,
4484  },
4485  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4486  {
4487  14 /*fromYearTiny*/,
4488  14 /*toYearTiny*/,
4489  8 /*inMonth*/,
4490  0 /*onDayOfWeek*/,
4491  2 /*onDayOfMonth*/,
4492  8 /*atTimeCode*/,
4493  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4494  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4495  '-' /*letter*/,
4496  },
4497  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4498  {
4499  15 /*fromYearTiny*/,
4500  15 /*toYearTiny*/,
4501  6 /*inMonth*/,
4502  0 /*onDayOfWeek*/,
4503  14 /*onDayOfMonth*/,
4504  12 /*atTimeCode*/,
4505  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4506  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4507  '-' /*letter*/,
4508  },
4509  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4510  {
4511  15 /*fromYearTiny*/,
4512  15 /*toYearTiny*/,
4513  7 /*inMonth*/,
4514  0 /*onDayOfWeek*/,
4515  19 /*onDayOfMonth*/,
4516  8 /*atTimeCode*/,
4517  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4518  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4519  '-' /*letter*/,
4520  },
4521  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4522  {
4523  16 /*fromYearTiny*/,
4524  16 /*toYearTiny*/,
4525  6 /*inMonth*/,
4526  0 /*onDayOfWeek*/,
4527  5 /*onDayOfMonth*/,
4528  12 /*atTimeCode*/,
4529  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4530  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4531  '-' /*letter*/,
4532  },
4533  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4534  {
4535  16 /*fromYearTiny*/,
4536  16 /*toYearTiny*/,
4537  7 /*inMonth*/,
4538  0 /*onDayOfWeek*/,
4539  10 /*onDayOfMonth*/,
4540  8 /*atTimeCode*/,
4541  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4542  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4543  '-' /*letter*/,
4544  },
4545  // Rule Morocco 2017 only - May 21 3:00 0 -
4546  {
4547  17 /*fromYearTiny*/,
4548  17 /*toYearTiny*/,
4549  5 /*inMonth*/,
4550  0 /*onDayOfWeek*/,
4551  21 /*onDayOfMonth*/,
4552  12 /*atTimeCode*/,
4553  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4554  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4555  '-' /*letter*/,
4556  },
4557  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4558  {
4559  17 /*fromYearTiny*/,
4560  17 /*toYearTiny*/,
4561  7 /*inMonth*/,
4562  0 /*onDayOfWeek*/,
4563  2 /*onDayOfMonth*/,
4564  8 /*atTimeCode*/,
4565  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4566  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4567  '-' /*letter*/,
4568  },
4569  // Rule Morocco 2018 only - May 13 3:00 0 -
4570  {
4571  18 /*fromYearTiny*/,
4572  18 /*toYearTiny*/,
4573  5 /*inMonth*/,
4574  0 /*onDayOfWeek*/,
4575  13 /*onDayOfMonth*/,
4576  12 /*atTimeCode*/,
4577  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4578  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4579  '-' /*letter*/,
4580  },
4581  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4582  {
4583  18 /*fromYearTiny*/,
4584  18 /*toYearTiny*/,
4585  6 /*inMonth*/,
4586  0 /*onDayOfWeek*/,
4587  17 /*onDayOfMonth*/,
4588  8 /*atTimeCode*/,
4589  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4590  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4591  '-' /*letter*/,
4592  },
4593  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4594  {
4595  19 /*fromYearTiny*/,
4596  19 /*toYearTiny*/,
4597  5 /*inMonth*/,
4598  0 /*onDayOfWeek*/,
4599  5 /*onDayOfMonth*/,
4600  12 /*atTimeCode*/,
4601  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4602  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4603  '-' /*letter*/,
4604  },
4605  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4606  {
4607  19 /*fromYearTiny*/,
4608  19 /*toYearTiny*/,
4609  6 /*inMonth*/,
4610  0 /*onDayOfWeek*/,
4611  9 /*onDayOfMonth*/,
4612  8 /*atTimeCode*/,
4613  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4614  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4615  '-' /*letter*/,
4616  },
4617  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4618  {
4619  20 /*fromYearTiny*/,
4620  20 /*toYearTiny*/,
4621  4 /*inMonth*/,
4622  0 /*onDayOfWeek*/,
4623  19 /*onDayOfMonth*/,
4624  12 /*atTimeCode*/,
4625  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4626  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4627  '-' /*letter*/,
4628  },
4629  // Rule Morocco 2020 only - May 31 2:00 0 -
4630  {
4631  20 /*fromYearTiny*/,
4632  20 /*toYearTiny*/,
4633  5 /*inMonth*/,
4634  0 /*onDayOfWeek*/,
4635  31 /*onDayOfMonth*/,
4636  8 /*atTimeCode*/,
4637  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4638  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4639  '-' /*letter*/,
4640  },
4641  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
4642  {
4643  21 /*fromYearTiny*/,
4644  21 /*toYearTiny*/,
4645  4 /*inMonth*/,
4646  0 /*onDayOfWeek*/,
4647  11 /*onDayOfMonth*/,
4648  12 /*atTimeCode*/,
4649  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4650  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4651  '-' /*letter*/,
4652  },
4653  // Rule Morocco 2021 only - May 16 2:00 0 -
4654  {
4655  21 /*fromYearTiny*/,
4656  21 /*toYearTiny*/,
4657  5 /*inMonth*/,
4658  0 /*onDayOfWeek*/,
4659  16 /*onDayOfMonth*/,
4660  8 /*atTimeCode*/,
4661  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4662  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4663  '-' /*letter*/,
4664  },
4665  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
4666  {
4667  22 /*fromYearTiny*/,
4668  22 /*toYearTiny*/,
4669  3 /*inMonth*/,
4670  0 /*onDayOfWeek*/,
4671  27 /*onDayOfMonth*/,
4672  12 /*atTimeCode*/,
4673  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4674  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4675  '-' /*letter*/,
4676  },
4677  // Rule Morocco 2022 only - May 8 2:00 0 -
4678  {
4679  22 /*fromYearTiny*/,
4680  22 /*toYearTiny*/,
4681  5 /*inMonth*/,
4682  0 /*onDayOfWeek*/,
4683  8 /*onDayOfMonth*/,
4684  8 /*atTimeCode*/,
4685  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4686  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4687  '-' /*letter*/,
4688  },
4689  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
4690  {
4691  23 /*fromYearTiny*/,
4692  23 /*toYearTiny*/,
4693  3 /*inMonth*/,
4694  0 /*onDayOfWeek*/,
4695  19 /*onDayOfMonth*/,
4696  12 /*atTimeCode*/,
4697  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4698  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4699  '-' /*letter*/,
4700  },
4701  // Rule Morocco 2023 only - Apr 30 2:00 0 -
4702  {
4703  23 /*fromYearTiny*/,
4704  23 /*toYearTiny*/,
4705  4 /*inMonth*/,
4706  0 /*onDayOfWeek*/,
4707  30 /*onDayOfMonth*/,
4708  8 /*atTimeCode*/,
4709  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4710  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4711  '-' /*letter*/,
4712  },
4713  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
4714  {
4715  24 /*fromYearTiny*/,
4716  24 /*toYearTiny*/,
4717  3 /*inMonth*/,
4718  0 /*onDayOfWeek*/,
4719  10 /*onDayOfMonth*/,
4720  12 /*atTimeCode*/,
4721  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4722  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4723  '-' /*letter*/,
4724  },
4725  // Rule Morocco 2024 only - Apr 14 2:00 0 -
4726  {
4727  24 /*fromYearTiny*/,
4728  24 /*toYearTiny*/,
4729  4 /*inMonth*/,
4730  0 /*onDayOfWeek*/,
4731  14 /*onDayOfMonth*/,
4732  8 /*atTimeCode*/,
4733  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4734  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4735  '-' /*letter*/,
4736  },
4737  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
4738  {
4739  25 /*fromYearTiny*/,
4740  25 /*toYearTiny*/,
4741  2 /*inMonth*/,
4742  0 /*onDayOfWeek*/,
4743  23 /*onDayOfMonth*/,
4744  12 /*atTimeCode*/,
4745  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4746  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4747  '-' /*letter*/,
4748  },
4749  // Rule Morocco 2025 only - Apr 6 2:00 0 -
4750  {
4751  25 /*fromYearTiny*/,
4752  25 /*toYearTiny*/,
4753  4 /*inMonth*/,
4754  0 /*onDayOfWeek*/,
4755  6 /*onDayOfMonth*/,
4756  8 /*atTimeCode*/,
4757  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4758  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4759  '-' /*letter*/,
4760  },
4761  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
4762  {
4763  26 /*fromYearTiny*/,
4764  26 /*toYearTiny*/,
4765  2 /*inMonth*/,
4766  0 /*onDayOfWeek*/,
4767  15 /*onDayOfMonth*/,
4768  12 /*atTimeCode*/,
4769  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4770  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4771  '-' /*letter*/,
4772  },
4773  // Rule Morocco 2026 only - Mar 22 2:00 0 -
4774  {
4775  26 /*fromYearTiny*/,
4776  26 /*toYearTiny*/,
4777  3 /*inMonth*/,
4778  0 /*onDayOfWeek*/,
4779  22 /*onDayOfMonth*/,
4780  8 /*atTimeCode*/,
4781  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4782  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4783  '-' /*letter*/,
4784  },
4785  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
4786  {
4787  27 /*fromYearTiny*/,
4788  27 /*toYearTiny*/,
4789  2 /*inMonth*/,
4790  0 /*onDayOfWeek*/,
4791  7 /*onDayOfMonth*/,
4792  12 /*atTimeCode*/,
4793  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4794  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4795  '-' /*letter*/,
4796  },
4797  // Rule Morocco 2027 only - Mar 14 2:00 0 -
4798  {
4799  27 /*fromYearTiny*/,
4800  27 /*toYearTiny*/,
4801  3 /*inMonth*/,
4802  0 /*onDayOfWeek*/,
4803  14 /*onDayOfMonth*/,
4804  8 /*atTimeCode*/,
4805  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4806  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4807  '-' /*letter*/,
4808  },
4809  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
4810  {
4811  28 /*fromYearTiny*/,
4812  28 /*toYearTiny*/,
4813  1 /*inMonth*/,
4814  0 /*onDayOfWeek*/,
4815  23 /*onDayOfMonth*/,
4816  12 /*atTimeCode*/,
4817  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4818  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4819  '-' /*letter*/,
4820  },
4821  // Rule Morocco 2028 only - Mar 5 2:00 0 -
4822  {
4823  28 /*fromYearTiny*/,
4824  28 /*toYearTiny*/,
4825  3 /*inMonth*/,
4826  0 /*onDayOfWeek*/,
4827  5 /*onDayOfMonth*/,
4828  8 /*atTimeCode*/,
4829  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4830  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4831  '-' /*letter*/,
4832  },
4833  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
4834  {
4835  29 /*fromYearTiny*/,
4836  29 /*toYearTiny*/,
4837  1 /*inMonth*/,
4838  0 /*onDayOfWeek*/,
4839  14 /*onDayOfMonth*/,
4840  12 /*atTimeCode*/,
4841  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4842  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4843  '-' /*letter*/,
4844  },
4845  // Rule Morocco 2029 only - Feb 18 2:00 0 -
4846  {
4847  29 /*fromYearTiny*/,
4848  29 /*toYearTiny*/,
4849  2 /*inMonth*/,
4850  0 /*onDayOfWeek*/,
4851  18 /*onDayOfMonth*/,
4852  8 /*atTimeCode*/,
4853  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4854  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4855  '-' /*letter*/,
4856  },
4857  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
4858  {
4859  29 /*fromYearTiny*/,
4860  29 /*toYearTiny*/,
4861  12 /*inMonth*/,
4862  0 /*onDayOfWeek*/,
4863  30 /*onDayOfMonth*/,
4864  12 /*atTimeCode*/,
4865  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4866  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4867  '-' /*letter*/,
4868  },
4869  // Rule Morocco 2030 only - Feb 10 2:00 0 -
4870  {
4871  30 /*fromYearTiny*/,
4872  30 /*toYearTiny*/,
4873  2 /*inMonth*/,
4874  0 /*onDayOfWeek*/,
4875  10 /*onDayOfMonth*/,
4876  8 /*atTimeCode*/,
4877  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4878  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4879  '-' /*letter*/,
4880  },
4881  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
4882  {
4883  30 /*fromYearTiny*/,
4884  30 /*toYearTiny*/,
4885  12 /*inMonth*/,
4886  0 /*onDayOfWeek*/,
4887  22 /*onDayOfMonth*/,
4888  12 /*atTimeCode*/,
4889  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4890  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4891  '-' /*letter*/,
4892  },
4893  // Rule Morocco 2031 only - Feb 2 2:00 0 -
4894  {
4895  31 /*fromYearTiny*/,
4896  31 /*toYearTiny*/,
4897  2 /*inMonth*/,
4898  0 /*onDayOfWeek*/,
4899  2 /*onDayOfMonth*/,
4900  8 /*atTimeCode*/,
4901  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4902  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4903  '-' /*letter*/,
4904  },
4905  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
4906  {
4907  31 /*fromYearTiny*/,
4908  31 /*toYearTiny*/,
4909  12 /*inMonth*/,
4910  0 /*onDayOfWeek*/,
4911  14 /*onDayOfMonth*/,
4912  12 /*atTimeCode*/,
4913  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4914  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4915  '-' /*letter*/,
4916  },
4917  // Rule Morocco 2032 only - Jan 18 2:00 0 -
4918  {
4919  32 /*fromYearTiny*/,
4920  32 /*toYearTiny*/,
4921  1 /*inMonth*/,
4922  0 /*onDayOfWeek*/,
4923  18 /*onDayOfMonth*/,
4924  8 /*atTimeCode*/,
4925  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4926  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4927  '-' /*letter*/,
4928  },
4929  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
4930  {
4931  32 /*fromYearTiny*/,
4932  32 /*toYearTiny*/,
4933  11 /*inMonth*/,
4934  0 /*onDayOfWeek*/,
4935  28 /*onDayOfMonth*/,
4936  12 /*atTimeCode*/,
4937  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4938  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4939  '-' /*letter*/,
4940  },
4941  // Rule Morocco 2033 only - Jan 9 2:00 0 -
4942  {
4943  33 /*fromYearTiny*/,
4944  33 /*toYearTiny*/,
4945  1 /*inMonth*/,
4946  0 /*onDayOfWeek*/,
4947  9 /*onDayOfMonth*/,
4948  8 /*atTimeCode*/,
4949  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4950  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4951  '-' /*letter*/,
4952  },
4953  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
4954  {
4955  33 /*fromYearTiny*/,
4956  33 /*toYearTiny*/,
4957  11 /*inMonth*/,
4958  0 /*onDayOfWeek*/,
4959  20 /*onDayOfMonth*/,
4960  12 /*atTimeCode*/,
4961  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4962  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4963  '-' /*letter*/,
4964  },
4965  // Rule Morocco 2033 only - Dec 25 2:00 0 -
4966  {
4967  33 /*fromYearTiny*/,
4968  33 /*toYearTiny*/,
4969  12 /*inMonth*/,
4970  0 /*onDayOfWeek*/,
4971  25 /*onDayOfMonth*/,
4972  8 /*atTimeCode*/,
4973  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4974  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4975  '-' /*letter*/,
4976  },
4977  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
4978  {
4979  34 /*fromYearTiny*/,
4980  34 /*toYearTiny*/,
4981  11 /*inMonth*/,
4982  0 /*onDayOfWeek*/,
4983  5 /*onDayOfMonth*/,
4984  12 /*atTimeCode*/,
4985  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4986  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4987  '-' /*letter*/,
4988  },
4989  // Rule Morocco 2034 only - Dec 17 2:00 0 -
4990  {
4991  34 /*fromYearTiny*/,
4992  34 /*toYearTiny*/,
4993  12 /*inMonth*/,
4994  0 /*onDayOfWeek*/,
4995  17 /*onDayOfMonth*/,
4996  8 /*atTimeCode*/,
4997  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4998  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4999  '-' /*letter*/,
5000  },
5001  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5002  {
5003  35 /*fromYearTiny*/,
5004  35 /*toYearTiny*/,
5005  10 /*inMonth*/,
5006  0 /*onDayOfWeek*/,
5007  28 /*onDayOfMonth*/,
5008  12 /*atTimeCode*/,
5009  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5010  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5011  '-' /*letter*/,
5012  },
5013  // Rule Morocco 2035 only - Dec 9 2:00 0 -
5014  {
5015  35 /*fromYearTiny*/,
5016  35 /*toYearTiny*/,
5017  12 /*inMonth*/,
5018  0 /*onDayOfWeek*/,
5019  9 /*onDayOfMonth*/,
5020  8 /*atTimeCode*/,
5021  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5022  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5023  '-' /*letter*/,
5024  },
5025  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5026  {
5027  36 /*fromYearTiny*/,
5028  36 /*toYearTiny*/,
5029  10 /*inMonth*/,
5030  0 /*onDayOfWeek*/,
5031  19 /*onDayOfMonth*/,
5032  12 /*atTimeCode*/,
5033  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5034  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5035  '-' /*letter*/,
5036  },
5037  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5038  {
5039  36 /*fromYearTiny*/,
5040  36 /*toYearTiny*/,
5041  11 /*inMonth*/,
5042  0 /*onDayOfWeek*/,
5043  23 /*onDayOfMonth*/,
5044  8 /*atTimeCode*/,
5045  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5046  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5047  '-' /*letter*/,
5048  },
5049  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5050  {
5051  37 /*fromYearTiny*/,
5052  37 /*toYearTiny*/,
5053  10 /*inMonth*/,
5054  0 /*onDayOfWeek*/,
5055  4 /*onDayOfMonth*/,
5056  12 /*atTimeCode*/,
5057  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5058  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5059  '-' /*letter*/,
5060  },
5061  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5062  {
5063  37 /*fromYearTiny*/,
5064  37 /*toYearTiny*/,
5065  11 /*inMonth*/,
5066  0 /*onDayOfWeek*/,
5067  15 /*onDayOfMonth*/,
5068  8 /*atTimeCode*/,
5069  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5070  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5071  '-' /*letter*/,
5072  },
5073  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
5074  {
5075  38 /*fromYearTiny*/,
5076  38 /*toYearTiny*/,
5077  9 /*inMonth*/,
5078  0 /*onDayOfWeek*/,
5079  26 /*onDayOfMonth*/,
5080  12 /*atTimeCode*/,
5081  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5082  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5083  '-' /*letter*/,
5084  },
5085  // Rule Morocco 2038 only - Nov 7 2:00 0 -
5086  {
5087  38 /*fromYearTiny*/,
5088  38 /*toYearTiny*/,
5089  11 /*inMonth*/,
5090  0 /*onDayOfWeek*/,
5091  7 /*onDayOfMonth*/,
5092  8 /*atTimeCode*/,
5093  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5094  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5095  '-' /*letter*/,
5096  },
5097  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
5098  {
5099  39 /*fromYearTiny*/,
5100  39 /*toYearTiny*/,
5101  9 /*inMonth*/,
5102  0 /*onDayOfWeek*/,
5103  18 /*onDayOfMonth*/,
5104  12 /*atTimeCode*/,
5105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5106  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5107  '-' /*letter*/,
5108  },
5109  // Rule Morocco 2039 only - Oct 23 2:00 0 -
5110  {
5111  39 /*fromYearTiny*/,
5112  39 /*toYearTiny*/,
5113  10 /*inMonth*/,
5114  0 /*onDayOfWeek*/,
5115  23 /*onDayOfMonth*/,
5116  8 /*atTimeCode*/,
5117  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5119  '-' /*letter*/,
5120  },
5121  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
5122  {
5123  40 /*fromYearTiny*/,
5124  40 /*toYearTiny*/,
5125  9 /*inMonth*/,
5126  0 /*onDayOfWeek*/,
5127  2 /*onDayOfMonth*/,
5128  12 /*atTimeCode*/,
5129  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5130  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5131  '-' /*letter*/,
5132  },
5133  // Rule Morocco 2040 only - Oct 14 2:00 0 -
5134  {
5135  40 /*fromYearTiny*/,
5136  40 /*toYearTiny*/,
5137  10 /*inMonth*/,
5138  0 /*onDayOfWeek*/,
5139  14 /*onDayOfMonth*/,
5140  8 /*atTimeCode*/,
5141  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5143  '-' /*letter*/,
5144  },
5145  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
5146  {
5147  41 /*fromYearTiny*/,
5148  41 /*toYearTiny*/,
5149  8 /*inMonth*/,
5150  0 /*onDayOfWeek*/,
5151  25 /*onDayOfMonth*/,
5152  12 /*atTimeCode*/,
5153  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5154  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5155  '-' /*letter*/,
5156  },
5157  // Rule Morocco 2041 only - Sep 29 2:00 0 -
5158  {
5159  41 /*fromYearTiny*/,
5160  41 /*toYearTiny*/,
5161  9 /*inMonth*/,
5162  0 /*onDayOfWeek*/,
5163  29 /*onDayOfMonth*/,
5164  8 /*atTimeCode*/,
5165  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5166  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5167  '-' /*letter*/,
5168  },
5169  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
5170  {
5171  42 /*fromYearTiny*/,
5172  42 /*toYearTiny*/,
5173  8 /*inMonth*/,
5174  0 /*onDayOfWeek*/,
5175  10 /*onDayOfMonth*/,
5176  12 /*atTimeCode*/,
5177  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5178  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5179  '-' /*letter*/,
5180  },
5181  // Rule Morocco 2042 only - Sep 21 2:00 0 -
5182  {
5183  42 /*fromYearTiny*/,
5184  42 /*toYearTiny*/,
5185  9 /*inMonth*/,
5186  0 /*onDayOfWeek*/,
5187  21 /*onDayOfMonth*/,
5188  8 /*atTimeCode*/,
5189  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5190  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5191  '-' /*letter*/,
5192  },
5193  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
5194  {
5195  43 /*fromYearTiny*/,
5196  43 /*toYearTiny*/,
5197  8 /*inMonth*/,
5198  0 /*onDayOfWeek*/,
5199  2 /*onDayOfMonth*/,
5200  12 /*atTimeCode*/,
5201  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5202  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5203  '-' /*letter*/,
5204  },
5205  // Rule Morocco 2043 only - Sep 13 2:00 0 -
5206  {
5207  43 /*fromYearTiny*/,
5208  43 /*toYearTiny*/,
5209  9 /*inMonth*/,
5210  0 /*onDayOfWeek*/,
5211  13 /*onDayOfMonth*/,
5212  8 /*atTimeCode*/,
5213  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5214  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5215  '-' /*letter*/,
5216  },
5217  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
5218  {
5219  44 /*fromYearTiny*/,
5220  44 /*toYearTiny*/,
5221  7 /*inMonth*/,
5222  0 /*onDayOfWeek*/,
5223  24 /*onDayOfMonth*/,
5224  12 /*atTimeCode*/,
5225  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5226  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5227  '-' /*letter*/,
5228  },
5229  // Rule Morocco 2044 only - Aug 28 2:00 0 -
5230  {
5231  44 /*fromYearTiny*/,
5232  44 /*toYearTiny*/,
5233  8 /*inMonth*/,
5234  0 /*onDayOfWeek*/,
5235  28 /*onDayOfMonth*/,
5236  8 /*atTimeCode*/,
5237  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5238  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5239  '-' /*letter*/,
5240  },
5241  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
5242  {
5243  45 /*fromYearTiny*/,
5244  45 /*toYearTiny*/,
5245  7 /*inMonth*/,
5246  0 /*onDayOfWeek*/,
5247  9 /*onDayOfMonth*/,
5248  12 /*atTimeCode*/,
5249  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5250  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5251  '-' /*letter*/,
5252  },
5253  // Rule Morocco 2045 only - Aug 20 2:00 0 -
5254  {
5255  45 /*fromYearTiny*/,
5256  45 /*toYearTiny*/,
5257  8 /*inMonth*/,
5258  0 /*onDayOfWeek*/,
5259  20 /*onDayOfMonth*/,
5260  8 /*atTimeCode*/,
5261  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5262  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5263  '-' /*letter*/,
5264  },
5265  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
5266  {
5267  46 /*fromYearTiny*/,
5268  46 /*toYearTiny*/,
5269  7 /*inMonth*/,
5270  0 /*onDayOfWeek*/,
5271  1 /*onDayOfMonth*/,
5272  12 /*atTimeCode*/,
5273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5274  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5275  '-' /*letter*/,
5276  },
5277  // Rule Morocco 2046 only - Aug 12 2:00 0 -
5278  {
5279  46 /*fromYearTiny*/,
5280  46 /*toYearTiny*/,
5281  8 /*inMonth*/,
5282  0 /*onDayOfWeek*/,
5283  12 /*onDayOfMonth*/,
5284  8 /*atTimeCode*/,
5285  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5286  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5287  '-' /*letter*/,
5288  },
5289  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
5290  {
5291  47 /*fromYearTiny*/,
5292  47 /*toYearTiny*/,
5293  6 /*inMonth*/,
5294  0 /*onDayOfWeek*/,
5295  23 /*onDayOfMonth*/,
5296  12 /*atTimeCode*/,
5297  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5298  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5299  '-' /*letter*/,
5300  },
5301  // Rule Morocco 2047 only - Jul 28 2:00 0 -
5302  {
5303  47 /*fromYearTiny*/,
5304  47 /*toYearTiny*/,
5305  7 /*inMonth*/,
5306  0 /*onDayOfWeek*/,
5307  28 /*onDayOfMonth*/,
5308  8 /*atTimeCode*/,
5309  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5310  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5311  '-' /*letter*/,
5312  },
5313  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
5314  {
5315  48 /*fromYearTiny*/,
5316  48 /*toYearTiny*/,
5317  6 /*inMonth*/,
5318  0 /*onDayOfWeek*/,
5319  7 /*onDayOfMonth*/,
5320  12 /*atTimeCode*/,
5321  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5322  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5323  '-' /*letter*/,
5324  },
5325  // Rule Morocco 2048 only - Jul 19 2:00 0 -
5326  {
5327  48 /*fromYearTiny*/,
5328  48 /*toYearTiny*/,
5329  7 /*inMonth*/,
5330  0 /*onDayOfWeek*/,
5331  19 /*onDayOfMonth*/,
5332  8 /*atTimeCode*/,
5333  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5334  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5335  '-' /*letter*/,
5336  },
5337  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
5338  {
5339  49 /*fromYearTiny*/,
5340  49 /*toYearTiny*/,
5341  5 /*inMonth*/,
5342  0 /*onDayOfWeek*/,
5343  30 /*onDayOfMonth*/,
5344  12 /*atTimeCode*/,
5345  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5346  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5347  '-' /*letter*/,
5348  },
5349  // Rule Morocco 2049 only - Jul 4 2:00 0 -
5350  {
5351  49 /*fromYearTiny*/,
5352  49 /*toYearTiny*/,
5353  7 /*inMonth*/,
5354  0 /*onDayOfWeek*/,
5355  4 /*onDayOfMonth*/,
5356  8 /*atTimeCode*/,
5357  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5358  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5359  '-' /*letter*/,
5360  },
5361  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
5362  {
5363  50 /*fromYearTiny*/,
5364  50 /*toYearTiny*/,
5365  5 /*inMonth*/,
5366  0 /*onDayOfWeek*/,
5367  15 /*onDayOfMonth*/,
5368  12 /*atTimeCode*/,
5369  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5370  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5371  '-' /*letter*/,
5372  },
5373  // Rule Morocco 2050 only - Jun 26 2:00 0 -
5374  {
5375  50 /*fromYearTiny*/,
5376  50 /*toYearTiny*/,
5377  6 /*inMonth*/,
5378  0 /*onDayOfWeek*/,
5379  26 /*onDayOfMonth*/,
5380  8 /*atTimeCode*/,
5381  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5382  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5383  '-' /*letter*/,
5384  },
5385  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
5386  {
5387  51 /*fromYearTiny*/,
5388  51 /*toYearTiny*/,
5389  5 /*inMonth*/,
5390  0 /*onDayOfWeek*/,
5391  7 /*onDayOfMonth*/,
5392  12 /*atTimeCode*/,
5393  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5394  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5395  '-' /*letter*/,
5396  },
5397 
5398 };
5399 
5400 
5401 
5402 const extended::ZonePolicy kPolicyMorocco ACE_TIME_PROGMEM = {
5403  kZoneRulesMorocco /*rules*/,
5404  nullptr /*letters*/,
5405  94 /*numRules*/,
5406  0 /*numLetters*/,
5407 };
5408 
5409 //---------------------------------------------------------------------------
5410 // Policy name: NC
5411 // Rules: 1
5412 // Memory (8-bit): 15
5413 // Memory (32-bit): 24
5414 //---------------------------------------------------------------------------
5415 
5416 static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
5417  // Rule NC 1997 only - Mar 2 2:00s 0 -
5418  {
5419  -3 /*fromYearTiny*/,
5420  -3 /*toYearTiny*/,
5421  3 /*inMonth*/,
5422  0 /*onDayOfWeek*/,
5423  2 /*onDayOfMonth*/,
5424  8 /*atTimeCode*/,
5425  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5426  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5427  '-' /*letter*/,
5428  },
5429 
5430 };
5431 
5432 
5433 
5434 const extended::ZonePolicy kPolicyNC ACE_TIME_PROGMEM = {
5435  kZoneRulesNC /*rules*/,
5436  nullptr /*letters*/,
5437  1 /*numRules*/,
5438  0 /*numLetters*/,
5439 };
5440 
5441 //---------------------------------------------------------------------------
5442 // Policy name: NT_YK
5443 // Rules: 3
5444 // Memory (8-bit): 33
5445 // Memory (32-bit): 48
5446 //---------------------------------------------------------------------------
5447 
5448 static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = {
5449  // Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
5450  {
5451  -20 /*fromYearTiny*/,
5452  -14 /*toYearTiny*/,
5453  4 /*inMonth*/,
5454  7 /*onDayOfWeek*/,
5455  0 /*onDayOfMonth*/,
5456  8 /*atTimeCode*/,
5457  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5458  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5459  'D' /*letter*/,
5460  },
5461  // Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
5462  {
5463  -20 /*fromYearTiny*/,
5464  6 /*toYearTiny*/,
5465  10 /*inMonth*/,
5466  7 /*onDayOfWeek*/,
5467  0 /*onDayOfMonth*/,
5468  8 /*atTimeCode*/,
5469  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5470  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5471  'S' /*letter*/,
5472  },
5473  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
5474  {
5475  -13 /*fromYearTiny*/,
5476  6 /*toYearTiny*/,
5477  4 /*inMonth*/,
5478  7 /*onDayOfWeek*/,
5479  1 /*onDayOfMonth*/,
5480  8 /*atTimeCode*/,
5481  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5482  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5483  'D' /*letter*/,
5484  },
5485 
5486 };
5487 
5488 
5489 
5490 const extended::ZonePolicy kPolicyNT_YK ACE_TIME_PROGMEM = {
5491  kZoneRulesNT_YK /*rules*/,
5492  nullptr /*letters*/,
5493  3 /*numRules*/,
5494  0 /*numLetters*/,
5495 };
5496 
5497 //---------------------------------------------------------------------------
5498 // Policy name: NZ
5499 // Rules: 5
5500 // Memory (8-bit): 51
5501 // Memory (32-bit): 72
5502 //---------------------------------------------------------------------------
5503 
5504 static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
5505  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
5506  {
5507  -11 /*fromYearTiny*/,
5508  -11 /*toYearTiny*/,
5509  10 /*inMonth*/,
5510  7 /*onDayOfWeek*/,
5511  8 /*onDayOfMonth*/,
5512  8 /*atTimeCode*/,
5513  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5514  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5515  'D' /*letter*/,
5516  },
5517  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
5518  {
5519  -10 /*fromYearTiny*/,
5520  6 /*toYearTiny*/,
5521  10 /*inMonth*/,
5522  7 /*onDayOfWeek*/,
5523  1 /*onDayOfMonth*/,
5524  8 /*atTimeCode*/,
5525  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5526  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5527  'D' /*letter*/,
5528  },
5529  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
5530  {
5531  -10 /*fromYearTiny*/,
5532  7 /*toYearTiny*/,
5533  3 /*inMonth*/,
5534  7 /*onDayOfWeek*/,
5535  15 /*onDayOfMonth*/,
5536  8 /*atTimeCode*/,
5537  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5538  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5539  'S' /*letter*/,
5540  },
5541  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
5542  {
5543  7 /*fromYearTiny*/,
5544  126 /*toYearTiny*/,
5545  9 /*inMonth*/,
5546  7 /*onDayOfWeek*/,
5547  0 /*onDayOfMonth*/,
5548  8 /*atTimeCode*/,
5549  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5550  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5551  'D' /*letter*/,
5552  },
5553  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
5554  {
5555  8 /*fromYearTiny*/,
5556  126 /*toYearTiny*/,
5557  4 /*inMonth*/,
5558  7 /*onDayOfWeek*/,
5559  1 /*onDayOfMonth*/,
5560  8 /*atTimeCode*/,
5561  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5562  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5563  'S' /*letter*/,
5564  },
5565 
5566 };
5567 
5568 
5569 
5570 const extended::ZonePolicy kPolicyNZ ACE_TIME_PROGMEM = {
5571  kZoneRulesNZ /*rules*/,
5572  nullptr /*letters*/,
5573  5 /*numRules*/,
5574  0 /*numLetters*/,
5575 };
5576 
5577 //---------------------------------------------------------------------------
5578 // Policy name: Namibia
5579 // Rules: 3
5580 // Memory (8-bit): 45
5581 // Memory (32-bit): 64
5582 //---------------------------------------------------------------------------
5583 
5584 static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
5585  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
5586  {
5587  -6 /*fromYearTiny*/,
5588  -6 /*toYearTiny*/,
5589  3 /*inMonth*/,
5590  0 /*onDayOfWeek*/,
5591  21 /*onDayOfMonth*/,
5592  0 /*atTimeCode*/,
5593  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5594  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5595  1 /*letter (index to "WAT")*/,
5596  },
5597  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
5598  {
5599  -6 /*fromYearTiny*/,
5600  17 /*toYearTiny*/,
5601  9 /*inMonth*/,
5602  7 /*onDayOfWeek*/,
5603  1 /*onDayOfMonth*/,
5604  8 /*atTimeCode*/,
5605  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5606  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5607  0 /*letter (index to "CAT")*/,
5608  },
5609  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
5610  {
5611  -5 /*fromYearTiny*/,
5612  17 /*toYearTiny*/,
5613  4 /*inMonth*/,
5614  7 /*onDayOfWeek*/,
5615  1 /*onDayOfMonth*/,
5616  8 /*atTimeCode*/,
5617  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5618  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5619  1 /*letter (index to "WAT")*/,
5620  },
5621 
5622 };
5623 
5624 static const char* const kLettersNamibia[] ACE_TIME_PROGMEM = {
5625  /*0*/ "CAT",
5626  /*1*/ "WAT",
5627 
5628 };
5629 
5630 
5631 const extended::ZonePolicy kPolicyNamibia ACE_TIME_PROGMEM = {
5632  kZoneRulesNamibia /*rules*/,
5633  kLettersNamibia /*letters*/,
5634  3 /*numRules*/,
5635  2 /*numLetters*/,
5636 };
5637 
5638 //---------------------------------------------------------------------------
5639 // Policy name: Nic
5640 // Rules: 5
5641 // Memory (8-bit): 51
5642 // Memory (32-bit): 72
5643 //---------------------------------------------------------------------------
5644 
5645 static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
5646  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
5647  {
5648  -21 /*fromYearTiny*/,
5649  -20 /*toYearTiny*/,
5650  6 /*inMonth*/,
5651  1 /*onDayOfWeek*/,
5652  23 /*onDayOfMonth*/,
5653  0 /*atTimeCode*/,
5654  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5655  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5656  'S' /*letter*/,
5657  },
5658  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
5659  {
5660  5 /*fromYearTiny*/,
5661  5 /*toYearTiny*/,
5662  4 /*inMonth*/,
5663  0 /*onDayOfWeek*/,
5664  10 /*onDayOfMonth*/,
5665  0 /*atTimeCode*/,
5666  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5667  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5668  'D' /*letter*/,
5669  },
5670  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
5671  {
5672  5 /*fromYearTiny*/,
5673  5 /*toYearTiny*/,
5674  10 /*inMonth*/,
5675  7 /*onDayOfWeek*/,
5676  1 /*onDayOfMonth*/,
5677  0 /*atTimeCode*/,
5678  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5679  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5680  'S' /*letter*/,
5681  },
5682  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
5683  {
5684  6 /*fromYearTiny*/,
5685  6 /*toYearTiny*/,
5686  4 /*inMonth*/,
5687  0 /*onDayOfWeek*/,
5688  30 /*onDayOfMonth*/,
5689  8 /*atTimeCode*/,
5690  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5691  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5692  'D' /*letter*/,
5693  },
5694  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
5695  {
5696  6 /*fromYearTiny*/,
5697  6 /*toYearTiny*/,
5698  10 /*inMonth*/,
5699  7 /*onDayOfWeek*/,
5700  1 /*onDayOfMonth*/,
5701  4 /*atTimeCode*/,
5702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5703  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5704  'S' /*letter*/,
5705  },
5706 
5707 };
5708 
5709 
5710 
5711 const extended::ZonePolicy kPolicyNic ACE_TIME_PROGMEM = {
5712  kZoneRulesNic /*rules*/,
5713  nullptr /*letters*/,
5714  5 /*numRules*/,
5715  0 /*numLetters*/,
5716 };
5717 
5718 //---------------------------------------------------------------------------
5719 // Policy name: PRC
5720 // Rules: 1
5721 // Memory (8-bit): 15
5722 // Memory (32-bit): 24
5723 //---------------------------------------------------------------------------
5724 
5725 static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
5726  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
5727  {
5728  -14 /*fromYearTiny*/,
5729  -9 /*toYearTiny*/,
5730  9 /*inMonth*/,
5731  7 /*onDayOfWeek*/,
5732  11 /*onDayOfMonth*/,
5733  8 /*atTimeCode*/,
5734  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5735  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5736  'S' /*letter*/,
5737  },
5738 
5739 };
5740 
5741 
5742 
5743 const extended::ZonePolicy kPolicyPRC ACE_TIME_PROGMEM = {
5744  kZoneRulesPRC /*rules*/,
5745  nullptr /*letters*/,
5746  1 /*numRules*/,
5747  0 /*numLetters*/,
5748 };
5749 
5750 //---------------------------------------------------------------------------
5751 // Policy name: Pakistan
5752 // Rules: 6
5753 // Memory (8-bit): 60
5754 // Memory (32-bit): 84
5755 //---------------------------------------------------------------------------
5756 
5757 static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
5758  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5759  {
5760  -127 /*fromYearTiny*/,
5761  -127 /*toYearTiny*/,
5762  1 /*inMonth*/,
5763  0 /*onDayOfWeek*/,
5764  1 /*onDayOfMonth*/,
5765  0 /*atTimeCode*/,
5766  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5767  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5768  '-' /*letter*/,
5769  },
5770  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
5771  {
5772  2 /*fromYearTiny*/,
5773  2 /*toYearTiny*/,
5774  4 /*inMonth*/,
5775  7 /*onDayOfWeek*/,
5776  2 /*onDayOfMonth*/,
5777  0 /*atTimeCode*/,
5778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5779  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5780  'S' /*letter*/,
5781  },
5782  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5783  {
5784  2 /*fromYearTiny*/,
5785  2 /*toYearTiny*/,
5786  10 /*inMonth*/,
5787  7 /*onDayOfWeek*/,
5788  2 /*onDayOfMonth*/,
5789  0 /*atTimeCode*/,
5790  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5791  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5792  '-' /*letter*/,
5793  },
5794  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
5795  {
5796  8 /*fromYearTiny*/,
5797  8 /*toYearTiny*/,
5798  6 /*inMonth*/,
5799  0 /*onDayOfWeek*/,
5800  1 /*onDayOfMonth*/,
5801  0 /*atTimeCode*/,
5802  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5803  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5804  'S' /*letter*/,
5805  },
5806  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
5807  {
5808  8 /*fromYearTiny*/,
5809  9 /*toYearTiny*/,
5810  11 /*inMonth*/,
5811  0 /*onDayOfWeek*/,
5812  1 /*onDayOfMonth*/,
5813  0 /*atTimeCode*/,
5814  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5815  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5816  '-' /*letter*/,
5817  },
5818  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
5819  {
5820  9 /*fromYearTiny*/,
5821  9 /*toYearTiny*/,
5822  4 /*inMonth*/,
5823  0 /*onDayOfWeek*/,
5824  15 /*onDayOfMonth*/,
5825  0 /*atTimeCode*/,
5826  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5827  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5828  'S' /*letter*/,
5829  },
5830 
5831 };
5832 
5833 
5834 
5835 const extended::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = {
5836  kZoneRulesPakistan /*rules*/,
5837  nullptr /*letters*/,
5838  6 /*numRules*/,
5839  0 /*numLetters*/,
5840 };
5841 
5842 //---------------------------------------------------------------------------
5843 // Policy name: Palestine
5844 // Rules: 33
5845 // Memory (8-bit): 303
5846 // Memory (32-bit): 408
5847 //---------------------------------------------------------------------------
5848 
5849 static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = {
5850  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5851  {
5852  -127 /*fromYearTiny*/,
5853  -127 /*toYearTiny*/,
5854  1 /*inMonth*/,
5855  0 /*onDayOfWeek*/,
5856  1 /*onDayOfMonth*/,
5857  0 /*atTimeCode*/,
5858  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5859  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5860  '-' /*letter*/,
5861  },
5862  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
5863  {
5864  -1 /*fromYearTiny*/,
5865  5 /*toYearTiny*/,
5866  4 /*inMonth*/,
5867  5 /*onDayOfWeek*/,
5868  15 /*onDayOfMonth*/,
5869  0 /*atTimeCode*/,
5870  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5871  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5872  'S' /*letter*/,
5873  },
5874  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5875  {
5876  -1 /*fromYearTiny*/,
5877  3 /*toYearTiny*/,
5878  10 /*inMonth*/,
5879  5 /*onDayOfWeek*/,
5880  15 /*onDayOfMonth*/,
5881  0 /*atTimeCode*/,
5882  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5883  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5884  '-' /*letter*/,
5885  },
5886  // Rule Palestine 2004 only - Oct 1 1:00 0 -
5887  {
5888  4 /*fromYearTiny*/,
5889  4 /*toYearTiny*/,
5890  10 /*inMonth*/,
5891  0 /*onDayOfWeek*/,
5892  1 /*onDayOfMonth*/,
5893  4 /*atTimeCode*/,
5894  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5895  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5896  '-' /*letter*/,
5897  },
5898  // Rule Palestine 2005 only - Oct 4 2:00 0 -
5899  {
5900  5 /*fromYearTiny*/,
5901  5 /*toYearTiny*/,
5902  10 /*inMonth*/,
5903  0 /*onDayOfWeek*/,
5904  4 /*onDayOfMonth*/,
5905  8 /*atTimeCode*/,
5906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5908  '-' /*letter*/,
5909  },
5910  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
5911  {
5912  6 /*fromYearTiny*/,
5913  7 /*toYearTiny*/,
5914  4 /*inMonth*/,
5915  0 /*onDayOfWeek*/,
5916  1 /*onDayOfMonth*/,
5917  0 /*atTimeCode*/,
5918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5919  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5920  'S' /*letter*/,
5921  },
5922  // Rule Palestine 2006 only - Sep 22 0:00 0 -
5923  {
5924  6 /*fromYearTiny*/,
5925  6 /*toYearTiny*/,
5926  9 /*inMonth*/,
5927  0 /*onDayOfWeek*/,
5928  22 /*onDayOfMonth*/,
5929  0 /*atTimeCode*/,
5930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5931  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5932  '-' /*letter*/,
5933  },
5934  // Rule Palestine 2007 only - Sep 13 2:00 0 -
5935  {
5936  7 /*fromYearTiny*/,
5937  7 /*toYearTiny*/,
5938  9 /*inMonth*/,
5939  0 /*onDayOfWeek*/,
5940  13 /*onDayOfMonth*/,
5941  8 /*atTimeCode*/,
5942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5944  '-' /*letter*/,
5945  },
5946  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
5947  {
5948  8 /*fromYearTiny*/,
5949  9 /*toYearTiny*/,
5950  3 /*inMonth*/,
5951  5 /*onDayOfWeek*/,
5952  0 /*onDayOfMonth*/,
5953  0 /*atTimeCode*/,
5954  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5955  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5956  'S' /*letter*/,
5957  },
5958  // Rule Palestine 2008 only - Sep 1 0:00 0 -
5959  {
5960  8 /*fromYearTiny*/,
5961  8 /*toYearTiny*/,
5962  9 /*inMonth*/,
5963  0 /*onDayOfWeek*/,
5964  1 /*onDayOfMonth*/,
5965  0 /*atTimeCode*/,
5966  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5967  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5968  '-' /*letter*/,
5969  },
5970  // Rule Palestine 2009 only - Sep 4 1:00 0 -
5971  {
5972  9 /*fromYearTiny*/,
5973  9 /*toYearTiny*/,
5974  9 /*inMonth*/,
5975  0 /*onDayOfWeek*/,
5976  4 /*onDayOfMonth*/,
5977  4 /*atTimeCode*/,
5978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5980  '-' /*letter*/,
5981  },
5982  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
5983  {
5984  10 /*fromYearTiny*/,
5985  10 /*toYearTiny*/,
5986  3 /*inMonth*/,
5987  0 /*onDayOfWeek*/,
5988  26 /*onDayOfMonth*/,
5989  0 /*atTimeCode*/,
5990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5991  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5992  'S' /*letter*/,
5993  },
5994  // Rule Palestine 2010 only - Aug 11 0:00 0 -
5995  {
5996  10 /*fromYearTiny*/,
5997  10 /*toYearTiny*/,
5998  8 /*inMonth*/,
5999  0 /*onDayOfWeek*/,
6000  11 /*onDayOfMonth*/,
6001  0 /*atTimeCode*/,
6002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6004  '-' /*letter*/,
6005  },
6006  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
6007  {
6008  11 /*fromYearTiny*/,
6009  11 /*toYearTiny*/,
6010  4 /*inMonth*/,
6011  0 /*onDayOfWeek*/,
6012  1 /*onDayOfMonth*/,
6013  0 /*atTimeCode*/,
6014  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6015  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6016  'S' /*letter*/,
6017  },
6018  // Rule Palestine 2011 only - Aug 1 0:00 0 -
6019  {
6020  11 /*fromYearTiny*/,
6021  11 /*toYearTiny*/,
6022  8 /*inMonth*/,
6023  0 /*onDayOfWeek*/,
6024  1 /*onDayOfMonth*/,
6025  0 /*atTimeCode*/,
6026  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6027  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6028  '-' /*letter*/,
6029  },
6030  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
6031  {
6032  11 /*fromYearTiny*/,
6033  11 /*toYearTiny*/,
6034  8 /*inMonth*/,
6035  0 /*onDayOfWeek*/,
6036  30 /*onDayOfMonth*/,
6037  0 /*atTimeCode*/,
6038  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6039  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6040  'S' /*letter*/,
6041  },
6042  // Rule Palestine 2011 only - Sep 30 0:00 0 -
6043  {
6044  11 /*fromYearTiny*/,
6045  11 /*toYearTiny*/,
6046  9 /*inMonth*/,
6047  0 /*onDayOfWeek*/,
6048  30 /*onDayOfMonth*/,
6049  0 /*atTimeCode*/,
6050  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6051  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6052  '-' /*letter*/,
6053  },
6054  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
6055  {
6056  12 /*fromYearTiny*/,
6057  14 /*toYearTiny*/,
6058  3 /*inMonth*/,
6059  4 /*onDayOfWeek*/,
6060  0 /*onDayOfMonth*/,
6061  96 /*atTimeCode*/,
6062  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6063  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6064  'S' /*letter*/,
6065  },
6066  // Rule Palestine 2012 only - Sep 21 1:00 0 -
6067  {
6068  12 /*fromYearTiny*/,
6069  12 /*toYearTiny*/,
6070  9 /*inMonth*/,
6071  0 /*onDayOfWeek*/,
6072  21 /*onDayOfMonth*/,
6073  4 /*atTimeCode*/,
6074  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6075  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6076  '-' /*letter*/,
6077  },
6078  // Rule Palestine 2013 only - Sep 27 0:00 0 -
6079  {
6080  13 /*fromYearTiny*/,
6081  13 /*toYearTiny*/,
6082  9 /*inMonth*/,
6083  0 /*onDayOfWeek*/,
6084  27 /*onDayOfMonth*/,
6085  0 /*atTimeCode*/,
6086  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6087  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6088  '-' /*letter*/,
6089  },
6090  // Rule Palestine 2014 only - Oct 24 0:00 0 -
6091  {
6092  14 /*fromYearTiny*/,
6093  14 /*toYearTiny*/,
6094  10 /*inMonth*/,
6095  0 /*onDayOfWeek*/,
6096  24 /*onDayOfMonth*/,
6097  0 /*atTimeCode*/,
6098  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6099  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6100  '-' /*letter*/,
6101  },
6102  // Rule Palestine 2015 only - Mar 28 0:00 1:00 S
6103  {
6104  15 /*fromYearTiny*/,
6105  15 /*toYearTiny*/,
6106  3 /*inMonth*/,
6107  0 /*onDayOfWeek*/,
6108  28 /*onDayOfMonth*/,
6109  0 /*atTimeCode*/,
6110  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6111  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6112  'S' /*letter*/,
6113  },
6114  // Rule Palestine 2015 only - Oct 23 1:00 0 -
6115  {
6116  15 /*fromYearTiny*/,
6117  15 /*toYearTiny*/,
6118  10 /*inMonth*/,
6119  0 /*onDayOfWeek*/,
6120  23 /*onDayOfMonth*/,
6121  4 /*atTimeCode*/,
6122  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6123  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6124  '-' /*letter*/,
6125  },
6126  // Rule Palestine 2016 2018 - Mar Sat<=30 1:00 1:00 S
6127  {
6128  16 /*fromYearTiny*/,
6129  18 /*toYearTiny*/,
6130  3 /*inMonth*/,
6131  6 /*onDayOfWeek*/,
6132  -30 /*onDayOfMonth*/,
6133  4 /*atTimeCode*/,
6134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6135  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6136  'S' /*letter*/,
6137  },
6138  // Rule Palestine 2016 2018 - Oct Sat<=30 1:00 0 -
6139  {
6140  16 /*fromYearTiny*/,
6141  18 /*toYearTiny*/,
6142  10 /*inMonth*/,
6143  6 /*onDayOfWeek*/,
6144  -30 /*onDayOfMonth*/,
6145  4 /*atTimeCode*/,
6146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6147  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6148  '-' /*letter*/,
6149  },
6150  // Rule Palestine 2019 only - Mar 29 0:00 1:00 S
6151  {
6152  19 /*fromYearTiny*/,
6153  19 /*toYearTiny*/,
6154  3 /*inMonth*/,
6155  0 /*onDayOfWeek*/,
6156  29 /*onDayOfMonth*/,
6157  0 /*atTimeCode*/,
6158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6159  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6160  'S' /*letter*/,
6161  },
6162  // Rule Palestine 2019 only - Oct Sat<=30 0:00 0 -
6163  {
6164  19 /*fromYearTiny*/,
6165  19 /*toYearTiny*/,
6166  10 /*inMonth*/,
6167  6 /*onDayOfWeek*/,
6168  -30 /*onDayOfMonth*/,
6169  0 /*atTimeCode*/,
6170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6172  '-' /*letter*/,
6173  },
6174  // Rule Palestine 2020 2021 - Mar Sat<=30 0:00 1:00 S
6175  {
6176  20 /*fromYearTiny*/,
6177  21 /*toYearTiny*/,
6178  3 /*inMonth*/,
6179  6 /*onDayOfWeek*/,
6180  -30 /*onDayOfMonth*/,
6181  0 /*atTimeCode*/,
6182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6183  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6184  'S' /*letter*/,
6185  },
6186  // Rule Palestine 2020 only - Oct 24 1:00 0 -
6187  {
6188  20 /*fromYearTiny*/,
6189  20 /*toYearTiny*/,
6190  10 /*inMonth*/,
6191  0 /*onDayOfWeek*/,
6192  24 /*onDayOfMonth*/,
6193  4 /*atTimeCode*/,
6194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6196  '-' /*letter*/,
6197  },
6198  // Rule Palestine 2021 only - Oct 29 1:00 0 -
6199  {
6200  21 /*fromYearTiny*/,
6201  21 /*toYearTiny*/,
6202  10 /*inMonth*/,
6203  0 /*onDayOfWeek*/,
6204  29 /*onDayOfMonth*/,
6205  4 /*atTimeCode*/,
6206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6207  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6208  '-' /*letter*/,
6209  },
6210  // Rule Palestine 2022 only - Mar 27 0:00 1:00 S
6211  {
6212  22 /*fromYearTiny*/,
6213  22 /*toYearTiny*/,
6214  3 /*inMonth*/,
6215  0 /*onDayOfWeek*/,
6216  27 /*onDayOfMonth*/,
6217  0 /*atTimeCode*/,
6218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6219  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6220  'S' /*letter*/,
6221  },
6222  // Rule Palestine 2022 max - Oct Sat<=30 2:00 0 -
6223  {
6224  22 /*fromYearTiny*/,
6225  126 /*toYearTiny*/,
6226  10 /*inMonth*/,
6227  6 /*onDayOfWeek*/,
6228  -30 /*onDayOfMonth*/,
6229  8 /*atTimeCode*/,
6230  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6231  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6232  '-' /*letter*/,
6233  },
6234  // Rule Palestine 2023 max - Mar Sat<=30 2:00 1:00 S
6235  {
6236  23 /*fromYearTiny*/,
6237  126 /*toYearTiny*/,
6238  3 /*inMonth*/,
6239  6 /*onDayOfWeek*/,
6240  -30 /*onDayOfMonth*/,
6241  8 /*atTimeCode*/,
6242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6243  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6244  'S' /*letter*/,
6245  },
6246 
6247 };
6248 
6249 
6250 
6251 const extended::ZonePolicy kPolicyPalestine ACE_TIME_PROGMEM = {
6252  kZoneRulesPalestine /*rules*/,
6253  nullptr /*letters*/,
6254  33 /*numRules*/,
6255  0 /*numLetters*/,
6256 };
6257 
6258 //---------------------------------------------------------------------------
6259 // Policy name: Para
6260 // Rules: 10
6261 // Memory (8-bit): 96
6262 // Memory (32-bit): 132
6263 //---------------------------------------------------------------------------
6264 
6265 static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
6266  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
6267  {
6268  -4 /*fromYearTiny*/,
6269  1 /*toYearTiny*/,
6270  10 /*inMonth*/,
6271  7 /*onDayOfWeek*/,
6272  1 /*onDayOfMonth*/,
6273  0 /*atTimeCode*/,
6274  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6275  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6276  '-' /*letter*/,
6277  },
6278  // Rule Para 1997 only - Feb lastSun 0:00 0 -
6279  {
6280  -3 /*fromYearTiny*/,
6281  -3 /*toYearTiny*/,
6282  2 /*inMonth*/,
6283  7 /*onDayOfWeek*/,
6284  0 /*onDayOfMonth*/,
6285  0 /*atTimeCode*/,
6286  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6287  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6288  '-' /*letter*/,
6289  },
6290  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
6291  {
6292  -2 /*fromYearTiny*/,
6293  1 /*toYearTiny*/,
6294  3 /*inMonth*/,
6295  7 /*onDayOfWeek*/,
6296  1 /*onDayOfMonth*/,
6297  0 /*atTimeCode*/,
6298  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6300  '-' /*letter*/,
6301  },
6302  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
6303  {
6304  2 /*fromYearTiny*/,
6305  4 /*toYearTiny*/,
6306  4 /*inMonth*/,
6307  7 /*onDayOfWeek*/,
6308  1 /*onDayOfMonth*/,
6309  0 /*atTimeCode*/,
6310  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6311  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6312  '-' /*letter*/,
6313  },
6314  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
6315  {
6316  2 /*fromYearTiny*/,
6317  3 /*toYearTiny*/,
6318  9 /*inMonth*/,
6319  7 /*onDayOfWeek*/,
6320  1 /*onDayOfMonth*/,
6321  0 /*atTimeCode*/,
6322  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6323  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6324  '-' /*letter*/,
6325  },
6326  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
6327  {
6328  4 /*fromYearTiny*/,
6329  9 /*toYearTiny*/,
6330  10 /*inMonth*/,
6331  7 /*onDayOfWeek*/,
6332  15 /*onDayOfMonth*/,
6333  0 /*atTimeCode*/,
6334  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6335  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6336  '-' /*letter*/,
6337  },
6338  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
6339  {
6340  5 /*fromYearTiny*/,
6341  9 /*toYearTiny*/,
6342  3 /*inMonth*/,
6343  7 /*onDayOfWeek*/,
6344  8 /*onDayOfMonth*/,
6345  0 /*atTimeCode*/,
6346  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6347  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6348  '-' /*letter*/,
6349  },
6350  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
6351  {
6352  10 /*fromYearTiny*/,
6353  126 /*toYearTiny*/,
6354  10 /*inMonth*/,
6355  7 /*onDayOfWeek*/,
6356  1 /*onDayOfMonth*/,
6357  0 /*atTimeCode*/,
6358  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6359  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6360  '-' /*letter*/,
6361  },
6362  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
6363  {
6364  10 /*fromYearTiny*/,
6365  12 /*toYearTiny*/,
6366  4 /*inMonth*/,
6367  7 /*onDayOfWeek*/,
6368  8 /*onDayOfMonth*/,
6369  0 /*atTimeCode*/,
6370  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6371  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6372  '-' /*letter*/,
6373  },
6374  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
6375  {
6376  13 /*fromYearTiny*/,
6377  126 /*toYearTiny*/,
6378  3 /*inMonth*/,
6379  7 /*onDayOfWeek*/,
6380  22 /*onDayOfMonth*/,
6381  0 /*atTimeCode*/,
6382  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6383  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6384  '-' /*letter*/,
6385  },
6386 
6387 };
6388 
6389 
6390 
6391 const extended::ZonePolicy kPolicyPara ACE_TIME_PROGMEM = {
6392  kZoneRulesPara /*rules*/,
6393  nullptr /*letters*/,
6394  10 /*numRules*/,
6395  0 /*numLetters*/,
6396 };
6397 
6398 //---------------------------------------------------------------------------
6399 // Policy name: Peru
6400 // Rules: 1
6401 // Memory (8-bit): 15
6402 // Memory (32-bit): 24
6403 //---------------------------------------------------------------------------
6404 
6405 static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
6406  // Rule Peru 1994 only - Apr 1 0:00 0 -
6407  {
6408  -6 /*fromYearTiny*/,
6409  -6 /*toYearTiny*/,
6410  4 /*inMonth*/,
6411  0 /*onDayOfWeek*/,
6412  1 /*onDayOfMonth*/,
6413  0 /*atTimeCode*/,
6414  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6415  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6416  '-' /*letter*/,
6417  },
6418 
6419 };
6420 
6421 
6422 
6423 const extended::ZonePolicy kPolicyPeru ACE_TIME_PROGMEM = {
6424  kZoneRulesPeru /*rules*/,
6425  nullptr /*letters*/,
6426  1 /*numRules*/,
6427  0 /*numLetters*/,
6428 };
6429 
6430 //---------------------------------------------------------------------------
6431 // Policy name: Phil
6432 // Rules: 1
6433 // Memory (8-bit): 15
6434 // Memory (32-bit): 24
6435 //---------------------------------------------------------------------------
6436 
6437 static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
6438  // Rule Phil 1978 only - Sep 21 0:00 0 S
6439  {
6440  -22 /*fromYearTiny*/,
6441  -22 /*toYearTiny*/,
6442  9 /*inMonth*/,
6443  0 /*onDayOfWeek*/,
6444  21 /*onDayOfMonth*/,
6445  0 /*atTimeCode*/,
6446  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6447  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6448  'S' /*letter*/,
6449  },
6450 
6451 };
6452 
6453 
6454 
6455 const extended::ZonePolicy kPolicyPhil ACE_TIME_PROGMEM = {
6456  kZoneRulesPhil /*rules*/,
6457  nullptr /*letters*/,
6458  1 /*numRules*/,
6459  0 /*numLetters*/,
6460 };
6461 
6462 //---------------------------------------------------------------------------
6463 // Policy name: ROK
6464 // Rules: 1
6465 // Memory (8-bit): 15
6466 // Memory (32-bit): 24
6467 //---------------------------------------------------------------------------
6468 
6469 static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
6470  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
6471  {
6472  -13 /*fromYearTiny*/,
6473  -12 /*toYearTiny*/,
6474  10 /*inMonth*/,
6475  7 /*onDayOfWeek*/,
6476  8 /*onDayOfMonth*/,
6477  12 /*atTimeCode*/,
6478  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6479  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6480  'S' /*letter*/,
6481  },
6482 
6483 };
6484 
6485 
6486 
6487 const extended::ZonePolicy kPolicyROK ACE_TIME_PROGMEM = {
6488  kZoneRulesROK /*rules*/,
6489  nullptr /*letters*/,
6490  1 /*numRules*/,
6491  0 /*numLetters*/,
6492 };
6493 
6494 //---------------------------------------------------------------------------
6495 // Policy name: Russia
6496 // Rules: 3
6497 // Memory (8-bit): 33
6498 // Memory (32-bit): 48
6499 //---------------------------------------------------------------------------
6500 
6501 static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = {
6502  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
6503  {
6504  -16 /*fromYearTiny*/,
6505  -5 /*toYearTiny*/,
6506  9 /*inMonth*/,
6507  7 /*onDayOfWeek*/,
6508  0 /*onDayOfMonth*/,
6509  8 /*atTimeCode*/,
6510  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6511  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6512  '-' /*letter*/,
6513  },
6514  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
6515  {
6516  -15 /*fromYearTiny*/,
6517  10 /*toYearTiny*/,
6518  3 /*inMonth*/,
6519  7 /*onDayOfWeek*/,
6520  0 /*onDayOfMonth*/,
6521  8 /*atTimeCode*/,
6522  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6523  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6524  'S' /*letter*/,
6525  },
6526  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
6527  {
6528  -4 /*fromYearTiny*/,
6529  10 /*toYearTiny*/,
6530  10 /*inMonth*/,
6531  7 /*onDayOfWeek*/,
6532  0 /*onDayOfMonth*/,
6533  8 /*atTimeCode*/,
6534  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6535  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6536  '-' /*letter*/,
6537  },
6538 
6539 };
6540 
6541 
6542 
6543 const extended::ZonePolicy kPolicyRussia ACE_TIME_PROGMEM = {
6544  kZoneRulesRussia /*rules*/,
6545  nullptr /*letters*/,
6546  3 /*numRules*/,
6547  0 /*numLetters*/,
6548 };
6549 
6550 //---------------------------------------------------------------------------
6551 // Policy name: RussiaAsia
6552 // Rules: 3
6553 // Memory (8-bit): 33
6554 // Memory (32-bit): 48
6555 //---------------------------------------------------------------------------
6556 
6557 static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
6558  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
6559  {
6560  -16 /*fromYearTiny*/,
6561  -5 /*toYearTiny*/,
6562  9 /*inMonth*/,
6563  7 /*onDayOfWeek*/,
6564  0 /*onDayOfMonth*/,
6565  8 /*atTimeCode*/,
6566  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6567  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6568  '-' /*letter*/,
6569  },
6570  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
6571  {
6572  -15 /*fromYearTiny*/,
6573  10 /*toYearTiny*/,
6574  3 /*inMonth*/,
6575  7 /*onDayOfWeek*/,
6576  0 /*onDayOfMonth*/,
6577  8 /*atTimeCode*/,
6578  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6579  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6580  '-' /*letter*/,
6581  },
6582  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
6583  {
6584  -4 /*fromYearTiny*/,
6585  10 /*toYearTiny*/,
6586  10 /*inMonth*/,
6587  7 /*onDayOfWeek*/,
6588  0 /*onDayOfMonth*/,
6589  8 /*atTimeCode*/,
6590  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6591  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6592  '-' /*letter*/,
6593  },
6594 
6595 };
6596 
6597 
6598 
6599 const extended::ZonePolicy kPolicyRussiaAsia ACE_TIME_PROGMEM = {
6600  kZoneRulesRussiaAsia /*rules*/,
6601  nullptr /*letters*/,
6602  3 /*numRules*/,
6603  0 /*numLetters*/,
6604 };
6605 
6606 //---------------------------------------------------------------------------
6607 // Policy name: SA
6608 // Rules: 1
6609 // Memory (8-bit): 15
6610 // Memory (32-bit): 24
6611 //---------------------------------------------------------------------------
6612 
6613 static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
6614  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
6615  {
6616  -57 /*fromYearTiny*/,
6617  -56 /*toYearTiny*/,
6618  3 /*inMonth*/,
6619  7 /*onDayOfWeek*/,
6620  15 /*onDayOfMonth*/,
6621  8 /*atTimeCode*/,
6622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6623  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6624  '-' /*letter*/,
6625  },
6626 
6627 };
6628 
6629 
6630 
6631 const extended::ZonePolicy kPolicySA ACE_TIME_PROGMEM = {
6632  kZoneRulesSA /*rules*/,
6633  nullptr /*letters*/,
6634  1 /*numRules*/,
6635  0 /*numLetters*/,
6636 };
6637 
6638 //---------------------------------------------------------------------------
6639 // Policy name: Salv
6640 // Rules: 1
6641 // Memory (8-bit): 15
6642 // Memory (32-bit): 24
6643 //---------------------------------------------------------------------------
6644 
6645 static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
6646  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
6647  {
6648  -13 /*fromYearTiny*/,
6649  -12 /*toYearTiny*/,
6650  9 /*inMonth*/,
6651  7 /*onDayOfWeek*/,
6652  0 /*onDayOfMonth*/,
6653  0 /*atTimeCode*/,
6654  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6655  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6656  'S' /*letter*/,
6657  },
6658 
6659 };
6660 
6661 
6662 
6663 const extended::ZonePolicy kPolicySalv ACE_TIME_PROGMEM = {
6664  kZoneRulesSalv /*rules*/,
6665  nullptr /*letters*/,
6666  1 /*numRules*/,
6667  0 /*numLetters*/,
6668 };
6669 
6670 //---------------------------------------------------------------------------
6671 // Policy name: SanLuis
6672 // Rules: 3
6673 // Memory (8-bit): 33
6674 // Memory (32-bit): 48
6675 //---------------------------------------------------------------------------
6676 
6677 static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = {
6678  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6679  {
6680  -127 /*fromYearTiny*/,
6681  -127 /*toYearTiny*/,
6682  1 /*inMonth*/,
6683  0 /*onDayOfWeek*/,
6684  1 /*onDayOfMonth*/,
6685  0 /*atTimeCode*/,
6686  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6687  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6688  '-' /*letter*/,
6689  },
6690  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6691  {
6692  8 /*fromYearTiny*/,
6693  9 /*toYearTiny*/,
6694  3 /*inMonth*/,
6695  7 /*onDayOfWeek*/,
6696  8 /*onDayOfMonth*/,
6697  0 /*atTimeCode*/,
6698  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6699  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6700  '-' /*letter*/,
6701  },
6702  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
6703  {
6704  7 /*fromYearTiny*/,
6705  8 /*toYearTiny*/,
6706  10 /*inMonth*/,
6707  7 /*onDayOfWeek*/,
6708  8 /*onDayOfMonth*/,
6709  0 /*atTimeCode*/,
6710  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6711  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6712  '-' /*letter*/,
6713  },
6714 
6715 };
6716 
6717 
6718 
6719 const extended::ZonePolicy kPolicySanLuis ACE_TIME_PROGMEM = {
6720  kZoneRulesSanLuis /*rules*/,
6721  nullptr /*letters*/,
6722  3 /*numRules*/,
6723  0 /*numLetters*/,
6724 };
6725 
6726 //---------------------------------------------------------------------------
6727 // Policy name: StJohns
6728 // Rules: 5
6729 // Memory (8-bit): 56
6730 // Memory (32-bit): 79
6731 //---------------------------------------------------------------------------
6732 
6733 static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = {
6734  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
6735  {
6736  -13 /*fromYearTiny*/,
6737  6 /*toYearTiny*/,
6738  10 /*inMonth*/,
6739  7 /*onDayOfWeek*/,
6740  0 /*onDayOfMonth*/,
6741  0 /*atTimeCode*/,
6742  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6743  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6744  'S' /*letter*/,
6745  },
6746  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
6747  {
6748  -12 /*fromYearTiny*/,
6749  -12 /*toYearTiny*/,
6750  4 /*inMonth*/,
6751  7 /*onDayOfWeek*/,
6752  1 /*onDayOfMonth*/,
6753  0 /*atTimeCode*/,
6754  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6755  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
6756  0 /*letter (index to "DD")*/,
6757  },
6758  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
6759  {
6760  -11 /*fromYearTiny*/,
6761  6 /*toYearTiny*/,
6762  4 /*inMonth*/,
6763  7 /*onDayOfWeek*/,
6764  1 /*onDayOfMonth*/,
6765  0 /*atTimeCode*/,
6766  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6767  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6768  'D' /*letter*/,
6769  },
6770  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
6771  {
6772  7 /*fromYearTiny*/,
6773  11 /*toYearTiny*/,
6774  3 /*inMonth*/,
6775  7 /*onDayOfWeek*/,
6776  8 /*onDayOfMonth*/,
6777  0 /*atTimeCode*/,
6778  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6779  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6780  'D' /*letter*/,
6781  },
6782  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
6783  {
6784  7 /*fromYearTiny*/,
6785  10 /*toYearTiny*/,
6786  11 /*inMonth*/,
6787  7 /*onDayOfWeek*/,
6788  1 /*onDayOfMonth*/,
6789  0 /*atTimeCode*/,
6790  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6791  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6792  'S' /*letter*/,
6793  },
6794 
6795 };
6796 
6797 static const char* const kLettersStJohns[] ACE_TIME_PROGMEM = {
6798  /*0*/ "DD",
6799 
6800 };
6801 
6802 
6803 const extended::ZonePolicy kPolicyStJohns ACE_TIME_PROGMEM = {
6804  kZoneRulesStJohns /*rules*/,
6805  kLettersStJohns /*letters*/,
6806  5 /*numRules*/,
6807  1 /*numLetters*/,
6808 };
6809 
6810 //---------------------------------------------------------------------------
6811 // Policy name: Sudan
6812 // Rules: 1
6813 // Memory (8-bit): 15
6814 // Memory (32-bit): 24
6815 //---------------------------------------------------------------------------
6816 
6817 static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = {
6818  // Rule Sudan 1970 1985 - Oct 15 0:00 0 -
6819  {
6820  -30 /*fromYearTiny*/,
6821  -15 /*toYearTiny*/,
6822  10 /*inMonth*/,
6823  0 /*onDayOfWeek*/,
6824  15 /*onDayOfMonth*/,
6825  0 /*atTimeCode*/,
6826  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6827  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6828  '-' /*letter*/,
6829  },
6830 
6831 };
6832 
6833 
6834 
6835 const extended::ZonePolicy kPolicySudan ACE_TIME_PROGMEM = {
6836  kZoneRulesSudan /*rules*/,
6837  nullptr /*letters*/,
6838  1 /*numRules*/,
6839  0 /*numLetters*/,
6840 };
6841 
6842 //---------------------------------------------------------------------------
6843 // Policy name: Syria
6844 // Rules: 12
6845 // Memory (8-bit): 114
6846 // Memory (32-bit): 156
6847 //---------------------------------------------------------------------------
6848 
6849 static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
6850  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
6851  {
6852  -6 /*fromYearTiny*/,
6853  5 /*toYearTiny*/,
6854  10 /*inMonth*/,
6855  0 /*onDayOfWeek*/,
6856  1 /*onDayOfMonth*/,
6857  0 /*atTimeCode*/,
6858  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6859  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6860  '-' /*letter*/,
6861  },
6862  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
6863  {
6864  -3 /*fromYearTiny*/,
6865  -2 /*toYearTiny*/,
6866  3 /*inMonth*/,
6867  1 /*onDayOfWeek*/,
6868  0 /*onDayOfMonth*/,
6869  0 /*atTimeCode*/,
6870  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6871  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6872  'S' /*letter*/,
6873  },
6874  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
6875  {
6876  -1 /*fromYearTiny*/,
6877  6 /*toYearTiny*/,
6878  4 /*inMonth*/,
6879  0 /*onDayOfWeek*/,
6880  1 /*onDayOfMonth*/,
6881  0 /*atTimeCode*/,
6882  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6883  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6884  'S' /*letter*/,
6885  },
6886  // Rule Syria 2006 only - Sep 22 0:00 0 -
6887  {
6888  6 /*fromYearTiny*/,
6889  6 /*toYearTiny*/,
6890  9 /*inMonth*/,
6891  0 /*onDayOfWeek*/,
6892  22 /*onDayOfMonth*/,
6893  0 /*atTimeCode*/,
6894  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6895  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6896  '-' /*letter*/,
6897  },
6898  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
6899  {
6900  7 /*fromYearTiny*/,
6901  7 /*toYearTiny*/,
6902  3 /*inMonth*/,
6903  5 /*onDayOfWeek*/,
6904  0 /*onDayOfMonth*/,
6905  0 /*atTimeCode*/,
6906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6907  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6908  'S' /*letter*/,
6909  },
6910  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
6911  {
6912  7 /*fromYearTiny*/,
6913  7 /*toYearTiny*/,
6914  11 /*inMonth*/,
6915  5 /*onDayOfWeek*/,
6916  1 /*onDayOfMonth*/,
6917  0 /*atTimeCode*/,
6918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6919  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6920  '-' /*letter*/,
6921  },
6922  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
6923  {
6924  8 /*fromYearTiny*/,
6925  8 /*toYearTiny*/,
6926  4 /*inMonth*/,
6927  5 /*onDayOfWeek*/,
6928  1 /*onDayOfMonth*/,
6929  0 /*atTimeCode*/,
6930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6931  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6932  'S' /*letter*/,
6933  },
6934  // Rule Syria 2008 only - Nov 1 0:00 0 -
6935  {
6936  8 /*fromYearTiny*/,
6937  8 /*toYearTiny*/,
6938  11 /*inMonth*/,
6939  0 /*onDayOfWeek*/,
6940  1 /*onDayOfMonth*/,
6941  0 /*atTimeCode*/,
6942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6944  '-' /*letter*/,
6945  },
6946  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
6947  {
6948  9 /*fromYearTiny*/,
6949  9 /*toYearTiny*/,
6950  3 /*inMonth*/,
6951  5 /*onDayOfWeek*/,
6952  0 /*onDayOfMonth*/,
6953  0 /*atTimeCode*/,
6954  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6955  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6956  'S' /*letter*/,
6957  },
6958  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
6959  {
6960  10 /*fromYearTiny*/,
6961  11 /*toYearTiny*/,
6962  4 /*inMonth*/,
6963  5 /*onDayOfWeek*/,
6964  1 /*onDayOfMonth*/,
6965  0 /*atTimeCode*/,
6966  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6967  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6968  'S' /*letter*/,
6969  },
6970  // Rule Syria 2012 2022 - Mar lastFri 0:00 1:00 S
6971  {
6972  12 /*fromYearTiny*/,
6973  22 /*toYearTiny*/,
6974  3 /*inMonth*/,
6975  5 /*onDayOfWeek*/,
6976  0 /*onDayOfMonth*/,
6977  0 /*atTimeCode*/,
6978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6979  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6980  'S' /*letter*/,
6981  },
6982  // Rule Syria 2009 2022 - Oct lastFri 0:00 0 -
6983  {
6984  9 /*fromYearTiny*/,
6985  22 /*toYearTiny*/,
6986  10 /*inMonth*/,
6987  5 /*onDayOfWeek*/,
6988  0 /*onDayOfMonth*/,
6989  0 /*atTimeCode*/,
6990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6991  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6992  '-' /*letter*/,
6993  },
6994 
6995 };
6996 
6997 
6998 
6999 const extended::ZonePolicy kPolicySyria ACE_TIME_PROGMEM = {
7000  kZoneRulesSyria /*rules*/,
7001  nullptr /*letters*/,
7002  12 /*numRules*/,
7003  0 /*numLetters*/,
7004 };
7005 
7006 //---------------------------------------------------------------------------
7007 // Policy name: Taiwan
7008 // Rules: 1
7009 // Memory (8-bit): 15
7010 // Memory (32-bit): 24
7011 //---------------------------------------------------------------------------
7012 
7013 static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
7014  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
7015  {
7016  -21 /*fromYearTiny*/,
7017  -21 /*toYearTiny*/,
7018  10 /*inMonth*/,
7019  0 /*onDayOfWeek*/,
7020  1 /*onDayOfMonth*/,
7021  0 /*atTimeCode*/,
7022  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7023  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7024  'S' /*letter*/,
7025  },
7026 
7027 };
7028 
7029 
7030 
7031 const extended::ZonePolicy kPolicyTaiwan ACE_TIME_PROGMEM = {
7032  kZoneRulesTaiwan /*rules*/,
7033  nullptr /*letters*/,
7034  1 /*numRules*/,
7035  0 /*numLetters*/,
7036 };
7037 
7038 //---------------------------------------------------------------------------
7039 // Policy name: Thule
7040 // Rules: 5
7041 // Memory (8-bit): 51
7042 // Memory (32-bit): 72
7043 //---------------------------------------------------------------------------
7044 
7045 static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
7046  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
7047  {
7048  -9 /*fromYearTiny*/,
7049  -8 /*toYearTiny*/,
7050  9 /*inMonth*/,
7051  7 /*onDayOfWeek*/,
7052  0 /*onDayOfMonth*/,
7053  8 /*atTimeCode*/,
7054  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7055  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7056  'S' /*letter*/,
7057  },
7058  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
7059  {
7060  -7 /*fromYearTiny*/,
7061  6 /*toYearTiny*/,
7062  4 /*inMonth*/,
7063  7 /*onDayOfWeek*/,
7064  1 /*onDayOfMonth*/,
7065  8 /*atTimeCode*/,
7066  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7067  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7068  'D' /*letter*/,
7069  },
7070  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
7071  {
7072  -7 /*fromYearTiny*/,
7073  6 /*toYearTiny*/,
7074  10 /*inMonth*/,
7075  7 /*onDayOfWeek*/,
7076  0 /*onDayOfMonth*/,
7077  8 /*atTimeCode*/,
7078  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7079  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7080  'S' /*letter*/,
7081  },
7082  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
7083  {
7084  7 /*fromYearTiny*/,
7085  126 /*toYearTiny*/,
7086  3 /*inMonth*/,
7087  7 /*onDayOfWeek*/,
7088  8 /*onDayOfMonth*/,
7089  8 /*atTimeCode*/,
7090  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7091  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7092  'D' /*letter*/,
7093  },
7094  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
7095  {
7096  7 /*fromYearTiny*/,
7097  126 /*toYearTiny*/,
7098  11 /*inMonth*/,
7099  7 /*onDayOfWeek*/,
7100  1 /*onDayOfMonth*/,
7101  8 /*atTimeCode*/,
7102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7104  'S' /*letter*/,
7105  },
7106 
7107 };
7108 
7109 
7110 
7111 const extended::ZonePolicy kPolicyThule ACE_TIME_PROGMEM = {
7112  kZoneRulesThule /*rules*/,
7113  nullptr /*letters*/,
7114  5 /*numRules*/,
7115  0 /*numLetters*/,
7116 };
7117 
7118 //---------------------------------------------------------------------------
7119 // Policy name: Tonga
7120 // Rules: 7
7121 // Memory (8-bit): 69
7122 // Memory (32-bit): 96
7123 //---------------------------------------------------------------------------
7124 
7125 static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
7126  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
7127  {
7128  -127 /*fromYearTiny*/,
7129  -127 /*toYearTiny*/,
7130  1 /*inMonth*/,
7131  0 /*onDayOfWeek*/,
7132  1 /*onDayOfMonth*/,
7133  0 /*atTimeCode*/,
7134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7135  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7136  '-' /*letter*/,
7137  },
7138  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
7139  {
7140  -1 /*fromYearTiny*/,
7141  -1 /*toYearTiny*/,
7142  10 /*inMonth*/,
7143  0 /*onDayOfWeek*/,
7144  7 /*onDayOfMonth*/,
7145  8 /*atTimeCode*/,
7146  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7147  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7148  '-' /*letter*/,
7149  },
7150  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
7151  {
7152  0 /*fromYearTiny*/,
7153  0 /*toYearTiny*/,
7154  3 /*inMonth*/,
7155  0 /*onDayOfWeek*/,
7156  19 /*onDayOfMonth*/,
7157  8 /*atTimeCode*/,
7158  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7160  '-' /*letter*/,
7161  },
7162  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
7163  {
7164  0 /*fromYearTiny*/,
7165  1 /*toYearTiny*/,
7166  11 /*inMonth*/,
7167  7 /*onDayOfWeek*/,
7168  1 /*onDayOfMonth*/,
7169  8 /*atTimeCode*/,
7170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7171  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7172  '-' /*letter*/,
7173  },
7174  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
7175  {
7176  1 /*fromYearTiny*/,
7177  2 /*toYearTiny*/,
7178  1 /*inMonth*/,
7179  7 /*onDayOfWeek*/,
7180  0 /*onDayOfMonth*/,
7181  8 /*atTimeCode*/,
7182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7184  '-' /*letter*/,
7185  },
7186  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
7187  {
7188  16 /*fromYearTiny*/,
7189  16 /*toYearTiny*/,
7190  11 /*inMonth*/,
7191  7 /*onDayOfWeek*/,
7192  1 /*onDayOfMonth*/,
7193  8 /*atTimeCode*/,
7194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7195  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7196  '-' /*letter*/,
7197  },
7198  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
7199  {
7200  17 /*fromYearTiny*/,
7201  17 /*toYearTiny*/,
7202  1 /*inMonth*/,
7203  7 /*onDayOfWeek*/,
7204  15 /*onDayOfMonth*/,
7205  12 /*atTimeCode*/,
7206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7207  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7208  '-' /*letter*/,
7209  },
7210 
7211 };
7212 
7213 
7214 
7215 const extended::ZonePolicy kPolicyTonga ACE_TIME_PROGMEM = {
7216  kZoneRulesTonga /*rules*/,
7217  nullptr /*letters*/,
7218  7 /*numRules*/,
7219  0 /*numLetters*/,
7220 };
7221 
7222 //---------------------------------------------------------------------------
7223 // Policy name: Troll
7224 // Rules: 3
7225 // Memory (8-bit): 45
7226 // Memory (32-bit): 64
7227 //---------------------------------------------------------------------------
7228 
7229 static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = {
7230  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7231  {
7232  -127 /*fromYearTiny*/,
7233  -127 /*toYearTiny*/,
7234  1 /*inMonth*/,
7235  0 /*onDayOfWeek*/,
7236  1 /*onDayOfMonth*/,
7237  0 /*atTimeCode*/,
7238  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7239  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7240  0 /*letter (index to "+00")*/,
7241  },
7242  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
7243  {
7244  5 /*fromYearTiny*/,
7245  126 /*toYearTiny*/,
7246  3 /*inMonth*/,
7247  7 /*onDayOfWeek*/,
7248  0 /*onDayOfMonth*/,
7249  4 /*atTimeCode*/,
7250  32 /*atTimeModifier (kSuffixU + minute=0)*/,
7251  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
7252  1 /*letter (index to "+02")*/,
7253  },
7254  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7255  {
7256  4 /*fromYearTiny*/,
7257  126 /*toYearTiny*/,
7258  10 /*inMonth*/,
7259  7 /*onDayOfWeek*/,
7260  0 /*onDayOfMonth*/,
7261  4 /*atTimeCode*/,
7262  32 /*atTimeModifier (kSuffixU + minute=0)*/,
7263  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7264  0 /*letter (index to "+00")*/,
7265  },
7266 
7267 };
7268 
7269 static const char* const kLettersTroll[] ACE_TIME_PROGMEM = {
7270  /*0*/ "+00",
7271  /*1*/ "+02",
7272 
7273 };
7274 
7275 
7276 const extended::ZonePolicy kPolicyTroll ACE_TIME_PROGMEM = {
7277  kZoneRulesTroll /*rules*/,
7278  kLettersTroll /*letters*/,
7279  3 /*numRules*/,
7280  2 /*numLetters*/,
7281 };
7282 
7283 //---------------------------------------------------------------------------
7284 // Policy name: Tunisia
7285 // Rules: 5
7286 // Memory (8-bit): 51
7287 // Memory (32-bit): 72
7288 //---------------------------------------------------------------------------
7289 
7290 static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
7291  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
7292  {
7293  -12 /*fromYearTiny*/,
7294  -10 /*toYearTiny*/,
7295  9 /*inMonth*/,
7296  7 /*onDayOfWeek*/,
7297  0 /*onDayOfMonth*/,
7298  0 /*atTimeCode*/,
7299  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7300  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7301  '-' /*letter*/,
7302  },
7303  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
7304  {
7305  5 /*fromYearTiny*/,
7306  5 /*toYearTiny*/,
7307  5 /*inMonth*/,
7308  0 /*onDayOfWeek*/,
7309  1 /*onDayOfMonth*/,
7310  0 /*atTimeCode*/,
7311  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7312  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7313  'S' /*letter*/,
7314  },
7315  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
7316  {
7317  5 /*fromYearTiny*/,
7318  5 /*toYearTiny*/,
7319  9 /*inMonth*/,
7320  0 /*onDayOfWeek*/,
7321  30 /*onDayOfMonth*/,
7322  4 /*atTimeCode*/,
7323  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7324  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7325  '-' /*letter*/,
7326  },
7327  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
7328  {
7329  6 /*fromYearTiny*/,
7330  8 /*toYearTiny*/,
7331  3 /*inMonth*/,
7332  7 /*onDayOfWeek*/,
7333  0 /*onDayOfMonth*/,
7334  8 /*atTimeCode*/,
7335  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7336  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7337  'S' /*letter*/,
7338  },
7339  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
7340  {
7341  6 /*fromYearTiny*/,
7342  8 /*toYearTiny*/,
7343  10 /*inMonth*/,
7344  7 /*onDayOfWeek*/,
7345  0 /*onDayOfMonth*/,
7346  8 /*atTimeCode*/,
7347  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7348  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7349  '-' /*letter*/,
7350  },
7351 
7352 };
7353 
7354 
7355 
7356 const extended::ZonePolicy kPolicyTunisia ACE_TIME_PROGMEM = {
7357  kZoneRulesTunisia /*rules*/,
7358  nullptr /*letters*/,
7359  5 /*numRules*/,
7360  0 /*numLetters*/,
7361 };
7362 
7363 //---------------------------------------------------------------------------
7364 // Policy name: Turkey
7365 // Rules: 3
7366 // Memory (8-bit): 33
7367 // Memory (32-bit): 48
7368 //---------------------------------------------------------------------------
7369 
7370 static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = {
7371  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
7372  {
7373  -14 /*fromYearTiny*/,
7374  -5 /*toYearTiny*/,
7375  9 /*inMonth*/,
7376  7 /*onDayOfWeek*/,
7377  0 /*onDayOfMonth*/,
7378  4 /*atTimeCode*/,
7379  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7380  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7381  '-' /*letter*/,
7382  },
7383  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
7384  {
7385  -5 /*fromYearTiny*/,
7386  6 /*toYearTiny*/,
7387  3 /*inMonth*/,
7388  7 /*onDayOfWeek*/,
7389  0 /*onDayOfMonth*/,
7390  4 /*atTimeCode*/,
7391  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7392  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7393  'S' /*letter*/,
7394  },
7395  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
7396  {
7397  -4 /*fromYearTiny*/,
7398  6 /*toYearTiny*/,
7399  10 /*inMonth*/,
7400  7 /*onDayOfWeek*/,
7401  0 /*onDayOfMonth*/,
7402  4 /*atTimeCode*/,
7403  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7404  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7405  '-' /*letter*/,
7406  },
7407 
7408 };
7409 
7410 
7411 
7412 const extended::ZonePolicy kPolicyTurkey ACE_TIME_PROGMEM = {
7413  kZoneRulesTurkey /*rules*/,
7414  nullptr /*letters*/,
7415  3 /*numRules*/,
7416  0 /*numLetters*/,
7417 };
7418 
7419 //---------------------------------------------------------------------------
7420 // Policy name: US
7421 // Rules: 5
7422 // Memory (8-bit): 51
7423 // Memory (32-bit): 72
7424 //---------------------------------------------------------------------------
7425 
7426 static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
7427  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
7428  {
7429  -33 /*fromYearTiny*/,
7430  6 /*toYearTiny*/,
7431  10 /*inMonth*/,
7432  7 /*onDayOfWeek*/,
7433  0 /*onDayOfMonth*/,
7434  8 /*atTimeCode*/,
7435  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7436  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7437  'S' /*letter*/,
7438  },
7439  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
7440  {
7441  -24 /*fromYearTiny*/,
7442  -14 /*toYearTiny*/,
7443  4 /*inMonth*/,
7444  7 /*onDayOfWeek*/,
7445  0 /*onDayOfMonth*/,
7446  8 /*atTimeCode*/,
7447  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7448  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7449  'D' /*letter*/,
7450  },
7451  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
7452  {
7453  -13 /*fromYearTiny*/,
7454  6 /*toYearTiny*/,
7455  4 /*inMonth*/,
7456  7 /*onDayOfWeek*/,
7457  1 /*onDayOfMonth*/,
7458  8 /*atTimeCode*/,
7459  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7460  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7461  'D' /*letter*/,
7462  },
7463  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
7464  {
7465  7 /*fromYearTiny*/,
7466  126 /*toYearTiny*/,
7467  3 /*inMonth*/,
7468  7 /*onDayOfWeek*/,
7469  8 /*onDayOfMonth*/,
7470  8 /*atTimeCode*/,
7471  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7472  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7473  'D' /*letter*/,
7474  },
7475  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
7476  {
7477  7 /*fromYearTiny*/,
7478  126 /*toYearTiny*/,
7479  11 /*inMonth*/,
7480  7 /*onDayOfWeek*/,
7481  1 /*onDayOfMonth*/,
7482  8 /*atTimeCode*/,
7483  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7484  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7485  'S' /*letter*/,
7486  },
7487 
7488 };
7489 
7490 
7491 
7492 const extended::ZonePolicy kPolicyUS ACE_TIME_PROGMEM = {
7493  kZoneRulesUS /*rules*/,
7494  nullptr /*letters*/,
7495  5 /*numRules*/,
7496  0 /*numLetters*/,
7497 };
7498 
7499 //---------------------------------------------------------------------------
7500 // Policy name: Uruguay
7501 // Rules: 6
7502 // Memory (8-bit): 60
7503 // Memory (32-bit): 84
7504 //---------------------------------------------------------------------------
7505 
7506 static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
7507  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
7508  {
7509  -7 /*fromYearTiny*/,
7510  -7 /*toYearTiny*/,
7511  2 /*inMonth*/,
7512  0 /*onDayOfWeek*/,
7513  28 /*onDayOfMonth*/,
7514  0 /*atTimeCode*/,
7515  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7516  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7517  '-' /*letter*/,
7518  },
7519  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
7520  {
7521  4 /*fromYearTiny*/,
7522  4 /*toYearTiny*/,
7523  9 /*inMonth*/,
7524  0 /*onDayOfWeek*/,
7525  19 /*onDayOfMonth*/,
7526  0 /*atTimeCode*/,
7527  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7528  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7529  '-' /*letter*/,
7530  },
7531  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
7532  {
7533  5 /*fromYearTiny*/,
7534  5 /*toYearTiny*/,
7535  3 /*inMonth*/,
7536  0 /*onDayOfWeek*/,
7537  27 /*onDayOfMonth*/,
7538  8 /*atTimeCode*/,
7539  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7540  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7541  '-' /*letter*/,
7542  },
7543  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
7544  {
7545  5 /*fromYearTiny*/,
7546  5 /*toYearTiny*/,
7547  10 /*inMonth*/,
7548  0 /*onDayOfWeek*/,
7549  9 /*onDayOfMonth*/,
7550  8 /*atTimeCode*/,
7551  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7552  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7553  '-' /*letter*/,
7554  },
7555  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
7556  {
7557  6 /*fromYearTiny*/,
7558  15 /*toYearTiny*/,
7559  3 /*inMonth*/,
7560  7 /*onDayOfWeek*/,
7561  8 /*onDayOfMonth*/,
7562  8 /*atTimeCode*/,
7563  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7564  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7565  '-' /*letter*/,
7566  },
7567  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
7568  {
7569  6 /*fromYearTiny*/,
7570  14 /*toYearTiny*/,
7571  10 /*inMonth*/,
7572  7 /*onDayOfWeek*/,
7573  1 /*onDayOfMonth*/,
7574  8 /*atTimeCode*/,
7575  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7576  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7577  '-' /*letter*/,
7578  },
7579 
7580 };
7581 
7582 
7583 
7584 const extended::ZonePolicy kPolicyUruguay ACE_TIME_PROGMEM = {
7585  kZoneRulesUruguay /*rules*/,
7586  nullptr /*letters*/,
7587  6 /*numRules*/,
7588  0 /*numLetters*/,
7589 };
7590 
7591 //---------------------------------------------------------------------------
7592 // Policy name: Vanuatu
7593 // Rules: 1
7594 // Memory (8-bit): 15
7595 // Memory (32-bit): 24
7596 //---------------------------------------------------------------------------
7597 
7598 static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
7599  // Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
7600  {
7601  -8 /*fromYearTiny*/,
7602  -7 /*toYearTiny*/,
7603  1 /*inMonth*/,
7604  6 /*onDayOfWeek*/,
7605  22 /*onDayOfMonth*/,
7606  96 /*atTimeCode*/,
7607  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7608  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7609  '-' /*letter*/,
7610  },
7611 
7612 };
7613 
7614 
7615 
7616 const extended::ZonePolicy kPolicyVanuatu ACE_TIME_PROGMEM = {
7617  kZoneRulesVanuatu /*rules*/,
7618  nullptr /*letters*/,
7619  1 /*numRules*/,
7620  0 /*numLetters*/,
7621 };
7622 
7623 //---------------------------------------------------------------------------
7624 // Policy name: WS
7625 // Rules: 6
7626 // Memory (8-bit): 60
7627 // Memory (32-bit): 84
7628 //---------------------------------------------------------------------------
7629 
7630 static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
7631  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7632  {
7633  -127 /*fromYearTiny*/,
7634  -127 /*toYearTiny*/,
7635  1 /*inMonth*/,
7636  0 /*onDayOfWeek*/,
7637  1 /*onDayOfMonth*/,
7638  0 /*atTimeCode*/,
7639  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7640  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7641  '-' /*letter*/,
7642  },
7643  // Rule WS 2010 only - Sep lastSun 0:00 1 -
7644  {
7645  10 /*fromYearTiny*/,
7646  10 /*toYearTiny*/,
7647  9 /*inMonth*/,
7648  7 /*onDayOfWeek*/,
7649  0 /*onDayOfMonth*/,
7650  0 /*atTimeCode*/,
7651  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7652  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7653  '-' /*letter*/,
7654  },
7655  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7656  {
7657  11 /*fromYearTiny*/,
7658  11 /*toYearTiny*/,
7659  4 /*inMonth*/,
7660  6 /*onDayOfWeek*/,
7661  1 /*onDayOfMonth*/,
7662  16 /*atTimeCode*/,
7663  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7664  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7665  '-' /*letter*/,
7666  },
7667  // Rule WS 2011 only - Sep lastSat 3:00 1 -
7668  {
7669  11 /*fromYearTiny*/,
7670  11 /*toYearTiny*/,
7671  9 /*inMonth*/,
7672  6 /*onDayOfWeek*/,
7673  0 /*onDayOfMonth*/,
7674  12 /*atTimeCode*/,
7675  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7676  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7677  '-' /*letter*/,
7678  },
7679  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
7680  {
7681  12 /*fromYearTiny*/,
7682  21 /*toYearTiny*/,
7683  4 /*inMonth*/,
7684  7 /*onDayOfWeek*/,
7685  1 /*onDayOfMonth*/,
7686  16 /*atTimeCode*/,
7687  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7688  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7689  '-' /*letter*/,
7690  },
7691  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
7692  {
7693  12 /*fromYearTiny*/,
7694  20 /*toYearTiny*/,
7695  9 /*inMonth*/,
7696  7 /*onDayOfWeek*/,
7697  0 /*onDayOfMonth*/,
7698  12 /*atTimeCode*/,
7699  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7700  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7701  '-' /*letter*/,
7702  },
7703 
7704 };
7705 
7706 
7707 
7708 const extended::ZonePolicy kPolicyWS ACE_TIME_PROGMEM = {
7709  kZoneRulesWS /*rules*/,
7710  nullptr /*letters*/,
7711  6 /*numRules*/,
7712  0 /*numLetters*/,
7713 };
7714 
7715 //---------------------------------------------------------------------------
7716 // Policy name: Winn
7717 // Rules: 3
7718 // Memory (8-bit): 33
7719 // Memory (32-bit): 48
7720 //---------------------------------------------------------------------------
7721 
7722 static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
7723  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
7724  {
7725  -34 /*fromYearTiny*/,
7726  -14 /*toYearTiny*/,
7727  4 /*inMonth*/,
7728  7 /*onDayOfWeek*/,
7729  0 /*onDayOfMonth*/,
7730  8 /*atTimeCode*/,
7731  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7732  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7733  'D' /*letter*/,
7734  },
7735  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
7736  {
7737  -34 /*fromYearTiny*/,
7738  5 /*toYearTiny*/,
7739  10 /*inMonth*/,
7740  7 /*onDayOfWeek*/,
7741  0 /*onDayOfMonth*/,
7742  8 /*atTimeCode*/,
7743  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7744  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7745  'S' /*letter*/,
7746  },
7747  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
7748  {
7749  -13 /*fromYearTiny*/,
7750  5 /*toYearTiny*/,
7751  4 /*inMonth*/,
7752  7 /*onDayOfWeek*/,
7753  1 /*onDayOfMonth*/,
7754  8 /*atTimeCode*/,
7755  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7756  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7757  'D' /*letter*/,
7758  },
7759 
7760 };
7761 
7762 
7763 
7764 const extended::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = {
7765  kZoneRulesWinn /*rules*/,
7766  nullptr /*letters*/,
7767  3 /*numRules*/,
7768  0 /*numLetters*/,
7769 };
7770 
7771 //---------------------------------------------------------------------------
7772 // Policy name: Zion
7773 // Rules: 24
7774 // Memory (8-bit): 222
7775 // Memory (32-bit): 300
7776 //---------------------------------------------------------------------------
7777 
7778 static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
7779  // Rule Zion 1998 only - Sep 6 0:00 0 S
7780  {
7781  -2 /*fromYearTiny*/,
7782  -2 /*toYearTiny*/,
7783  9 /*inMonth*/,
7784  0 /*onDayOfWeek*/,
7785  6 /*onDayOfMonth*/,
7786  0 /*atTimeCode*/,
7787  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7788  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7789  'S' /*letter*/,
7790  },
7791  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
7792  {
7793  -1 /*fromYearTiny*/,
7794  -1 /*toYearTiny*/,
7795  4 /*inMonth*/,
7796  0 /*onDayOfWeek*/,
7797  2 /*onDayOfMonth*/,
7798  8 /*atTimeCode*/,
7799  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7800  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7801  'D' /*letter*/,
7802  },
7803  // Rule Zion 1999 only - Sep 3 2:00 0 S
7804  {
7805  -1 /*fromYearTiny*/,
7806  -1 /*toYearTiny*/,
7807  9 /*inMonth*/,
7808  0 /*onDayOfWeek*/,
7809  3 /*onDayOfMonth*/,
7810  8 /*atTimeCode*/,
7811  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7812  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7813  'S' /*letter*/,
7814  },
7815  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
7816  {
7817  0 /*fromYearTiny*/,
7818  0 /*toYearTiny*/,
7819  4 /*inMonth*/,
7820  0 /*onDayOfWeek*/,
7821  14 /*onDayOfMonth*/,
7822  8 /*atTimeCode*/,
7823  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7824  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7825  'D' /*letter*/,
7826  },
7827  // Rule Zion 2000 only - Oct 6 1:00 0 S
7828  {
7829  0 /*fromYearTiny*/,
7830  0 /*toYearTiny*/,
7831  10 /*inMonth*/,
7832  0 /*onDayOfWeek*/,
7833  6 /*onDayOfMonth*/,
7834  4 /*atTimeCode*/,
7835  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7836  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7837  'S' /*letter*/,
7838  },
7839  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
7840  {
7841  1 /*fromYearTiny*/,
7842  1 /*toYearTiny*/,
7843  4 /*inMonth*/,
7844  0 /*onDayOfWeek*/,
7845  9 /*onDayOfMonth*/,
7846  4 /*atTimeCode*/,
7847  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7848  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7849  'D' /*letter*/,
7850  },
7851  // Rule Zion 2001 only - Sep 24 1:00 0 S
7852  {
7853  1 /*fromYearTiny*/,
7854  1 /*toYearTiny*/,
7855  9 /*inMonth*/,
7856  0 /*onDayOfWeek*/,
7857  24 /*onDayOfMonth*/,
7858  4 /*atTimeCode*/,
7859  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7860  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7861  'S' /*letter*/,
7862  },
7863  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
7864  {
7865  2 /*fromYearTiny*/,
7866  2 /*toYearTiny*/,
7867  3 /*inMonth*/,
7868  0 /*onDayOfWeek*/,
7869  29 /*onDayOfMonth*/,
7870  4 /*atTimeCode*/,
7871  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7872  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7873  'D' /*letter*/,
7874  },
7875  // Rule Zion 2002 only - Oct 7 1:00 0 S
7876  {
7877  2 /*fromYearTiny*/,
7878  2 /*toYearTiny*/,
7879  10 /*inMonth*/,
7880  0 /*onDayOfWeek*/,
7881  7 /*onDayOfMonth*/,
7882  4 /*atTimeCode*/,
7883  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7884  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7885  'S' /*letter*/,
7886  },
7887  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
7888  {
7889  3 /*fromYearTiny*/,
7890  3 /*toYearTiny*/,
7891  3 /*inMonth*/,
7892  0 /*onDayOfWeek*/,
7893  28 /*onDayOfMonth*/,
7894  4 /*atTimeCode*/,
7895  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7896  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7897  'D' /*letter*/,
7898  },
7899  // Rule Zion 2003 only - Oct 3 1:00 0 S
7900  {
7901  3 /*fromYearTiny*/,
7902  3 /*toYearTiny*/,
7903  10 /*inMonth*/,
7904  0 /*onDayOfWeek*/,
7905  3 /*onDayOfMonth*/,
7906  4 /*atTimeCode*/,
7907  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7908  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7909  'S' /*letter*/,
7910  },
7911  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
7912  {
7913  4 /*fromYearTiny*/,
7914  4 /*toYearTiny*/,
7915  4 /*inMonth*/,
7916  0 /*onDayOfWeek*/,
7917  7 /*onDayOfMonth*/,
7918  4 /*atTimeCode*/,
7919  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7920  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7921  'D' /*letter*/,
7922  },
7923  // Rule Zion 2004 only - Sep 22 1:00 0 S
7924  {
7925  4 /*fromYearTiny*/,
7926  4 /*toYearTiny*/,
7927  9 /*inMonth*/,
7928  0 /*onDayOfWeek*/,
7929  22 /*onDayOfMonth*/,
7930  4 /*atTimeCode*/,
7931  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7932  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7933  'S' /*letter*/,
7934  },
7935  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
7936  {
7937  5 /*fromYearTiny*/,
7938  12 /*toYearTiny*/,
7939  4 /*inMonth*/,
7940  5 /*onDayOfWeek*/,
7941  -1 /*onDayOfMonth*/,
7942  8 /*atTimeCode*/,
7943  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7944  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7945  'D' /*letter*/,
7946  },
7947  // Rule Zion 2005 only - Oct 9 2:00 0 S
7948  {
7949  5 /*fromYearTiny*/,
7950  5 /*toYearTiny*/,
7951  10 /*inMonth*/,
7952  0 /*onDayOfWeek*/,
7953  9 /*onDayOfMonth*/,
7954  8 /*atTimeCode*/,
7955  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7956  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7957  'S' /*letter*/,
7958  },
7959  // Rule Zion 2006 only - Oct 1 2:00 0 S
7960  {
7961  6 /*fromYearTiny*/,
7962  6 /*toYearTiny*/,
7963  10 /*inMonth*/,
7964  0 /*onDayOfWeek*/,
7965  1 /*onDayOfMonth*/,
7966  8 /*atTimeCode*/,
7967  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7968  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7969  'S' /*letter*/,
7970  },
7971  // Rule Zion 2007 only - Sep 16 2:00 0 S
7972  {
7973  7 /*fromYearTiny*/,
7974  7 /*toYearTiny*/,
7975  9 /*inMonth*/,
7976  0 /*onDayOfWeek*/,
7977  16 /*onDayOfMonth*/,
7978  8 /*atTimeCode*/,
7979  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7980  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7981  'S' /*letter*/,
7982  },
7983  // Rule Zion 2008 only - Oct 5 2:00 0 S
7984  {
7985  8 /*fromYearTiny*/,
7986  8 /*toYearTiny*/,
7987  10 /*inMonth*/,
7988  0 /*onDayOfWeek*/,
7989  5 /*onDayOfMonth*/,
7990  8 /*atTimeCode*/,
7991  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7992  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7993  'S' /*letter*/,
7994  },
7995  // Rule Zion 2009 only - Sep 27 2:00 0 S
7996  {
7997  9 /*fromYearTiny*/,
7998  9 /*toYearTiny*/,
7999  9 /*inMonth*/,
8000  0 /*onDayOfWeek*/,
8001  27 /*onDayOfMonth*/,
8002  8 /*atTimeCode*/,
8003  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8004  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8005  'S' /*letter*/,
8006  },
8007  // Rule Zion 2010 only - Sep 12 2:00 0 S
8008  {
8009  10 /*fromYearTiny*/,
8010  10 /*toYearTiny*/,
8011  9 /*inMonth*/,
8012  0 /*onDayOfWeek*/,
8013  12 /*onDayOfMonth*/,
8014  8 /*atTimeCode*/,
8015  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8016  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8017  'S' /*letter*/,
8018  },
8019  // Rule Zion 2011 only - Oct 2 2:00 0 S
8020  {
8021  11 /*fromYearTiny*/,
8022  11 /*toYearTiny*/,
8023  10 /*inMonth*/,
8024  0 /*onDayOfWeek*/,
8025  2 /*onDayOfMonth*/,
8026  8 /*atTimeCode*/,
8027  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8028  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8029  'S' /*letter*/,
8030  },
8031  // Rule Zion 2012 only - Sep 23 2:00 0 S
8032  {
8033  12 /*fromYearTiny*/,
8034  12 /*toYearTiny*/,
8035  9 /*inMonth*/,
8036  0 /*onDayOfWeek*/,
8037  23 /*onDayOfMonth*/,
8038  8 /*atTimeCode*/,
8039  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8040  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8041  'S' /*letter*/,
8042  },
8043  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
8044  {
8045  13 /*fromYearTiny*/,
8046  126 /*toYearTiny*/,
8047  3 /*inMonth*/,
8048  5 /*onDayOfWeek*/,
8049  23 /*onDayOfMonth*/,
8050  8 /*atTimeCode*/,
8051  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8052  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8053  'D' /*letter*/,
8054  },
8055  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
8056  {
8057  13 /*fromYearTiny*/,
8058  126 /*toYearTiny*/,
8059  10 /*inMonth*/,
8060  7 /*onDayOfWeek*/,
8061  0 /*onDayOfMonth*/,
8062  8 /*atTimeCode*/,
8063  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8064  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8065  'S' /*letter*/,
8066  },
8067 
8068 };
8069 
8070 
8071 
8072 const extended::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = {
8073  kZoneRulesZion /*rules*/,
8074  nullptr /*letters*/,
8075  24 /*numRules*/,
8076  0 /*numLetters*/,
8077 };
8078 
8079 
8080 
8081 }
8082 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...