File indexing completed on 2024-09-22 04:52:51

0001 
0002 #line 1 "Rfc5322HeaderParser.cpp"
0003 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
0004 
0005    This file is part of the Trojita Qt IMAP e-mail client,
0006    http://trojita.flaska.net/
0007 
0008    This program is free software; you can redistribute it and/or
0009    modify it under the terms of the GNU General Public License as
0010    published by the Free Software Foundation; either version 2 of
0011    the License or (at your option) version 3 or any later version
0012    accepted by the membership of KDE e.V. (or its successor approved
0013    by the membership of KDE e.V.), which shall act as a proxy
0014    defined in Section 14 of version 3 of the license.
0015 
0016    This program is distributed in the hope that it will be useful,
0017    but WITHOUT ANY WARRANTY; without even the implied warranty of
0018    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0019    GNU General Public License for more details.
0020 
0021    You should have received a copy of the GNU General Public License
0022    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0023 */
0024 
0025 #include <QDebug>
0026 #include "Imap/Parser/Rfc5322HeaderParser.h"
0027 
0028 #define DBG(X) do {qDebug() << X << "(current char:" << *p << ")";} while(false);
0029 //#define RAGEL_DEBUG
0030 
0031 namespace Imap {
0032 namespace LowLevelParser {
0033 
0034 
0035 #line 140 "Rfc5322HeaderParser.cpp"
0036 
0037 
0038 #ifdef __clang__
0039 #pragma clang diagnostic push
0040 #if defined(__has_warning) && __has_warning("-Wunused-const-variable")
0041 #pragma clang diagnostic ignored "-Wunused-const-variable"
0042 #endif
0043 #endif
0044 
0045 #line 46 "Rfc5322HeaderParser.generated.cpp"
0046 static const int8_t _rfc5322_actions[] = {
0047     0, 1, 0, 1, 1, 1, 2, 1, 
0048     3, 1, 4, 1, 5, 1, 6, 1, 
0049     7, 1, 8, 1, 9, 1, 10, 2, 
0050     0, 2, 2, 2, 0, 2, 2, 3, 
0051     2, 3, 0, 2, 3, 1, 2, 5, 
0052     4, 2, 6, 4, 2, 7, 4, 2, 
0053     8, 4
0054 };
0055 
0056 static const int16_t _rfc5322_key_offsets[] = {
0057     0, 0, 1, 4, 7, 11, 16, 20, 
0058     25, 30, 35, 40, 45, 49, 54, 59, 
0059     64, 67, 87, 107, 109, 112, 131, 133, 
0060     136, 141, 146, 151, 155, 160, 165, 170, 
0061     175, 178, 188, 193, 199, 204, 209, 214, 
0062     219, 224, 229, 233, 238, 243, 248, 251, 
0063     257, 259, 262, 270, 272, 275, 277, 296, 
0064     298, 301, 320, 327, 329, 332, 340, 342, 
0065     345, 347, 367, 369, 372, 392, 399, 401, 
0066     404, 412, 414, 417, 419, 438, 440, 443, 
0067     463, 468, 473, 475, 478, 483, 488, 493, 
0068     498, 503, 508, 513, 518, 523, 528, 531, 
0069     551, 571, 573, 576, 595, 597, 600, 609, 
0070     617, 619, 622, 624, 632, 634, 637, 639, 
0071     658, 660, 663, 682, 689, 691, 694, 702, 
0072     704, 707, 709, 729, 731, 734, 754, 761, 
0073     763, 766, 774, 776, 779, 781, 800, 802, 
0074     805, 825, 845, 865, 867, 870, 878, 880, 
0075     883, 885, 893, 895, 898, 900, 919, 927, 
0076     929, 932, 934, 944, 946, 949, 951, 957, 
0077     959, 962, 970, 972, 975, 977, 986, 994, 
0078     996, 999, 1001, 1009, 1011, 1014, 1016, 1024, 
0079     1026, 1029, 1031, 1034, 1059, 1084, 1089, 1095, 
0080     1119, 1124, 1130, 1139, 1148, 1153, 1159, 1162, 
0081     1171, 1179, 1184, 1190, 1193, 1201, 1225, 1230, 
0082     1236, 1260, 1269, 1274, 1280, 1288, 1293, 1299, 
0083     1302, 1310, 1335, 1340, 1346, 1371, 1380, 1385, 
0084     1391, 1399, 1404, 1410, 1413, 1421, 1445, 1450, 
0085     1456, 1481, 1506, 1531, 1536, 1542, 1550, 1555, 
0086     1561, 1564, 1572, 1580, 1585, 1591, 1594, 1602, 
0087     1626, 1634, 1639, 1645, 1648, 1656, 1666, 1671, 
0088     1677, 1680, 1690, 1698, 1703, 1709, 1717, 1722, 
0089     1728, 1731, 1739, 1748, 1757, 1762, 1768, 1771, 
0090     1780, 1788, 1793, 1799, 1802, 1810, 1818, 1823, 
0091     1829, 1832, 1840, 1846, 1854, 1856, 1859, 1861, 
0092     1869, 1871, 1874, 1876, 1895, 1903, 1905, 1908, 
0093     1910, 1920, 1922, 1925, 1927, 1933, 1935, 1938, 
0094     1946, 1948, 1951, 1953, 1962, 1970, 1972, 1975, 
0095     1977, 1985, 1987, 1990, 1992, 2000, 2005, 2011, 
0096     2019, 2024, 2030, 2033, 2041, 2065, 2070, 2076, 
0097     2100, 2109, 2114, 2120, 2128, 2133, 2139, 2142, 
0098     2150, 2175, 2180, 2186, 2211, 2220, 2225, 2231, 
0099     2239, 2244, 2250, 2253, 2261, 2285, 2290, 2296, 
0100     2321, 2328, 2335, 2340, 2346, 2354, 2359, 2365, 
0101     2368, 2376, 2384, 2389, 2395, 2398, 2406, 2430, 
0102     2438, 2443, 2449, 2452, 2460, 2470, 2475, 2481, 
0103     2484, 2494, 2502, 2507, 2513, 2521, 2526, 2532, 
0104     2535, 2543, 2552, 2561, 2566, 2572, 2575, 2584, 
0105     2592, 2597, 2603, 2606, 2614, 2622, 2627, 2633, 
0106     2636, 2644, 2653, 2658, 2660, 2666, 2669, 2677, 
0107     2679, 2682, 2684, 2692, 2695, 2699, 2707, 2712, 
0108     2718, 2726, 2731, 2737, 2740, 2748, 2756, 2761, 
0109     2767, 2775, 2780, 2786, 2789, 2797, 2806, 2811, 
0110     2820, 2822, 2831, 2834, 2845, 2853, 2858, 2864, 
0111     2872, 2877, 2883, 2886, 2894, 2905, 2910, 2916, 
0112     2927, 2932, 2938, 2950, 2957, 2966, 2971, 2981, 
0113     2987, 2993, 3003, 3013, 3018, 3024, 3034, 3039, 
0114     3050, 3058, 3063, 3069, 3072, 3080, 3086, 3097, 
0115     3108, 3113, 3119, 3130, 3135, 3141, 3152, 3157, 
0116     3163, 3169, 3179, 3189, 3195, 3205, 3215, 3220, 
0117     3226, 3235, 3237, 3246, 3249, 3260, 3271, 3276, 
0118     3282, 3293, 3298, 3304, 3316, 3326, 3331, 3341, 
0119     3347, 3356, 3362, 3372, 3382, 3387, 3393, 3399, 
0120     3409, 3419, 3426, 3431, 3439, 3445, 3453, 3458, 
0121     3464, 3467, 3475, 3484, 3489, 3499, 3505, 3511, 
0122     3521, 3531, 3536, 3542, 3552, 3557, 3568, 3576, 
0123     3581, 3587, 3590, 3598, 3604, 3615, 3623, 3628, 
0124     3634, 3643, 3650, 3659, 3665, 3670, 3676, 3686, 
0125     3691, 3702, 3708, 3711, 3719, 3725, 3735, 3745, 
0126     3756, 3761, 3767, 3778, 3783, 3789, 3801, 3811, 
0127     3817, 3822, 3828, 3834, 3844, 3854, 3859, 3862, 
0128     3866, 3875, 3883, 3885, 3888, 3890, 3898, 3900, 
0129     3903, 3905, 3924, 3926, 3929, 3948, 3955, 3957, 
0130     3960, 3968, 3970, 3973, 3975, 3995, 3997, 4000, 
0131     4020, 4027, 4029, 4032, 4040, 4042, 4045, 4047, 
0132     4066, 4068, 4071, 4091, 4111, 4131, 4133, 4136, 
0133     4144, 4146, 4149, 4151, 4159, 4161, 4164, 4166, 
0134     4185, 4193, 4195, 4198, 4200, 4210, 4212, 4215, 
0135     4217, 4223, 4225, 4228, 4236, 4238, 4241, 4243, 
0136     4252, 4260, 4262, 4265, 4267, 4275, 4277, 4280, 
0137     4282, 4290, 4292, 4295, 4297, 4300, 4325, 4350, 
0138     4355, 4361, 4385, 4390, 4396, 4405, 4414, 4419, 
0139     4425, 4428, 4437, 4445, 4450, 4456, 4459, 4467, 
0140     4491, 4496, 4502, 4526, 4535, 4540, 4546, 4554, 
0141     4559, 4565, 4568, 4576, 4601, 4606, 4612, 4637, 
0142     4646, 4651, 4657, 4665, 4670, 4676, 4679, 4687, 
0143     4711, 4716, 4722, 4747, 4772, 4797, 4802, 4808, 
0144     4816, 4821, 4827, 4830, 4838, 4846, 4851, 4857, 
0145     4860, 4868, 4892, 4900, 4905, 4911, 4914, 4922, 
0146     4932, 4937, 4943, 4946, 4956, 4964, 4969, 4975, 
0147     4983, 4988, 4994, 4997, 5005, 5014, 5023, 5028, 
0148     5034, 5037, 5046, 5054, 5059, 5065, 5068, 5076, 
0149     5084, 5089, 5095, 5098, 5106, 5112, 5125, 5126, 
0150     5141, 5156, 5171, 5186, 5201, 5216, 5231, 5246, 
0151     5261, 5276, 5291, 5306, 5321, 5336, 5351, 5366, 
0152     5381, 5396, 5411, 5426, 5441, 5456, 5471, 5486, 
0153     5501, 5516, 5531, 5546, 5561, 5576, 5591, 5606, 
0154     5621, 5636, 5651, 5666, 5681, 5696, 5711, 5726, 
0155     5741, 5756, 5771, 5786, 5801, 5816, 5831, 5846, 
0156     5861, 5876, 5891, 5906, 5921, 5936, 5951, 5966, 
0157     5981, 5996, 6011, 6026, 6041, 6056, 6071, 6086, 
0158     6101, 6116, 6131, 6146, 6161, 6176, 6191, 6206, 
0159     6221, 6236, 6251, 6266, 6281, 6296, 6311, 6326, 
0160     6341, 6356, 6371, 6386, 6401, 6416, 6431, 6446, 
0161     6461, 6476, 6491, 6506, 6521, 6536, 6551, 6566, 
0162     6581, 6596, 6611, 6626, 6641, 6656, 6671, 6686, 
0163     6701
0164 };
0165 
0166 static const int8_t _rfc5322_trans_keys[] = {
0167     10, 58, 33, 126, 13, 0, 127, 10, 
0168     13, 0, 127, 58, 78, 110, 33, 126, 
0169     45, 58, 33, 126, 58, 82, 114, 33, 
0170     126, 58, 69, 101, 33, 126, 58, 80, 
0171     112, 33, 126, 58, 76, 108, 33, 126, 
0172     58, 89, 121, 33, 126, 45, 58, 33, 
0173     126, 58, 84, 116, 33, 126, 58, 79, 
0174     111, 33, 126, 9, 32, 58, 33, 126, 
0175     9, 32, 58, 9, 10, 13, 32, 34, 
0176     40, 45, 60, 61, 63, 33, 39, 42, 
0177     43, 47, 57, 65, 90, 94, 126, 9, 
0178     10, 13, 32, 34, 40, 45, 60, 61, 
0179     63, 33, 39, 42, 43, 47, 57, 65, 
0180     90, 94, 126, 9, 32, 9, 10, 32, 
0181     9, 10, 13, 32, 34, 40, 60, 61, 
0182     63, 33, 39, 42, 43, 45, 57, 65, 
0183     90, 94, 126, 9, 32, 9, 10, 32, 
0184     58, 73, 105, 33, 126, 58, 83, 115, 
0185     33, 126, 58, 84, 116, 33, 126, 45, 
0186     58, 33, 126, 58, 80, 112, 33, 126, 
0187     58, 79, 111, 33, 126, 58, 83, 115, 
0188     33, 126, 58, 84, 116, 33, 126, 58, 
0189     33, 126, 9, 10, 13, 32, 40, 60, 
0190     78, 110, 0, 127, 9, 13, 32, 0, 
0191     127, 9, 10, 13, 32, 0, 127, 58, 
0192     69, 101, 33, 126, 58, 83, 115, 33, 
0193     126, 58, 83, 115, 33, 126, 58, 65, 
0194     97, 33, 126, 58, 71, 103, 33, 126, 
0195     58, 69, 101, 33, 126, 45, 58, 33, 
0196     126, 58, 73, 105, 33, 126, 58, 68, 
0197     100, 33, 126, 9, 32, 58, 33, 126, 
0198     9, 32, 58, 9, 10, 13, 32, 40, 
0199     60, 9, 32, 9, 10, 32, 10, 13, 
0200     41, 92, 1, 39, 42, 127, 9, 32, 
0201     9, 10, 32, 0, 127, 9, 10, 13, 
0202     32, 34, 40, 45, 61, 63, 33, 39, 
0203     42, 43, 47, 57, 65, 90, 94, 126, 
0204     9, 32, 9, 10, 32, 9, 10, 13, 
0205     32, 33, 40, 46, 61, 64, 35, 39, 
0206     42, 43, 45, 57, 63, 90, 94, 126, 
0207     9, 10, 13, 32, 40, 46, 64, 9, 
0208     32, 9, 10, 32, 10, 13, 41, 92, 
0209     1, 39, 42, 127, 9, 32, 9, 10, 
0210     32, 0, 127, 9, 10, 13, 32, 33, 
0211     40, 45, 61, 63, 91, 35, 39, 42, 
0212     43, 47, 57, 65, 90, 94, 126, 9, 
0213     32, 9, 10, 32, 9, 10, 13, 32, 
0214     33, 40, 46, 62, 35, 39, 42, 43, 
0215     45, 57, 61, 63, 65, 90, 94, 126, 
0216     9, 10, 13, 32, 40, 46, 62, 9, 
0217     32, 9, 10, 32, 10, 13, 41, 92, 
0218     1, 39, 42, 127, 9, 32, 9, 10, 
0219     32, 0, 127, 9, 10, 13, 32, 33, 
0220     40, 45, 61, 63, 35, 39, 42, 43, 
0221     47, 57, 65, 90, 94, 126, 9, 32, 
0222     9, 10, 32, 9, 10, 13, 32, 33, 
0223     40, 46, 62, 35, 39, 42, 43, 45, 
0224     57, 61, 63, 65, 90, 94, 126, 9, 
0225     10, 13, 32, 40, 9, 10, 13, 32, 
0226     40, 9, 32, 9, 10, 32, 58, 69, 
0227     101, 33, 126, 58, 70, 102, 33, 126, 
0228     58, 69, 101, 33, 126, 58, 82, 114, 
0229     33, 126, 58, 69, 101, 33, 126, 58, 
0230     78, 110, 33, 126, 58, 67, 99, 33, 
0231     126, 58, 69, 101, 33, 126, 58, 83, 
0232     115, 33, 126, 9, 32, 58, 33, 126, 
0233     9, 32, 58, 9, 10, 13, 32, 34, 
0234     40, 45, 60, 61, 63, 33, 39, 42, 
0235     43, 47, 57, 65, 90, 94, 126, 9, 
0236     10, 13, 32, 34, 40, 45, 60, 61, 
0237     63, 33, 39, 42, 43, 47, 57, 65, 
0238     90, 94, 126, 9, 32, 9, 10, 32, 
0239     9, 10, 13, 32, 34, 40, 60, 61, 
0240     63, 33, 39, 42, 43, 45, 57, 65, 
0241     90, 94, 126, 9, 32, 9, 10, 32, 
0242     9, 10, 13, 32, 92, 1, 33, 35, 
0243     127, 9, 10, 13, 32, 34, 92, 1, 
0244     127, 9, 32, 9, 10, 32, 0, 127, 
0245     10, 13, 41, 92, 1, 39, 42, 127, 
0246     9, 32, 9, 10, 32, 0, 127, 9, 
0247     10, 13, 32, 34, 40, 45, 61, 63, 
0248     33, 39, 42, 43, 47, 57, 65, 90, 
0249     94, 126, 9, 32, 9, 10, 32, 9, 
0250     10, 13, 32, 33, 40, 46, 61, 64, 
0251     35, 39, 42, 43, 45, 57, 63, 90, 
0252     94, 126, 9, 10, 13, 32, 40, 46, 
0253     64, 9, 32, 9, 10, 32, 10, 13, 
0254     41, 92, 1, 39, 42, 127, 9, 32, 
0255     9, 10, 32, -128, -1, 9, 10, 13, 
0256     32, 33, 40, 45, 61, 63, 91, 35, 
0257     39, 42, 43, 47, 57, 65, 90, 94, 
0258     126, 9, 32, 9, 10, 32, 9, 10, 
0259     13, 32, 33, 40, 46, 62, 35, 39, 
0260     42, 43, 45, 57, 61, 63, 65, 90, 
0261     94, 126, 9, 10, 13, 32, 40, 46, 
0262     62, 9, 32, 9, 10, 32, 10, 13, 
0263     41, 92, 1, 39, 42, 127, 9, 32, 
0264     9, 10, 32, 0, 127, 9, 10, 13, 
0265     32, 33, 40, 45, 61, 63, 35, 39, 
0266     42, 43, 47, 57, 65, 90, 94, 126, 
0267     9, 32, 9, 10, 32, 9, 10, 13, 
0268     32, 33, 40, 46, 62, 35, 39, 42, 
0269     43, 45, 57, 61, 63, 65, 90, 94, 
0270     126, 9, 10, 13, 32, 34, 40, 45, 
0271     60, 61, 63, 33, 39, 42, 43, 47, 
0272     57, 65, 90, 94, 126, 9, 10, 13, 
0273     32, 34, 40, 45, 60, 61, 63, 33, 
0274     39, 42, 43, 47, 57, 65, 90, 94, 
0275     126, 9, 32, 9, 10, 32, 10, 13, 
0276     41, 92, 1, 39, 42, 127, 9, 32, 
0277     9, 10, 32, 0, 127, 10, 13, 41, 
0278     92, 1, 39, 42, 127, 9, 32, 9, 
0279     10, 32, -128, -1, 9, 10, 13, 32, 
0280     33, 40, 45, 61, 63, 35, 39, 42, 
0281     43, 47, 57, 65, 90, 94, 126, 10, 
0282     13, 41, 92, 1, 39, 42, 127, 9, 
0283     32, 9, 10, 32, -128, -1, 9, 10, 
0284     13, 32, 92, 93, 1, 90, 94, 127, 
0285     9, 32, 9, 10, 32, 0, 127, 9, 
0286     10, 13, 32, 40, 62, 9, 32, 9, 
0287     10, 32, 10, 13, 41, 92, 1, 39, 
0288     42, 127, 9, 32, 9, 10, 32, 0, 
0289     127, 9, 10, 13, 32, 92, 1, 33, 
0290     35, 127, 9, 10, 13, 32, 34, 92, 
0291     1, 127, 9, 32, 9, 10, 32, 0, 
0292     127, 10, 13, 41, 92, 1, 39, 42, 
0293     127, 9, 32, 9, 10, 32, 0, 127, 
0294     10, 13, 41, 92, 1, 39, 42, 127, 
0295     9, 32, 9, 10, 32, -128, -1, 9, 
0296     10, 32, 9, 10, 13, 32, 34, 40, 
0297     41, 44, 46, 60, 61, 63, 127, 0, 
0298     31, 33, 57, 58, 64, 65, 90, 91, 
0299     93, 94, 126, 9, 10, 13, 32, 34, 
0300     40, 41, 44, 46, 60, 61, 63, 127, 
0301     0, 31, 33, 57, 58, 64, 65, 90, 
0302     91, 93, 94, 126, 9, 13, 32, 0, 
0303     127, 9, 10, 13, 32, 0, 127, 9, 
0304     10, 13, 32, 34, 40, 41, 44, 60, 
0305     61, 63, 127, 0, 31, 33, 57, 58, 
0306     64, 65, 90, 91, 93, 94, 126, 9, 
0307     13, 32, 0, 127, 9, 10, 13, 32, 
0308     0, 127, 0, 9, 10, 13, 32, 34, 
0309     92, 1, 127, 0, 9, 10, 13, 32, 
0310     34, 92, 1, 127, 9, 13, 32, 0, 
0311     127, 9, 10, 13, 32, 0, 127, 13, 
0312     0, 127, 0, 9, 10, 13, 32, 34, 
0313     92, 1, 127, 0, 10, 13, 40, 41, 
0314     92, 1, 127, 9, 13, 32, 0, 127, 
0315     9, 10, 13, 32, 0, 127, 13, 0, 
0316     127, 0, 10, 13, 40, 41, 92, 1, 
0317     127, 9, 10, 13, 32, 34, 40, 41, 
0318     44, 46, 61, 63, 127, 0, 31, 33, 
0319     57, 58, 64, 65, 90, 91, 93, 94, 
0320     126, 9, 13, 32, 0, 127, 9, 10, 
0321     13, 32, 0, 127, 9, 10, 13, 32, 
0322     33, 40, 41, 44, 46, 61, 64, 127, 
0323     0, 34, 35, 57, 58, 62, 63, 90, 
0324     91, 93, 94, 126, 9, 10, 13, 32, 
0325     40, 46, 64, 0, 127, 9, 13, 32, 
0326     0, 127, 9, 10, 13, 32, 0, 127, 
0327     0, 10, 13, 40, 41, 92, 1, 127, 
0328     9, 13, 32, 0, 127, 9, 10, 13, 
0329     32, 0, 127, 13, 0, 127, 0, 10, 
0330     13, 40, 41, 92, 1, 127, 9, 10, 
0331     13, 32, 33, 40, 41, 44, 46, 61, 
0332     63, 91, 127, 0, 34, 35, 57, 58, 
0333     64, 65, 90, 92, 93, 94, 126, 9, 
0334     13, 32, 0, 127, 9, 10, 13, 32, 
0335     0, 127, 9, 10, 13, 32, 33, 40, 
0336     41, 44, 46, 61, 62, 63, 127, 0, 
0337     34, 35, 57, 58, 64, 65, 90, 91, 
0338     93, 94, 126, 9, 10, 13, 32, 40, 
0339     46, 62, 0, 127, 9, 13, 32, 0, 
0340     127, 9, 10, 13, 32, 0, 127, 0, 
0341     10, 13, 40, 41, 92, 1, 127, 9, 
0342     13, 32, 0, 127, 9, 10, 13, 32, 
0343     0, 127, 13, 0, 127, 0, 10, 13, 
0344     40, 41, 92, 1, 127, 9, 10, 13, 
0345     32, 33, 40, 41, 44, 46, 61, 63, 
0346     127, 0, 34, 35, 57, 58, 64, 65, 
0347     90, 91, 93, 94, 126, 9, 13, 32, 
0348     0, 127, 9, 10, 13, 32, 0, 127, 
0349     9, 10, 13, 32, 33, 40, 41, 44, 
0350     46, 61, 62, 63, 127, 0, 34, 35, 
0351     57, 58, 64, 65, 90, 91, 93, 94, 
0352     126, 9, 10, 13, 32, 34, 40, 41, 
0353     44, 46, 60, 61, 63, 127, 0, 31, 
0354     33, 57, 58, 64, 65, 90, 91, 93, 
0355     94, 126, 9, 10, 13, 32, 34, 40, 
0356     41, 44, 46, 60, 61, 63, 127, 0, 
0357     31, 33, 57, 58, 64, 65, 90, 91, 
0358     93, 94, 126, 9, 13, 32, 0, 127, 
0359     9, 10, 13, 32, 0, 127, 0, 10, 
0360     13, 40, 41, 92, 1, 127, 9, 13, 
0361     32, 0, 127, 9, 10, 13, 32, 0, 
0362     127, 13, 0, 127, 0, 10, 13, 40, 
0363     41, 92, 1, 127, 0, 10, 13, 40, 
0364     41, 92, 1, 127, 9, 13, 32, 0, 
0365     127, 9, 10, 13, 32, 0, 127, 13, 
0366     0, 127, 0, 10, 13, 40, 41, 92, 
0367     1, 127, 9, 10, 13, 32, 33, 40, 
0368     41, 44, 46, 61, 63, 127, 0, 34, 
0369     35, 57, 58, 64, 65, 90, 91, 93, 
0370     94, 126, 0, 10, 13, 40, 41, 92, 
0371     1, 127, 9, 13, 32, 0, 127, 9, 
0372     10, 13, 32, 0, 127, 13, 0, 127, 
0373     0, 10, 13, 40, 41, 92, 1, 127, 
0374     0, 9, 10, 13, 32, 91, 92, 93, 
0375     1, 127, 9, 13, 32, 0, 127, 9, 
0376     10, 13, 32, 0, 127, 13, 0, 127, 
0377     0, 9, 10, 13, 32, 91, 92, 93, 
0378     1, 127, 9, 10, 13, 32, 40, 62, 
0379     0, 127, 9, 13, 32, 0, 127, 9, 
0380     10, 13, 32, 0, 127, 0, 10, 13, 
0381     40, 41, 92, 1, 127, 9, 13, 32, 
0382     0, 127, 9, 10, 13, 32, 0, 127, 
0383     13, 0, 127, 0, 10, 13, 40, 41, 
0384     92, 1, 127, 0, 9, 10, 13, 32, 
0385     34, 92, 1, 127, 0, 9, 10, 13, 
0386     32, 34, 92, 1, 127, 9, 13, 32, 
0387     0, 127, 9, 10, 13, 32, 0, 127, 
0388     13, 0, 127, 0, 9, 10, 13, 32, 
0389     34, 92, 1, 127, 0, 10, 13, 40, 
0390     41, 92, 1, 127, 9, 13, 32, 0, 
0391     127, 9, 10, 13, 32, 0, 127, 13, 
0392     0, 127, 0, 10, 13, 40, 41, 92, 
0393     1, 127, 0, 10, 13, 40, 41, 92, 
0394     1, 127, 9, 13, 32, 0, 127, 9, 
0395     10, 13, 32, 0, 127, 13, 0, 127, 
0396     0, 10, 13, 40, 41, 92, 1, 127, 
0397     9, 10, 13, 32, 0, 127, 10, 13, 
0398     41, 92, 1, 39, 42, 127, 9, 32, 
0399     9, 10, 32, 0, 127, 10, 13, 41, 
0400     92, 1, 39, 42, 127, 9, 32, 9, 
0401     10, 32, 0, 127, 9, 10, 13, 32, 
0402     33, 40, 45, 61, 63, 35, 39, 42, 
0403     43, 47, 57, 65, 90, 94, 126, 10, 
0404     13, 41, 92, 1, 39, 42, 127, 9, 
0405     32, 9, 10, 32, 0, 127, 9, 10, 
0406     13, 32, 92, 93, 1, 90, 94, 127, 
0407     9, 32, 9, 10, 32, 0, 127, 9, 
0408     10, 13, 32, 40, 62, 9, 32, 9, 
0409     10, 32, 10, 13, 41, 92, 1, 39, 
0410     42, 127, 9, 32, 9, 10, 32, -128, 
0411     -1, 9, 10, 13, 32, 92, 1, 33, 
0412     35, 127, 9, 10, 13, 32, 34, 92, 
0413     1, 127, 9, 32, 9, 10, 32, 0, 
0414     127, 10, 13, 41, 92, 1, 39, 42, 
0415     127, 9, 32, 9, 10, 32, 0, 127, 
0416     9, 10, 13, 32, 40, 60, 0, 127, 
0417     9, 13, 32, 0, 127, 9, 10, 13, 
0418     32, 0, 127, 0, 10, 13, 40, 41, 
0419     92, 1, 127, 9, 13, 32, 0, 127, 
0420     9, 10, 13, 32, 0, 127, 13, 0, 
0421     127, 0, 10, 13, 40, 41, 92, 1, 
0422     127, 9, 10, 13, 32, 34, 40, 41, 
0423     44, 46, 61, 63, 127, 0, 31, 33, 
0424     57, 58, 64, 65, 90, 91, 93, 94, 
0425     126, 9, 13, 32, 0, 127, 9, 10, 
0426     13, 32, 0, 127, 9, 10, 13, 32, 
0427     33, 40, 41, 44, 46, 61, 64, 127, 
0428     0, 34, 35, 57, 58, 62, 63, 90, 
0429     91, 93, 94, 126, 9, 10, 13, 32, 
0430     40, 46, 64, 0, 127, 9, 13, 32, 
0431     0, 127, 9, 10, 13, 32, 0, 127, 
0432     0, 10, 13, 40, 41, 92, 1, 127, 
0433     9, 13, 32, 0, 127, 9, 10, 13, 
0434     32, 0, 127, 13, 0, 127, 0, 10, 
0435     13, 40, 41, 92, 1, 127, 9, 10, 
0436     13, 32, 33, 40, 41, 44, 46, 61, 
0437     63, 91, 127, 0, 34, 35, 57, 58, 
0438     64, 65, 90, 92, 93, 94, 126, 9, 
0439     13, 32, 0, 127, 9, 10, 13, 32, 
0440     0, 127, 9, 10, 13, 32, 33, 40, 
0441     41, 44, 46, 61, 62, 63, 127, 0, 
0442     34, 35, 57, 58, 64, 65, 90, 91, 
0443     93, 94, 126, 9, 10, 13, 32, 40, 
0444     46, 62, 0, 127, 9, 13, 32, 0, 
0445     127, 9, 10, 13, 32, 0, 127, 0, 
0446     10, 13, 40, 41, 92, 1, 127, 9, 
0447     13, 32, 0, 127, 9, 10, 13, 32, 
0448     0, 127, 13, 0, 127, 0, 10, 13, 
0449     40, 41, 92, 1, 127, 9, 10, 13, 
0450     32, 33, 40, 41, 44, 46, 61, 63, 
0451     127, 0, 34, 35, 57, 58, 64, 65, 
0452     90, 91, 93, 94, 126, 9, 13, 32, 
0453     0, 127, 9, 10, 13, 32, 0, 127, 
0454     9, 10, 13, 32, 33, 40, 41, 44, 
0455     46, 61, 62, 63, 127, 0, 34, 35, 
0456     57, 58, 64, 65, 90, 91, 93, 94, 
0457     126, 9, 10, 13, 32, 40, 0, 127, 
0458     9, 10, 13, 32, 40, 0, 127, 9, 
0459     13, 32, 0, 127, 9, 10, 13, 32, 
0460     0, 127, 0, 10, 13, 40, 41, 92, 
0461     1, 127, 9, 13, 32, 0, 127, 9, 
0462     10, 13, 32, 0, 127, 13, 0, 127, 
0463     0, 10, 13, 40, 41, 92, 1, 127, 
0464     0, 10, 13, 40, 41, 92, 1, 127, 
0465     9, 13, 32, 0, 127, 9, 10, 13, 
0466     32, 0, 127, 13, 0, 127, 0, 10, 
0467     13, 40, 41, 92, 1, 127, 9, 10, 
0468     13, 32, 33, 40, 41, 44, 46, 61, 
0469     63, 127, 0, 34, 35, 57, 58, 64, 
0470     65, 90, 91, 93, 94, 126, 0, 10, 
0471     13, 40, 41, 92, 1, 127, 9, 13, 
0472     32, 0, 127, 9, 10, 13, 32, 0, 
0473     127, 13, 0, 127, 0, 10, 13, 40, 
0474     41, 92, 1, 127, 0, 9, 10, 13, 
0475     32, 91, 92, 93, 1, 127, 9, 13, 
0476     32, 0, 127, 9, 10, 13, 32, 0, 
0477     127, 13, 0, 127, 0, 9, 10, 13, 
0478     32, 91, 92, 93, 1, 127, 9, 10, 
0479     13, 32, 40, 62, 0, 127, 9, 13, 
0480     32, 0, 127, 9, 10, 13, 32, 0, 
0481     127, 0, 10, 13, 40, 41, 92, 1, 
0482     127, 9, 13, 32, 0, 127, 9, 10, 
0483     13, 32, 0, 127, 13, 0, 127, 0, 
0484     10, 13, 40, 41, 92, 1, 127, 0, 
0485     9, 10, 13, 32, 34, 92, 1, 127, 
0486     0, 9, 10, 13, 32, 34, 92, 1, 
0487     127, 9, 13, 32, 0, 127, 9, 10, 
0488     13, 32, 0, 127, 13, 0, 127, 0, 
0489     9, 10, 13, 32, 34, 92, 1, 127, 
0490     0, 10, 13, 40, 41, 92, 1, 127, 
0491     9, 13, 32, 0, 127, 9, 10, 13, 
0492     32, 0, 127, 13, 0, 127, 0, 10, 
0493     13, 40, 41, 92, 1, 127, 0, 10, 
0494     13, 40, 41, 92, 1, 127, 9, 13, 
0495     32, 0, 127, 9, 10, 13, 32, 0, 
0496     127, 13, 0, 127, 0, 10, 13, 40, 
0497     41, 92, 1, 127, 9, 10, 13, 32, 
0498     40, 60, 62, 0, 127, 10, 13, 40, 
0499     60, 62, 9, 32, 9, 10, 13, 32, 
0500     40, 62, 9, 10, 32, 10, 13, 41, 
0501     92, 1, 39, 42, 127, 9, 32, 9, 
0502     10, 32, 0, 127, 9, 10, 13, 32, 
0503     40, 44, 0, 127, 13, 0, 127, 10, 
0504     13, 0, 127, 9, 10, 13, 32, 40, 
0505     44, 0, 127, 9, 13, 32, 0, 127, 
0506     9, 10, 13, 32, 0, 127, 0, 10, 
0507     13, 40, 41, 92, 1, 127, 9, 13, 
0508     32, 0, 127, 9, 10, 13, 32, 0, 
0509     127, 13, 0, 127, 0, 10, 13, 40, 
0510     41, 92, 1, 127, 9, 10, 13, 32, 
0511     40, 60, 0, 127, 9, 13, 32, 0, 
0512     127, 9, 10, 13, 32, 0, 127, 0, 
0513     10, 13, 40, 41, 92, 1, 127, 9, 
0514     13, 32, 0, 127, 9, 10, 13, 32, 
0515     0, 127, 13, 0, 127, 0, 10, 13, 
0516     40, 41, 92, 1, 127, 9, 10, 13, 
0517     32, 40, 60, 62, 0, 127, 10, 13, 
0518     40, 60, 62, 10, 13, 60, 62, 92, 
0519     1, 40, 42, 127, 9, 32, 9, 10, 
0520     13, 32, 41, 62, 92, 1, 127, 9, 
0521     10, 32, 0, 9, 10, 13, 32, 40, 
0522     41, 44, 92, 1, 127, 0, 10, 13, 
0523     40, 41, 92, 1, 127, 9, 13, 32, 
0524     0, 127, 9, 10, 13, 32, 0, 127, 
0525     9, 10, 13, 32, 40, 62, 0, 127, 
0526     9, 13, 32, 0, 127, 9, 10, 13, 
0527     32, 0, 127, 13, 0, 127, 0, 10, 
0528     13, 40, 41, 92, 1, 127, 0, 9, 
0529     10, 13, 32, 40, 41, 44, 92, 1, 
0530     127, 9, 13, 32, 0, 127, 9, 10, 
0531     13, 32, 0, 127, 0, 9, 10, 13, 
0532     32, 40, 41, 60, 92, 1, 127, 9, 
0533     13, 32, 0, 127, 9, 10, 13, 32, 
0534     0, 127, 0, 9, 10, 13, 32, 40, 
0535     41, 60, 62, 92, 1, 127, 10, 13, 
0536     40, 60, 62, 0, 127, 0, 10, 13, 
0537     41, 60, 62, 92, 1, 127, 9, 13, 
0538     32, 0, 127, 0, 9, 10, 13, 32, 
0539     41, 62, 92, 1, 127, 9, 10, 13, 
0540     32, 0, 127, 10, 13, 60, 62, 0, 
0541     127, 0, 9, 10, 13, 32, 40, 41, 
0542     92, 1, 127, 0, 9, 10, 13, 32, 
0543     40, 41, 92, 1, 127, 9, 13, 32, 
0544     0, 127, 9, 10, 13, 32, 0, 127, 
0545     0, 10, 13, 40, 41, 60, 62, 92, 
0546     1, 127, 9, 13, 32, 0, 127, 0, 
0547     9, 10, 13, 32, 40, 41, 62, 92, 
0548     1, 127, 0, 10, 13, 40, 41, 92, 
0549     1, 127, 9, 13, 32, 0, 127, 9, 
0550     10, 13, 32, 0, 127, 13, 0, 127, 
0551     0, 10, 13, 40, 41, 92, 1, 127, 
0552     9, 10, 13, 32, 0, 127, 0, 9, 
0553     10, 13, 32, 40, 41, 44, 92, 1, 
0554     127, 0, 9, 10, 13, 32, 40, 41, 
0555     44, 92, 1, 127, 9, 13, 32, 0, 
0556     127, 9, 10, 13, 32, 0, 127, 0, 
0557     9, 10, 13, 32, 40, 41, 60, 92, 
0558     1, 127, 9, 13, 32, 0, 127, 9, 
0559     10, 13, 32, 0, 127, 0, 9, 10, 
0560     13, 32, 41, 60, 62, 92, 1, 127, 
0561     9, 13, 32, 0, 127, 9, 10, 13, 
0562     32, 0, 127, 10, 13, 60, 62, 0, 
0563     127, 0, 9, 10, 13, 32, 40, 41, 
0564     92, 1, 127, 0, 9, 10, 13, 32, 
0565     40, 41, 92, 1, 127, 10, 13, 60, 
0566     62, 0, 127, 9, 10, 13, 32, 41, 
0567     92, 1, 39, 42, 127, 9, 10, 13, 
0568     32, 41, 92, 1, 39, 42, 127, 9, 
0569     13, 32, 0, 127, 9, 10, 13, 32, 
0570     0, 127, 10, 13, 60, 62, 92, 1, 
0571     40, 42, 127, 9, 32, 9, 10, 13, 
0572     32, 41, 62, 92, 1, 127, 9, 10, 
0573     32, 0, 9, 10, 13, 32, 40, 41, 
0574     44, 92, 1, 127, 0, 9, 10, 13, 
0575     32, 40, 41, 44, 92, 1, 127, 9, 
0576     13, 32, 0, 127, 9, 10, 13, 32, 
0577     0, 127, 0, 9, 10, 13, 32, 40, 
0578     41, 60, 92, 1, 127, 9, 13, 32, 
0579     0, 127, 9, 10, 13, 32, 0, 127, 
0580     0, 9, 10, 13, 32, 40, 41, 60, 
0581     62, 92, 1, 127, 0, 10, 13, 40, 
0582     41, 60, 62, 92, 1, 127, 9, 13, 
0583     32, 0, 127, 0, 9, 10, 13, 32, 
0584     41, 62, 92, 1, 127, 9, 10, 13, 
0585     32, 0, 127, 9, 10, 13, 32, 40, 
0586     60, 62, 0, 127, 10, 13, 60, 62, 
0587     0, 127, 0, 9, 10, 13, 32, 40, 
0588     41, 92, 1, 127, 0, 9, 10, 13, 
0589     32, 40, 41, 92, 1, 127, 9, 13, 
0590     32, 0, 127, 9, 10, 13, 32, 0, 
0591     127, 10, 13, 60, 62, 0, 127, 9, 
0592     10, 13, 32, 41, 92, 1, 39, 42, 
0593     127, 9, 10, 13, 32, 41, 92, 1, 
0594     39, 42, 127, 10, 13, 40, 60, 62, 
0595     0, 127, 9, 13, 32, 0, 127, 9, 
0596     10, 13, 32, 40, 62, 0, 127, 9, 
0597     10, 13, 32, 0, 127, 0, 10, 13, 
0598     40, 41, 92, 1, 127, 9, 13, 32, 
0599     0, 127, 9, 10, 13, 32, 0, 127, 
0600     13, 0, 127, 0, 10, 13, 40, 41, 
0601     92, 1, 127, 0, 10, 13, 41, 60, 
0602     62, 92, 1, 127, 9, 13, 32, 0, 
0603     127, 0, 9, 10, 13, 32, 41, 62, 
0604     92, 1, 127, 9, 10, 13, 32, 0, 
0605     127, 10, 13, 60, 62, 0, 127, 0, 
0606     9, 10, 13, 32, 40, 41, 92, 1, 
0607     127, 0, 9, 10, 13, 32, 40, 41, 
0608     92, 1, 127, 9, 13, 32, 0, 127, 
0609     9, 10, 13, 32, 0, 127, 0, 10, 
0610     13, 40, 41, 60, 62, 92, 1, 127, 
0611     9, 13, 32, 0, 127, 0, 9, 10, 
0612     13, 32, 40, 41, 62, 92, 1, 127, 
0613     0, 10, 13, 40, 41, 92, 1, 127, 
0614     9, 13, 32, 0, 127, 9, 10, 13, 
0615     32, 0, 127, 13, 0, 127, 0, 10, 
0616     13, 40, 41, 92, 1, 127, 9, 10, 
0617     13, 32, 0, 127, 0, 9, 10, 13, 
0618     32, 40, 41, 44, 92, 1, 127, 0, 
0619     10, 13, 40, 41, 92, 1, 127, 9, 
0620     13, 32, 0, 127, 9, 10, 13, 32, 
0621     0, 127, 9, 10, 13, 32, 40, 60, 
0622     62, 0, 127, 10, 13, 40, 60, 62, 
0623     0, 127, 0, 10, 13, 41, 60, 62, 
0624     92, 1, 127, 10, 13, 60, 62, 0, 
0625     127, 9, 13, 32, 0, 127, 9, 10, 
0626     13, 32, 0, 127, 0, 10, 13, 40, 
0627     41, 60, 62, 92, 1, 127, 9, 13, 
0628     32, 0, 127, 0, 9, 10, 13, 32, 
0629     40, 41, 62, 92, 1, 127, 9, 10, 
0630     13, 32, 0, 127, 13, 0, 127, 0, 
0631     10, 13, 40, 41, 92, 1, 127, 10, 
0632     13, 60, 62, 0, 127, 0, 9, 10, 
0633     13, 32, 40, 41, 92, 1, 127, 0, 
0634     9, 10, 13, 32, 40, 41, 92, 1, 
0635     127, 0, 9, 10, 13, 32, 40, 41, 
0636     44, 92, 1, 127, 9, 13, 32, 0, 
0637     127, 9, 10, 13, 32, 0, 127, 0, 
0638     9, 10, 13, 32, 40, 41, 60, 92, 
0639     1, 127, 9, 13, 32, 0, 127, 9, 
0640     10, 13, 32, 0, 127, 0, 9, 10, 
0641     13, 32, 40, 41, 60, 62, 92, 1, 
0642     127, 0, 10, 13, 40, 41, 60, 62, 
0643     92, 1, 127, 10, 13, 60, 62, 0, 
0644     127, 9, 13, 32, 0, 127, 9, 10, 
0645     13, 32, 0, 127, 10, 13, 60, 62, 
0646     0, 127, 0, 9, 10, 13, 32, 40, 
0647     41, 92, 1, 127, 0, 9, 10, 13, 
0648     32, 40, 41, 92, 1, 127, 13, 79, 
0649     111, 0, 127, 13, 0, 127, 10, 13, 
0650     0, 127, 9, 10, 13, 32, 92, 1, 
0651     33, 35, 127, 9, 10, 13, 32, 34, 
0652     92, 1, 127, 9, 32, 9, 10, 32, 
0653     0, 127, 10, 13, 41, 92, 1, 39, 
0654     42, 127, 9, 32, 9, 10, 32, 0, 
0655     127, 9, 10, 13, 32, 34, 40, 45, 
0656     61, 63, 33, 39, 42, 43, 47, 57, 
0657     65, 90, 94, 126, 9, 32, 9, 10, 
0658     32, 9, 10, 13, 32, 33, 40, 46, 
0659     61, 64, 35, 39, 42, 43, 45, 57, 
0660     63, 90, 94, 126, 9, 10, 13, 32, 
0661     40, 46, 64, 9, 32, 9, 10, 32, 
0662     10, 13, 41, 92, 1, 39, 42, 127, 
0663     9, 32, 9, 10, 32, 0, 127, 9, 
0664     10, 13, 32, 33, 40, 45, 61, 63, 
0665     91, 35, 39, 42, 43, 47, 57, 65, 
0666     90, 94, 126, 9, 32, 9, 10, 32, 
0667     9, 10, 13, 32, 33, 40, 46, 62, 
0668     35, 39, 42, 43, 45, 57, 61, 63, 
0669     65, 90, 94, 126, 9, 10, 13, 32, 
0670     40, 46, 62, 9, 32, 9, 10, 32, 
0671     10, 13, 41, 92, 1, 39, 42, 127, 
0672     9, 32, 9, 10, 32, 0, 127, 9, 
0673     10, 13, 32, 33, 40, 45, 61, 63, 
0674     35, 39, 42, 43, 47, 57, 65, 90, 
0675     94, 126, 9, 32, 9, 10, 32, 9, 
0676     10, 13, 32, 33, 40, 46, 62, 35, 
0677     39, 42, 43, 45, 57, 61, 63, 65, 
0678     90, 94, 126, 9, 10, 13, 32, 34, 
0679     40, 45, 60, 61, 63, 33, 39, 42, 
0680     43, 47, 57, 65, 90, 94, 126, 9, 
0681     10, 13, 32, 34, 40, 45, 60, 61, 
0682     63, 33, 39, 42, 43, 47, 57, 65, 
0683     90, 94, 126, 9, 32, 9, 10, 32, 
0684     10, 13, 41, 92, 1, 39, 42, 127, 
0685     9, 32, 9, 10, 32, 0, 127, 10, 
0686     13, 41, 92, 1, 39, 42, 127, 9, 
0687     32, 9, 10, 32, 0, 127, 9, 10, 
0688     13, 32, 33, 40, 45, 61, 63, 35, 
0689     39, 42, 43, 47, 57, 65, 90, 94, 
0690     126, 10, 13, 41, 92, 1, 39, 42, 
0691     127, 9, 32, 9, 10, 32, -128, -1, 
0692     9, 10, 13, 32, 92, 93, 1, 90, 
0693     94, 127, 9, 32, 9, 10, 32, 0, 
0694     127, 9, 10, 13, 32, 40, 62, 9, 
0695     32, 9, 10, 32, 10, 13, 41, 92, 
0696     1, 39, 42, 127, 9, 32, 9, 10, 
0697     32, -128, -1, 9, 10, 13, 32, 92, 
0698     1, 33, 35, 127, 9, 10, 13, 32, 
0699     34, 92, 1, 127, 9, 32, 9, 10, 
0700     32, 0, 127, 10, 13, 41, 92, 1, 
0701     39, 42, 127, 9, 32, 9, 10, 32, 
0702     0, 127, 10, 13, 41, 92, 1, 39, 
0703     42, 127, 9, 32, 9, 10, 32, 0, 
0704     127, 9, 10, 32, 9, 10, 13, 32, 
0705     34, 40, 41, 44, 46, 60, 61, 63, 
0706     127, 0, 31, 33, 57, 58, 64, 65, 
0707     90, 91, 93, 94, 126, 9, 10, 13, 
0708     32, 34, 40, 41, 44, 46, 60, 61, 
0709     63, 127, 0, 31, 33, 57, 58, 64, 
0710     65, 90, 91, 93, 94, 126, 9, 13, 
0711     32, 0, 127, 9, 10, 13, 32, 0, 
0712     127, 9, 10, 13, 32, 34, 40, 41, 
0713     44, 60, 61, 63, 127, 0, 31, 33, 
0714     57, 58, 64, 65, 90, 91, 93, 94, 
0715     126, 9, 13, 32, 0, 127, 9, 10, 
0716     13, 32, 0, 127, 0, 9, 10, 13, 
0717     32, 34, 92, 1, 127, 0, 9, 10, 
0718     13, 32, 34, 92, 1, 127, 9, 13, 
0719     32, 0, 127, 9, 10, 13, 32, 0, 
0720     127, 13, 0, 127, 0, 9, 10, 13, 
0721     32, 34, 92, 1, 127, 0, 10, 13, 
0722     40, 41, 92, 1, 127, 9, 13, 32, 
0723     0, 127, 9, 10, 13, 32, 0, 127, 
0724     13, 0, 127, 0, 10, 13, 40, 41, 
0725     92, 1, 127, 9, 10, 13, 32, 34, 
0726     40, 41, 44, 46, 61, 63, 127, 0, 
0727     31, 33, 57, 58, 64, 65, 90, 91, 
0728     93, 94, 126, 9, 13, 32, 0, 127, 
0729     9, 10, 13, 32, 0, 127, 9, 10, 
0730     13, 32, 33, 40, 41, 44, 46, 61, 
0731     64, 127, 0, 34, 35, 57, 58, 62, 
0732     63, 90, 91, 93, 94, 126, 9, 10, 
0733     13, 32, 40, 46, 64, 0, 127, 9, 
0734     13, 32, 0, 127, 9, 10, 13, 32, 
0735     0, 127, 0, 10, 13, 40, 41, 92, 
0736     1, 127, 9, 13, 32, 0, 127, 9, 
0737     10, 13, 32, 0, 127, 13, 0, 127, 
0738     0, 10, 13, 40, 41, 92, 1, 127, 
0739     9, 10, 13, 32, 33, 40, 41, 44, 
0740     46, 61, 63, 91, 127, 0, 34, 35, 
0741     57, 58, 64, 65, 90, 92, 93, 94, 
0742     126, 9, 13, 32, 0, 127, 9, 10, 
0743     13, 32, 0, 127, 9, 10, 13, 32, 
0744     33, 40, 41, 44, 46, 61, 62, 63, 
0745     127, 0, 34, 35, 57, 58, 64, 65, 
0746     90, 91, 93, 94, 126, 9, 10, 13, 
0747     32, 40, 46, 62, 0, 127, 9, 13, 
0748     32, 0, 127, 9, 10, 13, 32, 0, 
0749     127, 0, 10, 13, 40, 41, 92, 1, 
0750     127, 9, 13, 32, 0, 127, 9, 10, 
0751     13, 32, 0, 127, 13, 0, 127, 0, 
0752     10, 13, 40, 41, 92, 1, 127, 9, 
0753     10, 13, 32, 33, 40, 41, 44, 46, 
0754     61, 63, 127, 0, 34, 35, 57, 58, 
0755     64, 65, 90, 91, 93, 94, 126, 9, 
0756     13, 32, 0, 127, 9, 10, 13, 32, 
0757     0, 127, 9, 10, 13, 32, 33, 40, 
0758     41, 44, 46, 61, 62, 63, 127, 0, 
0759     34, 35, 57, 58, 64, 65, 90, 91, 
0760     93, 94, 126, 9, 10, 13, 32, 34, 
0761     40, 41, 44, 46, 60, 61, 63, 127, 
0762     0, 31, 33, 57, 58, 64, 65, 90, 
0763     91, 93, 94, 126, 9, 10, 13, 32, 
0764     34, 40, 41, 44, 46, 60, 61, 63, 
0765     127, 0, 31, 33, 57, 58, 64, 65, 
0766     90, 91, 93, 94, 126, 9, 13, 32, 
0767     0, 127, 9, 10, 13, 32, 0, 127, 
0768     0, 10, 13, 40, 41, 92, 1, 127, 
0769     9, 13, 32, 0, 127, 9, 10, 13, 
0770     32, 0, 127, 13, 0, 127, 0, 10, 
0771     13, 40, 41, 92, 1, 127, 0, 10, 
0772     13, 40, 41, 92, 1, 127, 9, 13, 
0773     32, 0, 127, 9, 10, 13, 32, 0, 
0774     127, 13, 0, 127, 0, 10, 13, 40, 
0775     41, 92, 1, 127, 9, 10, 13, 32, 
0776     33, 40, 41, 44, 46, 61, 63, 127, 
0777     0, 34, 35, 57, 58, 64, 65, 90, 
0778     91, 93, 94, 126, 0, 10, 13, 40, 
0779     41, 92, 1, 127, 9, 13, 32, 0, 
0780     127, 9, 10, 13, 32, 0, 127, 13, 
0781     0, 127, 0, 10, 13, 40, 41, 92, 
0782     1, 127, 0, 9, 10, 13, 32, 91, 
0783     92, 93, 1, 127, 9, 13, 32, 0, 
0784     127, 9, 10, 13, 32, 0, 127, 13, 
0785     0, 127, 0, 9, 10, 13, 32, 91, 
0786     92, 93, 1, 127, 9, 10, 13, 32, 
0787     40, 62, 0, 127, 9, 13, 32, 0, 
0788     127, 9, 10, 13, 32, 0, 127, 0, 
0789     10, 13, 40, 41, 92, 1, 127, 9, 
0790     13, 32, 0, 127, 9, 10, 13, 32, 
0791     0, 127, 13, 0, 127, 0, 10, 13, 
0792     40, 41, 92, 1, 127, 0, 9, 10, 
0793     13, 32, 34, 92, 1, 127, 0, 9, 
0794     10, 13, 32, 34, 92, 1, 127, 9, 
0795     13, 32, 0, 127, 9, 10, 13, 32, 
0796     0, 127, 13, 0, 127, 0, 9, 10, 
0797     13, 32, 34, 92, 1, 127, 0, 10, 
0798     13, 40, 41, 92, 1, 127, 9, 13, 
0799     32, 0, 127, 9, 10, 13, 32, 0, 
0800     127, 13, 0, 127, 0, 10, 13, 40, 
0801     41, 92, 1, 127, 0, 10, 13, 40, 
0802     41, 92, 1, 127, 9, 13, 32, 0, 
0803     127, 9, 10, 13, 32, 0, 127, 13, 
0804     0, 127, 0, 10, 13, 40, 41, 92, 
0805     1, 127, 9, 10, 13, 32, 0, 127, 
0806     13, 73, 76, 77, 82, 105, 108, 109, 
0807     114, 33, 57, 59, 126, 13, 9, 13, 
0808     32, 73, 76, 77, 82, 105, 108, 109, 
0809     114, 33, 57, 59, 126, 9, 13, 32, 
0810     73, 76, 77, 82, 105, 108, 109, 114, 
0811     33, 57, 59, 126, 9, 13, 32, 73, 
0812     76, 77, 82, 105, 108, 109, 114, 33, 
0813     57, 59, 126, 9, 13, 32, 73, 76, 
0814     77, 82, 105, 108, 109, 114, 33, 57, 
0815     59, 126, 9, 13, 32, 73, 76, 77, 
0816     82, 105, 108, 109, 114, 33, 57, 59, 
0817     126, 9, 13, 32, 73, 76, 77, 82, 
0818     105, 108, 109, 114, 33, 57, 59, 126, 
0819     9, 13, 32, 73, 76, 77, 82, 105, 
0820     108, 109, 114, 33, 57, 59, 126, 9, 
0821     13, 32, 73, 76, 77, 82, 105, 108, 
0822     109, 114, 33, 57, 59, 126, 9, 13, 
0823     32, 73, 76, 77, 82, 105, 108, 109, 
0824     114, 33, 57, 59, 126, 9, 13, 32, 
0825     73, 76, 77, 82, 105, 108, 109, 114, 
0826     33, 57, 59, 126, 9, 13, 32, 73, 
0827     76, 77, 82, 105, 108, 109, 114, 33, 
0828     57, 59, 126, 9, 13, 32, 73, 76, 
0829     77, 82, 105, 108, 109, 114, 33, 57, 
0830     59, 126, 9, 13, 32, 73, 76, 77, 
0831     82, 105, 108, 109, 114, 33, 57, 59, 
0832     126, 9, 13, 32, 73, 76, 77, 82, 
0833     105, 108, 109, 114, 33, 57, 59, 126, 
0834     9, 13, 32, 73, 76, 77, 82, 105, 
0835     108, 109, 114, 33, 57, 59, 126, 9, 
0836     13, 32, 73, 76, 77, 82, 105, 108, 
0837     109, 114, 33, 57, 59, 126, 9, 13, 
0838     32, 73, 76, 77, 82, 105, 108, 109, 
0839     114, 33, 57, 59, 126, 9, 13, 32, 
0840     73, 76, 77, 82, 105, 108, 109, 114, 
0841     33, 57, 59, 126, 9, 13, 32, 73, 
0842     76, 77, 82, 105, 108, 109, 114, 33, 
0843     57, 59, 126, 9, 13, 32, 73, 76, 
0844     77, 82, 105, 108, 109, 114, 33, 57, 
0845     59, 126, 9, 13, 32, 73, 76, 77, 
0846     82, 105, 108, 109, 114, 33, 57, 59, 
0847     126, 9, 13, 32, 73, 76, 77, 82, 
0848     105, 108, 109, 114, 33, 57, 59, 126, 
0849     9, 13, 32, 73, 76, 77, 82, 105, 
0850     108, 109, 114, 33, 57, 59, 126, 9, 
0851     13, 32, 73, 76, 77, 82, 105, 108, 
0852     109, 114, 33, 57, 59, 126, 9, 13, 
0853     32, 73, 76, 77, 82, 105, 108, 109, 
0854     114, 33, 57, 59, 126, 9, 13, 32, 
0855     73, 76, 77, 82, 105, 108, 109, 114, 
0856     33, 57, 59, 126, 9, 13, 32, 73, 
0857     76, 77, 82, 105, 108, 109, 114, 33, 
0858     57, 59, 126, 9, 13, 32, 73, 76, 
0859     77, 82, 105, 108, 109, 114, 33, 57, 
0860     59, 126, 9, 13, 32, 73, 76, 77, 
0861     82, 105, 108, 109, 114, 33, 57, 59, 
0862     126, 9, 13, 32, 73, 76, 77, 82, 
0863     105, 108, 109, 114, 33, 57, 59, 126, 
0864     9, 13, 32, 73, 76, 77, 82, 105, 
0865     108, 109, 114, 33, 57, 59, 126, 9, 
0866     13, 32, 73, 76, 77, 82, 105, 108, 
0867     109, 114, 33, 57, 59, 126, 9, 13, 
0868     32, 73, 76, 77, 82, 105, 108, 109, 
0869     114, 33, 57, 59, 126, 9, 13, 32, 
0870     73, 76, 77, 82, 105, 108, 109, 114, 
0871     33, 57, 59, 126, 9, 13, 32, 73, 
0872     76, 77, 82, 105, 108, 109, 114, 33, 
0873     57, 59, 126, 9, 13, 32, 73, 76, 
0874     77, 82, 105, 108, 109, 114, 33, 57, 
0875     59, 126, 9, 13, 32, 73, 76, 77, 
0876     82, 105, 108, 109, 114, 33, 57, 59, 
0877     126, 9, 13, 32, 73, 76, 77, 82, 
0878     105, 108, 109, 114, 33, 57, 59, 126, 
0879     9, 13, 32, 73, 76, 77, 82, 105, 
0880     108, 109, 114, 33, 57, 59, 126, 9, 
0881     13, 32, 73, 76, 77, 82, 105, 108, 
0882     109, 114, 33, 57, 59, 126, 9, 13, 
0883     32, 73, 76, 77, 82, 105, 108, 109, 
0884     114, 33, 57, 59, 126, 9, 13, 32, 
0885     73, 76, 77, 82, 105, 108, 109, 114, 
0886     33, 57, 59, 126, 9, 13, 32, 73, 
0887     76, 77, 82, 105, 108, 109, 114, 33, 
0888     57, 59, 126, 9, 13, 32, 73, 76, 
0889     77, 82, 105, 108, 109, 114, 33, 57, 
0890     59, 126, 9, 13, 32, 73, 76, 77, 
0891     82, 105, 108, 109, 114, 33, 57, 59, 
0892     126, 9, 13, 32, 73, 76, 77, 82, 
0893     105, 108, 109, 114, 33, 57, 59, 126, 
0894     9, 13, 32, 73, 76, 77, 82, 105, 
0895     108, 109, 114, 33, 57, 59, 126, 9, 
0896     13, 32, 73, 76, 77, 82, 105, 108, 
0897     109, 114, 33, 57, 59, 126, 9, 13, 
0898     32, 73, 76, 77, 82, 105, 108, 109, 
0899     114, 33, 57, 59, 126, 9, 13, 32, 
0900     73, 76, 77, 82, 105, 108, 109, 114, 
0901     33, 57, 59, 126, 9, 13, 32, 73, 
0902     76, 77, 82, 105, 108, 109, 114, 33, 
0903     57, 59, 126, 9, 13, 32, 73, 76, 
0904     77, 82, 105, 108, 109, 114, 33, 57, 
0905     59, 126, 9, 13, 32, 73, 76, 77, 
0906     82, 105, 108, 109, 114, 33, 57, 59, 
0907     126, 9, 13, 32, 73, 76, 77, 82, 
0908     105, 108, 109, 114, 33, 57, 59, 126, 
0909     9, 13, 32, 73, 76, 77, 82, 105, 
0910     108, 109, 114, 33, 57, 59, 126, 9, 
0911     13, 32, 73, 76, 77, 82, 105, 108, 
0912     109, 114, 33, 57, 59, 126, 9, 13, 
0913     32, 73, 76, 77, 82, 105, 108, 109, 
0914     114, 33, 57, 59, 126, 9, 13, 32, 
0915     73, 76, 77, 82, 105, 108, 109, 114, 
0916     33, 57, 59, 126, 9, 13, 32, 73, 
0917     76, 77, 82, 105, 108, 109, 114, 33, 
0918     57, 59, 126, 9, 13, 32, 73, 76, 
0919     77, 82, 105, 108, 109, 114, 33, 57, 
0920     59, 126, 9, 13, 32, 73, 76, 77, 
0921     82, 105, 108, 109, 114, 33, 57, 59, 
0922     126, 9, 13, 32, 73, 76, 77, 82, 
0923     105, 108, 109, 114, 33, 57, 59, 126, 
0924     9, 13, 32, 73, 76, 77, 82, 105, 
0925     108, 109, 114, 33, 57, 59, 126, 9, 
0926     13, 32, 73, 76, 77, 82, 105, 108, 
0927     109, 114, 33, 57, 59, 126, 9, 13, 
0928     32, 73, 76, 77, 82, 105, 108, 109, 
0929     114, 33, 57, 59, 126, 9, 13, 32, 
0930     73, 76, 77, 82, 105, 108, 109, 114, 
0931     33, 57, 59, 126, 9, 13, 32, 73, 
0932     76, 77, 82, 105, 108, 109, 114, 33, 
0933     57, 59, 126, 9, 13, 32, 73, 76, 
0934     77, 82, 105, 108, 109, 114, 33, 57, 
0935     59, 126, 9, 13, 32, 73, 76, 77, 
0936     82, 105, 108, 109, 114, 33, 57, 59, 
0937     126, 9, 13, 32, 73, 76, 77, 82, 
0938     105, 108, 109, 114, 33, 57, 59, 126, 
0939     9, 13, 32, 73, 76, 77, 82, 105, 
0940     108, 109, 114, 33, 57, 59, 126, 9, 
0941     13, 32, 73, 76, 77, 82, 105, 108, 
0942     109, 114, 33, 57, 59, 126, 9, 13, 
0943     32, 73, 76, 77, 82, 105, 108, 109, 
0944     114, 33, 57, 59, 126, 9, 13, 32, 
0945     73, 76, 77, 82, 105, 108, 109, 114, 
0946     33, 57, 59, 126, 9, 13, 32, 73, 
0947     76, 77, 82, 105, 108, 109, 114, 33, 
0948     57, 59, 126, 9, 13, 32, 73, 76, 
0949     77, 82, 105, 108, 109, 114, 33, 57, 
0950     59, 126, 9, 13, 32, 73, 76, 77, 
0951     82, 105, 108, 109, 114, 33, 57, 59, 
0952     126, 9, 13, 32, 73, 76, 77, 82, 
0953     105, 108, 109, 114, 33, 57, 59, 126, 
0954     9, 13, 32, 73, 76, 77, 82, 105, 
0955     108, 109, 114, 33, 57, 59, 126, 9, 
0956     13, 32, 73, 76, 77, 82, 105, 108, 
0957     109, 114, 33, 57, 59, 126, 9, 13, 
0958     32, 73, 76, 77, 82, 105, 108, 109, 
0959     114, 33, 57, 59, 126, 9, 13, 32, 
0960     73, 76, 77, 82, 105, 108, 109, 114, 
0961     33, 57, 59, 126, 9, 13, 32, 73, 
0962     76, 77, 82, 105, 108, 109, 114, 33, 
0963     57, 59, 126, 9, 13, 32, 73, 76, 
0964     77, 82, 105, 108, 109, 114, 33, 57, 
0965     59, 126, 9, 13, 32, 73, 76, 77, 
0966     82, 105, 108, 109, 114, 33, 57, 59, 
0967     126, 9, 13, 32, 73, 76, 77, 82, 
0968     105, 108, 109, 114, 33, 57, 59, 126, 
0969     9, 13, 32, 73, 76, 77, 82, 105, 
0970     108, 109, 114, 33, 57, 59, 126, 9, 
0971     13, 32, 73, 76, 77, 82, 105, 108, 
0972     109, 114, 33, 57, 59, 126, 9, 13, 
0973     32, 73, 76, 77, 82, 105, 108, 109, 
0974     114, 33, 57, 59, 126, 9, 13, 32, 
0975     73, 76, 77, 82, 105, 108, 109, 114, 
0976     33, 57, 59, 126, 9, 13, 32, 73, 
0977     76, 77, 82, 105, 108, 109, 114, 33, 
0978     57, 59, 126, 9, 13, 32, 73, 76, 
0979     77, 82, 105, 108, 109, 114, 33, 57, 
0980     59, 126, 9, 13, 32, 73, 76, 77, 
0981     82, 105, 108, 109, 114, 33, 57, 59, 
0982     126, 9, 13, 32, 73, 76, 77, 82, 
0983     105, 108, 109, 114, 33, 57, 59, 126, 
0984     9, 13, 32, 73, 76, 77, 82, 105, 
0985     108, 109, 114, 33, 57, 59, 126, 9, 
0986     13, 32, 73, 76, 77, 82, 105, 108, 
0987     109, 114, 33, 57, 59, 126, 9, 13, 
0988     32, 73, 76, 77, 82, 105, 108, 109, 
0989     114, 33, 57, 59, 126, 9, 13, 32, 
0990     73, 76, 77, 82, 105, 108, 109, 114, 
0991     33, 57, 59, 126, 9, 13, 32, 73, 
0992     76, 77, 82, 105, 108, 109, 114, 33, 
0993     57, 59, 126, 9, 13, 32, 73, 76, 
0994     77, 82, 105, 108, 109, 114, 33, 57, 
0995     59, 126, 9, 13, 32, 73, 76, 77, 
0996     82, 105, 108, 109, 114, 33, 57, 59, 
0997     126, 9, 13, 32, 73, 76, 77, 82, 
0998     105, 108, 109, 114, 33, 57, 59, 126, 
0999     9, 13, 32, 73, 76, 77, 82, 105, 
1000     108, 109, 114, 33, 57, 59, 126, 9, 
1001     13, 32, 73, 76, 77, 82, 105, 108, 
1002     109, 114, 33, 57, 59, 126, 9, 13, 
1003     32, 73, 76, 77, 82, 105, 108, 109, 
1004     114, 33, 57, 59, 126, 9, 13, 32, 
1005     73, 76, 77, 82, 105, 108, 109, 114, 
1006     33, 57, 59, 126, 0
1007 };
1008 
1009 static const int8_t _rfc5322_single_lengths[] = {
1010     0, 1, 1, 1, 2, 3, 2, 3, 
1011     3, 3, 3, 3, 2, 3, 3, 3, 
1012     3, 10, 10, 2, 3, 9, 2, 3, 
1013     3, 3, 3, 2, 3, 3, 3, 3, 
1014     1, 8, 3, 4, 3, 3, 3, 3, 
1015     3, 3, 2, 3, 3, 3, 3, 6, 
1016     2, 3, 4, 2, 3, 0, 9, 2, 
1017     3, 9, 7, 2, 3, 4, 2, 3, 
1018     0, 10, 2, 3, 8, 7, 2, 3, 
1019     4, 2, 3, 0, 9, 2, 3, 8, 
1020     5, 5, 2, 3, 3, 3, 3, 3, 
1021     3, 3, 3, 3, 3, 3, 3, 10, 
1022     10, 2, 3, 9, 2, 3, 5, 6, 
1023     2, 3, 0, 4, 2, 3, 0, 9, 
1024     2, 3, 9, 7, 2, 3, 4, 2, 
1025     3, 0, 10, 2, 3, 8, 7, 2, 
1026     3, 4, 2, 3, 0, 9, 2, 3, 
1027     8, 10, 10, 2, 3, 4, 2, 3, 
1028     0, 4, 2, 3, 0, 9, 4, 2, 
1029     3, 0, 6, 2, 3, 0, 6, 2, 
1030     3, 4, 2, 3, 0, 5, 6, 2, 
1031     3, 0, 4, 2, 3, 0, 4, 2, 
1032     3, 0, 3, 13, 13, 3, 4, 12, 
1033     3, 4, 7, 7, 3, 4, 1, 7, 
1034     6, 3, 4, 1, 6, 12, 3, 4, 
1035     12, 7, 3, 4, 6, 3, 4, 1, 
1036     6, 13, 3, 4, 13, 7, 3, 4, 
1037     6, 3, 4, 1, 6, 12, 3, 4, 
1038     13, 13, 13, 3, 4, 6, 3, 4, 
1039     1, 6, 6, 3, 4, 1, 6, 12, 
1040     6, 3, 4, 1, 6, 8, 3, 4, 
1041     1, 8, 6, 3, 4, 6, 3, 4, 
1042     1, 6, 7, 7, 3, 4, 1, 7, 
1043     6, 3, 4, 1, 6, 6, 3, 4, 
1044     1, 6, 4, 4, 2, 3, 0, 4, 
1045     2, 3, 0, 9, 4, 2, 3, 0, 
1046     6, 2, 3, 0, 6, 2, 3, 4, 
1047     2, 3, 0, 5, 6, 2, 3, 0, 
1048     4, 2, 3, 0, 6, 3, 4, 6, 
1049     3, 4, 1, 6, 12, 3, 4, 12, 
1050     7, 3, 4, 6, 3, 4, 1, 6, 
1051     13, 3, 4, 13, 7, 3, 4, 6, 
1052     3, 4, 1, 6, 12, 3, 4, 13, 
1053     5, 5, 3, 4, 6, 3, 4, 1, 
1054     6, 6, 3, 4, 1, 6, 12, 6, 
1055     3, 4, 1, 6, 8, 3, 4, 1, 
1056     8, 6, 3, 4, 6, 3, 4, 1, 
1057     6, 7, 7, 3, 4, 1, 7, 6, 
1058     3, 4, 1, 6, 6, 3, 4, 1, 
1059     6, 7, 5, 2, 6, 3, 4, 2, 
1060     3, 0, 6, 1, 2, 6, 3, 4, 
1061     6, 3, 4, 1, 6, 6, 3, 4, 
1062     6, 3, 4, 1, 6, 7, 5, 5, 
1063     2, 7, 3, 9, 6, 3, 4, 6, 
1064     3, 4, 1, 6, 9, 3, 4, 9, 
1065     3, 4, 10, 5, 7, 3, 8, 4, 
1066     4, 8, 8, 3, 4, 8, 3, 9, 
1067     6, 3, 4, 1, 6, 4, 9, 9, 
1068     3, 4, 9, 3, 4, 9, 3, 4, 
1069     4, 8, 8, 4, 6, 6, 3, 4, 
1070     5, 2, 7, 3, 9, 9, 3, 4, 
1071     9, 3, 4, 10, 8, 3, 8, 4, 
1072     7, 4, 8, 8, 3, 4, 4, 6, 
1073     6, 5, 3, 6, 4, 6, 3, 4, 
1074     1, 6, 7, 3, 8, 4, 4, 8, 
1075     8, 3, 4, 8, 3, 9, 6, 3, 
1076     4, 1, 6, 4, 9, 6, 3, 4, 
1077     7, 5, 7, 4, 3, 4, 8, 3, 
1078     9, 4, 1, 6, 4, 8, 8, 9, 
1079     3, 4, 9, 3, 4, 10, 8, 4, 
1080     3, 4, 4, 8, 8, 3, 1, 2, 
1081     5, 6, 2, 3, 0, 4, 2, 3, 
1082     0, 9, 2, 3, 9, 7, 2, 3, 
1083     4, 2, 3, 0, 10, 2, 3, 8, 
1084     7, 2, 3, 4, 2, 3, 0, 9, 
1085     2, 3, 8, 10, 10, 2, 3, 4, 
1086     2, 3, 0, 4, 2, 3, 0, 9, 
1087     4, 2, 3, 0, 6, 2, 3, 0, 
1088     6, 2, 3, 4, 2, 3, 0, 5, 
1089     6, 2, 3, 0, 4, 2, 3, 0, 
1090     4, 2, 3, 0, 3, 13, 13, 3, 
1091     4, 12, 3, 4, 7, 7, 3, 4, 
1092     1, 7, 6, 3, 4, 1, 6, 12, 
1093     3, 4, 12, 7, 3, 4, 6, 3, 
1094     4, 1, 6, 13, 3, 4, 13, 7, 
1095     3, 4, 6, 3, 4, 1, 6, 12, 
1096     3, 4, 13, 13, 13, 3, 4, 6, 
1097     3, 4, 1, 6, 6, 3, 4, 1, 
1098     6, 12, 6, 3, 4, 1, 6, 8, 
1099     3, 4, 1, 8, 6, 3, 4, 6, 
1100     3, 4, 1, 6, 7, 7, 3, 4, 
1101     1, 7, 6, 3, 4, 1, 6, 6, 
1102     3, 4, 1, 6, 4, 9, 1, 11, 
1103     11, 11, 11, 11, 11, 11, 11, 11, 
1104     11, 11, 11, 11, 11, 11, 11, 11, 
1105     11, 11, 11, 11, 11, 11, 11, 11, 
1106     11, 11, 11, 11, 11, 11, 11, 11, 
1107     11, 11, 11, 11, 11, 11, 11, 11, 
1108     11, 11, 11, 11, 11, 11, 11, 11, 
1109     11, 11, 11, 11, 11, 11, 11, 11, 
1110     11, 11, 11, 11, 11, 11, 11, 11, 
1111     11, 11, 11, 11, 11, 11, 11, 11, 
1112     11, 11, 11, 11, 11, 11, 11, 11, 
1113     11, 11, 11, 11, 11, 11, 11, 11, 
1114     11, 11, 11, 11, 11, 11, 11, 11, 
1115     11, 11, 11, 11, 11, 11, 11, 11, 
1116     11
1117 };
1118 
1119 static const int8_t _rfc5322_range_lengths[] = {
1120     0, 0, 1, 1, 1, 1, 1, 1, 
1121     1, 1, 1, 1, 1, 1, 1, 1, 
1122     0, 5, 5, 0, 0, 5, 0, 0, 
1123     1, 1, 1, 1, 1, 1, 1, 1, 
1124     1, 1, 1, 1, 1, 1, 1, 1, 
1125     1, 1, 1, 1, 1, 1, 0, 0, 
1126     0, 0, 2, 0, 0, 1, 5, 0, 
1127     0, 5, 0, 0, 0, 2, 0, 0, 
1128     1, 5, 0, 0, 6, 0, 0, 0, 
1129     2, 0, 0, 1, 5, 0, 0, 6, 
1130     0, 0, 0, 0, 1, 1, 1, 1, 
1131     1, 1, 1, 1, 1, 1, 0, 5, 
1132     5, 0, 0, 5, 0, 0, 2, 1, 
1133     0, 0, 1, 2, 0, 0, 1, 5, 
1134     0, 0, 5, 0, 0, 0, 2, 0, 
1135     0, 1, 5, 0, 0, 6, 0, 0, 
1136     0, 2, 0, 0, 1, 5, 0, 0, 
1137     6, 5, 5, 0, 0, 2, 0, 0, 
1138     1, 2, 0, 0, 1, 5, 2, 0, 
1139     0, 1, 2, 0, 0, 1, 0, 0, 
1140     0, 2, 0, 0, 1, 2, 1, 0, 
1141     0, 1, 2, 0, 0, 1, 2, 0, 
1142     0, 1, 0, 6, 6, 1, 1, 6, 
1143     1, 1, 1, 1, 1, 1, 1, 1, 
1144     1, 1, 1, 1, 1, 6, 1, 1, 
1145     6, 1, 1, 1, 1, 1, 1, 1, 
1146     1, 6, 1, 1, 6, 1, 1, 1, 
1147     1, 1, 1, 1, 1, 6, 1, 1, 
1148     6, 6, 6, 1, 1, 1, 1, 1, 
1149     1, 1, 1, 1, 1, 1, 1, 6, 
1150     1, 1, 1, 1, 1, 1, 1, 1, 
1151     1, 1, 1, 1, 1, 1, 1, 1, 
1152     1, 1, 1, 1, 1, 1, 1, 1, 
1153     1, 1, 1, 1, 1, 1, 1, 1, 
1154     1, 1, 1, 2, 0, 0, 1, 2, 
1155     0, 0, 1, 5, 2, 0, 0, 1, 
1156     2, 0, 0, 1, 0, 0, 0, 2, 
1157     0, 0, 1, 2, 1, 0, 0, 1, 
1158     2, 0, 0, 1, 1, 1, 1, 1, 
1159     1, 1, 1, 1, 6, 1, 1, 6, 
1160     1, 1, 1, 1, 1, 1, 1, 1, 
1161     6, 1, 1, 6, 1, 1, 1, 1, 
1162     1, 1, 1, 1, 6, 1, 1, 6, 
1163     1, 1, 1, 1, 1, 1, 1, 1, 
1164     1, 1, 1, 1, 1, 1, 6, 1, 
1165     1, 1, 1, 1, 1, 1, 1, 1, 
1166     1, 1, 1, 1, 1, 1, 1, 1, 
1167     1, 1, 1, 1, 1, 1, 1, 1, 
1168     1, 1, 1, 1, 1, 1, 1, 1, 
1169     1, 1, 0, 0, 0, 0, 2, 0, 
1170     0, 1, 1, 1, 1, 1, 1, 1, 
1171     1, 1, 1, 1, 1, 1, 1, 1, 
1172     1, 1, 1, 1, 1, 1, 0, 2, 
1173     0, 1, 0, 1, 1, 1, 1, 1, 
1174     1, 1, 1, 1, 1, 1, 1, 1, 
1175     1, 1, 1, 1, 1, 1, 1, 1, 
1176     1, 1, 1, 1, 1, 1, 1, 1, 
1177     1, 1, 1, 1, 1, 1, 1, 1, 
1178     1, 1, 1, 1, 1, 1, 1, 1, 
1179     1, 1, 1, 1, 2, 2, 1, 1, 
1180     2, 0, 1, 0, 1, 1, 1, 1, 
1181     1, 1, 1, 1, 1, 1, 1, 1, 
1182     1, 1, 1, 1, 1, 1, 1, 2, 
1183     2, 1, 1, 1, 1, 1, 1, 1, 
1184     1, 1, 1, 1, 1, 1, 1, 1, 
1185     1, 1, 1, 1, 1, 1, 1, 1, 
1186     1, 1, 1, 1, 1, 1, 1, 1, 
1187     1, 1, 1, 1, 1, 1, 1, 1, 
1188     1, 1, 1, 1, 1, 1, 1, 1, 
1189     1, 1, 1, 1, 1, 1, 1, 1, 
1190     1, 1, 1, 1, 1, 1, 1, 1, 
1191     2, 1, 0, 0, 1, 2, 0, 0, 
1192     1, 5, 0, 0, 5, 0, 0, 0, 
1193     2, 0, 0, 1, 5, 0, 0, 6, 
1194     0, 0, 0, 2, 0, 0, 1, 5, 
1195     0, 0, 6, 5, 5, 0, 0, 2, 
1196     0, 0, 1, 2, 0, 0, 1, 5, 
1197     2, 0, 0, 1, 2, 0, 0, 1, 
1198     0, 0, 0, 2, 0, 0, 1, 2, 
1199     1, 0, 0, 1, 2, 0, 0, 1, 
1200     2, 0, 0, 1, 0, 6, 6, 1, 
1201     1, 6, 1, 1, 1, 1, 1, 1, 
1202     1, 1, 1, 1, 1, 1, 1, 6, 
1203     1, 1, 6, 1, 1, 1, 1, 1, 
1204     1, 1, 1, 6, 1, 1, 6, 1, 
1205     1, 1, 1, 1, 1, 1, 1, 6, 
1206     1, 1, 6, 6, 6, 1, 1, 1, 
1207     1, 1, 1, 1, 1, 1, 1, 1, 
1208     1, 6, 1, 1, 1, 1, 1, 1, 
1209     1, 1, 1, 1, 1, 1, 1, 1, 
1210     1, 1, 1, 1, 1, 1, 1, 1, 
1211     1, 1, 1, 1, 1, 1, 1, 1, 
1212     1, 1, 1, 1, 1, 2, 0, 2, 
1213     2, 2, 2, 2, 2, 2, 2, 2, 
1214     2, 2, 2, 2, 2, 2, 2, 2, 
1215     2, 2, 2, 2, 2, 2, 2, 2, 
1216     2, 2, 2, 2, 2, 2, 2, 2, 
1217     2, 2, 2, 2, 2, 2, 2, 2, 
1218     2, 2, 2, 2, 2, 2, 2, 2, 
1219     2, 2, 2, 2, 2, 2, 2, 2, 
1220     2, 2, 2, 2, 2, 2, 2, 2, 
1221     2, 2, 2, 2, 2, 2, 2, 2, 
1222     2, 2, 2, 2, 2, 2, 2, 2, 
1223     2, 2, 2, 2, 2, 2, 2, 2, 
1224     2, 2, 2, 2, 2, 2, 2, 2, 
1225     2, 2, 2, 2, 2, 2, 2, 2, 
1226     2
1227 };
1228 
1229 static const int16_t _rfc5322_index_offsets[] = {
1230     0, 0, 2, 5, 8, 12, 17, 21, 
1231     26, 31, 36, 41, 46, 50, 55, 60, 
1232     65, 69, 85, 101, 104, 108, 123, 126, 
1233     130, 135, 140, 145, 149, 154, 159, 164, 
1234     169, 172, 182, 187, 193, 198, 203, 208, 
1235     213, 218, 223, 227, 232, 237, 242, 246, 
1236     253, 256, 260, 267, 270, 274, 276, 291, 
1237     294, 298, 313, 321, 324, 328, 335, 338, 
1238     342, 344, 360, 363, 367, 382, 390, 393, 
1239     397, 404, 407, 411, 413, 428, 431, 435, 
1240     450, 456, 462, 465, 469, 474, 479, 484, 
1241     489, 494, 499, 504, 509, 514, 519, 523, 
1242     539, 555, 558, 562, 577, 580, 584, 592, 
1243     600, 603, 607, 609, 616, 619, 623, 625, 
1244     640, 643, 647, 662, 670, 673, 677, 684, 
1245     687, 691, 693, 709, 712, 716, 731, 739, 
1246     742, 746, 753, 756, 760, 762, 777, 780, 
1247     784, 799, 815, 831, 834, 838, 845, 848, 
1248     852, 854, 861, 864, 868, 870, 885, 892, 
1249     895, 899, 901, 910, 913, 917, 919, 926, 
1250     929, 933, 940, 943, 947, 949, 957, 965, 
1251     968, 972, 974, 981, 984, 988, 990, 997, 
1252     1000, 1004, 1006, 1010, 1030, 1050, 1055, 1061, 
1253     1080, 1085, 1091, 1100, 1109, 1114, 1120, 1123, 
1254     1132, 1140, 1145, 1151, 1154, 1162, 1181, 1186, 
1255     1192, 1211, 1220, 1225, 1231, 1239, 1244, 1250, 
1256     1253, 1261, 1281, 1286, 1292, 1312, 1321, 1326, 
1257     1332, 1340, 1345, 1351, 1354, 1362, 1381, 1386, 
1258     1392, 1412, 1432, 1452, 1457, 1463, 1471, 1476, 
1259     1482, 1485, 1493, 1501, 1506, 1512, 1515, 1523, 
1260     1542, 1550, 1555, 1561, 1564, 1572, 1582, 1587, 
1261     1593, 1596, 1606, 1614, 1619, 1625, 1633, 1638, 
1262     1644, 1647, 1655, 1664, 1673, 1678, 1684, 1687, 
1263     1696, 1704, 1709, 1715, 1718, 1726, 1734, 1739, 
1264     1745, 1748, 1756, 1762, 1769, 1772, 1776, 1778, 
1265     1785, 1788, 1792, 1794, 1809, 1816, 1819, 1823, 
1266     1825, 1834, 1837, 1841, 1843, 1850, 1853, 1857, 
1267     1864, 1867, 1871, 1873, 1881, 1889, 1892, 1896, 
1268     1898, 1905, 1908, 1912, 1914, 1922, 1927, 1933, 
1269     1941, 1946, 1952, 1955, 1963, 1982, 1987, 1993, 
1270     2012, 2021, 2026, 2032, 2040, 2045, 2051, 2054, 
1271     2062, 2082, 2087, 2093, 2113, 2122, 2127, 2133, 
1272     2141, 2146, 2152, 2155, 2163, 2182, 2187, 2193, 
1273     2213, 2220, 2227, 2232, 2238, 2246, 2251, 2257, 
1274     2260, 2268, 2276, 2281, 2287, 2290, 2298, 2317, 
1275     2325, 2330, 2336, 2339, 2347, 2357, 2362, 2368, 
1276     2371, 2381, 2389, 2394, 2400, 2408, 2413, 2419, 
1277     2422, 2430, 2439, 2448, 2453, 2459, 2462, 2471, 
1278     2479, 2484, 2490, 2493, 2501, 2509, 2514, 2520, 
1279     2523, 2531, 2540, 2546, 2549, 2556, 2560, 2567, 
1280     2570, 2574, 2576, 2584, 2587, 2591, 2599, 2604, 
1281     2610, 2618, 2623, 2629, 2632, 2640, 2648, 2653, 
1282     2659, 2667, 2672, 2678, 2681, 2689, 2698, 2704, 
1283     2712, 2715, 2724, 2728, 2739, 2747, 2752, 2758, 
1284     2766, 2771, 2777, 2780, 2788, 2799, 2804, 2810, 
1285     2821, 2826, 2832, 2844, 2851, 2860, 2865, 2875, 
1286     2881, 2887, 2897, 2907, 2912, 2918, 2928, 2933, 
1287     2944, 2952, 2957, 2963, 2966, 2974, 2980, 2991, 
1288     3002, 3007, 3013, 3024, 3029, 3035, 3046, 3051, 
1289     3057, 3063, 3073, 3083, 3089, 3098, 3107, 3112, 
1290     3118, 3126, 3129, 3138, 3142, 3153, 3164, 3169, 
1291     3175, 3186, 3191, 3197, 3209, 3219, 3224, 3234, 
1292     3240, 3249, 3255, 3265, 3275, 3280, 3286, 3292, 
1293     3301, 3310, 3317, 3322, 3330, 3336, 3344, 3349, 
1294     3355, 3358, 3366, 3375, 3380, 3390, 3396, 3402, 
1295     3412, 3422, 3427, 3433, 3443, 3448, 3459, 3467, 
1296     3472, 3478, 3481, 3489, 3495, 3506, 3514, 3519, 
1297     3525, 3534, 3541, 3550, 3556, 3561, 3567, 3577, 
1298     3582, 3593, 3599, 3602, 3610, 3616, 3626, 3636, 
1299     3647, 3652, 3658, 3669, 3674, 3680, 3692, 3702, 
1300     3708, 3713, 3719, 3725, 3735, 3745, 3750, 3753, 
1301     3757, 3765, 3773, 3776, 3780, 3782, 3789, 3792, 
1302     3796, 3798, 3813, 3816, 3820, 3835, 3843, 3846, 
1303     3850, 3857, 3860, 3864, 3866, 3882, 3885, 3889, 
1304     3904, 3912, 3915, 3919, 3926, 3929, 3933, 3935, 
1305     3950, 3953, 3957, 3972, 3988, 4004, 4007, 4011, 
1306     4018, 4021, 4025, 4027, 4034, 4037, 4041, 4043, 
1307     4058, 4065, 4068, 4072, 4074, 4083, 4086, 4090, 
1308     4092, 4099, 4102, 4106, 4113, 4116, 4120, 4122, 
1309     4130, 4138, 4141, 4145, 4147, 4154, 4157, 4161, 
1310     4163, 4170, 4173, 4177, 4179, 4183, 4203, 4223, 
1311     4228, 4234, 4253, 4258, 4264, 4273, 4282, 4287, 
1312     4293, 4296, 4305, 4313, 4318, 4324, 4327, 4335, 
1313     4354, 4359, 4365, 4384, 4393, 4398, 4404, 4412, 
1314     4417, 4423, 4426, 4434, 4454, 4459, 4465, 4485, 
1315     4494, 4499, 4505, 4513, 4518, 4524, 4527, 4535, 
1316     4554, 4559, 4565, 4585, 4605, 4625, 4630, 4636, 
1317     4644, 4649, 4655, 4658, 4666, 4674, 4679, 4685, 
1318     4688, 4696, 4715, 4723, 4728, 4734, 4737, 4745, 
1319     4755, 4760, 4766, 4769, 4779, 4787, 4792, 4798, 
1320     4806, 4811, 4817, 4820, 4828, 4837, 4846, 4851, 
1321     4857, 4860, 4869, 4877, 4882, 4888, 4891, 4899, 
1322     4907, 4912, 4918, 4921, 4929, 4935, 4947, 4949, 
1323     4963, 4977, 4991, 5005, 5019, 5033, 5047, 5061, 
1324     5075, 5089, 5103, 5117, 5131, 5145, 5159, 5173, 
1325     5187, 5201, 5215, 5229, 5243, 5257, 5271, 5285, 
1326     5299, 5313, 5327, 5341, 5355, 5369, 5383, 5397, 
1327     5411, 5425, 5439, 5453, 5467, 5481, 5495, 5509, 
1328     5523, 5537, 5551, 5565, 5579, 5593, 5607, 5621, 
1329     5635, 5649, 5663, 5677, 5691, 5705, 5719, 5733, 
1330     5747, 5761, 5775, 5789, 5803, 5817, 5831, 5845, 
1331     5859, 5873, 5887, 5901, 5915, 5929, 5943, 5957, 
1332     5971, 5985, 5999, 6013, 6027, 6041, 6055, 6069, 
1333     6083, 6097, 6111, 6125, 6139, 6153, 6167, 6181, 
1334     6195, 6209, 6223, 6237, 6251, 6265, 6279, 6293, 
1335     6307, 6321, 6335, 6349, 6363, 6377, 6391, 6405, 
1336     6419
1337 };
1338 
1339 static const int16_t _rfc5322_indicies[] = {
1340     0, 1, 4, 3, 2, 5, 4, 2, 
1341     6, 5, 4, 2, 4, 7, 7, 3, 
1342     2, 8, 4, 3, 2, 4, 9, 9, 
1343     3, 2, 4, 10, 10, 3, 2, 4, 
1344     11, 11, 3, 2, 4, 12, 12, 3, 
1345     2, 4, 13, 13, 3, 2, 14, 4, 
1346     3, 2, 4, 15, 15, 3, 2, 4, 
1347     16, 16, 3, 2, 17, 17, 18, 3, 
1348     2, 17, 17, 19, 2, 20, 21, 22, 
1349     20, 24, 25, 23, 26, 23, 23, 23, 
1350     23, 23, 23, 23, 2, 27, 28, 29, 
1351     27, 24, 30, 23, 31, 23, 23, 23, 
1352     23, 23, 23, 23, 2, 27, 27, 2, 
1353     27, 28, 27, 2, 32, 33, 34, 32, 
1354     24, 35, 26, 23, 23, 23, 23, 23, 
1355     23, 23, 2, 36, 36, 2, 36, 37, 
1356     36, 2, 4, 38, 38, 3, 2, 4, 
1357     39, 39, 3, 2, 4, 40, 40, 3, 
1358     2, 41, 4, 3, 2, 4, 42, 42, 
1359     3, 2, 4, 43, 43, 3, 2, 4, 
1360     44, 44, 3, 2, 4, 45, 45, 3, 
1361     2, 46, 3, 2, 46, 47, 48, 46, 
1362     49, 50, 51, 51, 4, 2, 46, 5, 
1363     46, 4, 2, 46, 52, 5, 46, 4, 
1364     2, 4, 53, 53, 3, 2, 4, 54, 
1365     54, 3, 2, 4, 55, 55, 3, 2, 
1366     4, 56, 56, 3, 2, 4, 57, 57, 
1367     3, 2, 4, 58, 58, 3, 2, 59, 
1368     4, 3, 2, 4, 60, 60, 3, 2, 
1369     4, 61, 61, 3, 2, 62, 62, 63, 
1370     3, 2, 62, 62, 64, 2, 65, 66, 
1371     67, 65, 68, 69, 2, 65, 65, 2, 
1372     65, 66, 65, 2, 70, 71, 65, 72, 
1373     68, 68, 2, 68, 68, 2, 68, 70, 
1374     68, 2, 73, 2, 69, 74, 75, 69, 
1375     77, 78, 76, 76, 76, 76, 76, 76, 
1376     76, 76, 2, 69, 69, 2, 69, 74, 
1377     69, 2, 79, 80, 81, 79, 76, 82, 
1378     83, 76, 84, 76, 76, 76, 76, 76, 
1379     2, 79, 80, 81, 79, 82, 83, 84, 
1380     2, 79, 79, 2, 79, 80, 79, 2, 
1381     85, 86, 79, 87, 82, 82, 2, 82, 
1382     82, 2, 82, 85, 82, 2, 88, 2, 
1383     89, 90, 91, 89, 92, 93, 92, 92, 
1384     92, 94, 92, 92, 92, 92, 92, 2, 
1385     89, 89, 2, 89, 90, 89, 2, 95, 
1386     96, 97, 95, 92, 98, 99, 100, 92, 
1387     92, 92, 92, 92, 92, 2, 95, 96, 
1388     97, 95, 98, 101, 100, 2, 95, 95, 
1389     2, 95, 96, 95, 2, 102, 103, 95, 
1390     104, 98, 98, 2, 98, 98, 2, 98, 
1391     102, 98, 2, 105, 2, 101, 106, 107, 
1392     101, 108, 109, 108, 108, 108, 108, 108, 
1393     108, 108, 108, 2, 101, 101, 2, 101, 
1394     106, 101, 2, 95, 96, 97, 95, 108, 
1395     98, 101, 100, 108, 108, 108, 108, 108, 
1396     108, 2, 110, 111, 112, 110, 113, 2, 
1397     114, 115, 116, 114, 117, 2, 114, 114, 
1398     2, 114, 118, 114, 2, 4, 119, 119, 
1399     3, 2, 4, 120, 120, 3, 2, 4, 
1400     121, 121, 3, 2, 4, 122, 122, 3, 
1401     2, 4, 123, 123, 3, 2, 4, 124, 
1402     124, 3, 2, 4, 125, 125, 3, 2, 
1403     4, 126, 126, 3, 2, 4, 127, 127, 
1404     3, 2, 128, 128, 129, 3, 2, 128, 
1405     128, 130, 2, 131, 132, 133, 131, 135, 
1406     136, 134, 137, 134, 134, 134, 134, 134, 
1407     134, 134, 2, 138, 139, 140, 138, 135, 
1408     141, 134, 142, 134, 134, 134, 134, 134, 
1409     134, 134, 2, 138, 138, 2, 138, 139, 
1410     138, 2, 143, 144, 145, 143, 135, 146, 
1411     137, 134, 134, 134, 134, 134, 134, 134, 
1412     2, 147, 147, 2, 147, 148, 147, 2, 
1413     150, 151, 152, 150, 153, 149, 149, 2, 
1414     150, 151, 152, 150, 147, 153, 149, 2, 
1415     150, 150, 2, 150, 151, 150, 2, 154, 
1416     2, 156, 157, 147, 158, 155, 155, 2, 
1417     155, 155, 2, 155, 156, 155, 2, 159, 
1418     2, 142, 160, 161, 142, 163, 164, 162, 
1419     162, 162, 162, 162, 162, 162, 162, 2, 
1420     142, 142, 2, 142, 160, 142, 2, 165, 
1421     166, 167, 165, 162, 168, 169, 162, 170, 
1422     162, 162, 162, 162, 162, 2, 165, 166, 
1423     167, 165, 168, 169, 170, 2, 165, 165, 
1424     2, 165, 166, 165, 2, 171, 172, 165, 
1425     173, 168, 168, 2, 168, 168, 2, 168, 
1426     171, 168, 2, 2, 174, 175, 176, 177, 
1427     175, 178, 179, 178, 178, 178, 180, 178, 
1428     178, 178, 178, 178, 2, 175, 175, 2, 
1429     175, 176, 175, 2, 181, 182, 183, 181, 
1430     178, 184, 185, 186, 178, 178, 178, 178, 
1431     178, 178, 2, 181, 182, 183, 181, 184, 
1432     187, 186, 2, 181, 181, 2, 181, 182, 
1433     181, 2, 188, 189, 181, 190, 184, 184, 
1434     2, 184, 184, 2, 184, 188, 184, 2, 
1435     191, 2, 187, 192, 193, 187, 194, 195, 
1436     194, 194, 194, 194, 194, 194, 194, 194, 
1437     2, 187, 187, 2, 187, 192, 187, 2, 
1438     181, 182, 183, 181, 194, 184, 187, 186, 
1439     194, 194, 194, 194, 194, 194, 2, 196, 
1440     197, 198, 196, 200, 201, 199, 202, 199, 
1441     199, 199, 199, 199, 199, 199, 2, 203, 
1442     204, 205, 203, 135, 206, 134, 137, 134, 
1443     134, 134, 134, 134, 134, 134, 2, 207, 
1444     207, 2, 207, 208, 207, 2, 210, 211, 
1445     207, 212, 209, 209, 2, 209, 209, 2, 
1446     209, 210, 209, 2, 213, 2, 214, 215, 
1447     187, 216, 195, 195, 2, 195, 195, 2, 
1448     195, 214, 195, 2, 2, 217, 187, 192, 
1449     193, 187, 178, 195, 178, 178, 178, 178, 
1450     178, 178, 178, 178, 2, 218, 219, 175, 
1451     220, 179, 179, 2, 179, 179, 2, 179, 
1452     218, 179, 2, 2, 221, 222, 223, 224, 
1453     222, 225, 226, 180, 180, 2, 222, 222, 
1454     2, 222, 223, 222, 2, 227, 2, 228, 
1455     229, 230, 228, 231, 186, 2, 228, 228, 
1456     2, 228, 229, 228, 2, 232, 233, 228, 
1457     234, 231, 231, 2, 231, 231, 2, 231, 
1458     232, 231, 2, 235, 2, 237, 238, 239, 
1459     237, 240, 236, 236, 2, 237, 238, 239, 
1460     237, 165, 240, 236, 2, 237, 237, 2, 
1461     237, 238, 237, 2, 241, 2, 242, 243, 
1462     142, 244, 164, 164, 2, 164, 164, 2, 
1463     164, 242, 164, 2, 245, 2, 246, 247, 
1464     138, 248, 141, 141, 2, 141, 141, 2, 
1465     141, 246, 141, 2, 2, 249, 138, 250, 
1466     138, 2, 251, 252, 253, 251, 255, 256, 
1467     4, 4, 4, 257, 254, 254, 4, 4, 
1468     254, 4, 254, 4, 254, 2, 258, 259, 
1469     260, 258, 255, 261, 4, 4, 4, 262, 
1470     254, 254, 4, 4, 254, 4, 254, 4, 
1471     254, 2, 258, 5, 258, 4, 2, 258, 
1472     263, 5, 258, 4, 2, 264, 265, 266, 
1473     264, 255, 267, 4, 4, 257, 254, 254, 
1474     4, 4, 254, 4, 254, 4, 254, 2, 
1475     268, 5, 268, 4, 2, 268, 269, 5, 
1476     268, 4, 2, 4, 271, 272, 273, 271, 
1477     4, 274, 270, 2, 4, 271, 272, 273, 
1478     271, 268, 274, 270, 2, 271, 5, 271, 
1479     4, 2, 271, 275, 5, 271, 4, 2, 
1480     277, 276, 2, 4, 271, 275, 273, 271, 
1481     268, 274, 270, 2, 4, 279, 280, 4, 
1482     268, 281, 278, 2, 278, 5, 278, 4, 
1483     2, 278, 282, 5, 278, 4, 2, 284, 
1484     283, 2, 4, 282, 280, 4, 268, 281, 
1485     278, 2, 262, 285, 286, 262, 288, 289, 
1486     4, 4, 4, 287, 287, 4, 4, 287, 
1487     4, 287, 4, 287, 2, 262, 5, 262, 
1488     4, 2, 262, 290, 5, 262, 4, 2, 
1489     291, 292, 293, 291, 287, 294, 4, 4, 
1490     295, 287, 296, 4, 4, 287, 4, 287, 
1491     4, 287, 2, 291, 292, 293, 291, 294, 
1492     295, 296, 4, 2, 291, 5, 291, 4, 
1493     2, 291, 297, 5, 291, 4, 2, 4, 
1494     298, 299, 4, 291, 300, 294, 2, 294, 
1495     5, 294, 4, 2, 294, 301, 5, 294, 
1496     4, 2, 303, 302, 2, 4, 301, 299, 
1497     4, 291, 300, 294, 2, 304, 305, 306, 
1498     304, 307, 308, 4, 4, 4, 307, 307, 
1499     309, 4, 4, 307, 4, 307, 4, 307, 
1500     2, 304, 5, 304, 4, 2, 304, 310, 
1501     5, 304, 4, 2, 311, 312, 313, 311, 
1502     307, 314, 4, 4, 315, 307, 316, 307, 
1503     4, 4, 307, 4, 307, 4, 307, 2, 
1504     311, 312, 313, 311, 314, 317, 316, 4, 
1505     2, 311, 5, 311, 4, 2, 311, 318, 
1506     5, 311, 4, 2, 4, 319, 320, 4, 
1507     311, 321, 314, 2, 314, 5, 314, 4, 
1508     2, 314, 322, 5, 314, 4, 2, 324, 
1509     323, 2, 4, 322, 320, 4, 311, 321, 
1510     314, 2, 317, 325, 326, 317, 327, 328, 
1511     4, 4, 4, 327, 327, 4, 4, 327, 
1512     4, 327, 4, 327, 2, 317, 5, 317, 
1513     4, 2, 317, 329, 5, 317, 4, 2, 
1514     311, 312, 313, 311, 327, 314, 4, 4, 
1515     317, 327, 316, 327, 4, 4, 327, 4, 
1516     327, 4, 327, 2, 330, 331, 332, 330, 
1517     334, 335, 4, 4, 4, 336, 333, 333, 
1518     4, 4, 333, 4, 333, 4, 333, 2, 
1519     337, 338, 339, 337, 255, 340, 4, 4, 
1520     4, 257, 254, 254, 4, 4, 254, 4, 
1521     254, 4, 254, 2, 341, 5, 341, 4, 
1522     2, 341, 342, 5, 341, 4, 2, 4, 
1523     344, 345, 4, 341, 346, 343, 2, 343, 
1524     5, 343, 4, 2, 343, 347, 5, 343, 
1525     4, 2, 349, 348, 2, 4, 347, 345, 
1526     4, 341, 346, 343, 2, 4, 350, 351, 
1527     4, 317, 352, 328, 2, 328, 5, 328, 
1528     4, 2, 328, 353, 5, 328, 4, 2, 
1529     355, 354, 2, 4, 353, 351, 4, 317, 
1530     352, 328, 2, 317, 325, 326, 317, 307, 
1531     328, 4, 4, 4, 307, 307, 4, 4, 
1532     307, 4, 307, 4, 307, 2, 4, 356, 
1533     357, 4, 304, 358, 308, 2, 308, 5, 
1534     308, 4, 2, 308, 359, 5, 308, 4, 
1535     2, 361, 360, 2, 4, 359, 357, 4, 
1536     304, 358, 308, 2, 4, 362, 363, 364, 
1537     362, 4, 365, 366, 309, 2, 362, 5, 
1538     362, 4, 2, 362, 367, 5, 362, 4, 
1539     2, 369, 368, 2, 4, 362, 367, 364, 
1540     362, 4, 365, 366, 309, 2, 370, 371, 
1541     372, 370, 373, 316, 4, 2, 370, 5, 
1542     370, 4, 2, 370, 374, 5, 370, 4, 
1543     2, 4, 375, 376, 4, 370, 377, 373, 
1544     2, 373, 5, 373, 4, 2, 373, 378, 
1545     5, 373, 4, 2, 380, 379, 2, 4, 
1546     378, 376, 4, 370, 377, 373, 2, 4, 
1547     382, 383, 384, 382, 4, 385, 381, 2, 
1548     4, 382, 383, 384, 382, 291, 385, 381, 
1549     2, 382, 5, 382, 4, 2, 382, 386, 
1550     5, 382, 4, 2, 388, 387, 2, 4, 
1551     382, 386, 384, 382, 291, 385, 381, 2, 
1552     4, 389, 390, 4, 262, 391, 289, 2, 
1553     289, 5, 289, 4, 2, 289, 392, 5, 
1554     289, 4, 2, 394, 393, 2, 4, 392, 
1555     390, 4, 262, 391, 289, 2, 4, 395, 
1556     396, 4, 258, 397, 261, 2, 261, 5, 
1557     261, 4, 2, 261, 398, 5, 261, 4, 
1558     2, 400, 399, 2, 4, 398, 396, 4, 
1559     258, 397, 261, 2, 258, 401, 5, 258, 
1560     4, 2, 402, 403, 114, 404, 117, 117, 
1561     2, 117, 117, 2, 117, 402, 117, 2, 
1562     405, 2, 406, 407, 101, 408, 109, 109, 
1563     2, 109, 109, 2, 109, 406, 109, 2, 
1564     409, 2, 101, 106, 107, 101, 92, 109, 
1565     92, 92, 92, 92, 92, 92, 92, 92, 
1566     2, 410, 411, 89, 412, 93, 93, 2, 
1567     93, 93, 2, 93, 410, 93, 2, 413, 
1568     2, 414, 415, 416, 414, 417, 418, 94, 
1569     94, 2, 414, 414, 2, 414, 415, 414, 
1570     2, 419, 2, 420, 421, 422, 420, 423, 
1571     100, 2, 420, 420, 2, 420, 421, 420, 
1572     2, 424, 425, 420, 426, 423, 423, 2, 
1573     423, 423, 2, 423, 424, 423, 2, 2, 
1574     427, 429, 430, 431, 429, 432, 428, 428, 
1575     2, 429, 430, 431, 429, 79, 432, 428, 
1576     2, 429, 429, 2, 429, 430, 429, 2, 
1577     433, 2, 434, 435, 69, 436, 78, 78, 
1578     2, 78, 78, 2, 78, 434, 78, 2, 
1579     437, 2, 438, 439, 440, 438, 441, 442, 
1580     4, 2, 438, 5, 438, 4, 2, 438, 
1581     443, 5, 438, 4, 2, 4, 444, 445, 
1582     4, 438, 446, 441, 2, 441, 5, 441, 
1583     4, 2, 441, 447, 5, 441, 4, 2, 
1584     449, 448, 2, 4, 447, 445, 4, 438, 
1585     446, 441, 2, 442, 450, 451, 442, 453, 
1586     454, 4, 4, 4, 452, 452, 4, 4, 
1587     452, 4, 452, 4, 452, 2, 442, 5, 
1588     442, 4, 2, 442, 455, 5, 442, 4, 
1589     2, 456, 457, 458, 456, 452, 459, 4, 
1590     4, 460, 452, 461, 4, 4, 452, 4, 
1591     452, 4, 452, 2, 456, 457, 458, 456, 
1592     459, 460, 461, 4, 2, 456, 5, 456, 
1593     4, 2, 456, 462, 5, 456, 4, 2, 
1594     4, 463, 464, 4, 456, 465, 459, 2, 
1595     459, 5, 459, 4, 2, 459, 466, 5, 
1596     459, 4, 2, 468, 467, 2, 4, 466, 
1597     464, 4, 456, 465, 459, 2, 469, 470, 
1598     471, 469, 472, 473, 4, 4, 4, 472, 
1599     472, 474, 4, 4, 472, 4, 472, 4, 
1600     472, 2, 469, 5, 469, 4, 2, 469, 
1601     475, 5, 469, 4, 2, 476, 477, 478, 
1602     476, 472, 479, 4, 4, 480, 472, 481, 
1603     472, 4, 4, 472, 4, 472, 4, 472, 
1604     2, 476, 477, 478, 476, 479, 482, 481, 
1605     4, 2, 476, 5, 476, 4, 2, 476, 
1606     483, 5, 476, 4, 2, 4, 484, 485, 
1607     4, 476, 486, 479, 2, 479, 5, 479, 
1608     4, 2, 479, 487, 5, 479, 4, 2, 
1609     489, 488, 2, 4, 487, 485, 4, 476, 
1610     486, 479, 2, 482, 490, 491, 482, 492, 
1611     493, 4, 4, 4, 492, 492, 4, 4, 
1612     492, 4, 492, 4, 492, 2, 482, 5, 
1613     482, 4, 2, 482, 494, 5, 482, 4, 
1614     2, 476, 477, 478, 476, 492, 479, 4, 
1615     4, 482, 492, 481, 492, 4, 4, 492, 
1616     4, 492, 4, 492, 2, 495, 496, 497, 
1617     495, 498, 4, 2, 499, 500, 501, 499, 
1618     502, 4, 2, 499, 5, 499, 4, 2, 
1619     499, 503, 5, 499, 4, 2, 4, 504, 
1620     505, 4, 499, 506, 502, 2, 502, 5, 
1621     502, 4, 2, 502, 507, 5, 502, 4, 
1622     2, 509, 508, 2, 4, 507, 505, 4, 
1623     499, 506, 502, 2, 4, 510, 511, 4, 
1624     482, 512, 493, 2, 493, 5, 493, 4, 
1625     2, 493, 513, 5, 493, 4, 2, 515, 
1626     514, 2, 4, 513, 511, 4, 482, 512, 
1627     493, 2, 482, 490, 491, 482, 472, 493, 
1628     4, 4, 4, 472, 472, 4, 4, 472, 
1629     4, 472, 4, 472, 2, 4, 516, 517, 
1630     4, 469, 518, 473, 2, 473, 5, 473, 
1631     4, 2, 473, 519, 5, 473, 4, 2, 
1632     521, 520, 2, 4, 519, 517, 4, 469, 
1633     518, 473, 2, 4, 522, 523, 524, 522, 
1634     4, 525, 526, 474, 2, 522, 5, 522, 
1635     4, 2, 522, 527, 5, 522, 4, 2, 
1636     529, 528, 2, 4, 522, 527, 524, 522, 
1637     4, 525, 526, 474, 2, 530, 531, 532, 
1638     530, 533, 481, 4, 2, 530, 5, 530, 
1639     4, 2, 530, 534, 5, 530, 4, 2, 
1640     4, 535, 536, 4, 530, 537, 533, 2, 
1641     533, 5, 533, 4, 2, 533, 538, 5, 
1642     533, 4, 2, 540, 539, 2, 4, 538, 
1643     536, 4, 530, 537, 533, 2, 4, 542, 
1644     543, 544, 542, 4, 545, 541, 2, 4, 
1645     542, 543, 544, 542, 456, 545, 541, 2, 
1646     542, 5, 542, 4, 2, 542, 546, 5, 
1647     542, 4, 2, 548, 547, 2, 4, 542, 
1648     546, 544, 542, 456, 545, 541, 2, 4, 
1649     549, 550, 4, 442, 551, 454, 2, 454, 
1650     5, 454, 4, 2, 454, 552, 5, 454, 
1651     4, 2, 554, 553, 2, 4, 552, 550, 
1652     4, 442, 551, 454, 2, 4, 555, 556, 
1653     4, 46, 557, 49, 2, 49, 5, 49, 
1654     4, 2, 49, 558, 5, 49, 4, 2, 
1655     560, 559, 2, 4, 558, 556, 4, 46, 
1656     557, 49, 2, 563, 564, 565, 563, 566, 
1657     4, 567, 562, 561, 568, 569, 570, 2, 
1658     567, 561, 571, 571, 2, 571, 568, 569, 
1659     571, 572, 567, 2, 571, 568, 571, 2, 
1660     573, 574, 571, 575, 572, 572, 2, 572, 
1661     572, 2, 572, 573, 572, 2, 576, 2, 
1662     578, 579, 580, 578, 581, 582, 577, 2, 
1663     584, 583, 2, 585, 584, 583, 2, 586, 
1664     587, 588, 586, 589, 590, 583, 2, 586, 
1665     584, 586, 583, 2, 586, 591, 584, 586, 
1666     583, 2, 583, 592, 593, 583, 586, 594, 
1667     589, 2, 589, 584, 589, 583, 2, 589, 
1668     595, 584, 589, 583, 2, 597, 596, 2, 
1669     583, 595, 593, 583, 586, 594, 589, 2, 
1670     590, 598, 599, 590, 600, 601, 583, 2, 
1671     590, 584, 590, 583, 2, 590, 602, 584, 
1672     590, 583, 2, 583, 603, 604, 583, 590, 
1673     605, 600, 2, 600, 584, 600, 583, 2, 
1674     600, 606, 584, 600, 583, 2, 608, 607, 
1675     2, 583, 606, 604, 583, 590, 605, 600, 
1676     2, 611, 612, 613, 611, 614, 583, 567, 
1677     610, 609, 568, 569, 615, 2, 567, 609, 
1678     616, 617, 572, 618, 619, 615, 615, 609, 
1679     620, 620, 2, 620, 616, 617, 620, 571, 
1680     618, 575, 572, 2, 620, 616, 620, 2, 
1681     577, 622, 623, 624, 622, 581, 625, 626, 
1682     627, 621, 2, 583, 629, 630, 583, 631, 
1683     632, 628, 2, 628, 584, 628, 583, 2, 
1684     628, 633, 584, 628, 583, 2, 631, 634, 
1685     635, 631, 628, 567, 583, 2, 631, 584, 
1686     631, 583, 2, 631, 636, 584, 631, 583, 
1687     2, 638, 637, 2, 583, 633, 630, 583, 
1688     631, 632, 628, 2, 583, 639, 640, 641, 
1689     639, 589, 631, 642, 632, 628, 2, 639, 
1690     584, 639, 583, 2, 639, 643, 584, 639, 
1691     583, 2, 583, 642, 644, 645, 642, 600, 
1692     631, 646, 632, 628, 2, 642, 584, 642, 
1693     583, 2, 642, 647, 584, 642, 583, 2, 
1694     610, 649, 650, 651, 649, 614, 610, 628, 
1695     618, 652, 648, 609, 634, 635, 648, 583, 
1696     567, 610, 609, 610, 653, 654, 610, 628, 
1697     618, 652, 648, 609, 655, 584, 655, 583, 
1698     2, 583, 655, 653, 654, 655, 631, 618, 
1699     632, 628, 2, 655, 656, 584, 655, 583, 
1700     2, 658, 659, 637, 660, 657, 609, 583, 
1701     655, 629, 630, 655, 583, 631, 632, 628, 
1702     2, 583, 655, 656, 630, 655, 583, 631, 
1703     632, 628, 2, 661, 584, 661, 583, 2, 
1704     661, 662, 584, 661, 583, 2, 610, 663, 
1705     664, 648, 611, 665, 666, 667, 614, 609, 
1706     668, 584, 668, 583, 2, 583, 668, 663, 
1707     664, 668, 628, 669, 666, 670, 665, 2, 
1708     583, 671, 672, 583, 669, 670, 665, 2, 
1709     665, 584, 665, 583, 2, 665, 673, 584, 
1710     665, 583, 2, 675, 674, 2, 583, 673, 
1711     672, 583, 669, 670, 665, 2, 668, 676, 
1712     584, 668, 583, 2, 577, 678, 679, 680, 
1713     678, 581, 681, 682, 683, 677, 2, 583, 
1714     684, 685, 686, 684, 589, 669, 687, 670, 
1715     665, 2, 684, 584, 684, 583, 2, 684, 
1716     688, 584, 684, 583, 2, 583, 687, 689, 
1717     690, 687, 600, 669, 691, 670, 665, 2, 
1718     687, 584, 687, 583, 2, 687, 692, 584, 
1719     687, 583, 2, 610, 693, 694, 695, 693, 
1720     611, 665, 666, 667, 614, 609, 696, 584, 
1721     696, 583, 2, 696, 697, 584, 696, 583, 
1722     2, 699, 700, 674, 701, 698, 609, 583, 
1723     668, 671, 672, 668, 583, 669, 670, 665, 
1724     2, 583, 668, 676, 672, 668, 583, 669, 
1725     670, 665, 2, 703, 704, 576, 660, 702, 
1726     609, 620, 573, 574, 620, 571, 575, 572, 
1727     572, 2, 620, 616, 574, 620, 571, 575, 
1728     572, 572, 2, 669, 584, 669, 583, 2, 
1729     669, 705, 584, 669, 583, 2, 706, 707, 
1730     572, 708, 709, 570, 570, 561, 710, 710, 
1731     2, 710, 706, 707, 710, 571, 708, 575, 
1732     572, 2, 710, 706, 710, 2, 577, 711, 
1733     712, 713, 711, 581, 625, 714, 627, 621, 
1734     2, 583, 715, 716, 717, 715, 589, 631, 
1735     718, 632, 628, 2, 715, 584, 715, 583, 
1736     2, 715, 719, 584, 715, 583, 2, 583, 
1737     718, 720, 721, 718, 600, 631, 722, 632, 
1738     628, 2, 718, 584, 718, 583, 2, 718, 
1739     723, 584, 718, 583, 2, 610, 725, 726, 
1740     727, 725, 614, 728, 628, 708, 729, 724, 
1741     609, 610, 730, 731, 648, 728, 628, 708, 
1742     729, 724, 609, 732, 584, 732, 583, 2, 
1743     583, 732, 730, 731, 732, 631, 708, 632, 
1744     628, 2, 732, 733, 584, 732, 583, 2, 
1745     728, 634, 635, 728, 724, 583, 567, 610, 
1746     609, 735, 736, 637, 737, 734, 609, 583, 
1747     732, 629, 630, 732, 583, 631, 632, 628, 
1748     2, 583, 732, 733, 630, 732, 583, 631, 
1749     632, 628, 2, 738, 584, 738, 583, 2, 
1750     738, 739, 584, 738, 583, 2, 741, 742, 
1751     576, 737, 740, 561, 710, 573, 574, 710, 
1752     571, 575, 572, 572, 2, 710, 706, 574, 
1753     710, 571, 575, 572, 572, 2, 743, 744, 
1754     745, 4, 567, 562, 561, 746, 5, 746, 
1755     4, 2, 746, 743, 744, 746, 747, 567, 
1756     4, 2, 746, 748, 5, 746, 4, 2, 
1757     4, 749, 750, 4, 746, 751, 747, 2, 
1758     747, 5, 747, 4, 2, 747, 752, 5, 
1759     747, 4, 2, 754, 753, 2, 4, 752, 
1760     750, 4, 746, 751, 747, 2, 562, 755, 
1761     756, 562, 747, 708, 757, 745, 561, 758, 
1762     5, 758, 4, 2, 4, 758, 755, 756, 
1763     758, 746, 708, 751, 747, 2, 758, 759, 
1764     5, 758, 4, 2, 761, 762, 753, 737, 
1765     760, 561, 4, 758, 749, 750, 758, 4, 
1766     746, 751, 747, 2, 4, 758, 759, 750, 
1767     758, 4, 746, 751, 747, 2, 763, 5, 
1768     763, 4, 2, 763, 764, 5, 763, 4, 
1769     2, 562, 765, 766, 745, 563, 767, 768, 
1770     769, 566, 561, 770, 5, 770, 4, 2, 
1771     4, 770, 765, 766, 770, 747, 763, 768, 
1772     771, 767, 2, 4, 772, 773, 4, 763, 
1773     771, 767, 2, 767, 5, 767, 4, 2, 
1774     767, 774, 5, 767, 4, 2, 776, 775, 
1775     2, 4, 774, 773, 4, 763, 771, 767, 
1776     2, 770, 777, 5, 770, 4, 2, 577, 
1777     779, 780, 781, 779, 581, 782, 783, 784, 
1778     778, 2, 583, 786, 787, 583, 788, 789, 
1779     785, 2, 785, 584, 785, 583, 2, 785, 
1780     790, 584, 785, 583, 2, 792, 793, 794, 
1781     792, 795, 583, 567, 791, 561, 634, 635, 
1782     796, 583, 567, 791, 561, 791, 730, 731, 
1783     791, 628, 708, 797, 796, 561, 735, 736, 
1784     637, 737, 798, 561, 788, 584, 788, 583, 
1785     2, 788, 799, 584, 788, 583, 2, 791, 
1786     800, 801, 796, 792, 785, 768, 802, 795, 
1787     561, 803, 584, 803, 583, 2, 583, 803, 
1788     800, 801, 803, 628, 788, 768, 789, 785, 
1789     2, 803, 804, 584, 803, 583, 2, 806, 
1790     805, 2, 583, 790, 787, 583, 788, 789, 
1791     785, 2, 808, 809, 805, 810, 807, 561, 
1792     583, 803, 786, 787, 803, 583, 788, 789, 
1793     785, 2, 583, 803, 804, 787, 803, 583, 
1794     788, 789, 785, 2, 583, 811, 812, 813, 
1795     811, 589, 788, 814, 789, 785, 2, 811, 
1796     584, 811, 583, 2, 811, 815, 584, 811, 
1797     583, 2, 583, 814, 816, 817, 814, 600, 
1798     788, 818, 789, 785, 2, 814, 584, 814, 
1799     583, 2, 814, 819, 584, 814, 583, 2, 
1800     610, 821, 822, 823, 821, 614, 792, 785, 
1801     768, 824, 820, 609, 610, 800, 801, 648, 
1802     792, 785, 768, 824, 820, 609, 808, 809, 
1803     805, 810, 825, 609, 826, 584, 826, 583, 
1804     2, 826, 827, 584, 826, 583, 2, 829, 
1805     830, 775, 810, 828, 561, 4, 770, 772, 
1806     773, 770, 4, 763, 771, 767, 2, 4, 
1807     770, 777, 773, 770, 4, 763, 771, 767, 
1808     2, 5, 831, 831, 4, 2, 832, 831, 
1809     2, 833, 832, 831, 2, 835, 836, 837, 
1810     835, 838, 834, 834, 2, 835, 836, 837, 
1811     835, 36, 838, 834, 2, 835, 835, 2, 
1812     835, 836, 835, 2, 839, 2, 841, 842, 
1813     36, 843, 840, 840, 2, 840, 840, 2, 
1814     840, 841, 840, 2, 844, 2, 31, 845, 
1815     846, 31, 848, 849, 847, 847, 847, 847, 
1816     847, 847, 847, 847, 2, 31, 31, 2, 
1817     31, 845, 31, 2, 850, 851, 852, 850, 
1818     847, 853, 854, 847, 855, 847, 847, 847, 
1819     847, 847, 2, 850, 851, 852, 850, 853, 
1820     854, 855, 2, 850, 850, 2, 850, 851, 
1821     850, 2, 856, 857, 850, 858, 853, 853, 
1822     2, 853, 853, 2, 853, 856, 853, 2, 
1823     859, 2, 860, 861, 862, 860, 863, 864, 
1824     863, 863, 863, 865, 863, 863, 863, 863, 
1825     863, 2, 860, 860, 2, 860, 861, 860, 
1826     2, 866, 867, 868, 866, 863, 869, 870, 
1827     871, 863, 863, 863, 863, 863, 863, 2, 
1828     866, 867, 868, 866, 869, 872, 871, 2, 
1829     866, 866, 2, 866, 867, 866, 2, 873, 
1830     874, 866, 875, 869, 869, 2, 869, 869, 
1831     2, 869, 873, 869, 2, 876, 2, 872, 
1832     877, 878, 872, 879, 880, 879, 879, 879, 
1833     879, 879, 879, 879, 879, 2, 872, 872, 
1834     2, 872, 877, 872, 2, 866, 867, 868, 
1835     866, 879, 869, 872, 871, 879, 879, 879, 
1836     879, 879, 879, 2, 881, 882, 883, 881, 
1837     885, 886, 884, 887, 884, 884, 884, 884, 
1838     884, 884, 884, 2, 888, 889, 890, 888, 
1839     24, 891, 23, 26, 23, 23, 23, 23, 
1840     23, 23, 23, 2, 892, 892, 2, 892, 
1841     893, 892, 2, 895, 896, 892, 897, 894, 
1842     894, 2, 894, 894, 2, 894, 895, 894, 
1843     2, 898, 2, 899, 900, 872, 901, 880, 
1844     880, 2, 880, 880, 2, 880, 899, 880, 
1845     2, 902, 2, 872, 877, 878, 872, 863, 
1846     880, 863, 863, 863, 863, 863, 863, 863, 
1847     863, 2, 903, 904, 860, 905, 864, 864, 
1848     2, 864, 864, 2, 864, 903, 864, 2, 
1849     2, 906, 907, 908, 909, 907, 910, 911, 
1850     865, 865, 2, 907, 907, 2, 907, 908, 
1851     907, 2, 912, 2, 913, 914, 915, 913, 
1852     916, 871, 2, 913, 913, 2, 913, 914, 
1853     913, 2, 917, 918, 913, 919, 916, 916, 
1854     2, 916, 916, 2, 916, 917, 916, 2, 
1855     2, 920, 922, 923, 924, 922, 925, 921, 
1856     921, 2, 922, 923, 924, 922, 850, 925, 
1857     921, 2, 922, 922, 2, 922, 923, 922, 
1858     2, 926, 2, 927, 928, 31, 929, 849, 
1859     849, 2, 849, 849, 2, 849, 927, 849, 
1860     2, 930, 2, 931, 932, 27, 933, 30, 
1861     30, 2, 30, 30, 2, 30, 931, 30, 
1862     2, 934, 2, 27, 935, 27, 2, 936, 
1863     937, 938, 936, 940, 941, 4, 4, 4, 
1864     942, 939, 939, 4, 4, 939, 4, 939, 
1865     4, 939, 2, 943, 944, 945, 943, 940, 
1866     946, 4, 4, 4, 947, 939, 939, 4, 
1867     4, 939, 4, 939, 4, 939, 2, 943, 
1868     5, 943, 4, 2, 943, 948, 5, 943, 
1869     4, 2, 949, 950, 951, 949, 940, 952, 
1870     4, 4, 942, 939, 939, 4, 4, 939, 
1871     4, 939, 4, 939, 2, 953, 5, 953, 
1872     4, 2, 953, 954, 5, 953, 4, 2, 
1873     4, 956, 957, 958, 956, 4, 959, 955, 
1874     2, 4, 956, 957, 958, 956, 953, 959, 
1875     955, 2, 956, 5, 956, 4, 2, 956, 
1876     960, 5, 956, 4, 2, 962, 961, 2, 
1877     4, 956, 960, 958, 956, 953, 959, 955, 
1878     2, 4, 964, 965, 4, 953, 966, 963, 
1879     2, 963, 5, 963, 4, 2, 963, 967, 
1880     5, 963, 4, 2, 969, 968, 2, 4, 
1881     967, 965, 4, 953, 966, 963, 2, 947, 
1882     970, 971, 947, 973, 974, 4, 4, 4, 
1883     972, 972, 4, 4, 972, 4, 972, 4, 
1884     972, 2, 947, 5, 947, 4, 2, 947, 
1885     975, 5, 947, 4, 2, 976, 977, 978, 
1886     976, 972, 979, 4, 4, 980, 972, 981, 
1887     4, 4, 972, 4, 972, 4, 972, 2, 
1888     976, 977, 978, 976, 979, 980, 981, 4, 
1889     2, 976, 5, 976, 4, 2, 976, 982, 
1890     5, 976, 4, 2, 4, 983, 984, 4, 
1891     976, 985, 979, 2, 979, 5, 979, 4, 
1892     2, 979, 986, 5, 979, 4, 2, 988, 
1893     987, 2, 4, 986, 984, 4, 976, 985, 
1894     979, 2, 989, 990, 991, 989, 992, 993, 
1895     4, 4, 4, 992, 992, 994, 4, 4, 
1896     992, 4, 992, 4, 992, 2, 989, 5, 
1897     989, 4, 2, 989, 995, 5, 989, 4, 
1898     2, 996, 997, 998, 996, 992, 999, 4, 
1899     4, 1000, 992, 1001, 992, 4, 4, 992, 
1900     4, 992, 4, 992, 2, 996, 997, 998, 
1901     996, 999, 1002, 1001, 4, 2, 996, 5, 
1902     996, 4, 2, 996, 1003, 5, 996, 4, 
1903     2, 4, 1004, 1005, 4, 996, 1006, 999, 
1904     2, 999, 5, 999, 4, 2, 999, 1007, 
1905     5, 999, 4, 2, 1009, 1008, 2, 4, 
1906     1007, 1005, 4, 996, 1006, 999, 2, 1002, 
1907     1010, 1011, 1002, 1012, 1013, 4, 4, 4, 
1908     1012, 1012, 4, 4, 1012, 4, 1012, 4, 
1909     1012, 2, 1002, 5, 1002, 4, 2, 1002, 
1910     1014, 5, 1002, 4, 2, 996, 997, 998, 
1911     996, 1012, 999, 4, 4, 1002, 1012, 1001, 
1912     1012, 4, 4, 1012, 4, 1012, 4, 1012, 
1913     2, 1015, 1016, 1017, 1015, 1019, 1020, 4, 
1914     4, 4, 1021, 1018, 1018, 4, 4, 1018, 
1915     4, 1018, 4, 1018, 2, 1022, 1023, 1024, 
1916     1022, 940, 1025, 4, 4, 4, 942, 939, 
1917     939, 4, 4, 939, 4, 939, 4, 939, 
1918     2, 1026, 5, 1026, 4, 2, 1026, 1027, 
1919     5, 1026, 4, 2, 4, 1029, 1030, 4, 
1920     1026, 1031, 1028, 2, 1028, 5, 1028, 4, 
1921     2, 1028, 1032, 5, 1028, 4, 2, 1034, 
1922     1033, 2, 4, 1032, 1030, 4, 1026, 1031, 
1923     1028, 2, 4, 1035, 1036, 4, 1002, 1037, 
1924     1013, 2, 1013, 5, 1013, 4, 2, 1013, 
1925     1038, 5, 1013, 4, 2, 1040, 1039, 2, 
1926     4, 1038, 1036, 4, 1002, 1037, 1013, 2, 
1927     1002, 1010, 1011, 1002, 992, 1013, 4, 4, 
1928     4, 992, 992, 4, 4, 992, 4, 992, 
1929     4, 992, 2, 4, 1041, 1042, 4, 989, 
1930     1043, 993, 2, 993, 5, 993, 4, 2, 
1931     993, 1044, 5, 993, 4, 2, 1046, 1045, 
1932     2, 4, 1044, 1042, 4, 989, 1043, 993, 
1933     2, 4, 1047, 1048, 1049, 1047, 4, 1050, 
1934     1051, 994, 2, 1047, 5, 1047, 4, 2, 
1935     1047, 1052, 5, 1047, 4, 2, 1054, 1053, 
1936     2, 4, 1047, 1052, 1049, 1047, 4, 1050, 
1937     1051, 994, 2, 1055, 1056, 1057, 1055, 1058, 
1938     1001, 4, 2, 1055, 5, 1055, 4, 2, 
1939     1055, 1059, 5, 1055, 4, 2, 4, 1060, 
1940     1061, 4, 1055, 1062, 1058, 2, 1058, 5, 
1941     1058, 4, 2, 1058, 1063, 5, 1058, 4, 
1942     2, 1065, 1064, 2, 4, 1063, 1061, 4, 
1943     1055, 1062, 1058, 2, 4, 1067, 1068, 1069, 
1944     1067, 4, 1070, 1066, 2, 4, 1067, 1068, 
1945     1069, 1067, 976, 1070, 1066, 2, 1067, 5, 
1946     1067, 4, 2, 1067, 1071, 5, 1067, 4, 
1947     2, 1073, 1072, 2, 4, 1067, 1071, 1069, 
1948     1067, 976, 1070, 1066, 2, 4, 1074, 1075, 
1949     4, 947, 1076, 974, 2, 974, 5, 974, 
1950     4, 2, 974, 1077, 5, 974, 4, 2, 
1951     1079, 1078, 2, 4, 1077, 1075, 4, 947, 
1952     1076, 974, 2, 4, 1080, 1081, 4, 943, 
1953     1082, 946, 2, 946, 5, 946, 4, 2, 
1954     946, 1083, 5, 946, 4, 2, 1085, 1084, 
1955     2, 4, 1083, 1081, 4, 943, 1082, 946, 
1956     2, 943, 1086, 5, 943, 4, 2, 1087, 
1957     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
1958     3, 3, 1, 1087, 1, 4, 1087, 4, 
1959     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
1960     3, 3, 1, 36, 1092, 36, 1094, 1095, 
1961     1096, 1097, 1094, 1095, 1096, 1097, 1093, 1093, 
1962     1, 46, 1087, 46, 1088, 1089, 1090, 1091, 
1963     1088, 1089, 1090, 1091, 3, 3, 1, 114, 
1964     1098, 114, 1100, 1101, 1102, 1103, 1100, 1101, 
1965     1102, 1103, 1099, 1099, 1, 147, 1104, 147, 
1966     1106, 1107, 1108, 1109, 1106, 1107, 1108, 1109, 
1967     1105, 1105, 1, 207, 1104, 207, 1106, 1107, 
1968     1108, 1109, 1106, 1107, 1108, 1109, 1105, 1105, 
1969     1, 138, 1104, 138, 1106, 1107, 1108, 1109, 
1970     1106, 1107, 1108, 1109, 1105, 1105, 1, 258, 
1971     1087, 258, 1088, 1089, 1090, 1091, 1088, 1089, 
1972     1090, 1091, 3, 3, 1, 268, 1104, 268, 
1973     1106, 1107, 1108, 1109, 1106, 1107, 1108, 1109, 
1974     1105, 1105, 1, 271, 1087, 271, 1088, 1089, 
1975     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
1976     1, 278, 1087, 278, 1088, 1089, 1090, 1091, 
1977     1088, 1089, 1090, 1091, 3, 3, 1, 262, 
1978     1087, 262, 1088, 1089, 1090, 1091, 1088, 1089, 
1979     1090, 1091, 3, 3, 1, 291, 1087, 291, 
1980     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
1981     3, 3, 1, 294, 1087, 294, 1088, 1089, 
1982     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
1983     1, 304, 1087, 304, 1088, 1089, 1090, 1091, 
1984     1088, 1089, 1090, 1091, 3, 3, 1, 311, 
1985     1087, 311, 1088, 1089, 1090, 1091, 1088, 1089, 
1986     1090, 1091, 3, 3, 1, 314, 1087, 314, 
1987     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
1988     3, 3, 1, 317, 1087, 317, 1088, 1089, 
1989     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
1990     1, 341, 1104, 341, 1106, 1107, 1108, 1109, 
1991     1106, 1107, 1108, 1109, 1105, 1105, 1, 343, 
1992     1087, 343, 1088, 1089, 1090, 1091, 1088, 1089, 
1993     1090, 1091, 3, 3, 1, 328, 1087, 328, 
1994     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
1995     3, 3, 1, 308, 1087, 308, 1088, 1089, 
1996     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
1997     1, 362, 1087, 362, 1088, 1089, 1090, 1091, 
1998     1088, 1089, 1090, 1091, 3, 3, 1, 370, 
1999     1087, 370, 1088, 1089, 1090, 1091, 1088, 1089, 
2000     1090, 1091, 3, 3, 1, 373, 1087, 373, 
2001     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2002     3, 3, 1, 382, 1087, 382, 1088, 1089, 
2003     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2004     1, 289, 1087, 289, 1088, 1089, 1090, 1091, 
2005     1088, 1089, 1090, 1091, 3, 3, 1, 261, 
2006     1087, 261, 1088, 1089, 1090, 1091, 1088, 1089, 
2007     1090, 1091, 3, 3, 1, 258, 1104, 258, 
2008     1106, 1107, 1108, 1109, 1106, 1107, 1108, 1109, 
2009     1105, 1105, 1, 438, 1087, 438, 1088, 1089, 
2010     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2011     1, 441, 1087, 441, 1088, 1089, 1090, 1091, 
2012     1088, 1089, 1090, 1091, 3, 3, 1, 442, 
2013     1087, 442, 1088, 1089, 1090, 1091, 1088, 1089, 
2014     1090, 1091, 3, 3, 1, 456, 1087, 456, 
2015     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2016     3, 3, 1, 459, 1087, 459, 1088, 1089, 
2017     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2018     1, 469, 1087, 469, 1088, 1089, 1090, 1091, 
2019     1088, 1089, 1090, 1091, 3, 3, 1, 476, 
2020     1087, 476, 1088, 1089, 1090, 1091, 1088, 1089, 
2021     1090, 1091, 3, 3, 1, 479, 1087, 479, 
2022     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2023     3, 3, 1, 482, 1087, 482, 1088, 1089, 
2024     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2025     1, 499, 1098, 499, 1100, 1101, 1102, 1103, 
2026     1100, 1101, 1102, 1103, 1099, 1099, 1, 502, 
2027     1087, 502, 1088, 1089, 1090, 1091, 1088, 1089, 
2028     1090, 1091, 3, 3, 1, 493, 1087, 493, 
2029     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2030     3, 3, 1, 473, 1087, 473, 1088, 1089, 
2031     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2032     1, 522, 1087, 522, 1088, 1089, 1090, 1091, 
2033     1088, 1089, 1090, 1091, 3, 3, 1, 530, 
2034     1087, 530, 1088, 1089, 1090, 1091, 1088, 1089, 
2035     1090, 1091, 3, 3, 1, 533, 1087, 533, 
2036     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2037     3, 3, 1, 542, 1087, 542, 1088, 1089, 
2038     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2039     1, 454, 1087, 454, 1088, 1089, 1090, 1091, 
2040     1088, 1089, 1090, 1091, 3, 3, 1, 49, 
2041     1087, 49, 1088, 1089, 1090, 1091, 1088, 1089, 
2042     1090, 1091, 3, 3, 1, 583, 1110, 583, 
2043     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2044     1111, 1111, 1, 586, 1110, 586, 1112, 1113, 
2045     1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 
2046     1, 589, 1110, 589, 1112, 1113, 1114, 1115, 
2047     1112, 1113, 1114, 1115, 1111, 1111, 1, 590, 
2048     1110, 590, 1112, 1113, 1114, 1115, 1112, 1113, 
2049     1114, 1115, 1111, 1111, 1, 600, 1110, 600, 
2050     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2051     1111, 1111, 1, 628, 1110, 628, 1112, 1113, 
2052     1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 
2053     1, 631, 1110, 631, 1112, 1113, 1114, 1115, 
2054     1112, 1113, 1114, 1115, 1111, 1111, 1, 639, 
2055     1110, 639, 1112, 1113, 1114, 1115, 1112, 1113, 
2056     1114, 1115, 1111, 1111, 1, 642, 1110, 642, 
2057     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2058     1111, 1111, 1, 655, 1110, 655, 1112, 1113, 
2059     1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 
2060     1, 661, 1110, 661, 1112, 1113, 1114, 1115, 
2061     1112, 1113, 1114, 1115, 1111, 1111, 1, 665, 
2062     1110, 665, 1112, 1113, 1114, 1115, 1112, 1113, 
2063     1114, 1115, 1111, 1111, 1, 668, 1110, 668, 
2064     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2065     1111, 1111, 1, 684, 1110, 684, 1112, 1113, 
2066     1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 
2067     1, 687, 1110, 687, 1112, 1113, 1114, 1115, 
2068     1112, 1113, 1114, 1115, 1111, 1111, 1, 696, 
2069     1110, 696, 1112, 1113, 1114, 1115, 1112, 1113, 
2070     1114, 1115, 1111, 1111, 1, 669, 1110, 669, 
2071     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2072     1111, 1111, 1, 715, 1110, 715, 1112, 1113, 
2073     1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 
2074     1, 718, 1110, 718, 1112, 1113, 1114, 1115, 
2075     1112, 1113, 1114, 1115, 1111, 1111, 1, 732, 
2076     1110, 732, 1112, 1113, 1114, 1115, 1112, 1113, 
2077     1114, 1115, 1111, 1111, 1, 738, 1110, 738, 
2078     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2079     1111, 1111, 1, 746, 1087, 746, 1088, 1089, 
2080     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2081     1, 747, 1087, 747, 1088, 1089, 1090, 1091, 
2082     1088, 1089, 1090, 1091, 3, 3, 1, 758, 
2083     1087, 758, 1088, 1089, 1090, 1091, 1088, 1089, 
2084     1090, 1091, 3, 3, 1, 763, 1087, 763, 
2085     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2086     3, 3, 1, 767, 1087, 767, 1088, 1089, 
2087     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2088     1, 770, 1087, 770, 1088, 1089, 1090, 1091, 
2089     1088, 1089, 1090, 1091, 3, 3, 1, 785, 
2090     1110, 785, 1112, 1113, 1114, 1115, 1112, 1113, 
2091     1114, 1115, 1111, 1111, 1, 788, 1110, 788, 
2092     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2093     1111, 1111, 1, 803, 1110, 803, 1112, 1113, 
2094     1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 
2095     1, 811, 1110, 811, 1112, 1113, 1114, 1115, 
2096     1112, 1113, 1114, 1115, 1111, 1111, 1, 814, 
2097     1110, 814, 1112, 1113, 1114, 1115, 1112, 1113, 
2098     1114, 1115, 1111, 1111, 1, 826, 1110, 826, 
2099     1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 
2100     1111, 1111, 1, 831, 1087, 831, 1088, 1089, 
2101     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2102     1, 892, 1092, 892, 1094, 1095, 1096, 1097, 
2103     1094, 1095, 1096, 1097, 1093, 1093, 1, 27, 
2104     1092, 27, 1094, 1095, 1096, 1097, 1094, 1095, 
2105     1096, 1097, 1093, 1093, 1, 943, 1087, 943, 
2106     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2107     3, 3, 1, 953, 1092, 953, 1094, 1095, 
2108     1096, 1097, 1094, 1095, 1096, 1097, 1093, 1093, 
2109     1, 956, 1087, 956, 1088, 1089, 1090, 1091, 
2110     1088, 1089, 1090, 1091, 3, 3, 1, 963, 
2111     1087, 963, 1088, 1089, 1090, 1091, 1088, 1089, 
2112     1090, 1091, 3, 3, 1, 947, 1087, 947, 
2113     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2114     3, 3, 1, 976, 1087, 976, 1088, 1089, 
2115     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2116     1, 979, 1087, 979, 1088, 1089, 1090, 1091, 
2117     1088, 1089, 1090, 1091, 3, 3, 1, 989, 
2118     1087, 989, 1088, 1089, 1090, 1091, 1088, 1089, 
2119     1090, 1091, 3, 3, 1, 996, 1087, 996, 
2120     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2121     3, 3, 1, 999, 1087, 999, 1088, 1089, 
2122     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2123     1, 1002, 1087, 1002, 1088, 1089, 1090, 1091, 
2124     1088, 1089, 1090, 1091, 3, 3, 1, 1026, 
2125     1092, 1026, 1094, 1095, 1096, 1097, 1094, 1095, 
2126     1096, 1097, 1093, 1093, 1, 1028, 1087, 1028, 
2127     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2128     3, 3, 1, 1013, 1087, 1013, 1088, 1089, 
2129     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2130     1, 993, 1087, 993, 1088, 1089, 1090, 1091, 
2131     1088, 1089, 1090, 1091, 3, 3, 1, 1047, 
2132     1087, 1047, 1088, 1089, 1090, 1091, 1088, 1089, 
2133     1090, 1091, 3, 3, 1, 1055, 1087, 1055, 
2134     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2135     3, 3, 1, 1058, 1087, 1058, 1088, 1089, 
2136     1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 
2137     1, 1067, 1087, 1067, 1088, 1089, 1090, 1091, 
2138     1088, 1089, 1090, 1091, 3, 3, 1, 974, 
2139     1087, 974, 1088, 1089, 1090, 1091, 1088, 1089, 
2140     1090, 1091, 3, 3, 1, 946, 1087, 946, 
2141     1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 
2142     3, 3, 1, 943, 1092, 943, 1094, 1095, 
2143     1096, 1097, 1094, 1095, 1096, 1097, 1093, 1093, 
2144     1, 0
2145 };
2146 
2147 static const int16_t _rfc5322_trans_targs[] = {
2148     742, 0, 0, 2, 3, 4, 743, 6, 
2149     7, 8, 9, 10, 11, 12, 13, 14, 
2150     15, 16, 645, 17, 18, 19, 644, 21, 
2151     568, 640, 577, 18, 19, 20, 640, 577, 
2152     21, 22, 23, 573, 21, 744, 25, 26, 
2153     27, 28, 29, 30, 31, 32, 33, 34, 
2154     35, 388, 393, 565, 745, 37, 38, 39, 
2155     40, 41, 42, 43, 44, 45, 46, 308, 
2156     47, 47, 48, 49, 50, 54, 51, 52, 
2157     53, 50, 55, 56, 57, 299, 304, 58, 
2158     59, 60, 61, 54, 65, 62, 63, 64, 
2159     61, 65, 66, 67, 68, 284, 288, 69, 
2160     70, 71, 72, 283, 80, 76, 73, 74, 
2161     75, 72, 77, 78, 79, 279, 81, 82, 
2162     83, 275, 81, 82, 83, 275, 746, 85, 
2163     86, 87, 88, 89, 90, 91, 92, 93, 
2164     94, 179, 95, 96, 97, 178, 99, 102, 
2165     174, 111, 96, 97, 98, 174, 111, 99, 
2166     100, 101, 107, 99, 747, 103, 103, 104, 
2167     105, 106, 103, 107, 108, 109, 110, 107, 
2168     112, 113, 114, 165, 170, 115, 116, 117, 
2169     118, 111, 122, 119, 120, 121, 118, 122, 
2170     123, 124, 125, 150, 154, 126, 127, 128, 
2171     129, 149, 137, 133, 130, 131, 132, 129, 
2172     134, 135, 136, 145, 138, 139, 140, 99, 
2173     102, 141, 111, 138, 139, 140, 141, 138, 
2174     748, 141, 142, 143, 144, 141, 146, 147, 
2175     148, 145, 151, 152, 153, 150, 154, 155, 
2176     156, 157, 158, 154, 158, 159, 160, 161, 
2177     162, 163, 164, 161, 166, 166, 167, 168, 
2178     169, 166, 171, 172, 173, 170, 175, 176, 
2179     177, 174, 749, 180, 181, 274, 183, 186, 
2180     269, 197, 180, 181, 182, 269, 197, 750, 
2181     183, 184, 185, 192, 183, 751, 187, 187, 
2182     188, 189, 190, 752, 187, 191, 192, 193, 
2183     194, 195, 753, 192, 196, 198, 199, 200, 
2184     258, 264, 754, 201, 202, 203, 204, 197, 
2185     209, 755, 205, 206, 207, 756, 204, 208, 
2186     209, 210, 211, 212, 240, 245, 757, 213, 
2187     214, 215, 216, 239, 225, 221, 758, 217, 
2188     218, 219, 759, 216, 220, 222, 223, 224, 
2189     234, 760, 226, 227, 228, 183, 186, 229, 
2190     197, 226, 227, 228, 229, 226, 761, 229, 
2191     230, 231, 232, 762, 229, 233, 235, 236, 
2192     237, 763, 234, 238, 241, 242, 243, 764, 
2193     240, 244, 245, 246, 247, 248, 250, 765, 
2194     245, 249, 250, 251, 252, 253, 766, 254, 
2195     255, 256, 767, 253, 257, 259, 259, 260, 
2196     261, 262, 768, 259, 263, 265, 266, 267, 
2197     769, 264, 268, 270, 271, 272, 770, 269, 
2198     273, 771, 276, 277, 278, 275, 280, 281, 
2199     282, 279, 285, 286, 287, 284, 288, 289, 
2200     290, 291, 292, 288, 292, 293, 294, 295, 
2201     296, 297, 298, 295, 300, 300, 301, 302, 
2202     303, 300, 305, 306, 307, 304, 308, 309, 
2203     310, 311, 316, 772, 312, 313, 314, 773, 
2204     311, 315, 317, 318, 319, 377, 383, 774, 
2205     320, 321, 322, 323, 316, 328, 775, 324, 
2206     325, 326, 776, 323, 327, 328, 329, 330, 
2207     331, 359, 364, 777, 332, 333, 334, 335, 
2208     358, 344, 340, 778, 336, 337, 338, 779, 
2209     335, 339, 341, 342, 343, 353, 780, 345, 
2210     346, 347, 348, 345, 346, 347, 348, 781, 
2211     349, 350, 351, 782, 348, 352, 354, 355, 
2212     356, 783, 353, 357, 360, 361, 362, 784, 
2213     359, 363, 364, 365, 366, 367, 369, 785, 
2214     364, 368, 369, 370, 371, 372, 786, 373, 
2215     374, 375, 787, 372, 376, 378, 378, 379, 
2216     380, 381, 788, 378, 382, 384, 385, 386, 
2217     789, 383, 387, 389, 390, 391, 790, 388, 
2218     392, 394, 505, 393, 521, 522, 523, 402, 
2219     395, 397, 480, 396, 398, 399, 400, 401, 
2220     398, 403, 405, 406, 407, 408, 413, 403, 
2221     404, 791, 405, 406, 407, 408, 413, 792, 
2222     409, 410, 411, 793, 408, 412, 414, 415, 
2223     416, 421, 794, 417, 418, 419, 795, 416, 
2224     420, 422, 443, 421, 478, 479, 453, 423, 
2225     424, 426, 427, 475, 425, 428, 436, 437, 
2226     438, 431, 439, 434, 428, 429, 430, 431, 
2227     434, 796, 432, 433, 797, 428, 435, 436, 
2228     437, 438, 439, 798, 440, 441, 442, 799, 
2229     444, 442, 451, 452, 448, 445, 447, 446, 
2230     800, 444, 449, 450, 427, 442, 801, 454, 
2231     461, 456, 462, 472, 455, 421, 459, 457, 
2232     458, 802, 456, 460, 803, 456, 463, 464, 
2233     465, 421, 466, 459, 463, 464, 465, 466, 
2234     804, 467, 468, 469, 805, 469, 470, 471, 
2235     469, 806, 453, 473, 474, 462, 423, 476, 
2236     477, 807, 481, 483, 484, 502, 482, 485, 
2237     486, 487, 488, 485, 486, 487, 488, 808, 
2238     489, 490, 491, 809, 492, 491, 500, 501, 
2239     496, 497, 493, 495, 494, 810, 492, 498, 
2240     499, 484, 491, 811, 480, 503, 504, 506, 
2241     508, 514, 507, 509, 812, 510, 511, 512, 
2242     813, 509, 513, 515, 517, 518, 516, 814, 
2243     514, 519, 520, 393, 815, 524, 531, 526, 
2244     532, 562, 525, 529, 527, 528, 816, 526, 
2245     530, 817, 533, 551, 552, 553, 536, 554, 
2246     546, 533, 534, 535, 536, 546, 818, 537, 
2247     536, 540, 541, 542, 538, 539, 538, 819, 
2248     543, 545, 548, 544, 820, 533, 547, 542, 
2249     549, 550, 532, 551, 552, 553, 554, 821, 
2250     555, 556, 557, 822, 558, 557, 560, 561, 
2251     559, 558, 557, 823, 523, 563, 564, 566, 
2252     567, 824, 569, 569, 570, 571, 572, 569, 
2253     573, 574, 575, 576, 573, 578, 579, 580, 
2254     631, 636, 581, 582, 583, 584, 577, 588, 
2255     585, 586, 587, 584, 588, 589, 590, 591, 
2256     616, 620, 592, 593, 594, 595, 615, 603, 
2257     599, 596, 597, 598, 595, 600, 601, 602, 
2258     611, 604, 605, 606, 21, 568, 607, 577, 
2259     604, 605, 606, 607, 604, 825, 607, 608, 
2260     609, 610, 607, 612, 613, 614, 611, 617, 
2261     618, 619, 616, 620, 621, 622, 623, 624, 
2262     620, 624, 625, 626, 627, 628, 629, 630, 
2263     627, 632, 632, 633, 634, 635, 632, 637, 
2264     638, 639, 636, 641, 642, 643, 640, 826, 
2265     646, 647, 740, 649, 652, 735, 663, 646, 
2266     647, 648, 735, 663, 827, 649, 650, 651, 
2267     658, 649, 828, 653, 653, 654, 655, 656, 
2268     829, 653, 657, 658, 659, 660, 661, 830, 
2269     658, 662, 664, 665, 666, 724, 730, 831, 
2270     667, 668, 669, 670, 663, 675, 832, 671, 
2271     672, 673, 833, 670, 674, 675, 676, 677, 
2272     678, 706, 711, 834, 679, 680, 681, 682, 
2273     705, 691, 687, 835, 683, 684, 685, 836, 
2274     682, 686, 688, 689, 690, 700, 837, 692, 
2275     693, 694, 649, 652, 695, 663, 692, 693, 
2276     694, 695, 692, 838, 695, 696, 697, 698, 
2277     839, 695, 699, 701, 702, 703, 840, 700, 
2278     704, 707, 708, 709, 841, 706, 710, 711, 
2279     712, 713, 714, 716, 842, 711, 715, 716, 
2280     717, 718, 719, 843, 720, 721, 722, 844, 
2281     719, 723, 725, 725, 726, 727, 728, 845, 
2282     725, 729, 731, 732, 733, 846, 730, 734, 
2283     736, 737, 738, 847, 735, 739, 848, 1, 
2284     5, 24, 36, 84, 1, 2, 5, 24, 
2285     36, 84, 1, 2, 5, 24, 36, 84, 
2286     1, 2, 5, 24, 36, 84, 1, 2, 
2287     5, 24, 36, 84
2288 };
2289 
2290 static const int8_t _rfc5322_trans_actions[] = {
2291     0, 0, 21, 0, 0, 0, 0, 0, 
2292     0, 0, 0, 0, 0, 0, 0, 0, 
2293     0, 0, 9, 9, 3, 3, 3, 1, 
2294     0, 3, 3, 0, 0, 0, 0, 0, 
2295     3, 3, 3, 3, 0, 0, 0, 0, 
2296     0, 0, 0, 0, 0, 0, 0, 0, 
2297     0, 0, 3, 0, 0, 0, 0, 0, 
2298     0, 0, 0, 0, 0, 0, 0, 9, 
2299     9, 0, 0, 0, 0, 0, 0, 0, 
2300     5, 5, 0, 0, 1, 0, 0, 0, 
2301     0, 0, 0, 1, 1, 0, 0, 5, 
2302     5, 0, 0, 0, 1, 0, 1, 0, 
2303     0, 0, 0, 1, 0, 0, 0, 0, 
2304     5, 5, 0, 0, 1, 0, 7, 7, 
2305     7, 7, 0, 0, 0, 0, 0, 0, 
2306     0, 0, 0, 0, 0, 0, 0, 0, 
2307     0, 9, 9, 3, 3, 3, 1, 0, 
2308     3, 3, 0, 0, 0, 0, 0, 3, 
2309     3, 3, 3, 0, 0, 1, 0, 0, 
2310     0, 5, 5, 0, 0, 0, 5, 5, 
2311     0, 0, 1, 0, 0, 0, 0, 0, 
2312     0, 1, 1, 0, 0, 5, 5, 0, 
2313     0, 0, 1, 0, 1, 0, 0, 0, 
2314     0, 1, 0, 0, 0, 0, 5, 5, 
2315     0, 0, 1, 0, 35, 35, 35, 32, 
2316     7, 35, 35, 3, 3, 3, 3, 0, 
2317     0, 0, 0, 0, 5, 5, 0, 0, 
2318     5, 5, 0, 0, 5, 5, 0, 0, 
2319     0, 5, 1, 5, 0, 0, 0, 0, 
2320     0, 0, 5, 5, 1, 0, 0, 0, 
2321     5, 5, 0, 0, 5, 5, 0, 0, 
2322     5, 5, 0, 3, 3, 3, 1, 0, 
2323     3, 3, 0, 0, 0, 0, 0, 0, 
2324     3, 3, 3, 3, 0, 0, 1, 0, 
2325     0, 0, 5, 0, 5, 5, 0, 0, 
2326     0, 5, 0, 5, 5, 0, 0, 1, 
2327     0, 0, 0, 0, 0, 0, 0, 1, 
2328     1, 0, 0, 0, 5, 0, 5, 5, 
2329     0, 0, 0, 1, 0, 1, 0, 0, 
2330     0, 0, 0, 1, 0, 0, 0, 0, 
2331     0, 5, 0, 5, 5, 0, 0, 1, 
2332     0, 0, 35, 35, 35, 32, 7, 35, 
2333     35, 3, 3, 3, 3, 0, 0, 0, 
2334     0, 0, 5, 0, 5, 5, 0, 0, 
2335     5, 0, 5, 5, 0, 0, 5, 0, 
2336     5, 5, 0, 0, 0, 5, 1, 0, 
2337     5, 5, 0, 0, 0, 0, 0, 0, 
2338     0, 5, 0, 5, 5, 1, 0, 0, 
2339     0, 5, 0, 5, 5, 0, 0, 5, 
2340     0, 5, 5, 0, 0, 5, 0, 5, 
2341     5, 0, 0, 0, 5, 5, 0, 0, 
2342     5, 5, 0, 0, 5, 5, 0, 0, 
2343     0, 5, 1, 5, 0, 0, 0, 0, 
2344     0, 0, 5, 5, 1, 0, 0, 0, 
2345     5, 5, 0, 0, 5, 5, 0, 0, 
2346     0, 0, 0, 0, 0, 0, 5, 0, 
2347     5, 5, 0, 0, 1, 0, 0, 0, 
2348     0, 0, 0, 0, 1, 1, 0, 0, 
2349     0, 5, 0, 5, 5, 0, 0, 0, 
2350     1, 0, 1, 0, 0, 0, 0, 0, 
2351     1, 0, 0, 0, 0, 0, 5, 0, 
2352     5, 5, 0, 0, 1, 0, 0, 7, 
2353     7, 7, 7, 0, 0, 0, 0, 0, 
2354     0, 0, 5, 0, 5, 5, 0, 0, 
2355     5, 0, 5, 5, 0, 0, 5, 0, 
2356     5, 5, 0, 0, 0, 5, 1, 0, 
2357     5, 5, 0, 0, 0, 0, 0, 0, 
2358     0, 5, 0, 5, 5, 1, 0, 0, 
2359     0, 5, 0, 5, 5, 0, 0, 5, 
2360     0, 5, 5, 0, 0, 5, 0, 5, 
2361     5, 1, 1, 1, 0, 0, 1, 0, 
2362     0, 0, 1, 0, 0, 0, 0, 5, 
2363     5, 7, 7, 7, 7, 7, 7, 0, 
2364     0, 0, 0, 0, 0, 0, 0, 0, 
2365     0, 0, 5, 0, 5, 5, 0, 0, 
2366     0, 3, 0, 0, 0, 5, 0, 5, 
2367     5, 1, 1, 1, 0, 0, 1, 1, 
2368     0, 0, 0, 23, 0, 7, 7, 7, 
2369     7, 7, 7, 29, 0, 0, 0, 0, 
2370     5, 0, 0, 0, 0, 5, 5, 0, 
2371     0, 0, 0, 0, 0, 0, 3, 0, 
2372     1, 1, 0, 0, 23, 0, 0, 0, 
2373     0, 23, 5, 5, 5, 0, 0, 0, 
2374     0, 0, 0, 26, 0, 0, 5, 0, 
2375     0, 0, 5, 5, 0, 7, 7, 7, 
2376     7, 7, 7, 29, 0, 0, 0, 0, 
2377     0, 0, 0, 3, 0, 1, 0, 0, 
2378     0, 0, 26, 5, 5, 5, 23, 5, 
2379     5, 0, 0, 0, 0, 23, 0, 7, 
2380     7, 7, 7, 0, 0, 0, 0, 0, 
2381     0, 0, 3, 0, 1, 1, 0, 0, 
2382     1, 26, 0, 0, 0, 0, 26, 5, 
2383     5, 5, 0, 0, 23, 5, 5, 0, 
2384     0, 1, 0, 0, 0, 0, 0, 5, 
2385     0, 5, 5, 0, 0, 23, 0, 0, 
2386     23, 5, 5, 0, 0, 0, 0, 0, 
2387     0, 26, 0, 5, 0, 0, 0, 5, 
2388     5, 0, 7, 7, 7, 7, 7, 7, 
2389     29, 0, 0, 0, 0, 5, 0, 1, 
2390     1, 0, 0, 1, 1, 23, 23, 0, 
2391     0, 0, 26, 0, 0, 5, 5, 26, 
2392     5, 5, 5, 0, 0, 0, 0, 0, 
2393     0, 0, 3, 0, 1, 1, 0, 0, 
2394     26, 26, 0, 0, 26, 5, 5, 0, 
2395     19, 0, 1, 0, 0, 0, 5, 5, 
2396     0, 0, 0, 5, 5, 0, 0, 1, 
2397     0, 0, 0, 0, 0, 0, 1, 1, 
2398     0, 0, 5, 5, 0, 0, 0, 1, 
2399     0, 1, 0, 0, 0, 0, 1, 0, 
2400     0, 0, 0, 5, 5, 0, 0, 1, 
2401     0, 35, 35, 35, 32, 7, 35, 35, 
2402     3, 3, 3, 3, 0, 0, 0, 0, 
2403     0, 5, 5, 0, 0, 5, 5, 0, 
2404     0, 5, 5, 0, 0, 0, 5, 1, 
2405     5, 0, 0, 0, 0, 0, 0, 5, 
2406     5, 1, 0, 0, 0, 5, 5, 0, 
2407     0, 5, 5, 0, 0, 5, 5, 0, 
2408     3, 3, 3, 1, 0, 3, 3, 0, 
2409     0, 0, 0, 0, 0, 3, 3, 3, 
2410     3, 0, 0, 1, 0, 0, 0, 5, 
2411     0, 5, 5, 0, 0, 0, 5, 0, 
2412     5, 5, 0, 0, 1, 0, 0, 0, 
2413     0, 0, 0, 0, 1, 1, 0, 0, 
2414     0, 5, 0, 5, 5, 0, 0, 0, 
2415     1, 0, 1, 0, 0, 0, 0, 0, 
2416     1, 0, 0, 0, 0, 0, 5, 0, 
2417     5, 5, 0, 0, 1, 0, 0, 35, 
2418     35, 35, 32, 7, 35, 35, 3, 3, 
2419     3, 3, 0, 0, 0, 0, 0, 5, 
2420     0, 5, 5, 0, 0, 5, 0, 5, 
2421     5, 0, 0, 5, 0, 5, 5, 0, 
2422     0, 0, 5, 1, 0, 5, 5, 0, 
2423     0, 0, 0, 0, 0, 0, 5, 0, 
2424     5, 5, 1, 0, 0, 0, 5, 0, 
2425     5, 5, 0, 0, 5, 0, 5, 5, 
2426     0, 0, 5, 0, 5, 5, 0, 0, 
2427     9, 9, 9, 9, 13, 13, 41, 41, 
2428     41, 41, 11, 11, 38, 38, 38, 38, 
2429     15, 15, 44, 44, 44, 44, 17, 17, 
2430     47, 47, 47, 47
2431 };
2432 
2433 static const int8_t _rfc5322_eof_actions[] = {
2434     0, 0, 21, 21, 21, 21, 21, 21, 
2435     21, 21, 21, 21, 21, 21, 21, 21, 
2436     21, 21, 21, 21, 21, 21, 21, 21, 
2437     21, 21, 21, 21, 21, 21, 21, 21, 
2438     21, 21, 21, 21, 21, 21, 21, 21, 
2439     21, 21, 21, 21, 21, 21, 21, 21, 
2440     21, 21, 21, 21, 21, 21, 21, 21, 
2441     21, 21, 21, 21, 21, 21, 21, 21, 
2442     21, 21, 21, 21, 21, 21, 21, 21, 
2443     21, 21, 21, 21, 21, 21, 21, 21, 
2444     21, 21, 21, 21, 21, 21, 21, 21, 
2445     21, 21, 21, 21, 21, 21, 21, 21, 
2446     21, 21, 21, 21, 21, 21, 21, 21, 
2447     21, 21, 21, 21, 21, 21, 21, 21, 
2448     21, 21, 21, 21, 21, 21, 21, 21, 
2449     21, 21, 21, 21, 21, 21, 21, 21, 
2450     21, 21, 21, 21, 21, 21, 21, 21, 
2451     21, 21, 21, 21, 21, 21, 21, 21, 
2452     21, 21, 21, 21, 21, 21, 21, 21, 
2453     21, 21, 21, 21, 21, 21, 21, 21, 
2454     21, 21, 21, 21, 21, 21, 21, 21, 
2455     21, 21, 21, 21, 21, 21, 21, 21, 
2456     21, 21, 21, 21, 21, 21, 21, 21, 
2457     21, 21, 21, 21, 21, 21, 21, 21, 
2458     21, 21, 21, 21, 21, 21, 21, 21, 
2459     21, 21, 21, 21, 21, 21, 21, 21, 
2460     21, 21, 21, 21, 21, 21, 21, 21, 
2461     21, 21, 21, 21, 21, 21, 21, 21, 
2462     21, 21, 21, 21, 21, 21, 21, 21, 
2463     21, 21, 21, 21, 21, 21, 21, 21, 
2464     21, 21, 21, 21, 21, 21, 21, 21, 
2465     21, 21, 21, 21, 21, 21, 21, 21, 
2466     21, 21, 21, 21, 21, 21, 21, 21, 
2467     21, 21, 21, 21, 21, 21, 21, 21, 
2468     21, 21, 21, 21, 21, 21, 21, 21, 
2469     21, 21, 21, 21, 21, 21, 21, 21, 
2470     21, 21, 21, 21, 21, 21, 21, 21, 
2471     21, 21, 21, 21, 21, 21, 21, 21, 
2472     21, 21, 21, 21, 21, 21, 21, 21, 
2473     21, 21, 21, 21, 21, 21, 21, 21, 
2474     21, 21, 21, 21, 21, 21, 21, 21, 
2475     21, 21, 21, 21, 21, 21, 21, 21, 
2476     21, 21, 21, 21, 21, 21, 21, 21, 
2477     21, 21, 21, 21, 21, 21, 21, 21, 
2478     21, 21, 21, 21, 21, 21, 21, 21, 
2479     21, 21, 21, 21, 21, 21, 21, 21, 
2480     21, 21, 21, 21, 21, 21, 21, 21, 
2481     21, 21, 21, 21, 21, 21, 21, 21, 
2482     21, 21, 21, 21, 21, 21, 21, 21, 
2483     21, 21, 21, 21, 21, 21, 21, 21, 
2484     21, 21, 21, 21, 21, 21, 21, 21, 
2485     21, 21, 21, 21, 21, 21, 21, 21, 
2486     21, 21, 21, 21, 21, 21, 21, 21, 
2487     21, 21, 21, 21, 21, 21, 21, 21, 
2488     21, 21, 21, 21, 21, 21, 21, 21, 
2489     21, 21, 21, 21, 21, 21, 21, 21, 
2490     21, 21, 21, 21, 21, 21, 21, 21, 
2491     21, 21, 21, 21, 21, 21, 21, 21, 
2492     21, 21, 21, 21, 21, 21, 21, 21, 
2493     21, 21, 21, 21, 21, 21, 21, 21, 
2494     21, 21, 21, 21, 21, 21, 21, 21, 
2495     21, 21, 21, 21, 21, 21, 21, 21, 
2496     21, 21, 21, 21, 21, 21, 21, 21, 
2497     21, 21, 21, 21, 21, 21, 21, 21, 
2498     21, 21, 21, 21, 21, 21, 21, 21, 
2499     21, 21, 21, 21, 21, 21, 21, 21, 
2500     21, 21, 21, 21, 21, 21, 21, 21, 
2501     21, 21, 21, 21, 21, 21, 21, 21, 
2502     21, 21, 21, 21, 21, 21, 21, 21, 
2503     21, 21, 21, 21, 21, 21, 21, 21, 
2504     21, 21, 21, 21, 21, 21, 21, 21, 
2505     21, 21, 21, 21, 21, 21, 21, 21, 
2506     21, 21, 21, 21, 21, 21, 21, 21, 
2507     21, 21, 21, 21, 21, 21, 21, 21, 
2508     21, 21, 21, 21, 21, 21, 21, 21, 
2509     21, 21, 21, 21, 21, 21, 21, 21, 
2510     21, 21, 21, 21, 21, 21, 21, 21, 
2511     21, 21, 21, 21, 21, 21, 21, 21, 
2512     21, 21, 21, 21, 21, 21, 21, 21, 
2513     21, 21, 21, 21, 21, 21, 21, 21, 
2514     21, 21, 21, 21, 21, 21, 21, 21, 
2515     21, 21, 21, 21, 21, 21, 21, 21, 
2516     21, 21, 21, 21, 21, 21, 21, 21, 
2517     21, 21, 21, 21, 21, 21, 21, 21, 
2518     21, 21, 21, 21, 21, 21, 21, 21, 
2519     21, 21, 21, 21, 21, 21, 21, 21, 
2520     21, 21, 21, 21, 21, 21, 21, 21, 
2521     21, 21, 21, 21, 21, 21, 21, 21, 
2522     21, 21, 21, 21, 21, 21, 21, 21, 
2523     21, 21, 21, 21, 21, 21, 21, 21, 
2524     21, 21, 21, 21, 21, 21, 21, 21, 
2525     21, 21, 21, 21, 21, 21, 21, 21, 
2526     21, 21, 21, 21, 21, 0, 0, 0, 
2527     13, 0, 11, 15, 15, 15, 0, 15, 
2528     0, 0, 0, 0, 0, 0, 0, 0, 
2529     0, 15, 0, 0, 0, 0, 0, 0, 
2530     0, 0, 0, 15, 0, 0, 0, 0, 
2531     0, 0, 0, 0, 0, 11, 0, 0, 
2532     0, 0, 0, 0, 0, 0, 0, 17, 
2533     17, 17, 17, 17, 17, 17, 17, 17, 
2534     17, 17, 17, 17, 17, 17, 17, 17, 
2535     17, 17, 17, 17, 0, 0, 0, 0, 
2536     0, 0, 17, 17, 17, 17, 17, 17, 
2537     0, 13, 13, 0, 13, 0, 0, 0, 
2538     0, 0, 0, 0, 0, 0, 13, 0, 
2539     0, 0, 0, 0, 0, 0, 0, 0, 
2540     13
2541 };
2542 
2543 static const int rfc5322_start = 741;
2544 static const int rfc5322_first_final = 741;
2545 static const int rfc5322_error = 0;
2546 
2547 static const int rfc5322_en_main = 741;
2548 
2549 
2550 #line 150 "Rfc5322HeaderParser.cpp"
2551 
2552 #ifdef __clang__
2553 #pragma clang diagnostic pop
2554 #endif
2555 
2556 Rfc5322HeaderParser::Rfc5322HeaderParser():
2557     listPostNo(false), m_error(false)
2558 {
2559 }
2560 
2561 void Rfc5322HeaderParser::clear()
2562 {
2563     m_error = false;
2564     references.clear();
2565     listPost.clear();
2566     messageId.clear();
2567     inReplyTo.clear();
2568     listPostNo = false;
2569 }
2570 
2571 bool Rfc5322HeaderParser::parse(const QByteArray &data)
2572 {
2573     clear();
2574 
2575     const char *p = data.constData();
2576     const char *pe = p + data.length();
2577     const char *eof = pe;
2578     int cs;
2579 
2580     QByteArray str;
2581     QList<QByteArray> list;
2582 
2583     
2584 #line 2585 "Rfc5322HeaderParser.generated.cpp"
2585     {
2586     cs = rfc5322_start;
2587     }
2588 
2589 #line 183 "Rfc5322HeaderParser.cpp"
2590     
2591 #line 2592 "Rfc5322HeaderParser.generated.cpp"
2592     {
2593     int _klen;
2594     unsigned int _trans;
2595     const int8_t *_acts;
2596     unsigned int _nacts;
2597     const int8_t *_keys;
2598 
2599     if ( p == pe )
2600         goto _test_eof;
2601     if ( cs == 0 )
2602         goto _out;
2603 _resume:
2604     _keys = _rfc5322_trans_keys + _rfc5322_key_offsets[cs];
2605     _trans = _rfc5322_index_offsets[cs];
2606 
2607     _klen = _rfc5322_single_lengths[cs];
2608     if ( _klen > 0 ) {
2609         const int8_t *_lower = _keys;
2610         const int8_t *_mid;
2611         const int8_t *_upper = _keys + _klen - 1;
2612         while (1) {
2613             if ( _upper < _lower )
2614                 break;
2615 
2616             _mid = _lower + ((_upper-_lower) >> 1);
2617             if ( (*p) < *_mid )
2618                 _upper = _mid - 1;
2619             else if ( (*p) > *_mid )
2620                 _lower = _mid + 1;
2621             else {
2622                 _trans += (unsigned int)(_mid - _keys);
2623                 goto _match;
2624             }
2625         }
2626         _keys += _klen;
2627         _trans += _klen;
2628     }
2629 
2630     _klen = _rfc5322_range_lengths[cs];
2631     if ( _klen > 0 ) {
2632         const int8_t *_lower = _keys;
2633         const int8_t *_mid;
2634         const int8_t *_upper = _keys + (_klen<<1) - 2;
2635         while (1) {
2636             if ( _upper < _lower )
2637                 break;
2638 
2639             _mid = _lower + (((_upper-_lower) >> 1) & ~1);
2640             if ( (*p) < _mid[0] )
2641                 _upper = _mid - 2;
2642             else if ( (*p) > _mid[1] )
2643                 _lower = _mid + 2;
2644             else {
2645                 _trans += (unsigned int)((_mid - _keys)>>1);
2646                 goto _match;
2647             }
2648         }
2649         _trans += _klen;
2650     }
2651 
2652 _match:
2653     _trans = _rfc5322_indicies[_trans];
2654     cs = _rfc5322_trans_targs[_trans];
2655 
2656     if ( _rfc5322_trans_actions[_trans] == 0 )
2657         goto _again;
2658 
2659     _acts = _rfc5322_actions + _rfc5322_trans_actions[_trans];
2660     _nacts = (unsigned int) *_acts++;
2661     while ( _nacts-- > 0 )
2662     {
2663         switch ( *_acts++ )
2664         {
2665     case 0:
2666 #line 35 "Rfc5322HeaderParser.cpp"
2667     {
2668 #ifdef RAGEL_DEBUG
2669         qDebug() << "push_current_char " << *p;
2670 #endif
2671         str.append(*p);
2672     }
2673     break;
2674     case 1:
2675 #line 42 "Rfc5322HeaderParser.cpp"
2676     {
2677 #ifdef RAGEL_DEBUG
2678         qDebug() << "clear_str";
2679 #endif
2680         str.clear();
2681     }
2682     break;
2683     case 2:
2684 #line 49 "Rfc5322HeaderParser.cpp"
2685     {
2686         switch (*p) {
2687             case 'n':
2688                 str += "\n";
2689                 break;
2690             case 'r':
2691                 str += "\r";
2692                 break;
2693             case '0':
2694                 str += "\0";
2695                 break;
2696             case '\\':
2697                 str += "\\";
2698                 break;
2699             default:
2700                 str += '\\' + *p;
2701         }
2702 #ifdef RAGEL_DEBUG
2703         qDebug() << "push_current_backslashed \\" << *p;
2704 #endif
2705     }
2706     break;
2707     case 3:
2708 #line 71 "Rfc5322HeaderParser.cpp"
2709     {
2710 #ifdef RAGEL_DEBUG
2711         qDebug() << "push_string_list " << str.data();
2712 #endif
2713         list.append(str);
2714         str.clear();
2715     }
2716     break;
2717     case 4:
2718 #line 79 "Rfc5322HeaderParser.cpp"
2719     {
2720 #ifdef RAGEL_DEBUG
2721         qDebug() << "clear_list";
2722 #endif
2723         list.clear();
2724         str.clear();
2725     }
2726     break;
2727     case 5:
2728 #line 87 "Rfc5322HeaderParser.cpp"
2729     {
2730         if (list.size() == 1) {
2731 #ifdef RAGEL_DEBUG
2732             qDebug() << "Message-Id: " << list[0].data();
2733 #endif
2734             messageId += list;
2735         } else {
2736 #ifdef RAGEL_DEBUG
2737             qDebug() << "invalid Message-Id";
2738 #endif
2739         }
2740     }
2741     break;
2742     case 6:
2743 #line 100 "Rfc5322HeaderParser.cpp"
2744     {
2745         inReplyTo += list;
2746 #ifdef RAGEL_DEBUG
2747         qDebug() << "In-Reply-To: " << list;
2748 #endif
2749     }
2750     break;
2751     case 7:
2752 #line 107 "Rfc5322HeaderParser.cpp"
2753     {
2754         references += list;
2755 #ifdef RAGEL_DEBUG
2756         qDebug() << "got_references_header:" << references;
2757 #endif
2758     }
2759     break;
2760     case 8:
2761 #line 114 "Rfc5322HeaderParser.cpp"
2762     {
2763         listPost += list;
2764 #ifdef RAGEL_DEBUG
2765         qDebug() << "got_list_post_header:" << listPost;
2766 #endif
2767     }
2768     break;
2769     case 9:
2770 #line 121 "Rfc5322HeaderParser.cpp"
2771     {
2772         listPostNo = true;
2773 #ifdef RAGEL_DEBUG
2774         qDebug() << "got_list_post_no";
2775 #endif
2776     }
2777     break;
2778     case 10:
2779 #line 128 "Rfc5322HeaderParser.cpp"
2780     {
2781 #ifdef RAGEL_DEBUG
2782         qDebug() << "Error when parsing RFC5322 headers";
2783 #endif
2784         m_error = true;
2785     }
2786     break;
2787 #line 2788 "Rfc5322HeaderParser.generated.cpp"
2788         }
2789     }
2790 
2791 _again:
2792     if ( cs == 0 )
2793         goto _out;
2794     if ( ++p != pe )
2795         goto _resume;
2796     _test_eof: {}
2797     if ( p == eof )
2798     {
2799     const int8_t *__acts = _rfc5322_actions + _rfc5322_eof_actions[cs];
2800     unsigned int __nacts = (unsigned int) *__acts++;
2801     while ( __nacts-- > 0 ) {
2802         switch ( *__acts++ ) {
2803     case 5:
2804 #line 87 "Rfc5322HeaderParser.cpp"
2805     {
2806         if (list.size() == 1) {
2807 #ifdef RAGEL_DEBUG
2808             qDebug() << "Message-Id: " << list[0].data();
2809 #endif
2810             messageId += list;
2811         } else {
2812 #ifdef RAGEL_DEBUG
2813             qDebug() << "invalid Message-Id";
2814 #endif
2815         }
2816     }
2817     break;
2818     case 6:
2819 #line 100 "Rfc5322HeaderParser.cpp"
2820     {
2821         inReplyTo += list;
2822 #ifdef RAGEL_DEBUG
2823         qDebug() << "In-Reply-To: " << list;
2824 #endif
2825     }
2826     break;
2827     case 7:
2828 #line 107 "Rfc5322HeaderParser.cpp"
2829     {
2830         references += list;
2831 #ifdef RAGEL_DEBUG
2832         qDebug() << "got_references_header:" << references;
2833 #endif
2834     }
2835     break;
2836     case 8:
2837 #line 114 "Rfc5322HeaderParser.cpp"
2838     {
2839         listPost += list;
2840 #ifdef RAGEL_DEBUG
2841         qDebug() << "got_list_post_header:" << listPost;
2842 #endif
2843     }
2844     break;
2845     case 10:
2846 #line 128 "Rfc5322HeaderParser.cpp"
2847     {
2848 #ifdef RAGEL_DEBUG
2849         qDebug() << "Error when parsing RFC5322 headers";
2850 #endif
2851         m_error = true;
2852     }
2853     break;
2854 #line 2855 "Rfc5322HeaderParser.generated.cpp"
2855         }
2856     }
2857     }
2858 
2859     _out: {}
2860     }
2861 
2862 #line 184 "Rfc5322HeaderParser.cpp"
2863 
2864     return !m_error;
2865 }
2866 
2867 }
2868 }
2869 
2870 #if 0
2871 #include <iostream>
2872 int main()
2873 {
2874     QByteArray data;
2875     std::string line;
2876 
2877     while (std::getline(std::cin, line)) {
2878         data += line.c_str();
2879         data += '\n';
2880     }
2881 
2882     Imap::Parser::Rfc5322HeaderParser parser;
2883     bool res = parser.parse(data);
2884     if (!res) {
2885         qDebug() << "Parsing error.";
2886         return 1;
2887     }
2888 
2889     qDebug() << "References:" << parser.references;
2890 
2891     return 0;
2892 }
2893 #endif