--- embedaddon/sudo/plugins/sudoers/toke.c 2012/02/21 16:23:02 1.1.1.1 +++ embedaddon/sudo/plugins/sudoers/toke.c 2012/10/09 09:29:52 1.1.1.3 @@ -4,7 +4,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /usr/local/www/users/anoncvs/cvs/embedaddon/sudo/plugins/sudoers/toke.c,v 1.1.1.1 2012/02/21 16:23:02 misho Exp $ + * $Header: /usr/local/www/users/anoncvs/cvs/embedaddon/sudo/plugins/sudoers/toke.c,v 1.1.1.3 2012/10/09 09:29:52 misho Exp $ */ #define FLEX_SCANNER @@ -289,77 +289,79 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 59 -#define YY_END_OF_BUFFER 60 -static yyconst short int yy_accept[607] = +#define YY_NUM_RULES 61 +#define YY_END_OF_BUFFER 62 +static yyconst short int yy_accept[622] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 60, 47, 55, 54, 53, 46, 58, 32, - 48, 49, 32, 50, 47, 47, 47, 47, 52, 51, - 58, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 58, 47, 47, 55, 58, 42, 42, 42, 42, - 42, 2, 58, 1, 47, 47, 17, 16, 17, 16, - 16, 58, 58, 58, 3, 9, 8, 9, 4, 9, - 5, 58, 13, 13, 13, 11, 12, 47, 0, 55, - 53, 0, 57, 0, 47, 34, 0, 32, 0, 33, - 0, 45, 45, 0, 47, 47, 0, 47, 47, 47, + 0, 0, 62, 49, 57, 56, 55, 48, 60, 32, + 50, 51, 32, 52, 49, 49, 49, 49, 54, 53, + 60, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 60, 49, 49, 57, 60, 44, 44, 44, 44, + 44, 2, 60, 1, 49, 44, 44, 49, 17, 16, + 17, 16, 16, 60, 60, 60, 3, 9, 8, 9, + 4, 9, 5, 60, 13, 13, 13, 11, 12, 49, + 0, 57, 55, 0, 59, 0, 49, 34, 0, 32, + 0, 33, 0, 47, 47, 0, 49, 49, 0, 49, - 47, 0, 37, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 47, 56, 47, 55, 0, 0, 0, - 0, 0, 0, 47, 47, 47, 47, 47, 2, 1, - 0, 1, 43, 43, 0, 47, 17, 17, 15, 14, - 15, 0, 0, 3, 9, 0, 6, 7, 9, 9, - 13, 0, 13, 13, 0, 10, 0, 0, 0, 34, - 34, 0, 0, 47, 47, 47, 47, 47, 0, 0, - 37, 37, 42, 39, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 47, 0, 0, 0, 0, 0, - 0, 47, 47, 47, 47, 47, 0, 47, 10, 0, + 49, 49, 49, 0, 37, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 49, 58, 49, + 57, 0, 0, 0, 0, 0, 0, 49, 49, 49, + 49, 49, 2, 1, 0, 1, 45, 45, 0, 49, + 17, 17, 15, 14, 15, 0, 0, 3, 9, 0, + 6, 7, 9, 9, 13, 0, 13, 13, 0, 10, + 0, 0, 0, 34, 34, 0, 0, 49, 49, 49, + 49, 49, 0, 0, 37, 37, 44, 39, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 49, 0, 0, 0, 0, 0, 0, 49, 49, 49, - 47, 47, 47, 47, 47, 47, 0, 38, 38, 38, - 0, 0, 37, 37, 37, 37, 37, 37, 37, 42, - 42, 42, 42, 42, 42, 42, 42, 40, 42, 41, - 47, 0, 0, 0, 0, 0, 0, 47, 47, 47, - 47, 47, 47, 47, 0, 0, 38, 38, 38, 0, - 37, 37, 0, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 0, 25, 42, 42, 42, 42, - 42, 42, 42, 42, 47, 0, 0, 0, 0, 47, - 47, 47, 47, 47, 47, 47, 47, 0, 38, 0, + 49, 49, 0, 49, 10, 0, 49, 49, 49, 49, + 49, 49, 0, 38, 38, 38, 0, 0, 37, 37, + 37, 37, 37, 37, 37, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 40, 44, 41, 49, 0, + 0, 0, 0, 0, 0, 49, 49, 49, 49, 49, + 49, 49, 0, 0, 38, 38, 38, 0, 37, 37, + 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 0, 25, 44, 44, 44, 44, 44, 44, + 44, 44, 42, 44, 49, 0, 0, 0, 0, 49, + 49, 49, 49, 49, 49, 49, 49, 0, 38, 0, + 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 49, 0, + 0, 0, 49, 49, 49, 35, 35, 35, 0, 0, + 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, + 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 44, 44, 44, 0, + 24, 44, 44, 44, 44, 0, 23, 0, 26, 49, + 0, 0, 0, 49, 49, 49, 49, 35, 35, 35, + 35, 0, 37, 0, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 42, - 42, 42, 42, 42, 42, 42, 42, 47, 0, 0, - 0, 47, 47, 47, 35, 35, 35, 0, 0, 37, + 37, 37, 37, 37, 37, 0, 0, 0, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 44, 44, 44, 44, 44, 44, 44, 46, 0, + 0, 0, 49, 20, 45, 36, 36, 36, 36, 37, + 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, - 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 42, 42, 0, 24, 42, - 42, 42, 42, 0, 23, 0, 26, 47, 0, 0, - 0, 47, 47, 47, 47, 35, 35, 35, 35, 0, - 37, 0, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, + 0, 37, 37, 37, 37, 37, 37, 37, 37, 44, + 44, 44, 44, 44, 0, 22, 0, 27, 0, 20, + 0, 0, 49, 0, 49, 49, 49, 36, 36, 36, + 36, 0, 0, 0, 0, 0, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 42, - 42, 42, 42, 42, 42, 44, 0, 0, 0, 47, - 20, 43, 36, 36, 36, 36, 37, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 0, 0, 0, 0, 0, 37, 37, - 37, 37, 37, 37, 37, 37, 42, 42, 42, 42, - 0, 22, 0, 27, 0, 20, 0, 0, 47, 0, - 47, 47, 47, 36, 36, 36, 36, 0, 0, 0, + 37, 37, 37, 37, 37, 37, 43, 0, 30, 44, + 44, 44, 0, 0, 0, 18, 0, 21, 20, 0, + 0, 0, 0, 0, 20, 0, 49, 49, 49, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 0, 28, 44, 44, 21, 0, 0, 20, 49, 49, + 49, 49, 49, 0, 0, 0, 0, 0, 37, 37, + 37, 37, 37, 37, 37, 37, 0, 31, 44, 0, + 49, 49, 49, 37, 37, 37, 37, 37, 37, 0, - 37, 37, 0, 30, 42, 42, 42, 0, 0, 0, - 21, 20, 0, 0, 0, 0, 0, 20, 0, 47, - 47, 47, 0, 0, 0, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 0, 28, 42, 42, 21, 0, 18, - 0, 0, 20, 47, 47, 47, 47, 47, 0, 0, - 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, - 37, 0, 31, 42, 0, 47, 47, 47, 37, 37, - 37, 37, 37, 37, 0, 29, 0, 47, 47, 47, - 47, 47, 37, 37, 37, 37, 37, 0, 19, 35, - - 35, 35, 35, 35, 35, 0 + 29, 0, 0, 19, 49, 49, 49, 49, 49, 37, + 37, 37, 37, 37, 35, 35, 35, 35, 35, 35, + 0 } ; static yyconst int yy_ec[256] = @@ -371,13 +373,13 @@ static yyconst int yy_ec[256] = 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 1, 1, 25, 26, 10, 27, 28, 29, 30, 31, 32, 29, - 33, 34, 35, 36, 36, 37, 36, 38, 39, 40, - 36, 41, 42, 43, 44, 45, 46, 47, 48, 36, - 10, 49, 10, 1, 50, 1, 51, 52, 53, 54, + 33, 34, 35, 36, 36, 37, 38, 39, 40, 41, + 36, 42, 43, 44, 45, 46, 47, 48, 49, 36, + 10, 50, 10, 1, 51, 1, 52, 53, 54, 55, - 55, 56, 57, 57, 58, 57, 57, 59, 60, 61, - 62, 57, 57, 63, 64, 65, 66, 57, 57, 57, - 57, 57, 1, 1, 1, 1, 1, 1, 1, 1, + 56, 57, 58, 58, 59, 58, 58, 60, 61, 62, + 63, 58, 58, 64, 65, 66, 67, 58, 58, 58, + 58, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -394,587 +396,583 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[67] = +static yyconst int yy_meta[68] = { 0, 1, 2, 3, 4, 5, 6, 1, 7, 7, 1, 1, 8, 1, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 7, 1, 11, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, - 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, + 15, 16, 16, 16, 16, 16, 16, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15 } ; -static yyconst short int yy_base[671] = +static yyconst short int yy_base[686] = { 0, - 0, 65, 67, 72, 99, 114, 162, 227, 292, 340, - 86, 125, 2840, 2790, 2836, 3665, 2833, 3665, 387, 70, - 3665, 3665, 2771, 3665, 136, 397, 133, 159, 2795, 3665, - 3665, 453, 2781, 33, 504, 2770, 2767, 2777, 2765, 2771, - 2754, 559, 170, 19, 165, 583, 38, 49, 2739, 68, - 2727, 81, 219, 2771, 305, 48, 0, 3665, 2761, 3665, - 0, 250, 639, 119, 0, 2709, 3665, 108, 3665, 112, - 3665, 140, 2699, 98, 121, 3665, 195, 2693, 661, 2739, - 2736, 2736, 3665, 227, 247, 300, 316, 152, 354, 2681, - 686, 373, 2670, 711, 352, 722, 2692, 2669, 375, 414, + 0, 66, 68, 76, 119, 124, 173, 239, 148, 197, + 82, 90, 2937, 2886, 2933, 3595, 2929, 3595, 165, 65, + 3595, 3595, 2882, 3595, 130, 293, 173, 146, 2907, 3595, + 3595, 350, 2893, 42, 402, 41, 2889, 74, 2888, 2895, + 2876, 458, 197, 57, 219, 482, 38, 207, 2854, 37, + 2851, 117, 249, 2880, 326, 2841, 2852, 105, 0, 3595, + 2875, 3595, 0, 469, 424, 143, 0, 2828, 3595, 48, + 3595, 223, 3595, 155, 2827, 202, 97, 3595, 252, 2817, + 504, 2855, 2852, 2852, 3595, 258, 504, 312, 526, 201, + 548, 2796, 557, 528, 2795, 582, 579, 614, 2820, 2829, - 302, 2656, 57, 763, 0, 2628, 2625, 2614, 505, 2602, - 2606, 2599, 2601, 202, 3665, 153, 546, 2572, 2565, 2549, - 2537, 2524, 200, 110, 244, 28, 111, 252, 171, 2578, - 422, 2577, 565, 2529, 818, 262, 0, 2573, 179, 3665, - 3665, 599, 269, 0, 2513, 453, 3665, 3665, 2512, 548, - 2490, 2533, 206, 253, 323, 2535, 2524, 2513, 607, 615, - 306, 722, 586, 831, 867, 903, 939, 2499, 2456, 980, - 333, 1022, 1063, 0, 2430, 2394, 2363, 2364, 2374, 2369, - 2327, 2330, 2329, 2328, 266, 2289, 2283, 2272, 2274, 2279, - 409, 334, 2279, 145, 335, 83, 672, 278, 2327, 2325, + 593, 601, 266, 2818, 182, 656, 0, 2796, 2791, 2766, + 2761, 296, 2727, 2725, 2713, 2696, 2691, 426, 3595, 87, + 659, 2659, 2663, 2655, 2650, 2651, 257, 196, 318, 276, + 258, 288, 436, 2694, 631, 2693, 655, 2644, 690, 303, + 0, 2681, 168, 3595, 3595, 701, 352, 0, 2634, 723, + 3595, 3595, 2633, 447, 2632, 2676, 467, 461, 433, 2670, + 2659, 2600, 720, 733, 206, 755, 759, 771, 781, 791, + 828, 2581, 2570, 870, 453, 913, 955, 0, 2563, 2557, + 2540, 2523, 2530, 2541, 2536, 2516, 2502, 2496, 2475, 2473, + 277, 2442, 2436, 2402, 2404, 2407, 477, 436, 2405, 424, - 627, 259, 1106, 1142, 741, 210, 2293, 2279, 683, 513, - 2275, 2271, 352, 747, 1178, 780, 788, 1220, 815, 2270, - 400, 325, 2261, 2258, 2248, 2246, 2242, 0, 2240, 0, - 489, 2223, 2213, 2198, 2211, 2198, 420, 407, 529, 490, - 491, 1263, 1299, 1335, 2235, 2234, 839, 2234, 2232, 2228, - 2226, 528, 848, 657, 856, 665, 1371, 0, 877, 1382, - 886, 894, 1424, 913, 570, 3665, 2208, 2197, 2198, 2177, - 2184, 2193, 2190, 2169, 558, 2145, 2098, 2099, 648, 626, - 530, 559, 923, 336, 1467, 1503, 964, 2138, 2137, 2108, - 2086, 1537, 551, 1000, 1041, 1082, 653, 694, 797, 1049, + 401, 292, 813, 488, 2454, 2450, 845, 438, 855, 890, + 756, 465, 2428, 2418, 930, 554, 2409, 2408, 463, 898, + 999, 939, 972, 1042, 980, 2403, 490, 2378, 500, 2380, + 2338, 2327, 2325, 2321, 2310, 0, 2305, 0, 508, 2274, + 2238, 2212, 2211, 2176, 515, 517, 615, 527, 529, 1018, + 1061, 1086, 2212, 2210, 1026, 2209, 2203, 2171, 2166, 565, + 1069, 754, 1096, 802, 1123, 0, 1106, 1134, 1151, 1159, + 1177, 1196, 601, 3595, 2136, 2137, 2127, 2131, 2090, 2090, + 2084, 2078, 0, 2062, 607, 2056, 2024, 2025, 573, 576, + 578, 676, 1204, 591, 1221, 1239, 1231, 2064, 2031, 2006, - 923, 1580, 0, 1116, 1591, 1090, 1008, 1633, 1125, 2069, - 2065, 747, 686, 2046, 2005, 786, 926, 905, 2014, 1982, - 679, 634, 544, 915, 1675, 1710, 1745, 2015, 1978, 1962, - 1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273, - 1207, 950, 951, 962, 991, 1247, 1073, 1865, 0, 1283, - 1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924, - 1898, 1893, 1873, 1286, 3665, 1336, 3665, 707, 1790, 1783, - 786, 930, 764, 1298, 1358, 1041, 1960, 1995, 1400, 1823, - 1799, 1348, 708, 1406, 1348, 2031, 0, 559, 2042, 1441, - 1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548, + 2004, 1274, 676, 1256, 1293, 1318, 682, 808, 815, 1301, + 819, 1328, 0, 1339, 1350, 1367, 1247, 1393, 1377, 1955, + 1915, 1888, 742, 692, 1884, 1891, 794, 980, 777, 1889, + 1856, 652, 945, 680, 820, 1411, 1420, 1436, 1842, 1824, + 1800, 1446, 1473, 1455, 1266, 1515, 1492, 1500, 1809, 1534, + 1559, 1544, 1009, 1052, 1569, 1571, 1580, 1590, 1601, 0, + 1612, 1623, 1590, 1463, 1666, 1642, 1762, 1737, 1740, 1108, + 3595, 1696, 1672, 1662, 1628, 1157, 3595, 1158, 3595, 774, + 1514, 1500, 730, 1152, 697, 913, 1650, 805, 1686, 1709, + 1695, 1516, 1500, 1721, 1222, 1730, 1474, 1744, 0, 830, - 1557, 1602, 2126, 0, 1613, 2137, 1650, 1565, 1660, 1765, - 1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577, 897, 938, - 1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731, - 1563, 1478, 1504, 1694, 1524, 2324, 0, 617, 2335, 1753, - 1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358, - 1887, 714, 825, 2419, 0, 926, 1407, 1508, 1506, 1471, - 1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910, - 1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005, - 2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501, 0, - 1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769, + 1755, 1772, 1571, 1797, 1782, 1816, 1841, 1851, 1284, 1377, + 1832, 1861, 1861, 1872, 1883, 0, 1894, 1905, 1872, 1824, + 1924, 1414, 1400, 1375, 1336, 1331, 1159, 1483, 1312, 1274, + 1260, 1539, 606, 1730, 1238, 1949, 1959, 1969, 1984, 1256, + 1994, 2004, 2019, 1245, 1535, 1915, 1932, 1950, 2029, 0, + 874, 2040, 2057, 2065, 2082, 2101, 2109, 1214, 2126, 2136, + 2146, 1633, 1675, 2154, 924, 966, 2165, 0, 1003, 1092, + 1731, 1087, 1056, 1052, 2042, 3595, 2063, 3595, 1017, 2147, + 1126, 624, 1311, 2187, 2192, 2183, 1756, 2193, 2203, 2230, + 1979, 2238, 992, 2248, 2265, 2275, 830, 811, 1970, 2194, - 1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118, 384, - 1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596, - 2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362, - 2043, 2704, 0, 1224, 2715, 2403, 2437, 2445, 992, 2454, - 2474, 2483, 903, 1921, 3665, 1941, 839, 3665, 843, 3665, - 1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579, 811, - 2607, 2617, 2642, 640, 629, 2109, 535, 447, 2650, 0, - 1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684, - 2692, 337, 0, 333, 2067, 3665, 327, 2733, 1912, 2938, - 2974, 2743, 3665, 2767, 2777, 2658, 3665, 166, 3665, 2805, + 2281, 2214, 2291, 0, 1111, 2302, 2319, 2256, 2344, 2329, + 2362, 2371, 2387, 1807, 813, 1170, 0, 2065, 3595, 2228, + 738, 713, 680, 731, 1201, 3595, 900, 653, 2409, 2414, + 2419, 2424, 2418, 2436, 2445, 2446, 2459, 2469, 2480, 2494, + 2504, 2515, 569, 531, 2215, 2217, 2523, 2221, 2533, 0, + 1278, 2544, 2561, 2569, 2588, 519, 2597, 2606, 2615, 492, + 2304, 3595, 2393, 452, 3595, 1416, 2621, 2629, 2637, 1981, + 2647, 2657, 2672, 2682, 345, 2692, 2707, 2717, 305, 264, + 2303, 245, 191, 2725, 0, 1477, 2441, 3595, 2444, 1632, + 2735, 2745, 2755, 2770, 2780, 2790, 90, 0, 92, 2482, - 2813, 2847, 63, 2855, 2881, 3665, 3023, 3039, 3055, 3071, - 3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205, - 3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346, - 3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409, - 3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477, - 3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567, - 3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648 + 3595, 100, 1647, 3595, 2798, 1982, 2808, 2818, 2833, 3595, + 2843, 2853, 2763, 3595, 2868, 2876, 2884, 19, 2892, 2903, + 3595, 2953, 2969, 2985, 3001, 3017, 3033, 3049, 3065, 3081, + 3087, 3103, 3119, 1676, 3135, 3151, 3167, 3183, 3199, 3215, + 3231, 3237, 3244, 3260, 3276, 3282, 3289, 3295, 3301, 3307, + 3314, 3320, 3326, 3332, 3339, 3347, 3353, 3359, 3365, 3372, + 3380, 3386, 3392, 3399, 3407, 3413, 3421, 3428, 3436, 3442, + 3450, 3457, 3465, 3481, 3497, 3513, 3519, 3527, 3534, 3540, + 3548, 3554, 3562, 3578, 2159 } ; -static yyconst short int yy_def[671] = +static yyconst short int yy_def[686] = { 0, - 606, 1, 1, 1, 607, 607, 608, 608, 609, 609, - 610, 610, 606, 611, 606, 606, 606, 606, 612, 613, - 606, 606, 614, 606, 615, 611, 26, 26, 616, 606, - 606, 606, 32, 32, 32, 35, 35, 35, 35, 35, - 35, 611, 26, 611, 606, 612, 32, 32, 35, 35, - 35, 606, 606, 606, 617, 611, 618, 606, 618, 606, - 618, 606, 612, 606, 619, 620, 606, 620, 606, 620, - 606, 621, 622, 622, 622, 606, 606, 611, 611, 606, - 606, 623, 606, 624, 606, 613, 606, 625, 613, 614, - 614, 615, 626, 611, 611, 26, 616, 96, 96, 96, + 621, 1, 1, 1, 622, 622, 623, 623, 624, 624, + 625, 625, 621, 626, 621, 621, 621, 621, 627, 628, + 621, 621, 629, 621, 630, 626, 26, 26, 631, 621, + 621, 621, 32, 32, 32, 35, 35, 35, 35, 35, + 35, 626, 26, 626, 621, 627, 32, 32, 35, 35, + 35, 621, 621, 621, 632, 35, 35, 626, 633, 621, + 633, 621, 633, 621, 627, 621, 634, 635, 621, 635, + 621, 635, 621, 636, 637, 637, 637, 621, 621, 626, + 626, 621, 621, 638, 621, 639, 621, 628, 621, 640, + 628, 629, 629, 630, 641, 626, 626, 26, 631, 98, - 96, 627, 628, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 611, 606, 611, 606, 606, 606, 606, - 606, 606, 623, 611, 96, 611, 611, 611, 606, 606, - 606, 606, 617, 629, 611, 611, 618, 618, 606, 606, - 606, 624, 606, 619, 620, 620, 606, 606, 620, 620, - 622, 606, 622, 622, 606, 606, 623, 630, 606, 606, - 625, 625, 606, 611, 611, 611, 96, 167, 631, 606, - 632, 606, 104, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 611, 606, 606, 606, 606, 606, - 623, 611, 167, 611, 611, 611, 606, 611, 606, 630, - - 611, 611, 611, 611, 611, 611, 633, 634, 634, 209, - 635, 634, 636, 172, 606, 215, 215, 606, 215, 35, + 98, 98, 98, 642, 643, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 626, 621, 626, + 621, 621, 621, 621, 621, 621, 638, 626, 98, 626, + 626, 626, 621, 621, 621, 621, 632, 644, 626, 626, + 633, 633, 621, 621, 621, 639, 621, 634, 635, 635, + 621, 621, 635, 635, 637, 621, 637, 637, 621, 621, + 638, 645, 621, 621, 640, 640, 621, 626, 626, 626, + 98, 171, 646, 621, 647, 621, 106, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 611, 606, 606, 606, 606, 606, 623, 611, 611, 611, - 611, 611, 611, 611, 606, 637, 637, 247, 637, 638, - 639, 640, 606, 641, 218, 641, 641, 257, 641, 606, - 260, 260, 606, 260, 606, 606, 35, 35, 35, 35, - 35, 35, 35, 35, 611, 606, 606, 606, 623, 611, - 611, 611, 611, 611, 611, 611, 611, 642, 642, 643, - 644, 606, 606, 606, 606, 606, 645, 645, 646, 263, + 626, 621, 621, 621, 621, 621, 638, 626, 171, 626, - 646, 646, 302, 646, 606, 305, 305, 606, 305, 35, - 35, 35, 35, 35, 35, 35, 35, 611, 606, 606, - 623, 611, 611, 611, 611, 611, 611, 606, 647, 648, - 292, 606, 332, 332, 606, 332, 606, 606, 606, 606, - 606, 606, 649, 649, 650, 308, 650, 650, 348, 650, - 606, 351, 351, 606, 351, 35, 35, 606, 606, 35, - 35, 35, 35, 606, 606, 606, 606, 611, 606, 606, - 623, 611, 611, 611, 611, 611, 611, 611, 611, 606, - 651, 606, 652, 335, 652, 652, 386, 386, 606, 389, - 389, 606, 389, 606, 606, 606, 606, 653, 653, 654, + 626, 626, 621, 626, 621, 645, 626, 626, 626, 626, + 626, 626, 648, 649, 649, 215, 650, 649, 651, 176, + 621, 221, 221, 621, 221, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 626, 621, + 621, 621, 621, 621, 638, 626, 626, 626, 626, 626, + 626, 626, 621, 652, 652, 255, 652, 653, 654, 655, + 621, 656, 224, 656, 656, 265, 656, 621, 268, 268, + 621, 268, 621, 621, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 626, 621, 621, 621, 638, 626, + 626, 626, 626, 626, 626, 626, 626, 657, 657, 658, - 354, 654, 654, 403, 654, 606, 406, 406, 406, 35, - 35, 35, 35, 35, 35, 611, 606, 606, 623, 611, - 611, 611, 611, 611, 611, 611, 606, 606, 606, 606, - 655, 655, 656, 392, 656, 656, 436, 436, 606, 439, - 439, 606, 439, 606, 606, 606, 606, 606, 606, 657, - 657, 658, 658, 658, 454, 454, 35, 35, 35, 35, - 606, 606, 606, 606, 606, 606, 623, 623, 611, 659, - 660, 611, 611, 611, 611, 611, 611, 606, 606, 606, - 606, 606, 606, 661, 661, 662, 442, 662, 662, 489, - 489, 606, 492, 492, 606, 492, 606, 606, 606, 606, + 659, 621, 621, 621, 621, 621, 660, 660, 661, 271, + 661, 661, 312, 661, 621, 315, 315, 621, 315, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 626, 621, + 621, 638, 626, 626, 626, 626, 626, 626, 621, 662, + 663, 302, 621, 343, 343, 621, 343, 621, 621, 621, + 621, 621, 621, 664, 664, 665, 318, 665, 665, 359, + 665, 621, 362, 362, 621, 362, 35, 35, 35, 621, + 621, 35, 35, 35, 35, 621, 621, 621, 621, 626, + 621, 621, 638, 626, 626, 626, 626, 626, 626, 626, + 626, 621, 666, 621, 667, 346, 667, 667, 398, 398, - 663, 663, 606, 606, 35, 35, 35, 606, 664, 623, - 611, 659, 659, 659, 659, 606, 659, 660, 660, 611, - 611, 611, 606, 606, 606, 606, 665, 665, 666, 495, - 666, 666, 532, 532, 606, 535, 535, 535, 606, 606, - 606, 606, 606, 606, 606, 35, 35, 606, 664, 606, - 623, 606, 606, 611, 611, 611, 611, 611, 606, 606, - 606, 606, 606, 606, 667, 667, 668, 668, 668, 569, - 569, 606, 606, 35, 623, 611, 611, 611, 606, 606, - 606, 606, 669, 669, 606, 606, 670, 611, 611, 611, - 611, 611, 606, 606, 606, 606, 606, 670, 606, 611, + 621, 401, 401, 621, 401, 621, 621, 621, 621, 668, + 668, 669, 365, 669, 669, 415, 669, 621, 418, 418, + 418, 35, 35, 35, 35, 35, 35, 35, 626, 621, + 621, 638, 626, 626, 626, 626, 626, 626, 626, 621, + 621, 621, 621, 670, 670, 671, 404, 671, 671, 449, + 449, 621, 452, 452, 621, 452, 621, 621, 621, 621, + 621, 621, 672, 672, 673, 673, 673, 467, 467, 35, + 35, 35, 35, 35, 621, 621, 621, 621, 621, 621, + 674, 638, 626, 675, 676, 626, 626, 626, 626, 626, + 626, 621, 621, 621, 621, 621, 621, 677, 677, 678, - 611, 611, 611, 611, 611, 0, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606 + 455, 678, 678, 503, 503, 621, 506, 506, 621, 506, + 621, 621, 621, 621, 679, 679, 35, 621, 621, 35, + 35, 35, 621, 674, 674, 621, 638, 626, 675, 675, + 675, 675, 621, 675, 676, 676, 626, 626, 626, 621, + 621, 621, 621, 680, 680, 681, 509, 681, 681, 549, + 549, 621, 552, 552, 552, 621, 621, 621, 621, 621, + 621, 621, 35, 35, 621, 638, 621, 621, 626, 626, + 626, 626, 626, 621, 621, 621, 621, 621, 621, 682, + 682, 683, 683, 683, 584, 584, 621, 621, 35, 684, + 626, 626, 626, 621, 621, 621, 621, 685, 685, 621, + + 621, 684, 684, 621, 626, 626, 626, 626, 626, 621, + 621, 621, 621, 621, 626, 626, 626, 626, 626, 626, + 0, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621 } ; -static yyconst short int yy_nxt[3732] = +static yyconst short int yy_nxt[3663] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 14, 23, 24, 14, 14, 25, 26, 27, 28, 26, 26, 26, 26, 26, 29, 30, 31, 14, 32, 33, 33, - 33, 34, 35, 35, 35, 35, 36, 37, 35, 38, - 39, 40, 41, 35, 35, 35, 35, 35, 42, 14, - 43, 43, 43, 43, 43, 43, 14, 14, 14, 14, - 14, 14, 14, 44, 14, 14, 45, 79, 52, 105, - 46, 170, 53, 52, 105, 87, 79, 53, 54, 107, - 172, 55, 129, 54, 116, 105, 55, 74, 16, 75, - 76, 194, 130, 88, 47, 48, 79, 124, 49, 153, + 33, 34, 35, 35, 35, 35, 36, 35, 37, 35, + 38, 39, 40, 41, 35, 35, 35, 35, 35, 42, + 14, 43, 43, 43, 43, 43, 43, 14, 14, 14, + 14, 14, 14, 14, 44, 14, 14, 45, 81, 52, + 89, 46, 151, 53, 107, 110, 115, 52, 107, 54, + 111, 53, 55, 76, 16, 77, 78, 54, 90, 109, + 55, 76, 16, 77, 78, 47, 48, 150, 128, 49, - 15, 58, 59, 125, 60, 50, 111, 35, 51, 35, - 60, 79, 35, 136, 35, 15, 58, 59, 89, 60, - 143, 115, 60, 61, 154, 60, 74, 16, 75, 76, - 56, 79, 147, 127, 77, 56, 148, 60, 61, 93, - 93, 150, 115, 93, 93, 238, 152, 62, 99, 99, - 99, 99, 99, 99, 99, 99, 146, 87, 79, 79, - 146, 93, 62, 15, 16, 17, 117, 63, 599, 152, - 192, 195, 129, 77, 100, 100, 100, 100, 100, 101, - 143, 115, 130, 78, 94, 98, 98, 98, 98, 98, - 98, 98, 98, 79, 118, 119, 155, 156, 120, 151, + 158, 113, 604, 131, 56, 394, 81, 50, 57, 35, + 51, 35, 56, 547, 91, 114, 57, 35, 133, 35, + 15, 60, 61, 120, 62, 15, 60, 61, 134, 62, + 62, 79, 58, 95, 95, 62, 81, 95, 95, 79, + 58, 191, 62, 63, 147, 119, 156, 62, 63, 15, + 16, 17, 69, 65, 81, 95, 154, 119, 70, 71, + 72, 102, 102, 102, 102, 102, 103, 85, 64, 147, + 119, 140, 73, 64, 15, 16, 17, 86, 65, 96, + 87, 87, 87, 87, 87, 87, 87, 87, 101, 101, + 101, 101, 101, 101, 101, 101, 174, 74, 15, 16, - 162, 79, 83, 143, 115, 121, 185, 153, 122, 238, - 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 15, 16, - 17, 131, 63, 97, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 79, 139, 115, 140, 152, 141, 154, 78, 79, 140, - 191, 141, 85, 85, 85, 85, 85, 85, 85, 85, - 143, 115, 201, 141, 141, 64, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 15, 16, 17, 67, 63, 141, 193, + 17, 69, 65, 157, 621, 176, 89, 70, 71, 72, + 80, 621, 100, 100, 100, 100, 100, 100, 100, 100, + 121, 73, 66, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 15, 16, 17, 107, 65, 81, 74, 152, 122, 123, + 166, 156, 124, 159, 160, 166, 155, 198, 394, 85, + 125, 135, 129, 126, 87, 87, 87, 87, 87, 87, + 87, 87, 150, 87, 87, 87, 87, 87, 87, 87, + 87, 172, 172, 172, 172, 172, 172, 547, 66, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 79, 152, 68, 69, 70, 606, 196, 79, 134, 134, - 79, 606, 134, 134, 79, 198, 71, 168, 168, 168, - 168, 168, 168, 606, 155, 156, 79, 231, 159, 599, - 134, 160, 160, 160, 160, 160, 160, 160, 160, 241, - 72, 15, 16, 17, 67, 63, 382, 170, 89, 283, - 68, 69, 70, 135, 162, 86, 214, 86, 86, 267, - 530, 86, 86, 268, 71, 86, 170, 164, 165, 166, - 164, 164, 164, 164, 164, 214, 93, 93, 86, 86, - 93, 93, 79, 79, 79, 240, 83, 238, 72, 83, - 168, 168, 168, 168, 168, 168, 168, 168, 93, 84, + 67, 67, 67, 67, 67, 67, 97, 81, 98, 98, + 98, 98, 98, 98, 98, 98, 99, 621, 197, 201, + 100, 100, 100, 100, 100, 81, 81, 182, 501, 138, + 138, 80, 183, 138, 138, 621, 184, 81, 185, 239, + 200, 81, 81, 202, 100, 100, 100, 100, 100, 100, + 80, 138, 81, 147, 119, 246, 80, 204, 574, 80, + 80, 91, 80, 80, 80, 106, 106, 106, 106, 106, + 106, 106, 106, 99, 199, 139, 80, 106, 106, 106, + 106, 106, 107, 107, 107, 107, 108, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 81, - 79, 265, 85, 85, 85, 85, 85, 85, 85, 85, - 95, 83, 96, 96, 96, 96, 96, 96, 96, 96, - 97, 94, 83, 266, 98, 98, 98, 98, 98, 168, - 168, 168, 168, 168, 168, 168, 168, 85, 85, 85, - 85, 85, 85, 85, 85, 79, 551, 98, 98, 98, - 98, 98, 98, 78, 145, 79, 280, 145, 145, 78, - 606, 237, 78, 78, 145, 78, 78, 78, 104, 104, - 104, 104, 104, 104, 104, 104, 97, 145, 279, 78, - 104, 104, 104, 104, 104, 105, 105, 105, 105, 106, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 107, 100, 100, 100, 100, 100, 100, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 107, 107, 107, + 107, 107, 107, 107, 107, 621, 85, 147, 119, 107, + 107, 107, 107, 107, 159, 160, 146, 133, 107, 621, + 621, 621, 621, 621, 621, 621, 621, 134, 147, 119, + 81, 207, 248, 80, 80, 80, 80, 80, 80, 118, + 119, 80, 80, 80, 158, 80, 80, 174, 157, 80, + 143, 119, 144, 81, 145, 81, 220, 174, 144, 85, + 145, 80, 80, 80, 85, 81, 220, 81, 99, 246, + 246, 273, 145, 145, 86, 589, 150, 87, 87, 87, - 105, 79, 105, 98, 98, 98, 98, 98, 98, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 105, - 105, 105, 105, 105, 105, 105, 105, 606, 249, 249, - 249, 105, 105, 105, 105, 105, 177, 79, 79, 79, - 105, 178, 170, 275, 179, 282, 180, 117, 382, 143, - 115, 214, 97, 238, 78, 78, 78, 78, 78, 78, - 114, 115, 78, 78, 78, 170, 78, 78, 134, 134, - 78, 265, 134, 134, 214, 118, 119, 79, 79, 120, - 431, 431, 78, 78, 78, 83, 121, 93, 323, 122, - 134, 93, 79, 266, 281, 84, 146, 93, 85, 85, + 87, 87, 87, 87, 87, 80, 174, 80, 80, 80, + 156, 80, 80, 274, 81, 80, 156, 85, 145, 87, + 87, 87, 87, 87, 87, 87, 87, 80, 80, 80, + 245, 95, 95, 174, 276, 95, 95, 81, 163, 277, + 127, 164, 164, 164, 164, 164, 164, 164, 164, 88, + 249, 88, 88, 95, 501, 88, 88, 81, 92, 88, + 92, 92, 92, 285, 92, 92, 81, 290, 92, 257, + 257, 257, 88, 88, 289, 85, 81, 96, 81, 174, + 92, 92, 92, 94, 292, 80, 80, 94, 220, 80, + 80, 246, 447, 94, 168, 169, 170, 168, 168, 168, - 85, 85, 85, 85, 85, 85, 79, 79, 373, 93, - 93, 318, 324, 135, 606, 606, 606, 606, 606, 606, - 606, 606, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 484, 484, - 123, 83, 242, 243, 244, 242, 242, 242, 242, 242, - 83, 142, 530, 322, 606, 606, 606, 606, 606, 606, - 606, 606, 78, 487, 78, 78, 78, 170, 78, 78, - 253, 170, 78, 134, 79, 79, 255, 134, 606, 170, - 255, 83, 79, 134, 78, 78, 78, 90, 255, 90, - 90, 90, 372, 90, 90, 134, 134, 90, 247, 247, + 168, 168, 273, 333, 293, 94, 94, 80, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 274, 81, 85, 81, 81, 171, + 171, 171, 171, 171, 171, 171, 171, 334, 99, 332, + 81, 171, 171, 171, 171, 171, 87, 87, 87, 87, + 87, 87, 87, 87, 85, 81, 81, 483, 138, 138, + 121, 329, 138, 138, 81, 171, 171, 171, 171, 171, + 171, 177, 177, 177, 177, 177, 177, 177, 177, 99, + 138, 291, 527, 177, 177, 177, 177, 177, 122, 123, + 174, 137, 124, 80, 80, 137, 174, 80, 80, 220, - 248, 249, 249, 249, 249, 249, 211, 253, 170, 90, - 90, 90, 92, 321, 78, 78, 92, 255, 78, 78, - 360, 382, 92, 161, 361, 161, 161, 253, 170, 161, - 161, 384, 371, 161, 92, 92, 78, 167, 167, 167, - 167, 167, 167, 167, 167, 161, 161, 161, 358, 167, - 167, 167, 167, 167, 201, 79, 202, 202, 202, 202, - 202, 202, 219, 219, 219, 219, 219, 219, 219, 219, - 359, 416, 167, 167, 167, 167, 167, 167, 173, 173, - 173, 173, 173, 173, 173, 173, 97, 364, 83, 79, - 173, 173, 173, 173, 173, 257, 257, 257, 257, 257, + 125, 137, 81, 126, 139, 263, 383, 171, 171, 171, + 171, 171, 171, 137, 137, 80, 621, 621, 621, 621, + 621, 621, 621, 621, 149, 81, 372, 149, 149, 81, + 335, 373, 85, 526, 149, 164, 164, 164, 164, 164, + 164, 164, 164, 370, 565, 385, 81, 149, 164, 164, + 164, 164, 164, 164, 164, 164, 165, 564, 165, 165, + 95, 434, 165, 165, 95, 371, 165, 261, 174, 207, + 95, 208, 208, 208, 208, 208, 208, 263, 165, 165, + 165, 563, 95, 95, 207, 432, 208, 208, 208, 208, + 208, 208, 208, 208, 207, 376, 209, 209, 209, 209, - 257, 257, 257, 258, 258, 258, 258, 258, 259, 365, - 253, 170, 79, 167, 167, 167, 167, 167, 167, 133, - 300, 78, 78, 133, 559, 78, 78, 421, 606, 133, - 256, 256, 256, 256, 256, 256, 256, 256, 606, 170, - 419, 133, 133, 78, 201, 550, 202, 202, 202, 202, - 202, 202, 202, 202, 289, 289, 289, 289, 289, 289, - 289, 289, 211, 294, 295, 296, 294, 294, 294, 294, - 294, 264, 264, 264, 264, 264, 264, 264, 264, 79, - 201, 574, 203, 203, 203, 203, 203, 203, 203, 203, - 253, 170, 298, 298, 298, 298, 298, 298, 467, 83, + 209, 209, 209, 209, 207, 81, 210, 210, 210, 210, + 210, 211, 208, 208, 138, 621, 174, 377, 138, 387, + 81, 261, 174, 81, 138, 263, 81, 174, 261, 174, + 81, 263, 621, 174, 447, 380, 138, 138, 310, 429, + 81, 80, 310, 212, 212, 212, 212, 212, 212, 212, + 212, 444, 444, 396, 81, 212, 212, 212, 212, 212, + 250, 251, 252, 250, 250, 250, 250, 250, 207, 81, + 208, 208, 208, 208, 208, 208, 208, 208, 386, 212, + 212, 212, 212, 212, 212, 214, 215, 216, 216, 216, + 216, 216, 216, 217, 81, 498, 498, 218, 218, 218, - 255, 302, 302, 302, 302, 302, 302, 302, 302, 303, - 303, 303, 303, 303, 304, 79, 201, 170, 204, 204, - 204, 204, 204, 205, 202, 202, 606, 366, 301, 301, - 301, 301, 301, 301, 301, 301, 606, 170, 325, 326, - 327, 325, 325, 325, 325, 325, 300, 501, 501, 367, - 468, 79, 78, 79, 206, 206, 206, 206, 206, 206, - 206, 206, 368, 79, 170, 170, 206, 206, 206, 206, - 206, 79, 374, 255, 300, 253, 170, 283, 79, 284, - 284, 284, 284, 284, 284, 300, 79, 420, 469, 206, - 206, 206, 206, 206, 206, 208, 209, 210, 210, 210, + 218, 218, 85, 207, 81, 208, 208, 208, 208, 208, + 208, 208, 208, 225, 225, 225, 225, 225, 225, 225, + 225, 218, 218, 218, 218, 218, 218, 174, 221, 222, + 223, 221, 221, 221, 221, 221, 224, 261, 174, 81, + 225, 225, 225, 225, 225, 255, 255, 256, 257, 257, + 257, 257, 257, 217, 265, 265, 265, 265, 265, 265, + 265, 265, 81, 566, 225, 225, 225, 225, 225, 225, + 226, 226, 226, 226, 226, 226, 226, 226, 435, 621, + 174, 378, 226, 226, 226, 226, 226, 266, 266, 266, + 266, 266, 267, 621, 81, 264, 264, 264, 264, 264, - 210, 210, 210, 211, 253, 170, 170, 212, 212, 212, - 212, 212, 79, 337, 346, 338, 338, 338, 338, 338, - 338, 338, 338, 349, 349, 349, 349, 349, 350, 487, - 212, 212, 212, 212, 212, 212, 170, 215, 216, 217, - 215, 215, 215, 215, 215, 218, 527, 527, 434, 219, - 219, 219, 219, 219, 337, 375, 339, 339, 339, 339, - 339, 339, 339, 339, 309, 309, 309, 309, 309, 309, - 309, 309, 219, 219, 219, 219, 219, 219, 220, 220, - 220, 220, 220, 220, 220, 220, 606, 170, 79, 79, - 220, 220, 220, 220, 220, 337, 346, 340, 340, 340, + 264, 264, 264, 379, 384, 492, 212, 212, 212, 212, + 212, 212, 261, 174, 262, 262, 262, 262, 262, 262, + 262, 262, 263, 174, 515, 515, 264, 264, 264, 264, + 264, 293, 263, 294, 294, 294, 294, 294, 294, 294, + 294, 299, 299, 299, 299, 299, 299, 299, 299, 217, + 264, 264, 264, 264, 264, 264, 174, 268, 269, 270, + 268, 268, 268, 268, 268, 271, 174, 81, 523, 272, + 272, 272, 272, 272, 293, 310, 295, 295, 295, 295, + 295, 295, 295, 295, 304, 305, 306, 304, 304, 304, + 304, 304, 522, 272, 272, 272, 272, 272, 272, 293, - 340, 340, 341, 338, 338, 348, 348, 348, 348, 348, - 348, 348, 348, 206, 206, 206, 206, 206, 206, 201, - 550, 202, 202, 202, 202, 202, 202, 202, 202, 253, - 170, 344, 344, 344, 344, 344, 344, 548, 606, 300, - 347, 347, 347, 347, 347, 347, 347, 347, 387, 387, - 387, 387, 387, 388, 79, 201, 547, 202, 202, 202, - 202, 202, 202, 202, 202, 336, 336, 336, 336, 336, - 336, 336, 336, 386, 386, 386, 386, 386, 386, 386, - 386, 394, 395, 396, 394, 394, 394, 394, 394, 358, - 79, 253, 170, 254, 254, 254, 254, 254, 254, 254, + 521, 296, 296, 296, 296, 296, 297, 294, 294, 370, + 81, 272, 272, 272, 272, 272, 272, 272, 272, 261, + 174, 308, 308, 308, 308, 308, 308, 525, 526, 263, + 520, 371, 544, 544, 517, 81, 261, 174, 308, 308, + 308, 308, 308, 308, 308, 308, 263, 261, 174, 309, + 309, 309, 309, 309, 309, 309, 309, 310, 376, 378, + 475, 311, 311, 311, 311, 311, 312, 312, 312, 312, + 312, 312, 312, 312, 313, 313, 313, 313, 313, 314, + 377, 379, 476, 261, 174, 311, 311, 311, 311, 311, + 311, 174, 315, 316, 317, 315, 315, 315, 315, 315, - 254, 255, 253, 170, 546, 256, 256, 256, 256, 256, - 606, 359, 385, 385, 385, 385, 385, 385, 385, 385, - 337, 170, 338, 338, 338, 338, 338, 338, 256, 256, - 256, 256, 256, 256, 170, 260, 261, 262, 260, 260, - 260, 260, 260, 263, 170, 565, 565, 264, 264, 264, - 264, 264, 337, 300, 338, 338, 338, 338, 338, 338, - 338, 338, 355, 355, 355, 355, 355, 355, 355, 355, - 264, 264, 264, 264, 264, 264, 283, 434, 284, 284, - 284, 284, 284, 284, 284, 284, 337, 364, 338, 338, - 338, 338, 338, 338, 338, 338, 253, 170, 399, 399, + 318, 81, 525, 526, 319, 319, 319, 319, 319, 621, + 433, 311, 311, 311, 311, 311, 311, 311, 311, 336, + 337, 338, 336, 336, 336, 336, 336, 457, 319, 319, + 319, 319, 319, 319, 293, 394, 294, 294, 294, 294, + 294, 294, 294, 294, 293, 396, 294, 294, 294, 294, + 294, 294, 293, 81, 294, 294, 294, 294, 294, 294, + 294, 294, 360, 360, 360, 360, 360, 361, 396, 348, + 81, 349, 349, 349, 349, 349, 349, 349, 349, 342, + 81, 399, 399, 399, 399, 399, 400, 81, 81, 343, + 344, 345, 343, 343, 343, 343, 343, 346, 174, 580, - 399, 399, 399, 399, 170, 597, 346, 575, 83, 365, - 597, 79, 283, 346, 285, 285, 285, 285, 285, 285, - 285, 285, 403, 403, 403, 403, 403, 403, 403, 403, - 404, 404, 404, 404, 404, 405, 606, 366, 402, 402, - 402, 402, 402, 402, 402, 402, 79, 79, 283, 170, - 286, 286, 286, 286, 286, 287, 284, 284, 346, 367, - 461, 606, 422, 428, 429, 430, 428, 428, 428, 428, - 428, 384, 170, 423, 424, 425, 426, 423, 423, 423, - 423, 401, 462, 79, 253, 170, 298, 298, 298, 298, - 298, 298, 298, 298, 255, 253, 170, 299, 299, 299, + 580, 347, 347, 347, 347, 347, 348, 310, 350, 350, + 350, 350, 350, 350, 350, 350, 319, 319, 319, 319, + 319, 319, 319, 319, 480, 347, 347, 347, 347, 347, + 347, 348, 479, 351, 351, 351, 351, 351, 352, 349, + 349, 261, 174, 355, 355, 355, 355, 355, 355, 355, + 355, 310, 261, 174, 355, 355, 355, 355, 355, 355, + 81, 81, 310, 261, 174, 356, 356, 356, 356, 356, + 356, 356, 356, 357, 474, 528, 473, 358, 358, 358, + 358, 358, 359, 359, 359, 359, 359, 359, 359, 359, + 621, 174, 358, 358, 358, 358, 358, 358, 358, 358, - 299, 299, 299, 299, 299, 300, 79, 463, 503, 301, - 301, 301, 301, 301, 375, 376, 376, 376, 376, 376, - 376, 393, 393, 393, 393, 393, 393, 393, 393, 464, - 504, 384, 301, 301, 301, 301, 301, 301, 170, 305, - 306, 307, 305, 305, 305, 305, 305, 308, 79, 583, - 583, 309, 309, 309, 309, 309, 436, 436, 436, 436, - 436, 436, 436, 436, 437, 437, 437, 437, 437, 438, - 478, 253, 170, 508, 309, 309, 309, 309, 309, 309, - 283, 346, 284, 284, 284, 284, 284, 284, 284, 284, - 606, 382, 435, 435, 435, 435, 435, 435, 435, 435, + 357, 358, 358, 358, 358, 358, 358, 174, 362, 363, + 364, 362, 362, 362, 362, 362, 365, 590, 85, 472, + 366, 366, 366, 366, 366, 387, 388, 388, 388, 388, + 388, 388, 388, 388, 387, 389, 389, 389, 389, 389, + 389, 389, 389, 471, 366, 366, 366, 366, 366, 366, + 387, 390, 390, 390, 390, 390, 391, 388, 388, 470, + 81, 347, 347, 347, 347, 347, 347, 347, 347, 81, + 398, 398, 398, 398, 398, 398, 398, 398, 416, 416, + 416, 416, 416, 417, 477, 81, 394, 621, 395, 395, + 395, 395, 395, 395, 395, 395, 396, 396, 598, 598, - 444, 384, 445, 445, 445, 445, 445, 445, 445, 445, - 507, 472, 144, 144, 83, 79, 283, 382, 284, 284, - 284, 284, 284, 284, 284, 284, 444, 434, 446, 446, - 446, 446, 446, 446, 446, 446, 444, 606, 447, 447, - 447, 447, 447, 448, 445, 445, 79, 434, 461, 506, - 505, 79, 332, 333, 334, 332, 332, 332, 332, 332, - 335, 253, 170, 444, 336, 336, 336, 336, 336, 510, - 462, 401, 409, 409, 409, 409, 409, 409, 409, 409, - 455, 455, 455, 455, 455, 456, 384, 336, 336, 336, - 336, 336, 336, 253, 170, 344, 344, 344, 344, 344, + 397, 397, 397, 397, 397, 621, 478, 397, 397, 397, + 397, 397, 397, 397, 397, 406, 407, 408, 406, 406, + 406, 406, 406, 342, 397, 397, 397, 397, 397, 397, + 401, 402, 403, 401, 401, 401, 401, 401, 404, 259, + 481, 85, 405, 405, 405, 405, 405, 348, 394, 349, + 349, 349, 349, 349, 349, 349, 349, 348, 396, 349, + 349, 349, 349, 349, 349, 431, 405, 405, 405, 405, + 405, 405, 348, 430, 349, 349, 349, 349, 349, 349, + 349, 349, 261, 174, 261, 174, 450, 450, 450, 450, + 450, 451, 310, 482, 357, 366, 366, 366, 366, 366, - 344, 344, 344, 300, 253, 170, 345, 345, 345, 345, - 345, 345, 345, 345, 346, 606, 170, 463, 347, 347, - 347, 347, 347, 79, 472, 401, 253, 170, 451, 451, - 451, 451, 451, 451, 331, 503, 401, 79, 511, 464, - 466, 347, 347, 347, 347, 347, 347, 170, 351, 352, - 353, 351, 351, 351, 351, 351, 354, 504, 465, 79, - 355, 355, 355, 355, 355, 454, 454, 454, 454, 454, - 454, 454, 454, 606, 79, 453, 453, 453, 453, 453, - 453, 453, 453, 355, 355, 355, 355, 355, 355, 375, - 376, 376, 376, 376, 376, 376, 376, 376, 470, 478, + 366, 366, 366, 621, 174, 415, 415, 415, 415, 415, + 415, 415, 415, 357, 261, 174, 411, 411, 411, 411, + 411, 411, 411, 411, 357, 261, 174, 411, 411, 411, + 411, 411, 411, 603, 604, 357, 261, 174, 412, 412, + 412, 412, 412, 412, 412, 412, 413, 174, 603, 604, + 414, 414, 414, 414, 414, 621, 357, 414, 414, 414, + 414, 414, 414, 414, 414, 436, 437, 438, 439, 436, + 436, 436, 436, 428, 414, 414, 414, 414, 414, 414, + 174, 418, 419, 420, 418, 418, 418, 418, 418, 174, + 148, 148, 427, 421, 421, 421, 421, 421, 413, 81, - 544, 479, 479, 479, 479, 479, 479, 479, 479, 443, - 443, 443, 443, 443, 443, 443, 443, 460, 470, 459, - 470, 471, 545, 79, 375, 377, 377, 377, 377, 377, - 377, 377, 377, 478, 470, 480, 480, 480, 480, 480, - 480, 480, 480, 79, 478, 382, 481, 481, 481, 481, - 481, 482, 479, 479, 470, 434, 470, 470, 79, 375, - 378, 378, 378, 378, 378, 379, 376, 376, 489, 489, - 489, 489, 489, 489, 489, 489, 490, 490, 490, 490, - 490, 491, 606, 170, 488, 488, 488, 488, 488, 488, - 488, 488, 401, 79, 382, 382, 383, 383, 383, 383, + 387, 388, 388, 388, 388, 388, 388, 388, 388, 387, + 388, 388, 388, 388, 388, 388, 426, 421, 421, 421, + 421, 421, 421, 387, 388, 388, 388, 388, 388, 388, + 388, 388, 518, 484, 425, 81, 441, 442, 443, 441, + 441, 441, 441, 441, 81, 405, 405, 405, 405, 405, + 405, 405, 405, 484, 519, 484, 485, 394, 81, 445, + 445, 445, 445, 445, 445, 445, 445, 396, 394, 486, + 446, 446, 446, 446, 446, 446, 446, 446, 447, 81, + 424, 423, 448, 448, 448, 448, 448, 449, 449, 449, + 449, 449, 449, 449, 449, 621, 422, 448, 448, 448, - 383, 383, 383, 383, 384, 487, 458, 457, 385, 385, - 385, 385, 385, 497, 498, 499, 497, 497, 497, 497, - 497, 444, 331, 445, 445, 445, 445, 445, 445, 445, - 445, 385, 385, 385, 385, 385, 385, 389, 390, 391, - 389, 389, 389, 389, 389, 392, 251, 418, 417, 393, - 393, 393, 393, 393, 444, 606, 445, 445, 445, 445, - 445, 445, 445, 445, 444, 487, 445, 445, 445, 445, - 445, 445, 393, 393, 393, 393, 393, 393, 253, 170, - 399, 399, 399, 399, 399, 399, 399, 399, 346, 253, - 170, 400, 400, 400, 400, 400, 400, 400, 400, 401, + 448, 448, 448, 448, 448, 81, 448, 448, 448, 448, + 448, 448, 452, 453, 454, 452, 452, 452, 452, 452, + 455, 174, 348, 342, 456, 456, 456, 456, 456, 457, + 413, 458, 458, 458, 458, 458, 458, 458, 458, 468, + 468, 468, 468, 468, 469, 261, 174, 259, 456, 456, + 456, 456, 456, 456, 457, 357, 459, 459, 459, 459, + 459, 459, 459, 459, 457, 217, 460, 460, 460, 460, + 460, 461, 458, 458, 261, 174, 421, 421, 421, 421, + 421, 421, 421, 421, 413, 621, 174, 467, 467, 467, + 467, 467, 467, 467, 467, 413, 261, 174, 464, 464, - 253, 170, 382, 402, 402, 402, 402, 402, 467, 83, - 401, 513, 487, 514, 515, 516, 513, 415, 514, 515, - 516, 509, 544, 414, 554, 588, 402, 402, 402, 402, - 402, 402, 170, 406, 407, 408, 406, 406, 406, 406, - 406, 413, 572, 572, 545, 409, 409, 409, 409, 409, - 520, 521, 522, 520, 520, 520, 520, 520, 517, 79, - 79, 412, 411, 519, 573, 573, 410, 337, 409, 409, - 409, 409, 409, 409, 375, 376, 376, 376, 376, 376, - 376, 376, 376, 79, 472, 331, 473, 473, 473, 473, - 473, 473, 523, 524, 525, 523, 523, 523, 523, 523, + 464, 464, 464, 464, 464, 464, 413, 261, 174, 464, + 464, 464, 464, 464, 464, 382, 381, 413, 261, 174, + 465, 465, 465, 465, 465, 465, 465, 465, 394, 375, + 374, 369, 466, 466, 466, 466, 466, 621, 447, 466, + 466, 466, 466, 466, 466, 466, 466, 456, 456, 456, + 456, 456, 456, 456, 456, 368, 466, 466, 466, 466, + 466, 466, 486, 621, 487, 487, 487, 487, 487, 487, + 487, 487, 486, 447, 488, 488, 488, 488, 488, 488, + 488, 488, 486, 394, 489, 489, 489, 489, 489, 490, + 491, 491, 486, 447, 569, 605, 367, 486, 81, 491, - 478, 251, 479, 479, 479, 479, 479, 479, 79, 375, - 376, 376, 376, 376, 376, 376, 376, 376, 478, 79, - 479, 479, 479, 479, 479, 479, 479, 479, 478, 382, - 479, 479, 479, 479, 479, 479, 479, 479, 211, 530, - 370, 369, 363, 79, 382, 585, 432, 432, 432, 432, - 432, 432, 432, 432, 384, 382, 606, 433, 433, 433, - 433, 433, 433, 433, 433, 434, 530, 586, 585, 435, - 435, 435, 435, 435, 496, 496, 496, 496, 496, 496, - 496, 496, 532, 532, 532, 532, 532, 532, 532, 532, - 586, 362, 435, 435, 435, 435, 435, 435, 439, 440, + 491, 491, 487, 487, 487, 487, 487, 492, 81, 493, + 493, 493, 493, 493, 493, 493, 493, 492, 81, 494, + 494, 494, 494, 494, 494, 494, 494, 342, 81, 259, + 81, 81, 492, 81, 495, 495, 495, 495, 495, 496, + 493, 493, 394, 475, 499, 499, 499, 499, 499, 499, + 499, 499, 447, 394, 217, 500, 500, 500, 500, 500, + 500, 500, 500, 501, 477, 476, 518, 502, 502, 502, + 502, 502, 503, 503, 503, 503, 503, 503, 503, 503, + 504, 504, 504, 504, 504, 505, 478, 217, 519, 286, + 331, 502, 502, 502, 502, 502, 502, 506, 507, 508, - 441, 439, 439, 439, 439, 439, 442, 357, 356, 331, - 443, 443, 443, 443, 443, 533, 533, 533, 533, 533, - 534, 606, 382, 531, 531, 531, 531, 531, 531, 531, - 531, 251, 530, 443, 443, 443, 443, 443, 443, 253, - 170, 451, 451, 451, 451, 451, 451, 451, 451, 401, - 253, 170, 452, 452, 452, 452, 452, 452, 452, 452, - 211, 211, 276, 320, 453, 453, 453, 453, 453, 170, - 539, 539, 539, 539, 539, 539, 539, 539, 170, 540, - 540, 540, 540, 540, 540, 540, 540, 453, 453, 453, - 453, 453, 453, 472, 319, 473, 473, 473, 473, 473, + 506, 506, 506, 506, 506, 509, 330, 328, 327, 510, + 510, 510, 510, 510, 621, 326, 502, 502, 502, 502, + 502, 502, 502, 502, 511, 512, 513, 511, 511, 511, + 511, 511, 325, 510, 510, 510, 510, 510, 510, 457, + 324, 458, 458, 458, 458, 458, 458, 458, 458, 457, + 484, 458, 458, 458, 458, 458, 458, 458, 458, 457, + 323, 458, 458, 458, 458, 458, 458, 261, 174, 614, + 484, 322, 484, 484, 614, 321, 320, 413, 261, 174, + 516, 516, 516, 516, 516, 516, 516, 516, 530, 302, + 531, 532, 533, 530, 259, 531, 532, 533, 537, 538, - 473, 473, 473, 170, 541, 541, 541, 541, 541, 542, - 539, 539, 606, 317, 606, 606, 606, 575, 83, 513, - 316, 514, 515, 516, 315, 314, 313, 312, 79, 472, - 587, 474, 474, 474, 474, 474, 474, 474, 474, 606, - 311, 514, 515, 516, 606, 310, 606, 606, 516, 292, - 606, 251, 606, 606, 606, 211, 288, 211, 103, 517, - 276, 278, 276, 277, 79, 472, 517, 475, 475, 475, - 475, 475, 476, 477, 477, 552, 276, 274, 553, 553, - 553, 553, 553, 553, 553, 553, 517, 273, 272, 271, - 270, 517, 269, 97, 211, 512, 512, 519, 251, 512, + 539, 537, 537, 537, 537, 537, 486, 394, 487, 487, + 487, 487, 487, 487, 487, 487, 486, 501, 487, 487, + 487, 487, 487, 487, 487, 487, 217, 621, 394, 561, + 394, 298, 81, 217, 621, 105, 534, 501, 501, 286, + 547, 536, 81, 486, 547, 487, 487, 487, 487, 487, + 487, 562, 81, 540, 541, 542, 540, 540, 540, 540, + 540, 492, 288, 493, 493, 493, 493, 493, 493, 493, + 493, 550, 550, 550, 550, 550, 551, 286, 492, 81, + 493, 493, 493, 493, 493, 493, 493, 493, 492, 287, + 493, 493, 493, 493, 493, 493, 510, 510, 510, 510, - 79, 472, 211, 477, 477, 477, 473, 473, 473, 473, - 473, 512, 512, 512, 518, 518, 103, 559, 518, 560, - 560, 560, 560, 560, 560, 560, 560, 83, 199, 239, - 518, 518, 518, 236, 235, 234, 79, 382, 233, 485, - 485, 485, 485, 485, 485, 485, 485, 434, 382, 232, - 486, 486, 486, 486, 486, 486, 486, 486, 487, 230, - 229, 228, 488, 488, 488, 488, 488, 559, 227, 561, - 561, 561, 561, 561, 561, 561, 561, 538, 538, 538, - 538, 538, 538, 538, 538, 488, 488, 488, 488, 488, - 488, 492, 493, 494, 492, 492, 492, 492, 492, 495, + 510, 510, 510, 510, 394, 561, 545, 545, 545, 545, + 545, 545, 545, 545, 501, 394, 394, 546, 546, 546, + 546, 546, 546, 546, 546, 547, 547, 562, 286, 548, + 548, 548, 548, 548, 549, 549, 549, 549, 549, 549, + 549, 549, 621, 284, 548, 548, 548, 548, 548, 548, + 548, 548, 283, 548, 548, 548, 548, 548, 548, 552, + 553, 554, 552, 552, 552, 552, 552, 282, 281, 280, + 279, 555, 555, 555, 555, 555, 174, 556, 556, 556, + 556, 556, 556, 556, 556, 174, 557, 557, 557, 557, + 557, 557, 557, 557, 587, 555, 555, 555, 555, 555, - 226, 225, 224, 496, 496, 496, 496, 496, 559, 223, - 562, 562, 562, 562, 562, 563, 560, 560, 569, 569, - 569, 569, 569, 569, 569, 569, 496, 496, 496, 496, - 496, 496, 253, 170, 502, 502, 502, 502, 502, 502, - 502, 502, 472, 222, 473, 473, 473, 473, 473, 473, - 473, 473, 570, 570, 570, 570, 570, 571, 606, 221, - 568, 568, 568, 568, 568, 568, 568, 568, 170, 539, - 539, 539, 539, 539, 539, 539, 539, 79, 472, 103, - 473, 473, 473, 473, 473, 473, 473, 473, 170, 539, - 539, 539, 539, 539, 539, 539, 539, 170, 539, 539, + 555, 174, 558, 558, 558, 558, 558, 559, 556, 556, + 621, 278, 621, 621, 621, 530, 588, 531, 532, 533, + 621, 275, 531, 532, 533, 621, 99, 621, 621, 533, + 567, 217, 259, 568, 568, 568, 568, 568, 568, 568, + 568, 217, 587, 529, 529, 600, 621, 529, 621, 621, + 621, 105, 85, 535, 535, 205, 247, 535, 534, 529, + 529, 529, 244, 534, 588, 243, 242, 601, 534, 535, + 535, 535, 569, 534, 570, 570, 570, 570, 570, 570, + 570, 570, 569, 600, 571, 571, 571, 571, 571, 571, + 571, 571, 241, 569, 536, 572, 572, 572, 572, 572, - 539, 539, 539, 539, 553, 553, 553, 553, 553, 553, - 553, 553, 95, 79, 382, 83, 528, 528, 528, 528, - 528, 528, 528, 528, 487, 382, 83, 529, 529, 529, - 529, 529, 529, 529, 529, 530, 199, 151, 152, 531, - 531, 531, 531, 531, 553, 553, 553, 553, 553, 553, - 553, 553, 576, 577, 578, 576, 576, 576, 576, 576, - 146, 146, 531, 531, 531, 531, 531, 531, 535, 536, - 537, 535, 535, 535, 535, 535, 138, 197, 132, 132, - 538, 538, 538, 538, 538, 79, 554, 190, 555, 555, - 555, 555, 555, 555, 579, 580, 581, 579, 579, 579, + 573, 570, 570, 240, 238, 601, 237, 574, 81, 575, + 575, 575, 575, 575, 575, 575, 575, 574, 81, 576, + 576, 576, 576, 576, 576, 576, 576, 236, 574, 81, + 577, 577, 577, 577, 577, 578, 575, 575, 555, 555, + 555, 555, 555, 555, 555, 555, 394, 235, 581, 581, + 581, 581, 581, 581, 581, 581, 547, 394, 234, 582, + 582, 582, 582, 582, 582, 582, 582, 233, 232, 231, + 230, 583, 583, 583, 583, 583, 584, 584, 584, 584, + 584, 584, 584, 584, 585, 585, 585, 585, 585, 586, + 229, 228, 227, 105, 97, 583, 583, 583, 583, 583, - 579, 579, 189, 538, 538, 538, 538, 538, 538, 554, - 188, 555, 555, 555, 555, 555, 555, 555, 555, 187, - 559, 79, 560, 560, 560, 560, 560, 560, 560, 560, - 559, 186, 560, 560, 560, 560, 560, 560, 560, 560, - 184, 183, 182, 181, 79, 554, 176, 556, 556, 556, - 556, 556, 556, 556, 556, 559, 175, 560, 560, 560, - 560, 560, 560, 382, 174, 584, 584, 584, 584, 584, - 584, 584, 584, 593, 593, 593, 593, 593, 593, 103, - 79, 554, 78, 557, 557, 557, 557, 557, 558, 555, - 555, 593, 593, 593, 593, 593, 593, 593, 593, 594, + 583, 621, 85, 583, 583, 583, 583, 583, 583, 583, + 583, 174, 556, 556, 556, 556, 556, 556, 556, 556, + 174, 556, 556, 556, 556, 556, 556, 556, 556, 174, + 556, 556, 556, 556, 556, 556, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 591, 592, 593, 591, 591, 591, 591, 591, + 569, 85, 570, 570, 570, 570, 570, 570, 570, 570, + 569, 205, 570, 570, 570, 570, 570, 570, 570, 570, + 155, 156, 150, 150, 142, 569, 81, 570, 570, 570, + 570, 570, 570, 203, 136, 136, 81, 594, 595, 596, - 594, 594, 594, 594, 594, 594, 594, 595, 595, 595, - 595, 595, 596, 593, 593, 103, 79, 382, 163, 566, - 566, 566, 566, 566, 566, 566, 566, 530, 382, 91, - 567, 567, 567, 567, 567, 567, 567, 567, 83, 81, - 80, 79, 568, 568, 568, 568, 568, 152, 600, 601, - 602, 600, 600, 600, 600, 600, 588, 146, 589, 589, - 589, 589, 589, 589, 138, 568, 568, 568, 568, 568, - 568, 554, 132, 555, 555, 555, 555, 555, 555, 555, - 555, 79, 593, 593, 593, 593, 593, 593, 593, 593, - 128, 79, 593, 593, 593, 593, 593, 593, 593, 593, + 594, 594, 594, 594, 594, 574, 81, 575, 575, 575, + 575, 575, 575, 575, 575, 196, 195, 194, 193, 192, + 574, 81, 575, 575, 575, 575, 575, 575, 575, 575, + 574, 190, 575, 575, 575, 575, 575, 575, 394, 189, + 599, 599, 599, 599, 599, 599, 599, 599, 605, 188, + 606, 606, 606, 606, 606, 606, 606, 606, 605, 187, + 607, 607, 607, 607, 607, 607, 607, 607, 605, 186, + 608, 608, 608, 608, 608, 609, 606, 606, 610, 610, + 610, 610, 610, 610, 81, 610, 610, 610, 610, 610, + 610, 610, 610, 181, 81, 611, 611, 611, 611, 611, - 126, 113, 112, 111, 110, 109, 79, 554, 108, 555, - 555, 555, 555, 555, 555, 555, 555, 105, 103, 91, - 603, 603, 603, 603, 603, 603, 603, 603, 600, 600, - 600, 600, 600, 600, 600, 600, 81, 80, 79, 606, - 606, 606, 79, 588, 606, 589, 589, 589, 589, 589, - 589, 589, 589, 79, 606, 606, 606, 606, 606, 606, - 606, 79, 604, 604, 604, 604, 604, 605, 603, 603, - 603, 603, 603, 603, 603, 603, 603, 603, 79, 588, - 606, 590, 590, 590, 590, 590, 590, 590, 590, 606, - 606, 606, 606, 606, 606, 79, 603, 603, 603, 603, + 611, 611, 611, 180, 81, 612, 612, 612, 612, 612, + 613, 610, 610, 615, 616, 617, 615, 615, 615, 615, + 615, 605, 179, 606, 606, 606, 606, 606, 606, 606, + 606, 605, 178, 606, 606, 606, 606, 606, 606, 606, + 606, 105, 80, 105, 167, 93, 605, 81, 606, 606, + 606, 606, 606, 606, 85, 83, 82, 81, 610, 610, + 610, 610, 610, 610, 610, 610, 81, 81, 610, 610, + 610, 610, 610, 610, 610, 610, 156, 150, 142, 113, + 111, 136, 81, 618, 618, 618, 618, 618, 618, 618, + 618, 615, 615, 615, 615, 615, 615, 615, 615, 619, - 603, 603, 606, 79, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 79, 588, 606, 591, 591, 591, - 591, 591, 592, 589, 589, 606, 606, 606, 606, 79, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 79, 588, 606, 589, 589, 589, 589, 589, 589, 589, - 589, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 79, 588, 606, 589, - 589, 589, 589, 589, 589, 589, 589, 606, 606, 606, - - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 79, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 31, + 619, 619, 619, 619, 620, 618, 618, 618, 618, 618, + 618, 618, 618, 618, 618, 132, 130, 81, 618, 618, + 618, 618, 618, 618, 117, 81, 116, 115, 112, 107, + 105, 93, 83, 81, 82, 81, 621, 621, 621, 621, + 621, 81, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 81, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 78, 606, 606, - 606, 606, 606, 606, 606, 78, 78, 78, 606, 606, + 31, 31, 31, 31, 31, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 78, 78, 78, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 86, - 606, 606, 606, 606, 86, 606, 606, 86, 86, 86, - 86, 606, 86, 86, 86, 90, 606, 606, 606, 606, - 606, 606, 606, 90, 90, 90, 606, 606, 90, 90, - 90, 92, 606, 606, 92, 92, 606, 92, 606, 92, - 92, 92, 606, 606, 92, 92, 92, 102, 102, 606, - 606, 606, 102, 133, 606, 606, 133, 133, 606, 133, - 606, 133, 133, 133, 606, 606, 133, 133, 133, 137, - 606, 606, 137, 137, 606, 137, 606, 137, 137, 137, + 68, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 80, 621, 621, + 621, 621, 621, 621, 621, 80, 80, 80, 621, 621, + 80, 80, 80, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 88, + 621, 621, 621, 621, 88, 621, 621, 88, 88, 88, + 88, 621, 88, 88, 88, 92, 621, 621, 621, 621, + 621, 621, 621, 92, 92, 92, 621, 621, 92, 92, + 92, 94, 621, 621, 94, 94, 621, 94, 621, 94, + 94, 94, 621, 621, 94, 94, 94, 104, 104, 621, - 606, 137, 606, 137, 137, 145, 606, 606, 145, 606, - 606, 145, 606, 145, 145, 145, 145, 606, 145, 145, - 145, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 151, 151, 606, - 151, 606, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, - 158, 606, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 161, 606, 606, 606, 606, - 161, 606, 606, 161, 161, 161, 606, 606, 161, 161, + 621, 621, 104, 137, 621, 621, 137, 137, 621, 137, + 621, 137, 137, 137, 621, 621, 137, 137, 137, 141, + 621, 621, 141, 141, 621, 141, 621, 141, 141, 141, + 621, 141, 621, 141, 141, 149, 621, 621, 149, 621, + 621, 149, 621, 149, 149, 149, 149, 621, 149, 149, + 149, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 155, 155, 621, + 155, 621, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, - 161, 93, 606, 606, 93, 93, 606, 93, 606, 93, - 93, 93, 606, 606, 93, 93, 93, 169, 169, 606, - 606, 606, 169, 171, 171, 171, 606, 606, 606, 171, - 134, 606, 606, 134, 134, 606, 134, 606, 134, 134, - 134, 606, 606, 134, 134, 134, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 207, 207, 606, 606, 606, 207, 213, 213, - 213, 606, 606, 606, 213, 245, 245, 606, 606, 606, - 245, 246, 246, 606, 606, 606, 246, 250, 250, 606, - 606, 606, 250, 252, 252, 252, 606, 606, 606, 252, + 162, 621, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 165, 621, 621, 621, 621, + 165, 621, 621, 165, 165, 165, 621, 621, 165, 165, + 165, 95, 621, 621, 95, 95, 621, 95, 621, 95, + 95, 95, 621, 621, 95, 95, 95, 173, 173, 621, + 621, 621, 173, 175, 175, 175, 621, 621, 621, 175, + 138, 621, 621, 138, 138, 621, 138, 621, 138, 138, + 138, 621, 621, 138, 138, 138, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 213, 213, 621, 621, 621, 213, 219, 219, - 288, 288, 606, 606, 606, 288, 290, 290, 606, 606, - 606, 290, 291, 291, 606, 606, 606, 291, 293, 293, - 293, 606, 606, 606, 293, 297, 297, 297, 297, 606, - 606, 606, 297, 328, 328, 606, 606, 606, 328, 329, - 329, 606, 606, 606, 329, 330, 330, 606, 606, 606, - 330, 342, 342, 342, 606, 606, 606, 342, 343, 343, - 343, 343, 606, 606, 606, 343, 380, 380, 606, 606, - 606, 380, 381, 381, 606, 606, 606, 381, 397, 397, - 397, 606, 606, 606, 397, 398, 398, 398, 398, 606, - 606, 606, 398, 427, 427, 606, 606, 606, 427, 431, + 219, 621, 621, 621, 219, 253, 253, 621, 621, 621, + 253, 254, 254, 621, 621, 621, 254, 258, 258, 621, + 621, 621, 258, 260, 260, 260, 621, 621, 621, 260, + 298, 298, 621, 621, 621, 298, 300, 300, 621, 621, + 621, 300, 301, 301, 621, 621, 621, 301, 303, 303, + 303, 621, 621, 621, 303, 307, 307, 307, 307, 621, + 621, 621, 307, 339, 339, 621, 621, 621, 339, 340, + 340, 621, 621, 621, 340, 341, 341, 621, 621, 621, + 341, 353, 353, 353, 621, 621, 621, 353, 354, 354, + 354, 354, 621, 621, 621, 354, 392, 392, 621, 621, - 606, 431, 431, 606, 606, 606, 431, 449, 449, 449, - 606, 606, 606, 449, 450, 450, 450, 450, 606, 606, - 606, 450, 483, 483, 606, 606, 606, 483, 484, 606, - 484, 484, 606, 606, 606, 484, 500, 500, 500, 606, - 606, 606, 500, 501, 501, 501, 606, 606, 606, 606, - 501, 512, 512, 606, 512, 512, 512, 606, 606, 512, - 512, 512, 606, 606, 512, 512, 512, 518, 518, 606, - 518, 518, 518, 606, 606, 518, 518, 518, 606, 606, - 518, 518, 518, 526, 526, 606, 606, 606, 526, 527, - 606, 527, 527, 606, 606, 606, 527, 543, 543, 606, + 621, 392, 393, 393, 621, 621, 621, 393, 409, 409, + 409, 621, 621, 621, 409, 410, 410, 410, 410, 621, + 621, 621, 410, 440, 440, 621, 621, 621, 440, 444, + 621, 444, 444, 621, 621, 621, 444, 462, 462, 462, + 621, 621, 621, 462, 463, 463, 463, 463, 621, 621, + 621, 463, 497, 497, 621, 621, 621, 497, 498, 621, + 498, 498, 621, 621, 621, 498, 514, 514, 514, 621, + 621, 621, 514, 515, 515, 515, 621, 621, 621, 621, + 515, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 529, 529, 621, - 606, 606, 606, 543, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, - 564, 564, 606, 606, 606, 564, 565, 606, 565, 565, - 606, 606, 606, 565, 582, 582, 606, 606, 606, 582, - 583, 606, 583, 606, 606, 606, 606, 583, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 13, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 529, 529, 529, 621, 621, 529, 529, 529, 621, 621, + 529, 529, 529, 535, 535, 621, 535, 535, 535, 621, + 621, 535, 535, 535, 621, 621, 535, 535, 535, 543, + 543, 621, 621, 621, 543, 544, 621, 544, 544, 621, + 621, 621, 544, 560, 560, 621, 621, 621, 621, 560, + 579, 579, 621, 621, 621, 579, 580, 621, 580, 580, + 621, 621, 621, 580, 597, 597, 621, 621, 621, 597, + 598, 621, 598, 621, 621, 621, 621, 598, 602, 602, + 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, + 602, 602, 602, 602, 13, 621, 621, 621, 621, 621, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606 + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621 } ; -static yyconst short int yy_chk[3732] = +static yyconst short int yy_chk[3663] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -982,411 +980,403 @@ static yyconst short int yy_chk[3732] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 44, 3, 34, - 2, 103, 3, 4, 47, 20, 126, 4, 3, 34, - 103, 3, 52, 4, 44, 48, 4, 11, 11, 11, - 11, 126, 52, 20, 2, 2, 56, 47, 2, 74, + 1, 1, 1, 1, 1, 1, 1, 2, 618, 3, + 20, 2, 70, 3, 47, 36, 50, 4, 34, 3, + 36, 4, 3, 11, 11, 11, 11, 4, 20, 34, + 4, 12, 12, 12, 12, 2, 2, 70, 47, 2, - 5, 5, 5, 48, 5, 2, 50, 3, 2, 3, - 5, 603, 4, 56, 4, 6, 6, 6, 20, 6, - 64, 64, 5, 5, 75, 6, 12, 12, 12, 12, - 3, 196, 68, 50, 11, 4, 70, 6, 6, 25, - 25, 72, 72, 25, 25, 196, 74, 5, 27, 27, - 27, 27, 27, 27, 27, 27, 68, 88, 124, 127, - 70, 25, 6, 7, 7, 7, 45, 7, 598, 75, - 124, 127, 129, 12, 28, 28, 28, 28, 28, 28, - 139, 139, 129, 43, 25, 43, 43, 43, 43, 43, - 43, 43, 43, 194, 45, 45, 77, 77, 45, 77, + 77, 38, 602, 50, 3, 599, 44, 2, 3, 3, + 2, 3, 4, 597, 20, 38, 4, 4, 52, 4, + 5, 5, 5, 44, 5, 6, 6, 6, 52, 6, + 5, 11, 3, 25, 25, 6, 120, 25, 25, 12, + 4, 120, 5, 5, 66, 66, 77, 6, 6, 9, + 9, 9, 9, 9, 58, 25, 74, 74, 9, 9, + 9, 28, 28, 28, 28, 28, 28, 19, 5, 143, + 143, 58, 9, 6, 7, 7, 7, 19, 7, 25, + 19, 19, 19, 19, 19, 19, 19, 19, 27, 27, + 27, 27, 27, 27, 27, 27, 105, 9, 10, 10, - 88, 116, 123, 114, 114, 45, 116, 153, 45, 194, + 10, 10, 10, 76, 583, 105, 90, 10, 10, 10, + 43, 165, 43, 43, 43, 43, 43, 43, 43, 43, + 45, 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 53, 8, 206, 53, 53, 53, 53, 53, 53, - 53, 53, 84, 84, 84, 84, 84, 84, 84, 84, - 114, 62, 62, 62, 153, 62, 154, 125, 206, 62, - 123, 62, 85, 85, 85, 85, 85, 85, 85, 85, - 143, 143, 202, 62, 62, 8, 8, 8, 8, 8, + 8, 8, 8, 48, 8, 128, 10, 72, 45, 45, + 90, 76, 45, 79, 79, 165, 79, 128, 582, 127, + 45, 53, 48, 45, 53, 53, 53, 53, 53, 53, + 53, 53, 72, 86, 86, 86, 86, 86, 86, 86, + 86, 103, 103, 103, 103, 103, 103, 580, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 9, 9, 9, 9, 9, 62, 125, - 128, 154, 9, 9, 9, 86, 128, 202, 55, 55, - 136, 161, 55, 55, 185, 136, 9, 101, 101, 101, - 101, 101, 101, 86, 155, 155, 198, 185, 87, 587, - 55, 87, 87, 87, 87, 87, 87, 87, 87, 198, - 9, 10, 10, 10, 10, 10, 584, 171, 86, 284, - 10, 10, 10, 55, 161, 89, 171, 89, 89, 222, - 582, 89, 89, 222, 10, 89, 213, 95, 95, 95, - 95, 95, 95, 95, 95, 213, 92, 92, 89, 89, - 92, 92, 192, 195, 284, 195, 510, 192, 10, 19, - 99, 99, 99, 99, 99, 99, 99, 99, 92, 19, - - 95, 221, 19, 19, 19, 19, 19, 19, 19, 19, - 26, 191, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 92, 237, 221, 26, 26, 26, 26, 26, 100, - 100, 100, 100, 100, 100, 100, 100, 131, 131, 131, - 131, 131, 131, 131, 131, 26, 510, 26, 26, 26, - 26, 26, 26, 32, 146, 238, 238, 146, 146, 32, - 568, 191, 32, 32, 146, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 146, 237, 32, + 8, 8, 8, 8, 8, 8, 26, 131, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 88, 127, 131, + 26, 26, 26, 26, 26, 130, 191, 112, 579, 55, + 55, 129, 112, 55, 55, 88, 112, 132, 112, 191, + 130, 202, 26, 132, 26, 26, 26, 26, 26, 26, + 32, 55, 140, 147, 147, 202, 32, 140, 575, 32, + 32, 88, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 129, 55, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 210, 210, - 210, 35, 35, 35, 35, 35, 109, 231, 240, 241, - 35, 109, 252, 231, 109, 241, 109, 117, 567, 150, - 150, 252, 239, 240, 35, 35, 35, 35, 35, 35, - 42, 42, 42, 42, 42, 293, 42, 42, 133, 133, - 42, 265, 133, 133, 293, 117, 117, 239, 281, 117, - 388, 388, 42, 42, 42, 46, 117, 163, 281, 117, - 133, 163, 323, 265, 239, 46, 150, 163, 46, 46, + 32, 32, 32, 32, 32, 32, 32, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 65, 118, 118, 35, + 35, 35, 35, 35, 159, 159, 65, 133, 35, 65, + 65, 65, 65, 65, 65, 65, 65, 133, 154, 154, + 201, 208, 201, 35, 35, 35, 35, 35, 35, 42, + 42, 42, 42, 42, 158, 42, 42, 175, 157, 42, + 64, 64, 64, 200, 64, 118, 175, 219, 64, 197, + 64, 42, 42, 42, 46, 198, 219, 208, 212, 200, + 198, 227, 64, 64, 46, 564, 154, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 275, 282, 323, 163, - 163, 275, 282, 133, 142, 142, 142, 142, 142, 142, - 142, 142, 159, 159, 159, 159, 159, 159, 159, 159, - 160, 160, 160, 160, 160, 160, 160, 160, 438, 438, - 46, 63, 201, 201, 201, 201, 201, 201, 201, 201, - 279, 63, 565, 280, 63, 63, 63, 63, 63, 63, - 63, 63, 79, 564, 79, 79, 79, 297, 79, 79, - 254, 254, 79, 197, 280, 201, 297, 197, 256, 256, - 254, 321, 322, 197, 79, 79, 79, 91, 256, 91, - 91, 91, 322, 91, 91, 197, 197, 91, 209, 209, + 46, 46, 46, 46, 46, 81, 560, 81, 81, 81, + 158, 81, 81, 227, 212, 81, 157, 245, 64, 87, + 87, 87, 87, 87, 87, 87, 87, 81, 81, 81, + 197, 94, 94, 556, 229, 94, 94, 204, 89, 229, + 46, 89, 89, 89, 89, 89, 89, 89, 89, 91, + 204, 91, 91, 94, 544, 91, 91, 239, 93, 91, + 93, 93, 93, 239, 93, 93, 246, 246, 93, 216, + 216, 216, 91, 91, 245, 289, 248, 94, 249, 260, + 93, 93, 93, 96, 249, 96, 96, 96, 260, 96, + 96, 248, 543, 96, 97, 97, 97, 97, 97, 97, - 209, 209, 209, 209, 209, 209, 209, 298, 298, 91, - 91, 91, 94, 279, 94, 94, 94, 298, 94, 94, - 313, 383, 94, 162, 313, 162, 162, 452, 452, 162, - 162, 383, 321, 162, 94, 94, 94, 96, 96, 96, - 96, 96, 96, 96, 96, 162, 162, 162, 312, 96, - 96, 96, 96, 96, 205, 368, 205, 205, 205, 205, - 205, 205, 214, 214, 214, 214, 214, 214, 214, 214, - 312, 368, 96, 96, 96, 96, 96, 96, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 316, 371, 205, - 104, 104, 104, 104, 104, 216, 216, 216, 216, 216, + 97, 97, 273, 290, 294, 96, 96, 96, 101, 101, + 101, 101, 101, 101, 101, 101, 102, 102, 102, 102, + 102, 102, 102, 102, 273, 290, 482, 291, 97, 98, + 98, 98, 98, 98, 98, 98, 98, 291, 247, 289, + 294, 98, 98, 98, 98, 98, 135, 135, 135, 135, + 135, 135, 135, 135, 332, 433, 285, 433, 137, 137, + 121, 285, 137, 137, 247, 98, 98, 98, 98, 98, + 98, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 137, 247, 482, 106, 106, 106, 106, 106, 121, 121, + 303, 139, 121, 139, 139, 139, 307, 139, 139, 303, - 216, 216, 216, 217, 217, 217, 217, 217, 217, 316, - 299, 299, 373, 104, 104, 104, 104, 104, 104, 135, - 299, 135, 135, 135, 560, 135, 135, 373, 219, 135, - 219, 219, 219, 219, 219, 219, 219, 219, 453, 453, - 371, 135, 135, 135, 164, 549, 164, 164, 164, 164, - 164, 164, 164, 164, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 253, 253, 253, 253, 253, 253, 253, - 253, 255, 255, 255, 255, 255, 255, 255, 255, 164, - 165, 547, 165, 165, 165, 165, 165, 165, 165, 165, - 259, 259, 259, 259, 259, 259, 259, 259, 419, 419, + 121, 139, 528, 121, 137, 307, 332, 106, 106, 106, + 106, 106, 106, 139, 139, 139, 146, 146, 146, 146, + 146, 146, 146, 146, 150, 292, 324, 150, 150, 334, + 292, 324, 383, 524, 150, 163, 163, 163, 163, 163, + 163, 163, 163, 323, 523, 334, 385, 150, 164, 164, + 164, 164, 164, 164, 164, 164, 166, 522, 166, 166, + 167, 385, 166, 166, 167, 323, 166, 262, 262, 211, + 167, 211, 211, 211, 211, 211, 211, 262, 166, 166, + 166, 521, 167, 167, 168, 383, 168, 168, 168, 168, + 168, 168, 168, 168, 169, 327, 169, 169, 169, 169, - 259, 261, 261, 261, 261, 261, 261, 261, 261, 262, - 262, 262, 262, 262, 262, 165, 166, 543, 166, 166, - 166, 166, 166, 166, 166, 166, 264, 317, 264, 264, - 264, 264, 264, 264, 264, 264, 301, 301, 283, 283, - 283, 283, 283, 283, 283, 283, 301, 456, 456, 317, - 419, 166, 167, 318, 167, 167, 167, 167, 167, 167, - 167, 167, 318, 324, 342, 343, 167, 167, 167, 167, - 167, 283, 324, 342, 343, 344, 344, 287, 372, 287, - 287, 287, 287, 287, 287, 344, 420, 372, 420, 167, - 167, 167, 167, 167, 167, 170, 170, 170, 170, 170, + 169, 169, 169, 169, 170, 211, 170, 170, 170, 170, + 170, 170, 170, 170, 203, 264, 264, 327, 203, 388, + 168, 308, 308, 380, 203, 264, 329, 515, 309, 309, + 169, 308, 311, 311, 498, 329, 203, 203, 309, 380, + 170, 171, 311, 171, 171, 171, 171, 171, 171, 171, + 171, 400, 400, 497, 388, 171, 171, 171, 171, 171, + 207, 207, 207, 207, 207, 207, 207, 207, 209, 335, + 209, 209, 209, 209, 209, 209, 209, 209, 335, 171, + 171, 171, 171, 171, 171, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 207, 451, 451, 174, 174, 174, - 170, 170, 170, 170, 345, 345, 539, 170, 170, 170, - 170, 170, 287, 294, 345, 294, 294, 294, 294, 294, - 294, 294, 294, 307, 307, 307, 307, 307, 307, 527, - 170, 170, 170, 170, 170, 170, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 491, 491, 526, 172, - 172, 172, 172, 172, 295, 376, 295, 295, 295, 295, - 295, 295, 295, 295, 300, 300, 300, 300, 300, 300, - 300, 300, 172, 172, 172, 172, 172, 172, 173, 173, - 173, 173, 173, 173, 173, 173, 347, 347, 511, 376, - 173, 173, 173, 173, 173, 296, 347, 296, 296, 296, + 174, 174, 527, 210, 209, 210, 210, 210, 210, 210, + 210, 210, 210, 220, 220, 220, 220, 220, 220, 220, + 220, 174, 174, 174, 174, 174, 174, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 465, 465, 210, + 176, 176, 176, 176, 176, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 222, 222, 222, 222, 222, 222, + 222, 222, 386, 527, 176, 176, 176, 176, 176, 176, + 177, 177, 177, 177, 177, 177, 177, 177, 386, 466, + 466, 328, 177, 177, 177, 177, 177, 223, 223, 223, + 223, 223, 223, 225, 333, 225, 225, 225, 225, 225, - 296, 296, 296, 296, 296, 306, 306, 306, 306, 306, - 306, 306, 306, 173, 173, 173, 173, 173, 173, 203, - 509, 203, 203, 203, 203, 203, 203, 203, 203, 304, - 304, 304, 304, 304, 304, 304, 304, 508, 309, 304, - 309, 309, 309, 309, 309, 309, 309, 309, 334, 334, - 334, 334, 334, 334, 203, 204, 507, 204, 204, 204, - 204, 204, 204, 204, 204, 331, 331, 331, 331, 331, - 331, 331, 331, 333, 333, 333, 333, 333, 333, 333, - 333, 337, 337, 337, 337, 337, 337, 337, 337, 358, - 204, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 225, 225, 225, 328, 333, 493, 177, 177, 177, 177, + 177, 177, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 353, 469, 469, 221, 221, 221, 221, + 221, 250, 353, 250, 250, 250, 250, 250, 250, 250, + 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 221, 221, 221, 221, 221, 221, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 354, 250, 479, 224, + 224, 224, 224, 224, 251, 354, 251, 251, 251, 251, + 251, 251, 251, 251, 261, 261, 261, 261, 261, 261, + 261, 261, 474, 224, 224, 224, 224, 224, 224, 252, - 215, 215, 502, 502, 506, 215, 215, 215, 215, 215, - 336, 358, 336, 336, 336, 336, 336, 336, 336, 336, - 341, 501, 341, 341, 341, 341, 341, 341, 215, 215, - 215, 215, 215, 215, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 397, 534, 534, 218, 218, 218, - 218, 218, 339, 397, 339, 339, 339, 339, 339, 339, - 339, 339, 346, 346, 346, 346, 346, 346, 346, 346, - 218, 218, 218, 218, 218, 218, 242, 484, 242, 242, - 242, 242, 242, 242, 242, 242, 340, 364, 340, 340, - 340, 340, 340, 340, 340, 340, 350, 350, 350, 350, + 473, 252, 252, 252, 252, 252, 252, 252, 252, 370, + 251, 263, 263, 263, 263, 263, 263, 263, 263, 267, + 267, 267, 267, 267, 267, 267, 267, 481, 481, 267, + 472, 370, 505, 505, 470, 252, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 376, 378, + 427, 268, 268, 268, 268, 268, 269, 269, 269, 269, + 269, 269, 269, 269, 270, 270, 270, 270, 270, 270, + 376, 378, 427, 516, 516, 268, 268, 268, 268, 268, + 268, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 350, 350, 350, 350, 398, 669, 350, 551, 551, 364, - 669, 242, 243, 398, 243, 243, 243, 243, 243, 243, - 243, 243, 352, 352, 352, 352, 352, 352, 352, 352, - 353, 353, 353, 353, 353, 353, 355, 366, 355, 355, - 355, 355, 355, 355, 355, 355, 374, 243, 244, 449, - 244, 244, 244, 244, 244, 244, 244, 244, 449, 366, - 414, 385, 374, 382, 382, 382, 382, 382, 382, 382, - 382, 385, 450, 375, 375, 375, 375, 375, 375, 375, - 375, 450, 414, 244, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 260, 260, 260, 260, 260, + 271, 384, 525, 525, 271, 271, 271, 271, 271, 272, + 384, 272, 272, 272, 272, 272, 272, 272, 272, 293, + 293, 293, 293, 293, 293, 293, 293, 458, 271, 271, + 271, 271, 271, 271, 295, 395, 295, 295, 295, 295, + 295, 295, 295, 295, 297, 395, 297, 297, 297, 297, + 297, 297, 296, 293, 296, 296, 296, 296, 296, 296, + 296, 296, 317, 317, 317, 317, 317, 317, 444, 304, + 295, 304, 304, 304, 304, 304, 304, 304, 304, 440, + 297, 345, 345, 345, 345, 345, 345, 435, 296, 302, + 302, 302, 302, 302, 302, 302, 302, 302, 409, 551, - 260, 260, 260, 260, 260, 260, 375, 415, 457, 260, - 260, 260, 260, 260, 379, 379, 379, 379, 379, 379, - 379, 384, 384, 384, 384, 384, 384, 384, 384, 415, - 457, 483, 260, 260, 260, 260, 260, 260, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 379, 571, - 571, 263, 263, 263, 263, 263, 390, 390, 390, 390, - 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, - 479, 399, 399, 465, 263, 263, 263, 263, 263, 263, - 285, 399, 285, 285, 285, 285, 285, 285, 285, 285, - 393, 432, 393, 393, 393, 393, 393, 393, 393, 393, + 551, 302, 302, 302, 302, 302, 305, 409, 305, 305, + 305, 305, 305, 305, 305, 305, 310, 310, 310, 310, + 310, 310, 310, 310, 431, 302, 302, 302, 302, 302, + 302, 306, 430, 306, 306, 306, 306, 306, 306, 306, + 306, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 314, 314, 314, 314, 314, 314, 314, 314, + 483, 429, 314, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 426, 483, 425, 315, 315, 315, + 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, + 319, 410, 319, 319, 319, 319, 319, 319, 319, 319, - 394, 432, 394, 394, 394, 394, 394, 394, 394, 394, - 460, 473, 619, 619, 468, 285, 286, 433, 286, 286, - 286, 286, 286, 286, 286, 286, 395, 433, 395, 395, - 395, 395, 395, 395, 395, 395, 396, 435, 396, 396, - 396, 396, 396, 396, 396, 396, 473, 435, 461, 459, - 458, 286, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 400, 400, 445, 292, 292, 292, 292, 292, 468, - 461, 400, 401, 401, 401, 401, 401, 401, 401, 401, - 408, 408, 408, 408, 408, 408, 431, 292, 292, 292, - 292, 292, 292, 302, 302, 302, 302, 302, 302, 302, + 410, 315, 315, 315, 315, 315, 315, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 566, 566, 424, + 318, 318, 318, 318, 318, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 423, 318, 318, 318, 318, 318, 318, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 422, + 336, 342, 342, 342, 342, 342, 342, 342, 342, 337, + 344, 344, 344, 344, 344, 344, 344, 344, 364, 364, + 364, 364, 364, 364, 428, 338, 343, 397, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 397, 586, 586, - 302, 302, 302, 302, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 402, 402, 463, 305, 305, - 305, 305, 305, 469, 477, 402, 405, 405, 405, 405, - 405, 405, 405, 405, 427, 503, 405, 422, 469, 463, - 418, 305, 305, 305, 305, 305, 305, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 503, 417, 477, - 308, 308, 308, 308, 308, 407, 407, 407, 407, 407, - 407, 407, 407, 409, 416, 409, 409, 409, 409, 409, - 409, 409, 409, 308, 308, 308, 308, 308, 308, 325, - 325, 325, 325, 325, 325, 325, 325, 325, 421, 428, + 343, 343, 343, 343, 343, 347, 428, 347, 347, 347, + 347, 347, 347, 347, 347, 348, 348, 348, 348, 348, + 348, 348, 348, 393, 343, 343, 343, 343, 343, 343, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 392, + 432, 432, 346, 346, 346, 346, 346, 350, 445, 350, + 350, 350, 350, 350, 350, 350, 350, 352, 445, 352, + 352, 352, 352, 352, 352, 382, 346, 346, 346, 346, + 346, 346, 351, 381, 351, 351, 351, 351, 351, 351, + 351, 351, 355, 355, 356, 356, 403, 403, 403, 403, + 403, 403, 355, 432, 356, 357, 357, 357, 357, 357, - 505, 428, 428, 428, 428, 428, 428, 428, 428, 434, - 434, 434, 434, 434, 434, 434, 434, 413, 421, 412, - 421, 421, 505, 325, 326, 326, 326, 326, 326, 326, - 326, 326, 326, 429, 466, 429, 429, 429, 429, 429, - 429, 429, 429, 421, 430, 485, 430, 430, 430, 430, - 430, 430, 430, 430, 466, 485, 466, 466, 326, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 440, 440, - 440, 440, 440, 440, 440, 440, 441, 441, 441, 441, - 441, 441, 443, 500, 443, 443, 443, 443, 443, 443, - 443, 443, 500, 327, 332, 486, 332, 332, 332, 332, + 357, 357, 357, 358, 358, 363, 363, 363, 363, 363, + 363, 363, 363, 358, 359, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 361, 361, 361, 361, 361, + 361, 361, 361, 590, 590, 361, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 462, 603, 603, + 362, 362, 362, 362, 362, 366, 462, 366, 366, 366, + 366, 366, 366, 366, 366, 387, 387, 387, 387, 387, + 387, 387, 387, 375, 362, 362, 362, 362, 362, 362, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 463, + 634, 634, 374, 365, 365, 365, 365, 365, 463, 387, - 332, 332, 332, 332, 332, 486, 411, 410, 332, 332, - 332, 332, 332, 444, 444, 444, 444, 444, 444, 444, - 444, 446, 381, 446, 446, 446, 446, 446, 446, 446, - 446, 332, 332, 332, 332, 332, 332, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 380, 370, 369, 335, - 335, 335, 335, 335, 447, 488, 447, 447, 447, 447, - 447, 447, 447, 447, 448, 488, 448, 448, 448, 448, - 448, 448, 335, 335, 335, 335, 335, 335, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 391, + 391, 391, 391, 391, 391, 391, 373, 365, 365, 365, + 365, 365, 365, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 471, 434, 372, 389, 394, 394, 394, 394, + 394, 394, 394, 394, 391, 396, 396, 396, 396, 396, + 396, 396, 396, 434, 471, 434, 434, 398, 390, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 401, 487, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 434, + 369, 368, 401, 401, 401, 401, 401, 402, 402, 402, + 402, 402, 402, 402, 402, 405, 367, 405, 405, 405, - 451, 451, 528, 351, 351, 351, 351, 351, 467, 467, - 451, 470, 528, 470, 470, 470, 471, 363, 471, 471, - 471, 467, 544, 362, 555, 589, 351, 351, 351, 351, - 351, 351, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 361, 546, 572, 544, 354, 354, 354, 354, 354, - 472, 472, 472, 472, 472, 472, 472, 472, 470, 555, - 589, 360, 357, 471, 546, 572, 356, 338, 354, 354, - 354, 354, 354, 354, 377, 377, 377, 377, 377, 377, - 377, 377, 377, 472, 476, 330, 476, 476, 476, 476, - 476, 476, 478, 478, 478, 478, 478, 478, 478, 478, + 405, 405, 405, 405, 405, 487, 401, 401, 401, 401, + 401, 401, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 514, 349, 341, 404, 404, 404, 404, 404, 406, + 514, 406, 406, 406, 406, 406, 406, 406, 406, 420, + 420, 420, 420, 420, 420, 411, 411, 340, 404, 404, + 404, 404, 404, 404, 407, 411, 407, 407, 407, 407, + 407, 407, 407, 407, 408, 339, 408, 408, 408, 408, + 408, 408, 408, 408, 412, 412, 413, 413, 413, 413, + 413, 413, 413, 413, 412, 414, 414, 419, 419, 419, + 419, 419, 419, 419, 419, 414, 415, 415, 415, 415, - 482, 329, 482, 482, 482, 482, 482, 482, 377, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 480, 476, - 480, 480, 480, 480, 480, 480, 480, 480, 481, 529, - 481, 481, 481, 481, 481, 481, 481, 481, 328, 529, - 320, 319, 315, 378, 386, 574, 386, 386, 386, 386, - 386, 386, 386, 386, 386, 389, 531, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 531, 574, 585, 389, - 389, 389, 389, 389, 487, 487, 487, 487, 487, 487, - 487, 487, 493, 493, 493, 493, 493, 493, 493, 493, - 585, 314, 389, 389, 389, 389, 389, 389, 392, 392, + 415, 415, 415, 415, 415, 415, 415, 417, 417, 417, + 417, 417, 417, 417, 417, 331, 330, 417, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 446, 326, + 325, 322, 418, 418, 418, 418, 418, 421, 446, 421, + 421, 421, 421, 421, 421, 421, 421, 447, 447, 447, + 447, 447, 447, 447, 447, 321, 418, 418, 418, 418, + 418, 418, 436, 448, 436, 436, 436, 436, 436, 436, + 436, 436, 437, 448, 437, 437, 437, 437, 437, 437, + 437, 437, 438, 499, 438, 438, 438, 438, 438, 438, + 438, 438, 491, 499, 570, 606, 320, 439, 436, 439, - 392, 392, 392, 392, 392, 392, 392, 311, 310, 291, - 392, 392, 392, 392, 392, 494, 494, 494, 494, 494, - 494, 496, 566, 496, 496, 496, 496, 496, 496, 496, - 496, 290, 566, 392, 392, 392, 392, 392, 392, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - 289, 288, 278, 277, 406, 406, 406, 406, 406, 497, - 497, 497, 497, 497, 497, 497, 497, 497, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 406, 406, 406, - 406, 406, 406, 423, 276, 423, 423, 423, 423, 423, + 439, 439, 439, 439, 439, 439, 439, 441, 437, 441, + 441, 441, 441, 441, 441, 441, 441, 442, 438, 442, + 442, 442, 442, 442, 442, 442, 442, 301, 491, 300, + 570, 606, 443, 439, 443, 443, 443, 443, 443, 443, + 443, 443, 449, 475, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 452, 299, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 477, 475, 518, 452, 452, 452, + 452, 452, 453, 453, 453, 453, 453, 453, 453, 453, + 454, 454, 454, 454, 454, 454, 477, 298, 518, 288, + 287, 452, 452, 452, 452, 452, 452, 455, 455, 455, - 423, 423, 423, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 512, 274, 512, 512, 512, 575, 575, 513, - 273, 513, 513, 513, 272, 271, 270, 269, 423, 424, - 575, 424, 424, 424, 424, 424, 424, 424, 424, 514, - 268, 514, 514, 514, 515, 267, 515, 515, 515, 251, - 518, 250, 518, 518, 518, 249, 248, 246, 245, 512, - 236, 235, 234, 233, 424, 425, 513, 425, 425, 425, - 425, 425, 425, 425, 425, 516, 232, 229, 516, 516, - 516, 516, 516, 516, 516, 516, 514, 227, 226, 225, - 224, 515, 223, 220, 212, 517, 517, 518, 211, 517, + 455, 455, 455, 455, 455, 455, 286, 284, 282, 455, + 455, 455, 455, 455, 456, 281, 456, 456, 456, 456, + 456, 456, 456, 456, 457, 457, 457, 457, 457, 457, + 457, 457, 280, 455, 455, 455, 455, 455, 455, 459, + 279, 459, 459, 459, 459, 459, 459, 459, 459, 460, + 480, 460, 460, 460, 460, 460, 460, 460, 460, 461, + 278, 461, 461, 461, 461, 461, 461, 464, 464, 685, + 480, 277, 480, 480, 685, 276, 275, 464, 467, 467, + 467, 467, 467, 467, 467, 467, 467, 467, 484, 259, + 484, 484, 484, 485, 258, 485, 485, 485, 486, 486, - 425, 426, 208, 426, 426, 426, 426, 426, 426, 426, - 426, 517, 517, 517, 519, 519, 207, 523, 519, 523, - 523, 523, 523, 523, 523, 523, 523, 200, 199, 193, - 519, 519, 519, 190, 189, 188, 426, 436, 187, 436, - 436, 436, 436, 436, 436, 436, 436, 436, 439, 186, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 184, - 183, 182, 439, 439, 439, 439, 439, 524, 181, 524, - 524, 524, 524, 524, 524, 524, 524, 530, 530, 530, - 530, 530, 530, 530, 530, 439, 439, 439, 439, 439, - 439, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 486, 486, 486, 486, 486, 486, 488, 500, 488, 488, + 488, 488, 488, 488, 488, 488, 489, 500, 489, 489, + 489, 489, 489, 489, 489, 489, 257, 502, 545, 520, + 546, 256, 486, 254, 548, 253, 484, 502, 545, 244, + 546, 485, 488, 490, 548, 490, 490, 490, 490, 490, + 490, 520, 489, 492, 492, 492, 492, 492, 492, 492, + 492, 494, 243, 494, 494, 494, 494, 494, 494, 494, + 494, 508, 508, 508, 508, 508, 508, 242, 495, 490, + 495, 495, 495, 495, 495, 495, 495, 495, 496, 241, + 496, 496, 496, 496, 496, 496, 501, 501, 501, 501, - 180, 179, 178, 442, 442, 442, 442, 442, 525, 177, - 525, 525, 525, 525, 525, 525, 525, 525, 536, 536, - 536, 536, 536, 536, 536, 536, 442, 442, 442, 442, - 442, 442, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 474, 176, 474, 474, 474, 474, 474, 474, - 474, 474, 537, 537, 537, 537, 537, 537, 538, 175, - 538, 538, 538, 538, 538, 538, 538, 538, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 474, 475, 169, - 475, 475, 475, 475, 475, 475, 475, 475, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 542, 542, 542, + 501, 501, 501, 501, 503, 561, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 506, 581, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 581, 561, 240, 506, + 506, 506, 506, 506, 507, 507, 507, 507, 507, 507, + 507, 507, 510, 237, 510, 510, 510, 510, 510, 510, + 510, 510, 235, 506, 506, 506, 506, 506, 506, 509, + 509, 509, 509, 509, 509, 509, 509, 234, 233, 232, + 231, 509, 509, 509, 509, 509, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 563, 509, 509, 509, 509, 509, - 542, 542, 542, 542, 552, 552, 552, 552, 552, 552, - 552, 552, 168, 475, 489, 158, 489, 489, 489, 489, - 489, 489, 489, 489, 489, 492, 157, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 156, 152, 151, 492, - 492, 492, 492, 492, 553, 553, 553, 553, 553, 553, - 553, 553, 554, 554, 554, 554, 554, 554, 554, 554, - 149, 145, 492, 492, 492, 492, 492, 492, 495, 495, - 495, 495, 495, 495, 495, 495, 138, 134, 132, 130, - 495, 495, 495, 495, 495, 554, 558, 122, 558, 558, - 558, 558, 558, 558, 559, 559, 559, 559, 559, 559, + 509, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 529, 230, 529, 529, 529, 530, 563, 530, 530, 530, + 531, 228, 531, 531, 531, 532, 226, 532, 532, 532, + 533, 218, 217, 533, 533, 533, 533, 533, 533, 533, + 533, 214, 587, 534, 534, 589, 535, 534, 535, 535, + 535, 213, 206, 536, 536, 205, 199, 536, 529, 534, + 534, 534, 196, 530, 587, 195, 194, 589, 531, 536, + 536, 536, 537, 532, 537, 537, 537, 537, 537, 537, + 537, 537, 538, 600, 538, 538, 538, 538, 538, 538, + 538, 538, 193, 539, 535, 539, 539, 539, 539, 539, - 559, 559, 121, 495, 495, 495, 495, 495, 495, 520, - 120, 520, 520, 520, 520, 520, 520, 520, 520, 119, - 561, 558, 561, 561, 561, 561, 561, 561, 561, 561, - 562, 118, 562, 562, 562, 562, 562, 562, 562, 562, - 113, 112, 111, 110, 520, 521, 108, 521, 521, 521, - 521, 521, 521, 521, 521, 563, 107, 563, 563, 563, - 563, 563, 563, 569, 106, 569, 569, 569, 569, 569, - 569, 569, 569, 596, 596, 596, 596, 596, 596, 102, - 521, 522, 98, 522, 522, 522, 522, 522, 522, 522, - 522, 579, 579, 579, 579, 579, 579, 579, 579, 580, + 539, 539, 539, 192, 190, 600, 189, 540, 537, 540, + 540, 540, 540, 540, 540, 540, 540, 541, 538, 541, + 541, 541, 541, 541, 541, 541, 541, 188, 542, 539, + 542, 542, 542, 542, 542, 542, 542, 542, 547, 547, + 547, 547, 547, 547, 547, 547, 549, 187, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 552, 186, 552, + 552, 552, 552, 552, 552, 552, 552, 185, 184, 183, + 182, 552, 552, 552, 552, 552, 553, 553, 553, 553, + 553, 553, 553, 553, 554, 554, 554, 554, 554, 554, + 181, 180, 179, 173, 172, 552, 552, 552, 552, 552, - 580, 580, 580, 580, 580, 580, 580, 581, 581, 581, - 581, 581, 581, 581, 581, 97, 522, 532, 93, 532, - 532, 532, 532, 532, 532, 532, 532, 532, 535, 90, - 535, 535, 535, 535, 535, 535, 535, 535, 82, 81, - 80, 78, 535, 535, 535, 535, 535, 73, 588, 588, - 588, 588, 588, 588, 588, 588, 592, 66, 592, 592, - 592, 592, 592, 592, 59, 535, 535, 535, 535, 535, - 535, 556, 54, 556, 556, 556, 556, 556, 556, 556, - 556, 588, 594, 594, 594, 594, 594, 594, 594, 594, - 51, 592, 595, 595, 595, 595, 595, 595, 595, 595, + 552, 555, 162, 555, 555, 555, 555, 555, 555, 555, + 555, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 559, + 559, 559, 559, 559, 559, 559, 567, 567, 567, 567, + 567, 567, 567, 567, 568, 568, 568, 568, 568, 568, + 568, 568, 569, 569, 569, 569, 569, 569, 569, 569, + 571, 161, 571, 571, 571, 571, 571, 571, 571, 571, + 572, 160, 572, 572, 572, 572, 572, 572, 572, 572, + 156, 155, 153, 149, 142, 573, 569, 573, 573, 573, + 573, 573, 573, 138, 136, 134, 571, 574, 574, 574, - 49, 41, 40, 39, 38, 37, 556, 557, 36, 557, - 557, 557, 557, 557, 557, 557, 557, 33, 29, 23, - 600, 600, 600, 600, 600, 600, 600, 600, 601, 601, - 601, 601, 601, 601, 601, 601, 17, 15, 14, 13, - 0, 0, 557, 576, 0, 576, 576, 576, 576, 576, - 576, 576, 576, 600, 0, 0, 0, 0, 0, 0, - 0, 601, 602, 602, 602, 602, 602, 602, 602, 602, - 604, 604, 604, 604, 604, 604, 604, 604, 576, 577, - 0, 577, 577, 577, 577, 577, 577, 577, 577, 0, - 0, 0, 0, 0, 0, 602, 605, 605, 605, 605, + 574, 574, 574, 574, 574, 576, 572, 576, 576, 576, + 576, 576, 576, 576, 576, 126, 125, 124, 123, 122, + 577, 573, 577, 577, 577, 577, 577, 577, 577, 577, + 578, 117, 578, 578, 578, 578, 578, 578, 584, 116, + 584, 584, 584, 584, 584, 584, 584, 584, 591, 115, + 591, 591, 591, 591, 591, 591, 591, 591, 592, 114, + 592, 592, 592, 592, 592, 592, 592, 592, 593, 113, + 593, 593, 593, 593, 593, 593, 593, 593, 613, 613, + 613, 613, 613, 613, 591, 594, 594, 594, 594, 594, + 594, 594, 594, 111, 592, 595, 595, 595, 595, 595, - 605, 605, 0, 604, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 577, 578, 0, 578, 578, 578, - 578, 578, 578, 578, 578, 0, 0, 0, 0, 605, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 578, 590, 0, 590, 590, 590, 590, 590, 590, 590, - 590, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 590, 591, 0, 591, - 591, 591, 591, 591, 591, 591, 591, 0, 0, 0, + 595, 595, 595, 110, 593, 596, 596, 596, 596, 596, + 596, 596, 596, 605, 605, 605, 605, 605, 605, 605, + 605, 607, 109, 607, 607, 607, 607, 607, 607, 607, + 607, 608, 108, 608, 608, 608, 608, 608, 608, 608, + 608, 104, 100, 99, 95, 92, 609, 605, 609, 609, + 609, 609, 609, 609, 84, 83, 82, 607, 611, 611, + 611, 611, 611, 611, 611, 611, 80, 608, 612, 612, + 612, 612, 612, 612, 612, 612, 75, 68, 61, 57, + 56, 54, 609, 615, 615, 615, 615, 615, 615, 615, + 615, 616, 616, 616, 616, 616, 616, 616, 616, 617, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 591, 607, 607, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 608, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, - 608, 608, 608, 608, 608, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 610, 610, 610, 610, 610, 610, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 610, 611, 0, 0, - 0, 0, 0, 0, 0, 611, 611, 611, 0, 0, + 617, 617, 617, 617, 617, 617, 617, 619, 619, 619, + 619, 619, 619, 619, 619, 51, 49, 615, 620, 620, + 620, 620, 620, 620, 41, 616, 40, 39, 37, 33, + 29, 23, 17, 617, 15, 14, 13, 0, 0, 0, + 0, 619, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 620, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 623, + 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, + 623, 623, 623, 623, 623, 624, 624, 624, 624, 624, + 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, - 611, 611, 611, 612, 612, 612, 612, 612, 612, 612, - 612, 612, 612, 612, 612, 612, 612, 612, 612, 613, - 0, 0, 0, 0, 613, 0, 0, 613, 613, 613, - 613, 0, 613, 613, 613, 614, 0, 0, 0, 0, - 0, 0, 0, 614, 614, 614, 0, 0, 614, 614, - 614, 615, 0, 0, 615, 615, 0, 615, 0, 615, - 615, 615, 0, 0, 615, 615, 615, 616, 616, 0, - 0, 0, 616, 617, 0, 0, 617, 617, 0, 617, - 0, 617, 617, 617, 0, 0, 617, 617, 617, 618, - 0, 0, 618, 618, 0, 618, 0, 618, 618, 618, + 624, 625, 625, 625, 625, 625, 625, 625, 625, 625, + 625, 625, 625, 625, 625, 625, 625, 626, 0, 0, + 0, 0, 0, 0, 0, 626, 626, 626, 0, 0, + 626, 626, 626, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 627, 627, 627, 627, 627, 627, 627, 628, + 0, 0, 0, 0, 628, 0, 0, 628, 628, 628, + 628, 0, 628, 628, 628, 629, 0, 0, 0, 0, + 0, 0, 0, 629, 629, 629, 0, 0, 629, 629, + 629, 630, 0, 0, 630, 630, 0, 630, 0, 630, + 630, 630, 0, 0, 630, 630, 630, 631, 631, 0, - 0, 618, 0, 618, 618, 620, 0, 0, 620, 0, - 0, 620, 0, 620, 620, 620, 620, 0, 620, 620, - 620, 621, 621, 621, 621, 621, 621, 621, 621, 621, - 621, 621, 621, 621, 621, 621, 621, 622, 622, 0, - 622, 0, 622, 622, 622, 622, 622, 622, 622, 622, - 622, 622, 622, 623, 623, 623, 623, 623, 623, 623, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 624, - 624, 0, 624, 624, 624, 624, 624, 624, 624, 624, - 624, 624, 624, 624, 624, 625, 0, 0, 0, 0, - 625, 0, 0, 625, 625, 625, 0, 0, 625, 625, + 0, 0, 631, 632, 0, 0, 632, 632, 0, 632, + 0, 632, 632, 632, 0, 0, 632, 632, 632, 633, + 0, 0, 633, 633, 0, 633, 0, 633, 633, 633, + 0, 633, 0, 633, 633, 635, 0, 0, 635, 0, + 0, 635, 0, 635, 635, 635, 635, 0, 635, 635, + 635, 636, 636, 636, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 637, 637, 0, + 637, 0, 637, 637, 637, 637, 637, 637, 637, 637, + 637, 637, 637, 638, 638, 638, 638, 638, 638, 638, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 639, - 625, 626, 0, 0, 626, 626, 0, 626, 0, 626, - 626, 626, 0, 0, 626, 626, 626, 627, 627, 0, - 0, 0, 627, 628, 628, 628, 0, 0, 0, 628, - 629, 0, 0, 629, 629, 0, 629, 0, 629, 629, - 629, 0, 0, 629, 629, 629, 630, 630, 630, 630, - 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, - 630, 630, 631, 631, 0, 0, 0, 631, 632, 632, - 632, 0, 0, 0, 632, 633, 633, 0, 0, 0, - 633, 634, 634, 0, 0, 0, 634, 635, 635, 0, - 0, 0, 635, 636, 636, 636, 0, 0, 0, 636, + 639, 0, 639, 639, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 639, 640, 0, 0, 0, 0, + 640, 0, 0, 640, 640, 640, 0, 0, 640, 640, + 640, 641, 0, 0, 641, 641, 0, 641, 0, 641, + 641, 641, 0, 0, 641, 641, 641, 642, 642, 0, + 0, 0, 642, 643, 643, 643, 0, 0, 0, 643, + 644, 0, 0, 644, 644, 0, 644, 0, 644, 644, + 644, 0, 0, 644, 644, 644, 645, 645, 645, 645, + 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, + 645, 645, 646, 646, 0, 0, 0, 646, 647, 647, - 637, 637, 0, 0, 0, 637, 638, 638, 0, 0, - 0, 638, 639, 639, 0, 0, 0, 639, 640, 640, - 640, 0, 0, 0, 640, 641, 641, 641, 641, 0, - 0, 0, 641, 642, 642, 0, 0, 0, 642, 643, - 643, 0, 0, 0, 643, 644, 644, 0, 0, 0, - 644, 645, 645, 645, 0, 0, 0, 645, 646, 646, - 646, 646, 0, 0, 0, 646, 647, 647, 0, 0, - 0, 647, 648, 648, 0, 0, 0, 648, 649, 649, - 649, 0, 0, 0, 649, 650, 650, 650, 650, 0, - 0, 0, 650, 651, 651, 0, 0, 0, 651, 652, + 647, 0, 0, 0, 647, 648, 648, 0, 0, 0, + 648, 649, 649, 0, 0, 0, 649, 650, 650, 0, + 0, 0, 650, 651, 651, 651, 0, 0, 0, 651, + 652, 652, 0, 0, 0, 652, 653, 653, 0, 0, + 0, 653, 654, 654, 0, 0, 0, 654, 655, 655, + 655, 0, 0, 0, 655, 656, 656, 656, 656, 0, + 0, 0, 656, 657, 657, 0, 0, 0, 657, 658, + 658, 0, 0, 0, 658, 659, 659, 0, 0, 0, + 659, 660, 660, 660, 0, 0, 0, 660, 661, 661, + 661, 661, 0, 0, 0, 661, 662, 662, 0, 0, - 0, 652, 652, 0, 0, 0, 652, 653, 653, 653, - 0, 0, 0, 653, 654, 654, 654, 654, 0, 0, - 0, 654, 655, 655, 0, 0, 0, 655, 656, 0, - 656, 656, 0, 0, 0, 656, 657, 657, 657, 0, - 0, 0, 657, 658, 658, 658, 0, 0, 0, 0, - 658, 659, 659, 0, 659, 659, 659, 0, 0, 659, - 659, 659, 0, 0, 659, 659, 659, 660, 660, 0, - 660, 660, 660, 0, 0, 660, 660, 660, 0, 0, - 660, 660, 660, 661, 661, 0, 0, 0, 661, 662, - 0, 662, 662, 0, 0, 0, 662, 663, 663, 0, + 0, 662, 663, 663, 0, 0, 0, 663, 664, 664, + 664, 0, 0, 0, 664, 665, 665, 665, 665, 0, + 0, 0, 665, 666, 666, 0, 0, 0, 666, 667, + 0, 667, 667, 0, 0, 0, 667, 668, 668, 668, + 0, 0, 0, 668, 669, 669, 669, 669, 0, 0, + 0, 669, 670, 670, 0, 0, 0, 670, 671, 0, + 671, 671, 0, 0, 0, 671, 672, 672, 672, 0, + 0, 0, 672, 673, 673, 673, 0, 0, 0, 0, + 673, 674, 674, 674, 674, 674, 674, 674, 674, 674, + 674, 674, 674, 674, 674, 674, 674, 675, 675, 0, - 0, 0, 0, 663, 664, 664, 664, 664, 664, 664, - 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, - 665, 665, 0, 0, 0, 665, 666, 0, 666, 666, - 0, 0, 0, 666, 667, 667, 0, 0, 0, 667, - 668, 0, 668, 0, 0, 0, 0, 668, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 675, 675, 675, 0, 0, 675, 675, 675, 0, 0, + 675, 675, 675, 676, 676, 0, 676, 676, 676, 0, + 0, 676, 676, 676, 0, 0, 676, 676, 676, 677, + 677, 0, 0, 0, 677, 678, 0, 678, 678, 0, + 0, 0, 678, 679, 679, 0, 0, 0, 0, 679, + 680, 680, 0, 0, 0, 680, 681, 0, 681, 681, + 0, 0, 0, 681, 682, 682, 0, 0, 0, 682, + 683, 0, 683, 0, 0, 0, 0, 683, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 621, 621, 621, 621, 621, 621, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606 + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621 } ; static yy_state_type yy_last_accepting_state; @@ -1404,7 +1394,7 @@ char *yytext; #define INITIAL 0 #line 2 "toke.l" /* - * Copyright (c) 1996, 1998-2005, 2007-2011 + * Copyright (c) 1996, 1998-2005, 2007-2012 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -1475,27 +1465,40 @@ char *yytext; #include "parse.h" #include "toke.h" #include +#include "lbuf.h" +#include "secure_path.h" extern YYSTYPE yylval; -extern int parse_error; +extern bool parse_error; +extern bool sudoers_warnings; int sudolineno; +int last_token; char *sudoers; -static int continued, prev_state, sawspace; +/* Default sudoers path, mode and owner (may be set via sudo.conf) */ +const char *sudoers_file = _PATH_SUDOERS; +mode_t sudoers_mode = SUDOERS_MODE; +uid_t sudoers_uid = SUDOERS_UID; +gid_t sudoers_gid = SUDOERS_GID; -static int _push_include(char *, int); -static int pop_include(void); +static bool continued, sawspace; +static int prev_state; + +static bool _push_include(char *, bool); +static bool pop_include(void); static char *parse_include(char *); -#ifdef TRACELEXER -static int sudoers_trace_print(const char *msg); -#else -# define sudoers_trace_print NULL -#endif int (*trace_print)(const char *msg) = sudoers_trace_print; -#define push_include(_p) (_push_include((_p), FALSE)) -#define push_includedir(_p) (_push_include((_p), TRUE)) +#define LEXRETURN(n) do { \ + last_token = (n); \ + return (n); \ +} while (0) + +#define ECHO ignore_result(fwrite(yytext, yyleng, 1, yyout)) + +#define push_include(_p) (_push_include((_p), false)) +#define push_includedir(_p) (_push_include((_p), true)) #define YY_NO_INPUT 1 #define YY_NO_UNPUT 1 #define GOTDEFS 1 @@ -1508,7 +1511,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_pr #define INSTR 5 -#line 1511 "lex.yy.c" +#line 1514 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1662,9 +1665,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 119 "toke.l" +#line 132 "toke.l" -#line 1667 "lex.yy.c" +#line 1670 "lex.yy.c" if ( yy_init ) { @@ -1716,13 +1719,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 607 ) + if ( yy_current_state >= 622 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3665 ); + while ( yy_base[yy_current_state] != 3595 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1750,65 +1753,65 @@ do_action: /* This label is used only to access EOF ac case 1: YY_RULE_SETUP -#line 120 "toke.l" +#line 133 "toke.l" { LEXTRACE(", "); - return ','; + LEXRETURN(','); } /* return ',' */ YY_BREAK case 2: YY_RULE_SETUP -#line 125 "toke.l" +#line 138 "toke.l" BEGIN STARTDEFS; YY_BREAK case 3: YY_RULE_SETUP -#line 127 "toke.l" +#line 140 "toke.l" { BEGIN INDEFS; LEXTRACE("DEFVAR "); if (!fill(yytext, yyleng)) yyterminate(); - return DEFVAR; + LEXRETURN(DEFVAR); } YY_BREAK case 4: YY_RULE_SETUP -#line 136 "toke.l" +#line 149 "toke.l" { BEGIN STARTDEFS; LEXTRACE(", "); - return ','; + LEXRETURN(','); } /* return ',' */ YY_BREAK case 5: YY_RULE_SETUP -#line 142 "toke.l" +#line 155 "toke.l" { LEXTRACE("= "); - return '='; + LEXRETURN('='); } /* return '=' */ YY_BREAK case 6: YY_RULE_SETUP -#line 147 "toke.l" +#line 160 "toke.l" { LEXTRACE("+= "); - return '+'; + LEXRETURN('+'); } /* return '+' */ YY_BREAK case 7: YY_RULE_SETUP -#line 152 "toke.l" +#line 165 "toke.l" { LEXTRACE("-= "); - return '-'; + LEXRETURN('-'); } /* return '-' */ YY_BREAK case 8: YY_RULE_SETUP -#line 157 "toke.l" +#line 170 "toke.l" { LEXTRACE("BEGINSTR "); yylval.string = NULL; @@ -1818,35 +1821,35 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 164 "toke.l" +#line 177 "toke.l" { LEXTRACE("WORD(2) "); if (!fill(yytext, yyleng)) yyterminate(); - return WORD; + LEXRETURN(WORD); } YY_BREAK case 10: YY_RULE_SETUP -#line 173 "toke.l" +#line 186 "toke.l" { /* Line continuation char followed by newline. */ - ++sudolineno; - continued = TRUE; + sudolineno++; + continued = true; } YY_BREAK case 11: YY_RULE_SETUP -#line 179 "toke.l" +#line 192 "toke.l" { LEXTRACE("ENDSTR "); BEGIN prev_state; if (yylval.string == NULL) { LEXTRACE("ERROR "); /* empty string */ - return ERROR; + LEXRETURN(ERROR); } if (prev_state == INITIAL) { switch (yylval.string[0]) { @@ -1855,26 +1858,26 @@ YY_RULE_SETUP (yylval.string[1] == ':' && yylval.string[2] == '\0')) { LEXTRACE("ERROR "); /* empty group */ - return ERROR; + LEXRETURN(ERROR); } LEXTRACE("USERGROUP "); - return USERGROUP; + LEXRETURN(USERGROUP); case '+': if (yylval.string[1] == '\0') { LEXTRACE("ERROR "); /* empty netgroup */ - return ERROR; + LEXRETURN(ERROR); } LEXTRACE("NETGROUP "); - return NETGROUP; + LEXRETURN(NETGROUP); } } LEXTRACE("WORD(4) "); - return WORD; + LEXRETURN(WORD); } YY_BREAK case 12: YY_RULE_SETUP -#line 211 "toke.l" +#line 224 "toke.l" { LEXTRACE("BACKSLASH "); if (!append(yytext, yyleng)) @@ -1883,7 +1886,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 217 "toke.l" +#line 230 "toke.l" { LEXTRACE("STRBODY "); if (!append(yytext, yyleng)) @@ -1894,55 +1897,55 @@ YY_RULE_SETUP case 14: YY_RULE_SETUP -#line 225 "toke.l" +#line 238 "toke.l" { /* quoted fnmatch glob char, pass verbatim */ LEXTRACE("QUOTEDCHAR "); if (!fill_args(yytext, 2, sawspace)) yyterminate(); - sawspace = FALSE; + sawspace = false; } YY_BREAK case 15: YY_RULE_SETUP -#line 233 "toke.l" +#line 246 "toke.l" { /* quoted sudoers special char, strip backslash */ LEXTRACE("QUOTEDCHAR "); if (!fill_args(yytext + 1, 1, sawspace)) yyterminate(); - sawspace = FALSE; + sawspace = false; } YY_BREAK case 16: YY_RULE_SETUP -#line 241 "toke.l" +#line 254 "toke.l" { BEGIN INITIAL; yyless(0); - return COMMAND; + LEXRETURN(COMMAND); } /* end of command line args */ YY_BREAK case 17: YY_RULE_SETUP -#line 247 "toke.l" +#line 260 "toke.l" { LEXTRACE("ARG "); if (!fill_args(yytext, yyleng, sawspace)) yyterminate(); - sawspace = FALSE; + sawspace = false; } /* a command line arg */ YY_BREAK case 18: YY_RULE_SETUP -#line 255 "toke.l" +#line 268 "toke.l" { char *path; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if ((path = parse_include(yytext)) == NULL) @@ -1957,13 +1960,13 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 273 "toke.l" +#line 286 "toke.l" { char *path; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if ((path = parse_include(yytext)) == NULL) @@ -1981,14 +1984,14 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 294 "toke.l" +#line 307 "toke.l" { char deftype; int n; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } for (n = 0; isblank((unsigned char)yytext[n]); n++) @@ -2003,34 +2006,34 @@ YY_RULE_SETUP case ':': yyless(n); LEXTRACE("DEFAULTS_USER "); - return DEFAULTS_USER; + LEXRETURN(DEFAULTS_USER); case '>': yyless(n); LEXTRACE("DEFAULTS_RUNAS "); - return DEFAULTS_RUNAS; + LEXRETURN(DEFAULTS_RUNAS); case '@': yyless(n); LEXTRACE("DEFAULTS_HOST "); - return DEFAULTS_HOST; + LEXRETURN(DEFAULTS_HOST); case '!': yyless(n); LEXTRACE("DEFAULTS_CMND "); - return DEFAULTS_CMND; + LEXRETURN(DEFAULTS_CMND); default: LEXTRACE("DEFAULTS "); - return DEFAULTS; + LEXRETURN(DEFAULTS); } } YY_BREAK case 21: YY_RULE_SETUP -#line 334 "toke.l" +#line 347 "toke.l" { int n; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } for (n = 0; isblank((unsigned char)yytext[n]); n++) @@ -2038,196 +2041,196 @@ YY_RULE_SETUP switch (yytext[n]) { case 'H': LEXTRACE("HOSTALIAS "); - return HOSTALIAS; + LEXRETURN(HOSTALIAS); case 'C': LEXTRACE("CMNDALIAS "); - return CMNDALIAS; + LEXRETURN(CMNDALIAS); case 'U': LEXTRACE("USERALIAS "); - return USERALIAS; + LEXRETURN(USERALIAS); case 'R': LEXTRACE("RUNASALIAS "); - return RUNASALIAS; + LEXRETURN(RUNASALIAS); } } YY_BREAK case 22: YY_RULE_SETUP -#line 360 "toke.l" +#line 373 "toke.l" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); - return NOPASSWD; + LEXRETURN(NOPASSWD); } YY_BREAK case 23: YY_RULE_SETUP -#line 366 "toke.l" +#line 379 "toke.l" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); - return PASSWD; + LEXRETURN(PASSWD); } YY_BREAK case 24: YY_RULE_SETUP -#line 372 "toke.l" +#line 385 "toke.l" { LEXTRACE("NOEXEC "); - return NOEXEC; + LEXRETURN(NOEXEC); } YY_BREAK case 25: YY_RULE_SETUP -#line 377 "toke.l" +#line 390 "toke.l" { LEXTRACE("EXEC "); - return EXEC; + LEXRETURN(EXEC); } YY_BREAK case 26: YY_RULE_SETUP -#line 382 "toke.l" +#line 395 "toke.l" { LEXTRACE("SETENV "); - return SETENV; + LEXRETURN(SETENV); } YY_BREAK case 27: YY_RULE_SETUP -#line 387 "toke.l" +#line 400 "toke.l" { LEXTRACE("NOSETENV "); - return NOSETENV; + LEXRETURN(NOSETENV); } YY_BREAK case 28: YY_RULE_SETUP -#line 392 "toke.l" +#line 405 "toke.l" { LEXTRACE("LOG_OUTPUT "); - return LOG_OUTPUT; + LEXRETURN(LOG_OUTPUT); } YY_BREAK case 29: YY_RULE_SETUP -#line 397 "toke.l" +#line 410 "toke.l" { LEXTRACE("NOLOG_OUTPUT "); - return NOLOG_OUTPUT; + LEXRETURN(NOLOG_OUTPUT); } YY_BREAK case 30: YY_RULE_SETUP -#line 402 "toke.l" +#line 415 "toke.l" { LEXTRACE("LOG_INPUT "); - return LOG_INPUT; + LEXRETURN(LOG_INPUT); } YY_BREAK case 31: YY_RULE_SETUP -#line 407 "toke.l" +#line 420 "toke.l" { LEXTRACE("NOLOG_INPUT "); - return NOLOG_INPUT; + LEXRETURN(NOLOG_INPUT); } YY_BREAK case 32: YY_RULE_SETUP -#line 412 "toke.l" +#line 425 "toke.l" { /* empty group or netgroup */ LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } YY_BREAK case 33: YY_RULE_SETUP -#line 418 "toke.l" +#line 431 "toke.l" { /* netgroup */ if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NETGROUP "); - return NETGROUP; + LEXRETURN(NETGROUP); } YY_BREAK case 34: YY_RULE_SETUP -#line 426 "toke.l" +#line 439 "toke.l" { /* group */ if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("USERGROUP "); - return USERGROUP; + LEXRETURN(USERGROUP); } YY_BREAK case 35: YY_RULE_SETUP -#line 434 "toke.l" +#line 447 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 36: YY_RULE_SETUP -#line 441 "toke.l" +#line 454 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 37: YY_RULE_SETUP -#line 448 "toke.l" +#line 461 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 38: YY_RULE_SETUP -#line 459 "toke.l" +#line 472 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 39: YY_RULE_SETUP -#line 470 "toke.l" +#line 483 "toke.l" { LEXTRACE("ALL "); - return ALL; + LEXRETURN(ALL); } YY_BREAK case 40: YY_RULE_SETUP -#line 476 "toke.l" +#line 489 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("ROLE "); - return ROLE; + LEXRETURN(ROLE); #else goto got_alias; #endif @@ -2235,11 +2238,11 @@ YY_RULE_SETUP YY_BREAK case 41: YY_RULE_SETUP -#line 485 "toke.l" +#line 498 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("TYPE "); - return TYPE; + LEXRETURN(TYPE); #else goto got_alias; #endif @@ -2247,31 +2250,53 @@ YY_RULE_SETUP YY_BREAK case 42: YY_RULE_SETUP -#line 494 "toke.l" +#line 506 "toke.l" { -#ifndef HAVE_SELINUX - got_alias: +#ifdef HAVE_PRIV_SET + LEXTRACE("PRIVS "); + LEXRETURN(PRIVS); +#else + goto got_alias; #endif + } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 515 "toke.l" +{ +#ifdef HAVE_PRIV_SET + LEXTRACE("LIMITPRIVS "); + LEXRETURN(LIMITPRIVS); +#else + goto got_alias; +#endif + } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 524 "toke.l" +{ + got_alias: if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("ALIAS "); - return ALIAS; + LEXRETURN(ALIAS); } YY_BREAK -case 43: +case 45: YY_RULE_SETUP -#line 504 "toke.l" +#line 532 "toke.l" { /* no command args allowed for Defaults!/path */ if (!fill_cmnd(yytext, yyleng)) yyterminate(); LEXTRACE("COMMAND "); - return COMMAND; + LEXRETURN(COMMAND); } YY_BREAK -case 44: +case 46: YY_RULE_SETUP -#line 512 "toke.l" +#line 540 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2279,16 +2304,16 @@ YY_RULE_SETUP yyterminate(); } /* sudo -e */ YY_BREAK -case 45: +case 47: YY_RULE_SETUP -#line 519 "toke.l" +#line 547 "toke.l" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { LEXTRACE("COMMAND "); if (!fill_cmnd(yytext, yyleng)) yyterminate(); - return COMMAND; + LEXRETURN(COMMAND); } else { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2297,9 +2322,9 @@ YY_RULE_SETUP } } /* a pathname */ YY_BREAK -case 46: +case 48: YY_RULE_SETUP -#line 534 "toke.l" +#line 562 "toke.l" { LEXTRACE("BEGINSTR "); yylval.string = NULL; @@ -2307,115 +2332,115 @@ YY_RULE_SETUP BEGIN INSTR; } YY_BREAK -case 47: +case 49: YY_RULE_SETUP -#line 541 "toke.l" +#line 569 "toke.l" { /* a word */ if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("WORD(5) "); - return WORD; + LEXRETURN(WORD); } YY_BREAK -case 48: +case 50: YY_RULE_SETUP -#line 549 "toke.l" +#line 577 "toke.l" { LEXTRACE("( "); - return '('; + LEXRETURN('('); } YY_BREAK -case 49: +case 51: YY_RULE_SETUP -#line 554 "toke.l" +#line 582 "toke.l" { LEXTRACE(") "); - return ')'; + LEXRETURN(')'); } YY_BREAK -case 50: +case 52: YY_RULE_SETUP -#line 559 "toke.l" +#line 587 "toke.l" { LEXTRACE(", "); - return ','; + LEXRETURN(','); } /* return ',' */ YY_BREAK -case 51: +case 53: YY_RULE_SETUP -#line 564 "toke.l" +#line 592 "toke.l" { LEXTRACE("= "); - return '='; + LEXRETURN('='); } /* return '=' */ YY_BREAK -case 52: +case 54: YY_RULE_SETUP -#line 569 "toke.l" +#line 597 "toke.l" { LEXTRACE(": "); - return ':'; + LEXRETURN(':'); } /* return ':' */ YY_BREAK -case 53: +case 55: YY_RULE_SETUP -#line 574 "toke.l" +#line 602 "toke.l" { if (yyleng & 1) { LEXTRACE("!"); - return '!'; /* return '!' */ + LEXRETURN('!'); /* return '!' */ } } YY_BREAK -case 54: +case 56: YY_RULE_SETUP -#line 581 "toke.l" +#line 609 "toke.l" { if (YY_START == INSTR) { LEXTRACE("ERROR "); - return ERROR; /* line break in string */ + LEXRETURN(ERROR); /* line break in string */ } BEGIN INITIAL; - ++sudolineno; - continued = FALSE; + sudolineno++; + continued = false; LEXTRACE("\n"); - return COMMENT; + LEXRETURN(COMMENT); } /* return newline */ YY_BREAK -case 55: +case 57: YY_RULE_SETUP -#line 593 "toke.l" +#line 621 "toke.l" { /* throw away space/tabs */ - sawspace = TRUE; /* but remember for fill_args */ + sawspace = true; /* but remember for fill_args */ } YY_BREAK -case 56: +case 58: YY_RULE_SETUP -#line 597 "toke.l" +#line 625 "toke.l" { - sawspace = TRUE; /* remember for fill_args */ - ++sudolineno; - continued = TRUE; + sawspace = true; /* remember for fill_args */ + sudolineno++; + continued = true; } /* throw away EOL after \ */ YY_BREAK -case 57: +case 59: YY_RULE_SETUP -#line 603 "toke.l" +#line 631 "toke.l" { BEGIN INITIAL; - ++sudolineno; - continued = FALSE; + sudolineno++; + continued = false; LEXTRACE("#\n"); - return COMMENT; + LEXRETURN(COMMENT); } /* comment, not uid/gid */ YY_BREAK -case 58: +case 60: YY_RULE_SETUP -#line 611 "toke.l" +#line 639 "toke.l" { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } /* parse error */ YY_BREAK case YY_STATE_EOF(INITIAL): @@ -2424,23 +2449,23 @@ case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(STARTDEFS): case YY_STATE_EOF(INDEFS): case YY_STATE_EOF(INSTR): -#line 616 "toke.l" +#line 644 "toke.l" { if (YY_START != INITIAL) { BEGIN INITIAL; LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if (!pop_include()) yyterminate(); } YY_BREAK -case 59: +case 61: YY_RULE_SETUP -#line 626 "toke.l" +#line 654 "toke.l" ECHO; YY_BREAK -#line 2443 "lex.yy.c" +#line 2468 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -2731,7 +2756,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 607 ) + if ( yy_current_state >= 622 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2766,11 +2791,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 607 ) + if ( yy_current_state >= 622 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 606); + yy_is_jam = (yy_current_state == 621); return yy_is_jam ? 0 : yy_current_state; } @@ -3331,7 +3356,7 @@ int main() return 0; } #endif -#line 626 "toke.l" +#line 654 "toke.l" struct path_list { char *path; @@ -3343,7 +3368,7 @@ struct include_stack { char *path; struct path_list *more; /* more files in case of includedir */ int lineno; - int keepopen; + bool keepopen; }; static int @@ -3365,6 +3390,7 @@ switch_dir(struct include_stack *stack, char *dirpath) struct stat sb; struct path_list *pl, *first = NULL; struct path_list **sorted = NULL; + debug_decl(switch_dir, SUDO_DEBUG_PARSER) if (!(dir = opendir(dirpath))) { if (errno != ENOENT) { @@ -3435,7 +3461,7 @@ switch_dir(struct include_stack *stack, char *dirpath) } done: efree(dirpath); - return path; + debug_return_str(path); bad: while (first != NULL) { pl = first; @@ -3446,7 +3472,7 @@ bad: efree(sorted); efree(dirpath); efree(path); - return NULL; + debug_return_str(NULL); } #define MAX_SUDOERS_DEPTH 128 @@ -3454,12 +3480,13 @@ bad: static size_t istacksize, idepth; static struct include_stack *istack; -static int keepopen; +static bool keepopen; void init_lexer(void) { struct path_list *pl; + debug_decl(init_lexer, SUDO_DEBUG_PARSER) while (idepth) { idepth--; @@ -3477,56 +3504,89 @@ init_lexer(void) istack = NULL; istacksize = idepth = 0; sudolineno = 1; - keepopen = FALSE; - sawspace = FALSE; - continued = FALSE; + keepopen = false; + sawspace = false; + continued = false; prev_state = INITIAL; + + debug_return; } -static int -_push_include(char *path, int isdir) +static bool +_push_include(char *path, bool isdir) { struct path_list *pl; FILE *fp; + debug_decl(_push_include, SUDO_DEBUG_PARSER) /* push current state onto stack */ if (idepth >= istacksize) { if (idepth > MAX_SUDOERS_DEPTH) { yyerror(_("too many levels of includes")); - return FALSE; + debug_return_bool(false); } istacksize += SUDOERS_STACK_INCREMENT; istack = (struct include_stack *) realloc(istack, sizeof(*istack) * istacksize); if (istack == NULL) { yyerror(_("unable to allocate memory")); - return FALSE; + debug_return_bool(false); } } if (isdir) { + struct stat sb; + switch (sudo_secure_dir(path, sudoers_uid, sudoers_gid, &sb)) { + case SUDO_PATH_SECURE: + break; + case SUDO_PATH_MISSING: + debug_return_bool(false); + case SUDO_PATH_BAD_TYPE: + errno = ENOTDIR; + if (sudoers_warnings) { + warning("%s", path); + } + debug_return_bool(false); + case SUDO_PATH_WRONG_OWNER: + if (sudoers_warnings) { + warningx(_("%s is owned by uid %u, should be %u"), + path, (unsigned int) sb.st_uid, + (unsigned int) sudoers_uid); + } + debug_return_bool(false); + case SUDO_PATH_WORLD_WRITABLE: + if (sudoers_warnings) { + warningx(_("%s is world writable"), path); + } + debug_return_bool(false); + case SUDO_PATH_GROUP_WRITABLE: + if (sudoers_warnings) { + warningx(_("%s is owned by gid %u, should be %u"), + path, (unsigned int) sb.st_gid, + (unsigned int) sudoers_gid); + } + debug_return_bool(false); + default: + /* NOTREACHED */ + debug_return_bool(false); + } if (!(path = switch_dir(&istack[idepth], path))) { /* switch_dir() called yyerror() for us */ - return FALSE; + debug_return_bool(false); } - while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) { + while ((fp = open_sudoers(path, false, &keepopen)) == NULL) { /* Unable to open path in includedir, go to next one, if any. */ efree(path); if ((pl = istack[idepth].more) == NULL) - return FALSE; + debug_return_bool(false); path = pl->path; istack[idepth].more = pl->next; efree(pl); } } else { - if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) { - char *errbuf; - if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) { - yyerror(errbuf); - free(errbuf); - } else { - yyerror(_("unable to allocate memory")); - } - return FALSE; + if ((fp = open_sudoers(path, true, &keepopen)) == NULL) { + /* The error was already printed by open_sudoers() */ + yyerror(NULL); + debug_return_bool(false); } istack[idepth].more = NULL; } @@ -3540,24 +3600,25 @@ _push_include(char *path, int isdir) sudoers = path; yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE)); - return TRUE; + debug_return_bool(true); } -static int +static bool pop_include(void) { struct path_list *pl; FILE *fp; + debug_decl(pop_include, SUDO_DEBUG_PARSER) if (idepth == 0) - return FALSE; + debug_return_bool(false); if (!keepopen) fclose(YY_CURRENT_BUFFER->yy_input_file); yy_delete_buffer(YY_CURRENT_BUFFER); /* If we are in an include dir, move to the next file. */ while ((pl = istack[idepth - 1].more) != NULL) { - fp = open_sudoers(pl->path, FALSE, &keepopen); + fp = open_sudoers(pl->path, false, &keepopen); if (fp != NULL) { istack[idepth - 1].more = pl->next; efree(sudoers); @@ -3581,15 +3642,16 @@ pop_include(void) sudolineno = istack[idepth].lineno; keepopen = istack[idepth].keepopen; } - return TRUE; + debug_return_bool(true); } static char * parse_include(char *base) { - char *cp, *ep, *path; - int len = 0, subst = 0; + char *cp, *ep, *path, *pp; + int dirlen = 0, len = 0, subst = 0; size_t shost_len = 0; + debug_decl(parse_include, SUDO_DEBUG_PARSER) /* Pull out path from #include line. */ cp = base + sizeof("#include"); @@ -3607,15 +3669,26 @@ parse_include(char *base) ep++; } - /* Make a copy of path and return it. */ + /* Relative paths are located in the same dir as the sudoers file. */ + if (*cp != '/') { + char *dirend = strrchr(sudoers, '/'); + if (dirend != NULL) + dirlen = (int)(dirend - sudoers) + 1; + } + + /* Make a copy of the fully-qualified path and return it. */ len += (int)(ep - cp); - if ((path = malloc(len + 1)) == NULL) { + path = pp = malloc(len + dirlen + 1); + if (path == NULL) { yyerror(_("unable to allocate memory")); - return NULL; + debug_return_str(NULL); } + if (dirlen) { + memcpy(path, sudoers, dirlen); + pp += dirlen; + } if (subst) { /* substitute for %h */ - char *pp = path; while (cp < ep) { if (cp[0] == '%' && cp[1] == 'h') { memcpy(pp, user_shost, shost_len); @@ -3627,21 +3700,43 @@ parse_include(char *base) } *pp = '\0'; } else { - memcpy(path, cp, len); - path[len] = '\0'; + memcpy(pp, cp, len); + pp[len] = '\0'; } /* Push any excess characters (e.g. comment, newline) back to the lexer */ if (*ep != '\0') yyless((int)(ep - base)); - return path; + debug_return_str(path); } #ifdef TRACELEXER -static int +int sudoers_trace_print(const char *msg) { return fputs(msg, stderr); +} +#else +int +sudoers_trace_print(const char *msg) +{ + static bool initialized; + static struct lbuf lbuf; + + if (!initialized) { + initialized = true; + lbuf_init(&lbuf, NULL, 0, NULL, 0); + } + + lbuf_append(&lbuf, "%s", msg); + /* XXX - assumes a final newline */ + if (strchr(msg, '\n') != NULL) + { + sudo_debug_printf2(NULL, NULL, 0, SUDO_DEBUG_PARSER|SUDO_DEBUG_DEBUG, + "%s:%d %s", sudoers, sudolineno, lbuf.buf); + lbuf.len = 0; + } + return 0; } #endif /* TRACELEXER */