47 #define YYBISON_VERSION "2.5"
50 #define YYSKELETON_NAME "yacc.c"
62 #define YYLSP_NEEDED 0
73 #define PARSER_DEBUG 0
76 #define YYERROR_VERBOSE 1
77 #define YYSTACK_USE_ALLOCA 0
92 #define YYMALLOC(size) rb_parser_malloc(parser, (size))
93 #define YYREALLOC(ptr, size) rb_parser_realloc(parser, (ptr), (size))
94 #define YYCALLOC(nelem, size) rb_parser_calloc(parser, (nelem), (size))
95 #define YYFREE(ptr) rb_parser_free(parser, (ptr))
96 #define malloc YYMALLOC
97 #define realloc YYREALLOC
98 #define calloc YYCALLOC
104 #define REGISTER_SYMID(id, name) register_symid((id), (name), strlen(name), enc)
108 #define is_notop_id(id) ((id)>tLAST_OP_ID)
109 #define is_local_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
110 #define is_global_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
111 #define is_instance_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
112 #define is_attrset_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
113 #define is_const_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
114 #define is_class_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
115 #define is_junk_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
116 #define id_type(id) (is_notop_id(id) ? (int)((id)&ID_SCOPE_MASK) : -1)
118 #define is_asgn_or_id(id) ((is_notop_id(id)) && \
119 (((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
120 ((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
121 ((id)&ID_SCOPE_MASK) == ID_CLASS))
140 #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
153 EXPR_BEG_ANY = (EXPR_BEG | EXPR_VALUE | EXPR_MID | EXPR_CLASS | EXPR_LABELARG),
157 #define IS_lex_state_for(x, ls) ((x) & (ls))
158 #define IS_lex_state(ls) IS_lex_state_for(lex_state, (ls))
161 static const char *lex_state_name(
enum lex_state_e state);
166 # define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
167 # define BITSTACK_POP(stack) ((stack) = (stack) >> 1)
168 # define BITSTACK_LEXPOP(stack) ((stack) = ((stack) >> 1) | ((stack) & 1))
169 # define BITSTACK_SET_P(stack) ((stack)&1)
171 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
172 #define COND_POP() BITSTACK_POP(cond_stack)
173 #define COND_LEXPOP() BITSTACK_LEXPOP(cond_stack)
174 #define COND_P() BITSTACK_SET_P(cond_stack)
176 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
177 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
178 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(cmdarg_stack)
179 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
196 #define DVARS_INHERIT ((void*)1)
197 #define DVARS_TOPSCOPE NULL
198 #define DVARS_SPECIAL_P(tbl) (!POINTER_P(tbl))
199 #define POINTER_P(val) ((VALUE)(val) & ~(VALUE)3)
222 if (
VTBL_DEBUG) printf(
"vtable_alloc: %p\n", (
void *)tbl);
229 if (
VTBL_DEBUG)printf(
"vtable_free: %p\n", (
void *)tbl);
242 rb_bug(
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
259 for (i = 0; i < tbl->
pos; i++) {
260 if (tbl->
tbl[i] ==
id) {
356 VALUE parsing_thread;
361 #define STR_NEW(p,n) rb_enc_str_new((p),(n),current_enc)
362 #define STR_NEW0() rb_enc_str_new(0,0,current_enc)
363 #define STR_NEW2(p) rb_enc_str_new((p),strlen(p),current_enc)
364 #define STR_NEW3(p,n,e,func) parser_str_new((p),(n),(e),(func),current_enc)
365 #define ENC_SINGLE(cr) ((cr)==ENC_CODERANGE_7BIT)
366 #define TOK_INTERN(mb) rb_intern3(tok(), toklen(), current_enc)
369 #define yyerror(msg) parser_yyerror(parser, (msg))
371 #define lex_strterm (parser->parser_lex_strterm)
372 #define lex_state (parser->parser_lex_state)
373 #define cond_stack (parser->parser_cond_stack)
374 #define cmdarg_stack (parser->parser_cmdarg_stack)
375 #define class_nest (parser->parser_class_nest)
376 #define paren_nest (parser->parser_paren_nest)
377 #define lpar_beg (parser->parser_lpar_beg)
378 #define brace_nest (parser->parser_brace_nest)
379 #define in_single (parser->parser_in_single)
380 #define in_def (parser->parser_in_def)
381 #define compile_for_eval (parser->parser_compile_for_eval)
382 #define cur_mid (parser->parser_cur_mid)
383 #define in_defined (parser->parser_in_defined)
384 #define tokenbuf (parser->parser_tokenbuf)
385 #define tokidx (parser->parser_tokidx)
386 #define toksiz (parser->parser_toksiz)
387 #define tokline (parser->parser_tokline)
388 #define lex_input (parser->parser_lex_input)
389 #define lex_lastline (parser->parser_lex_lastline)
390 #define lex_nextline (parser->parser_lex_nextline)
391 #define lex_pbeg (parser->parser_lex_pbeg)
392 #define lex_p (parser->parser_lex_p)
393 #define lex_pend (parser->parser_lex_pend)
394 #define heredoc_end (parser->parser_heredoc_end)
395 #define command_start (parser->parser_command_start)
396 #define deferred_nodes (parser->parser_deferred_nodes)
397 #define lex_gets_ptr (parser->parser_lex_gets_ptr)
398 #define lex_gets (parser->parser_lex_gets)
399 #define lvtbl (parser->parser_lvtbl)
400 #define ruby__end__seen (parser->parser_ruby__end__seen)
401 #define ruby_sourceline (parser->parser_ruby_sourceline)
402 #define ruby_sourcefile (parser->parser_ruby_sourcefile)
403 #define ruby_sourcefile_string (parser->parser_ruby_sourcefile_string)
404 #define current_enc (parser->enc)
405 #define yydebug (parser->parser_yydebug)
408 #define ruby_eval_tree (parser->parser_eval_tree)
409 #define ruby_eval_tree_begin (parser->parser_eval_tree_begin)
410 #define ruby_debug_lines (parser->debug_lines)
411 #define ruby_coverage (parser->coverage)
415 static int yylex(
void*,
void*);
417 static int yylex(
void*);
421 #define yyparse ruby_yyparse
424 #define rb_node_newnode(type, a1, a2, a3) node_newnode(parser, (type), (a1), (a2), (a3))
427 #define cond(node) cond_gen(parser, (node))
429 #define logop(type,node1,node2) logop_gen(parser, (type), (node1), (node2))
438 #define value_expr(node) value_expr_gen(parser, (node) = remove_begin(node))
439 #define void_expr0(node) void_expr_gen(parser, (node))
440 #define void_expr(node) void_expr0((node) = remove_begin(node))
442 #define void_stmts(node) void_stmts_gen(parser, (node))
444 #define reduce_nodes(n) reduce_nodes_gen(parser,(n))
446 #define block_dup_check(n1,n2) block_dup_check_gen(parser,(n1),(n2))
449 #define block_append(h,t) block_append_gen(parser,(h),(t))
451 #define list_append(l,i) list_append_gen(parser,(l),(i))
453 #define list_concat(h,t) list_concat_gen(parser,(h),(t))
455 #define arg_append(h,t) arg_append_gen(parser,(h),(t))
457 #define arg_concat(h,t) arg_concat_gen(parser,(h),(t))
459 #define literal_concat(h,t) literal_concat_gen(parser,(h),(t))
462 #define new_evstr(n) new_evstr_gen(parser,(n))
464 #define evstr2dstr(n) evstr2dstr_gen(parser,(n))
468 #define call_bin_op(recv,id,arg1) call_bin_op_gen(parser, (recv),(id),(arg1))
470 #define call_uni_op(recv,id) call_uni_op_gen(parser, (recv),(id))
473 #define new_args(f,o,r,p,t) new_args_gen(parser, (f),(o),(r),(p),(t))
475 #define new_args_tail(k,kr,b) new_args_tail_gen(parser, (k),(kr),(b))
479 #define ret_args(node) ret_args_gen(parser, (node))
482 #define new_yield(node) new_yield_gen(parser, (node))
484 #define dsym_node(node) dsym_node_gen(parser, (node))
487 #define gettable(id) gettable_gen(parser,(id))
489 #define assignable(id,node) assignable_gen(parser, (id), (node))
492 #define aryset(node1,node2) aryset_gen(parser, (node1), (node2))
494 #define attrset(node,id) attrset_gen(parser, (node), (id))
497 #define rb_backref_error(n) rb_backref_error_gen(parser,(n))
499 #define node_assign(node1, node2) node_assign_gen(parser, (node1), (node2))
503 #define new_attr_op_assign(lhs, type, attr, op, rhs) new_attr_op_assign_gen(parser, (lhs), (attr), (op), (rhs))
505 #define new_const_op_assign(lhs, op, rhs) new_const_op_assign_gen(parser, (lhs), (op), (rhs))
507 #define new_defined(expr) NEW_DEFINED(remove_begin_all(expr))
510 #define match_op(node1,node2) match_op_gen(parser, (node1), (node2))
513 #define local_tbl() local_tbl_gen(parser)
518 #define reg_compile(str,options) reg_compile_gen(parser, (str), (options))
520 #define reg_fragment_setenc(str,options) reg_fragment_setenc_gen(parser, (str), (options))
522 #define reg_fragment_check(str,options) reg_fragment_check_gen(parser, (str), (options))
524 #define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,(regexp),(match))
526 #define get_id(id) (id)
527 #define get_value(val) (val)
529 #define value_expr(node) ((void)(node))
530 #define remove_begin(node) (node)
531 #define rb_dvar_defined(id) 0
532 #define rb_local_defined(id) 0
533 static ID ripper_get_id(
VALUE);
534 #define get_id(id) ripper_get_id(id)
536 #define get_value(val) ripper_get_value(val)
538 #define assignable(lhs,node) assignable_gen(parser, (lhs))
540 #define id_is_var(id) id_is_var_gen(parser, (id))
542 #define node_assign(node1, node2) dispatch2(assign, (node1), (node2))
546 #define new_attr_op_assign(lhs, type, attr, op, rhs) new_attr_op_assign_gen(parser, (lhs), (type), (attr), (op), (rhs))
550 #define new_op_assign(lhs, op, rhs) new_op_assign_gen(parser, (lhs), (op), (rhs))
553 #define formal_argument(id) formal_argument_gen(parser, (id))
555 #define shadowing_lvar(name) shadowing_lvar_gen(parser, (name))
557 #define new_bv(id) new_bv_gen(parser, (id))
560 #define local_push(top) local_push_gen(parser,(top))
562 #define local_pop() local_pop_gen(parser)
564 #define local_var(id) local_var_gen(parser, (id))
566 #define arg_var(id) arg_var_gen(parser, (id))
568 #define local_id(id) local_id_gen(parser, (id))
570 #define internal_id() internal_id_gen(parser)
573 #define dyna_push() dyna_push_gen(parser)
575 #define dyna_pop(node) dyna_pop_gen(parser, (node))
577 #define dyna_in_block() dyna_in_block_gen(parser)
578 #define dyna_var(id) local_var(id)
580 #define dvar_defined(id) dvar_defined_gen(parser, (id), 0)
581 #define dvar_defined_get(id) dvar_defined_gen(parser, (id), 1)
583 #define dvar_curr(id) dvar_curr_gen(parser, (id))
586 #define lvar_defined(id) lvar_defined_gen(parser, (id))
588 #define RE_OPTION_ONCE (1<<16)
589 #define RE_OPTION_ENCODING_SHIFT 8
590 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
591 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
592 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
593 #define RE_OPTION_MASK 0xff
594 #define RE_OPTION_ARG_ENCODING_NONE 32
596 #define NODE_STRTERM NODE_ZARRAY
597 #define NODE_HEREDOC NODE_ARRAY
598 #define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
599 #define nd_func u1.id
600 #if SIZEOF_SHORT == 2
601 #define nd_term(node) ((signed short)(node)->u2.id)
603 #define nd_term(node) SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
605 #define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
606 #define nd_nest u3.cnt
611 #define RIPPER_VERSION "0.1.0"
624 #define dispatch0(n) ripper_dispatch0(parser, TOKEN_PASTE(ripper_id_, n))
625 #define dispatch1(n,a) ripper_dispatch1(parser, TOKEN_PASTE(ripper_id_, n), (a))
626 #define dispatch2(n,a,b) ripper_dispatch2(parser, TOKEN_PASTE(ripper_id_, n), (a), (b))
627 #define dispatch3(n,a,b,c) ripper_dispatch3(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
628 #define dispatch4(n,a,b,c,d) ripper_dispatch4(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
629 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
630 #define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(parser, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
632 #define yyparse ripper_yyparse
634 #define ripper_intern(s) ID2SYM(rb_intern(s))
635 static VALUE ripper_id2sym(
ID);
637 #define ripper_id2sym(id) ((id) < 256 && rb_ispunct(id) ? \
638 ID2SYM(id) : ripper_id2sym(id))
641 #define arg_new() dispatch0(args_new)
642 #define arg_add(l,a) dispatch2(args_add, (l), (a))
643 #define arg_add_star(l,a) dispatch2(args_add_star, (l), (a))
644 #define arg_add_block(l,b) dispatch2(args_add_block, (l), (b))
645 #define arg_add_optblock(l,b) ((b)==Qundef? (l) : dispatch2(args_add_block, (l), (b)))
646 #define bare_assoc(v) dispatch1(bare_assoc_hash, (v))
647 #define arg_add_assocs(l,b) arg_add((l), bare_assoc(b))
649 #define args2mrhs(a) dispatch1(mrhs_new_from_args, (a))
650 #define mrhs_new() dispatch0(mrhs_new)
651 #define mrhs_add(l,a) dispatch2(mrhs_add, (l), (a))
652 #define mrhs_add_star(l,a) dispatch2(mrhs_add_star, (l), (a))
654 #define mlhs_new() dispatch0(mlhs_new)
655 #define mlhs_add(l,a) dispatch2(mlhs_add, (l), (a))
656 #define mlhs_add_star(l,a) dispatch2(mlhs_add_star, (l), (a))
658 #define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
659 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
661 #define blockvar_new(p,v) dispatch2(block_var, (p), (v))
662 #define blockvar_add_star(l,a) dispatch2(block_var_add_star, (l), (a))
663 #define blockvar_add_block(l,a) dispatch2(block_var_add_block, (l), (a))
665 #define method_optarg(m,a) ((a)==Qundef ? (m) : dispatch2(method_add_arg,(m),(a)))
666 #define method_arg(m,a) dispatch2(method_add_arg,(m),(a))
667 #define method_add_block(m,b) dispatch2(method_add_block, (m), (b))
669 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
676 return params_new(f, o, r, p, k, kr, escape_Qundef(b));
678 #define new_args(f,o,r,p,t) new_args_gen(parser, (f),(o),(r),(p),(t))
685 #define new_args_tail(k,kr,b) new_args_tail_gen(parser, (k),(kr),(b))
687 #define new_defined(expr) dispatch1(defined, (expr))
695 # define ifndef_ripper(x) (x)
698 # define ifndef_ripper(x)
702 # define rb_warn0(fmt) rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt))
703 # define rb_warnI(fmt,a) rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
704 # define rb_warnS(fmt,a) rb_compile_warn(ruby_sourcefile, ruby_sourceline, (fmt), (a))
705 # define rb_warn4S(file,line,fmt,a) rb_compile_warn((file), (line), (fmt), (a))
706 # define rb_warning0(fmt) rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt))
707 # define rb_warningS(fmt,a) rb_compile_warning(ruby_sourcefile, ruby_sourceline, (fmt), (a))
709 # define rb_warn0(fmt) ripper_warn0(parser, (fmt))
710 # define rb_warnI(fmt,a) ripper_warnI(parser, (fmt), (a))
711 # define rb_warnS(fmt,a) ripper_warnS(parser, (fmt), (a))
712 # define rb_warn4S(file,line,fmt,a) ripper_warnS(parser, (fmt), (a))
713 # define rb_warning0(fmt) ripper_warning0(parser, (fmt))
714 # define rb_warningS(fmt,a) ripper_warningS(parser, (fmt), (a))
715 static void ripper_warn0(
struct parser_params*,
const char*);
716 static void ripper_warnI(
struct parser_params*,
const char*,
int);
717 static void ripper_warnS(
struct parser_params*,
const char*,
const char*);
718 static void ripper_warning0(
struct parser_params*,
const char*);
719 static void ripper_warningS(
struct parser_params*,
const char*,
const char*);
723 static void ripper_compile_error(
struct parser_params*,
const char *fmt, ...);
724 # define rb_compile_error ripper_compile_error
725 # define compile_error ripper_compile_error
726 # define PARSER_ARG parser,
728 # define rb_compile_error rb_compile_error_with_enc
729 # define compile_error parser->nerr++,rb_compile_error_with_enc
730 # define PARSER_ARG ruby_sourcefile, ruby_sourceline, current_enc,
738 #define YYMAXDEPTH 10000
745 #define token_info_push(token) (RTEST(ruby_verbose) ? token_info_push(parser, (token)) : (void)0)
746 #define token_info_pop(token) (RTEST(ruby_verbose) ? token_info_pop(parser, (token)) : (void)0)
748 #define token_info_push(token)
749 #define token_info_pop(token)
762 #ifdef YYERROR_VERBOSE
763 # undef YYERROR_VERBOSE
764 # define YYERROR_VERBOSE 1
766 # define YYERROR_VERBOSE 0
770 #ifndef YYTOKEN_TABLE
771 # define YYTOKEN_TABLE 0
901 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
919 # define YYSTYPE_IS_TRIVIAL 1
920 # define yystype YYSTYPE
921 # define YYSTYPE_IS_DECLARED 1
943 #elif (defined __STDC__ || defined __C99__FUNC__ \
944 || defined __cplusplus || defined _MSC_VER)
963 # ifdef __SIZE_TYPE__
964 # define YYSIZE_T __SIZE_TYPE__
965 # elif defined size_t
966 # define YYSIZE_T size_t
967 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
968 || defined __cplusplus || defined _MSC_VER)
970 # define YYSIZE_T size_t
972 # define YYSIZE_T unsigned int
976 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
979 # if defined YYENABLE_NLS && YYENABLE_NLS
981 # include <libintl.h>
982 # define YY_(msgid) dgettext ("bison-runtime", msgid)
986 # define YY_(msgid) msgid
991 #if ! defined lint || defined __GNUC__
992 # define YYUSE(e) ((void) (e))
1001 #if (defined __STDC__ || defined __C99__FUNC__ \
1002 || defined __cplusplus || defined _MSC_VER)
1015 #if ! defined yyoverflow || YYERROR_VERBOSE
1019 # ifdef YYSTACK_USE_ALLOCA
1020 # if YYSTACK_USE_ALLOCA
1022 # define YYSTACK_ALLOC __builtin_alloca
1023 # elif defined __BUILTIN_VA_ARG_INCR
1024 # include <alloca.h>
1026 # define YYSTACK_ALLOC __alloca
1027 # elif defined _MSC_VER
1028 # include <malloc.h>
1029 # define alloca _alloca
1031 # define YYSTACK_ALLOC alloca
1032 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1033 || defined __cplusplus || defined _MSC_VER)
1034 # include <stdlib.h>
1035 # ifndef EXIT_SUCCESS
1036 # define EXIT_SUCCESS 0
1043 # ifdef YYSTACK_ALLOC
1045 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
1046 # ifndef YYSTACK_ALLOC_MAXIMUM
1051 # define YYSTACK_ALLOC_MAXIMUM 4032
1054 # define YYSTACK_ALLOC YYMALLOC
1055 # define YYSTACK_FREE YYFREE
1056 # ifndef YYSTACK_ALLOC_MAXIMUM
1057 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1059 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1060 && ! ((defined YYMALLOC || defined malloc) \
1061 && (defined YYFREE || defined free)))
1062 # include <stdlib.h>
1063 # ifndef EXIT_SUCCESS
1064 # define EXIT_SUCCESS 0
1068 # define YYMALLOC malloc
1069 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1070 || defined __cplusplus || defined _MSC_VER)
1075 # define YYFREE free
1076 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1077 || defined __cplusplus || defined _MSC_VER)
1085 #if (! defined yyoverflow \
1086 && (! defined __cplusplus \
1087 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1097 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1101 # define YYSTACK_BYTES(N) \
1102 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
1103 + YYSTACK_GAP_MAXIMUM)
1105 # define YYCOPY_NEEDED 1
1112 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1115 YYSIZE_T yynewbytes; \
1116 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1117 Stack = &yyptr->Stack_alloc; \
1118 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1119 yyptr += yynewbytes / sizeof (*yyptr); \
1125 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1129 # if defined __GNUC__ && 1 < __GNUC__
1130 # define YYCOPY(To, From, Count) \
1131 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
1133 # define YYCOPY(To, From, Count) \
1137 for (yyi = 0; yyi < (Count); yyi++) \
1138 (To)[yyi] = (From)[yyi]; \
1148 #define YYLAST 11071
1151 #define YYNTOKENS 144
1155 #define YYNRULES 626
1157 #define YYNSTATES 1059
1160 #define YYUNDEFTOK 2
1161 #define YYMAXUTOK 354
1163 #define YYTRANSLATE(YYX) \
1164 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1169 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1170 143, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1171 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1172 2, 2, 142, 129, 2, 2, 2, 127, 122, 2,
1173 138, 139, 125, 123, 136, 124, 135, 126, 2, 2,
1174 2, 2, 2, 2, 2, 2, 2, 2, 117, 141,
1175 119, 115, 118, 116, 2, 2, 2, 2, 2, 2,
1176 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1178 2, 134, 2, 140, 121, 2, 137, 2, 2, 2,
1179 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1180 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1181 2, 2, 2, 132, 120, 133, 130, 2, 81, 82,
1182 68, 69, 70, 2, 71, 85, 86, 76, 75, 72,
1183 73, 74, 79, 80, 83, 84, 2, 2, 2, 2,
1184 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1185 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1186 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1187 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1188 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1189 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1194 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1195 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1196 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1197 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1198 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1199 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1200 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1201 65, 66, 67, 77, 78, 87, 88, 89, 90, 91,
1202 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1203 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
1204 112, 113, 114, 128, 131
1212 0, 0, 3, 4, 7, 10, 12, 14, 18, 21,
1213 23, 24, 30, 35, 38, 40, 42, 46, 49, 51,
1214 52, 58, 59, 64, 68, 72, 76, 79, 83, 87,
1215 91, 95, 99, 104, 106, 110, 114, 121, 127, 133,
1216 139, 145, 149, 153, 157, 159, 163, 167, 169, 173,
1217 177, 181, 184, 186, 188, 190, 192, 194, 199, 200,
1218 206, 208, 211, 215, 220, 226, 231, 237, 240, 243,
1219 246, 249, 252, 254, 258, 260, 264, 266, 269, 273,
1220 279, 282, 287, 290, 295, 297, 301, 303, 307, 310,
1221 314, 316, 320, 322, 324, 329, 333, 337, 341, 345,
1222 348, 350, 352, 354, 359, 363, 367, 371, 375, 378,
1223 380, 382, 384, 387, 389, 393, 395, 397, 399, 401,
1224 403, 405, 407, 409, 411, 413, 414, 419, 421, 423,
1225 425, 427, 429, 431, 433, 435, 437, 439, 441, 443,
1226 445, 447, 449, 451, 453, 455, 457, 459, 461, 463,
1227 465, 467, 469, 471, 473, 475, 477, 479, 481, 483,
1228 485, 487, 489, 491, 493, 495, 497, 499, 501, 503,
1229 505, 507, 509, 511, 513, 515, 517, 519, 521, 523,
1230 525, 527, 529, 531, 533, 535, 537, 539, 541, 543,
1231 545, 547, 549, 551, 553, 555, 557, 559, 561, 565,
1232 571, 575, 581, 588, 594, 600, 606, 612, 617, 621,
1233 625, 629, 633, 637, 641, 645, 649, 653, 658, 661,
1234 664, 668, 672, 676, 680, 684, 688, 692, 696, 700,
1235 704, 708, 712, 716, 719, 722, 726, 730, 734, 738,
1236 739, 744, 751, 753, 755, 757, 760, 765, 768, 772,
1237 774, 776, 778, 780, 783, 788, 791, 793, 796, 799,
1238 804, 806, 807, 810, 813, 816, 818, 820, 823, 827,
1239 832, 834, 836, 840, 845, 848, 850, 852, 854, 856,
1240 858, 860, 862, 864, 866, 868, 870, 871, 876, 877,
1241 881, 882, 883, 889, 893, 897, 900, 904, 908, 910,
1242 915, 919, 921, 922, 929, 934, 938, 941, 943, 946,
1243 949, 956, 963, 964, 965, 973, 974, 975, 983, 989,
1244 994, 995, 996, 1006, 1007, 1014, 1015, 1016, 1025, 1026,
1245 1032, 1033, 1040, 1041, 1042, 1052, 1054, 1056, 1058, 1060,
1246 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080,
1247 1082, 1084, 1086, 1088, 1091, 1093, 1095, 1097, 1103, 1105,
1248 1108, 1110, 1112, 1114, 1118, 1120, 1124, 1126, 1131, 1138,
1249 1142, 1148, 1151, 1156, 1158, 1162, 1167, 1170, 1173, 1175,
1250 1178, 1179, 1186, 1195, 1200, 1207, 1212, 1215, 1222, 1225,
1251 1230, 1237, 1240, 1245, 1248, 1253, 1255, 1257, 1259, 1263,
1252 1265, 1270, 1272, 1277, 1279, 1283, 1285, 1287, 1288, 1289,
1253 1290, 1296, 1301, 1303, 1307, 1311, 1312, 1318, 1321, 1326,
1254 1332, 1338, 1341, 1342, 1348, 1349, 1355, 1359, 1360, 1365,
1255 1366, 1371, 1374, 1376, 1381, 1382, 1388, 1389, 1395, 1401,
1256 1403, 1405, 1412, 1414, 1416, 1418, 1420, 1423, 1425, 1428,
1257 1430, 1432, 1434, 1436, 1438, 1440, 1442, 1445, 1449, 1453,
1258 1457, 1461, 1465, 1466, 1470, 1472, 1475, 1479, 1483, 1484,
1259 1488, 1492, 1496, 1500, 1504, 1505, 1509, 1510, 1514, 1515,
1260 1518, 1519, 1522, 1523, 1526, 1528, 1529, 1533, 1534, 1535,
1261 1536, 1543, 1545, 1547, 1549, 1551, 1554, 1556, 1558, 1560,
1262 1562, 1566, 1568, 1571, 1573, 1575, 1577, 1579, 1581, 1583,
1263 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599, 1601, 1603,
1264 1605, 1607, 1609, 1611, 1613, 1615, 1617, 1618, 1623, 1626,
1265 1630, 1631, 1635, 1640, 1643, 1646, 1648, 1651, 1652, 1659,
1266 1668, 1673, 1680, 1685, 1692, 1695, 1700, 1707, 1710, 1715,
1267 1718, 1723, 1725, 1726, 1728, 1730, 1732, 1734, 1736, 1738,
1268 1740, 1744, 1746, 1750, 1752, 1755, 1757, 1760, 1762, 1764,
1269 1768, 1770, 1774, 1776, 1778, 1781, 1783, 1787, 1791, 1793,
1270 1797, 1799, 1803, 1805, 1807, 1810, 1812, 1814, 1816, 1819,
1271 1822, 1824, 1826, 1827, 1832, 1834, 1837, 1839, 1843, 1847,
1272 1850, 1853, 1855, 1857, 1859, 1861, 1863, 1865, 1867, 1869,
1273 1871, 1873, 1875, 1877, 1878, 1880, 1881, 1883, 1886, 1889,
1274 1890, 1892, 1894, 1896, 1898, 1900, 1903
1280 145, 0, -1, -1, 146, 147, -1, 148, 339, -1,
1281 346, -1, 149, -1, 148, 345, 149, -1, 1, 149,
1282 -1, 156, -1, -1, 47, 150, 132, 147, 133, -1,
1283 152, 265, 233, 268, -1, 153, 339, -1, 346, -1,
1284 154, -1, 153, 345, 154, -1, 1, 156, -1, 156,
1285 -1, -1, 47, 155, 132, 147, 133, -1, -1, 45,
1286 179, 157, 179, -1, 45, 54, 54, -1, 45, 54,
1287 66, -1, 45, 54, 65, -1, 6, 180, -1, 156,
1288 40, 160, -1, 156, 41, 160, -1, 156, 42, 160,
1289 -1, 156, 43, 160, -1, 156, 44, 156, -1, 48,
1290 132, 152, 133, -1, 158, -1, 167, 115, 161, -1,
1291 301, 89, 161, -1, 218, 134, 190, 342, 89, 161,
1292 -1, 218, 135, 52, 89, 161, -1, 218, 135, 56,
1293 89, 161, -1, 218, 87, 56, 89, 161, -1, 218,
1294 87, 52, 89, 161, -1, 302, 89, 161, -1, 174,
1295 115, 198, -1, 167, 115, 197, -1, 159, -1, 174,
1296 115, 161, -1, 174, 115, 158, -1, 161, -1, 159,
1297 37, 159, -1, 159, 38, 159, -1, 39, 340, 159,
1298 -1, 129, 161, -1, 184, -1, 159, -1, 166, -1,
1299 162, -1, 254, -1, 254, 338, 336, 192, -1, -1,
1300 96, 164, 241, 152, 133, -1, 335, -1, 165, 192,
1301 -1, 165, 192, 163, -1, 218, 135, 336, 192, -1,
1302 218, 135, 336, 192, 163, -1, 218, 87, 336, 192,
1303 -1, 218, 87, 336, 192, 163, -1, 32, 192, -1,
1304 31, 192, -1, 30, 191, -1, 21, 191, -1, 22,
1305 191, -1, 169, -1, 91, 168, 341, -1, 169, -1,
1306 91, 168, 341, -1, 171, -1, 171, 170, -1, 171,
1307 97, 173, -1, 171, 97, 173, 136, 172, -1, 171,
1308 97, -1, 171, 97, 136, 172, -1, 97, 173, -1,
1309 97, 173, 136, 172, -1, 97, -1, 97, 136, 172,
1310 -1, 173, -1, 91, 168, 341, -1, 170, 136, -1,
1311 171, 170, 136, -1, 170, -1, 172, 136, 170, -1,
1312 298, -1, 299, -1, 218, 134, 190, 342, -1, 218,
1313 135, 52, -1, 218, 87, 52, -1, 218, 135, 56,
1314 -1, 218, 87, 56, -1, 88, 56, -1, 302, -1,
1315 298, -1, 299, -1, 218, 134, 190, 342, -1, 218,
1316 135, 52, -1, 218, 87, 52, -1, 218, 135, 56,
1317 -1, 218, 87, 56, -1, 88, 56, -1, 302, -1,
1318 52, -1, 56, -1, 88, 175, -1, 175, -1, 218,
1319 87, 175, -1, 52, -1, 56, -1, 53, -1, 182,
1320 -1, 183, -1, 177, -1, 293, -1, 178, -1, 295,
1321 -1, 179, -1, -1, 180, 136, 181, 179, -1, 120,
1322 -1, 121, -1, 122, -1, 71, -1, 72, -1, 73,
1323 -1, 79, -1, 80, -1, 118, -1, 75, -1, 119,
1324 -1, 76, -1, 74, -1, 85, -1, 86, -1, 123,
1325 -1, 124, -1, 125, -1, 97, -1, 126, -1, 127,
1326 -1, 70, -1, 98, -1, 129, -1, 130, -1, 68,
1327 -1, 69, -1, 83, -1, 84, -1, 137, -1, 49,
1328 -1, 50, -1, 51, -1, 47, -1, 48, -1, 45,
1329 -1, 37, -1, 7, -1, 21, -1, 16, -1, 3,
1330 -1, 5, -1, 46, -1, 26, -1, 15, -1, 14,
1331 -1, 10, -1, 9, -1, 36, -1, 20, -1, 25,
1332 -1, 4, -1, 22, -1, 34, -1, 39, -1, 38,
1333 -1, 23, -1, 8, -1, 24, -1, 30, -1, 33,
1334 -1, 32, -1, 13, -1, 35, -1, 6, -1, 17,
1335 -1, 31, -1, 11, -1, 12, -1, 18, -1, 19,
1336 -1, 174, 115, 184, -1, 174, 115, 184, 44, 184,
1337 -1, 301, 89, 184, -1, 301, 89, 184, 44, 184,
1338 -1, 218, 134, 190, 342, 89, 184, -1, 218, 135,
1339 52, 89, 184, -1, 218, 135, 56, 89, 184, -1,
1340 218, 87, 52, 89, 184, -1, 218, 87, 56, 89,
1341 184, -1, 88, 56, 89, 184, -1, 302, 89, 184,
1342 -1, 184, 81, 184, -1, 184, 82, 184, -1, 184,
1343 123, 184, -1, 184, 124, 184, -1, 184, 125, 184,
1344 -1, 184, 126, 184, -1, 184, 127, 184, -1, 184,
1345 70, 184, -1, 128, 297, 70, 184, -1, 68, 184,
1346 -1, 69, 184, -1, 184, 120, 184, -1, 184, 121,
1347 184, -1, 184, 122, 184, -1, 184, 71, 184, -1,
1348 184, 118, 184, -1, 184, 75, 184, -1, 184, 119,
1349 184, -1, 184, 76, 184, -1, 184, 72, 184, -1,
1350 184, 73, 184, -1, 184, 74, 184, -1, 184, 79,
1351 184, -1, 184, 80, 184, -1, 129, 184, -1, 130,
1352 184, -1, 184, 85, 184, -1, 184, 86, 184, -1,
1353 184, 77, 184, -1, 184, 78, 184, -1, -1, 46,
1354 340, 185, 184, -1, 184, 116, 184, 340, 117, 184,
1355 -1, 199, -1, 184, -1, 346, -1, 196, 343, -1,
1356 196, 136, 333, 343, -1, 333, 343, -1, 138, 190,
1357 341, -1, 346, -1, 188, -1, 346, -1, 191, -1,
1358 196, 136, -1, 196, 136, 333, 136, -1, 333, 136,
1359 -1, 166, -1, 196, 195, -1, 333, 195, -1, 196,
1360 136, 333, 195, -1, 194, -1, -1, 193, 191, -1,
1361 99, 186, -1, 136, 194, -1, 346, -1, 186, -1,
1362 97, 186, -1, 196, 136, 186, -1, 196, 136, 97,
1363 186, -1, 198, -1, 186, -1, 196, 136, 186, -1,
1364 196, 136, 97, 186, -1, 97, 186, -1, 269, -1,
1365 270, -1, 273, -1, 274, -1, 275, -1, 280, -1,
1366 278, -1, 281, -1, 300, -1, 302, -1, 53, -1,
1367 -1, 219, 200, 151, 229, -1, -1, 92, 201, 341,
1368 -1, -1, -1, 92, 202, 159, 203, 341, -1, 91,
1369 152, 139, -1, 218, 87, 56, -1, 88, 56, -1,
1370 94, 187, 140, -1, 95, 332, 133, -1, 30, -1,
1371 31, 138, 191, 341, -1, 31, 138, 341, -1, 31,
1372 -1, -1, 46, 340, 138, 204, 159, 341, -1, 39,
1373 138, 159, 341, -1, 39, 138, 341, -1, 165, 260,
1374 -1, 255, -1, 255, 260, -1, 100, 246, -1, 220,
1375 160, 230, 152, 232, 229, -1, 221, 160, 230, 152,
1376 233, 229, -1, -1, -1, 222, 205, 160, 231, 206,
1377 152, 229, -1, -1, -1, 223, 207, 160, 231, 208,
1378 152, 229, -1, 224, 160, 339, 263, 229, -1, 224,
1379 339, 263, 229, -1, -1, -1, 225, 234, 25, 209,
1380 160, 231, 210, 152, 229, -1, -1, 226, 176, 303,
1381 211, 151, 229, -1, -1, -1, 226, 85, 159, 212,
1382 344, 213, 151, 229, -1, -1, 227, 176, 214, 151,
1383 229, -1, -1, 228, 177, 215, 305, 151, 229, -1,
1384 -1, -1, 228, 330, 338, 216, 177, 217, 305, 151,
1385 229, -1, 21, -1, 22, -1, 23, -1, 24, -1,
1386 199, -1, 7, -1, 11, -1, 12, -1, 18, -1,
1387 19, -1, 16, -1, 20, -1, 3, -1, 4, -1,
1388 5, -1, 10, -1, 344, -1, 13, -1, 344, 13,
1389 -1, 344, -1, 27, -1, 233, -1, 14, 160, 230,
1390 152, 232, -1, 346, -1, 15, 152, -1, 174, -1,
1391 167, -1, 311, -1, 91, 237, 341, -1, 235, -1,
1392 236, 136, 235, -1, 236, -1, 236, 136, 97, 311,
1393 -1, 236, 136, 97, 311, 136, 236, -1, 236, 136,
1394 97, -1, 236, 136, 97, 136, 236, -1, 97, 311,
1395 -1, 97, 311, 136, 236, -1, 97, -1, 97, 136,
1396 236, -1, 317, 136, 320, 329, -1, 317, 329, -1,
1397 320, 329, -1, 328, -1, 136, 238, -1, -1, 313,
1398 136, 323, 136, 326, 239, -1, 313, 136, 323, 136,
1399 326, 136, 313, 239, -1, 313, 136, 323, 239, -1,
1400 313, 136, 323, 136, 313, 239, -1, 313, 136, 326,
1401 239, -1, 313, 136, -1, 313, 136, 326, 136, 313,
1402 239, -1, 313, 239, -1, 323, 136, 326, 239, -1,
1403 323, 136, 326, 136, 313, 239, -1, 323, 239, -1,
1404 323, 136, 313, 239, -1, 326, 239, -1, 326, 136,
1405 313, 239, -1, 238, -1, 346, -1, 242, -1, 120,
1406 243, 120, -1, 78, -1, 120, 240, 243, 120, -1,
1407 340, -1, 340, 141, 244, 340, -1, 245, -1, 244,
1408 136, 245, -1, 52, -1, 310, -1, -1, -1, -1,
1409 247, 248, 250, 249, 251, -1, 138, 309, 243, 139,
1410 -1, 309, -1, 113, 152, 133, -1, 29, 152, 10,
1411 -1, -1, 28, 253, 241, 152, 10, -1, 166, 252,
1412 -1, 254, 338, 336, 189, -1, 254, 338, 336, 189,
1413 260, -1, 254, 338, 336, 192, 252, -1, 165, 188,
1414 -1, -1, 218, 135, 336, 256, 189, -1, -1, 218,
1415 87, 336, 257, 188, -1, 218, 87, 337, -1, -1,
1416 218, 135, 258, 188, -1, -1, 218, 87, 259, 188,
1417 -1, 32, 188, -1, 32, -1, 218, 134, 190, 342,
1418 -1, -1, 132, 261, 241, 152, 133, -1, -1, 26,
1419 262, 241, 152, 10, -1, 17, 196, 230, 152, 264,
1420 -1, 233, -1, 263, -1, 8, 266, 267, 230, 152,
1421 265, -1, 346, -1, 186, -1, 198, -1, 346, -1,
1422 90, 174, -1, 346, -1, 9, 152, -1, 346, -1,
1423 296, -1, 293, -1, 295, -1, 271, -1, 64, -1,
1424 272, -1, 271, 272, -1, 102, 284, 112, -1, 103,
1425 285, 112, -1, 104, 286, 67, -1, 105, 142, 112,
1426 -1, 105, 276, 112, -1, -1, 276, 277, 142, -1,
1427 287, -1, 277, 287, -1, 107, 142, 112, -1, 107,
1428 279, 112, -1, -1, 279, 277, 142, -1, 106, 142,
1429 112, -1, 106, 282, 112, -1, 108, 142, 112, -1,
1430 108, 283, 112, -1, -1, 282, 63, 142, -1, -1,
1431 283, 63, 142, -1, -1, 284, 287, -1, -1, 285,
1432 287, -1, -1, 286, 287, -1, 63, -1, -1, 111,
1433 288, 292, -1, -1, -1, -1, 109, 289, 290, 291,
1434 152, 110, -1, 54, -1, 55, -1, 57, -1, 302,
1435 -1, 101, 294, -1, 177, -1, 55, -1, 54, -1,
1436 57, -1, 101, 285, 112, -1, 297, -1, 128, 297,
1437 -1, 59, -1, 60, -1, 61, -1, 62, -1, 52,
1438 -1, 55, -1, 54, -1, 56, -1, 57, -1, 34,
1439 -1, 33, -1, 35, -1, 36, -1, 50, -1, 49,
1440 -1, 51, -1, 298, -1, 299, -1, 298, -1, 299,
1441 -1, 65, -1, 66, -1, 344, -1, -1, 119, 304,
1442 160, 344, -1, 1, 344, -1, 138, 309, 341, -1,
1443 -1, 306, 309, 344, -1, 318, 136, 320, 329, -1,
1444 318, 329, -1, 320, 329, -1, 328, -1, 136, 307,
1445 -1, -1, 313, 136, 324, 136, 326, 308, -1, 313,
1446 136, 324, 136, 326, 136, 313, 308, -1, 313, 136,
1447 324, 308, -1, 313, 136, 324, 136, 313, 308, -1,
1448 313, 136, 326, 308, -1, 313, 136, 326, 136, 313,
1449 308, -1, 313, 308, -1, 324, 136, 326, 308, -1,
1450 324, 136, 326, 136, 313, 308, -1, 324, 308, -1,
1451 324, 136, 313, 308, -1, 326, 308, -1, 326, 136,
1452 313, 308, -1, 307, -1, -1, 56, -1, 55, -1,
1453 54, -1, 57, -1, 310, -1, 52, -1, 311, -1,
1454 91, 237, 341, -1, 312, -1, 313, 136, 312, -1,
1455 58, -1, 314, 186, -1, 314, -1, 314, 218, -1,
1456 314, -1, 316, -1, 317, 136, 316, -1, 315, -1,
1457 318, 136, 315, -1, 70, -1, 98, -1, 319, 52,
1458 -1, 319, -1, 311, 115, 186, -1, 311, 115, 218,
1459 -1, 322, -1, 323, 136, 322, -1, 321, -1, 324,
1460 136, 321, -1, 125, -1, 97, -1, 325, 52, -1,
1461 325, -1, 122, -1, 99, -1, 327, 52, -1, 136,
1462 328, -1, 346, -1, 300, -1, -1, 138, 331, 159,
1463 341, -1, 346, -1, 333, 343, -1, 334, -1, 333,
1464 136, 334, -1, 186, 90, 186, -1, 58, 186, -1,
1465 98, 186, -1, 52, -1, 56, -1, 53, -1, 52,
1466 -1, 56, -1, 53, -1, 182, -1, 52, -1, 53,
1467 -1, 182, -1, 135, -1, 87, -1, -1, 345, -1,
1468 -1, 143, -1, 340, 139, -1, 340, 140, -1, -1,
1469 143, -1, 136, -1, 141, -1, 143, -1, 344, -1,
1476 0, 863, 863, 863, 894, 905, 914, 922, 930, 936,
1477 938, 937, 958, 991, 1002, 1011, 1019, 1027, 1033, 1038,
1478 1037, 1058, 1058, 1066, 1074, 1085, 1095, 1103, 1112, 1121,
1479 1134, 1147, 1156, 1168, 1169, 1179, 1184, 1205, 1210, 1215,
1480 1225, 1230, 1240, 1249, 1258, 1261, 1270, 1282, 1283, 1291,
1481 1299, 1307, 1315, 1318, 1330, 1331, 1334, 1335, 1347, 1346,
1482 1368, 1378, 1387, 1400, 1409, 1421, 1430, 1442, 1451, 1460,
1483 1468, 1476, 1486, 1487, 1497, 1498, 1508, 1516, 1524, 1532,
1484 1541, 1549, 1558, 1566, 1575, 1583, 1594, 1595, 1605, 1613,
1485 1623, 1631, 1641, 1645, 1649, 1657, 1665, 1673, 1681, 1693,
1486 1703, 1715, 1724, 1733, 1741, 1749, 1757, 1765, 1778, 1791,
1487 1802, 1810, 1813, 1821, 1829, 1839, 1840, 1841, 1842, 1847,
1488 1858, 1859, 1862, 1870, 1873, 1881, 1881, 1891, 1892, 1893,
1489 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903,
1490 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913,
1491 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1923, 1923, 1923,
1492 1924, 1924, 1925, 1925, 1925, 1926, 1926, 1926, 1926, 1927,
1493 1927, 1927, 1927, 1928, 1928, 1928, 1929, 1929, 1929, 1929,
1494 1930, 1930, 1930, 1930, 1931, 1931, 1931, 1931, 1932, 1932,
1495 1932, 1932, 1933, 1933, 1933, 1933, 1934, 1934, 1937, 1946,
1496 1956, 1961, 1971, 1997, 2002, 2007, 2012, 2022, 2032, 2043,
1497 2057, 2071, 2079, 2087, 2095, 2103, 2111, 2119, 2128, 2136,
1498 2144, 2152, 2160, 2168, 2176, 2184, 2192, 2200, 2208, 2216,
1499 2224, 2232, 2243, 2251, 2259, 2267, 2275, 2283, 2291, 2299,
1500 2299, 2309, 2319, 2325, 2337, 2338, 2342, 2350, 2360, 2370,
1501 2371, 2374, 2375, 2376, 2380, 2388, 2398, 2407, 2415, 2425,
1502 2434, 2443, 2443, 2455, 2465, 2469, 2475, 2483, 2491, 2505,
1503 2521, 2522, 2525, 2539, 2554, 2564, 2565, 2566, 2567, 2568,
1504 2569, 2570, 2571, 2572, 2573, 2574, 2583, 2582, 2610, 2610,
1505 2619, 2623, 2618, 2632, 2640, 2648, 2656, 2669, 2677, 2685,
1506 2693, 2701, 2709, 2709, 2719, 2727, 2735, 2745, 2746, 2756,
1507 2760, 2772, 2784, 2784, 2784, 2795, 2795, 2795, 2806, 2817,
1508 2826, 2828, 2825, 2892, 2891, 2913, 2918, 2912, 2937, 2936,
1509 2958, 2957, 2980, 2981, 2980, 3001, 3009, 3017, 3025, 3035,
1510 3047, 3053, 3059, 3065, 3071, 3077, 3083, 3089, 3095, 3101,
1511 3111, 3117, 3122, 3123, 3130, 3135, 3138, 3139, 3152, 3153,
1512 3163, 3164, 3167, 3175, 3185, 3193, 3203, 3211, 3220, 3229,
1513 3237, 3245, 3254, 3266, 3274, 3285, 3289, 3293, 3297, 3303,
1514 3308, 3313, 3317, 3321, 3325, 3329, 3333, 3341, 3345, 3349,
1515 3353, 3357, 3361, 3365, 3369, 3373, 3379, 3380, 3386, 3395,
1516 3404, 3415, 3419, 3429, 3436, 3445, 3453, 3459, 3462, 3467,
1517 3459, 3483, 3491, 3497, 3501, 3508, 3507, 3528, 3544, 3553,
1518 3565, 3579, 3589, 3588, 3605, 3604, 3620, 3629, 3628, 3646,
1519 3645, 3662, 3670, 3678, 3693, 3692, 3712, 3711, 3732, 3744,
1520 3745, 3748, 3767, 3770, 3778, 3786, 3789, 3793, 3796, 3804,
1521 3807, 3808, 3816, 3819, 3836, 3837, 3838, 3848, 3858, 3885,
1522 3950, 3959, 3970, 3977, 3987, 3995, 4005, 4014, 4025, 4032,
1523 4044, 4053, 4063, 4072, 4083, 4090, 4101, 4108, 4123, 4130,
1524 4141, 4148, 4159, 4166, 4195, 4197, 4196, 4213, 4219, 4224,
1525 4212, 4243, 4251, 4259, 4267, 4270, 4281, 4282, 4283, 4284,
1526 4287, 4298, 4299, 4309, 4310, 4311, 4312, 4315, 4316, 4317,
1527 4318, 4319, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4331,
1528 4344, 4354, 4362, 4372, 4373, 4376, 4385, 4384, 4393, 4405,
1529 4415, 4415, 4428, 4432, 4436, 4440, 4446, 4451, 4456, 4460,
1530 4464, 4468, 4472, 4476, 4480, 4484, 4488, 4492, 4496, 4500,
1531 4504, 4508, 4513, 4519, 4528, 4537, 4546, 4557, 4558, 4565,
1532 4574, 4593, 4600, 4614, 4621, 4630, 4641, 4650, 4661, 4669,
1533 4686, 4694, 4710, 4711, 4714, 4719, 4725, 4737, 4749, 4757,
1534 4773, 4781, 4797, 4798, 4801, 4814, 4825, 4826, 4829, 4846,
1535 4850, 4860, 4870, 4870, 4899, 4900, 4910, 4917, 4927, 4939,
1536 4947, 4959, 4960, 4961, 4964, 4965, 4966, 4967, 4970, 4971,
1537 4972, 4975, 4980, 4987, 4988, 4991, 4992, 4995, 4998, 5001,
1538 5002, 5003, 5006, 5007, 5010, 5011, 5015
1542 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1547 "\"end-of-input\"",
"error",
"$undefined",
"keyword_class",
1548 "keyword_module",
"keyword_def",
"keyword_undef",
"keyword_begin",
1549 "keyword_rescue",
"keyword_ensure",
"keyword_end",
"keyword_if",
1550 "keyword_unless",
"keyword_then",
"keyword_elsif",
"keyword_else",
1551 "keyword_case",
"keyword_when",
"keyword_while",
"keyword_until",
1552 "keyword_for",
"keyword_break",
"keyword_next",
"keyword_redo",
1553 "keyword_retry",
"keyword_in",
"keyword_do",
"keyword_do_cond",
1554 "keyword_do_block",
"keyword_do_LAMBDA",
"keyword_return",
1555 "keyword_yield",
"keyword_super",
"keyword_self",
"keyword_nil",
1556 "keyword_true",
"keyword_false",
"keyword_and",
"keyword_or",
1557 "keyword_not",
"modifier_if",
"modifier_unless",
"modifier_while",
1558 "modifier_until",
"modifier_rescue",
"keyword_alias",
"keyword_defined",
1559 "keyword_BEGIN",
"keyword_END",
"keyword__LINE__",
"keyword__FILE__",
1560 "keyword__ENCODING__",
"tIDENTIFIER",
"tFID",
"tGVAR",
"tIVAR",
1561 "tCONSTANT",
"tCVAR",
"tLABEL",
"tINTEGER",
"tFLOAT",
"tRATIONAL",
1562 "tIMAGINARY",
"tSTRING_CONTENT",
"tCHAR",
"tNTH_REF",
"tBACK_REF",
1563 "tREGEXP_END",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
"\"<=>\"",
"\"==\"",
1564 "\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
"\"||\"",
"\"=~\"",
1565 "\"!~\"",
"\"..\"",
"\"...\"",
"\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
1566 "\"::\"",
"\":: at EXPR_BEG\"",
"tOP_ASGN",
"\"=>\"",
"\"(\"",
1567 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
1568 "\"**arg\"",
"\"&\"",
"\"->\"",
"tSYMBEG",
"tSTRING_BEG",
"tXSTRING_BEG",
1569 "tREGEXP_BEG",
"tWORDS_BEG",
"tQWORDS_BEG",
"tSYMBOLS_BEG",
1570 "tQSYMBOLS_BEG",
"tSTRING_DBEG",
"tSTRING_DEND",
"tSTRING_DVAR",
1571 "tSTRING_END",
"tLAMBEG",
"tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
1572 "'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
1573 "'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"'.'",
"','",
"'`'",
1574 "'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
"$@1",
1575 "top_compstmt",
"top_stmts",
"top_stmt",
"$@2",
"bodystmt",
"compstmt",
1576 "stmts",
"stmt_or_begin",
"$@3",
"stmt",
"$@4",
"command_asgn",
"expr",
1577 "expr_value",
"command_call",
"block_command",
"cmd_brace_block",
"@5",
1578 "fcall",
"command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_item",
1579 "mlhs_head",
"mlhs_post",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
1580 "fsym",
"fitem",
"undef_list",
"$@6",
"op",
"reswords",
"arg",
"$@7",
1581 "arg_value",
"aref_args",
"paren_args",
"opt_paren_args",
1582 "opt_call_args",
"call_args",
"command_args",
"@8",
"block_arg",
1583 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"@9",
"$@10",
1584 "$@11",
"$@12",
"$@13",
"$@14",
"$@15",
"$@16",
"$@17",
"$@18",
"$@19",
1585 "@20",
"@21",
"@22",
"@23",
"@24",
"$@25",
"$@26",
"primary_value",
1586 "k_begin",
"k_if",
"k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
1587 "k_class",
"k_module",
"k_def",
"k_end",
"then",
"do",
"if_tail",
1588 "opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
1589 "block_args_tail",
"opt_block_args_tail",
"block_param",
1590 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
1591 "lambda",
"@27",
"@28",
"@29",
"f_larglist",
"lambda_body",
"do_block",
1592 "@30",
"block_call",
"method_call",
"@31",
"@32",
"@33",
"@34",
1593 "brace_block",
"@35",
"@36",
"case_body",
"cases",
"opt_rescue",
1594 "exc_list",
"exc_var",
"opt_ensure",
"literal",
"strings",
"string",
1595 "string1",
"xstring",
"regexp",
"words",
"word_list",
"word",
"symbols",
1596 "symbol_list",
"qwords",
"qsymbols",
"qword_list",
"qsym_list",
1597 "string_contents",
"xstring_contents",
"regexp_contents",
1598 "string_content",
"@37",
"@38",
"@39",
"@40",
"string_dvar",
"symbol",
1599 "sym",
"dsym",
"numeric",
"simple_numeric",
"user_variable",
1600 "keyword_variable",
"var_ref",
"var_lhs",
"backref",
"superclass",
1601 "$@41",
"f_arglist",
"@42",
"args_tail",
"opt_args_tail",
"f_args",
1602 "f_bad_arg",
"f_norm_arg",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
1603 "f_block_kw",
"f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_kwrest",
1604 "f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
"restarg_mark",
1605 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
1606 "singleton",
"$@43",
"assoc_list",
"assocs",
"assoc",
"operation",
1607 "operation2",
"operation3",
"dot_or_colon",
"opt_terms",
"opt_nl",
1608 "rparen",
"rbracket",
"trailer",
"term",
"terms",
"none", 0
1615 static const yytype_uint16 yytoknum[] =
1617 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1618 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1619 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1620 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1621 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1622 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1623 315, 316, 317, 318, 319, 320, 321, 322, 130, 131,
1624 132, 134, 139, 140, 141, 138, 137, 323, 324, 142,
1625 143, 128, 129, 144, 145, 135, 136, 325, 326, 327,
1626 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
1627 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
1628 348, 349, 350, 351, 352, 61, 63, 58, 62, 60,
1629 124, 94, 38, 43, 45, 42, 47, 37, 353, 33,
1630 126, 354, 123, 125, 91, 46, 44, 96, 40, 41,
1636 static const yytype_uint16
yyr1[] =
1638 0, 144, 146, 145, 147, 148, 148, 148, 148, 149,
1639 150, 149, 151, 152, 153, 153, 153, 153, 154, 155,
1640 154, 157, 156, 156, 156, 156, 156, 156, 156, 156,
1641 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1642 156, 156, 156, 156, 156, 158, 158, 159, 159, 159,
1643 159, 159, 159, 160, 161, 161, 162, 162, 164, 163,
1644 165, 166, 166, 166, 166, 166, 166, 166, 166, 166,
1645 166, 166, 167, 167, 168, 168, 169, 169, 169, 169,
1646 169, 169, 169, 169, 169, 169, 170, 170, 171, 171,
1647 172, 172, 173, 173, 173, 173, 173, 173, 173, 173,
1648 173, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1649 175, 175, 176, 176, 176, 177, 177, 177, 177, 177,
1650 178, 178, 179, 179, 180, 181, 180, 182, 182, 182,
1651 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
1652 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
1653 182, 182, 182, 182, 182, 182, 182, 183, 183, 183,
1654 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1655 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1656 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1657 183, 183, 183, 183, 183, 183, 183, 183, 184, 184,
1658 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1659 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1660 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1661 184, 184, 184, 184, 184, 184, 184, 184, 184, 185,
1662 184, 184, 184, 186, 187, 187, 187, 187, 188, 189,
1663 189, 190, 190, 190, 190, 190, 191, 191, 191, 191,
1664 191, 193, 192, 194, 195, 195, 196, 196, 196, 196,
1665 197, 197, 198, 198, 198, 199, 199, 199, 199, 199,
1666 199, 199, 199, 199, 199, 199, 200, 199, 201, 199,
1667 202, 203, 199, 199, 199, 199, 199, 199, 199, 199,
1668 199, 199, 204, 199, 199, 199, 199, 199, 199, 199,
1669 199, 199, 205, 206, 199, 207, 208, 199, 199, 199,
1670 209, 210, 199, 211, 199, 212, 213, 199, 214, 199,
1671 215, 199, 216, 217, 199, 199, 199, 199, 199, 218,
1672 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
1673 229, 230, 230, 230, 231, 231, 232, 232, 233, 233,
1674 234, 234, 235, 235, 236, 236, 237, 237, 237, 237,
1675 237, 237, 237, 237, 237, 238, 238, 238, 238, 239,
1676 239, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1677 240, 240, 240, 240, 240, 240, 241, 241, 242, 242,
1678 242, 243, 243, 244, 244, 245, 245, 247, 248, 249,
1679 246, 250, 250, 251, 251, 253, 252, 254, 254, 254,
1680 254, 255, 256, 255, 257, 255, 255, 258, 255, 259,
1681 255, 255, 255, 255, 261, 260, 262, 260, 263, 264,
1682 264, 265, 265, 266, 266, 266, 267, 267, 268, 268,
1683 269, 269, 269, 270, 271, 271, 271, 272, 273, 274,
1684 275, 275, 276, 276, 277, 277, 278, 278, 279, 279,
1685 280, 280, 281, 281, 282, 282, 283, 283, 284, 284,
1686 285, 285, 286, 286, 287, 288, 287, 289, 290, 291,
1687 287, 292, 292, 292, 292, 293, 294, 294, 294, 294,
1688 295, 296, 296, 297, 297, 297, 297, 298, 298, 298,
1689 298, 298, 299, 299, 299, 299, 299, 299, 299, 300,
1690 300, 301, 301, 302, 302, 303, 304, 303, 303, 305,
1691 306, 305, 307, 307, 307, 307, 308, 308, 309, 309,
1692 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1693 309, 309, 309, 310, 310, 310, 310, 311, 311, 312,
1694 312, 313, 313, 314, 315, 315, 316, 316, 317, 317,
1695 318, 318, 319, 319, 320, 320, 321, 322, 323, 323,
1696 324, 324, 325, 325, 326, 326, 327, 327, 328, 329,
1697 329, 330, 331, 330, 332, 332, 333, 333, 334, 334,
1698 334, 335, 335, 335, 336, 336, 336, 336, 337, 337,
1699 337, 338, 338, 339, 339, 340, 340, 341, 342, 343,
1700 343, 343, 344, 344, 345, 345, 346
1706 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
1707 0, 5, 4, 2, 1, 1, 3, 2, 1, 0,
1708 5, 0, 4, 3, 3, 3, 2, 3, 3, 3,
1709 3, 3, 4, 1, 3, 3, 6, 5, 5, 5,
1710 5, 3, 3, 3, 1, 3, 3, 1, 3, 3,
1711 3, 2, 1, 1, 1, 1, 1, 4, 0, 5,
1712 1, 2, 3, 4, 5, 4, 5, 2, 2, 2,
1713 2, 2, 1, 3, 1, 3, 1, 2, 3, 5,
1714 2, 4, 2, 4, 1, 3, 1, 3, 2, 3,
1715 1, 3, 1, 1, 4, 3, 3, 3, 3, 2,
1716 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
1717 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
1718 1, 1, 1, 1, 1, 0, 4, 1, 1, 1,
1719 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1720 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1721 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1722 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1723 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1724 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1725 1, 1, 1, 1, 1, 1, 1, 1, 3, 5,
1726 3, 5, 6, 5, 5, 5, 5, 4, 3, 3,
1727 3, 3, 3, 3, 3, 3, 3, 4, 2, 2,
1728 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1729 3, 3, 3, 2, 2, 3, 3, 3, 3, 0,
1730 4, 6, 1, 1, 1, 2, 4, 2, 3, 1,
1731 1, 1, 1, 2, 4, 2, 1, 2, 2, 4,
1732 1, 0, 2, 2, 2, 1, 1, 2, 3, 4,
1733 1, 1, 3, 4, 2, 1, 1, 1, 1, 1,
1734 1, 1, 1, 1, 1, 1, 0, 4, 0, 3,
1735 0, 0, 5, 3, 3, 2, 3, 3, 1, 4,
1736 3, 1, 0, 6, 4, 3, 2, 1, 2, 2,
1737 6, 6, 0, 0, 7, 0, 0, 7, 5, 4,
1738 0, 0, 9, 0, 6, 0, 0, 8, 0, 5,
1739 0, 6, 0, 0, 9, 1, 1, 1, 1, 1,
1740 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1741 1, 1, 1, 2, 1, 1, 1, 5, 1, 2,
1742 1, 1, 1, 3, 1, 3, 1, 4, 6, 3,
1743 5, 2, 4, 1, 3, 4, 2, 2, 1, 2,
1744 0, 6, 8, 4, 6, 4, 2, 6, 2, 4,
1745 6, 2, 4, 2, 4, 1, 1, 1, 3, 1,
1746 4, 1, 4, 1, 3, 1, 1, 0, 0, 0,
1747 5, 4, 1, 3, 3, 0, 5, 2, 4, 5,
1748 5, 2, 0, 5, 0, 5, 3, 0, 4, 0,
1749 4, 2, 1, 4, 0, 5, 0, 5, 5, 1,
1750 1, 6, 1, 1, 1, 1, 2, 1, 2, 1,
1751 1, 1, 1, 1, 1, 1, 2, 3, 3, 3,
1752 3, 3, 0, 3, 1, 2, 3, 3, 0, 3,
1753 3, 3, 3, 3, 0, 3, 0, 3, 0, 2,
1754 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
1755 6, 1, 1, 1, 1, 2, 1, 1, 1, 1,
1756 3, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1757 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1758 1, 1, 1, 1, 1, 1, 0, 4, 2, 3,
1759 0, 3, 4, 2, 2, 1, 2, 0, 6, 8,
1760 4, 6, 4, 6, 2, 4, 6, 2, 4, 2,
1761 4, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1762 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
1763 1, 3, 1, 1, 2, 1, 3, 3, 1, 3,
1764 1, 3, 1, 1, 2, 1, 1, 1, 2, 2,
1765 1, 1, 0, 4, 1, 2, 1, 3, 3, 2,
1766 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1767 1, 1, 1, 0, 1, 0, 1, 2, 2, 0,
1776 2, 0, 0, 1, 0, 347, 348, 349, 0, 340,
1777 341, 342, 345, 343, 344, 346, 335, 336, 337, 338,
1778 298, 261, 261, 513, 512, 514, 515, 615, 0, 615,
1779 10, 0, 517, 516, 518, 601, 603, 509, 508, 602,
1780 511, 503, 504, 505, 506, 454, 523, 524, 0, 0,
1781 0, 0, 290, 626, 626, 84, 407, 480, 478, 480,
1782 482, 462, 474, 468, 476, 0, 0, 0, 3, 613,
1783 6, 9, 33, 44, 47, 55, 261, 54, 0, 72,
1784 0, 76, 86, 0, 52, 242, 0, 286, 0, 0,
1785 312, 315, 613, 0, 0, 0, 0, 56, 307, 275,
1786 276, 453, 455, 277, 278, 279, 281, 280, 282, 451,
1787 452, 450, 501, 519, 520, 283, 0, 284, 60, 5,
1788 8, 167, 178, 168, 191, 164, 184, 174, 173, 194,
1789 195, 189, 172, 171, 166, 192, 196, 197, 176, 165,
1790 179, 183, 185, 177, 170, 186, 193, 188, 187, 180,
1791 190, 175, 163, 182, 181, 162, 169, 160, 161, 157,
1792 158, 159, 115, 117, 116, 152, 153, 148, 130, 131,
1793 132, 139, 136, 138, 133, 134, 154, 155, 140, 141,
1794 145, 149, 135, 137, 127, 128, 129, 142, 143, 144,
1795 146, 147, 150, 151, 156, 120, 122, 124, 26, 118,
1796 119, 121, 123, 0, 0, 0, 0, 0, 0, 0,
1797 0, 256, 0, 243, 266, 70, 260, 626, 0, 519,
1798 520, 0, 284, 626, 596, 71, 69, 615, 68, 0,
1799 626, 431, 67, 615, 616, 0, 0, 21, 239, 0,
1800 0, 335, 336, 298, 301, 432, 0, 218, 0, 219,
1801 295, 0, 19, 0, 0, 613, 15, 18, 615, 74,
1802 14, 615, 0, 0, 619, 619, 244, 0, 0, 619,
1803 594, 615, 0, 0, 0, 82, 339, 0, 92, 93,
1804 100, 309, 408, 498, 497, 499, 496, 0, 495, 0,
1805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1806 502, 51, 233, 234, 622, 623, 4, 624, 614, 0,
1807 0, 0, 0, 0, 0, 0, 436, 434, 421, 61,
1808 306, 415, 417, 0, 88, 0, 80, 77, 0, 0,
1809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1811 0, 0, 0, 0, 0, 429, 626, 427, 0, 53,
1812 0, 0, 0, 0, 613, 0, 614, 0, 361, 360,
1813 0, 0, 519, 520, 284, 110, 111, 0, 0, 113,
1814 0, 0, 519, 520, 284, 328, 187, 180, 190, 175,
1815 157, 158, 159, 115, 116, 592, 330, 591, 0, 612,
1816 611, 0, 308, 456, 0, 0, 125, 599, 295, 267,
1817 600, 263, 0, 0, 0, 257, 265, 429, 626, 427,
1818 0, 0, 0, 258, 615, 0, 300, 262, 615, 252,
1819 626, 626, 251, 615, 305, 50, 23, 25, 24, 0,
1820 302, 0, 0, 0, 429, 427, 0, 17, 0, 615,
1821 293, 13, 614, 73, 289, 291, 296, 621, 620, 245,
1822 621, 247, 297, 595, 0, 99, 502, 90, 85, 0,
1823 429, 626, 427, 552, 484, 487, 485, 500, 481, 457,
1824 479, 458, 459, 483, 460, 461, 0, 464, 470, 0,
1825 471, 466, 467, 0, 472, 0, 473, 0, 625, 7,
1826 27, 28, 29, 30, 31, 48, 49, 626, 626, 58,
1827 62, 626, 0, 34, 271, 0, 43, 270, 615, 0,
1828 78, 89, 46, 45, 0, 198, 266, 42, 216, 223,
1829 228, 229, 230, 225, 227, 237, 238, 231, 232, 209,
1830 210, 235, 236, 615, 224, 226, 220, 221, 222, 211,
1831 212, 213, 214, 215, 604, 606, 605, 607, 0, 261,
1832 426, 615, 604, 606, 605, 607, 0, 261, 0, 626,
1833 352, 0, 351, 0, 0, 0, 0, 0, 0, 295,
1834 429, 626, 427, 320, 325, 110, 111, 112, 0, 526,
1835 323, 525, 429, 626, 427, 0, 0, 530, 332, 604,
1836 605, 261, 35, 200, 41, 208, 0, 198, 598, 0,
1837 268, 264, 626, 604, 605, 615, 604, 605, 597, 299,
1838 617, 248, 253, 255, 304, 22, 0, 240, 0, 32,
1839 424, 422, 207, 0, 75, 16, 615, 619, 0, 83,
1840 96, 98, 615, 604, 605, 558, 555, 554, 553, 556,
1841 563, 572, 0, 583, 573, 587, 586, 582, 552, 409,
1842 551, 412, 557, 559, 561, 537, 565, 570, 626, 575,
1843 626, 580, 537, 585, 537, 0, 535, 488, 0, 463,
1844 465, 475, 469, 477, 217, 399, 615, 0, 397, 396,
1845 0, 626, 0, 274, 0, 87, 81, 0, 0, 0,
1846 0, 0, 0, 430, 65, 0, 0, 433, 0, 0,
1847 428, 63, 626, 350, 287, 626, 626, 442, 626, 353,
1848 626, 355, 313, 354, 316, 0, 0, 319, 608, 294,
1849 615, 604, 605, 0, 0, 528, 0, 0, 110, 111,
1850 114, 615, 0, 615, 552, 0, 552, 0, 250, 418,
1851 57, 249, 0, 126, 269, 259, 0, 0, 433, 0,
1852 0, 626, 615, 11, 0, 292, 246, 91, 94, 0,
1853 373, 364, 366, 615, 362, 615, 0, 0, 0, 544,
1854 564, 0, 533, 590, 574, 0, 534, 0, 547, 584,
1855 0, 549, 588, 489, 491, 492, 493, 486, 494, 395,
1856 615, 0, 559, 380, 567, 568, 626, 626, 578, 380,
1857 380, 378, 401, 0, 0, 0, 0, 0, 272, 79,
1858 199, 0, 40, 205, 39, 206, 66, 425, 618, 0,
1859 37, 203, 38, 204, 64, 423, 443, 444, 626, 445,
1860 0, 626, 358, 0, 0, 356, 0, 0, 0, 318,
1861 0, 0, 433, 0, 326, 0, 0, 433, 329, 593,
1862 615, 0, 0, 333, 419, 420, 201, 0, 254, 303,
1863 20, 615, 0, 371, 0, 560, 0, 0, 0, 410,
1864 576, 536, 562, 537, 537, 571, 626, 589, 537, 581,
1865 537, 559, 537, 0, 0, 398, 0, 386, 388, 0,
1866 566, 0, 376, 377, 0, 391, 0, 393, 0, 437,
1867 435, 0, 416, 273, 241, 36, 202, 0, 0, 447,
1868 359, 0, 12, 449, 0, 310, 311, 0, 0, 268,
1869 626, 321, 0, 527, 324, 529, 331, 531, 530, 363,
1870 374, 0, 369, 365, 411, 0, 0, 0, 540, 0,
1871 542, 532, 0, 548, 0, 545, 550, 0, 400, 577,
1872 379, 380, 380, 295, 429, 569, 626, 380, 579, 380,
1873 380, 405, 615, 403, 406, 59, 0, 446, 0, 101,
1874 102, 109, 0, 448, 0, 314, 317, 439, 440, 438,
1875 0, 0, 0, 0, 372, 0, 367, 414, 413, 537,
1876 537, 537, 537, 490, 0, 383, 0, 385, 608, 294,
1877 375, 0, 392, 0, 389, 394, 0, 402, 108, 429,
1878 626, 427, 626, 626, 0, 327, 0, 370, 0, 541,
1879 0, 538, 543, 546, 380, 380, 380, 380, 404, 608,
1880 107, 615, 604, 605, 441, 357, 322, 334, 368, 537,
1881 384, 0, 381, 387, 390, 433, 539, 380, 382
1887 -1, 1, 2, 68, 69, 70, 239, 568, 569, 255,
1888 256, 448, 257, 439, 72, 73, 360, 74, 75, 510,
1889 691, 246, 77, 78, 258, 79, 80, 81, 468, 82,
1890 212, 379, 380, 195, 196, 197, 198, 606, 557, 200,
1891 84, 441, 214, 263, 231, 749, 428, 429, 228, 229,
1892 216, 415, 430, 516, 517, 85, 358, 261, 262, 636,
1893 626, 362, 847, 363, 848, 733, 990, 737, 734, 932,
1894 595, 597, 747, 938, 248, 87, 88, 89, 90, 91,
1895 92, 93, 94, 95, 96, 714, 571, 722, 844, 845,
1896 371, 771, 772, 773, 960, 898, 800, 687, 688, 801,
1897 972, 973, 281, 282, 473, 776, 659, 879, 322, 511,
1898 97, 98, 712, 705, 566, 558, 320, 508, 507, 578,
1899 989, 716, 838, 918, 922, 99, 100, 101, 102, 103,
1900 104, 105, 293, 486, 106, 297, 107, 108, 295, 299,
1901 289, 287, 291, 478, 678, 677, 793, 893, 797, 109,
1902 288, 110, 111, 112, 219, 220, 115, 221, 222, 590,
1903 736, 745, 746, 881, 779, 661, 662, 891, 664, 665,
1904 666, 667, 805, 806, 668, 669, 670, 671, 808, 809,
1905 672, 673, 674, 675, 676, 782, 398, 596, 268, 431,
1906 224, 118, 630, 560, 401, 306, 425, 426, 707, 459,
1912 #define YYPACT_NINF -816
1915 -816, 132, 2698, -816, 7384, -816, -816, -816, 6899, -816,
1916 -816, -816, -816, -816, -816, -816, 7499, 7499, -816, -816,
1917 7499, 4040, 3629, -816, -816, -816, -816, 140, 6764, 0,
1918 -816, 27, -816, -816, -816, 2944, 3766, -816, -816, 3081,
1919 -816, -816, -816, -816, -816, -816, -816, -816, 8879, 8879,
1920 166, 5108, 288, 7844, 8189, 7162, -816, 6629, -816, -816,
1921 -816, 105, 123, 177, 196, 941, 8994, 8879, -816, 17,
1922 -816, 867, -816, 484, -816, -816, 76, 294, 226, -816,
1923 210, 9224, -816, 237, 3060, 285, 311, -816, 9109, 9109,
1924 -816, -816, 6009, 9335, 9446, 9557, 6493, 30, 62, -816,
1925 -816, 256, -816, -816, -816, -816, -816, -816, -816, -816,
1926 -816, -816, -816, 491, 593, -816, 303, 616, -816, -816,
1927 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1928 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1929 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1930 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1931 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1932 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1933 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1934 -816, -816, -816, -816, -816, -816, -816, -816, 229, -816,
1935 -816, -816, -816, 270, 8879, 359, 5249, 8879, 8879, 8879,
1936 8879, -816, 310, 3060, 349, -816, -816, 322, 393, 34,
1937 38, 365, 63, 325, -816, -816, -816, 5894, -816, 7499,
1938 7499, -816, -816, 6124, -816, 9109, 679, -816, 309, 332,
1939 5390, -816, -816, -816, 328, 361, 76, -816, 421, 402,
1940 736, 7614, -816, 5108, 362, 17, -816, 867, 0, 408,
1941 -816, 0, 9109, 398, -15, 180, -816, 349, 429, 180,
1942 -816, 0, 502, 941, 9668, 440, -816, 466, 563, 601,
1943 645, -816, -816, -816, -816, -816, -816, 425, -816, 506,
1944 540, 545, 453, 575, 469, 101, 474, 658, 476, 222,
1945 522, -816, -816, -816, -816, -816, -816, -816, 6239, 9109,
1946 9109, 9109, 9109, 7614, 9109, 9109, -816, -816, -816, 498,
1947 -816, -816, -816, 8304, -816, 5108, 7273, 460, 8304, 8879,
1948 8879, 8879, 8879, 8879, 8879, 8879, 8879, 8879, 8879, 8879,
1949 8879, 8879, 8879, 8879, 8879, 8879, 8879, 8879, 8879, 8879,
1950 8879, 8879, 8879, 8879, 8879, 9951, 7499, 10030, 4455, 484,
1951 113, 113, 9109, 9109, 17, 585, 472, 551, -816, -816,
1952 651, 595, 67, 88, 93, 487, 542, 9109, 78, -816,
1953 114, 686, -816, -816, -816, -816, 48, 50, 60, 266,
1954 276, 289, 347, 380, 416, -816, -816, -816, 30, -816,
1955 -816, 10109, -816, -816, 8994, 8994, -816, -816, 240, -816,
1956 -816, -816, 8879, 8879, 7729, -816, -816, 10188, 7499, 10267,
1957 8879, 8879, 7959, -816, 0, 494, -816, -816, 0, -816,
1958 490, 500, -816, 136, -816, -816, -816, -816, -816, 6899,
1959 -816, 8879, 5523, 497, 10188, 10267, 8879, 867, 512, 0,
1960 -816, -816, 6354, 528, -816, 484, -816, 8074, -816, -816,
1961 8189, -816, -816, -816, 309, 703, -816, -816, 529, 9668,
1962 10346, 7499, 10425, 1091, -816, -816, -816, -816, -816, -816,
1963 -816, -816, -816, -816, -816, -816, 35, -816, -816, 481,
1964 -816, -816, -816, 45, -816, 521, -816, 8879, -816, -816,
1965 -816, -816, -816, -816, -816, -816, -816, 70, 70, -816,
1966 -816, 70, 8879, -816, 536, 537, -816, -816, 0, 9668,
1967 557, -816, -816, -816, 566, 3197, -816, -816, 402, 2451,
1968 2451, 2451, 2451, 1100, 1100, 2544, 2079, 2451, 2451, 3334,
1969 3334, 708, 708, 10928, 1100, 1100, 849, 849, 944, 385,
1970 385, 402, 402, 402, 4177, 3218, 4314, 3355, 361, 558,
1971 -816, 0, 760, -816, 768, -816, 361, 3903, 685, 693,
1972 -816, 4596, 689, 4878, 59, 59, 585, 8419, 685, 106,
1973 10504, 7499, 10583, -816, 484, -816, 703, -816, 17, -816,
1974 -816, -816, 10662, 7499, 10109, 4455, 9109, 565, -816, -816,
1975 -816, 1231, -816, 2786, -816, 3060, 6899, 2923, -816, 8879,
1976 349, -816, 325, 2807, 3492, 0, 241, 306, -816, -816,
1977 -816, -816, 7729, 7959, -816, -816, 9109, 3060, 576, -816,
1978 -816, -816, 3060, 5523, 278, -816, 0, 180, 9668, 529,
1979 588, 351, 0, 334, 348, -816, -816, -816, -816, -816,
1980 -816, -816, 893, -816, -816, -816, -816, -816, 1256, -816,
1981 -816, -816, -816, 596, -816, 581, 8879, -816, 583, 672,
1982 589, -816, 591, 682, 603, 702, -816, -816, 858, -816,
1983 -816, -816, -816, -816, 402, -816, 1059, 5664, -816, -816,
1984 5390, 70, 5664, 620, 8534, -816, 529, 9668, 8994, 8879,
1985 646, 8994, 8994, -816, 498, 361, 625, 770, 8994, 8994,
1986 -816, 498, 361, -816, -816, 8649, 766, -816, 527, -816,
1987 766, -816, -816, -816, -816, 685, 228, -816, 71, 89,
1988 0, 116, 125, 9109, 17, -816, 9109, 4455, 588, 351,
1989 -816, 0, 685, 136, 1256, 4455, 1256, 7034, -816, 62,
1990 294, -816, 8879, -816, -816, -816, 8879, 8879, 415, 8879,
1991 8879, 653, 136, -816, 654, -816, -816, -816, 318, 893,
1992 441, -816, 659, 0, -816, 0, 297, 8879, 1256, -816,
1993 -816, 742, -816, -816, -816, 58, -816, 1256, -816, -816,
1994 772, -816, -816, -816, -816, -816, -816, -816, -816, -816,
1995 0, 674, 683, 666, 9779, -816, 667, 589, -816, 673,
1996 677, -816, 675, 807, 690, 5390, 812, 8879, 710, 529,
1997 3060, 8879, -816, 3060, -816, 3060, -816, -816, -816, 8994,
1998 -816, 3060, -816, 3060, -816, -816, 536, -816, 757, -816,
1999 4993, 845, -816, 9109, 685, -816, 685, 5664, 5664, -816,
2000 8764, 4737, 126, 59, -816, 17, 685, -816, -816, -816,
2001 0, 685, 17, -816, -816, -816, 3060, 8879, 7959, -816,
2002 -816, 0, 942, 725, 1005, -816, 723, 5664, 5390, -816,
2003 -816, -816, -816, 733, 738, -816, 589, -816, 740, -816,
2004 743, -816, 740, 5779, 761, -816, 9779, 1256, -816, 830,
2005 709, 742, -816, -816, 1256, -816, 772, -816, 1080, -816,
2006 -816, 754, -816, 752, 3060, -816, 3060, 9890, 113, -816,
2007 -816, 5664, -816, -816, 113, -816, -816, 685, 685, -816,
2008 171, -816, 4455, -816, -816, -816, -816, -816, 565, -816,
2009 756, 942, 492, -816, -816, 880, 762, 1256, -816, 772,
2010 -816, -816, 772, -816, 772, -816, -816, 789, -816, 709,
2011 -816, 780, 782, -816, 10741, -816, 589, 784, -816, 790,
2012 784, -816, 225, -816, -816, -816, 874, -816, 721, 563,
2013 601, 645, 4455, -816, 4596, -816, -816, -816, -816, -816,
2014 5664, 685, 4455, 942, 756, 942, 797, -816, -816, 740,
2015 800, 740, 740, -816, 1256, -816, 772, -816, 764, 799,
2016 -816, 772, -816, 772, -816, -816, 1080, -816, 703, 10820,
2017 7499, 10899, 693, 527, 685, -816, 685, 756, 942, -816,
2018 772, -816, -816, -816, 784, 808, 784, 784, -816, 253,
2019 351, 0, 148, 159, -816, -816, -816, -816, 756, 740,
2020 -816, 772, -816, -816, -816, 169, -816, 784, -816
2026 -816, -816, -816, -380, -816, 23, -816, -566, 358, -816,
2027 505, -816, 20, -816, -308, -42, -75, 39, -816, -330,
2028 -816, 726, -11, 850, -141, 7, -63, -816, -416, 16,
2029 1705, -294, 859, -55, -816, -16, -816, -816, 3, -816,
2030 1056, -816, 1763, -816, -6, 246, -349, 122, 4, -816,
2031 -374, -200, 47, -816, -312, -51, -816, -816, -816, -816,
2032 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
2033 -816, -816, -816, -816, 74, -816, -816, -816, -816, -816,
2034 -816, -816, -816, -816, -816, -550, -346, -536, -61, -648,
2035 -816, -787, -765, 191, 277, 43, -816, -392, -816, -655,
2036 -816, -48, -816, -816, -816, -816, -816, -816, 215, -816,
2037 -816, -816, -816, -816, -816, -816, -90, -816, -816, -551,
2038 -816, -53, -816, -816, -816, -816, -816, -816, 877, -816,
2039 -816, -816, -816, 684, -816, -816, -816, -816, -816, -816,
2040 -816, 924, -816, -196, -816, -816, -816, -816, -816, 26,
2041 -816, 51, -816, -9, 846, 1250, 889, 1597, 1618, -816,
2042 -816, 54, -816, -407, -359, -311, -804, 957, -693, -447,
2043 -113, 205, 92, -816, -816, -816, -24, -730, -815, 110,
2044 230, -816, -654, -816, -146, -609, -816, -816, -816, 57,
2045 -385, -816, -336, -816, 613, -59, -26, -223, -560, -220,
2052 #define YYTABLE_NINF -627
2055 119, 235, 286, 238, 276, 211, 211, 561, 402, 211,
2056 434, 199, 237, 307, 361, 573, 527, 364, 327, 559,
2057 522, 567, 71, 423, 71, 725, 232, 120, 727, 742,
2058 276, 199, 810, 365, 201, 453, 307, 618, 454, 724,
2059 611, 396, 276, 276, 276, 461, 359, 359, 611, 463,
2060 359, 266, 270, 639, 201, 758, 300, 889, 259, 202,
2061 199, 786, 628, 217, 217, 601, 660, 217, 841, 615,
2062 318, 275, 846, 223, 223, 618, 86, 223, 86, 202,
2063 319, 559, 768, 567, 587, 882, 721, 943, 316, 968,
2064 218, 218, -101, 480, 218, 483, -105, 487, 474, 199,
2065 264, 487, 316, 696, 974, 301, 308, 940, 474, 631,
2066 265, 269, 449, -102, -107, 588, 690, 399, -109, 692,
2067 876, 457, 642, -521, 884, 86, 570, -522, 458, 277,
2068 585, -108, 3, 890, 586, -513, 631, -512, 215, 225,
2069 218, -104, 226, 234, 475, 894, 476, -514, 685, -101,
2070 -106, -103, 421, -102, 475, 277, 476, 655, 304, 240,
2071 305, -104, 218, 218, 489, 400, 218, 370, 381, 381,
2072 852, 856, -106, 314, 315, 849, 994, 679, -109, 861,
2073 656, 857, -103, -513, 518, -512, 840, 682, 577, 968,
2074 686, 433, 858, 435, 317, -514, 451, 902, 903, 307,
2075 304, 619, 305, -92, 882, 621, 943, -96, 317, -604,
2076 624, 467, 974, 490, 230, 416, 211, 889, 211, 211,
2077 455, 416, 250, 276, -93, -98, 634, -605, 432, -100,
2078 1027, 423, 730, 589, 500, 501, 502, 503, 618, 803,
2079 318, 570, -99, 962, 741, 464, 631, 292, 611, 611,
2080 969, 660, -95, 764, 304, 304, 305, 305, 631, 882,
2081 259, -97, -94, 1048, 466, 294, -105, 359, 359, 359,
2082 359, 447, 505, 506, 217, 276, 217, 951, 233, 234,
2083 86, 819, 987, 234, 223, 495, 223, 574, 575, -104,
2084 680, -104, 452, 1000, 925, 695, 926, 680, 740, 815,
2085 -106, 218, -106, 218, 218, 576, 934, 218, 307, 218,
2086 -103, 936, -103, 788, 86, 791, 460, 931, 882, 296,
2087 359, 359, 321, 458, 591, 86, 877, 86, 71, 446,
2088 759, 499, 259, 504, 496, 584, 218, 660, 298, 660,
2089 888, 323, 520, 892, -433, 211, 324, 775, 277, 424,
2090 1035, 427, 328, -515, 432, -108, -104, 1010, 58, -95,
2091 565, 1016, 513, -517, 850, 406, 991, 523, 234, 304,
2092 515, 305, -339, -97, 826, 515, -516, 985, 986, 988,
2093 851, 834, 86, 218, 218, 218, 218, 86, 218, 218,
2094 522, -604, 404, -73, -105, 760, -105, 218, 355, 86,
2095 277, -515, 218, 837, 565, -433, 467, 211, 233, 254,
2096 878, -517, 755, 765, -87, 408, 432, 766, 276, -339,
2097 -339, -106, 565, 625, -516, 412, 1026, -288, 416, 416,
2098 218, -288, 86, 860, -518, 862, 218, 218, -294, 413,
2099 119, 1025, 199, 602, 604, 356, 357, 440, 565, -95,
2100 -433, 218, -433, -433, 420, 329, 467, 967, 414, 970,
2101 211, 422, 71, -97, 442, 201, 227, -507, 276, 432,
2102 -95, 612, 329, -95, 1046, 565, 1047, -95, 218, 218,
2103 417, 1055, -518, 618, -97, -294, -294, -97, 474, -605,
2104 202, -97, 218, 645, 611, 646, 647, 648, 649, 230,
2105 999, 450, 1001, -510, 867, 689, 689, 1002, 444, 689,
2106 352, 353, 354, -601, 637, -507, 86, 700, 723, 723,
2107 859, 314, 315, -72, 948, 950, 86, 418, 419, 953,
2108 -103, 955, 735, 956, 475, 706, 476, 477, 456, 869,
2109 811, 843, 840, 277, 645, 218, 646, 647, 648, 649,
2110 875, -510, 703, 470, 743, 418, 445, 1034, 465, 1036,
2111 710, 755, 462, 704, 254, 484, 1037, 717, -602, 474,
2112 211, 711, 982, 804, -507, 767, 469, 872, 984, 432,
2113 -521, 488, 211, 1049, 762, 565, 491, 276, 494, 706,
2114 753, 432, 497, 277, 509, 748, 521, 565, 443, 751,
2115 471, 472, 577, 474, 1057, 750, -101, 579, 474, 199,
2116 416, 254, 482, 498, -608, 475, 706, 476, 479, -601,
2117 583, -507, -507, 681, 726, -601, 622, -92, 995, -510,
2118 629, 119, 201, 620, 467, 887, 623, 935, 474, 887,
2119 1029, 1031, 1032, 1033, 633, 86, 276, 86, 939, 475,
2120 -519, 476, 481, 71, 475, 218, 476, 202, 853, 864,
2121 812, 855, 807, 683, -87, 638, 783, 218, 783, 86,
2122 218, 1041, -266, 694, -602, -608, -510, -510, 854, 761,
2123 -602, 698, -522, 254, 475, 631, 476, 485, -520, 689,
2124 1056, 359, 863, 697, 359, 713, -424, -519, -519, 827,
2125 218, 715, 719, 744, 706, 405, 748, 86, -102, 763,
2126 751, 777, 277, 839, 842, 706, 842, 778, 842, 781,
2127 -608, 474, -608, -608, 784, 785, -604, 787, 76, -93,
2128 76, -109, -284, 436, 789, -520, -520, 523, 580, 790,
2129 822, 824, 76, 76, 437, 438, 76, 830, 832, 812,
2130 199, 811, -100, 276, 792, 887, -267, 886, 811, 416,
2131 811, 86, 515, 821, 86, 828, 86, 475, 924, 476,
2132 492, 277, 218, 592, 812, 218, 218, 76, 329, -284,
2133 -284, 840, 218, 218, 804, 581, 582, 870, 804, 868,
2134 -295, 804, 76, 804, 895, 874, 964, 723, 896, 933,
2135 650, 359, 897, 901, 783, 783, 937, 218, 1019, 904,
2136 218, 86, 651, 906, 76, 76, 908, 909, 76, 86,
2137 593, 594, 912, 910, 645, 446, 646, 647, 648, 649,
2138 650, 350, 351, 352, 353, 354, 919, -295, -295, 923,
2139 654, 655, 651, 593, 594, 276, -268, 917, 113, 708,
2140 113, -108, 905, 907, 921, 1020, 1021, 709, 811, 829,
2141 811, 941, 944, 652, 656, 811, 276, 811, 915, 947,
2142 654, 655, -99, 807, 949, -104, 952, 966, 900, 954,
2143 807, 958, 807, -106, 783, -103, 963, 975, -269, 86,
2144 997, 804, 993, 804, 656, 998, -95, 113, 804, 1003,
2145 804, 278, -604, 218, -97, 811, -94, 309, 310, 311,
2146 312, 313, 794, 795, 86, 796, 1004, 218, 1006, 329,
2147 1011, 86, 86, 46, 47, 86, 1013, 278, 842, 718,
2148 1018, 720, 76, 1028, 342, 343, 1030, -605, 804, 372,
2149 382, 382, 382, 368, 1051, 645, 1017, 646, 647, 648,
2150 649, 86, 86, 76, 385, 76, 76, 635, 835, 76,
2151 871, 76, 1045, 799, 783, 865, 76, 86, 1038, 1044,
2152 959, 349, 350, 351, 352, 353, 354, 76, 403, 76,
2153 807, 493, 807, 290, 769, 397, 885, 807, 76, 807,
2154 770, 978, 992, 965, 645, 86, 646, 647, 648, 649,
2155 41, 42, 43, 44, 1005, 1007, 86, 961, 883, 211,
2156 1012, 598, 1014, 1015, 329, 706, 0, 0, 432, 0,
2157 717, 842, 0, 0, 565, 0, 0, 807, 0, 342,
2158 343, 0, 0, 769, 76, 76, 76, 76, 76, 76,
2159 76, 76, 0, 0, 0, 813, 0, 0, 814, 76,
2160 816, 76, 113, 0, 76, 0, 86, 645, 86, 646,
2161 647, 648, 649, 0, 86, 0, 86, 350, 351, 352,
2162 353, 354, 213, 213, 0, 0, 213, 1050, 1052, 1053,
2163 1054, 0, 76, 0, 76, 0, 113, 0, 76, 76,
2164 0, 0, 0, 0, 218, 0, 769, 113, 0, 113,
2165 1058, 0, 942, 76, 247, 249, 0, 0, 0, 213,
2166 213, 645, 0, 646, 647, 648, 649, 650, 0, 0,
2167 278, 0, 302, 303, 0, 0, 0, 0, 0, 651,
2168 76, 76, 971, 0, 646, 647, 648, 649, 0, 0,
2169 0, 0, 0, 645, 76, 646, 647, 648, 649, 650,
2170 652, 0, 0, 0, 113, 0, 653, 654, 655, 113,
2171 0, 651, 0, 0, 0, 0, 0, 0, 76, 0,
2172 329, 113, 278, 911, 0, 0, 0, 0, 76, 0,
2173 0, 656, 652, 0, 657, 342, 343, 0, 653, 654,
2174 655, 0, 0, 0, 0, 0, 0, 76, 920, 0,
2175 0, 0, 234, 0, 113, 927, 928, 0, 0, 930,
2176 0, 0, 0, 656, 0, 0, 657, 0, 0, 0,
2177 347, 348, 349, 350, 351, 352, 353, 354, 0, 658,
2178 0, -626, 0, 0, 0, 945, 946, 0, 0, -626,
2179 -626, -626, 0, 0, -626, -626, -626, 0, -626, 0,
2180 0, 957, 114, 0, 114, 0, 0, -626, -626, 0,
2181 213, 0, 0, 213, 213, 213, 302, 0, -626, -626,
2182 0, -626, -626, -626, -626, -626, 0, 0, 0, 983,
2183 0, 0, 0, 213, 0, 213, 213, 0, 113, 0,
2184 0, 0, 0, 0, 0, 0, 0, 76, 113, 76,
2185 0, 114, 0, 0, 0, 279, 0, 76, 645, 0,
2186 646, 647, 648, 649, 650, 278, 0, 0, -626, 76,
2187 0, 76, 76, 0, 0, 0, 651, 0, 0, 0,
2188 0, 279, 0, 0, 0, 0, 0, 0, 0, 0,
2189 1022, -626, 1023, 373, 383, 383, 383, 652, 1024, 0,
2190 0, 0, 76, 653, 654, 655, 0, 0, 0, 76,
2191 0, 0, 0, -626, -626, 278, -626, 0, 0, 230,
2192 -626, 0, -626, 0, -626, 0, 0, 0, 656, 213,
2193 0, 657, 0, 0, 525, 528, 529, 530, 531, 532,
2194 533, 534, 535, 536, 537, 538, 539, 540, 541, 542,
2195 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
2196 553, 0, 213, 76, 0, 0, 76, 113, 76, 113,
2197 0, 0, 0, 0, 76, 0, 0, 76, 76, 0,
2198 663, 0, 0, 0, 76, 76, 0, 0, 0, 0,
2199 0, 113, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 114, 0, 0, 76,
2201 603, 605, 76, 76, 0, 0, 0, 0, 607, 213,
2202 213, 76, 0, 0, 213, 0, 603, 605, 213, 113,
2203 0, 0, 0, 0, 278, 0, 0, 0, 0, 0,
2204 114, 0, 0, 0, 0, 0, 0, 627, 0, 0,
2205 0, 114, 632, 114, 0, 0, 0, 0, 0, 0,
2206 0, 0, 0, 213, 0, 0, 213, 0, 0, 0,
2207 0, 0, 0, 0, 279, 0, 0, 213, 0, 0,
2208 0, 0, 0, 113, 0, 0, 113, 0, 113, 0,
2209 0, 76, 0, 278, 0, 0, 0, 0, 0, 0,
2210 0, 0, 0, 684, 0, 76, 0, 0, 114, 0,
2211 0, 0, 0, 114, 0, 0, 76, 0, 213, 76,
2212 0, 0, 0, 76, 76, 114, 279, 76, 0, 0,
2213 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
2214 0, 113, 0, 0, 0, 0, 0, 0, 0, 116,
2215 0, 116, 0, 76, 76, 0, 0, 0, 114, 774,
2216 0, 0, 0, 0, 0, 663, 0, 0, 0, 76,
2217 117, 0, 117, 0, 0, 0, 0, 0, 0, 0,
2218 0, 0, 0, 213, 0, 0, 0, 213, 0, 0,
2219 0, 0, 0, 802, 0, 0, 0, 76, 116, 213,
2220 382, 0, 0, 0, 0, 0, 0, 0, 76, 0,
2221 0, 113, 0, 0, 0, 213, 0, 0, 0, 117,
2222 0, 0, 0, 280, 0, 0, 0, 0, 213, 213,
2223 0, 0, 0, 0, 0, 0, 113, 0, 0, 0,
2224 0, 0, 114, 113, 113, 0, 0, 113, 0, 280,
2225 0, 663, 114, 663, 0, 0, 0, 83, 76, 83,
2226 76, 374, 384, 384, 0, 0, 76, 0, 76, 279,
2227 0, 0, 213, 113, 113, 0, 774, 873, 0, 0,
2228 0, 0, 0, 0, 0, 663, 0, 0, 0, 113,
2229 0, 0, 382, 0, 663, 0, 76, 0, 0, 0,
2230 213, 0, 0, 0, 607, 820, 83, 823, 825, 0,
2231 0, 0, 0, 979, 831, 833, 0, 113, 0, 279,
2232 0, 213, 0, 0, 0, 0, 0, 0, 113, 0,
2233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 0, 0, 0, 0, 0, 369, 0,
2235 0, 0, 0, 116, 0, 0, 0, 0, 866, 0,
2236 0, 0, 823, 825, 0, 831, 833, 267, 0, 0,
2237 0, 114, 0, 114, 117, 0, 0, 0, 113, 774,
2238 113, 774, 0, 213, 0, 0, 113, 116, 113, 0,
2239 0, 0, 0, 0, 0, 114, 0, 0, 116, 0,
2240 116, 0, 0, 0, 802, 0, 0, 0, 117, 0,
2241 0, 802, 0, 0, 0, 0, 0, 0, 0, 117,
2242 0, 117, 0, 213, 0, 0, 0, 914, 0, 0,
2243 0, 0, 0, 114, 0, 916, 0, 0, 279, 0,
2244 0, 0, 280, 0, 0, 0, 0, 0, 774, 996,
2245 0, 0, 0, 0, 663, 116, 213, 0, 0, 0,
2246 116, 83, 0, 0, 0, 0, 0, 0, 0, 0,
2247 0, 0, 116, 916, 213, 0, 117, 0, 0, 0,
2248 0, 117, 0, 0, 0, 0, 0, 114, 0, 0,
2249 114, 0, 114, 117, 280, 83, 0, 279, 0, 0,
2250 774, 0, 774, 0, 0, 116, 83, 0, 83, 0,
2251 0, 802, 0, 0, 0, 0, 0, 407, 0, 0,
2252 409, 410, 411, 0, 0, 0, 117, 0, 0, 0,
2253 0, 0, 0, 0, 0, 774, 0, 114, 0, 0,
2254 0, 0, 0, 0, 0, 114, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2256 0, 0, 0, 83, 0, 0, 0, 0, 83, 0,
2257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2258 83, 0, 0, 524, 0, 0, 0, 0, 0, 116,
2259 0, 0, 0, 0, 0, 0, 0, 0, 0, 116,
2260 0, 0, 0, 0, 383, 0, 0, 0, 0, 0,
2261 117, 0, 0, 83, 0, 114, 0, 0, 0, 0,
2262 117, 0, 0, 0, 0, 0, 213, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 514, 280, 0, 0,
2264 114, 526, 0, 0, 0, 0, 0, 114, 114, 0,
2265 0, 114, 0, 0, 0, 0, 0, 0, 0, 0,
2266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0, 114, 114, 0,
2268 0, 0, 0, 0, 0, 0, 0, 280, 0, 0,
2269 0, 0, 0, 114, 0, 0, 383, 83, 0, 329,
2270 330, 331, 332, 333, 334, 335, 336, 83, 338, 339,
2271 0, 0, 0, 0, 342, 343, 0, 980, 116, 0,
2272 116, 114, 0, 0, 0, 0, 608, 610, 0, 0,
2273 0, 0, 114, 0, 0, 267, 0, 0, 0, 117,
2274 0, 117, 116, 0, 0, 0, 0, 345, 346, 347,
2275 348, 349, 350, 351, 352, 353, 354, 0, 0, 0,
2276 0, 0, 0, 117, 0, 0, 0, 0, 0, 0,
2277 610, 0, 0, 267, 0, 0, 0, 0, 0, 0,
2278 116, 0, 114, 0, 114, 0, 0, 0, 0, 0,
2279 114, 0, 114, 0, 0, 0, 0, 0, 0, 0,
2280 0, 117, 0, 0, 0, 0, 280, 0, 0, 0,
2281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2282 0, 0, 0, 0, 0, 693, 83, 0, 83, 0,
2283 0, 0, 0, 0, 116, 0, 0, 116, 0, 116,
2284 0, 0, 0, 0, 0, 0, 798, 0, 0, 0,
2285 83, 0, 0, 0, 0, 117, 0, 0, 117, 0,
2286 117, 0, 0, 0, 0, 280, 0, 0, 0, 0,
2287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2288 0, 0, 0, 0, 116, 0, 0, 0, 83, 0,
2289 526, 0, 116, 0, 0, 0, 0, 0, 0, 0,
2290 0, 0, 0, 0, 0, 117, 0, 0, 0, 0,
2291 0, 0, 0, 117, 0, 0, 0, 0, 0, 0,
2292 0, 0, 754, 0, 0, 0, 0, 0, 0, 0,
2293 0, 0, 0, 0, 0, 610, 267, 0, 0, 0,
2294 0, 0, 83, 0, 0, 83, 0, 83, 0, 0,
2295 0, 0, 0, 524, 0, 0, 0, 0, 0, 0,
2296 0, 0, 116, 0, 0, 0, 0, 0, 0, 0,
2297 0, 0, 384, 0, 0, 0, 0, 0, 0, 780,
2298 0, 0, 0, 117, 0, 0, 0, 116, 0, 0,
2299 0, 0, 83, 0, 116, 116, 0, 0, 116, 0,
2300 83, 0, 0, 0, 0, 0, 0, 818, 117, 0,
2301 0, 0, 0, 0, 0, 117, 117, 0, 0, 117,
2302 0, 0, 0, 0, 116, 116, 0, 0, 836, 0,
2303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2304 116, 0, 0, 0, 0, 117, 117, 0, 0, 0,
2305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2306 0, 117, 0, 0, 384, 0, 0, 0, 116, 0,
2307 83, 329, -627, -627, -627, -627, 334, 335, 0, 116,
2308 -627, -627, 0, 0, 0, 981, 342, 343, 0, 117,
2309 880, 0, 0, 0, 0, 83, 0, 0, 0, 0,
2310 117, 0, 83, 83, 0, 0, 83, 0, 0, 0,
2311 0, 0, 0, 0, 0, 0, 0, 0, 0, 345,
2312 346, 347, 348, 349, 350, 351, 352, 353, 354, 116,
2313 913, 116, 83, 83, 0, 0, 0, 116, 0, 116,
2314 0, 0, 0, 0, 0, 0, 0, 0, 83, 0,
2315 117, 0, 117, 0, 0, 0, 0, 0, 117, 0,
2316 117, 0, 0, 929, 329, 330, 331, 332, 333, 334,
2317 335, 0, 977, 338, 339, 0, 83, 0, 0, 342,
2318 343, 267, 0, 0, 0, 0, 0, 83, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2321 0, 0, 345, 346, 347, 348, 349, 350, 351, 352,
2322 353, 354, 0, 0, 0, 0, 0, 0, 0, 0,
2323 0, 0, 0, 0, 0, 0, 0, 83, 0, 83,
2324 0, 0, 0, 0, 0, 83, 0, 83, -626, 4,
2325 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
2326 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
2327 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2328 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2329 0, 0, 0, 28, 29, 30, 31, 32, 33, 34,
2330 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2331 44, 0, 45, 46, 47, 0, 48, 49, 0, 0,
2332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2333 0, 0, 0, 0, 0, 0, 50, 0, 0, 51,
2334 52, 0, 53, 54, 0, 55, 0, 0, 56, 57,
2335 58, 59, 60, 61, 62, 63, 64, -608, 0, 0,
2336 0, 0, 0, 0, 0, -608, -608, -608, 0, 0,
2337 -608, -608, -608, 0, -608, 0, 65, 66, 67, 0,
2338 752, 0, 0, -608, -608, -608, -608, 0, 0, -626,
2339 0, -626, 0, 0, -608, -608, 0, -608, -608, -608,
2340 -608, -608, 0, 0, 0, 0, 329, 330, 331, 332,
2341 333, 334, 335, 336, 337, 338, 339, 340, 341, 0,
2342 0, 342, 343, 0, 0, 0, 0, -608, -608, -608,
2343 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
2344 0, 0, -608, -608, -608, 0, 756, -608, 0, 0,
2345 0, 0, 344, -608, 345, 346, 347, 348, 349, 350,
2346 351, 352, 353, 354, 0, 0, 0, -608, 0, 0,
2347 -608, 0, -105, -608, -608, -608, -608, -608, -608, -608,
2348 -608, -608, -608, -608, -608, 0, 0, 0, 0, -608,
2349 -608, -608, -608, -608, -507, 0, -608, -608, -608, 0,
2350 -608, 0, -507, -507, -507, 0, 0, -507, -507, -507,
2351 0, -507, 0, 0, 0, 0, 0, 699, 0, -507,
2352 0, -507, -507, -507, 0, 0, 0, 0, 0, 0,
2353 0, -507, -507, 0, -507, -507, -507, -507, -507, 0,
2354 0, 0, 0, 329, 330, 331, 332, 333, 334, 335,
2355 336, 337, 338, 339, 340, 341, 0, 0, 342, 343,
2356 0, 0, 0, 0, -507, -507, -507, -507, -507, -507,
2357 -507, -507, -507, -507, -507, -507, -507, 0, 0, -507,
2358 -507, -507, 0, -507, -507, 0, 0, 0, 0, 344,
2359 -507, 345, 346, 347, 348, 349, 350, 351, 352, 353,
2360 354, 0, 0, 0, -507, 0, 0, -507, 0, -507,
2361 -507, -507, -507, -507, -507, -507, -507, -507, -507, -507,
2362 -507, -507, 0, 0, 0, 0, 0, -507, -507, -507,
2363 -507, -510, 0, -507, -507, -507, 0, -507, 0, -510,
2364 -510, -510, 0, 0, -510, -510, -510, 0, -510, 0,
2365 0, 0, 0, 0, 0, 0, -510, 0, -510, -510,
2366 -510, 0, 0, 0, 0, 0, 0, 0, -510, -510,
2367 0, -510, -510, -510, -510, -510, 0, 0, 0, 0,
2368 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
2369 339, 340, 341, 0, 0, 342, 343, 0, 0, 0,
2370 0, -510, -510, -510, -510, -510, -510, -510, -510, -510,
2371 -510, -510, -510, -510, 0, 0, -510, -510, -510, 0,
2372 -510, -510, 0, 0, 0, 0, 344, -510, 345, 346,
2373 347, 348, 349, 350, 351, 352, 353, 354, 0, 0,
2374 0, -510, 0, 0, -510, 0, -510, -510, -510, -510,
2375 -510, -510, -510, -510, -510, -510, -510, -510, -510, 0,
2376 0, 0, 0, 0, -510, -510, -510, -510, -609, 0,
2377 -510, -510, -510, 0, -510, 0, -609, -609, -609, 0,
2378 0, -609, -609, -609, 0, -609, 0, 0, 0, 0,
2379 0, 699, 0, 0, -609, -609, -609, -609, 0, 0,
2380 0, 0, 0, 0, 0, -609, -609, 0, -609, -609,
2381 -609, -609, -609, 0, 0, 0, 0, 329, 330, 331,
2382 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2383 0, 0, 342, 343, 0, 0, 0, 0, -609, -609,
2384 -609, -609, -609, -609, -609, -609, -609, -609, -609, -609,
2385 -609, 0, 0, -609, -609, -609, 0, 0, -609, 0,
2386 0, 0, 0, 344, -609, 345, 346, 347, 348, 349,
2387 350, 351, 352, 353, 354, 0, 0, 0, -609, 0,
2388 0, -609, 0, -243, -609, -609, -609, -609, -609, -609,
2389 -609, -609, -609, -609, -609, -609, 0, 0, 0, 0,
2390 -609, -609, -609, -609, -609, -610, 0, -609, -609, -609,
2391 0, -609, 0, -610, -610, -610, 0, 0, -610, -610,
2392 -610, 0, -610, 0, 0, 0, 0, 0, 0, 0,
2393 0, -610, -610, -610, -610, 0, 0, 0, 0, 0,
2394 0, 0, -610, -610, 0, -610, -610, -610, -610, -610,
2395 0, 0, 0, 0, 329, 330, 331, 332, 333, 334,
2396 335, 336, 337, 338, 339, -627, -627, 0, 0, 342,
2397 343, 0, 0, 0, 0, -610, -610, -610, -610, -610,
2398 -610, -610, -610, -610, -610, -610, -610, -610, 0, 0,
2399 -610, -610, -610, 0, 0, -610, 0, 0, 0, 0,
2400 0, -610, 345, 346, 347, 348, 349, 350, 351, 352,
2401 353, 354, 0, 0, 0, -610, 0, 0, -610, 0,
2402 0, -610, -610, -610, -610, -610, -610, -610, -610, -610,
2403 -610, -610, -610, 0, 0, 0, 0, -610, -610, -610,
2404 -610, -610, -294, 0, -610, -610, -610, 0, -610, 0,
2405 -294, -294, -294, 0, 0, -294, -294, -294, 0, -294,
2406 0, 0, 0, 0, 0, 0, 0, 0, 0, -294,
2407 -294, -294, 0, 0, 0, 0, 0, 0, 0, -294,
2408 -294, 0, -294, -294, -294, -294, -294, 0, 0, 0,
2409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2411 0, 0, -294, -294, -294, -294, -294, -294, -294, -294,
2412 -294, -294, -294, -294, -294, 0, 0, -294, -294, -294,
2413 0, 757, -294, 0, 0, 0, 0, 0, -294, 0,
2414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2415 0, 0, -294, 0, 0, -294, 0, -107, -294, -294,
2416 -294, -294, -294, -294, -294, -294, -294, -294, -294, -294,
2417 0, 0, 0, 0, 0, -294, -294, -294, -294, -432,
2418 0, -294, -294, -294, 0, -294, 0, -432, -432, -432,
2419 0, 0, -432, -432, -432, 0, -432, 0, 0, 0,
2420 0, 0, 0, 0, 0, -432, -432, -432, 0, 0,
2421 0, 0, 0, 0, 0, 0, -432, -432, 0, -432,
2422 -432, -432, -432, -432, 0, 0, 0, 0, 0, 0,
2423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2424 0, 0, 0, 0, 0, 0, 0, 0, 0, -432,
2425 -432, -432, -432, -432, -432, -432, -432, -432, -432, -432,
2426 -432, -432, 0, 0, -432, -432, -432, 0, 0, -432,
2427 0, 0, 0, 0, 0, -432, 0, 0, 0, 0,
2428 0, 0, 0, 0, 0, 0, 0, 0, 0, -432,
2429 0, 0, 0, 0, 0, -432, 0, -432, -432, -432,
2430 -432, -432, -432, -432, -432, -432, -432, 0, 0, 0,
2431 0, -432, -432, -432, -432, -432, -285, 230, -432, -432,
2432 -432, 0, -432, 0, -285, -285, -285, 0, 0, -285,
2433 -285, -285, 0, -285, 0, 0, 0, 0, 0, 0,
2434 0, 0, 0, -285, -285, -285, 0, 0, 0, 0,
2435 0, 0, 0, -285, -285, 0, -285, -285, -285, -285,
2436 -285, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2438 0, 0, 0, 0, 0, 0, -285, -285, -285, -285,
2439 -285, -285, -285, -285, -285, -285, -285, -285, -285, 0,
2440 0, -285, -285, -285, 0, 0, -285, 0, 0, 0,
2441 0, 0, -285, 0, 0, 0, 0, 0, 0, 0,
2442 0, 0, 0, 0, 0, 0, -285, 0, 0, -285,
2443 0, 0, -285, -285, -285, -285, -285, -285, -285, -285,
2444 -285, -285, -285, -285, 0, 0, 0, 0, 0, -285,
2445 -285, -285, -285, -422, 0, -285, -285, -285, 0, -285,
2446 0, -422, -422, -422, 0, 0, -422, -422, -422, 0,
2447 -422, 0, 0, 0, 0, 0, 0, 0, 0, -422,
2448 -422, -422, 0, 0, 0, 0, 0, 0, 0, 0,
2449 -422, -422, 0, -422, -422, -422, -422, -422, 0, 0,
2450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2452 0, 0, 0, -422, -422, -422, -422, -422, -422, -422,
2453 -422, -422, -422, -422, -422, -422, 0, 0, -422, -422,
2454 -422, 0, 0, -422, 0, 0, 0, 0, 0, -422,
2455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2456 0, 0, 0, -422, 0, 0, 0, 0, 0, -422,
2457 0, -422, -422, -422, -422, -422, -422, -422, -422, -422,
2458 -422, 0, 0, 0, 0, -422, -422, -422, -422, -422,
2459 -301, -422, -422, -422, -422, 0, -422, 0, -301, -301,
2460 -301, 0, 0, -301, -301, -301, 0, -301, 0, 0,
2461 0, 0, 0, 0, 0, 0, 0, -301, -301, 0,
2462 0, 0, 0, 0, 0, 0, 0, -301, -301, 0,
2463 -301, -301, -301, -301, -301, 0, 0, 0, 0, 0,
2464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2466 -301, -301, -301, -301, -301, -301, -301, -301, -301, -301,
2467 -301, -301, -301, 0, 0, -301, -301, -301, 0, 0,
2468 -301, 0, 0, 0, 0, 0, -301, 0, 0, 0,
2469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2470 -301, 0, 0, 0, 0, 0, -301, 0, -301, -301,
2471 -301, -301, -301, -301, -301, -301, -301, -301, 0, 0,
2472 0, 0, 0, -301, -301, -301, -301, -608, 227, -301,
2473 -301, -301, 0, -301, 0, -608, -608, -608, 0, 0,
2474 0, -608, -608, 0, -608, 0, 0, 0, 0, 0,
2475 0, 0, 0, -608, 0, 0, 0, 0, 0, 0,
2476 0, 0, 0, 0, -608, -608, 0, -608, -608, -608,
2477 -608, -608, 0, 0, 0, 0, 0, 0, 0, 0,
2478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2479 0, 0, 0, 0, 0, 0, 0, -608, -608, -608,
2480 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
2481 0, 0, -608, -608, -608, 0, 701, 0, 0, 0,
2482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2483 0, 0, 0, 0, 0, 0, 0, -608, 0, 0,
2484 0, 0, -105, -608, 0, -608, -608, -608, -608, -608,
2485 -608, -608, -608, -608, -608, 0, 0, 0, 0, -608,
2486 -608, -608, -608, -96, -294, 0, -608, 0, -608, 0,
2487 -608, 0, -294, -294, -294, 0, 0, 0, -294, -294,
2488 0, -294, 0, 0, 0, 0, 0, 0, 0, 0,
2489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2490 0, -294, -294, 0, -294, -294, -294, -294, -294, 0,
2491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2493 0, 0, 0, 0, -294, -294, -294, -294, -294, -294,
2494 -294, -294, -294, -294, -294, -294, -294, 0, 0, -294,
2495 -294, -294, 0, 702, 0, 0, 0, 0, 0, 0,
2496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2497 0, 0, 0, 0, -294, 0, 0, 0, 0, -107,
2498 -294, 0, -294, -294, -294, -294, -294, -294, -294, -294,
2499 -294, -294, 0, 0, 0, 0, 0, -294, -294, -294,
2500 -98, 0, 0, -294, 0, -294, 251, -294, 5, 6,
2501 7, 8, 9, -626, -626, -626, 10, 11, 0, 0,
2502 -626, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2503 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2504 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2505 28, 29, 252, 31, 32, 33, 34, 35, 36, 37,
2506 38, 39, 40, 0, 41, 42, 43, 44, 0, 45,
2507 46, 47, 0, 48, 49, 0, 0, 0, 0, 0,
2508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2509 0, 0, 0, 50, 0, 0, 51, 52, 0, 53,
2510 54, 0, 55, 0, 0, 56, 57, 58, 59, 60,
2511 61, 62, 63, 64, 0, 0, 0, 0, 0, 0,
2512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2513 0, 0, 0, 65, 66, 67, 0, 0, 0, 0,
2514 0, 0, 0, 0, 0, 0, -626, 251, -626, 5,
2515 6, 7, 8, 9, 0, 0, -626, 10, 11, 0,
2516 -626, -626, 12, 0, 13, 14, 15, 16, 17, 18,
2517 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2518 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2519 0, 28, 29, 252, 31, 32, 33, 34, 35, 36,
2520 37, 38, 39, 40, 0, 41, 42, 43, 44, 0,
2521 45, 46, 47, 0, 48, 49, 0, 0, 0, 0,
2522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2523 0, 0, 0, 0, 50, 0, 0, 51, 52, 0,
2524 53, 54, 0, 55, 0, 0, 56, 57, 58, 59,
2525 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
2526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2527 0, 0, 0, 0, 65, 66, 67, 0, 0, 0,
2528 0, 0, 0, 0, 0, 0, 0, -626, 251, -626,
2529 5, 6, 7, 8, 9, 0, 0, -626, 10, 11,
2530 0, 0, -626, 12, -626, 13, 14, 15, 16, 17,
2531 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2532 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2533 0, 0, 28, 29, 252, 31, 32, 33, 34, 35,
2534 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2535 0, 45, 46, 47, 0, 48, 49, 0, 0, 0,
2536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2537 0, 0, 0, 0, 0, 50, 0, 0, 51, 52,
2538 0, 53, 54, 0, 55, 0, 0, 56, 57, 58,
2539 59, 60, 61, 62, 63, 64, 0, 0, 0, 0,
2540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2541 0, 0, 0, 0, 0, 65, 66, 67, 0, 0,
2542 0, 0, 0, 0, 0, 0, 0, 0, -626, 251,
2543 -626, 5, 6, 7, 8, 9, 0, 0, -626, 10,
2544 11, 0, 0, -626, 12, 0, 13, 14, 15, 16,
2545 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2546 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2547 0, 0, 0, 28, 29, 252, 31, 32, 33, 34,
2548 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2549 44, 0, 45, 46, 47, 0, 48, 49, 0, 0,
2550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2551 0, 0, 0, 0, 0, 0, 50, 0, 0, 51,
2552 52, 0, 53, 54, 0, 55, 0, 0, 56, 57,
2553 58, 59, 60, 61, 62, 63, 64, 0, 0, 0,
2554 0, 0, 0, 0, 251, 0, 5, 6, 7, 8,
2555 9, 0, -626, -626, 10, 11, 65, 66, 67, 12,
2556 0, 13, 14, 15, 16, 17, 18, 19, 0, -626,
2557 0, -626, 0, 20, 21, 22, 23, 24, 25, 26,
2558 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2559 252, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2560 40, 0, 41, 42, 43, 44, 0, 45, 46, 47,
2561 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2563 0, 50, 0, 0, 51, 52, 0, 53, 54, 0,
2564 55, 0, 0, 56, 57, 58, 59, 60, 61, 62,
2565 63, 64, 0, 0, 0, 0, 0, 0, 0, 251,
2566 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
2567 11, 65, 66, 67, 12, 0, 13, 14, 15, 16,
2568 17, 18, 19, 0, -626, 0, -626, 0, 20, 21,
2569 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2570 0, 0, 0, 28, 29, 252, 31, 32, 33, 34,
2571 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2572 44, 0, 45, 46, 47, 0, 48, 49, 0, 0,
2573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2574 0, 0, 0, 0, 0, 0, 50, 0, 0, 253,
2575 52, 0, 53, 54, 0, 55, 0, 0, 56, 57,
2576 58, 59, 60, 61, 62, 63, 64, 0, 0, 0,
2577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2578 0, 0, 0, 0, 0, 0, 65, 66, 67, 0,
2579 0, 0, 0, 0, 0, 0, 0, -626, 0, -626,
2580 251, -626, 5, 6, 7, 8, 9, 0, 0, 0,
2581 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
2582 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2583 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2584 0, 0, 0, 0, 28, 29, 252, 31, 32, 33,
2585 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2586 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2588 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
2589 51, 52, 0, 53, 54, 0, 55, 0, 0, 56,
2590 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2592 0, 0, 0, 0, 0, 0, 0, 65, 66, 67,
2593 0, 0, 0, 0, 0, 0, 0, 0, -626, 0,
2594 -626, 251, -626, 5, 6, 7, 8, 9, 0, 0,
2595 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
2596 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2597 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2598 0, 0, 0, 0, 0, 28, 29, 252, 31, 32,
2599 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2600 42, 43, 44, 0, 45, 46, 47, 0, 48, 49,
2601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2602 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
2603 0, 51, 52, 0, 53, 54, 0, 55, 0, 0,
2604 56, 57, 58, 59, 60, 61, 62, 63, 64, 0,
2605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2606 0, 0, 0, 0, 0, 0, 0, 0, 65, 66,
2607 67, 0, 0, -626, 4, 0, 5, 6, 7, 8,
2608 9, -626, 0, -626, 10, 11, 0, 0, 0, 12,
2609 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2610 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2611 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2612 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2613 40, 0, 41, 42, 43, 44, 0, 45, 46, 47,
2614 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2616 0, 50, 0, 0, 51, 52, 0, 53, 54, 0,
2617 55, 0, 0, 56, 57, 58, 59, 60, 61, 62,
2618 63, 64, 0, 0, 0, 0, 0, 0, 0, 0,
2619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2620 0, 65, 66, 67, 0, 0, -626, 0, 0, 0,
2621 0, 0, 0, 0, -626, 251, -626, 5, 6, 7,
2622 8, 9, 0, 0, -626, 10, 11, 0, 0, 0,
2623 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2624 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2625 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2626 29, 252, 31, 32, 33, 34, 35, 36, 37, 38,
2627 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2628 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2630 0, 0, 50, 0, 0, 51, 52, 0, 53, 54,
2631 0, 55, 0, 0, 56, 57, 58, 59, 60, 61,
2632 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2633 251, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2634 10, 11, 65, 66, 67, 12, 0, 13, 14, 15,
2635 16, 17, 18, 19, 0, -626, 0, -626, 0, 20,
2636 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2637 0, 0, 0, 0, 28, 29, 252, 31, 32, 33,
2638 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2639 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
2642 51, 52, 0, 53, 54, 0, 55, 0, 0, 56,
2643 57, 58, 59, 60, 61, 62, 63, 64, 0, -626,
2644 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2645 0, 9, 0, 0, 0, 10, 11, 65, 66, 67,
2646 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2647 -626, 0, -626, 0, 20, 21, 22, 23, 24, 25,
2648 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2649 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2650 39, 40, 204, 41, 42, 43, 44, 0, 45, 46,
2651 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2653 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2654 0, 207, 208, 209, 56, 57, 58, 59, 60, 61,
2655 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2656 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2657 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2658 16, 17, 18, 19, 0, 0, 0, 234, 0, 20,
2659 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2660 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2661 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2662 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2665 206, 52, 0, 53, 54, 0, 0, 0, 0, 56,
2666 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2667 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2668 0, 9, 0, 0, 0, 10, 11, 65, 66, 67,
2669 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2670 304, 0, 305, 0, 20, 21, 22, 23, 24, 25,
2671 26, 0, 0, 27, 0, 0, 0, 0, 0, 0,
2672 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2673 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2674 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2676 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2677 0, 0, 0, 0, 56, 57, 58, 59, 60, 61,
2678 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2679 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2680 10, 11, 65, 66, 67, 12, 0, 13, 14, 15,
2681 16, 17, 18, 19, 0, 0, 0, 234, 0, 20,
2682 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2683 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
2684 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2685 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
2688 51, 52, 0, 53, 54, 0, 55, 0, 0, 56,
2689 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2690 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2691 8, 9, 0, 0, 0, 10, 11, 65, 66, 67,
2692 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2693 498, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2694 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2695 29, 252, 31, 32, 33, 34, 35, 36, 37, 38,
2696 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2697 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2699 0, 0, 50, 0, 0, 51, 52, 0, 53, 54,
2700 0, 55, 0, 0, 56, 57, 58, 59, 60, 61,
2701 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2703 0, 0, 65, 66, 67, 0, 0, 0, 0, 0,
2704 0, 0, 0, 0, 0, 498, 121, 122, 123, 124,
2705 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2706 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
2707 0, 0, 0, 145, 146, 147, 386, 387, 388, 389,
2708 152, 153, 154, 0, 0, 0, 0, 0, 155, 156,
2709 157, 158, 390, 391, 392, 393, 163, 37, 38, 394,
2710 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2711 0, 165, 166, 167, 168, 169, 170, 171, 172, 173,
2712 0, 0, 174, 175, 0, 0, 176, 177, 178, 179,
2713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2714 180, 181, 0, 0, 0, 0, 0, 0, 0, 0,
2715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2716 0, 182, 183, 184, 185, 186, 187, 188, 189, 190,
2717 191, 0, 192, 193, 0, 0, 0, 0, 0, 0,
2718 194, 395, 121, 122, 123, 124, 125, 126, 127, 128,
2719 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2720 139, 140, 141, 142, 143, 144, 0, 0, 0, 145,
2721 146, 147, 148, 149, 150, 151, 152, 153, 154, 0,
2722 0, 0, 0, 0, 155, 156, 157, 158, 159, 160,
2723 161, 162, 163, 283, 284, 164, 285, 0, 0, 0,
2724 0, 0, 0, 0, 0, 0, 0, 165, 166, 167,
2725 168, 169, 170, 171, 172, 173, 0, 0, 174, 175,
2726 0, 0, 176, 177, 178, 179, 0, 0, 0, 0,
2727 0, 0, 0, 0, 0, 0, 180, 181, 0, 0,
2728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2729 0, 0, 0, 0, 0, 0, 0, 182, 183, 184,
2730 185, 186, 187, 188, 189, 190, 191, 0, 192, 193,
2731 0, 0, 0, 0, 0, 0, 194, 121, 122, 123,
2732 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2733 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2734 144, 0, 0, 0, 145, 146, 147, 148, 149, 150,
2735 151, 152, 153, 154, 0, 0, 0, 0, 0, 155,
2736 156, 157, 158, 159, 160, 161, 162, 163, 236, 0,
2737 164, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2738 0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
2739 173, 0, 0, 174, 175, 0, 0, 176, 177, 178,
2740 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2741 0, 180, 181, 0, 0, 57, 0, 0, 0, 0,
2742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2743 0, 0, 182, 183, 184, 185, 186, 187, 188, 189,
2744 190, 191, 0, 192, 193, 0, 0, 0, 0, 0,
2745 0, 194, 121, 122, 123, 124, 125, 126, 127, 128,
2746 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2747 139, 140, 141, 142, 143, 144, 0, 0, 0, 145,
2748 146, 147, 148, 149, 150, 151, 152, 153, 154, 0,
2749 0, 0, 0, 0, 155, 156, 157, 158, 159, 160,
2750 161, 162, 163, 0, 0, 164, 0, 0, 0, 0,
2751 0, 0, 0, 0, 0, 0, 0, 165, 166, 167,
2752 168, 169, 170, 171, 172, 173, 0, 0, 174, 175,
2753 0, 0, 176, 177, 178, 179, 0, 0, 0, 0,
2754 0, 0, 0, 0, 0, 0, 180, 181, 0, 0,
2755 57, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2756 0, 0, 0, 0, 0, 0, 0, 182, 183, 184,
2757 185, 186, 187, 188, 189, 190, 191, 0, 192, 193,
2758 0, 0, 0, 0, 0, 0, 194, 121, 122, 123,
2759 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2760 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2761 144, 0, 0, 0, 145, 146, 147, 148, 149, 150,
2762 151, 152, 153, 154, 0, 0, 0, 0, 0, 155,
2763 156, 157, 158, 159, 160, 161, 162, 163, 0, 0,
2764 164, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2765 0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
2766 173, 0, 0, 174, 175, 0, 0, 176, 177, 178,
2767 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2768 0, 180, 181, 0, 0, 0, 0, 0, 0, 0,
2769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2770 0, 0, 182, 183, 184, 185, 186, 187, 188, 189,
2771 190, 191, 0, 192, 193, 5, 6, 7, 0, 9,
2772 0, 194, 0, 10, 11, 0, 0, 0, 12, 0,
2773 13, 14, 15, 241, 242, 18, 19, 0, 0, 0,
2774 0, 0, 243, 244, 245, 23, 24, 25, 26, 0,
2775 0, 203, 0, 0, 0, 0, 0, 0, 271, 0,
2776 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2777 0, 41, 42, 43, 44, 0, 45, 46, 47, 0,
2778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2780 272, 0, 0, 206, 52, 0, 53, 54, 0, 0,
2781 0, 0, 56, 57, 58, 59, 60, 61, 62, 63,
2782 64, 0, 0, 0, 0, 0, 5, 6, 7, 0,
2783 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
2784 273, 13, 14, 15, 241, 242, 18, 19, 274, 0,
2785 0, 0, 0, 243, 244, 245, 23, 24, 25, 26,
2786 0, 0, 203, 0, 0, 0, 0, 0, 0, 271,
2787 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
2788 40, 0, 41, 42, 43, 44, 0, 45, 46, 47,
2789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2791 0, 272, 0, 0, 206, 52, 0, 53, 54, 0,
2792 0, 0, 0, 56, 57, 58, 59, 60, 61, 62,
2793 63, 64, 0, 0, 0, 0, 0, 5, 6, 7,
2794 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
2795 12, 273, 13, 14, 15, 16, 17, 18, 19, 519,
2796 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2797 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2798 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
2799 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2800 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2802 0, 0, 50, 0, 0, 51, 52, 0, 53, 54,
2803 0, 55, 0, 0, 56, 57, 58, 59, 60, 61,
2804 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2805 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2806 10, 11, 65, 66, 67, 12, 0, 13, 14, 15,
2807 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2808 21, 22, 23, 24, 25, 26, 0, 0, 203, 0,
2809 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2810 34, 35, 36, 37, 38, 39, 40, 204, 41, 42,
2811 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2813 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2814 206, 52, 0, 53, 54, 0, 207, 208, 209, 56,
2815 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2816 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2817 8, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2818 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2819 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2820 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2821 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
2822 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2823 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2825 0, 0, 50, 0, 0, 51, 52, 0, 53, 54,
2826 0, 55, 0, 0, 56, 57, 58, 59, 60, 61,
2827 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2828 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2829 10, 11, 65, 66, 67, 12, 0, 13, 14, 15,
2830 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
2831 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
2832 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2833 34, 35, 36, 37, 38, 39, 40, 204, 41, 42,
2834 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2836 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2837 206, 52, 0, 53, 54, 0, 609, 208, 209, 56,
2838 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2839 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2840 0, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2841 12, 0, 13, 14, 15, 241, 242, 18, 19, 0,
2842 0, 0, 0, 0, 243, 244, 245, 23, 24, 25,
2843 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2844 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2845 39, 40, 204, 41, 42, 43, 44, 0, 45, 46,
2846 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2848 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2849 0, 207, 208, 0, 56, 57, 58, 59, 60, 61,
2850 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2851 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2852 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2853 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
2854 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
2855 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2856 34, 35, 36, 37, 38, 39, 40, 204, 41, 42,
2857 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2859 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2860 206, 52, 0, 53, 54, 0, 0, 208, 209, 56,
2861 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2862 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2863 0, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2864 12, 0, 13, 14, 15, 241, 242, 18, 19, 0,
2865 0, 0, 0, 0, 243, 244, 245, 23, 24, 25,
2866 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2867 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2868 39, 40, 204, 41, 42, 43, 44, 0, 45, 46,
2869 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2871 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2872 0, 609, 208, 0, 56, 57, 58, 59, 60, 61,
2873 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2874 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2875 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2876 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
2877 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
2878 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2879 34, 35, 36, 37, 38, 39, 40, 204, 41, 42,
2880 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2882 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2883 206, 52, 0, 53, 54, 0, 0, 208, 0, 56,
2884 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2886 0, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2887 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2888 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2889 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2890 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2891 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2892 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2894 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2895 0, 512, 0, 0, 56, 57, 58, 59, 60, 61,
2896 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2897 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2898 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2899 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
2900 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
2901 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2902 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2903 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2905 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2906 206, 52, 0, 53, 54, 0, 207, 0, 0, 56,
2907 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2908 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2909 0, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2910 12, 0, 13, 14, 15, 241, 242, 18, 19, 0,
2911 0, 0, 0, 0, 243, 244, 245, 23, 24, 25,
2912 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2913 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2914 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2915 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2917 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2918 0, 817, 0, 0, 56, 57, 58, 59, 60, 61,
2919 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2920 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2921 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2922 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
2923 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
2924 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2925 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2926 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2928 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2929 206, 52, 0, 53, 54, 0, 512, 0, 0, 56,
2930 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2931 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2932 0, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2933 12, 0, 13, 14, 15, 241, 242, 18, 19, 0,
2934 0, 0, 0, 0, 243, 244, 245, 23, 24, 25,
2935 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2936 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2937 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2938 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2940 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2941 0, 609, 0, 0, 56, 57, 58, 59, 60, 61,
2942 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2943 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2944 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2945 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
2946 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
2947 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2948 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2949 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2951 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2952 206, 52, 0, 53, 54, 0, 0, 0, 0, 56,
2953 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2954 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2955 0, 9, 0, 0, 0, 10, 11, 65, 210, 67,
2956 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2957 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2958 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2959 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2960 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2961 47, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2963 0, 0, 205, 0, 0, 206, 52, 0, 53, 54,
2964 0, 0, 0, 0, 56, 57, 58, 59, 60, 61,
2965 62, 63, 64, 0, 0, 0, 0, 0, 0, 0,
2966 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2967 10, 11, 65, 210, 67, 12, 0, 13, 14, 15,
2968 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2969 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2970 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
2971 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2972 43, 44, 0, 45, 46, 47, 0, 48, 49, 0,
2973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2974 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
2975 206, 52, 0, 53, 54, 0, 0, 0, 0, 56,
2976 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
2977 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2978 0, 9, 0, 0, 0, 10, 11, 65, 66, 67,
2979 12, 0, 13, 14, 15, 241, 242, 18, 19, 0,
2980 0, 0, 0, 0, 243, 244, 245, 23, 24, 25,
2981 26, 0, 0, 203, 0, 0, 0, 0, 0, 0,
2982 271, 0, 0, 32, 33, 34, 35, 36, 37, 38,
2983 39, 40, 0, 41, 42, 43, 44, 0, 45, 46,
2984 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2986 0, 0, 272, 0, 0, 325, 52, 0, 53, 54,
2987 0, 326, 0, 0, 56, 57, 58, 59, 60, 61,
2988 62, 63, 64, 0, 0, 0, 0, 0, 5, 6,
2989 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
2990 0, 12, 273, 13, 14, 15, 241, 242, 18, 19,
2991 0, 0, 0, 0, 0, 243, 244, 245, 23, 24,
2992 25, 26, 0, 0, 203, 0, 0, 0, 0, 0,
2993 0, 271, 0, 0, 32, 33, 34, 35, 36, 37,
2994 38, 39, 40, 0, 41, 42, 43, 44, 0, 45,
2995 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2997 0, 0, 0, 367, 0, 0, 51, 52, 0, 53,
2998 54, 0, 55, 0, 0, 56, 57, 58, 59, 60,
2999 61, 62, 63, 64, 0, 0, 0, 0, 0, 5,
3000 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3001 0, 0, 12, 273, 13, 14, 15, 241, 242, 18,
3002 19, 0, 0, 0, 0, 0, 243, 244, 245, 23,
3003 24, 25, 26, 0, 0, 203, 0, 0, 0, 0,
3004 0, 0, 271, 0, 0, 32, 33, 34, 375, 36,
3005 37, 38, 376, 40, 0, 41, 42, 43, 44, 0,
3006 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3008 0, 377, 0, 0, 378, 0, 0, 206, 52, 0,
3009 53, 54, 0, 0, 0, 0, 56, 57, 58, 59,
3010 60, 61, 62, 63, 64, 0, 0, 0, 0, 0,
3011 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3012 0, 0, 0, 12, 273, 13, 14, 15, 241, 242,
3013 18, 19, 0, 0, 0, 0, 0, 243, 244, 245,
3014 23, 24, 25, 26, 0, 0, 203, 0, 0, 0,
3015 0, 0, 0, 271, 0, 0, 32, 33, 34, 375,
3016 36, 37, 38, 376, 40, 0, 41, 42, 43, 44,
3017 0, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3019 0, 0, 0, 0, 0, 378, 0, 0, 206, 52,
3020 0, 53, 54, 0, 0, 0, 0, 56, 57, 58,
3021 59, 60, 61, 62, 63, 64, 0, 0, 0, 0,
3022 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3023 11, 0, 0, 0, 12, 273, 13, 14, 15, 241,
3024 242, 18, 19, 0, 0, 0, 0, 0, 243, 244,
3025 245, 23, 24, 25, 26, 0, 0, 203, 0, 0,
3026 0, 0, 0, 0, 271, 0, 0, 32, 33, 34,
3027 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3028 44, 0, 45, 46, 47, 0, 0, 0, 0, 0,
3029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3030 0, 0, 0, 0, 0, 0, 272, 0, 0, 325,
3031 52, 0, 53, 54, 0, 0, 0, 0, 56, 57,
3032 58, 59, 60, 61, 62, 63, 64, 0, 0, 0,
3033 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3034 10, 11, 0, 0, 0, 12, 273, 13, 14, 15,
3035 241, 242, 18, 19, 0, 0, 0, 0, 0, 243,
3036 244, 245, 23, 24, 25, 26, 0, 0, 203, 0,
3037 0, 0, 0, 0, 0, 271, 0, 0, 32, 33,
3038 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3039 43, 44, 0, 45, 46, 47, 0, 0, 0, 0,
3040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3041 0, 0, 0, 0, 0, 0, 0, 899, 0, 0,
3042 206, 52, 0, 53, 54, 0, 0, 0, 0, 56,
3043 57, 58, 59, 60, 61, 62, 63, 64, 0, 0,
3044 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3045 0, 10, 11, 0, 0, 0, 12, 273, 13, 14,
3046 15, 241, 242, 18, 19, 0, 0, 0, 0, 0,
3047 243, 244, 245, 23, 24, 25, 26, 0, 0, 203,
3048 0, 0, 0, 0, 0, 0, 271, 0, 0, 32,
3049 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3050 42, 43, 44, 0, 45, 46, 47, 0, 0, 0,
3051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3052 0, 0, 0, 0, 0, 0, 0, 0, 976, 0,
3053 0, 206, 52, 0, 53, 54, 0, 0, 0, 0,
3054 56, 57, 58, 59, 60, 61, 62, 63, 64, 0,
3055 0, 0, 0, 554, 555, 0, 0, 556, 0, 0,
3056 0, 0, 0, 0, 0, 0, 0, 0, 273, 165,
3057 166, 167, 168, 169, 170, 171, 172, 173, 0, 0,
3058 174, 175, 0, 0, 176, 177, 178, 179, 0, 0,
3059 0, 0, 0, 0, 0, 0, 0, 0, 180, 181,
3060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3061 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
3062 183, 184, 185, 186, 187, 188, 189, 190, 191, 0,
3063 192, 193, 562, 563, 0, 0, 564, 0, 194, 0,
3064 0, 0, 0, 0, 0, 0, 0, 0, 165, 166,
3065 167, 168, 169, 170, 171, 172, 173, 0, 0, 174,
3066 175, 0, 0, 176, 177, 178, 179, 0, 0, 0,
3067 0, 0, 0, 0, 0, 0, 0, 180, 181, 0,
3068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3069 0, 0, 0, 0, 0, 0, 0, 0, 182, 183,
3070 184, 185, 186, 187, 188, 189, 190, 191, 0, 192,
3071 193, 599, 563, 0, 0, 600, 0, 194, 0, 0,
3072 0, 0, 0, 0, 0, 0, 0, 165, 166, 167,
3073 168, 169, 170, 171, 172, 173, 0, 0, 174, 175,
3074 0, 0, 176, 177, 178, 179, 0, 0, 0, 0,
3075 0, 0, 0, 0, 0, 0, 180, 181, 0, 0,
3076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3077 0, 0, 0, 0, 0, 0, 0, 182, 183, 184,
3078 185, 186, 187, 188, 189, 190, 191, 0, 192, 193,
3079 613, 555, 0, 0, 614, 0, 194, 0, 0, 0,
3080 0, 0, 0, 0, 0, 0, 165, 166, 167, 168,
3081 169, 170, 171, 172, 173, 0, 0, 174, 175, 0,
3082 0, 176, 177, 178, 179, 0, 0, 0, 0, 0,
3083 0, 0, 0, 0, 0, 180, 181, 0, 0, 0,
3084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3085 0, 0, 0, 0, 0, 0, 182, 183, 184, 185,
3086 186, 187, 188, 189, 190, 191, 0, 192, 193, 616,
3087 563, 0, 0, 617, 0, 194, 0, 0, 0, 0,
3088 0, 0, 0, 0, 0, 165, 166, 167, 168, 169,
3089 170, 171, 172, 173, 0, 0, 174, 175, 0, 0,
3090 176, 177, 178, 179, 0, 0, 0, 0, 0, 0,
3091 0, 0, 0, 0, 180, 181, 0, 0, 0, 0,
3092 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3093 0, 0, 0, 0, 0, 182, 183, 184, 185, 186,
3094 187, 188, 189, 190, 191, 0, 192, 193, 640, 555,
3095 0, 0, 641, 0, 194, 0, 0, 0, 0, 0,
3096 0, 0, 0, 0, 165, 166, 167, 168, 169, 170,
3097 171, 172, 173, 0, 0, 174, 175, 0, 0, 176,
3098 177, 178, 179, 0, 0, 0, 0, 0, 0, 0,
3099 0, 0, 0, 180, 181, 0, 0, 0, 0, 0,
3100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3101 0, 0, 0, 0, 182, 183, 184, 185, 186, 187,
3102 188, 189, 190, 191, 0, 192, 193, 643, 563, 0,
3103 0, 644, 0, 194, 0, 0, 0, 0, 0, 0,
3104 0, 0, 0, 165, 166, 167, 168, 169, 170, 171,
3105 172, 173, 0, 0, 174, 175, 0, 0, 176, 177,
3106 178, 179, 0, 0, 0, 0, 0, 0, 0, 0,
3107 0, 0, 180, 181, 0, 0, 0, 0, 0, 0,
3108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3109 0, 0, 0, 182, 183, 184, 185, 186, 187, 188,
3110 189, 190, 191, 0, 192, 193, 728, 555, 0, 0,
3111 729, 0, 194, 0, 0, 0, 0, 0, 0, 0,
3112 0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
3113 173, 0, 0, 174, 175, 0, 0, 176, 177, 178,
3114 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3115 0, 180, 181, 0, 0, 0, 0, 0, 0, 0,
3116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3117 0, 0, 182, 183, 184, 185, 186, 187, 188, 189,
3118 190, 191, 0, 192, 193, 731, 563, 0, 0, 732,
3119 0, 194, 0, 0, 0, 0, 0, 0, 0, 0,
3120 0, 165, 166, 167, 168, 169, 170, 171, 172, 173,
3121 0, 0, 174, 175, 0, 0, 176, 177, 178, 179,
3122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3123 180, 181, 0, 0, 0, 0, 0, 0, 0, 0,
3124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3125 0, 182, 183, 184, 185, 186, 187, 188, 189, 190,
3126 191, 0, 192, 193, 738, 555, 0, 0, 739, 0,
3127 194, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3128 165, 166, 167, 168, 169, 170, 171, 172, 173, 0,
3129 0, 174, 175, 0, 0, 176, 177, 178, 179, 0,
3130 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
3131 181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3133 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
3134 0, 192, 193, 1008, 555, 0, 0, 1009, 0, 194,
3135 0, 0, 0, 0, 0, 0, 0, 0, 0, 165,
3136 166, 167, 168, 169, 170, 171, 172, 173, 0, 0,
3137 174, 175, 0, 0, 176, 177, 178, 179, 0, 0,
3138 0, 0, 0, 0, 0, 0, 0, 0, 180, 181,
3139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3140 0, 0, 0, 0, 0, 0, 0, 0, 0, 182,
3141 183, 184, 185, 186, 187, 188, 189, 190, 191, 0,
3142 192, 193, 1039, 555, 0, 0, 1040, 0, 194, 0,
3143 0, 0, 0, 0, 0, 0, 0, 0, 165, 166,
3144 167, 168, 169, 170, 171, 172, 173, 0, 0, 174,
3145 175, 0, 0, 176, 177, 178, 179, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0, 0, 180, 181, 0,
3147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3148 0, 0, 0, 0, 0, 0, 0, 0, 182, 183,
3149 184, 185, 186, 187, 188, 189, 190, 191, 0, 192,
3150 193, 1042, 563, 0, 0, 1043, 0, 194, 0, 0,
3151 0, 0, 0, 0, 0, 0, 0, 165, 166, 167,
3152 168, 169, 170, 171, 172, 173, 0, 0, 174, 175,
3153 0, 0, 176, 177, 178, 179, 0, 0, 0, 0,
3154 0, 0, 0, 0, 0, 0, 180, 181, 329, 330,
3155 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
3156 341, 0, 0, 342, 343, 0, 0, 182, 183, 184,
3157 185, 186, 187, 188, 189, 190, 191, 0, 192, 193,
3158 0, 0, 0, 0, 0, 0, 194, 0, 0, 0,
3159 0, 0, 0, 0, 344, 0, 345, 346, 347, 348,
3160 349, 350, 351, 352, 353, 354, 0, 0, 0, 0,
3161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3165 #define yypact_value_is_default(yystate) \
3166 ((yystate) == (-816))
3168 #define yytable_value_is_error(yytable_value) \
3169 ((yytable_value) == (-627))
3173 2, 27, 57, 29, 55, 16, 17, 356, 98, 20,
3174 233, 8, 28, 69, 89, 361, 328, 92, 81, 355,
3175 328, 357, 2, 223, 4, 576, 22, 4, 578, 595,
3176 81, 28, 686, 92, 8, 258, 92, 422, 261, 575,
3177 414, 96, 93, 94, 95, 265, 88, 89, 422, 269,
3178 92, 53, 54, 469, 28, 615, 65, 787, 51, 8,
3179 57, 670, 442, 16, 17, 401, 473, 20, 716, 418,
3180 76, 55, 720, 16, 17, 460, 2, 20, 4, 28,
3181 76, 417, 642, 419, 378, 778, 27, 874, 26, 904,
3182 16, 17, 25, 289, 20, 291, 25, 293, 63, 96,
3183 53, 297, 26, 519, 908, 66, 69, 872, 63, 445,
3184 53, 54, 253, 25, 25, 1, 508, 87, 25, 511,
3185 775, 136, 471, 89, 778, 51, 13, 89, 143, 55,
3186 52, 25, 0, 787, 56, 87, 472, 87, 16, 17,
3187 66, 25, 20, 143, 109, 800, 111, 87, 78, 115,
3188 25, 25, 89, 115, 109, 81, 111, 99, 141, 132,
3189 143, 13, 88, 89, 63, 135, 92, 93, 94, 95,
3190 730, 737, 13, 37, 38, 725, 941, 142, 115, 745,
3191 122, 741, 13, 135, 325, 135, 15, 142, 17, 1004,
3192 120, 233, 742, 235, 132, 135, 255, 806, 807, 255,
3193 141, 424, 143, 136, 897, 428, 993, 136, 132, 138,
3194 433, 274, 1016, 112, 138, 217, 227, 947, 229, 230,
3195 262, 223, 56, 274, 136, 136, 449, 138, 230, 136,
3196 995, 431, 581, 119, 309, 310, 311, 312, 623, 686,
3197 246, 13, 136, 897, 593, 271, 582, 142, 622, 623,
3198 904, 658, 136, 633, 141, 141, 143, 143, 594, 952,
3199 253, 136, 136, 1028, 273, 142, 13, 309, 310, 311,
3200 312, 251, 314, 315, 227, 326, 229, 886, 138, 143,
3201 206, 697, 930, 143, 227, 63, 229, 362, 363, 141,
3202 486, 143, 255, 947, 844, 518, 846, 493, 592, 691,
3203 141, 227, 143, 229, 230, 364, 856, 233, 364, 235,
3204 141, 861, 143, 672, 240, 674, 136, 853, 1011, 142,
3205 362, 363, 28, 143, 380, 251, 29, 253, 308, 89,
3206 89, 308, 325, 313, 112, 377, 262, 744, 142, 746,
3207 787, 115, 326, 790, 26, 356, 136, 658, 274, 227,
3208 1004, 229, 115, 87, 356, 115, 115, 966, 102, 25,
3209 357, 136, 323, 87, 136, 136, 932, 328, 143, 141,
3210 323, 143, 87, 25, 704, 328, 87, 927, 928, 930,
3211 726, 711, 308, 309, 310, 311, 312, 313, 314, 315,
3212 698, 138, 89, 115, 141, 89, 143, 323, 87, 325,
3213 326, 135, 328, 715, 401, 87, 469, 418, 138, 51,
3214 113, 135, 612, 636, 136, 56, 418, 637, 469, 134,
3215 135, 115, 419, 439, 135, 115, 992, 139, 430, 431,
3216 356, 143, 358, 744, 87, 746, 362, 363, 87, 90,
3217 442, 991, 439, 404, 405, 134, 135, 138, 445, 115,
3218 132, 377, 134, 135, 89, 70, 519, 904, 136, 906,
3219 471, 136, 442, 115, 132, 439, 138, 87, 519, 471,
3220 136, 414, 70, 139, 1024, 472, 1026, 143, 404, 405,
3221 87, 1041, 135, 868, 136, 134, 135, 139, 63, 138,
3222 439, 143, 418, 52, 868, 54, 55, 56, 57, 138,
3223 947, 139, 949, 87, 89, 507, 508, 954, 87, 511,
3224 125, 126, 127, 26, 457, 135, 442, 543, 574, 575,
3225 743, 37, 38, 115, 883, 884, 452, 134, 135, 888,
3226 115, 890, 588, 892, 109, 561, 111, 112, 140, 762,
3227 686, 14, 15, 469, 52, 471, 54, 55, 56, 57,
3228 773, 135, 558, 87, 596, 134, 135, 1004, 56, 1006,
3229 566, 761, 133, 559, 206, 112, 1013, 569, 26, 63,
3230 581, 567, 918, 686, 87, 638, 136, 136, 924, 581,
3231 89, 112, 593, 1030, 626, 582, 112, 638, 112, 615,
3232 606, 593, 70, 519, 96, 601, 136, 594, 240, 601,
3233 134, 135, 17, 63, 1051, 601, 115, 56, 63, 606,
3234 612, 253, 67, 141, 26, 109, 642, 111, 112, 132,
3235 25, 134, 135, 142, 577, 138, 136, 136, 136, 87,
3236 133, 633, 606, 139, 697, 781, 136, 860, 63, 785,
3237 999, 1000, 1001, 1002, 132, 571, 697, 573, 871, 109,
3238 87, 111, 112, 633, 109, 581, 111, 606, 733, 749,
3239 686, 736, 686, 142, 136, 136, 668, 593, 670, 595,
3240 596, 1020, 136, 136, 132, 87, 134, 135, 734, 622,
3241 138, 115, 89, 325, 109, 1021, 111, 112, 87, 691,
3242 1049, 733, 747, 136, 736, 10, 138, 134, 135, 705,
3243 626, 8, 13, 138, 730, 89, 712, 633, 115, 133,
3244 712, 115, 638, 715, 716, 741, 718, 136, 720, 136,
3245 132, 63, 134, 135, 52, 136, 138, 136, 2, 136,
3246 4, 115, 87, 54, 52, 134, 135, 698, 87, 136,
3247 701, 702, 16, 17, 65, 66, 20, 708, 709, 775,
3248 747, 897, 136, 804, 52, 901, 136, 781, 904, 761,
3249 906, 687, 715, 117, 690, 140, 692, 109, 843, 111,
3250 112, 697, 698, 87, 800, 701, 702, 51, 70, 134,
3251 135, 15, 708, 709, 897, 134, 135, 133, 901, 136,
3252 87, 904, 66, 906, 120, 136, 87, 853, 115, 855,
3253 58, 843, 136, 136, 806, 807, 862, 733, 87, 136,
3254 736, 737, 70, 136, 88, 89, 141, 10, 92, 745,
3255 134, 135, 10, 133, 52, 89, 54, 55, 56, 57,
3256 58, 123, 124, 125, 126, 127, 838, 134, 135, 841,
3257 98, 99, 70, 134, 135, 896, 136, 90, 2, 89,
3258 4, 115, 809, 810, 9, 134, 135, 89, 1004, 89,
3259 1006, 136, 139, 91, 122, 1011, 917, 1013, 829, 136,
3260 98, 99, 136, 897, 136, 115, 136, 901, 804, 136,
3261 904, 120, 906, 115, 886, 115, 56, 133, 136, 815,
3262 10, 1004, 136, 1006, 122, 133, 136, 51, 1011, 110,
3263 1013, 55, 138, 829, 136, 1051, 136, 40, 41, 42,
3264 43, 44, 54, 55, 840, 57, 136, 843, 136, 70,
3265 136, 847, 848, 65, 66, 851, 136, 81, 930, 571,
3266 56, 573, 206, 136, 85, 86, 136, 138, 1051, 93,
3267 94, 95, 96, 93, 136, 52, 972, 54, 55, 56,
3268 57, 877, 878, 227, 95, 229, 230, 452, 712, 233,
3269 769, 235, 1023, 686, 966, 750, 240, 893, 1016, 1022,
3270 896, 122, 123, 124, 125, 126, 127, 251, 101, 253,
3271 1004, 297, 1006, 59, 91, 96, 781, 1011, 262, 1013,
3272 97, 917, 938, 901, 52, 921, 54, 55, 56, 57,
3273 59, 60, 61, 62, 961, 962, 932, 897, 778, 1020,
3274 967, 398, 969, 970, 70, 1041, -1, -1, 1020, -1,
3275 1022, 1023, -1, -1, 1021, -1, -1, 1051, -1, 85,
3276 86, -1, -1, 91, 308, 309, 310, 311, 312, 313,
3277 314, 315, -1, -1, -1, 687, -1, -1, 690, 323,
3278 692, 325, 206, -1, 328, -1, 982, 52, 984, 54,
3279 55, 56, 57, -1, 990, -1, 992, 123, 124, 125,
3280 126, 127, 16, 17, -1, -1, 20, 1034, 1035, 1036,
3281 1037, -1, 356, -1, 358, -1, 240, -1, 362, 363,
3282 -1, -1, -1, -1, 1020, -1, 91, 251, -1, 253,
3283 1057, -1, 97, 377, 48, 49, -1, -1, -1, 53,
3284 54, 52, -1, 54, 55, 56, 57, 58, -1, -1,
3285 274, -1, 66, 67, -1, -1, -1, -1, -1, 70,
3286 404, 405, 52, -1, 54, 55, 56, 57, -1, -1,
3287 -1, -1, -1, 52, 418, 54, 55, 56, 57, 58,
3288 91, -1, -1, -1, 308, -1, 97, 98, 99, 313,
3289 -1, 70, -1, -1, -1, -1, -1, -1, 442, -1,
3290 70, 325, 326, 815, -1, -1, -1, -1, 452, -1,
3291 -1, 122, 91, -1, 125, 85, 86, -1, 97, 98,
3292 99, -1, -1, -1, -1, -1, -1, 471, 840, -1,
3293 -1, -1, 143, -1, 358, 847, 848, -1, -1, 851,
3294 -1, -1, -1, 122, -1, -1, 125, -1, -1, -1,
3295 120, 121, 122, 123, 124, 125, 126, 127, -1, 138,
3296 -1, 0, -1, -1, -1, 877, 878, -1, -1, 8,
3297 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
3298 -1, 893, 2, -1, 4, -1, -1, 26, 27, -1,
3299 204, -1, -1, 207, 208, 209, 210, -1, 37, 38,
3300 -1, 40, 41, 42, 43, 44, -1, -1, -1, 921,
3301 -1, -1, -1, 227, -1, 229, 230, -1, 442, -1,
3302 -1, -1, -1, -1, -1, -1, -1, 571, 452, 573,
3303 -1, 51, -1, -1, -1, 55, -1, 581, 52, -1,
3304 54, 55, 56, 57, 58, 469, -1, -1, 87, 593,
3305 -1, 595, 596, -1, -1, -1, 70, -1, -1, -1,
3306 -1, 81, -1, -1, -1, -1, -1, -1, -1, -1,
3307 982, 110, 984, 93, 94, 95, 96, 91, 990, -1,
3308 -1, -1, 626, 97, 98, 99, -1, -1, -1, 633,
3309 -1, -1, -1, 132, 133, 519, 135, -1, -1, 138,
3310 139, -1, 141, -1, 143, -1, -1, -1, 122, 323,
3311 -1, 125, -1, -1, 328, 329, 330, 331, 332, 333,
3312 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
3313 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
3314 354, -1, 356, 687, -1, -1, 690, 571, 692, 573,
3315 -1, -1, -1, -1, 698, -1, -1, 701, 702, -1,
3316 473, -1, -1, -1, 708, 709, -1, -1, -1, -1,
3317 -1, 595, -1, -1, -1, -1, -1, -1, -1, -1,
3318 -1, -1, -1, -1, -1, -1, 206, -1, -1, 733,
3319 404, 405, 736, 737, -1, -1, -1, -1, 412, 413,
3320 414, 745, -1, -1, 418, -1, 420, 421, 422, 633,
3321 -1, -1, -1, -1, 638, -1, -1, -1, -1, -1,
3322 240, -1, -1, -1, -1, -1, -1, 441, -1, -1,
3323 -1, 251, 446, 253, -1, -1, -1, -1, -1, -1,
3324 -1, -1, -1, 457, -1, -1, 460, -1, -1, -1,
3325 -1, -1, -1, -1, 274, -1, -1, 471, -1, -1,
3326 -1, -1, -1, 687, -1, -1, 690, -1, 692, -1,
3327 -1, 815, -1, 697, -1, -1, -1, -1, -1, -1,
3328 -1, -1, -1, 497, -1, 829, -1, -1, 308, -1,
3329 -1, -1, -1, 313, -1, -1, 840, -1, 512, 843,
3330 -1, -1, -1, 847, 848, 325, 326, 851, -1, -1,
3331 -1, -1, -1, 737, -1, -1, -1, -1, -1, -1,
3332 -1, 745, -1, -1, -1, -1, -1, -1, -1, 2,
3333 -1, 4, -1, 877, 878, -1, -1, -1, 358, 652,
3334 -1, -1, -1, -1, -1, 658, -1, -1, -1, 893,
3335 2, -1, 4, -1, -1, -1, -1, -1, -1, -1,
3336 -1, -1, -1, 577, -1, -1, -1, 581, -1, -1,
3337 -1, -1, -1, 686, -1, -1, -1, 921, 51, 593,
3338 804, -1, -1, -1, -1, -1, -1, -1, 932, -1,
3339 -1, 815, -1, -1, -1, 609, -1, -1, -1, 51,
3340 -1, -1, -1, 55, -1, -1, -1, -1, 622, 623,
3341 -1, -1, -1, -1, -1, -1, 840, -1, -1, -1,
3342 -1, -1, 442, 847, 848, -1, -1, 851, -1, 81,
3343 -1, 744, 452, 746, -1, -1, -1, 2, 982, 4,
3344 984, 93, 94, 95, -1, -1, 990, -1, 992, 469,
3345 -1, -1, 666, 877, 878, -1, 769, 770, -1, -1,
3346 -1, -1, -1, -1, -1, 778, -1, -1, -1, 893,
3347 -1, -1, 896, -1, 787, -1, 1020, -1, -1, -1,
3348 694, -1, -1, -1, 698, 699, 51, 701, 702, -1,
3349 -1, -1, -1, 917, 708, 709, -1, 921, -1, 519,
3350 -1, 715, -1, -1, -1, -1, -1, -1, 932, -1,
3351 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3352 -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
3353 -1, -1, -1, 206, -1, -1, -1, -1, 752, -1,
3354 -1, -1, 756, 757, -1, 759, 760, 54, -1, -1,
3355 -1, 571, -1, 573, 206, -1, -1, -1, 982, 872,
3356 984, 874, -1, 777, -1, -1, 990, 240, 992, -1,
3357 -1, -1, -1, -1, -1, 595, -1, -1, 251, -1,
3358 253, -1, -1, -1, 897, -1, -1, -1, 240, -1,
3359 -1, 904, -1, -1, -1, -1, -1, -1, -1, 251,
3360 -1, 253, -1, 817, -1, -1, -1, 821, -1, -1,
3361 -1, -1, -1, 633, -1, 829, -1, -1, 638, -1,
3362 -1, -1, 274, -1, -1, -1, -1, -1, 941, 942,
3363 -1, -1, -1, -1, 947, 308, 850, -1, -1, -1,
3364 313, 206, -1, -1, -1, -1, -1, -1, -1, -1,
3365 -1, -1, 325, 867, 868, -1, 308, -1, -1, -1,
3366 -1, 313, -1, -1, -1, -1, -1, 687, -1, -1,
3367 690, -1, 692, 325, 326, 240, -1, 697, -1, -1,
3368 993, -1, 995, -1, -1, 358, 251, -1, 253, -1,
3369 -1, 1004, -1, -1, -1, -1, -1, 204, -1, -1,
3370 207, 208, 209, -1, -1, -1, 358, -1, -1, -1,
3371 -1, -1, -1, -1, -1, 1028, -1, 737, -1, -1,
3372 -1, -1, -1, -1, -1, 745, -1, -1, -1, -1,
3373 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3374 -1, -1, -1, 308, -1, -1, -1, -1, 313, -1,
3375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3376 325, -1, -1, 328, -1, -1, -1, -1, -1, 442,
3377 -1, -1, -1, -1, -1, -1, -1, -1, -1, 452,
3378 -1, -1, -1, -1, 804, -1, -1, -1, -1, -1,
3379 442, -1, -1, 358, -1, 815, -1, -1, -1, -1,
3380 452, -1, -1, -1, -1, -1, 1020, -1, -1, -1,
3381 -1, -1, -1, -1, -1, -1, 323, 469, -1, -1,
3382 840, 328, -1, -1, -1, -1, -1, 847, 848, -1,
3383 -1, 851, -1, -1, -1, -1, -1, -1, -1, -1,
3384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3385 -1, -1, -1, -1, -1, -1, -1, 877, 878, -1,
3386 -1, -1, -1, -1, -1, -1, -1, 519, -1, -1,
3387 -1, -1, -1, 893, -1, -1, 896, 442, -1, 70,
3388 71, 72, 73, 74, 75, 76, 77, 452, 79, 80,
3389 -1, -1, -1, -1, 85, 86, -1, 917, 571, -1,
3390 573, 921, -1, -1, -1, -1, 413, 414, -1, -1,
3391 -1, -1, 932, -1, -1, 422, -1, -1, -1, 571,
3392 -1, 573, 595, -1, -1, -1, -1, 118, 119, 120,
3393 121, 122, 123, 124, 125, 126, 127, -1, -1, -1,
3394 -1, -1, -1, 595, -1, -1, -1, -1, -1, -1,
3395 457, -1, -1, 460, -1, -1, -1, -1, -1, -1,
3396 633, -1, 982, -1, 984, -1, -1, -1, -1, -1,
3397 990, -1, 992, -1, -1, -1, -1, -1, -1, -1,
3398 -1, 633, -1, -1, -1, -1, 638, -1, -1, -1,
3399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3400 -1, -1, -1, -1, -1, 512, 571, -1, 573, -1,
3401 -1, -1, -1, -1, 687, -1, -1, 690, -1, 692,
3402 -1, -1, -1, -1, -1, -1, 678, -1, -1, -1,
3403 595, -1, -1, -1, -1, 687, -1, -1, 690, -1,
3404 692, -1, -1, -1, -1, 697, -1, -1, -1, -1,
3405 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3406 -1, -1, -1, -1, 737, -1, -1, -1, 633, -1,
3407 577, -1, 745, -1, -1, -1, -1, -1, -1, -1,
3408 -1, -1, -1, -1, -1, 737, -1, -1, -1, -1,
3409 -1, -1, -1, 745, -1, -1, -1, -1, -1, -1,
3410 -1, -1, 609, -1, -1, -1, -1, -1, -1, -1,
3411 -1, -1, -1, -1, -1, 622, 623, -1, -1, -1,
3412 -1, -1, 687, -1, -1, 690, -1, 692, -1, -1,
3413 -1, -1, -1, 698, -1, -1, -1, -1, -1, -1,
3414 -1, -1, 815, -1, -1, -1, -1, -1, -1, -1,
3415 -1, -1, 804, -1, -1, -1, -1, -1, -1, 666,
3416 -1, -1, -1, 815, -1, -1, -1, 840, -1, -1,
3417 -1, -1, 737, -1, 847, 848, -1, -1, 851, -1,
3418 745, -1, -1, -1, -1, -1, -1, 694, 840, -1,
3419 -1, -1, -1, -1, -1, 847, 848, -1, -1, 851,
3420 -1, -1, -1, -1, 877, 878, -1, -1, 715, -1,
3421 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3422 893, -1, -1, -1, -1, 877, 878, -1, -1, -1,
3423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3424 -1, 893, -1, -1, 896, -1, -1, -1, 921, -1,
3425 815, 70, 71, 72, 73, 74, 75, 76, -1, 932,
3426 79, 80, -1, -1, -1, 917, 85, 86, -1, 921,
3427 777, -1, -1, -1, -1, 840, -1, -1, -1, -1,
3428 932, -1, 847, 848, -1, -1, 851, -1, -1, -1,
3429 -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
3430 119, 120, 121, 122, 123, 124, 125, 126, 127, 982,
3431 817, 984, 877, 878, -1, -1, -1, 990, -1, 992,
3432 -1, -1, -1, -1, -1, -1, -1, -1, 893, -1,
3433 982, -1, 984, -1, -1, -1, -1, -1, 990, -1,
3434 992, -1, -1, 850, 70, 71, 72, 73, 74, 75,
3435 76, -1, 917, 79, 80, -1, 921, -1, -1, 85,
3436 86, 868, -1, -1, -1, -1, -1, 932, -1, -1,
3437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3439 -1, -1, 118, 119, 120, 121, 122, 123, 124, 125,
3440 126, 127, -1, -1, -1, -1, -1, -1, -1, -1,
3441 -1, -1, -1, -1, -1, -1, -1, 982, -1, 984,
3442 -1, -1, -1, -1, -1, 990, -1, 992, 0, 1,
3443 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
3444 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
3445 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3446 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3447 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
3448 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
3449 62, -1, 64, 65, 66, -1, 68, 69, -1, -1,
3450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3451 -1, -1, -1, -1, -1, -1, 88, -1, -1, 91,
3452 92, -1, 94, 95, -1, 97, -1, -1, 100, 101,
3453 102, 103, 104, 105, 106, 107, 108, 0, -1, -1,
3454 -1, -1, -1, -1, -1, 8, 9, 10, -1, -1,
3455 13, 14, 15, -1, 17, -1, 128, 129, 130, -1,
3456 44, -1, -1, 26, 27, 28, 29, -1, -1, 141,
3457 -1, 143, -1, -1, 37, 38, -1, 40, 41, 42,
3458 43, 44, -1, -1, -1, -1, 70, 71, 72, 73,
3459 74, 75, 76, 77, 78, 79, 80, 81, 82, -1,
3460 -1, 85, 86, -1, -1, -1, -1, 70, 71, 72,
3461 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
3462 -1, -1, 85, 86, 87, -1, 89, 90, -1, -1,
3463 -1, -1, 116, 96, 118, 119, 120, 121, 122, 123,
3464 124, 125, 126, 127, -1, -1, -1, 110, -1, -1,
3465 113, -1, 115, 116, 117, 118, 119, 120, 121, 122,
3466 123, 124, 125, 126, 127, -1, -1, -1, -1, 132,
3467 133, 134, 135, 136, 0, -1, 139, 140, 141, -1,
3468 143, -1, 8, 9, 10, -1, -1, 13, 14, 15,
3469 -1, 17, -1, -1, -1, -1, -1, 44, -1, 25,
3470 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
3471 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3472 -1, -1, -1, 70, 71, 72, 73, 74, 75, 76,
3473 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
3474 -1, -1, -1, -1, 70, 71, 72, 73, 74, 75,
3475 76, 77, 78, 79, 80, 81, 82, -1, -1, 85,
3476 86, 87, -1, 89, 90, -1, -1, -1, -1, 116,
3477 96, 118, 119, 120, 121, 122, 123, 124, 125, 126,
3478 127, -1, -1, -1, 110, -1, -1, 113, -1, 115,
3479 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
3480 126, 127, -1, -1, -1, -1, -1, 133, 134, 135,
3481 136, 0, -1, 139, 140, 141, -1, 143, -1, 8,
3482 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
3483 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
3484 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
3485 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
3486 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
3487 80, 81, 82, -1, -1, 85, 86, -1, -1, -1,
3488 -1, 70, 71, 72, 73, 74, 75, 76, 77, 78,
3489 79, 80, 81, 82, -1, -1, 85, 86, 87, -1,
3490 89, 90, -1, -1, -1, -1, 116, 96, 118, 119,
3491 120, 121, 122, 123, 124, 125, 126, 127, -1, -1,
3492 -1, 110, -1, -1, 113, -1, 115, 116, 117, 118,
3493 119, 120, 121, 122, 123, 124, 125, 126, 127, -1,
3494 -1, -1, -1, -1, 133, 134, 135, 136, 0, -1,
3495 139, 140, 141, -1, 143, -1, 8, 9, 10, -1,
3496 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3497 -1, 44, -1, -1, 26, 27, 28, 29, -1, -1,
3498 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3499 42, 43, 44, -1, -1, -1, -1, 70, 71, 72,
3500 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
3501 -1, -1, 85, 86, -1, -1, -1, -1, 70, 71,
3502 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
3503 82, -1, -1, 85, 86, 87, -1, -1, 90, -1,
3504 -1, -1, -1, 116, 96, 118, 119, 120, 121, 122,
3505 123, 124, 125, 126, 127, -1, -1, -1, 110, -1,
3506 -1, 113, -1, 136, 116, 117, 118, 119, 120, 121,
3507 122, 123, 124, 125, 126, 127, -1, -1, -1, -1,
3508 132, 133, 134, 135, 136, 0, -1, 139, 140, 141,
3509 -1, 143, -1, 8, 9, 10, -1, -1, 13, 14,
3510 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
3511 -1, 26, 27, 28, 29, -1, -1, -1, -1, -1,
3512 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3513 -1, -1, -1, -1, 70, 71, 72, 73, 74, 75,
3514 76, 77, 78, 79, 80, 81, 82, -1, -1, 85,
3515 86, -1, -1, -1, -1, 70, 71, 72, 73, 74,
3516 75, 76, 77, 78, 79, 80, 81, 82, -1, -1,
3517 85, 86, 87, -1, -1, 90, -1, -1, -1, -1,
3518 -1, 96, 118, 119, 120, 121, 122, 123, 124, 125,
3519 126, 127, -1, -1, -1, 110, -1, -1, 113, -1,
3520 -1, 116, 117, 118, 119, 120, 121, 122, 123, 124,
3521 125, 126, 127, -1, -1, -1, -1, 132, 133, 134,
3522 135, 136, 0, -1, 139, 140, 141, -1, 143, -1,
3523 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
3524 -1, -1, -1, -1, -1, -1, -1, -1, -1, 27,
3525 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
3526 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3527 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3528 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3529 -1, -1, 70, 71, 72, 73, 74, 75, 76, 77,
3530 78, 79, 80, 81, 82, -1, -1, 85, 86, 87,
3531 -1, 89, 90, -1, -1, -1, -1, -1, 96, -1,
3532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3533 -1, -1, 110, -1, -1, 113, -1, 115, 116, 117,
3534 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
3535 -1, -1, -1, -1, -1, 133, 134, 135, 136, 0,
3536 -1, 139, 140, 141, -1, 143, -1, 8, 9, 10,
3537 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3538 -1, -1, -1, -1, -1, 26, 27, 28, -1, -1,
3539 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3540 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3541 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3542 -1, -1, -1, -1, -1, -1, -1, -1, -1, 70,
3543 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
3544 81, 82, -1, -1, 85, 86, 87, -1, -1, 90,
3545 -1, -1, -1, -1, -1, 96, -1, -1, -1, -1,
3546 -1, -1, -1, -1, -1, -1, -1, -1, -1, 110,
3547 -1, -1, -1, -1, -1, 116, -1, 118, 119, 120,
3548 121, 122, 123, 124, 125, 126, 127, -1, -1, -1,
3549 -1, 132, 133, 134, 135, 136, 0, 138, 139, 140,
3550 141, -1, 143, -1, 8, 9, 10, -1, -1, 13,
3551 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3552 -1, -1, -1, 27, 28, 29, -1, -1, -1, -1,
3553 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3554 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3555 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3556 -1, -1, -1, -1, -1, -1, 70, 71, 72, 73,
3557 74, 75, 76, 77, 78, 79, 80, 81, 82, -1,
3558 -1, 85, 86, 87, -1, -1, 90, -1, -1, -1,
3559 -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
3560 -1, -1, -1, -1, -1, -1, 110, -1, -1, 113,
3561 -1, -1, 116, 117, 118, 119, 120, 121, 122, 123,
3562 124, 125, 126, 127, -1, -1, -1, -1, -1, 133,
3563 134, 135, 136, 0, -1, 139, 140, 141, -1, 143,
3564 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3565 17, -1, -1, -1, -1, -1, -1, -1, -1, 26,
3566 27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
3567 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3570 -1, -1, -1, 70, 71, 72, 73, 74, 75, 76,
3571 77, 78, 79, 80, 81, 82, -1, -1, 85, 86,
3572 87, -1, -1, 90, -1, -1, -1, -1, -1, 96,
3573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3574 -1, -1, -1, 110, -1, -1, -1, -1, -1, 116,
3575 -1, 118, 119, 120, 121, 122, 123, 124, 125, 126,
3576 127, -1, -1, -1, -1, 132, 133, 134, 135, 136,
3577 0, 138, 139, 140, 141, -1, 143, -1, 8, 9,
3578 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3579 -1, -1, -1, -1, -1, -1, -1, 27, 28, -1,
3580 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3581 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3583 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3584 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
3585 80, 81, 82, -1, -1, 85, 86, 87, -1, -1,
3586 90, -1, -1, -1, -1, -1, 96, -1, -1, -1,
3587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3588 110, -1, -1, -1, -1, -1, 116, -1, 118, 119,
3589 120, 121, 122, 123, 124, 125, 126, 127, -1, -1,
3590 -1, -1, -1, 133, 134, 135, 136, 0, 138, 139,
3591 140, 141, -1, 143, -1, 8, 9, 10, -1, -1,
3592 -1, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3593 -1, -1, -1, 26, -1, -1, -1, -1, -1, -1,
3594 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3595 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3596 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3597 -1, -1, -1, -1, -1, -1, -1, 70, 71, 72,
3598 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
3599 -1, -1, 85, 86, 87, -1, 89, -1, -1, -1,
3600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3601 -1, -1, -1, -1, -1, -1, -1, 110, -1, -1,
3602 -1, -1, 115, 116, -1, 118, 119, 120, 121, 122,
3603 123, 124, 125, 126, 127, -1, -1, -1, -1, 132,
3604 133, 134, 135, 136, 0, -1, 139, -1, 141, -1,
3605 143, -1, 8, 9, 10, -1, -1, -1, 14, 15,
3606 -1, 17, -1, -1, -1, -1, -1, -1, -1, -1,
3607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3608 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3609 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3611 -1, -1, -1, -1, 70, 71, 72, 73, 74, 75,
3612 76, 77, 78, 79, 80, 81, 82, -1, -1, 85,
3613 86, 87, -1, 89, -1, -1, -1, -1, -1, -1,
3614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3615 -1, -1, -1, -1, 110, -1, -1, -1, -1, 115,
3616 116, -1, 118, 119, 120, 121, 122, 123, 124, 125,
3617 126, 127, -1, -1, -1, -1, -1, 133, 134, 135,
3618 136, -1, -1, 139, -1, 141, 1, 143, 3, 4,
3619 5, 6, 7, 8, 9, 10, 11, 12, -1, -1,
3620 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3621 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3622 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3623 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3624 55, 56, 57, -1, 59, 60, 61, 62, -1, 64,
3625 65, 66, -1, 68, 69, -1, -1, -1, -1, -1,
3626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3627 -1, -1, -1, 88, -1, -1, 91, 92, -1, 94,
3628 95, -1, 97, -1, -1, 100, 101, 102, 103, 104,
3629 105, 106, 107, 108, -1, -1, -1, -1, -1, -1,
3630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3631 -1, -1, -1, 128, 129, 130, -1, -1, -1, -1,
3632 -1, -1, -1, -1, -1, -1, 141, 1, 143, 3,
3633 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
3634 14, 15, 16, -1, 18, 19, 20, 21, 22, 23,
3635 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3636 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
3637 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
3638 54, 55, 56, 57, -1, 59, 60, 61, 62, -1,
3639 64, 65, 66, -1, 68, 69, -1, -1, -1, -1,
3640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3641 -1, -1, -1, -1, 88, -1, -1, 91, 92, -1,
3642 94, 95, -1, 97, -1, -1, 100, 101, 102, 103,
3643 104, 105, 106, 107, 108, -1, -1, -1, -1, -1,
3644 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3645 -1, -1, -1, -1, 128, 129, 130, -1, -1, -1,
3646 -1, -1, -1, -1, -1, -1, -1, 141, 1, 143,
3647 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
3648 -1, -1, 15, 16, 17, 18, 19, 20, 21, 22,
3649 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
3650 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
3651 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
3652 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
3653 -1, 64, 65, 66, -1, 68, 69, -1, -1, -1,
3654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3655 -1, -1, -1, -1, -1, 88, -1, -1, 91, 92,
3656 -1, 94, 95, -1, 97, -1, -1, 100, 101, 102,
3657 103, 104, 105, 106, 107, 108, -1, -1, -1, -1,
3658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3659 -1, -1, -1, -1, -1, 128, 129, 130, -1, -1,
3660 -1, -1, -1, -1, -1, -1, -1, -1, 141, 1,
3661 143, 3, 4, 5, 6, 7, -1, -1, 10, 11,
3662 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
3663 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
3664 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3665 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
3666 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
3667 62, -1, 64, 65, 66, -1, 68, 69, -1, -1,
3668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3669 -1, -1, -1, -1, -1, -1, 88, -1, -1, 91,
3670 92, -1, 94, 95, -1, 97, -1, -1, 100, 101,
3671 102, 103, 104, 105, 106, 107, 108, -1, -1, -1,
3672 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
3673 7, -1, 9, 10, 11, 12, 128, 129, 130, 16,
3674 -1, 18, 19, 20, 21, 22, 23, 24, -1, 141,
3675 -1, 143, -1, 30, 31, 32, 33, 34, 35, 36,
3676 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
3677 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
3678 57, -1, 59, 60, 61, 62, -1, 64, 65, 66,
3679 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
3680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3681 -1, 88, -1, -1, 91, 92, -1, 94, 95, -1,
3682 97, -1, -1, 100, 101, 102, 103, 104, 105, 106,
3683 107, 108, -1, -1, -1, -1, -1, -1, -1, 1,
3684 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
3685 12, 128, 129, 130, 16, -1, 18, 19, 20, 21,
3686 22, 23, 24, -1, 141, -1, 143, -1, 30, 31,
3687 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
3688 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
3689 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
3690 62, -1, 64, 65, 66, -1, 68, 69, -1, -1,
3691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3692 -1, -1, -1, -1, -1, -1, 88, -1, -1, 91,
3693 92, -1, 94, 95, -1, 97, -1, -1, 100, 101,
3694 102, 103, 104, 105, 106, 107, 108, -1, -1, -1,
3695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3696 -1, -1, -1, -1, -1, -1, 128, 129, 130, -1,
3697 -1, -1, -1, -1, -1, -1, -1, 139, -1, 141,
3698 1, 143, 3, 4, 5, 6, 7, -1, -1, -1,
3699 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
3700 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3701 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3702 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
3703 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3704 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3706 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3707 91, 92, -1, 94, 95, -1, 97, -1, -1, 100,
3708 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
3709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3710 -1, -1, -1, -1, -1, -1, -1, 128, 129, 130,
3711 -1, -1, -1, -1, -1, -1, -1, -1, 139, -1,
3712 141, 1, 143, 3, 4, 5, 6, 7, -1, -1,
3713 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
3714 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
3715 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3716 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
3717 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
3718 60, 61, 62, -1, 64, 65, 66, -1, 68, 69,
3719 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3720 -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
3721 -1, 91, 92, -1, 94, 95, -1, 97, -1, -1,
3722 100, 101, 102, 103, 104, 105, 106, 107, 108, -1,
3723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3724 -1, -1, -1, -1, -1, -1, -1, -1, 128, 129,
3725 130, -1, -1, 133, 1, -1, 3, 4, 5, 6,
3726 7, 141, -1, 143, 11, 12, -1, -1, -1, 16,
3727 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
3728 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3729 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
3730 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
3731 57, -1, 59, 60, 61, 62, -1, 64, 65, 66,
3732 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
3733 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3734 -1, 88, -1, -1, 91, 92, -1, 94, 95, -1,
3735 97, -1, -1, 100, 101, 102, 103, 104, 105, 106,
3736 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
3737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3738 -1, 128, 129, 130, -1, -1, 133, -1, -1, -1,
3739 -1, -1, -1, -1, 141, 1, 143, 3, 4, 5,
3740 6, 7, -1, -1, 10, 11, 12, -1, -1, -1,
3741 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3742 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3743 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3744 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
3745 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
3746 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3748 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3749 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
3750 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3751 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
3752 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3753 21, 22, 23, 24, -1, 141, -1, 143, -1, 30,
3754 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3755 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
3756 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3757 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3759 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3760 91, 92, -1, 94, 95, -1, 97, -1, -1, 100,
3761 101, 102, 103, 104, 105, 106, 107, 108, -1, 110,
3762 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3763 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
3764 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3765 141, -1, 143, -1, 30, 31, 32, 33, 34, 35,
3766 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
3767 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
3768 56, 57, 58, 59, 60, 61, 62, -1, 64, 65,
3769 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3771 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3772 -1, 97, 98, 99, 100, 101, 102, 103, 104, 105,
3773 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3774 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3775 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3776 21, 22, 23, 24, -1, -1, -1, 143, -1, 30,
3777 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3778 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3779 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3780 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3782 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3783 91, 92, -1, 94, 95, -1, -1, -1, -1, 100,
3784 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
3785 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3786 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
3787 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3788 141, -1, 143, -1, 30, 31, 32, 33, 34, 35,
3789 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
3790 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
3791 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
3792 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3793 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3794 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3795 -1, -1, -1, -1, 100, 101, 102, 103, 104, 105,
3796 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3797 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
3798 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3799 21, 22, 23, 24, -1, -1, -1, 143, -1, 30,
3800 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3801 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
3802 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
3803 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3804 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3805 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3806 91, 92, -1, 94, 95, -1, 97, -1, -1, 100,
3807 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
3808 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3809 6, 7, -1, -1, -1, 11, 12, 128, 129, 130,
3810 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3811 141, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3812 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3813 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
3814 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
3815 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3816 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3817 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3818 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
3819 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3821 -1, -1, 128, 129, 130, -1, -1, -1, -1, -1,
3822 -1, -1, -1, -1, -1, 141, 3, 4, 5, 6,
3823 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
3824 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
3825 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3826 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
3827 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
3828 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3829 -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
3830 -1, -1, 79, 80, -1, -1, 83, 84, 85, 86,
3831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3832 97, 98, -1, -1, -1, -1, -1, -1, -1, -1,
3833 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3834 -1, 118, 119, 120, 121, 122, 123, 124, 125, 126,
3835 127, -1, 129, 130, -1, -1, -1, -1, -1, -1,
3836 137, 138, 3, 4, 5, 6, 7, 8, 9, 10,
3837 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
3838 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
3839 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
3840 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
3841 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
3842 -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
3843 71, 72, 73, 74, 75, 76, -1, -1, 79, 80,
3844 -1, -1, 83, 84, 85, 86, -1, -1, -1, -1,
3845 -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
3846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3847 -1, -1, -1, -1, -1, -1, -1, 118, 119, 120,
3848 121, 122, 123, 124, 125, 126, 127, -1, 129, 130,
3849 -1, -1, -1, -1, -1, -1, 137, 3, 4, 5,
3850 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
3851 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
3852 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3853 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
3854 46, 47, 48, 49, 50, 51, 52, 53, 54, -1,
3855 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3856 -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
3857 76, -1, -1, 79, 80, -1, -1, 83, 84, 85,
3858 86, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3859 -1, 97, 98, -1, -1, 101, -1, -1, -1, -1,
3860 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3861 -1, -1, 118, 119, 120, 121, 122, 123, 124, 125,
3862 126, 127, -1, 129, 130, -1, -1, -1, -1, -1,
3863 -1, 137, 3, 4, 5, 6, 7, 8, 9, 10,
3864 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
3865 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
3866 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
3867 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
3868 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
3869 -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
3870 71, 72, 73, 74, 75, 76, -1, -1, 79, 80,
3871 -1, -1, 83, 84, 85, 86, -1, -1, -1, -1,
3872 -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
3873 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3874 -1, -1, -1, -1, -1, -1, -1, 118, 119, 120,
3875 121, 122, 123, 124, 125, 126, 127, -1, 129, 130,
3876 -1, -1, -1, -1, -1, -1, 137, 3, 4, 5,
3877 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
3878 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
3879 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3880 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
3881 46, 47, 48, 49, 50, 51, 52, 53, -1, -1,
3882 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3883 -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
3884 76, -1, -1, 79, 80, -1, -1, 83, 84, 85,
3885 86, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3886 -1, 97, 98, -1, -1, -1, -1, -1, -1, -1,
3887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3888 -1, -1, 118, 119, 120, 121, 122, 123, 124, 125,
3889 126, 127, -1, 129, 130, 3, 4, 5, -1, 7,
3890 -1, 137, -1, 11, 12, -1, -1, -1, 16, -1,
3891 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3892 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3893 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
3894 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3895 -1, 59, 60, 61, 62, -1, 64, 65, 66, -1,
3896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3897 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3898 88, -1, -1, 91, 92, -1, 94, 95, -1, -1,
3899 -1, -1, 100, 101, 102, 103, 104, 105, 106, 107,
3900 108, -1, -1, -1, -1, -1, 3, 4, 5, -1,
3901 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
3902 128, 18, 19, 20, 21, 22, 23, 24, 136, -1,
3903 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3904 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
3905 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
3906 57, -1, 59, 60, 61, 62, -1, 64, 65, 66,
3907 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3909 -1, 88, -1, -1, 91, 92, -1, 94, 95, -1,
3910 -1, -1, -1, 100, 101, 102, 103, 104, 105, 106,
3911 107, 108, -1, -1, -1, -1, -1, 3, 4, 5,
3912 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
3913 16, 128, 18, 19, 20, 21, 22, 23, 24, 136,
3914 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3915 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3916 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
3917 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
3918 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3919 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3920 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3921 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
3922 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3923 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3924 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3925 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3926 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3927 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3928 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3929 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3931 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3932 91, 92, -1, 94, 95, -1, 97, 98, 99, 100,
3933 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
3934 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3935 6, 7, -1, -1, -1, 11, 12, 128, 129, 130,
3936 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3937 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3938 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3939 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
3940 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
3941 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3943 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3944 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
3945 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3946 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3947 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3948 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3949 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3950 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3951 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3952 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3954 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3955 91, 92, -1, 94, 95, -1, 97, 98, 99, 100,
3956 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
3957 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3958 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
3959 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3960 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3961 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
3962 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
3963 56, 57, 58, 59, 60, 61, 62, -1, 64, 65,
3964 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3965 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3966 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3967 -1, 97, 98, -1, 100, 101, 102, 103, 104, 105,
3968 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3969 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3970 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3971 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3972 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3973 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3974 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3975 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3976 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3977 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
3978 91, 92, -1, 94, 95, -1, -1, 98, 99, 100,
3979 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
3980 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3981 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
3982 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3983 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3984 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
3985 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
3986 56, 57, 58, 59, 60, 61, 62, -1, 64, 65,
3987 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
3988 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3989 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
3990 -1, 97, 98, -1, 100, 101, 102, 103, 104, 105,
3991 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
3992 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3993 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
3994 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3995 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3996 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
3997 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3998 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
3999 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4000 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
4001 91, 92, -1, 94, 95, -1, -1, 98, -1, 100,
4002 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
4003 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4004 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
4005 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4006 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4007 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4008 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4009 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
4010 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
4011 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4012 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
4013 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
4014 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4015 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4016 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
4017 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4018 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4019 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4020 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4021 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
4022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4023 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
4024 91, 92, -1, 94, 95, -1, 97, -1, -1, 100,
4025 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
4026 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4027 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
4028 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4029 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4030 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4031 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4032 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
4033 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
4034 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4035 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
4036 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
4037 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4038 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4039 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
4040 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4041 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4042 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4043 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4044 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
4045 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4046 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
4047 91, 92, -1, 94, 95, -1, 97, -1, -1, 100,
4048 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
4049 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4050 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
4051 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4052 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4053 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4054 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4055 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
4056 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
4057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4058 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
4059 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
4060 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4061 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4062 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
4063 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4064 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4065 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4066 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4067 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
4068 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4069 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
4070 91, 92, -1, 94, 95, -1, -1, -1, -1, 100,
4071 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
4072 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4073 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
4074 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4075 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4076 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4077 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4078 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
4079 66, -1, 68, 69, -1, -1, -1, -1, -1, -1,
4080 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4081 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
4082 -1, -1, -1, -1, 100, 101, 102, 103, 104, 105,
4083 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4084 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4085 11, 12, 128, 129, 130, 16, -1, 18, 19, 20,
4086 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4087 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4088 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4089 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4090 61, 62, -1, 64, 65, 66, -1, 68, 69, -1,
4091 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4092 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
4093 91, 92, -1, 94, 95, -1, -1, -1, -1, 100,
4094 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
4095 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4096 -1, 7, -1, -1, -1, 11, 12, 128, 129, 130,
4097 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4098 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4099 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4100 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4101 56, 57, -1, 59, 60, 61, 62, -1, 64, 65,
4102 66, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4104 -1, -1, 88, -1, -1, 91, 92, -1, 94, 95,
4105 -1, 97, -1, -1, 100, 101, 102, 103, 104, 105,
4106 106, 107, 108, -1, -1, -1, -1, -1, 3, 4,
4107 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
4108 -1, 16, 128, 18, 19, 20, 21, 22, 23, 24,
4109 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4110 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4111 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4112 55, 56, 57, -1, 59, 60, 61, 62, -1, 64,
4113 65, 66, -1, -1, -1, -1, -1, -1, -1, -1,
4114 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4115 -1, -1, -1, 88, -1, -1, 91, 92, -1, 94,
4116 95, -1, 97, -1, -1, 100, 101, 102, 103, 104,
4117 105, 106, 107, 108, -1, -1, -1, -1, -1, 3,
4118 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4119 -1, -1, 16, 128, 18, 19, 20, 21, 22, 23,
4120 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4121 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4122 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4123 54, 55, 56, 57, -1, 59, 60, 61, 62, -1,
4124 64, 65, 66, -1, -1, -1, -1, -1, -1, -1,
4125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4126 -1, 85, -1, -1, 88, -1, -1, 91, 92, -1,
4127 94, 95, -1, -1, -1, -1, 100, 101, 102, 103,
4128 104, 105, 106, 107, 108, -1, -1, -1, -1, -1,
4129 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4130 -1, -1, -1, 16, 128, 18, 19, 20, 21, 22,
4131 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4132 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4133 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4134 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4135 -1, 64, 65, 66, -1, -1, -1, -1, -1, -1,
4136 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4137 -1, -1, -1, -1, -1, 88, -1, -1, 91, 92,
4138 -1, 94, 95, -1, -1, -1, -1, 100, 101, 102,
4139 103, 104, 105, 106, 107, 108, -1, -1, -1, -1,
4140 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4141 12, -1, -1, -1, 16, 128, 18, 19, 20, 21,
4142 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4143 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4144 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4145 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4146 62, -1, 64, 65, 66, -1, -1, -1, -1, -1,
4147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4148 -1, -1, -1, -1, -1, -1, 88, -1, -1, 91,
4149 92, -1, 94, 95, -1, -1, -1, -1, 100, 101,
4150 102, 103, 104, 105, 106, 107, 108, -1, -1, -1,
4151 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4152 11, 12, -1, -1, -1, 16, 128, 18, 19, 20,
4153 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4154 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4155 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4156 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4157 61, 62, -1, 64, 65, 66, -1, -1, -1, -1,
4158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4159 -1, -1, -1, -1, -1, -1, -1, 88, -1, -1,
4160 91, 92, -1, 94, 95, -1, -1, -1, -1, 100,
4161 101, 102, 103, 104, 105, 106, 107, 108, -1, -1,
4162 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4163 -1, 11, 12, -1, -1, -1, 16, 128, 18, 19,
4164 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4165 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4166 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4167 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4168 60, 61, 62, -1, 64, 65, 66, -1, -1, -1,
4169 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4170 -1, -1, -1, -1, -1, -1, -1, -1, 88, -1,
4171 -1, 91, 92, -1, 94, 95, -1, -1, -1, -1,
4172 100, 101, 102, 103, 104, 105, 106, 107, 108, -1,
4173 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
4174 -1, -1, -1, -1, -1, -1, -1, -1, 128, 68,
4175 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
4176 79, 80, -1, -1, 83, 84, 85, 86, -1, -1,
4177 -1, -1, -1, -1, -1, -1, -1, -1, 97, 98,
4178 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4179 -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
4180 119, 120, 121, 122, 123, 124, 125, 126, 127, -1,
4181 129, 130, 52, 53, -1, -1, 56, -1, 137, -1,
4182 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
4183 70, 71, 72, 73, 74, 75, 76, -1, -1, 79,
4184 80, -1, -1, 83, 84, 85, 86, -1, -1, -1,
4185 -1, -1, -1, -1, -1, -1, -1, 97, 98, -1,
4186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4187 -1, -1, -1, -1, -1, -1, -1, -1, 118, 119,
4188 120, 121, 122, 123, 124, 125, 126, 127, -1, 129,
4189 130, 52, 53, -1, -1, 56, -1, 137, -1, -1,
4190 -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
4191 71, 72, 73, 74, 75, 76, -1, -1, 79, 80,
4192 -1, -1, 83, 84, 85, 86, -1, -1, -1, -1,
4193 -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
4194 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4195 -1, -1, -1, -1, -1, -1, -1, 118, 119, 120,
4196 121, 122, 123, 124, 125, 126, 127, -1, 129, 130,
4197 52, 53, -1, -1, 56, -1, 137, -1, -1, -1,
4198 -1, -1, -1, -1, -1, -1, 68, 69, 70, 71,
4199 72, 73, 74, 75, 76, -1, -1, 79, 80, -1,
4200 -1, 83, 84, 85, 86, -1, -1, -1, -1, -1,
4201 -1, -1, -1, -1, -1, 97, 98, -1, -1, -1,
4202 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4203 -1, -1, -1, -1, -1, -1, 118, 119, 120, 121,
4204 122, 123, 124, 125, 126, 127, -1, 129, 130, 52,
4205 53, -1, -1, 56, -1, 137, -1, -1, -1, -1,
4206 -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
4207 73, 74, 75, 76, -1, -1, 79, 80, -1, -1,
4208 83, 84, 85, 86, -1, -1, -1, -1, -1, -1,
4209 -1, -1, -1, -1, 97, 98, -1, -1, -1, -1,
4210 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4211 -1, -1, -1, -1, -1, 118, 119, 120, 121, 122,
4212 123, 124, 125, 126, 127, -1, 129, 130, 52, 53,
4213 -1, -1, 56, -1, 137, -1, -1, -1, -1, -1,
4214 -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
4215 74, 75, 76, -1, -1, 79, 80, -1, -1, 83,
4216 84, 85, 86, -1, -1, -1, -1, -1, -1, -1,
4217 -1, -1, -1, 97, 98, -1, -1, -1, -1, -1,
4218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4219 -1, -1, -1, -1, 118, 119, 120, 121, 122, 123,
4220 124, 125, 126, 127, -1, 129, 130, 52, 53, -1,
4221 -1, 56, -1, 137, -1, -1, -1, -1, -1, -1,
4222 -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
4223 75, 76, -1, -1, 79, 80, -1, -1, 83, 84,
4224 85, 86, -1, -1, -1, -1, -1, -1, -1, -1,
4225 -1, -1, 97, 98, -1, -1, -1, -1, -1, -1,
4226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4227 -1, -1, -1, 118, 119, 120, 121, 122, 123, 124,
4228 125, 126, 127, -1, 129, 130, 52, 53, -1, -1,
4229 56, -1, 137, -1, -1, -1, -1, -1, -1, -1,
4230 -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
4231 76, -1, -1, 79, 80, -1, -1, 83, 84, 85,
4232 86, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4233 -1, 97, 98, -1, -1, -1, -1, -1, -1, -1,
4234 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4235 -1, -1, 118, 119, 120, 121, 122, 123, 124, 125,
4236 126, 127, -1, 129, 130, 52, 53, -1, -1, 56,
4237 -1, 137, -1, -1, -1, -1, -1, -1, -1, -1,
4238 -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
4239 -1, -1, 79, 80, -1, -1, 83, 84, 85, 86,
4240 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4241 97, 98, -1, -1, -1, -1, -1, -1, -1, -1,
4242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4243 -1, 118, 119, 120, 121, 122, 123, 124, 125, 126,
4244 127, -1, 129, 130, 52, 53, -1, -1, 56, -1,
4245 137, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4246 68, 69, 70, 71, 72, 73, 74, 75, 76, -1,
4247 -1, 79, 80, -1, -1, 83, 84, 85, 86, -1,
4248 -1, -1, -1, -1, -1, -1, -1, -1, -1, 97,
4249 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4250 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4251 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
4252 -1, 129, 130, 52, 53, -1, -1, 56, -1, 137,
4253 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4254 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
4255 79, 80, -1, -1, 83, 84, 85, 86, -1, -1,
4256 -1, -1, -1, -1, -1, -1, -1, -1, 97, 98,
4257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4258 -1, -1, -1, -1, -1, -1, -1, -1, -1, 118,
4259 119, 120, 121, 122, 123, 124, 125, 126, 127, -1,
4260 129, 130, 52, 53, -1, -1, 56, -1, 137, -1,
4261 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
4262 70, 71, 72, 73, 74, 75, 76, -1, -1, 79,
4263 80, -1, -1, 83, 84, 85, 86, -1, -1, -1,
4264 -1, -1, -1, -1, -1, -1, -1, 97, 98, -1,
4265 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4266 -1, -1, -1, -1, -1, -1, -1, -1, 118, 119,
4267 120, 121, 122, 123, 124, 125, 126, 127, -1, 129,
4268 130, 52, 53, -1, -1, 56, -1, 137, -1, -1,
4269 -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
4270 71, 72, 73, 74, 75, 76, -1, -1, 79, 80,
4271 -1, -1, 83, 84, 85, 86, -1, -1, -1, -1,
4272 -1, -1, -1, -1, -1, -1, 97, 98, 70, 71,
4273 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
4274 82, -1, -1, 85, 86, -1, -1, 118, 119, 120,
4275 121, 122, 123, 124, 125, 126, 127, -1, 129, 130,
4276 -1, -1, -1, -1, -1, -1, 137, -1, -1, -1,
4277 -1, -1, -1, -1, 116, -1, 118, 119, 120, 121,
4278 122, 123, 124, 125, 126, 127, -1, -1, -1, -1,
4279 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4287 0, 145, 146, 0, 1, 3, 4, 5, 6, 7,
4288 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4289 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4290 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4291 57, 59, 60, 61, 62, 64, 65, 66, 68, 69,
4292 88, 91, 92, 94, 95, 97, 100, 101, 102, 103,
4293 104, 105, 106, 107, 108, 128, 129, 130, 147, 148,
4294 149, 156, 158, 159, 161, 162, 165, 166, 167, 169,
4295 170, 171, 173, 174, 184, 199, 218, 219, 220, 221,
4296 222, 223, 224, 225, 226, 227, 228, 254, 255, 269,
4297 270, 271, 272, 273, 274, 275, 278, 280, 281, 293,
4298 295, 296, 297, 298, 299, 300, 301, 302, 335, 346,
4299 149, 3, 4, 5, 6, 7, 8, 9, 10, 11,
4300 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
4301 22, 23, 24, 25, 26, 30, 31, 32, 33, 34,
4302 35, 36, 37, 38, 39, 45, 46, 47, 48, 49,
4303 50, 51, 52, 53, 56, 68, 69, 70, 71, 72,
4304 73, 74, 75, 76, 79, 80, 83, 84, 85, 86,
4305 97, 98, 118, 119, 120, 121, 122, 123, 124, 125,
4306 126, 127, 129, 130, 137, 177, 178, 179, 180, 182,
4307 183, 293, 295, 39, 58, 88, 91, 97, 98, 99,
4308 129, 166, 174, 184, 186, 191, 194, 196, 218, 298,
4309 299, 301, 302, 333, 334, 191, 191, 138, 192, 193,
4310 138, 188, 192, 138, 143, 340, 54, 179, 340, 150,
4311 132, 21, 22, 30, 31, 32, 165, 184, 218, 184,
4312 56, 1, 47, 91, 152, 153, 154, 156, 168, 169,
4313 346, 201, 202, 187, 196, 333, 346, 186, 332, 333,
4314 346, 46, 88, 128, 136, 173, 199, 218, 298, 299,
4315 302, 246, 247, 54, 55, 57, 177, 285, 294, 284,
4316 285, 286, 142, 276, 142, 282, 142, 279, 142, 283,
4317 297, 161, 184, 184, 141, 143, 339, 344, 345, 40,
4318 41, 42, 43, 44, 37, 38, 26, 132, 188, 192,
4319 260, 28, 252, 115, 136, 91, 97, 170, 115, 70,
4320 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
4321 81, 82, 85, 86, 116, 118, 119, 120, 121, 122,
4322 123, 124, 125, 126, 127, 87, 134, 135, 200, 159,
4323 160, 160, 205, 207, 160, 339, 345, 88, 167, 174,
4324 218, 234, 298, 299, 302, 52, 56, 85, 88, 175,
4325 176, 218, 298, 299, 302, 176, 33, 34, 35, 36,
4326 49, 50, 51, 52, 56, 138, 177, 300, 330, 87,
4327 135, 338, 260, 272, 89, 89, 136, 186, 56, 186,
4328 186, 186, 115, 90, 136, 195, 346, 87, 134, 135,
4329 89, 89, 136, 195, 191, 340, 341, 191, 190, 191,
4330 196, 333, 346, 159, 341, 159, 54, 65, 66, 157,
4331 138, 185, 132, 152, 87, 135, 89, 156, 155, 168,
4332 139, 339, 345, 341, 341, 159, 140, 136, 143, 343,
4333 136, 343, 133, 343, 340, 56, 297, 170, 172, 136,
4334 87, 134, 135, 248, 63, 109, 111, 112, 287, 112,
4335 287, 112, 67, 287, 112, 112, 277, 287, 112, 63,
4336 112, 112, 112, 277, 112, 63, 112, 70, 141, 149,
4337 160, 160, 160, 160, 156, 159, 159, 262, 261, 96,
4338 163, 253, 97, 161, 186, 196, 197, 198, 168, 136,
4339 173, 136, 158, 161, 174, 184, 186, 198, 184, 184,
4340 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
4341 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
4342 184, 184, 184, 184, 52, 53, 56, 182, 259, 336,
4343 337, 190, 52, 53, 56, 182, 258, 336, 151, 152,
4344 13, 230, 344, 230, 160, 160, 339, 17, 263, 56,
4345 87, 134, 135, 25, 159, 52, 56, 175, 1, 119,
4346 303, 344, 87, 134, 135, 214, 331, 215, 338, 52,
4347 56, 336, 161, 184, 161, 184, 181, 184, 186, 97,
4348 186, 194, 333, 52, 56, 190, 52, 56, 334, 341,
4349 139, 341, 136, 136, 341, 179, 204, 184, 147, 133,
4350 336, 336, 184, 132, 341, 154, 203, 333, 136, 172,
4351 52, 56, 190, 52, 56, 52, 54, 55, 56, 57,
4352 58, 70, 91, 97, 98, 99, 122, 125, 138, 250,
4353 307, 309, 310, 311, 312, 313, 314, 315, 318, 319,
4354 320, 321, 324, 325, 326, 327, 328, 289, 288, 142,
4355 287, 142, 142, 142, 184, 78, 120, 241, 242, 346,
4356 241, 164, 241, 186, 136, 341, 172, 136, 115, 44,
4357 340, 89, 89, 188, 192, 257, 340, 342, 89, 89,
4358 188, 192, 256, 10, 229, 8, 265, 346, 152, 13,
4359 152, 27, 231, 344, 231, 263, 196, 229, 52, 56,
4360 190, 52, 56, 209, 212, 344, 304, 211, 52, 56,
4361 175, 190, 151, 159, 138, 305, 306, 216, 188, 189,
4362 192, 346, 44, 179, 186, 195, 89, 89, 342, 89,
4363 89, 333, 159, 133, 147, 341, 343, 170, 342, 91,
4364 97, 235, 236, 237, 311, 309, 249, 115, 136, 308,
4365 186, 136, 329, 346, 52, 136, 329, 136, 308, 52,
4366 136, 308, 52, 290, 54, 55, 57, 292, 302, 238,
4367 240, 243, 311, 313, 314, 316, 317, 320, 322, 323,
4368 326, 328, 340, 152, 152, 241, 152, 97, 186, 172,
4369 184, 117, 161, 184, 161, 184, 163, 188, 140, 89,
4370 161, 184, 161, 184, 163, 189, 186, 198, 266, 346,
4371 15, 233, 346, 14, 232, 233, 233, 206, 208, 229,
4372 136, 230, 342, 160, 344, 160, 151, 342, 229, 341,
4373 309, 151, 309, 177, 260, 252, 184, 89, 136, 341,
4374 133, 237, 136, 311, 136, 341, 243, 29, 113, 251,
4375 186, 307, 312, 324, 326, 315, 320, 328, 313, 321,
4376 326, 311, 313, 291, 243, 120, 115, 136, 239, 88,
4377 218, 136, 329, 329, 136, 239, 136, 239, 141, 10,
4378 133, 152, 10, 186, 184, 161, 184, 90, 267, 346,
4379 152, 9, 268, 346, 160, 229, 229, 152, 152, 186,
4380 152, 231, 213, 344, 229, 341, 229, 344, 217, 341,
4381 236, 136, 97, 235, 139, 152, 152, 136, 308, 136,
4382 308, 329, 136, 308, 136, 308, 308, 152, 120, 218,
4383 238, 323, 326, 56, 87, 316, 320, 313, 322, 326,
4384 313, 52, 244, 245, 310, 133, 88, 174, 218, 298,
4385 299, 302, 230, 152, 230, 229, 229, 233, 263, 264,
4386 210, 151, 305, 136, 236, 136, 311, 10, 133, 313,
4387 326, 313, 313, 110, 136, 239, 136, 239, 52, 56,
4388 329, 136, 239, 136, 239, 239, 136, 340, 56, 87,
4389 134, 135, 152, 152, 152, 229, 151, 236, 136, 308,
4390 136, 308, 308, 308, 313, 326, 313, 313, 245, 52,
4391 56, 190, 52, 56, 265, 232, 229, 229, 236, 313,
4392 239, 136, 239, 239, 239, 342, 308, 313, 239
4395 #define yyerrok (yyerrstatus = 0)
4396 #define yyclearin (yychar = YYEMPTY)
4397 #define YYEMPTY (-2)
4400 #define YYACCEPT goto yyacceptlab
4401 #define YYABORT goto yyabortlab
4402 #define YYERROR goto yyerrorlab
4412 #define YYFAIL goto yyerrlab
4420 #define YYRECOVERING() (!!yyerrstatus)
4422 #define YYBACKUP(Token, Value) \
4424 if (yychar == YYEMPTY && yylen == 1) \
4433 parser_yyerror (parser, YY_("syntax error: cannot back up")); \
4440 #define YYERRCODE 256
4447 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
4448 #ifndef YYLLOC_DEFAULT
4449 # define YYLLOC_DEFAULT(Current, Rhs, N) \
4453 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
4454 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
4455 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
4456 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
4460 (Current).first_line = (Current).last_line = \
4461 YYRHSLOC (Rhs, 0).last_line; \
4462 (Current).first_column = (Current).last_column = \
4463 YYRHSLOC (Rhs, 0).last_column; \
4471 #ifndef YY_LOCATION_PRINT
4472 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
4479 # define YYLEX yylex (&yylval, YYLEX_PARAM)
4481 # define YYLEX yylex (&yylval, parser)
4489 # define YYFPRINTF fprintf
4492 # define YYDPRINTF(Args) \
4498 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
4502 YYFPRINTF (stderr, "%s ", Title); \
4503 yy_symbol_print (stderr, \
4504 Type, Value, parser); \
4505 YYFPRINTF (stderr, "\n"); \
4515 #if (defined __STDC__ || defined __C99__FUNC__ \
4516 || defined __cplusplus || defined _MSC_VER)
4533 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
4549 #if (defined __STDC__ || defined __C99__FUNC__ \
4550 || defined __cplusplus || defined _MSC_VER)
4563 YYFPRINTF (yyoutput,
"token %s (", yytname[yytype]);
4565 YYFPRINTF (yyoutput,
"nterm %s (", yytname[yytype]);
4576 #if (defined __STDC__ || defined __C99__FUNC__ \
4577 || defined __cplusplus || defined _MSC_VER)
4583 yytype_int16 *yybottom;
4584 yytype_int16 *yytop;
4588 for (; yybottom <= yytop; yybottom++)
4590 int yybot = *yybottom;
4596 # define YY_STACK_PRINT(Bottom, Top) \
4599 yy_stack_print ((Bottom), (Top)); \
4607 #if (defined __STDC__ || defined __C99__FUNC__ \
4608 || defined __cplusplus || defined _MSC_VER)
4619 int yynrhs = yyr2[yyrule];
4621 unsigned long int yylno = yyrline[yyrule];
4622 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %lu):\n",
4625 for (yyi = 0; yyi < yynrhs; yyi++)
4629 &(yyvsp[(yyi + 1) - (yynrhs)])
4635 # define YY_REDUCE_PRINT(Rule) \
4638 yy_reduce_print (yyvsp, Rule, parser); \
4647 # define YYDPRINTF(Args)
4648 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
4649 # define YY_STACK_PRINT(Bottom, Top)
4650 # define YY_REDUCE_PRINT(Rule)
4656 # define YYINITDEPTH 200
4667 # define YYMAXDEPTH 10000
4674 # if defined __GLIBC__ && defined _STRING_H
4675 # define yystrlen strlen
4678 #if (defined __STDC__ || defined __C99__FUNC__ \
4679 || defined __cplusplus || defined _MSC_VER)
4689 for (yylen = 0; yystr[yylen]; yylen++)
4697 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
4698 # define yystpcpy stpcpy
4702 #if (defined __STDC__ || defined __C99__FUNC__ \
4703 || defined __cplusplus || defined _MSC_VER)
4705 yystpcpy (
char *yydest,
const char *yysrc)
4714 const char *yys = yysrc;
4716 while ((*yyd++ = *yys++) !=
'\0')
4738 char const *yyp = yystr;
4745 goto do_not_strip_quotes;
4749 goto do_not_strip_quotes;
4762 do_not_strip_quotes: ;
4768 return yystpcpy (yyres, yystr) - yyres;
4782 yytype_int16 *yyssp,
int yytoken)
4787 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
4789 const char *yyformat = 0;
4791 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
4825 int yyn = yypact[*yyssp];
4826 yyarg[yycount++] = yytname[yytoken];
4832 int yyxbegin = yyn < 0 ? -yyn : 0;
4834 int yychecklim =
YYLAST - yyn + 1;
4838 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
4839 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
4842 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
4848 yyarg[yycount++] = yytname[yyx];
4849 yysize1 = yysize +
yytnamerr (0, yytname[yyx]);
4850 if (! (yysize <= yysize1
4860 # define YYCASE_(N, S) \
4865 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
4866 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
4867 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
4868 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
4869 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
4873 yysize1 = yysize +
yystrlen (yyformat);
4878 if (*yymsg_alloc < yysize)
4880 *yymsg_alloc = 2 * yysize;
4881 if (! (yysize <= *yymsg_alloc
4893 while ((*yyp = *yyformat) !=
'\0')
4894 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
4914 #if (defined __STDC__ || defined __C99__FUNC__ \
4915 || defined __cplusplus || defined _MSC_VER)
4944 #ifdef YYPARSE_PARAM
4945 #if defined __STDC__ || defined __cplusplus
4946 int yyparse (
void *YYPARSE_PARAM);
4951 #if defined __STDC__ || defined __cplusplus
4963 #ifdef YYPARSE_PARAM
4964 #if (defined __STDC__ || defined __C99__FUNC__ \
4965 || defined __cplusplus || defined _MSC_VER)
4971 void *YYPARSE_PARAM;
4974 #if (defined __STDC__ || defined __C99__FUNC__ \
4975 || defined __cplusplus || defined _MSC_VER)
5008 yytype_int16 *yyssp;
5028 char *yymsg = yymsgbuf;
5029 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
5032 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
5043 YYDPRINTF ((stderr,
"Starting parse\n"));
5070 if (yyss + yystacksize - 1 <= yyssp)
5073 YYSIZE_T yysize = yyssp - yyss + 1;
5081 yytype_int16 *yyss1 = yyss;
5087 yyoverflow (
YY_(
"memory exhausted"),
5088 &yyss1, yysize *
sizeof (*yyssp),
5089 &yyvs1, yysize *
sizeof (*yyvsp),
5096 # ifndef YYSTACK_RELOCATE
5097 goto yyexhaustedlab;
5101 goto yyexhaustedlab;
5107 yytype_int16 *yyss1 = yyss;
5111 goto yyexhaustedlab;
5114 # undef YYSTACK_RELOCATE
5121 yyssp = yyss + yysize - 1;
5122 yyvsp = yyvs + yysize - 1;
5124 YYDPRINTF ((stderr,
"Stack size increased to %lu\n",
5125 (
unsigned long int) yystacksize));
5127 if (yyss + yystacksize - 1 <= yyssp)
5131 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
5147 yyn = yypact[yystate];
5156 YYDPRINTF ((stderr,
"Reading a token: "));
5160 if (yychar <=
YYEOF)
5162 yychar = yytoken =
YYEOF;
5163 YYDPRINTF ((stderr,
"Now at end of input.\n"));
5174 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5206 yyn = yydefact[yystate];
5227 yyval = yyvsp[1-yylen];
5257 NODE *node = (yyvsp[(2) - (2)].
node);
5258 while (node->nd_next) {
5259 node = node->nd_next;
5283 (yyval.
node) = (yyvsp[(1) - (2)].node);
5355 (yyvsp[(4) - (5)].node));
5371 (yyval.
node) = (yyvsp[(1) - (4)].node);
5372 if ((yyvsp[(2) - (4)].node)) {
5373 (yyval.
node) =
NEW_RESCUE((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].
node), (yyvsp[(3) - (4)].node));
5375 else if ((yyvsp[(3) - (4)].node)) {
5376 rb_warn0(
"else without rescue is useless");
5379 if ((yyvsp[(4) - (4)].node)) {
5408 (yyval.
node) = (yyvsp[(1) - (2)].node);
5415 #line 1003 "parse.y"
5429 #line 1012 "parse.y"
5442 #line 1020 "parse.y"
5455 #line 1028 "parse.y"
5464 #line 1034 "parse.y"
5466 (yyval.
node) = (yyvsp[(1) - (1)].node);
5473 #line 1038 "parse.y"
5475 yyerror(
"BEGIN is permitted only at toplevel");
5486 #line 1046 "parse.y"
5490 (yyvsp[(4) - (5)].node));
5503 #line 1058 "parse.y"
5510 #line 1059 "parse.y"
5523 #line 1067 "parse.y"
5536 #line 1075 "parse.y"
5541 buf[1] = (char)(yyvsp[(3) - (3)].node)->nd_nth;
5552 #line 1086 "parse.y"
5555 yyerror(
"can't make alias for the number variables");
5567 #line 1096 "parse.y"
5570 (yyval.
node) = (yyvsp[(2) - (2)].node);
5580 #line 1104 "parse.y"
5594 #line 1113 "parse.y"
5608 #line 1122 "parse.y"
5611 if ((yyvsp[(1) - (3)].node) &&
nd_type((yyvsp[(1) - (3)].node)) ==
NODE_BEGIN) {
5615 (yyval.
node) =
NEW_WHILE(
cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 1);
5626 #line 1135 "parse.y"
5629 if ((yyvsp[(1) - (3)].node) &&
nd_type((yyvsp[(1) - (3)].node)) ==
NODE_BEGIN) {
5630 (yyval.
node) =
NEW_UNTIL(
cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node)->nd_body, 0);
5633 (yyval.
node) =
NEW_UNTIL(
cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 1);
5644 #line 1148 "parse.y"
5658 #line 1157 "parse.y"
5661 rb_warn0(
"END in method; use at_exit");
5665 NODE_SCOPE, 0 , (yyvsp[(3) - (4)].node) , 0 ));
5675 #line 1170 "parse.y"
5679 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5680 (yyval.
node) = (yyvsp[(1) - (3)].node);
5690 #line 1180 "parse.y"
5693 (yyval.
node) =
new_op_assign((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].
id), (yyvsp[(3) - (3)].node));
5700 #line 1185 "parse.y"
5706 if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].
node) =
NEW_ZARRAY();
5707 args =
arg_concat((yyvsp[(3) - (6)].node), (yyvsp[(6) - (6)].node));
5708 if ((yyvsp[(5) - (6)].
id) ==
tOROP) {
5709 (yyvsp[(5) - (6)].
id) = 0;
5711 else if ((yyvsp[(5) - (6)].
id) ==
tANDOP) {
5712 (yyvsp[(5) - (6)].
id) = 1;
5726 #line 1206 "parse.y"
5729 (yyval.
node) =
new_attr_op_assign((yyvsp[(1) - (5)].node), ripper_id2sym(
'.'), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
5736 #line 1211 "parse.y"
5739 (yyval.
node) =
new_attr_op_assign((yyvsp[(1) - (5)].node), ripper_id2sym(
'.'), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
5746 #line 1216 "parse.y"
5761 #line 1226 "parse.y"
5764 (yyval.
node) =
new_attr_op_assign((yyvsp[(1) - (5)].node), ripper_intern(
"::"), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
5771 #line 1231 "parse.y"
5786 #line 1241 "parse.y"
5800 #line 1250 "parse.y"
5803 (yyvsp[(1) - (3)].
node)->
nd_value = (yyvsp[(3) - (3)].node);
5804 (yyval.
node) = (yyvsp[(1) - (3)].node);
5814 #line 1262 "parse.y"
5828 #line 1271 "parse.y"
5842 #line 1284 "parse.y"
5855 #line 1292 "parse.y"
5868 #line 1300 "parse.y"
5881 #line 1308 "parse.y"
5894 #line 1319 "parse.y"
5898 (yyval.
node) = (yyvsp[(1) - (1)].node);
5909 #line 1336 "parse.y"
5912 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
5923 #line 1347 "parse.y"
5936 #line 1357 "parse.y"
5951 #line 1369 "parse.y"
5964 #line 1379 "parse.y"
5967 (yyval.
node) = (yyvsp[(1) - (2)].node);
5978 #line 1388 "parse.y"
5982 (yyvsp[(1) - (3)].
node)->
nd_args = (yyvsp[(2) - (3)].node);
5983 (yyvsp[(3) - (3)].
node)->
nd_iter = (yyvsp[(1) - (3)].node);
5984 (yyval.
node) = (yyvsp[(3) - (3)].node);
5996 #line 1401 "parse.y"
5999 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
6010 #line 1410 "parse.y"
6014 (yyvsp[(5) - (5)].
node)->
nd_iter =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].node));
6015 (yyval.
node) = (yyvsp[(5) - (5)].node);
6027 #line 1422 "parse.y"
6030 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
6041 #line 1431 "parse.y"
6045 (yyvsp[(5) - (5)].
node)->
nd_iter =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].node));
6046 (yyval.
node) = (yyvsp[(5) - (5)].node);
6058 #line 1443 "parse.y"
6072 #line 1452 "parse.y"
6086 #line 1461 "parse.y"
6099 #line 1469 "parse.y"
6112 #line 1477 "parse.y"
6125 #line 1488 "parse.y"
6128 (yyval.
node) = (yyvsp[(2) - (3)].node);
6138 #line 1499 "parse.y"
6151 #line 1509 "parse.y"
6164 #line 1517 "parse.y"
6177 #line 1525 "parse.y"
6190 #line 1533 "parse.y"
6204 #line 1542 "parse.y"
6217 #line 1550 "parse.y"
6231 #line 1559 "parse.y"
6244 #line 1567 "parse.y"
6258 #line 1576 "parse.y"
6271 #line 1584 "parse.y"
6285 #line 1596 "parse.y"
6288 (yyval.
node) = (yyvsp[(2) - (3)].node);
6298 #line 1606 "parse.y"
6311 #line 1614 "parse.y"
6324 #line 1624 "parse.y"
6337 #line 1632 "parse.y"
6350 #line 1642 "parse.y"
6359 #line 1646 "parse.y"
6368 #line 1650 "parse.y"
6371 (yyval.
node) =
aryset((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
node));
6381 #line 1658 "parse.y"
6384 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6394 #line 1666 "parse.y"
6397 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6407 #line 1674 "parse.y"
6410 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6420 #line 1682 "parse.y"
6424 yyerror(
"dynamic constant assignment");
6437 #line 1694 "parse.y"
6441 yyerror(
"dynamic constant assignment");
6452 #line 1704 "parse.y"
6467 #line 1716 "parse.y"
6481 #line 1725 "parse.y"
6495 #line 1734 "parse.y"
6498 (yyval.
node) =
aryset((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
node));
6508 #line 1742 "parse.y"
6511 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6521 #line 1750 "parse.y"
6524 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6534 #line 1758 "parse.y"
6537 (yyval.
node) =
attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id));
6547 #line 1766 "parse.y"
6551 yyerror(
"dynamic constant assignment");
6565 #line 1779 "parse.y"
6569 yyerror(
"dynamic constant assignment");
6583 #line 1792 "parse.y"
6597 #line 1803 "parse.y"
6600 yyerror(
"class/module name must be CONSTANT");
6610 #line 1814 "parse.y"
6623 #line 1822 "parse.y"
6636 #line 1830 "parse.y"
6649 #line 1843 "parse.y"
6652 (yyval.
id) = (yyvsp[(1) - (1)].
id);
6659 #line 1848 "parse.y"
6663 (yyval.
id) = (yyvsp[(1) - (1)].
id);
6673 #line 1863 "parse.y"
6686 #line 1874 "parse.y"
6699 #line 1881 "parse.y"
6706 #line 1882 "parse.y"
6719 #line 1891 "parse.y"
6726 #line 1892 "parse.y"
6733 #line 1893 "parse.y"
6740 #line 1894 "parse.y"
6747 #line 1895 "parse.y"
6754 #line 1896 "parse.y"
6761 #line 1897 "parse.y"
6768 #line 1898 "parse.y"
6775 #line 1899 "parse.y"
6782 #line 1900 "parse.y"
6789 #line 1901 "parse.y"
6796 #line 1902 "parse.y"
6803 #line 1903 "parse.y"
6810 #line 1904 "parse.y"
6817 #line 1905 "parse.y"
6824 #line 1906 "parse.y"
6831 #line 1907 "parse.y"
6838 #line 1908 "parse.y"
6845 #line 1909 "parse.y"
6852 #line 1910 "parse.y"
6859 #line 1911 "parse.y"
6866 #line 1912 "parse.y"
6873 #line 1913 "parse.y"
6880 #line 1914 "parse.y"
6887 #line 1915 "parse.y"
6894 #line 1916 "parse.y"
6901 #line 1917 "parse.y"
6908 #line 1918 "parse.y"
6915 #line 1919 "parse.y"
6922 #line 1920 "parse.y"
6929 #line 1938 "parse.y"
6943 #line 1947 "parse.y"
6958 #line 1957 "parse.y"
6961 (yyval.
node) =
new_op_assign((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].
id), (yyvsp[(3) - (3)].node));
6968 #line 1962 "parse.y"
6976 (yyval.
node) =
new_op_assign((yyvsp[(1) - (5)].node), (yyvsp[(2) - (5)].
id), (yyvsp[(3) - (5)].node));
6983 #line 1972 "parse.y"
6989 if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].
node) =
NEW_ZARRAY();
6991 args =
NEW_ARGSCAT((yyvsp[(3) - (6)].node), (yyvsp[(6) - (6)].node));
6994 args =
arg_concat((yyvsp[(3) - (6)].node), (yyvsp[(6) - (6)].node));
6996 if ((yyvsp[(5) - (6)].
id) ==
tOROP) {
6997 (yyvsp[(5) - (6)].
id) = 0;
6999 else if ((yyvsp[(5) - (6)].
id) ==
tANDOP) {
7000 (yyvsp[(5) - (6)].
id) = 1;
7014 #line 1998 "parse.y"
7017 (yyval.
node) =
new_attr_op_assign((yyvsp[(1) - (5)].node), ripper_id2sym(
'.'), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
7024 #line 2003 "parse.y"
7027 (yyval.
node) =
new_attr_op_assign((yyvsp[(1) - (5)].node), ripper_id2sym(
'.'), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
7034 #line 2008 "parse.y"
7037 (yyval.
node) =
new_attr_op_assign((yyvsp[(1) - (5)].node), ripper_intern(
"::"), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].
id), (yyvsp[(5) - (5)].
node));
7044 #line 2013 "parse.y"
7059 #line 2023 "parse.y"
7074 #line 2033 "parse.y"
7090 #line 2044 "parse.y"
7109 #line 2058 "parse.y"
7128 #line 2072 "parse.y"
7141 #line 2080 "parse.y"
7154 #line 2088 "parse.y"
7167 #line 2096 "parse.y"
7180 #line 2104 "parse.y"
7193 #line 2112 "parse.y"
7206 #line 2120 "parse.y"
7220 #line 2129 "parse.y"
7233 #line 2137 "parse.y"
7246 #line 2145 "parse.y"
7259 #line 2153 "parse.y"
7272 #line 2161 "parse.y"
7285 #line 2169 "parse.y"
7298 #line 2177 "parse.y"
7311 #line 2185 "parse.y"
7324 #line 2193 "parse.y"
7337 #line 2201 "parse.y"
7350 #line 2209 "parse.y"
7363 #line 2217 "parse.y"
7376 #line 2225 "parse.y"
7389 #line 2233 "parse.y"
7405 #line 2244 "parse.y"
7418 #line 2252 "parse.y"
7431 #line 2260 "parse.y"
7444 #line 2268 "parse.y"
7457 #line 2276 "parse.y"
7470 #line 2284 "parse.y"
7483 #line 2292 "parse.y"
7496 #line 2299 "parse.y"
7503 #line 2300 "parse.y"
7518 #line 2310 "parse.y"
7522 (yyval.
node) =
NEW_IF(
cond((yyvsp[(1) - (6)].node)), (yyvsp[(3) - (6)].
node), (yyvsp[(6) - (6)].node));
7533 #line 2320 "parse.y"
7535 (yyval.
node) = (yyvsp[(1) - (1)].node);
7542 #line 2326 "parse.y"
7546 (yyval.
node) = (yyvsp[(1) - (1)].node);
7557 #line 2339 "parse.y"
7559 (yyval.
node) = (yyvsp[(1) - (2)].node);
7566 #line 2343 "parse.y"
7579 #line 2351 "parse.y"
7592 #line 2361 "parse.y"
7595 (yyval.
node) = (yyvsp[(2) - (3)].node);
7605 #line 2377 "parse.y"
7607 (yyval.
node) = (yyvsp[(1) - (2)].node);
7614 #line 2381 "parse.y"
7627 #line 2389 "parse.y"
7640 #line 2399 "parse.y"
7654 #line 2408 "parse.y"
7667 #line 2416 "parse.y"
7682 #line 2426 "parse.y"
7696 #line 2443 "parse.y"
7706 #line 2448 "parse.y"
7710 (yyval.
node) = (yyvsp[(2) - (2)].node);
7717 #line 2456 "parse.y"
7730 #line 2466 "parse.y"
7732 (yyval.
node) = (yyvsp[(2) - (2)].node);
7739 #line 2470 "parse.y"
7748 #line 2476 "parse.y"
7761 #line 2484 "parse.y"
7774 #line 2492 "parse.y"
7778 if ((n1 =
splat_array((yyvsp[(1) - (3)].node))) != 0) {
7793 #line 2506 "parse.y"
7812 #line 2526 "parse.y"
7816 if ((n1 =
splat_array((yyvsp[(1) - (3)].node))) != 0) {
7831 #line 2540 "parse.y"
7836 (n1 =
splat_array((yyvsp[(1) - (4)].node))) != 0) {
7851 #line 2555 "parse.y"
7864 #line 2575 "parse.y"
7877 #line 2583 "parse.y"
7891 #line 2593 "parse.y"
7895 if ((yyvsp[(3) - (4)].node) ==
NULL) {
7901 nd_set_line((yyvsp[(3) - (4)].node), (yyvsp[(2) - (4)].num));
7914 #line 2610 "parse.y"
7921 #line 2611 "parse.y"
7934 #line 2619 "parse.y"
7944 #line 2623 "parse.y"
7951 #line 2624 "parse.y"
7955 (yyval.
node) = (yyvsp[(3) - (5)].node);
7965 #line 2633 "parse.y"
7968 (yyval.
node) = (yyvsp[(2) - (3)].node);
7978 #line 2641 "parse.y"
7991 #line 2649 "parse.y"
8004 #line 2657 "parse.y"
8007 if ((yyvsp[(2) - (3)].node) == 0) {
8011 (yyval.
node) = (yyvsp[(2) - (3)].node);
8022 #line 2670 "parse.y"
8035 #line 2678 "parse.y"
8048 #line 2686 "parse.y"
8061 #line 2694 "parse.y"
8074 #line 2702 "parse.y"
8087 #line 2709 "parse.y"
8094 #line 2710 "parse.y"
8109 #line 2720 "parse.y"
8122 #line 2728 "parse.y"
8135 #line 2736 "parse.y"
8138 (yyvsp[(2) - (2)].
node)->
nd_iter = (yyvsp[(1) - (2)].node);
8139 (yyval.
node) = (yyvsp[(2) - (2)].node);
8150 #line 2747 "parse.y"
8154 (yyvsp[(2) - (2)].
node)->
nd_iter = (yyvsp[(1) - (2)].node);
8155 (yyval.
node) = (yyvsp[(2) - (2)].node);
8165 #line 2757 "parse.y"
8167 (yyval.
node) = (yyvsp[(2) - (2)].node);
8174 #line 2764 "parse.y"
8177 (yyval.
node) =
NEW_IF(
cond((yyvsp[(2) - (6)].node)), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].
node));
8188 #line 2776 "parse.y"
8191 (yyval.
node) =
NEW_UNLESS(
cond((yyvsp[(2) - (6)].node)), (yyvsp[(4) - (6)].
node), (yyvsp[(5) - (6)].node));
8202 #line 2784 "parse.y"
8209 #line 2784 "parse.y"
8216 #line 2787 "parse.y"
8230 #line 2795 "parse.y"
8237 #line 2795 "parse.y"
8244 #line 2798 "parse.y"
8258 #line 2809 "parse.y"
8272 #line 2818 "parse.y"
8285 #line 2826 "parse.y"
8292 #line 2828 "parse.y"
8299 #line 2831 "parse.y"
8344 m->nd_next = (yyvsp[(2) - (9)].
node);
8353 tbl[0] = 1; tbl[1] =
id;
8354 (yyval.
node) =
NEW_FOR(0, (yyvsp[(5) - (9)].node), scope);
8365 #line 2892 "parse.y"
8368 yyerror(
"class definition in method body");
8380 #line 2903 "parse.y"
8383 (yyval.
node) =
NEW_CLASS((yyvsp[(2) - (6)].node), (yyvsp[(5) - (6)].
node), (yyvsp[(3) - (6)].node));
8395 #line 2913 "parse.y"
8405 #line 2918 "parse.y"
8416 #line 2925 "parse.y"
8433 #line 2937 "parse.y"
8436 yyerror(
"module definition in method body");
8448 #line 2948 "parse.y"
8463 #line 2958 "parse.y"
8475 #line 2967 "parse.y"
8494 #line 2980 "parse.y"
8501 #line 2981 "parse.y"
8512 #line 2989 "parse.y"
8517 (yyval.
node) =
NEW_DEFS((yyvsp[(2) - (9)].node), (yyvsp[(5) - (9)].
id), (yyvsp[(7) - (9)].node), body);
8530 #line 3002 "parse.y"
8543 #line 3010 "parse.y"
8556 #line 3018 "parse.y"
8569 #line 3026 "parse.y"
8582 #line 3036 "parse.y"
8586 (yyval.
node) = (yyvsp[(1) - (1)].node);
8597 #line 3048 "parse.y"
8606 #line 3054 "parse.y"
8615 #line 3060 "parse.y"
8624 #line 3066 "parse.y"
8633 #line 3072 "parse.y"
8642 #line 3078 "parse.y"
8651 #line 3084 "parse.y"
8660 #line 3090 "parse.y"
8669 #line 3096 "parse.y"
8678 #line 3102 "parse.y"
8691 #line 3112 "parse.y"
8700 #line 3142 "parse.y"
8703 (yyval.
node) =
NEW_IF(
cond((yyvsp[(2) - (5)].node)), (yyvsp[(4) - (5)].
node), (yyvsp[(5) - (5)].node));
8714 #line 3154 "parse.y"
8717 (yyval.
node) = (yyvsp[(2) - (2)].node);
8727 #line 3168 "parse.y"
8740 #line 3176 "parse.y"
8743 (yyval.
node) = (yyvsp[(2) - (3)].node);
8753 #line 3186 "parse.y"
8766 #line 3194 "parse.y"
8779 #line 3204 "parse.y"
8792 #line 3212 "parse.y"
8806 #line 3221 "parse.y"
8820 #line 3230 "parse.y"
8833 #line 3238 "parse.y"
8846 #line 3246 "parse.y"
8860 #line 3255 "parse.y"
8877 #line 3267 "parse.y"
8890 #line 3275 "parse.y"
8903 #line 3286 "parse.y"
8905 (yyval.
node) =
new_args_tail((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].
id));
8912 #line 3290 "parse.y"
8921 #line 3294 "parse.y"
8930 #line 3298 "parse.y"
8939 #line 3304 "parse.y"
8941 (yyval.
node) = (yyvsp[(2) - (2)].node);
8948 #line 3308 "parse.y"
8957 #line 3314 "parse.y"
8959 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node), (yyvsp[(5) - (6)].
id),
Qnone, (yyvsp[(6) - (6)].
node));
8966 #line 3318 "parse.y"
8968 (yyval.
node) =
new_args((yyvsp[(1) - (8)].node), (yyvsp[(3) - (8)].
node), (yyvsp[(5) - (8)].
id), (yyvsp[(7) - (8)].
node), (yyvsp[(8) - (8)].node));
8975 #line 3322 "parse.y"
8984 #line 3326 "parse.y"
8986 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node),
Qnone, (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
node));
8993 #line 3330 "parse.y"
9002 #line 3334 "parse.y"
9015 #line 3342 "parse.y"
9017 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node),
Qnone, (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
node));
9024 #line 3346 "parse.y"
9033 #line 3350 "parse.y"
9042 #line 3354 "parse.y"
9044 (yyval.
node) =
new_args(
Qnone, (yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
node));
9051 #line 3358 "parse.y"
9060 #line 3362 "parse.y"
9069 #line 3366 "parse.y"
9078 #line 3370 "parse.y"
9087 #line 3374 "parse.y"
9096 #line 3381 "parse.y"
9105 #line 3387 "parse.y"
9119 #line 3396 "parse.y"
9133 #line 3405 "parse.y"
9136 (yyval.
node) = (yyvsp[(2) - (4)].node);
9146 #line 3416 "parse.y"
9155 #line 3420 "parse.y"
9168 #line 3446 "parse.y"
9181 #line 3454 "parse.y"
9190 #line 3459 "parse.y"
9199 #line 3462 "parse.y"
9209 #line 3467 "parse.y"
9218 #line 3471 "parse.y"
9234 #line 3484 "parse.y"
9237 (yyval.
node) = (yyvsp[(2) - (4)].node);
9247 #line 3492 "parse.y"
9249 (yyval.
node) = (yyvsp[(1) - (1)].node);
9256 #line 3498 "parse.y"
9258 (yyval.
node) = (yyvsp[(2) - (3)].node);
9265 #line 3502 "parse.y"
9267 (yyval.
node) = (yyvsp[(2) - (3)].node);
9274 #line 3508 "parse.y"
9286 #line 3517 "parse.y"
9301 #line 3529 "parse.y"
9310 (yyvsp[(2) - (2)].
node)->
nd_iter = (yyvsp[(1) - (2)].node);
9311 (yyval.
node) = (yyvsp[(2) - (2)].node);
9322 #line 3545 "parse.y"
9325 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].node));
9336 #line 3554 "parse.y"
9340 (yyvsp[(5) - (5)].
node)->
nd_iter =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].node));
9341 (yyval.
node) = (yyvsp[(5) - (5)].node);
9353 #line 3566 "parse.y"
9357 (yyvsp[(5) - (5)].
node)->
nd_iter =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(4) - (5)].node));
9358 (yyval.
node) = (yyvsp[(5) - (5)].node);
9370 #line 3580 "parse.y"
9373 (yyval.
node) = (yyvsp[(1) - (2)].node);
9384 #line 3589 "parse.y"
9395 #line 3595 "parse.y"
9398 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(5) - (5)].node));
9410 #line 3605 "parse.y"
9421 #line 3611 "parse.y"
9424 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].
id), (yyvsp[(5) - (5)].node));
9436 #line 3621 "parse.y"
9439 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].
id), 0);
9449 #line 3629 "parse.y"
9460 #line 3635 "parse.y"
9476 #line 3646 "parse.y"
9487 #line 3652 "parse.y"
9503 #line 3663 "parse.y"
9516 #line 3671 "parse.y"
9529 #line 3679 "parse.y"
9532 if ((yyvsp[(1) - (4)].node) &&
nd_type((yyvsp[(1) - (4)].node)) ==
NODE_SELF)
9535 (yyval.
node) =
NEW_CALL((yyvsp[(1) - (4)].node),
tAREF, (yyvsp[(3) - (4)].node));
9546 #line 3693 "parse.y"
9559 #line 3702 "parse.y"
9574 #line 3712 "parse.y"
9587 #line 3721 "parse.y"
9602 #line 3735 "parse.y"
9605 (yyval.
node) =
NEW_WHEN((yyvsp[(2) - (5)].node), (yyvsp[(4) - (5)].
node), (yyvsp[(5) - (5)].node));
9615 #line 3751 "parse.y"
9618 if ((yyvsp[(3) - (6)].node)) {
9622 (yyval.
node) =
NEW_RESBODY((yyvsp[(2) - (6)].node), (yyvsp[(5) - (6)].
node), (yyvsp[(6) - (6)].node));
9637 #line 3771 "parse.y"
9650 #line 3779 "parse.y"
9663 #line 3790 "parse.y"
9665 (yyval.
node) = (yyvsp[(2) - (2)].node);
9672 #line 3797 "parse.y"
9675 (yyval.
node) = (yyvsp[(2) - (2)].node);
9685 #line 3809 "parse.y"
9698 #line 3820 "parse.y"
9701 NODE *node = (yyvsp[(1) - (1)].
node);
9708 (yyval.
node) = node;
9718 #line 3839 "parse.y"
9731 #line 3849 "parse.y"
9734 (yyval.
node) = (yyvsp[(2) - (3)].node);
9744 #line 3859 "parse.y"
9747 NODE *node = (yyvsp[(2) - (3)].
node);
9764 (yyval.
node) = node;
9774 #line 3886 "parse.y"
9778 NODE *node = (yyvsp[(2) - (3)].
node);
9786 VALUE src = node->nd_lit;
9802 for (list = (prev = node)->
nd_next;
list; list = list->nd_next) {
9804 VALUE tail = list->nd_head->nd_lit;
9806 VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
9812 prev->nd_next = list->nd_next;
9825 if (!node->nd_next) {
9826 VALUE src = node->nd_lit;
9832 (yyval.
node) = node;
9842 #line 3951 "parse.y"
9856 #line 3960 "parse.y"
9859 (yyval.
node) = (yyvsp[(2) - (3)].node);
9869 #line 3970 "parse.y"
9882 #line 3978 "parse.y"
9895 #line 3996 "parse.y"
9908 #line 4006 "parse.y"
9922 #line 4015 "parse.y"
9925 (yyval.
node) = (yyvsp[(2) - (3)].node);
9935 #line 4025 "parse.y"
9948 #line 4033 "parse.y"
9963 #line 4045 "parse.y"
9977 #line 4054 "parse.y"
9980 (yyval.
node) = (yyvsp[(2) - (3)].node);
9990 #line 4064 "parse.y"
10004 #line 4073 "parse.y"
10007 (yyval.
node) = (yyvsp[(2) - (3)].node);
10017 #line 4083 "parse.y"
10030 #line 4091 "parse.y"
10043 #line 4101 "parse.y"
10056 #line 4109 "parse.y"
10073 #line 4123 "parse.y"
10086 #line 4131 "parse.y"
10099 #line 4141 "parse.y"
10112 #line 4149 "parse.y"
10125 #line 4159 "parse.y"
10138 #line 4167 "parse.y"
10141 NODE *
head = (yyvsp[(1) - (2)].
node), *tail = (yyvsp[(2) - (2)].node);
10143 (yyval.
node) = tail;
10146 (yyval.
node) = head;
10170 #line 4197 "parse.y"
10181 #line 4203 "parse.y"
10196 #line 4213 "parse.y"
10208 #line 4219 "parse.y"
10219 #line 4224 "parse.y"
10229 #line 4229 "parse.y"
10236 if ((yyvsp[(5) - (6)].node)) (yyvsp[(5) - (6)].node)->flags &= ~
NODE_FL_NEWLINE;
10247 #line 4244 "parse.y"
10260 #line 4252 "parse.y"
10273 #line 4260 "parse.y"
10286 #line 4271 "parse.y"
10290 (yyval.
id) = (yyvsp[(2) - (2)].
id);
10300 #line 4288 "parse.y"
10314 #line 4300 "parse.y"
10327 #line 4322 "parse.y"
10334 #line 4323 "parse.y"
10341 #line 4324 "parse.y"
10348 #line 4325 "parse.y"
10355 #line 4326 "parse.y"
10362 #line 4327 "parse.y"
10369 #line 4328 "parse.y"
10376 #line 4332 "parse.y"
10394 #line 4345 "parse.y"
10407 #line 4355 "parse.y"
10420 #line 4363 "parse.y"
10433 #line 4377 "parse.y"
10446 #line 4385 "parse.y"
10456 #line 4390 "parse.y"
10458 (yyval.
node) = (yyvsp[(3) - (4)].node);
10465 #line 4394 "parse.y"
10480 #line 4406 "parse.y"
10483 (yyval.
node) = (yyvsp[(2) - (3)].node);
10495 #line 4415 "parse.y"
10497 (yyval.
num) = parser->parser_in_kwarg;
10498 parser->parser_in_kwarg = 1;
10505 #line 4420 "parse.y"
10507 parser->parser_in_kwarg = (yyvsp[(1) - (3)].
num);
10508 (yyval.
node) = (yyvsp[(2) - (3)].node);
10517 #line 4429 "parse.y"
10519 (yyval.
node) =
new_args_tail((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].
id), (yyvsp[(4) - (4)].
id));
10526 #line 4433 "parse.y"
10535 #line 4437 "parse.y"
10544 #line 4441 "parse.y"
10553 #line 4447 "parse.y"
10555 (yyval.
node) = (yyvsp[(2) - (2)].node);
10562 #line 4451 "parse.y"
10571 #line 4457 "parse.y"
10573 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node), (yyvsp[(5) - (6)].
id),
Qnone, (yyvsp[(6) - (6)].
node));
10580 #line 4461 "parse.y"
10582 (yyval.
node) =
new_args((yyvsp[(1) - (8)].node), (yyvsp[(3) - (8)].
node), (yyvsp[(5) - (8)].
id), (yyvsp[(7) - (8)].
node), (yyvsp[(8) - (8)].node));
10589 #line 4465 "parse.y"
10598 #line 4469 "parse.y"
10600 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
node),
Qnone, (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
node));
10607 #line 4473 "parse.y"
10616 #line 4477 "parse.y"
10618 (yyval.
node) =
new_args((yyvsp[(1) - (6)].node),
Qnone, (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
node));
10625 #line 4481 "parse.y"
10634 #line 4485 "parse.y"
10643 #line 4489 "parse.y"
10645 (yyval.
node) =
new_args(
Qnone, (yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].
id), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].
node));
10652 #line 4493 "parse.y"
10661 #line 4497 "parse.y"
10670 #line 4501 "parse.y"
10679 #line 4505 "parse.y"
10688 #line 4509 "parse.y"
10697 #line 4513 "parse.y"
10707 #line 4520 "parse.y"
10710 yyerror(
"formal argument cannot be a constant");
10721 #line 4529 "parse.y"
10724 yyerror(
"formal argument cannot be an instance variable");
10735 #line 4538 "parse.y"
10738 yyerror(
"formal argument cannot be a global variable");
10749 #line 4547 "parse.y"
10752 yyerror(
"formal argument cannot be a class variable");
10763 #line 4559 "parse.y"
10766 (yyval.
id) = (yyvsp[(1) - (1)].
id);
10773 #line 4566 "parse.y"
10787 #line 4575 "parse.y"
10809 #line 4601 "parse.y"
10812 (yyval.
node) = (yyvsp[(1) - (3)].node);
10825 #line 4615 "parse.y"
10828 (yyval.
id) = (yyvsp[(1) - (1)].
id);
10835 #line 4622 "parse.y"
10849 #line 4631 "parse.y"
10863 #line 4642 "parse.y"
10877 #line 4651 "parse.y"
10891 #line 4662 "parse.y"
10894 (yyval.
node) = (yyvsp[(1) - (1)].node);
10904 #line 4670 "parse.y"
10907 NODE *kws = (yyvsp[(1) - (3)].
node);
10909 while (kws->nd_next) {
10910 kws = kws->nd_next;
10912 kws->nd_next = (yyvsp[(3) - (3)].
node);
10913 (yyval.
node) = (yyvsp[(1) - (3)].node);
10923 #line 4687 "parse.y"
10926 (yyval.
node) = (yyvsp[(1) - (1)].node);
10936 #line 4695 "parse.y"
10939 NODE *kws = (yyvsp[(1) - (3)].
node);
10941 while (kws->nd_next) {
10942 kws = kws->nd_next;
10944 kws->nd_next = (yyvsp[(3) - (3)].
node);
10945 (yyval.
node) = (yyvsp[(1) - (3)].node);
10955 #line 4715 "parse.y"
10958 (yyval.
id) = (yyvsp[(2) - (2)].
id);
10965 #line 4720 "parse.y"
10974 #line 4726 "parse.y"
10989 #line 4738 "parse.y"
11004 #line 4750 "parse.y"
11007 (yyval.
node) = (yyvsp[(1) - (1)].node);
11017 #line 4758 "parse.y"
11020 NODE *opts = (yyvsp[(1) - (3)].
node);
11022 while (opts->nd_next) {
11023 opts = opts->nd_next;
11025 opts->nd_next = (yyvsp[(3) - (3)].
node);
11026 (yyval.
node) = (yyvsp[(1) - (3)].node);
11036 #line 4774 "parse.y"
11039 (yyval.
node) = (yyvsp[(1) - (1)].node);
11049 #line 4782 "parse.y"
11052 NODE *opts = (yyvsp[(1) - (3)].
node);
11054 while (opts->nd_next) {
11055 opts = opts->nd_next;
11057 opts->nd_next = (yyvsp[(3) - (3)].
node);
11058 (yyval.
node) = (yyvsp[(1) - (3)].node);
11068 #line 4802 "parse.y"
11072 yyerror(
"rest argument must be local variable");
11076 (yyval.
id) = (yyvsp[(2) - (2)].
id);
11086 #line 4815 "parse.y"
11100 #line 4830 "parse.y"
11104 yyerror(
"block argument must be local variable");
11106 yyerror(
"duplicated block argument name");
11110 (yyval.
id) = (yyvsp[(2) - (2)].
id);
11120 #line 4847 "parse.y"
11122 (yyval.
id) = (yyvsp[(2) - (2)].
id);
11129 #line 4851 "parse.y"
11142 #line 4861 "parse.y"
11146 (yyval.
node) = (yyvsp[(1) - (1)].node);
11157 #line 4870 "parse.y"
11164 #line 4871 "parse.y"
11167 if ((yyvsp[(3) - (4)].node) == 0) {
11168 yyerror(
"can't define singleton method for ().");
11171 switch (
nd_type((yyvsp[(3) - (4)].node))) {
11180 yyerror(
"can't define singleton method for literals");
11186 (yyval.
node) = (yyvsp[(3) - (4)].node);
11196 #line 4901 "parse.y"
11199 (yyval.
node) = (yyvsp[(1) - (2)].node);
11209 #line 4918 "parse.y"
11222 #line 4928 "parse.y"
11239 #line 4940 "parse.y"
11252 #line 4948 "parse.y"
11265 #line 5006 "parse.y"
11272 #line 5011 "parse.y"
11279 #line 5015 "parse.y"
11292 #line 11291 "parse.c"
11320 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
11321 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
11322 yystate = yytable[yystate];
11341 #if ! YYERROR_VERBOSE
11344 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
11347 char const *yymsgp =
YY_(
"syntax error");
11348 int yysyntax_error_status;
11350 if (yysyntax_error_status == 0)
11352 else if (yysyntax_error_status == 1)
11354 if (yymsg != yymsgbuf)
11360 yymsg_alloc =
sizeof yymsgbuf;
11361 yysyntax_error_status = 2;
11370 if (yysyntax_error_status == 2)
11371 goto yyexhaustedlab;
11373 # undef YYSYNTAX_ERROR
11379 if (yyerrstatus == 3)
11384 if (yychar <=
YYEOF)
11387 if (yychar ==
YYEOF)
11393 yytoken, &yylval, parser);
11431 yyn = yypact[yystate];
11437 yyn = yytable[yyn];
11449 yystos[yystate], yyvsp, parser);
11479 #if !defined(yyoverflow) || YYERROR_VERBOSE
11495 yydestruct (
"Cleanup: discarding lookahead",
11496 yytoken, &yylval, parser);
11502 while (yyssp != yyss)
11505 yystos[*yyssp], yyvsp, parser);
11512 #if YYERROR_VERBOSE
11513 if (yymsg != yymsgbuf)
11517 return YYID (yyresult);
11523 #line 5023 "parse.y"
11528 # define yylval (*((YYSTYPE*)(parser->parser_yylval)))
11537 # define nextc() parser_nextc(parser)
11538 # define pushback(c) parser_pushback(parser, (c))
11539 # define newtok() parser_newtok(parser)
11540 # define tokspace(n) parser_tokspace(parser, (n))
11541 # define tokadd(c) parser_tokadd(parser, (c))
11542 # define tok_hex(numlen) parser_tok_hex(parser, (numlen))
11543 # define read_escape(flags,e) parser_read_escape(parser, (flags), (e))
11544 # define tokadd_escape(e) parser_tokadd_escape(parser, (e))
11545 # define regx_options() parser_regx_options(parser)
11546 # define tokadd_string(f,t,p,n,e) parser_tokadd_string(parser,(f),(t),(p),(n),(e))
11547 # define parse_string(n) parser_parse_string(parser,(n))
11548 # define tokaddmbc(c, enc) parser_tokaddmbc(parser, (c), (enc))
11549 # define here_document(n) parser_here_document(parser,(n))
11550 # define heredoc_identifier() parser_heredoc_identifier(parser)
11551 # define heredoc_restore(n) parser_heredoc_restore(parser,(n))
11552 # define whole_match_p(e,l,i) parser_whole_match_p(parser,(e),(l),(i))
11553 # define number_literal_suffix(f) parser_number_literal_suffix(parser, (f))
11554 # define set_number_literal(v, t, f) parser_set_number_literal(parser, (v), (t), (f))
11555 # define set_integer_literal(v, f) parser_set_integer_literal(parser, (v), (f))
11558 # define set_yylval_str(x) (yylval.node = NEW_STR(x))
11559 # define set_yylval_num(x) (yylval.num = (x))
11560 # define set_yylval_id(x) (yylval.id = (x))
11561 # define set_yylval_name(x) (yylval.id = (x))
11562 # define set_yylval_literal(x) (yylval.node = NEW_LIT(x))
11563 # define set_yylval_node(x) (yylval.node = (x))
11564 # define yylval_id() (yylval.id)
11566 static inline VALUE
11567 ripper_yylval_id(
ID x)
11571 # define set_yylval_str(x) (void)(x)
11572 # define set_yylval_num(x) (void)(x)
11573 # define set_yylval_id(x) (void)(x)
11574 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(x))
11575 # define set_yylval_literal(x) (void)(x)
11576 # define set_yylval_node(x) (void)(x)
11577 # define yylval_id() yylval.id
11581 #define ripper_flush(p) (void)(p)
11583 #define ripper_flush(p) ((p)->tokp = (p)->parser_lex_p)
11585 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
11592 return lex_p > parser->tokp;
11605 ripper_dispatch_scan_event(
struct parser_params *parser,
int t)
11607 if (!ripper_has_scan_event(parser))
return;
11608 yylval_rval = ripper_scan_event_val(parser, t);
11612 ripper_dispatch_ignored_scan_event(
struct parser_params *parser,
int t)
11614 if (!ripper_has_scan_event(parser))
return;
11615 (void)ripper_scan_event_val(parser, t);
11619 ripper_dispatch_delayed_token(
struct parser_params *parser,
int t)
11622 const char *saved_tokp = parser->tokp;
11625 parser->tokp =
lex_pbeg + parser->delayed_col;
11627 parser->delayed =
Qnil;
11629 parser->tokp = saved_tokp;
11640 #undef SIGN_EXTEND_CHAR
11642 # define SIGN_EXTEND_CHAR(c) ((signed char)(c))
11645 # define SIGN_EXTEND_CHAR(c) ((((unsigned char)(c)) ^ 128) - 128)
11648 #define parser_encoding_name() (current_enc->name)
11649 #define parser_mbclen() mbclen((lex_p-1),lex_pend,current_enc)
11650 #define parser_precise_mbclen() rb_enc_precise_mbclen((lex_p-1),lex_pend,current_enc)
11651 #define is_identchar(p,e,enc) (rb_enc_isalnum((unsigned char)(*(p)),(enc)) || (*(p)) == '_' || !ISASCII(*(p)))
11652 #define parser_is_identchar() (!parser->eofp && is_identchar((lex_p-1),lex_pend,current_enc))
11654 #define parser_isascii() ISASCII(*(lex_p-1))
11662 for (p =
lex_pbeg; p < pend; p++) {
11664 column = (((column - 1) / 8) + 1) * 8;
11675 for (p =
lex_pbeg; p < pend; p++) {
11676 if (*p !=
' ' && *p !=
'\t') {
11683 #undef token_info_push
11700 #undef token_info_pop
11707 if (!ptinfo)
return;
11713 if (linenum == ptinfo->
linenum) {
11721 "mismatched indentations at '%s' with '%s' at %d",
11734 const int max_line_margin = 30;
11735 const char *p, *pe;
11743 if (*p ==
'\n')
break;
11750 if (*pe ==
'\n')
break;
11757 const char *pre =
"", *post =
"";
11759 if (len > max_line_margin * 2 + 10) {
11760 if (
lex_p - p > max_line_margin) {
11764 if (pe -
lex_p > max_line_margin) {
11771 MEMCPY(buf, p,
char, len);
11775 i = (int)(
lex_p - p);
11776 p2 =
buf; pe = buf + len;
11779 if (*p2 !=
'\t') *p2 =
' ';
11787 dispatch1(parse_error,
STR_NEW2(msg));
11799 CONST_ID(script_lines,
"SCRIPT_LINES__");
11815 if (
RTEST(coverages) &&
RBASIC(coverages)->klass == 0) {
11820 RARRAY(lines)->as.heap.len = n;
11881 if (parser->
nerr) {
11891 return (
VALUE)tree;
11917 char *beg, *end, *pend;
11927 while (end < pend) {
11928 if (*end++ ==
'\n')
break;
11938 if (
NIL_P(line))
return line;
12042 node =
yycompile(parser, fname, start);
12049 #define STR_FUNC_ESCAPE 0x01
12050 #define STR_FUNC_EXPAND 0x02
12051 #define STR_FUNC_REGEXP 0x04
12052 #define STR_FUNC_QWORDS 0x08
12053 #define STR_FUNC_SYMBOL 0x10
12054 #define STR_FUNC_INDENT 0x20
12084 #define lex_goto_eol(parser) ((parser)->parser_lex_p = (parser)->parser_lex_pend)
12085 #define lex_eol_p() (lex_p >= lex_pend)
12086 #define peek(c) peek_n((c), 0)
12087 #define peek_n(c,n) (lex_p+(n) < lex_pend && (c) == (unsigned char)lex_p[n])
12110 if (
NIL_P(parser->delayed)) {
12114 parser->tokp,
lex_pend - parser->tokp);
12116 parser->delayed_col = (int)(parser->tokp -
lex_pbeg);
12120 parser->tokp,
lex_pend - parser->tokp);
12136 c = (
unsigned char)*
lex_p++;
12154 if (c == -1)
return;
12161 #define was_bol() (lex_p == lex_pbeg + 1)
12163 #define tokfix() (tokenbuf[tokidx]='\0')
12164 #define tok() tokenbuf
12165 #define toklen() tokidx
12166 #define toklast() (tokidx>0?tokenbuf[tokidx-1]:0)
12213 yyerror(
"invalid hex escape");
12220 #define tokcopy(n) memcpy(tokspace(n), lex_p - (n), (n))
12225 int string_literal,
int symbol_literal,
int regexp_literal)
12245 yyerror(
"invalid Unicode escape");
12248 if (codepoint > 0x10ffff) {
12249 yyerror(
"invalid Unicode codepoint (too large)");
12253 if (regexp_literal) {
12256 else if (codepoint >= 0x80) {
12258 if (string_literal)
tokaddmbc(codepoint, *encp);
12260 else if (string_literal) {
12263 }
while (string_literal && (
peek(
' ') ||
peek(
'\t')));
12266 yyerror(
"unterminated Unicode escape");
12270 if (regexp_literal) {
tokadd(
'}'); }
12276 yyerror(
"invalid Unicode escape");
12280 if (regexp_literal) {
12283 else if (codepoint >= 0x80) {
12285 if (string_literal)
tokaddmbc(codepoint, *encp);
12287 else if (string_literal) {
12295 #define ESCAPE_CONTROL 1
12296 #define ESCAPE_META 2
12305 switch (c =
nextc()) {
12330 case '0':
case '1':
case '2':
case '3':
12331 case '4':
case '5':
case '6':
case '7':
12339 if (numlen == 0)
return 0;
12350 if ((c =
nextc()) !=
'-') {
12354 if ((c =
nextc()) ==
'\\') {
12355 if (
peek(
'u'))
goto eof;
12356 return read_escape(flags|ESCAPE_META, encp) | 0x80;
12358 else if (c == -1 || !
ISASCII(c))
goto eof;
12360 return ((c & 0xff) | 0x80);
12364 if ((c =
nextc()) !=
'-') {
12370 if ((c =
nextc())==
'\\') {
12371 if (
peek(
'u'))
goto eof;
12376 else if (c == -1 || !
ISASCII(c))
goto eof;
12381 yyerror(
"Invalid escape character syntax");
12404 switch (c =
nextc()) {
12408 case '0':
case '1':
case '2':
case '3':
12409 case '4':
case '5':
case '6':
case '7':
12412 if (numlen == 0)
goto eof;
12421 if (numlen == 0)
return -1;
12428 if ((c =
nextc()) !=
'-') {
12438 if ((c =
nextc()) !=
'-') {
12446 if (flags & ESCAPE_CONTROL)
goto eof;
12450 if ((c =
nextc()) ==
'\\') {
12453 else if (c == -1)
goto eof;
12459 yyerror(
"Invalid escape character syntax");
12526 #define tokadd_mbchar(c) parser_tokadd_mbchar(parser, (c))
12532 case '$':
case '*':
case '+':
case '.':
12533 case '?':
case '^':
case '|':
12534 case ')':
case ']':
case '}':
case '>':
12543 int func,
int term,
int paren,
long *nest,
12547 int has_nonascii = 0;
12550 static const char mixed_msg[] =
"%s mixed within %s source";
12552 #define mixed_error(enc1, enc2) if (!errbuf) { \
12553 size_t len = sizeof(mixed_msg) - 4; \
12554 len += strlen(rb_enc_name(enc1)); \
12555 len += strlen(rb_enc_name(enc2)); \
12556 errbuf = ALLOCA_N(char, len); \
12557 snprintf(errbuf, len, mixed_msg, \
12558 rb_enc_name(enc1), \
12559 rb_enc_name(enc2)); \
12562 #define mixed_escape(beg, enc1, enc2) do { \
12563 const char *pos = lex_p; \
12565 mixed_error((enc1), (enc2)); \
12569 while ((c =
nextc()) != -1) {
12570 if (paren && c == paren) {
12573 else if (c == term) {
12574 if (!nest || !*nest) {
12582 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
12587 else if (c ==
'\\') {
12588 const char *beg =
lex_p - 1;
12593 if (func & STR_FUNC_EXPAND)
continue;
12602 if ((func & STR_FUNC_EXPAND) == 0) {
12609 if (has_nonascii && enc != *encp) {
12615 if (c == -1)
return -1;
12617 if ((func & STR_FUNC_EXPAND) == 0)
tokadd(
'\\');
12620 if (func & STR_FUNC_REGEXP) {
12628 if (has_nonascii && enc != *encp) {
12633 else if (func & STR_FUNC_EXPAND) {
12635 if (func & STR_FUNC_ESCAPE)
tokadd(
'\\');
12638 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
12641 else if (c != term && !(paren && c == paren)) {
12651 if (enc != *encp) {
12664 if (enc != *encp) {
12675 #define NEW_STRTERM(func, term, paren) \
12676 rb_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
12682 if (!
NIL_P(parser->delayed)) {
12683 ptrdiff_t len =
lex_p - parser->tokp;
12688 parser->tokp =
lex_p;
12692 #define flush_string_content(enc) ripper_flush_string_content(parser, (enc))
12694 #define flush_string_content(enc) ((void)(enc))
12701 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
12702 #define SPECIAL_PUNCT(idx) ( \
12703 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
12704 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
12705 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
12706 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
12707 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
12715 #undef SPECIAL_PUNCT
12721 if (c <= 0x20 || 0x7e < c)
return 0;
12722 return (ruby_global_name_punct_bits[(c - 0x20) / 32] >> (c % 32)) & 1;
12729 const char *p =
lex_p;
12735 if ((c = *p) ==
'-') {
12744 if ((c = *p) ==
'@') {
12764 int func = (int)quote->nd_func;
12776 if (c == term && !quote->nd_nest) {
12777 if (func & STR_FUNC_QWORDS) {
12778 quote->nd_func = -1;
12840 while ((c =
nextc()) != -1 && c != term) {
12888 line = here->nd_orig;
12902 const char *eos,
long len,
int indent)
12908 while (*p &&
ISSPACE(*p)) p++;
12911 if (n < 0)
return FALSE;
12912 if (n > 0 && p[len] !=
'\n') {
12913 if (p[len] !=
'\r')
return FALSE;
12914 if (n <= 1 || p[len+1] !=
'\n')
return FALSE;
12916 return strncmp(eos, p, len) == 0;
12919 #define NUM_SUFFIX_R (1<<0)
12920 #define NUM_SUFFIX_I (1<<1)
12921 #define NUM_SUFFIX_ALL 3
12927 const char *lastp =
lex_p;
12929 while ((c =
nextc()) != -1) {
12932 mask &= ~NUM_SUFFIX_I;
12939 mask &= ~NUM_SUFFIX_R;
12978 if (!
NIL_P(parser->delayed))
12981 ripper_dispatch_ignored_scan_event(parser,
tHEREDOC_END);
12984 #define dispatch_heredoc_end() ripper_dispatch_heredoc_end(parser)
12986 #define dispatch_heredoc_end() ((void)0)
12992 int c,
func, indent = 0;
12993 const char *eos, *p, *pend;
13002 if ((c =
nextc()) == -1) {
13006 if (
NIL_P(parser->delayed)) {
13011 ((len =
lex_p - parser->tokp) > 0 &&
13012 (str =
STR_NEW3(parser->tokp, len, enc, func), 1))) {
13034 switch (pend[-1]) {
13036 if (--pend == p || pend[-1] !=
'\r') {
13050 if (
nextc() == -1) {
13068 if (parser->
eofp)
goto error;
13078 if ((c =
nextc()) == -1)
goto error;
13095 rb_warning0(
"ambiguous first argument; put parentheses or even spaces");
13100 #define arg_ambiguous() (arg_ambiguous_gen(parser), 1)
13107 yyerror(
"formal argument must be local variable");
13125 if (len > 5 && name[nlen = len - 5] ==
'-') {
13126 if (
rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
13129 if (len > 4 && name[nlen = len - 4] ==
'-') {
13132 if (
rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
13133 !(len == 8 &&
rb_memcicmp(name,
"utf8-mac", len) == 0))
13148 excargs[1] =
rb_sprintf(
"unknown encoding name: %s", name);
13165 for (i = 0; i < n; ++i) {
13203 case 't':
case 'T':
13209 case 'f':
case 'F':
13232 static const char *
13240 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
13241 return str + i + 1;
13246 if (i + 1 >= len)
return 0;
13247 if (str[i+1] !=
'-') {
13250 else if (str[i-1] !=
'-') {
13254 return str + i + 2;
13269 const char *beg, *end, *vbeg, *vend;
13270 #define str_copy(_s, _p, _n) ((_s) \
13271 ? (void)(rb_str_resize((_s), (_n)), \
13272 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
13273 : (void)((_s) = STR_NEW((_p), (_n))))
13275 if (len <= 7)
return FALSE;
13279 len = end - beg - 3;
13290 for (; len > 0 && *str; str++, --len) {
13292 case '\'':
case '"':
case ':':
case ';':
13297 for (beg = str; len > 0; str++, --len) {
13299 case '\'':
case '"':
case ':':
case ';':
13307 for (end = str; len > 0 &&
ISSPACE(*str); str++, --len);
13309 if (*str !=
':')
continue;
13311 do str++;
while (--len > 0 &&
ISSPACE(*str));
13314 for (vbeg = ++str; --len > 0 && *str !=
'"'; str++) {
13315 if (*str ==
'\\') {
13327 for (vbeg = str; len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --len, str++);
13330 while (len > 0 && (*str ==
';' ||
ISSPACE(*str))) --len, str++;
13335 for (i = 0; i < n; ++i) {
13336 if (s[i] ==
'-') s[i] =
'_';
13343 n = (*p->
length)(parser, vbeg, n);
13349 }
while (++p < magic_comments +
numberof(magic_comments));
13363 const char *beg = str;
13367 if (send - str <= 6)
return;
13369 case 'C':
case 'c': str += 6;
continue;
13370 case 'O':
case 'o': str += 5;
continue;
13371 case 'D':
case 'd': str += 4;
continue;
13372 case 'I':
case 'i': str += 3;
continue;
13373 case 'N':
case 'n': str += 2;
continue;
13374 case 'G':
case 'g': str += 1;
continue;
13375 case '=':
case ':':
13388 if (++str >= send)
return;
13391 if (*str !=
'=' && *str !=
':')
return;
13396 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
13412 (
unsigned char)
lex_p[0] == 0xbb &&
13413 (
unsigned char)
lex_p[1] == 0xbf) {
13427 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
13428 #define IS_END() IS_lex_state(EXPR_END_ANY)
13429 #define IS_BEG() IS_lex_state(EXPR_BEG_ANY)
13430 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
13431 #define IS_LABEL_POSSIBLE() ((IS_lex_state(EXPR_BEG | EXPR_ENDFN) && !cmd_state) || IS_ARG())
13432 #define IS_LABEL_SUFFIX(n) (peek_n(':',(n)) && !peek_n(':', (n)+1))
13433 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
13436 #define ambiguous_operator(op, syn) ( \
13437 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
13438 rb_warning0("even though it seems like "syn""))
13440 #define ambiguous_operator(op, syn) dispatch2(operator_ambiguous, ripper_intern(op), rb_str_new_cstr(syn))
13442 #define warn_balanced(op, syn) ((void) \
13443 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN|EXPR_ENDARG) && \
13444 space_seen && !ISSPACE(c) && \
13445 (ambiguous_operator(op, syn), 0)))
13451 int space_seen = 0;
13457 int fallthru =
FALSE;
13483 switch (c =
nextc()) {
13491 case ' ':
case '\t':
case '\f':
case '\r':
13495 while ((c =
nextc())) {
13497 case ' ':
case '\t':
case '\f':
case '\r':
13506 ripper_dispatch_scan_event(parser,
tSP);
13519 ripper_dispatch_scan_event(parser,
tCOMMENT);
13524 if (
IS_lex_state(EXPR_BEG | EXPR_VALUE | EXPR_CLASS | EXPR_FNAME | EXPR_DOT | EXPR_LABELARG)) {
13532 goto normal_newline;
13536 while ((c =
nextc())) {
13538 case ' ':
case '\t':
case '\f':
case '\r':
13543 if ((c =
nextc()) !=
'.') {
13556 parser->tokp =
lex_p;
13559 goto normal_newline;
13568 if ((c =
nextc()) ==
'*') {
13569 if ((c =
nextc()) ==
'=') {
13576 rb_warning0(
"`**' interpreted as argument prefix");
13595 rb_warning0(
"`*' interpreted as argument prefix");
13634 int first_p =
TRUE;
13643 ripper_dispatch_scan_event(parser,
tEMBDOC);
13652 if (c !=
'=')
continue;
13653 if (strncmp(
lex_p,
"end", 3) == 0 &&
13667 if ((c =
nextc()) ==
'=') {
13668 if ((c =
nextc()) ==
'=') {
13677 else if (c ==
'>') {
13689 (!
IS_ARG() || space_seen)) {
13691 if (token)
return token;
13702 if ((c =
nextc()) ==
'>') {
13709 if ((c =
nextc()) ==
'=') {
13723 if ((c =
nextc()) ==
'=') {
13727 if ((c =
nextc()) ==
'=') {
13795 rb_warnI(
"invalid character syntax; use ?\\%c", c2);
13812 else if (c ==
'\\') {
13841 if ((c =
nextc()) ==
'&') {
13843 if ((c =
nextc()) ==
'=') {
13851 else if (c ==
'=') {
13858 rb_warning0(
"`&' interpreted as argument prefix");
13872 if ((c =
nextc()) ==
'|') {
13874 if ((c =
nextc()) ==
'=') {
13954 if ((c =
nextc()) ==
'.') {
13955 if ((c =
nextc()) ==
'.') {
13963 yyerror(
"no .<digit> floating literal anymore; put 0 before dot");
13969 case '0':
case '1':
case '2':
case '3':
case '4':
13970 case '5':
case '6':
case '7':
case '8':
case '9':
13972 int is_float, seen_point, seen_e, nondigit;
13975 is_float = seen_point = seen_e = nondigit = 0;
13978 if (c ==
'-' || c ==
'+') {
13983 #define no_digits() do {yyerror("numeric literal without digits"); return 0;} while (0)
13986 if (c ==
'x' || c ==
'X') {
13992 if (nondigit)
break;
13999 }
while ((c =
nextc()) != -1);
14003 if (
toklen() == start) {
14006 else if (nondigit)
goto trailing_uc;
14010 if (c ==
'b' || c ==
'B') {
14013 if (c ==
'0' || c ==
'1') {
14016 if (nondigit)
break;
14020 if (c !=
'0' && c !=
'1')
break;
14023 }
while ((c =
nextc()) != -1);
14027 if (
toklen() == start) {
14030 else if (nondigit)
goto trailing_uc;
14034 if (c ==
'd' || c ==
'D') {
14040 if (nondigit)
break;
14047 }
while ((c =
nextc()) != -1);
14051 if (
toklen() == start) {
14054 else if (nondigit)
goto trailing_uc;
14062 if (c ==
'o' || c ==
'O') {
14065 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
14069 if (c >=
'0' && c <=
'7') {
14074 if (nondigit)
break;
14078 if (c < '0' || c >
'9')
break;
14079 if (c >
'7')
goto invalid_octal;
14082 }
while ((c =
nextc()) != -1);
14086 if (nondigit)
goto trailing_uc;
14095 if (c >
'7' && c <=
'9') {
14097 yyerror(
"Invalid octal digit");
14099 else if (c ==
'.' || c ==
'e' || c ==
'E') {
14111 case '0':
case '1':
case '2':
case '3':
case '4':
14112 case '5':
case '6':
case '7':
case '8':
case '9':
14118 if (nondigit)
goto trailing_uc;
14119 if (seen_point || seen_e) {
14124 if (c0 == -1 || !
ISDIGIT(c0)) {
14149 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
14158 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
14162 if (nondigit)
goto decode_num;
14177 snprintf(tmp,
sizeof(tmp),
"trailing `%c' in number", nondigit);
14187 char *point = &
tok()[seen_point];
14188 size_t fraclen =
toklen()-seen_point-1;
14190 memmove(point, point+1, fraclen+1);
14196 if (
errno == ERANGE) {
14258 if ((c =
nextc()) ==
'=') {
14274 if ((c =
nextc()) ==
'=') {
14294 if ((c =
nextc()) !=
'@') {
14321 if ((c =
nextc()) ==
']') {
14322 if ((c =
nextc()) ==
'=') {
14334 else if (
IS_ARG() && space_seen) {
14369 ripper_dispatch_scan_event(parser,
tSP);
14383 if (c == -1 || !
ISALNUM(c)) {
14390 yyerror(
"unknown type of %string");
14394 if (c == -1 || term == -1) {
14399 if (term ==
'(') term =
')';
14400 else if (term ==
'[') term =
']';
14401 else if (term ==
'{') term =
'}';
14402 else if (term ==
'<') term =
'>';
14452 yyerror(
"unknown type of %string");
14456 if ((c =
nextc()) ==
'=') {
14532 case '1':
case '2':
case '3':
14533 case '4':
case '5':
case '6':
14534 case '7':
case '8':
case '9':
14539 }
while (c != -1 &&
ISDIGIT(c));
14585 ripper_dispatch_scan_event(parser,
k__END__);
14608 switch (
tok()[0]) {
14609 case '@':
case '$':
14613 if ((c ==
'!' || c ==
'?') && !
peek(
'=')) {
14626 switch (
tok()[0]) {
14633 if (
tok()[1] ==
'@')
14702 if (kw->
id[0] != kw->
id[1])
14753 if (!
NIL_P(parser->delayed)) {
14754 ripper_dispatch_delayed_token(parser, t);
14758 ripper_dispatch_scan_event(parser, t);
14800 if (orig == (
NODE*)1)
return;
14809 #define parser_warning(node, mesg) parser_warning(parser, (node), (mesg))
14816 #define parser_warn(node, mesg) parser_warn(parser, (node), (mesg))
14823 if (tail == 0)
return head;
14825 if (h == 0)
return tail;
14864 tail->nd_end =
tail;
14866 end->nd_next =
tail;
14867 h->nd_end = tail->nd_end;
14877 if (list == 0)
return NEW_LIST(item);
14878 if (list->nd_next) {
14879 last = list->nd_next->nd_end;
14885 list->nd_alen += 1;
14887 list->nd_next->nd_end = last->nd_next;
14897 if (head->nd_next) {
14898 last = head->nd_next->nd_end;
14904 head->nd_alen += tail->nd_alen;
14905 last->nd_next =
tail;
14906 if (tail->nd_next) {
14907 head->nd_next->nd_end = tail->nd_next->nd_end;
14910 head->nd_next->nd_end =
tail;
14919 if (
NIL_P(tail))
return 1;
14940 if (!head)
return tail;
14941 if (!tail)
return head;
14951 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
14954 lit = headlast->nd_lit;
14957 lit = head->nd_lit;
14977 tail->nd_lit = head->nd_lit;
14981 else if (
NIL_P(tail->nd_lit)) {
14983 head->nd_alen += tail->nd_alen - 1;
14984 head->nd_next->nd_end->nd_next = tail->nd_next;
14985 head->nd_next->nd_end = tail->nd_next->nd_end;
14988 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
14990 lit = headlast->nd_lit;
14993 tail->nd_lit =
Qnil;
14998 tail->nd_head =
NEW_STR(tail->nd_lit);
15144 static const char *
15147 static const char names[][12] = {
15148 "EXPR_BEG",
"EXPR_END",
"EXPR_ENDARG",
"EXPR_ENDFN",
"EXPR_ARG",
15149 "EXPR_CMDARG",
"EXPR_MID",
"EXPR_FNAME",
"EXPR_DOT",
"EXPR_CLASS",
15154 return names[
ffs(state)];
15169 # define assignable_result(x) get_value(lhs)
15170 # define parser_yyerror(parser, x) dispatch1(assign_error, lhs)
15172 # define assignable_result(x) (x)
15177 yyerror(
"Can't change the value of self");
15180 yyerror(
"Can't assign to nil");
15183 yyerror(
"Can't assign to true");
15186 yyerror(
"Can't assign to false");
15189 yyerror(
"Can't assign to __FILE__");
15192 yyerror(
"Can't assign to __LINE__");
15195 yyerror(
"Can't assign to __ENCODING__");
15229 yyerror(
"dynamic constant assignment");
15238 #undef assignable_result
15239 #undef parser_yyerror
15246 if (name == idUScore)
return 1;
15253 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
15261 yyerror(
"duplicated argument name");
15274 yyerror(
"duplicated argument name");
15339 int scope = (int)(
id & ID_SCOPE_MASK);
15348 id_type_names[scope],
ID2SYM(
id));
15352 id &= ~ID_SCOPE_MASK;
15381 if (!node2)
return node1;
15384 if (node1->nd_head)
15385 node1->nd_head =
arg_concat(node1->nd_head, node2);
15397 node1->nd_body =
list_concat(node1->nd_body, node2);
15406 if (!node1)
return NEW_LIST(node2);
15411 node1->nd_head =
arg_append(node1->nd_head, node2);
15432 if (!lhs)
return 0;
15444 lhs->nd_value = rhs;
15449 lhs->nd_args =
arg_append(lhs->nd_args, rhs);
15475 if (!cond)
yyerror(
"void value expression");
15480 while (node->nd_next) {
15481 node = node->nd_next;
15483 node = node->nd_head;
15487 node = node->nd_body;
15491 if (!node->nd_body) {
15492 node = node->nd_else;
15495 else if (!node->nd_else) {
15496 node = node->nd_body;
15500 node = node->nd_else;
15506 node = node->nd_2nd;
15520 const char *useless = 0;
15527 switch (node->nd_mid) {
15558 useless =
"a variable";
15561 useless =
"a constant";
15568 useless =
"a literal";
15593 useless =
"defined?";
15601 rb_warnS(
"possibly useless use of %s in void context", useless);
15614 if (!node->nd_next)
return;
15616 node = node->nd_next;
15623 NODE **n = &node, *n1 = node;
15625 *n = n1 = n1->nd_body;
15633 NODE **n = &node, *n1 = node;
15635 *n = n1 = n1->nd_body;
15643 NODE *node = *body;
15649 #define subnodes(n1, n2) \
15650 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
15651 (!node->n2) ? (body = &node->n1, 1) : \
15652 (reduce_nodes(&node->n1), body = &node->n2, 1))
15662 *body = node = node->nd_stts;
15666 *body = node = node->nd_body;
15670 body = &node->nd_end->nd_head;
15676 body = &node->nd_body;
15685 if (node->nd_else) {
15686 body = &node->nd_resq;
15704 if (!node)
return 1;
15707 if (!(node = node->nd_head))
break;
15711 }
while ((node = node->nd_next) != 0);
15730 yyerror(
"multiple assignment in conditional");
15744 if (!node->nd_value)
return 1;
15747 parser_warn(node->nd_value,
"found = in conditional, should be ==");
15769 for (node = *rootnode; node; node = next) {
15773 next = node->nd_next;
15774 head = node->nd_head;
15777 switch (type =
nd_type(head)) {
15780 val =
rb_range_new(head->nd_beg->nd_lit, head->nd_end->nd_lit,
15785 head->nd_lit =
val;
15800 if (node == 0)
return 0;
15808 return cond0(parser, node);
15814 if (!node)
return 1;
15835 if (node == 0)
return 0;
15842 rb_warn0(
"string literal in condition");
15852 node->nd_1st =
cond0(parser, node->nd_1st);
15853 node->nd_2nd =
cond0(parser, node->nd_2nd);
15858 node->nd_beg =
range_op(parser, node->nd_beg);
15859 node->nd_end =
range_op(parser, node->nd_end);
15892 if (node == 0)
return 0;
15893 return cond0(parser, node);
15901 NODE *node = left, *second;
15902 while ((second = node->nd_2nd) != 0 && (
enum node_type)
nd_type(second) == type) {
15905 node->nd_2nd =
NEW_NODE(type, second, right, 0);
15908 return NEW_NODE(type, left, right, 0);
15925 if (node->nd_next == 0) {
15926 node = node->nd_head;
15947 switch (
TYPE(node->nd_lit)) {
15969 rb_bug(
"unknown literal type passed to negate_lit");
15979 node2->nd_head = node1;
15993 args->
pre_init = m ? m->nd_next : 0;
16030 kw_rest_arg->nd_cflag = check;
16052 lit = node->nd_lit;
16071 ID vid = lhs->nd_vid;
16073 lhs->nd_value = rhs;
16076 asgn->nd_aid = vid;
16079 else if (op ==
tANDOP) {
16080 lhs->nd_value = rhs;
16102 else if (op ==
tANDOP) {
16118 else if (op ==
tANDOP) {
16134 return dispatch3(opassign, lhs, op, rhs);
16140 VALUE recv = dispatch3(field, lhs, type, attr);
16141 return dispatch3(opassign, recv, op, rhs);
16151 if (!local->
used)
return;
16155 if (cnt != local->
vars->
pos) {
16156 rb_bug(
"local->used->pos != local->vars->pos");
16158 for (i = 0; i <
cnt; ++i) {
16159 if (!v[i] || (u[i] &
LVAR_USED))
continue;
16174 local->
used = !(inherit_dvars &&
16203 int cnt = cnt_args + cnt_vars;
16207 if (cnt <= 0)
return 0;
16211 for (i = 0, j = cnt_args+1; i < cnt_vars; ++i) {
16217 if (--j < cnt)
REALLOC_N(buf,
ID, (cnt = j) + 1);
16243 struct vtable *vars, *args, *used;
16245 vars =
lvtbl->vars;
16246 args =
lvtbl->args;
16247 used =
lvtbl->used;
16252 if (used) used = used->
prev;
16268 static const struct vtable *
16276 return lvtbl->args;
16284 if ((tmp =
lvtbl->used) != 0) {
16300 while (
lvtbl->args != lvargs) {
16302 if (!
lvtbl->args) {
16320 struct vtable *vars, *args, *used;
16323 args =
lvtbl->args;
16324 vars =
lvtbl->vars;
16325 used =
lvtbl->used;
16338 if (used) used = used->
prev;
16391 "regexp encoding option '%c' differs from source encoding '%s'",
16419 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
16424 long len = name_end -
name;
16425 const char *s = (
const char *)name;
16442 rb_warningS(
"named capture conflicts a local variable - %s",
16522 NODE *scope = node;
16525 if (!node)
return node;
16529 node = node->nd_body;
16533 node = node->nd_body;
16540 prelude->nd_body = node;
16541 scope->nd_body = prelude;
16544 scope->nd_body = node;
16554 NODE *scope = node;
16557 if (!node)
return node;
16561 node = node->nd_body;
16565 node = node->nd_body;
16581 prelude->nd_body = node;
16582 scope->nd_body = prelude;
16585 scope->nd_body = node;
16591 static const struct {
16616 #define op_tbl_count numberof(op_tbl)
16618 #ifndef ENABLE_SELECTOR_NAMESPACE
16619 #define ENABLE_SELECTOR_NAMESPACE 0
16626 #if ENABLE_SELECTOR_NAMESPACE
16639 #if ENABLE_SELECTOR_NAMESPACE
16646 ivar2_cmp(
struct ivar2_key *key1,
struct ivar2_key *key2)
16648 if (key1->id == key2->id && key1->klass == key2->klass) {
16655 ivar2_hash(
struct ivar2_key *
key)
16657 return (key->id << 8) ^ (key->klass >> 2);
16671 #if ENABLE_SELECTOR_NAMESPACE
16679 (void)lex_state_name(-1);
16712 if (m >= e)
return 0;
16716 else if (*m ==
'-') {
16717 if (++m >= e)
return 0;
16730 return m == e ? mb + 1 : 0;
16745 #define IDSET_ATTRSET_FOR_SYNTAX ((1U<<ID_LOCAL)|(1U<<ID_CONST))
16746 #define IDSET_ATTRSET_FOR_INTERN (~(~0U<<ID_SCOPE_MASK) & ~(1U<<ID_ATTRSET))
16751 const char *m =
name;
16752 const char *e = m + len;
16755 if (!m || len <= 0)
return -1;
16775 case '<': ++m;
break;
16776 case '=':
if (*++m ==
'>') ++m;
break;
16783 case '>':
case '=': ++m;
break;
16789 case '~': ++m;
break;
16790 case '=':
if (*++m ==
'=') ++m;
break;
16791 default:
return -1;
16796 if (*++m ==
'*') ++m;
16799 case '+':
case '-':
16800 if (*++m ==
'@') ++m;
16803 case '|':
case '^':
case '&':
case '/':
case '%':
case '~':
case '`':
16808 if (*++m !=
']')
return -1;
16809 if (*++m ==
'=') ++m;
16813 if (len == 1)
return ID_JUNK;
16815 case '=':
case '~': ++m;
break;
16816 default:
return -1;
16828 case '!':
case '?':
16834 if (!(allowed_attrset & (1
U << type)))
return -1;
16841 return m == e ? type : -1;
16908 fake_str->as.heap.len = len;
16909 fake_str->as.heap.ptr = (
char *)name;
16910 fake_str->as.heap.aux.capa = len;
16911 return (
VALUE)fake_str;
16933 const char *
name, *m, *e;
16955 if (len < 2)
goto junk;
16964 if (len < 3)
goto junk;
16969 if (len < 2)
goto junk;
16985 if (*
op_tbl[i].name == *m &&
16986 strcmp(
op_tbl[i].name, m) == 0) {
16994 if (name[last] ==
'=') {
16996 if (last > 1 && name[last-1] ==
'=')
17006 else if (
id == 0) {
17078 name[0] = (char)
id;
17105 if (
RBASIC(str)->klass == 0)
17111 ID id_stem = (
id & ~ID_SCOPE_MASK);
17128 if (
RBASIC(str)->klass == 0)
17141 if (!str)
return 0;
17235 VALUE name = *namep;
17286 fake_str.
as.
heap.len = len - 1;
17386 parser->delayed =
Qnil;
17388 parser->result =
Qnil;
17389 parser->parsing_thread =
Qnil;
17390 parser->toplevel_p =
TRUE;
17399 #define parser_mark ripper_parser_mark
17400 #define parser_free ripper_parser_free
17440 prev = local->
prev;
17451 size_t size =
sizeof(*p);
17453 if (!ptr)
return 0;
17456 size +=
sizeof(*local);
17477 #undef rb_reserved_word
17561 yydebug =
RTEST(flag);
17566 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
17567 #define NEWHEAP() rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser->heap, 0)
17568 #define ADD2HEAP(n, c, p) ((parser->heap = (n))->u1.node = (p), \
17569 (n)->u3.cnt = (c), (p))
17586 void *ptr =
xcalloc(nelem, size);
17597 if (ptr && (n = parser->
heap) !=
NULL) {
17599 if (n->
u1.
node == ptr) {
17616 while ((n = *prev) !=
NULL) {
17617 if (n->u1.node == ptr) {
17630 #ifdef RIPPER_DEBUG
17631 extern int rb_is_pointer_to_heap(
VALUE);
17637 if (x ==
Qfalse)
return x;
17638 if (x ==
Qtrue)
return x;
17639 if (x ==
Qnil)
return x;
17644 if (!rb_is_pointer_to_heap(x))
17659 return ((
NODE *)x)->nd_rval;
17668 #define validate(x) ((x) = get_value(x))
17680 return rb_funcall(parser->value, mid, 1, a);
17688 return rb_funcall(parser->value, mid, 2, a, b);
17697 return rb_funcall(parser->value, mid, 3, a, b, c);
17707 return rb_funcall(parser->value, mid, 4, a, b, c, d);
17718 return rb_funcall(parser->value, mid, 5, a, b, c, d, e);
17731 return rb_funcall(parser->value, mid, 7, a, b, c, d, e, f, g);
17734 static const struct kw_assoc {
17737 } keyword_to_name[] = {
17790 keyword_id_to_str(
ID id)
17792 const struct kw_assoc *a;
17794 for (a = keyword_to_name; a->id; a++) {
17801 #undef ripper_id2sym
17803 ripper_id2sym(
ID id)
17813 if ((name = keyword_id_to_str(
id))) {
17826 rb_bug(
"cannot convert ID to string: %ld", (
unsigned long)
id);
17834 ripper_get_id(
VALUE v)
17844 ripper_get_value(
VALUE v)
17851 return nd->nd_rval;
17855 ripper_compile_error(
struct parser_params *parser,
const char *fmt, ...)
17860 va_start(args, fmt);
17867 ripper_warn0(
struct parser_params *parser,
const char *fmt)
17873 ripper_warnI(
struct parser_params *parser,
const char *fmt,
int a)
17880 ripper_warnS(
struct parser_params *parser,
const char *fmt,
const char *str)
17887 ripper_warning0(
struct parser_params *parser,
const char *fmt)
17893 ripper_warningS(
struct parser_params *parser,
const char *fmt,
const char *str)
17906 ripper_s_allocate(
VALUE klass)
17918 #define ripper_initialized_p(r) ((r)->parser_lex_input != 0)
17934 VALUE src, fname, lineno;
17937 rb_scan_args(argc, argv,
"12", &src, &fname, &lineno);
17947 if (
NIL_P(fname)) {
17962 struct ripper_args {
17969 ripper_parse0(
VALUE parser_v)
17975 ripper_yyparse((
void*)parser);
17976 return parser->result;
17980 ripper_ensure(
VALUE parser_v)
17985 parser->parsing_thread =
Qnil;
17996 ripper_parse(
VALUE self)
18001 if (!ripper_initialized_p(parser)) {
18004 if (!
NIL_P(parser->parsing_thread)) {
18011 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
18013 return parser->result;
18024 ripper_column(
VALUE self)
18030 if (!ripper_initialized_p(parser)) {
18033 if (
NIL_P(parser->parsing_thread))
return Qnil;
18045 ripper_filename(
VALUE self)
18050 if (!ripper_initialized_p(parser)) {
18064 ripper_lineno(
VALUE self)
18069 if (!ripper_initialized_p(parser)) {
18072 if (
NIL_P(parser->parsing_thread))
return Qnil;
18076 #ifdef RIPPER_DEBUG
18112 InitVM_ripper(
void)
18129 #ifdef RIPPER_DEBUG
#define STRNCASECMP(s1, s2, n)
RUBY_EXTERN VALUE rb_cString
void rb_define_global_const(const char *, VALUE)
char * parser_ruby_sourcefile
#define RBASIC_CLEAR_CLASS(obj)
static const char id_type_names[][9]
static NODE * call_bin_op_gen(struct parser_params *, NODE *, ID, NODE *)
struct local_vars * parser_lvtbl
static YYSIZE_T yytnamerr(char *yyres, const char *yystr)
VALUE rb_ary_unshift(VALUE ary, VALUE item)
static ID ripper_token2eventid(int tok)
static ID internal_id_gen(struct parser_params *)
int rb_enc_codelen(int c, rb_encoding *enc)
#define NEW_OP_ASGN_AND(i, val)
#define YY_REDUCE_PRINT(Rule)
#define shadowing_lvar(name)
#define MBCLEN_CHARFOUND_P(ret)
static void arg_ambiguous_gen(struct parser_params *parser)
static long parser_encode_length(struct parser_params *parser, const char *name, long len)
#define RE_OPTION_ENCODING_IDX(o)
#define NEW_OP_ASGN1(p, id, a)
int onig_foreach_name(regex_t *reg, int(*func)(const UChar *, const UChar *, int, int *, regex_t *, void *), void *arg)
void * rb_parser_malloc(struct parser_params *parser, size_t size)
static void Init_id(void)
void rb_bug(const char *fmt,...)
#define mixed_escape(beg, enc1, enc2)
static const yytype_uint8 yyr2[]
int rb_is_local_name(VALUE name)
static NODE * attrset_gen(struct parser_params *, NODE *, ID)
void rb_enc_copy(VALUE obj1, VALUE obj2)
#define RUBY_TYPED_FREE_IMMEDIATELY
static const struct kwtable * reserved_word(const char *, unsigned int)
static VALUE setup_fake_str(struct RString *fake_str, const char *name, long len)
int rb_is_class_name(VALUE name)
#define rb_gc_mark_locations(start, end)
size_t strlen(const char *)
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
int rb_is_attrset_name(VALUE name)
VALUE parser_lex_nextline
VALUE rb_make_exception(int argc, VALUE *argv)
#define scan_oct(s, l, e)
static NODE * negate_lit(NODE *)
#define dispatch_heredoc_end()
static NODE * node_assign_gen(struct parser_params *, NODE *, NODE *)
int parser_ruby__end__seen
static void local_push_gen(struct parser_params *, int)
static int vtable_size(const struct vtable *tbl)
#define formal_argument(id)
#define set_number_literal(v, t, f)
const struct kwtable * rb_reserved_word(const char *str, unsigned int len)
VALUE rb_range_new(VALUE, VALUE, int)
#define YY_STACK_PRINT(Bottom, Top)
static NODE * arg_concat_gen(struct parser_params *, NODE *, NODE *)
static const struct @132 op_tbl[]
ID rb_check_id(volatile VALUE *namep)
Returns ID for the given name if it is interned already, or 0.
static NODE * evstr2dstr_gen(struct parser_params *, NODE *)
static void yy_reduce_print(YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
static int nodeline(NODE *node)
static int token_info_has_nonspaces(struct parser_params *parser, const char *token)
static NODE * arg_blk_pass(NODE *, NODE *)
#define IS_LABEL_POSSIBLE()
#define is_asgn_or_id(id)
static void reg_fragment_setenc_gen(struct parser_params *, VALUE, int)
int parser_compile_for_eval
int parser_token_info_enabled
#define parser_precise_mbclen()
static ID formal_argument_gen(struct parser_params *, ID)
#define rb_usascii_str_new2
static int parser_read_escape(struct parser_params *parser, int flags, rb_encoding **encp)
static VALUE reg_compile_gen(struct parser_params *, VALUE, int)
static ID register_symid(ID, const char *, long, rb_encoding *)
unsigned short int yytype_uint16
VALUE rb_str_cat(VALUE, const char *, long)
ID rb_intern_str(VALUE str)
VALUE rb_reg_check_preprocess(VALUE)
#define RE_OPTION_ENCODING(e)
NODE * rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
#define set_yylval_str(x)
static const yytype_uint16 yyr1[]
#define set_yylval_literal(x)
#define TypedData_Wrap_Struct(klass, data_type, sval)
#define yytable_value_is_error(yytable_value)
#define IDSET_ATTRSET_FOR_SYNTAX
#define ADD2HEAP(n, c, p)
VALUE rb_parser_encoding(VALUE vparser)
#define TypedData_Get_Struct(obj, type, data_type, sval)
#define literal_concat(h, t)
static void block_dup_check_gen(struct parser_params *, NODE *, NODE *)
stack_type parser_cmdarg_stack
static int lvar_defined_gen(struct parser_params *, ID)
VALUE rb_suppress_tracing(VALUE(*func)(VALUE), VALUE arg)
VALUE rb_enc_from_encoding(rb_encoding *encoding)
int rb_is_method_name(VALUE name)
static ID * local_tbl_gen(struct parser_params *)
#define new_defined(expr)
VALUE rb_ary_push(VALUE ary, VALUE item)
ID rb_intern3(const char *name, long len, rb_encoding *enc)
#define NEW_CLASS(n, b, s)
NODE * rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
static int parser_yylex(struct parser_params *parser)
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
#define new_args_tail(k, kr, b)
static NODE * remove_begin_all(NODE *)
static NODE * new_evstr_gen(struct parser_params *, NODE *)
VALUE op_sym[tLAST_OP_ID]
int rb_is_junk_name(VALUE name)
static int parser_regx_options(struct parser_params *)
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
static VALUE coverage(VALUE fname, int n)
static int rb_enc_symname_type(const char *name, long len, rb_encoding *enc, unsigned int allowed_attrset)
static void set_file_encoding(struct parser_params *parser, const char *str, const char *send)
static NODE * newline_node(NODE *)
int rb_enc_str_coderange(VALUE)
static void ripper_init_eventids1_table(VALUE self)
void rb_raise(VALUE exc, const char *fmt,...)
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
static const yytype_uint16 yyprhs[]
#define RSTRING_GETMEM(str, ptrvar, lenvar)
#define block_dup_check(n1, n2)
VALUE rb_enc_associate(VALUE obj, rb_encoding *enc)
static void warn_unused_var(struct parser_params *parser, struct local_vars *local)
const rb_data_type_t * parent
void rb_compile_warn(const char *file, int line, const char *fmt,...)
#define attrset(node, id)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
#define new_const_op_assign(lhs, op, rhs)
static NODE * assignable_gen(struct parser_params *, ID, NODE *)
int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc)
st_index_t rb_str_hash(VALUE)
#define nd_set_type(n, t)
static size_t parser_memsize(const void *ptr)
static NODE * new_op_assign_gen(struct parser_params *parser, NODE *lhs, ID op, NODE *rhs)
static void fixpos(NODE *, NODE *)
void rb_gc_mark(VALUE ptr)
static NODE * gettable_gen(struct parser_params *, ID)
#define rb_enc_islower(c, enc)
static struct symbols global_symbols
static NODE * cond0(struct parser_params *, NODE *)
void rb_gc_mark_parser(void)
#define reg_compile(str, options)
static int local_var_gen(struct parser_params *, ID)
#define str_copy(_s, _p, _n)
static NODE * match_op_gen(struct parser_params *, NODE *, NODE *)
static void yy_stack_print(yytype_int16 *yybottom, yytype_int16 *yytop)
#define NEW_IASGN(v, val)
rb_encoding * rb_utf8_encoding(void)
static int rb_str_symname_type(VALUE name, unsigned int allowed_attrset)
static int dvar_defined_gen(struct parser_params *, ID, int)
static NODE * new_yield_gen(struct parser_params *, NODE *)
#define RE_OPTION_ENCODING_NONE(o)
static char * parser_tokspace(struct parser_params *parser, int n)
int rb_enc_symname2_p(const char *name, long len, rb_encoding *enc)
#define tokadd_string(f, t, p, n, e)
VALUE rb_str_buf_append(VALUE, VALUE)
#define number_literal_suffix(f)
#define is_identchar(p, e, enc)
#define RUBY_DTRACE_PARSE_BEGIN(arg0, arg1)
VALUE parser_ruby_sourcefile_string
static void parser_heredoc_restore(struct parser_params *parser, NODE *here)
static NODE * remove_begin(NODE *)
NODE * rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
#define ENC_CODERANGE_7BIT
const char * rb_obj_classname(VALUE)
static int parser_set_integer_literal(struct parser_params *parser, VALUE v, int suffix)
void rb_gc_force_recycle(VALUE p)
RUBY_EXTERN void * memmove(void *, const void *, size_t)
static const yytype_int16 yytable[]
NODE * parser_deferred_nodes
VALUE rb_str_buf_cat(VALUE, const char *, long)
RUBY_SYMBOL_EXPORT_BEGIN typedef unsigned long st_data_t
void rb_name_error(ID id, const char *fmt,...)
static int dyna_in_block_gen(struct parser_params *)
static const rb_data_type_t parser_data_type
#define logop(type, node1, node2)
static rb_encoding * must_be_ascii_compatible(VALUE s)
static void dyna_pop_1(struct parser_params *parser)
void rb_exc_raise(VALUE mesg)
static NODE * new_const_op_assign_gen(struct parser_params *parser, NODE *lhs, ID op, NODE *rhs)
#define parser_warn(node, mesg)
#define RBASIC_SET_CLASS_RAW(obj, cls)
#define RUBY_DTRACE_PARSE_END(arg0, arg1)
#define RB_TYPE_P(obj, type)
static void warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
int st_lookup(st_table *, st_data_t, st_data_t *)
#define NEW_ATTRASGN(r, m, a)
#define MEMZERO(p, type, n)
int rb_is_instance_name(VALUE name)
static void parser_free(void *ptr)
enum lex_state_e parser_lex_state
int rb_is_local_id(ID id)
VALUE parser_lex_lastline
void * rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
static void parser_initialize(struct parser_params *parser)
#define scan_hex(s, l, e)
static void parser_set_encode(struct parser_params *parser, const char *name)
#define lex_goto_eol(parser)
#define rb_rational_raw1(x)
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
void rb_compile_error_append(const char *fmt,...)
void rb_compile_error_with_enc(const char *file, int line, void *enc, const char *fmt,...)
VALUE rb_parser_get_yydebug(VALUE self)
#define NEW_PRELUDE(p, b)
RUBY_EXTERN VALUE rb_cObject
#define match_op(node1, node2)
static enum node_type nodetype(NODE *node)
#define NEW_STRTERM(func, term, paren)
static const struct magic_comment magic_comments[]
#define rb_enc_isascii(c, enc)
#define reg_named_capture_assign(regexp, match)
struct parser_params * parser
static void magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
static int parser_number_literal_suffix(struct parser_params *parser, int mask)
void * rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
VALUE rb_get_coverages(void)
static int e_option_supplied(struct parser_params *parser)
static struct vtable * vtable_alloc(struct vtable *prev)
#define token_info_push(token)
VALUE rb_obj_as_string(VALUE)
#define NEW_ARGSPUSH(a, b)
static int is_special_global_name(const char *m, const char *e, rb_encoding *enc)
static const yytype_uint16 yyrline[]
#define NEW_UNLESS(c, t, e)
RUBY_EXTERN VALUE rb_mKernel
VALUE rb_thread_current(void)
NODE * rb_parser_compile_file_path(volatile VALUE vparser, VALUE fname, VALUE file, int start)
void st_add_direct(st_table *, st_data_t, st_data_t)
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
int rb_is_attrset_id(ID id)
static int reg_fragment_check_gen(struct parser_params *, VALUE, int)
long(* rb_magic_comment_length_t)(struct parser_params *parser, const char *name, long len)
static NODE * dsym_node_gen(struct parser_params *, NODE *)
NODE * rb_compile_string(const char *f, VALUE s, int line)
void rb_define_const(VALUE, const char *, VALUE)
static NODE * new_attr_op_assign_gen(struct parser_params *parser, NODE *lhs, ID attr, ID op, NODE *rhs)
rb_atomic_t cnt[RUBY_NSIG]
static void no_blockarg(struct parser_params *parser, NODE *node)
static NODE * splat_array(NODE *)
static void parser_mark(void *ptr)
static void parser_tokadd(struct parser_params *parser, int c)
static YYSIZE_T yystrlen(char *yystr) const
static void ripper_init_eventids1(void)
static int sym_check_asciionly(VALUE str)
static ID intern_str(VALUE str)
char ary[RSTRING_EMBED_LEN_MAX+1]
VALUE rb_rational_new(VALUE, VALUE)
static VALUE lex_get_str(struct parser_params *parser, VALUE s)
#define ALLOCA_N(type, n)
static int assign_in_cond(struct parser_params *parser, NODE *node)
#define warn_balanced(op, syn)
#define NEW_OP_CDECL(v, op, val)
#define ENC_CODERANGE_UNKNOWN
static void void_expr_gen(struct parser_params *, NODE *)
static int reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end, int back_num, int *back_refs, OnigRegex regex, void *arg0)
#define RUBY_FUNC_EXPORTED
#define MEMCPY(p1, p2, type, n)
#define ENC_CODERANGE_BROKEN
#define rb_enc_isupper(c, enc)
VALUE rb_enc_associate_index(VALUE obj, int idx)
int rb_parse_in_main(void)
static VALUE debug_lines(VALUE fname)
#define IS_AFTER_OPERATOR()
const char * parser_lex_pend
static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
#define IDSET_ATTRSET_FOR_INTERN
#define set_yylval_num(x)
#define parser_encoding_name()
token_info * parser_token_info
#define new_op_assign(lhs, op, rhs)
VALUE rb_make_backtrace(void)
static NODE * list_append_gen(struct parser_params *, NODE *, NODE *)
#define NEW_WHEN(c, t, e)
static const yytype_int16 yycheck[]
VALUE rb_str_resize(VALUE, long)
static int literal_node(NODE *node)
static int dvar_curr_gen(struct parser_params *, ID)
#define NEW_DASGN(v, val)
#define flush_string_content(enc)
int rb_str_hash_cmp(VALUE, VALUE)
#define NEW_BLOCK_PASS(b)
int rb_dvar_defined(ID id)
static int parser_yyerror(struct parser_params *, const char *)
#define RUBY_DTRACE_PARSE_END_ENABLED()
#define REALLOC_N(var, type, n)
static const yytype_int16 yypgoto[]
SSL_METHOD *(* func)(void)
static int parser_tokadd_mbchar(struct parser_params *parser, int c)
int rb_symname_p(const char *name)
VALUE rb_sprintf(const char *format,...)
#define set_integer_literal(v, f)
#define NEW_OP_ASGN_OR(i, val)
static void yydestruct(char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser) const
#define rb_enc_isspace(c, enc)
#define ruby_sourcefile_string
#define parser_warning(node, mesg)
#define mixed_error(enc1, enc2)
RUBY_FUNC_EXPORTED const unsigned int ruby_global_name_punct_bits[(0x7e-0x20+31)/32]
#define reg_fragment_setenc(str, options)
static int value_expr_gen(struct parser_params *, NODE *)
static const yytype_int16 yyrhs[]
const char * rb_id2name(ID id)
static int parser_whole_match_p(struct parser_params *parser, const char *eos, long len, int indent)
#define NEW_RESCUE(b, res, e)
static const char * magic_comment_marker(const char *str, long len)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
static const yytype_uint8 yytranslate[]
unsigned char buf[MIME_BUF_SIZE]
static char * parser_newtok(struct parser_params *parser)
static void fixup_nodes(NODE **)
rb_encoding * rb_usascii_encoding(void)
#define rb_enc_isalnum(c, enc)
#define rb_enc_isdigit(c, enc)
#define list_concat(h, t)
static int options(unsigned char *cp)
#define heredoc_restore(n)
stack_type parser_cond_stack
#define IS_lex_state_for(x, ls)
static NODE * arg_append_gen(struct parser_params *, NODE *, NODE *)
static void ripper_init_eventids2(void)
#define heredoc_identifier()
#define rb_enc_ispunct(c, enc)
static VALUE parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
void rb_mark_tbl(st_table *tbl)
static int parser_magic_comment(struct parser_params *parser, const char *str, long len)
#define NEW_ENSURE(b, en)
#define token_info_pop(token)
static int arg_var_gen(struct parser_params *, ID)
#define call_bin_op(recv, id, arg1)
#define rb_warn4S(file, line, fmt, a)
#define rb_enc_asciicompat(enc)
VALUE rb_ensure(VALUE(*b_proc)(ANYARGS), VALUE data1, VALUE(*e_proc)(ANYARGS), VALUE data2)
static VALUE yycompile0(VALUE arg)
int rb_char_to_option_kcode(int c, int *option, int *kcode)
#define assignable_result(x)
static int parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
static int parser_tokadd_string(struct parser_params *, int, int, int, long *, rb_encoding **)
#define ENCODING_IS_ASCII8BIT(obj)
#define dvar_defined_get(id)
#define RUBY_DTRACE_PARSE_BEGIN_ENABLED()
#define rb_enc_isalpha(c, enc)
static NODE * new_args_gen(struct parser_params *, NODE *, NODE *, ID, NODE *, NODE *)
static int vtable_included(const struct vtable *tbl, ID id)
ID rb_intern(const char *name)
static int parser_set_number_literal(struct parser_params *parser, VALUE v, int type, int suffix)
static VALUE lex_io_gets(struct parser_params *parser, VALUE io)
NODE * rb_compile_cstr(const char *f, const char *s, int len, int line)
#define parser_is_identchar()
#define set_yylval_node(x)
static void yy_symbol_value_print(FILE *yyoutput, int yytype, YYSTYPE const *const yyvaluep, struct parser_params *parser)
static void vtable_free(struct vtable *tbl)
#define reg_fragment_check(str, options)
#define RARRAY_ASET(a, i, v)
const struct vtable * vars
int rb_const_defined_at(VALUE, ID)
st_table * st_init_table_with_size(const struct st_hash_type *, st_index_t)
#define ENCODING_GET(obj)
rb_encoding * rb_enc_get(VALUE obj)
static void reduce_nodes_gen(struct parser_params *, NODE **)
#define YYSTACK_ALLOC_MAXIMUM
#define set_yylval_name(x)
#define NEW_GASGN(v, val)
static NODE * reg_named_capture_assign_gen(struct parser_params *parser, VALUE regexp, NODE *match)
static void parser_pushback(struct parser_params *parser, int c)
int rb_enc_symname_p(const char *name, rb_encoding *enc)
#define RARRAY_AREF(a, i)
static const yytype_uint16 yydefact[]
static int parser_here_document(struct parser_params *, NODE *)
VALUE rb_int_positive_pow(long x, unsigned long y)
int rb_is_const_name(VALUE name)
static NODE * ret_args_gen(struct parser_params *, NODE *)
void rb_set_errinfo(VALUE err)
static void dyna_pop_gen(struct parser_params *, const struct vtable *)
NODE * parser_lex_strterm
int rb_is_global_id(ID id)
static void local_pop_gen(struct parser_params *)
#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED()
VALUE rb_complex_raw(VALUE x, VALUE y)
static int simple_re_meta(int c)
#define NEW_UNTIL(c, b, n)
#define new_attr_op_assign(lhs, type, attr, op, rhs)
#define aryset(node1, node2)
static const struct st_hash_type symhash
#define list_append(l, i)
#define tokaddmbc(c, enc)
#define STR_NEW3(p, n, e, func)
static const yytype_int16 yypact[]
void rb_compile_warning(const char *file, int line, const char *fmt,...)
VALUE rb_check_string_type(VALUE)
static void warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
#define yypact_value_is_default(yystate)
static int symbols_i(VALUE sym, ID value, VALUE ary)
static void parser_prepare(struct parser_params *parser)
static struct parser_params * parser_new(void)
#define NEW_WHILE(c, b, n)
static void yy_symbol_print(FILE *yyoutput, int yytype, YYSTYPE const *const yyvaluep, struct parser_params *parser)
#define new_args(f, o, r, p, t)
static void rb_backref_error_gen(struct parser_params *, NODE *)
#define NEW_POSTARG(i, v)
static NODE * logop_gen(struct parser_params *, enum node_type, NODE *, NODE *)
VALUE rb_parser_new(void)
static void void_stmts_gen(struct parser_params *, NODE *)
struct rb_encoding_entry * list
static const yytype_int16 yydefgoto[]
static NODE * parser_compile_string(volatile VALUE vparser, VALUE fname, VALUE s, int line)
#define NEW_CVASGN(v, val)
static int yylex(void *, void *)
int rb_is_global_name(VALUE name)
#define NEW_OP_ASGN2(r, i, o, val)
#define NEW_MATCH3(r, n2)
#define node_assign(node1, node2)
#define NEW_OPT_ARG(i, v)
static unsigned int hash(const char *str, unsigned int len)
#define RUBY_DTRACE_SYMBOL_CREATE(arg0, arg1, arg2)
static int parser_parse_string(struct parser_params *, NODE *)
VALUE rb_filesystem_str_new_cstr(const char *)
#define ruby_eval_tree_begin
#define is_instance_id(id)
NODE * rb_parser_append_print(VALUE vparser, NODE *node)
ID rb_intern2(const char *name, long len)
const char * parser_lex_pbeg
static NODE * cond_gen(struct parser_params *, NODE *)
NODE * rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
static int shadowing_lvar_0(struct parser_params *parser, ID name)
VALUE rb_enc_str_new(const char *, long, rb_encoding *)
static NODE * list_concat_gen(struct parser_params *, NODE *, NODE *)
VALUE rb_const_get_at(VALUE, ID)
static int is_global_name_punct(const int c)
static int is_private_local_id(ID name)
static int comment_at_top(struct parser_params *parser)
const char * parser_lex_p
static void dispose_string(VALUE str)
static int parser_nextc(struct parser_params *parser)
#define read_escape(flags, e)
static const char *const yytname[]
static char * yystpcpy(char *yydest, const char *yysrc)
int parser_ruby_sourceline
#define call_uni_op(recv, id)
static ID register_symid_str(ID, VALUE)
#define StringValuePtr(v)
struct RString::@109::@110 heap
static ID shadowing_lvar_gen(struct parser_params *, ID)
VALUE rb_str_new_frozen(VALUE)
static int token_info_get_column(struct parser_params *parser, const char *token)
unsigned char yytype_uint8
static NODE * yycompile(struct parser_params *parser, VALUE fname, int line)
#define NEW_RESBODY(a, ex, n)
#define NEW_ARGSCAT(a, b)
#define NEW_DASGN_CURR(v, val)
static void vtable_add(struct vtable *tbl, ID id)
int rb_is_class_id(ID id)
#define NEW_CALL(r, m, a)
static const yytype_uint16 yystos[]
static int is_static_content(NODE *node)
rb_encoding * rb_ascii8bit_encoding(void)
int rb_enc_find_index(const char *name)
static NODE * aryset_gen(struct parser_params *, NODE *, NODE *)
VALUE rb_parser_end_seen_p(VALUE vparser)
static int parser_heredoc_identifier(struct parser_params *parser)
int rb_is_const_id(ID id)
static int parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp, int string_literal, int symbol_literal, int regexp_literal)
static const struct vtable * dyna_push_gen(struct parser_params *)
#define CONST_ID(var, str)
static NODE * block_append_gen(struct parser_params *, NODE *, NODE *)
#define NEW_MATCH2(n1, n2)
VALUE rb_parser_set_yydebug(VALUE self, VALUE flag)
static void new_bv_gen(struct parser_params *, ID)
#define assignable(id, node)
st_table * st_init_numtable_with_size(st_index_t)
VALUE rb_cstr_to_inum(const char *str, int base, int badcheck)
static NODE * range_op(struct parser_params *parser, NODE *node)
#define rb_enc_mbcput(c, buf, enc)
#define NEW_DEFN(i, a, d, p)
static int parser_tok_hex(struct parser_params *parser, size_t *numlen)
ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc)
int rb_parse_in_eval(void)
NODE * rb_compile_file(const char *f, VALUE file, int start)
VALUE rb_str_buf_new(long)
VALUE rb_usascii_str_new(const char *, long)
#define rb_node_newnode(type, a1, a2, a3)
#define nd_set_line(n, l)
VALUE rb_vsprintf(const char *, va_list)
#define block_append(h, t)
VALUE(* parser_lex_gets)(struct parser_params *, VALUE)
#define RTYPEDDATA_TYPE(v)
#define NEW_LASGN(v, val)
struct token_info token_info
static NODE * literal_concat_gen(struct parser_params *, NODE *, NODE *)
static NODE * call_uni_op_gen(struct parser_params *, NODE *, ID)
static int literal_concat0(struct parser_params *, VALUE, VALUE)
int rb_is_instance_id(ID id)
void rb_parser_free(struct parser_params *parser, void *ptr)
#define ENCODING_SET(obj, i)
int rb_local_defined(ID id)
#define IS_LABEL_SUFFIX(n)
NODE * parser_eval_tree_begin
static int match(VALUE str, VALUE pat, VALUE hash, int(*cb)(VALUE, VALUE))
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
VALUE rb_str_append(VALUE, VALUE)
#define rb_ascii8bit_encindex()
int st_foreach(st_table *, int(*)(ANYARGS), st_data_t)
static void parser_set_token_info(struct parser_params *parser, const char *name, const char *val)
#define NEW_NODE(t, a0, a1, a2)
#define NEW_ARGS_AUX(r, b)
int rb_memcicmp(const void *, const void *, long)
NODE * rb_parser_compile_string_path(volatile VALUE vparser, VALUE f, VALUE s, int line)
void(* rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val)
static VALUE lex_getline(struct parser_params *parser)
VALUE rb_sym_all_symbols(void)
#define rb_enc_prev_char(s, p, e, enc)
static NODE * node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE)
#define whole_match_p(e, l, i)
unsigned long ruby_scan_oct(const char *, size_t, size_t *)
static int yysyntax_error(YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken)
static int parser_peek_variable_name(struct parser_params *parser)
VALUE rb_attr_get(VALUE, ID)
#define is_attrset_id(id)
static int local_id_gen(struct parser_params *, ID)
#define SPECIAL_PUNCT(idx)
#define NEW_CDECL(v, val, path)
void rb_gc_mark_symbols(int full_mark)
#define rb_backref_error(n)
#define NEW_DEFS(r, i, a, d)
static void ripper_init_eventids2_table(VALUE self)
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
static NODE * new_args_tail_gen(struct parser_params *, NODE *, ID, ID)
#define rb_warningS(fmt, a)
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
rb_encoding * rb_enc_from_index(int index)
VALUE rb_str_new(const char *, long)