diff options
author | Hironobu Yamashita <h.y.acetaminophen@gmail.com> | 2020-06-15 11:23:15 +0000 |
---|---|---|
committer | Hironobu Yamashita <h.y.acetaminophen@gmail.com> | 2020-06-15 11:23:15 +0000 |
commit | 49bbb921d593c99e17222554dc1a665981b04814 (patch) | |
tree | c6d94a87333ec68f0989731b7d19afbd29226143 | |
parent | ffcc8f52e565c9d23f4d2de60b9506bd4b851227 (diff) |
opendetex-2.8.7
git-svn-id: svn://tug.org/texlive/trunk@55553 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Build/source/texk/README | 2 | ||||
-rw-r--r-- | Build/source/texk/detex/ChangeLog | 4 | ||||
-rwxr-xr-x | Build/source/texk/detex/configure | 22 | ||||
-rw-r--r-- | Build/source/texk/detex/configure.ac | 2 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/ChangeLog | 12 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/Makefile | 4 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/README | 2 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/detex.c | 2237 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/detex.h | 5 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/detex.l | 162 | ||||
-rw-r--r-- | Build/source/texk/detex/detex-src/detex.man | 6 |
11 files changed, 1337 insertions, 1121 deletions
diff --git a/Build/source/texk/README b/Build/source/texk/README index cdbd7aae506..bdf04bea643 100644 --- a/Build/source/texk/README +++ b/Build/source/texk/README @@ -34,7 +34,7 @@ chktex 1.7.6 - checked 15mar20 cjkutils 4.8.4 - checked 18apr15 http://cjk.ffii.org/cjk-4.8.4.tar.gz -detex 2.8.6 - checked 15mar20 +detex 2.8.7 - checked 15jun20 https://github.com/pkubowicz/opendetex/releases old info: http://www.cs.purdue.edu/homes/trinkle/detex/ diff --git a/Build/source/texk/detex/ChangeLog b/Build/source/texk/detex/ChangeLog index 687b88a73ff..833c4e3a0ae 100644 --- a/Build/source/texk/detex/ChangeLog +++ b/Build/source/texk/detex/ChangeLog @@ -1,3 +1,7 @@ +2020-06-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com> + + * Import opendetex-2.8.7. + 2020-03-15 Karl Berry <karl@freefriends.org> * opendetex-2.8.6 is identical to what we compiled before. diff --git a/Build/source/texk/detex/configure b/Build/source/texk/detex/configure index dca44b2412b..1d0c8a6c2b1 100755 --- a/Build/source/texk/detex/configure +++ b/Build/source/texk/detex/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for detex (TeX Live) 2.8.5. +# Generated by GNU Autoconf 2.69 for detex (TeX Live) 2.8.7. # # Report bugs to <tex-k@tug.org>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='detex (TeX Live)' PACKAGE_TARNAME='detex--tex-live-' -PACKAGE_VERSION='2.8.5' -PACKAGE_STRING='detex (TeX Live) 2.8.5' +PACKAGE_VERSION='2.8.7' +PACKAGE_STRING='detex (TeX Live) 2.8.7' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1331,7 +1331,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures detex (TeX Live) 2.8.5 to adapt to many kinds of systems. +\`configure' configures detex (TeX Live) 2.8.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1402,7 +1402,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of detex (TeX Live) 2.8.5:";; + short | recursive ) echo "Configuration of detex (TeX Live) 2.8.7:";; esac cat <<\_ACEOF @@ -1521,7 +1521,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -detex (TeX Live) configure 2.8.5 +detex (TeX Live) configure 2.8.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2177,7 +2177,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by detex (TeX Live) $as_me 2.8.5, which was +It was created by detex (TeX Live) $as_me 2.8.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -7864,7 +7864,7 @@ fi # Define the identity of the package. PACKAGE='detex--tex-live-' - VERSION='2.8.5' + VERSION='2.8.7' cat >>confdefs.h <<_ACEOF @@ -14080,7 +14080,7 @@ Usage: $0 [OPTIONS] Report bugs to <bug-libtool@gnu.org>." lt_cl_version="\ -detex (TeX Live) config.lt 2.8.5 +detex (TeX Live) config.lt 2.8.7 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -15668,7 +15668,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by detex (TeX Live) $as_me 2.8.5, which was +This file was extended by detex (TeX Live) $as_me 2.8.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15734,7 +15734,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -detex (TeX Live) config.status 2.8.5 +detex (TeX Live) config.status 2.8.7 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/detex/configure.ac b/Build/source/texk/detex/configure.ac index d6c9bf8dd58..a544d2ccde9 100644 --- a/Build/source/texk/detex/configure.ac +++ b/Build/source/texk/detex/configure.ac @@ -6,7 +6,7 @@ dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -m4_define([detex_version], [2.8.5])[]dnl using unmodified detex source tree +m4_define([detex_version], [2.8.7])[]dnl using unmodified detex source tree AC_INIT([detex (TeX Live)], detex_version, [tex-k@tug.org]) AC_PREREQ([2.65]) AC_CONFIG_SRCDIR([detex-src/detex.l]) diff --git a/Build/source/texk/detex/detex-src/ChangeLog b/Build/source/texk/detex/detex-src/ChangeLog index 043c59be7ca..a9d5a24fef6 100644 --- a/Build/source/texk/detex/detex-src/ChangeLog +++ b/Build/source/texk/detex/detex-src/ChangeLog @@ -190,3 +190,15 @@ Started treating newlines in inline math as spaces (#45). Thanks to sgerwk. Fixed man page on macOS (#47). Thanks to FX Coudert. Added -v option for showing version. + +(Version 2.8.6) -- January, 2020 + +Fixed buffer overflow (CVE-2019-19601 #60). Thanks to Akira Kakuto, Norbert Preining and TeX Live team. + +(Version 2.8.7) -- June, 2020 + +Reduced size of .tar.bz2 package by excluding object file added by mistake. + +Handle forcing placement with ! (#62). Thanks to schrc3b6. + +Added option to print source information with -1 (#64). Thanks to Victor Cacciari Miraldo. diff --git a/Build/source/texk/detex/detex-src/Makefile b/Build/source/texk/detex/detex-src/Makefile index 7f618f821b5..c00420acfa5 100644 --- a/Build/source/texk/detex/detex-src/Makefile +++ b/Build/source/texk/detex/detex-src/Makefile @@ -105,7 +105,7 @@ SRC = detex.l # D_OBJ = detex.o -VERSION = 2.8.5 +VERSION = 2.8.7 all: ${PROGS} @@ -151,7 +151,7 @@ run: delatex ./delatex in > out.txt package: clean detex.c - tar cjfv opendetex-${VERSION}.tar.bz2 ChangeLog COPYRIGHT detex.* INSTALL Makefile README + tar cjfv opendetex-${VERSION}.tar.bz2 --exclude='*.o' ChangeLog COPYRIGHT detex.* INSTALL Makefile README # Dependencies # diff --git a/Build/source/texk/detex/detex-src/README b/Build/source/texk/detex/detex-src/README index f934d1f2cff..49814c531ce 100644 --- a/Build/source/texk/detex/detex-src/README +++ b/Build/source/texk/detex/detex-src/README @@ -1,4 +1,4 @@ -OpenDetex - Version 2.8.5 +OpenDetex - Version 2.8.7 OpenDetex is a program to remove TeX constructs from a text file. It recognizes the \input command. diff --git a/Build/source/texk/detex/detex-src/detex.c b/Build/source/texk/detex/detex-src/detex.c index 86ef44e6ffc..61e35f07411 100644 --- a/Build/source/texk/detex/detex-src/detex.c +++ b/Build/source/texk/detex/detex-src/detex.c @@ -36,7 +36,7 @@ */ /* - * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex] ] + * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [-1] [file[.tex] ] * * This program is used to remove TeX or LaTeX constructs from a text * file. @@ -609,14 +609,14 @@ static const YY_CHAR yy_ec[256] = 1, 4, 5, 1, 1, 6, 7, 1, 8, 9, 10, 11, 12, 13, 14, 15, 1, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 1, 1, 18, - 19, 20, 5, 21, 22, 23, 23, 23, 24, 23, - 23, 23, 23, 23, 23, 25, 23, 23, 26, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 27, 28, 29, 1, 1, 30, 31, 32, 33, 34, - - 35, 36, 37, 38, 39, 25, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 1, 1, 1, 1, + 19, 20, 21, 22, 23, 24, 24, 24, 25, 24, + 24, 24, 24, 24, 24, 26, 24, 24, 27, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 28, 29, 30, 1, 1, 31, 32, 33, 34, 35, + + 36, 37, 38, 39, 40, 26, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -633,174 +633,174 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[60] = +static const YY_CHAR yy_meta[61] = { 0, - 1, 2, 3, 2, 1, 1, 1, 4, 1, 1, - 1, 1, 5, 6, 1, 6, 6, 1, 6, 1, - 7, 8, 8, 8, 8, 8, 1, 9, 10, 6, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 11, 1, 12, 1 + 1, 2, 3, 2, 4, 1, 1, 5, 1, 1, + 1, 1, 6, 7, 1, 7, 7, 1, 7, 1, + 1, 8, 9, 9, 9, 9, 9, 1, 10, 11, + 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 12, 1, 13, 1 } ; static const flex_int16_t yy_base[1415] = { 0, - 0, 0, 0, 1, 2, 6, 14, 29, 11, 33, - 40, 45, 93, 0, 152, 0, 211, 0, 268, 271, - 319, 0, 16, 25, 376, 379, 381, 384, 387, 398, - 20, 378, 3305, 3304, 390, 403, 26, 37, 46, 49, - 3316, 3315, 23, 24, 3330, 3335, 3335, 3335, 3335, 3335, - 3335, 3323, 3335, 236, 3278, 0, 3335, 3324, 3335, 0, - 3335, 3323, 3335, 3335, 3335, 3335, 266, 3275, 3335, 3322, - 3335, 3295, 3292, 3315, 0, 3312, 3306, 3304, 22, 3309, - 461, 3286, 396, 3335, 3335, 3335, 3335, 519, 3335, 0, - 287, 0, 3259, 3335, 522, 525, 0, 528, 3335, 3335, - - 3335, 504, 3264, 3335, 0, 3335, 3335, 3310, 3277, 3335, - 3335, 3335, 410, 3261, 0, 3335, 3307, 0, 3335, 3306, - 3335, 3335, 3335, 3305, 0, 3335, 3335, 3335, 3335, 3335, - 3335, 3335, 0, 0, 3272, 3335, 0, 3335, 278, 3335, - 3271, 3262, 3269, 3272, 3267, 36, 3269, 0, 3297, 0, - 3296, 3335, 3263, 3254, 3261, 3264, 3259, 244, 3261, 3290, - 3258, 3335, 3335, 0, 3335, 3335, 3275, 45, 3268, 3243, - 3335, 3335, 3335, 0, 68, 532, 535, 3335, 265, 384, - 6, 274, 258, 3207, 267, 250, 546, 3214, 552, 390, - 559, 3203, 391, 564, 393, 3175, 36, 3335, 550, 416, - - 556, 572, 3150, 0, 0, 592, 0, 582, 605, 0, - 616, 3166, 3157, 3164, 3153, 3335, 3150, 3134, 3141, 3142, - 3137, 353, 3139, 0, 3157, 3107, 3335, 3114, 3099, 3105, - 3108, 2897, 405, 2899, 0, 2927, 0, 2926, 3335, 0, - 0, 2885, 0, 621, 627, 2881, 3335, 2880, 2880, 2878, - 2881, 265, 2874, 2875, 3335, 2874, 2874, 2872, 2874, 384, - 2867, 2875, 3335, 2905, 0, 630, 633, 3335, 2885, 2882, - 2876, 2872, 2876, 2876, 2857, 2864, 2868, 2869, 2867, 2856, - 514, 369, 2854, 535, 2851, 2865, 2853, 2853, 2842, 413, - 2854, 603, 2839, 2835, 2841, 2853, 408, 2852, 2847, 2849, - - 2827, 2836, 2839, 2826, 542, 599, 586, 2823, 2834, 2827, - 2837, 2821, 2821, 3335, 2820, 2820, 2818, 2821, 595, 2814, - 2827, 2813, 3335, 2812, 2812, 2810, 2813, 610, 2806, 2819, - 2804, 2803, 2802, 2814, 2800, 2799, 2797, 2809, 2794, 646, - 3335, 2813, 3335, 624, 2802, 503, 2795, 2804, 2794, 2798, - 2786, 0, 2790, 2788, 2779, 2778, 2787, 2794, 2789, 2782, - 2783, 2767, 2773, 2780, 2779, 2778, 628, 2777, 640, 2763, - 2769, 2774, 2769, 2776, 2771, 2752, 2763, 2753, 629, 2753, - 2755, 632, 2750, 2750, 621, 2765, 2757, 2764, 665, 2736, - 2743, 2753, 2750, 2758, 2740, 2739, 2738, 2750, 3335, 2736, - - 2735, 2734, 2746, 681, 2731, 2744, 2739, 2723, 2722, 2735, - 2734, 2719, 2732, 2722, 2717, 2716, 2711, 2715, 2708, 2717, - 2706, 2705, 0, 2706, 2709, 2709, 2706, 2711, 2700, 2704, - 2700, 2711, 2696, 2692, 2688, 2691, 736, 2698, 2706, 2690, - 2692, 2692, 2699, 2702, 646, 2694, 2686, 2718, 2693, 2692, - 2674, 2670, 2675, 2691, 0, 2687, 2678, 2671, 2679, 2669, - 2674, 2678, 2671, 2678, 388, 2671, 2658, 2658, 2670, 0, - 2655, 2666, 3335, 2651, 2652, 2661, 2664, 2645, 2658, 2657, - 2641, 2640, 2653, 2652, 2637, 693, 696, 2641, 2635, 2634, - 2647, 2637, 2627, 2625, 2638, 3335, 2629, 2628, 668, 2625, - - 703, 2634, 2624, 2609, 2627, 2629, 2625, 2624, 2611, 2622, - 2611, 2611, 763, 2619, 2605, 2618, 0, 0, 790, 696, - 670, 817, 0, 0, 2604, 2614, 666, 2597, 2604, 2595, - 2601, 2609, 2594, 2595, 2588, 3335, 2608, 2602, 2600, 2597, - 2596, 2586, 2597, 2584, 2577, 2579, 680, 0, 2577, 2579, - 2572, 2585, 2585, 2572, 2584, 2561, 2580, 864, 2577, 2576, - 2579, 718, 2559, 2563, 2557, 2556, 2569, 2559, 2553, 2552, - 2565, 721, 2564, 2559, 2546, 2556, 2544, 2540, 2539, 2543, - 2551, 2550, 725, 739, 2538, 2542, 2537, 2530, 2532, 2542, - 2531, 2541, 2541, 2536, 2521, 891, 718, 686, 918, 0, - - 752, 2534, 2532, 729, 714, 741, 2521, 684, 2531, 2522, - 2520, 2520, 610, 2516, 758, 2525, 2523, 2516, 2510, 2512, - 2513, 2514, 2507, 2511, 2492, 2514, 0, 2496, 2490, 2493, - 2504, 2502, 2480, 2487, 2487, 2481, 2486, 2487, 2486, 2481, - 2468, 2482, 2485, 2466, 2466, 2471, 2474, 0, 2467, 965, - 753, 766, 992, 0, 784, 795, 2469, 811, 808, 2466, - 2469, 2457, 2467, 2455, 2452, 2452, 2447, 2457, 2455, 2440, - 2446, 2455, 820, 2442, 0, 2438, 2442, 2465, 2419, 2422, - 2416, 2419, 2428, 2427, 2424, 810, 768, 773, 2412, 767, - 2421, 2408, 2406, 2406, 641, 2402, 840, 827, 834, 1039, - - 2394, 759, 800, 843, 868, 2411, 0, 2407, 2388, 2383, - 2380, 2396, 2383, 0, 2384, 2379, 2365, 2385, 2373, 2370, - 2368, 0, 2358, 2388, 2349, 2343, 2345, 2349, 2353, 2335, - 0, 2339, 2335, 2338, 2317, 2325, 2325, 858, 841, 844, - 2309, 806, 2319, 2299, 2304, 2296, 851, 2288, 884, 908, - 914, 1066, 928, 911, 2289, 921, 0, 2281, 2275, 2274, - 2278, 2266, 2270, 2261, 2265, 2266, 2266, 2267, 0, 3335, - 0, 2247, 856, 2234, 0, 0, 565, 847, 894, 942, - 971, 987, 0, 925, 885, 1093, 0, 2236, 2238, 2234, - 2226, 2221, 2228, 2215, 2220, 2207, 2147, 2158, 2153, 0, - - 2146, 2146, 2134, 2131, 0, 3335, 2148, 2140, 2128, 2139, - 2126, 2125, 36, 241, 282, 333, 416, 485, 911, 1002, - 1015, 1019, 1046, 0, 939, 942, 1140, 0, 1071, 0, - 1082, 511, 1100, 529, 539, 567, 577, 596, 996, 614, - 647, 671, 678, 687, 0, 0, 3335, 732, 733, 1103, - 1109, 986, 945, 955, 756, 943, 794, 799, 812, 835, - 916, 846, 1118, 854, 878, 896, 916, 913, 931, 940, - 0, 935, 0, 0, 981, 944, 980, 1001, 0, 967, - 0, 977, 982, 992, 998, 1004, 993, 989, 0, 990, - 1010, 1007, 1018, 1162, 1166, 1084, 1046, 1049, 1026, 1081, - - 1038, 1023, 1034, 1037, 1082, 1044, 1187, 1061, 1190, 3335, - 3335, 1193, 3335, 1043, 1045, 1067, 1082, 1080, 1196, 1251, - 1077, 1086, 1082, 1099, 1079, 1105, 1093, 1087, 1199, 1216, - 1133, 1231, 1235, 1267, 1139, 3335, 0, 1094, 1093, 1136, - 0, 0, 1111, 0, 3335, 0, 1118, 3335, 0, 0, - 1113, 0, 1120, 1126, 1166, 1142, 1129, 0, 1141, 1136, - 1279, 1288, 1193, 1292, 1296, 1300, 1173, 3335, 3335, 1148, - 1165, 1163, 1168, 0, 0, 1206, 1208, 1357, 0, 1182, - 1172, 0, 1179, 1187, 1174, 1181, 1188, 1353, 1404, 1201, - 1201, 1204, 1207, 1212, 0, 1227, 1224, 1226, 0, 0, - - 1224, 3335, 1228, 1233, 1225, 1230, 1367, 1448, 1245, 1244, - 1258, 1266, 1244, 1248, 1241, 0, 1298, 1291, 1294, 1272, - 1285, 1285, 1267, 1279, 1281, 1295, 1281, 1380, 1288, 0, - 1284, 1300, 1292, 1492, 1519, 1384, 1331, 1335, 1546, 0, - 1300, 1299, 1314, 1327, 1323, 3335, 1320, 0, 1354, 1324, - 1333, 1328, 1593, 1620, 1432, 1362, 1364, 1647, 0, 1342, - 1343, 1361, 1355, 1439, 1354, 1369, 1397, 1468, 1482, 1499, - 1389, 3335, 1361, 0, 0, 1694, 0, 1513, 1438, 1407, - 1721, 0, 1441, 1423, 1428, 1372, 1426, 1393, 1389, 1390, - 1395, 1433, 1402, 1476, 1398, 1413, 1444, 1768, 1434, 1420, - - 3335, 1462, 0, 1806, 0, 1526, 1472, 1482, 1833, 0, - 1536, 1495, 1526, 1430, 1458, 1447, 1452, 1471, 1477, 1521, - 1480, 1562, 1482, 1489, 1521, 1880, 1570, 3335, 1504, 0, - 1506, 1505, 1543, 1517, 1573, 0, 1583, 1567, 1573, 1514, - 1559, 1553, 1551, 1559, 1561, 1578, 1561, 1610, 1599, 1615, - 1636, 1651, 1572, 1918, 1945, 1642, 1626, 1609, 1972, 0, - 1581, 0, 3335, 0, 1643, 1649, 1651, 1585, 1614, 1599, - 1599, 1618, 1627, 1639, 1625, 1671, 1660, 1699, 1710, 1725, - 1623, 2019, 2046, 1716, 1700, 1688, 2073, 0, 0, 1640, - 1635, 1682, 1687, 1740, 1688, 1714, 1743, 1746, 1773, 2120, - - 0, 1784, 1774, 1717, 2147, 0, 1777, 1723, 1762, 1649, - 1726, 1665, 1665, 1708, 1715, 1732, 1717, 1797, 2195, 1786, - 1802, 1809, 1828, 2253, 0, 1843, 1836, 1808, 2280, 0, - 1841, 1811, 1824, 1728, 1821, 1761, 1744, 1771, 1775, 1810, - 1774, 1858, 1783, 1790, 1825, 2327, 1841, 1887, 0, 1887, - 1860, 1863, 1824, 1865, 1840, 1844, 1844, 1851, 1866, 1860, - 1907, 1896, 1921, 1924, 1938, 0, 0, 1941, 0, 1935, - 1901, 1922, 1861, 1922, 1880, 1878, 1893, 1911, 1921, 1911, - 1982, 1951, 1995, 1999, 2025, 1910, 2365, 2392, 2040, 1977, - 1955, 2419, 0, 2052, 1992, 2022, 2067, 2099, 2124, 1996, - - 2089, 2107, 2127, 2466, 0, 2258, 2080, 1999, 2493, 0, - 2123, 2002, 2022, 1924, 1948, 1944, 1942, 1957, 1968, 1997, - 1987, 2269, 2540, 2276, 2581, 2290, 0, 2128, 2035, 2049, - 2000, 2026, 2038, 2020, 2035, 2037, 2071, 2036, 2287, 2070, - 2304, 2333, 2347, 2622, 2355, 2663, 2368, 2097, 2361, 2381, - 2398, 2704, 2761, 2429, 2818, 2442, 2471, 2875, 2272, 3335, - 2933, 2945, 2957, 2969, 2981, 2993, 3005, 3017, 3029, 3041, - 3053, 3065, 3077, 3089, 3101, 3113, 3125, 3137, 3147, 3157, - 3166, 3174, 3183, 3185, 2076, 2091, 3193, 3203, 3213, 3225, - 3237, 3244, 3246, 3254, 2108, 2109, 2111, 2125, 2138, 2144, - - 2145, 3266, 2146, 2147, 2148, 2150, 2151, 2152, 2153, 2159, - 2160, 3278, 2163, 2165 + 0, 0, 0, 1, 2, 6, 14, 26, 11, 30, + 43, 47, 96, 0, 156, 0, 216, 0, 274, 277, + 326, 0, 7, 8, 384, 387, 389, 392, 395, 406, + 20, 386, 3340, 3339, 398, 409, 39, 44, 16, 35, + 3352, 3351, 21, 25, 3366, 3371, 3371, 3371, 3371, 3371, + 3371, 3359, 3371, 241, 3313, 0, 3371, 3360, 3371, 0, + 3371, 3359, 3371, 3371, 3371, 3371, 272, 3310, 3371, 3358, + 3371, 3330, 3327, 3351, 0, 3348, 3342, 3340, 24, 3345, + 468, 3321, 403, 3371, 3371, 3371, 3371, 527, 3371, 0, + 294, 0, 3294, 3371, 530, 533, 0, 536, 3371, 3371, + + 3371, 511, 3299, 3371, 0, 3371, 3371, 3346, 3312, 3371, + 3371, 3371, 418, 3296, 0, 3371, 3343, 0, 3371, 3342, + 3371, 3371, 3371, 3341, 0, 3371, 3371, 3371, 3371, 3371, + 3371, 3371, 0, 0, 3307, 3371, 0, 3371, 91, 3371, + 3306, 3297, 3304, 3307, 3302, 3, 3304, 0, 3333, 0, + 3332, 3371, 3298, 3289, 3296, 3299, 3294, 35, 3296, 3326, + 3293, 3371, 3371, 0, 3371, 3371, 3312, 43, 3317, 3316, + 3371, 3371, 3371, 0, 65, 540, 543, 3371, 271, 269, + 16, 279, 253, 3279, 266, 372, 554, 3286, 560, 255, + 567, 3289, 393, 572, 281, 3271, 273, 3371, 407, 414, + + 425, 563, 3262, 0, 0, 558, 0, 572, 591, 0, + 607, 3278, 3277, 3284, 3279, 3371, 3278, 3269, 3276, 3279, + 3274, 360, 3276, 0, 3305, 3263, 3371, 3270, 3261, 3268, + 3271, 3266, 399, 3268, 0, 3297, 0, 3296, 3371, 0, + 0, 3254, 0, 578, 613, 3250, 3371, 3249, 3249, 3247, + 3250, 401, 3243, 3244, 3371, 3243, 3243, 3241, 3244, 515, + 3237, 3245, 3371, 3276, 0, 628, 633, 3371, 3255, 3252, + 3246, 3242, 3246, 3246, 3227, 3234, 3238, 3240, 3238, 3227, + 602, 418, 3225, 605, 3222, 3236, 3224, 3224, 3213, 43, + 3225, 611, 3214, 3211, 3217, 3229, 551, 3228, 3223, 3225, + + 3203, 3216, 3219, 3206, 537, 608, 580, 3203, 3214, 3207, + 3217, 3201, 3201, 3371, 3200, 3200, 3198, 3201, 612, 3194, + 3207, 3194, 3371, 3193, 3193, 3191, 3194, 616, 3187, 3200, + 3185, 3184, 3183, 3195, 3181, 3180, 3179, 3191, 3176, 661, + 3371, 3195, 3371, 619, 3184, 510, 3177, 3186, 3176, 3180, + 3168, 0, 3176, 3175, 3166, 3165, 3174, 3181, 3176, 3169, + 3174, 3158, 3164, 3171, 3170, 3169, 632, 3168, 640, 3154, + 3160, 3165, 3160, 3167, 3162, 3143, 3154, 3145, 633, 3145, + 3147, 633, 3142, 3142, 643, 3157, 3149, 3156, 661, 3128, + 3134, 3131, 3117, 3125, 3108, 3107, 3104, 3116, 3371, 3102, + + 3101, 3083, 3095, 682, 3080, 3078, 3066, 3033, 3032, 3036, + 3035, 3014, 3025, 3007, 3006, 3003, 2998, 3002, 2984, 2983, + 2972, 2965, 0, 2964, 2967, 2744, 2741, 2746, 2735, 2739, + 2736, 2747, 2732, 2728, 2724, 2727, 694, 2734, 2742, 2726, + 2728, 2727, 2734, 2737, 646, 2730, 2722, 2755, 2729, 2728, + 2710, 2706, 2711, 2727, 0, 2723, 2717, 2711, 2719, 2709, + 2714, 2718, 2711, 2718, 576, 2715, 2702, 2702, 2710, 0, + 2694, 2705, 3371, 2690, 2691, 2700, 2703, 2684, 2693, 2692, + 2677, 2676, 2689, 2688, 2673, 697, 700, 2677, 2671, 2670, + 2683, 2673, 2667, 2666, 2679, 3371, 2669, 2668, 671, 2665, + + 712, 2674, 2664, 2653, 2671, 2673, 2669, 2668, 2655, 2666, + 2655, 2654, 715, 2662, 2648, 2661, 0, 0, 731, 709, + 705, 768, 0, 0, 2647, 2658, 685, 2641, 2648, 2639, + 2645, 2653, 2634, 2634, 2627, 3371, 2647, 2645, 2644, 2641, + 2640, 2626, 2637, 2624, 2617, 2623, 702, 0, 2621, 2623, + 2616, 2629, 2629, 2616, 2628, 2605, 2624, 747, 2621, 2619, + 2622, 754, 2603, 2607, 2601, 2600, 2613, 2603, 2597, 2596, + 2609, 763, 2608, 2607, 2594, 2604, 2592, 2588, 2587, 2591, + 2599, 2602, 771, 775, 2590, 2594, 2589, 2578, 2579, 2589, + 2578, 2588, 2588, 2583, 2568, 778, 771, 780, 827, 0, + + 821, 2577, 2576, 783, 789, 802, 2565, 401, 2575, 2566, + 2564, 2564, 557, 2560, 818, 2569, 2567, 2560, 2558, 2561, + 2562, 2563, 2555, 2559, 2540, 2562, 0, 2548, 2542, 2546, + 2557, 2556, 2534, 2542, 2542, 2541, 2545, 2546, 2545, 2540, + 2528, 2542, 2545, 2526, 2526, 2532, 2535, 0, 2527, 835, + 818, 810, 877, 0, 880, 855, 2528, 883, 893, 2525, + 2528, 2516, 2526, 2514, 2512, 2508, 2506, 2516, 2514, 2499, + 2505, 2514, 896, 2502, 0, 2498, 2509, 2532, 2487, 2495, + 2489, 2492, 2501, 2501, 2498, 838, 824, 829, 2487, 618, + 2497, 2488, 2482, 2481, 822, 2477, 886, 899, 902, 931, + + 2472, 771, 849, 905, 936, 2488, 0, 2487, 2468, 2465, + 2461, 2477, 2463, 0, 2465, 2460, 2449, 2469, 2458, 2446, + 2445, 0, 2435, 2470, 2430, 2428, 2431, 2431, 2435, 2424, + 0, 2424, 2421, 2424, 2414, 2413, 2415, 934, 852, 858, + 2396, 881, 2391, 2366, 2375, 2375, 891, 2369, 950, 959, + 962, 965, 968, 971, 2372, 981, 0, 2364, 2353, 2350, + 2363, 2343, 2350, 2340, 2345, 2345, 2346, 2346, 0, 3371, + 0, 2335, 584, 2322, 0, 0, 820, 902, 985, 998, + 1002, 1008, 0, 975, 911, 1053, 0, 2320, 2315, 2309, + 2311, 2303, 2310, 2300, 2305, 2294, 2290, 2300, 2296, 0, + + 2288, 2287, 2275, 2274, 0, 3371, 2290, 2286, 2273, 2278, + 2264, 2263, 238, 243, 273, 340, 383, 415, 941, 1018, + 1030, 1034, 1063, 0, 998, 981, 1108, 0, 1021, 0, + 1056, 500, 1079, 606, 638, 659, 643, 662, 1088, 687, + 694, 697, 711, 718, 0, 0, 3371, 749, 749, 1115, + 1124, 1105, 991, 1001, 766, 952, 801, 828, 872, 879, + 996, 884, 1128, 890, 912, 913, 948, 943, 955, 982, + 0, 975, 0, 0, 1024, 985, 1008, 1032, 0, 999, + 0, 1013, 1014, 1023, 1027, 1039, 1028, 1025, 0, 1028, + 1043, 1044, 1043, 1133, 1160, 1165, 1078, 1081, 1054, 1070, + + 1066, 1049, 1063, 1065, 1099, 1068, 1181, 1086, 1186, 3371, + 3371, 1189, 3371, 1079, 1085, 1089, 1104, 1107, 1192, 1205, + 1104, 1111, 1104, 1121, 1100, 1126, 1116, 1114, 1195, 1210, + 1152, 1226, 1233, 1240, 1160, 3371, 0, 1120, 1117, 1157, + 0, 0, 1135, 0, 3371, 0, 1142, 3371, 0, 0, + 1151, 0, 1156, 1159, 1199, 1175, 1161, 0, 1174, 1172, + 1258, 1248, 1209, 1262, 1271, 1285, 1191, 3371, 3371, 1192, + 1197, 1196, 1206, 0, 0, 1295, 1241, 1343, 0, 1219, + 1208, 0, 1218, 1226, 1213, 1220, 1228, 1320, 1391, 1238, + 1239, 1256, 1242, 1245, 0, 1260, 1259, 1263, 0, 0, + + 1263, 3371, 1258, 1264, 1256, 1264, 1338, 1436, 1275, 1274, + 1289, 1286, 1275, 1279, 1272, 0, 1319, 1322, 1332, 1281, + 1309, 1297, 1296, 1307, 1310, 1320, 1309, 1369, 1312, 0, + 1308, 1325, 1313, 1407, 1429, 1414, 1381, 1348, 1481, 0, + 1323, 1317, 1334, 1342, 1335, 3371, 1336, 0, 1377, 1346, + 1363, 1351, 1452, 1459, 1488, 1410, 1385, 1533, 0, 1360, + 1362, 1419, 1437, 1497, 1370, 1393, 1477, 1500, 1537, 1549, + 1407, 3371, 1380, 0, 0, 1595, 0, 1558, 1490, 1492, + 1623, 0, 1495, 1502, 1506, 1389, 1444, 1407, 1429, 1436, + 1446, 1479, 1449, 1611, 1469, 1476, 1493, 1671, 1492, 1478, + + 3371, 1521, 0, 1616, 0, 1619, 1548, 1528, 1710, 0, + 1555, 1538, 1541, 1492, 1541, 1512, 1520, 1533, 1535, 1552, + 1535, 1633, 1534, 1538, 1551, 1758, 1639, 3371, 1552, 0, + 1550, 1551, 1604, 1554, 1647, 0, 1662, 1600, 1630, 1557, + 1618, 1571, 1586, 1590, 1610, 1621, 1614, 1678, 1651, 1687, + 1690, 1699, 1615, 1693, 1764, 1745, 1700, 1702, 1803, 0, + 1621, 0, 3371, 0, 1719, 1704, 1707, 1638, 1694, 1664, + 1650, 1685, 1688, 1704, 1686, 1761, 1724, 1780, 1792, 1807, + 1702, 1812, 1851, 1799, 1815, 1741, 1879, 0, 0, 1708, + 1704, 1746, 1750, 1857, 1766, 1796, 1867, 1870, 1874, 1927, + + 0, 1889, 1869, 1805, 1955, 0, 1872, 1817, 1840, 1725, + 1774, 1742, 1742, 1745, 1749, 1814, 1754, 1895, 2004, 1884, + 1900, 1903, 1906, 1949, 0, 2063, 1930, 1904, 2121, 0, + 1952, 1907, 1910, 1779, 1939, 1805, 1790, 1807, 1819, 1926, + 1829, 2067, 1828, 1841, 1934, 2169, 1908, 2070, 0, 1964, + 1917, 1920, 1894, 1941, 1920, 1919, 1933, 1942, 1952, 1941, + 2073, 1976, 2076, 2084, 2088, 0, 0, 2091, 0, 2066, + 1980, 1983, 1948, 2055, 1968, 2007, 2024, 2041, 2051, 2050, + 2100, 2083, 2137, 2146, 2172, 2048, 2204, 2220, 2197, 2099, + 2091, 2255, 0, 2224, 2095, 2188, 2191, 2249, 2260, 2101, + + 2272, 2275, 2278, 2303, 0, 2281, 2129, 2113, 2339, 0, + 2136, 2146, 2149, 2059, 2126, 2085, 2079, 2114, 2125, 2153, + 2131, 2308, 2387, 2355, 2429, 2362, 0, 2229, 2162, 2194, + 2136, 2154, 2167, 2150, 2169, 2171, 2191, 2171, 2358, 2213, + 2366, 2391, 2408, 2471, 2420, 2513, 2433, 2222, 2425, 2436, + 2450, 2555, 2613, 2453, 2671, 2462, 2495, 2729, 2346, 3371, + 2788, 2801, 2814, 2827, 2840, 2853, 2866, 2879, 2892, 2905, + 2918, 2931, 2944, 2957, 2970, 2983, 2996, 3009, 3020, 3031, + 3040, 3049, 3058, 3060, 2233, 2239, 3069, 3080, 3091, 3104, + 3117, 3124, 3126, 3135, 2245, 2246, 2251, 3145, 2252, 2256, + + 3151, 3160, 2257, 2259, 2260, 2277, 2278, 2285, 2287, 2288, + 2290, 3173, 2291, 2293 } ; static const flex_int16_t yy_def[1415] = @@ -963,760 +963,768 @@ static const flex_int16_t yy_def[1415] = 1360, 1360, 1360, 1360 } ; -static const flex_int16_t yy_nxt[3395] = +static const flex_int16_t yy_nxt[3432] = { 0, - 1360, 1360, 48, 48, 51, 1360, 1360, 52, 51, 1360, - 1360, 52, 61, 62, 61, 57, 58, 57, 108, 53, - 53, 53, 46, 53, 53, 53, 57, 108, 46, 54, - 57, 58, 57, 54, 61, 62, 61, 168, 168, 46, - 272, 57, 64, 109, 273, 65, 122, 64, 134, 55, - 65, 134, 109, 55, 132, 49, 49, 66, 66, 66, - 168, 168, 66, 66, 66, 132, 61, 67, 61, 57, - 304, 59, 67, 135, 251, 123, 135, 124, 138, 138, - 139, 139, 886, 305, 57, 252, 59, 68, 61, 266, - 61, 266, 68, 69, 70, 71, 72, 73, 74, 75, - - 76, 69, 69, 69, 69, 77, 78, 69, 79, 79, - 69, 69, 69, 69, 80, 80, 80, 80, 80, 69, - 81, 69, 82, 80, 80, 80, 80, 80, 80, 80, + 1360, 1360, 48, 48, 51, 1360, 1360, 52, 51, 108, + 108, 52, 61, 62, 61, 57, 58, 57, 134, 53, + 53, 53, 46, 53, 53, 53, 57, 57, 58, 57, + 54, 61, 62, 61, 54, 109, 109, 134, 57, 168, + 168, 46, 251, 1360, 135, 64, 46, 122, 65, 64, + 55, 272, 65, 252, 55, 273, 49, 49, 168, 168, + 66, 66, 66, 135, 66, 66, 66, 61, 132, 61, + 57, 67, 59, 132, 259, 67, 123, 138, 124, 139, + 368, 138, 57, 139, 59, 260, 61, 266, 61, 266, + 369, 68, 244, 245, 244, 68, 69, 70, 71, 72, + + 73, 74, 75, 76, 69, 69, 69, 69, 77, 78, + 69, 79, 79, 69, 69, 69, 73, 69, 80, 80, + 80, 80, 80, 69, 81, 69, 82, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 83, 84, - 85, 86, 87, 88, 89, 88, 87, 87, 87, 90, - 87, 87, 87, 87, 87, 90, 87, 91, 91, 87, - 90, 87, 91, 91, 91, 91, 91, 91, 87, 92, - 87, 90, 91, 91, 91, 91, 91, 91, 91, 91, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 83, 84, 85, 86, 87, 88, 89, 88, + 87, 87, 87, 90, 87, 87, 87, 87, 87, 90, + 87, 91, 91, 87, 90, 87, 87, 91, 91, 91, + 91, 91, 91, 87, 92, 87, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 93, 87, 87, - 87, 94, 95, 96, 95, 94, 94, 94, 94, 94, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 93, 87, 87, 87, 94, 95, 96, 95, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 97, 97, 97, 97, 97, 94, 94, 94, - 94, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 94, 94, 94, 94, 94, 94, 94, 94, 97, 97, + 97, 97, 97, 94, 94, 94, 94, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 98, 94, 94, 94, - 100, 152, 141, 100, 142, 269, 143, 144, 145, 244, - 245, 244, 259, 146, 887, 101, 101, 101, 101, 101, - 101, 270, 277, 260, 205, 102, 332, 282, 102, 280, - - 205, 278, 153, 283, 154, 205, 155, 156, 157, 333, - 281, 274, 275, 158, 888, 103, 205, 276, 103, 104, - 104, 46, 104, 104, 104, 104, 104, 104, 104, 104, + 97, 97, 98, 94, 94, 94, 100, 152, 141, 100, + 142, 269, 143, 144, 145, 886, 288, 887, 277, 146, + 289, 101, 101, 101, 101, 101, 101, 278, 270, 280, + + 266, 205, 102, 271, 266, 102, 888, 205, 304, 153, + 281, 154, 205, 155, 156, 157, 301, 274, 275, 302, + 158, 305, 103, 276, 205, 103, 104, 104, 46, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 105, 105, 105, 105, 105, 104, 104, 104, 104, 105, + 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, + 105, 105, 105, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 104, 104, 106, 104, 111, 889, - 46, 111, 116, 117, 116, 116, 117, 116, 119, 120, - 119, 318, 46, 112, 112, 112, 112, 112, 112, 119, - - 120, 119, 319, 113, 122, 46, 113, 199, 357, 199, - 200, 201, 201, 358, 266, 336, 128, 271, 266, 227, - 288, 291, 552, 114, 289, 292, 114, 301, 337, 128, - 302, 306, 306, 123, 293, 124, 116, 553, 116, 116, - 378, 116, 119, 327, 119, 129, 228, 130, 229, 368, - 230, 231, 232, 119, 328, 119, 379, 233, 129, 369, - 130, 171, 171, 890, 172, 171, 171, 171, 171, 173, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 174, 175, 174, 174, 176, 177, 178, 179, 171, - 171, 180, 181, 182, 183, 184, 185, 174, 186, 187, - - 188, 189, 174, 190, 191, 192, 174, 193, 194, 195, - 196, 197, 174, 174, 174, 174, 171, 171, 171, 171, - 202, 891, 202, 208, 208, 208, 208, 208, 208, 211, - 211, 211, 216, 267, 268, 267, 267, 268, 267, 911, - 217, 419, 218, 420, 219, 220, 221, 267, 268, 267, - 421, 222, 354, 267, 268, 267, 355, 356, 266, 914, - 267, 268, 267, 212, 200, 201, 201, 360, 361, 213, - 307, 201, 201, 202, 203, 202, 214, 209, 215, 362, - 209, 387, 286, 208, 208, 208, 388, 915, 284, 268, - 287, 846, 268, 266, 294, 295, 296, 916, 297, 205, - - 308, 389, 389, 268, 298, 205, 211, 211, 211, 268, - 205, 266, 299, 300, 306, 306, 268, 211, 211, 211, - 847, 205, 244, 245, 244, 917, 396, 203, 244, 245, - 244, 340, 341, 340, 267, 268, 267, 209, 371, 397, - 212, 401, 704, 308, 918, 372, 213, 340, 341, 340, - 373, 212, 468, 214, 402, 215, 414, 213, 704, 415, - 441, 458, 442, 921, 214, 469, 215, 463, 443, 459, - 446, 447, 416, 779, 417, 444, 464, 460, 531, 465, - 389, 389, 486, 486, 486, 604, 604, 341, 448, 779, - 268, 922, 532, 533, 486, 486, 486, 572, 572, 572, - - 580, 686, 686, 341, 583, 583, 583, 618, 581, 308, - 521, 522, 522, 638, 923, 619, 704, 639, 924, 658, - 658, 658, 572, 572, 572, 704, 583, 583, 583, 1360, - 1360, 640, 598, 599, 599, 925, 487, 519, 519, 519, - 673, 673, 673, 1360, 604, 604, 573, 520, 487, 520, - 521, 522, 522, 698, 698, 698, 703, 703, 584, 705, - 705, 705, 699, 523, 596, 596, 596, 652, 653, 653, - 927, 573, 674, 928, 597, 659, 597, 598, 599, 599, - 584, 738, 738, 1360, 1360, 750, 750, 750, 778, 778, - 600, 519, 519, 519, 751, 789, 753, 753, 753, 779, - - 932, 520, 790, 520, 521, 522, 522, 700, 779, 756, - 756, 756, 658, 658, 658, 703, 703, 523, 605, 605, - 605, 673, 673, 673, 1360, 686, 686, 932, 698, 698, - 698, 606, 522, 522, 757, 698, 698, 698, 820, 752, - 932, 780, 780, 780, 705, 705, 705, 820, 607, 608, - 609, 610, 754, 674, 932, 611, 1360, 1360, 612, 819, - 819, 613, 778, 778, 614, 650, 650, 650, 659, 705, - 705, 705, 1360, 738, 738, 651, 932, 651, 652, 653, - 653, 781, 700, 820, 782, 821, 821, 821, 843, 700, - 932, 654, 596, 596, 596, 780, 780, 780, 937, 820, - - 852, 852, 597, 844, 597, 598, 599, 599, 938, 750, - 750, 750, 829, 829, 829, 750, 750, 750, 600, 687, - 687, 687, 756, 756, 756, 822, 819, 819, 823, 753, - 753, 753, 688, 599, 599, 848, 939, 830, 849, 785, - 786, 786, 940, 780, 780, 780, 941, 757, 932, 689, - 690, 691, 692, 826, 827, 827, 693, 896, 896, 694, - 1360, 1360, 695, 752, 932, 696, 650, 650, 650, 752, - 931, 931, 780, 780, 780, 932, 651, 942, 651, 652, - 653, 653, 943, 848, 932, 754, 849, 944, 780, 780, - 780, 945, 654, 739, 739, 739, 946, 919, 919, 919, - - 1360, 852, 852, 821, 821, 821, 740, 653, 653, 850, - 947, 948, 781, 949, 950, 782, 821, 821, 821, 951, - 821, 821, 821, 741, 742, 743, 744, 851, 781, 952, - 745, 782, 953, 746, 954, 955, 747, 956, 957, 748, - 783, 783, 783, 892, 958, 959, 893, 821, 821, 821, - 784, 920, 784, 785, 786, 786, 892, 894, 960, 893, - 822, 1360, 1360, 823, 963, 963, 787, 824, 824, 824, - 964, 964, 829, 829, 829, 964, 964, 825, 964, 825, - 826, 827, 827, 909, 909, 909, 895, 822, 964, 969, - 823, 970, 971, 828, 853, 853, 853, 830, 1360, 896, - - 896, 912, 912, 912, 780, 780, 780, 854, 786, 786, - 780, 780, 780, 964, 964, 972, 973, 974, 980, 933, - 933, 933, 964, 981, 855, 856, 857, 858, 982, 983, - 964, 859, 984, 985, 860, 986, 987, 861, 994, 910, - 862, 897, 897, 897, 781, 929, 995, 782, 931, 931, - 781, 996, 997, 782, 898, 827, 827, 913, 930, 934, - 998, 999, 935, 821, 821, 821, 1000, 821, 821, 821, - 1001, 899, 900, 901, 902, 936, 1002, 863, 903, 993, - 1003, 904, 1004, 1005, 905, 1006, 1013, 906, 965, 965, - 965, 909, 909, 909, 912, 912, 912, 919, 919, 919, - - 780, 780, 780, 822, 961, 1014, 823, 822, 963, 963, - 823, 907, 1015, 1012, 1016, 962, 1029, 780, 780, 780, - 977, 978, 978, 1017, 1017, 1030, 1031, 1032, 966, 847, - 1033, 967, 933, 933, 933, 1034, 933, 933, 933, 1041, - 781, 1042, 863, 782, 968, 863, 1043, 910, 988, 1045, - 913, 920, 975, 975, 975, 1046, 1044, 781, 1047, 1048, - 782, 1049, 976, 989, 976, 977, 978, 978, 933, 933, - 933, 1050, 990, 1051, 1052, 991, 990, 1053, 979, 991, - 821, 821, 821, 1060, 1061, 1064, 1065, 1066, 936, 821, - 821, 821, 936, 965, 965, 965, 907, 965, 965, 965, - - 1062, 965, 965, 965, 907, 992, 1360, 1360, 934, 1067, - 1067, 935, 1360, 1017, 1017, 1063, 1068, 1068, 1068, 1068, - 822, 1068, 1068, 823, 936, 1068, 1068, 1068, 1007, 822, - 1073, 1074, 823, 1009, 1075, 1008, 1010, 1009, 1011, 1076, - 1010, 966, 1095, 1068, 967, 1038, 1039, 1039, 1096, 968, - 1083, 1083, 863, 968, 780, 780, 780, 968, 1018, 1018, - 1018, 1099, 1100, 1097, 1101, 863, 1102, 1103, 821, 821, - 821, 1019, 978, 978, 1098, 1104, 1057, 1058, 1058, 1111, - 1111, 1069, 1069, 1069, 1123, 1036, 1036, 1036, 1020, 1021, - 1022, 1023, 1124, 907, 781, 1024, 1129, 782, 1025, 907, - - 1035, 1026, 1126, 1130, 1027, 1036, 1036, 1036, 822, 1135, - 1125, 823, 1067, 1067, 1054, 1037, 1150, 1037, 1038, 1039, - 1039, 1070, 1137, 1137, 1071, 848, 1150, 1028, 849, 1134, - 1150, 1040, 1150, 1055, 1055, 1055, 1150, 1072, 1360, 1360, - 1127, 1127, 1127, 1149, 1149, 781, 1150, 1153, 782, 1055, - 1055, 1055, 1080, 1081, 1081, 1360, 1083, 1083, 1150, 1056, - 1154, 1056, 1057, 1058, 1058, 1150, 1161, 1150, 1162, 1069, - 1069, 1069, 1163, 892, 1178, 1059, 893, 1151, 1151, 1151, - 1178, 1150, 863, 1069, 1069, 1069, 1108, 1109, 1109, 822, - 1178, 1155, 823, 1077, 1077, 1077, 1128, 1165, 1165, 1178, - - 1069, 1069, 1069, 1037, 1178, 1037, 1038, 1039, 1039, 1131, - 1360, 1360, 1132, 1178, 1078, 1078, 1078, 1152, 1178, 1040, - 1078, 1078, 1078, 1131, 1178, 1072, 1132, 1106, 1106, 1106, - 1079, 1181, 1079, 1080, 1081, 1081, 1182, 1133, 1189, 1072, - 1070, 1177, 1177, 1071, 1190, 1191, 1082, 1084, 1084, 1084, - 1360, 1111, 1111, 1178, 848, 1028, 1072, 849, 1197, 907, - 1085, 1039, 1039, 1179, 1179, 1179, 1193, 892, 1183, 1178, - 893, 1127, 1127, 1127, 1194, 1194, 1194, 1086, 1087, 1088, - 1089, 1028, 1360, 1360, 1090, 1192, 1197, 1091, 1196, 1196, - 1092, 1197, 1197, 1093, 1105, 1105, 1105, 1360, 1137, 1137, - - 1197, 1197, 1197, 1180, 1056, 1197, 1056, 1057, 1058, 1058, - 1197, 1198, 1198, 1198, 1149, 1149, 1151, 1151, 1151, 1200, - 1059, 1106, 1106, 1106, 1207, 1207, 1197, 1128, 1219, 1221, - 1195, 1107, 1221, 1107, 1108, 1109, 1109, 1151, 1151, 1151, - 1158, 1159, 1159, 1156, 1156, 1156, 1221, 1110, 1112, 1112, - 1112, 1221, 1151, 1151, 1151, 1221, 848, 1360, 1165, 1165, - 1221, 1113, 1058, 1058, 1360, 1360, 1220, 1220, 1221, 1221, - 1224, 1221, 1222, 1222, 1222, 1177, 1177, 848, 1114, 1115, - 1116, 1117, 1243, 990, 1244, 1118, 991, 1221, 1119, 1199, - 1247, 1120, 1152, 1263, 1121, 1136, 1136, 1136, 1263, 936, - - 1179, 1179, 1179, 1231, 1231, 1079, 1263, 1079, 1080, 1081, - 1081, 1179, 1179, 1179, 1186, 1187, 1187, 1184, 1184, 1184, - 1028, 1082, 1138, 1138, 1138, 1028, 1179, 1179, 1179, 1196, - 1196, 1245, 1250, 1250, 1246, 1139, 1081, 1081, 1360, 1360, - 892, 1194, 1194, 1194, 1198, 1198, 1198, 1198, 1198, 1198, - 1263, 892, 1140, 1141, 1142, 1143, 1263, 1009, 1263, 1144, - 1010, 1263, 1145, 1223, 1263, 1146, 1180, 1263, 1147, 1156, - 1156, 1156, 1283, 968, 1151, 1151, 1151, 1262, 1262, 1157, - 1263, 1157, 1158, 1159, 1159, 1202, 1202, 1202, 1204, 1205, - 1205, 1360, 1207, 1207, 1283, 1160, 1283, 1195, 1264, 1264, - - 1264, 1220, 1220, 1222, 1222, 1222, 863, 1164, 1164, 1164, - 1222, 1222, 1222, 1283, 1152, 1248, 1283, 1107, 1283, 1107, - 1108, 1109, 1109, 1270, 1270, 990, 1360, 1360, 991, 1179, - 1179, 1179, 1286, 1110, 1166, 1166, 1166, 1287, 1265, 1282, - 1282, 936, 1283, 1247, 1226, 1226, 1226, 1167, 1109, 1109, - 1228, 1229, 1229, 1283, 936, 1360, 1231, 1231, 1283, 1284, - 1284, 1284, 1283, 1028, 1168, 1169, 1170, 1171, 1296, 1180, - 1268, 1172, 1288, 1296, 1173, 1360, 1360, 1174, 1295, 1295, - 1175, 1184, 1184, 1184, 1009, 1296, 1296, 1010, 1151, 1151, - 1151, 1185, 1296, 1185, 1186, 1187, 1187, 1296, 1296, 1285, - - 968, 1360, 1250, 1250, 1296, 1301, 1296, 1188, 1297, 1297, - 1297, 1262, 1262, 1301, 1296, 968, 1360, 1360, 907, 1201, - 1201, 1201, 1264, 1264, 1264, 1264, 1264, 1264, 1152, 1157, - 1301, 1157, 1158, 1159, 1159, 1301, 1294, 1300, 1300, 1264, - 1264, 1264, 1179, 1179, 1179, 1160, 1202, 1202, 1202, 1360, - 1270, 1270, 1301, 1301, 1301, 1301, 1203, 1304, 1203, 1204, - 1205, 1205, 990, 1301, 936, 990, 1282, 1282, 1341, 1301, - 1311, 1311, 1206, 1208, 1208, 1208, 1298, 1341, 936, 1265, - 1341, 936, 1180, 1302, 1302, 1302, 1209, 1159, 1159, 1341, - 1299, 1291, 1292, 1292, 1341, 936, 1284, 1284, 1284, 1341, - - 1284, 1284, 1284, 1210, 1211, 1212, 1213, 1295, 1295, 1341, - 1214, 1300, 1300, 1215, 1328, 1328, 1216, 1360, 1360, 1217, - 1225, 1225, 1225, 1297, 1297, 1297, 1284, 1284, 1284, 1341, - 1185, 1341, 1185, 1186, 1187, 1187, 1009, 1340, 1340, 968, - 1009, 1289, 1289, 1289, 1349, 1341, 1188, 1226, 1226, 1226, - 1360, 1360, 968, 1151, 1151, 1151, 968, 1227, 1349, 1227, - 1228, 1229, 1229, 1303, 1348, 1348, 1285, 1349, 1297, 1297, - 1297, 1349, 1349, 1230, 1232, 1232, 1232, 1349, 1349, 936, - 1349, 1131, 968, 210, 1132, 1340, 1340, 1233, 1187, 1187, - 1302, 1302, 1302, 1152, 1308, 1309, 1309, 1072, 224, 1323, - - 1264, 1264, 1264, 1349, 1234, 1235, 1236, 1237, 1302, 1302, - 1302, 1238, 1348, 1348, 1239, 615, 697, 1240, 749, 1349, - 1241, 1249, 1249, 1249, 936, 1179, 1179, 1179, 1284, 1284, - 1284, 1203, 832, 1203, 1204, 1205, 1205, 1360, 1311, 1311, - 1265, 1324, 1360, 1328, 1328, 863, 968, 1206, 1251, 1251, - 1251, 907, 908, 1028, 1094, 1122, 936, 1148, 1176, 1218, - 1242, 1252, 1205, 1205, 968, 1180, 1261, 1281, 1285, 1326, - 1322, 1325, 1339, 885, 884, 883, 882, 881, 1253, 1254, - 1255, 1256, 880, 879, 968, 1257, 878, 877, 1258, 876, - 875, 1259, 874, 873, 1260, 1266, 1266, 1266, 1266, 1266, - + 105, 105, 104, 104, 106, 104, 111, 889, 46, 111, + 116, 117, 116, 116, 117, 116, 119, 120, 119, 318, + + 46, 112, 112, 112, 112, 112, 112, 119, 120, 119, + 319, 46, 113, 122, 199, 113, 199, 200, 201, 201, + 282, 200, 201, 201, 291, 128, 283, 227, 292, 306, + 306, 890, 114, 332, 704, 114, 128, 293, 327, 307, + 201, 201, 123, 704, 124, 116, 333, 116, 116, 328, + 116, 119, 891, 119, 129, 228, 130, 229, 357, 230, + 231, 232, 119, 358, 119, 129, 233, 130, 171, 171, + 308, 172, 171, 171, 171, 171, 173, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 174, + 175, 174, 174, 176, 177, 178, 179, 171, 171, 180, + + 181, 182, 183, 184, 185, 174, 186, 187, 188, 189, + 174, 190, 191, 192, 174, 193, 194, 195, 196, 197, + 174, 174, 174, 174, 171, 171, 171, 171, 202, 911, + 202, 208, 208, 208, 208, 208, 208, 211, 211, 211, + 216, 267, 268, 267, 267, 268, 267, 336, 217, 419, + 218, 420, 219, 220, 221, 267, 268, 267, 421, 222, + 337, 267, 268, 267, 202, 205, 202, 266, 267, 268, + 267, 205, 212, 208, 208, 208, 205, 387, 213, 244, + 245, 244, 388, 203, 378, 214, 209, 215, 205, 209, + 704, 286, 211, 211, 211, 389, 389, 284, 268, 287, + + 379, 268, 266, 294, 295, 296, 704, 297, 211, 211, + 211, 552, 268, 298, 244, 245, 244, 843, 268, 203, + 266, 299, 300, 306, 306, 268, 553, 212, 209, 340, + 341, 340, 844, 213, 267, 268, 267, 914, 360, 361, + 214, 354, 215, 212, 396, 355, 356, 371, 401, 213, + 362, 779, 414, 308, 372, 415, 214, 397, 215, 373, + 779, 402, 340, 341, 340, 441, 458, 442, 416, 463, + 417, 446, 447, 443, 459, 468, 389, 389, 464, 531, + 444, 465, 460, 486, 486, 486, 341, 915, 469, 448, + 916, 268, 917, 532, 533, 519, 519, 519, 486, 486, + + 486, 572, 572, 572, 580, 520, 308, 520, 521, 522, + 522, 918, 581, 583, 583, 583, 596, 596, 596, 341, + 604, 604, 523, 521, 522, 522, 597, 618, 597, 598, + 599, 599, 519, 519, 519, 619, 638, 921, 487, 922, + 639, 923, 520, 600, 520, 521, 522, 522, 650, 650, + 650, 573, 924, 487, 640, 658, 658, 658, 651, 523, + 651, 652, 653, 653, 572, 572, 572, 925, 584, 605, + 605, 605, 583, 583, 583, 654, 673, 673, 673, 596, + 596, 596, 606, 522, 522, 598, 599, 599, 927, 597, + 928, 597, 598, 599, 599, 686, 686, 1360, 604, 604, + + 607, 608, 609, 610, 1360, 1360, 600, 611, 789, 674, + 612, 932, 659, 613, 573, 790, 614, 703, 703, 705, + 705, 705, 698, 698, 698, 738, 738, 584, 687, 687, + 687, 699, 652, 653, 653, 932, 650, 650, 650, 1360, + 1360, 688, 599, 599, 778, 778, 651, 846, 651, 652, + 653, 653, 1360, 686, 686, 779, 753, 753, 753, 689, + 690, 691, 692, 654, 703, 703, 693, 1360, 1360, 694, + 932, 779, 695, 819, 819, 696, 847, 700, 739, 739, + 739, 750, 750, 750, 658, 658, 658, 780, 780, 780, + 751, 740, 653, 653, 756, 756, 756, 673, 673, 673, + + 698, 698, 698, 698, 698, 698, 705, 705, 705, 741, + 742, 743, 744, 754, 820, 932, 745, 778, 778, 746, + 757, 932, 747, 820, 820, 748, 852, 852, 781, 932, + 674, 782, 783, 783, 783, 937, 752, 705, 705, 705, + 820, 659, 784, 938, 784, 785, 786, 786, 1360, 738, + 738, 821, 821, 821, 939, 700, 819, 819, 700, 787, + 750, 750, 750, 750, 750, 750, 824, 824, 824, 753, + 753, 753, 829, 829, 829, 940, 825, 941, 825, 826, + 827, 827, 756, 756, 756, 932, 780, 780, 780, 785, + 786, 786, 822, 828, 932, 823, 896, 896, 830, 780, + + 780, 780, 942, 780, 780, 780, 1360, 1360, 757, 780, + 780, 780, 826, 827, 827, 752, 931, 931, 752, 821, + 821, 821, 829, 829, 829, 943, 754, 848, 944, 932, + 849, 821, 821, 821, 945, 821, 821, 821, 946, 947, + 848, 850, 948, 849, 781, 932, 949, 782, 830, 851, + 781, 950, 951, 782, 853, 853, 853, 909, 909, 909, + 892, 952, 953, 893, 821, 821, 821, 854, 786, 786, + 954, 955, 892, 894, 956, 893, 822, 957, 958, 823, + 912, 912, 912, 959, 960, 855, 856, 857, 858, 919, + 919, 919, 859, 1360, 1360, 860, 963, 963, 861, 964, + + 964, 862, 964, 964, 895, 822, 964, 964, 823, 897, + 897, 897, 964, 964, 910, 969, 780, 780, 780, 1360, + 852, 852, 898, 827, 827, 780, 780, 780, 970, 933, + 933, 933, 964, 971, 821, 821, 821, 913, 972, 973, + 899, 900, 901, 902, 920, 974, 980, 903, 964, 981, + 904, 982, 983, 905, 984, 985, 906, 781, 929, 986, + 782, 821, 821, 821, 987, 994, 781, 931, 931, 782, + 934, 995, 996, 935, 930, 822, 961, 997, 823, 1360, + 896, 896, 965, 965, 965, 998, 936, 909, 909, 909, + 912, 912, 912, 919, 919, 919, 780, 780, 780, 863, + + 999, 993, 822, 1000, 1001, 823, 975, 975, 975, 1002, + 962, 780, 780, 780, 1003, 1004, 976, 1005, 976, 977, + 978, 978, 1006, 966, 963, 963, 967, 933, 933, 933, + 907, 1013, 1012, 979, 933, 933, 933, 781, 1014, 968, + 782, 933, 933, 933, 910, 988, 1015, 913, 920, 821, + 821, 821, 781, 1016, 1029, 782, 1017, 1017, 989, 821, + 821, 821, 1030, 965, 965, 965, 1031, 1032, 990, 847, + 1033, 991, 965, 965, 965, 990, 1034, 1041, 991, 992, + 1042, 863, 934, 1045, 936, 935, 965, 965, 965, 1046, + 822, 936, 1044, 823, 1047, 863, 1008, 1048, 936, 1043, + + 822, 1049, 1050, 823, 1009, 1051, 1052, 1010, 1007, 977, + 978, 978, 1053, 1009, 1060, 1061, 1010, 1064, 1065, 1066, + 968, 780, 780, 780, 1011, 907, 1068, 966, 907, 968, + 967, 1068, 1062, 1360, 1017, 1017, 1063, 1360, 1360, 821, + 821, 821, 1068, 968, 1018, 1018, 1018, 1067, 1067, 1068, + 1068, 1068, 1068, 1068, 1068, 1073, 1074, 1019, 978, 978, + 1075, 1076, 781, 1083, 1083, 782, 1095, 1096, 1035, 1068, + 1069, 1069, 1069, 863, 1099, 1020, 1021, 1022, 1023, 1100, + 822, 863, 1024, 823, 1097, 1025, 1054, 1101, 1026, 1102, + 1098, 1027, 1036, 1036, 1036, 1038, 1039, 1039, 1103, 1104, + + 1111, 1111, 1037, 1123, 1037, 1038, 1039, 1039, 1077, 1077, + 1077, 1070, 1124, 1129, 1071, 1036, 1036, 1036, 1037, 1040, + 1037, 1038, 1039, 1039, 1057, 1058, 1058, 1072, 1130, 1135, + 1078, 1078, 1078, 781, 1150, 1040, 782, 1055, 1055, 1055, + 1079, 1150, 1079, 1080, 1081, 1081, 1028, 1056, 1134, 1056, + 1057, 1058, 1058, 1105, 1105, 1105, 848, 1082, 907, 849, + 1106, 1106, 1106, 1056, 1059, 1056, 1057, 1058, 1058, 1125, + 1107, 1150, 1107, 1108, 1109, 1109, 907, 1150, 822, 1150, + 1059, 823, 1084, 1084, 1084, 1126, 1150, 1110, 1150, 1055, + 1055, 1055, 1067, 1067, 1150, 1085, 1039, 1039, 1127, 1127, + + 1127, 1069, 1069, 1069, 1080, 1081, 1081, 1137, 1137, 1360, + 1083, 1083, 1150, 1086, 1087, 1088, 1089, 1360, 1360, 1153, + 1090, 1149, 1149, 1091, 1154, 1161, 1092, 1162, 1150, 1093, + 892, 1163, 863, 893, 1112, 1112, 1112, 1178, 1069, 1069, + 1069, 1155, 1131, 1165, 1165, 1132, 1178, 1113, 1058, 1058, + 1069, 1069, 1069, 1360, 1360, 1128, 1177, 1177, 1072, 1078, + 1078, 1078, 1108, 1109, 1109, 1114, 1115, 1116, 1117, 1360, + 1111, 1111, 1118, 1178, 1178, 1119, 1178, 1178, 1120, 1131, + 1178, 1121, 1132, 1178, 1181, 1178, 1182, 1189, 1133, 1190, + 907, 1070, 1191, 1028, 1071, 1072, 1136, 1136, 1136, 1183, + + 848, 1178, 1197, 849, 1193, 1197, 1079, 1072, 1079, 1080, + 1081, 1081, 1151, 1151, 1151, 1360, 1360, 1164, 1164, 1164, + 1106, 1106, 1106, 1082, 1138, 1138, 1138, 1107, 1197, 1107, + 1108, 1109, 1109, 1197, 1179, 1179, 1179, 1139, 1081, 1081, + 1127, 1127, 1127, 1028, 1110, 1196, 1196, 1192, 1194, 1194, + 1194, 1197, 1197, 1152, 1197, 1140, 1141, 1142, 1143, 1197, + 1197, 892, 1144, 1200, 893, 1145, 1149, 1149, 1146, 1219, + 1197, 1147, 1156, 1156, 1156, 1180, 1360, 1137, 1137, 1198, + 1198, 1198, 1157, 1221, 1157, 1158, 1159, 1159, 1151, 1151, + 1151, 1151, 1151, 1151, 1201, 1201, 1201, 1128, 1221, 1160, + + 1151, 1151, 1151, 1221, 1157, 1195, 1157, 1158, 1159, 1159, + 863, 1166, 1166, 1166, 1158, 1159, 1159, 1207, 1207, 1360, + 1360, 1160, 1220, 1220, 1167, 1109, 1109, 1221, 1221, 848, + 1221, 1221, 848, 1360, 1165, 1165, 1221, 1221, 1199, 1177, + 1177, 1152, 1168, 1169, 1170, 1171, 1156, 1156, 1156, 1172, + 1224, 1243, 1173, 1221, 1244, 1174, 1231, 1231, 1175, 1184, + 1184, 1184, 1222, 1222, 1222, 1202, 1202, 1202, 1247, 1185, + 1263, 1185, 1186, 1187, 1187, 1203, 1263, 1203, 1204, 1205, + 1205, 1179, 1179, 1179, 1263, 1028, 1188, 990, 1263, 1028, + 991, 1263, 1206, 1179, 1179, 1179, 1245, 907, 1246, 1263, + + 1184, 1184, 1184, 936, 1208, 1208, 1208, 1263, 1179, 1179, + 1179, 1196, 1196, 1225, 1225, 1225, 1263, 1209, 1159, 1159, + 1250, 1250, 892, 1185, 1283, 1185, 1186, 1187, 1187, 1186, + 1187, 1187, 1360, 1360, 892, 1210, 1211, 1212, 1213, 1283, + 1188, 1009, 1214, 1283, 1010, 1215, 1223, 1263, 1216, 1180, + 1283, 1217, 1226, 1226, 1226, 1262, 1262, 968, 1194, 1194, + 1194, 1283, 1227, 1263, 1227, 1228, 1229, 1229, 1198, 1198, + 1198, 1198, 1198, 1198, 1283, 1151, 1151, 1151, 1286, 1230, + 1232, 1232, 1232, 1204, 1205, 1205, 1360, 1207, 1207, 1287, + 1202, 1202, 1202, 1233, 1187, 1187, 1264, 1264, 1264, 1220, + + 1220, 1222, 1222, 1222, 1222, 1222, 1222, 1179, 1179, 1179, + 1247, 1234, 1235, 1236, 1237, 1195, 1152, 1248, 1238, 1270, + 1270, 1239, 1360, 1360, 1240, 1282, 1282, 1241, 1249, 1249, + 1249, 990, 1360, 1360, 991, 1295, 1295, 1265, 1203, 1296, + 1203, 1204, 1205, 1205, 1228, 1229, 1229, 936, 1180, 1268, + 1269, 1269, 1269, 936, 1296, 1206, 1251, 1251, 1251, 1283, + 1227, 1296, 1227, 1228, 1229, 1229, 1360, 1231, 1231, 1252, + 1205, 1205, 1283, 1028, 1296, 1283, 1296, 1230, 1360, 1250, + 1250, 1283, 1288, 1296, 1296, 1296, 1296, 1253, 1254, 1255, + 1256, 1262, 1262, 1301, 1257, 1360, 1360, 1258, 1300, 1300, + + 1259, 1296, 1301, 1260, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1267, 1267, 1267, 1267, 1267, 1267, 1266, 1266, 1266, 1266, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, - 872, 1266, 1266, 1266, 1269, 1269, 1269, 871, 870, 1306, - 1306, 1306, 869, 868, 1227, 867, 1227, 1228, 1229, 1229, - 1342, 1342, 1342, 1359, 1359, 1359, 866, 1264, 1264, 1264, - 1230, 1271, 1271, 1271, 865, 864, 845, 842, 1350, 1350, - 1350, 1284, 1284, 1284, 1272, 1229, 1229, 841, 840, 1131, - - 839, 838, 1132, 837, 836, 1342, 1342, 1342, 835, 834, - 1343, 1273, 1274, 1275, 1276, 1072, 1360, 1265, 1277, 323, - 314, 1278, 833, 831, 1279, 1345, 1072, 1280, 1289, 1289, - 1289, 1285, 820, 936, 1342, 1342, 1342, 820, 1290, 1347, - 1290, 1291, 1292, 1292, 1072, 1131, 820, 968, 1342, 1342, - 1342, 820, 820, 820, 1293, 818, 1264, 1264, 1264, 817, - 816, 1072, 1350, 1350, 1350, 1028, 1305, 1305, 1305, 1284, - 1284, 1284, 815, 814, 1131, 813, 1290, 812, 1290, 1291, - 1292, 1292, 1350, 1350, 1350, 1351, 811, 810, 1343, 809, - 1072, 808, 1293, 1306, 1306, 1306, 1265, 807, 806, 1342, - - 1342, 1342, 1352, 1307, 1072, 1307, 1308, 1309, 1309, 1285, - 805, 804, 936, 803, 802, 1353, 801, 800, 1072, 1310, - 1312, 1312, 1312, 799, 798, 968, 797, 796, 795, 794, - 1342, 1342, 1342, 1313, 1292, 1292, 793, 792, 1072, 1343, - 1354, 791, 788, 1356, 1356, 1356, 779, 779, 779, 779, - 1314, 1315, 1316, 1317, 779, 1072, 779, 1318, 777, 776, - 1319, 775, 774, 1320, 773, 772, 1321, 1327, 1327, 1327, - 1343, 771, 1342, 1342, 1342, 770, 769, 1307, 1357, 1307, - 1308, 1309, 1309, 1009, 768, 767, 1072, 766, 765, 764, - 763, 762, 255, 1310, 1329, 1329, 1329, 247, 761, 968, - - 323, 760, 314, 759, 758, 755, 737, 1330, 1309, 1309, - 736, 735, 1343, 734, 733, 732, 731, 730, 1358, 729, - 728, 727, 726, 725, 1331, 1332, 1333, 1334, 1072, 724, - 723, 1335, 722, 721, 1336, 720, 719, 1337, 718, 717, - 1338, 1344, 1344, 1344, 716, 715, 714, 713, 712, 711, - 710, 1079, 709, 1079, 1080, 1081, 1081, 708, 707, 706, - 704, 704, 704, 704, 704, 704, 702, 1082, 701, 685, - 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, - 672, 1152, 1346, 1346, 1346, 671, 670, 669, 668, 255, - 667, 247, 1107, 666, 1107, 1108, 1109, 1109, 665, 664, - - 323, 663, 323, 662, 314, 661, 314, 660, 1110, 657, - 656, 655, 649, 648, 647, 646, 645, 644, 643, 642, - 641, 637, 1180, 1344, 1344, 1344, 636, 635, 634, 633, - 632, 631, 630, 1079, 629, 1079, 1080, 1081, 1081, 628, - 627, 626, 625, 624, 623, 622, 621, 620, 617, 1082, - 616, 603, 602, 601, 595, 594, 593, 592, 591, 590, - 589, 588, 587, 848, 1346, 1346, 1346, 586, 585, 582, - 579, 578, 577, 255, 1107, 576, 1107, 1108, 1109, 1109, - 255, 575, 247, 574, 247, 571, 570, 569, 568, 567, - 1110, 566, 565, 564, 563, 562, 561, 560, 559, 558, - - 557, 556, 555, 554, 892, 1355, 1355, 1355, 551, 550, - 549, 548, 547, 546, 545, 1203, 544, 1203, 1204, 1205, - 1205, 543, 542, 541, 540, 539, 538, 537, 536, 535, - 534, 1206, 530, 529, 528, 527, 526, 525, 524, 518, - 517, 516, 515, 514, 513, 1265, 512, 511, 510, 509, - 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, - 498, 936, 1356, 1356, 1356, 497, 496, 495, 494, 493, - 492, 491, 1227, 490, 1227, 1228, 1229, 1229, 489, 488, - 485, 484, 483, 482, 481, 480, 479, 478, 1230, 477, - 476, 475, 474, 473, 472, 471, 470, 467, 466, 462, - - 461, 457, 1285, 456, 455, 454, 453, 452, 451, 450, - 449, 445, 440, 439, 438, 437, 436, 435, 968, 1355, - 1355, 1355, 434, 433, 432, 431, 430, 429, 428, 1203, - 427, 1203, 1204, 1205, 1205, 426, 425, 424, 423, 422, - 418, 343, 413, 412, 411, 1206, 410, 409, 408, 407, - 406, 405, 404, 403, 323, 323, 400, 323, 323, 990, - 399, 398, 314, 314, 395, 314, 314, 394, 393, 392, - 391, 390, 386, 385, 384, 936, 1359, 1359, 1359, 383, - 382, 381, 380, 377, 376, 375, 1307, 374, 1307, 1308, - 1309, 1309, 370, 367, 366, 365, 364, 363, 359, 353, - - 352, 351, 1310, 350, 349, 348, 347, 346, 345, 344, - 343, 270, 1360, 339, 338, 255, 1343, 255, 335, 255, - 255, 334, 247, 247, 331, 247, 247, 330, 238, 236, - 329, 326, 1072, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 56, + 1301, 1266, 1266, 1266, 1226, 1226, 1226, 1301, 1284, 1284, + 1284, 1151, 1151, 1151, 1297, 1297, 1297, 1264, 1264, 1264, + 1360, 1270, 1270, 1301, 1301, 1264, 1264, 1264, 1301, 1264, + 1264, 1264, 1179, 1179, 1179, 1301, 1304, 1301, 1282, 1282, + + 1301, 1302, 1302, 1302, 1341, 1009, 1311, 1311, 1010, 1285, + 1295, 1295, 1152, 1291, 1292, 1292, 1300, 1300, 990, 1341, + 1294, 968, 1271, 1271, 1271, 968, 990, 1298, 1328, 1328, + 1265, 936, 1341, 1180, 936, 1272, 1229, 1229, 1284, 1284, + 1284, 1299, 936, 1308, 1309, 1309, 936, 1284, 1284, 1284, + 1360, 1311, 1311, 1273, 1274, 1275, 1276, 1341, 968, 1341, + 1277, 1360, 1360, 1278, 1340, 1340, 1279, 1341, 1341, 1280, + 1289, 1289, 1289, 1284, 1284, 1284, 1341, 1360, 1360, 1009, + 1290, 1349, 1290, 1291, 1292, 1292, 1341, 1349, 1009, 1297, + 1297, 1297, 1297, 1297, 1297, 968, 1349, 1293, 1289, 1289, + + 1289, 1349, 1341, 1349, 968, 1305, 1305, 1305, 1028, 1348, + 1348, 1303, 1349, 1349, 1285, 1290, 1349, 1290, 1291, 1292, + 1292, 1306, 1306, 1306, 1349, 1151, 1151, 1151, 1340, 1340, + 968, 1307, 1293, 1307, 1308, 1309, 1309, 1348, 1348, 1131, + 1349, 210, 1132, 1360, 1328, 1328, 936, 224, 1310, 936, + 1264, 1264, 1264, 615, 697, 1072, 1312, 1312, 1312, 749, + 863, 1179, 1179, 1179, 907, 1028, 1152, 1094, 1122, 1313, + 1292, 1292, 1323, 1302, 1302, 1302, 1302, 1302, 1302, 1284, + 1284, 1284, 1306, 1306, 1306, 1148, 1176, 1314, 1315, 1316, + 1317, 1265, 1324, 1218, 1318, 1242, 1261, 1319, 1281, 1322, + + 1320, 1339, 1180, 1321, 1327, 1327, 1327, 936, 1325, 1342, + 1342, 1342, 885, 884, 1307, 883, 1307, 1308, 1309, 1309, + 1285, 1326, 882, 1131, 881, 880, 1132, 879, 878, 877, + 968, 1310, 876, 968, 875, 874, 968, 873, 872, 1072, + 1329, 1329, 1329, 871, 870, 869, 868, 1359, 1359, 1359, + 1343, 867, 866, 1330, 1309, 1309, 1264, 1264, 1264, 1350, + 1350, 1350, 865, 1284, 1284, 1284, 1072, 1342, 1342, 1342, + 864, 1331, 1332, 1333, 1334, 845, 842, 841, 1335, 840, + 839, 1336, 838, 837, 1337, 836, 835, 1338, 1344, 1344, + 1344, 1360, 1342, 1342, 1342, 834, 323, 1265, 1079, 314, + + 1079, 1080, 1081, 1081, 1285, 1345, 833, 831, 1131, 1342, + 1342, 1342, 1347, 936, 820, 1082, 1072, 820, 820, 820, + 968, 1264, 1264, 1264, 1072, 820, 1350, 1350, 1350, 1152, + 1346, 1346, 1346, 1131, 1284, 1284, 1284, 1350, 1350, 1350, + 1107, 820, 1107, 1108, 1109, 1109, 818, 1351, 817, 1072, + 1343, 1342, 1342, 1342, 1342, 1342, 1342, 1110, 816, 815, + 814, 813, 1265, 1356, 1356, 1356, 1072, 812, 1352, 811, + 810, 1180, 1344, 1344, 1344, 1285, 809, 808, 936, 807, + 806, 1353, 1079, 1072, 1079, 1080, 1081, 1081, 805, 804, + 803, 968, 1343, 1354, 1072, 1343, 1342, 1342, 1342, 1082, + + 802, 801, 800, 1357, 1009, 799, 798, 797, 1072, 796, + 795, 1072, 794, 848, 1346, 1346, 1346, 793, 792, 791, + 968, 788, 779, 779, 1107, 779, 1107, 1108, 1109, 1109, + 779, 779, 779, 777, 776, 775, 774, 1343, 773, 772, + 771, 1110, 770, 1358, 769, 768, 767, 766, 765, 764, + 763, 762, 255, 1072, 247, 892, 1355, 1355, 1355, 761, + 323, 760, 314, 759, 758, 755, 1203, 737, 1203, 1204, + 1205, 1205, 736, 735, 734, 733, 732, 731, 730, 729, + 728, 727, 726, 1206, 725, 724, 723, 722, 721, 720, + 719, 718, 717, 716, 715, 714, 713, 1265, 712, 711, + + 710, 709, 708, 707, 706, 704, 704, 704, 704, 704, + 704, 702, 701, 936, 1356, 1356, 1356, 685, 684, 683, + 682, 681, 680, 679, 1227, 678, 1227, 1228, 1229, 1229, + 677, 676, 675, 672, 671, 670, 669, 668, 255, 667, + 247, 1230, 666, 665, 664, 323, 663, 323, 662, 314, + 661, 314, 660, 657, 656, 1285, 655, 649, 648, 647, + 646, 645, 644, 643, 642, 641, 637, 636, 635, 634, + 633, 968, 1355, 1355, 1355, 632, 631, 630, 629, 628, + 627, 626, 1203, 625, 1203, 1204, 1205, 1205, 624, 623, + 622, 621, 620, 617, 616, 603, 602, 601, 595, 1206, + + 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, + 582, 579, 578, 990, 577, 255, 576, 255, 575, 247, + 574, 247, 571, 570, 569, 568, 567, 566, 565, 936, + 1359, 1359, 1359, 564, 563, 562, 561, 560, 559, 558, + 1307, 557, 1307, 1308, 1309, 1309, 556, 555, 554, 551, + 550, 549, 548, 547, 546, 545, 544, 1310, 543, 542, + 541, 540, 539, 538, 537, 536, 535, 534, 530, 529, + 528, 1343, 527, 526, 525, 524, 518, 517, 516, 515, + 514, 513, 512, 511, 510, 509, 508, 1072, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + + 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 63, 63, 63, 63, 63, 63, 63, - - 63, 63, 63, 63, 63, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 127, + 63, 63, 63, 63, 63, 63, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 110, 110, 110, 110, 110, 110, 110, 110, + + 110, 110, 110, 110, 110, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 148, 325, 324, - 148, 323, 148, 148, 148, 148, 148, 150, 322, 321, - 150, 150, 150, 150, 150, 150, 150, 164, 164, 225, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 170, - 320, 317, 316, 170, 204, 315, 314, 204, 204, 204, - 204, 204, 204, 204, 313, 204, 206, 312, 206, 206, - 206, 207, 207, 235, 311, 310, 235, 235, 235, 235, - - 235, 235, 235, 237, 309, 203, 237, 237, 237, 237, - 237, 237, 237, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 303, 240, 240, 241, 241, 241, 241, 241, - 241, 241, 241, 290, 241, 241, 241, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 264, 285, 279, - 169, 264, 265, 265, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 926, 926, 926, 926, - 926, 926, 926, 926, 926, 169, 926, 926, 1266, 1266, - 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 263, 1266, - 262, 160, 261, 258, 257, 256, 255, 254, 151, 149, - - 253, 250, 249, 248, 247, 246, 242, 239, 238, 236, - 234, 226, 225, 223, 203, 198, 169, 167, 166, 165, - 163, 162, 161, 160, 159, 151, 149, 147, 140, 1360, - 136, 136, 126, 126, 45, 1360, 1360, 1360, 1360, 1360, + 133, 133, 133, 133, 133, 133, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 148, + 507, 506, 148, 148, 505, 148, 148, 148, 148, 148, + 150, 504, 503, 150, 150, 150, 150, 150, 150, 150, + 150, 164, 164, 502, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 170, 501, 500, 499, 170, 204, + 498, 497, 204, 204, 204, 204, 204, 204, 204, 204, + 496, 204, 206, 495, 206, 206, 206, 207, 207, 235, + 494, 493, 235, 235, 235, 235, 235, 235, 235, 235, + 237, 492, 491, 237, 237, 237, 237, 237, 237, 237, + 237, 240, 240, 240, 240, 240, 240, 240, 240, 240, + + 240, 490, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 489, 241, 241, 241, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 264, 488, + 485, 484, 264, 265, 265, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 832, 483, + 482, 481, 480, 832, 908, 479, 478, 477, 476, 908, + 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, + 475, 926, 926, 1266, 1266, 1266, 1266, 1266, 1266, 1266, + 1266, 1266, 1266, 1266, 474, 1266, 473, 472, 471, 470, + 467, 466, 462, 461, 457, 456, 455, 454, 453, 452, + + 451, 450, 449, 445, 440, 439, 438, 437, 436, 435, + 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, + 424, 423, 422, 418, 343, 413, 412, 411, 410, 409, + 408, 407, 406, 405, 404, 403, 323, 323, 400, 323, + 323, 399, 398, 314, 314, 395, 314, 314, 394, 393, + 392, 391, 390, 386, 385, 384, 383, 382, 381, 380, + 377, 376, 375, 374, 370, 367, 366, 365, 364, 363, + 359, 353, 352, 351, 350, 349, 348, 347, 346, 345, + 344, 343, 270, 1360, 339, 338, 255, 255, 335, 255, + 255, 334, 247, 247, 331, 247, 247, 330, 238, 236, + + 329, 326, 325, 324, 323, 322, 321, 225, 320, 317, + 316, 315, 314, 313, 312, 311, 310, 309, 203, 303, + 290, 285, 279, 169, 169, 263, 262, 160, 261, 258, + 257, 256, 255, 254, 151, 149, 253, 250, 249, 248, + 247, 246, 242, 239, 238, 236, 234, 226, 225, 223, + 203, 198, 169, 167, 166, 165, 163, 162, 161, 160, + 159, 151, 149, 147, 140, 1360, 136, 136, 126, 126, + 45, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360 - + 1360 } ; -static const flex_int16_t yy_chk[3395] = +static const flex_int16_t yy_chk[3432] = { 0, - 0, 0, 3, 4, 5, 0, 0, 5, 6, 0, - 0, 6, 9, 9, 9, 7, 7, 7, 23, 5, - 5, 5, 31, 6, 6, 6, 7, 24, 37, 5, - 8, 8, 8, 6, 10, 10, 10, 79, 79, 38, - 181, 8, 11, 23, 181, 11, 31, 12, 39, 5, - 12, 40, 24, 6, 37, 3, 4, 11, 11, 11, - 168, 168, 12, 12, 12, 38, 9, 11, 9, 7, - 197, 7, 12, 39, 146, 31, 40, 31, 43, 44, - 43, 44, 813, 197, 8, 146, 8, 11, 10, 175, - 10, 175, 12, 13, 13, 13, 13, 13, 13, 13, + 0, 0, 3, 4, 5, 0, 0, 5, 6, 23, + 24, 6, 9, 9, 9, 7, 7, 7, 39, 5, + 5, 5, 31, 6, 6, 6, 7, 8, 8, 8, + 5, 10, 10, 10, 6, 23, 24, 40, 8, 79, + 79, 37, 146, 0, 39, 11, 38, 31, 11, 12, + 5, 181, 12, 146, 6, 181, 3, 4, 168, 168, + 11, 11, 11, 40, 12, 12, 12, 9, 37, 9, + 7, 11, 7, 38, 158, 12, 31, 43, 31, 43, + 290, 44, 8, 44, 8, 158, 10, 175, 10, 175, + 290, 11, 139, 139, 139, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 15, 15, 15, 15, 15, 15, 15, 15, + 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 15, 15, 15, 15, 15, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 19, 67, 54, 20, 54, 179, 54, 54, 54, 139, - 139, 139, 158, 54, 814, 19, 19, 19, 20, 20, - 20, 179, 183, 158, 91, 19, 252, 186, 20, 185, + 17, 17, 17, 17, 17, 17, 19, 67, 54, 20, + 54, 179, 54, 54, 54, 813, 190, 814, 183, 54, + 190, 19, 19, 19, 20, 20, 20, 183, 179, 185, - 91, 183, 67, 186, 67, 91, 67, 67, 67, 252, - 185, 182, 182, 67, 815, 19, 91, 182, 20, 21, + 180, 91, 19, 180, 180, 20, 815, 91, 197, 67, + 185, 67, 91, 67, 67, 67, 195, 182, 182, 195, + 67, 197, 19, 182, 91, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 25, 816, - 32, 26, 27, 27, 27, 28, 28, 28, 29, 29, - 29, 222, 35, 25, 25, 25, 26, 26, 26, 30, - - 30, 30, 222, 25, 32, 36, 26, 83, 282, 83, - 83, 83, 83, 282, 180, 260, 35, 180, 180, 113, - 190, 193, 465, 25, 190, 193, 26, 195, 260, 36, - 195, 200, 200, 32, 193, 32, 27, 465, 27, 28, - 297, 28, 29, 233, 29, 35, 113, 35, 113, 290, - 113, 113, 113, 30, 233, 30, 297, 113, 36, 290, - 36, 81, 81, 817, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 21, 21, 21, 21, 21, 21, 25, 816, 32, 26, + 27, 27, 27, 28, 28, 28, 29, 29, 29, 222, + + 35, 25, 25, 25, 26, 26, 26, 30, 30, 30, + 222, 36, 25, 32, 83, 26, 83, 83, 83, 83, + 186, 199, 199, 199, 193, 35, 186, 113, 193, 200, + 200, 817, 25, 252, 608, 26, 36, 193, 233, 201, + 201, 201, 32, 608, 32, 27, 252, 27, 28, 233, + 28, 29, 818, 29, 35, 113, 35, 113, 282, 113, + 113, 113, 30, 282, 30, 36, 113, 36, 81, 81, + 201, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 88, 818, 88, 95, 95, 95, 96, 96, 96, 98, - 98, 98, 102, 176, 176, 176, 177, 177, 177, 832, - 102, 346, 102, 346, 102, 102, 102, 187, 187, 187, - 346, 102, 281, 189, 189, 189, 281, 281, 177, 834, - 191, 191, 191, 98, 199, 199, 199, 284, 284, 98, - 201, 201, 201, 202, 88, 202, 98, 95, 98, 284, - 96, 305, 189, 208, 208, 208, 305, 835, 187, 176, - 189, 777, 177, 191, 194, 194, 194, 836, 194, 206, - - 201, 307, 307, 187, 194, 206, 209, 209, 209, 189, - 206, 194, 194, 194, 306, 306, 191, 211, 211, 211, - 777, 206, 244, 244, 244, 837, 319, 202, 245, 245, - 245, 266, 266, 266, 267, 267, 267, 208, 292, 319, - 209, 328, 613, 306, 838, 292, 209, 340, 340, 340, - 292, 211, 385, 209, 328, 209, 344, 211, 613, 344, - 367, 379, 367, 840, 211, 385, 211, 382, 367, 379, - 369, 369, 344, 695, 344, 367, 382, 379, 445, 382, - 389, 389, 404, 404, 404, 521, 521, 266, 369, 695, - 267, 841, 445, 445, 486, 486, 486, 487, 487, 487, - - 499, 598, 598, 340, 501, 501, 501, 527, 499, 389, - 520, 520, 520, 547, 842, 527, 608, 547, 843, 562, - 562, 562, 572, 572, 572, 608, 583, 583, 583, 605, - 605, 547, 597, 597, 597, 844, 404, 437, 437, 437, - 584, 584, 584, 604, 604, 604, 487, 437, 486, 437, - 437, 437, 437, 601, 601, 601, 606, 606, 501, 615, - 615, 615, 601, 437, 513, 513, 513, 651, 651, 651, - 848, 572, 584, 849, 513, 562, 513, 513, 513, 513, - 583, 652, 652, 687, 687, 655, 655, 655, 688, 688, - 513, 519, 519, 519, 655, 702, 656, 656, 656, 690, - - 855, 519, 702, 519, 519, 519, 519, 601, 690, 659, - 659, 659, 658, 658, 658, 703, 703, 519, 522, 522, - 522, 673, 673, 673, 686, 686, 686, 857, 698, 698, - 698, 522, 522, 522, 659, 699, 699, 699, 742, 655, - 858, 697, 697, 697, 704, 704, 704, 742, 522, 522, - 522, 522, 656, 673, 859, 522, 739, 739, 522, 740, - 740, 522, 778, 778, 522, 558, 558, 558, 658, 705, - 705, 705, 738, 738, 738, 558, 860, 558, 558, 558, - 558, 697, 698, 747, 697, 749, 749, 749, 773, 699, - 862, 558, 596, 596, 596, 779, 779, 779, 864, 747, - - 785, 785, 596, 773, 596, 596, 596, 596, 865, 750, - 750, 750, 754, 754, 754, 751, 751, 751, 596, 599, - 599, 599, 756, 756, 756, 749, 819, 819, 749, 753, - 753, 753, 599, 599, 599, 779, 866, 754, 779, 784, - 784, 784, 867, 780, 780, 780, 868, 756, 861, 599, - 599, 599, 599, 825, 825, 825, 599, 826, 826, 599, - 853, 853, 599, 750, 861, 599, 650, 650, 650, 751, - 854, 854, 781, 781, 781, 856, 650, 869, 650, 650, - 650, 650, 870, 780, 856, 753, 780, 872, 782, 782, - 782, 875, 650, 653, 653, 653, 876, 839, 839, 839, - - 852, 852, 852, 820, 820, 820, 653, 653, 653, 781, - 877, 878, 781, 880, 882, 781, 821, 821, 821, 883, - 822, 822, 822, 653, 653, 653, 653, 782, 782, 884, - 653, 782, 885, 653, 886, 887, 653, 888, 890, 653, - 700, 700, 700, 820, 891, 892, 820, 823, 823, 823, - 700, 839, 700, 700, 700, 700, 821, 822, 893, 821, - 822, 897, 897, 822, 898, 898, 700, 752, 752, 752, - 899, 901, 829, 829, 829, 902, 903, 752, 904, 752, - 752, 752, 752, 831, 831, 831, 823, 823, 906, 908, - 823, 914, 915, 752, 786, 786, 786, 829, 896, 896, - - 896, 833, 833, 833, 850, 850, 850, 786, 786, 786, - 851, 851, 851, 900, 905, 916, 917, 918, 921, 863, - 863, 863, 900, 922, 786, 786, 786, 786, 923, 924, - 905, 786, 925, 926, 786, 927, 928, 786, 938, 831, - 786, 827, 827, 827, 850, 850, 939, 850, 931, 931, - 851, 940, 943, 851, 827, 827, 827, 833, 851, 863, - 947, 951, 863, 894, 894, 894, 953, 895, 895, 895, - 954, 827, 827, 827, 827, 863, 955, 935, 827, 935, - 956, 827, 957, 959, 827, 960, 970, 827, 907, 907, - 907, 909, 909, 909, 912, 912, 912, 919, 919, 919, - - 929, 929, 929, 894, 894, 971, 894, 895, 963, 963, - 895, 967, 972, 967, 973, 895, 980, 930, 930, 930, - 976, 976, 976, 977, 977, 981, 983, 984, 907, 985, - 986, 907, 932, 932, 932, 987, 933, 933, 933, 990, - 929, 991, 992, 929, 907, 993, 992, 909, 929, 994, - 912, 919, 920, 920, 920, 996, 993, 930, 997, 998, - 930, 1001, 920, 930, 920, 920, 920, 920, 934, 934, - 934, 1003, 932, 1004, 1005, 932, 933, 1006, 920, 933, - 961, 961, 961, 1009, 1010, 1013, 1014, 1015, 932, 962, - 962, 962, 933, 964, 964, 964, 1011, 965, 965, 965, - - 1011, 966, 966, 966, 1012, 934, 1018, 1018, 934, 1019, - 1019, 934, 1017, 1017, 1017, 1012, 1020, 1021, 1022, 1023, - 961, 1024, 1025, 961, 934, 1027, 1021, 1026, 961, 962, - 1029, 1031, 962, 964, 1032, 962, 964, 965, 966, 1033, - 965, 966, 1041, 1026, 966, 1037, 1037, 1037, 1042, 964, - 1038, 1038, 1043, 965, 988, 988, 988, 966, 978, 978, - 978, 1045, 1047, 1043, 1049, 1044, 1050, 1051, 1007, 1007, - 1007, 978, 978, 978, 1044, 1052, 1056, 1056, 1056, 1057, - 1057, 1028, 1028, 1028, 1060, 1036, 1036, 1036, 978, 978, - 978, 978, 1061, 1063, 988, 978, 1065, 988, 978, 1062, - - 988, 978, 1063, 1066, 978, 989, 989, 989, 1007, 1073, - 1062, 1007, 1067, 1067, 1007, 989, 1086, 989, 989, 989, - 989, 1028, 1080, 1080, 1028, 1036, 1088, 1071, 1036, 1071, - 1089, 989, 1090, 1055, 1055, 1055, 1091, 1028, 1084, 1084, - 1064, 1064, 1064, 1085, 1085, 989, 1093, 1095, 989, 1008, - 1008, 1008, 1079, 1079, 1079, 1083, 1083, 1083, 1087, 1008, - 1096, 1008, 1008, 1008, 1008, 1092, 1099, 1087, 1100, 1068, - 1068, 1068, 1102, 1055, 1114, 1008, 1055, 1094, 1094, 1094, - 1116, 1092, 1097, 1069, 1069, 1069, 1107, 1107, 1107, 1008, - 1115, 1097, 1008, 1034, 1034, 1034, 1064, 1108, 1108, 1115, - - 1070, 1070, 1070, 1034, 1117, 1034, 1034, 1034, 1034, 1068, - 1112, 1112, 1068, 1118, 1078, 1078, 1078, 1094, 1119, 1034, - 1035, 1035, 1035, 1069, 1121, 1068, 1069, 1106, 1106, 1106, - 1035, 1123, 1035, 1035, 1035, 1035, 1124, 1070, 1129, 1069, - 1070, 1113, 1113, 1070, 1131, 1132, 1035, 1039, 1039, 1039, - 1111, 1111, 1111, 1120, 1078, 1134, 1070, 1078, 1140, 1125, - 1039, 1039, 1039, 1122, 1122, 1122, 1134, 1106, 1125, 1120, - 1106, 1127, 1127, 1127, 1135, 1135, 1135, 1039, 1039, 1039, - 1039, 1133, 1138, 1138, 1039, 1133, 1142, 1039, 1139, 1139, - 1039, 1141, 1143, 1039, 1053, 1053, 1053, 1137, 1137, 1137, - - 1141, 1144, 1145, 1122, 1053, 1147, 1053, 1053, 1053, 1053, - 1146, 1148, 1148, 1148, 1149, 1149, 1150, 1150, 1150, 1153, - 1053, 1054, 1054, 1054, 1158, 1158, 1146, 1127, 1161, 1168, - 1135, 1054, 1170, 1054, 1054, 1054, 1054, 1151, 1151, 1151, - 1157, 1157, 1157, 1156, 1156, 1156, 1169, 1054, 1058, 1058, - 1058, 1171, 1152, 1152, 1152, 1169, 1150, 1165, 1165, 1165, - 1172, 1058, 1058, 1058, 1166, 1166, 1167, 1167, 1173, 1175, - 1181, 1174, 1176, 1176, 1176, 1177, 1177, 1151, 1058, 1058, - 1058, 1058, 1190, 1156, 1191, 1058, 1156, 1174, 1058, 1152, - 1195, 1058, 1152, 1210, 1058, 1076, 1076, 1076, 1212, 1156, - - 1178, 1178, 1178, 1186, 1186, 1076, 1213, 1076, 1076, 1076, - 1076, 1179, 1179, 1179, 1185, 1185, 1185, 1184, 1184, 1184, - 1192, 1076, 1081, 1081, 1081, 1193, 1180, 1180, 1180, 1196, - 1196, 1192, 1204, 1204, 1193, 1081, 1081, 1081, 1208, 1208, - 1178, 1194, 1194, 1194, 1197, 1197, 1197, 1198, 1198, 1198, - 1214, 1179, 1081, 1081, 1081, 1081, 1215, 1184, 1211, 1081, - 1184, 1217, 1081, 1180, 1216, 1081, 1180, 1211, 1081, 1098, - 1098, 1098, 1234, 1184, 1199, 1199, 1199, 1209, 1209, 1098, - 1216, 1098, 1098, 1098, 1098, 1202, 1202, 1202, 1203, 1203, - 1203, 1207, 1207, 1207, 1236, 1098, 1237, 1194, 1218, 1218, - - 1218, 1220, 1220, 1221, 1221, 1221, 1098, 1104, 1104, 1104, - 1222, 1222, 1222, 1238, 1199, 1199, 1239, 1104, 1241, 1104, - 1104, 1104, 1104, 1228, 1228, 1202, 1232, 1232, 1202, 1223, - 1223, 1223, 1243, 1104, 1109, 1109, 1109, 1244, 1218, 1233, - 1233, 1202, 1240, 1247, 1226, 1226, 1226, 1109, 1109, 1109, - 1227, 1227, 1227, 1235, 1218, 1231, 1231, 1231, 1240, 1242, - 1242, 1242, 1235, 1245, 1109, 1109, 1109, 1109, 1253, 1223, - 1223, 1109, 1245, 1255, 1109, 1251, 1251, 1109, 1252, 1252, - 1109, 1126, 1126, 1126, 1226, 1256, 1257, 1226, 1248, 1248, - 1248, 1126, 1258, 1126, 1126, 1126, 1126, 1254, 1259, 1242, - - 1226, 1250, 1250, 1250, 1260, 1273, 1254, 1126, 1261, 1261, - 1261, 1262, 1262, 1275, 1259, 1242, 1271, 1271, 1126, 1154, - 1154, 1154, 1263, 1263, 1263, 1264, 1264, 1264, 1248, 1154, - 1276, 1154, 1154, 1154, 1154, 1277, 1248, 1272, 1272, 1265, - 1265, 1265, 1268, 1268, 1268, 1154, 1155, 1155, 1155, 1270, - 1270, 1270, 1278, 1279, 1274, 1280, 1155, 1286, 1155, 1155, - 1155, 1155, 1263, 1274, 1261, 1264, 1282, 1282, 1314, 1279, - 1291, 1291, 1155, 1159, 1159, 1159, 1265, 1316, 1263, 1265, - 1315, 1264, 1268, 1281, 1281, 1281, 1159, 1159, 1159, 1315, - 1268, 1290, 1290, 1290, 1317, 1265, 1283, 1283, 1283, 1318, - - 1284, 1284, 1284, 1159, 1159, 1159, 1159, 1295, 1295, 1319, - 1159, 1300, 1300, 1159, 1308, 1308, 1159, 1312, 1312, 1159, - 1182, 1182, 1182, 1296, 1296, 1296, 1285, 1285, 1285, 1320, - 1182, 1321, 1182, 1182, 1182, 1182, 1283, 1313, 1313, 1281, - 1284, 1289, 1289, 1289, 1331, 1320, 1182, 1183, 1183, 1183, - 1329, 1329, 1283, 1294, 1294, 1294, 1284, 1183, 1332, 1183, - 1183, 1183, 1183, 1285, 1330, 1330, 1285, 1332, 1297, 1297, - 1297, 1333, 1334, 1183, 1187, 1187, 1187, 1335, 1336, 1296, - 1338, 1289, 1285, 1385, 1289, 1340, 1340, 1187, 1187, 1187, - 1301, 1301, 1301, 1294, 1307, 1307, 1307, 1289, 1386, 1294, - - 1298, 1298, 1298, 1337, 1187, 1187, 1187, 1187, 1302, 1302, - 1302, 1187, 1348, 1348, 1187, 1395, 1396, 1187, 1397, 1337, - 1187, 1200, 1200, 1200, 1297, 1299, 1299, 1299, 1303, 1303, - 1303, 1200, 1398, 1200, 1200, 1200, 1200, 1311, 1311, 1311, - 1298, 1298, 1328, 1328, 1328, 1399, 1301, 1200, 1205, 1205, - 1205, 1400, 1401, 1403, 1404, 1405, 1298, 1406, 1407, 1408, - 1409, 1205, 1205, 1205, 1302, 1299, 1410, 1411, 1303, 1303, - 1413, 1299, 1414, 812, 811, 810, 809, 808, 1205, 1205, - 1205, 1205, 807, 804, 1303, 1205, 803, 802, 1205, 801, - 799, 1205, 798, 797, 1205, 1219, 1219, 1219, 1219, 1219, - + 81, 81, 81, 81, 81, 81, 81, 81, 88, 832, + 88, 95, 95, 95, 96, 96, 96, 98, 98, 98, + 102, 176, 176, 176, 177, 177, 177, 260, 102, 346, + 102, 346, 102, 102, 102, 187, 187, 187, 346, 102, + 260, 189, 189, 189, 202, 206, 202, 177, 191, 191, + 191, 206, 98, 208, 208, 208, 206, 305, 98, 244, + 244, 244, 305, 88, 297, 98, 95, 98, 206, 96, + 613, 189, 209, 209, 209, 307, 307, 187, 176, 189, + + 297, 177, 191, 194, 194, 194, 613, 194, 211, 211, + 211, 465, 187, 194, 245, 245, 245, 773, 189, 202, + 194, 194, 194, 306, 306, 191, 465, 209, 208, 266, + 266, 266, 773, 209, 267, 267, 267, 834, 284, 284, + 209, 281, 209, 211, 319, 281, 281, 292, 328, 211, + 284, 690, 344, 306, 292, 344, 211, 319, 211, 292, + 690, 328, 340, 340, 340, 367, 379, 367, 344, 382, + 344, 369, 369, 367, 379, 385, 389, 389, 382, 445, + 367, 382, 379, 404, 404, 404, 266, 835, 385, 369, + 836, 267, 837, 445, 445, 437, 437, 437, 486, 486, + + 486, 487, 487, 487, 499, 437, 389, 437, 437, 437, + 437, 838, 499, 501, 501, 501, 513, 513, 513, 340, + 521, 521, 437, 520, 520, 520, 513, 527, 513, 513, + 513, 513, 519, 519, 519, 527, 547, 840, 404, 841, + 547, 842, 519, 513, 519, 519, 519, 519, 558, 558, + 558, 487, 843, 486, 547, 562, 562, 562, 558, 519, + 558, 558, 558, 558, 572, 572, 572, 844, 501, 522, + 522, 522, 583, 583, 583, 558, 584, 584, 584, 596, + 596, 596, 522, 522, 522, 597, 597, 597, 848, 596, + 849, 596, 596, 596, 596, 598, 598, 604, 604, 604, + + 522, 522, 522, 522, 605, 605, 596, 522, 702, 584, + 522, 855, 562, 522, 572, 702, 522, 606, 606, 615, + 615, 615, 601, 601, 601, 652, 652, 583, 599, 599, + 599, 601, 651, 651, 651, 857, 650, 650, 650, 687, + 687, 599, 599, 599, 688, 688, 650, 777, 650, 650, + 650, 650, 686, 686, 686, 695, 656, 656, 656, 599, + 599, 599, 599, 650, 703, 703, 599, 739, 739, 599, + 858, 695, 599, 740, 740, 599, 777, 601, 653, 653, + 653, 655, 655, 655, 658, 658, 658, 697, 697, 697, + 655, 653, 653, 653, 659, 659, 659, 673, 673, 673, + + 698, 698, 698, 699, 699, 699, 704, 704, 704, 653, + 653, 653, 653, 656, 742, 859, 653, 778, 778, 653, + 659, 860, 653, 742, 747, 653, 785, 785, 697, 862, + 673, 697, 700, 700, 700, 864, 655, 705, 705, 705, + 747, 658, 700, 865, 700, 700, 700, 700, 738, 738, + 738, 749, 749, 749, 866, 698, 819, 819, 699, 700, + 750, 750, 750, 751, 751, 751, 752, 752, 752, 753, + 753, 753, 754, 754, 754, 867, 752, 868, 752, 752, + 752, 752, 756, 756, 756, 856, 779, 779, 779, 784, + 784, 784, 749, 752, 856, 749, 826, 826, 754, 780, + + 780, 780, 869, 781, 781, 781, 853, 853, 756, 782, + 782, 782, 825, 825, 825, 750, 854, 854, 751, 820, + 820, 820, 829, 829, 829, 870, 753, 779, 872, 861, + 779, 821, 821, 821, 875, 822, 822, 822, 876, 877, + 780, 781, 878, 780, 781, 861, 880, 781, 829, 782, + 782, 882, 883, 782, 786, 786, 786, 831, 831, 831, + 820, 884, 885, 820, 823, 823, 823, 786, 786, 786, + 886, 887, 821, 822, 888, 821, 822, 890, 891, 822, + 833, 833, 833, 892, 893, 786, 786, 786, 786, 839, + 839, 839, 786, 897, 897, 786, 898, 898, 786, 899, + + 901, 786, 902, 900, 823, 823, 903, 904, 823, 827, + 827, 827, 900, 906, 831, 908, 850, 850, 850, 852, + 852, 852, 827, 827, 827, 851, 851, 851, 914, 863, + 863, 863, 905, 915, 894, 894, 894, 833, 916, 917, + 827, 827, 827, 827, 839, 918, 921, 827, 905, 922, + 827, 923, 924, 827, 925, 926, 827, 850, 850, 927, + 850, 895, 895, 895, 928, 938, 851, 931, 931, 851, + 863, 939, 940, 863, 851, 894, 894, 943, 894, 896, + 896, 896, 907, 907, 907, 947, 863, 909, 909, 909, + 912, 912, 912, 919, 919, 919, 929, 929, 929, 935, + + 951, 935, 895, 953, 954, 895, 920, 920, 920, 955, + 895, 930, 930, 930, 956, 957, 920, 959, 920, 920, + 920, 920, 960, 907, 963, 963, 907, 932, 932, 932, + 967, 970, 967, 920, 933, 933, 933, 929, 971, 907, + 929, 934, 934, 934, 909, 929, 972, 912, 919, 962, + 962, 962, 930, 973, 980, 930, 977, 977, 930, 961, + 961, 961, 981, 964, 964, 964, 983, 984, 932, 985, + 986, 932, 965, 965, 965, 933, 987, 990, 933, 934, + 991, 993, 934, 994, 932, 934, 966, 966, 966, 996, + 962, 933, 993, 962, 997, 992, 962, 998, 934, 992, + + 961, 1001, 1003, 961, 964, 1004, 1005, 964, 961, 976, + 976, 976, 1006, 965, 1009, 1010, 965, 1013, 1014, 1015, + 964, 988, 988, 988, 966, 1012, 1020, 966, 1011, 965, + 966, 1022, 1011, 1017, 1017, 1017, 1012, 1018, 1018, 1007, + 1007, 1007, 1021, 966, 978, 978, 978, 1019, 1019, 1023, + 1024, 1021, 1025, 1026, 1027, 1029, 1031, 978, 978, 978, + 1032, 1033, 988, 1038, 1038, 988, 1041, 1042, 988, 1026, + 1028, 1028, 1028, 1043, 1045, 978, 978, 978, 978, 1047, + 1007, 1044, 978, 1007, 1043, 978, 1007, 1049, 978, 1050, + 1044, 978, 989, 989, 989, 1037, 1037, 1037, 1051, 1052, + + 1057, 1057, 989, 1060, 989, 989, 989, 989, 1034, 1034, + 1034, 1028, 1061, 1065, 1028, 1036, 1036, 1036, 1034, 989, + 1034, 1034, 1034, 1034, 1056, 1056, 1056, 1028, 1066, 1073, + 1035, 1035, 1035, 989, 1086, 1034, 989, 1008, 1008, 1008, + 1035, 1088, 1035, 1035, 1035, 1035, 1071, 1008, 1071, 1008, + 1008, 1008, 1008, 1053, 1053, 1053, 1036, 1035, 1062, 1036, + 1054, 1054, 1054, 1053, 1008, 1053, 1053, 1053, 1053, 1062, + 1054, 1089, 1054, 1054, 1054, 1054, 1063, 1087, 1008, 1090, + 1053, 1008, 1039, 1039, 1039, 1063, 1087, 1054, 1091, 1055, + 1055, 1055, 1067, 1067, 1093, 1039, 1039, 1039, 1064, 1064, + + 1064, 1068, 1068, 1068, 1079, 1079, 1079, 1080, 1080, 1083, + 1083, 1083, 1092, 1039, 1039, 1039, 1039, 1084, 1084, 1095, + 1039, 1085, 1085, 1039, 1096, 1099, 1039, 1100, 1092, 1039, + 1055, 1102, 1097, 1055, 1058, 1058, 1058, 1114, 1069, 1069, + 1069, 1097, 1068, 1108, 1108, 1068, 1116, 1058, 1058, 1058, + 1070, 1070, 1070, 1112, 1112, 1064, 1113, 1113, 1068, 1078, + 1078, 1078, 1107, 1107, 1107, 1058, 1058, 1058, 1058, 1111, + 1111, 1111, 1058, 1117, 1115, 1058, 1118, 1119, 1058, 1069, + 1121, 1058, 1069, 1115, 1123, 1120, 1124, 1129, 1070, 1131, + 1125, 1070, 1132, 1134, 1070, 1069, 1076, 1076, 1076, 1125, + + 1078, 1120, 1140, 1078, 1134, 1142, 1076, 1070, 1076, 1076, + 1076, 1076, 1094, 1094, 1094, 1138, 1138, 1104, 1104, 1104, + 1106, 1106, 1106, 1076, 1081, 1081, 1081, 1104, 1143, 1104, + 1104, 1104, 1104, 1144, 1122, 1122, 1122, 1081, 1081, 1081, + 1127, 1127, 1127, 1133, 1104, 1139, 1139, 1133, 1135, 1135, + 1135, 1141, 1145, 1094, 1146, 1081, 1081, 1081, 1081, 1147, + 1141, 1106, 1081, 1153, 1106, 1081, 1149, 1149, 1081, 1161, + 1146, 1081, 1098, 1098, 1098, 1122, 1137, 1137, 1137, 1148, + 1148, 1148, 1098, 1168, 1098, 1098, 1098, 1098, 1150, 1150, + 1150, 1151, 1151, 1151, 1154, 1154, 1154, 1127, 1170, 1098, + + 1152, 1152, 1152, 1171, 1154, 1135, 1154, 1154, 1154, 1154, + 1098, 1109, 1109, 1109, 1157, 1157, 1157, 1158, 1158, 1166, + 1166, 1154, 1167, 1167, 1109, 1109, 1109, 1169, 1172, 1150, + 1173, 1175, 1151, 1165, 1165, 1165, 1169, 1174, 1152, 1177, + 1177, 1152, 1109, 1109, 1109, 1109, 1156, 1156, 1156, 1109, + 1181, 1190, 1109, 1174, 1191, 1109, 1186, 1186, 1109, 1126, + 1126, 1126, 1176, 1176, 1176, 1155, 1155, 1155, 1195, 1126, + 1210, 1126, 1126, 1126, 1126, 1155, 1212, 1155, 1155, 1155, + 1155, 1178, 1178, 1178, 1213, 1192, 1126, 1156, 1214, 1193, + 1156, 1215, 1155, 1179, 1179, 1179, 1192, 1126, 1193, 1217, + + 1184, 1184, 1184, 1156, 1159, 1159, 1159, 1211, 1180, 1180, + 1180, 1196, 1196, 1182, 1182, 1182, 1211, 1159, 1159, 1159, + 1204, 1204, 1178, 1182, 1234, 1182, 1182, 1182, 1182, 1185, + 1185, 1185, 1208, 1208, 1179, 1159, 1159, 1159, 1159, 1236, + 1182, 1184, 1159, 1237, 1184, 1159, 1180, 1216, 1159, 1180, + 1238, 1159, 1183, 1183, 1183, 1209, 1209, 1184, 1194, 1194, + 1194, 1239, 1183, 1216, 1183, 1183, 1183, 1183, 1197, 1197, + 1197, 1198, 1198, 1198, 1241, 1199, 1199, 1199, 1243, 1183, + 1187, 1187, 1187, 1203, 1203, 1203, 1207, 1207, 1207, 1244, + 1202, 1202, 1202, 1187, 1187, 1187, 1218, 1218, 1218, 1220, + + 1220, 1221, 1221, 1221, 1222, 1222, 1222, 1223, 1223, 1223, + 1247, 1187, 1187, 1187, 1187, 1194, 1199, 1199, 1187, 1228, + 1228, 1187, 1232, 1232, 1187, 1233, 1233, 1187, 1200, 1200, + 1200, 1202, 1251, 1251, 1202, 1252, 1252, 1218, 1200, 1253, + 1200, 1200, 1200, 1200, 1227, 1227, 1227, 1202, 1223, 1223, + 1224, 1224, 1224, 1218, 1255, 1200, 1205, 1205, 1205, 1240, + 1224, 1256, 1224, 1224, 1224, 1224, 1231, 1231, 1231, 1205, + 1205, 1205, 1235, 1245, 1254, 1240, 1257, 1224, 1250, 1250, + 1250, 1235, 1245, 1254, 1258, 1259, 1260, 1205, 1205, 1205, + 1205, 1262, 1262, 1273, 1205, 1271, 1271, 1205, 1272, 1272, + + 1205, 1259, 1275, 1205, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, - 796, 1219, 1219, 1219, 1224, 1224, 1224, 795, 794, 1306, - 1306, 1306, 793, 792, 1224, 791, 1224, 1224, 1224, 1224, - 1322, 1322, 1322, 1359, 1359, 1359, 790, 1324, 1324, 1324, - 1224, 1229, 1229, 1229, 789, 788, 774, 772, 1339, 1339, - 1339, 1326, 1326, 1326, 1229, 1229, 1229, 768, 767, 1306, - - 766, 765, 1306, 764, 763, 1341, 1341, 1341, 762, 761, - 1322, 1229, 1229, 1229, 1229, 1306, 1359, 1324, 1229, 760, - 759, 1229, 758, 755, 1229, 1324, 1322, 1229, 1246, 1246, - 1246, 1326, 748, 1324, 1342, 1342, 1342, 746, 1246, 1326, - 1246, 1246, 1246, 1246, 1339, 1341, 745, 1326, 1343, 1343, - 1343, 744, 743, 741, 1246, 737, 1345, 1345, 1345, 736, - 735, 1341, 1349, 1349, 1349, 1246, 1287, 1287, 1287, 1347, - 1347, 1347, 734, 733, 1342, 732, 1287, 730, 1287, 1287, - 1287, 1287, 1350, 1350, 1350, 1343, 729, 728, 1343, 727, - 1342, 726, 1287, 1288, 1288, 1288, 1345, 725, 724, 1351, - - 1351, 1351, 1345, 1288, 1343, 1288, 1288, 1288, 1288, 1347, - 723, 721, 1345, 720, 719, 1347, 718, 717, 1349, 1288, - 1292, 1292, 1292, 716, 715, 1347, 713, 712, 711, 710, - 1354, 1354, 1354, 1292, 1292, 1292, 709, 708, 1350, 1351, - 1351, 706, 701, 1356, 1356, 1356, 696, 694, 693, 692, - 1292, 1292, 1292, 1292, 691, 1351, 689, 1292, 685, 684, - 1292, 683, 682, 1292, 681, 680, 1292, 1304, 1304, 1304, - 1354, 679, 1357, 1357, 1357, 678, 677, 1304, 1354, 1304, - 1304, 1304, 1304, 1356, 676, 674, 1354, 672, 671, 670, - 669, 668, 667, 1304, 1309, 1309, 1309, 666, 665, 1356, - - 664, 663, 662, 661, 660, 657, 649, 1309, 1309, 1309, - 647, 646, 1357, 645, 644, 643, 642, 641, 1357, 640, - 639, 638, 637, 636, 1309, 1309, 1309, 1309, 1357, 635, - 634, 1309, 633, 632, 1309, 631, 630, 1309, 629, 628, - 1309, 1323, 1323, 1323, 626, 625, 624, 623, 622, 621, - 620, 1323, 619, 1323, 1323, 1323, 1323, 618, 617, 616, - 614, 612, 611, 610, 609, 607, 603, 1323, 602, 595, - 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 582, 1323, 1325, 1325, 1325, 581, 580, 579, 578, 577, - 576, 575, 1325, 574, 1325, 1325, 1325, 1325, 573, 571, - - 570, 569, 568, 567, 566, 565, 564, 563, 1325, 561, - 560, 559, 557, 556, 555, 554, 553, 552, 551, 550, - 549, 546, 1325, 1344, 1344, 1344, 545, 544, 543, 542, - 541, 540, 539, 1344, 538, 1344, 1344, 1344, 1344, 537, - 535, 534, 533, 532, 531, 530, 529, 528, 526, 1344, - 525, 516, 515, 514, 512, 511, 510, 509, 508, 507, - 506, 505, 504, 1344, 1346, 1346, 1346, 503, 502, 500, - 498, 497, 495, 494, 1346, 493, 1346, 1346, 1346, 1346, - 492, 491, 490, 489, 488, 485, 484, 483, 482, 481, - 1346, 480, 479, 478, 477, 476, 475, 474, 472, 471, - - 469, 468, 467, 466, 1346, 1352, 1352, 1352, 464, 463, - 462, 461, 460, 459, 458, 1352, 457, 1352, 1352, 1352, - 1352, 456, 454, 453, 452, 451, 450, 449, 448, 447, - 446, 1352, 444, 443, 442, 441, 440, 439, 438, 436, - 435, 434, 433, 432, 431, 1352, 430, 429, 428, 427, - 426, 425, 424, 422, 421, 420, 419, 418, 417, 416, - 415, 1352, 1353, 1353, 1353, 414, 413, 412, 411, 410, - 409, 408, 1353, 407, 1353, 1353, 1353, 1353, 406, 405, - 403, 402, 401, 400, 398, 397, 396, 395, 1353, 394, - 393, 392, 391, 390, 388, 387, 386, 384, 383, 381, - - 380, 378, 1353, 377, 376, 375, 374, 373, 372, 371, - 370, 368, 366, 365, 364, 363, 362, 361, 1353, 1355, - 1355, 1355, 360, 359, 358, 357, 356, 355, 354, 1355, - 353, 1355, 1355, 1355, 1355, 351, 350, 349, 348, 347, - 345, 342, 339, 338, 337, 1355, 336, 335, 334, 333, - 332, 331, 330, 329, 327, 326, 325, 324, 322, 1355, - 321, 320, 318, 317, 316, 315, 313, 312, 311, 310, - 309, 308, 304, 303, 302, 1355, 1358, 1358, 1358, 301, - 300, 299, 298, 296, 295, 294, 1358, 293, 1358, 1358, - 1358, 1358, 291, 289, 288, 287, 286, 285, 283, 280, - - 279, 278, 1358, 277, 276, 275, 274, 273, 272, 271, - 270, 269, 264, 262, 261, 259, 1358, 258, 257, 256, - 254, 253, 251, 250, 249, 248, 246, 242, 238, 236, - 234, 232, 1358, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1363, 1363, 1363, - 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1364, + 1276, 1219, 1219, 1219, 1226, 1226, 1226, 1277, 1242, 1242, + 1242, 1248, 1248, 1248, 1261, 1261, 1261, 1263, 1263, 1263, + 1270, 1270, 1270, 1278, 1279, 1264, 1264, 1264, 1274, 1265, + 1265, 1265, 1268, 1268, 1268, 1280, 1286, 1274, 1282, 1282, + + 1279, 1281, 1281, 1281, 1314, 1226, 1291, 1291, 1226, 1242, + 1295, 1295, 1248, 1290, 1290, 1290, 1300, 1300, 1263, 1316, + 1248, 1226, 1229, 1229, 1229, 1242, 1264, 1265, 1308, 1308, + 1265, 1261, 1317, 1268, 1263, 1229, 1229, 1229, 1283, 1283, + 1283, 1268, 1264, 1307, 1307, 1307, 1265, 1284, 1284, 1284, + 1311, 1311, 1311, 1229, 1229, 1229, 1229, 1318, 1281, 1315, + 1229, 1312, 1312, 1229, 1313, 1313, 1229, 1319, 1315, 1229, + 1246, 1246, 1246, 1285, 1285, 1285, 1321, 1329, 1329, 1283, + 1246, 1331, 1246, 1246, 1246, 1246, 1320, 1332, 1284, 1296, + 1296, 1296, 1297, 1297, 1297, 1283, 1332, 1246, 1289, 1289, + + 1289, 1333, 1320, 1334, 1284, 1287, 1287, 1287, 1246, 1330, + 1330, 1285, 1335, 1336, 1285, 1287, 1338, 1287, 1287, 1287, + 1287, 1288, 1288, 1288, 1337, 1294, 1294, 1294, 1340, 1340, + 1285, 1288, 1287, 1288, 1288, 1288, 1288, 1348, 1348, 1289, + 1337, 1385, 1289, 1328, 1328, 1328, 1296, 1386, 1288, 1297, + 1298, 1298, 1298, 1395, 1396, 1289, 1292, 1292, 1292, 1397, + 1399, 1299, 1299, 1299, 1400, 1403, 1294, 1404, 1405, 1292, + 1292, 1292, 1294, 1301, 1301, 1301, 1302, 1302, 1302, 1303, + 1303, 1303, 1306, 1306, 1306, 1406, 1407, 1292, 1292, 1292, + 1292, 1298, 1298, 1408, 1292, 1409, 1410, 1292, 1411, 1413, + + 1292, 1414, 1299, 1292, 1304, 1304, 1304, 1298, 1299, 1322, + 1322, 1322, 812, 811, 1304, 810, 1304, 1304, 1304, 1304, + 1303, 1303, 809, 1306, 808, 807, 1306, 804, 803, 802, + 1301, 1304, 801, 1302, 799, 798, 1303, 797, 796, 1306, + 1309, 1309, 1309, 795, 794, 793, 792, 1359, 1359, 1359, + 1322, 791, 790, 1309, 1309, 1309, 1324, 1324, 1324, 1339, + 1339, 1339, 789, 1326, 1326, 1326, 1322, 1341, 1341, 1341, + 788, 1309, 1309, 1309, 1309, 774, 772, 768, 1309, 767, + 766, 1309, 765, 764, 1309, 763, 762, 1309, 1323, 1323, + 1323, 1359, 1342, 1342, 1342, 761, 760, 1324, 1323, 759, + + 1323, 1323, 1323, 1323, 1326, 1324, 758, 755, 1341, 1343, + 1343, 1343, 1326, 1324, 748, 1323, 1339, 746, 745, 744, + 1326, 1345, 1345, 1345, 1341, 743, 1349, 1349, 1349, 1323, + 1325, 1325, 1325, 1342, 1347, 1347, 1347, 1350, 1350, 1350, + 1325, 741, 1325, 1325, 1325, 1325, 737, 1343, 736, 1342, + 1343, 1351, 1351, 1351, 1354, 1354, 1354, 1325, 735, 734, + 733, 732, 1345, 1356, 1356, 1356, 1343, 730, 1345, 729, + 728, 1325, 1344, 1344, 1344, 1347, 727, 726, 1345, 725, + 724, 1347, 1344, 1349, 1344, 1344, 1344, 1344, 723, 721, + 720, 1347, 1351, 1351, 1350, 1354, 1357, 1357, 1357, 1344, + + 719, 718, 717, 1354, 1356, 716, 715, 713, 1351, 712, + 711, 1354, 710, 1344, 1346, 1346, 1346, 709, 708, 706, + 1356, 701, 696, 694, 1346, 693, 1346, 1346, 1346, 1346, + 692, 691, 689, 685, 684, 683, 682, 1357, 681, 680, + 679, 1346, 678, 1357, 677, 676, 674, 672, 671, 670, + 669, 668, 667, 1357, 666, 1346, 1352, 1352, 1352, 665, + 664, 663, 662, 661, 660, 657, 1352, 649, 1352, 1352, + 1352, 1352, 647, 646, 645, 644, 643, 642, 641, 640, + 639, 638, 637, 1352, 636, 635, 634, 633, 632, 631, + 630, 629, 628, 626, 625, 624, 623, 1352, 622, 621, + + 620, 619, 618, 617, 616, 614, 612, 611, 610, 609, + 607, 603, 602, 1352, 1353, 1353, 1353, 595, 594, 593, + 592, 591, 590, 589, 1353, 588, 1353, 1353, 1353, 1353, + 587, 586, 585, 582, 581, 580, 579, 578, 577, 576, + 575, 1353, 574, 573, 571, 570, 569, 568, 567, 566, + 565, 564, 563, 561, 560, 1353, 559, 557, 556, 555, + 554, 553, 552, 551, 550, 549, 546, 545, 544, 543, + 542, 1353, 1355, 1355, 1355, 541, 540, 539, 538, 537, + 535, 534, 1355, 533, 1355, 1355, 1355, 1355, 532, 531, + 530, 529, 528, 526, 525, 516, 515, 514, 512, 1355, + + 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, + 500, 498, 497, 1355, 495, 494, 493, 492, 491, 490, + 489, 488, 485, 484, 483, 482, 481, 480, 479, 1355, + 1358, 1358, 1358, 478, 477, 476, 475, 474, 472, 471, + 1358, 469, 1358, 1358, 1358, 1358, 468, 467, 466, 464, + 463, 462, 461, 460, 459, 458, 457, 1358, 456, 454, + 453, 452, 451, 450, 449, 448, 447, 446, 444, 443, + 442, 1358, 441, 440, 439, 438, 436, 435, 434, 433, + 432, 431, 430, 429, 428, 427, 426, 1358, 1361, 1361, + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + + 1361, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + 1362, 1362, 1362, 1362, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, - 1364, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, + 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - - 1366, 1366, 1366, 1366, 1366, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1368, 1368, 1368, - 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1369, - 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, - 1369, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1371, 1371, 1371, 1371, 1371, 1371, 1371, - 1371, 1371, 1371, 1371, 1371, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1374, + 1366, 1366, 1366, 1366, 1366, 1366, 1367, 1367, 1367, 1367, + 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1368, + 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + 1368, 1368, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, + + 1369, 1369, 1369, 1369, 1369, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - - 1374, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, + 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1376, 1376, 1376, 1376, 1376, 1376, 1376, - 1376, 1376, 1376, 1376, 1376, 1377, 1377, 1377, 1377, 1377, - 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378, 231, 230, - 1378, 229, 1378, 1378, 1378, 1378, 1378, 1379, 228, 226, - 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1380, 1380, 225, - 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1381, - 223, 221, 220, 1381, 1382, 219, 218, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 217, 1382, 1383, 215, 1383, 1383, - 1383, 1384, 1384, 1387, 214, 213, 1387, 1387, 1387, 1387, - - 1387, 1387, 1387, 1388, 212, 203, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 196, 1389, 1389, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 192, 1390, 1390, 1390, 1391, 1391, 1391, - 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1392, 188, 184, - 170, 1392, 1393, 1393, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1402, 1402, 1402, 1402, - 1402, 1402, 1402, 1402, 1402, 169, 1402, 1402, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 167, 1412, - 161, 160, 159, 157, 156, 155, 154, 153, 151, 149, - - 147, 145, 144, 143, 142, 141, 135, 124, 120, 117, - 114, 109, 108, 103, 93, 82, 80, 78, 77, 76, - 74, 73, 72, 70, 68, 62, 58, 55, 52, 45, - 42, 41, 34, 33, 1360, 1360, 1360, 1360, 1360, 1360, + 1376, 1376, 1376, 1376, 1376, 1376, 1377, 1377, 1377, 1377, + + 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378, + 425, 424, 1378, 1378, 422, 1378, 1378, 1378, 1378, 1378, + 1379, 421, 420, 1379, 1379, 1379, 1379, 1379, 1379, 1379, + 1379, 1380, 1380, 419, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1381, 418, 417, 416, 1381, 1382, + 415, 414, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 413, 1382, 1383, 412, 1383, 1383, 1383, 1384, 1384, 1387, + 411, 410, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + 1388, 409, 408, 1388, 1388, 1388, 1388, 1388, 1388, 1388, + 1388, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + + 1389, 407, 1389, 1389, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 1390, 1390, 406, 1390, 1390, 1390, 1391, 1391, 1391, + 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1392, 405, + 403, 402, 1392, 1393, 1393, 1394, 1394, 1394, 1394, 1394, + 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1398, 401, + 400, 398, 397, 1398, 1401, 396, 395, 394, 393, 1401, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 392, 1402, 1402, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 391, 1412, 390, 388, 387, 386, + 384, 383, 381, 380, 378, 377, 376, 375, 374, 373, + + 372, 371, 370, 368, 366, 365, 364, 363, 362, 361, + 360, 359, 358, 357, 356, 355, 354, 353, 351, 350, + 349, 348, 347, 345, 342, 339, 338, 337, 336, 335, + 334, 333, 332, 331, 330, 329, 327, 326, 325, 324, + 322, 321, 320, 318, 317, 316, 315, 313, 312, 311, + 310, 309, 308, 304, 303, 302, 301, 300, 299, 298, + 296, 295, 294, 293, 291, 289, 288, 287, 286, 285, + 283, 280, 279, 278, 277, 276, 275, 274, 273, 272, + 271, 270, 269, 264, 262, 261, 259, 258, 257, 256, + 254, 253, 251, 250, 249, 248, 246, 242, 238, 236, + + 234, 232, 231, 230, 229, 228, 226, 225, 223, 221, + 220, 219, 218, 217, 215, 214, 213, 212, 203, 196, + 192, 188, 184, 170, 169, 167, 161, 160, 159, 157, + 156, 155, 154, 153, 151, 149, 147, 145, 144, 143, + 142, 141, 135, 124, 120, 117, 114, 109, 108, 103, + 93, 82, 80, 78, 77, 76, 74, 73, 72, 70, + 68, 62, 58, 55, 52, 45, 42, 41, 34, 33, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360 - + 1360 } ; static yy_state_type yy_last_accepting_state; @@ -1737,13 +1745,16 @@ char *yytext; #line 97 "detex.l" #undef IGNORE +#undef ECHO #define LaBEGIN if (fLatex) BEGIN -#define IGNORE if (fSpace && !fWord) putchar(' ') +#define IGNORE Ignore() +#define INCRLINENO IncrLineNo() +#define ECHO Echo() #define NOUN if (fSpace && !fWord && !fReplace) putchar(' '); else {if (fReplace) printf("noun");} #define VERBNOUN if (fReplace) printf(" verbs noun"); /* puts a verb and a noun to make grammar checking work */ #define SPACE if (!fWord) putchar(' ') -#define NEWLINE if (!fWord) putchar('\n') +#define NEWLINE LineBreak() #define LATEX fLatex=!fForcetex #define KILLARGS(x) cArgs=x; LaBEGIN LaMacro #define STRIPARGS(x) cArgs=x; LaBEGIN LaMacro2 @@ -1751,6 +1762,10 @@ char *yytext; #define NO_MALLOC_DECL +void LineBreak(); +void Ignore(); +void IncrLineNo(); +void Echo(); void AddInclude(char *sbFile); void ErrorExit(const char *sb1); void UsageExit(void); @@ -1800,8 +1815,9 @@ int fFollow = 1; /* flag to follow input/include */ int fCite = 0; /* flag to echo \cite and \ref args */ int fSpace = 0; /* flag to replace \cs with space */ int fForcetex = 0; /* flag to inhibit latex mode */ -int fShowPictures = 0; /* flag to show picture names */ -int fReplace = 0; /* flag to replace envirnments with "noun" */ +int fSrcLoc = 0; /* flag to display source location of original file */ +int fShowPictures = 0; /* flag to show picture names */ +int fReplace = 0; /* flag to replace envirnments with "noun" */ int currBracesLevel = 0; int footnoteLevel = -100; @@ -1811,13 +1827,16 @@ int footnoteLevel = -100; * otherwise output contains imported files in reverse order. Weird, but * true. */ -YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */ -int csb = 0; /* depth of flex context stack */ +YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */ +char* fFileNames[NOFILE + 1]; /* names of the buffers in context stack */ +int fFileLines[NOFILE + 1]; /* line number in each of the context files */ +int fIsColumn0 = 1; /* Are we at the begining of a line? */ +int csb = 0; /* depth of flex context stack */ #endif /* FLEX_SCANNER */ -#line 1819 "lex.yy.c" +#line 1838 "lex.yy.c" -#line 1821 "lex.yy.c" +#line 1840 "lex.yy.c" #define INITIAL 0 #define Define 1 @@ -2053,9 +2072,9 @@ YY_DECL } { -#line 196 "detex.l" +#line 208 "detex.l" -#line 2059 "lex.yy.c" +#line 2078 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2110,24 +2129,24 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 197 "detex.l" -/* ignore comments */ ; +#line 209 "detex.l" +/* ignore comments */ {INCRLINENO;} YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 199 "detex.l" +#line 211 "detex.l" {LATEX; IGNORE;} YY_BREAK case 3: YY_RULE_SETUP -#line 201 "detex.l" +#line 213 "detex.l" /* environment start */ {LaBEGIN LaBegin; IGNORE;} YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 203 "detex.l" +#line 215 "detex.l" { if (BeginEnv("verbatim")) BEGIN LaEnv; else @@ -2138,24 +2157,24 @@ YY_RULE_SETUP case 5: /* rule 5 can match eol */ YY_RULE_SETUP -#line 210 "detex.l" +#line 222 "detex.l" /* verbatim mode */ {BEGIN Normal; IGNORE;} YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 211 "detex.l" +#line 223 "detex.l" ECHO; YY_BREAK case 7: YY_RULE_SETUP -#line 212 "detex.l" +#line 224 "detex.l" ECHO; YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP -#line 214 "detex.l" +#line 226 "detex.l" { KILLARGS(1); if (BeginEnv("minipage")) BEGIN LaEnv; @@ -2167,7 +2186,7 @@ YY_RULE_SETUP case 9: /* rule 9 can match eol */ YY_RULE_SETUP -#line 222 "detex.l" +#line 234 "detex.l" { if (BeginEnv("table")) BEGIN LaEnv; @@ -2179,7 +2198,7 @@ YY_RULE_SETUP case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 230 "detex.l" +#line 242 "detex.l" { if (BeginEnv("figure")) BEGIN LaEnv; @@ -2190,7 +2209,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 238 "detex.l" +#line 250 "detex.l" { if (BeginEnv(yytext)) BEGIN LaEnv; else @@ -2201,28 +2220,28 @@ YY_RULE_SETUP /*<LaBegin>"\n" NEWLINE;*/ case 12: YY_RULE_SETUP -#line 245 "detex.l" -; +#line 257 "detex.l" +{INCRLINENO;} YY_BREAK case 13: YY_RULE_SETUP -#line 247 "detex.l" +#line 259 "detex.l" /* absorb some environments */ {LaBEGIN LaEnd; IGNORE;} YY_BREAK case 14: /* rule 14 can match eol */ YY_RULE_SETUP -#line 248 "detex.l" +#line 260 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 15: YY_RULE_SETUP -#line 249 "detex.l" -; +#line 261 "detex.l" +{INCRLINENO;} YY_BREAK case 16: YY_RULE_SETUP -#line 251 "detex.l" +#line 263 "detex.l" /* end environment */ { if (EndEnv(yytext)) BEGIN Normal; IGNORE; @@ -2230,354 +2249,354 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 255 "detex.l" +#line 267 "detex.l" {BEGIN LaEnv; IGNORE;} YY_BREAK /*<LaEnd>"\n" NEWLINE;*/ case 18: YY_RULE_SETUP -#line 257 "detex.l" -; +#line 269 "detex.l" +{INCRLINENO;} YY_BREAK case 19: /* rule 19 can match eol */ YY_RULE_SETUP -#line 259 "detex.l" +#line 271 "detex.l" ; YY_BREAK case 20: /* rule 20 can match eol */ YY_RULE_SETUP -#line 260 "detex.l" +#line 272 "detex.l" ; YY_BREAK case 21: /* rule 21 can match eol */ YY_RULE_SETUP -#line 261 "detex.l" +#line 273 "detex.l" ; YY_BREAK case 22: /* rule 22 can match eol */ YY_RULE_SETUP -#line 262 "detex.l" +#line 274 "detex.l" ; YY_BREAK case 23: /* rule 23 can match eol */ YY_RULE_SETUP -#line 263 "detex.l" +#line 275 "detex.l" ; YY_BREAK case 24: /* rule 24 can match eol */ YY_RULE_SETUP -#line 264 "detex.l" +#line 276 "detex.l" ; YY_BREAK case 25: YY_RULE_SETUP -#line 265 "detex.l" +#line 277 "detex.l" ; /* hack to fix \begin{minipage}{300pt} */ YY_BREAK case 26: YY_RULE_SETUP -#line 267 "detex.l" +#line 279 "detex.l" { KILLARGS(1); } YY_BREAK case 27: YY_RULE_SETUP -#line 268 "detex.l" +#line 280 "detex.l" { KILLARGS(2); } YY_BREAK case 28: YY_RULE_SETUP -#line 269 "detex.l" +#line 281 "detex.l" { KILLARGS(2); } YY_BREAK case 29: YY_RULE_SETUP -#line 270 "detex.l" +#line 282 "detex.l" { KILLARGS(2); } YY_BREAK case 30: YY_RULE_SETUP -#line 271 "detex.l" +#line 283 "detex.l" { KILLARGS(2); } YY_BREAK case 31: YY_RULE_SETUP -#line 272 "detex.l" +#line 284 "detex.l" { KILLARGS(2); } YY_BREAK case 32: YY_RULE_SETUP -#line 273 "detex.l" +#line 285 "detex.l" { KILLARGS(1); } YY_BREAK case 33: YY_RULE_SETUP -#line 274 "detex.l" +#line 286 "detex.l" { KILLARGS(1); } YY_BREAK case 34: YY_RULE_SETUP -#line 275 "detex.l" +#line 287 "detex.l" { KILLARGS(2); } YY_BREAK case 35: YY_RULE_SETUP -#line 276 "detex.l" +#line 288 "detex.l" { KILLARGS(1); } YY_BREAK case 36: YY_RULE_SETUP -#line 277 "detex.l" +#line 289 "detex.l" { STRIPARGS(2); } YY_BREAK case 37: YY_RULE_SETUP -#line 278 "detex.l" +#line 290 "detex.l" { KILLARGS(1); } YY_BREAK case 38: YY_RULE_SETUP -#line 279 "detex.l" +#line 291 "detex.l" { STRIPARGS(2); } YY_BREAK case 39: YY_RULE_SETUP -#line 280 "detex.l" +#line 292 "detex.l" { KILLARGS(2); } YY_BREAK case 40: YY_RULE_SETUP -#line 281 "detex.l" +#line 293 "detex.l" ; YY_BREAK case 41: YY_RULE_SETUP -#line 282 "detex.l" +#line 294 "detex.l" { KILLARGS(1); } YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP -#line 283 "detex.l" +#line 295 "detex.l" { LaBEGIN LaPicture; } YY_BREAK case 43: YY_RULE_SETUP -#line 285 "detex.l" +#line 297 "detex.l" ; YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP -#line 286 "detex.l" +#line 298 "detex.l" { if(fShowPictures) { printf("<Picture %s>", yytext); } } YY_BREAK case 45: /* rule 45 can match eol */ YY_RULE_SETUP -#line 287 "detex.l" -BEGIN Normal; +#line 299 "detex.l" +{ BEGIN Normal; INCRLINENO; } YY_BREAK case 46: YY_RULE_SETUP -#line 288 "detex.l" +#line 300 "detex.l" BEGIN Normal; YY_BREAK case 47: YY_RULE_SETUP -#line 290 "detex.l" +#line 302 "detex.l" { KILLARGS(3); } YY_BREAK case 48: YY_RULE_SETUP -#line 291 "detex.l" +#line 303 "detex.l" { KILLARGS(1); } YY_BREAK case 49: YY_RULE_SETUP -#line 292 "detex.l" +#line 304 "detex.l" { KILLARGS(2); } YY_BREAK case 50: YY_RULE_SETUP -#line 293 "detex.l" +#line 305 "detex.l" { KILLARGS(2); } YY_BREAK case 51: YY_RULE_SETUP -#line 294 "detex.l" +#line 306 "detex.l" { KILLARGS(3); } YY_BREAK case 52: YY_RULE_SETUP -#line 295 "detex.l" +#line 307 "detex.l" { KILLARGS(1); } YY_BREAK case 53: YY_RULE_SETUP -#line 296 "detex.l" +#line 308 "detex.l" { STRIPARGS(1); } YY_BREAK case 54: YY_RULE_SETUP -#line 297 "detex.l" +#line 309 "detex.l" { KILLARGS(1); } YY_BREAK case 55: YY_RULE_SETUP -#line 298 "detex.l" +#line 310 "detex.l" { KILLARGS(1); } YY_BREAK case 56: YY_RULE_SETUP -#line 299 "detex.l" +#line 311 "detex.l" { KILLARGS(3); } YY_BREAK case 57: YY_RULE_SETUP -#line 301 "detex.l" +#line 313 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 58: YY_RULE_SETUP -#line 302 "detex.l" +#line 314 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 59: YY_RULE_SETUP -#line 303 "detex.l" +#line 315 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 60: YY_RULE_SETUP -#line 304 "detex.l" +#line 316 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 61: YY_RULE_SETUP -#line 305 "detex.l" +#line 317 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 62: YY_RULE_SETUP -#line 306 "detex.l" +#line 318 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 63: YY_RULE_SETUP -#line 307 "detex.l" +#line 319 "detex.l" ;/*NEWLINE;*/ YY_BREAK case 64: YY_RULE_SETUP -#line 309 "detex.l" +#line 321 "detex.l" /* ignore args */ {KILLARGS(1); IGNORE;} YY_BREAK case 65: YY_RULE_SETUP -#line 310 "detex.l" +#line 322 "detex.l" /* of these \cs */ {KILLARGS(1); IGNORE;} YY_BREAK case 66: YY_RULE_SETUP -#line 311 "detex.l" +#line 323 "detex.l" {KILLARGS(1); IGNORE;} YY_BREAK case 67: YY_RULE_SETUP -#line 312 "detex.l" +#line 324 "detex.l" {KILLARGS(1);} /* kill space before */ YY_BREAK case 68: YY_RULE_SETUP -#line 313 "detex.l" +#line 325 "detex.l" {LATEX; KILLARGS(1); IGNORE;} YY_BREAK case 69: YY_RULE_SETUP -#line 314 "detex.l" +#line 326 "detex.l" {LATEX; KILLARGS(1); IGNORE;} YY_BREAK case 70: YY_RULE_SETUP -#line 315 "detex.l" +#line 327 "detex.l" {KILLARGS(1); IGNORE;} YY_BREAK case 71: YY_RULE_SETUP -#line 316 "detex.l" +#line 328 "detex.l" {KILLARGS(1); IGNORE;} YY_BREAK case 72: YY_RULE_SETUP -#line 317 "detex.l" +#line 329 "detex.l" {KILLARGS(1);} YY_BREAK case 73: YY_RULE_SETUP -#line 318 "detex.l" +#line 330 "detex.l" {KILLARGS(1);} YY_BREAK /*<Normal>"\\footnote" {KILLARGS(1); SPACE;}*/ case 74: YY_RULE_SETUP -#line 320 "detex.l" +#line 332 "detex.l" {KILLARGS(1); IGNORE;} YY_BREAK case 75: YY_RULE_SETUP -#line 321 "detex.l" +#line 333 "detex.l" {CITE(1); IGNORE;} YY_BREAK case 76: YY_RULE_SETUP -#line 322 "detex.l" +#line 334 "detex.l" {CITE(1); IGNORE;} YY_BREAK case 77: YY_RULE_SETUP -#line 323 "detex.l" +#line 335 "detex.l" {KILLARGS(1); IGNORE;} YY_BREAK case 78: YY_RULE_SETUP -#line 324 "detex.l" +#line 336 "detex.l" {CITE(1); IGNORE;} YY_BREAK case 79: YY_RULE_SETUP -#line 325 "detex.l" +#line 337 "detex.l" {KILLARGS(2); IGNORE;} YY_BREAK case 80: YY_RULE_SETUP -#line 326 "detex.l" +#line 338 "detex.l" {KILLARGS(2); IGNORE;} YY_BREAK case 81: YY_RULE_SETUP -#line 327 "detex.l" +#line 339 "detex.l" { KILLARGS(1); } YY_BREAK case 82: YY_RULE_SETUP -#line 328 "detex.l" +#line 340 "detex.l" { KILLARGS(2); } YY_BREAK case 83: YY_RULE_SETUP -#line 330 "detex.l" +#line 342 "detex.l" {KILLARGS(1);} YY_BREAK case 84: /* rule 84 can match eol */ YY_RULE_SETUP -#line 332 "detex.l" +#line 344 "detex.l" { putchar('('); footnoteLevel = currBracesLevel; @@ -2586,7 +2605,7 @@ YY_RULE_SETUP YY_BREAK case 85: YY_RULE_SETUP -#line 337 "detex.l" +#line 349 "detex.l" /* ignore \verb<ch>...<ch> */ { if (fLatex) { char verbchar, c; verbchar = input(); @@ -2600,157 +2619,157 @@ YY_RULE_SETUP YY_BREAK case 86: YY_RULE_SETUP -#line 348 "detex.l" +#line 360 "detex.l" { LATEX; KILLARGS(2); } YY_BREAK case 87: YY_RULE_SETUP -#line 349 "detex.l" +#line 361 "detex.l" { LATEX; KILLARGS(2); } YY_BREAK case 88: YY_RULE_SETUP -#line 350 "detex.l" +#line 362 "detex.l" { LATEX; KILLARGS(3); } YY_BREAK case 89: YY_RULE_SETUP -#line 352 "detex.l" +#line 364 "detex.l" /* ignore def begin */ {BEGIN Define; IGNORE;} YY_BREAK case 90: YY_RULE_SETUP -#line 353 "detex.l" +#line 365 "detex.l" BEGIN Normal; YY_BREAK case 91: /* rule 91 can match eol */ YY_RULE_SETUP -#line 354 "detex.l" +#line 366 "detex.l" NEWLINE; YY_BREAK case 92: YY_RULE_SETUP -#line 355 "detex.l" +#line 367 "detex.l" ; YY_BREAK case 93: YY_RULE_SETUP -#line 357 "detex.l" +#line 369 "detex.l" /* formula mode */ {LaBEGIN LaFormula; NOUN;} YY_BREAK case 94: YY_RULE_SETUP -#line 358 "detex.l" +#line 370 "detex.l" BEGIN Normal; YY_BREAK case 95: /* rule 95 can match eol */ YY_RULE_SETUP -#line 359 "detex.l" +#line 371 "detex.l" NEWLINE; YY_BREAK case 96: YY_RULE_SETUP -#line 360 "detex.l" +#line 372 "detex.l" VERBNOUN; YY_BREAK case 97: YY_RULE_SETUP -#line 361 "detex.l" +#line 373 "detex.l" ; YY_BREAK case 98: YY_RULE_SETUP -#line 363 "detex.l" +#line 375 "detex.l" /* display mode */ {LaBEGIN LaDisplay; NOUN;} YY_BREAK case 99: YY_RULE_SETUP -#line 364 "detex.l" +#line 376 "detex.l" BEGIN Normal; YY_BREAK case 100: /* rule 100 can match eol */ YY_RULE_SETUP -#line 365 "detex.l" +#line 377 "detex.l" NEWLINE; YY_BREAK case 101: YY_RULE_SETUP -#line 366 "detex.l" +#line 378 "detex.l" VERBNOUN; YY_BREAK case 102: YY_RULE_SETUP -#line 367 "detex.l" +#line 379 "detex.l" ; YY_BREAK case 103: YY_RULE_SETUP -#line 369 "detex.l" +#line 381 "detex.l" /* display mode */ {BEGIN Display; NOUN;} YY_BREAK case 104: YY_RULE_SETUP -#line 370 "detex.l" +#line 382 "detex.l" BEGIN Normal; YY_BREAK case 105: /* rule 105 can match eol */ YY_RULE_SETUP -#line 371 "detex.l" +#line 383 "detex.l" NEWLINE; YY_BREAK case 106: YY_RULE_SETUP -#line 372 "detex.l" +#line 384 "detex.l" VERBNOUN; YY_BREAK case 107: YY_RULE_SETUP -#line 373 "detex.l" +#line 385 "detex.l" ; YY_BREAK case 108: YY_RULE_SETUP -#line 375 "detex.l" +#line 387 "detex.l" /* math mode */ {BEGIN Math; NOUN;} YY_BREAK case 109: YY_RULE_SETUP -#line 376 "detex.l" +#line 388 "detex.l" BEGIN Normal; YY_BREAK case 110: /* rule 110 can match eol */ YY_RULE_SETUP -#line 377 "detex.l" +#line 389 "detex.l" ; YY_BREAK case 111: YY_RULE_SETUP -#line 378 "detex.l" +#line 390 "detex.l" ; YY_BREAK case 112: YY_RULE_SETUP -#line 379 "detex.l" +#line 391 "detex.l" VERBNOUN; YY_BREAK case 113: YY_RULE_SETUP -#line 380 "detex.l" +#line 392 "detex.l" ; YY_BREAK case 114: YY_RULE_SETUP -#line 382 "detex.l" +#line 394 "detex.l" /* process files */ {LaBEGIN LaInclude; IGNORE;} YY_BREAK case 115: YY_RULE_SETUP -#line 383 "detex.l" +#line 395 "detex.l" { IncludeFile(yytext); BEGIN Normal; } @@ -2758,27 +2777,27 @@ YY_RULE_SETUP case 116: /* rule 116 can match eol */ YY_RULE_SETUP -#line 386 "detex.l" +#line 398 "detex.l" NEWLINE; YY_BREAK case 117: YY_RULE_SETUP -#line 387 "detex.l" +#line 399 "detex.l" ; YY_BREAK case 118: YY_RULE_SETUP -#line 389 "detex.l" +#line 401 "detex.l" {BEGIN IncludeOnly; IGNORE;} YY_BREAK case 119: YY_RULE_SETUP -#line 390 "detex.l" +#line 402 "detex.l" AddInclude(yytext); YY_BREAK case 120: YY_RULE_SETUP -#line 391 "detex.l" +#line 403 "detex.l" { if (csbIncList == 0) rgsbIncList[csbIncList++] = '\0'; BEGIN Normal; @@ -2787,22 +2806,22 @@ YY_RULE_SETUP case 121: /* rule 121 can match eol */ YY_RULE_SETUP -#line 395 "detex.l" +#line 407 "detex.l" NEWLINE; YY_BREAK case 122: YY_RULE_SETUP -#line 396 "detex.l" +#line 408 "detex.l" ; YY_BREAK case 123: YY_RULE_SETUP -#line 398 "detex.l" +#line 410 "detex.l" /* process files */ {LaBEGIN LaSubfile; IGNORE;} YY_BREAK case 124: YY_RULE_SETUP -#line 399 "detex.l" +#line 411 "detex.l" { IncludeFile(yytext); BEGIN Normal; } @@ -2810,22 +2829,22 @@ YY_RULE_SETUP case 125: /* rule 125 can match eol */ YY_RULE_SETUP -#line 402 "detex.l" +#line 414 "detex.l" NEWLINE; YY_BREAK case 126: YY_RULE_SETUP -#line 403 "detex.l" +#line 415 "detex.l" ; YY_BREAK case 127: YY_RULE_SETUP -#line 405 "detex.l" +#line 417 "detex.l" {BEGIN Input; IGNORE;} YY_BREAK case 128: YY_RULE_SETUP -#line 406 "detex.l" +#line 418 "detex.l" { InputFile(yytext); BEGIN Normal; } @@ -2833,61 +2852,61 @@ YY_RULE_SETUP case 129: /* rule 129 can match eol */ YY_RULE_SETUP -#line 409 "detex.l" +#line 421 "detex.l" NEWLINE; YY_BREAK case 130: YY_RULE_SETUP -#line 410 "detex.l" +#line 422 "detex.l" ; YY_BREAK /* escaping commands */ case 131: YY_RULE_SETUP -#line 413 "detex.l" +#line 425 "detex.l" putchar('/'); YY_BREAK case 132: /* rule 132 can match eol */ YY_RULE_SETUP -#line 415 "detex.l" +#line 427 "detex.l" /* handle ligatures */ {(void)printf("%.2s", yytext+1);} YY_BREAK case 133: /* rule 133 can match eol */ YY_RULE_SETUP -#line 416 "detex.l" +#line 428 "detex.l" {(void)printf("%.1s", yytext+1);} YY_BREAK case 134: YY_RULE_SETUP -#line 417 "detex.l" +#line 429 "detex.l" {NEWLINE;} /*BEGIN LaBreak;*/ YY_BREAK case 135: YY_RULE_SETUP -#line 419 "detex.l" +#line 431 "detex.l" /* ignore other \cs */ {BEGIN Control; IGNORE;} YY_BREAK case 136: YY_RULE_SETUP -#line 420 "detex.l" +#line 432 "detex.l" SPACE; YY_BREAK case 137: /* rule 137 can match eol */ YY_RULE_SETUP -#line 421 "detex.l" +#line 433 "detex.l" NEWLINE; YY_BREAK case 138: YY_RULE_SETUP -#line 422 "detex.l" +#line 434 "detex.l" IGNORE; YY_BREAK case 139: YY_RULE_SETUP -#line 423 "detex.l" +#line 435 "detex.l" { if (yytext==NULL || strlen(yytext)==0 || atoi(yytext)>=0) NEWLINE; @@ -2896,85 +2915,85 @@ YY_RULE_SETUP YY_BREAK case 140: YY_RULE_SETUP -#line 429 "detex.l" +#line 441 "detex.l" IGNORE; YY_BREAK case 141: YY_RULE_SETUP -#line 430 "detex.l" +#line 442 "detex.l" IGNORE; YY_BREAK case 142: /* rule 142 can match eol */ YY_RULE_SETUP -#line 431 "detex.l" +#line 443 "detex.l" {BEGIN Normal; /*NEWLINE;*/} YY_BREAK case 143: YY_RULE_SETUP -#line 432 "detex.l" +#line 444 "detex.l" {++currBracesLevel;BEGIN Normal; IGNORE;} YY_BREAK case 144: YY_RULE_SETUP -#line 433 "detex.l" +#line 445 "detex.l" {BEGIN Normal; IGNORE;} YY_BREAK case 145: YY_RULE_SETUP -#line 434 "detex.l" +#line 446 "detex.l" {yyless(0);BEGIN Normal;} YY_BREAK case 146: YY_RULE_SETUP -#line 436 "detex.l" +#line 448 "detex.l" /* special characters */ IGNORE; YY_BREAK case 147: YY_RULE_SETUP -#line 437 "detex.l" +#line 449 "detex.l" IGNORE; YY_BREAK case 148: YY_RULE_SETUP -#line 438 "detex.l" +#line 450 "detex.l" SPACE; YY_BREAK case 149: YY_RULE_SETUP -#line 439 "detex.l" +#line 451 "detex.l" putchar('-'); YY_BREAK case 150: YY_RULE_SETUP -#line 440 "detex.l" +#line 452 "detex.l" putchar('"'); YY_BREAK case 151: YY_RULE_SETUP -#line 441 "detex.l" +#line 453 "detex.l" putchar('\''); YY_BREAK case 152: YY_RULE_SETUP -#line 442 "detex.l" +#line 454 "detex.l" putchar('"'); YY_BREAK case 153: YY_RULE_SETUP -#line 443 "detex.l" +#line 455 "detex.l" putchar('"'); YY_BREAK /* braces */ case 154: YY_RULE_SETUP -#line 446 "detex.l" +#line 458 "detex.l" { ++currBracesLevel; } YY_BREAK case 155: YY_RULE_SETUP -#line 448 "detex.l" +#line 460 "detex.l" { --currBracesLevel; if (currBracesLevel == footnoteLevel) { @@ -2985,7 +3004,7 @@ YY_RULE_SETUP YY_BREAK case 156: YY_RULE_SETUP -#line 455 "detex.l" +#line 467 "detex.l" { if (fWord) (void)printf("%s\n", yytext); else @@ -2994,40 +3013,40 @@ YY_RULE_SETUP YY_BREAK case 157: YY_RULE_SETUP -#line 460 "detex.l" +#line 472 "detex.l" if (!fWord) ECHO; YY_BREAK case 158: YY_RULE_SETUP -#line 461 "detex.l" -if (!fWord) ECHO; +#line 473 "detex.l" +{ INCRLINENO; if (!fWord) ECHO; } YY_BREAK case 159: /* rule 159 can match eol */ YY_RULE_SETUP -#line 462 "detex.l" -if (!fWord) NEWLINE; +#line 474 "detex.l" +{ if (!fWord) NEWLINE; } YY_BREAK case 160: YY_RULE_SETUP -#line 463 "detex.l" +#line 475 "detex.l" if (!fWord) putchar('\t'); YY_BREAK case 161: YY_RULE_SETUP -#line 465 "detex.l" +#line 477 "detex.l" { BEGIN LaOptArg; } YY_BREAK case 162: YY_RULE_SETUP -#line 466 "detex.l" +#line 478 "detex.l" { cOpenBrace++; } YY_BREAK case 163: /* rule 163 can match eol */ YY_RULE_SETUP -#line 467 "detex.l" -{ cOpenBrace--; +#line 479 "detex.l" +{ cOpenBrace--; INCRLINENO; if (cOpenBrace == 0) { if (--cArgs==0) @@ -3037,28 +3056,28 @@ YY_RULE_SETUP YY_BREAK case 164: YY_RULE_SETUP -#line 474 "detex.l" +#line 486 "detex.l" ; YY_BREAK case 165: YY_RULE_SETUP -#line 475 "detex.l" +#line 487 "detex.l" BEGIN LaMacro; YY_BREAK case 166: /* rule 166 can match eol */ YY_RULE_SETUP -#line 476 "detex.l" +#line 488 "detex.l" ; YY_BREAK case 167: YY_RULE_SETUP -#line 478 "detex.l" +#line 490 "detex.l" { BEGIN LaOptArg2; } YY_BREAK case 168: YY_RULE_SETUP -#line 479 "detex.l" +#line 491 "detex.l" { if (cOpenBrace == 0) { if (--cArgs==0) @@ -3072,30 +3091,30 @@ YY_RULE_SETUP YY_BREAK case 169: YY_RULE_SETUP -#line 489 "detex.l" +#line 501 "detex.l" { cOpenBrace--; } YY_BREAK case 170: YY_RULE_SETUP -#line 490 "detex.l" +#line 502 "detex.l" ; YY_BREAK case 171: YY_RULE_SETUP -#line 491 "detex.l" +#line 503 "detex.l" BEGIN LaMacro2; YY_BREAK case 172: YY_RULE_SETUP -#line 492 "detex.l" +#line 504 "detex.l" ; YY_BREAK case 173: YY_RULE_SETUP -#line 493 "detex.l" +#line 505 "detex.l" ECHO; YY_BREAK -#line 3099 "lex.yy.c" +#line 3118 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(Define): case YY_STATE_EOF(Display): @@ -4085,7 +4104,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 493 "detex.l" +#line 505 "detex.l" /****** @@ -4100,6 +4119,7 @@ void yyfree (void * ptr ) ** -s replace control sequences with space ** -t force tex mode ** -w word only output +** -1 output some location information ** Set the list of LaTeX environments to ignore. ** Process each input file. ** If no input files are specified on the command line, process stdin. @@ -4173,6 +4193,9 @@ main(int cArgs, char *rgsbArgs[]) case CHVERSIONOPT: VersionExit(); break; + case CHSRCLOC: + fSrcLoc = 1; + break; default: sbBadOpt[0] = *pch; sbBadOpt[1] = '\0'; @@ -4194,6 +4217,8 @@ main(int cArgs, char *rgsbArgs[]) Warning("can't open file", rgsbArgs[iArgs]); continue;; } + fFileNames[csb] = rgsbArgs[iArgs]; + fFileLines[csb] = 1; BEGIN Normal; (void)yylex(); } @@ -4232,6 +4257,7 @@ yywrap(void) #ifdef FLEX_SCANNER /* Pop context state */ if (csb > 0) { + free(fFileNames[csb]); yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer( rgsb[--csb] ); } @@ -4261,6 +4287,74 @@ yyless(int n) #endif /****** +** PrintPrefix -- In case fSrcLoc is 1 and we are about to +** print the first column of a line, we want to output the location of +** that line in the original LaTeX document it came from. +******/ + +void +PrintPrefix() +{ + if (fSrcLoc && fIsColumn0) { + printf("%s:%d: ", fFileNames[csb], fFileLines[csb]); + fIsColumn0 = 0; + } +} + +/****** +** LineBreak -- choses the proper way to break a line. If '-1' option is +** enabled we also want to output some source location information. +******/ + +void +LineBreak() +{ + if (fWord) return; + PrintPrefix(); + putchar('\n'); + fFileLines[csb]++; fIsColumn0=1; +} + +/****** +** Echo -- If we are at column 0 and have specified '-1'; output +** the source location information. +******/ + +void +Echo() +{ + PrintPrefix(); + fprintf(yyout, "%s", yytext); +} + +/****** +** IncrLineNo -- Increase the correct linenumber counter and +** reset the the 'fIsColumn0' to true. +******/ + +void +IncrLineNo() +{ + for (char* c=yytext; *c != '\0'; c++) { + if (*c == '\n') { + fFileLines[csb]++; fIsColumn0=1; + } + } +} + +/****** +** Ignore -- Since we might need to track source location information we +** cannot just ignore text. We must at least increase the linenumber counter. +******/ + +void +Ignore() +{ + IncrLineNo(); + if (fSpace && !fWord) putchar(' '); +} + +/****** ** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the ** sbEnvList. ******/ @@ -4315,6 +4409,7 @@ EndEnv(const char *sbEnv) ** the sbFile is ignored. ******/ + void InputFile(char *sbFile) { @@ -4329,8 +4424,10 @@ InputFile(char *sbFile) return; } #ifdef FLEX_SCANNER - rgsb[csb++] = YY_CURRENT_BUFFER; - yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); + rgsb[csb++] = YY_CURRENT_BUFFER; + fFileLines[csb] = 1; + fFileNames[csb] = strdup(sbFile); + yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); #endif /* FLEX_SCANNER */ } @@ -4355,8 +4452,10 @@ IncludeFile(char *sbFile) return; } #ifdef FLEX_SCANNER - rgsb[csb++] = YY_CURRENT_BUFFER; - yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); + rgsb[csb++] = YY_CURRENT_BUFFER; + fFileLines[csb] = 1; + fFileNames[csb] = strdup(sbFile); + yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); #endif /* FLEX_SCANNER */ } @@ -4494,24 +4593,25 @@ TexOpen(char *sbFile) #else if (*sbFile == '/') { /* absolute path */ #endif - (void)sprintf(sbFullPath, "%s", sbFile); - iPath = csbInputPaths; /* only check once */ - } else - (void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile); + (void)snprintf(sbFullPath, PATH_MAX-1, "%s", sbFile); + iPath = csbInputPaths; /* only check once */ + } else { + (void)snprintf(sbFullPath, PATH_MAX-1, "%s/%s", rgsbInputPaths[iPath], sbFile); + } #ifdef OS2 pch = sbFullPath; - while (pch = strchr(pch, '\\')) - *pch = '/'; + while (pch = strchr(pch, '\\')) { + *pch = '/'; + } #endif /* If sbFile ends in .tex then it must be there */ if ((pch = strrchr(sbFullPath, '.')) != NULL - && (strcmp(pch, ".tex") == 0)) - { - if ((fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - else - continue; + && (strcmp(pch, ".tex") == 0)) { + if ((fp = fopen(sbFullPath, "r")) != NULL) + return(fp); + else + continue; } /* if .<ext> then try to open it. the '.' represents */ @@ -4592,7 +4692,7 @@ ErrorExit(const char *sb1) void UsageExit(void) { - (void)printf("\n%s [ -clnrstw ] [ -e environment-list ] [ filename[.tex] ... ]\n", + (void)printf("\n%s [ -clnrstw1 ] [ -e environment-list ] [ filename[.tex] ... ]\n", sbProgName); puts(" -c echo LaTeX \\cite, \\ref, and \\pageref values\n \ -e <env-list> list of LaTeX environments to ignore\n \ @@ -4602,6 +4702,7 @@ UsageExit(void) -s replace control sequences with space\n \ -t force tex mode\n \ -w word only output\n \ +-1 outputs the original file name and line number in the beginning of each line\n \ -v show program version and exit"); exit(0); } diff --git a/Build/source/texk/detex/detex-src/detex.h b/Build/source/texk/detex/detex-src/detex.h index 7d206a372b0..2fca90b1f9d 100644 --- a/Build/source/texk/detex/detex-src/detex.h +++ b/Build/source/texk/detex/detex-src/detex.h @@ -80,7 +80,8 @@ #define CHSPACEOPT 's' #define CHTEXOPT 't' #define CHWORDOPT 'w' -#define CHREPLACE 'r' -#define CHVERSIONOPT 'v' +#define CHSRCLOC '1' +#define CHREPLACE 'r' +#define CHVERSIONOPT 'v' #define my_ERROR -1 diff --git a/Build/source/texk/detex/detex-src/detex.l b/Build/source/texk/detex/detex-src/detex.l index 4b638f930cc..8273afe7a5b 100644 --- a/Build/source/texk/detex/detex-src/detex.l +++ b/Build/source/texk/detex/detex-src/detex.l @@ -41,7 +41,7 @@ /* - * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex] ] + * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [-1] [file[.tex] ] * * This program is used to remove TeX or LaTeX constructs from a text * file. @@ -95,13 +95,16 @@ %{ #undef IGNORE +#undef ECHO #define LaBEGIN if (fLatex) BEGIN -#define IGNORE if (fSpace && !fWord) putchar(' ') +#define IGNORE Ignore() +#define INCRLINENO IncrLineNo() +#define ECHO Echo() #define NOUN if (fSpace && !fWord && !fReplace) putchar(' '); else {if (fReplace) printf("noun");} #define VERBNOUN if (fReplace) printf(" verbs noun"); /* puts a verb and a noun to make grammar checking work */ #define SPACE if (!fWord) putchar(' ') -#define NEWLINE if (!fWord) putchar('\n') +#define NEWLINE LineBreak() #define LATEX fLatex=!fForcetex #define KILLARGS(x) cArgs=x; LaBEGIN LaMacro #define STRIPARGS(x) cArgs=x; LaBEGIN LaMacro2 @@ -109,6 +112,10 @@ #define NO_MALLOC_DECL +void LineBreak(); +void Ignore(); +void IncrLineNo(); +void Echo(); void AddInclude(char *sbFile); void ErrorExit(const char *sb1); void UsageExit(void); @@ -158,8 +165,9 @@ int fFollow = 1; /* flag to follow input/include */ int fCite = 0; /* flag to echo \cite and \ref args */ int fSpace = 0; /* flag to replace \cs with space */ int fForcetex = 0; /* flag to inhibit latex mode */ -int fShowPictures = 0; /* flag to show picture names */ -int fReplace = 0; /* flag to replace envirnments with "noun" */ +int fSrcLoc = 0; /* flag to display source location of original file */ +int fShowPictures = 0; /* flag to show picture names */ +int fReplace = 0; /* flag to replace envirnments with "noun" */ int currBracesLevel = 0; int footnoteLevel = -100; @@ -169,8 +177,11 @@ int footnoteLevel = -100; * otherwise output contains imported files in reverse order. Weird, but * true. */ -YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */ -int csb = 0; /* depth of flex context stack */ +YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */ +char* fFileNames[NOFILE + 1]; /* names of the buffers in context stack */ +int fFileLines[NOFILE + 1]; /* line number in each of the context files */ +int fIsColumn0 = 1; /* Are we at the begining of a line? */ +int csb = 0; /* depth of flex context stack */ #endif /* FLEX_SCANNER */ %} @@ -179,6 +190,7 @@ S [ \t\n]* W [a-zA-Z]+ N [+-]?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+)) U pt|pc|in|bp|cm|mm|dd|cc|sp +P [a-zA-Z!]+ HU {U}|em HD {S}(({N}{S}{HU})|(\\{W})){S} HG {HD}(plus{HD})?(minus{HD})? @@ -194,7 +206,7 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ %start LaBreak LaPicture %% -<Normal>"%".* /* ignore comments */ ; +<Normal>"%".* /* ignore comments */ {INCRLINENO;} <Normal>"\\begin"{S}"{"{S}"document"{S}"}""\n"* {LATEX; IGNORE;} @@ -219,7 +231,7 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ IGNORE; } -<LaBegin>{S}"{"{S}"table"{S}"}"{S}"["{W}"]" { +<LaBegin>{S}"{"{S}"table"{S}"}"{S}"["{P}"]" { if (BeginEnv("table")) BEGIN LaEnv; else @@ -227,7 +239,7 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ IGNORE; } -<LaBegin>{S}"{"{S}"figure"{S}"}"{S}"["{W}"]" { +<LaBegin>{S}"{"{S}"figure"{S}"}"{S}"["{P}"]" { if (BeginEnv("figure")) BEGIN LaEnv; else @@ -242,11 +254,11 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ IGNORE; } /*<LaBegin>"\n" NEWLINE;*/ -<LaBegin>. ; +<LaBegin>. {INCRLINENO;} <LaEnv>"\\end" /* absorb some environments */ {LaBEGIN LaEnd; IGNORE;} <LaEnv>"\n"+ ;/*NEWLINE;*/ -<LaEnv>. ; +<LaEnv>. {INCRLINENO;} <LaEnd>{W} /* end environment */ { if (EndEnv(yytext)) BEGIN Normal; @@ -254,7 +266,7 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ } <LaEnd>"}" {BEGIN LaEnv; IGNORE;} /*<LaEnd>"\n" NEWLINE;*/ -<LaEnd>. ; +<LaEnd>. {INCRLINENO;} <Normal>"\\kern"{HD} ; <Normal>"\\vskip"{VG} ; @@ -284,7 +296,7 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ <LaPicture>"{" ; <LaPicture>[^{}]+ { if(fShowPictures) { printf("<Picture %s>", yytext); } } -<LaPicture>"\}"{S}"\n"+ BEGIN Normal; +<LaPicture>"\}"{S}"\n"+ { BEGIN Normal; INCRLINENO; } <LaPicture>"\}" BEGIN Normal; <Normal>"\\definecolor" { KILLARGS(3); } @@ -458,13 +470,13 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ ECHO; } <Normal>[0-9]+ if (!fWord) ECHO; -<Normal>. if (!fWord) ECHO; -<Normal>"\n" if (!fWord) NEWLINE; +<Normal>. { INCRLINENO; if (!fWord) ECHO; } +<Normal>"\n" { if (!fWord) NEWLINE; } <Normal>("\t")+ if (!fWord) putchar('\t'); <LaMacro>"\[" { BEGIN LaOptArg; } <LaMacro>"{" { cOpenBrace++; } -<LaMacro>"}""\n"{0,1} { cOpenBrace--; +<LaMacro>"}""\n"{0,1} { cOpenBrace--; INCRLINENO; if (cOpenBrace == 0) { if (--cArgs==0) @@ -504,6 +516,7 @@ VERBSYMBOL =|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\ ** -s replace control sequences with space ** -t force tex mode ** -w word only output +** -1 output some location information ** Set the list of LaTeX environments to ignore. ** Process each input file. ** If no input files are specified on the command line, process stdin. @@ -577,6 +590,9 @@ main(int cArgs, char *rgsbArgs[]) case CHVERSIONOPT: VersionExit(); break; + case CHSRCLOC: + fSrcLoc = 1; + break; default: sbBadOpt[0] = *pch; sbBadOpt[1] = '\0'; @@ -598,6 +614,8 @@ main(int cArgs, char *rgsbArgs[]) Warning("can't open file", rgsbArgs[iArgs]); continue;; } + fFileNames[csb] = rgsbArgs[iArgs]; + fFileLines[csb] = 1; BEGIN Normal; (void)yylex(); } @@ -636,6 +654,7 @@ yywrap(void) #ifdef FLEX_SCANNER /* Pop context state */ if (csb > 0) { + free(fFileNames[csb]); yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer( rgsb[--csb] ); } @@ -665,6 +684,74 @@ yyless(int n) #endif /****** +** PrintPrefix -- In case fSrcLoc is 1 and we are about to +** print the first column of a line, we want to output the location of +** that line in the original LaTeX document it came from. +******/ + +void +PrintPrefix() +{ + if (fSrcLoc && fIsColumn0) { + printf("%s:%d: ", fFileNames[csb], fFileLines[csb]); + fIsColumn0 = 0; + } +} + +/****** +** LineBreak -- choses the proper way to break a line. If '-1' option is +** enabled we also want to output some source location information. +******/ + +void +LineBreak() +{ + if (fWord) return; + PrintPrefix(); + putchar('\n'); + fFileLines[csb]++; fIsColumn0=1; +} + +/****** +** Echo -- If we are at column 0 and have specified '-1'; output +** the source location information. +******/ + +void +Echo() +{ + PrintPrefix(); + fprintf(yyout, "%s", yytext); +} + +/****** +** IncrLineNo -- Increase the correct linenumber counter and +** reset the the 'fIsColumn0' to true. +******/ + +void +IncrLineNo() +{ + for (char* c=yytext; *c != '\0'; c++) { + if (*c == '\n') { + fFileLines[csb]++; fIsColumn0=1; + } + } +} + +/****** +** Ignore -- Since we might need to track source location information we +** cannot just ignore text. We must at least increase the linenumber counter. +******/ + +void +Ignore() +{ + IncrLineNo(); + if (fSpace && !fWord) putchar(' '); +} + +/****** ** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the ** sbEnvList. ******/ @@ -719,6 +806,7 @@ EndEnv(const char *sbEnv) ** the sbFile is ignored. ******/ + void InputFile(char *sbFile) { @@ -733,8 +821,10 @@ InputFile(char *sbFile) return; } #ifdef FLEX_SCANNER - rgsb[csb++] = YY_CURRENT_BUFFER; - yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); + rgsb[csb++] = YY_CURRENT_BUFFER; + fFileLines[csb] = 1; + fFileNames[csb] = strdup(sbFile); + yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); #endif /* FLEX_SCANNER */ } @@ -759,8 +849,10 @@ IncludeFile(char *sbFile) return; } #ifdef FLEX_SCANNER - rgsb[csb++] = YY_CURRENT_BUFFER; - yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); + rgsb[csb++] = YY_CURRENT_BUFFER; + fFileLines[csb] = 1; + fFileNames[csb] = strdup(sbFile); + yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) ); #endif /* FLEX_SCANNER */ } @@ -898,24 +990,25 @@ TexOpen(char *sbFile) #else if (*sbFile == '/') { /* absolute path */ #endif - (void)sprintf(sbFullPath, "%s", sbFile); - iPath = csbInputPaths; /* only check once */ - } else - (void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile); + (void)snprintf(sbFullPath, PATH_MAX-1, "%s", sbFile); + iPath = csbInputPaths; /* only check once */ + } else { + (void)snprintf(sbFullPath, PATH_MAX-1, "%s/%s", rgsbInputPaths[iPath], sbFile); + } #ifdef OS2 pch = sbFullPath; - while (pch = strchr(pch, '\\')) - *pch = '/'; + while (pch = strchr(pch, '\\')) { + *pch = '/'; + } #endif /* If sbFile ends in .tex then it must be there */ if ((pch = strrchr(sbFullPath, '.')) != NULL - && (strcmp(pch, ".tex") == 0)) - { - if ((fp = fopen(sbFullPath, "r")) != NULL) - return(fp); - else - continue; + && (strcmp(pch, ".tex") == 0)) { + if ((fp = fopen(sbFullPath, "r")) != NULL) + return(fp); + else + continue; } /* if .<ext> then try to open it. the '.' represents */ @@ -996,7 +1089,7 @@ ErrorExit(const char *sb1) void UsageExit(void) { - (void)printf("\n%s [ -clnrstw ] [ -e environment-list ] [ filename[.tex] ... ]\n", + (void)printf("\n%s [ -clnrstw1 ] [ -e environment-list ] [ filename[.tex] ... ]\n", sbProgName); puts(" -c echo LaTeX \\cite, \\ref, and \\pageref values\n \ -e <env-list> list of LaTeX environments to ignore\n \ @@ -1006,6 +1099,7 @@ UsageExit(void) -s replace control sequences with space\n \ -t force tex mode\n \ -w word only output\n \ +-1 outputs the original file name and line number in the beginning of each line\n \ -v show program version and exit"); exit(0); } diff --git a/Build/source/texk/detex/detex-src/detex.man b/Build/source/texk/detex/detex-src/detex.man index a6f63ff6347..e152f12f940 100644 --- a/Build/source/texk/detex/detex-src/detex.man +++ b/Build/source/texk/detex/detex-src/detex.man @@ -6,7 +6,6 @@ detex \- a filter to strip \fITeX\fP commands from a .tex file. [ \fB\-clnstw\fR ] [ \fB\-e\fI environment-list\fR ] [ \fIfilename\fR[.tex] ... ] .SH DESCRIPTION .I Detex -(Version 2.8.3) reads each file in sequence, removes all comments and .I TeX control sequences @@ -87,6 +86,11 @@ with the deletions mentioned above. Newline characters are preserved where possible so that the lines of output match the input as closely as possible. .PP +The +.B \-1 +option will prefix each printed line with `filename:linenumber:` indicating +where that line is coming from in terms of the original (La)TeX document. +.PP The TEXINPUTS environment variable is used to find \\input and \\include files. Like \fITeX\fP, it interprets a leading or trailing `:' as the default TEXINPUTS. It does \fInot\fP support the `//' directory expansion magic sequence. |