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