Compiling a gnulib testdir with "clang -Wall", I see these warnings:
../../gllib/unictype/categ_of.h:236:47: warning: implicit conversion from 'int' to 'short' changes value from 32768 to -32768 [-Wconstant-conversion] ../../gllib/unictype/categ_of.h:240:54: warning: implicit conversion from 'int' to 'short' changes value from 32896 to -32640 [-Wconstant-conversion] ../../gllib/unictype/categ_of.h:296:19: warning: implicit conversion from 'int' to 'short' changes value from 33152 to -32384 [-Wconstant-conversion] ../../gllib/unictype/categ_of.h:296:26: warning: implicit conversion from 'int' to 'short' changes value from 33280 to -32256 [-Wconstant-conversion] ../../gllib/unictype/categ_of.h:296:5: warning: implicit conversion from 'int' to 'short' changes value from 33024 to -32512 [-Wconstant-conversion] ../../gllib/unictype/categ_of.h:423:54: warning: implicit conversion from 'int' to 'short' changes value from 33408 to -32128 [-Wconstant-conversion] ../../gllib/unictype/scripts.h:2637:26: warning: implicit conversion from 'int' to 'short' changes value from 32768 to -32768 [-Wconstant-conversion] The cause is that after the update to Unicode 16.0.0, the table has more than 32768 elements: ca. 33536 5-bits values. This patch fixes it, by allowing up to nearly 65536 values. 2024-09-16 Bruno Haible <br...@clisp.org> unictype/category-of: Fix integer overflow in generated table. Reported by clang through -Wconstant-conversion warnings. * lib/gen-uni-tables.c (output_category): Generate a level2 array of 'unsigned short', not 'short', values. * lib/unictype/categ_of.h: Regenerated. * lib/unictype/categ_of.c (lookup_withtable): Update accordingly. diff --git a/lib/gen-uni-tables.c b/lib/gen-uni-tables.c index 2ee7a686fc..003d4d7b99 100644 --- a/lib/gen-uni-tables.c +++ b/lib/gen-uni-tables.c @@ -1139,7 +1139,7 @@ output_category (const char *filename, const char *version) fprintf (stream, "struct\n"); fprintf (stream, " {\n"); fprintf (stream, " int level1[%zu];\n", t.level1_size); - fprintf (stream, " short level2[%zu << %d];\n", t.level2_size, t.q); + fprintf (stream, " unsigned short level2[%zu << %d];\n", t.level2_size, t.q); fprintf (stream, " unsigned short level3[%zu * %d + 1];\n", t.level3_size, (1 << t.p) * 5 / 16); fprintf (stream, " }\n"); @@ -1174,11 +1174,13 @@ output_category (const char *filename, const char *version) if (i > 0 && (i % 8) == 0) fprintf (stream, "\n "); offset = ((uint32_t *) (t.result + level2_offset))[i]; + /* To make the level2 values fit in 16 bits, we use 'unsigned short' + instead of 'short' and add 1 to each value. */ if (offset == 0) - fprintf (stream, " %5d", -1); + fprintf (stream, " %5d", -1 + 1); else fprintf (stream, " %5zu", - (offset - level3_offset) / sizeof (uint8_t)); + (offset - level3_offset) / sizeof (uint8_t) + 1); if (i+1 < t.level2_size << t.q) fprintf (stream, ","); } diff --git a/lib/unictype/categ_of.c b/lib/unictype/categ_of.c index b61f12ec53..1301225a32 100644 --- a/lib/unictype/categ_of.c +++ b/lib/unictype/categ_of.c @@ -33,10 +33,11 @@ lookup_withtable (ucs4_t uc) if (lookup1 >= 0) { unsigned int index2 = (uc >> category_header_2) & category_header_3; - int lookup2 = u_category.level2[lookup1 + index2]; - if (lookup2 >= 0) + unsigned int lookup2 = u_category.level2[lookup1 + index2]; + if (lookup2 > 0) { - unsigned int index3 = ((uc & category_header_4) + lookup2) * 5; + unsigned int index3 = + ((uc & category_header_4) + (lookup2 - 1)) * 5; /* level3 contains 5-bit values, packed into 16-bit words. */ unsigned int lookup3 = (((unsigned int) u_category.level3[index3>>4] diff --git a/lib/unictype/categ_of.h b/lib/unictype/categ_of.h index 7626cd6f8a..9014f09413 100644 --- a/lib/unictype/categ_of.h +++ b/lib/unictype/categ_of.h @@ -26,7 +26,7 @@ static const struct { int level1[17]; - short level2[6 << 9]; + unsigned short level2[6 << 9]; unsigned short level3[262 * 40 + 1]; } u_category = @@ -37,390 +37,390 @@ u_category = 2560 }, { - 0, 128, 256, 384, 512, 640, 768, 896, - 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, - 2048, 2176, 2304, 2432, 2560, 2688, 2816, 2944, - 3072, 3200, 3328, 3456, 3584, 3712, 3840, 3968, - 4096, 4224, 4352, 4352, 4480, 4608, 4736, 4864, - 4992, 4352, 4352, 4352, 5120, 5248, 5376, 5504, - 5632, 5760, 5888, 6016, 6144, 6272, 6400, 6528, - 6656, 6784, 6912, 7040, 7168, 7296, 7424, 7552, - 7680, 7808, 7936, 8064, 8192, 8192, 8320, 8448, - 8576, 8704, 8832, 8960, 9088, 8832, 9216, 9344, - 8832, 8832, 8192, 9472, 8192, 8192, 9600, 9728, - 9856, 9984, 10112, 10240, 10368, 10496, 8832, 10624, - 10752, 10880, 11008, 11136, 11264, 11392, 8832, 8832, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 11520, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 11648, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 11776, 4352, 4352, 11904, 12032, 12160, 12288, - 12416, 12544, 12672, 12800, 12928, 13056, 13184, 13312, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 13440, - 13568, 13568, 13568, 13568, 13568, 13568, 13568, 13568, - 13568, 13568, 13568, 13568, 13568, 13568, 13568, 13568, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 4352, 4352, 13824, 13952, 14080, 14208, - 4352, 4352, 14336, 14464, 14592, 14720, 14848, 14976, - 15104, 15232, 15360, 15488, -1, 15616, 15744, 15872, - 16000, 16128, 16256, 16384, 4352, 4352, 16512, 16640, - 16768, 16896, 17024, 17152, 17280, 17408, 17536, 17664, - 17792, 17920, 18048, 18176, 18304, 18432, 18560, 18688, - 18816, 18944, 19072, 19200, 19328, 19456, 19584, 19712, - 19840, 19968, -1, 20096, 20224, 20352, 20480, -1, - 20608, 20736, 20864, 20992, 21120, 21248, 21376, 21504, - 21632, 21760, 21888, 22016, -1, 22144, 22272, 22400, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 22528, - 22656, 4352, 22784, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 22912, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 23040, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 15232, - 4352, 4352, 4352, 4352, 23168, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 23296, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 4352, 4352, 4352, 4352, 23424, 23552, 23680, 23808, - -1, -1, 23936, -1, 24064, 24192, 24320, 24448, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 24576, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 24704, 24832, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 24960, - 4352, 4352, 25088, 4352, 4352, 25216, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 25344, 25472, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 8832, 25600, 8832, 8832, 8832, 25728, 25856, 25984, - 8832, 26112, 26240, 26368, 26496, 26624, 26752, -1, - 26880, 27008, 27136, 27264, 27392, 27520, 27648, 27776, - 8832, 8832, 8832, 8832, 27904, 28032, -1, -1, - -1, -1, -1, -1, -1, -1, 28160, -1, - 28288, 28416, 28544, -1, -1, 28672, -1, -1, - -1, 28800, -1, 28928, -1, -1, -1, 29056, - 4352, 29184, 29312, -1, -1, -1, -1, -1, - 29440, 29568, 29696, -1, 29824, 29952, -1, -1, - 30080, 30208, 30336, 30464, 30592, -1, 8832, 30720, - 8832, 8832, 8832, 8832, 8832, 30848, 30976, 31104, - 31232, 31360, 8832, 8832, 31488, 31616, 8832, 31744, - -1, -1, -1, -1, -1, -1, -1, -1, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 31872, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 32000, 4352, - 32128, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 32256, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 32384, - 4352, 4352, 4352, 4352, 32512, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 4352, 4352, 4352, 4352, 32640, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 32768, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 32896, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 33024, -1, 33152, 33280, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 13696, - 13696, 13696, 13696, 13696, 13696, 13696, 13696, 33408 + 1, 129, 257, 385, 513, 641, 769, 897, + 1025, 1153, 1281, 1409, 1537, 1665, 1793, 1921, + 2049, 2177, 2305, 2433, 2561, 2689, 2817, 2945, + 3073, 3201, 3329, 3457, 3585, 3713, 3841, 3969, + 4097, 4225, 4353, 4353, 4481, 4609, 4737, 4865, + 4993, 4353, 4353, 4353, 5121, 5249, 5377, 5505, + 5633, 5761, 5889, 6017, 6145, 6273, 6401, 6529, + 6657, 6785, 6913, 7041, 7169, 7297, 7425, 7553, + 7681, 7809, 7937, 8065, 8193, 8193, 8321, 8449, + 8577, 8705, 8833, 8961, 9089, 8833, 9217, 9345, + 8833, 8833, 8193, 9473, 8193, 8193, 9601, 9729, + 9857, 9985, 10113, 10241, 10369, 10497, 8833, 10625, + 10753, 10881, 11009, 11137, 11265, 11393, 8833, 8833, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 11521, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 11649, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 11777, 4353, 4353, 11905, 12033, 12161, 12289, + 12417, 12545, 12673, 12801, 12929, 13057, 13185, 13313, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 13441, + 13569, 13569, 13569, 13569, 13569, 13569, 13569, 13569, + 13569, 13569, 13569, 13569, 13569, 13569, 13569, 13569, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 4353, 4353, 13825, 13953, 14081, 14209, + 4353, 4353, 14337, 14465, 14593, 14721, 14849, 14977, + 15105, 15233, 15361, 15489, 0, 15617, 15745, 15873, + 16001, 16129, 16257, 16385, 4353, 4353, 16513, 16641, + 16769, 16897, 17025, 17153, 17281, 17409, 17537, 17665, + 17793, 17921, 18049, 18177, 18305, 18433, 18561, 18689, + 18817, 18945, 19073, 19201, 19329, 19457, 19585, 19713, + 19841, 19969, 0, 20097, 20225, 20353, 20481, 0, + 20609, 20737, 20865, 20993, 21121, 21249, 21377, 21505, + 21633, 21761, 21889, 22017, 0, 22145, 22273, 22401, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 22529, + 22657, 4353, 22785, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22913, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 23041, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 15233, + 4353, 4353, 4353, 4353, 23169, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23297, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4353, 4353, 4353, 4353, 23425, 23553, 23681, 23809, + 0, 0, 23937, 0, 24065, 24193, 24321, 24449, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 24577, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 24705, 24833, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24961, + 4353, 4353, 25089, 4353, 4353, 25217, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 25345, 25473, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 8833, 25601, 8833, 8833, 8833, 25729, 25857, 25985, + 8833, 26113, 26241, 26369, 26497, 26625, 26753, 0, + 26881, 27009, 27137, 27265, 27393, 27521, 27649, 27777, + 8833, 8833, 8833, 8833, 27905, 28033, 0, 0, + 0, 0, 0, 0, 0, 0, 28161, 0, + 28289, 28417, 28545, 0, 0, 28673, 0, 0, + 0, 28801, 0, 28929, 0, 0, 0, 29057, + 4353, 29185, 29313, 0, 0, 0, 0, 0, + 29441, 29569, 29697, 0, 29825, 29953, 0, 0, + 30081, 30209, 30337, 30465, 30593, 0, 8833, 30721, + 8833, 8833, 8833, 8833, 8833, 30849, 30977, 31105, + 31233, 31361, 8833, 8833, 31489, 31617, 8833, 31745, + 0, 0, 0, 0, 0, 0, 0, 0, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 31873, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 32001, 4353, + 32129, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 32257, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 32385, + 4353, 4353, 4353, 4353, 32513, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4353, 4353, 4353, 4353, 32641, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 32769, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 32897, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33025, 0, 33153, 33281, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 13697, + 13697, 13697, 13697, 13697, 13697, 13697, 13697, 33409 }, { 0xe739, 0x739c, 0x39ce, 0x9ce7, 0xce73, 0xe739, 0x739c, 0x39ce,