47 #define YYBISON_VERSION "3.0.4"
50 #define YYSKELETON_NAME "yacc.c"
69 # error needs pure parser
72 #define YYERROR_VERBOSE 1
73 #define YYSTACK_USE_ALLOCA 0
74 #define YYLTYPE rb_code_location_t
75 #define YYLTYPE_IS_DECLARED 1
90 #ifndef WARN_PAST_SCOPE
91 # define WARN_PAST_SCOPE 0
96 #define yydebug (p->debug)
98 #define YYMALLOC(size) rb_parser_malloc(p, (size))
99 #define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
100 #define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
101 #define YYFREE(ptr) rb_parser_free(p, (ptr))
102 #define YYFPRINTF rb_parser_printf
103 #define YYPRINT(out, tok, val) parser_token_value_print(p, (tok), &(val))
104 #define YY_LOCATION_PRINT(File, loc) \
105 rb_parser_printf(p, "%d.%d-%d.%d", \
106 (loc).beg_pos.lineno, (loc).beg_pos.column,\
107 (loc).end_pos.lineno, (loc).end_pos.column)
108 #define YYLLOC_DEFAULT(Current, Rhs, N) \
112 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
113 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
117 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
118 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 #define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
123 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
124 #define RUBY_SET_YYLLOC_OF_NONE(Current) \
125 rb_parser_set_location_of_none(p, &(Current))
126 #define RUBY_SET_YYLLOC(Current) \
127 rb_parser_set_location(p, &(Current))
128 #define RUBY_INIT_YYLLOC() \
130 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
131 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
152 #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
172 #define IS_lex_state_for(x, ls) ((x) & (ls))
173 #define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
174 #define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
175 #define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
177 # define SET_LEX_STATE(ls) \
180 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
181 (enum lex_state_e)(ls)))
187 # define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
188 # define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
189 # define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
190 # define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
191 # define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
195 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
196 #define COND_POP() BITSTACK_POP(cond_stack)
197 #define COND_P() BITSTACK_SET_P(cond_stack)
198 #define COND_SET(n) BITSTACK_SET(cond_stack, (n))
202 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
203 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
204 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
205 #define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
235 #define NUMPARAM_ID_P(id) numparam_id_p(id)
236 #define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
237 #define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
247 #define DVARS_INHERIT ((void*)1)
248 #define DVARS_TOPSCOPE NULL
249 #define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
341 unsigned int past_scope_enabled: 1;
371 VALUE parsing_thread;
375 #define intern_cstr(n,l,en) rb_intern3(n,l,en)
377 #define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
378 #define STR_NEW0() rb_enc_str_new(0,0,p->enc)
379 #define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
380 #define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
381 #define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
414 #define yyerror0(msg) parser_yyerror(p, NULL, (msg))
415 #define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
416 #define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
417 #define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
420 #define compile_for_eval (0)
422 #define compile_for_eval (p->parent_iseq != 0)
425 #define token_column ((int)(p->lex.ptok - p->lex.pbeg))
427 #define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
428 #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
429 #define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
431 #define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
459 #define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
473 set_line_body(
NODE *body,
int line)
483 #define yyparse ruby_yyparse
487 #define new_nil(loc) NEW_NIL(loc)
498 static NODE *remove_begin_all(
NODE*);
499 #define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
522 static bool args_info_empty_p(
struct rb_args_info *args);
567 #define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
587 #define get_id(id) (id)
588 #define get_value(val) (val)
589 #define get_num(num) (num)
591 #define NODE_RIPPER NODE_CDECL
593 static inline int ripper_is_node_yylval(
VALUE n);
598 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
599 add_mark_object(p, b);
600 add_mark_object(p, c);
605 ripper_is_node_yylval(
VALUE n)
610 #define value_expr(node) ((void)(node))
611 #define remove_begin(node) (node)
612 #define void_stmts(p,x) (x)
613 #define rb_dvar_defined(id, base) 0
614 #define rb_local_defined(id, base) 0
615 static ID ripper_get_id(
VALUE);
616 #define get_id(id) ripper_get_id(id)
618 #define get_value(val) ripper_get_value(val)
619 #define get_num(num) (int)get_id(num)
623 #define method_cond(p,node,loc) (node)
624 #define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
625 #define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
626 #define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
627 #define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
629 #define new_nil(loc) Qnil
677 #define dyna_var(p, id) local_var(p, id)
688 # define METHOD_NOT idNOT
690 # define METHOD_NOT '!'
693 #define idFWD_REST '*'
694 #ifdef RUBY3_KEYWORDS
695 #define idFWD_KWREST idPow
697 #define idFWD_KWREST 0
699 #define idFWD_BLOCK '&'
701 #define RE_OPTION_ONCE (1<<16)
702 #define RE_OPTION_ENCODING_SHIFT 8
703 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
704 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
705 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
706 #define RE_OPTION_MASK 0xff
707 #define RE_OPTION_ARG_ENCODING_NONE 32
729 #define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
736 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
738 # define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
740 # define HERETERM_LENGTH_MAX UINT_MAX
743 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
753 #define STRTERM_HEREDOC IMEMO_FL_USER0
775 #define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
778 #define TOKEN2ID(tok) ( \
779 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
780 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
781 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
782 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
783 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
784 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
785 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
790 #define RIPPER_VERSION "0.1.0"
792 static inline VALUE intern_sym(
const char *
name);
806 #define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
807 #define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
808 #define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
809 #define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
810 #define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
811 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
812 #define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
814 #define yyparse ripper_yyparse
816 #define ID2VAL(id) STATIC_ID2SYM(id)
817 #define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
818 #define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
820 #define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
821 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
823 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
830 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
837 add_mark_object(p, kw_args);
838 add_mark_object(p, kw_rest_arg);
839 add_mark_object(p, block);
862 if (!
NIL_P(pre_arg)) {
888 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
897 #define new_hash(p,h,l) rb_ary_new_from_args(0)
910 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
918 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
925 add_mark_object(p, kw_args);
926 add_mark_object(p, kw_rest_arg);
930 #define new_defined(p,expr,loc) dispatch1(defined, (expr))
935 #define ID2VAL(id) (id)
936 #define TOKEN2VAL(t) ID2VAL(t)
937 #define KWD2EID(t, v) keyword_##t
943 # define ifndef_ripper(x) (x)
946 # define Qnull Qundef
947 # define ifndef_ripper(x)
950 # define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
951 # define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
952 # define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
953 # define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
954 # define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
955 # define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
956 # define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
957 # define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
958 # define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
959 # define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
960 # define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
961 # define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
962 # define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
963 # define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
964 # define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
965 # define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
966 # define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
967 # define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
968 # define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
969 # define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
971 static ID id_warn, id_warning, id_gets, id_assoc;
972 # define WARN_S_L(s,l) STR_NEW(s,l)
973 # define WARN_S(s) STR_NEW2(s)
974 # define WARN_I(i) INT2NUM(i)
975 # define WARN_ID(i) rb_id2str(i)
976 # define WARN_IVAL(i) i
977 # define PRIsWARN "s"
978 # define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
979 # define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
980 # ifdef HAVE_VA_ARGS_MACRO
981 # define WARN_CALL(...) rb_funcall(__VA_ARGS__)
983 # define WARN_CALL rb_funcall
985 # define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
986 # define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
987 # ifdef HAVE_VA_ARGS_MACRO
988 # define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
990 # define WARNING_CALL rb_funcall
993 # define compile_error ripper_compile_error
995 # define WARN_S_L(s,l) s
998 # define WARN_ID(i) rb_id2name(i)
999 # define WARN_IVAL(i) NUM2INT(i)
1000 # define PRIsWARN PRIsVALUE
1001 # define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1002 # define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1003 # define WARN_CALL rb_compile_warn
1004 # define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1005 # define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1006 # define WARNING_CALL rb_compile_warning
1008 # define compile_error parser_compile_error
1016 #define WARN_EOL(tok) \
1017 (looking_at_eol_p(p) ? \
1018 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1022 #line 1023 "ripper.c"
1025 # if defined __cplusplus && 201103L <= __cplusplus
1026 # define YY_NULLPTR nullptr
1028 # define YY_NULLPTR 0
1033 #ifdef YYERROR_VERBOSE
1034 # undef YYERROR_VERBOSE
1035 # define YYERROR_VERBOSE 1
1037 # define YYERROR_VERBOSE 0
1053 # define YYTOKENTYPE
1180 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1184 #line 978 "ripper.y"
1194 #line 1193 "ripper.c"
1198 # define YYSTYPE_IS_TRIVIAL 1
1199 # define YYSTYPE_IS_DECLARED 1
1203 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1212 # define YYLTYPE_IS_DECLARED 1
1213 # define YYLTYPE_IS_TRIVIAL 1
1224 #line 1223 "ripper.c"
1242 #ifdef YYTYPE_UINT16
1255 # ifdef __SIZE_TYPE__
1256 # define YYSIZE_T __SIZE_TYPE__
1257 # elif defined size_t
1258 # define YYSIZE_T size_t
1259 # elif ! defined YYSIZE_T
1260 # include <stddef.h>
1261 # define YYSIZE_T size_t
1263 # define YYSIZE_T unsigned int
1267 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
1270 # if defined YYENABLE_NLS && YYENABLE_NLS
1272 # include <libintl.h>
1273 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1277 # define YY_(Msgid) Msgid
1281 #ifndef YY_ATTRIBUTE
1282 # if (defined __GNUC__ \
1283 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
1284 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
1285 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
1287 # define YY_ATTRIBUTE(Spec)
1291 #ifndef YY_ATTRIBUTE_PURE
1292 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
1295 #ifndef YY_ATTRIBUTE_UNUSED
1296 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
1299 #if !defined _Noreturn \
1300 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
1301 # if defined _MSC_VER && 1200 <= _MSC_VER
1302 # define _Noreturn __declspec (noreturn)
1304 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
1309 #if ! defined lint || defined __GNUC__
1310 # define YYUSE(E) ((void) (E))
1315 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1317 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1318 _Pragma ("GCC diagnostic push") \
1319 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
1320 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1321 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1322 _Pragma ("GCC diagnostic pop")
1324 # define YY_INITIAL_VALUE(Value) Value
1326 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1327 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1328 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1330 #ifndef YY_INITIAL_VALUE
1331 # define YY_INITIAL_VALUE(Value)
1335 #if ! defined yyoverflow || YYERROR_VERBOSE
1339 # ifdef YYSTACK_USE_ALLOCA
1340 # if YYSTACK_USE_ALLOCA
1342 # define YYSTACK_ALLOC __builtin_alloca
1343 # elif defined __BUILTIN_VA_ARG_INCR
1344 # include <alloca.h>
1346 # define YYSTACK_ALLOC __alloca
1347 # elif defined _MSC_VER
1348 # include <malloc.h>
1349 # define alloca _alloca
1351 # define YYSTACK_ALLOC alloca
1352 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1353 # include <stdlib.h>
1355 # ifndef EXIT_SUCCESS
1356 # define EXIT_SUCCESS 0
1363 # ifdef YYSTACK_ALLOC
1365 # define YYSTACK_FREE(Ptr) do { ; } while (0)
1366 # ifndef YYSTACK_ALLOC_MAXIMUM
1371 # define YYSTACK_ALLOC_MAXIMUM 4032
1374 # define YYSTACK_ALLOC YYMALLOC
1375 # define YYSTACK_FREE YYFREE
1376 # ifndef YYSTACK_ALLOC_MAXIMUM
1377 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1379 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1380 && ! ((defined YYMALLOC || defined malloc) \
1381 && (defined YYFREE || defined free)))
1382 # include <stdlib.h>
1383 # ifndef EXIT_SUCCESS
1384 # define EXIT_SUCCESS 0
1388 # define YYMALLOC malloc
1389 # if ! defined malloc && ! defined EXIT_SUCCESS
1394 # define YYFREE free
1395 # if ! defined free && ! defined EXIT_SUCCESS
1403 #if (! defined yyoverflow \
1404 && (! defined __cplusplus \
1405 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1406 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1417 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1421 # define YYSTACK_BYTES(N) \
1422 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
1423 + 2 * YYSTACK_GAP_MAXIMUM)
1425 # define YYCOPY_NEEDED 1
1432 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1435 YYSIZE_T yynewbytes; \
1436 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1437 Stack = &yyptr->Stack_alloc; \
1438 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1439 yyptr += yynewbytes / sizeof (*yyptr); \
1445 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1449 # if defined __GNUC__ && 1 < __GNUC__
1450 # define YYCOPY(Dst, Src, Count) \
1451 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
1453 # define YYCOPY(Dst, Src, Count) \
1457 for (yyi = 0; yyi < (Count); yyi++) \
1458 (Dst)[yyi] = (Src)[yyi]; \
1468 #define YYLAST 13832
1471 #define YYNTOKENS 154
1475 #define YYNRULES 757
1477 #define YYNSTATES 1241
1481 #define YYUNDEFTOK 2
1482 #define YYMAXUTOK 353
1484 #define YYTRANSLATE(YYX) \
1485 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1491 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
1492 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
1493 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1494 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
1495 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
1497 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
1498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1500 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
1504 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
1505 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
1506 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1517 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1518 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1519 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1520 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1521 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1522 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1523 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
1524 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1525 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1533 0, 1176, 1176, 1176, 1202, 1208, 1215, 1222, 1229, 1235,
1534 1236, 1242, 1255, 1253, 1264, 1275, 1281, 1288, 1295, 1302,
1535 1308, 1313, 1312, 1322, 1322, 1329, 1336, 1346, 1354, 1361,
1536 1369, 1377, 1389, 1401, 1411, 1425, 1426, 1434, 1442, 1451,
1537 1458, 1461, 1469, 1477, 1486, 1494, 1502, 1510, 1518, 1528,
1538 1533, 1542, 1545, 1546, 1550, 1554, 1558, 1563, 1570, 1572,
1539 1562, 1580, 1583, 1590, 1590, 1590, 1596, 1597, 1600, 1601,
1540 1610, 1620, 1630, 1639, 1650, 1657, 1664, 1671, 1678, 1686,
1541 1694, 1701, 1708, 1717, 1718, 1727, 1728, 1737, 1744, 1751,
1542 1758, 1765, 1772, 1779, 1786, 1793, 1800, 1809, 1810, 1819,
1543 1826, 1835, 1842, 1851, 1858, 1865, 1872, 1882, 1889, 1899,
1544 1906, 1913, 1923, 1930, 1937, 1944, 1951, 1958, 1965, 1972,
1545 1979, 1989, 1996, 1999, 2006, 2013, 2022, 2023, 2024, 2025,
1546 2030, 2037, 2044, 2047, 2054, 2054, 2064, 2065, 2066, 2067,
1547 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077,
1548 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
1549 2088, 2089, 2090, 2091, 2092, 2093, 2096, 2096, 2096, 2097,
1550 2097, 2098, 2098, 2098, 2099, 2099, 2099, 2099, 2100, 2100,
1551 2100, 2100, 2101, 2101, 2101, 2102, 2102, 2102, 2102, 2103,
1552 2103, 2103, 2103, 2104, 2104, 2104, 2104, 2105, 2105, 2105,
1553 2105, 2106, 2106, 2106, 2106, 2107, 2107, 2110, 2117, 2124,
1554 2132, 2140, 2148, 2156, 2164, 2171, 2179, 2188, 2197, 2209,
1555 2221, 2233, 2245, 2249, 2253, 2257, 2261, 2265, 2269, 2273,
1556 2277, 2281, 2285, 2289, 2293, 2297, 2298, 2302, 2306, 2310,
1557 2314, 2318, 2322, 2326, 2330, 2334, 2338, 2342, 2342, 2347,
1558 2356, 2362, 2363, 2364, 2365, 2368, 2372, 2379, 2386, 2387,
1559 2391, 2398, 2407, 2412, 2423, 2430, 2459, 2460, 2463, 2464,
1560 2465, 2469, 2476, 2485, 2493, 2500, 2508, 2516, 2520, 2520,
1561 2557, 2566, 2570, 2576, 2583, 2590, 2597, 2606, 2607, 2610,
1562 2617, 2624, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640,
1563 2641, 2642, 2643, 2651, 2650, 2665, 2665, 2672, 2672, 2680,
1564 2688, 2695, 2702, 2709, 2717, 2724, 2731, 2738, 2745, 2745,
1565 2750, 2754, 2758, 2765, 2766, 2775, 2774, 2785, 2796, 2807,
1566 2817, 2828, 2827, 2844, 2843, 2858, 2867, 2915, 2914, 2938,
1567 2937, 2960, 2959, 2983, 2989, 2982, 3009, 3010, 3009, 3035,
1568 3042, 3049, 3056, 3065, 3072, 3078, 3095, 3101, 3107, 3113,
1569 3119, 3125, 3131, 3137, 3143, 3149, 3155, 3161, 3167, 3173,
1570 3188, 3195, 3201, 3208, 3209, 3210, 3213, 3214, 3217, 3218,
1571 3230, 3231, 3240, 3241, 3244, 3252, 3261, 3268, 3277, 3284,
1572 3291, 3298, 3305, 3314, 3322, 3331, 3335, 3339, 3343, 3347,
1573 3353, 3358, 3363, 3367, 3371, 3375, 3379, 3383, 3391, 3395,
1574 3399, 3403, 3407, 3411, 3415, 3419, 3423, 3429, 3430, 3436,
1575 3445, 3457, 3461, 3470, 3472, 3476, 3481, 3487, 3490, 3494,
1576 3498, 3502, 3487, 3526, 3534, 3544, 3549, 3555, 3565, 3579,
1577 3586, 3593, 3602, 3611, 3619, 3627, 3634, 3642, 3650, 3657,
1578 3664, 3677, 3685, 3695, 3696, 3700, 3695, 3717, 3718, 3722,
1579 3717, 3741, 3749, 3756, 3764, 3773, 3785, 3786, 3790, 3796,
1580 3797, 3799, 3800, 3801, 3789, 3814, 3815, 3818, 3819, 3827,
1581 3837, 3838, 3843, 3851, 3855, 3861, 3864, 3873, 3876, 3883,
1582 3886, 3887, 3889, 3890, 3899, 3908, 3913, 3922, 3931, 3936,
1583 3936, 3941, 3946, 3946, 3951, 3956, 3956, 3963, 3972, 3976,
1584 3985, 3989, 3993, 3997, 4001, 4004, 4008, 4017, 4021, 4025,
1585 4029, 4035, 4036, 4045, 4054, 4058, 4062, 4066, 4070, 4076,
1586 4078, 4087, 4095, 4109, 4110, 4133, 4137, 4143, 4149, 4150,
1587 4159, 4168, 4180, 4192, 4193, 4194, 4195, 4207, 4221, 4222,
1588 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4237, 4236, 4249,
1589 4259, 4272, 4279, 4286, 4295, 4307, 4310, 4317, 4324, 4327,
1590 4331, 4334, 4341, 4344, 4345, 4348, 4365, 4366, 4367, 4376,
1591 4386, 4395, 4401, 4411, 4417, 4426, 4428, 4437, 4447, 4453,
1592 4462, 4471, 4481, 4487, 4497, 4503, 4513, 4523, 4542, 4548,
1593 4558, 4568, 4609, 4612, 4611, 4628, 4632, 4637, 4641, 4645,
1594 4627, 4666, 4673, 4680, 4687, 4690, 4691, 4694, 4704, 4705,
1595 4706, 4707, 4710, 4720, 4721, 4731, 4732, 4733, 4734, 4737,
1596 4738, 4739, 4740, 4741, 4744, 4745, 4746, 4747, 4748, 4749,
1597 4750, 4753, 4766, 4775, 4782, 4791, 4792, 4796, 4795, 4805,
1598 4813, 4822, 4837, 4837, 4851, 4855, 4859, 4863, 4867, 4873,
1599 4878, 4883, 4887, 4891, 4895, 4899, 4903, 4907, 4911, 4915,
1600 4919, 4923, 4927, 4931, 4935, 4940, 4946, 4955, 4963, 4971,
1601 4979, 4989, 4990, 4998, 5007, 5015, 5036, 5038, 5051, 5061,
1602 5069, 5079, 5086, 5095, 5102, 5112, 5119, 5128, 5129, 5132,
1603 5140, 5148, 5158, 5168, 5178, 5185, 5194, 5201, 5210, 5211,
1604 5214, 5222, 5232, 5233, 5236, 5246, 5250, 5256, 5261, 5261,
1605 5285, 5286, 5295, 5297, 5320, 5331, 5338, 5346, 5365, 5366,
1606 5367, 5370, 5371, 5372, 5373, 5376, 5377, 5378, 5381, 5382,
1607 5385, 5386, 5389, 5390, 5393, 5394, 5397, 5398, 5401, 5404,
1608 5407, 5408, 5409, 5412, 5413, 5416, 5417, 5421
1612 #if YYDEBUG || YYERROR_VERBOSE || 0
1615 static const char *
const yytname[] =
1617 "\"end-of-input\"",
"error",
"$undefined",
"\"`class'\"",
1618 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
1619 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
1620 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
1621 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
1622 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
1623 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
1624 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
1625 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
1626 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
1627 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
1628 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
1629 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
1630 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
1631 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
1632 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
1633 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
1634 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
1635 "\"escaped space\"",
"\"escaped horizontal tab\"",
1636 "\"escaped form feed\"",
"\"escaped carriage return\"",
1637 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
1638 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
1639 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
1640 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
1641 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
1642 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
1643 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
1644 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
1645 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
1646 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
1647 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
1648 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
1649 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
1650 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
1651 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
1652 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
1653 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
1654 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
1655 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
1656 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
1657 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
1658 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
1659 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
1660 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
1661 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
1662 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
1663 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
1664 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
1665 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
1666 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
1667 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
1668 "block_args_tail",
"opt_block_args_tail",
"block_param",
1669 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
1670 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
1671 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
1672 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
1673 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
1674 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
1675 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
1676 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
1677 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
1678 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
1679 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
1680 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
1681 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
1682 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
1683 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
1684 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
1685 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
1686 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
1687 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
1688 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
1689 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
1690 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
1691 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
1692 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
1693 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
1694 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
1695 "rbracket",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
1704 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1705 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1706 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1707 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1708 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1709 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1710 315, 316, 317, 318, 319, 320, 321, 322, 46, 92,
1711 323, 9, 12, 13, 11, 132, 133, 134, 135, 140,
1712 141, 142, 139, 138, 148, 149, 143, 144, 128, 129,
1713 130, 131, 145, 146, 136, 137, 150, 147, 324, 325,
1714 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1715 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1716 346, 347, 348, 349, 350, 351, 61, 63, 58, 62,
1717 60, 124, 94, 38, 43, 45, 42, 47, 37, 352,
1718 33, 126, 353, 123, 125, 91, 44, 96, 40, 41,
1723 #define YYPACT_NINF -1056
1725 #define yypact_value_is_default(Yystate) \
1726 (!!((Yystate) == (-1056)))
1728 #define YYTABLE_NINF -758
1730 #define yytable_value_is_error(Yytable_value) \
1731 (!!((Yytable_value) == (-758)))
1737 -1056, 97, 3943, -1056, 9202, -1056, -1056, -1056, 8660, -1056,
1738 -1056, -1056, -1056, -1056, -1056, -1056, 9328, 9328, -1056, -1056,
1739 -1056, 5267, 4826, -1056, -1056, -1056, -1056, -41, 8515, 18,
1740 -33, 124, -1056, -1056, -1056, 3778, 4973, -1056, -1056, 4238,
1741 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 10966, 10966,
1742 10966, 10966, 90, 6715, 9454, 9832, 10210, 8944, -1056, 8370,
1743 -1056, -1056, -1056, 72, 143, 146, 197, 1315, 11092, 10966,
1744 -1056, 6, -1056, 1265, -1056, 411, -1056, -1056, 249, 152,
1745 253, -1056, 239, 11344, -1056, 279, 1752, 377, 542, 624,
1746 -1056, 11218, 11218, -1056, -1056, 7697, 11466, 11588, 11710, 8224,
1747 9328, 48, 21, -1056, -1056, 281, -1056, -1056, -1056, -1056,
1748 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 394, 461,
1749 -1056, 355, 498, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1750 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1751 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1752 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1753 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1754 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1755 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1756 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1757 -1056, -1056, 343, -1056, -1056, -1056, 346, 10966, 453, 6866,
1758 10966, 10966, 10966, -1056, 10966, -1056, 399, 4510, 448, -1056,
1759 -1056, 357, 723, 9, 300, 438, 547, 423, -1056, -1056,
1760 7571, -1056, 9328, 9580, -1056, -1056, 7823, -1056, 11218, 336,
1761 -1056, 430, 7017, -1056, 7168, -1056, -1056, 464, 483, 249,
1762 -1056, 740, -1056, 565, 3504, 3504, 581, 9454, -1056, 6715,
1763 549, 6, -1056, 1265, 18, 586, -1056, 1265, 18, 568,
1764 588, 640, -1056, 448, 578, 640, -1056, 18, 690, 1315,
1765 11832, 617, -1056, 790, 858, 885, 923, -1056, -1056, -1056,
1766 -1056, -1056, 362, -1056, 446, 562, 683, -1056, -1056, -1056,
1767 -1056, 694, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 7949,
1768 11218, 11218, 11218, 11218, 9454, 11218, 11218, -1056, -1056, -1056,
1769 668, -1056, -1056, -1056, -1056, -1056, 10336, -1056, 6715, 9073,
1770 663, 10336, -1056, 10966, 10966, 10966, 10966, 10966, -1056, -1056,
1771 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, -1056,
1772 -1056, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966,
1773 10966, -1056, -1056, 12335, 9328, 12425, 5859, 411, 108, 108,
1774 7319, 11218, 7319, 6, -1056, 674, 758, -1056, -1056, 936,
1775 819, 53, 77, 126, 732, 827, 11218, 274, -1056, 727,
1776 940, -1056, -1056, -1056, -1056, 403, 437, 475, 517, 533,
1777 540, 543, 554, 558, -1056, -1056, -1056, 566, -1056, -1056,
1778 -1056, 13685, -1056, -1056, 11092, 11092, -1056, -1056, 629, -1056,
1779 -1056, -1056, 407, 10966, 10966, 9706, -1056, -1056, 12515, 9328,
1780 12605, 10966, 10966, 9958, -1056, 18, 718, -1056, -1056, 10966,
1781 18, -1056, 750, 18, 752, -1056, 96, -1056, -1056, -1056,
1782 -1056, -1056, 8660, -1056, 10966, 729, 757, 12515, 12605, 10966,
1783 1265, -33, 18, -1056, -1056, 8075, 754, 18, -1056, -1056,
1784 10084, -1056, -1056, 10210, -1056, -1056, -1056, 430, 963, -1056,
1785 -1056, 771, 11832, 12695, 9328, 12785, -1056, -1056, -1056, -1056,
1786 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 824, 101,
1787 992, 141, 10966, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1788 -1056, -1056, 759, -1056, -1056, -1056, 866, -1056, 866, 10966,
1789 -1056, 773, 779, 860, -1056, 18, 11832, 781, -1056, -1056,
1790 -1056, 884, 806, 4216, -1056, -1056, -1056, 1006, 644, -1056,
1791 565, 2696, 2696, 2696, 2696, 4071, 2908, 2696, 2696, 3504,
1792 3504, 814, 814, 3389, 1310, 1310, 1335, 24, 24, 565,
1793 565, 565, 1921, 1921, 3606, 4385, 5561, 4532, -1056, 483,
1794 -1056, 18, 832, -1056, 870, -1056, -1056, 5120, 866, 922,
1795 -1056, 6010, 921, 6463, 866, 37, 866, 935, 947, 153,
1796 12875, 9328, 12965, -1056, 411, -1056, 963, -1056, -1056, -1056,
1797 13055, 9328, 13145, 5859, 11218, -1056, -1056, -1056, -1056, -1056,
1798 -1056, 3199, -1056, 4363, -1056, -1056, -1056, 8660, 10966, -1056,
1799 10966, 448, -1056, 423, 4091, 4679, 18, 655, 707, -1056,
1800 -1056, -1056, -1056, 9706, -1056, 9958, -1056, -1056, 11218, 4510,
1801 -1056, -1056, 483, 483, -1056, -1056, -6, -1056, -1056, 640,
1802 11832, 771, 57, 749, 18, 447, 519, -1056, -1056, 1173,
1803 -1056, 538, -1056, 831, -1056, -1056, 553, 843, -1056, 565,
1804 -1056, -1056, 822, -1056, -1056, -1056, -1056, 830, 10462, 9454,
1805 -1056, 771, 11832, 9454, 11092, 10966, 13235, 9328, 13325, 12268,
1806 856, 11092, 11092, -1056, 668, 848, 875, 11092, 11092, -1056,
1807 -1056, 668, -1056, -1056, -1056, 10588, 167, -1056, 817, -1056,
1808 991, -1056, -1056, -1056, -1056, -1056, -1056, 947, 866, -1056,
1809 10714, 866, 81, 177, 18, 288, 307, 7319, 6, 11218,
1810 5859, 1030, 749, -1056, 18, 866, 96, 862, 8805, 21,
1811 152, -1056, -1056, -1056, -1056, 10966, 10966, 714, 10966, 10966,
1812 868, 96, -1056, -1056, 607, -1056, -1056, -1056, -1056, -1056,
1813 -1056, -1056, -1056, -1056, -1056, -1056, -1056, 887, -1056, 887,
1814 10966, 876, -1056, 771, -1056, 4510, 5414, 5708, 18, 744,
1815 748, -1056, -1056, 2641, 2641, 534, -1056, 400, 881, -1056,
1816 975, 934, -1056, 904, -1056, -1056, 804, -1056, -1056, 267,
1817 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 10966,
1818 -1056, -1056, -1056, -1056, -1056, -1056, 11092, -1056, -1056, -1056,
1819 -1056, -1056, 773, -1056, 938, -1056, -1056, -1056, 7319, -1056,
1820 -1056, -1056, -1056, 7319, 11218, 866, -1056, -1056, 866, -1056,
1821 -1056, 866, -1056, 10966, -1056, 63, -1056, 330, 866, 5859,
1822 6, 866, -1056, -1056, -1056, 1233, 5859, 1709, -1056, -1056,
1823 -1056, 10966, 9958, -1056, 1648, -1056, 1383, 7168, -1056, -1056,
1824 5859, 895, 756, -1056, -1056, -1056, -1056, 12268, 2069, -1056,
1825 -1056, 687, -1056, -1056, 1000, -1056, 12268, 2641, 2641, 534,
1826 400, 501, 12149, 12149, 4510, -1056, -1056, 11954, 108, -1056,
1827 -1056, 6589, -1056, 108, -1056, -1056, -1056, -1056, -1056, 10840,
1828 6161, -1056, 866, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
1829 -1056, -1056, -1056, 1218, -1056, -1056, -1056, -1056, -1056, -1056,
1830 18, 18, -1056, -1056, 917, -1056, 907, 10966, -1056, 911,
1831 595, 916, 916, -1056, 919, 1015, 924, 1020, -1056, 866,
1832 6, 862, 1709, -1056, -1056, -1056, -1056, 18, 942, 949,
1833 932, 12076, -1056, 933, 916, 916, -1056, 943, 945, -1056,
1834 931, -1056, -1056, 206, 38, 117, 18, 12235, -1056, 948,
1835 -1056, -1056, 952, 954, -1056, 12268, -1056, -1056, 679, -1056,
1836 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 18, 18,
1837 18, 18, 1060, -1056, 1049, 183, 292, 324, 5859, 1110,
1838 6010, 12149, 10966, -1056, 649, -1056, 1218, 1276, -1056, 974,
1839 18, 976, -1056, -1056, -1056, 10966, 1709, -1056, -1056, 1099,
1840 -1056, -1056, -1056, -1056, 359, -1056, -1056, 1709, -1056, -1056,
1841 1860, -1056, -1056, -1056, -1056, 5859, 18, 123, 7445, 994,
1842 -1056, 12076, 1709, -1056, 1074, 1070, 1099, -1056, -1056, -1056,
1843 1709, -1056, 1860, -1056, 1293, -1056, 988, 12268, -1056, 163,
1844 934, 990, -1056, 717, -1056, 687, 934, -1056, -1056, 730,
1845 -1056, -1056, -1056, -1056, 360, 13415, 9328, 13505, 922, -1056,
1846 817, 108, 838, 295, -1056, -1056, -1056, -1056, -1056, -1056,
1847 18, -1056, 1218, -1056, 855, -1056, -1056, -1056, 993, 996,
1848 -1056, 1091, 916, -1056, 998, -1056, 1001, -1056, 998, 866,
1849 999, 5859, 7168, -1056, 1032, -1056, 1070, -1056, 1009, 1014,
1850 -1056, 13595, -1056, 916, 1017, -1056, 1019, 1017, -1056, 710,
1851 -1056, -1056, 12268, 1023, -1056, 1026, 12268, -1056, -1056, -1056,
1852 -1056, -1056, 105, 187, 18, 371, 396, -1056, -1056, -1056,
1853 11218, 11218, 2069, -1056, -1056, 1037, 1038, 1709, -1056, 1860,
1854 -1056, -1056, 1860, -1056, 1860, -1056, -1056, -1056, -1056, 866,
1855 1042, -1056, 1709, -1056, 1860, -1056, 1013, 1040, -1056, 1860,
1856 -1056, 1860, -1056, -1056, 1293, -1056, 1023, 12268, 12268, 1023,
1857 406, -1056, -1056, -1056, -1056, 855, 855, 998, 1052, 998,
1858 998, -1056, -1056, 1017, 1053, 1017, 1017, -1056, -1056, 1023,
1859 -1056, 1038, -1056, 1860, -1056, -1056, -1056, -1056, 1860, -1056,
1860 -1056, -1056, 6312, 998, 1017, 80, -1056, -1056, -1056, -1056,
1869 2, 0, 0, 1, 0, 361, 362, 363, 0, 354,
1870 355, 356, 359, 357, 358, 360, 349, 350, 351, 352,
1871 372, 278, 278, 635, 634, 636, 637, 746, 0, 746,
1872 0, 0, 639, 638, 640, 728, 730, 631, 630, 729,
1873 633, 625, 626, 627, 628, 576, 645, 646, 0, 0,
1874 0, 0, 0, 0, 305, 757, 757, 95, 325, 596,
1875 596, 598, 600, 0, 0, 0, 0, 0, 0, 0,
1876 3, 744, 6, 9, 35, 40, 52, 67, 278, 66,
1877 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
1878 303, 0, 0, 63, 63, 744, 0, 0, 0, 0,
1879 314, 68, 323, 292, 293, 575, 577, 294, 295, 296,
1880 298, 297, 299, 574, 615, 616, 573, 623, 641, 642,
1881 300, 0, 301, 71, 5, 8, 176, 187, 177, 200,
1882 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
1883 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
1884 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
1885 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
1886 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
1887 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
1888 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
1889 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
1890 0, 0, 0, 596, 0, 273, 0, 257, 283, 81,
1891 277, 757, 0, 641, 642, 0, 301, 757, 722, 82,
1892 746, 79, 0, 757, 448, 78, 746, 747, 0, 0,
1893 23, 247, 0, 10, 0, 349, 350, 317, 449, 0,
1894 229, 0, 314, 230, 220, 221, 311, 0, 21, 0,
1895 0, 744, 17, 20, 746, 85, 16, 307, 746, 0,
1896 750, 750, 258, 0, 0, 750, 720, 746, 0, 0,
1897 0, 93, 353, 0, 103, 104, 111, 427, 620, 619,
1898 621, 618, 0, 617, 0, 0, 0, 583, 592, 588,
1899 594, 624, 56, 241, 242, 753, 754, 4, 755, 745,
1900 0, 0, 0, 0, 0, 0, 0, 364, 453, 442,
1901 72, 457, 322, 365, 457, 438, 0, 99, 0, 91,
1902 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
1903 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
1904 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 740, 741, 0, 757, 0, 0, 62, 0, 0,
1906 0, 0, 0, 744, 333, 745, 0, 383, 382, 0,
1907 0, 641, 642, 301, 121, 122, 0, 0, 124, 649,
1908 0, 641, 642, 301, 341, 196, 189, 199, 184, 166,
1909 167, 168, 126, 127, 718, 343, 717, 0, 80, 743,
1910 742, 0, 324, 578, 0, 0, 134, 725, 311, 284,
1911 727, 280, 0, 0, 0, 0, 274, 282, 0, 757,
1912 0, 0, 0, 0, 275, 746, 0, 316, 279, 676,
1913 746, 269, 757, 746, 757, 268, 746, 321, 55, 25,
1914 27, 26, 0, 318, 0, 0, 0, 0, 0, 0,
1915 19, 0, 746, 309, 15, 745, 84, 746, 306, 312,
1916 752, 751, 259, 752, 261, 313, 721, 0, 110, 624,
1917 101, 96, 0, 0, 757, 0, 326, 428, 602, 622,
1918 605, 603, 597, 579, 580, 599, 581, 601, 0, 0,
1919 0, 0, 0, 756, 7, 29, 30, 31, 32, 33,
1920 53, 54, 0, 454, 453, 73, 0, 458, 0, 0,
1921 36, 288, 0, 39, 287, 746, 0, 89, 100, 51,
1922 41, 49, 0, 262, 283, 207, 37, 0, 301, 58,
1923 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
1924 217, 243, 244, 746, 231, 232, 233, 222, 223, 224,
1925 225, 226, 255, 256, 731, 733, 732, 734, 447, 278,
1926 445, 746, 731, 733, 732, 734, 446, 278, 0, 757,
1927 374, 0, 373, 0, 0, 0, 0, 331, 0, 311,
1928 0, 757, 0, 63, 339, 121, 122, 123, 647, 337,
1929 0, 757, 0, 0, 0, 344, 738, 739, 346, 731,
1930 732, 278, 42, 262, 208, 48, 215, 0, 0, 724,
1931 0, 285, 281, 757, 731, 732, 746, 731, 732, 723,
1932 315, 748, 264, 270, 265, 272, 320, 24, 0, 248,
1933 11, 34, 0, 757, 214, 22, 86, 18, 308, 750,
1934 0, 94, 735, 109, 746, 731, 732, 429, 606, 0,
1935 582, 0, 585, 0, 590, 587, 0, 0, 591, 228,
1936 451, 455, 0, 371, 452, 459, 437, 291, 0, 0,
1937 98, 92, 0, 0, 0, 0, 0, 757, 0, 0,
1938 0, 0, 0, 444, 76, 0, 450, 0, 0, 267,
1939 443, 74, 266, 304, 366, 757, 757, 565, 757, 375,
1940 757, 329, 377, 64, 376, 330, 468, 0, 0, 368,
1941 0, 0, 735, 310, 746, 731, 732, 0, 0, 0,
1942 0, 121, 122, 125, 746, 0, 746, 652, 0, 439,
1943 69, 135, 726, 286, 276, 0, 0, 450, 0, 0,
1944 757, 746, 260, 102, 450, 430, 607, 611, 612, 613,
1945 604, 614, 584, 586, 593, 589, 595, 757, 70, 757,
1946 0, 289, 38, 90, 50, 263, 731, 732, 746, 731,
1947 732, 559, 563, 0, 0, 0, 505, 499, 502, 557,
1948 0, 59, 485, 487, 489, 492, 538, 543, 544, 545,
1949 548, 549, 550, 551, 552, 554, 553, 555, 556, 0,
1950 47, 212, 46, 213, 77, 749, 0, 44, 210, 45,
1951 211, 75, 566, 567, 757, 568, 367, 369, 0, 12,
1952 14, 572, 370, 0, 0, 0, 378, 380, 0, 65,
1953 469, 0, 335, 0, 461, 0, 334, 450, 0, 0,
1954 0, 0, 450, 342, 719, 675, 0, 675, 347, 440,
1955 441, 0, 271, 319, 675, 608, 746, 0, 418, 417,
1956 0, 290, 450, 546, 547, 122, 561, 0, 0, 501,
1957 504, 0, 427, 560, 0, 60, 0, 541, 542, 0,
1958 491, 490, 0, 0, 249, 43, 209, 0, 0, 570,
1959 571, 0, 381, 0, 327, 328, 470, 332, 462, 0,
1960 0, 336, 0, 648, 338, 682, 679, 678, 677, 680,
1961 688, 697, 676, 0, 709, 698, 713, 712, 708, 674,
1962 746, 746, 681, 683, 684, 686, 660, 690, 695, 757,
1963 701, 757, 757, 706, 660, 711, 660, 0, 658, 0,
1964 0, 652, 675, 431, 434, 609, 416, 746, 0, 684,
1965 401, 692, 693, 757, 757, 757, 704, 401, 401, 399,
1966 421, 456, 460, 746, 519, 507, 746, 508, 514, 0,
1967 533, 596, 0, 525, 529, 532, 526, 528, 536, 558,
1968 486, 488, 539, 540, 562, 498, 495, 596, 746, 746,
1969 746, 746, 0, 569, 0, 641, 642, 301, 0, 757,
1970 0, 0, 0, 463, 757, 340, 0, 394, 386, 388,
1971 746, 391, 384, 650, 651, 0, 0, 667, 689, 0,
1972 655, 716, 699, 700, 0, 657, 656, 0, 670, 710,
1973 0, 672, 714, 345, 653, 0, 746, 0, 0, 0,
1974 419, 0, 407, 409, 0, 691, 0, 396, 398, 397,
1975 0, 412, 0, 414, 0, 506, 517, 0, 500, 512,
1976 523, 509, 515, 0, 503, 0, 531, 537, 535, 0,
1977 493, 494, 496, 497, 311, 0, 757, 0, 757, 13,
1978 757, 0, 477, 480, 483, 484, 464, 466, 467, 465,
1979 746, 393, 0, 685, 0, 702, 659, 687, 660, 660,
1980 696, 701, 757, 715, 660, 707, 660, 684, 660, 0,
1981 0, 0, 0, 432, 0, 420, 703, 400, 401, 401,
1982 311, 0, 694, 757, 401, 705, 401, 401, 425, 746,
1983 423, 426, 0, 520, 521, 510, 0, 516, 534, 530,
1984 524, 527, 735, 310, 746, 731, 732, 564, 379, 471,
1985 0, 0, 481, 385, 387, 389, 392, 0, 663, 0,
1986 665, 654, 0, 671, 0, 668, 673, 348, 433, 0,
1987 0, 610, 0, 404, 0, 406, 735, 310, 395, 0,
1988 413, 0, 410, 415, 0, 422, 518, 0, 0, 513,
1989 450, 472, 478, 479, 482, 0, 0, 660, 660, 660,
1990 660, 436, 435, 401, 401, 401, 401, 424, 522, 511,
1991 473, 390, 664, 0, 661, 666, 669, 405, 0, 402,
1992 408, 411, 0, 660, 401, 757, 662, 403, 475, 476,
1999 -1056, -1056, -1056, 953, -1056, 22, 743, -541, -1056, -51,
2000 -1056, 736, -1056, 115, -1056, -228, -321, -68, -1056, -1056,
2001 -1056, -32, -72, -1056, -1056, 2, -1056, -5, 735, 4,
2002 1113, -175, 26, -76, -1056, -452, -19, 2254, -362, 1108,
2003 -43, -14, -1056, -1056, 0, -1056, 3078, -1056, 1123, -1056,
2004 778, -1056, 709, 133, 601, -307, 121, -13, -1056, -283,
2005 -209, -4, -1056, -314, -25, -1056, -1056, -1056, -1056, -1056,
2006 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, 32,
2007 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056,
2008 -1056, -1056, -1056, -1056, -1056, 507, -1056, -296, 1267, -365,
2009 -1056, 127, -700, -1056, -1027, -1024, 200, 119, 363, 165,
2010 -1056, 454, -1056, -874, -1056, 40, 349, -1056, -1056, -1056,
2011 -1056, -1056, -1056, -1056, 495, -1056, -1056, -96, 722, -1056,
2012 -1056, -1056, 915, -1056, -1056, -1056, -1056, -698, -1056, 5,
2013 -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -1056, -591,
2014 -1056, -1056, -1056, -1056, 361, -1056, -1056, -1056, -851, -1056,
2015 230, -1055, -711, -779, -1056, 168, -1056, 170, 171, -1056,
2016 -409, -1056, 366, -1056, -1056, 166, -1056, -1056, 246, 28,
2017 375, -1056, 1151, 666, 777, 842, -1056, 760, 1516, -1056,
2018 2119, 2191, -1056, -1056, -59, -1056, -1056, -229, -1056, -1056,
2019 -1056, -1056, -1056, -1056, -1056, 3, -1056, -1056, -1056, -1056,
2020 -27, 2015, 1563, 1159, 2490, 1953, -1056, -1056, 314, -1056,
2021 -390, 71, -701, 421, -1019, -433, 145, -971, 75, -404,
2022 248, 226, -1056, -1056, -214, -674, -320, -969, -991, 234,
2023 266, -1056, -616, -1056, 162, -816, -1056, -1056, -1056, 157,
2024 -396, -1056, -319, -1056, -1056, -86, -1056, -7, 23, 56,
2025 -593, -236, -66, -28, -2
2031 -1, 1, 2, 70, 71, 72, 243, 578, 901, 579,
2032 261, 262, 461, 263, 452, 74, 530, 75, 539, 689,
2033 885, 368, 370, 371, 839, 76, 77, 515, 249, 79,
2034 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2035 200, 201, 202, 617, 567, 204, 86, 454, 359, 87,
2036 218, 269, 535, 568, 700, 440, 441, 231, 232, 220,
2037 426, 442, 523, 524, 88, 366, 268, 467, 638, 287,
2038 717, 588, 730, 728, 603, 605, 737, 738, 951, 251,
2039 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2040 321, 324, 705, 828, 720, 833, 834, 674, 252, 581,
2041 713, 835, 836, 380, 1018, 1019, 1020, 1021, 1127, 1053,
2042 957, 867, 868, 958, 1139, 1140, 486, 487, 657, 755,
2043 864, 1047, 953, 1123, 325, 101, 102, 322, 512, 513,
2044 671, 767, 516, 517, 675, 769, 845, 721, 1099, 718,
2045 840, 906, 1011, 1201, 1220, 1232, 1240, 1091, 1092, 1070,
2046 792, 793, 892, 893, 794, 878, 881, 877, 976, 977,
2047 978, 1143, 979, 982, 983, 984, 985, 986, 987, 795,
2048 796, 882, 797, 798, 799, 706, 824, 898, 830, 103,
2049 104, 105, 106, 107, 108, 109, 498, 661, 110, 500,
2050 111, 112, 499, 501, 292, 295, 296, 492, 659, 658,
2051 756, 865, 955, 1048, 760, 113, 114, 293, 115, 116,
2052 117, 223, 224, 120, 225, 226, 599, 729, 856, 857,
2053 1106, 1027, 930, 443, 932, 933, 1117, 935, 936, 937,
2054 938, 962, 963, 939, 940, 941, 942, 943, 966, 967,
2055 944, 945, 946, 947, 948, 1030, 407, 604, 274, 444,
2056 228, 123, 642, 570, 608, 602, 411, 307, 436, 437,
2057 696, 472, 582, 375, 266
2065 124, 294, 260, 365, 583, 308, 412, 330, 203, 235,
2066 838, 205, 221, 221, 240, 410, 291, 536, 434, 841,
2067 215, 215, 372, 367, 367, 597, 125, 367, 203, 308,
2068 651, 205, 282, 747, 89, 474, 89, 629, 281, 476,
2069 301, 998, 1000, 309, 569, 1141, 577, 317, 222, 222,
2070 238, 270, 241, 272, 276, 1107, 405, 571, 282, 203,
2071 369, 754, 735, 373, 712, 320, 495, 497, 1115, 1135,
2072 302, 282, 282, 282, 681, 1164, 580, 629, -112, 265,
2073 1166, 1107, -107, 1049, 462, 89, 89, 1196, 374, 283,
2074 1066, 1199, 611, 612, 615, 827, 221, 3, 791, 203,
2075 222, 333, -113, 529, 215, 716, -116, 236, -643, 569,
2076 242, 577, 237, 999, 1001, 283, 361, 73, -116, 73,
2077 -84, 580, 626, 222, 222, 1035, 1036, 222, 379, 390,
2078 390, 847, 222, 315, 316, -112, 430, 219, 229, 643,
2079 -98, 852, 622, 1219, 362, 409, 256, 1057, 1058, 1059,
2080 622, -120, 1121, 525, 422, 234, 950, 305, 260, 306,
2081 356, 357, 358, 954, 318, 458, 643, 663, 446, 267,
2082 448, 237, 1120, 227, 227, 1141, 826, 654, -119, 1164,
2083 323, 1221, 827, -107, 1067, 872, 529, 529, 305, 851,
2084 306, 1135, 964, 456, 879, 308, -112, 485, 1115, -103,
2085 -118, 1107, -118, -107, 480, -731, -107, 667, 260, 909,
2086 -107, 319, 271, 275, 305, 1145, 306, 884, 1107, 427,
2087 664, 408, 676, -104, 297, 427, 221, -107, 221, -731,
2088 773, 445, 1095, 465, 215, 434, 215, 215, 733, 629,
2089 124, 89, 367, 367, 367, 367, 1122, 510, 511, 237,
2090 968, 1046, 479, -731, 464, 282, -116, 227, -116, 305,
2091 668, 306, 222, -523, 222, 222, 1071, 244, 222, 662,
2092 222, 662, -111, 643, 89, 317, 89, 260, 505, 506,
2093 507, 508, 703, 643, 724, 265, 973, 975, 711, 89,
2094 715, 89, 447, 592, 734, 298, 1171, 995, 299, -110,
2095 477, 975, 975, 367, 282, -113, 884, 308, 912, 1146,
2096 527, 1204, 283, -115, 1097, 949, 1098, 1188, 594, 584,
2097 466, 586, 522, -109, 468, -732, 595, 522, 520, 972,
2098 596, 504, -117, 531, -112, -732, -112, -120, -118, 585,
2099 -118, 89, 222, 222, 222, 222, 89, 222, 222, 300,
2100 622, 435, 622, 438, 265, -114, 1144, 73, 222, 237,
2101 89, 283, 445, 537, 889, 575, 587, 569, 215, 577,
2102 810, 812, 460, -119, 873, 874, 817, 819, 964, 326,
2103 778, 234, 319, 1068, -115, 327, 964, 227, 964, 227,
2104 449, 823, 318, 60, 1076, 884, 222, 233, 89, -644,
2105 450, 451, 89, 222, 89, 331, 480, 1082, 1083, -117,
2106 1109, 575, 890, 752, 744, 891, 531, 531, 222, -114,
2107 1093, 1116, 842, 876, 73, 846, -113, 445, 488, 509,
2108 575, 1144, 763, 215, -106, 1144, 1129, 763, 637, 853,
2109 427, 1162, 427, -113, 1136, -113, 537, 537, 315, 316,
2110 480, 688, 203, -108, 414, 205, 529, 282, 575, 338,
2111 339, 222, 961, 529, 529, 929, 629, 929, 926, 529,
2112 529, -635, -106, 488, 929, -120, -105, -120, 992, 993,
2113 910, 489, 445, 490, 491, 575, 1218, 1144, 215, 416,
2114 1022, 630, 927, -643, 236, 895, 632, 89, 576, 634,
2115 -635, 282, 636, 425, 1119, -634, 349, 350, 964, 418,
2116 964, -119, 488, -119, 283, 964, 222, 964, 646, 714,
2117 -112, 727, -115, 648, -115, 423, 493, 994, 490, 491,
2118 708, 618, 710, 1008, -634, 1238, 736, 431, 1010, 904,
2119 -103, 744, 905, -636, -108, 907, 965, -117, 424, -117,
2120 -746, 1208, 911, 237, 964, 914, 694, -114, 283, -114,
2121 -644, 1200, 929, 576, 701, 493, 1214, 490, 491, 433,
2122 751, 975, -636, -106, 753, 702, 690, 707, 453, 622,
2123 1179, 680, 623, 1022, 1101, -637, 595, -113, 529, 445,
2124 875, 576, 575, -106, 695, 215, -106, 415, 740, 445,
2125 -106, -639, 575, 741, 488, 215, 480, -104, -638, 702,
2126 -353, -640, 230, 89, -637, 89, 1015, 203, 576, 488,
2127 205, 427, -629, 222, -120, 282, -632, 649, 488, 1032,
2128 -639, 233, -105, 222, 606, 89, 222, -638, -353, -353,
2129 -640, 702, 333, 859, -111, -108, 432, 1033, 961, 695,
2130 -746, -629, 961, 1043, 237, -632, 961, 282, 961, 490,
2131 491, 367, 849, 607, 827, -108, 719, 988, -108, 1022,
2132 222, 1022, -108, -120, 490, 491, 848, 695, 988, 988,
2133 459, 494, 283, 490, 491, 445, 531, -353, 575, 814,
2134 762, 215, 361, 531, 531, 858, 821, 850, 463, 531,
2135 531, 522, 693, 825, 831, 765, 837, -119, 837, 1112,
2136 699, 89, -83, 1077, 283, 89, 537, 800, 469, 222,
2137 362, 363, 475, 537, 537, 576, 1159, -110, 459, 537,
2138 537, 1078, 965, -105, 470, 576, 1133, 78, 203, 78,
2139 965, 471, 965, 415, 699, 980, 478, 695, 427, 488,
2140 496, 78, 78, -105, 748, -119, -105, 695, -728, 89,
2141 -105, 222, 89, 482, 921, 869, 367, 869, 643, 364,
2142 -120, 502, 1022, 1022, 514, 693, 699, 900, 961, 1154,
2143 961, -115, 902, 488, 913, 961, 473, 961, 78, 78,
2144 750, 361, 854, 471, 772, 925, 488, 988, 774, 981,
2145 -629, 695, 903, 78, 490, 491, 749, 863, 361, 528,
2146 695, 800, 800, 861, 589, 1111, 971, -310, 531, 362,
2147 428, 576, 899, 1177, 961, 503, 78, 78, -629, -629,
2148 78, 832, 827, -117, 273, 78, 362, 457, 490, 491,
2149 -114, 1148, 1111, 697, 593, -310, -310, 698, 537, 493,
2150 1009, 490, 491, -729, 1148, 816, 1194, 598, 361, 1014,
2151 89, 988, 965, 237, 965, 89, 222, 631, 429, 965,
2152 -115, 965, 282, 640, -117, -728, 673, -629, 1160, 1161,
2153 -728, 89, -114, 1211, 1044, 429, 362, 483, 89, 970,
2154 488, 333, 887, 888, -310, -632, 633, -732, 635, 89,
2155 -98, 641, 89, 670, 679, 800, 800, 915, 965, 916,
2156 917, 918, 919, 695, 800, 800, 800, 650, 1087, -283,
2157 800, 800, 1073, -632, -632, 678, -641, 682, 683, 1004,
2158 704, 697, 684, 89, 709, 484, 282, 1031, 1079, 1031,
2159 1031, 960, 89, 660, 78, 490, 491, 996, 354, 355,
2160 356, 357, 358, -642, -641, -641, 1016, 1088, -115, 1090,
2161 716, 1031, 1031, 1031, 719, 78, 768, 78, 78, 698,
2162 -729, 78, -632, 78, 816, -729, -284, 78, -106, 78,
2163 970, -642, -642, 764, 809, 417, 1023, 1024, 419, 420,
2164 421, -301, 78, 1055, 78, 766, -117, 1124, 815, 695,
2165 934, -114, 934, -641, 361, 800, 827, 831, 361, 934,
2166 855, 959, 837, 800, 862, 1038, -108, 1041, 866, -301,
2167 -301, -105, -285, 695, 695, 880, 282, 883, 969, 1065,
2168 -642, -311, 362, 590, 884, 886, 362, 600, 897, 800,
2169 89, -286, 89, 1025, 78, 78, 78, 78, 78, 78,
2170 78, 78, 781, 1026, 1080, 1081, -735, 1029, 488, -311,
2171 -311, 78, 1034, 78, 801, 1037, 78, 1039, -301, 970,
2172 1040, 1180, 1042, 1050, 361, 1051, 1103, 89, 1052, 1056,
2173 89, 591, 1064, 1126, 445, 601, 707, 575, 837, 1060,
2174 215, 1062, 367, 367, 1072, 800, 1074, 934, -735, 78,
2175 1075, 78, 362, 686, 521, 78, 78, 78, -311, 534,
2176 1031, 665, 1114, 490, 491, 1118, 1084, 361, 222, 826,
2177 1102, 78, 1104, 614, 616, 1125, -735, -735, 1202, 1203,
2178 1130, 1031, 1061, 1063, 1142, 1134, 1147, 1137, 361, 1167,
2179 614, 616, 1169, 1033, 1172, 362, 1085, 1174, 1178, 78,
2180 78, 687, 1181, 89, 89, 1182, 1163, 920, 801, 801,
2181 1184, -731, 1195, 1189, 78, 1191, 362, 1131, 644, 1197,
2182 800, 934, 1198, -735, 800, -735, 921, 695, -731, 1168,
2183 1170, 1235, 934, 1205, 1206, 1173, 1212, 1175, -732, 1176,
2184 800, 1113, 222, 222, 1086, 455, 1113, 959, 1223, 1228,
2185 78, 647, 619, 621, 645, 959, 394, 925, 926, 377,
2186 360, 273, 739, 829, 969, 601, 1100, 1158, 1113, 78,
2187 576, 1165, 969, 870, 969, 800, 800, 757, 758, 956,
2188 759, 989, 927, 837, 1217, 860, 672, 46, 47, 518,
2189 1239, 1094, 1207, 1149, 1209, 1150, 1151, 991, 621, 1210,
2190 990, 273, 801, 801, 1157, 1089, 413, 1213, 406, 1215,
2191 666, 801, 801, 801, 89, 1045, 1216, 801, 801, 100,
2192 915, 100, 916, 917, 918, 919, 931, 1110, 1222, 1224,
2193 1225, 1226, 1132, 100, 100, 915, 1128, 916, 917, 918,
2194 919, 920, 1108, 1183, 1185, 0, 0, 677, 1233, 1190,
2195 0, 1192, 1193, 1234, 1236, 310, 311, 312, 313, 314,
2196 921, 0, 934, 0, 0, 0, 78, 0, 78, 1016,
2197 100, 100, 0, 0, 922, 1017, 78, 959, 915, 0,
2198 916, 917, 918, 919, 923, 100, 78, 0, 78, 78,
2199 924, 925, 926, 0, 969, 1138, 969, 916, 917, 918,
2200 919, 969, 801, 969, 0, 802, 0, 0, 100, 100,
2201 801, 0, 100, 0, 0, 0, 927, 100, 0, 928,
2202 0, 0, 0, 78, 41, 42, 43, 44, 1227, 1229,
2203 1230, 1231, 0, 0, 0, 0, 801, 333, 0, 0,
2204 969, 0, 0, 0, 0, 0, 742, 0, 743, 1237,
2205 811, 813, 0, 0, 346, 347, 818, 820, 0, 0,
2206 0, 621, 333, 273, 78, 0, 0, 0, 78, 78,
2207 0, 0, 78, 0, 0, 0, 78, 78, 0, 346,
2208 347, 0, 78, 78, 0, 915, 0, 916, 917, 918,
2209 919, 920, 801, 353, 354, 355, 356, 357, 358, 802,
2210 802, 0, 0, 0, 811, 813, 771, 818, 820, 0,
2211 921, 0, 78, 0, 78, 78, 803, 0, 0, 354,
2212 355, 356, 357, 358, 0, 0, 100, 0, 0, 0,
2213 0, 0, 0, 822, 923, 0, 0, 0, 0, 0,
2214 924, 925, 926, 0, 0, 0, 0, 100, 844, 100,
2215 100, 0, 0, 100, 0, 100, 0, 0, 0, 100,
2216 0, 100, 0, 0, 0, 0, 927, 801, 0, 928,
2217 0, 801, 0, 0, 100, 896, 100, 0, 0, 0,
2218 0, 804, 0, 0, 0, 0, 237, 801, 0, 0,
2219 0, 0, 0, 802, 802, 0, 0, 0, 871, 0,
2220 0, 78, 802, 802, 802, 0, 0, 0, 802, 802,
2221 803, 803, 0, 78, 0, 119, 0, 119, 78, 78,
2222 896, 0, 801, 801, 0, 0, 100, 100, 100, 100,
2223 100, 100, 100, 100, 78, 0, 0, 0, 0, 0,
2224 0, 78, 0, 100, 0, 100, 0, 0, 100, 0,
2225 0, 0, 78, 0, 0, 78, 0, 0, 0, 0,
2226 0, 0, 0, 0, 0, 0, 119, 119, 0, 0,
2227 285, 908, 0, 0, 0, 804, 804, 0, 0, 0,
2228 0, 100, 0, 100, 0, 0, 78, 100, 100, 100,
2229 273, 0, 0, 802, 0, 78, 285, 0, 0, 0,
2230 0, 802, 0, 100, 803, 803, 0, 0, 0, 382,
2231 392, 392, 392, 803, 803, 803, 0, 0, 0, 803,
2232 803, 0, 0, 0, 0, 0, 0, 802, 0, 0,
2233 0, 100, 100, 0, 0, 0, 0, 1013, 0, 0,
2234 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
2235 915, 0, 916, 917, 918, 919, 920, 0, 0, 0,
2236 0, 0, 0, 0, 0, 1028, 0, 0, 0, 804,
2237 804, 0, 0, 0, 0, 921, 0, 0, 804, 804,
2238 804, 0, 100, 802, 804, 804, 0, 0, 0, 0,
2239 0, 0, 0, 78, 0, 78, 0, 0, 0, 923,
2240 0, 100, 0, 0, 803, 924, 925, 926, 0, 0,
2241 0, 915, 803, 916, 917, 918, 919, 920, 0, 0,
2242 0, 0, 119, 0, 0, 0, 0, 332, 0, 0,
2243 78, 927, 0, 78, 928, 0, 921, 0, 803, 0,
2244 1096, 0, 0, 0, 0, 0, 952, 0, 0, 0,
2245 0, 0, 0, 1105, 0, 119, 0, 119, 802, 0,
2246 923, 0, 802, 0, 0, 0, 924, 925, 926, 804,
2247 119, 78, 119, 0, 0, 0, 0, 804, 802, 333,
2248 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
2249 344, 345, 927, 285, 803, 928, 346, 347, 100, 0,
2250 100, 0, 0, 804, 0, 0, 78, 78, 100, 0,
2251 0, 0, 0, 802, 802, 0, 0, 0, 100, 0,
2252 100, 100, 119, 0, 0, 0, 0, 119, 0, 348,
2253 0, 349, 350, 351, 352, 353, 354, 355, 356, 357,
2254 358, 119, 285, 0, 0, 78, 78, 0, 0, 0,
2255 0, 0, 0, 0, 0, 100, 0, 0, 0, 804,
2256 0, 0, 915, 0, 916, 917, 918, 919, 920, 803,
2257 0, 0, 0, 803, 0, 0, 0, 0, 0, 119,
2258 0, 0, 0, 119, 0, 119, 0, 921, 0, 803,
2259 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
2260 100, 100, 0, 0, 100, 122, 0, 122, 100, 100,
2261 0, 923, 0, 0, 100, 100, 0, 78, 925, 926,
2262 0, 0, 0, 0, 803, 803, 0, 0, 0, 0,
2263 0, 0, 0, 0, 804, 0, 0, 0, 804, 0,
2264 0, 0, 0, 927, 100, 0, 100, 100, 333, 0,
2265 0, 0, 0, 0, 804, 0, 122, 122, 0, 0,
2266 286, 0, 0, 0, 0, 346, 347, 118, 0, 118,
2267 0, 0, 0, 0, 0, 0, 0, 0, 119, 0,
2268 0, 0, 0, 0, 0, 0, 286, 0, 0, 804,
2269 804, 0, 0, 0, 0, 285, 0, 0, 0, 383,
2270 393, 393, 351, 352, 353, 354, 355, 356, 357, 358,
2271 0, 0, 0, 0, 0, 0, 0, 0, 118, 118,
2272 0, 0, 284, 0, 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 100, 0, 0, 0, 0, 0, 285,
2274 0, 0, 0, 0, 0, 100, 0, 0, 284, 0,
2275 100, 100, 23, 24, 25, 26, 0, 0, 0, 0,
2276 0, 381, 391, 391, 391, 0, 100, 0, 32, 33,
2277 34, 781, 0, 100, 0, 782, 0, 0, 41, 42,
2278 43, 44, 45, 0, 100, 0, 0, 100, 0, 0,
2279 0, 0, 0, 0, 119, 0, 119, 0, 0, 0,
2280 0, 0, 0, 0, 0, 0, 0, 0, 0, 783,
2281 784, 0, 122, 0, 0, 0, 119, 785, 100, 0,
2282 786, 0, 0, 787, 788, 0, 974, 100, 0, 789,
2283 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2284 0, 0, 0, 0, 0, 122, 0, 122, 0, 0,
2285 0, 790, 0, 0, 0, 805, 0, 0, 279, 0,
2286 122, 0, 122, 285, 0, 0, 0, 0, 0, 0,
2287 0, 0, 0, 0, 118, 0, 0, 0, 0, 0,
2288 0, 0, 0, 286, 0, 0, 0, 0, 0, 0,
2289 0, 0, 119, 0, 0, 285, 119, 0, 0, 0,
2290 0, 0, 808, 0, 0, 0, 85, 118, 85, 118,
2291 0, 0, 122, 0, 0, 0, 0, 122, 0, 0,
2292 0, 0, 118, 0, 118, 100, 0, 100, 0, 0,
2293 0, 122, 286, 0, 538, 0, 0, 0, 0, 0,
2294 119, 0, 0, 119, 0, 284, 0, 0, 0, 805,
2295 805, 0, 0, 0, 0, 0, 0, 85, 85, 0,
2296 0, 0, 100, 0, 0, 100, 0, 0, 0, 122,
2297 0, 0, 0, 122, 118, 122, 0, 0, 0, 118,
2298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 118, 284, 0, 808, 808, 0, 0,
2300 378, 0, 0, 100, 0, 0, 0, 0, 0, 0,
2301 0, 0, 0, 0, 0, 0, 0, 538, 538, 0,
2302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2303 0, 118, 0, 0, 0, 118, 0, 118, 100, 100,
2304 0, 119, 0, 805, 805, 0, 119, 0, 0, 0,
2305 0, 0, 805, 805, 805, 0, 0, 0, 805, 805,
2306 0, 0, 119, 0, 0, 0, 0, 0, 122, 119,
2307 0, 0, 0, 0, 0, 0, 0, 100, 100, 0,
2308 119, 0, 0, 119, 0, 286, 0, 0, 0, 0,
2309 808, 808, 0, 0, 0, 0, 0, 0, 0, 808,
2310 808, 808, 0, 0, 0, 808, 808, 0, 0, 0,
2311 1006, 0, 0, 85, 119, 0, 0, 0, 0, 0,
2312 0, 0, 0, 119, 0, 0, 0, 0, 0, 286,
2313 118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2314 0, 0, 121, 805, 121, 0, 85, 284, 85, 100,
2315 0, 805, 0, 0, 0, 0, 0, 0, 0, 0,
2316 0, 85, 0, 85, 0, 0, 0, 0, 0, 0,
2317 0, 0, 0, 0, 392, 0, 0, 805, 0, 0,
2318 0, 0, 0, 0, 122, 0, 122, 0, 0, 0,
2319 808, 284, 0, 121, 121, 0, 0, 0, 808, 0,
2320 0, 0, 0, 0, 0, 0, 122, 0, 0, 0,
2321 0, 0, 0, 85, 0, 0, 0, 0, 85, 0,
2322 0, 119, 0, 119, 808, 0, 0, 0, 0, 0,
2323 0, 0, 85, 805, 0, 532, 0, 0, 0, 0,
2324 0, 0, 0, 0, 0, 0, 118, 0, 118, 0,
2325 0, 0, 0, 286, 0, 0, 0, 0, 119, 0,
2326 0, 119, 761, 0, 392, 0, 0, 0, 118, 0,
2327 85, 0, 0, 0, 85, 0, 85, 0, 0, 0,
2328 808, 0, 122, 0, 0, 286, 122, 538, 0, 0,
2329 0, 0, 0, 0, 538, 538, 0, 0, 0, 0,
2330 538, 538, 0, 0, 0, 0, 0, 0, 805, 0,
2331 0, 0, 805, 0, 0, 284, 0, 0, 532, 532,
2332 0, 0, 0, 0, 23, 24, 25, 26, 805, 0,
2333 122, 0, 0, 122, 119, 119, 0, 0, 0, 0,
2334 32, 33, 34, 0, 118, 0, 0, 284, 118, 121,
2335 41, 42, 43, 44, 45, 808, 0, 0, 0, 808,
2336 0, 0, 0, 805, 805, 0, 0, 0, 0, 85,
2337 0, 0, 0, 0, 0, 808, 0, 0, 0, 0,
2338 0, 0, 121, 0, 121, 0, 0, 0, 0, 0,
2339 0, 0, 118, 0, 0, 118, 0, 121, 0, 121,
2340 0, 789, 59, 60, 61, 62, 63, 64, 65, 66,
2341 808, 808, 0, 0, 0, 0, 0, 0, 0, 538,
2342 0, 0, 0, 333, -758, -758, -758, -758, 338, 339,
2343 279, 122, -758, -758, 0, 0, 122, 0, 0, 0,
2344 346, 347, 0, 0, 0, 119, 0, 0, 0, 121,
2345 0, 0, 122, 0, 121, 0, 0, 0, 806, 122,
2346 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
2347 122, 121, 0, 122, 0, 349, 350, 351, 352, 353,
2348 354, 355, 356, 357, 358, 85, 0, 85, 0, 0,
2349 0, 0, 0, 118, 0, 0, 0, 0, 118, 0,
2350 1007, 0, 0, 0, 122, 0, 121, 85, 0, 0,
2351 121, 0, 121, 122, 118, 0, 0, 0, 0, 0,
2352 0, 118, 0, 0, 0, 0, 0, 0, 0, 0,
2353 807, 0, 118, 0, 0, 118, 0, 0, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2355 0, 0, 806, 806, 121, 121, 0, 0, 0, 0,
2356 0, 0, 1005, 0, 393, 0, 118, 0, 0, 0,
2357 0, 0, 0, 0, 0, 118, 0, 0, 0, 0,
2358 0, 0, 0, 85, 0, 0, 0, 85, 532, 0,
2359 0, 0, 0, 0, 0, 532, 532, 0, 0, 0,
2360 0, 532, 532, 0, 0, 121, 0, 0, 0, 0,
2361 0, 122, 0, 122, 0, 0, 0, 0, 0, 0,
2362 0, 0, 0, 0, 807, 807, 391, 0, 0, 0,
2363 0, 85, 0, 0, 85, 333, 334, 335, 336, 337,
2364 338, 339, 340, 0, 342, 343, 806, 806, 122, 0,
2365 0, 122, 346, 347, 393, 806, 806, 806, 0, 0,
2366 0, 806, 806, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 118, 0, 118, 0, 0, 0, 0,
2368 0, 0, 0, 0, 0, 0, 0, 349, 350, 351,
2369 352, 353, 354, 355, 356, 357, 358, 0, 0, 0,
2370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2371 118, 0, 0, 118, 0, 0, 391, 0, 807, 807,
2372 532, 121, 0, 121, 122, 122, 0, 807, 807, 807,
2373 0, 0, 85, 807, 807, 0, 0, 85, 0, 0,
2374 0, 0, 0, 121, 217, 217, 806, 0, 0, 0,
2375 0, 0, 0, 85, 806, 0, 0, 0, 0, 0,
2376 85, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2377 0, 85, 0, 0, 85, 0, 250, 253, 254, 255,
2378 806, 0, 0, 217, 217, 0, 118, 118, 0, 0,
2379 0, 0, 0, 0, 0, 0, 303, 304, 0, 0,
2380 0, 1003, 0, 0, 0, 85, 0, 0, 0, 0,
2381 0, 0, 0, 0, 85, 0, 0, 0, 807, 121,
2382 0, 0, 0, 121, 121, 0, 807, 0, 217, 0,
2383 0, 121, 121, 0, 0, 122, 806, 121, 121, 0,
2384 0, 0, 0, 0, 0, 0, 0, 0, 0, -757,
2385 0, 0, 807, 0, 0, 0, 0, -757, -757, -757,
2386 0, 0, -757, -757, -757, 0, -757, 121, 0, 0,
2387 121, 0, 0, 0, -757, -757, -757, 0, 0, 0,
2388 0, 0, 0, 0, 0, 0, -757, -757, 0, -757,
2389 -757, -757, -757, -757, 0, 0, 0, 118, 0, 0,
2390 0, 0, 0, 0, 0, 0, 0, 0, 807, 0,
2391 0, 806, 85, 0, 85, 806, 0, -757, 0, 0,
2392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2393 0, 806, 0, 0, 0, 217, 0, 0, 217, 217,
2394 217, 0, 303, 0, 0, -757, -757, 0, 0, 85,
2395 0, 0, 85, 0, 0, 0, 121, 0, 217, 0,
2396 217, 217, 0, 0, 0, 0, 806, 806, 121, -757,
2397 0, 0, 0, 121, 0, 0, 0, 0, 0, 0,
2398 0, 0, 0, 807, 0, 0, 0, 807, 0, 121,
2399 0, 0, -757, -757, 0, 0, 121, 233, -757, 0,
2400 -757, 0, -757, 807, 0, 0, 0, 121, 0, 0,
2401 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2402 0, 0, 0, 0, 0, 85, 85, 0, 0, 0,
2403 0, 0, 0, 0, 0, 0, 0, 0, 807, 807,
2404 0, 121, 0, 0, 0, 0, 0, 0, 0, 0,
2405 121, 0, 0, 0, 217, 0, 0, 0, 0, 533,
2406 0, 540, 541, 542, 543, 544, 0, 0, 545, 546,
2407 547, 548, 549, 550, 551, 552, 553, 0, 0, 554,
2408 555, 556, 557, 558, 559, 560, 561, 562, 563, 0,
2409 0, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2411 0, 0, 0, 0, 0, 0, 333, 334, 335, 336,
2412 337, 338, 339, 340, 341, 342, 343, 344, 345, 0,
2413 0, 0, 0, 346, 347, 0, 85, 0, 0, 0,
2414 0, 0, 613, 613, 0, 0, 0, 0, 121, 0,
2415 121, 613, 217, 217, 0, 0, 0, 217, 0, 613,
2416 613, 217, 0, 0, 0, 0, 348, 255, 349, 350,
2417 351, 352, 353, 354, 355, 356, 357, 358, 0, 0,
2418 0, 0, 639, 0, 0, 121, 0, 613, 121, 0,
2419 0, 0, 237, 0, 0, 0, 0, 0, 217, 0,
2420 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2421 0, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2423 669, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2424 342, 343, -758, -758, 0, 0, 0, 217, 346, 347,
2425 0, 0, 0, 0, 0, 0, -735, 0, 0, 0,
2426 0, 121, 121, 0, -735, -735, -735, 0, 0, 0,
2427 -735, -735, 0, -735, 0, 0, 0, 0, 0, 0,
2428 0, -735, -735, 349, 350, 351, 352, 353, 354, 355,
2429 356, 357, 358, -735, -735, 0, -735, -735, -735, -735,
2430 -735, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2431 0, 0, 0, 0, 0, 0, 0, 0, 0, 217,
2432 0, 0, 0, 0, -735, 0, 0, 0, 0, 217,
2433 0, 0, 0, -735, -735, -735, -735, -735, -735, -735,
2434 -735, -735, -735, -735, -735, -735, 217, 0, 217, 0,
2435 -735, -735, -735, -735, 0, 691, 0, 0, 0, 0,
2436 0, 217, 0, 217, 0, 0, 0, 0, 0, 0,
2437 0, 0, 121, 0, 0, 0, -735, 0, 0, 0,
2438 0, 0, -116, -735, 0, -735, -735, -735, -735, -735,
2439 -735, -735, -735, -735, -735, 0, 0, 0, 0, -735,
2440 -735, -735, -107, 0, 0, -735, 217, -735, 0, -735,
2441 0, 0, 613, 775, 0, 217, 0, 0, 0, 613,
2442 613, 0, 0, 0, 0, 613, 613, 0, -629, 0,
2443 0, 0, 0, 217, 0, 0, -629, -629, -629, 0,
2444 0, -629, -629, -629, 0, -629, 0, 0, 217, 0,
2445 0, 0, 0, -629, 0, -629, -629, -629, 0, 0,
2446 0, 0, 0, 0, 0, -629, -629, 0, -629, -629,
2447 -629, -629, -629, 613, 613, 0, 613, 613, 0, 0,
2448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2449 0, 0, 0, 0, 0, 0, -629, 0, 217, 0,
2450 0, 0, 0, 0, 0, -629, -629, -629, -629, -629,
2451 -629, -629, -629, -629, -629, -629, -629, -629, 0, 0,
2452 0, 0, -629, -629, -629, -629, 0, -629, -629, 0,
2453 0, 0, 0, 0, -629, 0, 0, 894, 0, 0,
2454 0, 0, 0, 0, 613, 0, 0, 0, -629, 0,
2455 0, -629, 0, 0, -629, -629, -629, -629, -629, -629,
2456 -629, -629, -629, -629, -629, -629, -629, 0, 0, 0,
2457 0, 217, -629, -629, -629, 0, 0, -629, -629, -629,
2458 0, -629, 0, 0, 0, 0, 0, 0, 0, 613,
2459 217, 0, 0, -757, 4, 0, 5, 6, 7, 8,
2460 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
2461 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2462 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2463 0, 0, 27, 0, 0, 0, 0, 217, 28, 29,
2464 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2465 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2466 0, 0, 0, 0, 0, 217, 0, 0, 48, 49,
2467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2468 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2469 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2470 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2471 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2473 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
2474 217, -735, 0, 0, -757, 0, -757, 0, 0, -735,
2475 -735, -735, 0, 217, -735, -735, -735, 0, -735, 0,
2476 0, 0, 0, 0, 0, 0, -735, -735, -735, -735,
2477 -735, 0, 0, 0, 0, 0, 0, 0, -735, -735,
2478 0, -735, -735, -735, -735, -735, 0, 0, 0, 0,
2479 0, 0, 0, 0, 0, 0, 0, 0, 333, 334,
2480 335, 336, 337, 338, 339, 0, 0, 342, 343, -735,
2481 0, 0, 0, 0, 217, 346, 347, 0, -735, -735,
2482 -735, -735, -735, -735, -735, -735, -735, -735, -735, -735,
2483 -735, 0, 0, 0, 0, -735, -735, -735, -735, 0,
2484 745, -735, 0, 0, 0, 0, 0, -735, 0, 0,
2485 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
2486 0, -735, 0, 0, -735, 0, 0, -116, -735, -735,
2487 -735, -735, -735, -735, -735, -735, -735, -735, -735, -735,
2488 0, 0, 0, 0, -735, -735, -735, -735, -632, 0,
2489 -735, -735, -735, 0, -735, 0, -632, -632, -632, 0,
2490 0, -632, -632, -632, 0, -632, 0, 0, 0, 0,
2491 685, 0, 0, -632, 0, -632, -632, -632, 0, 0,
2492 0, 0, 0, 0, 0, -632, -632, 0, -632, -632,
2493 -632, -632, -632, 0, 0, 0, 0, 0, 0, 0,
2494 0, 0, 0, 333, 334, 335, 336, 337, 338, 339,
2495 340, 341, 342, 343, 344, 345, -632, 0, 0, 0,
2496 346, 347, 0, 0, 0, -632, -632, -632, -632, -632,
2497 -632, -632, -632, -632, -632, -632, -632, -632, 0, 0,
2498 0, 0, -632, -632, -632, -632, 0, -632, -632, 0,
2499 0, 0, 0, 348, -632, 349, 350, 351, 352, 353,
2500 354, 355, 356, 357, 358, 0, 0, 0, -632, 0,
2501 0, -632, -257, 0, -632, -632, -632, -632, -632, -632,
2502 -632, -632, -632, -632, -632, -632, -632, 0, 0, 0,
2503 0, 0, -632, -632, -632, -736, 0, -632, -632, -632,
2504 0, -632, 0, -736, -736, -736, 0, 0, -736, -736,
2505 -736, 0, -736, 0, 0, 0, 0, 685, 0, 0,
2506 -736, -736, -736, -736, -736, 0, 0, 0, 0, 0,
2507 0, 0, -736, -736, 0, -736, -736, -736, -736, -736,
2508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2509 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
2510 343, 344, 345, -736, 0, 0, 0, 346, 347, 0,
2511 0, 0, -736, -736, -736, -736, -736, -736, -736, -736,
2512 -736, -736, -736, -736, -736, 0, 0, 0, 0, -736,
2513 -736, -736, -736, 0, 0, -736, 0, 0, 0, 0,
2514 348, -736, 349, 350, 351, 352, 353, 354, 355, 356,
2515 357, 358, 0, 0, 0, -736, 0, 0, -736, 0,
2516 0, 0, -736, -736, -736, -736, -736, -736, -736, -736,
2517 -736, -736, -736, -736, 0, 0, 0, 0, -736, -736,
2518 -736, -736, -737, 0, -736, -736, -736, 0, -736, 0,
2519 -737, -737, -737, 0, 0, -737, -737, -737, 0, -737,
2520 0, 0, 0, 0, 0, 0, 0, -737, -737, -737,
2521 -737, -737, 0, 0, 0, 0, 0, 0, 0, -737,
2522 -737, 0, -737, -737, -737, -737, -737, 0, 0, 0,
2523 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2524 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2525 -737, 0, 0, 0, 346, 347, 0, 0, 0, -737,
2526 -737, -737, -737, -737, -737, -737, -737, -737, -737, -737,
2527 -737, -737, 0, 0, 0, 0, -737, -737, -737, -737,
2528 0, 0, -737, 0, 0, 0, 0, 348, -737, 349,
2529 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2530 0, 0, -737, 0, 0, -737, 0, 0, 0, -737,
2531 -737, -737, -737, -737, -737, -737, -737, -737, -737, -737,
2532 -737, 0, 0, 0, 0, -737, -737, -737, -737, -310,
2533 0, -737, -737, -737, 0, -737, 0, -310, -310, -310,
2534 0, 0, -310, -310, -310, 0, -310, 0, 0, 0,
2535 0, 0, 0, 0, -310, 0, -310, -310, -310, 0,
2536 0, 0, 0, 0, 0, 0, -310, -310, 0, -310,
2537 -310, -310, -310, -310, 0, 0, 0, 0, 0, 0,
2538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0, 0, 0, -310, 0, 0,
2540 0, 0, 0, 0, 0, 0, -310, -310, -310, -310,
2541 -310, -310, -310, -310, -310, -310, -310, -310, -310, 0,
2542 0, 0, 0, -310, -310, -310, -310, 0, 746, -310,
2543 0, 0, 0, 0, 0, -310, 0, 0, 0, 0,
2544 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2545 0, 0, -310, 0, 0, -118, -310, -310, -310, -310,
2546 -310, -310, -310, -310, -310, -310, -310, -310, 0, 0,
2547 0, 0, 0, -310, -310, -310, -449, 0, -310, -310,
2548 -310, 0, -310, 0, -449, -449, -449, 0, 0, -449,
2549 -449, -449, 0, -449, 0, 0, 0, 0, 0, 0,
2550 0, -449, -449, -449, -449, 0, 0, 0, 0, 0,
2551 0, 0, 0, -449, -449, 0, -449, -449, -449, -449,
2552 -449, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2554 0, 0, 0, 0, -449, 0, 0, 0, 0, 0,
2555 0, 0, 0, -449, -449, -449, -449, -449, -449, -449,
2556 -449, -449, -449, -449, -449, -449, 0, 0, 0, 0,
2557 -449, -449, -449, -449, 0, 0, -449, 0, 0, 0,
2558 0, 0, -449, 0, 0, 0, 0, 0, 0, 0,
2559 0, 0, 0, 0, 0, 0, -449, 0, 0, 0,
2560 0, 0, 0, -449, 0, -449, -449, -449, -449, -449,
2561 -449, -449, -449, -449, -449, 0, 0, 0, 0, -449,
2562 -449, -449, -449, -302, 233, -449, -449, -449, 0, -449,
2563 0, -302, -302, -302, 0, 0, -302, -302, -302, 0,
2564 -302, 0, 0, 0, 0, 0, 0, 0, -302, 0,
2565 -302, -302, -302, 0, 0, 0, 0, 0, 0, 0,
2566 -302, -302, 0, -302, -302, -302, -302, -302, 0, 0,
2567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2569 0, -302, 0, 0, 0, 0, 0, 0, 0, 0,
2570 -302, -302, -302, -302, -302, -302, -302, -302, -302, -302,
2571 -302, -302, -302, 0, 0, 0, 0, -302, -302, -302,
2572 -302, 0, 0, -302, 0, 0, 0, 0, 0, -302,
2573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2574 0, 0, 0, -302, 0, 0, -302, 0, 0, 0,
2575 -302, -302, -302, -302, -302, -302, -302, -302, -302, -302,
2576 -302, -302, 0, 0, 0, 0, 0, -302, -302, -302,
2577 -757, 0, -302, -302, -302, 0, -302, 0, -757, -757,
2578 -757, 0, 0, -757, -757, -757, 0, -757, 0, 0,
2579 0, 0, 0, 0, 0, -757, -757, -757, -757, 0,
2580 0, 0, 0, 0, 0, 0, 0, -757, -757, 0,
2581 -757, -757, -757, -757, -757, 0, 0, 0, 0, 0,
2582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2583 0, 0, 0, 0, 0, 0, 0, 0, -757, 0,
2584 0, 0, 0, 0, 0, 0, 0, -757, -757, -757,
2585 -757, -757, -757, -757, -757, -757, -757, -757, -757, -757,
2586 0, 0, 0, 0, -757, -757, -757, -757, 0, 0,
2587 -757, 0, 0, 0, 0, 0, -757, 0, 0, 0,
2588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2589 -757, 0, 0, 0, 0, 0, 0, -757, 0, -757,
2590 -757, -757, -757, -757, -757, -757, -757, -757, -757, 0,
2591 0, 0, 0, -757, -757, -757, -757, -317, 233, -757,
2592 -757, -757, 0, -757, 0, -317, -317, -317, 0, 0,
2593 -317, -317, -317, 0, -317, 0, 0, 0, 0, 0,
2594 0, 0, -317, 0, -317, -317, 0, 0, 0, 0,
2595 0, 0, 0, 0, -317, -317, 0, -317, -317, -317,
2596 -317, -317, 0, 0, 0, 0, 0, 0, 0, 0,
2597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2598 0, 0, 0, 0, 0, -317, 0, 0, 0, 0,
2599 0, 0, 0, 0, -317, -317, -317, -317, -317, -317,
2600 -317, -317, -317, -317, -317, -317, -317, 0, 0, 0,
2601 0, -317, -317, -317, -317, 0, 0, -317, 0, 0,
2602 0, 0, 0, -317, 0, 0, 0, 0, 0, 0,
2603 0, 0, 0, 0, 0, 0, 0, -317, 0, 0,
2604 0, 0, 0, 0, -317, 0, -317, -317, -317, -317,
2605 -317, -317, -317, -317, -317, -317, 0, 0, 0, 0,
2606 0, -317, -317, -317, -735, 230, -317, -317, -317, 0,
2607 -317, 0, -735, -735, -735, 0, 0, 0, -735, -735,
2608 0, -735, 0, 0, 0, 0, 0, 0, 0, -735,
2609 -735, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2610 0, -735, -735, 0, -735, -735, -735, -735, -735, 0,
2611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2613 0, 0, -735, 0, 0, 0, 0, 0, 0, 0,
2614 0, -735, -735, -735, -735, -735, -735, -735, -735, -735,
2615 -735, -735, -735, -735, 0, 0, 0, 0, -735, -735,
2616 -735, -735, 0, 691, 0, 0, 0, 0, 0, 0,
2617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2618 0, 0, 0, 0, -735, 0, 0, 0, 0, 0,
2619 -116, -735, 0, -735, -735, -735, -735, -735, -735, -735,
2620 -735, -735, -735, 0, 0, 0, 0, -735, -735, -735,
2621 -735, -310, 0, -735, 0, -735, 0, -735, 0, -310,
2622 -310, -310, 0, 0, 0, -310, -310, 0, -310, 0,
2623 0, 0, 0, 0, 0, 0, -310, 0, 0, 0,
2624 0, 0, 0, 0, 0, 0, 0, 0, -310, -310,
2625 0, -310, -310, -310, -310, -310, 0, 0, 0, 0,
2626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2627 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2628 0, 0, 0, 0, 0, 0, 0, 0, -310, -310,
2629 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2630 -310, 0, 0, 0, 0, -310, -310, -310, -310, 0,
2631 692, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2633 0, -310, 0, 0, 0, 0, 0, -118, -310, 0,
2634 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2635 0, 0, 0, 0, 0, -310, -310, -109, -310, 0,
2636 -310, 0, -310, 0, -310, 0, -310, -310, -310, 0,
2637 0, 0, -310, -310, 0, -310, 0, 0, 0, 0,
2638 0, 0, 0, -310, 0, 0, 0, 0, 0, 0,
2639 0, 0, 0, 0, 0, -310, -310, 0, -310, -310,
2640 -310, -310, -310, 0, 0, 0, 0, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, 0, -310, 0, 0, 0,
2643 0, 0, 0, 0, 0, -310, -310, -310, -310, -310,
2644 -310, -310, -310, -310, -310, -310, -310, -310, 0, 0,
2645 0, 0, -310, -310, -310, -310, 0, 692, 0, 0,
2646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2647 0, 0, 0, 0, 0, 0, 0, 0, -310, 0,
2648 0, 0, 0, 0, -118, -310, 0, -310, -310, -310,
2649 -310, -310, -310, -310, -310, -310, -310, 0, 0, 0,
2650 0, 0, -310, -310, -310, 0, 0, -310, 0, -310,
2651 257, -310, 5, 6, 7, 8, 9, -757, -757, -757,
2652 10, 11, 0, 0, -757, 12, 0, 13, 14, 15,
2653 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2654 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2655 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2656 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2657 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2658 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2659 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2660 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2661 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2662 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2665 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2666 -757, 257, -757, 5, 6, 7, 8, 9, 0, 0,
2667 -757, 10, 11, 0, -757, -757, 12, 0, 13, 14,
2668 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2669 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2670 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2671 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2672 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2673 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2675 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2676 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2677 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2679 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2680 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
2681 0, -757, 257, -757, 5, 6, 7, 8, 9, 0,
2682 0, -757, 10, 11, 0, 0, -757, 12, -757, 13,
2683 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2684 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2685 27, 0, 0, 0, 0, 0, 28, 29, 258, 31,
2686 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2687 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2688 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2690 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
2691 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
2692 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2693 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2695 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
2696 0, 0, -757, 257, -757, 5, 6, 7, 8, 9,
2697 0, 0, -757, 10, 11, 0, 0, -757, 12, 0,
2698 13, 14, 15, 16, 17, 18, 19, -757, 0, 0,
2699 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2700 0, 27, 0, 0, 0, 0, 0, 28, 29, 258,
2701 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2702 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2703 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2705 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2706 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2707 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2708 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2710 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
2711 0, 0, 0, -757, 257, -757, 5, 6, 7, 8,
2712 9, 0, 0, -757, 10, 11, 0, 0, -757, 12,
2713 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2714 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2715 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2716 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2717 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2718 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2720 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2721 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2722 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2723 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2724 257, 0, 5, 6, 7, 8, 9, 0, -757, -757,
2725 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2726 16, 17, 18, 19, -757, 0, -757, 0, 0, 20,
2727 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2728 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2729 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2730 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2731 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2732 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2733 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2734 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2735 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2736 0, 0, 0, 0, 0, 0, 257, 0, 5, 6,
2737 7, 8, 9, 0, 0, 0, 10, 11, 67, 68,
2738 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2739 -757, 0, -757, 0, 0, 20, 21, 22, 23, 24,
2740 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2741 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2742 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2743 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2744 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2746 0, 0, 0, 52, 0, 0, 259, 54, 0, 55,
2747 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2748 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2750 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2751 0, 0, 0, 0, -757, 0, -757, 257, -757, 5,
2752 6, 7, 8, 9, 0, 0, 0, 10, 11, 0,
2753 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
2754 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2755 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2756 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
2757 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2758 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2759 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2760 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2761 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2762 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2763 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2765 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
2766 0, 0, 0, 0, 0, -757, 0, -757, 4, -757,
2767 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
2768 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
2769 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2770 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2771 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
2772 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2773 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2774 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2775 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2776 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
2777 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
2778 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
2781 0, -757, 0, 0, 0, 0, 0, 0, -757, 257,
2782 -757, 5, 6, 7, 8, 9, 0, 0, 0, 10,
2783 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
2784 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2785 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2786 0, 0, 0, 28, 29, 258, 31, 32, 33, 34,
2787 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2788 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2789 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
2790 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
2791 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
2792 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
2793 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2795 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
2796 0, 0, -757, 0, 0, 0, 0, 0, 0, -757,
2797 257, -757, 5, 6, 7, 8, 9, 0, 0, -757,
2798 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
2799 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2800 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2801 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2802 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2803 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2804 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2805 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2806 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2807 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2808 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2809 0, 0, 0, 0, 0, 0, 257, 0, 5, 6,
2810 7, 8, 9, 0, 0, 0, 10, 11, 67, 68,
2811 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2812 -757, 0, -757, 0, 0, 20, 21, 22, 23, 24,
2813 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2814 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2815 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2816 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2817 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2818 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2819 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2820 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2821 63, 64, 65, 66, 0, -757, 0, 0, 0, 0,
2822 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2823 0, 0, 10, 11, 67, 68, 69, 12, 0, 13,
2824 14, 15, 16, 17, 18, 19, -757, 0, -757, 0,
2825 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2826 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
2827 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
2828 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2829 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2831 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
2832 0, 0, 209, 54, 0, 55, 56, 0, 210, 211,
2833 212, 58, 59, 213, 61, 62, 63, 64, 65, 66,
2834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2835 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2836 67, 214, 69, 12, 0, 13, 14, 15, 16, 17,
2837 18, 19, 0, 0, 237, 0, 0, 20, 21, 22,
2838 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2839 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2840 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2841 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2842 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2843 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2844 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
2845 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2846 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2847 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
2848 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
2849 0, 13, 14, 15, 16, 17, 18, 19, 305, 0,
2850 306, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2851 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
2852 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
2853 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2854 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2856 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2857 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
2858 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2859 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2860 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2861 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2862 16, 17, 18, 19, 0, 0, 237, 0, 0, 20,
2863 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2864 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
2865 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2866 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2867 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2868 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2869 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2870 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2871 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2872 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
2873 7, 8, 9, 0, 0, 0, 10, 11, 67, 68,
2874 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2875 503, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2876 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2877 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2878 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2879 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2880 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2881 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2882 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2883 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2884 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2886 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2887 0, 0, 0, 0, 0, 0, 503, 126, 127, 128,
2888 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2889 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2890 149, 0, 0, 0, 150, 151, 152, 395, 396, 397,
2891 398, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2892 161, 162, 163, 399, 400, 401, 402, 168, 37, 38,
2893 403, 40, 0, 0, 0, 0, 0, 0, 0, 0,
2894 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2895 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2896 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2898 0, 185, 186, 0, 0, 0, 0, 0, 0, 0,
2899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2900 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2901 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2902 0, 199, 404, 126, 127, 128, 129, 130, 131, 132,
2903 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2904 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
2905 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
2906 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
2907 165, 166, 167, 168, 288, 289, 169, 290, 0, 0,
2908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2909 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
2910 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
2911 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
2912 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
2913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2914 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
2915 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
2916 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
2917 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
2918 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
2919 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
2920 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
2921 160, 161, 162, 163, 164, 165, 166, 167, 168, 239,
2922 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
2923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2924 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
2925 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
2926 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2927 0, 0, 185, 186, 0, 0, 59, 0, 0, 0,
2928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2929 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
2930 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
2931 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
2932 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2933 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
2934 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
2935 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
2936 165, 166, 167, 168, 0, 0, 169, 0, 0, 0,
2937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2938 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
2939 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
2940 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
2941 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
2942 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
2944 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
2945 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
2946 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
2947 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
2948 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
2949 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
2950 160, 161, 162, 163, 164, 165, 166, 167, 168, 0,
2951 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2953 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
2954 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
2955 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2956 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
2957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2958 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
2959 193, 194, 195, 196, 0, 197, 198, 5, 6, 7,
2960 0, 9, 199, 0, 0, 10, 11, 0, 0, 0,
2961 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
2962 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
2963 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
2964 277, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2965 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2969 0, 0, 278, 0, 0, 209, 54, 0, 55, 56,
2970 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
2971 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2972 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
2973 9, 0, 0, 279, 10, 11, 0, 0, 0, 12,
2974 280, 13, 14, 15, 245, 246, 18, 19, 0, 0,
2975 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
2976 0, 0, 206, 0, 0, 0, 0, 0, 0, 277,
2977 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
2978 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2982 0, 278, 0, 0, 209, 54, 0, 55, 56, 0,
2983 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2984 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2985 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
2986 0, 0, 279, 10, 11, 0, 0, 0, 12, 526,
2987 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2988 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2989 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
2990 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2991 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2992 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2994 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2995 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2996 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2997 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2998 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2999 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3000 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3001 22, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3002 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3003 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3004 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3005 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3006 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3007 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3008 54, 0, 55, 56, 0, 210, 211, 212, 58, 59,
3009 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3010 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3011 8, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3012 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3013 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3014 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3015 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
3016 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3017 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3018 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3019 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3020 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3021 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3022 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3023 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3024 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3025 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3026 20, 21, 22, 23, 24, 25, 26, 0, 0, 206,
3027 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3028 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3029 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3030 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3032 50, 439, 0, 0, 0, 0, 0, 0, 208, 0,
3033 0, 209, 54, 0, 55, 56, 0, 210, 211, 212,
3034 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3035 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3036 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3037 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3038 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3039 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3040 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3041 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3042 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3043 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3044 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3045 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3046 55, 56, 0, 620, 211, 212, 58, 59, 213, 61,
3047 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3048 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3049 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3050 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3051 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3052 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3053 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3054 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3055 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3057 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3058 208, 0, 0, 209, 54, 0, 55, 56, 0, 210,
3059 211, 0, 58, 59, 213, 61, 62, 63, 64, 65,
3060 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3061 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3062 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3063 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3064 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3065 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3066 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3067 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3068 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3069 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3070 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3071 54, 0, 55, 56, 0, 0, 211, 212, 58, 59,
3072 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3073 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3074 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3075 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3076 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3077 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3078 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3079 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3080 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3081 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3082 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3083 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3084 0, 620, 211, 0, 58, 59, 213, 61, 62, 63,
3085 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3086 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3087 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3088 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3089 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3090 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3091 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3092 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3093 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3095 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3096 0, 209, 54, 0, 55, 56, 0, 0, 211, 0,
3097 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3098 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3099 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3100 214, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3101 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3102 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3103 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3104 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3105 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3106 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3107 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3108 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3109 55, 56, 0, 519, 0, 0, 58, 59, 60, 61,
3110 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3111 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3112 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3113 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3114 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3115 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3116 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3117 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3118 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3120 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3121 208, 0, 0, 209, 54, 0, 55, 56, 0, 770,
3122 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3123 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3124 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3125 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3126 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3127 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3128 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3129 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3130 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3131 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3132 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3133 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3134 54, 0, 55, 56, 0, 519, 0, 0, 58, 59,
3135 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3136 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3137 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3138 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3139 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3140 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3141 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3142 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3143 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3144 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3145 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3146 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3147 0, 843, 0, 0, 58, 59, 60, 61, 62, 63,
3148 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3149 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3150 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3151 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3152 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3153 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3154 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3155 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3156 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3158 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3159 0, 209, 54, 0, 55, 56, 0, 1012, 0, 0,
3160 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3161 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3162 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3163 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3164 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3165 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3166 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3167 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3168 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3169 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3170 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3171 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3172 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3173 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3174 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3175 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3176 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3177 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3178 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3179 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3180 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3181 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3183 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3184 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3185 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3186 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3187 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3188 11, 67, 214, 69, 12, 0, 13, 14, 15, 16,
3189 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3190 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3191 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3192 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3193 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3194 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3195 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3196 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3197 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3198 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3199 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3200 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3201 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3202 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3203 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3204 277, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3205 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3209 0, 0, 278, 0, 0, 328, 54, 0, 55, 56,
3210 0, 329, 0, 0, 58, 59, 60, 61, 62, 63,
3211 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3212 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3213 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3214 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3215 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3216 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3217 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3218 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 376, 0, 0, 53, 54, 0,
3222 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3223 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3224 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3225 11, 0, 0, 0, 12, 279, 13, 14, 15, 245,
3226 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3227 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3228 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3229 384, 36, 37, 38, 385, 40, 0, 41, 42, 43,
3230 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3233 0, 0, 386, 0, 0, 0, 387, 0, 0, 209,
3234 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3235 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3236 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3237 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3238 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3239 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3240 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3241 33, 34, 384, 36, 37, 38, 385, 40, 0, 41,
3242 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3245 0, 0, 0, 0, 0, 0, 0, 0, 387, 0,
3246 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3247 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3248 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3249 0, 0, 0, 10, 11, 0, 0, 0, 12, 279,
3250 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3251 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3252 0, 206, 0, 0, 0, 0, 0, 0, 277, 0,
3253 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3254 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3258 278, 0, 0, 328, 54, 0, 55, 56, 0, 0,
3259 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3260 66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3261 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3262 12, 279, 13, 14, 15, 245, 246, 18, 19, 0,
3263 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3264 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3265 277, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3266 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3270 0, 0, 1002, 0, 0, 209, 54, 0, 55, 56,
3271 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3272 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3273 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3274 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3275 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3276 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3277 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3278 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3279 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3282 0, 0, 0, 0, 1054, 0, 0, 209, 54, 0,
3283 55, 56, 23, 24, 25, 26, 58, 59, 60, 61,
3284 62, 63, 64, 65, 66, 0, 0, 0, 32, 33,
3285 34, 781, 0, 0, 0, 782, 0, 980, 41, 42,
3286 43, 44, 45, 0, 0, 279, 0, 0, 0, 0,
3287 0, 0, 0, 0, 0, 0, 921, 0, 0, 0,
3288 0, 0, 0, 0, 0, 0, 0, 0, 0, 783,
3289 784, 0, 0, 0, 0, 0, 0, 785, 0, 0,
3290 786, 0, 0, 787, 788, 0, 974, 925, 0, 789,
3291 59, 997, 61, 62, 63, 64, 65, 66, 23, 24,
3292 25, 26, 0, 0, 0, 0, 0, 0, 0, 0,
3293 0, 790, 0, 0, 32, 33, 34, 781, 279, 0,
3294 0, 782, 0, 0, 41, 42, 43, 44, 45, 0,
3295 0, 23, 24, 25, 26, 0, 0, 0, 0, 0,
3296 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
3297 781, 0, 0, 0, 782, 783, 784, 41, 42, 43,
3298 44, 45, 0, 785, 0, 0, 786, 0, 0, 787,
3299 788, 0, 1069, 0, 0, 789, 59, 60, 61, 62,
3300 63, 64, 65, 66, 0, 0, 0, 0, 783, 784,
3301 0, 0, 0, 0, 0, 0, 785, 790, 0, 786,
3302 0, 0, 787, 788, 279, 0, 0, 0, 789, 59,
3303 60, 61, 62, 63, 64, 65, 66, 564, 565, 0,
3304 0, 566, 0, 0, 0, 0, 0, 0, 0, 0,
3305 790, 0, 0, 0, 0, 0, 0, 279, 0, 0,
3306 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3307 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3308 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3309 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3312 193, 194, 195, 196, 0, 197, 198, 572, 573, 0,
3313 0, 574, 199, 233, 0, 0, 0, 0, 0, 0,
3314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3315 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3316 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3317 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3318 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3321 193, 194, 195, 196, 0, 197, 198, 624, 565, 0,
3322 0, 625, 199, 233, 0, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3324 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3325 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3326 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3327 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3329 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3330 193, 194, 195, 196, 0, 197, 198, 627, 573, 0,
3331 0, 628, 199, 233, 0, 0, 0, 0, 0, 0,
3332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3333 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3334 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3335 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3336 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3339 193, 194, 195, 196, 0, 197, 198, 652, 565, 0,
3340 0, 653, 199, 233, 0, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3342 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3343 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3344 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3345 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3348 193, 194, 195, 196, 0, 197, 198, 655, 573, 0,
3349 0, 656, 199, 233, 0, 0, 0, 0, 0, 0,
3350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3351 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3352 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3353 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3354 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3356 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3357 193, 194, 195, 196, 0, 197, 198, 722, 565, 0,
3358 0, 723, 199, 233, 0, 0, 0, 0, 0, 0,
3359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3360 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3361 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3362 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3363 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3365 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3366 193, 194, 195, 196, 0, 197, 198, 725, 573, 0,
3367 0, 726, 199, 233, 0, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3369 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3370 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3371 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3372 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3374 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3375 193, 194, 195, 196, 0, 197, 198, 731, 565, 0,
3376 0, 732, 199, 233, 0, 0, 0, 0, 0, 0,
3377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3378 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3379 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3380 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3381 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3384 193, 194, 195, 196, 0, 197, 198, 609, 573, 0,
3385 0, 610, 199, 233, 0, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3387 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3388 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3389 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3390 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3393 193, 194, 195, 196, 0, 197, 198, 776, 565, 0,
3394 0, 777, 199, 233, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3396 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3397 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3398 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3399 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3402 193, 194, 195, 196, 0, 197, 198, 779, 573, 0,
3403 0, 780, 199, 233, 0, 0, 0, 0, 0, 0,
3404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3405 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3406 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3407 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3408 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3410 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3411 193, 194, 195, 196, 0, 197, 198, 1152, 565, 0,
3412 0, 1153, 199, 233, 0, 0, 0, 0, 0, 0,
3413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3414 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3415 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3416 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3417 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3419 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3420 193, 194, 195, 196, 0, 197, 198, 1155, 573, 0,
3421 0, 1156, 199, 233, 0, 0, 0, 0, 0, 0,
3422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3423 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3424 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3425 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3426 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3429 193, 194, 195, 196, 0, 197, 198, 1186, 565, 0,
3430 0, 1187, 199, 233, 0, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3432 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3433 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3434 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3435 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3437 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3438 193, 194, 195, 196, 0, 197, 198, 609, 573, 0,
3439 0, 610, 199, 233, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3441 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3442 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3443 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3444 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
3445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3446 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3447 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3453 2, 60, 53, 89, 369, 71, 102, 83, 8, 22,
3454 710, 8, 16, 17, 28, 101, 59, 331, 227, 717,
3455 16, 17, 94, 91, 92, 387, 4, 95, 28, 95,
3456 482, 28, 57, 626, 2, 271, 4, 433, 57, 275,
3457 67, 892, 893, 71, 363, 1064, 365, 26, 16, 17,
3458 27, 55, 29, 55, 56, 1026, 99, 364, 83, 59,
3459 92, 654, 603, 95, 27, 78, 295, 296, 1037, 1060,
3460 68, 96, 97, 98, 526, 1102, 13, 473, 25, 53,
3461 1104, 1052, 25, 957, 259, 53, 54, 1142, 95, 57,
3462 52, 1146, 411, 414, 415, 15, 100, 0, 689, 99,
3463 68, 77, 25, 331, 100, 25, 25, 148, 99, 428,
3464 143, 430, 153, 892, 893, 83, 68, 2, 13, 4,
3465 126, 13, 429, 91, 92, 941, 942, 95, 96, 97,
3466 98, 724, 100, 37, 38, 126, 222, 16, 17, 458,
3467 146, 734, 425, 1198, 96, 97, 56, 963, 964, 965,
3468 433, 25, 29, 328, 213, 22, 857, 151, 209, 153,
3469 136, 137, 138, 864, 143, 251, 485, 66, 236, 54,
3470 238, 153, 1046, 16, 17, 1194, 9, 484, 25, 1206,
3471 28, 1205, 15, 126, 146, 778, 414, 415, 151, 730,
3472 153, 1182, 866, 244, 787, 261, 13, 283, 1167, 146,
3473 13, 1172, 25, 146, 280, 148, 149, 66, 259, 146,
3474 153, 78, 55, 56, 151, 52, 153, 100, 1189, 221,
3475 119, 100, 518, 146, 152, 227, 230, 146, 232, 148,
3476 682, 233, 1011, 261, 230, 444, 232, 233, 600, 635,
3477 242, 209, 310, 311, 312, 313, 123, 315, 316, 153,
3478 866, 952, 279, 148, 261, 280, 151, 100, 153, 151,
3479 119, 153, 230, 146, 232, 233, 977, 143, 236, 498,
3480 238, 500, 146, 592, 242, 26, 244, 328, 310, 311,
3481 312, 313, 578, 602, 591, 259, 877, 878, 584, 257,
3482 586, 259, 236, 379, 601, 152, 1112, 890, 152, 146,
3483 277, 892, 893, 371, 329, 13, 100, 373, 849, 146,
3484 329, 1162, 280, 25, 1014, 856, 1014, 1133, 386, 370,
3485 264, 372, 326, 146, 268, 148, 52, 331, 326, 870,
3486 56, 309, 25, 331, 151, 148, 153, 13, 151, 371,
3487 153, 309, 310, 311, 312, 313, 314, 315, 316, 152,
3488 633, 230, 635, 232, 328, 25, 1067, 242, 326, 153,
3489 328, 329, 364, 331, 97, 365, 373, 686, 364, 688,
3490 691, 692, 257, 13, 783, 784, 697, 698, 1052, 126,
3491 687, 248, 249, 976, 13, 146, 1060, 230, 1062, 232,
3492 54, 705, 143, 112, 985, 100, 364, 148, 366, 99,
3493 64, 65, 370, 371, 372, 126, 482, 1000, 1001, 13,
3494 1026, 411, 145, 649, 623, 148, 414, 415, 386, 13,
3495 1011, 1037, 718, 785, 309, 721, 126, 429, 66, 314,
3496 430, 1142, 661, 429, 146, 1146, 1052, 666, 452, 735,
3497 442, 146, 444, 151, 1060, 153, 414, 415, 37, 38,
3498 526, 537, 452, 146, 99, 452, 684, 482, 458, 82,
3499 83, 429, 866, 691, 692, 855, 862, 857, 109, 697,
3500 698, 68, 25, 66, 864, 151, 146, 153, 887, 888,
3501 845, 119, 484, 121, 122, 485, 1197, 1198, 484, 146,
3502 923, 435, 133, 99, 148, 816, 440, 465, 365, 443,
3503 97, 526, 446, 146, 1045, 68, 129, 130, 1182, 56,
3504 1184, 151, 66, 153, 482, 1189, 484, 1191, 462, 585,
3505 126, 593, 151, 467, 153, 126, 119, 889, 121, 122,
3506 581, 124, 583, 898, 97, 1235, 604, 99, 903, 835,
3507 146, 750, 838, 68, 25, 841, 866, 151, 100, 153,
3508 150, 1167, 848, 153, 1228, 851, 569, 151, 526, 153,
3509 99, 1154, 952, 430, 577, 119, 1182, 121, 122, 146,
3510 638, 1162, 97, 126, 650, 577, 553, 579, 148, 862,
3511 1121, 525, 425, 1016, 1017, 68, 52, 126, 816, 591,
3512 56, 458, 592, 146, 571, 591, 149, 99, 611, 601,
3513 153, 68, 602, 617, 66, 601, 682, 146, 68, 611,
3514 68, 68, 148, 581, 97, 583, 912, 617, 485, 66,
3515 617, 623, 68, 591, 126, 650, 68, 470, 66, 34,
3516 97, 148, 25, 601, 68, 603, 604, 97, 96, 97,
3517 97, 643, 77, 739, 146, 126, 99, 52, 1052, 626,
3518 149, 97, 1056, 949, 153, 97, 1060, 682, 1062, 121,
3519 122, 729, 728, 97, 15, 146, 17, 881, 149, 1102,
3520 638, 1104, 153, 126, 121, 122, 727, 654, 892, 893,
3521 99, 119, 650, 121, 122, 687, 684, 145, 688, 694,
3522 152, 687, 68, 691, 692, 738, 701, 729, 149, 697,
3523 698, 705, 569, 705, 706, 152, 708, 126, 710, 1029,
3524 577, 679, 126, 34, 682, 683, 684, 689, 150, 687,
3525 96, 97, 144, 691, 692, 592, 1091, 146, 99, 697,
3526 698, 52, 1052, 126, 146, 602, 1056, 2, 738, 4,
3527 1060, 153, 1062, 99, 611, 58, 56, 724, 750, 66,
3528 67, 16, 17, 146, 99, 126, 149, 734, 26, 727,
3529 153, 729, 730, 146, 77, 767, 834, 769, 1087, 145,
3530 126, 77, 1205, 1206, 106, 642, 643, 828, 1182, 1086,
3531 1184, 126, 833, 66, 850, 1189, 146, 1191, 53, 54,
3532 633, 68, 736, 153, 679, 108, 66, 1011, 683, 112,
3533 68, 778, 834, 68, 121, 122, 99, 751, 68, 146,
3534 787, 783, 784, 99, 56, 1029, 867, 68, 816, 96,
3535 97, 688, 824, 1119, 1228, 151, 91, 92, 96, 97,
3536 95, 14, 15, 126, 56, 100, 96, 97, 121, 122,
3537 126, 124, 1056, 99, 25, 96, 97, 99, 816, 119,
3538 901, 121, 122, 26, 124, 99, 146, 130, 68, 910,
3539 828, 1075, 1182, 153, 1184, 833, 834, 149, 145, 1189,
3540 126, 1191, 897, 144, 126, 143, 10, 145, 40, 41,
3541 148, 849, 126, 1179, 950, 145, 96, 97, 856, 866,
3542 66, 77, 88, 89, 145, 68, 146, 148, 146, 867,
3543 146, 144, 870, 144, 44, 877, 878, 52, 1228, 54,
3544 55, 56, 57, 890, 886, 887, 888, 146, 1004, 146,
3545 892, 893, 981, 96, 97, 146, 68, 146, 44, 897,
3546 8, 99, 126, 901, 13, 145, 961, 939, 997, 941,
3547 942, 866, 910, 119, 209, 121, 122, 891, 134, 135,
3548 136, 137, 138, 68, 96, 97, 101, 1008, 126, 1010,
3549 25, 963, 964, 965, 17, 230, 144, 232, 233, 99,
3550 143, 236, 145, 238, 99, 148, 146, 242, 146, 244,
3551 957, 96, 97, 152, 128, 207, 930, 931, 210, 211,
3552 212, 68, 257, 961, 259, 152, 126, 1048, 150, 976,
3553 855, 126, 857, 145, 68, 977, 15, 1009, 68, 864,
3554 148, 866, 1014, 985, 146, 944, 146, 946, 131, 96,
3555 97, 146, 146, 1000, 1001, 144, 1051, 52, 866, 973,
3556 145, 68, 96, 97, 100, 131, 96, 97, 100, 1011,
3557 1008, 146, 1010, 126, 309, 310, 311, 312, 313, 314,
3558 315, 316, 52, 146, 998, 999, 26, 146, 66, 96,
3559 97, 326, 146, 328, 689, 146, 331, 52, 145, 1046,
3560 146, 1122, 52, 131, 68, 126, 1020, 1045, 146, 146,
3561 1048, 145, 151, 1051, 1086, 145, 1088, 1087, 1090, 146,
3562 1086, 146, 1160, 1161, 146, 1067, 144, 952, 68, 364,
3563 146, 366, 96, 97, 326, 370, 371, 372, 145, 331,
3564 1112, 119, 1037, 121, 122, 1040, 56, 68, 1086, 9,
3565 146, 386, 146, 414, 415, 131, 96, 97, 1160, 1161,
3566 56, 1133, 967, 968, 146, 1060, 146, 1062, 68, 146,
3567 431, 432, 146, 52, 146, 96, 97, 146, 149, 414,
3568 415, 145, 120, 1121, 1122, 146, 1100, 58, 783, 784,
3569 146, 148, 1139, 146, 429, 146, 96, 97, 459, 146,
3570 1142, 1026, 146, 143, 1146, 145, 77, 1154, 148, 1108,
3571 1109, 1232, 1037, 146, 146, 1114, 144, 1116, 148, 1118,
3572 1162, 1029, 1160, 1161, 145, 242, 1034, 1052, 146, 146,
3573 465, 465, 424, 425, 461, 1060, 98, 108, 109, 96,
3574 87, 433, 611, 706, 1052, 145, 1016, 1090, 1056, 484,
3575 1087, 1102, 1060, 769, 1062, 1197, 1198, 54, 55, 866,
3576 57, 882, 133, 1235, 1194, 740, 514, 64, 65, 324,
3577 1235, 1011, 1167, 1075, 1169, 1075, 1075, 886, 470, 1174,
3578 884, 473, 877, 878, 1088, 1009, 105, 1182, 99, 1184,
3579 500, 886, 887, 888, 1232, 951, 1191, 892, 893, 2,
3580 52, 4, 54, 55, 56, 57, 855, 1029, 1207, 1208,
3581 1209, 1210, 1056, 16, 17, 52, 1052, 54, 55, 56,
3582 57, 58, 1026, 1128, 1129, -1, -1, 519, 1223, 1134,
3583 -1, 1136, 1137, 1228, 1233, 40, 41, 42, 43, 44,
3584 77, -1, 1167, -1, -1, -1, 581, -1, 583, 101,
3585 53, 54, -1, -1, 91, 107, 591, 1182, 52, -1,
3586 54, 55, 56, 57, 101, 68, 601, -1, 603, 604,
3587 107, 108, 109, -1, 1182, 52, 1184, 54, 55, 56,
3588 57, 1189, 977, 1191, -1, 689, -1, -1, 91, 92,
3589 985, -1, 95, -1, -1, -1, 133, 100, -1, 136,
3590 -1, -1, -1, 638, 59, 60, 61, 62, 1213, 1214,
3591 1215, 1216, -1, -1, -1, -1, 1011, 77, -1, -1,
3592 1228, -1, -1, -1, -1, -1, 618, -1, 620, 1234,
3593 691, 692, -1, -1, 94, 95, 697, 698, -1, -1,
3594 -1, 633, 77, 635, 679, -1, -1, -1, 683, 684,
3595 -1, -1, 687, -1, -1, -1, 691, 692, -1, 94,
3596 95, -1, 697, 698, -1, 52, -1, 54, 55, 56,
3597 57, 58, 1067, 133, 134, 135, 136, 137, 138, 783,
3598 784, -1, -1, -1, 745, 746, 678, 748, 749, -1,
3599 77, -1, 727, -1, 729, 730, 689, -1, -1, 134,
3600 135, 136, 137, 138, -1, -1, 209, -1, -1, -1,
3601 -1, -1, -1, 705, 101, -1, -1, -1, -1, -1,
3602 107, 108, 109, -1, -1, -1, -1, 230, 720, 232,
3603 233, -1, -1, 236, -1, 238, -1, -1, -1, 242,
3604 -1, 244, -1, -1, -1, -1, 133, 1142, -1, 136,
3605 -1, 1146, -1, -1, 257, 816, 259, -1, -1, -1,
3606 -1, 689, -1, -1, -1, -1, 153, 1162, -1, -1,
3607 -1, -1, -1, 877, 878, -1, -1, -1, 770, -1,
3608 -1, 816, 886, 887, 888, -1, -1, -1, 892, 893,
3609 783, 784, -1, 828, -1, 2, -1, 4, 833, 834,
3610 861, -1, 1197, 1198, -1, -1, 309, 310, 311, 312,
3611 313, 314, 315, 316, 849, -1, -1, -1, -1, -1,
3612 -1, 856, -1, 326, -1, 328, -1, -1, 331, -1,
3613 -1, -1, 867, -1, -1, 870, -1, -1, -1, -1,
3614 -1, -1, -1, -1, -1, -1, 53, 54, -1, -1,
3615 57, 843, -1, -1, -1, 783, 784, -1, -1, -1,
3616 -1, 364, -1, 366, -1, -1, 901, 370, 371, 372,
3617 862, -1, -1, 977, -1, 910, 83, -1, -1, -1,
3618 -1, 985, -1, 386, 877, 878, -1, -1, -1, 96,
3619 97, 98, 99, 886, 887, 888, -1, -1, -1, 892,
3620 893, -1, -1, -1, -1, -1, -1, 1011, -1, -1,
3621 -1, 414, 415, -1, -1, -1, -1, 909, -1, -1,
3622 -1, -1, -1, -1, -1, -1, 429, -1, -1, -1,
3623 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
3624 -1, -1, -1, -1, -1, 937, -1, -1, -1, 877,
3625 878, -1, -1, -1, -1, 77, -1, -1, 886, 887,
3626 888, -1, 465, 1067, 892, 893, -1, -1, -1, -1,
3627 -1, -1, -1, 1008, -1, 1010, -1, -1, -1, 101,
3628 -1, 484, -1, -1, 977, 107, 108, 109, -1, -1,
3629 -1, 52, 985, 54, 55, 56, 57, 58, -1, -1,
3630 -1, -1, 209, -1, -1, -1, -1, 25, -1, -1,
3631 1045, 133, -1, 1048, 136, -1, 77, -1, 1011, -1,
3632 1012, -1, -1, -1, -1, -1, 148, -1, -1, -1,
3633 -1, -1, -1, 1025, -1, 242, -1, 244, 1142, -1,
3634 101, -1, 1146, -1, -1, -1, 107, 108, 109, 977,
3635 257, 1086, 259, -1, -1, -1, -1, 985, 1162, 77,
3636 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3637 88, 89, 133, 280, 1067, 136, 94, 95, 581, -1,
3638 583, -1, -1, 1011, -1, -1, 1121, 1122, 591, -1,
3639 -1, -1, -1, 1197, 1198, -1, -1, -1, 601, -1,
3640 603, 604, 309, -1, -1, -1, -1, 314, -1, 127,
3641 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3642 138, 328, 329, -1, -1, 1160, 1161, -1, -1, -1,
3643 -1, -1, -1, -1, -1, 638, -1, -1, -1, 1067,
3644 -1, -1, 52, -1, 54, 55, 56, 57, 58, 1142,
3645 -1, -1, -1, 1146, -1, -1, -1, -1, -1, 366,
3646 -1, -1, -1, 370, -1, 372, -1, 77, -1, 1162,
3647 -1, -1, -1, -1, -1, -1, 679, -1, -1, -1,
3648 683, 684, -1, -1, 687, 2, -1, 4, 691, 692,
3649 -1, 101, -1, -1, 697, 698, -1, 1232, 108, 109,
3650 -1, -1, -1, -1, 1197, 1198, -1, -1, -1, -1,
3651 -1, -1, -1, -1, 1142, -1, -1, -1, 1146, -1,
3652 -1, -1, -1, 133, 727, -1, 729, 730, 77, -1,
3653 -1, -1, -1, -1, 1162, -1, 53, 54, -1, -1,
3654 57, -1, -1, -1, -1, 94, 95, 2, -1, 4,
3655 -1, -1, -1, -1, -1, -1, -1, -1, 465, -1,
3656 -1, -1, -1, -1, -1, -1, 83, -1, -1, 1197,
3657 1198, -1, -1, -1, -1, 482, -1, -1, -1, 96,
3658 97, 98, 131, 132, 133, 134, 135, 136, 137, 138,
3659 -1, -1, -1, -1, -1, -1, -1, -1, 53, 54,
3660 -1, -1, 57, -1, -1, -1, -1, -1, -1, -1,
3661 -1, -1, -1, 816, -1, -1, -1, -1, -1, 526,
3662 -1, -1, -1, -1, -1, 828, -1, -1, 83, -1,
3663 833, 834, 33, 34, 35, 36, -1, -1, -1, -1,
3664 -1, 96, 97, 98, 99, -1, 849, -1, 49, 50,
3665 51, 52, -1, 856, -1, 56, -1, -1, 59, 60,
3666 61, 62, 63, -1, 867, -1, -1, 870, -1, -1,
3667 -1, -1, -1, -1, 581, -1, 583, -1, -1, -1,
3668 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
3669 91, -1, 209, -1, -1, -1, 603, 98, 901, -1,
3670 101, -1, -1, 104, 105, -1, 107, 910, -1, 110,
3671 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
3672 -1, -1, -1, -1, -1, 242, -1, 244, -1, -1,
3673 -1, 132, -1, -1, -1, 689, -1, -1, 139, -1,
3674 257, -1, 259, 650, -1, -1, -1, -1, -1, -1,
3675 -1, -1, -1, -1, 209, -1, -1, -1, -1, -1,
3676 -1, -1, -1, 280, -1, -1, -1, -1, -1, -1,
3677 -1, -1, 679, -1, -1, 682, 683, -1, -1, -1,
3678 -1, -1, 689, -1, -1, -1, 2, 242, 4, 244,
3679 -1, -1, 309, -1, -1, -1, -1, 314, -1, -1,
3680 -1, -1, 257, -1, 259, 1008, -1, 1010, -1, -1,
3681 -1, 328, 329, -1, 331, -1, -1, -1, -1, -1,
3682 727, -1, -1, 730, -1, 280, -1, -1, -1, 783,
3683 784, -1, -1, -1, -1, -1, -1, 53, 54, -1,
3684 -1, -1, 1045, -1, -1, 1048, -1, -1, -1, 366,
3685 -1, -1, -1, 370, 309, 372, -1, -1, -1, 314,
3686 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3687 -1, -1, -1, 328, 329, -1, 783, 784, -1, -1,
3688 96, -1, -1, 1086, -1, -1, -1, -1, -1, -1,
3689 -1, -1, -1, -1, -1, -1, -1, 414, 415, -1,
3690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3691 -1, 366, -1, -1, -1, 370, -1, 372, 1121, 1122,
3692 -1, 828, -1, 877, 878, -1, 833, -1, -1, -1,
3693 -1, -1, 886, 887, 888, -1, -1, -1, 892, 893,
3694 -1, -1, 849, -1, -1, -1, -1, -1, 465, 856,
3695 -1, -1, -1, -1, -1, -1, -1, 1160, 1161, -1,
3696 867, -1, -1, 870, -1, 482, -1, -1, -1, -1,
3697 877, 878, -1, -1, -1, -1, -1, -1, -1, 886,
3698 887, 888, -1, -1, -1, 892, 893, -1, -1, -1,
3699 897, -1, -1, 209, 901, -1, -1, -1, -1, -1,
3700 -1, -1, -1, 910, -1, -1, -1, -1, -1, 526,
3701 465, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3702 -1, -1, 2, 977, 4, -1, 242, 482, 244, 1232,
3703 -1, 985, -1, -1, -1, -1, -1, -1, -1, -1,
3704 -1, 257, -1, 259, -1, -1, -1, -1, -1, -1,
3705 -1, -1, -1, -1, 961, -1, -1, 1011, -1, -1,
3706 -1, -1, -1, -1, 581, -1, 583, -1, -1, -1,
3707 977, 526, -1, 53, 54, -1, -1, -1, 985, -1,
3708 -1, -1, -1, -1, -1, -1, 603, -1, -1, -1,
3709 -1, -1, -1, 309, -1, -1, -1, -1, 314, -1,
3710 -1, 1008, -1, 1010, 1011, -1, -1, -1, -1, -1,
3711 -1, -1, 328, 1067, -1, 331, -1, -1, -1, -1,
3712 -1, -1, -1, -1, -1, -1, 581, -1, 583, -1,
3713 -1, -1, -1, 650, -1, -1, -1, -1, 1045, -1,
3714 -1, 1048, 659, -1, 1051, -1, -1, -1, 603, -1,
3715 366, -1, -1, -1, 370, -1, 372, -1, -1, -1,
3716 1067, -1, 679, -1, -1, 682, 683, 684, -1, -1,
3717 -1, -1, -1, -1, 691, 692, -1, -1, -1, -1,
3718 697, 698, -1, -1, -1, -1, -1, -1, 1142, -1,
3719 -1, -1, 1146, -1, -1, 650, -1, -1, 414, 415,
3720 -1, -1, -1, -1, 33, 34, 35, 36, 1162, -1,
3721 727, -1, -1, 730, 1121, 1122, -1, -1, -1, -1,
3722 49, 50, 51, -1, 679, -1, -1, 682, 683, 209,
3723 59, 60, 61, 62, 63, 1142, -1, -1, -1, 1146,
3724 -1, -1, -1, 1197, 1198, -1, -1, -1, -1, 465,
3725 -1, -1, -1, -1, -1, 1162, -1, -1, -1, -1,
3726 -1, -1, 242, -1, 244, -1, -1, -1, -1, -1,
3727 -1, -1, 727, -1, -1, 730, -1, 257, -1, 259,
3728 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3729 1197, 1198, -1, -1, -1, -1, -1, -1, -1, 816,
3730 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3731 139, 828, 86, 87, -1, -1, 833, -1, -1, -1,
3732 94, 95, -1, -1, -1, 1232, -1, -1, -1, 309,
3733 -1, -1, 849, -1, 314, -1, -1, -1, 689, 856,
3734 -1, -1, -1, -1, -1, -1, -1, -1, 328, -1,
3735 867, 331, -1, 870, -1, 129, 130, 131, 132, 133,
3736 134, 135, 136, 137, 138, 581, -1, 583, -1, -1,
3737 -1, -1, -1, 828, -1, -1, -1, -1, 833, -1,
3738 897, -1, -1, -1, 901, -1, 366, 603, -1, -1,
3739 370, -1, 372, 910, 849, -1, -1, -1, -1, -1,
3740 -1, 856, -1, -1, -1, -1, -1, -1, -1, -1,
3741 689, -1, 867, -1, -1, 870, -1, -1, -1, -1,
3742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3743 -1, -1, 783, 784, 414, 415, -1, -1, -1, -1,
3744 -1, -1, 897, -1, 961, -1, 901, -1, -1, -1,
3745 -1, -1, -1, -1, -1, 910, -1, -1, -1, -1,
3746 -1, -1, -1, 679, -1, -1, -1, 683, 684, -1,
3747 -1, -1, -1, -1, -1, 691, 692, -1, -1, -1,
3748 -1, 697, 698, -1, -1, 465, -1, -1, -1, -1,
3749 -1, 1008, -1, 1010, -1, -1, -1, -1, -1, -1,
3750 -1, -1, -1, -1, 783, 784, 961, -1, -1, -1,
3751 -1, 727, -1, -1, 730, 77, 78, 79, 80, 81,
3752 82, 83, 84, -1, 86, 87, 877, 878, 1045, -1,
3753 -1, 1048, 94, 95, 1051, 886, 887, 888, -1, -1,
3754 -1, 892, 893, -1, -1, -1, -1, -1, -1, -1,
3755 -1, -1, -1, 1008, -1, 1010, -1, -1, -1, -1,
3756 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
3757 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3759 1045, -1, -1, 1048, -1, -1, 1051, -1, 877, 878,
3760 816, 581, -1, 583, 1121, 1122, -1, 886, 887, 888,
3761 -1, -1, 828, 892, 893, -1, -1, 833, -1, -1,
3762 -1, -1, -1, 603, 16, 17, 977, -1, -1, -1,
3763 -1, -1, -1, 849, 985, -1, -1, -1, -1, -1,
3764 856, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3765 -1, 867, -1, -1, 870, -1, 48, 49, 50, 51,
3766 1011, -1, -1, 55, 56, -1, 1121, 1122, -1, -1,
3767 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
3768 -1, 897, -1, -1, -1, 901, -1, -1, -1, -1,
3769 -1, -1, -1, -1, 910, -1, -1, -1, 977, 679,
3770 -1, -1, -1, 683, 684, -1, 985, -1, 100, -1,
3771 -1, 691, 692, -1, -1, 1232, 1067, 697, 698, -1,
3772 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
3773 -1, -1, 1011, -1, -1, -1, -1, 8, 9, 10,
3774 -1, -1, 13, 14, 15, -1, 17, 727, -1, -1,
3775 730, -1, -1, -1, 25, 26, 27, -1, -1, -1,
3776 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3777 41, 42, 43, 44, -1, -1, -1, 1232, -1, -1,
3778 -1, -1, -1, -1, -1, -1, -1, -1, 1067, -1,
3779 -1, 1142, 1008, -1, 1010, 1146, -1, 68, -1, -1,
3780 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3781 -1, 1162, -1, -1, -1, 207, -1, -1, 210, 211,
3782 212, -1, 214, -1, -1, 96, 97, -1, -1, 1045,
3783 -1, -1, 1048, -1, -1, -1, 816, -1, 230, -1,
3784 232, 233, -1, -1, -1, -1, 1197, 1198, 828, 120,
3785 -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
3786 -1, -1, -1, 1142, -1, -1, -1, 1146, -1, 849,
3787 -1, -1, 143, 144, -1, -1, 856, 148, 149, -1,
3788 151, -1, 153, 1162, -1, -1, -1, 867, -1, -1,
3789 870, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3790 -1, -1, -1, -1, -1, 1121, 1122, -1, -1, -1,
3791 -1, -1, -1, -1, -1, -1, -1, -1, 1197, 1198,
3792 -1, 901, -1, -1, -1, -1, -1, -1, -1, -1,
3793 910, -1, -1, -1, 326, -1, -1, -1, -1, 331,
3794 -1, 333, 334, 335, 336, 337, -1, -1, 340, 341,
3795 342, 343, 344, 345, 346, 347, 348, -1, -1, 351,
3796 352, 353, 354, 355, 356, 357, 358, 359, 360, -1,
3797 -1, -1, 364, -1, -1, -1, -1, -1, -1, -1,
3798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3799 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
3800 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3801 -1, -1, -1, 94, 95, -1, 1232, -1, -1, -1,
3802 -1, -1, 414, 415, -1, -1, -1, -1, 1008, -1,
3803 1010, 423, 424, 425, -1, -1, -1, 429, -1, 431,
3804 432, 433, -1, -1, -1, -1, 127, 439, 129, 130,
3805 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3806 -1, -1, 454, -1, -1, 1045, -1, 459, 1048, -1,
3807 -1, -1, 153, -1, -1, -1, -1, -1, 470, -1,
3808 -1, 473, -1, -1, -1, -1, -1, -1, -1, -1,
3809 -1, -1, 484, -1, -1, -1, -1, -1, -1, -1,
3810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3811 502, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3812 86, 87, 88, 89, -1, -1, -1, 519, 94, 95,
3813 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
3814 -1, 1121, 1122, -1, 8, 9, 10, -1, -1, -1,
3815 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3816 -1, 25, 26, 129, 130, 131, 132, 133, 134, 135,
3817 136, 137, 138, 37, 38, -1, 40, 41, 42, 43,
3818 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3819 -1, -1, -1, -1, -1, -1, -1, -1, -1, 591,
3820 -1, -1, -1, -1, 68, -1, -1, -1, -1, 601,
3821 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3822 84, 85, 86, 87, 88, 89, 618, -1, 620, -1,
3823 94, 95, 96, 97, -1, 99, -1, -1, -1, -1,
3824 -1, 633, -1, 635, -1, -1, -1, -1, -1, -1,
3825 -1, -1, 1232, -1, -1, -1, 120, -1, -1, -1,
3826 -1, -1, 126, 127, -1, 129, 130, 131, 132, 133,
3827 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3828 144, 145, 146, -1, -1, 149, 678, 151, -1, 153,
3829 -1, -1, 684, 685, -1, 687, -1, -1, -1, 691,
3830 692, -1, -1, -1, -1, 697, 698, -1, 0, -1,
3831 -1, -1, -1, 705, -1, -1, 8, 9, 10, -1,
3832 -1, 13, 14, 15, -1, 17, -1, -1, 720, -1,
3833 -1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
3834 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3835 42, 43, 44, 745, 746, -1, 748, 749, -1, -1,
3836 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3837 -1, -1, -1, -1, -1, -1, 68, -1, 770, -1,
3838 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
3839 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3840 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3841 -1, -1, -1, -1, 106, -1, -1, 809, -1, -1,
3842 -1, -1, -1, -1, 816, -1, -1, -1, 120, -1,
3843 -1, 123, -1, -1, 126, 127, 128, 129, 130, 131,
3844 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3845 -1, 843, 144, 145, 146, -1, -1, 149, 150, 151,
3846 -1, 153, -1, -1, -1, -1, -1, -1, -1, 861,
3847 862, -1, -1, 0, 1, -1, 3, 4, 5, 6,
3848 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
3849 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
3850 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3851 -1, -1, 39, -1, -1, -1, -1, 909, 45, 46,
3852 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
3853 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
3854 -1, -1, -1, -1, -1, 937, -1, -1, 75, 76,
3855 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3856 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
3857 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
3858 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
3859 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
3860 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3861 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
3862 1012, 0, -1, -1, 151, -1, 153, -1, -1, 8,
3863 9, 10, -1, 1025, 13, 14, 15, -1, 17, -1,
3864 -1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
3865 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
3866 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
3867 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
3868 79, 80, 81, 82, 83, -1, -1, 86, 87, 68,
3869 -1, -1, -1, -1, 1086, 94, 95, -1, 77, 78,
3870 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3871 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
3872 99, 100, -1, -1, -1, -1, -1, 106, -1, -1,
3873 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3874 -1, 120, -1, -1, 123, -1, -1, 126, 127, 128,
3875 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3876 -1, -1, -1, -1, 143, 144, 145, 146, 0, -1,
3877 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
3878 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3879 44, -1, -1, 25, -1, 27, 28, 29, -1, -1,
3880 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3881 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3882 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3883 84, 85, 86, 87, 88, 89, 68, -1, -1, -1,
3884 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
3885 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3886 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3887 -1, -1, -1, 127, 106, 129, 130, 131, 132, 133,
3888 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
3889 -1, 123, 146, -1, 126, 127, 128, 129, 130, 131,
3890 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3891 -1, -1, 144, 145, 146, 0, -1, 149, 150, 151,
3892 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
3893 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
3894 25, 26, 27, 28, 29, -1, -1, -1, -1, -1,
3895 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3897 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3898 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
3899 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
3900 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
3901 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
3902 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
3903 137, 138, -1, -1, -1, 120, -1, -1, 123, -1,
3904 -1, -1, 127, 128, 129, 130, 131, 132, 133, 134,
3905 135, 136, 137, 138, -1, -1, -1, -1, 143, 144,
3906 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
3907 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
3908 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
3909 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
3910 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3911 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3912 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3913 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
3914 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3915 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
3916 -1, -1, 100, -1, -1, -1, -1, 127, 106, 129,
3917 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3918 -1, -1, 120, -1, -1, 123, -1, -1, -1, 127,
3919 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3920 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
3921 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
3922 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3923 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
3924 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3925 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3926 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3927 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
3928 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
3929 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3930 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
3931 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
3932 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
3933 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
3934 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3935 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
3936 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
3937 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3938 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
3939 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3940 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3941 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3942 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
3943 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3944 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
3945 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
3946 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
3947 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
3948 -1, -1, -1, 127, -1, 129, 130, 131, 132, 133,
3949 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3950 144, 145, 146, 0, 148, 149, 150, 151, -1, 153,
3951 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3952 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
3953 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3954 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3955 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3956 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3957 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
3958 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3959 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
3960 97, -1, -1, 100, -1, -1, -1, -1, -1, 106,
3961 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3962 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
3963 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3964 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
3965 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
3966 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3967 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
3968 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3969 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3971 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
3972 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3973 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3974 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
3975 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
3976 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3977 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
3978 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3979 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
3980 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
3981 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3982 -1, -1, 25, -1, 27, 28, -1, -1, -1, -1,
3983 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3984 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3986 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
3987 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3988 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
3989 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
3990 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
3991 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
3992 -1, -1, -1, -1, 127, -1, 129, 130, 131, 132,
3993 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
3994 -1, 144, 145, 146, 0, 148, 149, 150, 151, -1,
3995 153, -1, 8, 9, 10, -1, -1, -1, 14, 15,
3996 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
3997 26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3998 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3999 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4000 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4001 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
4002 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4003 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4004 96, 97, -1, 99, -1, -1, -1, -1, -1, -1,
4005 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4006 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4007 126, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4008 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4009 146, 0, -1, 149, -1, 151, -1, 153, -1, 8,
4010 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
4011 -1, -1, -1, -1, -1, -1, 25, -1, -1, -1,
4012 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4013 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4015 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4016 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4017 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4018 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4019 99, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4020 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4021 -1, 120, -1, -1, -1, -1, -1, 126, 127, -1,
4022 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4023 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4024 149, -1, 151, -1, 153, -1, 8, 9, 10, -1,
4025 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
4026 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
4027 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4028 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4029 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4030 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4031 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4032 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4033 -1, -1, 94, 95, 96, 97, -1, 99, -1, -1,
4034 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4035 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4036 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
4037 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4038 -1, -1, 144, 145, 146, -1, -1, 149, -1, 151,
4039 1, 153, 3, 4, 5, 6, 7, 8, 9, 10,
4040 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
4041 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4042 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4043 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4044 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4045 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4046 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4047 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4048 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4049 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4050 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4051 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4052 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4053 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4054 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4055 10, 11, 12, -1, 14, 15, 16, -1, 18, 19,
4056 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4057 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4058 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4059 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4060 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4061 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4062 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4063 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4064 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4065 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4066 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4067 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4068 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4069 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4070 -1, 10, 11, 12, -1, -1, 15, 16, 17, 18,
4071 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4072 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4073 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4074 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4075 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4076 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4077 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4078 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4079 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4080 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4081 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4082 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4083 139, 140, 141, -1, -1, -1, -1, -1, -1, -1,
4084 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4085 -1, -1, 10, 11, 12, -1, -1, 15, 16, -1,
4086 18, 19, 20, 21, 22, 23, 24, 25, -1, -1,
4087 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4088 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4089 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4090 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4091 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4092 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4093 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4094 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4095 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4096 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4097 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4098 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
4099 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4100 7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
4101 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4102 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4103 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4104 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4105 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4106 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4107 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4108 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4109 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4110 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4111 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4112 1, -1, 3, 4, 5, 6, 7, -1, 9, 10,
4113 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4114 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4115 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4116 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4117 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4118 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4119 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4120 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4121 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4122 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4123 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4124 -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
4125 5, 6, 7, -1, -1, -1, 11, 12, 139, 140,
4126 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4127 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4128 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4129 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4130 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4131 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4132 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4133 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4134 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4135 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4136 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4138 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4139 -1, -1, -1, -1, 149, -1, 151, 1, 153, 3,
4140 4, 5, 6, 7, -1, -1, -1, 11, 12, -1,
4141 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
4142 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4143 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4144 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4145 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4146 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4147 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4148 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4149 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4150 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4151 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4152 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4153 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4154 -1, -1, -1, -1, -1, 149, -1, 151, 1, 153,
4155 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
4156 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
4157 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4158 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4159 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4160 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4161 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4162 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4163 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4164 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4165 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4166 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4167 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4168 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4169 -1, 144, -1, -1, -1, -1, -1, -1, 151, 1,
4170 153, 3, 4, 5, 6, 7, -1, -1, -1, 11,
4171 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
4172 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4173 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4174 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4175 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4176 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4177 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4178 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4179 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4180 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4181 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4182 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4183 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
4184 -1, -1, 144, -1, -1, -1, -1, -1, -1, 151,
4185 1, 153, 3, 4, 5, 6, 7, -1, -1, 10,
4186 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
4187 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4188 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4189 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4190 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4191 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4192 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4193 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4194 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4195 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4196 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4197 -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
4198 5, 6, 7, -1, -1, -1, 11, 12, 139, 140,
4199 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4200 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4201 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4202 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4203 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4204 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4205 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4206 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4207 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4208 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4209 115, 116, 117, 118, -1, 120, -1, -1, -1, -1,
4210 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4211 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4212 19, 20, 21, 22, 23, 24, 151, -1, 153, -1,
4213 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4214 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4215 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
4216 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4217 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4219 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4220 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
4221 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4222 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4223 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4224 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4225 23, 24, -1, -1, 153, -1, -1, 30, 31, 32,
4226 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4227 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4228 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4229 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4230 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4231 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4232 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4233 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4234 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4235 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4236 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4237 -1, 18, 19, 20, 21, 22, 23, 24, 151, -1,
4238 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4239 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4240 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4241 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4242 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4243 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4244 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4245 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4246 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4247 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4248 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4249 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4250 21, 22, 23, 24, -1, -1, 153, -1, -1, 30,
4251 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4252 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4253 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4254 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4255 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4256 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4257 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4258 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4259 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4260 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4261 5, 6, 7, -1, -1, -1, 11, 12, 139, 140,
4262 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4263 151, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4264 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4265 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4266 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4267 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4268 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4269 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4270 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4271 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4272 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4274 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4275 -1, -1, -1, -1, -1, -1, 151, 3, 4, 5,
4276 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4277 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4278 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4279 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4280 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4281 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
4282 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4283 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4284 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4286 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4287 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4288 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4289 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4290 -1, 147, 148, 3, 4, 5, 6, 7, 8, 9,
4291 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4292 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4293 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4294 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4295 50, 51, 52, 53, 54, 55, 56, 57, -1, -1,
4296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4297 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4298 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4299 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4300 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4302 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4303 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4304 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4305 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4306 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4307 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4308 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4309 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4310 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4311 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4312 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4313 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4314 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4315 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
4316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4317 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4318 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4319 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4320 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4321 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4322 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4323 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4324 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
4325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4326 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4327 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4328 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4329 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4330 -1, 111, -1, -1, -1, -1, -1, -1, -1, -1,
4331 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4332 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4333 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4334 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4335 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4336 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4337 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4338 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
4339 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4340 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4341 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4342 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4343 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4344 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4346 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4347 135, 136, 137, 138, -1, 140, 141, 3, 4, 5,
4348 -1, 7, 147, -1, -1, 11, 12, -1, -1, -1,
4349 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4350 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4351 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4352 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4353 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4354 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4357 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4358 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4359 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4360 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4361 7, -1, -1, 139, 11, 12, -1, -1, -1, 16,
4362 146, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4363 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4364 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4365 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4366 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4367 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4369 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4370 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4371 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4372 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4373 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
4374 -1, -1, 139, 11, 12, -1, -1, -1, 16, 146,
4375 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4376 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4377 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4378 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4379 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4380 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4381 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4382 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4383 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4384 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4385 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4386 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4387 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4388 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4389 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4390 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4391 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4392 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4393 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4394 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4395 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4396 102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
4397 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4398 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4399 6, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4400 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4401 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4402 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4403 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
4404 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4405 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4406 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4407 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4408 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4409 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4410 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4411 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4412 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4413 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4414 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4415 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4416 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4417 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4418 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4420 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4421 -1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
4422 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4423 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4424 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4425 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4426 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4427 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4428 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4429 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4430 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4431 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4432 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4433 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4434 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
4435 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4436 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4437 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4438 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4439 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4440 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4441 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4442 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4443 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4445 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4446 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4447 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4448 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4449 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4450 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4451 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4452 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4453 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4454 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4455 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4456 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4457 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4458 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4459 102, -1, 104, 105, -1, -1, 108, 109, 110, 111,
4460 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4461 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4462 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4463 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4464 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4465 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4466 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4467 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4468 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4469 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4470 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4471 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4472 -1, 107, 108, -1, 110, 111, 112, 113, 114, 115,
4473 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4474 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4475 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4476 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4477 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4478 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4479 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4480 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4481 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4482 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4483 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4484 -1, 101, 102, -1, 104, 105, -1, -1, 108, -1,
4485 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4486 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4487 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4488 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4489 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4490 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4491 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4492 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4493 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4494 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4495 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4496 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4497 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4498 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4499 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4500 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4501 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4502 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4503 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4504 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4505 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4506 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4508 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4509 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4510 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4511 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4512 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4513 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4514 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4515 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4516 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4517 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4518 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4519 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4520 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4521 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4522 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4523 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4524 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4525 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4526 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4527 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4528 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4529 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4530 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4531 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4532 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4533 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4534 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4535 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4536 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4537 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4538 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4539 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4540 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4541 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4542 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4543 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4544 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4545 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4546 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4547 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4548 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4549 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4550 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4551 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4552 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4553 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4554 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4555 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4556 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4557 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4558 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4559 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4560 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4561 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4562 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4563 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4564 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4565 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4566 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4567 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4568 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4569 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4570 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4571 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4572 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4573 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4574 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4575 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4576 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4577 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4578 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4579 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4580 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4581 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4582 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4583 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4584 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4585 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4586 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4587 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4588 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4589 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4590 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4591 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4592 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4593 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4594 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4596 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4597 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4598 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4599 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4600 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4601 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4602 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4603 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4604 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4605 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4606 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4609 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4610 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4611 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4612 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4613 12, -1, -1, -1, 16, 139, 18, 19, 20, 21,
4614 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4615 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4616 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4617 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4618 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4621 -1, -1, 94, -1, -1, -1, 98, -1, -1, 101,
4622 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4623 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4624 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4625 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4626 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4627 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4628 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4629 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4630 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4631 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4632 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4633 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4634 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4635 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4636 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4637 -1, -1, -1, 11, 12, -1, -1, -1, 16, 139,
4638 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4639 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4640 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4641 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4642 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4643 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4644 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4646 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4647 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4648 118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4649 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4650 16, 139, 18, 19, 20, 21, 22, 23, 24, -1,
4651 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4652 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4653 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4654 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4655 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4657 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4658 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4659 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4660 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4661 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4662 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4663 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4664 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4665 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4666 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4667 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4669 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4670 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4671 104, 105, 33, 34, 35, 36, 110, 111, 112, 113,
4672 114, 115, 116, 117, 118, -1, -1, -1, 49, 50,
4673 51, 52, -1, -1, -1, 56, -1, 58, 59, 60,
4674 61, 62, 63, -1, -1, 139, -1, -1, -1, -1,
4675 -1, -1, -1, -1, -1, -1, 77, -1, -1, -1,
4676 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4677 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4678 101, -1, -1, 104, 105, -1, 107, 108, -1, 110,
4679 111, 112, 113, 114, 115, 116, 117, 118, 33, 34,
4680 35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
4681 -1, 132, -1, -1, 49, 50, 51, 52, 139, -1,
4682 -1, 56, -1, -1, 59, 60, 61, 62, 63, -1,
4683 -1, 33, 34, 35, 36, -1, -1, -1, -1, -1,
4684 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
4685 52, -1, -1, -1, 56, 90, 91, 59, 60, 61,
4686 62, 63, -1, 98, -1, -1, 101, -1, -1, 104,
4687 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4688 115, 116, 117, 118, -1, -1, -1, -1, 90, 91,
4689 -1, -1, -1, -1, -1, -1, 98, 132, -1, 101,
4690 -1, -1, 104, 105, 139, -1, -1, -1, 110, 111,
4691 112, 113, 114, 115, 116, 117, 118, 52, 53, -1,
4692 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4693 132, -1, -1, -1, -1, -1, -1, 139, -1, -1,
4694 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4695 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4696 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4697 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4699 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4700 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4701 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4703 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4704 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4705 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4706 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4708 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4709 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4710 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4712 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4713 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4714 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4715 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4717 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4718 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4719 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4721 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4722 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4723 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4724 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4726 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4727 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4728 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4730 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4731 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4732 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4733 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4734 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4735 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4736 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4737 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4738 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4739 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4740 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4741 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4742 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4744 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4745 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4746 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4748 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4749 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4750 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4751 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4752 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4753 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4754 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4755 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4756 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4757 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4758 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4759 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4760 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4762 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4763 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4764 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4765 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4766 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4767 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4768 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4769 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4771 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4772 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4773 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4774 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4775 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4776 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4777 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4778 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4779 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4780 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4781 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4782 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4784 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4785 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4786 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4787 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4789 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4790 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4791 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4793 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4794 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4795 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4796 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4798 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4799 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4800 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4802 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4803 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4804 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4805 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4806 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4807 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4808 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4809 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4811 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4812 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4813 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4814 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4816 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4817 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4818 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4819 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4820 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4821 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4822 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4823 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4824 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4825 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4826 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
4827 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
4828 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4829 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4830 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4831 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4832 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4833 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4834 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4835 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4843 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
4844 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4845 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4846 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4847 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
4848 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
4849 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
4850 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
4851 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
4852 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4853 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
4854 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
4855 367, 368, 369, 405, 418, 159, 3, 4, 5, 6,
4856 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4857 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4858 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4859 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
4860 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4861 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
4862 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
4863 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
4864 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
4865 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
4866 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
4867 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
4868 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
4869 163, 164, 165, 167, 185, 186, 418, 167, 220, 205,
4870 215, 403, 418, 204, 402, 403, 418, 46, 98, 139,
4871 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
4872 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
4873 152, 364, 179, 200, 200, 151, 153, 411, 416, 417,
4874 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
4875 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
4876 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
4877 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
4878 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
4879 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
4880 176, 177, 176, 175, 411, 417, 98, 184, 191, 233,
4881 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
4882 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
4883 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
4884 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
4885 204, 204, 348, 126, 100, 146, 214, 418, 97, 145,
4886 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
4887 209, 210, 215, 377, 403, 418, 171, 413, 171, 54,
4888 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
4889 167, 166, 185, 149, 411, 417, 413, 221, 413, 150,
4890 146, 153, 415, 146, 415, 144, 415, 412, 56, 364,
4891 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
4892 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
4893 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
4894 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
4895 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
4896 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
4897 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4898 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4899 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
4900 407, 209, 52, 53, 56, 198, 207, 406, 161, 163,
4901 13, 253, 416, 253, 163, 175, 163, 411, 225, 56,
4902 97, 145, 409, 25, 171, 52, 56, 192, 130, 370,
4903 97, 145, 409, 228, 401, 229, 68, 97, 408, 52,
4904 56, 406, 170, 200, 206, 170, 206, 197, 124, 204,
4905 107, 204, 213, 403, 52, 56, 209, 52, 56, 404,
4906 413, 149, 413, 146, 413, 146, 413, 195, 222, 200,
4907 144, 144, 406, 406, 206, 160, 413, 165, 413, 403,
4908 146, 189, 52, 56, 209, 52, 56, 272, 353, 352,
4909 119, 341, 351, 66, 119, 119, 341, 66, 119, 200,
4910 144, 284, 282, 10, 251, 288, 251, 204, 146, 44,
4911 413, 189, 146, 44, 126, 44, 97, 145, 409, 173,
4912 412, 99, 99, 207, 211, 412, 414, 99, 99, 207,
4913 208, 211, 418, 251, 8, 246, 329, 418, 163, 13,
4914 163, 251, 27, 254, 416, 251, 25, 224, 293, 17,
4915 248, 291, 52, 56, 209, 52, 56, 176, 227, 371,
4916 226, 52, 56, 192, 209, 161, 171, 230, 231, 208,
4917 211, 195, 204, 204, 214, 99, 99, 414, 99, 99,
4918 403, 171, 415, 187, 414, 273, 354, 54, 55, 57,
4919 358, 369, 152, 351, 152, 152, 152, 285, 144, 289,
4920 107, 204, 167, 189, 167, 200, 52, 56, 209, 52,
4921 56, 52, 56, 90, 91, 98, 101, 104, 105, 110,
4922 132, 303, 304, 305, 308, 323, 324, 326, 327, 328,
4923 333, 334, 337, 338, 339, 342, 344, 345, 366, 128,
4924 170, 206, 170, 206, 181, 150, 99, 170, 206, 170,
4925 206, 181, 204, 217, 330, 418, 9, 15, 247, 249,
4926 332, 418, 14, 249, 250, 255, 256, 418, 256, 178,
4927 294, 291, 251, 107, 204, 290, 251, 414, 163, 416,
4928 175, 161, 414, 251, 413, 148, 372, 373, 194, 281,
4929 278, 99, 146, 413, 274, 355, 131, 265, 266, 418,
4930 265, 204, 414, 324, 324, 56, 192, 311, 309, 414,
4931 144, 310, 325, 52, 100, 174, 131, 88, 89, 97,
4932 145, 148, 306, 307, 200, 170, 206, 100, 331, 418,
4933 163, 162, 163, 175, 251, 251, 295, 251, 204, 146,
4934 253, 251, 161, 416, 251, 52, 54, 55, 56, 57,
4935 58, 77, 91, 101, 107, 108, 109, 133, 136, 374,
4936 376, 377, 378, 379, 380, 381, 382, 383, 384, 387,
4937 388, 389, 390, 391, 394, 395, 396, 397, 398, 161,
4938 376, 232, 148, 276, 376, 356, 262, 264, 267, 380,
4939 382, 383, 385, 386, 389, 390, 392, 393, 396, 398,
4940 412, 163, 161, 303, 107, 303, 312, 313, 314, 316,
4941 58, 112, 317, 318, 319, 320, 321, 322, 388, 270,
4942 326, 308, 324, 324, 192, 414, 413, 112, 312, 317,
4943 312, 317, 98, 191, 233, 365, 366, 369, 253, 163,
4944 253, 296, 107, 204, 163, 251, 101, 107, 258, 259,
4945 260, 261, 379, 413, 413, 126, 146, 375, 204, 146,
4946 399, 418, 34, 52, 146, 399, 399, 146, 375, 52,
4947 146, 375, 52, 251, 416, 372, 376, 275, 357, 267,
4948 131, 126, 146, 263, 98, 233, 146, 399, 399, 399,
4949 146, 263, 146, 263, 151, 413, 52, 146, 414, 107,
4950 303, 316, 146, 348, 144, 146, 303, 34, 52, 348,
4951 413, 413, 414, 414, 56, 97, 145, 409, 163, 332,
4952 163, 301, 302, 303, 314, 317, 204, 256, 291, 292,
4953 260, 379, 146, 413, 146, 204, 374, 381, 394, 396,
4954 384, 388, 390, 398, 382, 391, 396, 380, 382, 161,
4955 267, 29, 123, 277, 163, 131, 233, 262, 393, 396,
4956 56, 97, 385, 390, 382, 392, 396, 382, 52, 268,
4957 269, 378, 146, 315, 316, 52, 146, 146, 124, 319,
4958 321, 322, 52, 56, 209, 52, 56, 329, 255, 253,
4959 40, 41, 146, 413, 258, 261, 259, 146, 375, 146,
4960 375, 399, 146, 375, 146, 375, 375, 251, 149, 161,
4961 163, 120, 146, 263, 146, 263, 52, 56, 399, 146,
4962 263, 146, 263, 263, 146, 412, 315, 146, 146, 315,
4963 414, 297, 175, 175, 312, 146, 146, 382, 396, 382,
4964 382, 251, 144, 382, 396, 382, 382, 269, 316, 315,
4965 298, 259, 375, 146, 375, 375, 375, 263, 146, 263,
4966 263, 263, 299, 382, 382, 163, 375, 263, 256, 293,
4973 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
4974 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
4975 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
4976 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
4977 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
4978 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
4979 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
4980 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
4981 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
4982 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
4983 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
4984 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
4985 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
4986 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
4987 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4988 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4989 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
4990 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4991 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4992 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4993 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
4994 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4995 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4996 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4997 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
4998 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
4999 205, 205, 206, 206, 207, 207, 208, 208, 209, 209,
5000 209, 209, 209, 210, 210, 210, 210, 210, 212, 211,
5001 213, 214, 214, 215, 215, 215, 215, 216, 216, 217,
5002 217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
5003 218, 218, 218, 219, 218, 220, 218, 221, 218, 218,
5004 218, 218, 218, 218, 218, 218, 218, 218, 222, 218,
5005 218, 218, 218, 218, 218, 223, 218, 218, 218, 218,
5006 218, 224, 218, 225, 218, 218, 218, 226, 218, 227,
5007 218, 228, 218, 229, 230, 218, 231, 232, 218, 218,
5008 218, 218, 218, 233, 234, 235, 236, 237, 238, 239,
5009 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
5010 250, 251, 252, 253, 253, 253, 254, 254, 255, 255,
5011 256, 256, 257, 257, 258, 258, 259, 259, 260, 260,
5012 260, 260, 260, 261, 261, 262, 262, 262, 262, 262,
5013 263, 263, 264, 264, 264, 264, 264, 264, 264, 264,
5014 264, 264, 264, 264, 264, 264, 264, 265, 265, 266,
5015 266, 267, 267, 268, 268, 269, 269, 271, 272, 273,
5016 274, 275, 270, 276, 276, 277, 277, 278, 279, 279,
5017 279, 279, 280, 280, 280, 280, 280, 280, 280, 280,
5018 280, 281, 281, 283, 284, 285, 282, 287, 288, 289,
5019 286, 290, 290, 290, 290, 291, 292, 292, 294, 295,
5020 296, 297, 298, 299, 293, 300, 300, 301, 301, 301,
5021 302, 302, 302, 302, 302, 303, 304, 304, 305, 305,
5022 306, 307, 308, 308, 308, 308, 308, 308, 308, 309,
5023 308, 308, 310, 308, 308, 311, 308, 312, 312, 312,
5024 312, 312, 312, 312, 312, 313, 313, 314, 314, 314,
5025 314, 315, 315, 316, 317, 317, 317, 317, 317, 318,
5026 318, 319, 319, 320, 320, 321, 321, 322, 323, 323,
5027 323, 323, 323, 323, 323, 323, 323, 323, 324, 324,
5028 324, 324, 324, 324, 324, 324, 324, 325, 324, 326,
5029 327, 328, 328, 328, 329, 329, 330, 330, 330, 331,
5030 331, 332, 332, 333, 333, 334, 335, 335, 335, 336,
5031 337, 338, 339, 340, 340, 341, 341, 342, 343, 343,
5032 344, 345, 346, 346, 347, 347, 348, 348, 349, 349,
5033 350, 350, 351, 352, 351, 353, 354, 355, 356, 357,
5034 351, 358, 358, 358, 358, 359, 359, 360, 361, 361,
5035 361, 361, 362, 363, 363, 364, 364, 364, 364, 365,
5036 365, 365, 365, 365, 366, 366, 366, 366, 366, 366,
5037 366, 367, 367, 368, 368, 369, 369, 371, 370, 370,
5038 372, 372, 373, 372, 374, 374, 374, 374, 374, 375,
5039 375, 376, 376, 376, 376, 376, 376, 376, 376, 376,
5040 376, 376, 376, 376, 376, 376, 377, 378, 378, 378,
5041 378, 379, 379, 380, 381, 381, 382, 382, 383, 384,
5042 384, 385, 385, 386, 386, 387, 387, 388, 388, 389,
5043 390, 390, 391, 392, 393, 393, 394, 394, 395, 395,
5044 396, 396, 397, 397, 398, 399, 399, 400, 401, 400,
5045 402, 402, 403, 403, 404, 404, 404, 404, 405, 405,
5046 405, 406, 406, 406, 406, 407, 407, 407, 408, 408,
5047 409, 409, 410, 410, 411, 411, 412, 412, 413, 414,
5048 415, 415, 415, 416, 416, 417, 417, 418
5054 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5055 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5056 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5057 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5058 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5059 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5060 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5061 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5062 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5063 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5064 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5065 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5066 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5067 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5068 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5069 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5070 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5071 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5072 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5073 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5074 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5075 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5076 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5077 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5078 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5079 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5080 4, 2, 1, 3, 3, 3, 1, 1, 1, 1,
5081 2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
5082 2, 2, 1, 1, 2, 3, 4, 1, 1, 3,
5083 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
5084 1, 1, 1, 0, 4, 0, 3, 0, 4, 3,
5085 3, 2, 3, 3, 1, 4, 3, 1, 0, 6,
5086 4, 3, 2, 1, 2, 0, 3, 6, 6, 4,
5087 4, 0, 6, 0, 5, 5, 6, 0, 6, 0,
5088 7, 0, 5, 0, 0, 7, 0, 0, 9, 1,
5089 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5090 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5091 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5092 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5093 5, 1, 3, 2, 1, 4, 2, 2, 2, 1,
5094 2, 0, 6, 8, 4, 6, 4, 2, 6, 2,
5095 4, 6, 2, 4, 2, 4, 1, 1, 1, 3,
5096 4, 1, 4, 1, 3, 1, 1, 0, 0, 0,
5097 0, 0, 7, 4, 1, 3, 3, 3, 2, 4,
5098 5, 5, 2, 4, 4, 3, 3, 3, 2, 1,
5099 4, 3, 3, 0, 0, 0, 5, 0, 0, 0,
5100 5, 1, 2, 3, 4, 5, 1, 1, 0, 0,
5101 0, 0, 0, 0, 11, 1, 1, 1, 3, 3,
5102 1, 2, 3, 1, 1, 1, 3, 1, 3, 1,
5103 1, 1, 1, 4, 4, 3, 4, 4, 3, 0,
5104 4, 2, 0, 4, 2, 0, 4, 1, 1, 2,
5105 3, 5, 2, 4, 1, 2, 3, 2, 4, 1,
5106 3, 1, 3, 1, 3, 1, 1, 3, 1, 1,
5107 3, 2, 1, 1, 3, 2, 1, 2, 1, 3,
5108 3, 2, 2, 1, 1, 1, 2, 2, 1, 1,
5109 1, 1, 1, 1, 1, 1, 1, 0, 3, 1,
5110 2, 2, 3, 1, 6, 1, 1, 1, 1, 2,
5111 1, 2, 1, 1, 1, 1, 1, 1, 2, 3,
5112 3, 3, 4, 0, 3, 1, 2, 4, 0, 3,
5113 4, 4, 0, 3, 0, 3, 0, 2, 0, 2,
5114 0, 2, 1, 0, 3, 0, 0, 0, 0, 0,
5115 8, 1, 1, 1, 1, 1, 1, 2, 1, 1,
5116 1, 1, 3, 1, 2, 1, 1, 1, 1, 1,
5117 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5118 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
5119 3, 3, 0, 3, 4, 2, 2, 2, 1, 2,
5120 0, 6, 8, 4, 6, 4, 6, 2, 4, 6,
5121 2, 4, 2, 4, 1, 0, 1, 1, 1, 1,
5122 1, 1, 1, 1, 1, 3, 1, 3, 1, 2,
5123 1, 2, 1, 1, 3, 1, 3, 1, 1, 2,
5124 2, 1, 3, 3, 1, 3, 1, 3, 1, 1,
5125 2, 1, 1, 1, 2, 2, 1, 1, 0, 4,
5126 1, 2, 1, 3, 3, 2, 4, 2, 1, 1,
5127 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5128 1, 1, 1, 1, 0, 1, 0, 1, 2, 2,
5129 0, 1, 1, 1, 1, 1, 2, 0
5133 #define yyerrok (yyerrstatus = 0)
5134 #define yyclearin (yychar = YYEMPTY)
5135 #define YYEMPTY (-2)
5138 #define YYACCEPT goto yyacceptlab
5139 #define YYABORT goto yyabortlab
5140 #define YYERROR goto yyerrorlab
5143 #define YYRECOVERING() (!!yyerrstatus)
5145 #define YYBACKUP(Token, Value) \
5147 if (yychar == YYEMPTY) \
5151 YYPOPSTACK (yylen); \
5157 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5164 #define YYERRCODE 256
5171 #ifndef YYLLOC_DEFAULT
5172 # define YYLLOC_DEFAULT(Current, Rhs, N) \
5176 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5177 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5178 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5179 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5183 (Current).first_line = (Current).last_line = \
5184 YYRHSLOC (Rhs, 0).last_line; \
5185 (Current).first_column = (Current).last_column = \
5186 YYRHSLOC (Rhs, 0).last_column; \
5191 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
5199 # define YYFPRINTF fprintf
5202 # define YYDPRINTF(Args) \
5213 #ifndef YY_LOCATION_PRINT
5214 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5220 yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5238 else if (0 <= end_col && yylocp->
first_column < end_col)
5244 # define YY_LOCATION_PRINT(File, Loc) \
5245 yy_location_print_ (File, &(Loc))
5248 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5253 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
5257 YYFPRINTF (p, "%s ", Title); \
5258 yy_symbol_print (stderr, \
5259 Type, Value, Location, p); \
5260 YYFPRINTF (p, "\n"); \
5272 FILE *yyo = yyoutput;
5274 YYUSE (yylocationp);
5280 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
5294 yytype <
YYNTOKENS ?
"token" :
"nterm", yytname[yytype]);
5298 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, p);
5309 #define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
5312 for (; yybottom <= yytop; yybottom++)
5314 int yybot = *yybottom;
5320 # define YY_STACK_PRINT(Bottom, Top) \
5323 yy_stack_print ((Bottom), (Top)); \
5334 unsigned long int yylno = yyrline[yyrule];
5335 int yynrhs = yyr2[yyrule];
5337 YYFPRINTF (p,
"Reducing stack by rule %d (line %lu):\n",
5340 for (yyi = 0; yyi < yynrhs; yyi++)
5344 yystos[yyssp[yyi + 1 - yynrhs]],
5345 &(yyvsp[(yyi + 1) - (yynrhs)])
5346 , &(yylsp[(yyi + 1) - (yynrhs)]) , p);
5351 # define YY_REDUCE_PRINT(Rule) \
5354 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
5363 # define YYDPRINTF(Args)
5364 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5365 # define YY_STACK_PRINT(Bottom, Top)
5366 # define YY_REDUCE_PRINT(Rule)
5372 # define YYINITDEPTH 200
5383 # define YYMAXDEPTH 10000
5390 # if defined __GLIBC__ && defined _STRING_H
5391 # define yystrlen strlen
5395 yystrlen (
const char *yystr)
5398 for (yylen = 0; yystr[yylen]; yylen++)
5406 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5407 # define yystpcpy stpcpy
5412 yystpcpy (
char *yydest,
const char *yysrc)
5415 const char *yys = yysrc;
5417 while ((*yyd++ = *yys++) !=
'\0')
5434 yytnamerr (
char *yyres,
const char *yystr)
5439 char const *yyp = yystr;
5446 goto do_not_strip_quotes;
5450 goto do_not_strip_quotes;
5463 do_not_strip_quotes: ;
5467 return yystrlen (yystr);
5469 return yystpcpy (yyres, yystr) - yyres;
5487 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5491 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5521 int yyn = yypact[*yyssp];
5522 yyarg[yycount++] = yytname[yytoken];
5528 int yyxbegin = yyn < 0 ? -yyn : 0;
5530 int yychecklim =
YYLAST - yyn + 1;
5534 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5535 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
5538 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5544 yyarg[yycount++] = yytname[yyx];
5547 if (! (yysize <= yysize1
5558 # define YYCASE_(N, S) \
5563 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
5564 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
5565 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
5566 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
5567 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5572 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
5578 if (*yymsg_alloc < yysize)
5580 *yymsg_alloc = 2 * yysize;
5581 if (! (yysize <= *yymsg_alloc
5593 while ((*yyp = *yyformat) !=
'\0')
5594 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
5617 YYUSE (yylocationp);
5650 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5654 YYLTYPE yylloc = yyloc_default;
5703 char *yymsg = yymsgbuf;
5704 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
5707 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
5713 yyssp = yyss = yyssa;
5714 yyvsp = yyvs = yyvsa;
5715 yylsp = yyls = yylsa;
5726 #line 974 "ripper.y"
5731 #line 5727 "ripper.c"
5746 if (yyss + yystacksize - 1 <= yyssp)
5749 YYSIZE_T yysize = yyssp - yyss + 1;
5764 yyoverflow (
YY_(
"memory exhausted"),
5765 &yyss1, yysize *
sizeof (*yyssp),
5766 &yyvs1, yysize *
sizeof (*yyvsp),
5767 &yyls1, yysize *
sizeof (*yylsp),
5775 # ifndef YYSTACK_RELOCATE
5776 goto yyexhaustedlab;
5780 goto yyexhaustedlab;
5790 goto yyexhaustedlab;
5794 # undef YYSTACK_RELOCATE
5801 yyssp = yyss + yysize - 1;
5802 yyvsp = yyvs + yysize - 1;
5803 yylsp = yyls + yysize - 1;
5805 YYDPRINTF ((p,
"Stack size increased to %lu\n",
5806 (
unsigned long int) yystacksize));
5808 if (yyss + yystacksize - 1 <= yyssp)
5812 YYDPRINTF ((p,
"Entering state %d\n", yystate));
5828 yyn = yypact[yystate];
5838 yychar = yylex (&
yylval, &yylloc, p);
5841 if (yychar <=
YYEOF)
5843 yychar = yytoken =
YYEOF;
5844 YYDPRINTF ((p,
"Now at end of input.\n"));
5855 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5889 yyn = yydefact[yystate];
5910 yyval = yyvsp[1-yylen];
5918 #line 1176 "ripper.y"
5923 #line 5919 "ripper.c"
5927 #line 1181 "ripper.y"
5931 NODE *node = (yyvsp[0].val);
5934 while (node->nd_next) {
5935 node = node->nd_next;
5937 node = node->nd_head;
5939 node = remove_begin(node);
5944 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(program,v1);p->result=v2;}
5947 #line 5943 "ripper.c"
5951 #line 1203 "ripper.y"
5953 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
5955 #line 5951 "ripper.c"
5959 #line 1209 "ripper.y"
5964 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
5966 #line 5962 "ripper.c"
5970 #line 1216 "ripper.y"
5973 (yyval.
val) = newline_node((yyvsp[0].val));
5975 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
5977 #line 5973 "ripper.c"
5981 #line 1223 "ripper.y"
5984 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
5986 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
5988 #line 5984 "ripper.c"
5992 #line 1230 "ripper.y"
5994 (yyval.
val) = remove_begin((yyvsp[0].val));
5996 #line 5992 "ripper.c"
6000 #line 1237 "ripper.y"
6002 (yyval.
val) = (yyvsp[0].val);
6004 #line 6000 "ripper.c"
6008 #line 1243 "ripper.y"
6015 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(BEGIN,v1);(yyval.
val)=v2;}
6017 #line 6013 "ripper.c"
6021 #line 1255 "ripper.y"
6022 {
if (!(yyvsp[-1].val)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6023 #line 6019 "ripper.c"
6027 #line 1258 "ripper.y"
6030 (yyval.
val) = new_bodystmt(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6032 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-5].val));v2=escape_Qundef((yyvsp[-4].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
6034 #line 6030 "ripper.c"
6038 #line 1267 "ripper.y"
6041 (yyval.
val) = new_bodystmt(p, (yyvsp[-2].val), (yyvsp[-1].val), 0, (yyvsp[0].val), &(yyloc));
6043 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=
Qnil;v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
6045 #line 6041 "ripper.c"
6049 #line 1276 "ripper.y"
6051 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6053 #line 6049 "ripper.c"
6057 #line 1282 "ripper.y"
6062 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
6064 #line 6060 "ripper.c"
6068 #line 1289 "ripper.y"
6071 (yyval.
val) = newline_node((yyvsp[0].val));
6073 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
6075 #line 6071 "ripper.c"
6079 #line 1296 "ripper.y"
6082 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
6084 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
6086 #line 6082 "ripper.c"
6090 #line 1303 "ripper.y"
6092 (yyval.
val) = remove_begin((yyvsp[0].val));
6094 #line 6090 "ripper.c"
6098 #line 1309 "ripper.y"
6100 (yyval.
val) = (yyvsp[0].val);
6102 #line 6098 "ripper.c"
6106 #line 1313 "ripper.y"
6108 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6110 #line 6106 "ripper.c"
6114 #line 1317 "ripper.y"
6116 (yyval.
val) = (yyvsp[0].val);
6118 #line 6114 "ripper.c"
6122 #line 1322 "ripper.y"
6124 #line 6120 "ripper.c"
6128 #line 1323 "ripper.y"
6131 (yyval.
val) =
NEW_ALIAS((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6133 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(
alias,v1,v2);(yyval.
val)=v3;}
6135 #line 6131 "ripper.c"
6139 #line 1330 "ripper.y"
6142 (yyval.
val) =
NEW_VALIAS((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6144 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6146 #line 6142 "ripper.c"
6150 #line 1337 "ripper.y"
6155 buf[1] = (
char)(yyvsp[0].val)->nd_nth;
6158 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6160 #line 6156 "ripper.c"
6164 #line 1347 "ripper.y"
6167 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6170 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);v4=v3;v5=dispatch1(alias_error,v4);(yyval.
val)=v5;}ripper_error(p);
6172 #line 6168 "ripper.c"
6176 #line 1355 "ripper.y"
6179 (yyval.
val) = (yyvsp[0].val);
6181 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(undef,v1);(yyval.
val)=v2;}
6183 #line 6179 "ripper.c"
6187 #line 1362 "ripper.y"
6190 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6191 fixpos((yyval.
val), (yyvsp[0].val));
6193 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
6195 #line 6191 "ripper.c"
6199 #line 1370 "ripper.y"
6202 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6203 fixpos((yyval.
val), (yyvsp[0].val));
6205 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
6207 #line 6203 "ripper.c"
6211 #line 1378 "ripper.y"
6215 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val)->
nd_body, 0, &(yyloc));
6218 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val), 1, &(yyloc));
6221 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(while_mod,v1,v2);(yyval.
val)=v3;}
6223 #line 6219 "ripper.c"
6227 #line 1390 "ripper.y"
6231 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val)->
nd_body, 0, &(yyloc));
6234 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val), 1, &(yyloc));
6237 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(until_mod,v1,v2);(yyval.
val)=v3;}
6239 #line 6235 "ripper.c"
6243 #line 1402 "ripper.y"
6247 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6248 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc);
6249 (yyval.
val) =
NEW_RESCUE(remove_begin((yyvsp[-2].val)), resq, 0, &(yyloc));
6251 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
6253 #line 6249 "ripper.c"
6257 #line 1412 "ripper.y"
6260 rb_warn0(
"END in method; use at_exit");
6265 NODE_SCOPE, 0 , (yyvsp[-1].val) , 0 , &(yyloc));
6269 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(
END,v1);(yyval.
val)=v2;}
6271 #line 6267 "ripper.c"
6275 #line 1427 "ripper.y"
6279 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6281 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
6283 #line 6279 "ripper.c"
6287 #line 1435 "ripper.y"
6291 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6293 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
6295 #line 6291 "ripper.c"
6299 #line 1443 "ripper.y"
6302 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6304 (yyval.
val) = node_assign(p, (yyvsp[-4].val),
NEW_RESCUE((yyvsp[-2].val),
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc)), &(yyloc));
6306 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=(yyvsp[-4].val);v5=v3;v6=dispatch2(massign,v4,v5);(yyval.
val)=v6;}
6308 #line 6304 "ripper.c"
6312 #line 1452 "ripper.y"
6315 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6317 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
6319 #line 6315 "ripper.c"
6323 #line 1462 "ripper.y"
6327 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6329 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
6331 #line 6327 "ripper.c"
6335 #line 1470 "ripper.y"
6339 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6341 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
6343 #line 6339 "ripper.c"
6347 #line 1478 "ripper.y"
6351 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-3]), &(yyloc));
6353 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
6356 #line 6352 "ripper.c"
6360 #line 1487 "ripper.y"
6364 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6366 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6368 #line 6364 "ripper.c"
6372 #line 1495 "ripper.y"
6376 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6378 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6380 #line 6376 "ripper.c"
6384 #line 1503 "ripper.y"
6387 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
6388 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6390 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
6392 #line 6388 "ripper.c"
6396 #line 1511 "ripper.y"
6400 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6402 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6404 #line 6400 "ripper.c"
6408 #line 1519 "ripper.y"
6411 rb_backref_error(p, (yyvsp[-2].val));
6414 {
VALUE v1,v2,v3,v4,v5;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);v4=v3;v5=dispatch1(assign_error,v4);(yyval.
val)=v5;}ripper_error(p);
6416 #line 6412 "ripper.c"
6420 #line 1529 "ripper.y"
6423 (yyval.
val) = (yyvsp[0].val);
6425 #line 6421 "ripper.c"
6429 #line 1534 "ripper.y"
6432 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6436 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
6438 #line 6434 "ripper.c"
6442 #line 1547 "ripper.y"
6444 (yyval.
val) = logop(p,
idAND, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
6446 #line 6442 "ripper.c"
6450 #line 1551 "ripper.y"
6452 (yyval.
val) = logop(p,
idOR, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
6454 #line 6450 "ripper.c"
6458 #line 1555 "ripper.y"
6460 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
6462 #line 6458 "ripper.c"
6466 #line 1559 "ripper.y"
6468 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
6470 #line 6466 "ripper.c"
6474 #line 1563 "ripper.y"
6482 #line 6478 "ripper.c"
6486 #line 1570 "ripper.y"
6487 {(yyval.
tbl) = push_pvtbl(p);}
6488 #line 6484 "ripper.c"
6492 #line 1572 "ripper.y"
6493 {pop_pvtbl(p, (yyvsp[-1].tbl));}
6494 #line 6490 "ripper.c"
6498 #line 1573 "ripper.y"
6502 (yyval.
val) = new_case3(p, (yyvsp[-5].val),
NEW_IN((yyvsp[-1].val), 0, 0, &(yylsp[-1])), &(yyloc));
6504 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-1].val);v2=
Qnil;v3=
Qnil;v4=dispatch3(in,v1,v2,v3);v5=(yyvsp[-5].val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.
val)=v7;}
6506 #line 6502 "ripper.c"
6510 #line 1584 "ripper.y"
6513 (yyval.
val) = (yyvsp[0].val);
6515 #line 6511 "ripper.c"
6519 #line 1590 "ripper.y"
6521 #line 6517 "ripper.c"
6525 #line 1590 "ripper.y"
6527 #line 6523 "ripper.c"
6531 #line 1591 "ripper.y"
6533 (yyval.
val) = (yyvsp[-2].val);
6535 #line 6531 "ripper.c"
6539 #line 1602 "ripper.y"
6542 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
6544 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
6546 #line 6542 "ripper.c"
6550 #line 1611 "ripper.y"
6552 (yyval.
val) = (yyvsp[-1].val);
6554 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
6558 #line 6554 "ripper.c"
6562 #line 1621 "ripper.y"
6568 (yyval.
val)=(yyvsp[0].val);
6570 #line 6566 "ripper.c"
6574 #line 1631 "ripper.y"
6577 (yyvsp[-1].val)->
nd_args = (yyvsp[0].val);
6579 (yyval.
val) = (yyvsp[-1].val);
6581 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(command,v1,v2);(yyval.
val)=v3;}
6583 #line 6579 "ripper.c"
6587 #line 1640 "ripper.y"
6590 block_dup_check(p, (yyvsp[-1].val), (yyvsp[0].val));
6591 (yyvsp[-2].val)->
nd_args = (yyvsp[-1].val);
6592 (yyval.
val) = method_add_block(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6593 fixpos((yyval.
val), (yyvsp[-2].val));
6596 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(command,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(method_add_block,v4,v5);(yyval.
val)=v6;}
6598 #line 6594 "ripper.c"
6602 #line 1651 "ripper.y"
6605 (yyval.
val) = new_command_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val),
Qnull, &(yylsp[-1]), &(yyloc));
6607 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=(yyvsp[0].val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
6609 #line 6605 "ripper.c"
6613 #line 1658 "ripper.y"
6616 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
6618 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
6620 #line 6616 "ripper.c"
6624 #line 1665 "ripper.y"
6627 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val),
Qnull, &(yylsp[-1]), &(yyloc));
6629 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].val);v4=(yyvsp[0].val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
6631 #line 6627 "ripper.c"
6635 #line 1672 "ripper.y"
6638 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
6640 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
6642 #line 6638 "ripper.c"
6646 #line 1679 "ripper.y"
6650 fixpos((yyval.
val), (yyvsp[0].val));
6652 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
6654 #line 6650 "ripper.c"
6658 #line 1687 "ripper.y"
6661 (yyval.
val) = new_yield(p, (yyvsp[0].val), &(yyloc));
6662 fixpos((yyval.
val), (yyvsp[0].val));
6664 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(yield,v1);(yyval.
val)=v2;}
6666 #line 6662 "ripper.c"
6670 #line 1695 "ripper.y"
6673 (yyval.
val) =
NEW_RETURN(ret_args(p, (yyvsp[0].val)), &(yyloc));
6675 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
return,v1);(yyval.
val)=v2;}
6677 #line 6673 "ripper.c"
6681 #line 1702 "ripper.y"
6684 (yyval.
val) =
NEW_BREAK(ret_args(p, (yyvsp[0].val)), &(yyloc));
6686 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
break,v1);(yyval.
val)=v2;}
6688 #line 6684 "ripper.c"
6692 #line 1709 "ripper.y"
6695 (yyval.
val) =
NEW_NEXT(ret_args(p, (yyvsp[0].val)), &(yyloc));
6697 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(next,v1);(yyval.
val)=v2;}
6699 #line 6695 "ripper.c"
6703 #line 1719 "ripper.y"
6706 (yyval.
val) = (yyvsp[-1].val);
6708 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6710 #line 6706 "ripper.c"
6714 #line 1729 "ripper.y"
6719 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6721 #line 6717 "ripper.c"
6725 #line 1738 "ripper.y"
6730 (yyval.
val)=(yyvsp[0].val);
6732 #line 6728 "ripper.c"
6736 #line 1745 "ripper.y"
6739 (yyval.
val) =
NEW_MASGN(list_append(p, (yyvsp[-1].val),(yyvsp[0].val)), 0, &(yyloc));
6741 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6743 #line 6739 "ripper.c"
6747 #line 1752 "ripper.y"
6750 (yyval.
val) =
NEW_MASGN((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6752 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
6754 #line 6750 "ripper.c"
6758 #line 1759 "ripper.y"
6763 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
6765 #line 6761 "ripper.c"
6769 #line 1766 "ripper.y"
6774 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
6776 #line 6772 "ripper.c"
6780 #line 1773 "ripper.y"
6785 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
6787 #line 6783 "ripper.c"
6791 #line 1780 "ripper.y"
6796 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
6798 #line 6794 "ripper.c"
6802 #line 1787 "ripper.y"
6807 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
6809 #line 6805 "ripper.c"
6813 #line 1794 "ripper.y"
6818 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
6820 #line 6816 "ripper.c"
6824 #line 1801 "ripper.y"
6829 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
6831 #line 6827 "ripper.c"
6835 #line 1811 "ripper.y"
6838 (yyval.
val) = (yyvsp[-1].val);
6840 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6842 #line 6838 "ripper.c"
6846 #line 1820 "ripper.y"
6849 (yyval.
val) =
NEW_LIST((yyvsp[-1].val), &(yylsp[-1]));
6851 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-1].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
6853 #line 6849 "ripper.c"
6857 #line 1827 "ripper.y"
6860 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
6862 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6864 #line 6860 "ripper.c"
6868 #line 1836 "ripper.y"
6873 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
6875 #line 6871 "ripper.c"
6879 #line 1843 "ripper.y"
6882 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].val));
6884 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6886 #line 6882 "ripper.c"
6890 #line 1852 "ripper.y"
6893 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
6895 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
6897 #line 6893 "ripper.c"
6901 #line 1859 "ripper.y"
6904 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
6906 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
6908 #line 6904 "ripper.c"
6912 #line 1866 "ripper.y"
6915 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
6917 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
6919 #line 6915 "ripper.c"
6923 #line 1873 "ripper.y"
6925 if ((yyvsp[-1].val) ==
tANDDOT) {
6926 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6929 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6931 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
6933 #line 6929 "ripper.c"
6937 #line 1883 "ripper.y"
6940 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].val), &(yyloc));
6942 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=v3;}
6944 #line 6940 "ripper.c"
6948 #line 1890 "ripper.y"
6950 if ((yyvsp[-1].val) ==
tANDDOT) {
6951 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6954 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6956 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
6958 #line 6954 "ripper.c"
6962 #line 1900 "ripper.y"
6965 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
6967 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
6969 #line 6965 "ripper.c"
6973 #line 1907 "ripper.y"
6976 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
6978 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
6980 #line 6976 "ripper.c"
6984 #line 1914 "ripper.y"
6987 rb_backref_error(p, (yyvsp[0].val));
6990 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
6992 #line 6988 "ripper.c"
6996 #line 1924 "ripper.y"
6999 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7001 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7003 #line 6999 "ripper.c"
7007 #line 1931 "ripper.y"
7010 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7012 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7014 #line 7010 "ripper.c"
7018 #line 1938 "ripper.y"
7021 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
7023 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
7025 #line 7021 "ripper.c"
7029 #line 1945 "ripper.y"
7032 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7034 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7036 #line 7032 "ripper.c"
7040 #line 1952 "ripper.y"
7043 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].val), &(yyloc));
7045 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7047 #line 7043 "ripper.c"
7051 #line 1959 "ripper.y"
7054 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7056 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7058 #line 7054 "ripper.c"
7062 #line 1966 "ripper.y"
7065 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
7067 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
7069 #line 7065 "ripper.c"
7073 #line 1973 "ripper.y"
7076 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
7078 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
7080 #line 7076 "ripper.c"
7084 #line 1980 "ripper.y"
7087 rb_backref_error(p, (yyvsp[0].val));
7090 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
7092 #line 7088 "ripper.c"
7096 #line 1990 "ripper.y"
7099 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7101 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(class_name_error,v1);(yyval.
val)=v2;}ripper_error(p);
7103 #line 7099 "ripper.c"
7107 #line 2000 "ripper.y"
7112 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
7114 #line 7110 "ripper.c"
7118 #line 2007 "ripper.y"
7123 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(const_ref,v1);(yyval.
val)=v2;}
7125 #line 7121 "ripper.c"
7129 #line 2014 "ripper.y"
7132 (yyval.
val) =
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7134 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
7136 #line 7132 "ripper.c"
7140 #line 2026 "ripper.y"
7143 (yyval.
val) = (yyvsp[0].val);
7145 #line 7141 "ripper.c"
7149 #line 2031 "ripper.y"
7152 (yyval.
val) = (yyvsp[0].val);
7154 #line 7150 "ripper.c"
7158 #line 2038 "ripper.y"
7163 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(symbol_literal,v1);(yyval.
val)=v2;}
7165 #line 7161 "ripper.c"
7169 #line 2048 "ripper.y"
7176 #line 7172 "ripper.c"
7180 #line 2054 "ripper.y"
7182 #line 7178 "ripper.c"
7186 #line 2055 "ripper.y"
7190 (yyval.
val) = block_append(p, (yyvsp[-3].val), undef);
7194 #line 7190 "ripper.c"
7198 #line 2064 "ripper.y"
7200 #line 7196 "ripper.c"
7204 #line 2065 "ripper.y"
7206 #line 7202 "ripper.c"
7210 #line 2066 "ripper.y"
7212 #line 7208 "ripper.c"
7216 #line 2067 "ripper.y"
7218 #line 7214 "ripper.c"
7222 #line 2068 "ripper.y"
7224 #line 7220 "ripper.c"
7228 #line 2069 "ripper.y"
7230 #line 7226 "ripper.c"
7234 #line 2070 "ripper.y"
7236 #line 7232 "ripper.c"
7240 #line 2071 "ripper.y"
7242 #line 7238 "ripper.c"
7246 #line 2072 "ripper.y"
7248 #line 7244 "ripper.c"
7252 #line 2073 "ripper.y"
7254 #line 7250 "ripper.c"
7258 #line 2074 "ripper.y"
7260 #line 7256 "ripper.c"
7264 #line 2075 "ripper.y"
7266 #line 7262 "ripper.c"
7270 #line 2076 "ripper.y"
7272 #line 7268 "ripper.c"
7276 #line 2077 "ripper.y"
7278 #line 7274 "ripper.c"
7282 #line 2078 "ripper.y"
7284 #line 7280 "ripper.c"
7288 #line 2079 "ripper.y"
7290 #line 7286 "ripper.c"
7294 #line 2080 "ripper.y"
7296 #line 7292 "ripper.c"
7300 #line 2081 "ripper.y"
7302 #line 7298 "ripper.c"
7306 #line 2082 "ripper.y"
7308 #line 7304 "ripper.c"
7312 #line 2083 "ripper.y"
7314 #line 7310 "ripper.c"
7318 #line 2084 "ripper.y"
7320 #line 7316 "ripper.c"
7324 #line 2085 "ripper.y"
7326 #line 7322 "ripper.c"
7330 #line 2086 "ripper.y"
7332 #line 7328 "ripper.c"
7336 #line 2087 "ripper.y"
7338 #line 7334 "ripper.c"
7342 #line 2088 "ripper.y"
7344 #line 7340 "ripper.c"
7348 #line 2089 "ripper.y"
7350 #line 7346 "ripper.c"
7354 #line 2090 "ripper.y"
7356 #line 7352 "ripper.c"
7360 #line 2091 "ripper.y"
7362 #line 7358 "ripper.c"
7366 #line 2092 "ripper.y"
7368 #line 7364 "ripper.c"
7372 #line 2093 "ripper.y"
7374 #line 7370 "ripper.c"
7378 #line 2111 "ripper.y"
7381 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7383 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7385 #line 7381 "ripper.c"
7389 #line 2118 "ripper.y"
7392 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7394 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
7396 #line 7392 "ripper.c"
7400 #line 2125 "ripper.y"
7404 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-3]), &(yyloc));
7406 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7408 #line 7404 "ripper.c"
7412 #line 2133 "ripper.y"
7416 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7418 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7420 #line 7416 "ripper.c"
7424 #line 2141 "ripper.y"
7428 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7430 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7432 #line 7428 "ripper.c"
7436 #line 2149 "ripper.y"
7440 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7442 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7444 #line 7440 "ripper.c"
7448 #line 2157 "ripper.y"
7451 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7452 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7454 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7456 #line 7452 "ripper.c"
7460 #line 2165 "ripper.y"
7463 (yyval.
val) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].val), &(yyloc)), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7465 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=dispatch1(top_const_field,v1);v3=v2;v4=(yyvsp[-1].val);v5=(yyvsp[0].val);v6=dispatch3(opassign,v3,v4,v5);(yyval.
val)=v6;}
7467 #line 7463 "ripper.c"
7471 #line 2172 "ripper.y"
7474 rb_backref_error(p, (yyvsp[-2].val));
7477 {
VALUE v1,v2,v3,v4,v5,v6;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);v5=v4;v6=dispatch1(assign_error,v5);(yyval.
val)=v6;}ripper_error(p);
7479 #line 7475 "ripper.c"
7483 #line 2180 "ripper.y"
7488 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7490 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7492 #line 7488 "ripper.c"
7496 #line 2189 "ripper.y"
7501 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7503 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7505 #line 7501 "ripper.c"
7509 #line 2198 "ripper.y"
7513 loc.beg_pos = (yylsp[0]).end_pos;
7514 loc.end_pos = (yylsp[0]).end_pos;
7519 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7521 #line 7517 "ripper.c"
7525 #line 2210 "ripper.y"
7529 loc.beg_pos = (yylsp[0]).end_pos;
7530 loc.end_pos = (yylsp[0]).end_pos;
7535 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7537 #line 7533 "ripper.c"
7541 #line 2222 "ripper.y"
7545 loc.beg_pos = (yylsp[-1]).beg_pos;
7546 loc.end_pos = (yylsp[-1]).beg_pos;
7551 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7553 #line 7549 "ripper.c"
7557 #line 2234 "ripper.y"
7561 loc.beg_pos = (yylsp[-1]).beg_pos;
7562 loc.end_pos = (yylsp[-1]).beg_pos;
7567 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7569 #line 7565 "ripper.c"
7573 #line 2246 "ripper.y"
7575 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'+', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7577 #line 7573 "ripper.c"
7581 #line 2250 "ripper.y"
7583 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'-', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7585 #line 7581 "ripper.c"
7589 #line 2254 "ripper.y"
7591 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'*', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7593 #line 7589 "ripper.c"
7597 #line 2258 "ripper.y"
7599 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'/', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7601 #line 7597 "ripper.c"
7605 #line 2262 "ripper.y"
7607 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'%', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7609 #line 7605 "ripper.c"
7613 #line 2266 "ripper.y"
7615 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7617 #line 7613 "ripper.c"
7621 #line 2270 "ripper.y"
7623 (yyval.
val) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].val), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
7625 #line 7621 "ripper.c"
7629 #line 2274 "ripper.y"
7631 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUPlus, &(yylsp[-1]), &(yyloc));
7633 #line 7629 "ripper.c"
7637 #line 2278 "ripper.y"
7639 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUMinus, &(yylsp[-1]), &(yyloc));
7641 #line 7637 "ripper.c"
7645 #line 2282 "ripper.y"
7647 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'|', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7649 #line 7645 "ripper.c"
7653 #line 2286 "ripper.y"
7655 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'^', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7657 #line 7653 "ripper.c"
7661 #line 2290 "ripper.y"
7663 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'&', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7665 #line 7661 "ripper.c"
7669 #line 2294 "ripper.y"
7671 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idCmp, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7673 #line 7669 "ripper.c"
7677 #line 2299 "ripper.y"
7679 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7681 #line 7677 "ripper.c"
7685 #line 2303 "ripper.y"
7687 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEqq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7689 #line 7685 "ripper.c"
7693 #line 2307 "ripper.y"
7695 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7697 #line 7693 "ripper.c"
7701 #line 2311 "ripper.y"
7703 (yyval.
val) = match_op(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7705 #line 7701 "ripper.c"
7709 #line 2315 "ripper.y"
7711 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeqTilde, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7713 #line 7709 "ripper.c"
7717 #line 2319 "ripper.y"
7719 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7721 #line 7717 "ripper.c"
7725 #line 2323 "ripper.y"
7727 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
'~', &(yylsp[-1]), &(yyloc));
7729 #line 7725 "ripper.c"
7733 #line 2327 "ripper.y"
7735 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idLTLT, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7737 #line 7733 "ripper.c"
7741 #line 2331 "ripper.y"
7743 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idGTGT, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7745 #line 7741 "ripper.c"
7749 #line 2335 "ripper.y"
7751 (yyval.
val) = logop(p,
idANDOP, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7753 #line 7749 "ripper.c"
7757 #line 2339 "ripper.y"
7759 (yyval.
val) = logop(p,
idOROP, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7761 #line 7757 "ripper.c"
7765 #line 2342 "ripper.y"
7767 #line 7763 "ripper.c"
7771 #line 2343 "ripper.y"
7774 (yyval.
val) = new_defined(p, (yyvsp[0].val), &(yyloc));
7776 #line 7772 "ripper.c"
7780 #line 2348 "ripper.y"
7784 (yyval.
val) = new_if(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
7785 fixpos((yyval.
val), (yyvsp[-5].val));
7787 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].val);v2=(yyvsp[-3].val);v3=(yyvsp[0].val);v4=dispatch3(ifop,v1,v2,v3);(yyval.
val)=v4;}
7789 #line 7785 "ripper.c"
7793 #line 2357 "ripper.y"
7795 (yyval.
val) = (yyvsp[0].val);
7797 #line 7793 "ripper.c"
7801 #line 2362 "ripper.y"
7802 {(yyval.
val) =
'>';}
7803 #line 7799 "ripper.c"
7807 #line 2363 "ripper.y"
7808 {(yyval.
val) =
'<';}
7809 #line 7805 "ripper.c"
7813 #line 2364 "ripper.y"
7815 #line 7811 "ripper.c"
7819 #line 2365 "ripper.y"
7821 #line 7817 "ripper.c"
7825 #line 2369 "ripper.y"
7827 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7829 #line 7825 "ripper.c"
7833 #line 2373 "ripper.y"
7836 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7838 #line 7834 "ripper.c"
7842 #line 2380 "ripper.y"
7845 (yyval.
val) = (yyvsp[0].val);
7847 #line 7843 "ripper.c"
7851 #line 2388 "ripper.y"
7853 (yyval.
val) = (yyvsp[-1].val);
7855 #line 7851 "ripper.c"
7859 #line 2392 "ripper.y"
7862 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
7864 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
7866 #line 7862 "ripper.c"
7870 #line 2399 "ripper.y"
7873 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : 0;
7875 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
7877 #line 7873 "ripper.c"
7881 #line 2408 "ripper.y"
7884 (yyval.
val) = (yyvsp[0].val);
7886 #line 7882 "ripper.c"
7890 #line 2413 "ripper.y"
7893 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7897 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
7899 #line 7895 "ripper.c"
7903 #line 2424 "ripper.y"
7906 (yyval.
val) = (yyvsp[-1].val);
7908 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
7910 #line 7906 "ripper.c"
7914 #line 2431 "ripper.y"
7932 (yyval.
val) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
7934 (yyval.
val) = splat;
7936 (yyval.
val) = arg_blk_pass((yyval.
val), block);
7938 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
7941 #line 7937 "ripper.c"
7945 #line 2466 "ripper.y"
7947 (yyval.
val) = (yyvsp[-1].val);
7949 #line 7945 "ripper.c"
7953 #line 2470 "ripper.y"
7956 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
7958 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
7960 #line 7956 "ripper.c"
7964 #line 2477 "ripper.y"
7967 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
7969 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
7971 #line 7967 "ripper.c"
7975 #line 2486 "ripper.y"
7981 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
7983 #line 7979 "ripper.c"
7987 #line 2494 "ripper.y"
7990 (yyval.
val) = arg_blk_pass((yyvsp[-1].val), (yyvsp[0].val));
7992 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_block,v1,v2);(yyval.
val)=v3;}
7994 #line 7990 "ripper.c"
7998 #line 2501 "ripper.y"
8001 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
8002 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].val));
8004 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);v7=v6;v8=(yyvsp[0].val);v9=dispatch2(args_add_block,v7,v8);(yyval.
val)=v9;}
8006 #line 8002 "ripper.c"
8010 #line 2509 "ripper.y"
8013 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
8014 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].val));
8016 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(args_add_block,v6,v7);(yyval.
val)=v8;}
8018 #line 8014 "ripper.c"
8022 #line 2517 "ripper.y"
8023 {{
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_block,v2,v3);(yyval.
val)=v4;}}
8024 #line 8020 "ripper.c"
8028 #line 2520 "ripper.y"
8046 #line 8042 "ripper.c"
8050 #line 2538 "ripper.y"
8066 (yyval.
val) = (yyvsp[0].val);
8068 #line 8064 "ripper.c"
8072 #line 2558 "ripper.y"
8077 (yyval.
val)=(yyvsp[0].val);
8079 #line 8075 "ripper.c"
8083 #line 2567 "ripper.y"
8085 (yyval.
val) = (yyvsp[0].val);
8087 #line 8083 "ripper.c"
8091 #line 2571 "ripper.y"
8095 #line 8091 "ripper.c"
8099 #line 2577 "ripper.y"
8104 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
8106 #line 8102 "ripper.c"
8110 #line 2584 "ripper.y"
8115 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
8117 #line 8113 "ripper.c"
8121 #line 2591 "ripper.y"
8124 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8126 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
8128 #line 8124 "ripper.c"
8132 #line 2598 "ripper.y"
8135 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
8137 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
8139 #line 8135 "ripper.c"
8143 #line 2611 "ripper.y"
8146 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8148 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(mrhs_add,v3,v4);(yyval.
val)=v5;}
8150 #line 8146 "ripper.c"
8154 #line 2618 "ripper.y"
8157 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
8159 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(mrhs_add_star,v3,v4);(yyval.
val)=v5;}
8161 #line 8157 "ripper.c"
8165 #line 2625 "ripper.y"
8170 {
VALUE v1,v2,v3,v4;v1=dispatch0(mrhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mrhs_add_star,v2,v3);(yyval.
val)=v4;}
8172 #line 8168 "ripper.c"
8176 #line 2644 "ripper.y"
8181 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[0].val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);(yyval.
val)=v6;}
8183 #line 8179 "ripper.c"
8187 #line 2651 "ripper.y"
8191 #line 8187 "ripper.c"
8195 #line 2656 "ripper.y"
8199 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8203 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(begin,v1);(yyval.
val)=v2;}
8205 #line 8201 "ripper.c"
8209 #line 2665 "ripper.y"
8211 #line 8207 "ripper.c"
8215 #line 2666 "ripper.y"
8220 {
VALUE v1,v2;v1=0;v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8222 #line 8218 "ripper.c"
8226 #line 2672 "ripper.y"
8228 #line 8224 "ripper.c"
8232 #line 2673 "ripper.y"
8236 (yyval.
val) = (yyvsp[-2].val);
8238 {
VALUE v1,v2;v1=(yyvsp[-2].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8240 #line 8236 "ripper.c"
8244 #line 2681 "ripper.y"
8248 (yyval.
val) = (yyvsp[-1].val);
8250 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8252 #line 8248 "ripper.c"
8256 #line 2689 "ripper.y"
8259 (yyval.
val) =
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8261 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
8263 #line 8259 "ripper.c"
8267 #line 2696 "ripper.y"
8272 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
8274 #line 8270 "ripper.c"
8278 #line 2703 "ripper.y"
8283 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(array,v1);(yyval.
val)=v2;}
8285 #line 8281 "ripper.c"
8289 #line 2710 "ripper.y"
8292 (yyval.
val) = new_hash(p, (yyvsp[-1].val), &(yyloc));
8295 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(hash,v1);(yyval.
val)=v2;}
8297 #line 8293 "ripper.c"
8301 #line 2718 "ripper.y"
8306 {
VALUE v1;v1=dispatch0(return0);(yyval.
val)=v1;}
8308 #line 8304 "ripper.c"
8312 #line 2725 "ripper.y"
8315 (yyval.
val) = new_yield(p, (yyvsp[-1].val), &(yyloc));
8317 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);v3=v2;v4=dispatch1(yield,v3);(yyval.
val)=v4;}
8319 #line 8315 "ripper.c"
8323 #line 2732 "ripper.y"
8328 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(args_new);v2=v1;v3=dispatch1(paren,v2);v4=v3;v5=dispatch1(yield,v4);(yyval.
val)=v5;}
8330 #line 8326 "ripper.c"
8334 #line 2739 "ripper.y"
8339 {
VALUE v1;v1=dispatch0(yield0);(yyval.
val)=v1;}
8341 #line 8337 "ripper.c"
8345 #line 2745 "ripper.y"
8347 #line 8343 "ripper.c"
8351 #line 2746 "ripper.y"
8354 (yyval.
val) = new_defined(p, (yyvsp[-1].val), &(yyloc));
8356 #line 8352 "ripper.c"
8360 #line 2751 "ripper.y"
8362 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[-1].val), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
8364 #line 8360 "ripper.c"
8368 #line 2755 "ripper.y"
8370 (yyval.
val) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
8372 #line 8368 "ripper.c"
8376 #line 2759 "ripper.y"
8379 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8381 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=(yyvsp[-1].val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);v7=v6;v8=(yyvsp[0].val);v9=dispatch2(method_add_block,v7,v8);(yyval.
val)=v9;}
8383 #line 8379 "ripper.c"
8387 #line 2767 "ripper.y"
8390 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
8391 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8393 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
8395 #line 8391 "ripper.c"
8399 #line 2775 "ripper.y"
8401 token_info_push(p,
"->", &(yylsp[0]));
8403 #line 8399 "ripper.c"
8407 #line 2779 "ripper.y"
8409 (yyval.
val) = (yyvsp[0].val);
8414 #line 8410 "ripper.c"
8418 #line 2789 "ripper.y"
8421 (yyval.
val) = new_if(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
8422 fixpos((yyval.
val), (yyvsp[-4].val));
8424 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(
if,v1,v2,v3);(yyval.
val)=v4;}
8426 #line 8422 "ripper.c"
8430 #line 2800 "ripper.y"
8433 (yyval.
val) = new_unless(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
8434 fixpos((yyval.
val), (yyvsp[-4].val));
8436 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(unless,v1,v2,v3);(yyval.
val)=v4;}
8438 #line 8434 "ripper.c"
8442 #line 2810 "ripper.y"
8445 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].val), 1, &(yyloc));
8446 fixpos((yyval.
val), (yyvsp[-2].val));
8448 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(
while,v1,v2);(yyval.
val)=v3;}
8450 #line 8446 "ripper.c"
8454 #line 2820 "ripper.y"
8457 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].val), 1, &(yyloc));
8458 fixpos((yyval.
val), (yyvsp[-2].val));
8460 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(until,v1,v2);(yyval.
val)=v3;}
8462 #line 8458 "ripper.c"
8466 #line 2828 "ripper.y"
8471 #line 8467 "ripper.c"
8475 #line 2834 "ripper.y"
8480 (yyval.
val) =
NEW_CASE((yyvsp[-4].val), (yyvsp[-1].val), &(yyloc));
8481 fixpos((yyval.
val), (yyvsp[-4].val));
8483 {
VALUE v1,v2,v3;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8485 #line 8481 "ripper.c"
8489 #line 2844 "ripper.y"
8494 #line 8490 "ripper.c"
8498 #line 2850 "ripper.y"
8505 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8507 #line 8503 "ripper.c"
8511 #line 2861 "ripper.y"
8514 (yyval.
val) = new_case3(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
8516 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8518 #line 8514 "ripper.c"
8522 #line 2870 "ripper.y"
8534 ID id = internal_id(p);
8536 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
8539 rb_imemo_tmpbuf_set_ptr(tmpbuf, tbl);
8540 tbl[0] = 1 ; tbl[1] =
id ;
8543 switch (
nd_type((yyvsp[-4].val))) {
8547 (yyvsp[-4].val)->
nd_value = internal_var;
8550 m->nd_next = (yyvsp[-4].val);
8553 m->nd_next = node_assign(p, (yyvsp[-4].val),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
8556 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].val), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
8559 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
8562 (yyval.
val) =
NEW_FOR((yyvsp[-2].val), scope, &(yyloc));
8563 fixpos((yyval.
val), (yyvsp[-4].val));
8565 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
for,v1,v2,v3);(yyval.
val)=v4;}
8567 #line 8563 "ripper.c"
8571 #line 2915 "ripper.y"
8574 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
8575 yyerror1(&loc,
"class definition in method body");
8581 #line 8577 "ripper.c"
8585 #line 2926 "ripper.y"
8588 (yyval.
val) =
NEW_CLASS((yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[-3].val), &(yyloc));
8590 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8593 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-1].val);v4=dispatch3(
class,v1,v2,v3);(yyval.
val)=v4;}
8597 #line 8593 "ripper.c"
8601 #line 2938 "ripper.y"
8608 #line 8604 "ripper.c"
8612 #line 2947 "ripper.y"
8615 (yyval.
val) =
NEW_SCLASS((yyvsp[-4].val), (yyvsp[-1].val), &(yyloc));
8617 set_line_body((yyvsp[-1].val),
nd_line((yyvsp[-4].val)));
8618 fixpos((yyval.
val), (yyvsp[-4].val));
8620 {
VALUE v1,v2,v3;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=dispatch2(sclass,v1,v2);(yyval.
val)=v3;}
8622 p->
in_def = (yyvsp[-3].num) & 1;
8623 p->
in_class = ((yyvsp[-3].num) >> 1) & 1;
8625 #line 8621 "ripper.c"
8629 #line 2960 "ripper.y"
8632 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8633 yyerror1(&loc,
"module definition in method body");
8639 #line 8635 "ripper.c"
8643 #line 2971 "ripper.y"
8646 (yyval.
val) =
NEW_MODULE((yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
8648 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8651 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(module,v1,v2);(yyval.
val)=v3;}
8655 #line 8651 "ripper.c"
8659 #line 2983 "ripper.y"
8661 numparam_name(p,
get_id((yyvsp[0].val)));
8666 #line 8662 "ripper.c"
8670 #line 2989 "ripper.y"
8675 #line 8671 "ripper.c"
8679 #line 2996 "ripper.y"
8682 NODE *body = remove_begin((yyvsp[-1].val));
8683 reduce_nodes(p, &body);
8684 (yyval.
val) =
NEW_DEFN((yyvsp[-5].val), (yyvsp[-2].val), body, &(yyloc));
8686 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
8688 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(def,v1,v2,v3);(yyval.
val)=v4;}
8690 p->
in_def = (yyvsp[-3].num) & 1;
8693 #line 8689 "ripper.c"
8697 #line 3009 "ripper.y"
8699 #line 8695 "ripper.c"
8703 #line 3010 "ripper.y"
8705 numparam_name(p,
get_id((yyvsp[0].val)));
8706 (yyvsp[-1].num) = p->
in_def;
8713 #line 8709 "ripper.c"
8717 #line 3022 "ripper.y"
8720 NODE *body = remove_begin((yyvsp[-1].val));
8721 reduce_nodes(p, &body);
8722 (yyval.
val) =
NEW_DEFS((yyvsp[-7].val), (yyvsp[-4].val), (yyvsp[-2].val), body, &(yyloc));
8724 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
8726 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-7].val);v2=(yyvsp[-6].val);v3=(yyvsp[-4].val);v4=(yyvsp[-2].val);v5=(yyvsp[-1].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.
val)=v6;}
8728 p->
in_def = (yyvsp[-5].num) & 1;
8731 #line 8727 "ripper.c"
8735 #line 3036 "ripper.y"
8740 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(
break,v2);(yyval.
val)=v3;}
8742 #line 8738 "ripper.c"
8746 #line 3043 "ripper.y"
8751 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(next,v2);(yyval.
val)=v3;}
8753 #line 8749 "ripper.c"
8757 #line 3050 "ripper.y"
8762 {
VALUE v1;v1=dispatch0(redo);(yyval.
val)=v1;}
8764 #line 8760 "ripper.c"
8768 #line 3057 "ripper.y"
8773 {
VALUE v1;v1=dispatch0(retry);(yyval.
val)=v1;}
8775 #line 8771 "ripper.c"
8779 #line 3066 "ripper.y"
8782 (yyval.
val) = (yyvsp[0].val);
8784 #line 8780 "ripper.c"
8788 #line 3073 "ripper.y"
8790 token_info_push(p,
"begin", &(yyloc));
8792 #line 8788 "ripper.c"
8796 #line 3079 "ripper.y"
8799 token_info_push(p,
"if", &(yyloc));
8811 #line 8807 "ripper.c"
8815 #line 3096 "ripper.y"
8817 token_info_push(p,
"unless", &(yyloc));
8819 #line 8815 "ripper.c"
8823 #line 3102 "ripper.y"
8825 token_info_push(p,
"while", &(yyloc));
8827 #line 8823 "ripper.c"
8831 #line 3108 "ripper.y"
8833 token_info_push(p,
"until", &(yyloc));
8835 #line 8831 "ripper.c"
8839 #line 3114 "ripper.y"
8841 token_info_push(p,
"case", &(yyloc));
8843 #line 8839 "ripper.c"
8847 #line 3120 "ripper.y"
8849 token_info_push(p,
"for", &(yyloc));
8851 #line 8847 "ripper.c"
8855 #line 3126 "ripper.y"
8857 token_info_push(p,
"class", &(yyloc));
8859 #line 8855 "ripper.c"
8863 #line 3132 "ripper.y"
8865 token_info_push(p,
"module", &(yyloc));
8867 #line 8863 "ripper.c"
8871 #line 3138 "ripper.y"
8873 token_info_push(p,
"def", &(yyloc));
8875 #line 8871 "ripper.c"
8879 #line 3144 "ripper.y"
8881 token_info_push(p,
"do", &(yyloc));
8883 #line 8879 "ripper.c"
8887 #line 3150 "ripper.y"
8889 token_info_push(p,
"do", &(yyloc));
8891 #line 8887 "ripper.c"
8895 #line 3156 "ripper.y"
8897 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
8899 #line 8895 "ripper.c"
8903 #line 3162 "ripper.y"
8905 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
8907 #line 8903 "ripper.c"
8911 #line 3168 "ripper.y"
8913 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
8915 #line 8911 "ripper.c"
8919 #line 3174 "ripper.y"
8922 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
8923 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
8928 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
8929 if (!e.
nonspc) *ptinfo_beg = e;
8932 #line 8928 "ripper.c"
8936 #line 3189 "ripper.y"
8939 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
8941 #line 8937 "ripper.c"
8945 #line 3196 "ripper.y"
8947 token_info_pop(p,
"end", &(yyloc));
8949 #line 8945 "ripper.c"
8953 #line 3202 "ripper.y"
8956 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
8958 #line 8954 "ripper.c"
8962 #line 3221 "ripper.y"
8965 (yyval.
val) = new_if(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8966 fixpos((yyval.
val), (yyvsp[-3].val));
8968 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(elsif,v1,v2,v3);(yyval.
val)=v4;}
8970 #line 8966 "ripper.c"
8974 #line 3232 "ripper.y"
8977 (yyval.
val) = (yyvsp[0].val);
8979 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
else,v1);(yyval.
val)=v2;}
8981 #line 8977 "ripper.c"
8985 #line 3245 "ripper.y"
8988 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8989 mark_lvar_used(p, (yyval.
val));
8991 (yyval.
val)=assignable(p, (yyvsp[0].val));
8993 #line 8989 "ripper.c"
8997 #line 3253 "ripper.y"
9000 (yyval.
val) = (yyvsp[-1].val);
9002 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
9004 #line 9000 "ripper.c"
9008 #line 3262 "ripper.y"
9013 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
9015 #line 9011 "ripper.c"
9019 #line 3269 "ripper.y"
9022 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].val));
9024 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
9026 #line 9022 "ripper.c"
9030 #line 3278 "ripper.y"
9035 (yyval.
val)=(yyvsp[0].val);
9037 #line 9033 "ripper.c"
9041 #line 3285 "ripper.y"
9044 (yyval.
val) =
NEW_MASGN((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9046 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
9048 #line 9044 "ripper.c"
9052 #line 3292 "ripper.y"
9057 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
9059 #line 9055 "ripper.c"
9063 #line 3299 "ripper.y"
9068 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
9070 #line 9066 "ripper.c"
9074 #line 3306 "ripper.y"
9079 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
9081 #line 9077 "ripper.c"
9085 #line 3315 "ripper.y"
9088 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
9089 mark_lvar_used(p, (yyval.
val));
9091 (yyval.
val)=assignable(p, (yyvsp[0].val));
9093 #line 9089 "ripper.c"
9097 #line 3323 "ripper.y"
9104 #line 9100 "ripper.c"
9108 #line 3332 "ripper.y"
9110 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
9112 #line 9108 "ripper.c"
9116 #line 3336 "ripper.y"
9118 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yylsp[-1]));
9120 #line 9116 "ripper.c"
9124 #line 3340 "ripper.y"
9126 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
9128 #line 9124 "ripper.c"
9132 #line 3344 "ripper.y"
9136 #line 9132 "ripper.c"
9140 #line 3348 "ripper.y"
9142 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
9144 #line 9140 "ripper.c"
9148 #line 3354 "ripper.y"
9150 (yyval.
val) = (yyvsp[0].val);
9152 #line 9148 "ripper.c"
9156 #line 3358 "ripper.y"
9160 #line 9156 "ripper.c"
9164 #line 3364 "ripper.y"
9166 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9168 #line 9164 "ripper.c"
9172 #line 3368 "ripper.y"
9174 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9176 #line 9172 "ripper.c"
9180 #line 3372 "ripper.y"
9182 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9184 #line 9180 "ripper.c"
9188 #line 3376 "ripper.y"
9190 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9192 #line 9188 "ripper.c"
9196 #line 3380 "ripper.y"
9198 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9200 #line 9196 "ripper.c"
9204 #line 3384 "ripper.y"
9208 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
9210 {
VALUE v1;v1=dispatch0(excessed_comma);(yyval.
val)=new_args(p, (yyvsp[-1].val),
Qnone, v1,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone,
NULL),
NULL);}
9212 #line 9208 "ripper.c"
9216 #line 3392 "ripper.y"
9218 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9220 #line 9216 "ripper.c"
9224 #line 3396 "ripper.y"
9226 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9228 #line 9224 "ripper.c"
9232 #line 3400 "ripper.y"
9234 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9236 #line 9232 "ripper.c"
9240 #line 3404 "ripper.y"
9242 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9244 #line 9240 "ripper.c"
9248 #line 3408 "ripper.y"
9250 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9252 #line 9248 "ripper.c"
9256 #line 3412 "ripper.y"
9258 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9260 #line 9256 "ripper.c"
9264 #line 3416 "ripper.y"
9266 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9268 #line 9264 "ripper.c"
9272 #line 3420 "ripper.y"
9274 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9276 #line 9272 "ripper.c"
9280 #line 3424 "ripper.y"
9284 #line 9280 "ripper.c"
9288 #line 3431 "ripper.y"
9292 #line 9288 "ripper.c"
9296 #line 3437 "ripper.y"
9303 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11;v1=
Qnil;v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=escape_Qundef((yyvsp[-1].val));v11=dispatch2(block_var,v9,v10);(yyval.
val)=v11;}
9305 #line 9301 "ripper.c"
9309 #line 3446 "ripper.y"
9314 (yyval.
val) = (yyvsp[-2].val);
9316 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(block_var,v1,v2);(yyval.
val)=v3;}
9318 #line 9314 "ripper.c"
9322 #line 3458 "ripper.y"
9326 #line 9322 "ripper.c"
9330 #line 3462 "ripper.y"
9335 (yyval.
val)=(yyvsp[-1].val);
9337 #line 9333 "ripper.c"
9341 #line 3471 "ripper.y"
9343 #line 9339 "ripper.c"
9347 #line 3473 "ripper.y"
9349 #line 9345 "ripper.c"
9353 #line 3477 "ripper.y"
9355 new_bv(p,
get_id((yyvsp[0].val)));
9358 #line 9354 "ripper.c"
9362 #line 3482 "ripper.y"
9366 #line 9362 "ripper.c"
9370 #line 3487 "ripper.y"
9372 (yyval.
vars) = dyna_push(p);
9374 #line 9370 "ripper.c"
9378 #line 3490 "ripper.y"
9383 #line 9379 "ripper.c"
9387 #line 3494 "ripper.y"
9392 #line 9388 "ripper.c"
9396 #line 3498 "ripper.y"
9398 (yyval.
node) = numparam_push(p);
9400 #line 9396 "ripper.c"
9404 #line 3502 "ripper.y"
9408 #line 9404 "ripper.c"
9412 #line 3506 "ripper.y"
9418 (yyvsp[-2].val) = args_with_numbered(p, (yyvsp[-2].val), max_numparam);
9421 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9422 (yyval.
val) =
NEW_LAMBDA((yyvsp[-2].val), (yyvsp[0].val), &loc);
9427 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(lambda,v1,v2);(yyval.
val)=v3;}
9428 numparam_pop(p, (yyvsp[-3].node));
9429 dyna_pop(p, (yyvsp[-6].
vars));
9431 #line 9427 "ripper.c"
9435 #line 3527 "ripper.y"
9438 (yyval.
val) = (yyvsp[-2].val);
9441 {
VALUE v1,v2;v1=(yyvsp[-2].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9443 #line 9439 "ripper.c"
9447 #line 3535 "ripper.y"
9450 if (!args_info_empty_p((yyvsp[0].val)->
nd_ainfo))
9453 (yyval.
val) = (yyvsp[0].val);
9455 #line 9451 "ripper.c"
9459 #line 3545 "ripper.y"
9461 token_info_pop(p,
"}", &(yylsp[0]));
9462 (yyval.
val) = (yyvsp[-1].val);
9464 #line 9460 "ripper.c"
9468 #line 3550 "ripper.y"
9470 (yyval.
val) = (yyvsp[-1].val);
9472 #line 9468 "ripper.c"
9476 #line 3556 "ripper.y"
9478 (yyval.
val) = (yyvsp[-1].val);
9480 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9484 #line 9480 "ripper.c"
9488 #line 3566 "ripper.y"
9495 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
9497 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9498 fixpos((yyval.
val), (yyvsp[-1].val));
9500 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
9502 #line 9498 "ripper.c"
9506 #line 3580 "ripper.y"
9509 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9511 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9513 #line 9509 "ripper.c"
9517 #line 3587 "ripper.y"
9520 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
9522 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=v7==
Qundef ? v6 : dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
9524 #line 9520 "ripper.c"
9528 #line 3594 "ripper.y"
9531 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
9533 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
9535 #line 9531 "ripper.c"
9539 #line 3603 "ripper.y"
9542 (yyval.
val) = (yyvsp[-1].val);
9546 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(fcall,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(method_add_arg,v3,v4);(yyval.
val)=v5;}
9548 #line 9544 "ripper.c"
9552 #line 3612 "ripper.y"
9555 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9558 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9560 #line 9556 "ripper.c"
9564 #line 3620 "ripper.y"
9567 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9570 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9572 #line 9568 "ripper.c"
9576 #line 3628 "ripper.y"
9579 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-2].val), (yyvsp[0].val),
Qnull, &(yylsp[0]), &(yyloc));
9583 #line 9579 "ripper.c"
9587 #line 3635 "ripper.y"
9590 (yyval.
val) = new_qcall(p, (yyvsp[-1].val), (yyvsp[-2].val),
ID2VAL(
idCall), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9593 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=
ID2VAL(
idCall);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9595 #line 9591 "ripper.c"
9599 #line 3643 "ripper.y"
9605 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].val);v2=
ID2VAL(
idCOLON2);v3=
ID2VAL(
idCall);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9607 #line 9603 "ripper.c"
9611 #line 3651 "ripper.y"
9616 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
9618 #line 9614 "ripper.c"
9622 #line 3658 "ripper.y"
9627 {
VALUE v1;v1=dispatch0(zsuper);(yyval.
val)=v1;}
9629 #line 9625 "ripper.c"
9633 #line 3665 "ripper.y"
9640 fixpos((yyval.
val), (yyvsp[-3].val));
9642 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref,v1,v2);(yyval.
val)=v3;}
9644 #line 9640 "ripper.c"
9648 #line 3678 "ripper.y"
9650 (yyval.
val) = (yyvsp[-1].val);
9652 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9656 #line 9652 "ripper.c"
9660 #line 3686 "ripper.y"
9662 (yyval.
val) = (yyvsp[-1].val);
9664 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9668 #line 9664 "ripper.c"
9672 #line 3695 "ripper.y"
9673 {(yyval.
vars) = dyna_push(p);}
9674 #line 9670 "ripper.c"
9678 #line 3696 "ripper.y"
9683 #line 9679 "ripper.c"
9687 #line 3700 "ripper.y"
9689 (yyval.
node) = numparam_push(p);
9691 #line 9687 "ripper.c"
9695 #line 3704 "ripper.y"
9699 (yyvsp[-1].val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
9701 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9703 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].val);v3=dispatch2(brace_block,v1,v2);(yyval.
val)=v3;}
9704 numparam_pop(p, (yyvsp[-2].node));
9705 dyna_pop(p, (yyvsp[-4].
vars));
9707 #line 9703 "ripper.c"
9711 #line 3717 "ripper.y"
9712 {(yyval.
vars) = dyna_push(p);}
9713 #line 9709 "ripper.c"
9717 #line 3718 "ripper.y"
9722 #line 9718 "ripper.c"
9726 #line 3722 "ripper.y"
9728 (yyval.
node) = numparam_push(p);
9731 #line 9727 "ripper.c"
9735 #line 3727 "ripper.y"
9739 (yyvsp[-1].val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
9741 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9743 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].val);v3=dispatch2(do_block,v1,v2);(yyval.
val)=v3;}
9745 numparam_pop(p, (yyvsp[-2].node));
9746 dyna_pop(p, (yyvsp[-4].
vars));
9748 #line 9744 "ripper.c"
9752 #line 3742 "ripper.y"
9755 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
9758 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
9760 #line 9756 "ripper.c"
9764 #line 3750 "ripper.y"
9769 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
9771 #line 9767 "ripper.c"
9775 #line 3757 "ripper.y"
9778 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
9779 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9781 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
9783 #line 9779 "ripper.c"
9787 #line 3765 "ripper.y"
9790 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
9792 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
9794 #line 9790 "ripper.c"
9798 #line 3776 "ripper.y"
9801 (yyval.
val) =
NEW_WHEN((yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9802 fixpos((yyval.
val), (yyvsp[-3].val));
9804 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(when,v1,v2,v3);(yyval.
val)=v4;}
9806 #line 9802 "ripper.c"
9810 #line 3790 "ripper.y"
9817 #line 9813 "ripper.c"
9821 #line 3796 "ripper.y"
9822 {(yyval.
tbl) = push_pvtbl(p);}
9823 #line 9819 "ripper.c"
9827 #line 3797 "ripper.y"
9828 {(yyval.
tbl) = push_pktbl(p);}
9829 #line 9825 "ripper.c"
9833 #line 3799 "ripper.y"
9834 {pop_pktbl(p, (yyvsp[-2].tbl));}
9835 #line 9831 "ripper.c"
9839 #line 3800 "ripper.y"
9840 {pop_pvtbl(p, (yyvsp[-4].tbl));}
9841 #line 9837 "ripper.c"
9845 #line 3801 "ripper.y"
9849 #line 9845 "ripper.c"
9853 #line 3806 "ripper.y"
9856 (yyval.
val) =
NEW_IN((yyvsp[-6].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9858 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-6].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(in,v1,v2,v3);(yyval.
val)=v4;}
9860 #line 9856 "ripper.c"
9864 #line 3820 "ripper.y"
9867 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
9868 fixpos((yyval.
val), (yyvsp[0].val));
9870 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
9872 #line 9868 "ripper.c"
9876 #line 3828 "ripper.y"
9879 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
9880 fixpos((yyval.
val), (yyvsp[0].val));
9882 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
9884 #line 9880 "ripper.c"
9888 #line 3839 "ripper.y"
9890 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
9893 #line 9889 "ripper.c"
9897 #line 3844 "ripper.y"
9899 (yyval.
val) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].val)), (yyvsp[0].val), &(yyloc));
9905 #line 9901 "ripper.c"
9909 #line 3852 "ripper.y"
9911 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9913 #line 9909 "ripper.c"
9917 #line 3856 "ripper.y"
9919 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[0].val), &(yyloc));
9921 #line 9917 "ripper.c"
9925 #line 3865 "ripper.y"
9929 n = list_append(p,
n, (yyvsp[0].val));
9930 (yyval.
val) = new_hash(p,
n, &(yyloc));
9932 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=
STATIC_ID2SYM(id_assoc);v3=(yyvsp[0].val);v4=dispatch3(binary,v1,v2,v3);(yyval.
val)=v4;}
9934 #line 9930 "ripper.c"
9938 #line 3877 "ripper.y"
9943 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=
STATIC_ID2SYM(
idOr);v3=(yyvsp[0].val);v4=dispatch3(binary,v1,v2,v3);(yyval.
val)=v4;}
9945 #line 9941 "ripper.c"
9949 #line 3886 "ripper.y"
9950 {(yyval.
tbl) = push_pktbl(p);}
9951 #line 9947 "ripper.c"
9955 #line 3887 "ripper.y"
9956 {(yyval.
tbl) = push_pktbl(p);}
9957 #line 9953 "ripper.c"
9961 #line 3891 "ripper.y"
9963 pop_pktbl(p, (yyvsp[-2].tbl));
9964 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), &(yyloc));
9970 #line 9966 "ripper.c"
9974 #line 3900 "ripper.y"
9976 pop_pktbl(p, (yyvsp[-2].tbl));
9977 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
9983 #line 9979 "ripper.c"
9987 #line 3909 "ripper.y"
9989 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9990 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
9992 #line 9988 "ripper.c"
9996 #line 3914 "ripper.y"
9998 pop_pktbl(p, (yyvsp[-2].tbl));
9999 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), &(yyloc));
10005 #line 10001 "ripper.c"
10009 #line 3923 "ripper.y"
10011 pop_pktbl(p, (yyvsp[-2].tbl));
10012 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
10018 #line 10014 "ripper.c"
10022 #line 3932 "ripper.y"
10024 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10025 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
10027 #line 10023 "ripper.c"
10031 #line 3936 "ripper.y"
10032 {(yyval.
tbl) = push_pktbl(p);}
10033 #line 10029 "ripper.c"
10037 #line 3937 "ripper.y"
10039 pop_pktbl(p, (yyvsp[-2].tbl));
10040 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].val), &(yyloc));
10042 #line 10038 "ripper.c"
10046 #line 3942 "ripper.y"
10048 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10051 #line 10047 "ripper.c"
10055 #line 3946 "ripper.y"
10056 {(yyval.
tbl) = push_pktbl(p);}
10057 #line 10053 "ripper.c"
10061 #line 3947 "ripper.y"
10063 pop_pktbl(p, (yyvsp[-2].tbl));
10064 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[-1].val), &(yyloc));
10066 #line 10062 "ripper.c"
10070 #line 3952 "ripper.y"
10072 (yyval.
val) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10073 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyval.
val), &(yyloc));
10075 #line 10071 "ripper.c"
10079 #line 3956 "ripper.y"
10080 {(yyval.
tbl) = push_pktbl(p);}
10081 #line 10077 "ripper.c"
10085 #line 3957 "ripper.y"
10087 pop_pktbl(p, (yyvsp[-2].tbl));
10088 (yyval.
val) = (yyvsp[-1].val);
10090 #line 10086 "ripper.c"
10094 #line 3964 "ripper.y"
10098 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10103 #line 10099 "ripper.c"
10107 #line 3973 "ripper.y"
10109 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[0].val), 1, 0,
Qnone, &(yyloc));
10111 #line 10107 "ripper.c"
10115 #line 3977 "ripper.y"
10118 (yyval.
val) = new_array_pattern_tail(p, list_concat((yyvsp[-1].val), (yyvsp[0].val)), 0, 0,
Qnone, &(yyloc));
10121 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10124 #line 10120 "ripper.c"
10128 #line 3986 "ripper.y"
10130 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-2].val), 1, (yyvsp[0].val),
Qnone, &(yyloc));
10132 #line 10128 "ripper.c"
10136 #line 3990 "ripper.y"
10138 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-4].val), 1, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10140 #line 10136 "ripper.c"
10144 #line 3994 "ripper.y"
10146 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-1].val), 1, 0,
Qnone, &(yyloc));
10148 #line 10144 "ripper.c"
10152 #line 3998 "ripper.y"
10154 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-3].val), 1, 0, (yyvsp[0].val), &(yyloc));
10156 #line 10152 "ripper.c"
10160 #line 4005 "ripper.y"
10162 (yyval.
val) = (yyvsp[-1].val);
10164 #line 10160 "ripper.c"
10168 #line 4009 "ripper.y"
10171 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[-1].val));
10175 #line 10171 "ripper.c"
10179 #line 4018 "ripper.y"
10181 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].val),
Qnone, &(yyloc));
10183 #line 10179 "ripper.c"
10187 #line 4022 "ripper.y"
10189 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10191 #line 10187 "ripper.c"
10195 #line 4026 "ripper.y"
10197 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10199 #line 10195 "ripper.c"
10203 #line 4030 "ripper.y"
10205 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].val), &(yyloc));
10207 #line 10203 "ripper.c"
10211 #line 4037 "ripper.y"
10214 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].val));
10218 #line 10214 "ripper.c"
10222 #line 4046 "ripper.y"
10225 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10229 #line 10225 "ripper.c"
10233 #line 4055 "ripper.y"
10235 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)), (yyvsp[0].val), &(yyloc));
10237 #line 10233 "ripper.c"
10241 #line 4059 "ripper.y"
10243 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].val), &(yyloc)), 0, &(yyloc));
10245 #line 10241 "ripper.c"
10249 #line 4063 "ripper.y"
10251 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].val), &(yyloc));
10253 #line 10249 "ripper.c"
10257 #line 4067 "ripper.y"
10259 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10261 #line 10257 "ripper.c"
10265 #line 4071 "ripper.y"
10267 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10269 #line 10265 "ripper.c"
10273 #line 4077 "ripper.y"
10275 #line 10271 "ripper.c"
10279 #line 4079 "ripper.y"
10282 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].val));
10286 #line 10282 "ripper.c"
10290 #line 4088 "ripper.y"
10292 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].val)), &(yylsp[-1]));
10298 #line 10294 "ripper.c"
10302 #line 4096 "ripper.y"
10304 error_duplicate_pattern_key(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
10306 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
10308 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
10310 (yyval.
val) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].val), 0, &(yyloc)));
10314 #line 10310 "ripper.c"
10318 #line 4111 "ripper.y"
10320 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10323 NODE *node = dsym_node(p, (yyvsp[-1].val), &loc);
10327 if (ripper_is_node_yylval((yyvsp[-1].val)) &&
RNODE((yyvsp[-1].val))->nd_cval) {
10328 VALUE label =
RNODE((yyvsp[-1].val))->nd_cval;
10329 VALUE rval =
RNODE((yyvsp[-1].val))->nd_rval;
10335 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
10339 #line 10335 "ripper.c"
10343 #line 4134 "ripper.y"
10345 (yyval.
val) = (yyvsp[0].val);
10347 #line 10343 "ripper.c"
10351 #line 4138 "ripper.y"
10355 #line 10351 "ripper.c"
10359 #line 4144 "ripper.y"
10363 #line 10359 "ripper.c"
10367 #line 4151 "ripper.y"
10372 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10374 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10376 #line 10372 "ripper.c"
10380 #line 4160 "ripper.y"
10385 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10387 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10389 #line 10385 "ripper.c"
10393 #line 4169 "ripper.y"
10397 loc.beg_pos = (yylsp[0]).end_pos;
10398 loc.end_pos = (yylsp[0]).end_pos;
10403 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10405 #line 10401 "ripper.c"
10409 #line 4181 "ripper.y"
10413 loc.beg_pos = (yylsp[0]).end_pos;
10414 loc.end_pos = (yylsp[0]).end_pos;
10419 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10421 #line 10417 "ripper.c"
10425 #line 4196 "ripper.y"
10429 loc.beg_pos = (yylsp[-1]).beg_pos;
10430 loc.end_pos = (yylsp[-1]).beg_pos;
10435 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10437 #line 10433 "ripper.c"
10441 #line 4208 "ripper.y"
10445 loc.beg_pos = (yylsp[-1]).beg_pos;
10446 loc.end_pos = (yylsp[-1]).beg_pos;
10451 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10453 #line 10449 "ripper.c"
10457 #line 4230 "ripper.y"
10460 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
10462 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10464 #line 10460 "ripper.c"
10468 #line 4237 "ripper.y"
10470 token_info_push(p,
"->", &(yylsp[0]));
10472 #line 10468 "ripper.c"
10476 #line 4241 "ripper.y"
10478 (yyval.
val) = (yyvsp[0].val);
10483 #line 10479 "ripper.c"
10487 #line 4250 "ripper.y"
10490 error_duplicate_pattern_variable(p, (yyvsp[0].val), &(yylsp[0]));
10491 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10493 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
10495 #line 10491 "ripper.c"
10499 #line 4260 "ripper.y"
10502 NODE *
n = gettable(p, (yyvsp[0].val), &(yyloc));
10508 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10510 #line 10506 "ripper.c"
10514 #line 4273 "ripper.y"
10519 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
10521 #line 10517 "ripper.c"
10525 #line 4280 "ripper.y"
10528 (yyval.
val) =
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10530 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
10532 #line 10528 "ripper.c"
10536 #line 4287 "ripper.y"
10539 (yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc));
10541 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10543 #line 10539 "ripper.c"
10547 #line 4298 "ripper.y"
10551 (yyvsp[-3].val) ? block_append(p, node_assign(p, (yyvsp[-3].val),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].val)) : (yyvsp[-1].val),
10552 (yyvsp[0].val), &(yyloc));
10553 fixpos((yyval.
val), (yyvsp[-4].val)?(yyvsp[-4].val):(yyvsp[-1].val));
10555 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-4].val));v2=escape_Qundef((yyvsp[-3].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(rescue,v1,v2,v3,v4);(yyval.
val)=v5;}
10557 #line 10553 "ripper.c"
10561 #line 4311 "ripper.y"
10564 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10568 #line 10564 "ripper.c"
10572 #line 4318 "ripper.y"
10575 if (!((yyval.
val) = splat_array((yyvsp[0].val)))) (yyval.
val) = (yyvsp[0].val);
10577 (yyval.
val)=(yyvsp[0].val);
10579 #line 10575 "ripper.c"
10583 #line 4328 "ripper.y"
10585 (yyval.
val) = (yyvsp[0].val);
10587 #line 10583 "ripper.c"
10591 #line 4335 "ripper.y"
10594 (yyval.
val) = (yyvsp[0].val);
10596 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(ensure,v1);(yyval.
val)=v2;}
10598 #line 10594 "ripper.c"
10602 #line 4349 "ripper.y"
10605 NODE *node = (yyvsp[0].val);
10611 node = evstr2dstr(p, node);
10613 (yyval.
val) = node;
10615 (yyval.
val)=(yyvsp[0].val);
10617 #line 10613 "ripper.c"
10621 #line 4368 "ripper.y"
10624 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10626 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(string_concat,v1,v2);(yyval.
val)=v3;}
10628 #line 10624 "ripper.c"
10632 #line 4377 "ripper.y"
10635 (yyval.
val) = heredoc_dedent(p, (yyvsp[-1].val));
10636 if ((yyval.
val)) nd_set_loc((yyval.
val), &(yyloc));
10638 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(string_literal,v1);(yyval.
val)=v2;}
10640 #line 10636 "ripper.c"
10644 #line 4387 "ripper.y"
10647 (yyval.
val) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].val)), &(yyloc));
10649 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(xstring_literal,v1);(yyval.
val)=v2;}
10651 #line 10647 "ripper.c"
10655 #line 4396 "ripper.y"
10657 (yyval.
val) = new_regexp(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10659 #line 10655 "ripper.c"
10663 #line 4402 "ripper.y"
10668 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10670 #line 10666 "ripper.c"
10674 #line 4411 "ripper.y"
10679 {
VALUE v1;v1=dispatch0(words_new);(yyval.
val)=v1;}
10681 #line 10677 "ripper.c"
10685 #line 4418 "ripper.y"
10688 (yyval.
val) = list_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
10690 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(words_add,v1,v2);(yyval.
val)=v3;}
10692 #line 10688 "ripper.c"
10696 #line 4427 "ripper.y"
10697 {{
VALUE v1,v2,v3,v4;v1=dispatch0(word_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(word_add,v2,v3);(yyval.
val)=v4;}}
10698 #line 10694 "ripper.c"
10702 #line 4429 "ripper.y"
10705 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10707 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(word_add,v1,v2);(yyval.
val)=v3;}
10709 #line 10705 "ripper.c"
10713 #line 4438 "ripper.y"
10718 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10720 #line 10716 "ripper.c"
10724 #line 4447 "ripper.y"
10729 {
VALUE v1;v1=dispatch0(symbols_new);(yyval.
val)=v1;}
10731 #line 10727 "ripper.c"
10735 #line 4454 "ripper.y"
10738 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
10740 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(symbols_add,v1,v2);(yyval.
val)=v3;}
10742 #line 10738 "ripper.c"
10746 #line 4463 "ripper.y"
10751 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10753 #line 10749 "ripper.c"
10757 #line 4472 "ripper.y"
10762 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10764 #line 10760 "ripper.c"
10768 #line 4481 "ripper.y"
10773 {
VALUE v1;v1=dispatch0(qwords_new);(yyval.
val)=v1;}
10775 #line 10771 "ripper.c"
10779 #line 4488 "ripper.y"
10782 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
10784 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(qwords_add,v1,v2);(yyval.
val)=v3;}
10786 #line 10782 "ripper.c"
10790 #line 4497 "ripper.y"
10795 {
VALUE v1;v1=dispatch0(qsymbols_new);(yyval.
val)=v1;}
10797 #line 10793 "ripper.c"
10801 #line 4504 "ripper.y"
10804 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
10806 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(qsymbols_add,v1,v2);(yyval.
val)=v3;}
10808 #line 10804 "ripper.c"
10812 #line 4513 "ripper.y"
10817 {
VALUE v1;v1=dispatch0(string_content);(yyval.
val)=v1;}
10820 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
10823 #line 10819 "ripper.c"
10827 #line 4524 "ripper.y"
10830 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10832 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(string_add,v1,v2);(yyval.
val)=v3;}
10835 if (ripper_is_node_yylval((yyvsp[-1].val)) && ripper_is_node_yylval((yyvsp[0].val)) &&
10836 !
RNODE((yyvsp[-1].val))->nd_cval) {
10837 RNODE((yyvsp[-1].val))->nd_cval =
RNODE((yyvsp[0].val))->nd_cval;
10838 RNODE((yyvsp[-1].val))->nd_rval = add_mark_object(p, (yyval.
val));
10839 (yyval.
val) = (yyvsp[-1].val);
10843 #line 10839 "ripper.c"
10847 #line 4542 "ripper.y"
10852 {
VALUE v1;v1=dispatch0(xstring_new);(yyval.
val)=v1;}
10854 #line 10850 "ripper.c"
10858 #line 4549 "ripper.y"
10861 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10863 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(xstring_add,v1,v2);(yyval.
val)=v3;}
10865 #line 10861 "ripper.c"
10869 #line 4558 "ripper.y"
10874 {
VALUE v1;v1=dispatch0(regexp_new);(yyval.
val)=v1;}
10877 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
10880 #line 10876 "ripper.c"
10884 #line 4569 "ripper.y"
10887 NODE *head = (yyvsp[-1].val), *tail = (yyvsp[0].val);
10889 (yyval.
val) = tail;
10892 (yyval.
val) = head;
10902 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
10905 (yyval.
val) = list_append(p, head, tail);
10908 VALUE s1 = 1,
s2 = 0, n1 = (yyvsp[-1].val), n2 = (yyvsp[0].val);
10909 if (ripper_is_node_yylval(n1)) {
10910 s1 =
RNODE(n1)->nd_cval;
10911 n1 =
RNODE(n1)->nd_rval;
10913 if (ripper_is_node_yylval(n2)) {
10915 n2 =
RNODE(n2)->nd_rval;
10917 (yyval.
val) = dispatch2(regexp_add, n1, n2);
10919 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val),
s2);
10923 #line 10919 "ripper.c"
10927 #line 4610 "ripper.y"
10928 {(yyval.
val)=ripper_new_yylval(p, 0,
get_value((yyvsp[0].val)), (yyvsp[0].val));}
10929 #line 10925 "ripper.c"
10933 #line 4612 "ripper.y"
10940 #line 10936 "ripper.c"
10944 #line 4619 "ripper.y"
10951 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(string_dvar,v1);(yyval.
val)=v2;}
10953 #line 10949 "ripper.c"
10957 #line 4628 "ripper.y"
10962 #line 10958 "ripper.c"
10966 #line 4632 "ripper.y"
10972 #line 10968 "ripper.c"
10976 #line 4637 "ripper.y"
10981 #line 10977 "ripper.c"
10985 #line 4641 "ripper.y"
10990 #line 10986 "ripper.c"
10994 #line 4645 "ripper.y"
10999 #line 10995 "ripper.c"
11003 #line 4650 "ripper.y"
11014 (yyval.
val) = new_evstr(p, (yyvsp[-1].val), &(yyloc));
11016 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(string_embexpr,v1);(yyval.
val)=v2;}
11018 #line 11014 "ripper.c"
11022 #line 4667 "ripper.y"
11025 (yyval.
val) =
NEW_GVAR((yyvsp[0].val), &(yyloc));
11027 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11029 #line 11025 "ripper.c"
11033 #line 4674 "ripper.y"
11036 (yyval.
val) =
NEW_IVAR((yyvsp[0].val), &(yyloc));
11038 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11040 #line 11036 "ripper.c"
11044 #line 4681 "ripper.y"
11047 (yyval.
val) =
NEW_CVAR((yyvsp[0].val), &(yyloc));
11049 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11051 #line 11047 "ripper.c"
11055 #line 4695 "ripper.y"
11061 {
VALUE v1,v2,v3,v4;v1=(yyvsp[0].val);v2=dispatch1(symbol,v1);v3=v2;v4=dispatch1(symbol_literal,v3);(yyval.
val)=v4;}
11063 #line 11059 "ripper.c"
11067 #line 4711 "ripper.y"
11071 (yyval.
val) = dsym_node(p, (yyvsp[-1].val), &(yyloc));
11073 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(dyna_symbol,v1);(yyval.
val)=v2;}
11075 #line 11071 "ripper.c"
11079 #line 4722 "ripper.y"
11082 (yyval.
val) = (yyvsp[0].val);
11087 #line 11083 "ripper.c"
11091 #line 4744 "ripper.y"
11092 {(yyval.
val) =
KWD2EID(nil, (yyvsp[0].val));}
11093 #line 11089 "ripper.c"
11097 #line 4745 "ripper.y"
11098 {(yyval.
val) =
KWD2EID(
self, (yyvsp[0].val));}
11099 #line 11095 "ripper.c"
11103 #line 4746 "ripper.y"
11104 {(yyval.
val) =
KWD2EID(
true, (yyvsp[0].val));}
11105 #line 11101 "ripper.c"
11109 #line 4747 "ripper.y"
11110 {(yyval.
val) =
KWD2EID(
false, (yyvsp[0].val));}
11111 #line 11107 "ripper.c"
11115 #line 4748 "ripper.y"
11116 {(yyval.
val) =
KWD2EID(_FILE__, (yyvsp[0].val));}
11117 #line 11113 "ripper.c"
11121 #line 4749 "ripper.y"
11122 {(yyval.
val) =
KWD2EID(_LINE__, (yyvsp[0].val));}
11123 #line 11119 "ripper.c"
11127 #line 4750 "ripper.y"
11128 {(yyval.
val) =
KWD2EID(_ENCODING__, (yyvsp[0].val));}
11129 #line 11125 "ripper.c"
11133 #line 4754 "ripper.y"
11136 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11138 if (id_is_var(p,
get_id((yyvsp[0].val)))) {
11139 (yyval.
val) = dispatch1(var_ref, (yyvsp[0].val));
11142 (yyval.
val) = dispatch1(vcall, (yyvsp[0].val));
11146 #line 11142 "ripper.c"
11150 #line 4767 "ripper.y"
11153 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11155 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11157 #line 11153 "ripper.c"
11161 #line 4776 "ripper.y"
11164 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11166 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11168 #line 11164 "ripper.c"
11172 #line 4783 "ripper.y"
11175 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11177 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11179 #line 11175 "ripper.c"
11183 #line 4796 "ripper.y"
11188 #line 11184 "ripper.c"
11192 #line 4801 "ripper.y"
11194 (yyval.
val) = (yyvsp[-1].val);
11196 #line 11192 "ripper.c"
11200 #line 4805 "ripper.y"
11207 #line 11203 "ripper.c"
11211 #line 4814 "ripper.y"
11214 (yyval.
val) = (yyvsp[-1].val);
11216 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
11220 #line 11216 "ripper.c"
11224 #line 4823 "ripper.y"
11239 #line 11235 "ripper.c"
11243 #line 4837 "ripper.y"
11249 #line 11245 "ripper.c"
11253 #line 4843 "ripper.y"
11256 (yyval.
val) = (yyvsp[-1].val);
11260 #line 11256 "ripper.c"
11264 #line 4852 "ripper.y"
11266 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
11268 #line 11264 "ripper.c"
11272 #line 4856 "ripper.y"
11274 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yylsp[-1]));
11276 #line 11272 "ripper.c"
11280 #line 4860 "ripper.y"
11282 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
11284 #line 11280 "ripper.c"
11288 #line 4864 "ripper.y"
11292 #line 11288 "ripper.c"
11296 #line 4868 "ripper.y"
11298 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
11300 #line 11296 "ripper.c"
11304 #line 4874 "ripper.y"
11306 (yyval.
val) = (yyvsp[0].val);
11308 #line 11304 "ripper.c"
11312 #line 4878 "ripper.y"
11316 #line 11312 "ripper.c"
11320 #line 4884 "ripper.y"
11322 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11324 #line 11320 "ripper.c"
11328 #line 4888 "ripper.y"
11330 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11332 #line 11328 "ripper.c"
11336 #line 4892 "ripper.y"
11338 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11340 #line 11336 "ripper.c"
11344 #line 4896 "ripper.y"
11346 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11348 #line 11344 "ripper.c"
11352 #line 4900 "ripper.y"
11354 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11356 #line 11352 "ripper.c"
11360 #line 4904 "ripper.y"
11362 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11364 #line 11360 "ripper.c"
11368 #line 4908 "ripper.y"
11370 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11372 #line 11368 "ripper.c"
11376 #line 4912 "ripper.y"
11378 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11380 #line 11376 "ripper.c"
11384 #line 4916 "ripper.y"
11386 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11388 #line 11384 "ripper.c"
11392 #line 4920 "ripper.y"
11394 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11396 #line 11392 "ripper.c"
11400 #line 4924 "ripper.y"
11402 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11404 #line 11400 "ripper.c"
11408 #line 4928 "ripper.y"
11410 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11412 #line 11408 "ripper.c"
11416 #line 4932 "ripper.y"
11418 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11420 #line 11416 "ripper.c"
11424 #line 4936 "ripper.y"
11428 #line 11424 "ripper.c"
11432 #line 4940 "ripper.y"
11437 #line 11433 "ripper.c"
11441 #line 4947 "ripper.y"
11446 {
VALUE v1;v1=dispatch0(args_forward);(yyval.
val)=v1;}
11448 #line 11444 "ripper.c"
11452 #line 4956 "ripper.y"
11455 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
11458 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11460 #line 11456 "ripper.c"
11464 #line 4964 "ripper.y"
11467 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
11470 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11472 #line 11468 "ripper.c"
11476 #line 4972 "ripper.y"
11479 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
11482 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11484 #line 11480 "ripper.c"
11488 #line 4980 "ripper.y"
11491 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
11494 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11496 #line 11492 "ripper.c"
11500 #line 4991 "ripper.y"
11502 formal_argument(p,
get_id((yyvsp[0].val)));
11504 (yyval.
val) = (yyvsp[0].val);
11506 #line 11502 "ripper.c"
11510 #line 4999 "ripper.y"
11515 (yyval.
val) = (yyvsp[0].val);
11517 #line 11513 "ripper.c"
11521 #line 5008 "ripper.y"
11529 #line 11525 "ripper.c"
11533 #line 5016 "ripper.y"
11536 ID tid = internal_id(p);
11538 loc.beg_pos = (yylsp[-1]).beg_pos;
11539 loc.end_pos = (yylsp[-1]).beg_pos;
11541 if (dyna_in_block(p)) {
11550 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
11552 #line 11548 "ripper.c"
11556 #line 5037 "ripper.y"
11558 #line 11554 "ripper.c"
11562 #line 5039 "ripper.y"
11565 (yyval.
val) = (yyvsp[-2].val);
11568 rb_discard_node(p, (yyvsp[0].val));
11572 #line 11568 "ripper.c"
11576 #line 5052 "ripper.y"
11579 arg_var(p, formal_argument(p,
id));
11582 (yyval.
val) = (yyvsp[0].val);
11584 #line 11580 "ripper.c"
11588 #line 5062 "ripper.y"
11592 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11596 #line 11592 "ripper.c"
11600 #line 5070 "ripper.y"
11608 #line 11604 "ripper.c"
11612 #line 5080 "ripper.y"
11615 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11619 #line 11615 "ripper.c"
11623 #line 5087 "ripper.y"
11630 #line 11626 "ripper.c"
11634 #line 5096 "ripper.y"
11637 (yyval.
val) = (yyvsp[0].val);
11641 #line 11637 "ripper.c"
11645 #line 5103 "ripper.y"
11648 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].val));
11652 #line 11648 "ripper.c"
11656 #line 5113 "ripper.y"
11659 (yyval.
val) = (yyvsp[0].val);
11663 #line 11659 "ripper.c"
11667 #line 5120 "ripper.y"
11670 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].val));
11674 #line 11670 "ripper.c"
11678 #line 5133 "ripper.y"
11682 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(nokw_param,v1);(yyval.
val)=v2;}
11684 #line 11680 "ripper.c"
11688 #line 5141 "ripper.y"
11690 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11692 (yyval.
val) = (yyvsp[0].val);
11694 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
11696 #line 11692 "ripper.c"
11700 #line 5149 "ripper.y"
11703 (yyval.
val) = internal_id(p);
11704 arg_var(p, (yyval.
val));
11706 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
11708 #line 11704 "ripper.c"
11712 #line 5159 "ripper.y"
11716 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11720 #line 11716 "ripper.c"
11724 #line 5169 "ripper.y"
11728 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11732 #line 11728 "ripper.c"
11736 #line 5179 "ripper.y"
11739 (yyval.
val) = (yyvsp[0].val);
11743 #line 11739 "ripper.c"
11747 #line 5186 "ripper.y"
11750 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].val));
11754 #line 11750 "ripper.c"
11758 #line 5195 "ripper.y"
11761 (yyval.
val) = (yyvsp[0].val);
11765 #line 11761 "ripper.c"
11769 #line 5202 "ripper.y"
11772 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].val));
11776 #line 11772 "ripper.c"
11780 #line 5215 "ripper.y"
11782 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11784 (yyval.
val) = (yyvsp[0].val);
11786 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
11788 #line 11784 "ripper.c"
11792 #line 5223 "ripper.y"
11795 (yyval.
val) = internal_id(p);
11796 arg_var(p, (yyval.
val));
11798 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
11800 #line 11796 "ripper.c"
11804 #line 5237 "ripper.y"
11806 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11808 (yyval.
val) = (yyvsp[0].val);
11810 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(blockarg,v1);(yyval.
val)=v2;}
11812 #line 11808 "ripper.c"
11816 #line 5247 "ripper.y"
11818 (yyval.
val) = (yyvsp[0].val);
11820 #line 11816 "ripper.c"
11824 #line 5251 "ripper.y"
11828 #line 11824 "ripper.c"
11832 #line 5257 "ripper.y"
11835 (yyval.
val) = (yyvsp[0].val);
11837 #line 11833 "ripper.c"
11841 #line 5261 "ripper.y"
11843 #line 11839 "ripper.c"
11847 #line 5262 "ripper.y"
11850 switch (
nd_type((yyvsp[-1].val))) {
11859 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
11865 (yyval.
val) = (yyvsp[-1].val);
11867 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
11869 #line 11865 "ripper.c"
11873 #line 5287 "ripper.y"
11876 (yyval.
val) = (yyvsp[-1].val);
11878 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(assoclist_from_args,v1);(yyval.
val)=v2;}
11880 #line 11876 "ripper.c"
11884 #line 5296 "ripper.y"
11886 #line 11882 "ripper.c"
11890 #line 5298 "ripper.y"
11893 NODE *assocs = (yyvsp[-2].val);
11894 NODE *tail = (yyvsp[0].val);
11899 if (assocs->nd_head &&
11903 tail = tail->nd_next->nd_head->nd_head;
11905 assocs = list_concat(assocs, tail);
11907 (yyval.
val) = assocs;
11911 #line 11907 "ripper.c"
11915 #line 5321 "ripper.y"
11922 (yyval.
val) = list_append(p,
NEW_LIST((yyvsp[-2].val), &(yyloc)), (yyvsp[0].val));
11924 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
11926 #line 11922 "ripper.c"
11930 #line 5332 "ripper.y"
11935 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
11937 #line 11933 "ripper.c"
11941 #line 5339 "ripper.y"
11944 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
11945 (yyval.
val) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].val), &loc), &loc), (yyvsp[0].val));
11947 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].val);v2=dispatch1(dyna_symbol,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(assoc_new,v3,v4);(yyval.
val)=v5;}
11949 #line 11945 "ripper.c"
11953 #line 5347 "ripper.y"
11957 !((yyvsp[0].val)->
nd_head && (yyvsp[0].val)->nd_head->nd_alen)) {
11958 static VALUE empty_hash;
11966 (yyval.
val) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].val));
11968 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(assoc_splat,v1);(yyval.
val)=v2;}
11970 #line 11966 "ripper.c"
11974 #line 5412 "ripper.y"
11976 #line 11972 "ripper.c"
11980 #line 5413 "ripper.y"
11982 #line 11978 "ripper.c"
11986 #line 5417 "ripper.y"
11988 #line 11984 "ripper.c"
11992 #line 5421 "ripper.y"
11996 #line 11992 "ripper.c"
12000 #line 11996 "ripper.c"
12029 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
12030 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
12031 yystate = yytable[yystate];
12050 #if ! YYERROR_VERBOSE
12053 # define YYSYNTAX_ERROR yysyntax_error (p, &yymsg_alloc, &yymsg, \
12056 char const *yymsgp =
YY_(
"syntax error");
12057 int yysyntax_error_status;
12059 if (yysyntax_error_status == 0)
12061 else if (yysyntax_error_status == 1)
12063 if (yymsg != yymsgbuf)
12069 yymsg_alloc =
sizeof yymsgbuf;
12070 yysyntax_error_status = 2;
12078 yyerror (&yylloc, p, yymsgp);
12079 if (yysyntax_error_status == 2)
12080 goto yyexhaustedlab;
12082 # undef YYSYNTAX_ERROR
12086 yyerror_range[1] = yylloc;
12088 if (yyerrstatus == 3)
12093 if (yychar <=
YYEOF)
12096 if (yychar ==
YYEOF)
12101 yydestruct (
"Error: discarding",
12102 yytoken, &
yylval, &yylloc, p);
12123 yyerror_range[1] = yylsp[1-yylen];
12141 yyn = yypact[yystate];
12147 yyn = yytable[yyn];
12157 yyerror_range[1] = *yylsp;
12158 yydestruct (
"Error: popping",
12159 yystos[yystate], yyvsp, yylsp, p);
12169 yyerror_range[2] = yylloc;
12196 #if !defined yyoverflow || YYERROR_VERBOSE
12201 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
12212 yydestruct (
"Cleanup: discarding lookahead",
12213 yytoken, &
yylval, &yylloc, p);
12219 while (yyssp != yyss)
12221 yydestruct (
"Cleanup: popping",
12222 yystos[*yyssp], yyvsp, yylsp, p);
12229 #if YYERROR_VERBOSE
12230 if (yymsg != yymsgbuf)
12235 #line 5425 "ripper.y"
12240 # define yylval (*p->lval)
12249 # define set_yylval_node(x) { \
12250 YYLTYPE _cur_loc; \
12251 rb_parser_set_location(p, &_cur_loc); \
12252 yylval.node = (x); \
12254 # define set_yylval_str(x) \
12256 set_yylval_node(NEW_STR(x, &_cur_loc)); \
12257 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12259 # define set_yylval_literal(x) \
12261 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
12262 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12264 # define set_yylval_num(x) (yylval.num = (x))
12265 # define set_yylval_id(x) (yylval.id = (x))
12266 # define set_yylval_name(x) (yylval.id = (x))
12267 # define yylval_id() (yylval.id)
12269 static inline VALUE
12272 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
12274 # define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
12275 # define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
12276 # define set_yylval_id(x) (void)(x)
12277 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
12278 # define set_yylval_literal(x) add_mark_object(p, (x))
12279 # define set_yylval_node(x) (void)(x)
12280 # define yylval_id() yylval.id
12281 # define _cur_loc NULL_LOC
12284 #define set_yylval_noname() set_yylval_id(keyword_nil)
12287 #define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
12288 #define dispatch_scan_event(p, t) ((void)0)
12289 #define dispatch_delayed_token(p, t) ((void)0)
12290 #define has_delayed_token(p) (0)
12292 #define literal_flush(p, ptr) ((void)(ptr))
12294 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
12296 static inline VALUE
12297 intern_sym(
const char *
name)
12314 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
12322 if (!ripper_has_scan_event(p))
return;
12323 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
12325 #define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
12331 const char *saved_tokp = p->
lex.
ptok;
12333 if (
NIL_P(p->delayed.token))
return;
12336 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
12337 p->delayed.token =
Qnil;
12341 #define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
12342 #define has_delayed_token(p) (!NIL_P(p->delayed.token))
12369 int column = 1, nonspc = 0,
i;
12371 if (*
ptr ==
'\t') {
12375 if (*
ptr !=
' ' && *
ptr !=
'\t') {
12381 ptinfo->
indent = column;
12382 ptinfo->
nonspc = nonspc;
12394 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
12404 if (!ptinfo_beg)
return;
12408 token_info_warn(p,
token, ptinfo_beg, 1, loc);
12415 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
12417 if (!ptinfo_beg)
return;
12418 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
12422 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
12424 "mismatched indentations at '%s' with '%s' at %d",
12450 else if (yylloc->beg_pos.lineno == lineno) {
12469 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
12470 yylloc->beg_pos.column == yylloc->end_pos.column)) {
12474 parser_show_error_line(p, yylloc);
12482 const int max_line_margin = 30;
12483 const char *
ptr, *ptr_end, *pt, *pb;
12484 const char *pre =
"", *post =
"", *pend;
12485 const char *code =
"", *caret =
"";
12492 if (!yylloc)
return;
12494 if (pend > pbeg && pend[-1] ==
'\n') {
12495 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
12499 if (lineno == yylloc->end_pos.lineno &&
12500 (pend - pbeg) > yylloc->end_pos.column) {
12501 pt = pbeg + yylloc->end_pos.column;
12504 ptr = ptr_end = pt;
12505 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
12506 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
12508 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
12509 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
12515 if (
ptr > pbeg) pre =
"...";
12517 if (ptr_end < pend) {
12519 if (ptr_end < pend) post =
"...";
12523 if (lineno == yylloc->beg_pos.lineno) {
12524 pb += yylloc->beg_pos.column;
12525 if (pb > pt) pb = pt;
12528 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
12531 if (
RTEST(errbuf)) {
12540 #define CSI_BEGIN "\033["
12541 #define CSI_SGR "m"
12551 (
int)(pt - pb), pb,
12552 (
int)(ptr_end - pt), pt,
12559 lim = pt < pend ? pt : pend;
12566 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
12577 pre, (
int)
len, code, post,
12586 const char *pcur = 0, *ptok = 0;
12595 dispatch1(parse_error,
STR_NEW2(msg));
12612 vtable_size(
const struct vtable *tbl)
12638 #define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
12656 #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
12672 if (
tbl->pos ==
tbl->capa) {
12673 tbl->capa =
tbl->capa * 2;
12678 #define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
12689 if (
tbl->pos <
n) {
12695 #define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
12699 vtable_included(
const struct vtable *
tbl,
ID id)
12704 for (
i = 0;
i <
tbl->pos;
i++) {
12705 if (
tbl->tbl[
i] ==
id) {
12719 debug_lines(
VALUE fname)
12722 CONST_ID(script_lines,
"SCRIPT_LINES__");
12758 if (!e_option_supplied(p)) {
12764 #define RUBY_DTRACE_PARSE_HOOK(name) \
12765 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
12766 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
12791 NODE *body = parser_append_options(p, tree->nd_body);
12795 tree->nd_body = prelude;
12807 if (
NIL_P(fname)) {
12827 must_be_ascii_compatible(
VALUE s)
12839 char *beg, *end, *start;
12851 if (end)
len = ++end - beg;
12860 if (
NIL_P(line))
return line;
12861 must_be_ascii_compatible(line);
12887 return yycompile(vparser, p, fname, line);
12899 must_be_ascii_compatible(s);
12900 return parser_compile_string(vparser,
f, s, line);
12922 return yycompile(vparser, p, fname, start);
12938 p->
lex.
gets = lex_generic_gets;
12943 return yycompile(vparser, p, fname, start);
12947 #define STR_FUNC_ESCAPE 0x01
12948 #define STR_FUNC_EXPAND 0x02
12949 #define STR_FUNC_REGEXP 0x04
12950 #define STR_FUNC_QWORDS 0x08
12951 #define STR_FUNC_SYMBOL 0x10
12952 #define STR_FUNC_INDENT 0x20
12953 #define STR_FUNC_LABEL 0x40
12954 #define STR_FUNC_LIST 0x4000
12955 #define STR_FUNC_TERM 0x8000
12986 #define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
12987 #define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
12988 #define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
12989 #define peek(p,c) peek_n(p, (c), 0)
12990 #define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
12991 #define peekc(p) peekc_n(p, 0)
12992 #define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
13010 #define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13055 if (
peek(p,
'\n')) {
13062 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13077 c = parser_cr(p, c);
13086 if (c == -1)
return;
13093 #define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13095 #define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13096 #define tok(p) (p)->tokenbuf
13097 #define toklen(p) (p)->tokidx
13103 while (ptr < p->
lex.pend) {
13104 int c = (
unsigned char)*
ptr++;
13105 int eol = (c ==
'\n' || c ==
'#');
13166 #define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13169 escaped_control_code(
int c)
13195 #define WARN_SPACE_CHAR(c, prefix) \
13196 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13200 int regexp_literal,
int wide)
13206 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
13207 yyerror0(
"invalid Unicode escape");
13208 return wide && numlen > 0;
13210 if (codepoint > 0x10ffff) {
13211 yyerror0(
"invalid Unicode codepoint (too large)");
13214 if ((codepoint & 0xfffff800) == 0xd800) {
13215 yyerror0(
"invalid Unicode codepoint");
13218 if (regexp_literal) {
13221 else if (codepoint >= 0x80) {
13223 if (*encp && utf8 != *encp) {
13226 parser_show_error_line(p, &loc);
13230 tokaddmbc(p, codepoint, *encp);
13233 tokadd(p, codepoint);
13241 int term,
int symbol_literal,
int regexp_literal)
13248 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
13250 const int open_brace =
'{', close_brace =
'}';
13252 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
13254 if (
peek(p, open_brace)) {
13255 const char *second =
NULL;
13256 int c,
last = nextc(p);
13259 while (c != close_brace) {
13260 if (c ==
term)
goto unterminated;
13261 if (second == multiple_codepoints)
13263 if (regexp_literal) tokadd(p,
last);
13264 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
13271 if (
term == -1 && !second)
13272 second = multiple_codepoints;
13275 if (c != close_brace) {
13278 yyerror0(
"unterminated Unicode escape");
13281 if (second && second != multiple_codepoints) {
13291 if (regexp_literal) tokadd(p, close_brace);
13295 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
13302 #define ESCAPE_CONTROL 1
13303 #define ESCAPE_META 2
13311 switch (c = nextc(p)) {
13336 case '0':
case '1':
case '2':
case '3':
13337 case '4':
case '5':
case '6':
case '7':
13344 c = tok_hex(p, &numlen);
13345 if (numlen == 0)
return 0;
13356 if ((c = nextc(p)) !=
'-') {
13359 if ((c = nextc(p)) ==
'\\') {
13360 if (
peek(p,
'u'))
goto eof;
13361 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
13363 else if (c == -1 || !
ISASCII(c))
goto eof;
13365 int c2 = escaped_control_code(c);
13374 else if (
ISCNTRL(c))
goto eof;
13375 return ((c & 0xff) | 0x80);
13379 if ((c = nextc(p)) !=
'-') {
13384 if ((c = nextc(p))==
'\\') {
13385 if (
peek(p,
'u'))
goto eof;
13390 else if (c == -1 || !
ISASCII(c))
goto eof;
13392 int c2 = escaped_control_code(c);
13411 else if (
ISCNTRL(c))
goto eof;
13417 yyerror0(
"Invalid escape character syntax");
13441 switch (c = nextc(p)) {
13445 case '0':
case '1':
case '2':
case '3':
13446 case '4':
case '5':
case '6':
case '7':
13449 if (numlen == 0)
goto eof;
13457 tok_hex(p, &numlen);
13458 if (numlen == 0)
return -1;
13465 if ((c = nextc(p)) !=
'-') {
13475 if ((c = nextc(p)) !=
'-') {
13487 if ((c = nextc(p)) ==
'\\') {
13490 else if (c == -1)
goto eof;
13496 yyerror0(
"Invalid escape character syntax");
13516 while (c = nextc(p),
ISALPHA(c)) {
13540 parser_show_error_line(p, &loc);
13548 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
13549 if (
len < 0)
return -1;
13557 simple_re_meta(
int c)
13560 case '$':
case '*':
case '+':
case '.':
13561 case '?':
case '^':
case '|':
13562 case ')':
case ']':
case '}':
case '>':
13570 parser_update_heredoc_indent(
struct parser_params *p,
int c)
13580 else if (c ==
'\t') {
13585 else if (c !=
'\n') {
13601 parser_show_error_line(p, &loc);
13607 const char *pos = p->
lex.
pcur;
13609 parser_mixed_error(p, enc1, enc2);
13615 int func,
int term,
int paren,
long *nest,
13619 bool erred =
false;
13621 #define mixed_error(enc1, enc2) \
13622 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
13623 #define mixed_escape(beg, enc1, enc2) \
13624 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
13626 while ((c = nextc(p)) != -1) {
13628 parser_update_heredoc_indent(p, c);
13631 if (paren && c == paren) {
13634 else if (c ==
term) {
13635 if (!nest || !*nest) {
13643 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
13648 else if (c ==
'\\') {
13680 if (c == -1)
return -1;
13686 if (c ==
term && !simple_re_meta(c)) {
13691 if ((c = tokadd_escape(p,
enc)) < 0)
13693 if (*
enc && *
enc != *encp) {
13701 c = read_escape(p, 0,
enc);
13706 else if (c !=
term && !(paren && c == paren)) {
13713 else if (!parser_isascii(p)) {
13718 else if (*
enc != *encp) {
13722 if (tokadd_mbchar(p, c) == -1)
return -1;
13733 else if (*
enc != *encp) {
13752 #define NEW_STRTERM(func, term, paren) \
13753 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
13760 if (!ripper_is_node_yylval(content))
13761 content = ripper_new_yylval(p, 0, 0, content);
13772 if (
yylval.val != content)
13777 #define flush_string_content(p, enc) ((void)(enc))
13784 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
13785 #define SPECIAL_PUNCT(idx) ( \
13786 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
13787 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
13788 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
13789 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
13790 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
13798 #undef SPECIAL_PUNCT
13811 if ((c = *
ptr) ==
'-') {
13815 else if (is_global_name_punct(c) ||
ISDIGIT(c)) {
13820 if ((c = *
ptr) ==
'@') {
13837 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
13838 #define IS_END() IS_lex_state(EXPR_END_ANY)
13839 #define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
13840 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
13841 #define IS_LABEL_POSSIBLE() (\
13842 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
13844 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
13845 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
13885 do {c = nextc(p);}
while (
ISSPACE(c));
13899 return parser_string_term(p, func);
13908 int t = parser_peek_variable_name(p);
13914 if (tokadd_string(p, func,
term, paren, "e->
u0.
nest,
13915 &
enc, &base_enc) == -1) {
13918 # define unterminated_literal(mesg) yyerror0(mesg)
13920 # define unterminated_literal(mesg) compile_error(p, mesg)
13955 int c = nextc(p),
term, func = 0, quote = 0;
13964 else if (c ==
'~') {
13984 while ((c = nextc(p)) !=
term) {
13985 if (c == -1 || c ==
'\r' || c ==
'\n') {
13986 yyerror(
NULL, p,
"unterminated here document identifier");
13993 if (!parser_is_identchar(p)) {
13996 pushback(p, indent > 0 ?
'~' :
'-');
14002 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
14003 if (
n < 0)
return 0;
14005 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
14012 yyerror(
NULL, p,
"too long here document identifier");
14022 here->
quote = quote;
14050 dedent_string(
VALUE string,
int width)
14057 for (
i = 0;
i <
len && col < width;
i++) {
14058 if (
str[
i] ==
' ') {
14061 else if (
str[
i] ==
'\t') {
14063 if (
n > width)
break;
14084 NODE *node, *str_node, *prev_node;
14086 VALUE prev_lit = 0;
14088 if (indent <= 0)
return root;
14090 if (!root)
return root;
14092 prev_node = node = str_node = root;
14096 VALUE lit = str_node->nd_lit;
14098 dedent_string(lit, indent);
14103 else if (!literal_concat0(p, prev_lit, lit)) {
14107 NODE *end = node->nd_end;
14108 node = prev_node->nd_next = node->nd_next;
14114 node->nd_end = end;
14119 while ((node = (prev_node = node)->
nd_next) != 0) {
14122 if ((str_node = node->nd_head) != 0) {
14138 if (indent <= 0)
return array;
14140 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14160 col = dedent_string(
input, wid);
14166 whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14175 if (
n < 0)
return FALSE;
14176 if (
n > 0 &&
ptr[
len] !=
'\n') {
14191 case '\0':
case '\004':
case '\032':
return 1;
14196 #define NUM_SUFFIX_R (1<<0)
14197 #define NUM_SUFFIX_I (1<<1)
14198 #define NUM_SUFFIX_ALL 3
14204 const char *lastp = p->
lex.
pcur;
14206 while ((c = nextc(p)) != -1) {
14251 return set_number_literal(p,
v,
type, suffix);
14268 #define dispatch_heredoc_end(p) ((void)0)
14274 int c, func, indent = 0;
14275 const char *eos, *
ptr, *ptr_end;
14286 if ((c = nextc(p)) == -1) {
14310 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
14328 else if (whole_match_p(p, eos,
len, indent)) {
14342 if (ptr_end >
ptr) {
14343 switch (ptr_end[-1]) {
14345 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
14356 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
14370 if (nextc(p) == -1) {
14376 }
while (!whole_match_p(p, eos,
len, indent));
14382 int t = parser_peek_variable_name(p);
14396 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
14412 tokadd(p, nextc(p));
14418 if ((c = nextc(p)) == -1)
goto error;
14419 }
while (!whole_match_p(p, eos,
len, indent));
14443 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
14453 switch (id_type(lhs)) {
14458 yyerror0(
"formal argument cannot be a constant");
14461 yyerror0(
"formal argument cannot be an instance variable");
14464 yyerror0(
"formal argument cannot be a global variable");
14467 yyerror0(
"formal argument cannot be a class variable");
14470 yyerror0(
"formal argument must be local variable");
14474 lhs = dispatch1(param_error, lhs);
14479 shadowing_lvar(p, lhs);
14486 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
14495 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
14499 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
14535 for (
i = 0;
i <
n; ++
i) {
14547 while (
ptr < ptr_end) {
14558 magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
14560 if (!comment_at_top(p)) {
14563 parser_set_encode(p, val);
14570 case 't':
case 'T':
14575 case 'f':
case 'F':
14586 parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
14588 int b = parser_get_bool(p,
name, val);
14593 parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
14602 b = parser_get_bool(p,
name, val);
14611 # if WARN_PAST_SCOPE
14613 parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
14615 int b = parser_get_bool(p,
name, val);
14616 if (b >= 0) p->past_scope_enabled = b;
14627 {
"coding", magic_comment_encoding, parser_encode_length},
14628 {
"encoding", magic_comment_encoding, parser_encode_length},
14629 {
"frozen_string_literal", parser_set_compile_option_flag},
14630 {
"warn_indent", parser_set_token_info},
14631 # if WARN_PAST_SCOPE
14632 {
"warn_past_scope", parser_set_past_scope},
14636 static const char *
14637 magic_comment_marker(
const char *
str,
long len)
14644 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
14645 return str +
i + 1;
14650 if (
i + 1 >=
len)
return 0;
14651 if (
str[
i+1] !=
'-') {
14654 else if (
str[
i-1] !=
'-') {
14658 return str +
i + 2;
14674 const char *beg, *end, *vbeg, *vend;
14675 #define str_copy(_s, _p, _n) ((_s) \
14676 ? (void)(rb_str_resize((_s), (_n)), \
14677 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
14678 : (void)((_s) = STR_NEW((_p), (_n))))
14681 if (!!(beg = magic_comment_marker(
str,
len))) {
14682 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
14686 len = end - beg - 3;
14698 case '\'':
case '"':
case ':':
case ';':
14705 case '\'':
case '"':
case ':':
case ';':
14716 if (!indicator)
return FALSE;
14724 if (*
str ==
'\\') {
14750 for (
i = 0;
i <
n; ++
i) {
14751 if (s[
i] ==
'-') s[
i] =
'_';
14763 }
while (++mc < magic_comments +
numberof(magic_comments));
14774 set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
14777 const char *beg =
str;
14781 if (send -
str <= 6)
return;
14783 case 'C':
case 'c':
str += 6;
continue;
14784 case 'O':
case 'o':
str += 5;
continue;
14785 case 'D':
case 'd':
str += 4;
continue;
14786 case 'I':
case 'i':
str += 3;
continue;
14787 case 'N':
case 'n':
str += 2;
continue;
14788 case 'G':
case 'g':
str += 1;
continue;
14789 case '=':
case ':':
14802 if (++
str >= send)
return;
14805 if (*
str !=
'=' && *
str !=
':')
return;
14811 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
14827 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
14828 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
14843 #define ambiguous_operator(tok, op, syn) ( \
14844 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
14845 rb_warning0("even though it seems like "syn""))
14847 #define ambiguous_operator(tok, op, syn) \
14848 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
14850 #define warn_balanced(tok, op, syn) ((void) \
14851 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
14852 space_seen && !ISSPACE(c) && \
14853 (ambiguous_operator(tok, op, syn), 0)), \
14854 (enum yytokentype)(tok))
14860 char *point = &
str[seen_point];
14861 size_t fraclen =
len-seen_point-1;
14862 memmove(point, point+1, fraclen+1);
14870 yyerror0(
"numeric literal without digits");
14871 if (
peek(p,
'_')) nextc(p);
14873 return set_integer_literal(p,
INT2FIX(0), 0);
14879 int is_float, seen_point, seen_e, nondigit;
14882 is_float = seen_point = seen_e = nondigit = 0;
14885 if (c ==
'-' || c ==
'+') {
14892 if (c ==
'x' || c ==
'X') {
14898 if (nondigit)
break;
14905 }
while ((c = nextc(p)) != -1);
14909 if (
toklen(p) == start) {
14910 return no_digits(p);
14912 else if (nondigit)
goto trailing_uc;
14916 if (c ==
'b' || c ==
'B') {
14919 if (c ==
'0' || c ==
'1') {
14922 if (nondigit)
break;
14926 if (c !=
'0' && c !=
'1')
break;
14929 }
while ((c = nextc(p)) != -1);
14933 if (
toklen(p) == start) {
14934 return no_digits(p);
14936 else if (nondigit)
goto trailing_uc;
14940 if (c ==
'd' || c ==
'D') {
14946 if (nondigit)
break;
14953 }
while ((c = nextc(p)) != -1);
14957 if (
toklen(p) == start) {
14958 return no_digits(p);
14960 else if (nondigit)
goto trailing_uc;
14968 if (c ==
'o' || c ==
'O') {
14971 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
14972 return no_digits(p);
14975 if (c >=
'0' && c <=
'7') {
14980 if (nondigit)
break;
14984 if (c < '0' || c >
'9')
break;
14985 if (c >
'7')
goto invalid_octal;
14988 }
while ((c = nextc(p)) != -1);
14989 if (
toklen(p) > start) {
14992 if (nondigit)
goto trailing_uc;
15001 if (c >
'7' && c <=
'9') {
15005 else if (c ==
'.' || c ==
'e' || c ==
'E') {
15011 return set_integer_literal(p,
INT2FIX(0), suffix);
15017 case '0':
case '1':
case '2':
case '3':
case '4':
15018 case '5':
case '6':
case '7':
case '8':
case '9':
15024 if (nondigit)
goto trailing_uc;
15025 if (seen_point || seen_e) {
15030 if (c0 == -1 || !
ISDIGIT(c0)) {
15055 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15060 tokadd(p, nondigit);
15064 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15068 if (nondigit)
goto decode_num;
15085 parser_show_error_line(p, &loc);
15095 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15105 return set_number_literal(p,
v,
type, suffix);
15129 int c2 = escaped_control_code(c);
15141 if (!parser_isascii(p)) {
15142 if (tokadd_mbchar(p, c) == -1)
return 0;
15147 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15149 int n = parser_precise_mbclen(p,
ptr);
15150 if (
n < 0)
return -1;
15153 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15154 " a conditional operator, put a space after `?'",
15159 else if (c ==
'\\') {
15160 if (
peek(p,
'u')) {
15163 tokadd_utf8(p, &enc, -1, 0, 0);
15167 if (tokadd_mbchar(p, c) == -1)
return 0;
15170 c = read_escape(p, 0, &enc);
15188 const char *ptok = p->
lex.
pcur;
15196 if (c == -1 || !
ISALNUM(c)) {
15203 yyerror0(
"unknown type of %string");
15207 if (c == -1 ||
term == -1) {
15208 compile_error(p,
"unterminated quoted string meets end of file");
15258 yyerror0(
"unknown type of %string");
15262 if ((c = nextc(p)) ==
'=') {
15279 if (tokadd_mbchar(p, c) == -1)
return -1;
15281 }
while (parser_is_identchar(p));
15302 const unsigned long nth_ref_max =
15303 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
15307 if (overflow ||
n > nth_ref_max) {
15330 if (parser_is_identchar(p)) {
15362 if (parser_is_identchar(p)) {
15363 if (tokadd_mbchar(p, c) == -1)
return 0;
15386 case '1':
case '2':
case '3':
15387 case '4':
case '5':
case '6':
15388 case '7':
case '8':
case '9':
15393 }
while (c != -1 &&
ISDIGIT(c));
15401 if (!parser_is_identchar(p)) {
15404 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
15408 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
15410 parser_show_error_line(p, &loc);
15419 if (tokadd_ident(p, c))
return 0;
15421 tokenize_ident(p, last_state);
15429 if (
n < 0)
return false;
15442 while (
n > args->
pos) {
15454 register int c = nextc(p);
15466 if (c == -1 || !parser_is_identchar(p)) {
15469 if (result ==
tIVAR) {
15470 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
15473 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
15475 parser_show_error_line(p, &loc);
15483 if (result ==
tIVAR) {
15484 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
15487 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
15489 parser_show_error_line(p, &loc);
15495 if (tokadd_ident(p, c))
return 0;
15496 tokenize_ident(p, last_state);
15510 if (tokadd_mbchar(p, c) == -1)
return 0;
15512 }
while (parser_is_identchar(p));
15513 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
15564 if (kw->
id[0] != kw->
id[1])
15579 else if (p->
lex.
state == EXPR_FNAME) {
15586 ident = tokenize_ident(p, last_state);
15590 lvar_defined(p, ident)) {
15600 int space_seen = 0;
15604 int fallthru =
FALSE;
15624 switch (c = nextc(p)) {
15632 case ' ':
case '\t':
case '\f':
case '\r':
15636 while ((c = nextc(p))) {
15638 case ' ':
case '\t':
case '\f':
case '\r':
15655 if (comment_at_top(p)) {
15665 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
15673 goto normal_newline;
15678 switch (c = nextc(p)) {
15679 case ' ':
case '\t':
case '\f':
case '\r':
15690 if (
peek(p,
'.') == (c ==
'&')) {
15712 goto normal_newline;
15721 if ((c = nextc(p)) ==
'*') {
15722 if ((c = nextc(p)) ==
'=') {
15729 rb_warning0(
"`**' interpreted as argument prefix");
15747 rb_warning0(
"`*' interpreted as argument prefix");
15783 if (word_match_p(p,
"begin", 5)) {
15784 int first_p =
TRUE;
15799 if (c ==
'=' && word_match_p(p,
"end", 3)) {
15811 if ((c = nextc(p)) ==
'=') {
15812 if ((c = nextc(p)) ==
'=') {
15821 else if (c ==
'>') {
15833 int token = heredoc_identifier(p);
15845 if ((c = nextc(p)) ==
'>') {
15852 if ((c = nextc(p)) ==
'=') {
15865 if ((c = nextc(p)) ==
'=') {
15869 if ((c = nextc(p)) ==
'=') {
15908 return parse_qmark(p, space_seen);
15911 if ((c = nextc(p)) ==
'&') {
15913 if ((c = nextc(p)) ==
'=') {
15921 else if (c ==
'=') {
15926 else if (c ==
'.') {
15935 !(c ==
'\'' || c ==
'"' ||
15937 rb_warning0(
"`&' interpreted as argument prefix");
15951 if ((c = nextc(p)) ==
'|') {
15953 if ((c = nextc(p)) ==
'=') {
15994 return parse_numeric(p,
'+');
16036 if ((c = nextc(p)) ==
'.') {
16037 if ((c = nextc(p)) ==
'.') {
16039 rb_warn0(
"... at EOL, should be parenthesized?");
16049 parse_numeric(p,
'.');
16051 yyerror0(
"unexpected fraction part after numeric literal");
16054 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16065 case '0':
case '1':
case '2':
case '3':
case '4':
16066 case '5':
case '6':
case '7':
case '8':
case '9':
16067 return parse_numeric(p, c);
16128 if ((c = nextc(p)) ==
'=') {
16135 arg_ambiguous(p,
'/');
16143 if ((c = nextc(p)) ==
'=') {
16163 if ((c = nextc(p)) !=
'@') {
16177 else if (!space_seen) {
16184 rb_warning0(
"parentheses after method name is interpreted as "
16185 "an argument list, not a decomposed argument");
16196 if ((c = nextc(p)) ==
']') {
16198 if ((c = nextc(p)) ==
'=') {
16250 if (c ==
' ')
return tSP;
16256 return parse_percent(p, space_seen, last_state);
16259 return parse_gvar(p, last_state);
16262 return parse_atmark(p, last_state);
16265 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
16280 if (!parser_is_identchar(p)) {
16281 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
16290 return parse_ident(p, c, cmd_state);
16300 t = parser_yylex(p);
16314 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
16323 nd_set_loc(
n, loc);
16338 nodetype(
NODE *node)
16344 nodeline(
NODE *node)
16350 newline_node(
NODE *node)
16353 node = remove_begin(node);
16382 NODE *end, *
h = head, *nd;
16384 if (tail == 0)
return head;
16386 if (
h == 0)
return tail;
16394 parser_warning(p,
h,
"unused literal ignored");
16414 parser_warning(p, tail,
"statement not reached");
16424 tail->nd_end = tail;
16426 end->nd_next = tail;
16427 h->nd_end = tail->nd_end;
16439 if (
list->nd_next) {
16446 list->nd_alen += 1;
16448 list->nd_next->nd_end =
last->nd_next;
16457 list_concat(
NODE *head,
NODE *tail)
16461 if (head->nd_next) {
16462 last = head->nd_next->nd_end;
16468 head->nd_alen += tail->nd_alen;
16469 last->nd_next = tail;
16470 if (tail->nd_next) {
16471 head->nd_next->nd_end = tail->nd_next->nd_end;
16474 head->nd_next->nd_end = tail;
16485 if (
NIL_P(tail))
return 1;
16487 compile_error(p,
"string literal encodings differ (%s / %s)",
16506 if (!head)
return tail;
16507 if (!tail)
return head;
16513 head = list_append(p, node, head);
16521 return list_append(p, head, tail);
16528 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16531 lit = headlast->nd_lit;
16534 lit = head->nd_lit;
16537 if (!literal_concat0(p, lit, tail->nd_lit)) {
16539 rb_discard_node(p, head);
16540 rb_discard_node(p, tail);
16543 rb_discard_node(p, tail);
16546 list_append(p, head, tail);
16552 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
16554 tail->nd_lit = head->nd_lit;
16555 rb_discard_node(p, head);
16558 else if (
NIL_P(tail->nd_lit)) {
16560 head->nd_alen += tail->nd_alen - 1;
16561 head->nd_next->nd_end->nd_next = tail->nd_next;
16562 head->nd_next->nd_end = tail->nd_next->nd_end;
16563 rb_discard_node(p, tail);
16565 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16567 lit = headlast->nd_lit;
16568 if (!literal_concat0(p, lit, tail->nd_lit))
16570 tail->nd_lit =
Qnil;
16583 list_append(p, head, tail);
16595 node = list_append(p, dstr, node);
16648 if (block) block_dup_check(p, args, block);
16649 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
16650 if (block) ret = method_add_block(p, ret, block, loc);
16655 #define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
16660 int line = op_loc->beg_pos.lineno;
16675 const VALUE lit =
n->nd_lit;
16677 match->nd_args = reg_named_capture_assign(p, lit, loc);
16702 # if WARN_PAST_SCOPE
16708 if (vtable_included(past,
id))
return 1;
16717 #define WARN_LOCATION(type) do { \
16718 if (p->warn_location) { \
16720 VALUE file = rb_source_location(&line); \
16721 rb_warn3(type" in eval may not return location in binding;" \
16722 " use Binding#source_location instead\n" \
16723 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
16724 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
16737 "%s:%d: %s block here",
16739 outer ?
"outer" :
"inner");
16740 parser_show_error_line(p, &
used->nd_loc);
16781 switch (id_type(
id)) {
16783 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
16793 if (local_id_ref(p,
id, &vidp)) {
16804 if (numparam_nested_p(p))
return 0;
16810 # if WARN_PAST_SCOPE
16831 opt_arg_append(
NODE *opt_list,
NODE *opt)
16833 NODE *opts = opt_list;
16836 while (opts->nd_next) {
16837 opts = opts->nd_next;
16840 opts->nd_next = opt;
16846 kwd_append(
NODE *kwlist,
NODE *kw)
16849 NODE *kws = kwlist;
16851 while (kws->nd_next) {
16852 kws = kws->nd_next;
16876 return list_append(p, symbols, symbol);
16895 nd_set_loc(node, loc);
16906 nd_set_loc(node, loc);
16908 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
16912 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
16914 if (!literal_concat0(p, lit, tail)) {
16919 rb_discard_node(p,
list->nd_head);
16920 rb_discard_node(p,
list);
16931 if (!node->nd_next) {
16963 nd_set_loc(node, loc);
16967 nd_set_loc(node, loc);
16984 if (lit ==
Qundef)
return;
16994 if (!
NIL_P(line)) {
16995 rb_warning1(
"duplicated `when' clause with line %d is ignored",
17012 if (dyna_in_block(p)) {
17015 if (local_id(p,
id))
return 1;
17029 if (ripper_is_node_yylval(re)) {
17031 re =
RNODE(re)->nd_rval;
17033 if (ripper_is_node_yylval(opt)) {
17034 options = (
int)
RNODE(opt)->nd_tag;
17035 opt =
RNODE(opt)->nd_rval;
17040 return dispatch2(regexp_literal, re, opt);
17046 static const char rb_parser_lex_state_names[][8] = {
17047 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
17048 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
17049 "LABEL",
"LABELED",
"FITEM",
17056 unsigned int mask = 1;
17057 static const char none[] =
"NONE";
17060 if ((
unsigned)state &
mask) {
17094 append_lex_state_name(from, mesg);
17096 append_lex_state_name(to, mesg);
17123 const char *
name,
int line)
17126 append_bitstack_value(stack, mesg);
17144 append_lex_state_name(p->
lex.
state, mesg);
17165 yylloc->beg_pos.lineno = sourceline;
17166 yylloc->beg_pos.column = beg_pos;
17167 yylloc->end_pos.lineno = sourceline;
17168 yylloc->end_pos.column = end_pos;
17204 v = valp->
node->nd_rval;
17211 v = valp->
node->nd_lit;
17239 if (!
id)
return -1;
17242 *
err =
"Can't change the value of self";
17245 *
err =
"Can't assign to nil";
17248 *
err =
"Can't assign to true";
17251 *
err =
"Can't assign to false";
17254 *
err =
"Can't assign to __FILE__";
17257 *
err =
"Can't assign to __LINE__";
17260 *
err =
"Can't assign to __ENCODING__";
17263 switch (id_type(
id)) {
17265 if (dyna_in_block(p)) {
17278 if (!local_id(p,
id)) local_var(p,
id);
17286 *
err =
"dynamic constant assignment";
17299 const char *
err = 0;
17317 const char *
err = 0;
17319 if (
err) lhs = assign_error(p, lhs);
17325 is_private_local_id(
ID name)
17338 if (is_private_local_id(
name))
return 1;
17339 if (dyna_in_block(p)) {
17340 if (dvar_curr(p,
name)) {
17341 yyerror0(
"duplicated argument name");
17343 else if (dvar_defined(p,
name) || local_id(p,
name)) {
17352 if (local_id(p,
name)) {
17353 yyerror0(
"duplicated argument name");
17362 shadowing_lvar_0(p,
name);
17375 if (!shadowing_lvar_0(p,
name))
return;
17409 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
17420 return list_append(p, node1, node2);
17422 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
17426 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
17432 node1->nd_body = list_append(p, node1->nd_body, node2);
17442 if (!node2)
return node1;
17445 if (node1->nd_head)
17446 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
17448 node1->nd_head =
NEW_LIST(node2, loc);
17452 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
17458 node1->nd_body = list_concat(node1->nd_body, node2);
17468 if ((n1 = splat_array(
args)) != 0) {
17469 return list_append(p, n1, last_arg);
17471 return arg_append(p,
args, last_arg, loc);
17479 return list_concat(n1, rest_arg);
17481 return arg_concat(p,
args, rest_arg, loc);
17485 splat_array(
NODE* node)
17499 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
17505 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
17511 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
17512 mark_lvar_used(p, rhs->nd_head);
17522 if (!lhs)
return 0;
17533 lhs->nd_value = rhs;
17534 nd_set_loc(lhs, loc);
17538 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
17539 nd_set_loc(lhs, loc);
17553 NODE *void_node = 0, *vn;
17565 return void_node ? void_node : node;
17572 if (node->nd_body->nd_body) {
17576 return void_node ? void_node : node;
17579 while (node->nd_next) {
17580 node = node->nd_next;
17582 node = node->nd_head;
17586 node = node->nd_body;
17591 if (!node->nd_body) {
17594 else if (!node->nd_else) {
17597 vn = value_expr_check(p, node->nd_body);
17598 if (!vn)
return NULL;
17599 if (!void_node) void_node = vn;
17600 node = node->nd_else;
17605 node = node->nd_1st;
17612 mark_lvar_used(p, node);
17626 NODE *void_node = value_expr_check(p, node);
17637 const char *useless = 0;
17644 switch (node->nd_mid) {
17675 useless =
"a variable";
17678 useless =
"a constant";
17684 useless =
"a literal";
17709 useless =
"defined?";
17721 NODE *
const n = node;
17723 if (!node)
return n;
17726 while (node->nd_next) {
17727 void_expr(p, node->nd_head);
17728 node = node->nd_next;
17734 remove_begin(
NODE *node)
17736 NODE **
n = &node, *n1 = node;
17738 *
n = n1 = n1->nd_body;
17744 remove_begin_all(
NODE *node)
17746 NODE **
n = &node, *n1 = node;
17748 *
n = n1 = n1->nd_body;
17756 NODE *node = *body;
17762 #define subnodes(n1, n2) \
17763 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
17764 (!node->n2) ? (body = &node->n1, 1) : \
17765 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
17775 *body = node = node->nd_stts;
17779 *body = node = node->nd_body;
17783 body = &node->nd_end->nd_head;
17790 body = &node->nd_body;
17799 if (node->nd_else) {
17800 body = &node->nd_resq;
17816 is_static_content(
NODE *node)
17818 if (!node)
return 1;
17821 if (!(node = node->nd_head))
break;
17824 if (!is_static_content(node->nd_head))
return 0;
17825 }
while ((node = node->nd_next) != 0);
17855 if (!node->nd_value)
return 1;
17856 if (is_static_content(node->nd_value)) {
17858 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
17869 #define SWITCH_BY_COND_TYPE(t, w, arg) \
17871 case COND_IN_OP: break; \
17872 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
17873 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
17883 if (node == 0)
return 0;
17888 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
17897 if (node == 0)
return 0;
17899 assign_in_cond(p, node);
17952 if (node == 0)
return 0;
17959 if (node == 0)
return 0;
17966 if (!
cc)
return right;
17968 return newline_node(
NEW_IF(
cc, left, right, loc));
17974 if (!
cc)
return right;
17976 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
17987 NODE *node = left, *second;
17992 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
18013 no_blockarg(p, node);
18015 if (node->nd_next == 0) {
18016 node = node->nd_head;
18029 if (node) no_blockarg(p, node);
18073 arg_blk_pass(
NODE *node1,
NODE *node2)
18076 if (!node1)
return node2;
18077 node2->nd_head = node1;
18088 if (
args->pre_args_num)
return false;
18089 if (
args->post_args_num)
return false;
18090 if (
args->rest_arg)
return false;
18091 if (
args->opt_args)
return false;
18092 if (
args->block_arg)
return false;
18093 if (
args->kw_args)
return false;
18094 if (
args->kw_rest_arg)
return false;
18105 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18108 args->
post_init = post_args ? post_args->nd_next : 0;
18118 nd_set_loc(tail, loc);
18130 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18131 args->
imemo = tmpbuf;
18146 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18148 NODE *kwn = kw_args;
18150 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18151 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18155 --required_kw_vars;
18156 kwn = kwn->nd_next;
18159 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18160 ID vid = kwn->nd_body->nd_vid;
18162 *required_kw_vars++ = vid;
18169 arg_var(p, kw_bits);
18170 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18171 if (block) arg_var(p, block);
18176 else if (kw_rest_arg ==
idNil) {
18179 else if (kw_rest_arg) {
18191 if (!args) args = new_args_tail(p, 0, 0, 0, 0);
18192 args->nd_ainfo->pre_args_num = max_numparam;
18202 aryptn->nd_pconst = constant;
18223 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18225 apinfo->
imemo = tmpbuf;
18251 hshptn->nd_pconst = constant;
18259 NODE *node, *kw_rest_arg_node;
18261 if (kw_rest_arg ==
idNil) {
18264 else if (kw_rest_arg) {
18265 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
18268 kw_rest_arg_node =
NULL;
18283 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
18299 nd_set_loc(node, loc);
18302 lit = node->nd_lit;
18305 nd_set_loc(node, loc);
18320 node->nd_next->nd_end = node->nd_next;
18321 node->nd_next->nd_next = 0;
18323 list_concat(*result, node);
18335 while (hash && hash->nd_head && hash->nd_next) {
18336 NODE *head = hash->nd_head;
18337 NODE *value = hash->nd_next;
18338 NODE *next = value->nd_next;
18342 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
18344 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
18345 head->nd_lit,
nd_line(head));
18346 head = ((
NODE *)data)->nd_next;
18347 head->nd_head = block_append(p, head->nd_head, value->nd_head);
18357 if (!result) result = hash;
18358 else list_concat(result, hash);
18367 if (hash) hash = remove_duplicate_keys(p, hash);
18375 if (is_private_local_id(
id)) {
18379 yyerror1(loc,
"duplicated variable name");
18393 yyerror1(loc,
"duplicated key name");
18414 ID vid = lhs->nd_vid;
18417 lhs->nd_value = rhs;
18418 nd_set_loc(lhs, loc);
18421 switch (id_type(vid)) {
18425 asgn->nd_aid = vid;
18429 else if (op ==
tANDOP) {
18430 lhs->nd_value = rhs;
18431 nd_set_loc(lhs, loc);
18437 nd_set_loc(asgn, loc);
18457 args = arg_concat(p, args, rhs, loc);
18494 yyerror1(loc,
"dynamic constant assignment");
18503 path = dispatch1(assign_error,
path);
18512 a = dispatch1(assign_error, a);
18520 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
18528 NODE *result = head;
18530 NODE *tmp = rescue_else ? rescue_else : rescue;
18533 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
18536 else if (rescue_else) {
18537 result = block_append(p, result, rescue_else);
18542 fixpos(result, head);
18552 if (!local->
used)
return;
18560 for (
int i = 0;
i <
cnt; ++
i) {
18562 if (is_private_local_id(
v[
i]))
continue;
18581 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
18588 # if WARN_PAST_SCOPE
18601 warn_unused_var(p, p->
lvtbl);
18604 # if WARN_PAST_SCOPE
18605 while (p->
lvtbl->past) {
18623 int cnt_args = vtable_size(p->
lvtbl->
args);
18624 int cnt_vars = vtable_size(p->
lvtbl->
vars);
18625 int cnt = cnt_args + cnt_vars;
18630 if (
cnt <= 0)
return 0;
18633 rb_imemo_tmpbuf_set_ptr(
tbl,
buf);
18636 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
18638 if (!vtable_included(p->
lvtbl->
args,
id)) {
18644 rb_imemo_tmpbuf_set_ptr(
tbl,
buf);
18670 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
18677 numparam_name(p,
id);
18684 numparam_name(p,
id);
18703 if (used) used = used->
prev;
18709 else if (vtable_included(args,
id)) {
18713 int i = vtable_included(
vars,
id);
18714 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18722 return local_id_ref(p,
id,
NULL);
18767 static const struct vtable *
18781 struct vtable *tmp = *vtblp;
18782 *vtblp = tmp->
prev;
18783 # if WARN_PAST_SCOPE
18784 if (p->past_scope_enabled) {
18786 p->
lvtbl->past = tmp;
18799 warn_unused_var(p, p->
lvtbl);
18838 if (vtable_included(args,
id)) {
18841 if ((
i = vtable_included(
vars,
id)) != 0) {
18842 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18847 if (!vidrefp) used = 0;
18848 if (used) used = used->
prev;
18861 return dvar_defined_ref(p,
id,
NULL);
18867 return (vtable_included(p->
lvtbl->
args,
id) ||
18875 "regexp encoding option '%c' differs from source encoding '%s'",
18921 if (c) reg_fragment_enc_error(p,
str, c);
18928 reg_fragment_setenc(p,
str, options);
18947 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
18953 const char *s = (
const char *)
name;
18965 succ =
arg->succ_block;
18967 succ = block_append(p, succ, node);
18968 arg->succ_block = succ;
18979 arg.succ_block = 0;
18983 if (!
arg.succ_block)
return 0;
18984 return arg.succ_block->nd_next;
18990 reg_fragment_setenc(p,
str, options);
19007 re = parser_reg_compile(p,
str, options);
19024 if (c) reg_fragment_enc_error(p,
str, c);
19057 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19058 const YYLTYPE *
const LOC = &default_location;
19064 node = block_append(p, node, print);
19074 node = block_append(p, split, node);
19079 node = block_append(p, chomp, node);
19099 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19115 p->delayed.token =
Qnil;
19117 p->parsing_thread =
Qnil;
19127 #define parser_mark ripper_parser_mark
19128 #define parser_free ripper_parser_free
19132 parser_mark(
void *
ptr)
19162 parser_free(
void *
ptr)
19170 for (local = p->
lvtbl; local; local =
prev) {
19186 parser_memsize(
const void *
ptr)
19190 size_t size =
sizeof(*p);
19193 for (local = p->
lvtbl; local; local = local->
prev) {
19194 size +=
sizeof(*local);
19215 #undef rb_reserved_word
19220 return reserved_word(
str,
len);
19228 &parser_data_type, p);
19229 parser_initialize(p);
19246 #define rb_parser_end_seen_p ripper_parser_end_seen_p
19247 #define rb_parser_encoding ripper_parser_encoding
19248 #define rb_parser_get_yydebug ripper_parser_get_yydebug
19249 #define rb_parser_set_yydebug ripper_parser_set_yydebug
19250 #define rb_parser_get_debug_output ripper_parser_get_debug_output
19251 #define rb_parser_set_debug_output ripper_parser_set_debug_output
19252 static VALUE ripper_parser_end_seen_p(
VALUE vparser);
19253 static VALUE ripper_parser_encoding(
VALUE vparser);
19254 static VALUE ripper_parser_get_yydebug(
VALUE self);
19256 static VALUE ripper_parser_get_debug_output(
VALUE self);
19257 static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
19266 ripper_error_p(
VALUE vparser)
19313 rb_parser_get_yydebug(
VALUE self)
19370 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
19373 #define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
19374 #define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
19375 (new)->cnt = (cnt), (ptr))
19405 if (
n->ptr ==
ptr) {
19407 if (
n->cnt)
n->cnt =
cnt;
19410 }
while ((
n =
n->next) !=
NULL);
19422 while ((
n = *prev) !=
NULL) {
19423 if (
n->ptr ==
ptr) {
19468 count_char(
const char *
str,
int c)
19471 while (
str[
n] == c) ++
n;
19485 if (*yystr ==
'"') {
19486 size_t yyn = 0, bquote = 0;
19487 const char *yyp = yystr;
19493 bquote = count_char(yyp+1,
'`') + 1;
19494 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
19502 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
19503 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
19509 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
19510 if (yyres)
memcpy(yyres + yyn, yyp, 3);
19515 goto do_not_strip_quotes;
19518 goto do_not_strip_quotes;
19521 if (*++yyp !=
'\\')
19522 goto do_not_strip_quotes;
19538 do_not_strip_quotes: ;
19541 if (!yyres)
return strlen(yystr);
19543 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
19548 #ifdef RIPPER_DEBUG
19553 if (x ==
Qfalse)
return x;
19554 if (x ==
Qtrue)
return x;
19555 if (x ==
Qnil)
return x;
19573 x = ((
NODE *)x)->nd_rval;
19587 #define validate(x) ((x) = get_value(x))
19616 return rb_funcall(p->value, mid, 3, a, b, c);
19626 return rb_funcall(p->value, mid, 4, a, b, c, d);
19637 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
19650 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
19659 if (
nd_type(nd) != NODE_RIPPER)
return 0;
19664 ripper_get_value(
VALUE v)
19671 return nd->nd_rval;
19699 "gets returned %"PRIsVALUE" (expected String or nil)",
19716 &parser_data_type, p);
19721 #define ripper_initialized_p(r) ((r)->lex.input != 0)
19742 p->
lex.
gets = ripper_lex_io_get;
19745 p->
lex.
gets = ripper_lex_get_generic;
19753 if (
NIL_P(fname)) {
19761 parser_initialize(p);
19771 ripper_parse0(
VALUE parser_v)
19778 ripper_yyparse((
void*)p);
19785 ripper_ensure(
VALUE parser_v)
19790 p->parsing_thread =
Qnil;
19801 ripper_parse(
VALUE self)
19806 if (!ripper_initialized_p(p)) {
19809 if (!
NIL_P(p->parsing_thread)) {
19816 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
19829 ripper_column(
VALUE self)
19835 if (!ripper_initialized_p(p)) {
19838 if (
NIL_P(p->parsing_thread))
return Qnil;
19850 ripper_filename(
VALUE self)
19855 if (!ripper_initialized_p(p)) {
19869 ripper_lineno(
VALUE self)
19874 if (!ripper_initialized_p(p)) {
19877 if (
NIL_P(p->parsing_thread))
return Qnil;
19888 ripper_state(
VALUE self)
19893 if (!ripper_initialized_p(p)) {
19896 if (
NIL_P(p->parsing_thread))
return Qnil;
19907 ripper_token(
VALUE self)
19913 if (!ripper_initialized_p(p)) {
19916 if (
NIL_P(p->parsing_thread))
return Qnil;
19922 #ifdef RIPPER_DEBUG
19957 ripper_init_eventids1();
19958 ripper_init_eventids2();
19970 InitVM_ripper(
void)
19992 #ifdef RIPPER_DEBUG
20040 ripper_init_eventids1_table(Ripper);
20041 ripper_init_eventids2_table(Ripper);