AceTime  2.4.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 2024b
7 // --action zonedb
8 // --language arduino
9 // --scope extended
10 // --db_namespace zonedbx
11 // --start_year 2000
12 // --until_year 2200
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/2024b
27 //
28 // Supported Zones: 596 (339 zones, 257 links)
29 // Unsupported Zones: 0 (0 zones, 0 links)
30 //
31 // Requested Years: [2000,2200]
32 // Accurate Years: [2000,32767]
33 //
34 // Original Years: [1844,2087]
35 // Generated Years: [1950,2087]
36 // Lower/Upper Truncated: [True,False]
37 //
38 // Estimator Years: [1950,2090]
39 // Max Buffer Size: 7
40 //
41 // Records:
42 // Infos: 596
43 // Eras: 644
44 // Policies: 82
45 // Rules: 731
46 //
47 // Memory (8-bits):
48 // Context: 16
49 // Rules: 6579
50 // Policies: 246
51 // Eras: 7084
52 // Zones: 4407
53 // Links: 3341
54 // Registry: 1192
55 // Formats: 231
56 // Letters: 46
57 // Fragments: 150
58 // Names: 5649 (original: 9076)
59 // TOTAL: 28941
60 //
61 // Memory (32-bits):
62 // Context: 24
63 // Rules: 8772
64 // Policies: 656
65 // Eras: 10304
66 // Zones: 8136
67 // Links: 6168
68 // Registry: 2384
69 // Formats: 231
70 // Letters: 64
71 // Fragments: 178
72 // Names: 5649 (original: 9076)
73 // TOTAL: 42566
74 //
75 // DO NOT EDIT
76 
77 #include <zoneinfo/compat.h>
78 #include "zone_policies.h"
79 
80 namespace ace_time {
81 namespace zonedbx {
82 
83 //---------------------------------------------------------------------------
84 // Policies: 82
85 // Rules: 731
86 //---------------------------------------------------------------------------
87 
88 //---------------------------------------------------------------------------
89 // Policy name: AN
90 // Rules: 10
91 //---------------------------------------------------------------------------
92 
93 static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
94  // Anchor: Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
95  {
96  -127 /*fromYearTiny (-32767)*/,
97  -127 /*toYearTiny (-32767)*/,
98  1 /*inMonth*/,
99  0 /*onDayOfWeek*/,
100  1 /*onDayOfMonth*/,
101  0 /*atTimeCode*/,
102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
104  7 /*letterIndex ("S")*/,
105  },
106  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
107  {
108  -113 /*fromYearTiny (1987)*/,
109  -101 /*toYearTiny (1999)*/,
110  10 /*inMonth*/,
111  7 /*onDayOfWeek*/,
112  0 /*onDayOfMonth*/,
113  8 /*atTimeCode*/,
114  16 /*atTimeModifier (kSuffixS + minute=0)*/,
115  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
116  5 /*letterIndex ("D")*/,
117  },
118  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
119  {
120  -110 /*fromYearTiny (1990)*/,
121  -105 /*toYearTiny (1995)*/,
122  3 /*inMonth*/,
123  7 /*onDayOfWeek*/,
124  1 /*onDayOfMonth*/,
125  8 /*atTimeCode*/,
126  16 /*atTimeModifier (kSuffixS + minute=0)*/,
127  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
128  7 /*letterIndex ("S")*/,
129  },
130  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
131  {
132  -104 /*fromYearTiny (1996)*/,
133  -95 /*toYearTiny (2005)*/,
134  3 /*inMonth*/,
135  7 /*onDayOfWeek*/,
136  0 /*onDayOfMonth*/,
137  8 /*atTimeCode*/,
138  16 /*atTimeModifier (kSuffixS + minute=0)*/,
139  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
140  7 /*letterIndex ("S")*/,
141  },
142  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
143  {
144  -100 /*fromYearTiny (2000)*/,
145  -100 /*toYearTiny (2000)*/,
146  8 /*inMonth*/,
147  7 /*onDayOfWeek*/,
148  0 /*onDayOfMonth*/,
149  8 /*atTimeCode*/,
150  16 /*atTimeModifier (kSuffixS + minute=0)*/,
151  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
152  5 /*letterIndex ("D")*/,
153  },
154  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
155  {
156  -99 /*fromYearTiny (2001)*/,
157  -93 /*toYearTiny (2007)*/,
158  10 /*inMonth*/,
159  7 /*onDayOfWeek*/,
160  0 /*onDayOfMonth*/,
161  8 /*atTimeCode*/,
162  16 /*atTimeModifier (kSuffixS + minute=0)*/,
163  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
164  5 /*letterIndex ("D")*/,
165  },
166  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
167  {
168  -94 /*fromYearTiny (2006)*/,
169  -94 /*toYearTiny (2006)*/,
170  4 /*inMonth*/,
171  7 /*onDayOfWeek*/,
172  1 /*onDayOfMonth*/,
173  8 /*atTimeCode*/,
174  16 /*atTimeModifier (kSuffixS + minute=0)*/,
175  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
176  7 /*letterIndex ("S")*/,
177  },
178  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
179  {
180  -93 /*fromYearTiny (2007)*/,
181  -93 /*toYearTiny (2007)*/,
182  3 /*inMonth*/,
183  7 /*onDayOfWeek*/,
184  0 /*onDayOfMonth*/,
185  8 /*atTimeCode*/,
186  16 /*atTimeModifier (kSuffixS + minute=0)*/,
187  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
188  7 /*letterIndex ("S")*/,
189  },
190  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
191  {
192  -92 /*fromYearTiny (2008)*/,
193  126 /*toYearTiny (32766)*/,
194  4 /*inMonth*/,
195  7 /*onDayOfWeek*/,
196  1 /*onDayOfMonth*/,
197  8 /*atTimeCode*/,
198  16 /*atTimeModifier (kSuffixS + minute=0)*/,
199  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
200  7 /*letterIndex ("S")*/,
201  },
202  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
203  {
204  -92 /*fromYearTiny (2008)*/,
205  126 /*toYearTiny (32766)*/,
206  10 /*inMonth*/,
207  7 /*onDayOfWeek*/,
208  1 /*onDayOfMonth*/,
209  8 /*atTimeCode*/,
210  16 /*atTimeModifier (kSuffixS + minute=0)*/,
211  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
212  5 /*letterIndex ("D")*/,
213  },
214 
215 };
216 
217 const extended::ZonePolicy kZonePolicyAN ACE_TIME_PROGMEM = {
218  kZoneRulesAN /*rules*/,
219  10 /*numRules*/,
220 };
221 
222 //---------------------------------------------------------------------------
223 // Policy name: AQ
224 // Rules: 1
225 //---------------------------------------------------------------------------
226 
227 static const extended::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
228  // Anchor: Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
229  {
230  -127 /*fromYearTiny (-32767)*/,
231  -127 /*toYearTiny (-32767)*/,
232  1 /*inMonth*/,
233  0 /*onDayOfWeek*/,
234  1 /*onDayOfMonth*/,
235  0 /*atTimeCode*/,
236  0 /*atTimeModifier (kSuffixW + minute=0)*/,
237  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
238  7 /*letterIndex ("S")*/,
239  },
240 
241 };
242 
243 const extended::ZonePolicy kZonePolicyAQ ACE_TIME_PROGMEM = {
244  kZoneRulesAQ /*rules*/,
245  1 /*numRules*/,
246 };
247 
248 //---------------------------------------------------------------------------
249 // Policy name: AS
250 // Rules: 8
251 //---------------------------------------------------------------------------
252 
253 static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
254  // Anchor: Rule AS 1994 only - Mar 20 2:00s 0 S
255  {
256  -127 /*fromYearTiny (-32767)*/,
257  -127 /*toYearTiny (-32767)*/,
258  1 /*inMonth*/,
259  0 /*onDayOfWeek*/,
260  1 /*onDayOfMonth*/,
261  0 /*atTimeCode*/,
262  0 /*atTimeModifier (kSuffixW + minute=0)*/,
263  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
264  7 /*letterIndex ("S")*/,
265  },
266  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
267  {
268  -113 /*fromYearTiny (1987)*/,
269  -93 /*toYearTiny (2007)*/,
270  10 /*inMonth*/,
271  7 /*onDayOfWeek*/,
272  0 /*onDayOfMonth*/,
273  8 /*atTimeCode*/,
274  16 /*atTimeModifier (kSuffixS + minute=0)*/,
275  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
276  5 /*letterIndex ("D")*/,
277  },
278  // Rule AS 1994 only - Mar 20 2:00s 0 S
279  {
280  -106 /*fromYearTiny (1994)*/,
281  -106 /*toYearTiny (1994)*/,
282  3 /*inMonth*/,
283  0 /*onDayOfWeek*/,
284  20 /*onDayOfMonth*/,
285  8 /*atTimeCode*/,
286  16 /*atTimeModifier (kSuffixS + minute=0)*/,
287  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
288  7 /*letterIndex ("S")*/,
289  },
290  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
291  {
292  -105 /*fromYearTiny (1995)*/,
293  -95 /*toYearTiny (2005)*/,
294  3 /*inMonth*/,
295  7 /*onDayOfWeek*/,
296  0 /*onDayOfMonth*/,
297  8 /*atTimeCode*/,
298  16 /*atTimeModifier (kSuffixS + minute=0)*/,
299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
300  7 /*letterIndex ("S")*/,
301  },
302  // Rule AS 2006 only - Apr 2 2:00s 0 S
303  {
304  -94 /*fromYearTiny (2006)*/,
305  -94 /*toYearTiny (2006)*/,
306  4 /*inMonth*/,
307  0 /*onDayOfWeek*/,
308  2 /*onDayOfMonth*/,
309  8 /*atTimeCode*/,
310  16 /*atTimeModifier (kSuffixS + minute=0)*/,
311  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
312  7 /*letterIndex ("S")*/,
313  },
314  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
315  {
316  -93 /*fromYearTiny (2007)*/,
317  -93 /*toYearTiny (2007)*/,
318  3 /*inMonth*/,
319  7 /*onDayOfWeek*/,
320  0 /*onDayOfMonth*/,
321  8 /*atTimeCode*/,
322  16 /*atTimeModifier (kSuffixS + minute=0)*/,
323  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
324  7 /*letterIndex ("S")*/,
325  },
326  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
327  {
328  -92 /*fromYearTiny (2008)*/,
329  126 /*toYearTiny (32766)*/,
330  4 /*inMonth*/,
331  7 /*onDayOfWeek*/,
332  1 /*onDayOfMonth*/,
333  8 /*atTimeCode*/,
334  16 /*atTimeModifier (kSuffixS + minute=0)*/,
335  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
336  7 /*letterIndex ("S")*/,
337  },
338  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
339  {
340  -92 /*fromYearTiny (2008)*/,
341  126 /*toYearTiny (32766)*/,
342  10 /*inMonth*/,
343  7 /*onDayOfWeek*/,
344  1 /*onDayOfMonth*/,
345  8 /*atTimeCode*/,
346  16 /*atTimeModifier (kSuffixS + minute=0)*/,
347  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
348  5 /*letterIndex ("D")*/,
349  },
350 
351 };
352 
353 const extended::ZonePolicy kZonePolicyAS ACE_TIME_PROGMEM = {
354  kZoneRulesAS /*rules*/,
355  8 /*numRules*/,
356 };
357 
358 //---------------------------------------------------------------------------
359 // Policy name: AT
360 // Rules: 9
361 //---------------------------------------------------------------------------
362 
363 static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
364  // Anchor: Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
365  {
366  -127 /*fromYearTiny (-32767)*/,
367  -127 /*toYearTiny (-32767)*/,
368  1 /*inMonth*/,
369  0 /*onDayOfWeek*/,
370  1 /*onDayOfMonth*/,
371  0 /*atTimeCode*/,
372  0 /*atTimeModifier (kSuffixW + minute=0)*/,
373  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
374  7 /*letterIndex ("S")*/,
375  },
376  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
377  {
378  -112 /*fromYearTiny (1988)*/,
379  -110 /*toYearTiny (1990)*/,
380  10 /*inMonth*/,
381  7 /*onDayOfWeek*/,
382  0 /*onDayOfMonth*/,
383  8 /*atTimeCode*/,
384  16 /*atTimeModifier (kSuffixS + minute=0)*/,
385  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
386  5 /*letterIndex ("D")*/,
387  },
388  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
389  {
390  -109 /*fromYearTiny (1991)*/,
391  -101 /*toYearTiny (1999)*/,
392  10 /*inMonth*/,
393  7 /*onDayOfWeek*/,
394  1 /*onDayOfMonth*/,
395  8 /*atTimeCode*/,
396  16 /*atTimeModifier (kSuffixS + minute=0)*/,
397  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
398  5 /*letterIndex ("D")*/,
399  },
400  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
401  {
402  -109 /*fromYearTiny (1991)*/,
403  -95 /*toYearTiny (2005)*/,
404  3 /*inMonth*/,
405  7 /*onDayOfWeek*/,
406  0 /*onDayOfMonth*/,
407  8 /*atTimeCode*/,
408  16 /*atTimeModifier (kSuffixS + minute=0)*/,
409  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
410  7 /*letterIndex ("S")*/,
411  },
412  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
413  {
414  -100 /*fromYearTiny (2000)*/,
415  -100 /*toYearTiny (2000)*/,
416  8 /*inMonth*/,
417  7 /*onDayOfWeek*/,
418  0 /*onDayOfMonth*/,
419  8 /*atTimeCode*/,
420  16 /*atTimeModifier (kSuffixS + minute=0)*/,
421  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
422  5 /*letterIndex ("D")*/,
423  },
424  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
425  {
426  -99 /*fromYearTiny (2001)*/,
427  126 /*toYearTiny (32766)*/,
428  10 /*inMonth*/,
429  7 /*onDayOfWeek*/,
430  1 /*onDayOfMonth*/,
431  8 /*atTimeCode*/,
432  16 /*atTimeModifier (kSuffixS + minute=0)*/,
433  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
434  5 /*letterIndex ("D")*/,
435  },
436  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
437  {
438  -94 /*fromYearTiny (2006)*/,
439  -94 /*toYearTiny (2006)*/,
440  4 /*inMonth*/,
441  7 /*onDayOfWeek*/,
442  1 /*onDayOfMonth*/,
443  8 /*atTimeCode*/,
444  16 /*atTimeModifier (kSuffixS + minute=0)*/,
445  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
446  7 /*letterIndex ("S")*/,
447  },
448  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
449  {
450  -93 /*fromYearTiny (2007)*/,
451  -93 /*toYearTiny (2007)*/,
452  3 /*inMonth*/,
453  7 /*onDayOfWeek*/,
454  0 /*onDayOfMonth*/,
455  8 /*atTimeCode*/,
456  16 /*atTimeModifier (kSuffixS + minute=0)*/,
457  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
458  7 /*letterIndex ("S")*/,
459  },
460  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
461  {
462  -92 /*fromYearTiny (2008)*/,
463  126 /*toYearTiny (32766)*/,
464  4 /*inMonth*/,
465  7 /*onDayOfWeek*/,
466  1 /*onDayOfMonth*/,
467  8 /*atTimeCode*/,
468  16 /*atTimeModifier (kSuffixS + minute=0)*/,
469  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
470  7 /*letterIndex ("S")*/,
471  },
472 
473 };
474 
475 const extended::ZonePolicy kZonePolicyAT ACE_TIME_PROGMEM = {
476  kZoneRulesAT /*rules*/,
477  9 /*numRules*/,
478 };
479 
480 //---------------------------------------------------------------------------
481 // Policy name: AV
482 // Rules: 10
483 //---------------------------------------------------------------------------
484 
485 static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
486  // Anchor: Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
487  {
488  -127 /*fromYearTiny (-32767)*/,
489  -127 /*toYearTiny (-32767)*/,
490  1 /*inMonth*/,
491  0 /*onDayOfWeek*/,
492  1 /*onDayOfMonth*/,
493  0 /*atTimeCode*/,
494  0 /*atTimeModifier (kSuffixW + minute=0)*/,
495  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
496  7 /*letterIndex ("S")*/,
497  },
498  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
499  {
500  -112 /*fromYearTiny (1988)*/,
501  -101 /*toYearTiny (1999)*/,
502  10 /*inMonth*/,
503  7 /*onDayOfWeek*/,
504  0 /*onDayOfMonth*/,
505  8 /*atTimeCode*/,
506  16 /*atTimeModifier (kSuffixS + minute=0)*/,
507  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
508  5 /*letterIndex ("D")*/,
509  },
510  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
511  {
512  -109 /*fromYearTiny (1991)*/,
513  -106 /*toYearTiny (1994)*/,
514  3 /*inMonth*/,
515  7 /*onDayOfWeek*/,
516  1 /*onDayOfMonth*/,
517  8 /*atTimeCode*/,
518  16 /*atTimeModifier (kSuffixS + minute=0)*/,
519  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
520  7 /*letterIndex ("S")*/,
521  },
522  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
523  {
524  -105 /*fromYearTiny (1995)*/,
525  -95 /*toYearTiny (2005)*/,
526  3 /*inMonth*/,
527  7 /*onDayOfWeek*/,
528  0 /*onDayOfMonth*/,
529  8 /*atTimeCode*/,
530  16 /*atTimeModifier (kSuffixS + minute=0)*/,
531  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
532  7 /*letterIndex ("S")*/,
533  },
534  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
535  {
536  -100 /*fromYearTiny (2000)*/,
537  -100 /*toYearTiny (2000)*/,
538  8 /*inMonth*/,
539  7 /*onDayOfWeek*/,
540  0 /*onDayOfMonth*/,
541  8 /*atTimeCode*/,
542  16 /*atTimeModifier (kSuffixS + minute=0)*/,
543  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
544  5 /*letterIndex ("D")*/,
545  },
546  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
547  {
548  -99 /*fromYearTiny (2001)*/,
549  -93 /*toYearTiny (2007)*/,
550  10 /*inMonth*/,
551  7 /*onDayOfWeek*/,
552  0 /*onDayOfMonth*/,
553  8 /*atTimeCode*/,
554  16 /*atTimeModifier (kSuffixS + minute=0)*/,
555  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
556  5 /*letterIndex ("D")*/,
557  },
558  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
559  {
560  -94 /*fromYearTiny (2006)*/,
561  -94 /*toYearTiny (2006)*/,
562  4 /*inMonth*/,
563  7 /*onDayOfWeek*/,
564  1 /*onDayOfMonth*/,
565  8 /*atTimeCode*/,
566  16 /*atTimeModifier (kSuffixS + minute=0)*/,
567  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
568  7 /*letterIndex ("S")*/,
569  },
570  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
571  {
572  -93 /*fromYearTiny (2007)*/,
573  -93 /*toYearTiny (2007)*/,
574  3 /*inMonth*/,
575  7 /*onDayOfWeek*/,
576  0 /*onDayOfMonth*/,
577  8 /*atTimeCode*/,
578  16 /*atTimeModifier (kSuffixS + minute=0)*/,
579  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
580  7 /*letterIndex ("S")*/,
581  },
582  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
583  {
584  -92 /*fromYearTiny (2008)*/,
585  126 /*toYearTiny (32766)*/,
586  4 /*inMonth*/,
587  7 /*onDayOfWeek*/,
588  1 /*onDayOfMonth*/,
589  8 /*atTimeCode*/,
590  16 /*atTimeModifier (kSuffixS + minute=0)*/,
591  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
592  7 /*letterIndex ("S")*/,
593  },
594  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
595  {
596  -92 /*fromYearTiny (2008)*/,
597  126 /*toYearTiny (32766)*/,
598  10 /*inMonth*/,
599  7 /*onDayOfWeek*/,
600  1 /*onDayOfMonth*/,
601  8 /*atTimeCode*/,
602  16 /*atTimeModifier (kSuffixS + minute=0)*/,
603  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
604  5 /*letterIndex ("D")*/,
605  },
606 
607 };
608 
609 const extended::ZonePolicy kZonePolicyAV ACE_TIME_PROGMEM = {
610  kZoneRulesAV /*rules*/,
611  10 /*numRules*/,
612 };
613 
614 //---------------------------------------------------------------------------
615 // Policy name: AW
616 // Rules: 5
617 //---------------------------------------------------------------------------
618 
619 static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
620  // Anchor: Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
621  {
622  -127 /*fromYearTiny (-32767)*/,
623  -127 /*toYearTiny (-32767)*/,
624  1 /*inMonth*/,
625  0 /*onDayOfWeek*/,
626  1 /*onDayOfMonth*/,
627  0 /*atTimeCode*/,
628  0 /*atTimeModifier (kSuffixW + minute=0)*/,
629  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
630  7 /*letterIndex ("S")*/,
631  },
632  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
633  {
634  -108 /*fromYearTiny (1992)*/,
635  -108 /*toYearTiny (1992)*/,
636  3 /*inMonth*/,
637  7 /*onDayOfWeek*/,
638  1 /*onDayOfMonth*/,
639  8 /*atTimeCode*/,
640  16 /*atTimeModifier (kSuffixS + minute=0)*/,
641  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
642  7 /*letterIndex ("S")*/,
643  },
644  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
645  {
646  -94 /*fromYearTiny (2006)*/,
647  -94 /*toYearTiny (2006)*/,
648  12 /*inMonth*/,
649  0 /*onDayOfWeek*/,
650  3 /*onDayOfMonth*/,
651  8 /*atTimeCode*/,
652  16 /*atTimeModifier (kSuffixS + minute=0)*/,
653  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
654  5 /*letterIndex ("D")*/,
655  },
656  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
657  {
658  -93 /*fromYearTiny (2007)*/,
659  -91 /*toYearTiny (2009)*/,
660  3 /*inMonth*/,
661  7 /*onDayOfWeek*/,
662  0 /*onDayOfMonth*/,
663  8 /*atTimeCode*/,
664  16 /*atTimeModifier (kSuffixS + minute=0)*/,
665  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
666  7 /*letterIndex ("S")*/,
667  },
668  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
669  {
670  -93 /*fromYearTiny (2007)*/,
671  -92 /*toYearTiny (2008)*/,
672  10 /*inMonth*/,
673  7 /*onDayOfWeek*/,
674  0 /*onDayOfMonth*/,
675  8 /*atTimeCode*/,
676  16 /*atTimeModifier (kSuffixS + minute=0)*/,
677  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
678  5 /*letterIndex ("D")*/,
679  },
680 
681 };
682 
683 const extended::ZonePolicy kZonePolicyAW ACE_TIME_PROGMEM = {
684  kZoneRulesAW /*rules*/,
685  5 /*numRules*/,
686 };
687 
688 //---------------------------------------------------------------------------
689 // Policy name: Arg
690 // Rules: 7
691 //---------------------------------------------------------------------------
692 
693 static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = {
694  // Anchor: Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
695  {
696  -127 /*fromYearTiny (-32767)*/,
697  -127 /*toYearTiny (-32767)*/,
698  1 /*inMonth*/,
699  0 /*onDayOfWeek*/,
700  1 /*onDayOfMonth*/,
701  0 /*atTimeCode*/,
702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
703  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
704  0 /*letterIndex ("")*/,
705  },
706  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
707  {
708  -111 /*fromYearTiny (1989)*/,
709  -107 /*toYearTiny (1993)*/,
710  3 /*inMonth*/,
711  7 /*onDayOfWeek*/,
712  1 /*onDayOfMonth*/,
713  0 /*atTimeCode*/,
714  0 /*atTimeModifier (kSuffixW + minute=0)*/,
715  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
716  0 /*letterIndex ("")*/,
717  },
718  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
719  {
720  -101 /*fromYearTiny (1999)*/,
721  -101 /*toYearTiny (1999)*/,
722  10 /*inMonth*/,
723  7 /*onDayOfWeek*/,
724  1 /*onDayOfMonth*/,
725  0 /*atTimeCode*/,
726  0 /*atTimeModifier (kSuffixW + minute=0)*/,
727  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
728  0 /*letterIndex ("")*/,
729  },
730  // Rule Arg 2000 only - Mar 3 0:00 0 -
731  {
732  -100 /*fromYearTiny (2000)*/,
733  -100 /*toYearTiny (2000)*/,
734  3 /*inMonth*/,
735  0 /*onDayOfWeek*/,
736  3 /*onDayOfMonth*/,
737  0 /*atTimeCode*/,
738  0 /*atTimeModifier (kSuffixW + minute=0)*/,
739  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
740  0 /*letterIndex ("")*/,
741  },
742  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
743  {
744  -93 /*fromYearTiny (2007)*/,
745  -93 /*toYearTiny (2007)*/,
746  12 /*inMonth*/,
747  0 /*onDayOfWeek*/,
748  30 /*onDayOfMonth*/,
749  0 /*atTimeCode*/,
750  0 /*atTimeModifier (kSuffixW + minute=0)*/,
751  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
752  0 /*letterIndex ("")*/,
753  },
754  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
755  {
756  -92 /*fromYearTiny (2008)*/,
757  -91 /*toYearTiny (2009)*/,
758  3 /*inMonth*/,
759  7 /*onDayOfWeek*/,
760  15 /*onDayOfMonth*/,
761  0 /*atTimeCode*/,
762  0 /*atTimeModifier (kSuffixW + minute=0)*/,
763  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
764  0 /*letterIndex ("")*/,
765  },
766  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
767  {
768  -92 /*fromYearTiny (2008)*/,
769  -92 /*toYearTiny (2008)*/,
770  10 /*inMonth*/,
771  7 /*onDayOfWeek*/,
772  15 /*onDayOfMonth*/,
773  0 /*atTimeCode*/,
774  0 /*atTimeModifier (kSuffixW + minute=0)*/,
775  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
776  0 /*letterIndex ("")*/,
777  },
778 
779 };
780 
781 const extended::ZonePolicy kZonePolicyArg ACE_TIME_PROGMEM = {
782  kZoneRulesArg /*rules*/,
783  7 /*numRules*/,
784 };
785 
786 //---------------------------------------------------------------------------
787 // Policy name: Armenia
788 // Rules: 3
789 //---------------------------------------------------------------------------
790 
791 static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
792  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
793  {
794  -127 /*fromYearTiny (-32767)*/,
795  -127 /*toYearTiny (-32767)*/,
796  1 /*inMonth*/,
797  0 /*onDayOfWeek*/,
798  1 /*onDayOfMonth*/,
799  0 /*atTimeCode*/,
800  0 /*atTimeModifier (kSuffixW + minute=0)*/,
801  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
802  0 /*letterIndex ("")*/,
803  },
804  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
805  {
806  -89 /*fromYearTiny (2011)*/,
807  -89 /*toYearTiny (2011)*/,
808  3 /*inMonth*/,
809  7 /*onDayOfWeek*/,
810  0 /*onDayOfMonth*/,
811  8 /*atTimeCode*/,
812  16 /*atTimeModifier (kSuffixS + minute=0)*/,
813  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
814  0 /*letterIndex ("")*/,
815  },
816  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
817  {
818  -89 /*fromYearTiny (2011)*/,
819  -89 /*toYearTiny (2011)*/,
820  10 /*inMonth*/,
821  7 /*onDayOfWeek*/,
822  0 /*onDayOfMonth*/,
823  8 /*atTimeCode*/,
824  16 /*atTimeModifier (kSuffixS + minute=0)*/,
825  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
826  0 /*letterIndex ("")*/,
827  },
828 
829 };
830 
831 const extended::ZonePolicy kZonePolicyArmenia ACE_TIME_PROGMEM = {
832  kZoneRulesArmenia /*rules*/,
833  3 /*numRules*/,
834 };
835 
836 //---------------------------------------------------------------------------
837 // Policy name: Aus
838 // Rules: 1
839 //---------------------------------------------------------------------------
840 
841 static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
842  // Anchor: Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
843  {
844  -127 /*fromYearTiny (-32767)*/,
845  -127 /*toYearTiny (-32767)*/,
846  1 /*inMonth*/,
847  0 /*onDayOfWeek*/,
848  1 /*onDayOfMonth*/,
849  0 /*atTimeCode*/,
850  0 /*atTimeModifier (kSuffixW + minute=0)*/,
851  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
852  7 /*letterIndex ("S")*/,
853  },
854 
855 };
856 
857 const extended::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
858  kZoneRulesAus /*rules*/,
859  1 /*numRules*/,
860 };
861 
862 //---------------------------------------------------------------------------
863 // Policy name: Azer
864 // Rules: 3
865 //---------------------------------------------------------------------------
866 
867 static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
868  // Anchor: Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
869  {
870  -127 /*fromYearTiny (-32767)*/,
871  -127 /*toYearTiny (-32767)*/,
872  1 /*inMonth*/,
873  0 /*onDayOfWeek*/,
874  1 /*onDayOfMonth*/,
875  0 /*atTimeCode*/,
876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
877  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
878  0 /*letterIndex ("")*/,
879  },
880  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
881  {
882  -103 /*fromYearTiny (1997)*/,
883  -85 /*toYearTiny (2015)*/,
884  3 /*inMonth*/,
885  7 /*onDayOfWeek*/,
886  0 /*onDayOfMonth*/,
887  16 /*atTimeCode*/,
888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
889  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
890  0 /*letterIndex ("")*/,
891  },
892  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
893  {
894  -103 /*fromYearTiny (1997)*/,
895  -85 /*toYearTiny (2015)*/,
896  10 /*inMonth*/,
897  7 /*onDayOfWeek*/,
898  0 /*onDayOfMonth*/,
899  20 /*atTimeCode*/,
900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
902  0 /*letterIndex ("")*/,
903  },
904 
905 };
906 
907 const extended::ZonePolicy kZonePolicyAzer ACE_TIME_PROGMEM = {
908  kZoneRulesAzer /*rules*/,
909  3 /*numRules*/,
910 };
911 
912 //---------------------------------------------------------------------------
913 // Policy name: Barb
914 // Rules: 1
915 //---------------------------------------------------------------------------
916 
917 static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
918  // Anchor: Rule Barb 1980 only - Sep 25 2:00 0 S
919  {
920  -127 /*fromYearTiny (-32767)*/,
921  -127 /*toYearTiny (-32767)*/,
922  1 /*inMonth*/,
923  0 /*onDayOfWeek*/,
924  1 /*onDayOfMonth*/,
925  0 /*atTimeCode*/,
926  0 /*atTimeModifier (kSuffixW + minute=0)*/,
927  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
928  7 /*letterIndex ("S")*/,
929  },
930 
931 };
932 
933 const extended::ZonePolicy kZonePolicyBarb ACE_TIME_PROGMEM = {
934  kZoneRulesBarb /*rules*/,
935  1 /*numRules*/,
936 };
937 
938 //---------------------------------------------------------------------------
939 // Policy name: Belize
940 // Rules: 1
941 //---------------------------------------------------------------------------
942 
943 static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
944  // Anchor: Rule Belize 1983 only - Feb 12 0:00 0 CST
945  {
946  -127 /*fromYearTiny (-32767)*/,
947  -127 /*toYearTiny (-32767)*/,
948  1 /*inMonth*/,
949  0 /*onDayOfWeek*/,
950  1 /*onDayOfMonth*/,
951  0 /*atTimeCode*/,
952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
953  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
954  4 /*letterIndex ("CST")*/,
955  },
956 
957 };
958 
959 const extended::ZonePolicy kZonePolicyBelize ACE_TIME_PROGMEM = {
960  kZoneRulesBelize /*rules*/,
961  1 /*numRules*/,
962 };
963 
964 //---------------------------------------------------------------------------
965 // Policy name: Brazil
966 // Rules: 21
967 //---------------------------------------------------------------------------
968 
969 static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
970  // Anchor: Rule Brazil 1999 only - Feb 21 0:00 0 -
971  {
972  -127 /*fromYearTiny (-32767)*/,
973  -127 /*toYearTiny (-32767)*/,
974  1 /*inMonth*/,
975  0 /*onDayOfWeek*/,
976  1 /*onDayOfMonth*/,
977  0 /*atTimeCode*/,
978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
980  0 /*letterIndex ("")*/,
981  },
982  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
983  {
984  -102 /*fromYearTiny (1998)*/,
985  -102 /*toYearTiny (1998)*/,
986  10 /*inMonth*/,
987  0 /*onDayOfWeek*/,
988  11 /*onDayOfMonth*/,
989  0 /*atTimeCode*/,
990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
991  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
992  0 /*letterIndex ("")*/,
993  },
994  // Rule Brazil 1999 only - Feb 21 0:00 0 -
995  {
996  -101 /*fromYearTiny (1999)*/,
997  -101 /*toYearTiny (1999)*/,
998  2 /*inMonth*/,
999  0 /*onDayOfWeek*/,
1000  21 /*onDayOfMonth*/,
1001  0 /*atTimeCode*/,
1002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1004  0 /*letterIndex ("")*/,
1005  },
1006  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
1007  {
1008  -101 /*fromYearTiny (1999)*/,
1009  -101 /*toYearTiny (1999)*/,
1010  10 /*inMonth*/,
1011  0 /*onDayOfWeek*/,
1012  3 /*onDayOfMonth*/,
1013  0 /*atTimeCode*/,
1014  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1015  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1016  0 /*letterIndex ("")*/,
1017  },
1018  // Rule Brazil 2000 only - Feb 27 0:00 0 -
1019  {
1020  -100 /*fromYearTiny (2000)*/,
1021  -100 /*toYearTiny (2000)*/,
1022  2 /*inMonth*/,
1023  0 /*onDayOfWeek*/,
1024  27 /*onDayOfMonth*/,
1025  0 /*atTimeCode*/,
1026  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1027  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1028  0 /*letterIndex ("")*/,
1029  },
1030  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
1031  {
1032  -100 /*fromYearTiny (2000)*/,
1033  -99 /*toYearTiny (2001)*/,
1034  10 /*inMonth*/,
1035  7 /*onDayOfWeek*/,
1036  8 /*onDayOfMonth*/,
1037  0 /*atTimeCode*/,
1038  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1039  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1040  0 /*letterIndex ("")*/,
1041  },
1042  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
1043  {
1044  -99 /*fromYearTiny (2001)*/,
1045  -94 /*toYearTiny (2006)*/,
1046  2 /*inMonth*/,
1047  7 /*onDayOfWeek*/,
1048  15 /*onDayOfMonth*/,
1049  0 /*atTimeCode*/,
1050  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1051  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1052  0 /*letterIndex ("")*/,
1053  },
1054  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
1055  {
1056  -98 /*fromYearTiny (2002)*/,
1057  -98 /*toYearTiny (2002)*/,
1058  11 /*inMonth*/,
1059  0 /*onDayOfWeek*/,
1060  3 /*onDayOfMonth*/,
1061  0 /*atTimeCode*/,
1062  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1063  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1064  0 /*letterIndex ("")*/,
1065  },
1066  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
1067  {
1068  -97 /*fromYearTiny (2003)*/,
1069  -97 /*toYearTiny (2003)*/,
1070  10 /*inMonth*/,
1071  0 /*onDayOfWeek*/,
1072  19 /*onDayOfMonth*/,
1073  0 /*atTimeCode*/,
1074  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1075  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1076  0 /*letterIndex ("")*/,
1077  },
1078  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
1079  {
1080  -96 /*fromYearTiny (2004)*/,
1081  -96 /*toYearTiny (2004)*/,
1082  11 /*inMonth*/,
1083  0 /*onDayOfWeek*/,
1084  2 /*onDayOfMonth*/,
1085  0 /*atTimeCode*/,
1086  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1087  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1088  0 /*letterIndex ("")*/,
1089  },
1090  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1091  {
1092  -95 /*fromYearTiny (2005)*/,
1093  -95 /*toYearTiny (2005)*/,
1094  10 /*inMonth*/,
1095  0 /*onDayOfWeek*/,
1096  16 /*onDayOfMonth*/,
1097  0 /*atTimeCode*/,
1098  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1099  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1100  0 /*letterIndex ("")*/,
1101  },
1102  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1103  {
1104  -94 /*fromYearTiny (2006)*/,
1105  -94 /*toYearTiny (2006)*/,
1106  11 /*inMonth*/,
1107  0 /*onDayOfWeek*/,
1108  5 /*onDayOfMonth*/,
1109  0 /*atTimeCode*/,
1110  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1111  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1112  0 /*letterIndex ("")*/,
1113  },
1114  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1115  {
1116  -93 /*fromYearTiny (2007)*/,
1117  -93 /*toYearTiny (2007)*/,
1118  2 /*inMonth*/,
1119  0 /*onDayOfWeek*/,
1120  25 /*onDayOfMonth*/,
1121  0 /*atTimeCode*/,
1122  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1123  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1124  0 /*letterIndex ("")*/,
1125  },
1126  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1127  {
1128  -93 /*fromYearTiny (2007)*/,
1129  -93 /*toYearTiny (2007)*/,
1130  10 /*inMonth*/,
1131  7 /*onDayOfWeek*/,
1132  8 /*onDayOfMonth*/,
1133  0 /*atTimeCode*/,
1134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1135  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1136  0 /*letterIndex ("")*/,
1137  },
1138  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1139  {
1140  -92 /*fromYearTiny (2008)*/,
1141  -83 /*toYearTiny (2017)*/,
1142  10 /*inMonth*/,
1143  7 /*onDayOfWeek*/,
1144  15 /*onDayOfMonth*/,
1145  0 /*atTimeCode*/,
1146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1147  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1148  0 /*letterIndex ("")*/,
1149  },
1150  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1151  {
1152  -92 /*fromYearTiny (2008)*/,
1153  -89 /*toYearTiny (2011)*/,
1154  2 /*inMonth*/,
1155  7 /*onDayOfWeek*/,
1156  15 /*onDayOfMonth*/,
1157  0 /*atTimeCode*/,
1158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1160  0 /*letterIndex ("")*/,
1161  },
1162  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1163  {
1164  -88 /*fromYearTiny (2012)*/,
1165  -88 /*toYearTiny (2012)*/,
1166  2 /*inMonth*/,
1167  7 /*onDayOfWeek*/,
1168  22 /*onDayOfMonth*/,
1169  0 /*atTimeCode*/,
1170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1172  0 /*letterIndex ("")*/,
1173  },
1174  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1175  {
1176  -87 /*fromYearTiny (2013)*/,
1177  -86 /*toYearTiny (2014)*/,
1178  2 /*inMonth*/,
1179  7 /*onDayOfWeek*/,
1180  15 /*onDayOfMonth*/,
1181  0 /*atTimeCode*/,
1182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1184  0 /*letterIndex ("")*/,
1185  },
1186  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1187  {
1188  -85 /*fromYearTiny (2015)*/,
1189  -85 /*toYearTiny (2015)*/,
1190  2 /*inMonth*/,
1191  7 /*onDayOfWeek*/,
1192  22 /*onDayOfMonth*/,
1193  0 /*atTimeCode*/,
1194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1196  0 /*letterIndex ("")*/,
1197  },
1198  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
1199  {
1200  -84 /*fromYearTiny (2016)*/,
1201  -81 /*toYearTiny (2019)*/,
1202  2 /*inMonth*/,
1203  7 /*onDayOfWeek*/,
1204  15 /*onDayOfMonth*/,
1205  0 /*atTimeCode*/,
1206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1207  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1208  0 /*letterIndex ("")*/,
1209  },
1210  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
1211  {
1212  -82 /*fromYearTiny (2018)*/,
1213  -82 /*toYearTiny (2018)*/,
1214  11 /*inMonth*/,
1215  7 /*onDayOfWeek*/,
1216  1 /*onDayOfMonth*/,
1217  0 /*atTimeCode*/,
1218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1219  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1220  0 /*letterIndex ("")*/,
1221  },
1222 
1223 };
1224 
1225 const extended::ZonePolicy kZonePolicyBrazil ACE_TIME_PROGMEM = {
1226  kZoneRulesBrazil /*rules*/,
1227  21 /*numRules*/,
1228 };
1229 
1230 //---------------------------------------------------------------------------
1231 // Policy name: CO
1232 // Rules: 1
1233 //---------------------------------------------------------------------------
1234 
1235 static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1236  // Anchor: Rule CO 1993 only - Feb 6 24:00 0 -
1237  {
1238  -127 /*fromYearTiny (-32767)*/,
1239  -127 /*toYearTiny (-32767)*/,
1240  1 /*inMonth*/,
1241  0 /*onDayOfWeek*/,
1242  1 /*onDayOfMonth*/,
1243  0 /*atTimeCode*/,
1244  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1245  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1246  0 /*letterIndex ("")*/,
1247  },
1248 
1249 };
1250 
1251 const extended::ZonePolicy kZonePolicyCO ACE_TIME_PROGMEM = {
1252  kZoneRulesCO /*rules*/,
1253  1 /*numRules*/,
1254 };
1255 
1256 //---------------------------------------------------------------------------
1257 // Policy name: CR
1258 // Rules: 1
1259 //---------------------------------------------------------------------------
1260 
1261 static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1262  // Anchor: Rule CR 1992 only - Mar 15 0:00 0 S
1263  {
1264  -127 /*fromYearTiny (-32767)*/,
1265  -127 /*toYearTiny (-32767)*/,
1266  1 /*inMonth*/,
1267  0 /*onDayOfWeek*/,
1268  1 /*onDayOfMonth*/,
1269  0 /*atTimeCode*/,
1270  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1271  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1272  7 /*letterIndex ("S")*/,
1273  },
1274 
1275 };
1276 
1277 const extended::ZonePolicy kZonePolicyCR ACE_TIME_PROGMEM = {
1278  kZoneRulesCR /*rules*/,
1279  1 /*numRules*/,
1280 };
1281 
1282 //---------------------------------------------------------------------------
1283 // Policy name: Canada
1284 // Rules: 6
1285 //---------------------------------------------------------------------------
1286 
1287 static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1288  // Anchor: Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1289  {
1290  -127 /*fromYearTiny (-32767)*/,
1291  -127 /*toYearTiny (-32767)*/,
1292  1 /*inMonth*/,
1293  0 /*onDayOfWeek*/,
1294  1 /*onDayOfMonth*/,
1295  0 /*atTimeCode*/,
1296  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1297  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1298  7 /*letterIndex ("S")*/,
1299  },
1300  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1301  {
1302  -126 /*fromYearTiny (1974)*/,
1303  -114 /*toYearTiny (1986)*/,
1304  4 /*inMonth*/,
1305  7 /*onDayOfWeek*/,
1306  0 /*onDayOfMonth*/,
1307  8 /*atTimeCode*/,
1308  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1309  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1310  5 /*letterIndex ("D")*/,
1311  },
1312  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1313  {
1314  -126 /*fromYearTiny (1974)*/,
1315  -94 /*toYearTiny (2006)*/,
1316  10 /*inMonth*/,
1317  7 /*onDayOfWeek*/,
1318  0 /*onDayOfMonth*/,
1319  8 /*atTimeCode*/,
1320  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1321  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1322  7 /*letterIndex ("S")*/,
1323  },
1324  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1325  {
1326  -113 /*fromYearTiny (1987)*/,
1327  -94 /*toYearTiny (2006)*/,
1328  4 /*inMonth*/,
1329  7 /*onDayOfWeek*/,
1330  1 /*onDayOfMonth*/,
1331  8 /*atTimeCode*/,
1332  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1333  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1334  5 /*letterIndex ("D")*/,
1335  },
1336  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1337  {
1338  -93 /*fromYearTiny (2007)*/,
1339  126 /*toYearTiny (32766)*/,
1340  3 /*inMonth*/,
1341  7 /*onDayOfWeek*/,
1342  8 /*onDayOfMonth*/,
1343  8 /*atTimeCode*/,
1344  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1345  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1346  5 /*letterIndex ("D")*/,
1347  },
1348  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1349  {
1350  -93 /*fromYearTiny (2007)*/,
1351  126 /*toYearTiny (32766)*/,
1352  11 /*inMonth*/,
1353  7 /*onDayOfWeek*/,
1354  1 /*onDayOfMonth*/,
1355  8 /*atTimeCode*/,
1356  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1357  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1358  7 /*letterIndex ("S")*/,
1359  },
1360 
1361 };
1362 
1363 const extended::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
1364  kZoneRulesCanada /*rules*/,
1365  6 /*numRules*/,
1366 };
1367 
1368 //---------------------------------------------------------------------------
1369 // Policy name: Chatham
1370 // Rules: 6
1371 //---------------------------------------------------------------------------
1372 
1373 static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1374  // Anchor: Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1375  {
1376  -127 /*fromYearTiny (-32767)*/,
1377  -127 /*toYearTiny (-32767)*/,
1378  1 /*inMonth*/,
1379  0 /*onDayOfWeek*/,
1380  1 /*onDayOfMonth*/,
1381  0 /*atTimeCode*/,
1382  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1383  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1384  0 /*letterIndex ("")*/,
1385  },
1386  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1387  {
1388  -111 /*fromYearTiny (1989)*/,
1389  -111 /*toYearTiny (1989)*/,
1390  10 /*inMonth*/,
1391  7 /*onDayOfWeek*/,
1392  8 /*onDayOfMonth*/,
1393  11 /*atTimeCode*/,
1394  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1395  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1396  0 /*letterIndex ("")*/,
1397  },
1398  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1399  {
1400  -110 /*fromYearTiny (1990)*/,
1401  -94 /*toYearTiny (2006)*/,
1402  10 /*inMonth*/,
1403  7 /*onDayOfWeek*/,
1404  1 /*onDayOfMonth*/,
1405  11 /*atTimeCode*/,
1406  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1407  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1408  0 /*letterIndex ("")*/,
1409  },
1410  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1411  {
1412  -110 /*fromYearTiny (1990)*/,
1413  -93 /*toYearTiny (2007)*/,
1414  3 /*inMonth*/,
1415  7 /*onDayOfWeek*/,
1416  15 /*onDayOfMonth*/,
1417  11 /*atTimeCode*/,
1418  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1419  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1420  0 /*letterIndex ("")*/,
1421  },
1422  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1423  {
1424  -93 /*fromYearTiny (2007)*/,
1425  126 /*toYearTiny (32766)*/,
1426  9 /*inMonth*/,
1427  7 /*onDayOfWeek*/,
1428  0 /*onDayOfMonth*/,
1429  11 /*atTimeCode*/,
1430  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1431  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1432  0 /*letterIndex ("")*/,
1433  },
1434  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1435  {
1436  -92 /*fromYearTiny (2008)*/,
1437  126 /*toYearTiny (32766)*/,
1438  4 /*inMonth*/,
1439  7 /*onDayOfWeek*/,
1440  1 /*onDayOfMonth*/,
1441  11 /*atTimeCode*/,
1442  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1443  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1444  0 /*letterIndex ("")*/,
1445  },
1446 
1447 };
1448 
1449 const extended::ZonePolicy kZonePolicyChatham ACE_TIME_PROGMEM = {
1450  kZoneRulesChatham /*rules*/,
1451  6 /*numRules*/,
1452 };
1453 
1454 //---------------------------------------------------------------------------
1455 // Policy name: Chile
1456 // Rules: 18
1457 //---------------------------------------------------------------------------
1458 
1459 static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1460  // Anchor: Rule Chile 1999 only - Apr 4 3:00u 0 -
1461  {
1462  -127 /*fromYearTiny (-32767)*/,
1463  -127 /*toYearTiny (-32767)*/,
1464  1 /*inMonth*/,
1465  0 /*onDayOfWeek*/,
1466  1 /*onDayOfMonth*/,
1467  0 /*atTimeCode*/,
1468  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1469  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1470  0 /*letterIndex ("")*/,
1471  },
1472  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1473  {
1474  -102 /*fromYearTiny (1998)*/,
1475  -102 /*toYearTiny (1998)*/,
1476  9 /*inMonth*/,
1477  0 /*onDayOfWeek*/,
1478  27 /*onDayOfMonth*/,
1479  16 /*atTimeCode*/,
1480  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1481  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1482  0 /*letterIndex ("")*/,
1483  },
1484  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1485  {
1486  -101 /*fromYearTiny (1999)*/,
1487  -101 /*toYearTiny (1999)*/,
1488  4 /*inMonth*/,
1489  0 /*onDayOfWeek*/,
1490  4 /*onDayOfMonth*/,
1491  12 /*atTimeCode*/,
1492  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1493  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1494  0 /*letterIndex ("")*/,
1495  },
1496  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1497  {
1498  -101 /*fromYearTiny (1999)*/,
1499  -90 /*toYearTiny (2010)*/,
1500  10 /*inMonth*/,
1501  7 /*onDayOfWeek*/,
1502  9 /*onDayOfMonth*/,
1503  16 /*atTimeCode*/,
1504  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1505  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1506  0 /*letterIndex ("")*/,
1507  },
1508  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1509  {
1510  -100 /*fromYearTiny (2000)*/,
1511  -93 /*toYearTiny (2007)*/,
1512  3 /*inMonth*/,
1513  7 /*onDayOfWeek*/,
1514  9 /*onDayOfMonth*/,
1515  12 /*atTimeCode*/,
1516  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1517  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1518  0 /*letterIndex ("")*/,
1519  },
1520  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1521  {
1522  -92 /*fromYearTiny (2008)*/,
1523  -92 /*toYearTiny (2008)*/,
1524  3 /*inMonth*/,
1525  0 /*onDayOfWeek*/,
1526  30 /*onDayOfMonth*/,
1527  12 /*atTimeCode*/,
1528  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1529  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1530  0 /*letterIndex ("")*/,
1531  },
1532  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1533  {
1534  -91 /*fromYearTiny (2009)*/,
1535  -91 /*toYearTiny (2009)*/,
1536  3 /*inMonth*/,
1537  7 /*onDayOfWeek*/,
1538  9 /*onDayOfMonth*/,
1539  12 /*atTimeCode*/,
1540  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1541  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1542  0 /*letterIndex ("")*/,
1543  },
1544  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1545  {
1546  -90 /*fromYearTiny (2010)*/,
1547  -90 /*toYearTiny (2010)*/,
1548  4 /*inMonth*/,
1549  7 /*onDayOfWeek*/,
1550  1 /*onDayOfMonth*/,
1551  12 /*atTimeCode*/,
1552  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1553  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1554  0 /*letterIndex ("")*/,
1555  },
1556  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1557  {
1558  -89 /*fromYearTiny (2011)*/,
1559  -89 /*toYearTiny (2011)*/,
1560  5 /*inMonth*/,
1561  7 /*onDayOfWeek*/,
1562  2 /*onDayOfMonth*/,
1563  12 /*atTimeCode*/,
1564  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1565  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1566  0 /*letterIndex ("")*/,
1567  },
1568  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1569  {
1570  -89 /*fromYearTiny (2011)*/,
1571  -89 /*toYearTiny (2011)*/,
1572  8 /*inMonth*/,
1573  7 /*onDayOfWeek*/,
1574  16 /*onDayOfMonth*/,
1575  16 /*atTimeCode*/,
1576  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1577  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1578  0 /*letterIndex ("")*/,
1579  },
1580  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1581  {
1582  -88 /*fromYearTiny (2012)*/,
1583  -86 /*toYearTiny (2014)*/,
1584  4 /*inMonth*/,
1585  7 /*onDayOfWeek*/,
1586  23 /*onDayOfMonth*/,
1587  12 /*atTimeCode*/,
1588  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1589  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1590  0 /*letterIndex ("")*/,
1591  },
1592  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1593  {
1594  -88 /*fromYearTiny (2012)*/,
1595  -86 /*toYearTiny (2014)*/,
1596  9 /*inMonth*/,
1597  7 /*onDayOfWeek*/,
1598  2 /*onDayOfMonth*/,
1599  16 /*atTimeCode*/,
1600  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1601  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1602  0 /*letterIndex ("")*/,
1603  },
1604  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1605  {
1606  -84 /*fromYearTiny (2016)*/,
1607  -82 /*toYearTiny (2018)*/,
1608  5 /*inMonth*/,
1609  7 /*onDayOfWeek*/,
1610  9 /*onDayOfMonth*/,
1611  12 /*atTimeCode*/,
1612  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1613  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1614  0 /*letterIndex ("")*/,
1615  },
1616  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1617  {
1618  -84 /*fromYearTiny (2016)*/,
1619  -82 /*toYearTiny (2018)*/,
1620  8 /*inMonth*/,
1621  7 /*onDayOfWeek*/,
1622  9 /*onDayOfMonth*/,
1623  16 /*atTimeCode*/,
1624  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1625  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1626  0 /*letterIndex ("")*/,
1627  },
1628  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1629  {
1630  -81 /*fromYearTiny (2019)*/,
1631  126 /*toYearTiny (32766)*/,
1632  4 /*inMonth*/,
1633  7 /*onDayOfWeek*/,
1634  2 /*onDayOfMonth*/,
1635  12 /*atTimeCode*/,
1636  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1637  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1638  0 /*letterIndex ("")*/,
1639  },
1640  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
1641  {
1642  -81 /*fromYearTiny (2019)*/,
1643  -79 /*toYearTiny (2021)*/,
1644  9 /*inMonth*/,
1645  7 /*onDayOfWeek*/,
1646  2 /*onDayOfMonth*/,
1647  16 /*atTimeCode*/,
1648  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1649  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1650  0 /*letterIndex ("")*/,
1651  },
1652  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
1653  {
1654  -78 /*fromYearTiny (2022)*/,
1655  -78 /*toYearTiny (2022)*/,
1656  9 /*inMonth*/,
1657  7 /*onDayOfWeek*/,
1658  9 /*onDayOfMonth*/,
1659  16 /*atTimeCode*/,
1660  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1661  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1662  0 /*letterIndex ("")*/,
1663  },
1664  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
1665  {
1666  -77 /*fromYearTiny (2023)*/,
1667  126 /*toYearTiny (32766)*/,
1668  9 /*inMonth*/,
1669  7 /*onDayOfWeek*/,
1670  2 /*onDayOfMonth*/,
1671  16 /*atTimeCode*/,
1672  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1673  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1674  0 /*letterIndex ("")*/,
1675  },
1676 
1677 };
1678 
1679 const extended::ZonePolicy kZonePolicyChile ACE_TIME_PROGMEM = {
1680  kZoneRulesChile /*rules*/,
1681  18 /*numRules*/,
1682 };
1683 
1684 //---------------------------------------------------------------------------
1685 // Policy name: Cook
1686 // Rules: 1
1687 //---------------------------------------------------------------------------
1688 
1689 static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1690  // Anchor: Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1691  {
1692  -127 /*fromYearTiny (-32767)*/,
1693  -127 /*toYearTiny (-32767)*/,
1694  1 /*inMonth*/,
1695  0 /*onDayOfWeek*/,
1696  1 /*onDayOfMonth*/,
1697  0 /*atTimeCode*/,
1698  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1699  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1700  0 /*letterIndex ("")*/,
1701  },
1702 
1703 };
1704 
1705 const extended::ZonePolicy kZonePolicyCook ACE_TIME_PROGMEM = {
1706  kZoneRulesCook /*rules*/,
1707  1 /*numRules*/,
1708 };
1709 
1710 //---------------------------------------------------------------------------
1711 // Policy name: Cuba
1712 // Rules: 15
1713 //---------------------------------------------------------------------------
1714 
1715 static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1716  // Anchor: Rule Cuba 1997 only - Oct 12 0:00s 0 S
1717  {
1718  -127 /*fromYearTiny (-32767)*/,
1719  -127 /*toYearTiny (-32767)*/,
1720  1 /*inMonth*/,
1721  0 /*onDayOfWeek*/,
1722  1 /*onDayOfMonth*/,
1723  0 /*atTimeCode*/,
1724  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1725  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1726  7 /*letterIndex ("S")*/,
1727  },
1728  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1729  {
1730  -103 /*fromYearTiny (1997)*/,
1731  -103 /*toYearTiny (1997)*/,
1732  10 /*inMonth*/,
1733  0 /*onDayOfWeek*/,
1734  12 /*onDayOfMonth*/,
1735  0 /*atTimeCode*/,
1736  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1737  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1738  7 /*letterIndex ("S")*/,
1739  },
1740  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1741  {
1742  -102 /*fromYearTiny (1998)*/,
1743  -101 /*toYearTiny (1999)*/,
1744  3 /*inMonth*/,
1745  7 /*onDayOfWeek*/,
1746  0 /*onDayOfMonth*/,
1747  0 /*atTimeCode*/,
1748  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1749  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1750  5 /*letterIndex ("D")*/,
1751  },
1752  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1753  {
1754  -102 /*fromYearTiny (1998)*/,
1755  -97 /*toYearTiny (2003)*/,
1756  10 /*inMonth*/,
1757  7 /*onDayOfWeek*/,
1758  0 /*onDayOfMonth*/,
1759  0 /*atTimeCode*/,
1760  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1761  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1762  7 /*letterIndex ("S")*/,
1763  },
1764  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1765  {
1766  -100 /*fromYearTiny (2000)*/,
1767  -97 /*toYearTiny (2003)*/,
1768  4 /*inMonth*/,
1769  7 /*onDayOfWeek*/,
1770  1 /*onDayOfMonth*/,
1771  0 /*atTimeCode*/,
1772  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1773  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1774  5 /*letterIndex ("D")*/,
1775  },
1776  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1777  {
1778  -96 /*fromYearTiny (2004)*/,
1779  -96 /*toYearTiny (2004)*/,
1780  3 /*inMonth*/,
1781  7 /*onDayOfWeek*/,
1782  0 /*onDayOfMonth*/,
1783  0 /*atTimeCode*/,
1784  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1785  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1786  5 /*letterIndex ("D")*/,
1787  },
1788  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1789  {
1790  -94 /*fromYearTiny (2006)*/,
1791  -90 /*toYearTiny (2010)*/,
1792  10 /*inMonth*/,
1793  7 /*onDayOfWeek*/,
1794  0 /*onDayOfMonth*/,
1795  0 /*atTimeCode*/,
1796  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1797  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1798  7 /*letterIndex ("S")*/,
1799  },
1800  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1801  {
1802  -93 /*fromYearTiny (2007)*/,
1803  -93 /*toYearTiny (2007)*/,
1804  3 /*inMonth*/,
1805  7 /*onDayOfWeek*/,
1806  8 /*onDayOfMonth*/,
1807  0 /*atTimeCode*/,
1808  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1809  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1810  5 /*letterIndex ("D")*/,
1811  },
1812  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1813  {
1814  -92 /*fromYearTiny (2008)*/,
1815  -92 /*toYearTiny (2008)*/,
1816  3 /*inMonth*/,
1817  7 /*onDayOfWeek*/,
1818  15 /*onDayOfMonth*/,
1819  0 /*atTimeCode*/,
1820  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1821  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1822  5 /*letterIndex ("D")*/,
1823  },
1824  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1825  {
1826  -91 /*fromYearTiny (2009)*/,
1827  -90 /*toYearTiny (2010)*/,
1828  3 /*inMonth*/,
1829  7 /*onDayOfWeek*/,
1830  8 /*onDayOfMonth*/,
1831  0 /*atTimeCode*/,
1832  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1833  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1834  5 /*letterIndex ("D")*/,
1835  },
1836  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1837  {
1838  -89 /*fromYearTiny (2011)*/,
1839  -89 /*toYearTiny (2011)*/,
1840  3 /*inMonth*/,
1841  7 /*onDayOfWeek*/,
1842  15 /*onDayOfMonth*/,
1843  0 /*atTimeCode*/,
1844  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1845  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1846  5 /*letterIndex ("D")*/,
1847  },
1848  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1849  {
1850  -89 /*fromYearTiny (2011)*/,
1851  -89 /*toYearTiny (2011)*/,
1852  11 /*inMonth*/,
1853  0 /*onDayOfWeek*/,
1854  13 /*onDayOfMonth*/,
1855  0 /*atTimeCode*/,
1856  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1857  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1858  7 /*letterIndex ("S")*/,
1859  },
1860  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1861  {
1862  -88 /*fromYearTiny (2012)*/,
1863  -88 /*toYearTiny (2012)*/,
1864  4 /*inMonth*/,
1865  0 /*onDayOfWeek*/,
1866  1 /*onDayOfMonth*/,
1867  0 /*atTimeCode*/,
1868  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1869  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1870  5 /*letterIndex ("D")*/,
1871  },
1872  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1873  {
1874  -88 /*fromYearTiny (2012)*/,
1875  126 /*toYearTiny (32766)*/,
1876  11 /*inMonth*/,
1877  7 /*onDayOfWeek*/,
1878  1 /*onDayOfMonth*/,
1879  0 /*atTimeCode*/,
1880  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1881  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1882  7 /*letterIndex ("S")*/,
1883  },
1884  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1885  {
1886  -87 /*fromYearTiny (2013)*/,
1887  126 /*toYearTiny (32766)*/,
1888  3 /*inMonth*/,
1889  7 /*onDayOfWeek*/,
1890  8 /*onDayOfMonth*/,
1891  0 /*atTimeCode*/,
1892  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1893  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1894  5 /*letterIndex ("D")*/,
1895  },
1896 
1897 };
1898 
1899 const extended::ZonePolicy kZonePolicyCuba ACE_TIME_PROGMEM = {
1900  kZoneRulesCuba /*rules*/,
1901  15 /*numRules*/,
1902 };
1903 
1904 //---------------------------------------------------------------------------
1905 // Policy name: Dhaka
1906 // Rules: 3
1907 //---------------------------------------------------------------------------
1908 
1909 static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1910  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1911  {
1912  -127 /*fromYearTiny (-32767)*/,
1913  -127 /*toYearTiny (-32767)*/,
1914  1 /*inMonth*/,
1915  0 /*onDayOfWeek*/,
1916  1 /*onDayOfMonth*/,
1917  0 /*atTimeCode*/,
1918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1919  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1920  0 /*letterIndex ("")*/,
1921  },
1922  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1923  {
1924  -91 /*fromYearTiny (2009)*/,
1925  -91 /*toYearTiny (2009)*/,
1926  6 /*inMonth*/,
1927  0 /*onDayOfWeek*/,
1928  19 /*onDayOfMonth*/,
1929  92 /*atTimeCode*/,
1930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1931  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1932  0 /*letterIndex ("")*/,
1933  },
1934  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1935  {
1936  -91 /*fromYearTiny (2009)*/,
1937  -91 /*toYearTiny (2009)*/,
1938  12 /*inMonth*/,
1939  0 /*onDayOfWeek*/,
1940  31 /*onDayOfMonth*/,
1941  96 /*atTimeCode*/,
1942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1944  0 /*letterIndex ("")*/,
1945  },
1946 
1947 };
1948 
1949 const extended::ZonePolicy kZonePolicyDhaka ACE_TIME_PROGMEM = {
1950  kZoneRulesDhaka /*rules*/,
1951  3 /*numRules*/,
1952 };
1953 
1954 //---------------------------------------------------------------------------
1955 // Policy name: E-EurAsia
1956 // Rules: 4
1957 //---------------------------------------------------------------------------
1958 
1959 static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = {
1960  // Anchor: Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
1961  {
1962  -127 /*fromYearTiny (-32767)*/,
1963  -127 /*toYearTiny (-32767)*/,
1964  1 /*inMonth*/,
1965  0 /*onDayOfWeek*/,
1966  1 /*onDayOfMonth*/,
1967  0 /*atTimeCode*/,
1968  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1969  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1970  0 /*letterIndex ("")*/,
1971  },
1972  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
1973  {
1974  -119 /*fromYearTiny (1981)*/,
1975  126 /*toYearTiny (32766)*/,
1976  3 /*inMonth*/,
1977  7 /*onDayOfWeek*/,
1978  0 /*onDayOfMonth*/,
1979  0 /*atTimeCode*/,
1980  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1981  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1982  0 /*letterIndex ("")*/,
1983  },
1984  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
1985  {
1986  -121 /*fromYearTiny (1979)*/,
1987  -105 /*toYearTiny (1995)*/,
1988  9 /*inMonth*/,
1989  7 /*onDayOfWeek*/,
1990  0 /*onDayOfMonth*/,
1991  0 /*atTimeCode*/,
1992  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1993  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1994  0 /*letterIndex ("")*/,
1995  },
1996  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
1997  {
1998  -104 /*fromYearTiny (1996)*/,
1999  126 /*toYearTiny (32766)*/,
2000  10 /*inMonth*/,
2001  7 /*onDayOfWeek*/,
2002  0 /*onDayOfMonth*/,
2003  0 /*atTimeCode*/,
2004  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2005  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2006  0 /*letterIndex ("")*/,
2007  },
2008 
2009 };
2010 
2011 const extended::ZonePolicy kZonePolicyE_EurAsia ACE_TIME_PROGMEM = {
2012  kZoneRulesE_EurAsia /*rules*/,
2013  4 /*numRules*/,
2014 };
2015 
2016 //---------------------------------------------------------------------------
2017 // Policy name: EU
2018 // Rules: 4
2019 //---------------------------------------------------------------------------
2020 
2021 static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
2022  // Anchor: Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2023  {
2024  -127 /*fromYearTiny (-32767)*/,
2025  -127 /*toYearTiny (-32767)*/,
2026  1 /*inMonth*/,
2027  0 /*onDayOfWeek*/,
2028  1 /*onDayOfMonth*/,
2029  0 /*atTimeCode*/,
2030  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2031  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2032  0 /*letterIndex ("")*/,
2033  },
2034  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2035  {
2036  -121 /*fromYearTiny (1979)*/,
2037  -105 /*toYearTiny (1995)*/,
2038  9 /*inMonth*/,
2039  7 /*onDayOfWeek*/,
2040  0 /*onDayOfMonth*/,
2041  4 /*atTimeCode*/,
2042  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2043  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2044  0 /*letterIndex ("")*/,
2045  },
2046  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2047  {
2048  -119 /*fromYearTiny (1981)*/,
2049  126 /*toYearTiny (32766)*/,
2050  3 /*inMonth*/,
2051  7 /*onDayOfWeek*/,
2052  0 /*onDayOfMonth*/,
2053  4 /*atTimeCode*/,
2054  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2055  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2056  7 /*letterIndex ("S")*/,
2057  },
2058  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2059  {
2060  -104 /*fromYearTiny (1996)*/,
2061  126 /*toYearTiny (32766)*/,
2062  10 /*inMonth*/,
2063  7 /*onDayOfWeek*/,
2064  0 /*onDayOfMonth*/,
2065  4 /*atTimeCode*/,
2066  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2067  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2068  0 /*letterIndex ("")*/,
2069  },
2070 
2071 };
2072 
2073 const extended::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
2074  kZoneRulesEU /*rules*/,
2075  4 /*numRules*/,
2076 };
2077 
2078 //---------------------------------------------------------------------------
2079 // Policy name: EUAsia
2080 // Rules: 4
2081 //---------------------------------------------------------------------------
2082 
2083 static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
2084  // Anchor: Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2085  {
2086  -127 /*fromYearTiny (-32767)*/,
2087  -127 /*toYearTiny (-32767)*/,
2088  1 /*inMonth*/,
2089  0 /*onDayOfWeek*/,
2090  1 /*onDayOfMonth*/,
2091  0 /*atTimeCode*/,
2092  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2093  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2094  0 /*letterIndex ("")*/,
2095  },
2096  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2097  {
2098  -119 /*fromYearTiny (1981)*/,
2099  126 /*toYearTiny (32766)*/,
2100  3 /*inMonth*/,
2101  7 /*onDayOfWeek*/,
2102  0 /*onDayOfMonth*/,
2103  4 /*atTimeCode*/,
2104  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2105  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2106  7 /*letterIndex ("S")*/,
2107  },
2108  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2109  {
2110  -121 /*fromYearTiny (1979)*/,
2111  -105 /*toYearTiny (1995)*/,
2112  9 /*inMonth*/,
2113  7 /*onDayOfWeek*/,
2114  0 /*onDayOfMonth*/,
2115  4 /*atTimeCode*/,
2116  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2117  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2118  0 /*letterIndex ("")*/,
2119  },
2120  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2121  {
2122  -104 /*fromYearTiny (1996)*/,
2123  126 /*toYearTiny (32766)*/,
2124  10 /*inMonth*/,
2125  7 /*onDayOfWeek*/,
2126  0 /*onDayOfMonth*/,
2127  4 /*atTimeCode*/,
2128  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2129  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2130  0 /*letterIndex ("")*/,
2131  },
2132 
2133 };
2134 
2135 const extended::ZonePolicy kZonePolicyEUAsia ACE_TIME_PROGMEM = {
2136  kZoneRulesEUAsia /*rules*/,
2137  4 /*numRules*/,
2138 };
2139 
2140 //---------------------------------------------------------------------------
2141 // Policy name: Ecuador
2142 // Rules: 1
2143 //---------------------------------------------------------------------------
2144 
2145 static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2146  // Anchor: Rule Ecuador 1993 only - Feb 5 0:00 0 -
2147  {
2148  -127 /*fromYearTiny (-32767)*/,
2149  -127 /*toYearTiny (-32767)*/,
2150  1 /*inMonth*/,
2151  0 /*onDayOfWeek*/,
2152  1 /*onDayOfMonth*/,
2153  0 /*atTimeCode*/,
2154  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2155  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2156  0 /*letterIndex ("")*/,
2157  },
2158 
2159 };
2160 
2161 const extended::ZonePolicy kZonePolicyEcuador ACE_TIME_PROGMEM = {
2162  kZoneRulesEcuador /*rules*/,
2163  1 /*numRules*/,
2164 };
2165 
2166 //---------------------------------------------------------------------------
2167 // Policy name: Egypt
2168 // Rules: 17
2169 //---------------------------------------------------------------------------
2170 
2171 static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = {
2172  // Anchor: Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2173  {
2174  -127 /*fromYearTiny (-32767)*/,
2175  -127 /*toYearTiny (-32767)*/,
2176  1 /*inMonth*/,
2177  0 /*onDayOfWeek*/,
2178  1 /*onDayOfMonth*/,
2179  0 /*atTimeCode*/,
2180  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2181  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2182  0 /*letterIndex ("")*/,
2183  },
2184  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2185  {
2186  -127 /*fromYearTiny (1966)*/,
2187  -106 /*toYearTiny (1994)*/,
2188  10 /*inMonth*/,
2189  0 /*onDayOfWeek*/,
2190  1 /*onDayOfMonth*/,
2191  12 /*atTimeCode*/,
2192  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2193  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2194  0 /*letterIndex ("")*/,
2195  },
2196  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2197  {
2198  -105 /*fromYearTiny (1995)*/,
2199  -90 /*toYearTiny (2010)*/,
2200  4 /*inMonth*/,
2201  5 /*onDayOfWeek*/,
2202  0 /*onDayOfMonth*/,
2203  0 /*atTimeCode*/,
2204  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2205  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2206  7 /*letterIndex ("S")*/,
2207  },
2208  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2209  {
2210  -105 /*fromYearTiny (1995)*/,
2211  -95 /*toYearTiny (2005)*/,
2212  9 /*inMonth*/,
2213  4 /*onDayOfWeek*/,
2214  0 /*onDayOfMonth*/,
2215  96 /*atTimeCode*/,
2216  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2217  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2218  0 /*letterIndex ("")*/,
2219  },
2220  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2221  {
2222  -94 /*fromYearTiny (2006)*/,
2223  -94 /*toYearTiny (2006)*/,
2224  9 /*inMonth*/,
2225  0 /*onDayOfWeek*/,
2226  21 /*onDayOfMonth*/,
2227  96 /*atTimeCode*/,
2228  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2229  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2230  0 /*letterIndex ("")*/,
2231  },
2232  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2233  {
2234  -93 /*fromYearTiny (2007)*/,
2235  -93 /*toYearTiny (2007)*/,
2236  9 /*inMonth*/,
2237  4 /*onDayOfWeek*/,
2238  1 /*onDayOfMonth*/,
2239  96 /*atTimeCode*/,
2240  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2241  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2242  0 /*letterIndex ("")*/,
2243  },
2244  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2245  {
2246  -92 /*fromYearTiny (2008)*/,
2247  -92 /*toYearTiny (2008)*/,
2248  8 /*inMonth*/,
2249  4 /*onDayOfWeek*/,
2250  0 /*onDayOfMonth*/,
2251  96 /*atTimeCode*/,
2252  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2253  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2254  0 /*letterIndex ("")*/,
2255  },
2256  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2257  {
2258  -91 /*fromYearTiny (2009)*/,
2259  -91 /*toYearTiny (2009)*/,
2260  8 /*inMonth*/,
2261  0 /*onDayOfWeek*/,
2262  20 /*onDayOfMonth*/,
2263  96 /*atTimeCode*/,
2264  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2265  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2266  0 /*letterIndex ("")*/,
2267  },
2268  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2269  {
2270  -90 /*fromYearTiny (2010)*/,
2271  -90 /*toYearTiny (2010)*/,
2272  8 /*inMonth*/,
2273  0 /*onDayOfWeek*/,
2274  10 /*onDayOfMonth*/,
2275  96 /*atTimeCode*/,
2276  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2277  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2278  0 /*letterIndex ("")*/,
2279  },
2280  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2281  {
2282  -90 /*fromYearTiny (2010)*/,
2283  -90 /*toYearTiny (2010)*/,
2284  9 /*inMonth*/,
2285  0 /*onDayOfWeek*/,
2286  9 /*onDayOfMonth*/,
2287  96 /*atTimeCode*/,
2288  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2289  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2290  7 /*letterIndex ("S")*/,
2291  },
2292  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2293  {
2294  -90 /*fromYearTiny (2010)*/,
2295  -90 /*toYearTiny (2010)*/,
2296  9 /*inMonth*/,
2297  4 /*onDayOfWeek*/,
2298  0 /*onDayOfMonth*/,
2299  96 /*atTimeCode*/,
2300  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2301  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2302  0 /*letterIndex ("")*/,
2303  },
2304  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2305  {
2306  -86 /*fromYearTiny (2014)*/,
2307  -86 /*toYearTiny (2014)*/,
2308  5 /*inMonth*/,
2309  0 /*onDayOfWeek*/,
2310  15 /*onDayOfMonth*/,
2311  96 /*atTimeCode*/,
2312  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2313  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2314  7 /*letterIndex ("S")*/,
2315  },
2316  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2317  {
2318  -86 /*fromYearTiny (2014)*/,
2319  -86 /*toYearTiny (2014)*/,
2320  6 /*inMonth*/,
2321  0 /*onDayOfWeek*/,
2322  26 /*onDayOfMonth*/,
2323  96 /*atTimeCode*/,
2324  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2325  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2326  0 /*letterIndex ("")*/,
2327  },
2328  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2329  {
2330  -86 /*fromYearTiny (2014)*/,
2331  -86 /*toYearTiny (2014)*/,
2332  7 /*inMonth*/,
2333  0 /*onDayOfWeek*/,
2334  31 /*onDayOfMonth*/,
2335  96 /*atTimeCode*/,
2336  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2337  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2338  7 /*letterIndex ("S")*/,
2339  },
2340  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2341  {
2342  -86 /*fromYearTiny (2014)*/,
2343  -86 /*toYearTiny (2014)*/,
2344  9 /*inMonth*/,
2345  4 /*onDayOfWeek*/,
2346  0 /*onDayOfMonth*/,
2347  96 /*atTimeCode*/,
2348  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2349  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2350  0 /*letterIndex ("")*/,
2351  },
2352  // Rule Egypt 2023 max - Apr lastFri 0:00 1:00 S
2353  {
2354  -77 /*fromYearTiny (2023)*/,
2355  126 /*toYearTiny (32766)*/,
2356  4 /*inMonth*/,
2357  5 /*onDayOfWeek*/,
2358  0 /*onDayOfMonth*/,
2359  0 /*atTimeCode*/,
2360  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2361  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2362  7 /*letterIndex ("S")*/,
2363  },
2364  // Rule Egypt 2023 max - Oct lastThu 24:00 0 -
2365  {
2366  -77 /*fromYearTiny (2023)*/,
2367  126 /*toYearTiny (32766)*/,
2368  10 /*inMonth*/,
2369  4 /*onDayOfWeek*/,
2370  0 /*onDayOfMonth*/,
2371  96 /*atTimeCode*/,
2372  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2373  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2374  0 /*letterIndex ("")*/,
2375  },
2376 
2377 };
2378 
2379 const extended::ZonePolicy kZonePolicyEgypt ACE_TIME_PROGMEM = {
2380  kZoneRulesEgypt /*rules*/,
2381  17 /*numRules*/,
2382 };
2383 
2384 //---------------------------------------------------------------------------
2385 // Policy name: Eire
2386 // Rules: 4
2387 //---------------------------------------------------------------------------
2388 
2389 static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2390  // Anchor: Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2391  {
2392  -127 /*fromYearTiny (-32767)*/,
2393  -127 /*toYearTiny (-32767)*/,
2394  1 /*inMonth*/,
2395  0 /*onDayOfWeek*/,
2396  1 /*onDayOfMonth*/,
2397  0 /*atTimeCode*/,
2398  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2399  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2400  0 /*letterIndex ("")*/,
2401  },
2402  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2403  {
2404  -119 /*fromYearTiny (1981)*/,
2405  126 /*toYearTiny (32766)*/,
2406  3 /*inMonth*/,
2407  7 /*onDayOfWeek*/,
2408  0 /*onDayOfMonth*/,
2409  4 /*atTimeCode*/,
2410  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2411  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2412  0 /*letterIndex ("")*/,
2413  },
2414  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2415  {
2416  -110 /*fromYearTiny (1990)*/,
2417  -105 /*toYearTiny (1995)*/,
2418  10 /*inMonth*/,
2419  7 /*onDayOfWeek*/,
2420  22 /*onDayOfMonth*/,
2421  4 /*atTimeCode*/,
2422  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2423  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2424  0 /*letterIndex ("")*/,
2425  },
2426  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2427  {
2428  -104 /*fromYearTiny (1996)*/,
2429  126 /*toYearTiny (32766)*/,
2430  10 /*inMonth*/,
2431  7 /*onDayOfWeek*/,
2432  0 /*onDayOfMonth*/,
2433  4 /*atTimeCode*/,
2434  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2435  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2436  0 /*letterIndex ("")*/,
2437  },
2438 
2439 };
2440 
2441 const extended::ZonePolicy kZonePolicyEire ACE_TIME_PROGMEM = {
2442  kZoneRulesEire /*rules*/,
2443  4 /*numRules*/,
2444 };
2445 
2446 //---------------------------------------------------------------------------
2447 // Policy name: Falk
2448 // Rules: 6
2449 //---------------------------------------------------------------------------
2450 
2451 static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = {
2452  // Anchor: Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2453  {
2454  -127 /*fromYearTiny (-32767)*/,
2455  -127 /*toYearTiny (-32767)*/,
2456  1 /*inMonth*/,
2457  0 /*onDayOfWeek*/,
2458  1 /*onDayOfMonth*/,
2459  0 /*atTimeCode*/,
2460  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2461  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2462  0 /*letterIndex ("")*/,
2463  },
2464  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2465  {
2466  -116 /*fromYearTiny (1984)*/,
2467  -115 /*toYearTiny (1985)*/,
2468  4 /*inMonth*/,
2469  7 /*onDayOfWeek*/,
2470  0 /*onDayOfMonth*/,
2471  0 /*atTimeCode*/,
2472  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2473  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2474  0 /*letterIndex ("")*/,
2475  },
2476  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2477  {
2478  -115 /*fromYearTiny (1985)*/,
2479  -100 /*toYearTiny (2000)*/,
2480  9 /*inMonth*/,
2481  7 /*onDayOfWeek*/,
2482  9 /*onDayOfMonth*/,
2483  0 /*atTimeCode*/,
2484  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2485  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2486  0 /*letterIndex ("")*/,
2487  },
2488  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2489  {
2490  -114 /*fromYearTiny (1986)*/,
2491  -100 /*toYearTiny (2000)*/,
2492  4 /*inMonth*/,
2493  7 /*onDayOfWeek*/,
2494  16 /*onDayOfMonth*/,
2495  0 /*atTimeCode*/,
2496  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2497  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2498  0 /*letterIndex ("")*/,
2499  },
2500  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2501  {
2502  -99 /*fromYearTiny (2001)*/,
2503  -90 /*toYearTiny (2010)*/,
2504  4 /*inMonth*/,
2505  7 /*onDayOfWeek*/,
2506  15 /*onDayOfMonth*/,
2507  8 /*atTimeCode*/,
2508  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2509  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2510  0 /*letterIndex ("")*/,
2511  },
2512  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2513  {
2514  -99 /*fromYearTiny (2001)*/,
2515  -90 /*toYearTiny (2010)*/,
2516  9 /*inMonth*/,
2517  7 /*onDayOfWeek*/,
2518  1 /*onDayOfMonth*/,
2519  8 /*atTimeCode*/,
2520  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2521  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2522  0 /*letterIndex ("")*/,
2523  },
2524 
2525 };
2526 
2527 const extended::ZonePolicy kZonePolicyFalk ACE_TIME_PROGMEM = {
2528  kZoneRulesFalk /*rules*/,
2529  6 /*numRules*/,
2530 };
2531 
2532 //---------------------------------------------------------------------------
2533 // Policy name: Fiji
2534 // Rules: 13
2535 //---------------------------------------------------------------------------
2536 
2537 static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2538  // Anchor: Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2539  {
2540  -127 /*fromYearTiny (-32767)*/,
2541  -127 /*toYearTiny (-32767)*/,
2542  1 /*inMonth*/,
2543  0 /*onDayOfWeek*/,
2544  1 /*onDayOfMonth*/,
2545  0 /*atTimeCode*/,
2546  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2547  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2548  0 /*letterIndex ("")*/,
2549  },
2550  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2551  {
2552  -102 /*fromYearTiny (1998)*/,
2553  -101 /*toYearTiny (1999)*/,
2554  11 /*inMonth*/,
2555  7 /*onDayOfWeek*/,
2556  1 /*onDayOfMonth*/,
2557  8 /*atTimeCode*/,
2558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2559  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2560  0 /*letterIndex ("")*/,
2561  },
2562  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2563  {
2564  -101 /*fromYearTiny (1999)*/,
2565  -100 /*toYearTiny (2000)*/,
2566  2 /*inMonth*/,
2567  7 /*onDayOfWeek*/,
2568  0 /*onDayOfMonth*/,
2569  12 /*atTimeCode*/,
2570  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2571  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2572  0 /*letterIndex ("")*/,
2573  },
2574  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2575  {
2576  -91 /*fromYearTiny (2009)*/,
2577  -91 /*toYearTiny (2009)*/,
2578  11 /*inMonth*/,
2579  0 /*onDayOfWeek*/,
2580  29 /*onDayOfMonth*/,
2581  8 /*atTimeCode*/,
2582  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2583  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2584  0 /*letterIndex ("")*/,
2585  },
2586  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2587  {
2588  -90 /*fromYearTiny (2010)*/,
2589  -90 /*toYearTiny (2010)*/,
2590  3 /*inMonth*/,
2591  7 /*onDayOfWeek*/,
2592  0 /*onDayOfMonth*/,
2593  12 /*atTimeCode*/,
2594  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2595  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2596  0 /*letterIndex ("")*/,
2597  },
2598  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2599  {
2600  -90 /*fromYearTiny (2010)*/,
2601  -87 /*toYearTiny (2013)*/,
2602  10 /*inMonth*/,
2603  7 /*onDayOfWeek*/,
2604  21 /*onDayOfMonth*/,
2605  8 /*atTimeCode*/,
2606  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2607  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2608  0 /*letterIndex ("")*/,
2609  },
2610  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2611  {
2612  -89 /*fromYearTiny (2011)*/,
2613  -89 /*toYearTiny (2011)*/,
2614  3 /*inMonth*/,
2615  7 /*onDayOfWeek*/,
2616  1 /*onDayOfMonth*/,
2617  12 /*atTimeCode*/,
2618  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2619  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2620  0 /*letterIndex ("")*/,
2621  },
2622  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2623  {
2624  -88 /*fromYearTiny (2012)*/,
2625  -87 /*toYearTiny (2013)*/,
2626  1 /*inMonth*/,
2627  7 /*onDayOfWeek*/,
2628  18 /*onDayOfMonth*/,
2629  12 /*atTimeCode*/,
2630  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2631  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2632  0 /*letterIndex ("")*/,
2633  },
2634  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2635  {
2636  -86 /*fromYearTiny (2014)*/,
2637  -86 /*toYearTiny (2014)*/,
2638  1 /*inMonth*/,
2639  7 /*onDayOfWeek*/,
2640  18 /*onDayOfMonth*/,
2641  8 /*atTimeCode*/,
2642  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2643  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2644  0 /*letterIndex ("")*/,
2645  },
2646  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2647  {
2648  -86 /*fromYearTiny (2014)*/,
2649  -82 /*toYearTiny (2018)*/,
2650  11 /*inMonth*/,
2651  7 /*onDayOfWeek*/,
2652  1 /*onDayOfMonth*/,
2653  8 /*atTimeCode*/,
2654  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2655  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2656  0 /*letterIndex ("")*/,
2657  },
2658  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2659  {
2660  -85 /*fromYearTiny (2015)*/,
2661  -79 /*toYearTiny (2021)*/,
2662  1 /*inMonth*/,
2663  7 /*onDayOfWeek*/,
2664  12 /*onDayOfMonth*/,
2665  12 /*atTimeCode*/,
2666  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2667  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2668  0 /*letterIndex ("")*/,
2669  },
2670  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2671  {
2672  -81 /*fromYearTiny (2019)*/,
2673  -81 /*toYearTiny (2019)*/,
2674  11 /*inMonth*/,
2675  7 /*onDayOfWeek*/,
2676  8 /*onDayOfMonth*/,
2677  8 /*atTimeCode*/,
2678  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2679  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2680  0 /*letterIndex ("")*/,
2681  },
2682  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2683  {
2684  -80 /*fromYearTiny (2020)*/,
2685  -80 /*toYearTiny (2020)*/,
2686  12 /*inMonth*/,
2687  0 /*onDayOfWeek*/,
2688  20 /*onDayOfMonth*/,
2689  8 /*atTimeCode*/,
2690  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2691  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2692  0 /*letterIndex ("")*/,
2693  },
2694 
2695 };
2696 
2697 const extended::ZonePolicy kZonePolicyFiji ACE_TIME_PROGMEM = {
2698  kZoneRulesFiji /*rules*/,
2699  13 /*numRules*/,
2700 };
2701 
2702 //---------------------------------------------------------------------------
2703 // Policy name: Guam
2704 // Rules: 1
2705 //---------------------------------------------------------------------------
2706 
2707 static const extended::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = {
2708  // Anchor: Rule Guam 1977 only - Aug 28 2:00 0 S
2709  {
2710  -127 /*fromYearTiny (-32767)*/,
2711  -127 /*toYearTiny (-32767)*/,
2712  1 /*inMonth*/,
2713  0 /*onDayOfWeek*/,
2714  1 /*onDayOfMonth*/,
2715  0 /*atTimeCode*/,
2716  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2717  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2718  7 /*letterIndex ("S")*/,
2719  },
2720 
2721 };
2722 
2723 const extended::ZonePolicy kZonePolicyGuam ACE_TIME_PROGMEM = {
2724  kZoneRulesGuam /*rules*/,
2725  1 /*numRules*/,
2726 };
2727 
2728 //---------------------------------------------------------------------------
2729 // Policy name: Guat
2730 // Rules: 4
2731 //---------------------------------------------------------------------------
2732 
2733 static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2734  // Anchor: Rule Guat 1991 only - Sep 7 0:00 0 S
2735  {
2736  -127 /*fromYearTiny (-32767)*/,
2737  -127 /*toYearTiny (-32767)*/,
2738  1 /*inMonth*/,
2739  0 /*onDayOfWeek*/,
2740  1 /*onDayOfMonth*/,
2741  0 /*atTimeCode*/,
2742  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2743  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2744  7 /*letterIndex ("S")*/,
2745  },
2746  // Rule Guat 1991 only - Sep 7 0:00 0 S
2747  {
2748  -109 /*fromYearTiny (1991)*/,
2749  -109 /*toYearTiny (1991)*/,
2750  9 /*inMonth*/,
2751  0 /*onDayOfWeek*/,
2752  7 /*onDayOfMonth*/,
2753  0 /*atTimeCode*/,
2754  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2755  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2756  7 /*letterIndex ("S")*/,
2757  },
2758  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2759  {
2760  -94 /*fromYearTiny (2006)*/,
2761  -94 /*toYearTiny (2006)*/,
2762  4 /*inMonth*/,
2763  0 /*onDayOfWeek*/,
2764  30 /*onDayOfMonth*/,
2765  0 /*atTimeCode*/,
2766  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2767  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2768  5 /*letterIndex ("D")*/,
2769  },
2770  // Rule Guat 2006 only - Oct 1 0:00 0 S
2771  {
2772  -94 /*fromYearTiny (2006)*/,
2773  -94 /*toYearTiny (2006)*/,
2774  10 /*inMonth*/,
2775  0 /*onDayOfWeek*/,
2776  1 /*onDayOfMonth*/,
2777  0 /*atTimeCode*/,
2778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2779  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2780  7 /*letterIndex ("S")*/,
2781  },
2782 
2783 };
2784 
2785 const extended::ZonePolicy kZonePolicyGuat ACE_TIME_PROGMEM = {
2786  kZoneRulesGuat /*rules*/,
2787  4 /*numRules*/,
2788 };
2789 
2790 //---------------------------------------------------------------------------
2791 // Policy name: HK
2792 // Rules: 1
2793 //---------------------------------------------------------------------------
2794 
2795 static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2796  // Anchor: Rule HK 1979 only - Oct 21 3:30 0 -
2797  {
2798  -127 /*fromYearTiny (-32767)*/,
2799  -127 /*toYearTiny (-32767)*/,
2800  1 /*inMonth*/,
2801  0 /*onDayOfWeek*/,
2802  1 /*onDayOfMonth*/,
2803  0 /*atTimeCode*/,
2804  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2805  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2806  0 /*letterIndex ("")*/,
2807  },
2808 
2809 };
2810 
2811 const extended::ZonePolicy kZonePolicyHK ACE_TIME_PROGMEM = {
2812  kZoneRulesHK /*rules*/,
2813  1 /*numRules*/,
2814 };
2815 
2816 //---------------------------------------------------------------------------
2817 // Policy name: Haiti
2818 // Rules: 8
2819 //---------------------------------------------------------------------------
2820 
2821 static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2822  // Anchor: Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2823  {
2824  -127 /*fromYearTiny (-32767)*/,
2825  -127 /*toYearTiny (-32767)*/,
2826  1 /*inMonth*/,
2827  0 /*onDayOfWeek*/,
2828  1 /*onDayOfMonth*/,
2829  0 /*atTimeCode*/,
2830  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2831  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2832  7 /*letterIndex ("S")*/,
2833  },
2834  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2835  {
2836  -112 /*fromYearTiny (1988)*/,
2837  -103 /*toYearTiny (1997)*/,
2838  10 /*inMonth*/,
2839  7 /*onDayOfWeek*/,
2840  0 /*onDayOfMonth*/,
2841  4 /*atTimeCode*/,
2842  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2843  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2844  7 /*letterIndex ("S")*/,
2845  },
2846  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2847  {
2848  -95 /*fromYearTiny (2005)*/,
2849  -94 /*toYearTiny (2006)*/,
2850  4 /*inMonth*/,
2851  7 /*onDayOfWeek*/,
2852  1 /*onDayOfMonth*/,
2853  0 /*atTimeCode*/,
2854  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2855  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2856  5 /*letterIndex ("D")*/,
2857  },
2858  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2859  {
2860  -95 /*fromYearTiny (2005)*/,
2861  -94 /*toYearTiny (2006)*/,
2862  10 /*inMonth*/,
2863  7 /*onDayOfWeek*/,
2864  0 /*onDayOfMonth*/,
2865  0 /*atTimeCode*/,
2866  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2867  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2868  7 /*letterIndex ("S")*/,
2869  },
2870  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2871  {
2872  -88 /*fromYearTiny (2012)*/,
2873  -85 /*toYearTiny (2015)*/,
2874  3 /*inMonth*/,
2875  7 /*onDayOfWeek*/,
2876  8 /*onDayOfMonth*/,
2877  8 /*atTimeCode*/,
2878  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2879  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2880  5 /*letterIndex ("D")*/,
2881  },
2882  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2883  {
2884  -88 /*fromYearTiny (2012)*/,
2885  -85 /*toYearTiny (2015)*/,
2886  11 /*inMonth*/,
2887  7 /*onDayOfWeek*/,
2888  1 /*onDayOfMonth*/,
2889  8 /*atTimeCode*/,
2890  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2891  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2892  7 /*letterIndex ("S")*/,
2893  },
2894  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2895  {
2896  -83 /*fromYearTiny (2017)*/,
2897  126 /*toYearTiny (32766)*/,
2898  3 /*inMonth*/,
2899  7 /*onDayOfWeek*/,
2900  8 /*onDayOfMonth*/,
2901  8 /*atTimeCode*/,
2902  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2903  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2904  5 /*letterIndex ("D")*/,
2905  },
2906  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2907  {
2908  -83 /*fromYearTiny (2017)*/,
2909  126 /*toYearTiny (32766)*/,
2910  11 /*inMonth*/,
2911  7 /*onDayOfWeek*/,
2912  1 /*onDayOfMonth*/,
2913  8 /*atTimeCode*/,
2914  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2915  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2916  7 /*letterIndex ("S")*/,
2917  },
2918 
2919 };
2920 
2921 const extended::ZonePolicy kZonePolicyHaiti ACE_TIME_PROGMEM = {
2922  kZoneRulesHaiti /*rules*/,
2923  8 /*numRules*/,
2924 };
2925 
2926 //---------------------------------------------------------------------------
2927 // Policy name: Holiday
2928 // Rules: 1
2929 //---------------------------------------------------------------------------
2930 
2931 static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2932  // Anchor: Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2933  {
2934  -127 /*fromYearTiny (-32767)*/,
2935  -127 /*toYearTiny (-32767)*/,
2936  1 /*inMonth*/,
2937  0 /*onDayOfWeek*/,
2938  1 /*onDayOfMonth*/,
2939  0 /*atTimeCode*/,
2940  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2941  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2942  7 /*letterIndex ("S")*/,
2943  },
2944 
2945 };
2946 
2947 const extended::ZonePolicy kZonePolicyHoliday ACE_TIME_PROGMEM = {
2948  kZoneRulesHoliday /*rules*/,
2949  1 /*numRules*/,
2950 };
2951 
2952 //---------------------------------------------------------------------------
2953 // Policy name: Hond
2954 // Rules: 4
2955 //---------------------------------------------------------------------------
2956 
2957 static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2958  // Anchor: Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2959  {
2960  -127 /*fromYearTiny (-32767)*/,
2961  -127 /*toYearTiny (-32767)*/,
2962  1 /*inMonth*/,
2963  0 /*onDayOfWeek*/,
2964  1 /*onDayOfMonth*/,
2965  0 /*atTimeCode*/,
2966  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2967  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2968  7 /*letterIndex ("S")*/,
2969  },
2970  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2971  {
2972  -113 /*fromYearTiny (1987)*/,
2973  -112 /*toYearTiny (1988)*/,
2974  9 /*inMonth*/,
2975  7 /*onDayOfWeek*/,
2976  0 /*onDayOfMonth*/,
2977  0 /*atTimeCode*/,
2978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2980  7 /*letterIndex ("S")*/,
2981  },
2982  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2983  {
2984  -94 /*fromYearTiny (2006)*/,
2985  -94 /*toYearTiny (2006)*/,
2986  5 /*inMonth*/,
2987  7 /*onDayOfWeek*/,
2988  1 /*onDayOfMonth*/,
2989  0 /*atTimeCode*/,
2990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2991  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2992  5 /*letterIndex ("D")*/,
2993  },
2994  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2995  {
2996  -94 /*fromYearTiny (2006)*/,
2997  -94 /*toYearTiny (2006)*/,
2998  8 /*inMonth*/,
2999  1 /*onDayOfWeek*/,
3000  1 /*onDayOfMonth*/,
3001  0 /*atTimeCode*/,
3002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3004  7 /*letterIndex ("S")*/,
3005  },
3006 
3007 };
3008 
3009 const extended::ZonePolicy kZonePolicyHond ACE_TIME_PROGMEM = {
3010  kZoneRulesHond /*rules*/,
3011  4 /*numRules*/,
3012 };
3013 
3014 //---------------------------------------------------------------------------
3015 // Policy name: Iran
3016 // Rules: 28
3017 //---------------------------------------------------------------------------
3018 
3019 static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
3020  // Anchor: Rule Iran 1996 only - Sep 20 24:00 0 -
3021  {
3022  -127 /*fromYearTiny (-32767)*/,
3023  -127 /*toYearTiny (-32767)*/,
3024  1 /*inMonth*/,
3025  0 /*onDayOfWeek*/,
3026  1 /*onDayOfMonth*/,
3027  0 /*atTimeCode*/,
3028  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3029  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3030  0 /*letterIndex ("")*/,
3031  },
3032  // Rule Iran 1996 only - Sep 20 24:00 0 -
3033  {
3034  -104 /*fromYearTiny (1996)*/,
3035  -104 /*toYearTiny (1996)*/,
3036  9 /*inMonth*/,
3037  0 /*onDayOfWeek*/,
3038  20 /*onDayOfMonth*/,
3039  96 /*atTimeCode*/,
3040  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3041  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3042  0 /*letterIndex ("")*/,
3043  },
3044  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
3045  {
3046  -103 /*fromYearTiny (1997)*/,
3047  -101 /*toYearTiny (1999)*/,
3048  3 /*inMonth*/,
3049  0 /*onDayOfWeek*/,
3050  21 /*onDayOfMonth*/,
3051  96 /*atTimeCode*/,
3052  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3053  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3054  0 /*letterIndex ("")*/,
3055  },
3056  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
3057  {
3058  -103 /*fromYearTiny (1997)*/,
3059  -101 /*toYearTiny (1999)*/,
3060  9 /*inMonth*/,
3061  0 /*onDayOfWeek*/,
3062  21 /*onDayOfMonth*/,
3063  96 /*atTimeCode*/,
3064  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3065  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3066  0 /*letterIndex ("")*/,
3067  },
3068  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
3069  {
3070  -100 /*fromYearTiny (2000)*/,
3071  -100 /*toYearTiny (2000)*/,
3072  3 /*inMonth*/,
3073  0 /*onDayOfWeek*/,
3074  20 /*onDayOfMonth*/,
3075  96 /*atTimeCode*/,
3076  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3077  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3078  0 /*letterIndex ("")*/,
3079  },
3080  // Rule Iran 2000 only - Sep 20 24:00 0 -
3081  {
3082  -100 /*fromYearTiny (2000)*/,
3083  -100 /*toYearTiny (2000)*/,
3084  9 /*inMonth*/,
3085  0 /*onDayOfWeek*/,
3086  20 /*onDayOfMonth*/,
3087  96 /*atTimeCode*/,
3088  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3089  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3090  0 /*letterIndex ("")*/,
3091  },
3092  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3093  {
3094  -99 /*fromYearTiny (2001)*/,
3095  -97 /*toYearTiny (2003)*/,
3096  3 /*inMonth*/,
3097  0 /*onDayOfWeek*/,
3098  21 /*onDayOfMonth*/,
3099  96 /*atTimeCode*/,
3100  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3101  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3102  0 /*letterIndex ("")*/,
3103  },
3104  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3105  {
3106  -99 /*fromYearTiny (2001)*/,
3107  -97 /*toYearTiny (2003)*/,
3108  9 /*inMonth*/,
3109  0 /*onDayOfWeek*/,
3110  21 /*onDayOfMonth*/,
3111  96 /*atTimeCode*/,
3112  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3113  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3114  0 /*letterIndex ("")*/,
3115  },
3116  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3117  {
3118  -96 /*fromYearTiny (2004)*/,
3119  -96 /*toYearTiny (2004)*/,
3120  3 /*inMonth*/,
3121  0 /*onDayOfWeek*/,
3122  20 /*onDayOfMonth*/,
3123  96 /*atTimeCode*/,
3124  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3125  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3126  0 /*letterIndex ("")*/,
3127  },
3128  // Rule Iran 2004 only - Sep 20 24:00 0 -
3129  {
3130  -96 /*fromYearTiny (2004)*/,
3131  -96 /*toYearTiny (2004)*/,
3132  9 /*inMonth*/,
3133  0 /*onDayOfWeek*/,
3134  20 /*onDayOfMonth*/,
3135  96 /*atTimeCode*/,
3136  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3137  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3138  0 /*letterIndex ("")*/,
3139  },
3140  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3141  {
3142  -95 /*fromYearTiny (2005)*/,
3143  -95 /*toYearTiny (2005)*/,
3144  3 /*inMonth*/,
3145  0 /*onDayOfWeek*/,
3146  21 /*onDayOfMonth*/,
3147  96 /*atTimeCode*/,
3148  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3149  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3150  0 /*letterIndex ("")*/,
3151  },
3152  // Rule Iran 2005 only - Sep 21 24:00 0 -
3153  {
3154  -95 /*fromYearTiny (2005)*/,
3155  -95 /*toYearTiny (2005)*/,
3156  9 /*inMonth*/,
3157  0 /*onDayOfWeek*/,
3158  21 /*onDayOfMonth*/,
3159  96 /*atTimeCode*/,
3160  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3161  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3162  0 /*letterIndex ("")*/,
3163  },
3164  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3165  {
3166  -92 /*fromYearTiny (2008)*/,
3167  -92 /*toYearTiny (2008)*/,
3168  3 /*inMonth*/,
3169  0 /*onDayOfWeek*/,
3170  20 /*onDayOfMonth*/,
3171  96 /*atTimeCode*/,
3172  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3173  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3174  0 /*letterIndex ("")*/,
3175  },
3176  // Rule Iran 2008 only - Sep 20 24:00 0 -
3177  {
3178  -92 /*fromYearTiny (2008)*/,
3179  -92 /*toYearTiny (2008)*/,
3180  9 /*inMonth*/,
3181  0 /*onDayOfWeek*/,
3182  20 /*onDayOfMonth*/,
3183  96 /*atTimeCode*/,
3184  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3185  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3186  0 /*letterIndex ("")*/,
3187  },
3188  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3189  {
3190  -91 /*fromYearTiny (2009)*/,
3191  -89 /*toYearTiny (2011)*/,
3192  3 /*inMonth*/,
3193  0 /*onDayOfWeek*/,
3194  21 /*onDayOfMonth*/,
3195  96 /*atTimeCode*/,
3196  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3197  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3198  0 /*letterIndex ("")*/,
3199  },
3200  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3201  {
3202  -91 /*fromYearTiny (2009)*/,
3203  -89 /*toYearTiny (2011)*/,
3204  9 /*inMonth*/,
3205  0 /*onDayOfWeek*/,
3206  21 /*onDayOfMonth*/,
3207  96 /*atTimeCode*/,
3208  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3209  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3210  0 /*letterIndex ("")*/,
3211  },
3212  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3213  {
3214  -88 /*fromYearTiny (2012)*/,
3215  -88 /*toYearTiny (2012)*/,
3216  3 /*inMonth*/,
3217  0 /*onDayOfWeek*/,
3218  20 /*onDayOfMonth*/,
3219  96 /*atTimeCode*/,
3220  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3221  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3222  0 /*letterIndex ("")*/,
3223  },
3224  // Rule Iran 2012 only - Sep 20 24:00 0 -
3225  {
3226  -88 /*fromYearTiny (2012)*/,
3227  -88 /*toYearTiny (2012)*/,
3228  9 /*inMonth*/,
3229  0 /*onDayOfWeek*/,
3230  20 /*onDayOfMonth*/,
3231  96 /*atTimeCode*/,
3232  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3233  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3234  0 /*letterIndex ("")*/,
3235  },
3236  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3237  {
3238  -87 /*fromYearTiny (2013)*/,
3239  -85 /*toYearTiny (2015)*/,
3240  3 /*inMonth*/,
3241  0 /*onDayOfWeek*/,
3242  21 /*onDayOfMonth*/,
3243  96 /*atTimeCode*/,
3244  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3245  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3246  0 /*letterIndex ("")*/,
3247  },
3248  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3249  {
3250  -87 /*fromYearTiny (2013)*/,
3251  -85 /*toYearTiny (2015)*/,
3252  9 /*inMonth*/,
3253  0 /*onDayOfWeek*/,
3254  21 /*onDayOfMonth*/,
3255  96 /*atTimeCode*/,
3256  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3257  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3258  0 /*letterIndex ("")*/,
3259  },
3260  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3261  {
3262  -84 /*fromYearTiny (2016)*/,
3263  -84 /*toYearTiny (2016)*/,
3264  3 /*inMonth*/,
3265  0 /*onDayOfWeek*/,
3266  20 /*onDayOfMonth*/,
3267  96 /*atTimeCode*/,
3268  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3269  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3270  0 /*letterIndex ("")*/,
3271  },
3272  // Rule Iran 2016 only - Sep 20 24:00 0 -
3273  {
3274  -84 /*fromYearTiny (2016)*/,
3275  -84 /*toYearTiny (2016)*/,
3276  9 /*inMonth*/,
3277  0 /*onDayOfWeek*/,
3278  20 /*onDayOfMonth*/,
3279  96 /*atTimeCode*/,
3280  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3281  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3282  0 /*letterIndex ("")*/,
3283  },
3284  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3285  {
3286  -83 /*fromYearTiny (2017)*/,
3287  -81 /*toYearTiny (2019)*/,
3288  3 /*inMonth*/,
3289  0 /*onDayOfWeek*/,
3290  21 /*onDayOfMonth*/,
3291  96 /*atTimeCode*/,
3292  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3293  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3294  0 /*letterIndex ("")*/,
3295  },
3296  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3297  {
3298  -83 /*fromYearTiny (2017)*/,
3299  -81 /*toYearTiny (2019)*/,
3300  9 /*inMonth*/,
3301  0 /*onDayOfWeek*/,
3302  21 /*onDayOfMonth*/,
3303  96 /*atTimeCode*/,
3304  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3305  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3306  0 /*letterIndex ("")*/,
3307  },
3308  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3309  {
3310  -80 /*fromYearTiny (2020)*/,
3311  -80 /*toYearTiny (2020)*/,
3312  3 /*inMonth*/,
3313  0 /*onDayOfWeek*/,
3314  20 /*onDayOfMonth*/,
3315  96 /*atTimeCode*/,
3316  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3317  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3318  0 /*letterIndex ("")*/,
3319  },
3320  // Rule Iran 2020 only - Sep 20 24:00 0 -
3321  {
3322  -80 /*fromYearTiny (2020)*/,
3323  -80 /*toYearTiny (2020)*/,
3324  9 /*inMonth*/,
3325  0 /*onDayOfWeek*/,
3326  20 /*onDayOfMonth*/,
3327  96 /*atTimeCode*/,
3328  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3329  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3330  0 /*letterIndex ("")*/,
3331  },
3332  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
3333  {
3334  -79 /*fromYearTiny (2021)*/,
3335  -78 /*toYearTiny (2022)*/,
3336  3 /*inMonth*/,
3337  0 /*onDayOfWeek*/,
3338  21 /*onDayOfMonth*/,
3339  96 /*atTimeCode*/,
3340  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3341  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3342  0 /*letterIndex ("")*/,
3343  },
3344  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
3345  {
3346  -79 /*fromYearTiny (2021)*/,
3347  -78 /*toYearTiny (2022)*/,
3348  9 /*inMonth*/,
3349  0 /*onDayOfWeek*/,
3350  21 /*onDayOfMonth*/,
3351  96 /*atTimeCode*/,
3352  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3353  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3354  0 /*letterIndex ("")*/,
3355  },
3356 
3357 };
3358 
3359 const extended::ZonePolicy kZonePolicyIran ACE_TIME_PROGMEM = {
3360  kZoneRulesIran /*rules*/,
3361  28 /*numRules*/,
3362 };
3363 
3364 //---------------------------------------------------------------------------
3365 // Policy name: Iraq
3366 // Rules: 4
3367 //---------------------------------------------------------------------------
3368 
3369 static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3370  // Anchor: Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3371  {
3372  -127 /*fromYearTiny (-32767)*/,
3373  -127 /*toYearTiny (-32767)*/,
3374  1 /*inMonth*/,
3375  0 /*onDayOfWeek*/,
3376  1 /*onDayOfMonth*/,
3377  0 /*atTimeCode*/,
3378  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3379  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3380  0 /*letterIndex ("")*/,
3381  },
3382  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3383  {
3384  -115 /*fromYearTiny (1985)*/,
3385  -110 /*toYearTiny (1990)*/,
3386  9 /*inMonth*/,
3387  7 /*onDayOfWeek*/,
3388  0 /*onDayOfMonth*/,
3389  4 /*atTimeCode*/,
3390  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3391  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3392  0 /*letterIndex ("")*/,
3393  },
3394  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3395  {
3396  -109 /*fromYearTiny (1991)*/,
3397  -93 /*toYearTiny (2007)*/,
3398  4 /*inMonth*/,
3399  0 /*onDayOfWeek*/,
3400  1 /*onDayOfMonth*/,
3401  12 /*atTimeCode*/,
3402  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3403  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3404  0 /*letterIndex ("")*/,
3405  },
3406  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3407  {
3408  -109 /*fromYearTiny (1991)*/,
3409  -93 /*toYearTiny (2007)*/,
3410  10 /*inMonth*/,
3411  0 /*onDayOfWeek*/,
3412  1 /*onDayOfMonth*/,
3413  12 /*atTimeCode*/,
3414  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3415  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3416  0 /*letterIndex ("")*/,
3417  },
3418 
3419 };
3420 
3421 const extended::ZonePolicy kZonePolicyIraq ACE_TIME_PROGMEM = {
3422  kZoneRulesIraq /*rules*/,
3423  4 /*numRules*/,
3424 };
3425 
3426 //---------------------------------------------------------------------------
3427 // Policy name: Japan
3428 // Rules: 1
3429 //---------------------------------------------------------------------------
3430 
3431 static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3432  // Anchor: Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3433  {
3434  -127 /*fromYearTiny (-32767)*/,
3435  -127 /*toYearTiny (-32767)*/,
3436  1 /*inMonth*/,
3437  0 /*onDayOfWeek*/,
3438  1 /*onDayOfMonth*/,
3439  0 /*atTimeCode*/,
3440  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3441  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3442  7 /*letterIndex ("S")*/,
3443  },
3444 
3445 };
3446 
3447 const extended::ZonePolicy kZonePolicyJapan ACE_TIME_PROGMEM = {
3448  kZoneRulesJapan /*rules*/,
3449  1 /*numRules*/,
3450 };
3451 
3452 //---------------------------------------------------------------------------
3453 // Policy name: Jordan
3454 // Rules: 14
3455 //---------------------------------------------------------------------------
3456 
3457 static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3458  // Anchor: Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3459  {
3460  -127 /*fromYearTiny (-32767)*/,
3461  -127 /*toYearTiny (-32767)*/,
3462  1 /*inMonth*/,
3463  0 /*onDayOfWeek*/,
3464  1 /*onDayOfMonth*/,
3465  0 /*atTimeCode*/,
3466  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3467  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3468  0 /*letterIndex ("")*/,
3469  },
3470  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3471  {
3472  -105 /*fromYearTiny (1995)*/,
3473  -102 /*toYearTiny (1998)*/,
3474  9 /*inMonth*/,
3475  5 /*onDayOfWeek*/,
3476  15 /*onDayOfMonth*/,
3477  0 /*atTimeCode*/,
3478  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3479  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3480  0 /*letterIndex ("")*/,
3481  },
3482  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3483  {
3484  -101 /*fromYearTiny (1999)*/,
3485  -101 /*toYearTiny (1999)*/,
3486  7 /*inMonth*/,
3487  0 /*onDayOfWeek*/,
3488  1 /*onDayOfMonth*/,
3489  0 /*atTimeCode*/,
3490  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3491  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3492  7 /*letterIndex ("S")*/,
3493  },
3494  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3495  {
3496  -101 /*fromYearTiny (1999)*/,
3497  -98 /*toYearTiny (2002)*/,
3498  9 /*inMonth*/,
3499  5 /*onDayOfWeek*/,
3500  0 /*onDayOfMonth*/,
3501  0 /*atTimeCode*/,
3502  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3503  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3504  0 /*letterIndex ("")*/,
3505  },
3506  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3507  {
3508  -100 /*fromYearTiny (2000)*/,
3509  -99 /*toYearTiny (2001)*/,
3510  3 /*inMonth*/,
3511  4 /*onDayOfWeek*/,
3512  0 /*onDayOfMonth*/,
3513  0 /*atTimeCode*/,
3514  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3515  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3516  7 /*letterIndex ("S")*/,
3517  },
3518  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3519  {
3520  -98 /*fromYearTiny (2002)*/,
3521  -88 /*toYearTiny (2012)*/,
3522  3 /*inMonth*/,
3523  4 /*onDayOfWeek*/,
3524  0 /*onDayOfMonth*/,
3525  96 /*atTimeCode*/,
3526  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3527  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3528  7 /*letterIndex ("S")*/,
3529  },
3530  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3531  {
3532  -97 /*fromYearTiny (2003)*/,
3533  -97 /*toYearTiny (2003)*/,
3534  10 /*inMonth*/,
3535  0 /*onDayOfWeek*/,
3536  24 /*onDayOfMonth*/,
3537  0 /*atTimeCode*/,
3538  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3539  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3540  0 /*letterIndex ("")*/,
3541  },
3542  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3543  {
3544  -96 /*fromYearTiny (2004)*/,
3545  -96 /*toYearTiny (2004)*/,
3546  10 /*inMonth*/,
3547  0 /*onDayOfWeek*/,
3548  15 /*onDayOfMonth*/,
3549  0 /*atTimeCode*/,
3550  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3551  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3552  0 /*letterIndex ("")*/,
3553  },
3554  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3555  {
3556  -95 /*fromYearTiny (2005)*/,
3557  -95 /*toYearTiny (2005)*/,
3558  9 /*inMonth*/,
3559  5 /*onDayOfWeek*/,
3560  0 /*onDayOfMonth*/,
3561  0 /*atTimeCode*/,
3562  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3563  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3564  0 /*letterIndex ("")*/,
3565  },
3566  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3567  {
3568  -94 /*fromYearTiny (2006)*/,
3569  -89 /*toYearTiny (2011)*/,
3570  10 /*inMonth*/,
3571  5 /*onDayOfWeek*/,
3572  0 /*onDayOfMonth*/,
3573  0 /*atTimeCode*/,
3574  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3575  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3576  0 /*letterIndex ("")*/,
3577  },
3578  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3579  {
3580  -87 /*fromYearTiny (2013)*/,
3581  -87 /*toYearTiny (2013)*/,
3582  12 /*inMonth*/,
3583  0 /*onDayOfWeek*/,
3584  20 /*onDayOfMonth*/,
3585  0 /*atTimeCode*/,
3586  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3587  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3588  0 /*letterIndex ("")*/,
3589  },
3590  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3591  {
3592  -86 /*fromYearTiny (2014)*/,
3593  -79 /*toYearTiny (2021)*/,
3594  3 /*inMonth*/,
3595  4 /*onDayOfWeek*/,
3596  0 /*onDayOfMonth*/,
3597  96 /*atTimeCode*/,
3598  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3599  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3600  7 /*letterIndex ("S")*/,
3601  },
3602  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
3603  {
3604  -86 /*fromYearTiny (2014)*/,
3605  -78 /*toYearTiny (2022)*/,
3606  10 /*inMonth*/,
3607  5 /*onDayOfWeek*/,
3608  0 /*onDayOfMonth*/,
3609  0 /*atTimeCode*/,
3610  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3611  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3612  0 /*letterIndex ("")*/,
3613  },
3614  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
3615  {
3616  -78 /*fromYearTiny (2022)*/,
3617  -78 /*toYearTiny (2022)*/,
3618  2 /*inMonth*/,
3619  4 /*onDayOfWeek*/,
3620  0 /*onDayOfMonth*/,
3621  96 /*atTimeCode*/,
3622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3623  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3624  7 /*letterIndex ("S")*/,
3625  },
3626 
3627 };
3628 
3629 const extended::ZonePolicy kZonePolicyJordan ACE_TIME_PROGMEM = {
3630  kZoneRulesJordan /*rules*/,
3631  14 /*numRules*/,
3632 };
3633 
3634 //---------------------------------------------------------------------------
3635 // Policy name: Kyrgyz
3636 // Rules: 4
3637 //---------------------------------------------------------------------------
3638 
3639 static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = {
3640  // Anchor: Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3641  {
3642  -127 /*fromYearTiny (-32767)*/,
3643  -127 /*toYearTiny (-32767)*/,
3644  1 /*inMonth*/,
3645  0 /*onDayOfWeek*/,
3646  1 /*onDayOfMonth*/,
3647  0 /*atTimeCode*/,
3648  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3649  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3650  0 /*letterIndex ("")*/,
3651  },
3652  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3653  {
3654  -108 /*fromYearTiny (1992)*/,
3655  -104 /*toYearTiny (1996)*/,
3656  9 /*inMonth*/,
3657  7 /*onDayOfWeek*/,
3658  0 /*onDayOfMonth*/,
3659  0 /*atTimeCode*/,
3660  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3661  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3662  0 /*letterIndex ("")*/,
3663  },
3664  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3665  {
3666  -103 /*fromYearTiny (1997)*/,
3667  -95 /*toYearTiny (2005)*/,
3668  3 /*inMonth*/,
3669  7 /*onDayOfWeek*/,
3670  0 /*onDayOfMonth*/,
3671  10 /*atTimeCode*/,
3672  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3673  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3674  0 /*letterIndex ("")*/,
3675  },
3676  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3677  {
3678  -103 /*fromYearTiny (1997)*/,
3679  -96 /*toYearTiny (2004)*/,
3680  10 /*inMonth*/,
3681  7 /*onDayOfWeek*/,
3682  0 /*onDayOfMonth*/,
3683  10 /*atTimeCode*/,
3684  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3685  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3686  0 /*letterIndex ("")*/,
3687  },
3688 
3689 };
3690 
3691 const extended::ZonePolicy kZonePolicyKyrgyz ACE_TIME_PROGMEM = {
3692  kZoneRulesKyrgyz /*rules*/,
3693  4 /*numRules*/,
3694 };
3695 
3696 //---------------------------------------------------------------------------
3697 // Policy name: LH
3698 // Rules: 10
3699 //---------------------------------------------------------------------------
3700 
3701 static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3702  // Anchor: Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3703  {
3704  -127 /*fromYearTiny (-32767)*/,
3705  -127 /*toYearTiny (-32767)*/,
3706  1 /*inMonth*/,
3707  0 /*onDayOfWeek*/,
3708  1 /*onDayOfMonth*/,
3709  0 /*atTimeCode*/,
3710  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3711  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3712  0 /*letterIndex ("")*/,
3713  },
3714  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3715  {
3716  -113 /*fromYearTiny (1987)*/,
3717  -101 /*toYearTiny (1999)*/,
3718  10 /*inMonth*/,
3719  7 /*onDayOfWeek*/,
3720  0 /*onDayOfMonth*/,
3721  8 /*atTimeCode*/,
3722  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3723  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3724  0 /*letterIndex ("")*/,
3725  },
3726  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3727  {
3728  -110 /*fromYearTiny (1990)*/,
3729  -105 /*toYearTiny (1995)*/,
3730  3 /*inMonth*/,
3731  7 /*onDayOfWeek*/,
3732  1 /*onDayOfMonth*/,
3733  8 /*atTimeCode*/,
3734  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3735  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3736  0 /*letterIndex ("")*/,
3737  },
3738  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3739  {
3740  -104 /*fromYearTiny (1996)*/,
3741  -95 /*toYearTiny (2005)*/,
3742  3 /*inMonth*/,
3743  7 /*onDayOfWeek*/,
3744  0 /*onDayOfMonth*/,
3745  8 /*atTimeCode*/,
3746  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3747  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3748  0 /*letterIndex ("")*/,
3749  },
3750  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3751  {
3752  -100 /*fromYearTiny (2000)*/,
3753  -100 /*toYearTiny (2000)*/,
3754  8 /*inMonth*/,
3755  7 /*onDayOfWeek*/,
3756  0 /*onDayOfMonth*/,
3757  8 /*atTimeCode*/,
3758  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3759  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3760  0 /*letterIndex ("")*/,
3761  },
3762  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3763  {
3764  -99 /*fromYearTiny (2001)*/,
3765  -93 /*toYearTiny (2007)*/,
3766  10 /*inMonth*/,
3767  7 /*onDayOfWeek*/,
3768  0 /*onDayOfMonth*/,
3769  8 /*atTimeCode*/,
3770  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3771  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3772  0 /*letterIndex ("")*/,
3773  },
3774  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3775  {
3776  -94 /*fromYearTiny (2006)*/,
3777  -94 /*toYearTiny (2006)*/,
3778  4 /*inMonth*/,
3779  7 /*onDayOfWeek*/,
3780  1 /*onDayOfMonth*/,
3781  8 /*atTimeCode*/,
3782  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3783  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3784  0 /*letterIndex ("")*/,
3785  },
3786  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3787  {
3788  -93 /*fromYearTiny (2007)*/,
3789  -93 /*toYearTiny (2007)*/,
3790  3 /*inMonth*/,
3791  7 /*onDayOfWeek*/,
3792  0 /*onDayOfMonth*/,
3793  8 /*atTimeCode*/,
3794  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3795  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3796  0 /*letterIndex ("")*/,
3797  },
3798  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3799  {
3800  -92 /*fromYearTiny (2008)*/,
3801  126 /*toYearTiny (32766)*/,
3802  4 /*inMonth*/,
3803  7 /*onDayOfWeek*/,
3804  1 /*onDayOfMonth*/,
3805  8 /*atTimeCode*/,
3806  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3807  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3808  0 /*letterIndex ("")*/,
3809  },
3810  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3811  {
3812  -92 /*fromYearTiny (2008)*/,
3813  126 /*toYearTiny (32766)*/,
3814  10 /*inMonth*/,
3815  7 /*onDayOfWeek*/,
3816  1 /*onDayOfMonth*/,
3817  8 /*atTimeCode*/,
3818  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3819  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3820  0 /*letterIndex ("")*/,
3821  },
3822 
3823 };
3824 
3825 const extended::ZonePolicy kZonePolicyLH ACE_TIME_PROGMEM = {
3826  kZoneRulesLH /*rules*/,
3827  10 /*numRules*/,
3828 };
3829 
3830 //---------------------------------------------------------------------------
3831 // Policy name: Lebanon
3832 // Rules: 4
3833 //---------------------------------------------------------------------------
3834 
3835 static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3836  // Anchor: Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3837  {
3838  -127 /*fromYearTiny (-32767)*/,
3839  -127 /*toYearTiny (-32767)*/,
3840  1 /*inMonth*/,
3841  0 /*onDayOfWeek*/,
3842  1 /*onDayOfMonth*/,
3843  0 /*atTimeCode*/,
3844  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3845  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3846  0 /*letterIndex ("")*/,
3847  },
3848  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3849  {
3850  -107 /*fromYearTiny (1993)*/,
3851  126 /*toYearTiny (32766)*/,
3852  3 /*inMonth*/,
3853  7 /*onDayOfWeek*/,
3854  0 /*onDayOfMonth*/,
3855  0 /*atTimeCode*/,
3856  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3857  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3858  7 /*letterIndex ("S")*/,
3859  },
3860  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3861  {
3862  -107 /*fromYearTiny (1993)*/,
3863  -102 /*toYearTiny (1998)*/,
3864  9 /*inMonth*/,
3865  7 /*onDayOfWeek*/,
3866  0 /*onDayOfMonth*/,
3867  0 /*atTimeCode*/,
3868  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3869  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3870  0 /*letterIndex ("")*/,
3871  },
3872  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3873  {
3874  -101 /*fromYearTiny (1999)*/,
3875  126 /*toYearTiny (32766)*/,
3876  10 /*inMonth*/,
3877  7 /*onDayOfWeek*/,
3878  0 /*onDayOfMonth*/,
3879  0 /*atTimeCode*/,
3880  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3881  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3882  0 /*letterIndex ("")*/,
3883  },
3884 
3885 };
3886 
3887 const extended::ZonePolicy kZonePolicyLebanon ACE_TIME_PROGMEM = {
3888  kZoneRulesLebanon /*rules*/,
3889  4 /*numRules*/,
3890 };
3891 
3892 //---------------------------------------------------------------------------
3893 // Policy name: Libya
3894 // Rules: 4
3895 //---------------------------------------------------------------------------
3896 
3897 static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = {
3898  // Anchor: Rule Libya 1997 only - Oct 4 0:00 0 -
3899  {
3900  -127 /*fromYearTiny (-32767)*/,
3901  -127 /*toYearTiny (-32767)*/,
3902  1 /*inMonth*/,
3903  0 /*onDayOfWeek*/,
3904  1 /*onDayOfMonth*/,
3905  0 /*atTimeCode*/,
3906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3908  0 /*letterIndex ("")*/,
3909  },
3910  // Rule Libya 1997 only - Oct 4 0:00 0 -
3911  {
3912  -103 /*fromYearTiny (1997)*/,
3913  -103 /*toYearTiny (1997)*/,
3914  10 /*inMonth*/,
3915  0 /*onDayOfWeek*/,
3916  4 /*onDayOfMonth*/,
3917  0 /*atTimeCode*/,
3918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3919  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3920  0 /*letterIndex ("")*/,
3921  },
3922  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
3923  {
3924  -87 /*fromYearTiny (2013)*/,
3925  -87 /*toYearTiny (2013)*/,
3926  3 /*inMonth*/,
3927  5 /*onDayOfWeek*/,
3928  0 /*onDayOfMonth*/,
3929  4 /*atTimeCode*/,
3930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3931  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3932  7 /*letterIndex ("S")*/,
3933  },
3934  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
3935  {
3936  -87 /*fromYearTiny (2013)*/,
3937  -87 /*toYearTiny (2013)*/,
3938  10 /*inMonth*/,
3939  5 /*onDayOfWeek*/,
3940  0 /*onDayOfMonth*/,
3941  8 /*atTimeCode*/,
3942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3944  0 /*letterIndex ("")*/,
3945  },
3946 
3947 };
3948 
3949 const extended::ZonePolicy kZonePolicyLibya ACE_TIME_PROGMEM = {
3950  kZoneRulesLibya /*rules*/,
3951  4 /*numRules*/,
3952 };
3953 
3954 //---------------------------------------------------------------------------
3955 // Policy name: Macau
3956 // Rules: 1
3957 //---------------------------------------------------------------------------
3958 
3959 static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3960  // Anchor: Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3961  {
3962  -127 /*fromYearTiny (-32767)*/,
3963  -127 /*toYearTiny (-32767)*/,
3964  1 /*inMonth*/,
3965  0 /*onDayOfWeek*/,
3966  1 /*onDayOfMonth*/,
3967  0 /*atTimeCode*/,
3968  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3969  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3970  7 /*letterIndex ("S")*/,
3971  },
3972 
3973 };
3974 
3975 const extended::ZonePolicy kZonePolicyMacau ACE_TIME_PROGMEM = {
3976  kZoneRulesMacau /*rules*/,
3977  1 /*numRules*/,
3978 };
3979 
3980 //---------------------------------------------------------------------------
3981 // Policy name: Mauritius
3982 // Rules: 4
3983 //---------------------------------------------------------------------------
3984 
3985 static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3986  // Anchor: Rule Mauritius 1983 only - Mar 21 0:00 0 -
3987  {
3988  -127 /*fromYearTiny (-32767)*/,
3989  -127 /*toYearTiny (-32767)*/,
3990  1 /*inMonth*/,
3991  0 /*onDayOfWeek*/,
3992  1 /*onDayOfMonth*/,
3993  0 /*atTimeCode*/,
3994  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3995  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3996  0 /*letterIndex ("")*/,
3997  },
3998  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3999  {
4000  -117 /*fromYearTiny (1983)*/,
4001  -117 /*toYearTiny (1983)*/,
4002  3 /*inMonth*/,
4003  0 /*onDayOfWeek*/,
4004  21 /*onDayOfMonth*/,
4005  0 /*atTimeCode*/,
4006  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4007  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4008  0 /*letterIndex ("")*/,
4009  },
4010  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
4011  {
4012  -92 /*fromYearTiny (2008)*/,
4013  -92 /*toYearTiny (2008)*/,
4014  10 /*inMonth*/,
4015  7 /*onDayOfWeek*/,
4016  0 /*onDayOfMonth*/,
4017  8 /*atTimeCode*/,
4018  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4019  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4020  0 /*letterIndex ("")*/,
4021  },
4022  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
4023  {
4024  -91 /*fromYearTiny (2009)*/,
4025  -91 /*toYearTiny (2009)*/,
4026  3 /*inMonth*/,
4027  7 /*onDayOfWeek*/,
4028  0 /*onDayOfMonth*/,
4029  8 /*atTimeCode*/,
4030  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4031  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4032  0 /*letterIndex ("")*/,
4033  },
4034 
4035 };
4036 
4037 const extended::ZonePolicy kZonePolicyMauritius ACE_TIME_PROGMEM = {
4038  kZoneRulesMauritius /*rules*/,
4039  4 /*numRules*/,
4040 };
4041 
4042 //---------------------------------------------------------------------------
4043 // Policy name: Mexico
4044 // Rules: 8
4045 //---------------------------------------------------------------------------
4046 
4047 static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
4048  // Anchor: Rule Mexico 1950 only - Jul 30 0:00 0 S
4049  {
4050  -127 /*fromYearTiny (-32767)*/,
4051  -127 /*toYearTiny (-32767)*/,
4052  1 /*inMonth*/,
4053  0 /*onDayOfWeek*/,
4054  1 /*onDayOfMonth*/,
4055  0 /*atTimeCode*/,
4056  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4057  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4058  7 /*letterIndex ("S")*/,
4059  },
4060  // Rule Mexico 1950 only - Jul 30 0:00 0 S
4061  {
4062  -127 /*fromYearTiny (1950)*/,
4063  -127 /*toYearTiny (1950)*/,
4064  7 /*inMonth*/,
4065  0 /*onDayOfWeek*/,
4066  30 /*onDayOfMonth*/,
4067  0 /*atTimeCode*/,
4068  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4069  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4070  7 /*letterIndex ("S")*/,
4071  },
4072  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
4073  {
4074  -104 /*fromYearTiny (1996)*/,
4075  -100 /*toYearTiny (2000)*/,
4076  4 /*inMonth*/,
4077  7 /*onDayOfWeek*/,
4078  1 /*onDayOfMonth*/,
4079  8 /*atTimeCode*/,
4080  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4081  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4082  5 /*letterIndex ("D")*/,
4083  },
4084  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
4085  {
4086  -104 /*fromYearTiny (1996)*/,
4087  -100 /*toYearTiny (2000)*/,
4088  10 /*inMonth*/,
4089  7 /*onDayOfWeek*/,
4090  0 /*onDayOfMonth*/,
4091  8 /*atTimeCode*/,
4092  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4093  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4094  7 /*letterIndex ("S")*/,
4095  },
4096  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4097  {
4098  -99 /*fromYearTiny (2001)*/,
4099  -99 /*toYearTiny (2001)*/,
4100  5 /*inMonth*/,
4101  7 /*onDayOfWeek*/,
4102  1 /*onDayOfMonth*/,
4103  8 /*atTimeCode*/,
4104  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4105  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4106  5 /*letterIndex ("D")*/,
4107  },
4108  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4109  {
4110  -99 /*fromYearTiny (2001)*/,
4111  -99 /*toYearTiny (2001)*/,
4112  9 /*inMonth*/,
4113  7 /*onDayOfWeek*/,
4114  0 /*onDayOfMonth*/,
4115  8 /*atTimeCode*/,
4116  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4117  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4118  7 /*letterIndex ("S")*/,
4119  },
4120  // Rule Mexico 2002 2022 - Apr Sun>=1 2:00 1:00 D
4121  {
4122  -98 /*fromYearTiny (2002)*/,
4123  -78 /*toYearTiny (2022)*/,
4124  4 /*inMonth*/,
4125  7 /*onDayOfWeek*/,
4126  1 /*onDayOfMonth*/,
4127  8 /*atTimeCode*/,
4128  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4129  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4130  5 /*letterIndex ("D")*/,
4131  },
4132  // Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
4133  {
4134  -98 /*fromYearTiny (2002)*/,
4135  -78 /*toYearTiny (2022)*/,
4136  10 /*inMonth*/,
4137  7 /*onDayOfWeek*/,
4138  0 /*onDayOfMonth*/,
4139  8 /*atTimeCode*/,
4140  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4141  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4142  7 /*letterIndex ("S")*/,
4143  },
4144 
4145 };
4146 
4147 const extended::ZonePolicy kZonePolicyMexico ACE_TIME_PROGMEM = {
4148  kZoneRulesMexico /*rules*/,
4149  8 /*numRules*/,
4150 };
4151 
4152 //---------------------------------------------------------------------------
4153 // Policy name: Moldova
4154 // Rules: 3
4155 //---------------------------------------------------------------------------
4156 
4157 static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
4158  // Anchor: Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4159  {
4160  -127 /*fromYearTiny (-32767)*/,
4161  -127 /*toYearTiny (-32767)*/,
4162  1 /*inMonth*/,
4163  0 /*onDayOfWeek*/,
4164  1 /*onDayOfMonth*/,
4165  0 /*atTimeCode*/,
4166  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4167  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4168  0 /*letterIndex ("")*/,
4169  },
4170  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4171  {
4172  -103 /*fromYearTiny (1997)*/,
4173  126 /*toYearTiny (32766)*/,
4174  3 /*inMonth*/,
4175  7 /*onDayOfWeek*/,
4176  0 /*onDayOfMonth*/,
4177  8 /*atTimeCode*/,
4178  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4179  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4180  7 /*letterIndex ("S")*/,
4181  },
4182  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4183  {
4184  -103 /*fromYearTiny (1997)*/,
4185  126 /*toYearTiny (32766)*/,
4186  10 /*inMonth*/,
4187  7 /*onDayOfWeek*/,
4188  0 /*onDayOfMonth*/,
4189  12 /*atTimeCode*/,
4190  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4191  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4192  0 /*letterIndex ("")*/,
4193  },
4194 
4195 };
4196 
4197 const extended::ZonePolicy kZonePolicyMoldova ACE_TIME_PROGMEM = {
4198  kZoneRulesMoldova /*rules*/,
4199  3 /*numRules*/,
4200 };
4201 
4202 //---------------------------------------------------------------------------
4203 // Policy name: Moncton
4204 // Rules: 4
4205 //---------------------------------------------------------------------------
4206 
4207 static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
4208  // Anchor: Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4209  {
4210  -127 /*fromYearTiny (-32767)*/,
4211  -127 /*toYearTiny (-32767)*/,
4212  1 /*inMonth*/,
4213  0 /*onDayOfWeek*/,
4214  1 /*onDayOfMonth*/,
4215  0 /*atTimeCode*/,
4216  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4217  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4218  7 /*letterIndex ("S")*/,
4219  },
4220  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4221  {
4222  -127 /*fromYearTiny (1957)*/,
4223  -127 /*toYearTiny (1972)*/,
4224  10 /*inMonth*/,
4225  7 /*onDayOfWeek*/,
4226  0 /*onDayOfMonth*/,
4227  8 /*atTimeCode*/,
4228  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4229  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4230  7 /*letterIndex ("S")*/,
4231  },
4232  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4233  {
4234  -107 /*fromYearTiny (1993)*/,
4235  -94 /*toYearTiny (2006)*/,
4236  4 /*inMonth*/,
4237  7 /*onDayOfWeek*/,
4238  1 /*onDayOfMonth*/,
4239  0 /*atTimeCode*/,
4240  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4241  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4242  5 /*letterIndex ("D")*/,
4243  },
4244  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4245  {
4246  -107 /*fromYearTiny (1993)*/,
4247  -94 /*toYearTiny (2006)*/,
4248  10 /*inMonth*/,
4249  7 /*onDayOfWeek*/,
4250  0 /*onDayOfMonth*/,
4251  0 /*atTimeCode*/,
4252  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4253  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4254  7 /*letterIndex ("S")*/,
4255  },
4256 
4257 };
4258 
4259 const extended::ZonePolicy kZonePolicyMoncton ACE_TIME_PROGMEM = {
4260  kZoneRulesMoncton /*rules*/,
4261  4 /*numRules*/,
4262 };
4263 
4264 //---------------------------------------------------------------------------
4265 // Policy name: Mongol
4266 // Rules: 7
4267 //---------------------------------------------------------------------------
4268 
4269 static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
4270  // Anchor: Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4271  {
4272  -127 /*fromYearTiny (-32767)*/,
4273  -127 /*toYearTiny (-32767)*/,
4274  1 /*inMonth*/,
4275  0 /*onDayOfWeek*/,
4276  1 /*onDayOfMonth*/,
4277  0 /*atTimeCode*/,
4278  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4279  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4280  0 /*letterIndex ("")*/,
4281  },
4282  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4283  {
4284  -116 /*fromYearTiny (1984)*/,
4285  -102 /*toYearTiny (1998)*/,
4286  9 /*inMonth*/,
4287  7 /*onDayOfWeek*/,
4288  0 /*onDayOfMonth*/,
4289  0 /*atTimeCode*/,
4290  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4291  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4292  0 /*letterIndex ("")*/,
4293  },
4294  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4295  {
4296  -99 /*fromYearTiny (2001)*/,
4297  -99 /*toYearTiny (2001)*/,
4298  4 /*inMonth*/,
4299  6 /*onDayOfWeek*/,
4300  0 /*onDayOfMonth*/,
4301  8 /*atTimeCode*/,
4302  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4303  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4304  0 /*letterIndex ("")*/,
4305  },
4306  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4307  {
4308  -99 /*fromYearTiny (2001)*/,
4309  -94 /*toYearTiny (2006)*/,
4310  9 /*inMonth*/,
4311  6 /*onDayOfWeek*/,
4312  0 /*onDayOfMonth*/,
4313  8 /*atTimeCode*/,
4314  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4315  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4316  0 /*letterIndex ("")*/,
4317  },
4318  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4319  {
4320  -98 /*fromYearTiny (2002)*/,
4321  -94 /*toYearTiny (2006)*/,
4322  3 /*inMonth*/,
4323  6 /*onDayOfWeek*/,
4324  0 /*onDayOfMonth*/,
4325  8 /*atTimeCode*/,
4326  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4327  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4328  0 /*letterIndex ("")*/,
4329  },
4330  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4331  {
4332  -85 /*fromYearTiny (2015)*/,
4333  -84 /*toYearTiny (2016)*/,
4334  3 /*inMonth*/,
4335  6 /*onDayOfWeek*/,
4336  0 /*onDayOfMonth*/,
4337  8 /*atTimeCode*/,
4338  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4339  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4340  0 /*letterIndex ("")*/,
4341  },
4342  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4343  {
4344  -85 /*fromYearTiny (2015)*/,
4345  -84 /*toYearTiny (2016)*/,
4346  9 /*inMonth*/,
4347  6 /*onDayOfWeek*/,
4348  0 /*onDayOfMonth*/,
4349  0 /*atTimeCode*/,
4350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4351  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4352  0 /*letterIndex ("")*/,
4353  },
4354 
4355 };
4356 
4357 const extended::ZonePolicy kZonePolicyMongol ACE_TIME_PROGMEM = {
4358  kZoneRulesMongol /*rules*/,
4359  7 /*numRules*/,
4360 };
4361 
4362 //---------------------------------------------------------------------------
4363 // Policy name: Morocco
4364 // Rules: 170
4365 //---------------------------------------------------------------------------
4366 
4367 static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
4368  // Anchor: Rule Morocco 1978 only - Aug 4 0:00 0 -
4369  {
4370  -127 /*fromYearTiny (-32767)*/,
4371  -127 /*toYearTiny (-32767)*/,
4372  1 /*inMonth*/,
4373  0 /*onDayOfWeek*/,
4374  1 /*onDayOfMonth*/,
4375  0 /*atTimeCode*/,
4376  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4377  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4378  0 /*letterIndex ("")*/,
4379  },
4380  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4381  {
4382  -122 /*fromYearTiny (1978)*/,
4383  -122 /*toYearTiny (1978)*/,
4384  8 /*inMonth*/,
4385  0 /*onDayOfWeek*/,
4386  4 /*onDayOfMonth*/,
4387  0 /*atTimeCode*/,
4388  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4389  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4390  0 /*letterIndex ("")*/,
4391  },
4392  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4393  {
4394  -92 /*fromYearTiny (2008)*/,
4395  -92 /*toYearTiny (2008)*/,
4396  6 /*inMonth*/,
4397  0 /*onDayOfWeek*/,
4398  1 /*onDayOfMonth*/,
4399  0 /*atTimeCode*/,
4400  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4401  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4402  0 /*letterIndex ("")*/,
4403  },
4404  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4405  {
4406  -92 /*fromYearTiny (2008)*/,
4407  -92 /*toYearTiny (2008)*/,
4408  9 /*inMonth*/,
4409  0 /*onDayOfWeek*/,
4410  1 /*onDayOfMonth*/,
4411  0 /*atTimeCode*/,
4412  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4413  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4414  0 /*letterIndex ("")*/,
4415  },
4416  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4417  {
4418  -91 /*fromYearTiny (2009)*/,
4419  -91 /*toYearTiny (2009)*/,
4420  6 /*inMonth*/,
4421  0 /*onDayOfWeek*/,
4422  1 /*onDayOfMonth*/,
4423  0 /*atTimeCode*/,
4424  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4425  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4426  0 /*letterIndex ("")*/,
4427  },
4428  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4429  {
4430  -91 /*fromYearTiny (2009)*/,
4431  -91 /*toYearTiny (2009)*/,
4432  8 /*inMonth*/,
4433  0 /*onDayOfWeek*/,
4434  21 /*onDayOfMonth*/,
4435  0 /*atTimeCode*/,
4436  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4437  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4438  0 /*letterIndex ("")*/,
4439  },
4440  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4441  {
4442  -90 /*fromYearTiny (2010)*/,
4443  -90 /*toYearTiny (2010)*/,
4444  5 /*inMonth*/,
4445  0 /*onDayOfWeek*/,
4446  2 /*onDayOfMonth*/,
4447  0 /*atTimeCode*/,
4448  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4449  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4450  0 /*letterIndex ("")*/,
4451  },
4452  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4453  {
4454  -90 /*fromYearTiny (2010)*/,
4455  -90 /*toYearTiny (2010)*/,
4456  8 /*inMonth*/,
4457  0 /*onDayOfWeek*/,
4458  8 /*onDayOfMonth*/,
4459  0 /*atTimeCode*/,
4460  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4461  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4462  0 /*letterIndex ("")*/,
4463  },
4464  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4465  {
4466  -89 /*fromYearTiny (2011)*/,
4467  -89 /*toYearTiny (2011)*/,
4468  4 /*inMonth*/,
4469  0 /*onDayOfWeek*/,
4470  3 /*onDayOfMonth*/,
4471  0 /*atTimeCode*/,
4472  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4473  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4474  0 /*letterIndex ("")*/,
4475  },
4476  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4477  {
4478  -89 /*fromYearTiny (2011)*/,
4479  -89 /*toYearTiny (2011)*/,
4480  7 /*inMonth*/,
4481  0 /*onDayOfWeek*/,
4482  31 /*onDayOfMonth*/,
4483  0 /*atTimeCode*/,
4484  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4485  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4486  0 /*letterIndex ("")*/,
4487  },
4488  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4489  {
4490  -88 /*fromYearTiny (2012)*/,
4491  -87 /*toYearTiny (2013)*/,
4492  4 /*inMonth*/,
4493  7 /*onDayOfWeek*/,
4494  0 /*onDayOfMonth*/,
4495  8 /*atTimeCode*/,
4496  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4497  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4498  0 /*letterIndex ("")*/,
4499  },
4500  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4501  {
4502  -88 /*fromYearTiny (2012)*/,
4503  -88 /*toYearTiny (2012)*/,
4504  7 /*inMonth*/,
4505  0 /*onDayOfWeek*/,
4506  20 /*onDayOfMonth*/,
4507  12 /*atTimeCode*/,
4508  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4509  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4510  0 /*letterIndex ("")*/,
4511  },
4512  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4513  {
4514  -88 /*fromYearTiny (2012)*/,
4515  -88 /*toYearTiny (2012)*/,
4516  8 /*inMonth*/,
4517  0 /*onDayOfWeek*/,
4518  20 /*onDayOfMonth*/,
4519  8 /*atTimeCode*/,
4520  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4521  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4522  0 /*letterIndex ("")*/,
4523  },
4524  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4525  {
4526  -88 /*fromYearTiny (2012)*/,
4527  -88 /*toYearTiny (2012)*/,
4528  9 /*inMonth*/,
4529  0 /*onDayOfWeek*/,
4530  30 /*onDayOfMonth*/,
4531  12 /*atTimeCode*/,
4532  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4533  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4534  0 /*letterIndex ("")*/,
4535  },
4536  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4537  {
4538  -87 /*fromYearTiny (2013)*/,
4539  -87 /*toYearTiny (2013)*/,
4540  7 /*inMonth*/,
4541  0 /*onDayOfWeek*/,
4542  7 /*onDayOfMonth*/,
4543  12 /*atTimeCode*/,
4544  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4545  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4546  0 /*letterIndex ("")*/,
4547  },
4548  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4549  {
4550  -87 /*fromYearTiny (2013)*/,
4551  -87 /*toYearTiny (2013)*/,
4552  8 /*inMonth*/,
4553  0 /*onDayOfWeek*/,
4554  10 /*onDayOfMonth*/,
4555  8 /*atTimeCode*/,
4556  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4557  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4558  0 /*letterIndex ("")*/,
4559  },
4560  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4561  {
4562  -87 /*fromYearTiny (2013)*/,
4563  -82 /*toYearTiny (2018)*/,
4564  10 /*inMonth*/,
4565  7 /*onDayOfWeek*/,
4566  0 /*onDayOfMonth*/,
4567  12 /*atTimeCode*/,
4568  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4569  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4570  0 /*letterIndex ("")*/,
4571  },
4572  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4573  {
4574  -86 /*fromYearTiny (2014)*/,
4575  -82 /*toYearTiny (2018)*/,
4576  3 /*inMonth*/,
4577  7 /*onDayOfWeek*/,
4578  0 /*onDayOfMonth*/,
4579  8 /*atTimeCode*/,
4580  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4581  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4582  0 /*letterIndex ("")*/,
4583  },
4584  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4585  {
4586  -86 /*fromYearTiny (2014)*/,
4587  -86 /*toYearTiny (2014)*/,
4588  6 /*inMonth*/,
4589  0 /*onDayOfWeek*/,
4590  28 /*onDayOfMonth*/,
4591  12 /*atTimeCode*/,
4592  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4593  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4594  0 /*letterIndex ("")*/,
4595  },
4596  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4597  {
4598  -86 /*fromYearTiny (2014)*/,
4599  -86 /*toYearTiny (2014)*/,
4600  8 /*inMonth*/,
4601  0 /*onDayOfWeek*/,
4602  2 /*onDayOfMonth*/,
4603  8 /*atTimeCode*/,
4604  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4605  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4606  0 /*letterIndex ("")*/,
4607  },
4608  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4609  {
4610  -85 /*fromYearTiny (2015)*/,
4611  -85 /*toYearTiny (2015)*/,
4612  6 /*inMonth*/,
4613  0 /*onDayOfWeek*/,
4614  14 /*onDayOfMonth*/,
4615  12 /*atTimeCode*/,
4616  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4617  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4618  0 /*letterIndex ("")*/,
4619  },
4620  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4621  {
4622  -85 /*fromYearTiny (2015)*/,
4623  -85 /*toYearTiny (2015)*/,
4624  7 /*inMonth*/,
4625  0 /*onDayOfWeek*/,
4626  19 /*onDayOfMonth*/,
4627  8 /*atTimeCode*/,
4628  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4629  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4630  0 /*letterIndex ("")*/,
4631  },
4632  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4633  {
4634  -84 /*fromYearTiny (2016)*/,
4635  -84 /*toYearTiny (2016)*/,
4636  6 /*inMonth*/,
4637  0 /*onDayOfWeek*/,
4638  5 /*onDayOfMonth*/,
4639  12 /*atTimeCode*/,
4640  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4641  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4642  0 /*letterIndex ("")*/,
4643  },
4644  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4645  {
4646  -84 /*fromYearTiny (2016)*/,
4647  -84 /*toYearTiny (2016)*/,
4648  7 /*inMonth*/,
4649  0 /*onDayOfWeek*/,
4650  10 /*onDayOfMonth*/,
4651  8 /*atTimeCode*/,
4652  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4653  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4654  0 /*letterIndex ("")*/,
4655  },
4656  // Rule Morocco 2017 only - May 21 3:00 0 -
4657  {
4658  -83 /*fromYearTiny (2017)*/,
4659  -83 /*toYearTiny (2017)*/,
4660  5 /*inMonth*/,
4661  0 /*onDayOfWeek*/,
4662  21 /*onDayOfMonth*/,
4663  12 /*atTimeCode*/,
4664  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4665  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4666  0 /*letterIndex ("")*/,
4667  },
4668  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4669  {
4670  -83 /*fromYearTiny (2017)*/,
4671  -83 /*toYearTiny (2017)*/,
4672  7 /*inMonth*/,
4673  0 /*onDayOfWeek*/,
4674  2 /*onDayOfMonth*/,
4675  8 /*atTimeCode*/,
4676  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4677  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4678  0 /*letterIndex ("")*/,
4679  },
4680  // Rule Morocco 2018 only - May 13 3:00 0 -
4681  {
4682  -82 /*fromYearTiny (2018)*/,
4683  -82 /*toYearTiny (2018)*/,
4684  5 /*inMonth*/,
4685  0 /*onDayOfWeek*/,
4686  13 /*onDayOfMonth*/,
4687  12 /*atTimeCode*/,
4688  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4689  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4690  0 /*letterIndex ("")*/,
4691  },
4692  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4693  {
4694  -82 /*fromYearTiny (2018)*/,
4695  -82 /*toYearTiny (2018)*/,
4696  6 /*inMonth*/,
4697  0 /*onDayOfWeek*/,
4698  17 /*onDayOfMonth*/,
4699  8 /*atTimeCode*/,
4700  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4701  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4702  0 /*letterIndex ("")*/,
4703  },
4704  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4705  {
4706  -81 /*fromYearTiny (2019)*/,
4707  -81 /*toYearTiny (2019)*/,
4708  5 /*inMonth*/,
4709  0 /*onDayOfWeek*/,
4710  5 /*onDayOfMonth*/,
4711  12 /*atTimeCode*/,
4712  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4713  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4714  0 /*letterIndex ("")*/,
4715  },
4716  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4717  {
4718  -81 /*fromYearTiny (2019)*/,
4719  -81 /*toYearTiny (2019)*/,
4720  6 /*inMonth*/,
4721  0 /*onDayOfWeek*/,
4722  9 /*onDayOfMonth*/,
4723  8 /*atTimeCode*/,
4724  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4725  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4726  0 /*letterIndex ("")*/,
4727  },
4728  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4729  {
4730  -80 /*fromYearTiny (2020)*/,
4731  -80 /*toYearTiny (2020)*/,
4732  4 /*inMonth*/,
4733  0 /*onDayOfWeek*/,
4734  19 /*onDayOfMonth*/,
4735  12 /*atTimeCode*/,
4736  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4737  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4738  0 /*letterIndex ("")*/,
4739  },
4740  // Rule Morocco 2020 only - May 31 2:00 0 -
4741  {
4742  -80 /*fromYearTiny (2020)*/,
4743  -80 /*toYearTiny (2020)*/,
4744  5 /*inMonth*/,
4745  0 /*onDayOfWeek*/,
4746  31 /*onDayOfMonth*/,
4747  8 /*atTimeCode*/,
4748  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4749  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4750  0 /*letterIndex ("")*/,
4751  },
4752  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
4753  {
4754  -79 /*fromYearTiny (2021)*/,
4755  -79 /*toYearTiny (2021)*/,
4756  4 /*inMonth*/,
4757  0 /*onDayOfWeek*/,
4758  11 /*onDayOfMonth*/,
4759  12 /*atTimeCode*/,
4760  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4761  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4762  0 /*letterIndex ("")*/,
4763  },
4764  // Rule Morocco 2021 only - May 16 2:00 0 -
4765  {
4766  -79 /*fromYearTiny (2021)*/,
4767  -79 /*toYearTiny (2021)*/,
4768  5 /*inMonth*/,
4769  0 /*onDayOfWeek*/,
4770  16 /*onDayOfMonth*/,
4771  8 /*atTimeCode*/,
4772  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4773  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4774  0 /*letterIndex ("")*/,
4775  },
4776  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
4777  {
4778  -78 /*fromYearTiny (2022)*/,
4779  -78 /*toYearTiny (2022)*/,
4780  3 /*inMonth*/,
4781  0 /*onDayOfWeek*/,
4782  27 /*onDayOfMonth*/,
4783  12 /*atTimeCode*/,
4784  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4785  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4786  0 /*letterIndex ("")*/,
4787  },
4788  // Rule Morocco 2022 only - May 8 2:00 0 -
4789  {
4790  -78 /*fromYearTiny (2022)*/,
4791  -78 /*toYearTiny (2022)*/,
4792  5 /*inMonth*/,
4793  0 /*onDayOfWeek*/,
4794  8 /*onDayOfMonth*/,
4795  8 /*atTimeCode*/,
4796  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4797  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4798  0 /*letterIndex ("")*/,
4799  },
4800  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
4801  {
4802  -77 /*fromYearTiny (2023)*/,
4803  -77 /*toYearTiny (2023)*/,
4804  3 /*inMonth*/,
4805  0 /*onDayOfWeek*/,
4806  19 /*onDayOfMonth*/,
4807  12 /*atTimeCode*/,
4808  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4809  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4810  0 /*letterIndex ("")*/,
4811  },
4812  // Rule Morocco 2023 only - Apr 23 2:00 0 -
4813  {
4814  -77 /*fromYearTiny (2023)*/,
4815  -77 /*toYearTiny (2023)*/,
4816  4 /*inMonth*/,
4817  0 /*onDayOfWeek*/,
4818  23 /*onDayOfMonth*/,
4819  8 /*atTimeCode*/,
4820  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4821  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4822  0 /*letterIndex ("")*/,
4823  },
4824  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
4825  {
4826  -76 /*fromYearTiny (2024)*/,
4827  -76 /*toYearTiny (2024)*/,
4828  3 /*inMonth*/,
4829  0 /*onDayOfWeek*/,
4830  10 /*onDayOfMonth*/,
4831  12 /*atTimeCode*/,
4832  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4833  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4834  0 /*letterIndex ("")*/,
4835  },
4836  // Rule Morocco 2024 only - Apr 14 2:00 0 -
4837  {
4838  -76 /*fromYearTiny (2024)*/,
4839  -76 /*toYearTiny (2024)*/,
4840  4 /*inMonth*/,
4841  0 /*onDayOfWeek*/,
4842  14 /*onDayOfMonth*/,
4843  8 /*atTimeCode*/,
4844  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4845  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4846  0 /*letterIndex ("")*/,
4847  },
4848  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
4849  {
4850  -75 /*fromYearTiny (2025)*/,
4851  -75 /*toYearTiny (2025)*/,
4852  2 /*inMonth*/,
4853  0 /*onDayOfWeek*/,
4854  23 /*onDayOfMonth*/,
4855  12 /*atTimeCode*/,
4856  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4857  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4858  0 /*letterIndex ("")*/,
4859  },
4860  // Rule Morocco 2025 only - Apr 6 2:00 0 -
4861  {
4862  -75 /*fromYearTiny (2025)*/,
4863  -75 /*toYearTiny (2025)*/,
4864  4 /*inMonth*/,
4865  0 /*onDayOfWeek*/,
4866  6 /*onDayOfMonth*/,
4867  8 /*atTimeCode*/,
4868  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4869  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4870  0 /*letterIndex ("")*/,
4871  },
4872  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
4873  {
4874  -74 /*fromYearTiny (2026)*/,
4875  -74 /*toYearTiny (2026)*/,
4876  2 /*inMonth*/,
4877  0 /*onDayOfWeek*/,
4878  15 /*onDayOfMonth*/,
4879  12 /*atTimeCode*/,
4880  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4881  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4882  0 /*letterIndex ("")*/,
4883  },
4884  // Rule Morocco 2026 only - Mar 22 2:00 0 -
4885  {
4886  -74 /*fromYearTiny (2026)*/,
4887  -74 /*toYearTiny (2026)*/,
4888  3 /*inMonth*/,
4889  0 /*onDayOfWeek*/,
4890  22 /*onDayOfMonth*/,
4891  8 /*atTimeCode*/,
4892  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4893  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4894  0 /*letterIndex ("")*/,
4895  },
4896  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
4897  {
4898  -73 /*fromYearTiny (2027)*/,
4899  -73 /*toYearTiny (2027)*/,
4900  2 /*inMonth*/,
4901  0 /*onDayOfWeek*/,
4902  7 /*onDayOfMonth*/,
4903  12 /*atTimeCode*/,
4904  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4905  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4906  0 /*letterIndex ("")*/,
4907  },
4908  // Rule Morocco 2027 only - Mar 14 2:00 0 -
4909  {
4910  -73 /*fromYearTiny (2027)*/,
4911  -73 /*toYearTiny (2027)*/,
4912  3 /*inMonth*/,
4913  0 /*onDayOfWeek*/,
4914  14 /*onDayOfMonth*/,
4915  8 /*atTimeCode*/,
4916  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4917  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4918  0 /*letterIndex ("")*/,
4919  },
4920  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
4921  {
4922  -72 /*fromYearTiny (2028)*/,
4923  -72 /*toYearTiny (2028)*/,
4924  1 /*inMonth*/,
4925  0 /*onDayOfWeek*/,
4926  23 /*onDayOfMonth*/,
4927  12 /*atTimeCode*/,
4928  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4929  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4930  0 /*letterIndex ("")*/,
4931  },
4932  // Rule Morocco 2028 only - Mar 5 2:00 0 -
4933  {
4934  -72 /*fromYearTiny (2028)*/,
4935  -72 /*toYearTiny (2028)*/,
4936  3 /*inMonth*/,
4937  0 /*onDayOfWeek*/,
4938  5 /*onDayOfMonth*/,
4939  8 /*atTimeCode*/,
4940  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4941  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4942  0 /*letterIndex ("")*/,
4943  },
4944  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
4945  {
4946  -71 /*fromYearTiny (2029)*/,
4947  -71 /*toYearTiny (2029)*/,
4948  1 /*inMonth*/,
4949  0 /*onDayOfWeek*/,
4950  14 /*onDayOfMonth*/,
4951  12 /*atTimeCode*/,
4952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4953  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4954  0 /*letterIndex ("")*/,
4955  },
4956  // Rule Morocco 2029 only - Feb 18 2:00 0 -
4957  {
4958  -71 /*fromYearTiny (2029)*/,
4959  -71 /*toYearTiny (2029)*/,
4960  2 /*inMonth*/,
4961  0 /*onDayOfWeek*/,
4962  18 /*onDayOfMonth*/,
4963  8 /*atTimeCode*/,
4964  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4965  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4966  0 /*letterIndex ("")*/,
4967  },
4968  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
4969  {
4970  -71 /*fromYearTiny (2029)*/,
4971  -71 /*toYearTiny (2029)*/,
4972  12 /*inMonth*/,
4973  0 /*onDayOfWeek*/,
4974  30 /*onDayOfMonth*/,
4975  12 /*atTimeCode*/,
4976  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4977  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4978  0 /*letterIndex ("")*/,
4979  },
4980  // Rule Morocco 2030 only - Feb 10 2:00 0 -
4981  {
4982  -70 /*fromYearTiny (2030)*/,
4983  -70 /*toYearTiny (2030)*/,
4984  2 /*inMonth*/,
4985  0 /*onDayOfWeek*/,
4986  10 /*onDayOfMonth*/,
4987  8 /*atTimeCode*/,
4988  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4989  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4990  0 /*letterIndex ("")*/,
4991  },
4992  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
4993  {
4994  -70 /*fromYearTiny (2030)*/,
4995  -70 /*toYearTiny (2030)*/,
4996  12 /*inMonth*/,
4997  0 /*onDayOfWeek*/,
4998  22 /*onDayOfMonth*/,
4999  12 /*atTimeCode*/,
5000  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5001  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5002  0 /*letterIndex ("")*/,
5003  },
5004  // Rule Morocco 2031 only - Jan 26 2:00 0 -
5005  {
5006  -69 /*fromYearTiny (2031)*/,
5007  -69 /*toYearTiny (2031)*/,
5008  1 /*inMonth*/,
5009  0 /*onDayOfWeek*/,
5010  26 /*onDayOfMonth*/,
5011  8 /*atTimeCode*/,
5012  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5013  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5014  0 /*letterIndex ("")*/,
5015  },
5016  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
5017  {
5018  -69 /*fromYearTiny (2031)*/,
5019  -69 /*toYearTiny (2031)*/,
5020  12 /*inMonth*/,
5021  0 /*onDayOfWeek*/,
5022  14 /*onDayOfMonth*/,
5023  12 /*atTimeCode*/,
5024  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5025  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5026  0 /*letterIndex ("")*/,
5027  },
5028  // Rule Morocco 2032 only - Jan 18 2:00 0 -
5029  {
5030  -68 /*fromYearTiny (2032)*/,
5031  -68 /*toYearTiny (2032)*/,
5032  1 /*inMonth*/,
5033  0 /*onDayOfWeek*/,
5034  18 /*onDayOfMonth*/,
5035  8 /*atTimeCode*/,
5036  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5037  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5038  0 /*letterIndex ("")*/,
5039  },
5040  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
5041  {
5042  -68 /*fromYearTiny (2032)*/,
5043  -68 /*toYearTiny (2032)*/,
5044  11 /*inMonth*/,
5045  0 /*onDayOfWeek*/,
5046  28 /*onDayOfMonth*/,
5047  12 /*atTimeCode*/,
5048  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5049  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5050  0 /*letterIndex ("")*/,
5051  },
5052  // Rule Morocco 2033 only - Jan 9 2:00 0 -
5053  {
5054  -67 /*fromYearTiny (2033)*/,
5055  -67 /*toYearTiny (2033)*/,
5056  1 /*inMonth*/,
5057  0 /*onDayOfWeek*/,
5058  9 /*onDayOfMonth*/,
5059  8 /*atTimeCode*/,
5060  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5061  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5062  0 /*letterIndex ("")*/,
5063  },
5064  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
5065  {
5066  -67 /*fromYearTiny (2033)*/,
5067  -67 /*toYearTiny (2033)*/,
5068  11 /*inMonth*/,
5069  0 /*onDayOfWeek*/,
5070  20 /*onDayOfMonth*/,
5071  12 /*atTimeCode*/,
5072  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5073  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5074  0 /*letterIndex ("")*/,
5075  },
5076  // Rule Morocco 2033 only - Dec 25 2:00 0 -
5077  {
5078  -67 /*fromYearTiny (2033)*/,
5079  -67 /*toYearTiny (2033)*/,
5080  12 /*inMonth*/,
5081  0 /*onDayOfWeek*/,
5082  25 /*onDayOfMonth*/,
5083  8 /*atTimeCode*/,
5084  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5085  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5086  0 /*letterIndex ("")*/,
5087  },
5088  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
5089  {
5090  -66 /*fromYearTiny (2034)*/,
5091  -66 /*toYearTiny (2034)*/,
5092  11 /*inMonth*/,
5093  0 /*onDayOfWeek*/,
5094  5 /*onDayOfMonth*/,
5095  12 /*atTimeCode*/,
5096  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5097  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5098  0 /*letterIndex ("")*/,
5099  },
5100  // Rule Morocco 2034 only - Dec 17 2:00 0 -
5101  {
5102  -66 /*fromYearTiny (2034)*/,
5103  -66 /*toYearTiny (2034)*/,
5104  12 /*inMonth*/,
5105  0 /*onDayOfWeek*/,
5106  17 /*onDayOfMonth*/,
5107  8 /*atTimeCode*/,
5108  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5109  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5110  0 /*letterIndex ("")*/,
5111  },
5112  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5113  {
5114  -65 /*fromYearTiny (2035)*/,
5115  -65 /*toYearTiny (2035)*/,
5116  10 /*inMonth*/,
5117  0 /*onDayOfWeek*/,
5118  28 /*onDayOfMonth*/,
5119  12 /*atTimeCode*/,
5120  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5121  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5122  0 /*letterIndex ("")*/,
5123  },
5124  // Rule Morocco 2035 only - Dec 9 2:00 0 -
5125  {
5126  -65 /*fromYearTiny (2035)*/,
5127  -65 /*toYearTiny (2035)*/,
5128  12 /*inMonth*/,
5129  0 /*onDayOfWeek*/,
5130  9 /*onDayOfMonth*/,
5131  8 /*atTimeCode*/,
5132  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5133  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5134  0 /*letterIndex ("")*/,
5135  },
5136  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5137  {
5138  -64 /*fromYearTiny (2036)*/,
5139  -64 /*toYearTiny (2036)*/,
5140  10 /*inMonth*/,
5141  0 /*onDayOfWeek*/,
5142  19 /*onDayOfMonth*/,
5143  12 /*atTimeCode*/,
5144  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5145  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5146  0 /*letterIndex ("")*/,
5147  },
5148  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5149  {
5150  -64 /*fromYearTiny (2036)*/,
5151  -64 /*toYearTiny (2036)*/,
5152  11 /*inMonth*/,
5153  0 /*onDayOfWeek*/,
5154  23 /*onDayOfMonth*/,
5155  8 /*atTimeCode*/,
5156  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5157  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5158  0 /*letterIndex ("")*/,
5159  },
5160  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5161  {
5162  -63 /*fromYearTiny (2037)*/,
5163  -63 /*toYearTiny (2037)*/,
5164  10 /*inMonth*/,
5165  0 /*onDayOfWeek*/,
5166  4 /*onDayOfMonth*/,
5167  12 /*atTimeCode*/,
5168  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5169  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5170  0 /*letterIndex ("")*/,
5171  },
5172  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5173  {
5174  -63 /*fromYearTiny (2037)*/,
5175  -63 /*toYearTiny (2037)*/,
5176  11 /*inMonth*/,
5177  0 /*onDayOfWeek*/,
5178  15 /*onDayOfMonth*/,
5179  8 /*atTimeCode*/,
5180  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5181  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5182  0 /*letterIndex ("")*/,
5183  },
5184  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
5185  {
5186  -62 /*fromYearTiny (2038)*/,
5187  -62 /*toYearTiny (2038)*/,
5188  9 /*inMonth*/,
5189  0 /*onDayOfWeek*/,
5190  26 /*onDayOfMonth*/,
5191  12 /*atTimeCode*/,
5192  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5193  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5194  0 /*letterIndex ("")*/,
5195  },
5196  // Rule Morocco 2038 only - Oct 31 2:00 0 -
5197  {
5198  -62 /*fromYearTiny (2038)*/,
5199  -62 /*toYearTiny (2038)*/,
5200  10 /*inMonth*/,
5201  0 /*onDayOfWeek*/,
5202  31 /*onDayOfMonth*/,
5203  8 /*atTimeCode*/,
5204  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5205  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5206  0 /*letterIndex ("")*/,
5207  },
5208  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
5209  {
5210  -61 /*fromYearTiny (2039)*/,
5211  -61 /*toYearTiny (2039)*/,
5212  9 /*inMonth*/,
5213  0 /*onDayOfWeek*/,
5214  18 /*onDayOfMonth*/,
5215  12 /*atTimeCode*/,
5216  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5217  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5218  0 /*letterIndex ("")*/,
5219  },
5220  // Rule Morocco 2039 only - Oct 23 2:00 0 -
5221  {
5222  -61 /*fromYearTiny (2039)*/,
5223  -61 /*toYearTiny (2039)*/,
5224  10 /*inMonth*/,
5225  0 /*onDayOfWeek*/,
5226  23 /*onDayOfMonth*/,
5227  8 /*atTimeCode*/,
5228  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5229  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5230  0 /*letterIndex ("")*/,
5231  },
5232  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
5233  {
5234  -60 /*fromYearTiny (2040)*/,
5235  -60 /*toYearTiny (2040)*/,
5236  9 /*inMonth*/,
5237  0 /*onDayOfWeek*/,
5238  2 /*onDayOfMonth*/,
5239  12 /*atTimeCode*/,
5240  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5241  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5242  0 /*letterIndex ("")*/,
5243  },
5244  // Rule Morocco 2040 only - Oct 14 2:00 0 -
5245  {
5246  -60 /*fromYearTiny (2040)*/,
5247  -60 /*toYearTiny (2040)*/,
5248  10 /*inMonth*/,
5249  0 /*onDayOfWeek*/,
5250  14 /*onDayOfMonth*/,
5251  8 /*atTimeCode*/,
5252  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5253  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5254  0 /*letterIndex ("")*/,
5255  },
5256  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
5257  {
5258  -59 /*fromYearTiny (2041)*/,
5259  -59 /*toYearTiny (2041)*/,
5260  8 /*inMonth*/,
5261  0 /*onDayOfWeek*/,
5262  25 /*onDayOfMonth*/,
5263  12 /*atTimeCode*/,
5264  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5265  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5266  0 /*letterIndex ("")*/,
5267  },
5268  // Rule Morocco 2041 only - Sep 29 2:00 0 -
5269  {
5270  -59 /*fromYearTiny (2041)*/,
5271  -59 /*toYearTiny (2041)*/,
5272  9 /*inMonth*/,
5273  0 /*onDayOfWeek*/,
5274  29 /*onDayOfMonth*/,
5275  8 /*atTimeCode*/,
5276  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5277  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5278  0 /*letterIndex ("")*/,
5279  },
5280  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
5281  {
5282  -58 /*fromYearTiny (2042)*/,
5283  -58 /*toYearTiny (2042)*/,
5284  8 /*inMonth*/,
5285  0 /*onDayOfWeek*/,
5286  10 /*onDayOfMonth*/,
5287  12 /*atTimeCode*/,
5288  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5289  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5290  0 /*letterIndex ("")*/,
5291  },
5292  // Rule Morocco 2042 only - Sep 21 2:00 0 -
5293  {
5294  -58 /*fromYearTiny (2042)*/,
5295  -58 /*toYearTiny (2042)*/,
5296  9 /*inMonth*/,
5297  0 /*onDayOfWeek*/,
5298  21 /*onDayOfMonth*/,
5299  8 /*atTimeCode*/,
5300  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5301  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5302  0 /*letterIndex ("")*/,
5303  },
5304  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
5305  {
5306  -57 /*fromYearTiny (2043)*/,
5307  -57 /*toYearTiny (2043)*/,
5308  8 /*inMonth*/,
5309  0 /*onDayOfWeek*/,
5310  2 /*onDayOfMonth*/,
5311  12 /*atTimeCode*/,
5312  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5313  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5314  0 /*letterIndex ("")*/,
5315  },
5316  // Rule Morocco 2043 only - Sep 13 2:00 0 -
5317  {
5318  -57 /*fromYearTiny (2043)*/,
5319  -57 /*toYearTiny (2043)*/,
5320  9 /*inMonth*/,
5321  0 /*onDayOfWeek*/,
5322  13 /*onDayOfMonth*/,
5323  8 /*atTimeCode*/,
5324  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5325  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5326  0 /*letterIndex ("")*/,
5327  },
5328  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
5329  {
5330  -56 /*fromYearTiny (2044)*/,
5331  -56 /*toYearTiny (2044)*/,
5332  7 /*inMonth*/,
5333  0 /*onDayOfWeek*/,
5334  24 /*onDayOfMonth*/,
5335  12 /*atTimeCode*/,
5336  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5337  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5338  0 /*letterIndex ("")*/,
5339  },
5340  // Rule Morocco 2044 only - Aug 28 2:00 0 -
5341  {
5342  -56 /*fromYearTiny (2044)*/,
5343  -56 /*toYearTiny (2044)*/,
5344  8 /*inMonth*/,
5345  0 /*onDayOfWeek*/,
5346  28 /*onDayOfMonth*/,
5347  8 /*atTimeCode*/,
5348  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5349  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5350  0 /*letterIndex ("")*/,
5351  },
5352  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
5353  {
5354  -55 /*fromYearTiny (2045)*/,
5355  -55 /*toYearTiny (2045)*/,
5356  7 /*inMonth*/,
5357  0 /*onDayOfWeek*/,
5358  9 /*onDayOfMonth*/,
5359  12 /*atTimeCode*/,
5360  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5361  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5362  0 /*letterIndex ("")*/,
5363  },
5364  // Rule Morocco 2045 only - Aug 20 2:00 0 -
5365  {
5366  -55 /*fromYearTiny (2045)*/,
5367  -55 /*toYearTiny (2045)*/,
5368  8 /*inMonth*/,
5369  0 /*onDayOfWeek*/,
5370  20 /*onDayOfMonth*/,
5371  8 /*atTimeCode*/,
5372  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5373  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5374  0 /*letterIndex ("")*/,
5375  },
5376  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
5377  {
5378  -54 /*fromYearTiny (2046)*/,
5379  -54 /*toYearTiny (2046)*/,
5380  7 /*inMonth*/,
5381  0 /*onDayOfWeek*/,
5382  1 /*onDayOfMonth*/,
5383  12 /*atTimeCode*/,
5384  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5385  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5386  0 /*letterIndex ("")*/,
5387  },
5388  // Rule Morocco 2046 only - Aug 5 2:00 0 -
5389  {
5390  -54 /*fromYearTiny (2046)*/,
5391  -54 /*toYearTiny (2046)*/,
5392  8 /*inMonth*/,
5393  0 /*onDayOfWeek*/,
5394  5 /*onDayOfMonth*/,
5395  8 /*atTimeCode*/,
5396  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5397  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5398  0 /*letterIndex ("")*/,
5399  },
5400  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
5401  {
5402  -53 /*fromYearTiny (2047)*/,
5403  -53 /*toYearTiny (2047)*/,
5404  6 /*inMonth*/,
5405  0 /*onDayOfWeek*/,
5406  23 /*onDayOfMonth*/,
5407  12 /*atTimeCode*/,
5408  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5409  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5410  0 /*letterIndex ("")*/,
5411  },
5412  // Rule Morocco 2047 only - Jul 28 2:00 0 -
5413  {
5414  -53 /*fromYearTiny (2047)*/,
5415  -53 /*toYearTiny (2047)*/,
5416  7 /*inMonth*/,
5417  0 /*onDayOfWeek*/,
5418  28 /*onDayOfMonth*/,
5419  8 /*atTimeCode*/,
5420  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5421  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5422  0 /*letterIndex ("")*/,
5423  },
5424  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
5425  {
5426  -52 /*fromYearTiny (2048)*/,
5427  -52 /*toYearTiny (2048)*/,
5428  6 /*inMonth*/,
5429  0 /*onDayOfWeek*/,
5430  7 /*onDayOfMonth*/,
5431  12 /*atTimeCode*/,
5432  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5433  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5434  0 /*letterIndex ("")*/,
5435  },
5436  // Rule Morocco 2048 only - Jul 19 2:00 0 -
5437  {
5438  -52 /*fromYearTiny (2048)*/,
5439  -52 /*toYearTiny (2048)*/,
5440  7 /*inMonth*/,
5441  0 /*onDayOfWeek*/,
5442  19 /*onDayOfMonth*/,
5443  8 /*atTimeCode*/,
5444  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5445  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5446  0 /*letterIndex ("")*/,
5447  },
5448  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
5449  {
5450  -51 /*fromYearTiny (2049)*/,
5451  -51 /*toYearTiny (2049)*/,
5452  5 /*inMonth*/,
5453  0 /*onDayOfWeek*/,
5454  30 /*onDayOfMonth*/,
5455  12 /*atTimeCode*/,
5456  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5457  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5458  0 /*letterIndex ("")*/,
5459  },
5460  // Rule Morocco 2049 only - Jul 4 2:00 0 -
5461  {
5462  -51 /*fromYearTiny (2049)*/,
5463  -51 /*toYearTiny (2049)*/,
5464  7 /*inMonth*/,
5465  0 /*onDayOfWeek*/,
5466  4 /*onDayOfMonth*/,
5467  8 /*atTimeCode*/,
5468  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5469  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5470  0 /*letterIndex ("")*/,
5471  },
5472  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
5473  {
5474  -50 /*fromYearTiny (2050)*/,
5475  -50 /*toYearTiny (2050)*/,
5476  5 /*inMonth*/,
5477  0 /*onDayOfWeek*/,
5478  15 /*onDayOfMonth*/,
5479  12 /*atTimeCode*/,
5480  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5481  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5482  0 /*letterIndex ("")*/,
5483  },
5484  // Rule Morocco 2050 only - Jun 26 2:00 0 -
5485  {
5486  -50 /*fromYearTiny (2050)*/,
5487  -50 /*toYearTiny (2050)*/,
5488  6 /*inMonth*/,
5489  0 /*onDayOfWeek*/,
5490  26 /*onDayOfMonth*/,
5491  8 /*atTimeCode*/,
5492  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5493  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5494  0 /*letterIndex ("")*/,
5495  },
5496  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
5497  {
5498  -49 /*fromYearTiny (2051)*/,
5499  -49 /*toYearTiny (2051)*/,
5500  5 /*inMonth*/,
5501  0 /*onDayOfWeek*/,
5502  7 /*onDayOfMonth*/,
5503  12 /*atTimeCode*/,
5504  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5505  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5506  0 /*letterIndex ("")*/,
5507  },
5508  // Rule Morocco 2051 only - Jun 18 2:00 0 -
5509  {
5510  -49 /*fromYearTiny (2051)*/,
5511  -49 /*toYearTiny (2051)*/,
5512  6 /*inMonth*/,
5513  0 /*onDayOfWeek*/,
5514  18 /*onDayOfMonth*/,
5515  8 /*atTimeCode*/,
5516  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5517  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5518  0 /*letterIndex ("")*/,
5519  },
5520  // Rule Morocco 2052 only - Apr 28 3:00 -1:00 -
5521  {
5522  -48 /*fromYearTiny (2052)*/,
5523  -48 /*toYearTiny (2052)*/,
5524  4 /*inMonth*/,
5525  0 /*onDayOfWeek*/,
5526  28 /*onDayOfMonth*/,
5527  12 /*atTimeCode*/,
5528  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5529  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5530  0 /*letterIndex ("")*/,
5531  },
5532  // Rule Morocco 2052 only - Jun 2 2:00 0 -
5533  {
5534  -48 /*fromYearTiny (2052)*/,
5535  -48 /*toYearTiny (2052)*/,
5536  6 /*inMonth*/,
5537  0 /*onDayOfWeek*/,
5538  2 /*onDayOfMonth*/,
5539  8 /*atTimeCode*/,
5540  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5541  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5542  0 /*letterIndex ("")*/,
5543  },
5544  // Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
5545  {
5546  -47 /*fromYearTiny (2053)*/,
5547  -47 /*toYearTiny (2053)*/,
5548  4 /*inMonth*/,
5549  0 /*onDayOfWeek*/,
5550  13 /*onDayOfMonth*/,
5551  12 /*atTimeCode*/,
5552  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5553  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5554  0 /*letterIndex ("")*/,
5555  },
5556  // Rule Morocco 2053 only - May 25 2:00 0 -
5557  {
5558  -47 /*fromYearTiny (2053)*/,
5559  -47 /*toYearTiny (2053)*/,
5560  5 /*inMonth*/,
5561  0 /*onDayOfWeek*/,
5562  25 /*onDayOfMonth*/,
5563  8 /*atTimeCode*/,
5564  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5565  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5566  0 /*letterIndex ("")*/,
5567  },
5568  // Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
5569  {
5570  -46 /*fromYearTiny (2054)*/,
5571  -46 /*toYearTiny (2054)*/,
5572  4 /*inMonth*/,
5573  0 /*onDayOfWeek*/,
5574  5 /*onDayOfMonth*/,
5575  12 /*atTimeCode*/,
5576  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5577  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5578  0 /*letterIndex ("")*/,
5579  },
5580  // Rule Morocco 2054 only - May 10 2:00 0 -
5581  {
5582  -46 /*fromYearTiny (2054)*/,
5583  -46 /*toYearTiny (2054)*/,
5584  5 /*inMonth*/,
5585  0 /*onDayOfWeek*/,
5586  10 /*onDayOfMonth*/,
5587  8 /*atTimeCode*/,
5588  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5589  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5590  0 /*letterIndex ("")*/,
5591  },
5592  // Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
5593  {
5594  -45 /*fromYearTiny (2055)*/,
5595  -45 /*toYearTiny (2055)*/,
5596  3 /*inMonth*/,
5597  0 /*onDayOfWeek*/,
5598  28 /*onDayOfMonth*/,
5599  12 /*atTimeCode*/,
5600  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5601  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5602  0 /*letterIndex ("")*/,
5603  },
5604  // Rule Morocco 2055 only - May 2 2:00 0 -
5605  {
5606  -45 /*fromYearTiny (2055)*/,
5607  -45 /*toYearTiny (2055)*/,
5608  5 /*inMonth*/,
5609  0 /*onDayOfWeek*/,
5610  2 /*onDayOfMonth*/,
5611  8 /*atTimeCode*/,
5612  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5613  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5614  0 /*letterIndex ("")*/,
5615  },
5616  // Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
5617  {
5618  -44 /*fromYearTiny (2056)*/,
5619  -44 /*toYearTiny (2056)*/,
5620  3 /*inMonth*/,
5621  0 /*onDayOfWeek*/,
5622  12 /*onDayOfMonth*/,
5623  12 /*atTimeCode*/,
5624  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5625  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5626  0 /*letterIndex ("")*/,
5627  },
5628  // Rule Morocco 2056 only - Apr 23 2:00 0 -
5629  {
5630  -44 /*fromYearTiny (2056)*/,
5631  -44 /*toYearTiny (2056)*/,
5632  4 /*inMonth*/,
5633  0 /*onDayOfWeek*/,
5634  23 /*onDayOfMonth*/,
5635  8 /*atTimeCode*/,
5636  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5637  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5638  0 /*letterIndex ("")*/,
5639  },
5640  // Rule Morocco 2057 only - Mar 4 3:00 -1:00 -
5641  {
5642  -43 /*fromYearTiny (2057)*/,
5643  -43 /*toYearTiny (2057)*/,
5644  3 /*inMonth*/,
5645  0 /*onDayOfWeek*/,
5646  4 /*onDayOfMonth*/,
5647  12 /*atTimeCode*/,
5648  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5649  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5650  0 /*letterIndex ("")*/,
5651  },
5652  // Rule Morocco 2057 only - Apr 8 2:00 0 -
5653  {
5654  -43 /*fromYearTiny (2057)*/,
5655  -43 /*toYearTiny (2057)*/,
5656  4 /*inMonth*/,
5657  0 /*onDayOfWeek*/,
5658  8 /*onDayOfMonth*/,
5659  8 /*atTimeCode*/,
5660  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5661  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5662  0 /*letterIndex ("")*/,
5663  },
5664  // Rule Morocco 2058 only - Feb 17 3:00 -1:00 -
5665  {
5666  -42 /*fromYearTiny (2058)*/,
5667  -42 /*toYearTiny (2058)*/,
5668  2 /*inMonth*/,
5669  0 /*onDayOfWeek*/,
5670  17 /*onDayOfMonth*/,
5671  12 /*atTimeCode*/,
5672  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5673  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5674  0 /*letterIndex ("")*/,
5675  },
5676  // Rule Morocco 2058 only - Mar 31 2:00 0 -
5677  {
5678  -42 /*fromYearTiny (2058)*/,
5679  -42 /*toYearTiny (2058)*/,
5680  3 /*inMonth*/,
5681  0 /*onDayOfWeek*/,
5682  31 /*onDayOfMonth*/,
5683  8 /*atTimeCode*/,
5684  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5685  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5686  0 /*letterIndex ("")*/,
5687  },
5688  // Rule Morocco 2059 only - Feb 9 3:00 -1:00 -
5689  {
5690  -41 /*fromYearTiny (2059)*/,
5691  -41 /*toYearTiny (2059)*/,
5692  2 /*inMonth*/,
5693  0 /*onDayOfWeek*/,
5694  9 /*onDayOfMonth*/,
5695  12 /*atTimeCode*/,
5696  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5697  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5698  0 /*letterIndex ("")*/,
5699  },
5700  // Rule Morocco 2059 only - Mar 23 2:00 0 -
5701  {
5702  -41 /*fromYearTiny (2059)*/,
5703  -41 /*toYearTiny (2059)*/,
5704  3 /*inMonth*/,
5705  0 /*onDayOfWeek*/,
5706  23 /*onDayOfMonth*/,
5707  8 /*atTimeCode*/,
5708  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5709  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5710  0 /*letterIndex ("")*/,
5711  },
5712  // Rule Morocco 2060 only - Feb 1 3:00 -1:00 -
5713  {
5714  -40 /*fromYearTiny (2060)*/,
5715  -40 /*toYearTiny (2060)*/,
5716  2 /*inMonth*/,
5717  0 /*onDayOfWeek*/,
5718  1 /*onDayOfMonth*/,
5719  12 /*atTimeCode*/,
5720  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5721  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5722  0 /*letterIndex ("")*/,
5723  },
5724  // Rule Morocco 2060 only - Mar 7 2:00 0 -
5725  {
5726  -40 /*fromYearTiny (2060)*/,
5727  -40 /*toYearTiny (2060)*/,
5728  3 /*inMonth*/,
5729  0 /*onDayOfWeek*/,
5730  7 /*onDayOfMonth*/,
5731  8 /*atTimeCode*/,
5732  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5733  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5734  0 /*letterIndex ("")*/,
5735  },
5736  // Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
5737  {
5738  -39 /*fromYearTiny (2061)*/,
5739  -39 /*toYearTiny (2061)*/,
5740  1 /*inMonth*/,
5741  0 /*onDayOfWeek*/,
5742  16 /*onDayOfMonth*/,
5743  12 /*atTimeCode*/,
5744  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5745  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5746  0 /*letterIndex ("")*/,
5747  },
5748  // Rule Morocco 2061 only - Feb 27 2:00 0 -
5749  {
5750  -39 /*fromYearTiny (2061)*/,
5751  -39 /*toYearTiny (2061)*/,
5752  2 /*inMonth*/,
5753  0 /*onDayOfWeek*/,
5754  27 /*onDayOfMonth*/,
5755  8 /*atTimeCode*/,
5756  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5757  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5758  0 /*letterIndex ("")*/,
5759  },
5760  // Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
5761  {
5762  -38 /*fromYearTiny (2062)*/,
5763  -38 /*toYearTiny (2062)*/,
5764  1 /*inMonth*/,
5765  0 /*onDayOfWeek*/,
5766  8 /*onDayOfMonth*/,
5767  12 /*atTimeCode*/,
5768  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5769  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5770  0 /*letterIndex ("")*/,
5771  },
5772  // Rule Morocco 2062 only - Feb 12 2:00 0 -
5773  {
5774  -38 /*fromYearTiny (2062)*/,
5775  -38 /*toYearTiny (2062)*/,
5776  2 /*inMonth*/,
5777  0 /*onDayOfWeek*/,
5778  12 /*onDayOfMonth*/,
5779  8 /*atTimeCode*/,
5780  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5781  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5782  0 /*letterIndex ("")*/,
5783  },
5784  // Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
5785  {
5786  -38 /*fromYearTiny (2062)*/,
5787  -38 /*toYearTiny (2062)*/,
5788  12 /*inMonth*/,
5789  0 /*onDayOfWeek*/,
5790  31 /*onDayOfMonth*/,
5791  12 /*atTimeCode*/,
5792  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5793  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5794  0 /*letterIndex ("")*/,
5795  },
5796  // Rule Morocco 2063 only - Feb 4 2:00 0 -
5797  {
5798  -37 /*fromYearTiny (2063)*/,
5799  -37 /*toYearTiny (2063)*/,
5800  2 /*inMonth*/,
5801  0 /*onDayOfWeek*/,
5802  4 /*onDayOfMonth*/,
5803  8 /*atTimeCode*/,
5804  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5805  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5806  0 /*letterIndex ("")*/,
5807  },
5808  // Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
5809  {
5810  -37 /*fromYearTiny (2063)*/,
5811  -37 /*toYearTiny (2063)*/,
5812  12 /*inMonth*/,
5813  0 /*onDayOfWeek*/,
5814  16 /*onDayOfMonth*/,
5815  12 /*atTimeCode*/,
5816  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5817  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5818  0 /*letterIndex ("")*/,
5819  },
5820  // Rule Morocco 2064 only - Jan 27 2:00 0 -
5821  {
5822  -36 /*fromYearTiny (2064)*/,
5823  -36 /*toYearTiny (2064)*/,
5824  1 /*inMonth*/,
5825  0 /*onDayOfWeek*/,
5826  27 /*onDayOfMonth*/,
5827  8 /*atTimeCode*/,
5828  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5829  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5830  0 /*letterIndex ("")*/,
5831  },
5832  // Rule Morocco 2064 only - Dec 7 3:00 -1:00 -
5833  {
5834  -36 /*fromYearTiny (2064)*/,
5835  -36 /*toYearTiny (2064)*/,
5836  12 /*inMonth*/,
5837  0 /*onDayOfWeek*/,
5838  7 /*onDayOfMonth*/,
5839  12 /*atTimeCode*/,
5840  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5841  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5842  0 /*letterIndex ("")*/,
5843  },
5844  // Rule Morocco 2065 only - Jan 11 2:00 0 -
5845  {
5846  -35 /*fromYearTiny (2065)*/,
5847  -35 /*toYearTiny (2065)*/,
5848  1 /*inMonth*/,
5849  0 /*onDayOfWeek*/,
5850  11 /*onDayOfMonth*/,
5851  8 /*atTimeCode*/,
5852  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5853  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5854  0 /*letterIndex ("")*/,
5855  },
5856  // Rule Morocco 2065 only - Nov 22 3:00 -1:00 -
5857  {
5858  -35 /*fromYearTiny (2065)*/,
5859  -35 /*toYearTiny (2065)*/,
5860  11 /*inMonth*/,
5861  0 /*onDayOfWeek*/,
5862  22 /*onDayOfMonth*/,
5863  12 /*atTimeCode*/,
5864  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5865  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5866  0 /*letterIndex ("")*/,
5867  },
5868  // Rule Morocco 2066 only - Jan 3 2:00 0 -
5869  {
5870  -34 /*fromYearTiny (2066)*/,
5871  -34 /*toYearTiny (2066)*/,
5872  1 /*inMonth*/,
5873  0 /*onDayOfWeek*/,
5874  3 /*onDayOfMonth*/,
5875  8 /*atTimeCode*/,
5876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5877  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5878  0 /*letterIndex ("")*/,
5879  },
5880  // Rule Morocco 2066 only - Nov 14 3:00 -1:00 -
5881  {
5882  -34 /*fromYearTiny (2066)*/,
5883  -34 /*toYearTiny (2066)*/,
5884  11 /*inMonth*/,
5885  0 /*onDayOfWeek*/,
5886  14 /*onDayOfMonth*/,
5887  12 /*atTimeCode*/,
5888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5889  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5890  0 /*letterIndex ("")*/,
5891  },
5892  // Rule Morocco 2066 only - Dec 26 2:00 0 -
5893  {
5894  -34 /*fromYearTiny (2066)*/,
5895  -34 /*toYearTiny (2066)*/,
5896  12 /*inMonth*/,
5897  0 /*onDayOfWeek*/,
5898  26 /*onDayOfMonth*/,
5899  8 /*atTimeCode*/,
5900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5902  0 /*letterIndex ("")*/,
5903  },
5904  // Rule Morocco 2067 only - Nov 6 3:00 -1:00 -
5905  {
5906  -33 /*fromYearTiny (2067)*/,
5907  -33 /*toYearTiny (2067)*/,
5908  11 /*inMonth*/,
5909  0 /*onDayOfWeek*/,
5910  6 /*onDayOfMonth*/,
5911  12 /*atTimeCode*/,
5912  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5913  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5914  0 /*letterIndex ("")*/,
5915  },
5916  // Rule Morocco 2067 only - Dec 11 2:00 0 -
5917  {
5918  -33 /*fromYearTiny (2067)*/,
5919  -33 /*toYearTiny (2067)*/,
5920  12 /*inMonth*/,
5921  0 /*onDayOfWeek*/,
5922  11 /*onDayOfMonth*/,
5923  8 /*atTimeCode*/,
5924  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5925  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5926  0 /*letterIndex ("")*/,
5927  },
5928  // Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
5929  {
5930  -32 /*fromYearTiny (2068)*/,
5931  -32 /*toYearTiny (2068)*/,
5932  10 /*inMonth*/,
5933  0 /*onDayOfWeek*/,
5934  21 /*onDayOfMonth*/,
5935  12 /*atTimeCode*/,
5936  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5937  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5938  0 /*letterIndex ("")*/,
5939  },
5940  // Rule Morocco 2068 only - Dec 2 2:00 0 -
5941  {
5942  -32 /*fromYearTiny (2068)*/,
5943  -32 /*toYearTiny (2068)*/,
5944  12 /*inMonth*/,
5945  0 /*onDayOfWeek*/,
5946  2 /*onDayOfMonth*/,
5947  8 /*atTimeCode*/,
5948  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5949  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5950  0 /*letterIndex ("")*/,
5951  },
5952  // Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
5953  {
5954  -31 /*fromYearTiny (2069)*/,
5955  -31 /*toYearTiny (2069)*/,
5956  10 /*inMonth*/,
5957  0 /*onDayOfWeek*/,
5958  13 /*onDayOfMonth*/,
5959  12 /*atTimeCode*/,
5960  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5961  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5962  0 /*letterIndex ("")*/,
5963  },
5964  // Rule Morocco 2069 only - Nov 17 2:00 0 -
5965  {
5966  -31 /*fromYearTiny (2069)*/,
5967  -31 /*toYearTiny (2069)*/,
5968  11 /*inMonth*/,
5969  0 /*onDayOfWeek*/,
5970  17 /*onDayOfMonth*/,
5971  8 /*atTimeCode*/,
5972  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5973  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5974  0 /*letterIndex ("")*/,
5975  },
5976  // Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
5977  {
5978  -30 /*fromYearTiny (2070)*/,
5979  -30 /*toYearTiny (2070)*/,
5980  10 /*inMonth*/,
5981  0 /*onDayOfWeek*/,
5982  5 /*onDayOfMonth*/,
5983  12 /*atTimeCode*/,
5984  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5985  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5986  0 /*letterIndex ("")*/,
5987  },
5988  // Rule Morocco 2070 only - Nov 9 2:00 0 -
5989  {
5990  -30 /*fromYearTiny (2070)*/,
5991  -30 /*toYearTiny (2070)*/,
5992  11 /*inMonth*/,
5993  0 /*onDayOfWeek*/,
5994  9 /*onDayOfMonth*/,
5995  8 /*atTimeCode*/,
5996  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5997  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5998  0 /*letterIndex ("")*/,
5999  },
6000  // Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
6001  {
6002  -29 /*fromYearTiny (2071)*/,
6003  -29 /*toYearTiny (2071)*/,
6004  9 /*inMonth*/,
6005  0 /*onDayOfWeek*/,
6006  20 /*onDayOfMonth*/,
6007  12 /*atTimeCode*/,
6008  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6009  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6010  0 /*letterIndex ("")*/,
6011  },
6012  // Rule Morocco 2071 only - Nov 1 2:00 0 -
6013  {
6014  -29 /*fromYearTiny (2071)*/,
6015  -29 /*toYearTiny (2071)*/,
6016  11 /*inMonth*/,
6017  0 /*onDayOfWeek*/,
6018  1 /*onDayOfMonth*/,
6019  8 /*atTimeCode*/,
6020  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6021  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6022  0 /*letterIndex ("")*/,
6023  },
6024  // Rule Morocco 2072 only - Sep 11 3:00 -1:00 -
6025  {
6026  -28 /*fromYearTiny (2072)*/,
6027  -28 /*toYearTiny (2072)*/,
6028  9 /*inMonth*/,
6029  0 /*onDayOfWeek*/,
6030  11 /*onDayOfMonth*/,
6031  12 /*atTimeCode*/,
6032  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6033  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6034  0 /*letterIndex ("")*/,
6035  },
6036  // Rule Morocco 2072 only - Oct 16 2:00 0 -
6037  {
6038  -28 /*fromYearTiny (2072)*/,
6039  -28 /*toYearTiny (2072)*/,
6040  10 /*inMonth*/,
6041  0 /*onDayOfWeek*/,
6042  16 /*onDayOfMonth*/,
6043  8 /*atTimeCode*/,
6044  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6045  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6046  0 /*letterIndex ("")*/,
6047  },
6048  // Rule Morocco 2073 only - Aug 27 3:00 -1:00 -
6049  {
6050  -27 /*fromYearTiny (2073)*/,
6051  -27 /*toYearTiny (2073)*/,
6052  8 /*inMonth*/,
6053  0 /*onDayOfWeek*/,
6054  27 /*onDayOfMonth*/,
6055  12 /*atTimeCode*/,
6056  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6057  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6058  0 /*letterIndex ("")*/,
6059  },
6060  // Rule Morocco 2073 only - Oct 8 2:00 0 -
6061  {
6062  -27 /*fromYearTiny (2073)*/,
6063  -27 /*toYearTiny (2073)*/,
6064  10 /*inMonth*/,
6065  0 /*onDayOfWeek*/,
6066  8 /*onDayOfMonth*/,
6067  8 /*atTimeCode*/,
6068  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6069  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6070  0 /*letterIndex ("")*/,
6071  },
6072  // Rule Morocco 2074 only - Aug 19 3:00 -1:00 -
6073  {
6074  -26 /*fromYearTiny (2074)*/,
6075  -26 /*toYearTiny (2074)*/,
6076  8 /*inMonth*/,
6077  0 /*onDayOfWeek*/,
6078  19 /*onDayOfMonth*/,
6079  12 /*atTimeCode*/,
6080  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6081  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6082  0 /*letterIndex ("")*/,
6083  },
6084  // Rule Morocco 2074 only - Sep 30 2:00 0 -
6085  {
6086  -26 /*fromYearTiny (2074)*/,
6087  -26 /*toYearTiny (2074)*/,
6088  9 /*inMonth*/,
6089  0 /*onDayOfWeek*/,
6090  30 /*onDayOfMonth*/,
6091  8 /*atTimeCode*/,
6092  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6093  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6094  0 /*letterIndex ("")*/,
6095  },
6096  // Rule Morocco 2075 only - Aug 11 3:00 -1:00 -
6097  {
6098  -25 /*fromYearTiny (2075)*/,
6099  -25 /*toYearTiny (2075)*/,
6100  8 /*inMonth*/,
6101  0 /*onDayOfWeek*/,
6102  11 /*onDayOfMonth*/,
6103  12 /*atTimeCode*/,
6104  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6105  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6106  0 /*letterIndex ("")*/,
6107  },
6108  // Rule Morocco 2075 only - Sep 15 2:00 0 -
6109  {
6110  -25 /*fromYearTiny (2075)*/,
6111  -25 /*toYearTiny (2075)*/,
6112  9 /*inMonth*/,
6113  0 /*onDayOfWeek*/,
6114  15 /*onDayOfMonth*/,
6115  8 /*atTimeCode*/,
6116  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6117  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6118  0 /*letterIndex ("")*/,
6119  },
6120  // Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
6121  {
6122  -24 /*fromYearTiny (2076)*/,
6123  -24 /*toYearTiny (2076)*/,
6124  7 /*inMonth*/,
6125  0 /*onDayOfWeek*/,
6126  26 /*onDayOfMonth*/,
6127  12 /*atTimeCode*/,
6128  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6129  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6130  0 /*letterIndex ("")*/,
6131  },
6132  // Rule Morocco 2076 only - Sep 6 2:00 0 -
6133  {
6134  -24 /*fromYearTiny (2076)*/,
6135  -24 /*toYearTiny (2076)*/,
6136  9 /*inMonth*/,
6137  0 /*onDayOfWeek*/,
6138  6 /*onDayOfMonth*/,
6139  8 /*atTimeCode*/,
6140  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6141  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6142  0 /*letterIndex ("")*/,
6143  },
6144  // Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
6145  {
6146  -23 /*fromYearTiny (2077)*/,
6147  -23 /*toYearTiny (2077)*/,
6148  7 /*inMonth*/,
6149  0 /*onDayOfWeek*/,
6150  18 /*onDayOfMonth*/,
6151  12 /*atTimeCode*/,
6152  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6153  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6154  0 /*letterIndex ("")*/,
6155  },
6156  // Rule Morocco 2077 only - Aug 22 2:00 0 -
6157  {
6158  -23 /*fromYearTiny (2077)*/,
6159  -23 /*toYearTiny (2077)*/,
6160  8 /*inMonth*/,
6161  0 /*onDayOfWeek*/,
6162  22 /*onDayOfMonth*/,
6163  8 /*atTimeCode*/,
6164  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6165  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6166  0 /*letterIndex ("")*/,
6167  },
6168  // Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
6169  {
6170  -22 /*fromYearTiny (2078)*/,
6171  -22 /*toYearTiny (2078)*/,
6172  7 /*inMonth*/,
6173  0 /*onDayOfWeek*/,
6174  10 /*onDayOfMonth*/,
6175  12 /*atTimeCode*/,
6176  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6177  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6178  0 /*letterIndex ("")*/,
6179  },
6180  // Rule Morocco 2078 only - Aug 14 2:00 0 -
6181  {
6182  -22 /*fromYearTiny (2078)*/,
6183  -22 /*toYearTiny (2078)*/,
6184  8 /*inMonth*/,
6185  0 /*onDayOfWeek*/,
6186  14 /*onDayOfMonth*/,
6187  8 /*atTimeCode*/,
6188  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6189  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6190  0 /*letterIndex ("")*/,
6191  },
6192  // Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
6193  {
6194  -21 /*fromYearTiny (2079)*/,
6195  -21 /*toYearTiny (2079)*/,
6196  6 /*inMonth*/,
6197  0 /*onDayOfWeek*/,
6198  25 /*onDayOfMonth*/,
6199  12 /*atTimeCode*/,
6200  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6201  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6202  0 /*letterIndex ("")*/,
6203  },
6204  // Rule Morocco 2079 only - Aug 6 2:00 0 -
6205  {
6206  -21 /*fromYearTiny (2079)*/,
6207  -21 /*toYearTiny (2079)*/,
6208  8 /*inMonth*/,
6209  0 /*onDayOfWeek*/,
6210  6 /*onDayOfMonth*/,
6211  8 /*atTimeCode*/,
6212  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6213  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6214  0 /*letterIndex ("")*/,
6215  },
6216  // Rule Morocco 2080 only - Jun 16 3:00 -1:00 -
6217  {
6218  -20 /*fromYearTiny (2080)*/,
6219  -20 /*toYearTiny (2080)*/,
6220  6 /*inMonth*/,
6221  0 /*onDayOfWeek*/,
6222  16 /*onDayOfMonth*/,
6223  12 /*atTimeCode*/,
6224  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6225  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6226  0 /*letterIndex ("")*/,
6227  },
6228  // Rule Morocco 2080 only - Jul 21 2:00 0 -
6229  {
6230  -20 /*fromYearTiny (2080)*/,
6231  -20 /*toYearTiny (2080)*/,
6232  7 /*inMonth*/,
6233  0 /*onDayOfWeek*/,
6234  21 /*onDayOfMonth*/,
6235  8 /*atTimeCode*/,
6236  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6237  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6238  0 /*letterIndex ("")*/,
6239  },
6240  // Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
6241  {
6242  -19 /*fromYearTiny (2081)*/,
6243  -19 /*toYearTiny (2081)*/,
6244  6 /*inMonth*/,
6245  0 /*onDayOfWeek*/,
6246  1 /*onDayOfMonth*/,
6247  12 /*atTimeCode*/,
6248  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6249  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6250  0 /*letterIndex ("")*/,
6251  },
6252  // Rule Morocco 2081 only - Jul 13 2:00 0 -
6253  {
6254  -19 /*fromYearTiny (2081)*/,
6255  -19 /*toYearTiny (2081)*/,
6256  7 /*inMonth*/,
6257  0 /*onDayOfWeek*/,
6258  13 /*onDayOfMonth*/,
6259  8 /*atTimeCode*/,
6260  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6261  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6262  0 /*letterIndex ("")*/,
6263  },
6264  // Rule Morocco 2082 only - May 24 3:00 -1:00 -
6265  {
6266  -18 /*fromYearTiny (2082)*/,
6267  -18 /*toYearTiny (2082)*/,
6268  5 /*inMonth*/,
6269  0 /*onDayOfWeek*/,
6270  24 /*onDayOfMonth*/,
6271  12 /*atTimeCode*/,
6272  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6273  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6274  0 /*letterIndex ("")*/,
6275  },
6276  // Rule Morocco 2082 only - Jun 28 2:00 0 -
6277  {
6278  -18 /*fromYearTiny (2082)*/,
6279  -18 /*toYearTiny (2082)*/,
6280  6 /*inMonth*/,
6281  0 /*onDayOfWeek*/,
6282  28 /*onDayOfMonth*/,
6283  8 /*atTimeCode*/,
6284  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6285  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6286  0 /*letterIndex ("")*/,
6287  },
6288  // Rule Morocco 2083 only - May 16 3:00 -1:00 -
6289  {
6290  -17 /*fromYearTiny (2083)*/,
6291  -17 /*toYearTiny (2083)*/,
6292  5 /*inMonth*/,
6293  0 /*onDayOfWeek*/,
6294  16 /*onDayOfMonth*/,
6295  12 /*atTimeCode*/,
6296  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6297  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6298  0 /*letterIndex ("")*/,
6299  },
6300  // Rule Morocco 2083 only - Jun 20 2:00 0 -
6301  {
6302  -17 /*fromYearTiny (2083)*/,
6303  -17 /*toYearTiny (2083)*/,
6304  6 /*inMonth*/,
6305  0 /*onDayOfWeek*/,
6306  20 /*onDayOfMonth*/,
6307  8 /*atTimeCode*/,
6308  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6309  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6310  0 /*letterIndex ("")*/,
6311  },
6312  // Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
6313  {
6314  -16 /*fromYearTiny (2084)*/,
6315  -16 /*toYearTiny (2084)*/,
6316  4 /*inMonth*/,
6317  0 /*onDayOfWeek*/,
6318  30 /*onDayOfMonth*/,
6319  12 /*atTimeCode*/,
6320  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6321  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6322  0 /*letterIndex ("")*/,
6323  },
6324  // Rule Morocco 2084 only - Jun 11 2:00 0 -
6325  {
6326  -16 /*fromYearTiny (2084)*/,
6327  -16 /*toYearTiny (2084)*/,
6328  6 /*inMonth*/,
6329  0 /*onDayOfWeek*/,
6330  11 /*onDayOfMonth*/,
6331  8 /*atTimeCode*/,
6332  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6333  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6334  0 /*letterIndex ("")*/,
6335  },
6336  // Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
6337  {
6338  -15 /*fromYearTiny (2085)*/,
6339  -15 /*toYearTiny (2085)*/,
6340  4 /*inMonth*/,
6341  0 /*onDayOfWeek*/,
6342  22 /*onDayOfMonth*/,
6343  12 /*atTimeCode*/,
6344  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6345  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6346  0 /*letterIndex ("")*/,
6347  },
6348  // Rule Morocco 2085 only - May 27 2:00 0 -
6349  {
6350  -15 /*fromYearTiny (2085)*/,
6351  -15 /*toYearTiny (2085)*/,
6352  5 /*inMonth*/,
6353  0 /*onDayOfWeek*/,
6354  27 /*onDayOfMonth*/,
6355  8 /*atTimeCode*/,
6356  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6357  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6358  0 /*letterIndex ("")*/,
6359  },
6360  // Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
6361  {
6362  -14 /*fromYearTiny (2086)*/,
6363  -14 /*toYearTiny (2086)*/,
6364  4 /*inMonth*/,
6365  0 /*onDayOfWeek*/,
6366  14 /*onDayOfMonth*/,
6367  12 /*atTimeCode*/,
6368  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6369  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6370  0 /*letterIndex ("")*/,
6371  },
6372  // Rule Morocco 2086 only - May 19 2:00 0 -
6373  {
6374  -14 /*fromYearTiny (2086)*/,
6375  -14 /*toYearTiny (2086)*/,
6376  5 /*inMonth*/,
6377  0 /*onDayOfWeek*/,
6378  19 /*onDayOfMonth*/,
6379  8 /*atTimeCode*/,
6380  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6381  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6382  0 /*letterIndex ("")*/,
6383  },
6384  // Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
6385  {
6386  -13 /*fromYearTiny (2087)*/,
6387  -13 /*toYearTiny (2087)*/,
6388  3 /*inMonth*/,
6389  0 /*onDayOfWeek*/,
6390  30 /*onDayOfMonth*/,
6391  12 /*atTimeCode*/,
6392  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6393  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6394  0 /*letterIndex ("")*/,
6395  },
6396  // Rule Morocco 2087 only - May 11 2:00 0 -
6397  {
6398  -13 /*fromYearTiny (2087)*/,
6399  -13 /*toYearTiny (2087)*/,
6400  5 /*inMonth*/,
6401  0 /*onDayOfWeek*/,
6402  11 /*onDayOfMonth*/,
6403  8 /*atTimeCode*/,
6404  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6405  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6406  0 /*letterIndex ("")*/,
6407  },
6408 
6409 };
6410 
6411 const extended::ZonePolicy kZonePolicyMorocco ACE_TIME_PROGMEM = {
6412  kZoneRulesMorocco /*rules*/,
6413  170 /*numRules*/,
6414 };
6415 
6416 //---------------------------------------------------------------------------
6417 // Policy name: NC
6418 // Rules: 1
6419 //---------------------------------------------------------------------------
6420 
6421 static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
6422  // Anchor: Rule NC 1997 only - Mar 2 2:00s 0 -
6423  {
6424  -127 /*fromYearTiny (-32767)*/,
6425  -127 /*toYearTiny (-32767)*/,
6426  1 /*inMonth*/,
6427  0 /*onDayOfWeek*/,
6428  1 /*onDayOfMonth*/,
6429  0 /*atTimeCode*/,
6430  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6431  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6432  0 /*letterIndex ("")*/,
6433  },
6434 
6435 };
6436 
6437 const extended::ZonePolicy kZonePolicyNC ACE_TIME_PROGMEM = {
6438  kZoneRulesNC /*rules*/,
6439  1 /*numRules*/,
6440 };
6441 
6442 //---------------------------------------------------------------------------
6443 // Policy name: NT_YK
6444 // Rules: 4
6445 //---------------------------------------------------------------------------
6446 
6447 static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = {
6448  // Anchor: Rule NT_YK 1972 2006 - Oct lastSun 2:00 0 S
6449  {
6450  -127 /*fromYearTiny (-32767)*/,
6451  -127 /*toYearTiny (-32767)*/,
6452  1 /*inMonth*/,
6453  0 /*onDayOfWeek*/,
6454  1 /*onDayOfMonth*/,
6455  0 /*atTimeCode*/,
6456  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6457  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6458  7 /*letterIndex ("S")*/,
6459  },
6460  // Rule NT_YK 1972 1986 - Apr lastSun 2:00 1:00 D
6461  {
6462  -127 /*fromYearTiny (1972)*/,
6463  -114 /*toYearTiny (1986)*/,
6464  4 /*inMonth*/,
6465  7 /*onDayOfWeek*/,
6466  0 /*onDayOfMonth*/,
6467  8 /*atTimeCode*/,
6468  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6469  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6470  5 /*letterIndex ("D")*/,
6471  },
6472  // Rule NT_YK 1972 2006 - Oct lastSun 2:00 0 S
6473  {
6474  -127 /*fromYearTiny (1972)*/,
6475  -94 /*toYearTiny (2006)*/,
6476  10 /*inMonth*/,
6477  7 /*onDayOfWeek*/,
6478  0 /*onDayOfMonth*/,
6479  8 /*atTimeCode*/,
6480  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6481  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6482  7 /*letterIndex ("S")*/,
6483  },
6484  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
6485  {
6486  -113 /*fromYearTiny (1987)*/,
6487  -94 /*toYearTiny (2006)*/,
6488  4 /*inMonth*/,
6489  7 /*onDayOfWeek*/,
6490  1 /*onDayOfMonth*/,
6491  8 /*atTimeCode*/,
6492  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6493  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6494  5 /*letterIndex ("D")*/,
6495  },
6496 
6497 };
6498 
6499 const extended::ZonePolicy kZonePolicyNT_YK ACE_TIME_PROGMEM = {
6500  kZoneRulesNT_YK /*rules*/,
6501  4 /*numRules*/,
6502 };
6503 
6504 //---------------------------------------------------------------------------
6505 // Policy name: NZ
6506 // Rules: 6
6507 //---------------------------------------------------------------------------
6508 
6509 static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
6510  // Anchor: Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
6511  {
6512  -127 /*fromYearTiny (-32767)*/,
6513  -127 /*toYearTiny (-32767)*/,
6514  1 /*inMonth*/,
6515  0 /*onDayOfWeek*/,
6516  1 /*onDayOfMonth*/,
6517  0 /*atTimeCode*/,
6518  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6519  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6520  7 /*letterIndex ("S")*/,
6521  },
6522  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
6523  {
6524  -111 /*fromYearTiny (1989)*/,
6525  -111 /*toYearTiny (1989)*/,
6526  10 /*inMonth*/,
6527  7 /*onDayOfWeek*/,
6528  8 /*onDayOfMonth*/,
6529  8 /*atTimeCode*/,
6530  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6531  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6532  5 /*letterIndex ("D")*/,
6533  },
6534  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
6535  {
6536  -110 /*fromYearTiny (1990)*/,
6537  -94 /*toYearTiny (2006)*/,
6538  10 /*inMonth*/,
6539  7 /*onDayOfWeek*/,
6540  1 /*onDayOfMonth*/,
6541  8 /*atTimeCode*/,
6542  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6543  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6544  5 /*letterIndex ("D")*/,
6545  },
6546  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
6547  {
6548  -110 /*fromYearTiny (1990)*/,
6549  -93 /*toYearTiny (2007)*/,
6550  3 /*inMonth*/,
6551  7 /*onDayOfWeek*/,
6552  15 /*onDayOfMonth*/,
6553  8 /*atTimeCode*/,
6554  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6555  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6556  7 /*letterIndex ("S")*/,
6557  },
6558  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
6559  {
6560  -93 /*fromYearTiny (2007)*/,
6561  126 /*toYearTiny (32766)*/,
6562  9 /*inMonth*/,
6563  7 /*onDayOfWeek*/,
6564  0 /*onDayOfMonth*/,
6565  8 /*atTimeCode*/,
6566  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6567  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6568  5 /*letterIndex ("D")*/,
6569  },
6570  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
6571  {
6572  -92 /*fromYearTiny (2008)*/,
6573  126 /*toYearTiny (32766)*/,
6574  4 /*inMonth*/,
6575  7 /*onDayOfWeek*/,
6576  1 /*onDayOfMonth*/,
6577  8 /*atTimeCode*/,
6578  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6579  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6580  7 /*letterIndex ("S")*/,
6581  },
6582 
6583 };
6584 
6585 const extended::ZonePolicy kZonePolicyNZ ACE_TIME_PROGMEM = {
6586  kZoneRulesNZ /*rules*/,
6587  6 /*numRules*/,
6588 };
6589 
6590 //---------------------------------------------------------------------------
6591 // Policy name: Namibia
6592 // Rules: 4
6593 //---------------------------------------------------------------------------
6594 
6595 static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
6596  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
6597  {
6598  -127 /*fromYearTiny (-32767)*/,
6599  -127 /*toYearTiny (-32767)*/,
6600  1 /*inMonth*/,
6601  0 /*onDayOfWeek*/,
6602  1 /*onDayOfMonth*/,
6603  0 /*atTimeCode*/,
6604  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6605  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6606  3 /*letterIndex ("CAT")*/,
6607  },
6608  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
6609  {
6610  -106 /*fromYearTiny (1994)*/,
6611  -106 /*toYearTiny (1994)*/,
6612  3 /*inMonth*/,
6613  0 /*onDayOfWeek*/,
6614  21 /*onDayOfMonth*/,
6615  0 /*atTimeCode*/,
6616  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6617  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6618  8 /*letterIndex ("WAT")*/,
6619  },
6620  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
6621  {
6622  -106 /*fromYearTiny (1994)*/,
6623  -83 /*toYearTiny (2017)*/,
6624  9 /*inMonth*/,
6625  7 /*onDayOfWeek*/,
6626  1 /*onDayOfMonth*/,
6627  8 /*atTimeCode*/,
6628  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6629  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6630  3 /*letterIndex ("CAT")*/,
6631  },
6632  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
6633  {
6634  -105 /*fromYearTiny (1995)*/,
6635  -83 /*toYearTiny (2017)*/,
6636  4 /*inMonth*/,
6637  7 /*onDayOfWeek*/,
6638  1 /*onDayOfMonth*/,
6639  8 /*atTimeCode*/,
6640  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6641  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6642  8 /*letterIndex ("WAT")*/,
6643  },
6644 
6645 };
6646 
6647 const extended::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
6648  kZoneRulesNamibia /*rules*/,
6649  4 /*numRules*/,
6650 };
6651 
6652 //---------------------------------------------------------------------------
6653 // Policy name: Nic
6654 // Rules: 6
6655 //---------------------------------------------------------------------------
6656 
6657 static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
6658  // Anchor: Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
6659  {
6660  -127 /*fromYearTiny (-32767)*/,
6661  -127 /*toYearTiny (-32767)*/,
6662  1 /*inMonth*/,
6663  0 /*onDayOfWeek*/,
6664  1 /*onDayOfMonth*/,
6665  0 /*atTimeCode*/,
6666  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6667  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6668  7 /*letterIndex ("S")*/,
6669  },
6670  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
6671  {
6672  -121 /*fromYearTiny (1979)*/,
6673  -120 /*toYearTiny (1980)*/,
6674  6 /*inMonth*/,
6675  1 /*onDayOfWeek*/,
6676  23 /*onDayOfMonth*/,
6677  0 /*atTimeCode*/,
6678  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6679  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6680  7 /*letterIndex ("S")*/,
6681  },
6682  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
6683  {
6684  -95 /*fromYearTiny (2005)*/,
6685  -95 /*toYearTiny (2005)*/,
6686  4 /*inMonth*/,
6687  0 /*onDayOfWeek*/,
6688  10 /*onDayOfMonth*/,
6689  0 /*atTimeCode*/,
6690  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6691  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6692  5 /*letterIndex ("D")*/,
6693  },
6694  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
6695  {
6696  -95 /*fromYearTiny (2005)*/,
6697  -95 /*toYearTiny (2005)*/,
6698  10 /*inMonth*/,
6699  7 /*onDayOfWeek*/,
6700  1 /*onDayOfMonth*/,
6701  0 /*atTimeCode*/,
6702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6703  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6704  7 /*letterIndex ("S")*/,
6705  },
6706  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
6707  {
6708  -94 /*fromYearTiny (2006)*/,
6709  -94 /*toYearTiny (2006)*/,
6710  4 /*inMonth*/,
6711  0 /*onDayOfWeek*/,
6712  30 /*onDayOfMonth*/,
6713  8 /*atTimeCode*/,
6714  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6715  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6716  5 /*letterIndex ("D")*/,
6717  },
6718  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
6719  {
6720  -94 /*fromYearTiny (2006)*/,
6721  -94 /*toYearTiny (2006)*/,
6722  10 /*inMonth*/,
6723  7 /*onDayOfWeek*/,
6724  1 /*onDayOfMonth*/,
6725  4 /*atTimeCode*/,
6726  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6727  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6728  7 /*letterIndex ("S")*/,
6729  },
6730 
6731 };
6732 
6733 const extended::ZonePolicy kZonePolicyNic ACE_TIME_PROGMEM = {
6734  kZoneRulesNic /*rules*/,
6735  6 /*numRules*/,
6736 };
6737 
6738 //---------------------------------------------------------------------------
6739 // Policy name: PRC
6740 // Rules: 1
6741 //---------------------------------------------------------------------------
6742 
6743 static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
6744  // Anchor: Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
6745  {
6746  -127 /*fromYearTiny (-32767)*/,
6747  -127 /*toYearTiny (-32767)*/,
6748  1 /*inMonth*/,
6749  0 /*onDayOfWeek*/,
6750  1 /*onDayOfMonth*/,
6751  0 /*atTimeCode*/,
6752  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6753  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6754  7 /*letterIndex ("S")*/,
6755  },
6756 
6757 };
6758 
6759 const extended::ZonePolicy kZonePolicyPRC ACE_TIME_PROGMEM = {
6760  kZoneRulesPRC /*rules*/,
6761  1 /*numRules*/,
6762 };
6763 
6764 //---------------------------------------------------------------------------
6765 // Policy name: Pakistan
6766 // Rules: 6
6767 //---------------------------------------------------------------------------
6768 
6769 static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
6770  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
6771  {
6772  -127 /*fromYearTiny (-32767)*/,
6773  -127 /*toYearTiny (-32767)*/,
6774  1 /*inMonth*/,
6775  0 /*onDayOfWeek*/,
6776  1 /*onDayOfMonth*/,
6777  0 /*atTimeCode*/,
6778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6779  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6780  0 /*letterIndex ("")*/,
6781  },
6782  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
6783  {
6784  -98 /*fromYearTiny (2002)*/,
6785  -98 /*toYearTiny (2002)*/,
6786  4 /*inMonth*/,
6787  7 /*onDayOfWeek*/,
6788  2 /*onDayOfMonth*/,
6789  0 /*atTimeCode*/,
6790  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6791  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6792  7 /*letterIndex ("S")*/,
6793  },
6794  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
6795  {
6796  -98 /*fromYearTiny (2002)*/,
6797  -98 /*toYearTiny (2002)*/,
6798  10 /*inMonth*/,
6799  7 /*onDayOfWeek*/,
6800  2 /*onDayOfMonth*/,
6801  0 /*atTimeCode*/,
6802  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6803  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6804  0 /*letterIndex ("")*/,
6805  },
6806  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
6807  {
6808  -92 /*fromYearTiny (2008)*/,
6809  -92 /*toYearTiny (2008)*/,
6810  6 /*inMonth*/,
6811  0 /*onDayOfWeek*/,
6812  1 /*onDayOfMonth*/,
6813  0 /*atTimeCode*/,
6814  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6815  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6816  7 /*letterIndex ("S")*/,
6817  },
6818  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
6819  {
6820  -92 /*fromYearTiny (2008)*/,
6821  -91 /*toYearTiny (2009)*/,
6822  11 /*inMonth*/,
6823  0 /*onDayOfWeek*/,
6824  1 /*onDayOfMonth*/,
6825  0 /*atTimeCode*/,
6826  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6827  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6828  0 /*letterIndex ("")*/,
6829  },
6830  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
6831  {
6832  -91 /*fromYearTiny (2009)*/,
6833  -91 /*toYearTiny (2009)*/,
6834  4 /*inMonth*/,
6835  0 /*onDayOfWeek*/,
6836  15 /*onDayOfMonth*/,
6837  0 /*atTimeCode*/,
6838  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6839  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6840  7 /*letterIndex ("S")*/,
6841  },
6842 
6843 };
6844 
6845 const extended::ZonePolicy kZonePolicyPakistan ACE_TIME_PROGMEM = {
6846  kZoneRulesPakistan /*rules*/,
6847  6 /*numRules*/,
6848 };
6849 
6850 //---------------------------------------------------------------------------
6851 // Policy name: Palestine
6852 // Rules: 111
6853 //---------------------------------------------------------------------------
6854 
6855 static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = {
6856  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
6857  {
6858  -127 /*fromYearTiny (-32767)*/,
6859  -127 /*toYearTiny (-32767)*/,
6860  1 /*inMonth*/,
6861  0 /*onDayOfWeek*/,
6862  1 /*onDayOfMonth*/,
6863  0 /*atTimeCode*/,
6864  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6865  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6866  0 /*letterIndex ("")*/,
6867  },
6868  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
6869  {
6870  -101 /*fromYearTiny (1999)*/,
6871  -95 /*toYearTiny (2005)*/,
6872  4 /*inMonth*/,
6873  5 /*onDayOfWeek*/,
6874  15 /*onDayOfMonth*/,
6875  0 /*atTimeCode*/,
6876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6877  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6878  7 /*letterIndex ("S")*/,
6879  },
6880  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
6881  {
6882  -101 /*fromYearTiny (1999)*/,
6883  -97 /*toYearTiny (2003)*/,
6884  10 /*inMonth*/,
6885  5 /*onDayOfWeek*/,
6886  15 /*onDayOfMonth*/,
6887  0 /*atTimeCode*/,
6888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6889  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6890  0 /*letterIndex ("")*/,
6891  },
6892  // Rule Palestine 2004 only - Oct 1 1:00 0 -
6893  {
6894  -96 /*fromYearTiny (2004)*/,
6895  -96 /*toYearTiny (2004)*/,
6896  10 /*inMonth*/,
6897  0 /*onDayOfWeek*/,
6898  1 /*onDayOfMonth*/,
6899  4 /*atTimeCode*/,
6900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6902  0 /*letterIndex ("")*/,
6903  },
6904  // Rule Palestine 2005 only - Oct 4 2:00 0 -
6905  {
6906  -95 /*fromYearTiny (2005)*/,
6907  -95 /*toYearTiny (2005)*/,
6908  10 /*inMonth*/,
6909  0 /*onDayOfWeek*/,
6910  4 /*onDayOfMonth*/,
6911  8 /*atTimeCode*/,
6912  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6913  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6914  0 /*letterIndex ("")*/,
6915  },
6916  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
6917  {
6918  -94 /*fromYearTiny (2006)*/,
6919  -93 /*toYearTiny (2007)*/,
6920  4 /*inMonth*/,
6921  0 /*onDayOfWeek*/,
6922  1 /*onDayOfMonth*/,
6923  0 /*atTimeCode*/,
6924  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6925  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6926  7 /*letterIndex ("S")*/,
6927  },
6928  // Rule Palestine 2006 only - Sep 22 0:00 0 -
6929  {
6930  -94 /*fromYearTiny (2006)*/,
6931  -94 /*toYearTiny (2006)*/,
6932  9 /*inMonth*/,
6933  0 /*onDayOfWeek*/,
6934  22 /*onDayOfMonth*/,
6935  0 /*atTimeCode*/,
6936  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6937  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6938  0 /*letterIndex ("")*/,
6939  },
6940  // Rule Palestine 2007 only - Sep 13 2:00 0 -
6941  {
6942  -93 /*fromYearTiny (2007)*/,
6943  -93 /*toYearTiny (2007)*/,
6944  9 /*inMonth*/,
6945  0 /*onDayOfWeek*/,
6946  13 /*onDayOfMonth*/,
6947  8 /*atTimeCode*/,
6948  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6949  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6950  0 /*letterIndex ("")*/,
6951  },
6952  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
6953  {
6954  -92 /*fromYearTiny (2008)*/,
6955  -91 /*toYearTiny (2009)*/,
6956  3 /*inMonth*/,
6957  5 /*onDayOfWeek*/,
6958  0 /*onDayOfMonth*/,
6959  0 /*atTimeCode*/,
6960  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6961  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6962  7 /*letterIndex ("S")*/,
6963  },
6964  // Rule Palestine 2008 only - Sep 1 0:00 0 -
6965  {
6966  -92 /*fromYearTiny (2008)*/,
6967  -92 /*toYearTiny (2008)*/,
6968  9 /*inMonth*/,
6969  0 /*onDayOfWeek*/,
6970  1 /*onDayOfMonth*/,
6971  0 /*atTimeCode*/,
6972  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6973  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6974  0 /*letterIndex ("")*/,
6975  },
6976  // Rule Palestine 2009 only - Sep 4 1:00 0 -
6977  {
6978  -91 /*fromYearTiny (2009)*/,
6979  -91 /*toYearTiny (2009)*/,
6980  9 /*inMonth*/,
6981  0 /*onDayOfWeek*/,
6982  4 /*onDayOfMonth*/,
6983  4 /*atTimeCode*/,
6984  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6985  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6986  0 /*letterIndex ("")*/,
6987  },
6988  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
6989  {
6990  -90 /*fromYearTiny (2010)*/,
6991  -90 /*toYearTiny (2010)*/,
6992  3 /*inMonth*/,
6993  0 /*onDayOfWeek*/,
6994  26 /*onDayOfMonth*/,
6995  0 /*atTimeCode*/,
6996  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6997  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6998  7 /*letterIndex ("S")*/,
6999  },
7000  // Rule Palestine 2010 only - Aug 11 0:00 0 -
7001  {
7002  -90 /*fromYearTiny (2010)*/,
7003  -90 /*toYearTiny (2010)*/,
7004  8 /*inMonth*/,
7005  0 /*onDayOfWeek*/,
7006  11 /*onDayOfMonth*/,
7007  0 /*atTimeCode*/,
7008  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7009  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7010  0 /*letterIndex ("")*/,
7011  },
7012  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
7013  {
7014  -89 /*fromYearTiny (2011)*/,
7015  -89 /*toYearTiny (2011)*/,
7016  4 /*inMonth*/,
7017  0 /*onDayOfWeek*/,
7018  1 /*onDayOfMonth*/,
7019  0 /*atTimeCode*/,
7020  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7021  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7022  7 /*letterIndex ("S")*/,
7023  },
7024  // Rule Palestine 2011 only - Aug 1 0:00 0 -
7025  {
7026  -89 /*fromYearTiny (2011)*/,
7027  -89 /*toYearTiny (2011)*/,
7028  8 /*inMonth*/,
7029  0 /*onDayOfWeek*/,
7030  1 /*onDayOfMonth*/,
7031  0 /*atTimeCode*/,
7032  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7033  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7034  0 /*letterIndex ("")*/,
7035  },
7036  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
7037  {
7038  -89 /*fromYearTiny (2011)*/,
7039  -89 /*toYearTiny (2011)*/,
7040  8 /*inMonth*/,
7041  0 /*onDayOfWeek*/,
7042  30 /*onDayOfMonth*/,
7043  0 /*atTimeCode*/,
7044  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7045  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7046  7 /*letterIndex ("S")*/,
7047  },
7048  // Rule Palestine 2011 only - Sep 30 0:00 0 -
7049  {
7050  -89 /*fromYearTiny (2011)*/,
7051  -89 /*toYearTiny (2011)*/,
7052  9 /*inMonth*/,
7053  0 /*onDayOfWeek*/,
7054  30 /*onDayOfMonth*/,
7055  0 /*atTimeCode*/,
7056  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7057  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7058  0 /*letterIndex ("")*/,
7059  },
7060  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
7061  {
7062  -88 /*fromYearTiny (2012)*/,
7063  -86 /*toYearTiny (2014)*/,
7064  3 /*inMonth*/,
7065  4 /*onDayOfWeek*/,
7066  0 /*onDayOfMonth*/,
7067  96 /*atTimeCode*/,
7068  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7069  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7070  7 /*letterIndex ("S")*/,
7071  },
7072  // Rule Palestine 2012 only - Sep 21 1:00 0 -
7073  {
7074  -88 /*fromYearTiny (2012)*/,
7075  -88 /*toYearTiny (2012)*/,
7076  9 /*inMonth*/,
7077  0 /*onDayOfWeek*/,
7078  21 /*onDayOfMonth*/,
7079  4 /*atTimeCode*/,
7080  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7081  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7082  0 /*letterIndex ("")*/,
7083  },
7084  // Rule Palestine 2013 only - Sep 27 0:00 0 -
7085  {
7086  -87 /*fromYearTiny (2013)*/,
7087  -87 /*toYearTiny (2013)*/,
7088  9 /*inMonth*/,
7089  0 /*onDayOfWeek*/,
7090  27 /*onDayOfMonth*/,
7091  0 /*atTimeCode*/,
7092  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7093  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7094  0 /*letterIndex ("")*/,
7095  },
7096  // Rule Palestine 2014 only - Oct 24 0:00 0 -
7097  {
7098  -86 /*fromYearTiny (2014)*/,
7099  -86 /*toYearTiny (2014)*/,
7100  10 /*inMonth*/,
7101  0 /*onDayOfWeek*/,
7102  24 /*onDayOfMonth*/,
7103  0 /*atTimeCode*/,
7104  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7105  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7106  0 /*letterIndex ("")*/,
7107  },
7108  // Rule Palestine 2015 only - Mar 28 0:00 1:00 S
7109  {
7110  -85 /*fromYearTiny (2015)*/,
7111  -85 /*toYearTiny (2015)*/,
7112  3 /*inMonth*/,
7113  0 /*onDayOfWeek*/,
7114  28 /*onDayOfMonth*/,
7115  0 /*atTimeCode*/,
7116  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7117  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7118  7 /*letterIndex ("S")*/,
7119  },
7120  // Rule Palestine 2015 only - Oct 23 1:00 0 -
7121  {
7122  -85 /*fromYearTiny (2015)*/,
7123  -85 /*toYearTiny (2015)*/,
7124  10 /*inMonth*/,
7125  0 /*onDayOfWeek*/,
7126  23 /*onDayOfMonth*/,
7127  4 /*atTimeCode*/,
7128  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7129  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7130  0 /*letterIndex ("")*/,
7131  },
7132  // Rule Palestine 2016 2018 - Mar Sat<=30 1:00 1:00 S
7133  {
7134  -84 /*fromYearTiny (2016)*/,
7135  -82 /*toYearTiny (2018)*/,
7136  3 /*inMonth*/,
7137  6 /*onDayOfWeek*/,
7138  -30 /*onDayOfMonth*/,
7139  4 /*atTimeCode*/,
7140  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7141  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7142  7 /*letterIndex ("S")*/,
7143  },
7144  // Rule Palestine 2016 2018 - Oct Sat<=30 1:00 0 -
7145  {
7146  -84 /*fromYearTiny (2016)*/,
7147  -82 /*toYearTiny (2018)*/,
7148  10 /*inMonth*/,
7149  6 /*onDayOfWeek*/,
7150  -30 /*onDayOfMonth*/,
7151  4 /*atTimeCode*/,
7152  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7153  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7154  0 /*letterIndex ("")*/,
7155  },
7156  // Rule Palestine 2019 only - Mar 29 0:00 1:00 S
7157  {
7158  -81 /*fromYearTiny (2019)*/,
7159  -81 /*toYearTiny (2019)*/,
7160  3 /*inMonth*/,
7161  0 /*onDayOfWeek*/,
7162  29 /*onDayOfMonth*/,
7163  0 /*atTimeCode*/,
7164  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7165  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7166  7 /*letterIndex ("S")*/,
7167  },
7168  // Rule Palestine 2019 only - Oct Sat<=30 0:00 0 -
7169  {
7170  -81 /*fromYearTiny (2019)*/,
7171  -81 /*toYearTiny (2019)*/,
7172  10 /*inMonth*/,
7173  6 /*onDayOfWeek*/,
7174  -30 /*onDayOfMonth*/,
7175  0 /*atTimeCode*/,
7176  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7177  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7178  0 /*letterIndex ("")*/,
7179  },
7180  // Rule Palestine 2020 2021 - Mar Sat<=30 0:00 1:00 S
7181  {
7182  -80 /*fromYearTiny (2020)*/,
7183  -79 /*toYearTiny (2021)*/,
7184  3 /*inMonth*/,
7185  6 /*onDayOfWeek*/,
7186  -30 /*onDayOfMonth*/,
7187  0 /*atTimeCode*/,
7188  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7189  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7190  7 /*letterIndex ("S")*/,
7191  },
7192  // Rule Palestine 2020 only - Oct 24 1:00 0 -
7193  {
7194  -80 /*fromYearTiny (2020)*/,
7195  -80 /*toYearTiny (2020)*/,
7196  10 /*inMonth*/,
7197  0 /*onDayOfWeek*/,
7198  24 /*onDayOfMonth*/,
7199  4 /*atTimeCode*/,
7200  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7201  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7202  0 /*letterIndex ("")*/,
7203  },
7204  // Rule Palestine 2021 only - Oct 29 1:00 0 -
7205  {
7206  -79 /*fromYearTiny (2021)*/,
7207  -79 /*toYearTiny (2021)*/,
7208  10 /*inMonth*/,
7209  0 /*onDayOfWeek*/,
7210  29 /*onDayOfMonth*/,
7211  4 /*atTimeCode*/,
7212  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7213  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7214  0 /*letterIndex ("")*/,
7215  },
7216  // Rule Palestine 2022 only - Mar 27 0:00 1:00 S
7217  {
7218  -78 /*fromYearTiny (2022)*/,
7219  -78 /*toYearTiny (2022)*/,
7220  3 /*inMonth*/,
7221  0 /*onDayOfWeek*/,
7222  27 /*onDayOfMonth*/,
7223  0 /*atTimeCode*/,
7224  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7225  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7226  7 /*letterIndex ("S")*/,
7227  },
7228  // Rule Palestine 2022 2035 - Oct Sat<=30 2:00 0 -
7229  {
7230  -78 /*fromYearTiny (2022)*/,
7231  -65 /*toYearTiny (2035)*/,
7232  10 /*inMonth*/,
7233  6 /*onDayOfWeek*/,
7234  -30 /*onDayOfMonth*/,
7235  8 /*atTimeCode*/,
7236  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7237  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7238  0 /*letterIndex ("")*/,
7239  },
7240  // Rule Palestine 2023 only - Apr 29 2:00 1:00 S
7241  {
7242  -77 /*fromYearTiny (2023)*/,
7243  -77 /*toYearTiny (2023)*/,
7244  4 /*inMonth*/,
7245  0 /*onDayOfWeek*/,
7246  29 /*onDayOfMonth*/,
7247  8 /*atTimeCode*/,
7248  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7249  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7250  7 /*letterIndex ("S")*/,
7251  },
7252  // Rule Palestine 2024 only - Apr 20 2:00 1:00 S
7253  {
7254  -76 /*fromYearTiny (2024)*/,
7255  -76 /*toYearTiny (2024)*/,
7256  4 /*inMonth*/,
7257  0 /*onDayOfWeek*/,
7258  20 /*onDayOfMonth*/,
7259  8 /*atTimeCode*/,
7260  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7261  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7262  7 /*letterIndex ("S")*/,
7263  },
7264  // Rule Palestine 2025 only - Apr 12 2:00 1:00 S
7265  {
7266  -75 /*fromYearTiny (2025)*/,
7267  -75 /*toYearTiny (2025)*/,
7268  4 /*inMonth*/,
7269  0 /*onDayOfWeek*/,
7270  12 /*onDayOfMonth*/,
7271  8 /*atTimeCode*/,
7272  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7273  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7274  7 /*letterIndex ("S")*/,
7275  },
7276  // Rule Palestine 2026 2054 - Mar Sat<=30 2:00 1:00 S
7277  {
7278  -74 /*fromYearTiny (2026)*/,
7279  -46 /*toYearTiny (2054)*/,
7280  3 /*inMonth*/,
7281  6 /*onDayOfWeek*/,
7282  -30 /*onDayOfMonth*/,
7283  8 /*atTimeCode*/,
7284  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7285  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7286  7 /*letterIndex ("S")*/,
7287  },
7288  // Rule Palestine 2036 only - Oct 18 2:00 0 -
7289  {
7290  -64 /*fromYearTiny (2036)*/,
7291  -64 /*toYearTiny (2036)*/,
7292  10 /*inMonth*/,
7293  0 /*onDayOfWeek*/,
7294  18 /*onDayOfMonth*/,
7295  8 /*atTimeCode*/,
7296  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7297  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7298  0 /*letterIndex ("")*/,
7299  },
7300  // Rule Palestine 2037 only - Oct 10 2:00 0 -
7301  {
7302  -63 /*fromYearTiny (2037)*/,
7303  -63 /*toYearTiny (2037)*/,
7304  10 /*inMonth*/,
7305  0 /*onDayOfWeek*/,
7306  10 /*onDayOfMonth*/,
7307  8 /*atTimeCode*/,
7308  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7309  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7310  0 /*letterIndex ("")*/,
7311  },
7312  // Rule Palestine 2038 only - Sep 25 2:00 0 -
7313  {
7314  -62 /*fromYearTiny (2038)*/,
7315  -62 /*toYearTiny (2038)*/,
7316  9 /*inMonth*/,
7317  0 /*onDayOfWeek*/,
7318  25 /*onDayOfMonth*/,
7319  8 /*atTimeCode*/,
7320  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7321  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7322  0 /*letterIndex ("")*/,
7323  },
7324  // Rule Palestine 2039 only - Sep 17 2:00 0 -
7325  {
7326  -61 /*fromYearTiny (2039)*/,
7327  -61 /*toYearTiny (2039)*/,
7328  9 /*inMonth*/,
7329  0 /*onDayOfWeek*/,
7330  17 /*onDayOfMonth*/,
7331  8 /*atTimeCode*/,
7332  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7333  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7334  0 /*letterIndex ("")*/,
7335  },
7336  // Rule Palestine 2040 only - Sep 1 2:00 0 -
7337  {
7338  -60 /*fromYearTiny (2040)*/,
7339  -60 /*toYearTiny (2040)*/,
7340  9 /*inMonth*/,
7341  0 /*onDayOfWeek*/,
7342  1 /*onDayOfMonth*/,
7343  8 /*atTimeCode*/,
7344  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7345  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7346  0 /*letterIndex ("")*/,
7347  },
7348  // Rule Palestine 2040 only - Oct 20 2:00 1:00 S
7349  {
7350  -60 /*fromYearTiny (2040)*/,
7351  -60 /*toYearTiny (2040)*/,
7352  10 /*inMonth*/,
7353  0 /*onDayOfWeek*/,
7354  20 /*onDayOfMonth*/,
7355  8 /*atTimeCode*/,
7356  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7357  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7358  7 /*letterIndex ("S")*/,
7359  },
7360  // Rule Palestine 2040 2067 - Oct Sat<=30 2:00 0 -
7361  {
7362  -60 /*fromYearTiny (2040)*/,
7363  -33 /*toYearTiny (2067)*/,
7364  10 /*inMonth*/,
7365  6 /*onDayOfWeek*/,
7366  -30 /*onDayOfMonth*/,
7367  8 /*atTimeCode*/,
7368  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7369  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7370  0 /*letterIndex ("")*/,
7371  },
7372  // Rule Palestine 2041 only - Aug 24 2:00 0 -
7373  {
7374  -59 /*fromYearTiny (2041)*/,
7375  -59 /*toYearTiny (2041)*/,
7376  8 /*inMonth*/,
7377  0 /*onDayOfWeek*/,
7378  24 /*onDayOfMonth*/,
7379  8 /*atTimeCode*/,
7380  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7381  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7382  0 /*letterIndex ("")*/,
7383  },
7384  // Rule Palestine 2041 only - Oct 5 2:00 1:00 S
7385  {
7386  -59 /*fromYearTiny (2041)*/,
7387  -59 /*toYearTiny (2041)*/,
7388  10 /*inMonth*/,
7389  0 /*onDayOfWeek*/,
7390  5 /*onDayOfMonth*/,
7391  8 /*atTimeCode*/,
7392  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7393  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7394  7 /*letterIndex ("S")*/,
7395  },
7396  // Rule Palestine 2042 only - Aug 16 2:00 0 -
7397  {
7398  -58 /*fromYearTiny (2042)*/,
7399  -58 /*toYearTiny (2042)*/,
7400  8 /*inMonth*/,
7401  0 /*onDayOfWeek*/,
7402  16 /*onDayOfMonth*/,
7403  8 /*atTimeCode*/,
7404  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7405  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7406  0 /*letterIndex ("")*/,
7407  },
7408  // Rule Palestine 2042 only - Sep 27 2:00 1:00 S
7409  {
7410  -58 /*fromYearTiny (2042)*/,
7411  -58 /*toYearTiny (2042)*/,
7412  9 /*inMonth*/,
7413  0 /*onDayOfWeek*/,
7414  27 /*onDayOfMonth*/,
7415  8 /*atTimeCode*/,
7416  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7417  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7418  7 /*letterIndex ("S")*/,
7419  },
7420  // Rule Palestine 2043 only - Aug 1 2:00 0 -
7421  {
7422  -57 /*fromYearTiny (2043)*/,
7423  -57 /*toYearTiny (2043)*/,
7424  8 /*inMonth*/,
7425  0 /*onDayOfWeek*/,
7426  1 /*onDayOfMonth*/,
7427  8 /*atTimeCode*/,
7428  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7429  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7430  0 /*letterIndex ("")*/,
7431  },
7432  // Rule Palestine 2043 only - Sep 19 2:00 1:00 S
7433  {
7434  -57 /*fromYearTiny (2043)*/,
7435  -57 /*toYearTiny (2043)*/,
7436  9 /*inMonth*/,
7437  0 /*onDayOfWeek*/,
7438  19 /*onDayOfMonth*/,
7439  8 /*atTimeCode*/,
7440  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7441  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7442  7 /*letterIndex ("S")*/,
7443  },
7444  // Rule Palestine 2044 only - Jul 23 2:00 0 -
7445  {
7446  -56 /*fromYearTiny (2044)*/,
7447  -56 /*toYearTiny (2044)*/,
7448  7 /*inMonth*/,
7449  0 /*onDayOfWeek*/,
7450  23 /*onDayOfMonth*/,
7451  8 /*atTimeCode*/,
7452  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7453  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7454  0 /*letterIndex ("")*/,
7455  },
7456  // Rule Palestine 2044 only - Sep 3 2:00 1:00 S
7457  {
7458  -56 /*fromYearTiny (2044)*/,
7459  -56 /*toYearTiny (2044)*/,
7460  9 /*inMonth*/,
7461  0 /*onDayOfWeek*/,
7462  3 /*onDayOfMonth*/,
7463  8 /*atTimeCode*/,
7464  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7465  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7466  7 /*letterIndex ("S")*/,
7467  },
7468  // Rule Palestine 2045 only - Jul 15 2:00 0 -
7469  {
7470  -55 /*fromYearTiny (2045)*/,
7471  -55 /*toYearTiny (2045)*/,
7472  7 /*inMonth*/,
7473  0 /*onDayOfWeek*/,
7474  15 /*onDayOfMonth*/,
7475  8 /*atTimeCode*/,
7476  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7477  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7478  0 /*letterIndex ("")*/,
7479  },
7480  // Rule Palestine 2045 only - Aug 26 2:00 1:00 S
7481  {
7482  -55 /*fromYearTiny (2045)*/,
7483  -55 /*toYearTiny (2045)*/,
7484  8 /*inMonth*/,
7485  0 /*onDayOfWeek*/,
7486  26 /*onDayOfMonth*/,
7487  8 /*atTimeCode*/,
7488  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7489  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7490  7 /*letterIndex ("S")*/,
7491  },
7492  // Rule Palestine 2046 only - Jun 30 2:00 0 -
7493  {
7494  -54 /*fromYearTiny (2046)*/,
7495  -54 /*toYearTiny (2046)*/,
7496  6 /*inMonth*/,
7497  0 /*onDayOfWeek*/,
7498  30 /*onDayOfMonth*/,
7499  8 /*atTimeCode*/,
7500  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7501  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7502  0 /*letterIndex ("")*/,
7503  },
7504  // Rule Palestine 2046 only - Aug 18 2:00 1:00 S
7505  {
7506  -54 /*fromYearTiny (2046)*/,
7507  -54 /*toYearTiny (2046)*/,
7508  8 /*inMonth*/,
7509  0 /*onDayOfWeek*/,
7510  18 /*onDayOfMonth*/,
7511  8 /*atTimeCode*/,
7512  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7513  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7514  7 /*letterIndex ("S")*/,
7515  },
7516  // Rule Palestine 2047 only - Jun 22 2:00 0 -
7517  {
7518  -53 /*fromYearTiny (2047)*/,
7519  -53 /*toYearTiny (2047)*/,
7520  6 /*inMonth*/,
7521  0 /*onDayOfWeek*/,
7522  22 /*onDayOfMonth*/,
7523  8 /*atTimeCode*/,
7524  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7525  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7526  0 /*letterIndex ("")*/,
7527  },
7528  // Rule Palestine 2047 only - Aug 3 2:00 1:00 S
7529  {
7530  -53 /*fromYearTiny (2047)*/,
7531  -53 /*toYearTiny (2047)*/,
7532  8 /*inMonth*/,
7533  0 /*onDayOfWeek*/,
7534  3 /*onDayOfMonth*/,
7535  8 /*atTimeCode*/,
7536  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7537  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7538  7 /*letterIndex ("S")*/,
7539  },
7540  // Rule Palestine 2048 only - Jun 6 2:00 0 -
7541  {
7542  -52 /*fromYearTiny (2048)*/,
7543  -52 /*toYearTiny (2048)*/,
7544  6 /*inMonth*/,
7545  0 /*onDayOfWeek*/,
7546  6 /*onDayOfMonth*/,
7547  8 /*atTimeCode*/,
7548  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7549  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7550  0 /*letterIndex ("")*/,
7551  },
7552  // Rule Palestine 2048 only - Jul 25 2:00 1:00 S
7553  {
7554  -52 /*fromYearTiny (2048)*/,
7555  -52 /*toYearTiny (2048)*/,
7556  7 /*inMonth*/,
7557  0 /*onDayOfWeek*/,
7558  25 /*onDayOfMonth*/,
7559  8 /*atTimeCode*/,
7560  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7561  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7562  7 /*letterIndex ("S")*/,
7563  },
7564  // Rule Palestine 2049 only - May 29 2:00 0 -
7565  {
7566  -51 /*fromYearTiny (2049)*/,
7567  -51 /*toYearTiny (2049)*/,
7568  5 /*inMonth*/,
7569  0 /*onDayOfWeek*/,
7570  29 /*onDayOfMonth*/,
7571  8 /*atTimeCode*/,
7572  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7573  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7574  0 /*letterIndex ("")*/,
7575  },
7576  // Rule Palestine 2049 only - Jul 10 2:00 1:00 S
7577  {
7578  -51 /*fromYearTiny (2049)*/,
7579  -51 /*toYearTiny (2049)*/,
7580  7 /*inMonth*/,
7581  0 /*onDayOfWeek*/,
7582  10 /*onDayOfMonth*/,
7583  8 /*atTimeCode*/,
7584  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7585  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7586  7 /*letterIndex ("S")*/,
7587  },
7588  // Rule Palestine 2050 only - May 21 2:00 0 -
7589  {
7590  -50 /*fromYearTiny (2050)*/,
7591  -50 /*toYearTiny (2050)*/,
7592  5 /*inMonth*/,
7593  0 /*onDayOfWeek*/,
7594  21 /*onDayOfMonth*/,
7595  8 /*atTimeCode*/,
7596  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7597  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7598  0 /*letterIndex ("")*/,
7599  },
7600  // Rule Palestine 2050 only - Jul 2 2:00 1:00 S
7601  {
7602  -50 /*fromYearTiny (2050)*/,
7603  -50 /*toYearTiny (2050)*/,
7604  7 /*inMonth*/,
7605  0 /*onDayOfWeek*/,
7606  2 /*onDayOfMonth*/,
7607  8 /*atTimeCode*/,
7608  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7609  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7610  7 /*letterIndex ("S")*/,
7611  },
7612  // Rule Palestine 2051 only - May 6 2:00 0 -
7613  {
7614  -49 /*fromYearTiny (2051)*/,
7615  -49 /*toYearTiny (2051)*/,
7616  5 /*inMonth*/,
7617  0 /*onDayOfWeek*/,
7618  6 /*onDayOfMonth*/,
7619  8 /*atTimeCode*/,
7620  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7621  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7622  0 /*letterIndex ("")*/,
7623  },
7624  // Rule Palestine 2051 only - Jun 24 2:00 1:00 S
7625  {
7626  -49 /*fromYearTiny (2051)*/,
7627  -49 /*toYearTiny (2051)*/,
7628  6 /*inMonth*/,
7629  0 /*onDayOfWeek*/,
7630  24 /*onDayOfMonth*/,
7631  8 /*atTimeCode*/,
7632  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7633  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7634  7 /*letterIndex ("S")*/,
7635  },
7636  // Rule Palestine 2052 only - Apr 27 2:00 0 -
7637  {
7638  -48 /*fromYearTiny (2052)*/,
7639  -48 /*toYearTiny (2052)*/,
7640  4 /*inMonth*/,
7641  0 /*onDayOfWeek*/,
7642  27 /*onDayOfMonth*/,
7643  8 /*atTimeCode*/,
7644  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7645  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7646  0 /*letterIndex ("")*/,
7647  },
7648  // Rule Palestine 2052 only - Jun 8 2:00 1:00 S
7649  {
7650  -48 /*fromYearTiny (2052)*/,
7651  -48 /*toYearTiny (2052)*/,
7652  6 /*inMonth*/,
7653  0 /*onDayOfWeek*/,
7654  8 /*onDayOfMonth*/,
7655  8 /*atTimeCode*/,
7656  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7657  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7658  7 /*letterIndex ("S")*/,
7659  },
7660  // Rule Palestine 2053 only - Apr 12 2:00 0 -
7661  {
7662  -47 /*fromYearTiny (2053)*/,
7663  -47 /*toYearTiny (2053)*/,
7664  4 /*inMonth*/,
7665  0 /*onDayOfWeek*/,
7666  12 /*onDayOfMonth*/,
7667  8 /*atTimeCode*/,
7668  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7669  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7670  0 /*letterIndex ("")*/,
7671  },
7672  // Rule Palestine 2053 only - May 31 2:00 1:00 S
7673  {
7674  -47 /*fromYearTiny (2053)*/,
7675  -47 /*toYearTiny (2053)*/,
7676  5 /*inMonth*/,
7677  0 /*onDayOfWeek*/,
7678  31 /*onDayOfMonth*/,
7679  8 /*atTimeCode*/,
7680  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7681  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7682  7 /*letterIndex ("S")*/,
7683  },
7684  // Rule Palestine 2054 only - Apr 4 2:00 0 -
7685  {
7686  -46 /*fromYearTiny (2054)*/,
7687  -46 /*toYearTiny (2054)*/,
7688  4 /*inMonth*/,
7689  0 /*onDayOfWeek*/,
7690  4 /*onDayOfMonth*/,
7691  8 /*atTimeCode*/,
7692  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7693  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7694  0 /*letterIndex ("")*/,
7695  },
7696  // Rule Palestine 2054 only - May 23 2:00 1:00 S
7697  {
7698  -46 /*fromYearTiny (2054)*/,
7699  -46 /*toYearTiny (2054)*/,
7700  5 /*inMonth*/,
7701  0 /*onDayOfWeek*/,
7702  23 /*onDayOfMonth*/,
7703  8 /*atTimeCode*/,
7704  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7705  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7706  7 /*letterIndex ("S")*/,
7707  },
7708  // Rule Palestine 2055 only - May 8 2:00 1:00 S
7709  {
7710  -45 /*fromYearTiny (2055)*/,
7711  -45 /*toYearTiny (2055)*/,
7712  5 /*inMonth*/,
7713  0 /*onDayOfWeek*/,
7714  8 /*onDayOfMonth*/,
7715  8 /*atTimeCode*/,
7716  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7717  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7718  7 /*letterIndex ("S")*/,
7719  },
7720  // Rule Palestine 2056 only - Apr 29 2:00 1:00 S
7721  {
7722  -44 /*fromYearTiny (2056)*/,
7723  -44 /*toYearTiny (2056)*/,
7724  4 /*inMonth*/,
7725  0 /*onDayOfWeek*/,
7726  29 /*onDayOfMonth*/,
7727  8 /*atTimeCode*/,
7728  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7729  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7730  7 /*letterIndex ("S")*/,
7731  },
7732  // Rule Palestine 2057 only - Apr 14 2:00 1:00 S
7733  {
7734  -43 /*fromYearTiny (2057)*/,
7735  -43 /*toYearTiny (2057)*/,
7736  4 /*inMonth*/,
7737  0 /*onDayOfWeek*/,
7738  14 /*onDayOfMonth*/,
7739  8 /*atTimeCode*/,
7740  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7741  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7742  7 /*letterIndex ("S")*/,
7743  },
7744  // Rule Palestine 2058 only - Apr 6 2:00 1:00 S
7745  {
7746  -42 /*fromYearTiny (2058)*/,
7747  -42 /*toYearTiny (2058)*/,
7748  4 /*inMonth*/,
7749  0 /*onDayOfWeek*/,
7750  6 /*onDayOfMonth*/,
7751  8 /*atTimeCode*/,
7752  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7753  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7754  7 /*letterIndex ("S")*/,
7755  },
7756  // Rule Palestine 2059 max - Mar Sat<=30 2:00 1:00 S
7757  {
7758  -41 /*fromYearTiny (2059)*/,
7759  126 /*toYearTiny (32766)*/,
7760  3 /*inMonth*/,
7761  6 /*onDayOfWeek*/,
7762  -30 /*onDayOfMonth*/,
7763  8 /*atTimeCode*/,
7764  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7765  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7766  7 /*letterIndex ("S")*/,
7767  },
7768  // Rule Palestine 2068 only - Oct 20 2:00 0 -
7769  {
7770  -32 /*fromYearTiny (2068)*/,
7771  -32 /*toYearTiny (2068)*/,
7772  10 /*inMonth*/,
7773  0 /*onDayOfWeek*/,
7774  20 /*onDayOfMonth*/,
7775  8 /*atTimeCode*/,
7776  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7777  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7778  0 /*letterIndex ("")*/,
7779  },
7780  // Rule Palestine 2069 only - Oct 12 2:00 0 -
7781  {
7782  -31 /*fromYearTiny (2069)*/,
7783  -31 /*toYearTiny (2069)*/,
7784  10 /*inMonth*/,
7785  0 /*onDayOfWeek*/,
7786  12 /*onDayOfMonth*/,
7787  8 /*atTimeCode*/,
7788  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7789  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7790  0 /*letterIndex ("")*/,
7791  },
7792  // Rule Palestine 2070 only - Oct 4 2:00 0 -
7793  {
7794  -30 /*fromYearTiny (2070)*/,
7795  -30 /*toYearTiny (2070)*/,
7796  10 /*inMonth*/,
7797  0 /*onDayOfWeek*/,
7798  4 /*onDayOfMonth*/,
7799  8 /*atTimeCode*/,
7800  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7801  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7802  0 /*letterIndex ("")*/,
7803  },
7804  // Rule Palestine 2071 only - Sep 19 2:00 0 -
7805  {
7806  -29 /*fromYearTiny (2071)*/,
7807  -29 /*toYearTiny (2071)*/,
7808  9 /*inMonth*/,
7809  0 /*onDayOfWeek*/,
7810  19 /*onDayOfMonth*/,
7811  8 /*atTimeCode*/,
7812  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7813  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7814  0 /*letterIndex ("")*/,
7815  },
7816  // Rule Palestine 2072 only - Sep 10 2:00 0 -
7817  {
7818  -28 /*fromYearTiny (2072)*/,
7819  -28 /*toYearTiny (2072)*/,
7820  9 /*inMonth*/,
7821  0 /*onDayOfWeek*/,
7822  10 /*onDayOfMonth*/,
7823  8 /*atTimeCode*/,
7824  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7825  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7826  0 /*letterIndex ("")*/,
7827  },
7828  // Rule Palestine 2072 only - Oct 22 2:00 1:00 S
7829  {
7830  -28 /*fromYearTiny (2072)*/,
7831  -28 /*toYearTiny (2072)*/,
7832  10 /*inMonth*/,
7833  0 /*onDayOfWeek*/,
7834  22 /*onDayOfMonth*/,
7835  8 /*atTimeCode*/,
7836  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7837  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7838  7 /*letterIndex ("S")*/,
7839  },
7840  // Rule Palestine 2072 max - Oct Sat<=30 2:00 0 -
7841  {
7842  -28 /*fromYearTiny (2072)*/,
7843  126 /*toYearTiny (32766)*/,
7844  10 /*inMonth*/,
7845  6 /*onDayOfWeek*/,
7846  -30 /*onDayOfMonth*/,
7847  8 /*atTimeCode*/,
7848  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7849  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7850  0 /*letterIndex ("")*/,
7851  },
7852  // Rule Palestine 2073 only - Sep 2 2:00 0 -
7853  {
7854  -27 /*fromYearTiny (2073)*/,
7855  -27 /*toYearTiny (2073)*/,
7856  9 /*inMonth*/,
7857  0 /*onDayOfWeek*/,
7858  2 /*onDayOfMonth*/,
7859  8 /*atTimeCode*/,
7860  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7861  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7862  0 /*letterIndex ("")*/,
7863  },
7864  // Rule Palestine 2073 only - Oct 14 2:00 1:00 S
7865  {
7866  -27 /*fromYearTiny (2073)*/,
7867  -27 /*toYearTiny (2073)*/,
7868  10 /*inMonth*/,
7869  0 /*onDayOfWeek*/,
7870  14 /*onDayOfMonth*/,
7871  8 /*atTimeCode*/,
7872  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7873  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7874  7 /*letterIndex ("S")*/,
7875  },
7876  // Rule Palestine 2074 only - Aug 18 2:00 0 -
7877  {
7878  -26 /*fromYearTiny (2074)*/,
7879  -26 /*toYearTiny (2074)*/,
7880  8 /*inMonth*/,
7881  0 /*onDayOfWeek*/,
7882  18 /*onDayOfMonth*/,
7883  8 /*atTimeCode*/,
7884  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7885  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7886  0 /*letterIndex ("")*/,
7887  },
7888  // Rule Palestine 2074 only - Oct 6 2:00 1:00 S
7889  {
7890  -26 /*fromYearTiny (2074)*/,
7891  -26 /*toYearTiny (2074)*/,
7892  10 /*inMonth*/,
7893  0 /*onDayOfWeek*/,
7894  6 /*onDayOfMonth*/,
7895  8 /*atTimeCode*/,
7896  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7897  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7898  7 /*letterIndex ("S")*/,
7899  },
7900  // Rule Palestine 2075 only - Aug 10 2:00 0 -
7901  {
7902  -25 /*fromYearTiny (2075)*/,
7903  -25 /*toYearTiny (2075)*/,
7904  8 /*inMonth*/,
7905  0 /*onDayOfWeek*/,
7906  10 /*onDayOfMonth*/,
7907  8 /*atTimeCode*/,
7908  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7909  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7910  0 /*letterIndex ("")*/,
7911  },
7912  // Rule Palestine 2075 only - Sep 21 2:00 1:00 S
7913  {
7914  -25 /*fromYearTiny (2075)*/,
7915  -25 /*toYearTiny (2075)*/,
7916  9 /*inMonth*/,
7917  0 /*onDayOfWeek*/,
7918  21 /*onDayOfMonth*/,
7919  8 /*atTimeCode*/,
7920  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7921  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7922  7 /*letterIndex ("S")*/,
7923  },
7924  // Rule Palestine 2076 only - Jul 25 2:00 0 -
7925  {
7926  -24 /*fromYearTiny (2076)*/,
7927  -24 /*toYearTiny (2076)*/,
7928  7 /*inMonth*/,
7929  0 /*onDayOfWeek*/,
7930  25 /*onDayOfMonth*/,
7931  8 /*atTimeCode*/,
7932  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7933  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7934  0 /*letterIndex ("")*/,
7935  },
7936  // Rule Palestine 2076 only - Sep 12 2:00 1:00 S
7937  {
7938  -24 /*fromYearTiny (2076)*/,
7939  -24 /*toYearTiny (2076)*/,
7940  9 /*inMonth*/,
7941  0 /*onDayOfWeek*/,
7942  12 /*onDayOfMonth*/,
7943  8 /*atTimeCode*/,
7944  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7945  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7946  7 /*letterIndex ("S")*/,
7947  },
7948  // Rule Palestine 2077 only - Jul 17 2:00 0 -
7949  {
7950  -23 /*fromYearTiny (2077)*/,
7951  -23 /*toYearTiny (2077)*/,
7952  7 /*inMonth*/,
7953  0 /*onDayOfWeek*/,
7954  17 /*onDayOfMonth*/,
7955  8 /*atTimeCode*/,
7956  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7957  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7958  0 /*letterIndex ("")*/,
7959  },
7960  // Rule Palestine 2077 only - Sep 4 2:00 1:00 S
7961  {
7962  -23 /*fromYearTiny (2077)*/,
7963  -23 /*toYearTiny (2077)*/,
7964  9 /*inMonth*/,
7965  0 /*onDayOfWeek*/,
7966  4 /*onDayOfMonth*/,
7967  8 /*atTimeCode*/,
7968  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7969  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7970  7 /*letterIndex ("S")*/,
7971  },
7972  // Rule Palestine 2078 only - Jul 9 2:00 0 -
7973  {
7974  -22 /*fromYearTiny (2078)*/,
7975  -22 /*toYearTiny (2078)*/,
7976  7 /*inMonth*/,
7977  0 /*onDayOfWeek*/,
7978  9 /*onDayOfMonth*/,
7979  8 /*atTimeCode*/,
7980  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7981  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7982  0 /*letterIndex ("")*/,
7983  },
7984  // Rule Palestine 2078 only - Aug 20 2:00 1:00 S
7985  {
7986  -22 /*fromYearTiny (2078)*/,
7987  -22 /*toYearTiny (2078)*/,
7988  8 /*inMonth*/,
7989  0 /*onDayOfWeek*/,
7990  20 /*onDayOfMonth*/,
7991  8 /*atTimeCode*/,
7992  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7993  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7994  7 /*letterIndex ("S")*/,
7995  },
7996  // Rule Palestine 2079 only - Jun 24 2:00 0 -
7997  {
7998  -21 /*fromYearTiny (2079)*/,
7999  -21 /*toYearTiny (2079)*/,
8000  6 /*inMonth*/,
8001  0 /*onDayOfWeek*/,
8002  24 /*onDayOfMonth*/,
8003  8 /*atTimeCode*/,
8004  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8005  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8006  0 /*letterIndex ("")*/,
8007  },
8008  // Rule Palestine 2079 only - Aug 12 2:00 1:00 S
8009  {
8010  -21 /*fromYearTiny (2079)*/,
8011  -21 /*toYearTiny (2079)*/,
8012  8 /*inMonth*/,
8013  0 /*onDayOfWeek*/,
8014  12 /*onDayOfMonth*/,
8015  8 /*atTimeCode*/,
8016  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8017  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8018  7 /*letterIndex ("S")*/,
8019  },
8020  // Rule Palestine 2080 only - Jun 15 2:00 0 -
8021  {
8022  -20 /*fromYearTiny (2080)*/,
8023  -20 /*toYearTiny (2080)*/,
8024  6 /*inMonth*/,
8025  0 /*onDayOfWeek*/,
8026  15 /*onDayOfMonth*/,
8027  8 /*atTimeCode*/,
8028  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8029  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8030  0 /*letterIndex ("")*/,
8031  },
8032  // Rule Palestine 2080 only - Jul 27 2:00 1:00 S
8033  {
8034  -20 /*fromYearTiny (2080)*/,
8035  -20 /*toYearTiny (2080)*/,
8036  7 /*inMonth*/,
8037  0 /*onDayOfWeek*/,
8038  27 /*onDayOfMonth*/,
8039  8 /*atTimeCode*/,
8040  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8041  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8042  7 /*letterIndex ("S")*/,
8043  },
8044  // Rule Palestine 2081 only - Jun 7 2:00 0 -
8045  {
8046  -19 /*fromYearTiny (2081)*/,
8047  -19 /*toYearTiny (2081)*/,
8048  6 /*inMonth*/,
8049  0 /*onDayOfWeek*/,
8050  7 /*onDayOfMonth*/,
8051  8 /*atTimeCode*/,
8052  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8053  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8054  0 /*letterIndex ("")*/,
8055  },
8056  // Rule Palestine 2081 only - Jul 19 2:00 1:00 S
8057  {
8058  -19 /*fromYearTiny (2081)*/,
8059  -19 /*toYearTiny (2081)*/,
8060  7 /*inMonth*/,
8061  0 /*onDayOfWeek*/,
8062  19 /*onDayOfMonth*/,
8063  8 /*atTimeCode*/,
8064  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8065  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8066  7 /*letterIndex ("S")*/,
8067  },
8068  // Rule Palestine 2082 only - May 23 2:00 0 -
8069  {
8070  -18 /*fromYearTiny (2082)*/,
8071  -18 /*toYearTiny (2082)*/,
8072  5 /*inMonth*/,
8073  0 /*onDayOfWeek*/,
8074  23 /*onDayOfMonth*/,
8075  8 /*atTimeCode*/,
8076  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8077  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8078  0 /*letterIndex ("")*/,
8079  },
8080  // Rule Palestine 2082 only - Jul 11 2:00 1:00 S
8081  {
8082  -18 /*fromYearTiny (2082)*/,
8083  -18 /*toYearTiny (2082)*/,
8084  7 /*inMonth*/,
8085  0 /*onDayOfWeek*/,
8086  11 /*onDayOfMonth*/,
8087  8 /*atTimeCode*/,
8088  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8089  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8090  7 /*letterIndex ("S")*/,
8091  },
8092  // Rule Palestine 2083 only - May 15 2:00 0 -
8093  {
8094  -17 /*fromYearTiny (2083)*/,
8095  -17 /*toYearTiny (2083)*/,
8096  5 /*inMonth*/,
8097  0 /*onDayOfWeek*/,
8098  15 /*onDayOfMonth*/,
8099  8 /*atTimeCode*/,
8100  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8101  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8102  0 /*letterIndex ("")*/,
8103  },
8104  // Rule Palestine 2083 only - Jun 26 2:00 1:00 S
8105  {
8106  -17 /*fromYearTiny (2083)*/,
8107  -17 /*toYearTiny (2083)*/,
8108  6 /*inMonth*/,
8109  0 /*onDayOfWeek*/,
8110  26 /*onDayOfMonth*/,
8111  8 /*atTimeCode*/,
8112  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8113  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8114  7 /*letterIndex ("S")*/,
8115  },
8116  // Rule Palestine 2084 only - Apr 29 2:00 0 -
8117  {
8118  -16 /*fromYearTiny (2084)*/,
8119  -16 /*toYearTiny (2084)*/,
8120  4 /*inMonth*/,
8121  0 /*onDayOfWeek*/,
8122  29 /*onDayOfMonth*/,
8123  8 /*atTimeCode*/,
8124  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8125  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8126  0 /*letterIndex ("")*/,
8127  },
8128  // Rule Palestine 2084 only - Jun 17 2:00 1:00 S
8129  {
8130  -16 /*fromYearTiny (2084)*/,
8131  -16 /*toYearTiny (2084)*/,
8132  6 /*inMonth*/,
8133  0 /*onDayOfWeek*/,
8134  17 /*onDayOfMonth*/,
8135  8 /*atTimeCode*/,
8136  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8137  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8138  7 /*letterIndex ("S")*/,
8139  },
8140  // Rule Palestine 2085 only - Apr 21 2:00 0 -
8141  {
8142  -15 /*fromYearTiny (2085)*/,
8143  -15 /*toYearTiny (2085)*/,
8144  4 /*inMonth*/,
8145  0 /*onDayOfWeek*/,
8146  21 /*onDayOfMonth*/,
8147  8 /*atTimeCode*/,
8148  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8149  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8150  0 /*letterIndex ("")*/,
8151  },
8152  // Rule Palestine 2085 only - Jun 9 2:00 1:00 S
8153  {
8154  -15 /*fromYearTiny (2085)*/,
8155  -15 /*toYearTiny (2085)*/,
8156  6 /*inMonth*/,
8157  0 /*onDayOfWeek*/,
8158  9 /*onDayOfMonth*/,
8159  8 /*atTimeCode*/,
8160  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8161  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8162  7 /*letterIndex ("S")*/,
8163  },
8164  // Rule Palestine 2086 only - Apr 13 2:00 0 -
8165  {
8166  -14 /*fromYearTiny (2086)*/,
8167  -14 /*toYearTiny (2086)*/,
8168  4 /*inMonth*/,
8169  0 /*onDayOfWeek*/,
8170  13 /*onDayOfMonth*/,
8171  8 /*atTimeCode*/,
8172  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8173  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8174  0 /*letterIndex ("")*/,
8175  },
8176  // Rule Palestine 2086 only - May 25 2:00 1:00 S
8177  {
8178  -14 /*fromYearTiny (2086)*/,
8179  -14 /*toYearTiny (2086)*/,
8180  5 /*inMonth*/,
8181  0 /*onDayOfWeek*/,
8182  25 /*onDayOfMonth*/,
8183  8 /*atTimeCode*/,
8184  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8185  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8186  7 /*letterIndex ("S")*/,
8187  },
8188 
8189 };
8190 
8191 const extended::ZonePolicy kZonePolicyPalestine ACE_TIME_PROGMEM = {
8192  kZoneRulesPalestine /*rules*/,
8193  111 /*numRules*/,
8194 };
8195 
8196 //---------------------------------------------------------------------------
8197 // Policy name: Para
8198 // Rules: 11
8199 //---------------------------------------------------------------------------
8200 
8201 static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
8202  // Anchor: Rule Para 1997 only - Feb lastSun 0:00 0 -
8203  {
8204  -127 /*fromYearTiny (-32767)*/,
8205  -127 /*toYearTiny (-32767)*/,
8206  1 /*inMonth*/,
8207  0 /*onDayOfWeek*/,
8208  1 /*onDayOfMonth*/,
8209  0 /*atTimeCode*/,
8210  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8211  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8212  0 /*letterIndex ("")*/,
8213  },
8214  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
8215  {
8216  -104 /*fromYearTiny (1996)*/,
8217  -99 /*toYearTiny (2001)*/,
8218  10 /*inMonth*/,
8219  7 /*onDayOfWeek*/,
8220  1 /*onDayOfMonth*/,
8221  0 /*atTimeCode*/,
8222  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8223  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8224  0 /*letterIndex ("")*/,
8225  },
8226  // Rule Para 1997 only - Feb lastSun 0:00 0 -
8227  {
8228  -103 /*fromYearTiny (1997)*/,
8229  -103 /*toYearTiny (1997)*/,
8230  2 /*inMonth*/,
8231  7 /*onDayOfWeek*/,
8232  0 /*onDayOfMonth*/,
8233  0 /*atTimeCode*/,
8234  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8235  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8236  0 /*letterIndex ("")*/,
8237  },
8238  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
8239  {
8240  -102 /*fromYearTiny (1998)*/,
8241  -99 /*toYearTiny (2001)*/,
8242  3 /*inMonth*/,
8243  7 /*onDayOfWeek*/,
8244  1 /*onDayOfMonth*/,
8245  0 /*atTimeCode*/,
8246  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8247  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8248  0 /*letterIndex ("")*/,
8249  },
8250  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
8251  {
8252  -98 /*fromYearTiny (2002)*/,
8253  -96 /*toYearTiny (2004)*/,
8254  4 /*inMonth*/,
8255  7 /*onDayOfWeek*/,
8256  1 /*onDayOfMonth*/,
8257  0 /*atTimeCode*/,
8258  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8259  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8260  0 /*letterIndex ("")*/,
8261  },
8262  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
8263  {
8264  -98 /*fromYearTiny (2002)*/,
8265  -97 /*toYearTiny (2003)*/,
8266  9 /*inMonth*/,
8267  7 /*onDayOfWeek*/,
8268  1 /*onDayOfMonth*/,
8269  0 /*atTimeCode*/,
8270  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8271  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8272  0 /*letterIndex ("")*/,
8273  },
8274  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
8275  {
8276  -96 /*fromYearTiny (2004)*/,
8277  -91 /*toYearTiny (2009)*/,
8278  10 /*inMonth*/,
8279  7 /*onDayOfWeek*/,
8280  15 /*onDayOfMonth*/,
8281  0 /*atTimeCode*/,
8282  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8283  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8284  0 /*letterIndex ("")*/,
8285  },
8286  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
8287  {
8288  -95 /*fromYearTiny (2005)*/,
8289  -91 /*toYearTiny (2009)*/,
8290  3 /*inMonth*/,
8291  7 /*onDayOfWeek*/,
8292  8 /*onDayOfMonth*/,
8293  0 /*atTimeCode*/,
8294  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8295  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8296  0 /*letterIndex ("")*/,
8297  },
8298  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
8299  {
8300  -90 /*fromYearTiny (2010)*/,
8301  126 /*toYearTiny (32766)*/,
8302  10 /*inMonth*/,
8303  7 /*onDayOfWeek*/,
8304  1 /*onDayOfMonth*/,
8305  0 /*atTimeCode*/,
8306  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8307  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8308  0 /*letterIndex ("")*/,
8309  },
8310  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
8311  {
8312  -90 /*fromYearTiny (2010)*/,
8313  -88 /*toYearTiny (2012)*/,
8314  4 /*inMonth*/,
8315  7 /*onDayOfWeek*/,
8316  8 /*onDayOfMonth*/,
8317  0 /*atTimeCode*/,
8318  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8319  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8320  0 /*letterIndex ("")*/,
8321  },
8322  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
8323  {
8324  -87 /*fromYearTiny (2013)*/,
8325  126 /*toYearTiny (32766)*/,
8326  3 /*inMonth*/,
8327  7 /*onDayOfWeek*/,
8328  22 /*onDayOfMonth*/,
8329  0 /*atTimeCode*/,
8330  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8331  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8332  0 /*letterIndex ("")*/,
8333  },
8334 
8335 };
8336 
8337 const extended::ZonePolicy kZonePolicyPara ACE_TIME_PROGMEM = {
8338  kZoneRulesPara /*rules*/,
8339  11 /*numRules*/,
8340 };
8341 
8342 //---------------------------------------------------------------------------
8343 // Policy name: Peru
8344 // Rules: 1
8345 //---------------------------------------------------------------------------
8346 
8347 static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
8348  // Anchor: Rule Peru 1994 only - Apr 1 0:00 0 -
8349  {
8350  -127 /*fromYearTiny (-32767)*/,
8351  -127 /*toYearTiny (-32767)*/,
8352  1 /*inMonth*/,
8353  0 /*onDayOfWeek*/,
8354  1 /*onDayOfMonth*/,
8355  0 /*atTimeCode*/,
8356  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8357  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8358  0 /*letterIndex ("")*/,
8359  },
8360 
8361 };
8362 
8363 const extended::ZonePolicy kZonePolicyPeru ACE_TIME_PROGMEM = {
8364  kZoneRulesPeru /*rules*/,
8365  1 /*numRules*/,
8366 };
8367 
8368 //---------------------------------------------------------------------------
8369 // Policy name: Phil
8370 // Rules: 1
8371 //---------------------------------------------------------------------------
8372 
8373 static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
8374  // Anchor: Rule Phil 1978 only - Sep 21 0:00 0 S
8375  {
8376  -127 /*fromYearTiny (-32767)*/,
8377  -127 /*toYearTiny (-32767)*/,
8378  1 /*inMonth*/,
8379  0 /*onDayOfWeek*/,
8380  1 /*onDayOfMonth*/,
8381  0 /*atTimeCode*/,
8382  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8383  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8384  7 /*letterIndex ("S")*/,
8385  },
8386 
8387 };
8388 
8389 const extended::ZonePolicy kZonePolicyPhil ACE_TIME_PROGMEM = {
8390  kZoneRulesPhil /*rules*/,
8391  1 /*numRules*/,
8392 };
8393 
8394 //---------------------------------------------------------------------------
8395 // Policy name: ROK
8396 // Rules: 1
8397 //---------------------------------------------------------------------------
8398 
8399 static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
8400  // Anchor: Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
8401  {
8402  -127 /*fromYearTiny (-32767)*/,
8403  -127 /*toYearTiny (-32767)*/,
8404  1 /*inMonth*/,
8405  0 /*onDayOfWeek*/,
8406  1 /*onDayOfMonth*/,
8407  0 /*atTimeCode*/,
8408  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8409  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8410  7 /*letterIndex ("S")*/,
8411  },
8412 
8413 };
8414 
8415 const extended::ZonePolicy kZonePolicyROK ACE_TIME_PROGMEM = {
8416  kZoneRulesROK /*rules*/,
8417  1 /*numRules*/,
8418 };
8419 
8420 //---------------------------------------------------------------------------
8421 // Policy name: Russia
8422 // Rules: 4
8423 //---------------------------------------------------------------------------
8424 
8425 static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = {
8426  // Anchor: Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
8427  {
8428  -127 /*fromYearTiny (-32767)*/,
8429  -127 /*toYearTiny (-32767)*/,
8430  1 /*inMonth*/,
8431  0 /*onDayOfWeek*/,
8432  1 /*onDayOfMonth*/,
8433  0 /*atTimeCode*/,
8434  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8435  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8436  0 /*letterIndex ("")*/,
8437  },
8438  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
8439  {
8440  -116 /*fromYearTiny (1984)*/,
8441  -105 /*toYearTiny (1995)*/,
8442  9 /*inMonth*/,
8443  7 /*onDayOfWeek*/,
8444  0 /*onDayOfMonth*/,
8445  8 /*atTimeCode*/,
8446  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8447  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8448  0 /*letterIndex ("")*/,
8449  },
8450  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
8451  {
8452  -115 /*fromYearTiny (1985)*/,
8453  -90 /*toYearTiny (2010)*/,
8454  3 /*inMonth*/,
8455  7 /*onDayOfWeek*/,
8456  0 /*onDayOfMonth*/,
8457  8 /*atTimeCode*/,
8458  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8459  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8460  7 /*letterIndex ("S")*/,
8461  },
8462  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
8463  {
8464  -104 /*fromYearTiny (1996)*/,
8465  -90 /*toYearTiny (2010)*/,
8466  10 /*inMonth*/,
8467  7 /*onDayOfWeek*/,
8468  0 /*onDayOfMonth*/,
8469  8 /*atTimeCode*/,
8470  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8471  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8472  0 /*letterIndex ("")*/,
8473  },
8474 
8475 };
8476 
8477 const extended::ZonePolicy kZonePolicyRussia ACE_TIME_PROGMEM = {
8478  kZoneRulesRussia /*rules*/,
8479  4 /*numRules*/,
8480 };
8481 
8482 //---------------------------------------------------------------------------
8483 // Policy name: RussiaAsia
8484 // Rules: 4
8485 //---------------------------------------------------------------------------
8486 
8487 static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
8488  // Anchor: Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
8489  {
8490  -127 /*fromYearTiny (-32767)*/,
8491  -127 /*toYearTiny (-32767)*/,
8492  1 /*inMonth*/,
8493  0 /*onDayOfWeek*/,
8494  1 /*onDayOfMonth*/,
8495  0 /*atTimeCode*/,
8496  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8497  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8498  0 /*letterIndex ("")*/,
8499  },
8500  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
8501  {
8502  -116 /*fromYearTiny (1984)*/,
8503  -105 /*toYearTiny (1995)*/,
8504  9 /*inMonth*/,
8505  7 /*onDayOfWeek*/,
8506  0 /*onDayOfMonth*/,
8507  8 /*atTimeCode*/,
8508  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8509  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8510  0 /*letterIndex ("")*/,
8511  },
8512  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
8513  {
8514  -115 /*fromYearTiny (1985)*/,
8515  -90 /*toYearTiny (2010)*/,
8516  3 /*inMonth*/,
8517  7 /*onDayOfWeek*/,
8518  0 /*onDayOfMonth*/,
8519  8 /*atTimeCode*/,
8520  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8521  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8522  0 /*letterIndex ("")*/,
8523  },
8524  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
8525  {
8526  -104 /*fromYearTiny (1996)*/,
8527  -90 /*toYearTiny (2010)*/,
8528  10 /*inMonth*/,
8529  7 /*onDayOfWeek*/,
8530  0 /*onDayOfMonth*/,
8531  8 /*atTimeCode*/,
8532  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8533  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8534  0 /*letterIndex ("")*/,
8535  },
8536 
8537 };
8538 
8539 const extended::ZonePolicy kZonePolicyRussiaAsia ACE_TIME_PROGMEM = {
8540  kZoneRulesRussiaAsia /*rules*/,
8541  4 /*numRules*/,
8542 };
8543 
8544 //---------------------------------------------------------------------------
8545 // Policy name: SA
8546 // Rules: 1
8547 //---------------------------------------------------------------------------
8548 
8549 static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
8550  // Anchor: Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
8551  {
8552  -127 /*fromYearTiny (-32767)*/,
8553  -127 /*toYearTiny (-32767)*/,
8554  1 /*inMonth*/,
8555  0 /*onDayOfWeek*/,
8556  1 /*onDayOfMonth*/,
8557  0 /*atTimeCode*/,
8558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8559  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8560  0 /*letterIndex ("")*/,
8561  },
8562 
8563 };
8564 
8565 const extended::ZonePolicy kZonePolicySA ACE_TIME_PROGMEM = {
8566  kZoneRulesSA /*rules*/,
8567  1 /*numRules*/,
8568 };
8569 
8570 //---------------------------------------------------------------------------
8571 // Policy name: Salv
8572 // Rules: 1
8573 //---------------------------------------------------------------------------
8574 
8575 static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
8576  // Anchor: Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
8577  {
8578  -127 /*fromYearTiny (-32767)*/,
8579  -127 /*toYearTiny (-32767)*/,
8580  1 /*inMonth*/,
8581  0 /*onDayOfWeek*/,
8582  1 /*onDayOfMonth*/,
8583  0 /*atTimeCode*/,
8584  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8585  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8586  7 /*letterIndex ("S")*/,
8587  },
8588 
8589 };
8590 
8591 const extended::ZonePolicy kZonePolicySalv ACE_TIME_PROGMEM = {
8592  kZoneRulesSalv /*rules*/,
8593  1 /*numRules*/,
8594 };
8595 
8596 //---------------------------------------------------------------------------
8597 // Policy name: SanLuis
8598 // Rules: 3
8599 //---------------------------------------------------------------------------
8600 
8601 static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = {
8602  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
8603  {
8604  -127 /*fromYearTiny (-32767)*/,
8605  -127 /*toYearTiny (-32767)*/,
8606  1 /*inMonth*/,
8607  0 /*onDayOfWeek*/,
8608  1 /*onDayOfMonth*/,
8609  0 /*atTimeCode*/,
8610  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8611  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8612  0 /*letterIndex ("")*/,
8613  },
8614  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
8615  {
8616  -92 /*fromYearTiny (2008)*/,
8617  -91 /*toYearTiny (2009)*/,
8618  3 /*inMonth*/,
8619  7 /*onDayOfWeek*/,
8620  8 /*onDayOfMonth*/,
8621  0 /*atTimeCode*/,
8622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8623  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8624  0 /*letterIndex ("")*/,
8625  },
8626  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
8627  {
8628  -93 /*fromYearTiny (2007)*/,
8629  -92 /*toYearTiny (2008)*/,
8630  10 /*inMonth*/,
8631  7 /*onDayOfWeek*/,
8632  8 /*onDayOfMonth*/,
8633  0 /*atTimeCode*/,
8634  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8635  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8636  0 /*letterIndex ("")*/,
8637  },
8638 
8639 };
8640 
8641 const extended::ZonePolicy kZonePolicySanLuis ACE_TIME_PROGMEM = {
8642  kZoneRulesSanLuis /*rules*/,
8643  3 /*numRules*/,
8644 };
8645 
8646 //---------------------------------------------------------------------------
8647 // Policy name: StJohns
8648 // Rules: 6
8649 //---------------------------------------------------------------------------
8650 
8651 static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = {
8652  // Anchor: Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
8653  {
8654  -127 /*fromYearTiny (-32767)*/,
8655  -127 /*toYearTiny (-32767)*/,
8656  1 /*inMonth*/,
8657  0 /*onDayOfWeek*/,
8658  1 /*onDayOfMonth*/,
8659  0 /*atTimeCode*/,
8660  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8661  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8662  7 /*letterIndex ("S")*/,
8663  },
8664  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
8665  {
8666  -113 /*fromYearTiny (1987)*/,
8667  -94 /*toYearTiny (2006)*/,
8668  10 /*inMonth*/,
8669  7 /*onDayOfWeek*/,
8670  0 /*onDayOfMonth*/,
8671  0 /*atTimeCode*/,
8672  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8673  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8674  7 /*letterIndex ("S")*/,
8675  },
8676  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
8677  {
8678  -112 /*fromYearTiny (1988)*/,
8679  -112 /*toYearTiny (1988)*/,
8680  4 /*inMonth*/,
8681  7 /*onDayOfWeek*/,
8682  1 /*onDayOfMonth*/,
8683  0 /*atTimeCode*/,
8684  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8685  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
8686  6 /*letterIndex ("DD")*/,
8687  },
8688  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
8689  {
8690  -111 /*fromYearTiny (1989)*/,
8691  -94 /*toYearTiny (2006)*/,
8692  4 /*inMonth*/,
8693  7 /*onDayOfWeek*/,
8694  1 /*onDayOfMonth*/,
8695  0 /*atTimeCode*/,
8696  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8697  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8698  5 /*letterIndex ("D")*/,
8699  },
8700  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
8701  {
8702  -93 /*fromYearTiny (2007)*/,
8703  -89 /*toYearTiny (2011)*/,
8704  3 /*inMonth*/,
8705  7 /*onDayOfWeek*/,
8706  8 /*onDayOfMonth*/,
8707  0 /*atTimeCode*/,
8708  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8709  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8710  5 /*letterIndex ("D")*/,
8711  },
8712  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
8713  {
8714  -93 /*fromYearTiny (2007)*/,
8715  -90 /*toYearTiny (2010)*/,
8716  11 /*inMonth*/,
8717  7 /*onDayOfWeek*/,
8718  1 /*onDayOfMonth*/,
8719  0 /*atTimeCode*/,
8720  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8721  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8722  7 /*letterIndex ("S")*/,
8723  },
8724 
8725 };
8726 
8727 const extended::ZonePolicy kZonePolicyStJohns ACE_TIME_PROGMEM = {
8728  kZoneRulesStJohns /*rules*/,
8729  6 /*numRules*/,
8730 };
8731 
8732 //---------------------------------------------------------------------------
8733 // Policy name: Sudan
8734 // Rules: 1
8735 //---------------------------------------------------------------------------
8736 
8737 static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = {
8738  // Anchor: Rule Sudan 1970 1985 - Oct 15 0:00 0 -
8739  {
8740  -127 /*fromYearTiny (-32767)*/,
8741  -127 /*toYearTiny (-32767)*/,
8742  1 /*inMonth*/,
8743  0 /*onDayOfWeek*/,
8744  1 /*onDayOfMonth*/,
8745  0 /*atTimeCode*/,
8746  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8747  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8748  0 /*letterIndex ("")*/,
8749  },
8750 
8751 };
8752 
8753 const extended::ZonePolicy kZonePolicySudan ACE_TIME_PROGMEM = {
8754  kZoneRulesSudan /*rules*/,
8755  1 /*numRules*/,
8756 };
8757 
8758 //---------------------------------------------------------------------------
8759 // Policy name: Syria
8760 // Rules: 13
8761 //---------------------------------------------------------------------------
8762 
8763 static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
8764  // Anchor: Rule Syria 1994 2005 - Oct 1 0:00 0 -
8765  {
8766  -127 /*fromYearTiny (-32767)*/,
8767  -127 /*toYearTiny (-32767)*/,
8768  1 /*inMonth*/,
8769  0 /*onDayOfWeek*/,
8770  1 /*onDayOfMonth*/,
8771  0 /*atTimeCode*/,
8772  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8773  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8774  0 /*letterIndex ("")*/,
8775  },
8776  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
8777  {
8778  -106 /*fromYearTiny (1994)*/,
8779  -95 /*toYearTiny (2005)*/,
8780  10 /*inMonth*/,
8781  0 /*onDayOfWeek*/,
8782  1 /*onDayOfMonth*/,
8783  0 /*atTimeCode*/,
8784  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8785  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8786  0 /*letterIndex ("")*/,
8787  },
8788  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
8789  {
8790  -103 /*fromYearTiny (1997)*/,
8791  -102 /*toYearTiny (1998)*/,
8792  3 /*inMonth*/,
8793  1 /*onDayOfWeek*/,
8794  0 /*onDayOfMonth*/,
8795  0 /*atTimeCode*/,
8796  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8797  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8798  7 /*letterIndex ("S")*/,
8799  },
8800  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
8801  {
8802  -101 /*fromYearTiny (1999)*/,
8803  -94 /*toYearTiny (2006)*/,
8804  4 /*inMonth*/,
8805  0 /*onDayOfWeek*/,
8806  1 /*onDayOfMonth*/,
8807  0 /*atTimeCode*/,
8808  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8809  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8810  7 /*letterIndex ("S")*/,
8811  },
8812  // Rule Syria 2006 only - Sep 22 0:00 0 -
8813  {
8814  -94 /*fromYearTiny (2006)*/,
8815  -94 /*toYearTiny (2006)*/,
8816  9 /*inMonth*/,
8817  0 /*onDayOfWeek*/,
8818  22 /*onDayOfMonth*/,
8819  0 /*atTimeCode*/,
8820  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8821  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8822  0 /*letterIndex ("")*/,
8823  },
8824  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
8825  {
8826  -93 /*fromYearTiny (2007)*/,
8827  -93 /*toYearTiny (2007)*/,
8828  3 /*inMonth*/,
8829  5 /*onDayOfWeek*/,
8830  0 /*onDayOfMonth*/,
8831  0 /*atTimeCode*/,
8832  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8833  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8834  7 /*letterIndex ("S")*/,
8835  },
8836  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
8837  {
8838  -93 /*fromYearTiny (2007)*/,
8839  -93 /*toYearTiny (2007)*/,
8840  11 /*inMonth*/,
8841  5 /*onDayOfWeek*/,
8842  1 /*onDayOfMonth*/,
8843  0 /*atTimeCode*/,
8844  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8845  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8846  0 /*letterIndex ("")*/,
8847  },
8848  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
8849  {
8850  -92 /*fromYearTiny (2008)*/,
8851  -92 /*toYearTiny (2008)*/,
8852  4 /*inMonth*/,
8853  5 /*onDayOfWeek*/,
8854  1 /*onDayOfMonth*/,
8855  0 /*atTimeCode*/,
8856  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8857  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8858  7 /*letterIndex ("S")*/,
8859  },
8860  // Rule Syria 2008 only - Nov 1 0:00 0 -
8861  {
8862  -92 /*fromYearTiny (2008)*/,
8863  -92 /*toYearTiny (2008)*/,
8864  11 /*inMonth*/,
8865  0 /*onDayOfWeek*/,
8866  1 /*onDayOfMonth*/,
8867  0 /*atTimeCode*/,
8868  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8869  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8870  0 /*letterIndex ("")*/,
8871  },
8872  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
8873  {
8874  -91 /*fromYearTiny (2009)*/,
8875  -91 /*toYearTiny (2009)*/,
8876  3 /*inMonth*/,
8877  5 /*onDayOfWeek*/,
8878  0 /*onDayOfMonth*/,
8879  0 /*atTimeCode*/,
8880  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8881  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8882  7 /*letterIndex ("S")*/,
8883  },
8884  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
8885  {
8886  -90 /*fromYearTiny (2010)*/,
8887  -89 /*toYearTiny (2011)*/,
8888  4 /*inMonth*/,
8889  5 /*onDayOfWeek*/,
8890  1 /*onDayOfMonth*/,
8891  0 /*atTimeCode*/,
8892  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8893  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8894  7 /*letterIndex ("S")*/,
8895  },
8896  // Rule Syria 2012 2022 - Mar lastFri 0:00 1:00 S
8897  {
8898  -88 /*fromYearTiny (2012)*/,
8899  -78 /*toYearTiny (2022)*/,
8900  3 /*inMonth*/,
8901  5 /*onDayOfWeek*/,
8902  0 /*onDayOfMonth*/,
8903  0 /*atTimeCode*/,
8904  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8905  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8906  7 /*letterIndex ("S")*/,
8907  },
8908  // Rule Syria 2009 2022 - Oct lastFri 0:00 0 -
8909  {
8910  -91 /*fromYearTiny (2009)*/,
8911  -78 /*toYearTiny (2022)*/,
8912  10 /*inMonth*/,
8913  5 /*onDayOfWeek*/,
8914  0 /*onDayOfMonth*/,
8915  0 /*atTimeCode*/,
8916  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8917  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8918  0 /*letterIndex ("")*/,
8919  },
8920 
8921 };
8922 
8923 const extended::ZonePolicy kZonePolicySyria ACE_TIME_PROGMEM = {
8924  kZoneRulesSyria /*rules*/,
8925  13 /*numRules*/,
8926 };
8927 
8928 //---------------------------------------------------------------------------
8929 // Policy name: Taiwan
8930 // Rules: 1
8931 //---------------------------------------------------------------------------
8932 
8933 static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
8934  // Anchor: Rule Taiwan 1979 only - Oct 1 0:00 0 S
8935  {
8936  -127 /*fromYearTiny (-32767)*/,
8937  -127 /*toYearTiny (-32767)*/,
8938  1 /*inMonth*/,
8939  0 /*onDayOfWeek*/,
8940  1 /*onDayOfMonth*/,
8941  0 /*atTimeCode*/,
8942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8944  7 /*letterIndex ("S")*/,
8945  },
8946 
8947 };
8948 
8949 const extended::ZonePolicy kZonePolicyTaiwan ACE_TIME_PROGMEM = {
8950  kZoneRulesTaiwan /*rules*/,
8951  1 /*numRules*/,
8952 };
8953 
8954 //---------------------------------------------------------------------------
8955 // Policy name: Thule
8956 // Rules: 6
8957 //---------------------------------------------------------------------------
8958 
8959 static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
8960  // Anchor: Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
8961  {
8962  -127 /*fromYearTiny (-32767)*/,
8963  -127 /*toYearTiny (-32767)*/,
8964  1 /*inMonth*/,
8965  0 /*onDayOfWeek*/,
8966  1 /*onDayOfMonth*/,
8967  0 /*atTimeCode*/,
8968  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8969  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8970  7 /*letterIndex ("S")*/,
8971  },
8972  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
8973  {
8974  -109 /*fromYearTiny (1991)*/,
8975  -108 /*toYearTiny (1992)*/,
8976  9 /*inMonth*/,
8977  7 /*onDayOfWeek*/,
8978  0 /*onDayOfMonth*/,
8979  8 /*atTimeCode*/,
8980  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8981  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8982  7 /*letterIndex ("S")*/,
8983  },
8984  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
8985  {
8986  -107 /*fromYearTiny (1993)*/,
8987  -94 /*toYearTiny (2006)*/,
8988  4 /*inMonth*/,
8989  7 /*onDayOfWeek*/,
8990  1 /*onDayOfMonth*/,
8991  8 /*atTimeCode*/,
8992  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8993  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8994  5 /*letterIndex ("D")*/,
8995  },
8996  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
8997  {
8998  -107 /*fromYearTiny (1993)*/,
8999  -94 /*toYearTiny (2006)*/,
9000  10 /*inMonth*/,
9001  7 /*onDayOfWeek*/,
9002  0 /*onDayOfMonth*/,
9003  8 /*atTimeCode*/,
9004  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9005  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9006  7 /*letterIndex ("S")*/,
9007  },
9008  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
9009  {
9010  -93 /*fromYearTiny (2007)*/,
9011  126 /*toYearTiny (32766)*/,
9012  3 /*inMonth*/,
9013  7 /*onDayOfWeek*/,
9014  8 /*onDayOfMonth*/,
9015  8 /*atTimeCode*/,
9016  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9017  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9018  5 /*letterIndex ("D")*/,
9019  },
9020  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
9021  {
9022  -93 /*fromYearTiny (2007)*/,
9023  126 /*toYearTiny (32766)*/,
9024  11 /*inMonth*/,
9025  7 /*onDayOfWeek*/,
9026  1 /*onDayOfMonth*/,
9027  8 /*atTimeCode*/,
9028  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9029  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9030  7 /*letterIndex ("S")*/,
9031  },
9032 
9033 };
9034 
9035 const extended::ZonePolicy kZonePolicyThule ACE_TIME_PROGMEM = {
9036  kZoneRulesThule /*rules*/,
9037  6 /*numRules*/,
9038 };
9039 
9040 //---------------------------------------------------------------------------
9041 // Policy name: Tonga
9042 // Rules: 7
9043 //---------------------------------------------------------------------------
9044 
9045 static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
9046  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
9047  {
9048  -127 /*fromYearTiny (-32767)*/,
9049  -127 /*toYearTiny (-32767)*/,
9050  1 /*inMonth*/,
9051  0 /*onDayOfWeek*/,
9052  1 /*onDayOfMonth*/,
9053  0 /*atTimeCode*/,
9054  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9055  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9056  0 /*letterIndex ("")*/,
9057  },
9058  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
9059  {
9060  -101 /*fromYearTiny (1999)*/,
9061  -101 /*toYearTiny (1999)*/,
9062  10 /*inMonth*/,
9063  0 /*onDayOfWeek*/,
9064  7 /*onDayOfMonth*/,
9065  8 /*atTimeCode*/,
9066  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9067  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9068  0 /*letterIndex ("")*/,
9069  },
9070  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
9071  {
9072  -100 /*fromYearTiny (2000)*/,
9073  -100 /*toYearTiny (2000)*/,
9074  3 /*inMonth*/,
9075  0 /*onDayOfWeek*/,
9076  19 /*onDayOfMonth*/,
9077  8 /*atTimeCode*/,
9078  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9079  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9080  0 /*letterIndex ("")*/,
9081  },
9082  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
9083  {
9084  -100 /*fromYearTiny (2000)*/,
9085  -99 /*toYearTiny (2001)*/,
9086  11 /*inMonth*/,
9087  7 /*onDayOfWeek*/,
9088  1 /*onDayOfMonth*/,
9089  8 /*atTimeCode*/,
9090  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9091  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9092  0 /*letterIndex ("")*/,
9093  },
9094  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
9095  {
9096  -99 /*fromYearTiny (2001)*/,
9097  -98 /*toYearTiny (2002)*/,
9098  1 /*inMonth*/,
9099  7 /*onDayOfWeek*/,
9100  0 /*onDayOfMonth*/,
9101  8 /*atTimeCode*/,
9102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9104  0 /*letterIndex ("")*/,
9105  },
9106  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
9107  {
9108  -84 /*fromYearTiny (2016)*/,
9109  -84 /*toYearTiny (2016)*/,
9110  11 /*inMonth*/,
9111  7 /*onDayOfWeek*/,
9112  1 /*onDayOfMonth*/,
9113  8 /*atTimeCode*/,
9114  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9115  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9116  0 /*letterIndex ("")*/,
9117  },
9118  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
9119  {
9120  -83 /*fromYearTiny (2017)*/,
9121  -83 /*toYearTiny (2017)*/,
9122  1 /*inMonth*/,
9123  7 /*onDayOfWeek*/,
9124  15 /*onDayOfMonth*/,
9125  12 /*atTimeCode*/,
9126  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9127  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9128  0 /*letterIndex ("")*/,
9129  },
9130 
9131 };
9132 
9133 const extended::ZonePolicy kZonePolicyTonga ACE_TIME_PROGMEM = {
9134  kZoneRulesTonga /*rules*/,
9135  7 /*numRules*/,
9136 };
9137 
9138 //---------------------------------------------------------------------------
9139 // Policy name: Troll
9140 // Rules: 3
9141 //---------------------------------------------------------------------------
9142 
9143 static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = {
9144  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
9145  {
9146  -127 /*fromYearTiny (-32767)*/,
9147  -127 /*toYearTiny (-32767)*/,
9148  1 /*inMonth*/,
9149  0 /*onDayOfWeek*/,
9150  1 /*onDayOfMonth*/,
9151  0 /*atTimeCode*/,
9152  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9153  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9154  1 /*letterIndex ("+00")*/,
9155  },
9156  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
9157  {
9158  -95 /*fromYearTiny (2005)*/,
9159  126 /*toYearTiny (32766)*/,
9160  3 /*inMonth*/,
9161  7 /*onDayOfWeek*/,
9162  0 /*onDayOfMonth*/,
9163  4 /*atTimeCode*/,
9164  32 /*atTimeModifier (kSuffixU + minute=0)*/,
9165  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
9166  2 /*letterIndex ("+02")*/,
9167  },
9168  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
9169  {
9170  -96 /*fromYearTiny (2004)*/,
9171  126 /*toYearTiny (32766)*/,
9172  10 /*inMonth*/,
9173  7 /*onDayOfWeek*/,
9174  0 /*onDayOfMonth*/,
9175  4 /*atTimeCode*/,
9176  32 /*atTimeModifier (kSuffixU + minute=0)*/,
9177  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9178  1 /*letterIndex ("+00")*/,
9179  },
9180 
9181 };
9182 
9183 const extended::ZonePolicy kZonePolicyTroll ACE_TIME_PROGMEM = {
9184  kZoneRulesTroll /*rules*/,
9185  3 /*numRules*/,
9186 };
9187 
9188 //---------------------------------------------------------------------------
9189 // Policy name: Tunisia
9190 // Rules: 6
9191 //---------------------------------------------------------------------------
9192 
9193 static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
9194  // Anchor: Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
9195  {
9196  -127 /*fromYearTiny (-32767)*/,
9197  -127 /*toYearTiny (-32767)*/,
9198  1 /*inMonth*/,
9199  0 /*onDayOfWeek*/,
9200  1 /*onDayOfMonth*/,
9201  0 /*atTimeCode*/,
9202  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9203  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9204  0 /*letterIndex ("")*/,
9205  },
9206  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
9207  {
9208  -112 /*fromYearTiny (1988)*/,
9209  -110 /*toYearTiny (1990)*/,
9210  9 /*inMonth*/,
9211  7 /*onDayOfWeek*/,
9212  0 /*onDayOfMonth*/,
9213  0 /*atTimeCode*/,
9214  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9215  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9216  0 /*letterIndex ("")*/,
9217  },
9218  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
9219  {
9220  -95 /*fromYearTiny (2005)*/,
9221  -95 /*toYearTiny (2005)*/,
9222  5 /*inMonth*/,
9223  0 /*onDayOfWeek*/,
9224  1 /*onDayOfMonth*/,
9225  0 /*atTimeCode*/,
9226  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9227  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9228  7 /*letterIndex ("S")*/,
9229  },
9230  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
9231  {
9232  -95 /*fromYearTiny (2005)*/,
9233  -95 /*toYearTiny (2005)*/,
9234  9 /*inMonth*/,
9235  0 /*onDayOfWeek*/,
9236  30 /*onDayOfMonth*/,
9237  4 /*atTimeCode*/,
9238  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9239  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9240  0 /*letterIndex ("")*/,
9241  },
9242  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
9243  {
9244  -94 /*fromYearTiny (2006)*/,
9245  -92 /*toYearTiny (2008)*/,
9246  3 /*inMonth*/,
9247  7 /*onDayOfWeek*/,
9248  0 /*onDayOfMonth*/,
9249  8 /*atTimeCode*/,
9250  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9251  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9252  7 /*letterIndex ("S")*/,
9253  },
9254  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
9255  {
9256  -94 /*fromYearTiny (2006)*/,
9257  -92 /*toYearTiny (2008)*/,
9258  10 /*inMonth*/,
9259  7 /*onDayOfWeek*/,
9260  0 /*onDayOfMonth*/,
9261  8 /*atTimeCode*/,
9262  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9263  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9264  0 /*letterIndex ("")*/,
9265  },
9266 
9267 };
9268 
9269 const extended::ZonePolicy kZonePolicyTunisia ACE_TIME_PROGMEM = {
9270  kZoneRulesTunisia /*rules*/,
9271  6 /*numRules*/,
9272 };
9273 
9274 //---------------------------------------------------------------------------
9275 // Policy name: Turkey
9276 // Rules: 4
9277 //---------------------------------------------------------------------------
9278 
9279 static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = {
9280  // Anchor: Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
9281  {
9282  -127 /*fromYearTiny (-32767)*/,
9283  -127 /*toYearTiny (-32767)*/,
9284  1 /*inMonth*/,
9285  0 /*onDayOfWeek*/,
9286  1 /*onDayOfMonth*/,
9287  0 /*atTimeCode*/,
9288  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9289  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9290  0 /*letterIndex ("")*/,
9291  },
9292  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
9293  {
9294  -114 /*fromYearTiny (1986)*/,
9295  -105 /*toYearTiny (1995)*/,
9296  9 /*inMonth*/,
9297  7 /*onDayOfWeek*/,
9298  0 /*onDayOfMonth*/,
9299  4 /*atTimeCode*/,
9300  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9301  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9302  0 /*letterIndex ("")*/,
9303  },
9304  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
9305  {
9306  -105 /*fromYearTiny (1995)*/,
9307  -94 /*toYearTiny (2006)*/,
9308  3 /*inMonth*/,
9309  7 /*onDayOfWeek*/,
9310  0 /*onDayOfMonth*/,
9311  4 /*atTimeCode*/,
9312  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9313  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9314  7 /*letterIndex ("S")*/,
9315  },
9316  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
9317  {
9318  -104 /*fromYearTiny (1996)*/,
9319  -94 /*toYearTiny (2006)*/,
9320  10 /*inMonth*/,
9321  7 /*onDayOfWeek*/,
9322  0 /*onDayOfMonth*/,
9323  4 /*atTimeCode*/,
9324  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9325  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9326  0 /*letterIndex ("")*/,
9327  },
9328 
9329 };
9330 
9331 const extended::ZonePolicy kZonePolicyTurkey ACE_TIME_PROGMEM = {
9332  kZoneRulesTurkey /*rules*/,
9333  4 /*numRules*/,
9334 };
9335 
9336 //---------------------------------------------------------------------------
9337 // Policy name: US
9338 // Rules: 6
9339 //---------------------------------------------------------------------------
9340 
9341 static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
9342  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
9343  {
9344  -127 /*fromYearTiny (-32767)*/,
9345  -127 /*toYearTiny (-32767)*/,
9346  1 /*inMonth*/,
9347  0 /*onDayOfWeek*/,
9348  1 /*onDayOfMonth*/,
9349  0 /*atTimeCode*/,
9350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9351  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9352  7 /*letterIndex ("S")*/,
9353  },
9354  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
9355  {
9356  -127 /*fromYearTiny (1967)*/,
9357  -94 /*toYearTiny (2006)*/,
9358  10 /*inMonth*/,
9359  7 /*onDayOfWeek*/,
9360  0 /*onDayOfMonth*/,
9361  8 /*atTimeCode*/,
9362  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9363  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9364  7 /*letterIndex ("S")*/,
9365  },
9366  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
9367  {
9368  -124 /*fromYearTiny (1976)*/,
9369  -114 /*toYearTiny (1986)*/,
9370  4 /*inMonth*/,
9371  7 /*onDayOfWeek*/,
9372  0 /*onDayOfMonth*/,
9373  8 /*atTimeCode*/,
9374  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9375  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9376  5 /*letterIndex ("D")*/,
9377  },
9378  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
9379  {
9380  -113 /*fromYearTiny (1987)*/,
9381  -94 /*toYearTiny (2006)*/,
9382  4 /*inMonth*/,
9383  7 /*onDayOfWeek*/,
9384  1 /*onDayOfMonth*/,
9385  8 /*atTimeCode*/,
9386  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9387  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9388  5 /*letterIndex ("D")*/,
9389  },
9390  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
9391  {
9392  -93 /*fromYearTiny (2007)*/,
9393  126 /*toYearTiny (32766)*/,
9394  3 /*inMonth*/,
9395  7 /*onDayOfWeek*/,
9396  8 /*onDayOfMonth*/,
9397  8 /*atTimeCode*/,
9398  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9399  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9400  5 /*letterIndex ("D")*/,
9401  },
9402  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
9403  {
9404  -93 /*fromYearTiny (2007)*/,
9405  126 /*toYearTiny (32766)*/,
9406  11 /*inMonth*/,
9407  7 /*onDayOfWeek*/,
9408  1 /*onDayOfMonth*/,
9409  8 /*atTimeCode*/,
9410  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9411  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9412  7 /*letterIndex ("S")*/,
9413  },
9414 
9415 };
9416 
9417 const extended::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
9418  kZoneRulesUS /*rules*/,
9419  6 /*numRules*/,
9420 };
9421 
9422 //---------------------------------------------------------------------------
9423 // Policy name: Uruguay
9424 // Rules: 7
9425 //---------------------------------------------------------------------------
9426 
9427 static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
9428  // Anchor: Rule Uruguay 1993 only - Feb 28 0:00 0 -
9429  {
9430  -127 /*fromYearTiny (-32767)*/,
9431  -127 /*toYearTiny (-32767)*/,
9432  1 /*inMonth*/,
9433  0 /*onDayOfWeek*/,
9434  1 /*onDayOfMonth*/,
9435  0 /*atTimeCode*/,
9436  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9437  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9438  0 /*letterIndex ("")*/,
9439  },
9440  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
9441  {
9442  -107 /*fromYearTiny (1993)*/,
9443  -107 /*toYearTiny (1993)*/,
9444  2 /*inMonth*/,
9445  0 /*onDayOfWeek*/,
9446  28 /*onDayOfMonth*/,
9447  0 /*atTimeCode*/,
9448  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9449  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9450  0 /*letterIndex ("")*/,
9451  },
9452  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
9453  {
9454  -96 /*fromYearTiny (2004)*/,
9455  -96 /*toYearTiny (2004)*/,
9456  9 /*inMonth*/,
9457  0 /*onDayOfWeek*/,
9458  19 /*onDayOfMonth*/,
9459  0 /*atTimeCode*/,
9460  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9461  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9462  0 /*letterIndex ("")*/,
9463  },
9464  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
9465  {
9466  -95 /*fromYearTiny (2005)*/,
9467  -95 /*toYearTiny (2005)*/,
9468  3 /*inMonth*/,
9469  0 /*onDayOfWeek*/,
9470  27 /*onDayOfMonth*/,
9471  8 /*atTimeCode*/,
9472  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9473  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9474  0 /*letterIndex ("")*/,
9475  },
9476  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
9477  {
9478  -95 /*fromYearTiny (2005)*/,
9479  -95 /*toYearTiny (2005)*/,
9480  10 /*inMonth*/,
9481  0 /*onDayOfWeek*/,
9482  9 /*onDayOfMonth*/,
9483  8 /*atTimeCode*/,
9484  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9485  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9486  0 /*letterIndex ("")*/,
9487  },
9488  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
9489  {
9490  -94 /*fromYearTiny (2006)*/,
9491  -85 /*toYearTiny (2015)*/,
9492  3 /*inMonth*/,
9493  7 /*onDayOfWeek*/,
9494  8 /*onDayOfMonth*/,
9495  8 /*atTimeCode*/,
9496  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9497  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9498  0 /*letterIndex ("")*/,
9499  },
9500  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
9501  {
9502  -94 /*fromYearTiny (2006)*/,
9503  -86 /*toYearTiny (2014)*/,
9504  10 /*inMonth*/,
9505  7 /*onDayOfWeek*/,
9506  1 /*onDayOfMonth*/,
9507  8 /*atTimeCode*/,
9508  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9509  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9510  0 /*letterIndex ("")*/,
9511  },
9512 
9513 };
9514 
9515 const extended::ZonePolicy kZonePolicyUruguay ACE_TIME_PROGMEM = {
9516  kZoneRulesUruguay /*rules*/,
9517  7 /*numRules*/,
9518 };
9519 
9520 //---------------------------------------------------------------------------
9521 // Policy name: Vanuatu
9522 // Rules: 1
9523 //---------------------------------------------------------------------------
9524 
9525 static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
9526  // Anchor: Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
9527  {
9528  -127 /*fromYearTiny (-32767)*/,
9529  -127 /*toYearTiny (-32767)*/,
9530  1 /*inMonth*/,
9531  0 /*onDayOfWeek*/,
9532  1 /*onDayOfMonth*/,
9533  0 /*atTimeCode*/,
9534  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9535  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9536  0 /*letterIndex ("")*/,
9537  },
9538 
9539 };
9540 
9541 const extended::ZonePolicy kZonePolicyVanuatu ACE_TIME_PROGMEM = {
9542  kZoneRulesVanuatu /*rules*/,
9543  1 /*numRules*/,
9544 };
9545 
9546 //---------------------------------------------------------------------------
9547 // Policy name: WS
9548 // Rules: 6
9549 //---------------------------------------------------------------------------
9550 
9551 static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
9552  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
9553  {
9554  -127 /*fromYearTiny (-32767)*/,
9555  -127 /*toYearTiny (-32767)*/,
9556  1 /*inMonth*/,
9557  0 /*onDayOfWeek*/,
9558  1 /*onDayOfMonth*/,
9559  0 /*atTimeCode*/,
9560  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9561  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9562  0 /*letterIndex ("")*/,
9563  },
9564  // Rule WS 2010 only - Sep lastSun 0:00 1 -
9565  {
9566  -90 /*fromYearTiny (2010)*/,
9567  -90 /*toYearTiny (2010)*/,
9568  9 /*inMonth*/,
9569  7 /*onDayOfWeek*/,
9570  0 /*onDayOfMonth*/,
9571  0 /*atTimeCode*/,
9572  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9573  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9574  0 /*letterIndex ("")*/,
9575  },
9576  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
9577  {
9578  -89 /*fromYearTiny (2011)*/,
9579  -89 /*toYearTiny (2011)*/,
9580  4 /*inMonth*/,
9581  6 /*onDayOfWeek*/,
9582  1 /*onDayOfMonth*/,
9583  16 /*atTimeCode*/,
9584  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9585  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9586  0 /*letterIndex ("")*/,
9587  },
9588  // Rule WS 2011 only - Sep lastSat 3:00 1 -
9589  {
9590  -89 /*fromYearTiny (2011)*/,
9591  -89 /*toYearTiny (2011)*/,
9592  9 /*inMonth*/,
9593  6 /*onDayOfWeek*/,
9594  0 /*onDayOfMonth*/,
9595  12 /*atTimeCode*/,
9596  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9597  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9598  0 /*letterIndex ("")*/,
9599  },
9600  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
9601  {
9602  -88 /*fromYearTiny (2012)*/,
9603  -79 /*toYearTiny (2021)*/,
9604  4 /*inMonth*/,
9605  7 /*onDayOfWeek*/,
9606  1 /*onDayOfMonth*/,
9607  16 /*atTimeCode*/,
9608  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9609  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9610  0 /*letterIndex ("")*/,
9611  },
9612  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
9613  {
9614  -88 /*fromYearTiny (2012)*/,
9615  -80 /*toYearTiny (2020)*/,
9616  9 /*inMonth*/,
9617  7 /*onDayOfWeek*/,
9618  0 /*onDayOfMonth*/,
9619  12 /*atTimeCode*/,
9620  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9621  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9622  0 /*letterIndex ("")*/,
9623  },
9624 
9625 };
9626 
9627 const extended::ZonePolicy kZonePolicyWS ACE_TIME_PROGMEM = {
9628  kZoneRulesWS /*rules*/,
9629  6 /*numRules*/,
9630 };
9631 
9632 //---------------------------------------------------------------------------
9633 // Policy name: Winn
9634 // Rules: 4
9635 //---------------------------------------------------------------------------
9636 
9637 static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
9638  // Anchor: Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
9639  {
9640  -127 /*fromYearTiny (-32767)*/,
9641  -127 /*toYearTiny (-32767)*/,
9642  1 /*inMonth*/,
9643  0 /*onDayOfWeek*/,
9644  1 /*onDayOfMonth*/,
9645  0 /*atTimeCode*/,
9646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9648  7 /*letterIndex ("S")*/,
9649  },
9650  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
9651  {
9652  -127 /*fromYearTiny (1966)*/,
9653  -114 /*toYearTiny (1986)*/,
9654  4 /*inMonth*/,
9655  7 /*onDayOfWeek*/,
9656  0 /*onDayOfMonth*/,
9657  8 /*atTimeCode*/,
9658  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9659  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9660  5 /*letterIndex ("D")*/,
9661  },
9662  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
9663  {
9664  -127 /*fromYearTiny (1966)*/,
9665  -95 /*toYearTiny (2005)*/,
9666  10 /*inMonth*/,
9667  7 /*onDayOfWeek*/,
9668  0 /*onDayOfMonth*/,
9669  8 /*atTimeCode*/,
9670  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9671  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9672  7 /*letterIndex ("S")*/,
9673  },
9674  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
9675  {
9676  -113 /*fromYearTiny (1987)*/,
9677  -95 /*toYearTiny (2005)*/,
9678  4 /*inMonth*/,
9679  7 /*onDayOfWeek*/,
9680  1 /*onDayOfMonth*/,
9681  8 /*atTimeCode*/,
9682  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9683  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9684  5 /*letterIndex ("D")*/,
9685  },
9686 
9687 };
9688 
9689 const extended::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
9690  kZoneRulesWinn /*rules*/,
9691  4 /*numRules*/,
9692 };
9693 
9694 //---------------------------------------------------------------------------
9695 // Policy name: Zion
9696 // Rules: 25
9697 //---------------------------------------------------------------------------
9698 
9699 static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
9700  // Anchor: Rule Zion 1998 only - Sep 6 0:00 0 S
9701  {
9702  -127 /*fromYearTiny (-32767)*/,
9703  -127 /*toYearTiny (-32767)*/,
9704  1 /*inMonth*/,
9705  0 /*onDayOfWeek*/,
9706  1 /*onDayOfMonth*/,
9707  0 /*atTimeCode*/,
9708  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9709  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9710  7 /*letterIndex ("S")*/,
9711  },
9712  // Rule Zion 1998 only - Sep 6 0:00 0 S
9713  {
9714  -102 /*fromYearTiny (1998)*/,
9715  -102 /*toYearTiny (1998)*/,
9716  9 /*inMonth*/,
9717  0 /*onDayOfWeek*/,
9718  6 /*onDayOfMonth*/,
9719  0 /*atTimeCode*/,
9720  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9721  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9722  7 /*letterIndex ("S")*/,
9723  },
9724  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
9725  {
9726  -101 /*fromYearTiny (1999)*/,
9727  -101 /*toYearTiny (1999)*/,
9728  4 /*inMonth*/,
9729  0 /*onDayOfWeek*/,
9730  2 /*onDayOfMonth*/,
9731  8 /*atTimeCode*/,
9732  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9733  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9734  5 /*letterIndex ("D")*/,
9735  },
9736  // Rule Zion 1999 only - Sep 3 2:00 0 S
9737  {
9738  -101 /*fromYearTiny (1999)*/,
9739  -101 /*toYearTiny (1999)*/,
9740  9 /*inMonth*/,
9741  0 /*onDayOfWeek*/,
9742  3 /*onDayOfMonth*/,
9743  8 /*atTimeCode*/,
9744  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9745  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9746  7 /*letterIndex ("S")*/,
9747  },
9748  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
9749  {
9750  -100 /*fromYearTiny (2000)*/,
9751  -100 /*toYearTiny (2000)*/,
9752  4 /*inMonth*/,
9753  0 /*onDayOfWeek*/,
9754  14 /*onDayOfMonth*/,
9755  8 /*atTimeCode*/,
9756  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9757  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9758  5 /*letterIndex ("D")*/,
9759  },
9760  // Rule Zion 2000 only - Oct 6 1:00 0 S
9761  {
9762  -100 /*fromYearTiny (2000)*/,
9763  -100 /*toYearTiny (2000)*/,
9764  10 /*inMonth*/,
9765  0 /*onDayOfWeek*/,
9766  6 /*onDayOfMonth*/,
9767  4 /*atTimeCode*/,
9768  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9769  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9770  7 /*letterIndex ("S")*/,
9771  },
9772  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
9773  {
9774  -99 /*fromYearTiny (2001)*/,
9775  -99 /*toYearTiny (2001)*/,
9776  4 /*inMonth*/,
9777  0 /*onDayOfWeek*/,
9778  9 /*onDayOfMonth*/,
9779  4 /*atTimeCode*/,
9780  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9781  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9782  5 /*letterIndex ("D")*/,
9783  },
9784  // Rule Zion 2001 only - Sep 24 1:00 0 S
9785  {
9786  -99 /*fromYearTiny (2001)*/,
9787  -99 /*toYearTiny (2001)*/,
9788  9 /*inMonth*/,
9789  0 /*onDayOfWeek*/,
9790  24 /*onDayOfMonth*/,
9791  4 /*atTimeCode*/,
9792  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9793  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9794  7 /*letterIndex ("S")*/,
9795  },
9796  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
9797  {
9798  -98 /*fromYearTiny (2002)*/,
9799  -98 /*toYearTiny (2002)*/,
9800  3 /*inMonth*/,
9801  0 /*onDayOfWeek*/,
9802  29 /*onDayOfMonth*/,
9803  4 /*atTimeCode*/,
9804  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9805  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9806  5 /*letterIndex ("D")*/,
9807  },
9808  // Rule Zion 2002 only - Oct 7 1:00 0 S
9809  {
9810  -98 /*fromYearTiny (2002)*/,
9811  -98 /*toYearTiny (2002)*/,
9812  10 /*inMonth*/,
9813  0 /*onDayOfWeek*/,
9814  7 /*onDayOfMonth*/,
9815  4 /*atTimeCode*/,
9816  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9817  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9818  7 /*letterIndex ("S")*/,
9819  },
9820  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
9821  {
9822  -97 /*fromYearTiny (2003)*/,
9823  -97 /*toYearTiny (2003)*/,
9824  3 /*inMonth*/,
9825  0 /*onDayOfWeek*/,
9826  28 /*onDayOfMonth*/,
9827  4 /*atTimeCode*/,
9828  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9829  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9830  5 /*letterIndex ("D")*/,
9831  },
9832  // Rule Zion 2003 only - Oct 3 1:00 0 S
9833  {
9834  -97 /*fromYearTiny (2003)*/,
9835  -97 /*toYearTiny (2003)*/,
9836  10 /*inMonth*/,
9837  0 /*onDayOfWeek*/,
9838  3 /*onDayOfMonth*/,
9839  4 /*atTimeCode*/,
9840  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9841  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9842  7 /*letterIndex ("S")*/,
9843  },
9844  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
9845  {
9846  -96 /*fromYearTiny (2004)*/,
9847  -96 /*toYearTiny (2004)*/,
9848  4 /*inMonth*/,
9849  0 /*onDayOfWeek*/,
9850  7 /*onDayOfMonth*/,
9851  4 /*atTimeCode*/,
9852  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9853  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9854  5 /*letterIndex ("D")*/,
9855  },
9856  // Rule Zion 2004 only - Sep 22 1:00 0 S
9857  {
9858  -96 /*fromYearTiny (2004)*/,
9859  -96 /*toYearTiny (2004)*/,
9860  9 /*inMonth*/,
9861  0 /*onDayOfWeek*/,
9862  22 /*onDayOfMonth*/,
9863  4 /*atTimeCode*/,
9864  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9865  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9866  7 /*letterIndex ("S")*/,
9867  },
9868  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
9869  {
9870  -95 /*fromYearTiny (2005)*/,
9871  -88 /*toYearTiny (2012)*/,
9872  4 /*inMonth*/,
9873  5 /*onDayOfWeek*/,
9874  -1 /*onDayOfMonth*/,
9875  8 /*atTimeCode*/,
9876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9877  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9878  5 /*letterIndex ("D")*/,
9879  },
9880  // Rule Zion 2005 only - Oct 9 2:00 0 S
9881  {
9882  -95 /*fromYearTiny (2005)*/,
9883  -95 /*toYearTiny (2005)*/,
9884  10 /*inMonth*/,
9885  0 /*onDayOfWeek*/,
9886  9 /*onDayOfMonth*/,
9887  8 /*atTimeCode*/,
9888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9889  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9890  7 /*letterIndex ("S")*/,
9891  },
9892  // Rule Zion 2006 only - Oct 1 2:00 0 S
9893  {
9894  -94 /*fromYearTiny (2006)*/,
9895  -94 /*toYearTiny (2006)*/,
9896  10 /*inMonth*/,
9897  0 /*onDayOfWeek*/,
9898  1 /*onDayOfMonth*/,
9899  8 /*atTimeCode*/,
9900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9902  7 /*letterIndex ("S")*/,
9903  },
9904  // Rule Zion 2007 only - Sep 16 2:00 0 S
9905  {
9906  -93 /*fromYearTiny (2007)*/,
9907  -93 /*toYearTiny (2007)*/,
9908  9 /*inMonth*/,
9909  0 /*onDayOfWeek*/,
9910  16 /*onDayOfMonth*/,
9911  8 /*atTimeCode*/,
9912  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9913  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9914  7 /*letterIndex ("S")*/,
9915  },
9916  // Rule Zion 2008 only - Oct 5 2:00 0 S
9917  {
9918  -92 /*fromYearTiny (2008)*/,
9919  -92 /*toYearTiny (2008)*/,
9920  10 /*inMonth*/,
9921  0 /*onDayOfWeek*/,
9922  5 /*onDayOfMonth*/,
9923  8 /*atTimeCode*/,
9924  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9925  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9926  7 /*letterIndex ("S")*/,
9927  },
9928  // Rule Zion 2009 only - Sep 27 2:00 0 S
9929  {
9930  -91 /*fromYearTiny (2009)*/,
9931  -91 /*toYearTiny (2009)*/,
9932  9 /*inMonth*/,
9933  0 /*onDayOfWeek*/,
9934  27 /*onDayOfMonth*/,
9935  8 /*atTimeCode*/,
9936  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9937  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9938  7 /*letterIndex ("S")*/,
9939  },
9940  // Rule Zion 2010 only - Sep 12 2:00 0 S
9941  {
9942  -90 /*fromYearTiny (2010)*/,
9943  -90 /*toYearTiny (2010)*/,
9944  9 /*inMonth*/,
9945  0 /*onDayOfWeek*/,
9946  12 /*onDayOfMonth*/,
9947  8 /*atTimeCode*/,
9948  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9949  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9950  7 /*letterIndex ("S")*/,
9951  },
9952  // Rule Zion 2011 only - Oct 2 2:00 0 S
9953  {
9954  -89 /*fromYearTiny (2011)*/,
9955  -89 /*toYearTiny (2011)*/,
9956  10 /*inMonth*/,
9957  0 /*onDayOfWeek*/,
9958  2 /*onDayOfMonth*/,
9959  8 /*atTimeCode*/,
9960  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9961  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9962  7 /*letterIndex ("S")*/,
9963  },
9964  // Rule Zion 2012 only - Sep 23 2:00 0 S
9965  {
9966  -88 /*fromYearTiny (2012)*/,
9967  -88 /*toYearTiny (2012)*/,
9968  9 /*inMonth*/,
9969  0 /*onDayOfWeek*/,
9970  23 /*onDayOfMonth*/,
9971  8 /*atTimeCode*/,
9972  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9973  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9974  7 /*letterIndex ("S")*/,
9975  },
9976  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
9977  {
9978  -87 /*fromYearTiny (2013)*/,
9979  126 /*toYearTiny (32766)*/,
9980  3 /*inMonth*/,
9981  5 /*onDayOfWeek*/,
9982  23 /*onDayOfMonth*/,
9983  8 /*atTimeCode*/,
9984  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9985  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9986  5 /*letterIndex ("D")*/,
9987  },
9988  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
9989  {
9990  -87 /*fromYearTiny (2013)*/,
9991  126 /*toYearTiny (32766)*/,
9992  10 /*inMonth*/,
9993  7 /*onDayOfWeek*/,
9994  0 /*onDayOfMonth*/,
9995  8 /*atTimeCode*/,
9996  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9997  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9998  7 /*letterIndex ("S")*/,
9999  },
10000 
10001 };
10002 
10003 const extended::ZonePolicy kZonePolicyZion ACE_TIME_PROGMEM = {
10004  kZoneRulesZion /*rules*/,
10005  25 /*numRules*/,
10006 };
10007 
10008 
10009 
10010 }
10011 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...