summaryrefslogtreecommitdiffstats
path: root/src/parser.c
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2021-10-21 00:17:39 -0500
committerNicolas Williams <nico@cryptonector.com>2021-10-24 16:23:26 -0500
commita9f97e9e61a910a374a5d768244e8ad63f407d3e (patch)
tree7883361d86bd97b1bcd2299fa5886182b27cee54 /src/parser.c
parent0c3455d3290fa03da8c01c135dd7126a80ed28a8 (diff)
Fix accidentally quadratic behavior in _modify
We need to be careful to not grab an extra reference when mutating data structures because that means we make extra copies. Doing that every time in `_modify` is really painful, as that function implements `|=` and all modify-assign operators. `jv_setpath()` also grabs additional references, so this is not the only fix needed for the modify-assign operators to not be accidentally quadratic. We have to use `LOADVN` in order to make this fix possible, so we should really byte-code `_modify` rather than jq-code it. However, as a stop-gap to make this fix easier, I'm adding syntax for referring to a `$binding` such that you get `LOADVN` instead of `LOADV`. This syntax is not meant to be used outside jq's internals! Therefore it is not documented. I promise to break it later, so don't use it! TBD, but later: - Optimize `_modify` for the case where `update` outputs more than one value. This is trivial: add a `setpath($p; null)` in the middle of `_modify` before calling `update`. But unfortunately the VM retains a reference to `value_at_path` for path expression checking, and fixing that will require more work.
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c2169
1 files changed, 1078 insertions, 1091 deletions
diff --git a/src/parser.c b/src/parser.c
index b6574e52..82bf21d6 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1,9 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.3.2. */
+/* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
- Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -41,14 +40,11 @@
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
-/* Undocumented macros, especially those whose name start with YY_,
- are private implementation details. Do not rely on them. */
-
/* Identify Bison output. */
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.3.2"
+#define YYBISON_VERSION "3.0.4"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -65,8 +61,8 @@
-/* First part of user prologue. */
-#line 1 "src/parser.y" /* yacc.c:337 */
+/* Copy the first part of user declarations. */
+#line 1 "src/parser.y" /* yacc.c:339 */
#include <assert.h>
#include <math.h>
@@ -77,16 +73,13 @@
#define YYMALLOC jv_mem_alloc
#define YYFREE jv_mem_free
-#line 81 "src/parser.c" /* yacc.c:337 */
+#line 77 "src/parser.c" /* yacc.c:339 */
+
# ifndef YY_NULLPTR
-# if defined __cplusplus
-# if 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
# else
-# define YY_NULLPTR ((void*)0)
+# define YY_NULLPTR 0
# endif
# endif
@@ -110,7 +103,7 @@
extern int yydebug;
#endif
/* "%code requires" blocks. */
-#line 11 "src/parser.y" /* yacc.c:352 */
+#line 11 "src/parser.y" /* yacc.c:355 */
#include "locfile.h"
struct lexer_param;
@@ -127,7 +120,7 @@ struct lexer_param;
} \
} while (0)
-#line 131 "src/parser.c" /* yacc.c:352 */
+#line 124 "src/parser.c" /* yacc.c:355 */
/* Token type. */
#ifndef YYTOKENTYPE
@@ -233,12 +226,12 @@ struct lexer_param;
union YYSTYPE
{
-#line 31 "src/parser.y" /* yacc.c:352 */
+#line 31 "src/parser.y" /* yacc.c:355 */
jv literal;
block blk;
-#line 242 "src/parser.c" /* yacc.c:352 */
+#line 235 "src/parser.c" /* yacc.c:355 */
};
typedef union YYSTYPE YYSTYPE;
@@ -266,8 +259,8 @@ int yyparse (block* answer, int* errors, struct locfile* locations, struct lexer
#endif /* !YY_YY_SRC_PARSER_H_INCLUDED */
-/* Second part of user prologue. */
-#line 124 "src/parser.y" /* yacc.c:354 */
+/* Copy the second part of user declarations. */
+#line 124 "src/parser.y" /* yacc.c:358 */
#include "lexer.h"
struct lexer_param {
@@ -447,7 +440,7 @@ static block gen_update(block object, block val, int optype) {
}
-#line 451 "src/parser.c" /* yacc.c:354 */
+#line 444 "src/parser.c" /* yacc.c:358 */
#ifdef short
# undef short
@@ -468,13 +461,13 @@ typedef signed char yytype_int8;
#ifdef YYTYPE_UINT16
typedef YYTYPE_UINT16 yytype_uint16;
#else
-typedef unsigned short yytype_uint16;
+typedef unsigned short int yytype_uint16;
#endif
#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
-typedef short yytype_int16;
+typedef short int yytype_int16;
#endif
#ifndef YYSIZE_T
@@ -486,7 +479,7 @@ typedef short yytype_int16;
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
-# define YYSIZE_T unsigned
+# define YYSIZE_T unsigned int
# endif
#endif
@@ -522,6 +515,15 @@ typedef short yytype_int16;
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
@@ -529,7 +531,7 @@ typedef short yytype_int16;
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
@@ -682,27 +684,27 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 27
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2220
+#define YYLAST 2143
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 69
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 30
/* YYNRULES -- Number of rules. */
-#define YYNRULES 169
+#define YYNRULES 170
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 322
+#define YYNSTATES 326
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 302
-/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, with out-of-bounds checking. */
#define YYTRANSLATE(YYX) \
- ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex. */
+ as returned by yylex, without out-of-bounds checking. */
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -752,13 +754,14 @@ static const yytype_uint16 yyrline[] =
622, 627, 630, 633, 639, 642, 645, 653, 657, 660,
663, 666, 669, 672, 675, 678, 681, 685, 691, 694,
697, 700, 703, 706, 709, 712, 715, 718, 721, 724,
- 727, 730, 733, 736, 739, 742, 745, 752, 756, 765,
- 777, 782, 783, 784, 785, 788, 791, 796, 801, 804,
- 809, 812, 817, 821, 824, 829, 832, 837, 840, 845,
- 848, 851, 854, 857, 860, 868, 874, 877, 880, 883,
- 886, 889, 892, 895, 898, 901, 904, 907, 910, 913,
- 916, 919, 922, 925, 928, 933, 936, 937, 938, 941,
- 944, 947, 950, 954, 958, 962, 966, 970, 974, 982
+ 727, 730, 733, 736, 739, 742, 745, 767, 771, 775,
+ 784, 796, 801, 802, 803, 804, 807, 810, 815, 820,
+ 823, 828, 831, 836, 840, 843, 848, 851, 856, 859,
+ 864, 867, 870, 873, 876, 879, 887, 893, 896, 899,
+ 902, 905, 908, 911, 914, 917, 920, 923, 926, 929,
+ 932, 935, 938, 941, 944, 947, 952, 955, 956, 957,
+ 960, 963, 966, 969, 973, 977, 981, 985, 989, 993,
+ 1001
};
#endif
@@ -801,53 +804,53 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-#define YYPACT_NINF -157
+#define YYPACT_NINF -120
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-157)))
+ (!!((Yystate) == (-120)))
-#define YYTABLE_NINF -156
+#define YYTABLE_NINF -157
#define yytable_value_is_error(Yytable_value) \
- (!!((Yytable_value) == (-156)))
+ (!!((Yytable_value) == (-157)))
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 43, 838, 75, 28, 16, 22, -157, 66, -157, 108,
- 838, 161, 161, 838, 63, 1, -157, 838, 588, 2133,
- 288, 521, 354, 1406, 838, -157, 0, -157, 14, 14,
- 838, 28, 746, 838, -157, -157, -9, 1812, 17, 55,
- 99, 126, -157, 127, -157, -6, 72, 1236, -157, -157,
- -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
- -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
- 140, 66, 85, 78, -157, 983, -45, 82, 838, 2161,
- 86, 87, 83, 105, 838, 838, 838, 838, 838, 838,
- 838, 838, 838, 838, 838, 838, 838, 838, 838, 838,
- 838, 838, 838, 838, 838, 838, 838, 838, -157, -157,
- 1980, 96, -26, -3, 454, 142, -157, -157, -157, 1980,
- 838, -157, -157, 1457, 1980, -19, -157, -157, 10, 838,
- 653, -26, -26, 718, 109, -157, 24, -157, -157, -157,
- -157, -157, -157, 411, 130, -157, 130, 1270, 94, -157,
- 130, 130, -157, 411, 2048, 209, 209, 2014, 349, 2080,
- 2048, 2048, 2048, 2048, 2048, 2048, 209, 209, 1980, 2014,
- 2048, 209, 209, -6, -6, 101, 101, 101, -157, 157,
- -26, 900, 122, 117, 132, 838, 112, 107, 838, 116,
- 933, 11, -157, -157, 838, -157, 81, -157, 2189, -2,
- -157, 1508, -157, 1712, 115, 118, -157, -157, 838, -157,
- 838, -157, -20, -157, 130, 129, 51, 129, 114, 130,
- 129, 129, -157, -157, -157, -13, 119, 125, 838, 175,
- 133, -22, -157, 135, -26, 838, 1033, -157, -157, 1083,
- -157, 810, 123, -157, 181, -157, -157, -157, -157, 10,
- 136, -157, 838, 838, -157, -157, 838, 838, 1980, 1846,
- -157, 130, 130, 129, -26, -157, -26, -26, 1304, 137,
- -26, 900, -157, -26, 149, 1980, 143, 145, 146, 1133,
- -157, -157, -157, 838, 1896, 1946, 1559, 1610, -157, 129,
- 129, -157, -157, -157, 148, -26, -157, -157, -157, -157,
- -157, -157, 147, 1661, -157, 838, 838, 838, -26, -157,
- -157, -157, 1762, 1338, 1183, -157, -157, -157, 838, -157,
- 1372, -157
+ 13, 775, 14, 49, -55, 11, -120, 7, -120, 32,
+ 775, 508, 508, 775, 19, 2, -120, 775, 525, 887,
+ 292, 458, 358, 1391, 775, -120, 6, -120, -3, -3,
+ 775, 49, 683, 775, -120, -120, 52, 1797, 8, 10,
+ 48, 79, -120, 106, -120, 66, 50, 1221, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, 61, -120,
+ -120, 124, 7, 68, 62, -120, 968, -22, 64, 775,
+ 2084, 69, 71, 63, 87, 775, 775, 775, 775, 775,
+ 775, 775, 775, 775, 775, 775, 775, 775, 775, 775,
+ 775, 775, 775, 775, 775, 775, 775, 775, 775, -120,
+ -120, 1965, 78, -20, 15, 169, 125, -120, -120, -120,
+ 1965, 775, -120, -120, 1442, 1965, -10, -120, -120, -2,
+ 775, 590, -20, -20, 655, 90, -120, 12, -120, -120,
+ 77, -120, -120, -120, -120, 415, 443, -120, 443, 1255,
+ 81, -120, 443, 443, -120, 415, 1999, 353, 353, 214,
+ 571, 2031, 1999, 1999, 1999, 1999, 1999, 1999, 353, 353,
+ 1965, 214, 1999, 353, 353, 66, 66, 82, 82, 82,
+ -120, 138, -20, 837, 105, 99, 113, 775, 96, 93,
+ 775, 103, 918, 20, -120, -120, 775, -120, 16, -120,
+ 2112, 18, -120, 1493, -120, 1697, 102, 104, -120, -120,
+ 775, -120, 775, -120, 159, -11, -120, 443, 119, 3,
+ 119, 108, 443, 119, 119, -120, -120, -120, -13, 109,
+ 115, 775, 163, 116, -38, -120, 118, -20, 775, 1018,
+ -120, -120, 1068, -120, 747, 110, -120, 165, -120, -120,
+ -120, -120, -2, 121, -120, 775, 775, -120, -120, 775,
+ 775, 1965, 1831, -120, -120, 443, 443, 119, -20, -120,
+ -20, -20, 1289, 122, -20, 837, -120, -20, 150, 1965,
+ 136, 139, 142, 1118, -120, -120, -120, 775, 1881, 1931,
+ 1544, 1595, -120, 119, 119, -120, -120, -120, 140, -20,
+ -120, -120, -120, -120, -120, -120, 143, 1646, -120, 775,
+ 775, 775, -20, -120, -120, -120, 1747, 1323, 1168, -120,
+ -120, -120, 775, -120, 1357, -120
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -855,55 +858,55 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 4, 0, 0, 6, 109, 83, 100, 102, 75, 0,
+ 4, 0, 0, 6, 110, 83, 100, 102, 75, 0,
0, 0, 0, 0, 0, 0, 62, 0, 0, 0,
0, 0, 0, 0, 0, 101, 48, 1, 0, 0,
8, 6, 0, 0, 79, 64, 0, 0, 0, 0,
- 19, 0, 77, 0, 66, 33, 0, 0, 107, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 108, 86,
- 0, 0, 85, 0, 105, 0, 0, 166, 0, 0,
- 162, 167, 0, 156, 0, 0, 0, 0, 0, 0,
+ 19, 0, 77, 0, 66, 33, 0, 0, 108, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 0, 109,
+ 86, 0, 0, 85, 0, 105, 0, 0, 167, 0,
+ 0, 163, 168, 0, 157, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 5,
- 10, 82, 0, 0, 0, 0, 54, 53, 3, 2,
- 8, 7, 49, 0, 117, 0, 115, 66, 0, 0,
- 0, 0, 0, 0, 0, 76, 0, 111, 103, 87,
- 81, 112, 104, 0, 0, 114, 0, 0, 164, 165,
- 0, 0, 106, 0, 41, 42, 43, 26, 25, 24,
- 28, 32, 35, 37, 40, 27, 46, 47, 29, 30,
- 23, 44, 45, 31, 34, 36, 38, 39, 78, 0,
- 0, 0, 0, 0, 121, 0, 84, 0, 0, 93,
- 0, 0, 9, 50, 0, 110, 0, 61, 0, 0,
- 57, 0, 17, 0, 0, 0, 20, 18, 0, 67,
- 0, 63, 0, 158, 0, 169, 73, 159, 0, 0,
- 161, 160, 157, 122, 125, 0, 0, 0, 0, 0,
- 0, 0, 127, 0, 0, 0, 0, 80, 113, 0,
- 92, 0, 89, 52, 0, 116, 65, 59, 60, 0,
- 0, 55, 0, 0, 16, 15, 0, 0, 21, 0,
- 72, 0, 0, 163, 0, 123, 0, 0, 0, 129,
- 0, 0, 124, 0, 120, 11, 91, 99, 98, 0,
- 88, 51, 58, 0, 0, 0, 0, 0, 68, 71,
- 168, 126, 135, 131, 0, 0, 133, 128, 132, 90,
- 96, 95, 97, 0, 70, 0, 0, 0, 0, 130,
- 94, 56, 0, 0, 0, 134, 69, 12, 0, 14,
- 0, 13
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
+ 5, 10, 82, 0, 0, 0, 0, 54, 53, 3,
+ 2, 8, 7, 49, 0, 118, 0, 116, 66, 0,
+ 0, 0, 0, 0, 0, 0, 76, 0, 112, 103,
+ 0, 87, 81, 113, 104, 0, 0, 115, 0, 0,
+ 165, 166, 0, 0, 106, 0, 41, 42, 43, 26,
+ 25, 24, 28, 32, 35, 37, 40, 27, 46, 47,
+ 29, 30, 23, 44, 45, 31, 34, 36, 38, 39,
+ 78, 0, 0, 0, 0, 0, 122, 0, 84, 0,
+ 0, 93, 0, 0, 9, 50, 0, 111, 0, 61,
+ 0, 0, 57, 0, 17, 0, 0, 0, 20, 18,
+ 0, 67, 0, 63, 0, 0, 159, 0, 170, 73,
+ 160, 0, 0, 162, 161, 158, 123, 126, 0, 0,
+ 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
+ 80, 114, 0, 92, 0, 89, 52, 0, 117, 65,
+ 59, 60, 0, 0, 55, 0, 0, 16, 15, 0,
+ 0, 21, 0, 107, 72, 0, 0, 164, 0, 124,
+ 0, 0, 0, 130, 0, 0, 125, 0, 121, 11,
+ 91, 99, 98, 0, 88, 51, 58, 0, 0, 0,
+ 0, 0, 68, 71, 169, 127, 136, 132, 0, 0,
+ 134, 129, 133, 90, 96, 95, 97, 0, 70, 0,
+ 0, 0, 0, 131, 94, 56, 0, 0, 0, 135,
+ 69, 12, 0, 14, 0, 13
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -157, -157, -157, 177, 92, -1, -157, -157, 184, -11,
- -157, -43, 5, -157, -157, 89, -98, -140, -4, -157,
- 23, -157, -61, -156, -157, -157, -53, -18, -106, -157
+ -120, -120, -120, 171, 83, -1, -120, -120, 176, -12,
+ -120, -46, 5, -120, -120, 80, -103, -109, -5, -120,
+ 22, -120, -16, -119, -120, -120, -68, -18, -105, -120
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 2, 3, 30, 118, 110, 31, 32, 115, 24,
- 199, 200, 25, 44, 127, 136, 255, 215, 26, 125,
- 126, 182, 183, 184, 225, 231, 232, 81, 82, 83
+ -1, 2, 3, 30, 119, 111, 31, 32, 116, 24,
+ 201, 202, 25, 44, 128, 137, 258, 218, 26, 126,
+ 127, 184, 185, 186, 228, 234, 235, 82, 83, 84
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -911,456 +914,440 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 23, 68, 42, 143, 71, 111, 217, 38, 39, 37,
- 220, 221, 40, 112, 197, 243, 45, 47, 144, 120,
- 75, 71, 111, 145, 224, 72, 271, 80, 143, 119,
- 131, 123, 124, 116, 116, 264, 179, 213, 16, 180,
- 194, 181, 195, 144, 28, 29, 272, 222, 105, 106,
- 107, 128, 108, 265, 129, 16, 111, 249, 1, 250,
- 111, 149, 185, 43, 113, 114, 209, 210, 132, 211,
- 204, 205, 198, 244, 260, 27, 33, 147, 274, 263,
- 34, 113, 114, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 35, 291, 120,
- 292, 293, 36, 190, 296, 113, 114, 298, 186, 113,
- 114, 289, 290, 209, 210, 41, 246, 133, 201, 203,
- 134, 135, 207, 137, 4, 5, 6, 7, 8, 309,
- 216, 139, 216, 140, 141, 146, 216, 216, 80, 150,
- 151, 152, 315, 153, 178, 191, 208, 219, 80, 108,
- 15, 223, 234, 233, 235, 4, 5, 6, 7, 8,
- 237, 16, -119, 238, 240, 256, 261, 262, 257, 269,
- 248, 280, 266, 214, 236, 281, 230, 239, 267, -118,
- 18, 15, 19, 124, 20, 21, 270, 22, 273, 283,
- 295, 299, 16, 300, 301, 310, 282, 258, 121, 259,
- 216, 308, 192, 117, 316, 216, 196, 245, 297, -156,
- -156, 18, 0, 19, 0, 20, 21, 268, 22, 0,
- 0, 0, 0, 0, 275, 0, 0, 0, 0, 0,
- 279, 0, 0, 0, 0, 0, 0, -156, -156, 0,
- 0, 284, 285, 233, 0, 286, 287, 216, 216, -156,
- -156, 103, 104, 105, 106, 107, 0, 108, 0, 0,
- 0, 0, 0, 0, 0, 0, 230, 0, 0, 0,
- 0, 0, 303, 0, 0, 0, 0, 0, -74, 69,
- 0, 0, 70, -74, 0, 71, 0, -74, -74, -74,
- -74, -74, 0, 0, 312, 313, 314, -74, -74, -74,
- 0, 0, -74, -74, -74, 0, -74, 320, 0, 0,
- -74, -74, -74, -74, -74, -74, -74, -74, 0, 16,
- 0, 0, -74, 0, 0, -74, -74, -74, -74, -74,
- -74, -74, -74, -74, -74, 0, -74, -74, 0, -74,
- 0, -74, -74, -74, -74, 76, -74, 0, 77, 85,
- 86, 71, 0, 0, 0, 0, 0, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 0, 96, 97, 0,
- 0, 0, 0, 0, 0, 16, 0, 0, 0, 101,
- 102, 103, 104, 105, 106, 107, 0, 108, 0, 0,
- 0, 0, 212, 0, 78, 77, 79, 0, 71, 0,
- 0, 0, -155, 0, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 187, 0, 0, 4, 5,
- 6, 7, 8, 0, 0, 0, 0, 0, 9, 0,
- 0, 78, 10, 79, 0, 0, 11, 12, 0, -155,
- 0, 13, 0, 14, 15, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 17, 0, 0,
- 0, 0, 0, 0, 18, 0, 19, 188, 20, 21,
- 189, 22, 73, 0, 0, 4, 5, 6, 7, 8,
- 0, 0, 0, 0, 0, 9, 0, 0, 0, 10,
- 0, 0, 0, 11, 12, 0, 0, 0, 13, 0,
- 14, 15, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0,
- 0, 18, 0, 19, 0, 20, 21, 74, 22, 46,
+ 23, 69, 199, 42, 72, 33, 38, 39, 112, 37,
+ 275, 112, 40, 112, 27, 112, 45, 47, 121, 113,
+ 76, 132, 72, 133, 246, 73, 145, 81, 1, 120,
+ 276, 124, 125, 117, 117, 268, 36, 145, 16, 220,
+ 216, 146, 181, 223, 224, 182, 147, 183, 35, 196,
+ 225, 197, 146, 269, 211, 212, 16, 213, 211, 212,
+ 200, 249, 151, 227, 43, 28, 29, 114, 115, 34,
+ 114, 115, 114, 115, 114, 115, 134, 252, 149, 253,
+ 187, 41, 247, 135, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 264, 121,
+ 136, 138, 129, 267, 192, 130, 206, 207, 278, 188,
+ 106, 107, 108, 140, 109, 141, 142, 148, 143, 203,
+ 205, 154, 152, 209, 153, 155, 180, 210, 193, 214,
+ 109, 219, 226, 219, 222, 237, 238, 219, 219, 295,
+ 81, 296, 297, -120, 240, 300, 293, 294, 302, 241,
+ 81, 243, 259, 263, 260, 236, 265, 273, 284, 285,
+ 189, 266, 270, 4, 5, 6, 7, 8, 271, 274,
+ 313, 277, 251, 9, 287, 299, 239, 10, 233, 242,
+ -119, 11, 12, 319, 303, 125, 13, 304, 14, 15,
+ 305, 314, 122, 312, 194, 118, 286, 301, 198, 261,
+ 16, 262, 219, 320, 0, 0, 0, 219, 248, 0,
+ 0, 0, 17, 85, 86, 87, 88, 0, 0, 18,
+ 272, 19, 190, 20, 21, 191, 22, 279, 0, 89,
+ 90, 0, 0, 283, 0, 0, 91, 92, 93, 94,
+ 95, 96, 97, 98, 288, 289, 0, 236, 290, 291,
+ 219, 219, 0, 101, 102, 103, 104, 105, 106, 107,
+ 108, 0, 109, 0, 0, 0, 0, 0, 0, 0,
+ 233, 0, 0, 0, 0, 0, 307, 0, 0, 0,
+ 0, 0, -74, 70, 0, 0, 71, -74, 0, 72,
+ 0, -74, -74, -74, -74, -74, 0, 0, 316, 317,
+ 318, -74, -74, -74, 0, 0, -74, -74, -74, 0,
+ -74, 324, 0, 0, -74, -74, -74, -74, -74, -74,
+ -74, -74, 0, 16, 0, 0, -74, 0, 0, -74,
+ -74, -74, -74, -74, -74, -74, -74, -74, -74, 0,
+ -74, -74, 0, -74, 0, -74, -74, -74, -74, 77,
+ -74, 0, 78, -157, -157, 72, 0, 0, 0, 0,
+ 0, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 0, -157, -157, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, -157, -157, 104, 105, 106, 107, 108,
+ 0, 109, 0, 0, 0, 0, 215, 0, 79, 78,
+ 80, 0, 72, 0, 0, 0, -156, 0, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 4, 5, 6,
+ 7, 8, 0, 0, 0, 0, 16, 0, 0, 74,
0, 0, 4, 5, 6, 7, 8, 0, 0, 0,
- 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
- 11, 12, 0, 0, 0, 13, 0, 14, 15, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 17, 0, 0, 0, 0, 0, 0, 18, 0,
- 19, 0, 20, 21, 202, 22, 0, 4, 5, 6,
- 7, 8, 0, 0, 0, 0, 0, 9, 0, 0,
- 0, 10, 0, 0, 0, 11, 12, 0, 0, 0,
- 13, 0, 14, 15, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
+ 0, 0, 9, 15, 0, 79, 10, 80, 0, 0,
+ 11, 12, 0, -156, 16, 13, 0, 14, 15, 0,
+ 0, 0, 0, 0, 0, 0, 217, 0, 0, 16,
+ 0, 0, 0, 18, 0, 19, 0, 20, 21, 0,
+ 22, 17, 4, 5, 6, 7, 8, 0, 18, 0,
+ 19, 0, 20, 21, 75, 22, 46, 0, 0, 4,
+ 5, 6, 7, 8, 0, 0, 0, 0, 15, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 12, 16,
+ 0, 0, 13, 0, 14, 15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 0, 18, 0,
+ 19, 0, 20, 21, 0, 22, 0, 0, 17, 0,
+ 0, 86, 87, 0, 0, 18, 0, 19, 0, 20,
+ 21, 204, 22, 0, 4, 5, 6, 7, 8, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 10, 97,
+ 98, 0, 11, 12, 0, 0, 0, 13, 0, 14,
+ 15, 102, 103, 104, 105, 106, 107, 108, 0, 109,
+ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 17, 0, 0, 0, 0, 0, 0,
+ 18, 0, 19, 0, 20, 21, 208, 22, 0, 4,
+ 5, 6, 7, 8, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 12, 0,
+ 0, 0, 13, 0, 14, 15, 0, 4, 5, 6,
+ 7, 8, 0, 0, 0, 0, 16, 9, 0, 0,
+ 0, 10, 0, 0, 0, 11, 12, 0, 17, 0,
+ 13, 0, 14, 15, 0, 18, 0, 19, 0, 20,
+ 21, 0, 22, 0, 16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 18, 0, 19, 0, 20, 21, 206,
- 22, 0, 4, 5, 6, 7, 8, 0, 0, 0,
- 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
- 11, 12, 0, 0, 0, 13, 0, 14, 15, 0,
- 4, 5, 6, 7, 8, 0, 0, 0, 0, 16,
- 9, 0, 0, 0, 10, 0, 0, 0, 11, 12,
- 0, 17, 0, 13, 0, 14, 15, 0, 18, 0,
- 19, 0, 20, 21, 0, 22, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
- 0, 0, 0, 0, 0, 122, 18, 0, 19, 0,
- 20, 21, 0, 22, 4, 5, 6, 7, 8, 0,
- 0, 0, 0, 0, 9, 0, 0, 0, 10, 0,
- 0, 0, 11, 12, 0, 0, 0, 13, 0, 14,
- 15, 0, 4, 5, 6, 7, 8, 0, 0, 0,
- 0, 16, 9, 0, 0, 0, 10, 0, 0, 0,
- 11, 12, 0, 17, 0, 13, 0, 14, 15, 0,
- 18, 0, 19, 0, 20, 21, 278, 22, 0, 16,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 17, 0, 0, 0, 0, 0, 0, 18, 0,
- 19, 226, 20, 21, 227, 22, 0, 71, 0, 0,
- 0, 0, 0, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 16, 84, 85, 86, 87, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
- 228, 0, 229, 0, 0, 90, 91, 92, 93, 94,
- 95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 0, 108, 84, 85, 86, 87, 241, 0, 0, 242,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
- 0, 0, 0, 0, 0, 90, 91, 92, 93, 94,
- 95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 0, 108, 84, 85, 86, 87, 0, 0, 0, 142,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
- 0, 0, 0, 0, 0, 90, 91, 92, 93, 94,
- 95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 0, 108, 84, 85, 86, 87, 0, 0, 0, 276,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
- 0, 0, 0, 0, 0, 90, 91, 92, 93, 94,
- 95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 0, 108, 84, 85, 86, 87, 0, 0, 0, 277,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
- 0, 0, 0, 0, 0, 90, 91, 92, 93, 94,
- 95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 0, 108, 84, 85, 86, 87, 0, 0, 0, 302,
- 0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
- 0, 0, 0, 0, 0, 90, 91, 92, 93, 94,
- 95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 0, 108, 318, 0, 319, 84, 85, 86, 87, 0,
+ 0, 0, 123, 18, 0, 19, 0, 20, 21, 0,
+ 22, 4, 5, 6, 7, 8, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 12, 0, 0, 0, 13, 0, 14, 15, 0, 4,
+ 5, 6, 7, 8, 0, 0, 0, 0, 16, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 12, 0,
+ 17, 0, 13, 0, 14, 15, 0, 18, 0, 19,
+ 0, 20, 21, 282, 22, 0, 16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+ 0, 0, 0, 0, 0, 18, 0, 19, 229, 20,
+ 21, 230, 22, 0, 72, 0, 0, 0, 0, 0,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 88, 89, 0, 0, 0, 0, 0, 90, 91,
- 92, 93, 94, 95, 96, 97, 0, 0, 0, 84,
- 85, 86, 87, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 0, 108, 88, 89, 138, 0, 0,
- 0, 0, 90, 91, 92, 93, 94, 95, 96, 97,
- 0, 0, 0, 84, 85, 86, 87, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 0, 108, 88,
- 89, 218, 0, 0, 0, 0, 90, 91, 92, 93,
- 94, 95, 96, 97, 0, 0, 0, 84, 85, 86,
- 87, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 0, 108, 88, 89, 294, 0, 0, 0, 0,
- 90, 91, 92, 93, 94, 95, 96, 97, 0, 0,
- 0, 84, 85, 86, 87, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 0, 108, 88, 89, 317,
- 0, 0, 0, 0, 90, 91, 92, 93, 94, 95,
- 96, 97, 0, 0, 0, 84, 85, 86, 87, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 0,
- 108, 88, 89, 321, 0, 0, 0, 0, 90, 91,
- 92, 93, 94, 95, 96, 97, 0, 0, 0, 0,
- 0, 0, 0, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 0, 108, 109, 84, 85, 86, 87,
+ 0, 48, 0, 0, 0, 0, 0, 231, 0, 232,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 0,
+ 0, 0, 0, 0, 0, 0, 0, 85, 86, 87,
+ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 89, 90, 0, 0, 0, 0, 68,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 0, 0, 0, 0, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 0, 109, 85, 86, 87,
+ 88, 244, 0, 0, 245, 0, 0, 0, 0, 0,
+ 0, 0, 0, 89, 90, 0, 0, 0, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 0, 0, 0, 0, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 0, 109, 85, 86, 87,
+ 88, 0, 0, 0, 144, 0, 0, 0, 0, 0,
+ 0, 0, 0, 89, 90, 0, 0, 0, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 0, 0, 0, 0, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 0, 109, 85, 86, 87,
+ 88, 0, 0, 0, 280, 0, 0, 0, 0, 0,
+ 0, 0, 0, 89, 90, 0, 0, 0, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 0, 0, 0, 0, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 0, 109, 85, 86, 87,
+ 88, 0, 0, 0, 281, 0, 0, 0, 0, 0,
+ 0, 0, 0, 89, 90, 0, 0, 0, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 0, 0, 0, 0, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 0, 109, 85, 86, 87,
+ 88, 0, 0, 0, 306, 0, 0, 0, 0, 0,
+ 0, 0, 0, 89, 90, 0, 0, 0, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 0, 0, 0, 0, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 0, 109, 322, 0, 323,
+ 85, 86, 87, 88, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 89, 90, 0, 0,
+ 0, 0, 0, 91, 92, 93, 94, 95, 96, 97,
+ 98, 0, 0, 0, 85, 86, 87, 88, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 0, 109,
+ 89, 90, 139, 0, 0, 0, 0, 91, 92, 93,
+ 94, 95, 96, 97, 98, 0, 0, 0, 85, 86,
+ 87, 88, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 0, 109, 89, 90, 221, 0, 0, 0,
+ 0, 91, 92, 93, 94, 95, 96, 97, 98, 0,
+ 0, 0, 85, 86, 87, 88, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 0, 109, 89, 90,
+ 298, 0, 0, 0, 0, 91, 92, 93, 94, 95,
+ 96, 97, 98, 0, 0, 0, 85, 86, 87, 88,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 0, 109, 89, 90, 321, 0, 0, 0, 0, 91,
+ 92, 93, 94, 95, 96, 97, 98, 0, 0, 0,
+ 85, 86, 87, 88, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 0, 109, 89, 90, 325, 0,
+ 0, 0, 0, 91, 92, 93, 94, 95, 96, 97,
+ 98, 0, 0, 0, 0, 0, 0, 0, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 0, 109,
+ 110, 85, 86, 87, 88, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 89, 90, 0,
+ 0, 0, 0, 0, 91, 92, 93, 94, 95, 96,
+ 97, 98, 0, 0, 0, 0, 0, 0, 0, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 0,
+ 109, 195, 85, 86, 87, 88, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 89, 90,
+ 0, 0, 0, 0, 0, 91, 92, 93, 94, 95,
+ 96, 97, 98, 0, 0, 0, 0, 0, 0, 0,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 0, 109, 254, 85, 86, 87, 88, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 89,
+ 90, 0, 0, 0, 0, 0, 91, 92, 93, 94,
+ 95, 96, 97, 98, 0, 0, 0, 0, 0, 0,
+ 0, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 0, 109, 310,