1use std::convert::TryInto;
41
42
43use alloc_from_pool::{Pool, PoolValue};
48use crate::{ParserOptions, ParserResult};
49use crate::{Token};
50use crate::{Lexer, Builder, CurrentArgStack, StaticEnvironment, MaxNumparamStack, VariablesStack};
51use crate::lex_states::*;
52use crate::{SharedContext as ParserContext, context::Context};
53use crate::builder::{LoopType, KeywordCmd, LogicalOp, PKwLabel, ArgsType};
54use crate::builder::clone_value;
55use crate::parse_value::ParseValue as Value;
56use crate::parse_value::*;
57use crate::Node;
58use crate::nodes;
59use crate::{Diagnostic, DiagnosticMessage, ErrorLevel};
60use crate::error::Diagnostics;
61use crate::Loc;
62
63
64#[derive(Debug)]
69pub struct Parser {
70 pub yylexer: Lexer,
72 #[allow(dead_code)]
74 yy_error_verbose: bool,
75 yynerrs: i32,
77
78 yyerrstatus_: i32,
79
80 result: Option<Box<Node>>,
84 builder: Builder,
85 current_arg_stack: CurrentArgStack,
86 pub static_env: StaticEnvironment,
112 context: ParserContext,
113 last_token_type: i32,
114 max_numparam_stack: MaxNumparamStack,
115 pattern_variables: VariablesStack,
116 pattern_hash_keys: VariablesStack,
117 tokens: Vec<Token>,
118 diagnostics: Diagnostics,
119 record_tokens: bool,
120
121 #[allow(dead_code)]
122 tokens_pool: Pool<Token>,
123
124}
127
128#[inline]
129fn i32_to_usize(v: i32) -> usize {
130 v as usize
131}
132
133pub fn token_name(id: i32) -> &'static str { let first_token = Lexer::YYerror;
136 if id > first_token + 1 {
137 let pos: usize = (id - first_token + 1)
138 .try_into()
139 .expect("failed to cast token id into usize, is it negative?");
140 Lexer::TOKEN_NAMES[pos]
141 } else if id == 0 {
142 "EOF"
143 } else {
144 panic!("token_name fails, {} (first token = {})", id, first_token)
145 }
146}
147
148type YYLoc = Loc;
150
151impl Parser {
152 #[allow(dead_code)]
154 const BISON_VERSION: &'static str = "30802";
155
156}
157
158
159fn make_yylloc(rhs: &YYStack, n: usize) -> YYLoc {
160 if 0 < n {
161 YYLoc {
162 begin: rhs.location_at(n - 1).begin,
163 end: rhs.location_at(0).end
164 }
165 } else {
166 YYLoc {
167 begin: rhs.location_at(0).end,
168 end: rhs.location_at(0).end
169 }
170 }
171}
172
173#[derive(Debug, Clone, PartialEq, Eq)]
174pub struct SymbolKind { value: i32 }
175
176impl SymbolKind {
177
178
179
180 #[allow(non_upper_case_globals)]
181 const S_YYEOF: i32 = 0; #[allow(non_upper_case_globals)]
184 const S_YYerror: i32 = 1; #[allow(non_upper_case_globals)]
187 const S_YYUNDEF: i32 = 2; #[allow(non_upper_case_globals)]
190 const S_kCLASS: i32 = 3; #[allow(non_upper_case_globals)]
193 const S_kMODULE: i32 = 4; #[allow(non_upper_case_globals)]
196 const S_kDEF: i32 = 5; #[allow(non_upper_case_globals)]
199 const S_kUNDEF: i32 = 6; #[allow(non_upper_case_globals)]
202 const S_kBEGIN: i32 = 7; #[allow(non_upper_case_globals)]
205 const S_kRESCUE: i32 = 8; #[allow(non_upper_case_globals)]
208 const S_kENSURE: i32 = 9; #[allow(non_upper_case_globals)]
211 const S_kEND: i32 = 10; #[allow(non_upper_case_globals)]
214 const S_kIF: i32 = 11; #[allow(non_upper_case_globals)]
217 const S_kUNLESS: i32 = 12; #[allow(non_upper_case_globals)]
220 const S_kTHEN: i32 = 13; #[allow(non_upper_case_globals)]
223 const S_kELSIF: i32 = 14; #[allow(non_upper_case_globals)]
226 const S_kELSE: i32 = 15; #[allow(non_upper_case_globals)]
229 const S_kCASE: i32 = 16; #[allow(non_upper_case_globals)]
232 const S_kWHEN: i32 = 17; #[allow(non_upper_case_globals)]
235 const S_kWHILE: i32 = 18; #[allow(non_upper_case_globals)]
238 const S_kUNTIL: i32 = 19; #[allow(non_upper_case_globals)]
241 const S_kFOR: i32 = 20; #[allow(non_upper_case_globals)]
244 const S_kBREAK: i32 = 21; #[allow(non_upper_case_globals)]
247 const S_kNEXT: i32 = 22; #[allow(non_upper_case_globals)]
250 const S_kREDO: i32 = 23; #[allow(non_upper_case_globals)]
253 const S_kRETRY: i32 = 24; #[allow(non_upper_case_globals)]
256 const S_kIN: i32 = 25; #[allow(non_upper_case_globals)]
259 const S_kDO: i32 = 26; #[allow(non_upper_case_globals)]
262 const S_kDO_COND: i32 = 27; #[allow(non_upper_case_globals)]
265 const S_kDO_BLOCK: i32 = 28; #[allow(non_upper_case_globals)]
268 const S_kDO_LAMBDA: i32 = 29; #[allow(non_upper_case_globals)]
271 const S_kRETURN: i32 = 30; #[allow(non_upper_case_globals)]
274 const S_kYIELD: i32 = 31; #[allow(non_upper_case_globals)]
277 const S_kSUPER: i32 = 32; #[allow(non_upper_case_globals)]
280 const S_kSELF: i32 = 33; #[allow(non_upper_case_globals)]
283 const S_kNIL: i32 = 34; #[allow(non_upper_case_globals)]
286 const S_kTRUE: i32 = 35; #[allow(non_upper_case_globals)]
289 const S_kFALSE: i32 = 36; #[allow(non_upper_case_globals)]
292 const S_kAND: i32 = 37; #[allow(non_upper_case_globals)]
295 const S_kOR: i32 = 38; #[allow(non_upper_case_globals)]
298 const S_kNOT: i32 = 39; #[allow(non_upper_case_globals)]
301 const S_kIF_MOD: i32 = 40; #[allow(non_upper_case_globals)]
304 const S_kUNLESS_MOD: i32 = 41; #[allow(non_upper_case_globals)]
307 const S_kWHILE_MOD: i32 = 42; #[allow(non_upper_case_globals)]
310 const S_kUNTIL_MOD: i32 = 43; #[allow(non_upper_case_globals)]
313 const S_kRESCUE_MOD: i32 = 44; #[allow(non_upper_case_globals)]
316 const S_kALIAS: i32 = 45; #[allow(non_upper_case_globals)]
319 const S_kDEFINED: i32 = 46; #[allow(non_upper_case_globals)]
322 const S_klBEGIN: i32 = 47; #[allow(non_upper_case_globals)]
325 const S_klEND: i32 = 48; #[allow(non_upper_case_globals)]
328 const S_k__LINE__: i32 = 49; #[allow(non_upper_case_globals)]
331 const S_k__FILE__: i32 = 50; #[allow(non_upper_case_globals)]
334 const S_k__ENCODING__: i32 = 51; #[allow(non_upper_case_globals)]
337 const S_tIDENTIFIER: i32 = 52; #[allow(non_upper_case_globals)]
340 const S_tFID: i32 = 53; #[allow(non_upper_case_globals)]
343 const S_tGVAR: i32 = 54; #[allow(non_upper_case_globals)]
346 const S_tIVAR: i32 = 55; #[allow(non_upper_case_globals)]
349 const S_tCONSTANT: i32 = 56; #[allow(non_upper_case_globals)]
352 const S_tCVAR: i32 = 57; #[allow(non_upper_case_globals)]
355 const S_tLABEL: i32 = 58; #[allow(non_upper_case_globals)]
358 const S_tINTEGER: i32 = 59; #[allow(non_upper_case_globals)]
361 const S_tFLOAT: i32 = 60; #[allow(non_upper_case_globals)]
364 const S_tRATIONAL: i32 = 61; #[allow(non_upper_case_globals)]
367 const S_tIMAGINARY: i32 = 62; #[allow(non_upper_case_globals)]
370 const S_tCHAR: i32 = 63; #[allow(non_upper_case_globals)]
373 const S_tNTH_REF: i32 = 64; #[allow(non_upper_case_globals)]
376 const S_tBACK_REF: i32 = 65; #[allow(non_upper_case_globals)]
379 const S_tSTRING_CONTENT: i32 = 66; #[allow(non_upper_case_globals)]
382 const S_tREGEXP_END: i32 = 67; #[allow(non_upper_case_globals)]
385 const S_tDOT: i32 = 68; #[allow(non_upper_case_globals)]
388 const S_tBACKSLASH: i32 = 69; #[allow(non_upper_case_globals)]
391 const S_tSP: i32 = 70; #[allow(non_upper_case_globals)]
394 const S_tSLASH_T: i32 = 71; #[allow(non_upper_case_globals)]
397 const S_tSLASH_F: i32 = 72; #[allow(non_upper_case_globals)]
400 const S_tSLASH_R: i32 = 73; #[allow(non_upper_case_globals)]
403 const S_tVTAB: i32 = 74; #[allow(non_upper_case_globals)]
406 const S_tUPLUS: i32 = 75; #[allow(non_upper_case_globals)]
409 const S_tUMINUS: i32 = 76; #[allow(non_upper_case_globals)]
412 const S_tPOW: i32 = 77; #[allow(non_upper_case_globals)]
415 const S_tCMP: i32 = 78; #[allow(non_upper_case_globals)]
418 const S_tEQ: i32 = 79; #[allow(non_upper_case_globals)]
421 const S_tEQQ: i32 = 80; #[allow(non_upper_case_globals)]
424 const S_tNEQ: i32 = 81; #[allow(non_upper_case_globals)]
427 const S_tGEQ: i32 = 82; #[allow(non_upper_case_globals)]
430 const S_tLEQ: i32 = 83; #[allow(non_upper_case_globals)]
433 const S_tANDOP: i32 = 84; #[allow(non_upper_case_globals)]
436 const S_tOROP: i32 = 85; #[allow(non_upper_case_globals)]
439 const S_tMATCH: i32 = 86; #[allow(non_upper_case_globals)]
442 const S_tNMATCH: i32 = 87; #[allow(non_upper_case_globals)]
445 const S_tDOT2: i32 = 88; #[allow(non_upper_case_globals)]
448 const S_tDOT3: i32 = 89; #[allow(non_upper_case_globals)]
451 const S_tBDOT2: i32 = 90; #[allow(non_upper_case_globals)]
454 const S_tBDOT3: i32 = 91; #[allow(non_upper_case_globals)]
457 const S_tAREF: i32 = 92; #[allow(non_upper_case_globals)]
460 const S_tASET: i32 = 93; #[allow(non_upper_case_globals)]
463 const S_tLSHFT: i32 = 94; #[allow(non_upper_case_globals)]
466 const S_tRSHFT: i32 = 95; #[allow(non_upper_case_globals)]
469 const S_tANDDOT: i32 = 96; #[allow(non_upper_case_globals)]
472 const S_tCOLON2: i32 = 97; #[allow(non_upper_case_globals)]
475 const S_tCOLON3: i32 = 98; #[allow(non_upper_case_globals)]
478 const S_tOP_ASGN: i32 = 99; #[allow(non_upper_case_globals)]
481 const S_tASSOC: i32 = 100; #[allow(non_upper_case_globals)]
484 const S_tLPAREN: i32 = 101; #[allow(non_upper_case_globals)]
487 const S_tLPAREN_ARG: i32 = 102; #[allow(non_upper_case_globals)]
490 const S_tRPAREN: i32 = 103; #[allow(non_upper_case_globals)]
493 const S_tLBRACK: i32 = 104; #[allow(non_upper_case_globals)]
496 const S_tLBRACE: i32 = 105; #[allow(non_upper_case_globals)]
499 const S_tLBRACE_ARG: i32 = 106; #[allow(non_upper_case_globals)]
502 const S_tSTAR: i32 = 107; #[allow(non_upper_case_globals)]
505 const S_tDSTAR: i32 = 108; #[allow(non_upper_case_globals)]
508 const S_tAMPER: i32 = 109; #[allow(non_upper_case_globals)]
511 const S_tLAMBDA: i32 = 110; #[allow(non_upper_case_globals)]
514 const S_tSYMBEG: i32 = 111; #[allow(non_upper_case_globals)]
517 const S_tSTRING_BEG: i32 = 112; #[allow(non_upper_case_globals)]
520 const S_tXSTRING_BEG: i32 = 113; #[allow(non_upper_case_globals)]
523 const S_tREGEXP_BEG: i32 = 114; #[allow(non_upper_case_globals)]
526 const S_tWORDS_BEG: i32 = 115; #[allow(non_upper_case_globals)]
529 const S_tQWORDS_BEG: i32 = 116; #[allow(non_upper_case_globals)]
532 const S_tSYMBOLS_BEG: i32 = 117; #[allow(non_upper_case_globals)]
535 const S_tQSYMBOLS_BEG: i32 = 118; #[allow(non_upper_case_globals)]
538 const S_tSTRING_END: i32 = 119; #[allow(non_upper_case_globals)]
541 const S_tSTRING_DEND: i32 = 120; #[allow(non_upper_case_globals)]
544 const S_tSTRING_DBEG: i32 = 121; #[allow(non_upper_case_globals)]
547 const S_tSTRING_DVAR: i32 = 122; #[allow(non_upper_case_globals)]
550 const S_tLAMBEG: i32 = 123; #[allow(non_upper_case_globals)]
553 const S_tLABEL_END: i32 = 124; #[allow(non_upper_case_globals)]
556 const S_tCOMMA: i32 = 125; #[allow(non_upper_case_globals)]
559 const S_tLCURLY: i32 = 126; #[allow(non_upper_case_globals)]
562 const S_tRCURLY: i32 = 127; #[allow(non_upper_case_globals)]
565 const S_tLBRACK2: i32 = 128; #[allow(non_upper_case_globals)]
568 const S_tEQL: i32 = 129; #[allow(non_upper_case_globals)]
571 const S_tPIPE: i32 = 130; #[allow(non_upper_case_globals)]
574 const S_tAMPER2: i32 = 131; #[allow(non_upper_case_globals)]
577 const S_tGT: i32 = 132; #[allow(non_upper_case_globals)]
580 const S_tLT: i32 = 133; #[allow(non_upper_case_globals)]
583 const S_tBACK_REF2: i32 = 134; #[allow(non_upper_case_globals)]
586 const S_tCARET: i32 = 135; #[allow(non_upper_case_globals)]
589 const S_tLPAREN2: i32 = 136; #[allow(non_upper_case_globals)]
592 const S_tRBRACK: i32 = 137; #[allow(non_upper_case_globals)]
595 const S_tSEMI: i32 = 138; #[allow(non_upper_case_globals)]
598 const S_tSPACE: i32 = 139; #[allow(non_upper_case_globals)]
601 const S_tNL: i32 = 140; #[allow(non_upper_case_globals)]
604 const S_tPLUS: i32 = 141; #[allow(non_upper_case_globals)]
607 const S_tMINUS: i32 = 142; #[allow(non_upper_case_globals)]
610 const S_tSTAR2: i32 = 143; #[allow(non_upper_case_globals)]
613 const S_tDIVIDE: i32 = 144; #[allow(non_upper_case_globals)]
616 const S_tPERCENT: i32 = 145; #[allow(non_upper_case_globals)]
619 const S_tTILDE: i32 = 146; #[allow(non_upper_case_globals)]
622 const S_tBANG: i32 = 147; #[allow(non_upper_case_globals)]
625 const S_tLOWEST: i32 = 148; #[allow(non_upper_case_globals)]
628 const S_tEH: i32 = 149; #[allow(non_upper_case_globals)]
631 const S_tCOLON: i32 = 150; #[allow(non_upper_case_globals)]
634 const S_tUMINUS_NUM: i32 = 151; #[allow(non_upper_case_globals)]
637 const S_tLAST_TOKEN: i32 = 152; #[allow(non_upper_case_globals)]
640 const S_YYACCEPT: i32 = 153; #[allow(non_upper_case_globals)]
643 const S_program: i32 = 154; #[allow(non_upper_case_globals)]
646 const S_155_1: i32 = 155; #[allow(non_upper_case_globals)]
649 const S_top_compstmt: i32 = 156; #[allow(non_upper_case_globals)]
652 const S_top_stmts: i32 = 157; #[allow(non_upper_case_globals)]
655 const S_top_stmt: i32 = 158; #[allow(non_upper_case_globals)]
658 const S_begin_block: i32 = 159; #[allow(non_upper_case_globals)]
661 const S_bodystmt: i32 = 160; #[allow(non_upper_case_globals)]
664 const S_compstmt: i32 = 161; #[allow(non_upper_case_globals)]
667 const S_stmts: i32 = 162; #[allow(non_upper_case_globals)]
670 const S_stmt_or_begin: i32 = 163; #[allow(non_upper_case_globals)]
673 const S_164_2: i32 = 164; #[allow(non_upper_case_globals)]
676 const S_stmt: i32 = 165; #[allow(non_upper_case_globals)]
679 const S_166_3: i32 = 166; #[allow(non_upper_case_globals)]
682 const S_command_asgn: i32 = 167; #[allow(non_upper_case_globals)]
685 const S_command_rhs: i32 = 168; #[allow(non_upper_case_globals)]
688 const S_expr: i32 = 169; #[allow(non_upper_case_globals)]
691 const S_170_4: i32 = 170; #[allow(non_upper_case_globals)]
694 const S_171_5: i32 = 171; #[allow(non_upper_case_globals)]
697 const S_def_name: i32 = 172; #[allow(non_upper_case_globals)]
700 const S_defn_head: i32 = 173; #[allow(non_upper_case_globals)]
703 const S_defs_head: i32 = 174; #[allow(non_upper_case_globals)]
706 const S_175_6: i32 = 175; #[allow(non_upper_case_globals)]
709 const S_expr_value: i32 = 176; #[allow(non_upper_case_globals)]
712 const S_expr_value_do: i32 = 177; #[allow(non_upper_case_globals)]
715 const S_178_7: i32 = 178; #[allow(non_upper_case_globals)]
718 const S_command_call: i32 = 179; #[allow(non_upper_case_globals)]
721 const S_block_command: i32 = 180; #[allow(non_upper_case_globals)]
724 const S_cmd_brace_block: i32 = 181; #[allow(non_upper_case_globals)]
727 const S_182_8: i32 = 182; #[allow(non_upper_case_globals)]
730 const S_fcall: i32 = 183; #[allow(non_upper_case_globals)]
733 const S_command: i32 = 184; #[allow(non_upper_case_globals)]
736 const S_mlhs: i32 = 185; #[allow(non_upper_case_globals)]
739 const S_mlhs_inner: i32 = 186; #[allow(non_upper_case_globals)]
742 const S_mlhs_basic: i32 = 187; #[allow(non_upper_case_globals)]
745 const S_mlhs_item: i32 = 188; #[allow(non_upper_case_globals)]
748 const S_mlhs_head: i32 = 189; #[allow(non_upper_case_globals)]
751 const S_mlhs_post: i32 = 190; #[allow(non_upper_case_globals)]
754 const S_mlhs_node: i32 = 191; #[allow(non_upper_case_globals)]
757 const S_lhs: i32 = 192; #[allow(non_upper_case_globals)]
760 const S_cname: i32 = 193; #[allow(non_upper_case_globals)]
763 const S_cpath: i32 = 194; #[allow(non_upper_case_globals)]
766 const S_fname: i32 = 195; #[allow(non_upper_case_globals)]
769 const S_fitem: i32 = 196; #[allow(non_upper_case_globals)]
772 const S_undef_list: i32 = 197; #[allow(non_upper_case_globals)]
775 const S_198_9: i32 = 198; #[allow(non_upper_case_globals)]
778 const S_op: i32 = 199; #[allow(non_upper_case_globals)]
781 const S_reswords: i32 = 200; #[allow(non_upper_case_globals)]
784 const S_arg: i32 = 201; #[allow(non_upper_case_globals)]
787 const S_202_10: i32 = 202; #[allow(non_upper_case_globals)]
790 const S_relop: i32 = 203; #[allow(non_upper_case_globals)]
793 const S_rel_expr: i32 = 204; #[allow(non_upper_case_globals)]
796 const S_arg_value: i32 = 205; #[allow(non_upper_case_globals)]
799 const S_aref_args: i32 = 206; #[allow(non_upper_case_globals)]
802 const S_arg_rhs: i32 = 207; #[allow(non_upper_case_globals)]
805 const S_paren_args: i32 = 208; #[allow(non_upper_case_globals)]
808 const S_opt_paren_args: i32 = 209; #[allow(non_upper_case_globals)]
811 const S_opt_call_args: i32 = 210; #[allow(non_upper_case_globals)]
814 const S_call_args: i32 = 211; #[allow(non_upper_case_globals)]
817 const S_command_args: i32 = 212; #[allow(non_upper_case_globals)]
820 const S_213_11: i32 = 213; #[allow(non_upper_case_globals)]
823 const S_block_arg: i32 = 214; #[allow(non_upper_case_globals)]
826 const S_opt_block_arg: i32 = 215; #[allow(non_upper_case_globals)]
829 const S_args: i32 = 216; #[allow(non_upper_case_globals)]
832 const S_mrhs_arg: i32 = 217; #[allow(non_upper_case_globals)]
835 const S_mrhs: i32 = 218; #[allow(non_upper_case_globals)]
838 const S_primary: i32 = 219; #[allow(non_upper_case_globals)]
841 const S_220_12: i32 = 220; #[allow(non_upper_case_globals)]
844 const S_221_13: i32 = 221; #[allow(non_upper_case_globals)]
847 const S_222_14: i32 = 222; #[allow(non_upper_case_globals)]
850 const S_223_15: i32 = 223; #[allow(non_upper_case_globals)]
853 const S_224_16: i32 = 224; #[allow(non_upper_case_globals)]
856 const S_225_17: i32 = 225; #[allow(non_upper_case_globals)]
859 const S_226_18: i32 = 226; #[allow(non_upper_case_globals)]
862 const S_227_19: i32 = 227; #[allow(non_upper_case_globals)]
865 const S_228_20: i32 = 228; #[allow(non_upper_case_globals)]
868 const S_primary_value: i32 = 229; #[allow(non_upper_case_globals)]
871 const S_k_begin: i32 = 230; #[allow(non_upper_case_globals)]
874 const S_k_if: i32 = 231; #[allow(non_upper_case_globals)]
877 const S_k_unless: i32 = 232; #[allow(non_upper_case_globals)]
880 const S_k_while: i32 = 233; #[allow(non_upper_case_globals)]
883 const S_k_until: i32 = 234; #[allow(non_upper_case_globals)]
886 const S_k_case: i32 = 235; #[allow(non_upper_case_globals)]
889 const S_k_for: i32 = 236; #[allow(non_upper_case_globals)]
892 const S_k_class: i32 = 237; #[allow(non_upper_case_globals)]
895 const S_k_module: i32 = 238; #[allow(non_upper_case_globals)]
898 const S_k_def: i32 = 239; #[allow(non_upper_case_globals)]
901 const S_k_do: i32 = 240; #[allow(non_upper_case_globals)]
904 const S_k_do_block: i32 = 241; #[allow(non_upper_case_globals)]
907 const S_k_rescue: i32 = 242; #[allow(non_upper_case_globals)]
910 const S_k_ensure: i32 = 243; #[allow(non_upper_case_globals)]
913 const S_k_when: i32 = 244; #[allow(non_upper_case_globals)]
916 const S_k_else: i32 = 245; #[allow(non_upper_case_globals)]
919 const S_k_elsif: i32 = 246; #[allow(non_upper_case_globals)]
922 const S_k_end: i32 = 247; #[allow(non_upper_case_globals)]
925 const S_k_return: i32 = 248; #[allow(non_upper_case_globals)]
928 const S_then: i32 = 249; #[allow(non_upper_case_globals)]
931 const S_do: i32 = 250; #[allow(non_upper_case_globals)]
934 const S_if_tail: i32 = 251; #[allow(non_upper_case_globals)]
937 const S_opt_else: i32 = 252; #[allow(non_upper_case_globals)]
940 const S_for_var: i32 = 253; #[allow(non_upper_case_globals)]
943 const S_f_marg: i32 = 254; #[allow(non_upper_case_globals)]
946 const S_f_marg_list: i32 = 255; #[allow(non_upper_case_globals)]
949 const S_f_margs: i32 = 256; #[allow(non_upper_case_globals)]
952 const S_f_rest_marg: i32 = 257; #[allow(non_upper_case_globals)]
955 const S_f_any_kwrest: i32 = 258; #[allow(non_upper_case_globals)]
958 const S_f_eq: i32 = 259; #[allow(non_upper_case_globals)]
961 const S_260_21: i32 = 260; #[allow(non_upper_case_globals)]
964 const S_block_args_tail: i32 = 261; #[allow(non_upper_case_globals)]
967 const S_opt_block_args_tail: i32 = 262; #[allow(non_upper_case_globals)]
970 const S_excessed_comma: i32 = 263; #[allow(non_upper_case_globals)]
973 const S_block_param: i32 = 264; #[allow(non_upper_case_globals)]
976 const S_opt_block_param: i32 = 265; #[allow(non_upper_case_globals)]
979 const S_block_param_def: i32 = 266; #[allow(non_upper_case_globals)]
982 const S_opt_bv_decl: i32 = 267; #[allow(non_upper_case_globals)]
985 const S_bv_decls: i32 = 268; #[allow(non_upper_case_globals)]
988 const S_bvar: i32 = 269; #[allow(non_upper_case_globals)]
991 const S_lambda: i32 = 270; #[allow(non_upper_case_globals)]
994 const S_271_22: i32 = 271; #[allow(non_upper_case_globals)]
997 const S_272_23: i32 = 272; #[allow(non_upper_case_globals)]
1000 const S_273_24: i32 = 273; #[allow(non_upper_case_globals)]
1003 const S_f_larglist: i32 = 274; #[allow(non_upper_case_globals)]
1006 const S_lambda_body: i32 = 275; #[allow(non_upper_case_globals)]
1009 const S_276_25: i32 = 276; #[allow(non_upper_case_globals)]
1012 const S_277_26: i32 = 277; #[allow(non_upper_case_globals)]
1015 const S_do_block: i32 = 278; #[allow(non_upper_case_globals)]
1018 const S_279_27: i32 = 279; #[allow(non_upper_case_globals)]
1021 const S_block_call: i32 = 280; #[allow(non_upper_case_globals)]
1024 const S_method_call: i32 = 281; #[allow(non_upper_case_globals)]
1027 const S_brace_block: i32 = 282; #[allow(non_upper_case_globals)]
1030 const S_283_28: i32 = 283; #[allow(non_upper_case_globals)]
1033 const S_284_29: i32 = 284; #[allow(non_upper_case_globals)]
1036 const S_brace_body: i32 = 285; #[allow(non_upper_case_globals)]
1039 const S_286_30: i32 = 286; #[allow(non_upper_case_globals)]
1042 const S_do_body: i32 = 287; #[allow(non_upper_case_globals)]
1045 const S_288_31: i32 = 288; #[allow(non_upper_case_globals)]
1048 const S_case_args: i32 = 289; #[allow(non_upper_case_globals)]
1051 const S_case_body: i32 = 290; #[allow(non_upper_case_globals)]
1054 const S_cases: i32 = 291; #[allow(non_upper_case_globals)]
1057 const S_p_case_body: i32 = 292; #[allow(non_upper_case_globals)]
1060 const S_293_32: i32 = 293; #[allow(non_upper_case_globals)]
1063 const S_294_33: i32 = 294; #[allow(non_upper_case_globals)]
1066 const S_p_cases: i32 = 295; #[allow(non_upper_case_globals)]
1069 const S_p_top_expr: i32 = 296; #[allow(non_upper_case_globals)]
1072 const S_p_top_expr_body: i32 = 297; #[allow(non_upper_case_globals)]
1075 const S_p_expr: i32 = 298; #[allow(non_upper_case_globals)]
1078 const S_p_as: i32 = 299; #[allow(non_upper_case_globals)]
1081 const S_p_alt: i32 = 300; #[allow(non_upper_case_globals)]
1084 const S_p_lparen: i32 = 301; #[allow(non_upper_case_globals)]
1087 const S_p_lbracket: i32 = 302; #[allow(non_upper_case_globals)]
1090 const S_p_expr_basic: i32 = 303; #[allow(non_upper_case_globals)]
1093 const S_304_34: i32 = 304; #[allow(non_upper_case_globals)]
1096 const S_305_35: i32 = 305; #[allow(non_upper_case_globals)]
1099 const S_p_args: i32 = 306; #[allow(non_upper_case_globals)]
1102 const S_p_args_head: i32 = 307; #[allow(non_upper_case_globals)]
1105 const S_p_args_tail: i32 = 308; #[allow(non_upper_case_globals)]
1108 const S_p_find: i32 = 309; #[allow(non_upper_case_globals)]
1111 const S_p_rest: i32 = 310; #[allow(non_upper_case_globals)]
1114 const S_p_args_post: i32 = 311; #[allow(non_upper_case_globals)]
1117 const S_p_arg: i32 = 312; #[allow(non_upper_case_globals)]
1120 const S_p_kwargs: i32 = 313; #[allow(non_upper_case_globals)]
1123 const S_p_kwarg: i32 = 314; #[allow(non_upper_case_globals)]
1126 const S_p_kw: i32 = 315; #[allow(non_upper_case_globals)]
1129 const S_p_kw_label: i32 = 316; #[allow(non_upper_case_globals)]
1132 const S_p_kwrest: i32 = 317; #[allow(non_upper_case_globals)]
1135 const S_p_kwnorest: i32 = 318; #[allow(non_upper_case_globals)]
1138 const S_p_any_kwrest: i32 = 319; #[allow(non_upper_case_globals)]
1141 const S_p_value: i32 = 320; #[allow(non_upper_case_globals)]
1144 const S_p_primitive: i32 = 321; #[allow(non_upper_case_globals)]
1147 const S_p_variable: i32 = 322; #[allow(non_upper_case_globals)]
1150 const S_p_var_ref: i32 = 323; #[allow(non_upper_case_globals)]
1153 const S_p_expr_ref: i32 = 324; #[allow(non_upper_case_globals)]
1156 const S_p_const: i32 = 325; #[allow(non_upper_case_globals)]
1159 const S_opt_rescue: i32 = 326; #[allow(non_upper_case_globals)]
1162 const S_exc_list: i32 = 327; #[allow(non_upper_case_globals)]
1165 const S_exc_var: i32 = 328; #[allow(non_upper_case_globals)]
1168 const S_opt_ensure: i32 = 329; #[allow(non_upper_case_globals)]
1171 const S_literal: i32 = 330; #[allow(non_upper_case_globals)]
1174 const S_strings: i32 = 331; #[allow(non_upper_case_globals)]
1177 const S_string: i32 = 332; #[allow(non_upper_case_globals)]
1180 const S_string1: i32 = 333; #[allow(non_upper_case_globals)]
1183 const S_xstring: i32 = 334; #[allow(non_upper_case_globals)]
1186 const S_regexp: i32 = 335; #[allow(non_upper_case_globals)]
1189 const S_words: i32 = 336; #[allow(non_upper_case_globals)]
1192 const S_word_list: i32 = 337; #[allow(non_upper_case_globals)]
1195 const S_word: i32 = 338; #[allow(non_upper_case_globals)]
1198 const S_symbols: i32 = 339; #[allow(non_upper_case_globals)]
1201 const S_symbol_list: i32 = 340; #[allow(non_upper_case_globals)]
1204 const S_qwords: i32 = 341; #[allow(non_upper_case_globals)]
1207 const S_qsymbols: i32 = 342; #[allow(non_upper_case_globals)]
1210 const S_qword_list: i32 = 343; #[allow(non_upper_case_globals)]
1213 const S_qsym_list: i32 = 344; #[allow(non_upper_case_globals)]
1216 const S_string_contents: i32 = 345; #[allow(non_upper_case_globals)]
1219 const S_xstring_contents: i32 = 346; #[allow(non_upper_case_globals)]
1222 const S_regexp_contents: i32 = 347; #[allow(non_upper_case_globals)]
1225 const S_string_content: i32 = 348; #[allow(non_upper_case_globals)]
1228 const S_349_36: i32 = 349; #[allow(non_upper_case_globals)]
1231 const S_350_37: i32 = 350; #[allow(non_upper_case_globals)]
1234 const S_351_38: i32 = 351; #[allow(non_upper_case_globals)]
1237 const S_352_39: i32 = 352; #[allow(non_upper_case_globals)]
1240 const S_353_40: i32 = 353; #[allow(non_upper_case_globals)]
1243 const S_354_41: i32 = 354; #[allow(non_upper_case_globals)]
1246 const S_string_dvar: i32 = 355; #[allow(non_upper_case_globals)]
1249 const S_symbol: i32 = 356; #[allow(non_upper_case_globals)]
1252 const S_ssym: i32 = 357; #[allow(non_upper_case_globals)]
1255 const S_sym: i32 = 358; #[allow(non_upper_case_globals)]
1258 const S_dsym: i32 = 359; #[allow(non_upper_case_globals)]
1261 const S_numeric: i32 = 360; #[allow(non_upper_case_globals)]
1264 const S_simple_numeric: i32 = 361; #[allow(non_upper_case_globals)]
1267 const S_nonlocal_var: i32 = 362; #[allow(non_upper_case_globals)]
1270 const S_user_variable: i32 = 363; #[allow(non_upper_case_globals)]
1273 const S_keyword_variable: i32 = 364; #[allow(non_upper_case_globals)]
1276 const S_var_ref: i32 = 365; #[allow(non_upper_case_globals)]
1279 const S_var_lhs: i32 = 366; #[allow(non_upper_case_globals)]
1282 const S_backref: i32 = 367; #[allow(non_upper_case_globals)]
1285 const S_superclass: i32 = 368; #[allow(non_upper_case_globals)]
1288 const S_369_42: i32 = 369; #[allow(non_upper_case_globals)]
1291 const S_f_opt_paren_args: i32 = 370; #[allow(non_upper_case_globals)]
1294 const S_f_paren_args: i32 = 371; #[allow(non_upper_case_globals)]
1297 const S_f_arglist: i32 = 372; #[allow(non_upper_case_globals)]
1300 const S_373_43: i32 = 373; #[allow(non_upper_case_globals)]
1303 const S_args_tail: i32 = 374; #[allow(non_upper_case_globals)]
1306 const S_opt_args_tail: i32 = 375; #[allow(non_upper_case_globals)]
1309 const S_f_args: i32 = 376; #[allow(non_upper_case_globals)]
1312 const S_args_forward: i32 = 377; #[allow(non_upper_case_globals)]
1315 const S_f_bad_arg: i32 = 378; #[allow(non_upper_case_globals)]
1318 const S_f_norm_arg: i32 = 379; #[allow(non_upper_case_globals)]
1321 const S_f_arg_asgn: i32 = 380; #[allow(non_upper_case_globals)]
1324 const S_f_arg_item: i32 = 381; #[allow(non_upper_case_globals)]
1327 const S_f_arg: i32 = 382; #[allow(non_upper_case_globals)]
1330 const S_f_label: i32 = 383; #[allow(non_upper_case_globals)]
1333 const S_f_kw: i32 = 384; #[allow(non_upper_case_globals)]
1336 const S_f_block_kw: i32 = 385; #[allow(non_upper_case_globals)]
1339 const S_f_block_kwarg: i32 = 386; #[allow(non_upper_case_globals)]
1342 const S_f_kwarg: i32 = 387; #[allow(non_upper_case_globals)]
1345 const S_kwrest_mark: i32 = 388; #[allow(non_upper_case_globals)]
1348 const S_f_no_kwarg: i32 = 389; #[allow(non_upper_case_globals)]
1351 const S_f_kwrest: i32 = 390; #[allow(non_upper_case_globals)]
1354 const S_f_opt: i32 = 391; #[allow(non_upper_case_globals)]
1357 const S_f_block_opt: i32 = 392; #[allow(non_upper_case_globals)]
1360 const S_f_block_optarg: i32 = 393; #[allow(non_upper_case_globals)]
1363 const S_f_optarg: i32 = 394; #[allow(non_upper_case_globals)]
1366 const S_restarg_mark: i32 = 395; #[allow(non_upper_case_globals)]
1369 const S_f_rest_arg: i32 = 396; #[allow(non_upper_case_globals)]
1372 const S_blkarg_mark: i32 = 397; #[allow(non_upper_case_globals)]
1375 const S_f_block_arg: i32 = 398; #[allow(non_upper_case_globals)]
1378 const S_opt_f_block_arg: i32 = 399; #[allow(non_upper_case_globals)]
1381 const S_singleton: i32 = 400; #[allow(non_upper_case_globals)]
1384 const S_401_44: i32 = 401; #[allow(non_upper_case_globals)]
1387 const S_assoc_list: i32 = 402; #[allow(non_upper_case_globals)]
1390 const S_assocs: i32 = 403; #[allow(non_upper_case_globals)]
1393 const S_assoc: i32 = 404; #[allow(non_upper_case_globals)]
1396 const S_operation: i32 = 405; #[allow(non_upper_case_globals)]
1399 const S_operation2: i32 = 406; #[allow(non_upper_case_globals)]
1402 const S_operation3: i32 = 407; #[allow(non_upper_case_globals)]
1405 const S_dot_or_colon: i32 = 408; #[allow(non_upper_case_globals)]
1408 const S_call_op: i32 = 409; #[allow(non_upper_case_globals)]
1411 const S_call_op2: i32 = 410; #[allow(non_upper_case_globals)]
1414 const S_opt_terms: i32 = 411; #[allow(non_upper_case_globals)]
1417 const S_opt_nl: i32 = 412; #[allow(non_upper_case_globals)]
1420 const S_rparen: i32 = 413; #[allow(non_upper_case_globals)]
1423 const S_rbracket: i32 = 414; #[allow(non_upper_case_globals)]
1426 const S_rbrace: i32 = 415; #[allow(non_upper_case_globals)]
1429 const S_trailer: i32 = 416; #[allow(non_upper_case_globals)]
1432 const S_term: i32 = 417; #[allow(non_upper_case_globals)]
1435 const S_terms: i32 = 418; #[allow(non_upper_case_globals)]
1438 const S_none: i32 = 419; const VALUES_: &'static [SymbolKind] = &[
1442 SymbolKind { value: SymbolKind::S_YYEOF },
1443 SymbolKind { value: SymbolKind::S_YYerror },
1444 SymbolKind { value: SymbolKind::S_YYUNDEF },
1445 SymbolKind { value: SymbolKind::S_kCLASS },
1446 SymbolKind { value: SymbolKind::S_kMODULE },
1447 SymbolKind { value: SymbolKind::S_kDEF },
1448 SymbolKind { value: SymbolKind::S_kUNDEF },
1449 SymbolKind { value: SymbolKind::S_kBEGIN },
1450 SymbolKind { value: SymbolKind::S_kRESCUE },
1451 SymbolKind { value: SymbolKind::S_kENSURE },
1452 SymbolKind { value: SymbolKind::S_kEND },
1453 SymbolKind { value: SymbolKind::S_kIF },
1454 SymbolKind { value: SymbolKind::S_kUNLESS },
1455 SymbolKind { value: SymbolKind::S_kTHEN },
1456 SymbolKind { value: SymbolKind::S_kELSIF },
1457 SymbolKind { value: SymbolKind::S_kELSE },
1458 SymbolKind { value: SymbolKind::S_kCASE },
1459 SymbolKind { value: SymbolKind::S_kWHEN },
1460 SymbolKind { value: SymbolKind::S_kWHILE },
1461 SymbolKind { value: SymbolKind::S_kUNTIL },
1462 SymbolKind { value: SymbolKind::S_kFOR },
1463 SymbolKind { value: SymbolKind::S_kBREAK },
1464 SymbolKind { value: SymbolKind::S_kNEXT },
1465 SymbolKind { value: SymbolKind::S_kREDO },
1466 SymbolKind { value: SymbolKind::S_kRETRY },
1467 SymbolKind { value: SymbolKind::S_kIN },
1468 SymbolKind { value: SymbolKind::S_kDO },
1469 SymbolKind { value: SymbolKind::S_kDO_COND },
1470 SymbolKind { value: SymbolKind::S_kDO_BLOCK },
1471 SymbolKind { value: SymbolKind::S_kDO_LAMBDA },
1472 SymbolKind { value: SymbolKind::S_kRETURN },
1473 SymbolKind { value: SymbolKind::S_kYIELD },
1474 SymbolKind { value: SymbolKind::S_kSUPER },
1475 SymbolKind { value: SymbolKind::S_kSELF },
1476 SymbolKind { value: SymbolKind::S_kNIL },
1477 SymbolKind { value: SymbolKind::S_kTRUE },
1478 SymbolKind { value: SymbolKind::S_kFALSE },
1479 SymbolKind { value: SymbolKind::S_kAND },
1480 SymbolKind { value: SymbolKind::S_kOR },
1481 SymbolKind { value: SymbolKind::S_kNOT },
1482 SymbolKind { value: SymbolKind::S_kIF_MOD },
1483 SymbolKind { value: SymbolKind::S_kUNLESS_MOD },
1484 SymbolKind { value: SymbolKind::S_kWHILE_MOD },
1485 SymbolKind { value: SymbolKind::S_kUNTIL_MOD },
1486 SymbolKind { value: SymbolKind::S_kRESCUE_MOD },
1487 SymbolKind { value: SymbolKind::S_kALIAS },
1488 SymbolKind { value: SymbolKind::S_kDEFINED },
1489 SymbolKind { value: SymbolKind::S_klBEGIN },
1490 SymbolKind { value: SymbolKind::S_klEND },
1491 SymbolKind { value: SymbolKind::S_k__LINE__ },
1492 SymbolKind { value: SymbolKind::S_k__FILE__ },
1493 SymbolKind { value: SymbolKind::S_k__ENCODING__ },
1494 SymbolKind { value: SymbolKind::S_tIDENTIFIER },
1495 SymbolKind { value: SymbolKind::S_tFID },
1496 SymbolKind { value: SymbolKind::S_tGVAR },
1497 SymbolKind { value: SymbolKind::S_tIVAR },
1498 SymbolKind { value: SymbolKind::S_tCONSTANT },
1499 SymbolKind { value: SymbolKind::S_tCVAR },
1500 SymbolKind { value: SymbolKind::S_tLABEL },
1501 SymbolKind { value: SymbolKind::S_tINTEGER },
1502 SymbolKind { value: SymbolKind::S_tFLOAT },
1503 SymbolKind { value: SymbolKind::S_tRATIONAL },
1504 SymbolKind { value: SymbolKind::S_tIMAGINARY },
1505 SymbolKind { value: SymbolKind::S_tCHAR },
1506 SymbolKind { value: SymbolKind::S_tNTH_REF },
1507 SymbolKind { value: SymbolKind::S_tBACK_REF },
1508 SymbolKind { value: SymbolKind::S_tSTRING_CONTENT },
1509 SymbolKind { value: SymbolKind::S_tREGEXP_END },
1510 SymbolKind { value: SymbolKind::S_tDOT },
1511 SymbolKind { value: SymbolKind::S_tBACKSLASH },
1512 SymbolKind { value: SymbolKind::S_tSP },
1513 SymbolKind { value: SymbolKind::S_tSLASH_T },
1514 SymbolKind { value: SymbolKind::S_tSLASH_F },
1515 SymbolKind { value: SymbolKind::S_tSLASH_R },
1516 SymbolKind { value: SymbolKind::S_tVTAB },
1517 SymbolKind { value: SymbolKind::S_tUPLUS },
1518 SymbolKind { value: SymbolKind::S_tUMINUS },
1519 SymbolKind { value: SymbolKind::S_tPOW },
1520 SymbolKind { value: SymbolKind::S_tCMP },
1521 SymbolKind { value: SymbolKind::S_tEQ },
1522 SymbolKind { value: SymbolKind::S_tEQQ },
1523 SymbolKind { value: SymbolKind::S_tNEQ },
1524 SymbolKind { value: SymbolKind::S_tGEQ },
1525 SymbolKind { value: SymbolKind::S_tLEQ },
1526 SymbolKind { value: SymbolKind::S_tANDOP },
1527 SymbolKind { value: SymbolKind::S_tOROP },
1528 SymbolKind { value: SymbolKind::S_tMATCH },
1529 SymbolKind { value: SymbolKind::S_tNMATCH },
1530 SymbolKind { value: SymbolKind::S_tDOT2 },
1531 SymbolKind { value: SymbolKind::S_tDOT3 },
1532 SymbolKind { value: SymbolKind::S_tBDOT2 },
1533 SymbolKind { value: SymbolKind::S_tBDOT3 },
1534 SymbolKind { value: SymbolKind::S_tAREF },
1535 SymbolKind { value: SymbolKind::S_tASET },
1536 SymbolKind { value: SymbolKind::S_tLSHFT },
1537 SymbolKind { value: SymbolKind::S_tRSHFT },
1538 SymbolKind { value: SymbolKind::S_tANDDOT },
1539 SymbolKind { value: SymbolKind::S_tCOLON2 },
1540 SymbolKind { value: SymbolKind::S_tCOLON3 },
1541 SymbolKind { value: SymbolKind::S_tOP_ASGN },
1542 SymbolKind { value: SymbolKind::S_tASSOC },
1543 SymbolKind { value: SymbolKind::S_tLPAREN },
1544 SymbolKind { value: SymbolKind::S_tLPAREN_ARG },
1545 SymbolKind { value: SymbolKind::S_tRPAREN },
1546 SymbolKind { value: SymbolKind::S_tLBRACK },
1547 SymbolKind { value: SymbolKind::S_tLBRACE },
1548 SymbolKind { value: SymbolKind::S_tLBRACE_ARG },
1549 SymbolKind { value: SymbolKind::S_tSTAR },
1550 SymbolKind { value: SymbolKind::S_tDSTAR },
1551 SymbolKind { value: SymbolKind::S_tAMPER },
1552 SymbolKind { value: SymbolKind::S_tLAMBDA },
1553 SymbolKind { value: SymbolKind::S_tSYMBEG },
1554 SymbolKind { value: SymbolKind::S_tSTRING_BEG },
1555 SymbolKind { value: SymbolKind::S_tXSTRING_BEG },
1556 SymbolKind { value: SymbolKind::S_tREGEXP_BEG },
1557 SymbolKind { value: SymbolKind::S_tWORDS_BEG },
1558 SymbolKind { value: SymbolKind::S_tQWORDS_BEG },
1559 SymbolKind { value: SymbolKind::S_tSYMBOLS_BEG },
1560 SymbolKind { value: SymbolKind::S_tQSYMBOLS_BEG },
1561 SymbolKind { value: SymbolKind::S_tSTRING_END },
1562 SymbolKind { value: SymbolKind::S_tSTRING_DEND },
1563 SymbolKind { value: SymbolKind::S_tSTRING_DBEG },
1564 SymbolKind { value: SymbolKind::S_tSTRING_DVAR },
1565 SymbolKind { value: SymbolKind::S_tLAMBEG },
1566 SymbolKind { value: SymbolKind::S_tLABEL_END },
1567 SymbolKind { value: SymbolKind::S_tCOMMA },
1568 SymbolKind { value: SymbolKind::S_tLCURLY },
1569 SymbolKind { value: SymbolKind::S_tRCURLY },
1570 SymbolKind { value: SymbolKind::S_tLBRACK2 },
1571 SymbolKind { value: SymbolKind::S_tEQL },
1572 SymbolKind { value: SymbolKind::S_tPIPE },
1573 SymbolKind { value: SymbolKind::S_tAMPER2 },
1574 SymbolKind { value: SymbolKind::S_tGT },
1575 SymbolKind { value: SymbolKind::S_tLT },
1576 SymbolKind { value: SymbolKind::S_tBACK_REF2 },
1577 SymbolKind { value: SymbolKind::S_tCARET },
1578 SymbolKind { value: SymbolKind::S_tLPAREN2 },
1579 SymbolKind { value: SymbolKind::S_tRBRACK },
1580 SymbolKind { value: SymbolKind::S_tSEMI },
1581 SymbolKind { value: SymbolKind::S_tSPACE },
1582 SymbolKind { value: SymbolKind::S_tNL },
1583 SymbolKind { value: SymbolKind::S_tPLUS },
1584 SymbolKind { value: SymbolKind::S_tMINUS },
1585 SymbolKind { value: SymbolKind::S_tSTAR2 },
1586 SymbolKind { value: SymbolKind::S_tDIVIDE },
1587 SymbolKind { value: SymbolKind::S_tPERCENT },
1588 SymbolKind { value: SymbolKind::S_tTILDE },
1589 SymbolKind { value: SymbolKind::S_tBANG },
1590 SymbolKind { value: SymbolKind::S_tLOWEST },
1591 SymbolKind { value: SymbolKind::S_tEH },
1592 SymbolKind { value: SymbolKind::S_tCOLON },
1593 SymbolKind { value: SymbolKind::S_tUMINUS_NUM },
1594 SymbolKind { value: SymbolKind::S_tLAST_TOKEN },
1595 SymbolKind { value: SymbolKind::S_YYACCEPT },
1596 SymbolKind { value: SymbolKind::S_program },
1597 SymbolKind { value: SymbolKind::S_155_1 },
1598 SymbolKind { value: SymbolKind::S_top_compstmt },
1599 SymbolKind { value: SymbolKind::S_top_stmts },
1600 SymbolKind { value: SymbolKind::S_top_stmt },
1601 SymbolKind { value: SymbolKind::S_begin_block },
1602 SymbolKind { value: SymbolKind::S_bodystmt },
1603 SymbolKind { value: SymbolKind::S_compstmt },
1604 SymbolKind { value: SymbolKind::S_stmts },
1605 SymbolKind { value: SymbolKind::S_stmt_or_begin },
1606 SymbolKind { value: SymbolKind::S_164_2 },
1607 SymbolKind { value: SymbolKind::S_stmt },
1608 SymbolKind { value: SymbolKind::S_166_3 },
1609 SymbolKind { value: SymbolKind::S_command_asgn },
1610 SymbolKind { value: SymbolKind::S_command_rhs },
1611 SymbolKind { value: SymbolKind::S_expr },
1612 SymbolKind { value: SymbolKind::S_170_4 },
1613 SymbolKind { value: SymbolKind::S_171_5 },
1614 SymbolKind { value: SymbolKind::S_def_name },
1615 SymbolKind { value: SymbolKind::S_defn_head },
1616 SymbolKind { value: SymbolKind::S_defs_head },
1617 SymbolKind { value: SymbolKind::S_175_6 },
1618 SymbolKind { value: SymbolKind::S_expr_value },
1619 SymbolKind { value: SymbolKind::S_expr_value_do },
1620 SymbolKind { value: SymbolKind::S_178_7 },
1621 SymbolKind { value: SymbolKind::S_command_call },
1622 SymbolKind { value: SymbolKind::S_block_command },
1623 SymbolKind { value: SymbolKind::S_cmd_brace_block },
1624 SymbolKind { value: SymbolKind::S_182_8 },
1625 SymbolKind { value: SymbolKind::S_fcall },
1626 SymbolKind { value: SymbolKind::S_command },
1627 SymbolKind { value: SymbolKind::S_mlhs },
1628 SymbolKind { value: SymbolKind::S_mlhs_inner },
1629 SymbolKind { value: SymbolKind::S_mlhs_basic },
1630 SymbolKind { value: SymbolKind::S_mlhs_item },
1631 SymbolKind { value: SymbolKind::S_mlhs_head },
1632 SymbolKind { value: SymbolKind::S_mlhs_post },
1633 SymbolKind { value: SymbolKind::S_mlhs_node },
1634 SymbolKind { value: SymbolKind::S_lhs },
1635 SymbolKind { value: SymbolKind::S_cname },
1636 SymbolKind { value: SymbolKind::S_cpath },
1637 SymbolKind { value: SymbolKind::S_fname },
1638 SymbolKind { value: SymbolKind::S_fitem },
1639 SymbolKind { value: SymbolKind::S_undef_list },
1640 SymbolKind { value: SymbolKind::S_198_9 },
1641 SymbolKind { value: SymbolKind::S_op },
1642 SymbolKind { value: SymbolKind::S_reswords },
1643 SymbolKind { value: SymbolKind::S_arg },
1644 SymbolKind { value: SymbolKind::S_202_10 },
1645 SymbolKind { value: SymbolKind::S_relop },
1646 SymbolKind { value: SymbolKind::S_rel_expr },
1647 SymbolKind { value: SymbolKind::S_arg_value },
1648 SymbolKind { value: SymbolKind::S_aref_args },
1649 SymbolKind { value: SymbolKind::S_arg_rhs },
1650 SymbolKind { value: SymbolKind::S_paren_args },
1651 SymbolKind { value: SymbolKind::S_opt_paren_args },
1652 SymbolKind { value: SymbolKind::S_opt_call_args },
1653 SymbolKind { value: SymbolKind::S_call_args },
1654 SymbolKind { value: SymbolKind::S_command_args },
1655 SymbolKind { value: SymbolKind::S_213_11 },
1656 SymbolKind { value: SymbolKind::S_block_arg },
1657 SymbolKind { value: SymbolKind::S_opt_block_arg },
1658 SymbolKind { value: SymbolKind::S_args },
1659 SymbolKind { value: SymbolKind::S_mrhs_arg },
1660 SymbolKind { value: SymbolKind::S_mrhs },
1661 SymbolKind { value: SymbolKind::S_primary },
1662 SymbolKind { value: SymbolKind::S_220_12 },
1663 SymbolKind { value: SymbolKind::S_221_13 },
1664 SymbolKind { value: SymbolKind::S_222_14 },
1665 SymbolKind { value: SymbolKind::S_223_15 },
1666 SymbolKind { value: SymbolKind::S_224_16 },
1667 SymbolKind { value: SymbolKind::S_225_17 },
1668 SymbolKind { value: SymbolKind::S_226_18 },
1669 SymbolKind { value: SymbolKind::S_227_19 },
1670 SymbolKind { value: SymbolKind::S_228_20 },
1671 SymbolKind { value: SymbolKind::S_primary_value },
1672 SymbolKind { value: SymbolKind::S_k_begin },
1673 SymbolKind { value: SymbolKind::S_k_if },
1674 SymbolKind { value: SymbolKind::S_k_unless },
1675 SymbolKind { value: SymbolKind::S_k_while },
1676 SymbolKind { value: SymbolKind::S_k_until },
1677 SymbolKind { value: SymbolKind::S_k_case },
1678 SymbolKind { value: SymbolKind::S_k_for },
1679 SymbolKind { value: SymbolKind::S_k_class },
1680 SymbolKind { value: SymbolKind::S_k_module },
1681 SymbolKind { value: SymbolKind::S_k_def },
1682 SymbolKind { value: SymbolKind::S_k_do },
1683 SymbolKind { value: SymbolKind::S_k_do_block },
1684 SymbolKind { value: SymbolKind::S_k_rescue },
1685 SymbolKind { value: SymbolKind::S_k_ensure },
1686 SymbolKind { value: SymbolKind::S_k_when },
1687 SymbolKind { value: SymbolKind::S_k_else },
1688 SymbolKind { value: SymbolKind::S_k_elsif },
1689 SymbolKind { value: SymbolKind::S_k_end },
1690 SymbolKind { value: SymbolKind::S_k_return },
1691 SymbolKind { value: SymbolKind::S_then },
1692 SymbolKind { value: SymbolKind::S_do },
1693 SymbolKind { value: SymbolKind::S_if_tail },
1694 SymbolKind { value: SymbolKind::S_opt_else },
1695 SymbolKind { value: SymbolKind::S_for_var },
1696 SymbolKind { value: SymbolKind::S_f_marg },
1697 SymbolKind { value: SymbolKind::S_f_marg_list },
1698 SymbolKind { value: SymbolKind::S_f_margs },
1699 SymbolKind { value: SymbolKind::S_f_rest_marg },
1700 SymbolKind { value: SymbolKind::S_f_any_kwrest },
1701 SymbolKind { value: SymbolKind::S_f_eq },
1702 SymbolKind { value: SymbolKind::S_260_21 },
1703 SymbolKind { value: SymbolKind::S_block_args_tail },
1704 SymbolKind { value: SymbolKind::S_opt_block_args_tail },
1705 SymbolKind { value: SymbolKind::S_excessed_comma },
1706 SymbolKind { value: SymbolKind::S_block_param },
1707 SymbolKind { value: SymbolKind::S_opt_block_param },
1708 SymbolKind { value: SymbolKind::S_block_param_def },
1709 SymbolKind { value: SymbolKind::S_opt_bv_decl },
1710 SymbolKind { value: SymbolKind::S_bv_decls },
1711 SymbolKind { value: SymbolKind::S_bvar },
1712 SymbolKind { value: SymbolKind::S_lambda },
1713 SymbolKind { value: SymbolKind::S_271_22 },
1714 SymbolKind { value: SymbolKind::S_272_23 },
1715 SymbolKind { value: SymbolKind::S_273_24 },
1716 SymbolKind { value: SymbolKind::S_f_larglist },
1717 SymbolKind { value: SymbolKind::S_lambda_body },
1718 SymbolKind { value: SymbolKind::S_276_25 },
1719 SymbolKind { value: SymbolKind::S_277_26 },
1720 SymbolKind { value: SymbolKind::S_do_block },
1721 SymbolKind { value: SymbolKind::S_279_27 },
1722 SymbolKind { value: SymbolKind::S_block_call },
1723 SymbolKind { value: SymbolKind::S_method_call },
1724 SymbolKind { value: SymbolKind::S_brace_block },
1725 SymbolKind { value: SymbolKind::S_283_28 },
1726 SymbolKind { value: SymbolKind::S_284_29 },
1727 SymbolKind { value: SymbolKind::S_brace_body },
1728 SymbolKind { value: SymbolKind::S_286_30 },
1729 SymbolKind { value: SymbolKind::S_do_body },
1730 SymbolKind { value: SymbolKind::S_288_31 },
1731 SymbolKind { value: SymbolKind::S_case_args },
1732 SymbolKind { value: SymbolKind::S_case_body },
1733 SymbolKind { value: SymbolKind::S_cases },
1734 SymbolKind { value: SymbolKind::S_p_case_body },
1735 SymbolKind { value: SymbolKind::S_293_32 },
1736 SymbolKind { value: SymbolKind::S_294_33 },
1737 SymbolKind { value: SymbolKind::S_p_cases },
1738 SymbolKind { value: SymbolKind::S_p_top_expr },
1739 SymbolKind { value: SymbolKind::S_p_top_expr_body },
1740 SymbolKind { value: SymbolKind::S_p_expr },
1741 SymbolKind { value: SymbolKind::S_p_as },
1742 SymbolKind { value: SymbolKind::S_p_alt },
1743 SymbolKind { value: SymbolKind::S_p_lparen },
1744 SymbolKind { value: SymbolKind::S_p_lbracket },
1745 SymbolKind { value: SymbolKind::S_p_expr_basic },
1746 SymbolKind { value: SymbolKind::S_304_34 },
1747 SymbolKind { value: SymbolKind::S_305_35 },
1748 SymbolKind { value: SymbolKind::S_p_args },
1749 SymbolKind { value: SymbolKind::S_p_args_head },
1750 SymbolKind { value: SymbolKind::S_p_args_tail },
1751 SymbolKind { value: SymbolKind::S_p_find },
1752 SymbolKind { value: SymbolKind::S_p_rest },
1753 SymbolKind { value: SymbolKind::S_p_args_post },
1754 SymbolKind { value: SymbolKind::S_p_arg },
1755 SymbolKind { value: SymbolKind::S_p_kwargs },
1756 SymbolKind { value: SymbolKind::S_p_kwarg },
1757 SymbolKind { value: SymbolKind::S_p_kw },
1758 SymbolKind { value: SymbolKind::S_p_kw_label },
1759 SymbolKind { value: SymbolKind::S_p_kwrest },
1760 SymbolKind { value: SymbolKind::S_p_kwnorest },
1761 SymbolKind { value: SymbolKind::S_p_any_kwrest },
1762 SymbolKind { value: SymbolKind::S_p_value },
1763 SymbolKind { value: SymbolKind::S_p_primitive },
1764 SymbolKind { value: SymbolKind::S_p_variable },
1765 SymbolKind { value: SymbolKind::S_p_var_ref },
1766 SymbolKind { value: SymbolKind::S_p_expr_ref },
1767 SymbolKind { value: SymbolKind::S_p_const },
1768 SymbolKind { value: SymbolKind::S_opt_rescue },
1769 SymbolKind { value: SymbolKind::S_exc_list },
1770 SymbolKind { value: SymbolKind::S_exc_var },
1771 SymbolKind { value: SymbolKind::S_opt_ensure },
1772 SymbolKind { value: SymbolKind::S_literal },
1773 SymbolKind { value: SymbolKind::S_strings },
1774 SymbolKind { value: SymbolKind::S_string },
1775 SymbolKind { value: SymbolKind::S_string1 },
1776 SymbolKind { value: SymbolKind::S_xstring },
1777 SymbolKind { value: SymbolKind::S_regexp },
1778 SymbolKind { value: SymbolKind::S_words },
1779 SymbolKind { value: SymbolKind::S_word_list },
1780 SymbolKind { value: SymbolKind::S_word },
1781 SymbolKind { value: SymbolKind::S_symbols },
1782 SymbolKind { value: SymbolKind::S_symbol_list },
1783 SymbolKind { value: SymbolKind::S_qwords },
1784 SymbolKind { value: SymbolKind::S_qsymbols },
1785 SymbolKind { value: SymbolKind::S_qword_list },
1786 SymbolKind { value: SymbolKind::S_qsym_list },
1787 SymbolKind { value: SymbolKind::S_string_contents },
1788 SymbolKind { value: SymbolKind::S_xstring_contents },
1789 SymbolKind { value: SymbolKind::S_regexp_contents },
1790 SymbolKind { value: SymbolKind::S_string_content },
1791 SymbolKind { value: SymbolKind::S_349_36 },
1792 SymbolKind { value: SymbolKind::S_350_37 },
1793 SymbolKind { value: SymbolKind::S_351_38 },
1794 SymbolKind { value: SymbolKind::S_352_39 },
1795 SymbolKind { value: SymbolKind::S_353_40 },
1796 SymbolKind { value: SymbolKind::S_354_41 },
1797 SymbolKind { value: SymbolKind::S_string_dvar },
1798 SymbolKind { value: SymbolKind::S_symbol },
1799 SymbolKind { value: SymbolKind::S_ssym },
1800 SymbolKind { value: SymbolKind::S_sym },
1801 SymbolKind { value: SymbolKind::S_dsym },
1802 SymbolKind { value: SymbolKind::S_numeric },
1803 SymbolKind { value: SymbolKind::S_simple_numeric },
1804 SymbolKind { value: SymbolKind::S_nonlocal_var },
1805 SymbolKind { value: SymbolKind::S_user_variable },
1806 SymbolKind { value: SymbolKind::S_keyword_variable },
1807 SymbolKind { value: SymbolKind::S_var_ref },
1808 SymbolKind { value: SymbolKind::S_var_lhs },
1809 SymbolKind { value: SymbolKind::S_backref },
1810 SymbolKind { value: SymbolKind::S_superclass },
1811 SymbolKind { value: SymbolKind::S_369_42 },
1812 SymbolKind { value: SymbolKind::S_f_opt_paren_args },
1813 SymbolKind { value: SymbolKind::S_f_paren_args },
1814 SymbolKind { value: SymbolKind::S_f_arglist },
1815 SymbolKind { value: SymbolKind::S_373_43 },
1816 SymbolKind { value: SymbolKind::S_args_tail },
1817 SymbolKind { value: SymbolKind::S_opt_args_tail },
1818 SymbolKind { value: SymbolKind::S_f_args },
1819 SymbolKind { value: SymbolKind::S_args_forward },
1820 SymbolKind { value: SymbolKind::S_f_bad_arg },
1821 SymbolKind { value: SymbolKind::S_f_norm_arg },
1822 SymbolKind { value: SymbolKind::S_f_arg_asgn },
1823 SymbolKind { value: SymbolKind::S_f_arg_item },
1824 SymbolKind { value: SymbolKind::S_f_arg },
1825 SymbolKind { value: SymbolKind::S_f_label },
1826 SymbolKind { value: SymbolKind::S_f_kw },
1827 SymbolKind { value: SymbolKind::S_f_block_kw },
1828 SymbolKind { value: SymbolKind::S_f_block_kwarg },
1829 SymbolKind { value: SymbolKind::S_f_kwarg },
1830 SymbolKind { value: SymbolKind::S_kwrest_mark },
1831 SymbolKind { value: SymbolKind::S_f_no_kwarg },
1832 SymbolKind { value: SymbolKind::S_f_kwrest },
1833 SymbolKind { value: SymbolKind::S_f_opt },
1834 SymbolKind { value: SymbolKind::S_f_block_opt },
1835 SymbolKind { value: SymbolKind::S_f_block_optarg },
1836 SymbolKind { value: SymbolKind::S_f_optarg },
1837 SymbolKind { value: SymbolKind::S_restarg_mark },
1838 SymbolKind { value: SymbolKind::S_f_rest_arg },
1839 SymbolKind { value: SymbolKind::S_blkarg_mark },
1840 SymbolKind { value: SymbolKind::S_f_block_arg },
1841 SymbolKind { value: SymbolKind::S_opt_f_block_arg },
1842 SymbolKind { value: SymbolKind::S_singleton },
1843 SymbolKind { value: SymbolKind::S_401_44 },
1844 SymbolKind { value: SymbolKind::S_assoc_list },
1845 SymbolKind { value: SymbolKind::S_assocs },
1846 SymbolKind { value: SymbolKind::S_assoc },
1847 SymbolKind { value: SymbolKind::S_operation },
1848 SymbolKind { value: SymbolKind::S_operation2 },
1849 SymbolKind { value: SymbolKind::S_operation3 },
1850 SymbolKind { value: SymbolKind::S_dot_or_colon },
1851 SymbolKind { value: SymbolKind::S_call_op },
1852 SymbolKind { value: SymbolKind::S_call_op2 },
1853 SymbolKind { value: SymbolKind::S_opt_terms },
1854 SymbolKind { value: SymbolKind::S_opt_nl },
1855 SymbolKind { value: SymbolKind::S_rparen },
1856 SymbolKind { value: SymbolKind::S_rbracket },
1857 SymbolKind { value: SymbolKind::S_rbrace },
1858 SymbolKind { value: SymbolKind::S_trailer },
1859 SymbolKind { value: SymbolKind::S_term },
1860 SymbolKind { value: SymbolKind::S_terms },
1861 SymbolKind { value: SymbolKind::S_none }
1862 ];
1863
1864 pub(crate) fn get(n: i32) -> &'static SymbolKind {
1865 &Self::VALUES_[i32_to_usize(n)]
1866 }
1867
1868 pub(crate) fn code(&self) -> i32 {
1869 self.value
1870 }
1871
1872 #[allow(non_upper_case_globals)]
1875const yynames_: &'static [&'static str] = &[ "end-of-input", "error", "invalid token", "`class'", "`module'",
1876 "`def'", "`undef'", "`begin'", "`rescue'", "`ensure'", "`end'", "`if'",
1877 "`unless'", "`then'", "`elsif'", "`else'", "`case'", "`when'", "`while'",
1878 "`until'", "`for'", "`break'", "`next'", "`redo'", "`retry'", "`in'",
1879 "`do'", "`do' for condition", "`do' for block", "`do' for lambda",
1880 "`return'", "`yield'", "`super'", "`self'", "`nil'", "`true'", "`false'",
1881 "`and'", "`or'", "`not'", "`if' modifier", "`unless' modifier",
1882 "`while' modifier", "`until' modifier", "`rescue' modifier", "`alias'",
1883 "`defined?'", "`BEGIN'", "`END'", "`__LINE__'", "`__FILE__'",
1884 "`__ENCODING__'", "local variable or method", "method",
1885 "global variable", "instance variable", "constant", "class variable",
1886 "label", "integer literal", "float literal", "rational literal",
1887 "imaginary literal", "char literal", "numbered reference",
1888 "back reference", "literal content", "tREGEXP_END", "tDOT", "backslash",
1889 "escaped space", "escaped horizontal tab", "escaped form feed",
1890 "escaped carriage return", "escaped vertical tab", "unary+", "unary-",
1891 "**", "<=>", "==", "===", "!=", ">=", "<=", "&&", "||", "=~", "!~", "..",
1892 "...", "(..", "(...", "[]", "[]=", "<<", ">>", "&.", "::",
1893 ":: at EXPR_BEG", "operator-assignment", "=>", "(", "( arg", ")", "[",
1894 "{", "{ arg", "*", "**arg", "&", "->", "symbol literal", "string begin",
1895 "backtick literal", "regexp literal", "word list", "verbatim word list",
1896 "symbol list", "verbatim symbol list", "string end", "tRCURLY",
1897 "tSTRING_DBEG", "tSTRING_DVAR", "tLAMBEG", "tLABEL_END", ",",
1898 "{ (tLCURLY)", "}", "[ (tLBRACK2)", "=", "|", "& (tAMPER2)", ">", "<",
1899 "`", "^", "( (tLPAREN2)", "]", ";", " ", "\n", "+", "-", "* (tSTAR2)",
1900 "/", "%", "~", "!", "tLOWEST", "tEH", "tCOLON", "tUMINUS_NUM",
1901 "tLAST_TOKEN", "$accept", "program", "@1", "top_compstmt", "top_stmts",
1902 "top_stmt", "begin_block", "bodystmt", "compstmt", "stmts",
1903 "stmt_or_begin", "$@2", "stmt", "@3", "command_asgn", "command_rhs",
1904 "expr", "@4", "@5", "def_name", "defn_head", "defs_head", "@6",
1905 "expr_value", "expr_value_do", "@7", "command_call", "block_command",
1906 "cmd_brace_block", "@8", "fcall", "command", "mlhs", "mlhs_inner",
1907 "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post", "mlhs_node", "lhs",
1908 "cname", "cpath", "fname", "fitem", "undef_list", "@9", "op", "reswords",
1909 "arg", "@10", "relop", "rel_expr", "arg_value", "aref_args", "arg_rhs",
1910 "paren_args", "opt_paren_args", "opt_call_args", "call_args",
1911 "command_args", "@11", "block_arg", "opt_block_arg", "args", "mrhs_arg",
1912 "mrhs", "primary", "@12", "@13", "@14", "@15", "@16", "@17", "@18",
1913 "@19", "@20", "primary_value", "k_begin", "k_if", "k_unless", "k_while",
1914 "k_until", "k_case", "k_for", "k_class", "k_module", "k_def", "k_do",
1915 "k_do_block", "k_rescue", "k_ensure", "k_when", "k_else", "k_elsif",
1916 "k_end", "k_return", "then", "do", "if_tail", "opt_else", "for_var",
1917 "f_marg", "f_marg_list", "f_margs", "f_rest_marg", "f_any_kwrest",
1918 "f_eq", "@21", "block_args_tail", "opt_block_args_tail",
1919 "excessed_comma", "block_param", "opt_block_param", "block_param_def",
1920 "opt_bv_decl", "bv_decls", "bvar", "lambda", "@22", "@23", "@24",
1921 "f_larglist", "lambda_body", "@25", "@26", "do_block", "@27",
1922 "block_call", "method_call", "brace_block", "@28", "@29", "brace_body",
1923 "@30", "do_body", "@31", "case_args", "case_body", "cases",
1924 "p_case_body", "@32", "@33", "p_cases", "p_top_expr", "p_top_expr_body",
1925 "p_expr", "p_as", "p_alt", "p_lparen", "p_lbracket", "p_expr_basic",
1926 "@34", "@35", "p_args", "p_args_head", "p_args_tail", "p_find", "p_rest",
1927 "p_args_post", "p_arg", "p_kwargs", "p_kwarg", "p_kw", "p_kw_label",
1928 "p_kwrest", "p_kwnorest", "p_any_kwrest", "p_value", "p_primitive",
1929 "p_variable", "p_var_ref", "p_expr_ref", "p_const", "opt_rescue",
1930 "exc_list", "exc_var", "opt_ensure", "literal", "strings", "string",
1931 "string1", "xstring", "regexp", "words", "word_list", "word", "symbols",
1932 "symbol_list", "qwords", "qsymbols", "qword_list", "qsym_list",
1933 "string_contents", "xstring_contents", "regexp_contents",
1934 "string_content", "@36", "@37", "@38", "@39", "@40", "@41",
1935 "string_dvar", "symbol", "ssym", "sym", "dsym", "numeric",
1936 "simple_numeric", "nonlocal_var", "user_variable", "keyword_variable",
1937 "var_ref", "var_lhs", "backref", "superclass", "@42", "f_opt_paren_args",
1938 "f_paren_args", "f_arglist", "@43", "args_tail", "opt_args_tail",
1939 "f_args", "args_forward", "f_bad_arg", "f_norm_arg", "f_arg_asgn",
1940 "f_arg_item", "f_arg", "f_label", "f_kw", "f_block_kw", "f_block_kwarg",
1941 "f_kwarg", "kwrest_mark", "f_no_kwarg", "f_kwrest", "f_opt",
1942 "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
1943 "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
1944 "singleton", "@44", "assoc_list", "assocs", "assoc", "operation",
1945 "operation2", "operation3", "dot_or_colon", "call_op", "call_op2",
1946 "opt_terms", "opt_nl", "rparen", "rbracket", "rbrace", "trailer", "term",
1947 "terms", "none", "<<NULL>>" ] ;
1948
1949 pub(crate) fn name(&self) -> String {
1951 let code: usize = self.code().try_into().unwrap();
1952 Self::yynames_[code].to_owned()
1953 }
1954}
1955
1956
1957const DYMMY_SYMBOL_KIND: SymbolKind = SymbolKind { value: 0 };
1958
1959impl Lexer {
1960 #[allow(non_upper_case_globals, dead_code)]
1963 pub const END_OF_INPUT: i32 = 0;
1964 #[allow(non_upper_case_globals, dead_code)]
1966 pub const YYerror: i32 = 256;
1967 #[allow(non_upper_case_globals, dead_code)]
1969 pub const YYUNDEF: i32 = 257;
1970 #[allow(non_upper_case_globals, dead_code)]
1972 pub const kCLASS: i32 = 258;
1973 #[allow(non_upper_case_globals, dead_code)]
1975 pub const kMODULE: i32 = 259;
1976 #[allow(non_upper_case_globals, dead_code)]
1978 pub const kDEF: i32 = 260;
1979 #[allow(non_upper_case_globals, dead_code)]
1981 pub const kUNDEF: i32 = 261;
1982 #[allow(non_upper_case_globals, dead_code)]
1984 pub const kBEGIN: i32 = 262;
1985 #[allow(non_upper_case_globals, dead_code)]
1987 pub const kRESCUE: i32 = 263;
1988 #[allow(non_upper_case_globals, dead_code)]
1990 pub const kENSURE: i32 = 264;
1991 #[allow(non_upper_case_globals, dead_code)]
1993 pub const kEND: i32 = 265;
1994 #[allow(non_upper_case_globals, dead_code)]
1996 pub const kIF: i32 = 266;
1997 #[allow(non_upper_case_globals, dead_code)]
1999 pub const kUNLESS: i32 = 267;
2000 #[allow(non_upper_case_globals, dead_code)]
2002 pub const kTHEN: i32 = 268;
2003 #[allow(non_upper_case_globals, dead_code)]
2005 pub const kELSIF: i32 = 269;
2006 #[allow(non_upper_case_globals, dead_code)]
2008 pub const kELSE: i32 = 270;
2009 #[allow(non_upper_case_globals, dead_code)]
2011 pub const kCASE: i32 = 271;
2012 #[allow(non_upper_case_globals, dead_code)]
2014 pub const kWHEN: i32 = 272;
2015 #[allow(non_upper_case_globals, dead_code)]
2017 pub const kWHILE: i32 = 273;
2018 #[allow(non_upper_case_globals, dead_code)]
2020 pub const kUNTIL: i32 = 274;
2021 #[allow(non_upper_case_globals, dead_code)]
2023 pub const kFOR: i32 = 275;
2024 #[allow(non_upper_case_globals, dead_code)]
2026 pub const kBREAK: i32 = 276;
2027 #[allow(non_upper_case_globals, dead_code)]
2029 pub const kNEXT: i32 = 277;
2030 #[allow(non_upper_case_globals, dead_code)]
2032 pub const kREDO: i32 = 278;
2033 #[allow(non_upper_case_globals, dead_code)]
2035 pub const kRETRY: i32 = 279;
2036 #[allow(non_upper_case_globals, dead_code)]
2038 pub const kIN: i32 = 280;
2039 #[allow(non_upper_case_globals, dead_code)]
2041 pub const kDO: i32 = 281;
2042 #[allow(non_upper_case_globals, dead_code)]
2044 pub const kDO_COND: i32 = 282;
2045 #[allow(non_upper_case_globals, dead_code)]
2047 pub const kDO_BLOCK: i32 = 283;
2048 #[allow(non_upper_case_globals, dead_code)]
2050 pub const kDO_LAMBDA: i32 = 284;
2051 #[allow(non_upper_case_globals, dead_code)]
2053 pub const kRETURN: i32 = 285;
2054 #[allow(non_upper_case_globals, dead_code)]
2056 pub const kYIELD: i32 = 286;
2057 #[allow(non_upper_case_globals, dead_code)]
2059 pub const kSUPER: i32 = 287;
2060 #[allow(non_upper_case_globals, dead_code)]
2062 pub const kSELF: i32 = 288;
2063 #[allow(non_upper_case_globals, dead_code)]
2065 pub const kNIL: i32 = 289;
2066 #[allow(non_upper_case_globals, dead_code)]
2068 pub const kTRUE: i32 = 290;
2069 #[allow(non_upper_case_globals, dead_code)]
2071 pub const kFALSE: i32 = 291;
2072 #[allow(non_upper_case_globals, dead_code)]
2074 pub const kAND: i32 = 292;
2075 #[allow(non_upper_case_globals, dead_code)]
2077 pub const kOR: i32 = 293;
2078 #[allow(non_upper_case_globals, dead_code)]
2080 pub const kNOT: i32 = 294;
2081 #[allow(non_upper_case_globals, dead_code)]
2083 pub const kIF_MOD: i32 = 295;
2084 #[allow(non_upper_case_globals, dead_code)]
2086 pub const kUNLESS_MOD: i32 = 296;
2087 #[allow(non_upper_case_globals, dead_code)]
2089 pub const kWHILE_MOD: i32 = 297;
2090 #[allow(non_upper_case_globals, dead_code)]
2092 pub const kUNTIL_MOD: i32 = 298;
2093 #[allow(non_upper_case_globals, dead_code)]
2095 pub const kRESCUE_MOD: i32 = 299;
2096 #[allow(non_upper_case_globals, dead_code)]
2098 pub const kALIAS: i32 = 300;
2099 #[allow(non_upper_case_globals, dead_code)]
2101 pub const kDEFINED: i32 = 301;
2102 #[allow(non_upper_case_globals, dead_code)]
2104 pub const klBEGIN: i32 = 302;
2105 #[allow(non_upper_case_globals, dead_code)]
2107 pub const klEND: i32 = 303;
2108 #[allow(non_upper_case_globals, dead_code)]
2110 pub const k__LINE__: i32 = 304;
2111 #[allow(non_upper_case_globals, dead_code)]
2113 pub const k__FILE__: i32 = 305;
2114 #[allow(non_upper_case_globals, dead_code)]
2116 pub const k__ENCODING__: i32 = 306;
2117 #[allow(non_upper_case_globals, dead_code)]
2119 pub const tIDENTIFIER: i32 = 307;
2120 #[allow(non_upper_case_globals, dead_code)]
2122 pub const tFID: i32 = 308;
2123 #[allow(non_upper_case_globals, dead_code)]
2125 pub const tGVAR: i32 = 309;
2126 #[allow(non_upper_case_globals, dead_code)]
2128 pub const tIVAR: i32 = 310;
2129 #[allow(non_upper_case_globals, dead_code)]
2131 pub const tCONSTANT: i32 = 311;
2132 #[allow(non_upper_case_globals, dead_code)]
2134 pub const tCVAR: i32 = 312;
2135 #[allow(non_upper_case_globals, dead_code)]
2137 pub const tLABEL: i32 = 313;
2138 #[allow(non_upper_case_globals, dead_code)]
2140 pub const tINTEGER: i32 = 314;
2141 #[allow(non_upper_case_globals, dead_code)]
2143 pub const tFLOAT: i32 = 315;
2144 #[allow(non_upper_case_globals, dead_code)]
2146 pub const tRATIONAL: i32 = 316;
2147 #[allow(non_upper_case_globals, dead_code)]
2149 pub const tIMAGINARY: i32 = 317;
2150 #[allow(non_upper_case_globals, dead_code)]
2152 pub const tCHAR: i32 = 318;
2153 #[allow(non_upper_case_globals, dead_code)]
2155 pub const tNTH_REF: i32 = 319;
2156 #[allow(non_upper_case_globals, dead_code)]
2158 pub const tBACK_REF: i32 = 320;
2159 #[allow(non_upper_case_globals, dead_code)]
2161 pub const tSTRING_CONTENT: i32 = 321;
2162 #[allow(non_upper_case_globals, dead_code)]
2164 pub const tREGEXP_END: i32 = 322;
2165 #[allow(non_upper_case_globals, dead_code)]
2167 pub const tDOT: i32 = 323;
2168 #[allow(non_upper_case_globals, dead_code)]
2170 pub const tBACKSLASH: i32 = 324;
2171 #[allow(non_upper_case_globals, dead_code)]
2173 pub const tSP: i32 = 325;
2174 #[allow(non_upper_case_globals, dead_code)]
2176 pub const tSLASH_T: i32 = 326;
2177 #[allow(non_upper_case_globals, dead_code)]
2179 pub const tSLASH_F: i32 = 327;
2180 #[allow(non_upper_case_globals, dead_code)]
2182 pub const tSLASH_R: i32 = 328;
2183 #[allow(non_upper_case_globals, dead_code)]
2185 pub const tVTAB: i32 = 329;
2186 #[allow(non_upper_case_globals, dead_code)]
2188 pub const tUPLUS: i32 = 330;
2189 #[allow(non_upper_case_globals, dead_code)]
2191 pub const tUMINUS: i32 = 331;
2192 #[allow(non_upper_case_globals, dead_code)]
2194 pub const tPOW: i32 = 332;
2195 #[allow(non_upper_case_globals, dead_code)]
2197 pub const tCMP: i32 = 333;
2198 #[allow(non_upper_case_globals, dead_code)]
2200 pub const tEQ: i32 = 334;
2201 #[allow(non_upper_case_globals, dead_code)]
2203 pub const tEQQ: i32 = 335;
2204 #[allow(non_upper_case_globals, dead_code)]
2206 pub const tNEQ: i32 = 336;
2207 #[allow(non_upper_case_globals, dead_code)]
2209 pub const tGEQ: i32 = 337;
2210 #[allow(non_upper_case_globals, dead_code)]
2212 pub const tLEQ: i32 = 338;
2213 #[allow(non_upper_case_globals, dead_code)]
2215 pub const tANDOP: i32 = 339;
2216 #[allow(non_upper_case_globals, dead_code)]
2218 pub const tOROP: i32 = 340;
2219 #[allow(non_upper_case_globals, dead_code)]
2221 pub const tMATCH: i32 = 341;
2222 #[allow(non_upper_case_globals, dead_code)]
2224 pub const tNMATCH: i32 = 342;
2225 #[allow(non_upper_case_globals, dead_code)]
2227 pub const tDOT2: i32 = 343;
2228 #[allow(non_upper_case_globals, dead_code)]
2230 pub const tDOT3: i32 = 344;
2231 #[allow(non_upper_case_globals, dead_code)]
2233 pub const tBDOT2: i32 = 345;
2234 #[allow(non_upper_case_globals, dead_code)]
2236 pub const tBDOT3: i32 = 346;
2237 #[allow(non_upper_case_globals, dead_code)]
2239 pub const tAREF: i32 = 347;
2240 #[allow(non_upper_case_globals, dead_code)]
2242 pub const tASET: i32 = 348;
2243 #[allow(non_upper_case_globals, dead_code)]
2245 pub const tLSHFT: i32 = 349;
2246 #[allow(non_upper_case_globals, dead_code)]
2248 pub const tRSHFT: i32 = 350;
2249 #[allow(non_upper_case_globals, dead_code)]
2251 pub const tANDDOT: i32 = 351;
2252 #[allow(non_upper_case_globals, dead_code)]
2254 pub const tCOLON2: i32 = 352;
2255 #[allow(non_upper_case_globals, dead_code)]
2257 pub const tCOLON3: i32 = 353;
2258 #[allow(non_upper_case_globals, dead_code)]
2260 pub const tOP_ASGN: i32 = 354;
2261 #[allow(non_upper_case_globals, dead_code)]
2263 pub const tASSOC: i32 = 355;
2264 #[allow(non_upper_case_globals, dead_code)]
2266 pub const tLPAREN: i32 = 356;
2267 #[allow(non_upper_case_globals, dead_code)]
2269 pub const tLPAREN_ARG: i32 = 357;
2270 #[allow(non_upper_case_globals, dead_code)]
2272 pub const tRPAREN: i32 = 358;
2273 #[allow(non_upper_case_globals, dead_code)]
2275 pub const tLBRACK: i32 = 359;
2276 #[allow(non_upper_case_globals, dead_code)]
2278 pub const tLBRACE: i32 = 360;
2279 #[allow(non_upper_case_globals, dead_code)]
2281 pub const tLBRACE_ARG: i32 = 361;
2282 #[allow(non_upper_case_globals, dead_code)]
2284 pub const tSTAR: i32 = 362;
2285 #[allow(non_upper_case_globals, dead_code)]
2287 pub const tDSTAR: i32 = 363;
2288 #[allow(non_upper_case_globals, dead_code)]
2290 pub const tAMPER: i32 = 364;
2291 #[allow(non_upper_case_globals, dead_code)]
2293 pub const tLAMBDA: i32 = 365;
2294 #[allow(non_upper_case_globals, dead_code)]
2296 pub const tSYMBEG: i32 = 366;
2297 #[allow(non_upper_case_globals, dead_code)]
2299 pub const tSTRING_BEG: i32 = 367;
2300 #[allow(non_upper_case_globals, dead_code)]
2302 pub const tXSTRING_BEG: i32 = 368;
2303 #[allow(non_upper_case_globals, dead_code)]
2305 pub const tREGEXP_BEG: i32 = 369;
2306 #[allow(non_upper_case_globals, dead_code)]
2308 pub const tWORDS_BEG: i32 = 370;
2309 #[allow(non_upper_case_globals, dead_code)]
2311 pub const tQWORDS_BEG: i32 = 371;
2312 #[allow(non_upper_case_globals, dead_code)]
2314 pub const tSYMBOLS_BEG: i32 = 372;
2315 #[allow(non_upper_case_globals, dead_code)]
2317 pub const tQSYMBOLS_BEG: i32 = 373;
2318 #[allow(non_upper_case_globals, dead_code)]
2320 pub const tSTRING_END: i32 = 374;
2321 #[allow(non_upper_case_globals, dead_code)]
2323 pub const tSTRING_DEND: i32 = 375;
2324 #[allow(non_upper_case_globals, dead_code)]
2326 pub const tSTRING_DBEG: i32 = 376;
2327 #[allow(non_upper_case_globals, dead_code)]
2329 pub const tSTRING_DVAR: i32 = 377;
2330 #[allow(non_upper_case_globals, dead_code)]
2332 pub const tLAMBEG: i32 = 378;
2333 #[allow(non_upper_case_globals, dead_code)]
2335 pub const tLABEL_END: i32 = 379;
2336 #[allow(non_upper_case_globals, dead_code)]
2338 pub const tCOMMA: i32 = 380;
2339 #[allow(non_upper_case_globals, dead_code)]
2341 pub const tLCURLY: i32 = 381;
2342 #[allow(non_upper_case_globals, dead_code)]
2344 pub const tRCURLY: i32 = 382;
2345 #[allow(non_upper_case_globals, dead_code)]
2347 pub const tLBRACK2: i32 = 383;
2348 #[allow(non_upper_case_globals, dead_code)]
2350 pub const tEQL: i32 = 384;
2351 #[allow(non_upper_case_globals, dead_code)]
2353 pub const tPIPE: i32 = 385;
2354 #[allow(non_upper_case_globals, dead_code)]
2356 pub const tAMPER2: i32 = 386;
2357 #[allow(non_upper_case_globals, dead_code)]
2359 pub const tGT: i32 = 387;
2360 #[allow(non_upper_case_globals, dead_code)]
2362 pub const tLT: i32 = 388;
2363 #[allow(non_upper_case_globals, dead_code)]
2365 pub const tBACK_REF2: i32 = 389;
2366 #[allow(non_upper_case_globals, dead_code)]
2368 pub const tCARET: i32 = 390;
2369 #[allow(non_upper_case_globals, dead_code)]
2371 pub const tLPAREN2: i32 = 391;
2372 #[allow(non_upper_case_globals, dead_code)]
2374 pub const tRBRACK: i32 = 392;
2375 #[allow(non_upper_case_globals, dead_code)]
2377 pub const tSEMI: i32 = 393;
2378 #[allow(non_upper_case_globals, dead_code)]
2380 pub const tSPACE: i32 = 394;
2381 #[allow(non_upper_case_globals, dead_code)]
2383 pub const tNL: i32 = 395;
2384 #[allow(non_upper_case_globals, dead_code)]
2386 pub const tPLUS: i32 = 396;
2387 #[allow(non_upper_case_globals, dead_code)]
2389 pub const tMINUS: i32 = 397;
2390 #[allow(non_upper_case_globals, dead_code)]
2392 pub const tSTAR2: i32 = 398;
2393 #[allow(non_upper_case_globals, dead_code)]
2395 pub const tDIVIDE: i32 = 399;
2396 #[allow(non_upper_case_globals, dead_code)]
2398 pub const tPERCENT: i32 = 400;
2399 #[allow(non_upper_case_globals, dead_code)]
2401 pub const tTILDE: i32 = 401;
2402 #[allow(non_upper_case_globals, dead_code)]
2404 pub const tBANG: i32 = 402;
2405 #[allow(non_upper_case_globals, dead_code)]
2407 pub const tLOWEST: i32 = 403;
2408 #[allow(non_upper_case_globals, dead_code)]
2410 pub const tEH: i32 = 404;
2411 #[allow(non_upper_case_globals, dead_code)]
2413 pub const tCOLON: i32 = 405;
2414 #[allow(non_upper_case_globals, dead_code)]
2416 pub const tUMINUS_NUM: i32 = 406;
2417 #[allow(non_upper_case_globals, dead_code)]
2419 pub const tLAST_TOKEN: i32 = 407;
2420
2421
2422 #[allow(dead_code)]
2424 const EOF: i32 = Self::END_OF_INPUT;
2425
2426 #[allow(dead_code)]
2428 pub(crate) const TOKEN_NAMES: &'static [&'static str] = & [
2429
2430 "END_OF_INPUT",
2431
2432 "YYerror",
2433
2434 "YYUNDEF",
2435
2436 "kCLASS",
2437
2438 "kMODULE",
2439
2440 "kDEF",
2441
2442 "kUNDEF",
2443
2444 "kBEGIN",
2445
2446 "kRESCUE",
2447
2448 "kENSURE",
2449
2450 "kEND",
2451
2452 "kIF",
2453
2454 "kUNLESS",
2455
2456 "kTHEN",
2457
2458 "kELSIF",
2459
2460 "kELSE",
2461
2462 "kCASE",
2463
2464 "kWHEN",
2465
2466 "kWHILE",
2467
2468 "kUNTIL",
2469
2470 "kFOR",
2471
2472 "kBREAK",
2473
2474 "kNEXT",
2475
2476 "kREDO",
2477
2478 "kRETRY",
2479
2480 "kIN",
2481
2482 "kDO",
2483
2484 "kDO_COND",
2485
2486 "kDO_BLOCK",
2487
2488 "kDO_LAMBDA",
2489
2490 "kRETURN",
2491
2492 "kYIELD",
2493
2494 "kSUPER",
2495
2496 "kSELF",
2497
2498 "kNIL",
2499
2500 "kTRUE",
2501
2502 "kFALSE",
2503
2504 "kAND",
2505
2506 "kOR",
2507
2508 "kNOT",
2509
2510 "kIF_MOD",
2511
2512 "kUNLESS_MOD",
2513
2514 "kWHILE_MOD",
2515
2516 "kUNTIL_MOD",
2517
2518 "kRESCUE_MOD",
2519
2520 "kALIAS",
2521
2522 "kDEFINED",
2523
2524 "klBEGIN",
2525
2526 "klEND",
2527
2528 "k__LINE__",
2529
2530 "k__FILE__",
2531
2532 "k__ENCODING__",
2533
2534 "tIDENTIFIER",
2535
2536 "tFID",
2537
2538 "tGVAR",
2539
2540 "tIVAR",
2541
2542 "tCONSTANT",
2543
2544 "tCVAR",
2545
2546 "tLABEL",
2547
2548 "tINTEGER",
2549
2550 "tFLOAT",
2551
2552 "tRATIONAL",
2553
2554 "tIMAGINARY",
2555
2556 "tCHAR",
2557
2558 "tNTH_REF",
2559
2560 "tBACK_REF",
2561
2562 "tSTRING_CONTENT",
2563
2564 "tREGEXP_END",
2565
2566 "tDOT",
2567
2568 "tBACKSLASH",
2569
2570 "tSP",
2571
2572 "tSLASH_T",
2573
2574 "tSLASH_F",
2575
2576 "tSLASH_R",
2577
2578 "tVTAB",
2579
2580 "tUPLUS",
2581
2582 "tUMINUS",
2583
2584 "tPOW",
2585
2586 "tCMP",
2587
2588 "tEQ",
2589
2590 "tEQQ",
2591
2592 "tNEQ",
2593
2594 "tGEQ",
2595
2596 "tLEQ",
2597
2598 "tANDOP",
2599
2600 "tOROP",
2601
2602 "tMATCH",
2603
2604 "tNMATCH",
2605
2606 "tDOT2",
2607
2608 "tDOT3",
2609
2610 "tBDOT2",
2611
2612 "tBDOT3",
2613
2614 "tAREF",
2615
2616 "tASET",
2617
2618 "tLSHFT",
2619
2620 "tRSHFT",
2621
2622 "tANDDOT",
2623
2624 "tCOLON2",
2625
2626 "tCOLON3",
2627
2628 "tOP_ASGN",
2629
2630 "tASSOC",
2631
2632 "tLPAREN",
2633
2634 "tLPAREN_ARG",
2635
2636 "tRPAREN",
2637
2638 "tLBRACK",
2639
2640 "tLBRACE",
2641
2642 "tLBRACE_ARG",
2643
2644 "tSTAR",
2645
2646 "tDSTAR",
2647
2648 "tAMPER",
2649
2650 "tLAMBDA",
2651
2652 "tSYMBEG",
2653
2654 "tSTRING_BEG",
2655
2656 "tXSTRING_BEG",
2657
2658 "tREGEXP_BEG",
2659
2660 "tWORDS_BEG",
2661
2662 "tQWORDS_BEG",
2663
2664 "tSYMBOLS_BEG",
2665
2666 "tQSYMBOLS_BEG",
2667
2668 "tSTRING_END",
2669
2670 "tSTRING_DEND",
2671
2672 "tSTRING_DBEG",
2673
2674 "tSTRING_DVAR",
2675
2676 "tLAMBEG",
2677
2678 "tLABEL_END",
2679
2680 "tCOMMA",
2681
2682 "tLCURLY",
2683
2684 "tRCURLY",
2685
2686 "tLBRACK2",
2687
2688 "tEQL",
2689
2690 "tPIPE",
2691
2692 "tAMPER2",
2693
2694 "tGT",
2695
2696 "tLT",
2697
2698 "tBACK_REF2",
2699
2700 "tCARET",
2701
2702 "tLPAREN2",
2703
2704 "tRBRACK",
2705
2706 "tSEMI",
2707
2708 "tSPACE",
2709
2710 "tNL",
2711
2712 "tPLUS",
2713
2714 "tMINUS",
2715
2716 "tSTAR2",
2717
2718 "tDIVIDE",
2719
2720 "tPERCENT",
2721
2722 "tTILDE",
2723
2724 "tBANG",
2725
2726 "tLOWEST",
2727
2728 "tEH",
2729
2730 "tCOLON",
2731
2732 "tUMINUS_NUM",
2733
2734 "tLAST_TOKEN",
2735
2736]
2737;
2738}
2739
2740
2741impl Parser {
2742
2743 fn yycdebug(&self, s: &str) {
2744 if self.is_debug() {
2745 eprintln!("{}", s);
2746 }
2747 }
2748
2749}
2750
2751type YYValue = Value ;
2753
2754#[derive(Debug)]
2755struct YYStackItem {
2756 state: i32,
2757 value: YYValue,
2758 loc: YYLoc,
2759}
2760
2761#[derive(Debug)]
2762pub struct YYStack {
2763 stack: Vec<YYStackItem>,
2764}
2765
2766impl YYStack {
2767 pub(crate) fn new() -> Self {
2768 Self {
2769 stack: Vec::with_capacity(20),
2770 }
2771 }
2772
2773 pub(crate) fn push(&mut self, state: i32, value: YYValue, loc: YYLoc) {
2774 self.stack.push(YYStackItem { state, value, loc });
2775 }
2776
2777 pub(crate) fn pop(&mut self) {
2778 self.stack.pop();
2779 }
2780
2781 pub(crate) fn pop_n(&mut self, num: usize) {
2782 let len = self.stack.len() - num;
2783 self.stack.truncate(len);
2784 }
2785
2786 pub(crate) fn state_at(&self, i: usize) -> i32 {
2787 self.stack[self.len() - 1 - i].state
2788 }
2789
2790 pub(crate) fn location_at(&self, i: usize) -> &YYLoc {
2791 &self.stack[self.len() - 1 - i].loc
2792 }
2793
2794 pub(crate) fn borrow_value_at(&self, i: usize) -> &YYValue {
2795 &self.stack[self.len() - 1 - i].value
2796 }
2797
2798 pub(crate) fn owned_value_at(&mut self, i: usize) -> YYValue {
2799 let len = self.len();
2800 std::mem::take(&mut self.stack[len - 1 - i].value)
2801 }
2802
2803 pub(crate) fn len(&self) -> usize {
2804 self.stack.len()
2805 }
2806}
2807
2808impl std::fmt::Display for YYStack {
2809 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2810 let states = self.stack.iter().map(|e| e.state.to_string()).collect::<Vec<String>>().join(" ");
2811 let values = self.stack.iter().map(|e| format!("{:?}", e.value)).collect::<Vec<String>>().join(" ");
2812 f.write_fmt(format_args!("Stack now states = {} / values = {:?} ", states, values))
2813 }
2814}
2815
2816impl Parser {
2817 pub(crate) const YYACCEPT: i32 = 0;
2820
2821 pub(crate) const YYABORT: i32 = 1;
2824
2825 pub(crate) const YYERROR: i32 = 2;
2828
2829 pub(crate) const YYERRLAB: i32 = 3;
2832 pub(crate) const YYNEWSTATE: i32 = 4;
2833 pub(crate) const YYDEFAULT: i32 = 5;
2834 pub(crate) const YYREDUCE: i32 = 6;
2835 pub(crate) const YYERRLAB1: i32 = 7;
2836 #[allow(dead_code)]
2837 pub(crate) const YYRETURN: i32 = 8;
2838
2839 #[allow(dead_code)]
2843 pub(crate) fn recovering(&self) -> bool {
2844 self.yyerrstatus_ == 0
2845 }
2846
2847 fn yy_lr_goto_state(&self, yystate: i32, yysym: i32) -> i32 {
2851 let idx = i32_to_usize(yysym - Self::YYNTOKENS_);
2852 let yyr = Self::yypgoto_[idx] + yystate;
2853 if (0..=Self::YYLAST_).contains(&yyr) {
2854 let yyr = i32_to_usize(yyr);
2855 if Self::yycheck_[yyr] == yystate {
2856 return Self::yytable_[yyr];
2857 }
2858 }
2859 Self::yydefgoto_[idx]
2860 }
2861
2862 fn yyaction(&mut self, yyn: i32, yystack: &mut YYStack, yylen: &mut usize) -> Result<i32, ()> {
2863 #[allow(unused_assignments)]
2870 let mut yyval: YYValue = YYValue::new_uninitialized();
2871 let yyloc: YYLoc = make_yylloc(yystack, *yylen);
2872
2873 self.yy_reduce_print(yyn, yystack);
2874
2875 match yyn {
2876 2 => {
2879 self.yylexer.lex_state.set(EXPR_BEG);
2880 self.current_arg_stack.push(None);
2881 self.max_numparam_stack.push(true);
2882
2883 yyval = Value::None;
2884 },
2885
2886
2887 3 => {
2890 let top_compstmt = MaybeNode::from(yystack.owned_value_at(0));
2891 self.result = top_compstmt.map(Box::new);
2892 yyval = Value::None;
2893
2894 self.current_arg_stack.pop();
2895 self.max_numparam_stack.pop();
2896 },
2897
2898
2899 4 => {
2902 yyval = Value::MaybeNode(
2904 self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
2905 );
2906 },
2907
2908
2909 5 => {
2912 yyval = Value::NodeList( Box::default() );
2913 },
2914
2915
2916 6 => {
2919 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
2920 },
2921
2922
2923 7 => {
2926 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
2927 nodes.push( Node::from(yystack.owned_value_at(0)) );
2928 yyval = Value::NodeList( nodes );
2929 },
2930
2931
2932 8 => {
2935 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
2936 },
2937
2938
2939 9 => {
2942 yyval = yystack.owned_value_at(0);
2943 },
2944
2945
2946 10 => {
2949 let BeginBlock { begin_t, body, end_t } = BeginBlock::from(yystack.owned_value_at(0));
2950 yyval = Value::Node(
2951 self.builder.preexe( Token::from(yystack.owned_value_at(1)), begin_t, body, end_t)
2952 );
2953 },
2954
2955
2956 11 => {
2959 yyval = Value::new_begin_block(
2960 BeginBlock {
2961 begin_t: Token::from(yystack.owned_value_at(2)),
2962 body: MaybeBoxedNode::from(yystack.owned_value_at(1)),
2963 end_t: Token::from(yystack.owned_value_at(0))
2964 }
2965 );
2966 },
2967
2968
2969 12 => {
2972 let compound_stmt = MaybeBoxedNode::from(yystack.owned_value_at(4));
2973 let rescue_bodies = NodeList::from(yystack.owned_value_at(3));
2974 if rescue_bodies.is_empty() {
2975 return self.yyerror(yystack.location_at (2), DiagnosticMessage::ElseWithoutRescue {});
2976 }
2977
2978 let else_ = Some(( Token::from(yystack.owned_value_at(2)), MaybeBoxedNode::from(yystack.owned_value_at(1)) ));
2979 let ensure = OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
2980
2981 yyval = Value::MaybeNode(
2982 self.builder.begin_body(
2983 compound_stmt,
2984 rescue_bodies,
2985 else_,
2986 ensure
2987 )
2988 );
2989 },
2990
2991
2992 13 => {
2995 let compound_stmt = MaybeBoxedNode::from(yystack.owned_value_at(2));
2996 let rescue_bodies = NodeList::from(yystack.owned_value_at(1));
2997 let ensure = OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
2998
2999 yyval = Value::MaybeNode(
3000 self.builder.begin_body(
3001 compound_stmt,
3002 rescue_bodies,
3003 None,
3004 ensure
3005 )
3006 );
3007 },
3008
3009
3010 14 => {
3013 yyval = Value::MaybeNode(
3015 self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
3016 );
3017 },
3018
3019
3020 15 => {
3023 yyval = Value::NodeList( Box::default() );
3024 },
3025
3026
3027 16 => {
3030 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
3031 },
3032
3033
3034 17 => {
3037 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
3038 nodes.push( Node::from(yystack.owned_value_at(0)) );
3039 yyval = Value::NodeList(nodes);
3040 },
3041
3042
3043 18 => {
3046 yyval = Value::NodeList( Box::default() );
3047 },
3048
3049
3050 19 => {
3053 yyval = yystack.owned_value_at(0);
3054 },
3055
3056
3057 20 => {
3060 return self.yyerror(yystack.location_at (0), DiagnosticMessage::BeginNotAtTopLevel {});
3061 },
3062
3063
3064 21 => {
3067 yyval = Value::None;
3068 },
3069
3070
3071 22 => {
3074 self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
3075 yyval = Value::None;
3076 },
3077
3078
3079 23 => {
3082 yyval = Value::Node(
3083 self.builder.alias( Token::from(yystack.owned_value_at(3)), BoxedNode::from(yystack.owned_value_at(2)), BoxedNode::from(yystack.owned_value_at(0)))
3084 );
3085 },
3086
3087
3088 24 => {
3091 yyval = Value::Node(
3092 self.builder.alias(
3093 Token::from(yystack.owned_value_at(2)),
3094 self.builder.gvar( Token::from(yystack.owned_value_at(1))),
3095 self.builder.gvar( Token::from(yystack.owned_value_at(0))),
3096 )
3097 )
3098 },
3099
3100
3101 25 => {
3104 yyval = Value::Node(
3105 self.builder.alias(
3106 Token::from(yystack.owned_value_at(2)),
3107 self.builder.gvar( Token::from(yystack.owned_value_at(1))),
3108 self.builder.back_ref( Token::from(yystack.owned_value_at(0))),
3109 )
3110 )
3111 },
3112
3113
3114 26 => {
3117 return self.yyerror(yystack.location_at (0), DiagnosticMessage::AliasNthRef {});
3118 },
3119
3120
3121 27 => {
3124 yyval = Value::Node(
3125 self.builder.undef_method(
3126 Token::from(yystack.owned_value_at(1)),
3127 NodeList::from(yystack.owned_value_at(0))
3128 )
3129 )
3130 },
3131
3132
3133 28 => {
3136 yyval = Value::Node(
3137 self.builder.condition_mod(
3138 Some( BoxedNode::from(yystack.owned_value_at(2))),
3139 None,
3140 Token::from(yystack.owned_value_at(1)),
3141 BoxedNode::from(yystack.owned_value_at(0)),
3142 )
3143 );
3144 },
3145
3146
3147 29 => {
3150 yyval = Value::Node(
3151 self.builder.condition_mod(
3152 None,
3153 Some( BoxedNode::from(yystack.owned_value_at(2))),
3154 Token::from(yystack.owned_value_at(1)),
3155 BoxedNode::from(yystack.owned_value_at(0)),
3156 )
3157 );
3158 },
3159
3160
3161 30 => {
3164 yyval = Value::Node(
3165 self.builder.loop_mod(
3166 LoopType::While,
3167 BoxedNode::from(yystack.owned_value_at(2)),
3168 Token::from(yystack.owned_value_at(1)),
3169 BoxedNode::from(yystack.owned_value_at(0)),
3170 )
3171 );
3172 },
3173
3174
3175 31 => {
3178 yyval = Value::Node(
3179 self.builder.loop_mod(
3180 LoopType::Until,
3181 BoxedNode::from(yystack.owned_value_at(2)),
3182 Token::from(yystack.owned_value_at(1)),
3183 BoxedNode::from(yystack.owned_value_at(0)),
3184 )
3185 );
3186 },
3187
3188
3189 32 => {
3192 let rescue_body = self.builder.rescue_body(
3193 Token::from(yystack.owned_value_at(1)),
3194 None,
3195 None,
3196 None,
3197 None,
3198 Some( BoxedNode::from(yystack.owned_value_at(0)))
3199 );
3200
3201 yyval = Value::Node(
3202 self.builder.begin_body(
3203 Some( BoxedNode::from(yystack.owned_value_at(2))),
3204 vec![*rescue_body],
3205 None,
3206 None,
3207 ).expect("expected begin_body to return Some (compound_stmt was given)")
3208 );
3209 },
3210
3211
3212 33 => {
3215 if self.context.in_def() {
3216 self.warn(yystack.location_at (3), DiagnosticMessage::EndInMethod {});
3217 }
3218
3219 yyval = Value::Node(
3220 self.builder.postexe(
3221 Token::from(yystack.owned_value_at(3)),
3222 Token::from(yystack.owned_value_at(2)),
3223 MaybeBoxedNode::from(yystack.owned_value_at(1)),
3224 Token::from(yystack.owned_value_at(0)),
3225 )
3226 );
3227 },
3228
3229
3230 34 => {
3233 yyval = yystack.owned_value_at(0);
3234 },
3235
3236
3237 35 => {
3240 let command_call = BoxedNode::from(yystack.owned_value_at(0));
3241 self.value_expr(&command_call)?;
3242
3243 yyval = Value::Node(
3244 self.builder.multi_assign(
3245 BoxedNode::from(yystack.owned_value_at(2)),
3246 Token::from(yystack.owned_value_at(1)),
3247 command_call
3248 )
3249 );
3250 },
3251
3252
3253 36 => {
3256 let mrhs = self.builder.array(
3257 None,
3258 NodeList::from(yystack.owned_value_at(0)),
3259 None
3260 );
3261 self.value_expr(&mrhs)?;
3262
3263 yyval = Value::Node(
3264 self.builder.assign(
3265 BoxedNode::from(yystack.owned_value_at(2)),
3266 Token::from(yystack.owned_value_at(1)),
3267 mrhs
3268 )
3269 );
3270 },
3271
3272
3273 37 => {
3276 let rescue_body = self.builder.rescue_body(
3277 Token::from(yystack.owned_value_at(1)),
3278 None,
3279 None,
3280 None,
3281 None,
3282 Some( BoxedNode::from(yystack.owned_value_at(0)))
3283 );
3284
3285 let mrhs_arg = BoxedNode::from(yystack.owned_value_at(2));
3286 self.value_expr(&mrhs_arg)?;
3287
3288 let begin_body = self.builder.begin_body(
3289 Some(mrhs_arg),
3290 vec![ *rescue_body ],
3291 None,
3292 None,
3293 ).expect("expected begin_body to return Some (compound_stmt was given)");
3294
3295 yyval = Value::Node(
3296 self.builder.multi_assign(
3297 BoxedNode::from(yystack.owned_value_at(4)),
3298 Token::from(yystack.owned_value_at(3)),
3299 begin_body
3300 )
3301 );
3302 },
3303
3304
3305 38 => {
3308 yyval = Value::Node(
3309 self.builder.multi_assign(
3310 BoxedNode::from(yystack.owned_value_at(2)),
3311 Token::from(yystack.owned_value_at(1)),
3312 BoxedNode::from(yystack.owned_value_at(0))
3313 )
3314 );
3315 },
3316
3317
3318 39 => {
3321 yyval = yystack.owned_value_at(0);
3322 },
3323
3324
3325 40 => {
3328 yyval = Value::Node(
3329 self.builder.assign(
3330 BoxedNode::from(yystack.owned_value_at(2)),
3331 Token::from(yystack.owned_value_at(1)),
3332 BoxedNode::from(yystack.owned_value_at(0))
3333 )
3334 );
3335 },
3336
3337
3338 41 => {
3341 yyval = Value::Node(
3342 self.builder.op_assign(
3343 BoxedNode::from(yystack.owned_value_at(2)),
3344 Token::from(yystack.owned_value_at(1)),
3345 BoxedNode::from(yystack.owned_value_at(0))
3346 )?
3347 );
3348 },
3349
3350
3351 42 => {
3354 yyval = Value::Node(
3355 self.builder.op_assign(
3356 self.builder.index(
3357 BoxedNode::from(yystack.owned_value_at(5)),
3358 Token::from(yystack.owned_value_at(4)),
3359 NodeList::from(yystack.owned_value_at(3)),
3360 Token::from(yystack.owned_value_at(2))
3361 ),
3362 Token::from(yystack.owned_value_at(1)),
3363 BoxedNode::from(yystack.owned_value_at(0))
3364 )?
3365 );
3366 },
3367
3368
3369 43 => {
3372 yyval = Value::Node(
3373 self.builder.op_assign(
3374 self.builder.call_method(
3375 Some( BoxedNode::from(yystack.owned_value_at(4))),
3376 Some( Token::from(yystack.owned_value_at(3))),
3377 Some( Token::from(yystack.owned_value_at(2))),
3378 None,
3379 vec![],
3380 None
3381 ),
3382 Token::from(yystack.owned_value_at(1)),
3383 BoxedNode::from(yystack.owned_value_at(0))
3384 )?
3385 );
3386 },
3387
3388
3389 44 => {
3392 yyval = Value::Node(
3393 self.builder.op_assign(
3394 self.builder.call_method(
3395 Some( BoxedNode::from(yystack.owned_value_at(4))),
3396 Some( Token::from(yystack.owned_value_at(3))),
3397 Some( Token::from(yystack.owned_value_at(2))),
3398 None,
3399 vec![],
3400 None
3401 ),
3402 Token::from(yystack.owned_value_at(1)),
3403 BoxedNode::from(yystack.owned_value_at(0))
3404 )?
3405 );
3406 },
3407
3408
3409 45 => {
3412 let const_ = self.builder.const_op_assignable(
3413 self.builder.const_fetch(
3414 BoxedNode::from(yystack.owned_value_at(4)),
3415 Token::from(yystack.owned_value_at(3)),
3416 Token::from(yystack.owned_value_at(2))
3417 )
3418 );
3419 yyval = Value::Node(
3420 self.builder.op_assign(
3421 const_,
3422 Token::from(yystack.owned_value_at(1)),
3423 BoxedNode::from(yystack.owned_value_at(0))
3424 )?
3425 );
3426 },
3427
3428
3429 46 => {
3432 yyval = Value::Node(
3433 self.builder.op_assign(
3434 self.builder.call_method(
3435 Some( BoxedNode::from(yystack.owned_value_at(4))),
3436 Some( Token::from(yystack.owned_value_at(3))),
3437 Some( Token::from(yystack.owned_value_at(2))),
3438 None,
3439 vec![],
3440 None
3441 ),
3442 Token::from(yystack.owned_value_at(1)),
3443 BoxedNode::from(yystack.owned_value_at(0))
3444 )?
3445 );
3446 },
3447
3448
3449 47 => {
3452 let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
3453 let TokenWithContext { token: name_t, ctx } = name_t;
3454 self.validate_endless_method_name(&name_t)?;
3455
3456 yyval = Value::Node(
3457 self.builder.def_endless_method(
3458 def_t,
3459 name_t,
3460 MaybeBoxedNode::from(yystack.owned_value_at(2)),
3461 Token::from(yystack.owned_value_at(1)),
3462 Some( BoxedNode::from(yystack.owned_value_at(0))),
3463 )?
3464 );
3465
3466 self.local_pop();
3467 self.current_arg_stack.pop();
3468 self.context.set_in_def(ctx.in_def());
3469 },
3470
3471
3472 48 => {
3475 let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(5));
3476 let TokenWithContext { token: name_t, ctx } = name_t;
3477 self.validate_endless_method_name(&name_t)?;
3478
3479 let rescue_body = self.builder.rescue_body(
3480 Token::from(yystack.owned_value_at(1)),
3481 None,
3482 None,
3483 None,
3484 None,
3485 Some( BoxedNode::from(yystack.owned_value_at(0))),
3486 );
3487
3488 let method_body = self.builder.begin_body(
3489 Some( BoxedNode::from(yystack.owned_value_at(2))),
3490 vec![ *rescue_body ],
3491 None,
3492 None,
3493 );
3494
3495 yyval = Value::Node(
3496 self.builder.def_endless_method(
3497 def_t,
3498 name_t,
3499 MaybeBoxedNode::from(yystack.owned_value_at(4)),
3500 Token::from(yystack.owned_value_at(3)),
3501 method_body,
3502 )?
3503 );
3504
3505 self.local_pop();
3506 self.current_arg_stack.pop();
3507 self.context.set_in_def(ctx.in_def());
3508 },
3509
3510
3511 49 => {
3514 let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
3515 let TokenWithContext { token: name_t, ctx } = name_t;
3516 self.validate_endless_method_name(&name_t)?;
3517
3518 yyval = Value::Node(
3519 self.builder.def_endless_singleton(
3520 def_t,
3521 definee,
3522 dot_t,
3523 name_t,
3524 MaybeBoxedNode::from(yystack.owned_value_at(2)),
3525 Token::from(yystack.owned_value_at(1)),
3526 Some( BoxedNode::from(yystack.owned_value_at(0))),
3527 )?
3528 );
3529
3530 self.local_pop();
3531 self.current_arg_stack.pop();
3532 self.context.set_in_def(ctx.in_def());
3533 },
3534
3535
3536 50 => {
3539 let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(5));
3540 let TokenWithContext { token: name_t, ctx } = name_t;
3541 self.validate_endless_method_name(&name_t)?;
3542
3543 let rescue_body = self.builder.rescue_body(
3544 Token::from(yystack.owned_value_at(1)),
3545 None,
3546 None,
3547 None,
3548 None,
3549 Some( BoxedNode::from(yystack.owned_value_at(0))),
3550 );
3551
3552 let method_body = self.builder.begin_body(
3553 Some( BoxedNode::from(yystack.owned_value_at(2))),
3554 vec![ *rescue_body ],
3555 None,
3556 None,
3557 );
3558
3559 yyval = Value::Node(
3560 self.builder.def_endless_singleton(
3561 def_t,
3562 definee,
3563 dot_t,
3564 name_t,
3565 MaybeBoxedNode::from(yystack.owned_value_at(4)),
3566 Token::from(yystack.owned_value_at(3)),
3567 method_body,
3568 )?
3569 );
3570
3571 self.local_pop();
3572 self.current_arg_stack.pop();
3573 self.context.set_in_def(ctx.in_def());
3574 },
3575
3576
3577 51 => {
3580 yyval = Value::Node(
3581 self.builder.op_assign(
3582 BoxedNode::from(yystack.owned_value_at(2)),
3583 Token::from(yystack.owned_value_at(1)),
3584 BoxedNode::from(yystack.owned_value_at(0))
3585 )?
3586 );
3587 },
3588
3589
3590 52 => {
3593 let command_call = BoxedNode::from(yystack.owned_value_at(0));
3594 self.value_expr(&command_call)?;
3595 yyval = Value::Node(command_call);
3596 },
3597
3598
3599 53 => {
3602 let command_call = BoxedNode::from(yystack.owned_value_at(2));
3603 self.value_expr(&command_call)?;
3604
3605 let rescue_body = self.builder.rescue_body(
3606 Token::from(yystack.owned_value_at(1)),
3607 None,
3608 None,
3609 None,
3610 None,
3611 Some( BoxedNode::from(yystack.owned_value_at(0)))
3612 );
3613
3614 yyval = Value::Node(
3615 self.builder.begin_body(
3616 Some(command_call),
3617 vec![ *rescue_body ],
3618 None,
3619 None,
3620 ).expect("expected begin_body to return Some (compound_stmt was given)")
3621 );
3622 },
3623
3624
3625 54 => {
3628 yyval = yystack.owned_value_at(0);
3629 },
3630
3631
3632 55 => {
3635 yyval = yystack.owned_value_at(0);
3636 },
3637
3638
3639 56 => {
3642 yyval = Value::Node(
3643 self.builder.logical_op(
3644 LogicalOp::And,
3645 BoxedNode::from(yystack.owned_value_at(2)),
3646 Token::from(yystack.owned_value_at(1)),
3647 BoxedNode::from(yystack.owned_value_at(0))
3648 )?
3649 );
3650 },
3651
3652
3653 57 => {
3656 yyval = Value::Node(
3657 self.builder.logical_op(
3658 LogicalOp::Or,
3659 BoxedNode::from(yystack.owned_value_at(2)),
3660 Token::from(yystack.owned_value_at(1)),
3661 BoxedNode::from(yystack.owned_value_at(0))
3662 )?
3663 );
3664 },
3665
3666
3667 58 => {
3670 yyval = Value::Node(
3671 self.builder.not_op(
3672 Token::from(yystack.owned_value_at(2)),
3673 None,
3674 Some( BoxedNode::from(yystack.owned_value_at(0))),
3675 None
3676 )?
3677 );
3678 },
3679
3680
3681 59 => {
3684 yyval = Value::Node(
3685 self.builder.not_op(
3686 Token::from(yystack.owned_value_at(1)),
3687 None,
3688 Some( BoxedNode::from(yystack.owned_value_at(0))),
3689 None
3690 )?
3691 );
3692 },
3693
3694
3695 60 => {
3698 let arg = match yystack.borrow_value_at(1) {
3699 Value::Node(node) => node,
3700 other => unreachable!("expected Node, got {:?}", other)
3701 };
3702 self.value_expr(arg)?;
3703
3704 self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
3705 self.yylexer.command_start = false;
3706 self.pattern_variables.push();
3707 self.pattern_hash_keys.push();
3708
3709 yyval = Value::Bool(self.context.in_kwarg());
3710 self.context.set_in_kwarg(true);
3711 },
3712
3713
3714 61 => {
3717 self.pattern_variables.pop();
3718 self.pattern_hash_keys.pop();
3719 self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(1)));
3720
3721 yyval = Value::Node(
3722 self.builder.match_pattern(
3723 BoxedNode::from(yystack.owned_value_at(3)),
3724 Token::from(yystack.owned_value_at(2)),
3725 BoxedNode::from(yystack.owned_value_at(0))
3726 )
3727 );
3728 },
3729
3730
3731 62 => {
3734 let arg = match yystack.borrow_value_at(1) {
3735 Value::Node(node) => node,
3736 other => unreachable!("expected Node, got {:?}", other)
3737 };
3738 self.value_expr(arg)?;
3739
3740 self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
3741 self.yylexer.command_start = false;
3742 self.pattern_variables.push();
3743 self.pattern_hash_keys.push();
3744
3745 yyval = Value::Bool(self.context.in_kwarg());
3746 self.context.set_in_kwarg(true);
3747 },
3748
3749
3750 63 => {
3753 self.pattern_variables.pop();
3754 self.pattern_hash_keys.pop();
3755 self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(1)));
3756
3757 yyval = Value::Node(
3758 self.builder.match_pattern_p(
3759 BoxedNode::from(yystack.owned_value_at(3)),
3760 Token::from(yystack.owned_value_at(2)),
3761 BoxedNode::from(yystack.owned_value_at(0))
3762 )
3763 );
3764 },
3765
3766
3767 64 => {
3770 yyval = yystack.owned_value_at(0);
3771 },
3772
3773
3774 65 => {
3777 self.local_push();
3778 self.current_arg_stack.push(None);
3779
3780 yyval = Value::TokenWithContext(
3781 Box::new(
3782 TokenWithContext {
3783 token: Token::from(yystack.owned_value_at(0)),
3784 ctx: self.context.dump()
3785 }
3786 )
3787 );
3788
3789 self.context.set_in_def(true);
3790 },
3791
3792
3793 66 => {
3796 yyval = Value::new_defn_head(
3797 DefnHead {
3798 def_t: Token::from(yystack.owned_value_at(1)),
3799 name_t: TokenWithContext::from(yystack.owned_value_at(0))
3800 }
3801 );
3802 },
3803
3804
3805 67 => {
3808 self.yylexer.lex_state.set(EXPR_FNAME);
3809 self.context.set_in_argdef(true);
3810 yyval = Value::None;
3811 },
3812
3813
3814 68 => {
3817 self.yylexer.lex_state.set(EXPR_ENDFN|EXPR_LABEL);
3818
3819 yyval = Value::new_defs_head(
3820 DefsHead {
3821 def_t: Token::from(yystack.owned_value_at(4)),
3822 definee: BoxedNode::from(yystack.owned_value_at(3)),
3823 dot_t: Token::from(yystack.owned_value_at(2)),
3824 name_t: TokenWithContext::from(yystack.owned_value_at(0))
3825 }
3826 );
3827 },
3828
3829
3830 69 => {
3833 let expr = BoxedNode::from(yystack.owned_value_at(0));
3834 self.value_expr(&expr)?;
3835 yyval = Value::Node(expr);
3836 },
3837
3838
3839 70 => {
3842 self.yylexer.cond.push(true);
3843 yyval = Value::None;
3844 },
3845
3846
3847 71 => {
3850 self.yylexer.cond.pop();
3851
3852 yyval = Value::new_expr_value_do(
3853 ExprValueDo {
3854 value: BoxedNode::from(yystack.owned_value_at(1)),
3855 do_t: Token::from(yystack.owned_value_at(0))
3856 }
3857 );
3858 },
3859
3860
3861 72 => {
3864 yyval = yystack.owned_value_at(0);
3865 },
3866
3867
3868 73 => {
3871 yyval = yystack.owned_value_at(0);
3872 },
3873
3874
3875 74 => {
3878 yyval = yystack.owned_value_at(0);
3879 },
3880
3881
3882 75 => {
3885 yyval = Value::Node(
3886 self.builder.call_method(
3887 Some( BoxedNode::from(yystack.owned_value_at(3))),
3888 Some( Token::from(yystack.owned_value_at(2))),
3889 Some( Token::from(yystack.owned_value_at(1))),
3890 None,
3891 NodeList::from(yystack.owned_value_at(0)),
3892 None
3893 )
3894 );
3895 },
3896
3897
3898 76 => {
3901 yyval = Value::Context(self.context.dump());
3902 self.context.set_in_block(true);
3903 },
3904
3905
3906 77 => {
3909 self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
3910 let BraceBody { args_type, body } = BraceBody::from(yystack.owned_value_at(1));
3911 yyval = Value::new_cmd_brace_block(
3912 CmdBraceBlock {
3913 begin_t: Token::from(yystack.owned_value_at(3)),
3914 args_type,
3915 body,
3916 end_t: Token::from(yystack.owned_value_at(0))
3917 }
3918 );
3919 },
3920
3921
3922 78 => {
3925 yyval = yystack.owned_value_at(0);
3926 },
3927
3928
3929 79 => {
3932 yyval = Value::Node(
3933 self.builder.call_method(
3934 None,
3935 None,
3936 Some( Token::from(yystack.owned_value_at(1))),
3937 None,
3938 NodeList::from(yystack.owned_value_at(0)),
3939 None
3940 )
3941 );
3942 },
3943
3944
3945 80 => {
3948 let method_call = self.builder.call_method(
3949 None,
3950 None,
3951 Some( Token::from(yystack.owned_value_at(2))),
3952 None,
3953 NodeList::from(yystack.owned_value_at(1)),
3954 None
3955 );
3956 let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
3957
3958 yyval = Value::Node(
3959 self.builder.block(
3960 method_call,
3961 begin_t,
3962 args_type,
3963 body,
3964 end_t
3965 )?
3966 );
3967 },
3968
3969
3970 81 => {
3973 yyval = Value::Node(
3974 self.builder.call_method(
3975 Some( BoxedNode::from(yystack.owned_value_at(3))),
3976 Some( Token::from(yystack.owned_value_at(2))),
3977 Some( Token::from(yystack.owned_value_at(1))),
3978 None,
3979 NodeList::from(yystack.owned_value_at(0)),
3980 None
3981 )
3982 );
3983 },
3984
3985
3986 82 => {
3989 let method_call = self.builder.call_method(
3990 Some( BoxedNode::from(yystack.owned_value_at(4))),
3991 Some( Token::from(yystack.owned_value_at(3))),
3992 Some( Token::from(yystack.owned_value_at(2))),
3993 None,
3994 NodeList::from(yystack.owned_value_at(1)),
3995 None
3996 );
3997 let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
3998
3999 yyval = Value::Node(
4000 self.builder.block(
4001 method_call,
4002 begin_t,
4003 args_type,
4004 body,
4005 end_t
4006 )?
4007 );
4008 },
4009
4010
4011 83 => {
4014 yyval = Value::Node(
4015 self.builder.call_method(
4016 Some( BoxedNode::from(yystack.owned_value_at(3))),
4017 Some( Token::from(yystack.owned_value_at(2))),
4018 Some( Token::from(yystack.owned_value_at(1))),
4019 None,
4020 NodeList::from(yystack.owned_value_at(0)),
4021 None
4022 )
4023 );
4024 },
4025
4026
4027 84 => {
4030 let method_call = self.builder.call_method(
4031 Some( BoxedNode::from(yystack.owned_value_at(4))),
4032 Some( Token::from(yystack.owned_value_at(3))),
4033 Some( Token::from(yystack.owned_value_at(2))),
4034 None,
4035 NodeList::from(yystack.owned_value_at(1)),
4036 None
4037 );
4038 let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
4039
4040 yyval = Value::Node(
4041 self.builder.block(
4042 method_call,
4043 begin_t,
4044 args_type,
4045 body,
4046 end_t
4047 )?
4048 );
4049 },
4050
4051
4052 85 => {
4055 yyval = Value::Node(
4056 self.builder.keyword_cmd(
4057 KeywordCmd::Super,
4058 Token::from(yystack.owned_value_at(1)),
4059 None,
4060 NodeList::from(yystack.owned_value_at(0)),
4061 None
4062 )?
4063 );
4064 },
4065
4066
4067 86 => {
4070 yyval = Value::Node(
4071 self.builder.keyword_cmd(
4072 KeywordCmd::Yield,
4073 Token::from(yystack.owned_value_at(1)),
4074 None,
4075 NodeList::from(yystack.owned_value_at(0)),
4076 None
4077 )?
4078 );
4079 },
4080
4081
4082 87 => {
4085 yyval = Value::Node(
4086 self.builder.keyword_cmd(
4087 KeywordCmd::Return,
4088 Token::from(yystack.owned_value_at(1)),
4089 None,
4090 NodeList::from(yystack.owned_value_at(0)),
4091 None
4092 )?
4093 );
4094 },
4095
4096
4097 88 => {
4100 yyval = Value::Node(
4101 self.builder.keyword_cmd(
4102 KeywordCmd::Break,
4103 Token::from(yystack.owned_value_at(1)),
4104 None,
4105 NodeList::from(yystack.owned_value_at(0)),
4106 None
4107 )?
4108 );
4109 },
4110
4111
4112 89 => {
4115 yyval = Value::Node(
4116 self.builder.keyword_cmd(
4117 KeywordCmd::Next,
4118 Token::from(yystack.owned_value_at(1)),
4119 None,
4120 NodeList::from(yystack.owned_value_at(0)),
4121 None
4122 )?
4123 );
4124 },
4125
4126
4127 90 => {
4130 yyval = Value::Node(
4131 self.builder.multi_lhs(
4132 None,
4133 NodeList::from(yystack.owned_value_at(0)),
4134 None
4135 )
4136 );
4137 },
4138
4139
4140 91 => {
4143 yyval = Value::Node(
4144 self.builder.begin(
4145 Token::from(yystack.owned_value_at(2)),
4146 Some( BoxedNode::from(yystack.owned_value_at(1))),
4147 Token::from(yystack.owned_value_at(0))
4148 )
4149 );
4150 },
4151
4152
4153 92 => {
4156 yyval = Value::Node(
4157 self.builder.multi_lhs(
4158 None,
4159 NodeList::from(yystack.owned_value_at(0)),
4160 None
4161 )
4162 );
4163 },
4164
4165
4166 93 => {
4169 let mlhs_inner = Node::from(yystack.owned_value_at(1));
4170 let mlhs_items = match mlhs_inner {
4171 Node::Mlhs(nodes::Mlhs { items, .. }) => {
4172 items
4173 }
4174 other => {
4175 unreachable!("unsupported mlhs item {:?}", other)
4176 }
4177 };
4178
4179 yyval = Value::Node(
4180 self.builder.multi_lhs(
4181 Some( Token::from(yystack.owned_value_at(2))),
4182 mlhs_items,
4183 Some( Token::from(yystack.owned_value_at(0)))
4184 )
4185 );
4186 },
4187
4188
4189 94 => {
4192 yyval = yystack.owned_value_at(0);
4193 },
4194
4195
4196 95 => {
4199 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
4200 nodes.push( Node::from(yystack.owned_value_at(0)) );
4201 yyval = Value::NodeList(nodes);
4202 },
4203
4204
4205 96 => {
4208 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
4209 let mlhs_node = *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))));
4210 nodes.push(mlhs_node);
4211 yyval = Value::NodeList(nodes);
4212 },
4213
4214
4215 97 => {
4218 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(4));
4219 let mlhs_node = *self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( BoxedNode::from(yystack.owned_value_at(2))));
4220 let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
4221
4222 nodes.reserve(1 + mlhs_post.len());
4223 nodes.push(mlhs_node);
4224 nodes.append(&mut mlhs_post);
4225
4226 yyval = Value::NodeList(nodes);
4227 },
4228
4229
4230 98 => {
4233 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
4234 let splat = *self.builder.splat( Token::from(yystack.owned_value_at(0)), None);
4235 nodes.push(splat);
4236 yyval = Value::NodeList(nodes);
4237 },
4238
4239
4240 99 => {
4243 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
4244 let splat = *self.builder.splat( Token::from(yystack.owned_value_at(2)), None);
4245 let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
4246
4247 nodes.reserve(1 + mlhs_post.len());
4248 nodes.push(splat);
4249 nodes.append(&mut mlhs_post);
4250
4251 yyval = Value::NodeList(nodes);
4252 },
4253
4254
4255 100 => {
4258 yyval = Value::NodeList(
4259 Box::new(
4260 vec![
4261 *self.builder.splat(
4262 Token::from(yystack.owned_value_at(1)),
4263 Some( BoxedNode::from(yystack.owned_value_at(0)))
4264 )
4265 ]
4266 )
4267 );
4268 },
4269
4270
4271 101 => {
4274 let splat = *self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( BoxedNode::from(yystack.owned_value_at(2))));
4275 let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
4276
4277 let mut nodes = Box::new(Vec::with_capacity(1 + mlhs_post.len()));
4278 nodes.push(splat);
4279 nodes.append(&mut mlhs_post);
4280
4281 yyval = Value::NodeList(nodes);
4282 },
4283
4284
4285 102 => {
4288 yyval = Value::NodeList(
4289 Box::new(
4290 vec![
4291 *self.builder.splat(
4292 Token::from(yystack.owned_value_at(0)),
4293 None
4294 )
4295 ]
4296 )
4297 );
4298 },
4299
4300
4301 103 => {
4304 let splat = *self.builder.splat( Token::from(yystack.owned_value_at(2)), None);
4305 let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
4306
4307 let mut nodes = Box::new(Vec::with_capacity(1 + mlhs_post.len()));
4308 nodes.push(splat);
4309 nodes.append(&mut mlhs_post);
4310
4311 yyval = Value::NodeList(nodes);
4312 },
4313
4314
4315 104 => {
4318 yyval = yystack.owned_value_at(0);
4319 },
4320
4321
4322 105 => {
4325 yyval = Value::Node(
4326 self.builder.begin(
4327 Token::from(yystack.owned_value_at(2)),
4328 Some( BoxedNode::from(yystack.owned_value_at(1))),
4329 Token::from(yystack.owned_value_at(0))
4330 )
4331 );
4332 },
4333
4334
4335 106 => {
4338 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(1)) ]) );
4339 },
4340
4341
4342 107 => {
4345 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
4346 nodes.push( Node::from(yystack.owned_value_at(1)) );
4347 yyval = Value::NodeList(nodes);
4348 },
4349
4350
4351 108 => {
4354 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
4355 },
4356
4357
4358 109 => {
4361 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
4362 nodes.push( Node::from(yystack.owned_value_at(0)) );
4363 yyval = Value::NodeList(nodes);
4364 },
4365
4366
4367 110 => {
4370 yyval = Value::Node(
4371 self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4372 );
4373 },
4374
4375
4376 111 => {
4379 yyval = Value::Node(
4380 self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4381 );
4382 },
4383
4384
4385 112 => {
4388 yyval = Value::Node(
4389 self.builder.index_asgn(
4390 BoxedNode::from(yystack.owned_value_at(3)),
4391 Token::from(yystack.owned_value_at(2)),
4392 NodeList::from(yystack.owned_value_at(1)),
4393 Token::from(yystack.owned_value_at(0))
4394 )
4395 );
4396 },
4397
4398
4399 113 => {
4402 let op_t = Token::from(yystack.owned_value_at(1));
4403 if op_t.token_type == Lexer::tANDDOT {
4404 return self.yyerror(yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn {});
4405 }
4406
4407 yyval = Value::Node(
4408 self.builder.attr_asgn(
4409 BoxedNode::from(yystack.owned_value_at(2)),
4410 op_t,
4411 Token::from(yystack.owned_value_at(0))
4412 )
4413 );
4414 },
4415
4416
4417 114 => {
4420 yyval = Value::Node(
4421 self.builder.attr_asgn(
4422 BoxedNode::from(yystack.owned_value_at(2)),
4423 Token::from(yystack.owned_value_at(1)),
4424 Token::from(yystack.owned_value_at(0))
4425 )
4426 );
4427 },
4428
4429
4430 115 => {
4433 let op_t = Token::from(yystack.owned_value_at(1));
4434 if op_t.token_type == Lexer::tANDDOT {
4435 return self.yyerror(yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn {});
4436 }
4437
4438 yyval = Value::Node(
4439 self.builder.attr_asgn(
4440 BoxedNode::from(yystack.owned_value_at(2)),
4441 op_t,
4442 Token::from(yystack.owned_value_at(0))
4443 )
4444 );
4445 },
4446
4447
4448 116 => {
4451 yyval = Value::Node(
4452 self.builder.assignable(
4453 self.builder.const_fetch(
4454 BoxedNode::from(yystack.owned_value_at(2)),
4455 Token::from(yystack.owned_value_at(1)),
4456 Token::from(yystack.owned_value_at(0))
4457 )
4458 )?
4459 );
4460 },
4461
4462
4463 117 => {
4466 yyval = Value::Node(
4467 self.builder.assignable(
4468 self.builder.const_global(
4469 Token::from(yystack.owned_value_at(1)),
4470 Token::from(yystack.owned_value_at(0))
4471 )
4472 )?
4473 );
4474 },
4475
4476
4477 118 => {
4480 yyval = Value::Node(
4481 self.builder.assignable(
4482 BoxedNode::from(yystack.owned_value_at(0))
4483 )?
4484 );
4485 },
4486
4487
4488 119 => {
4491 yyval = Value::Node(
4492 self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4493 );
4494 },
4495
4496
4497 120 => {
4500 yyval = Value::Node(
4501 self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
4502 );
4503 },
4504
4505
4506 121 => {
4509 yyval = Value::Node(
4510 self.builder.index_asgn(
4511 BoxedNode::from(yystack.owned_value_at(3)),
4512 Token::from(yystack.owned_value_at(2)),
4513 NodeList::from(yystack.owned_value_at(1)),
4514 Token::from(yystack.owned_value_at(0))
4515 )
4516 )
4517 },
4518
4519
4520 122 => {
4523 yyval = Value::Node(
4524 self.builder.attr_asgn(
4525 BoxedNode::from(yystack.owned_value_at(2)),
4526 Token::from(yystack.owned_value_at(1)),
4527 Token::from(yystack.owned_value_at(0))
4528 )
4529 );
4530 },
4531
4532
4533 123 => {
4536 yyval = Value::Node(
4537 self.builder.attr_asgn(
4538 BoxedNode::from(yystack.owned_value_at(2)),
4539 Token::from(yystack.owned_value_at(1)),
4540 Token::from(yystack.owned_value_at(0))
4541 )
4542 );
4543 },
4544
4545
4546 124 => {
4549 yyval = Value::Node(
4550 self.builder.attr_asgn(
4551 BoxedNode::from(yystack.owned_value_at(2)),
4552 Token::from(yystack.owned_value_at(1)),
4553 Token::from(yystack.owned_value_at(0))
4554 )
4555 );
4556 },
4557
4558
4559 125 => {
4562 yyval = Value::Node(
4563 self.builder.assignable(
4564 self.builder.const_fetch(
4565 BoxedNode::from(yystack.owned_value_at(2)),
4566 Token::from(yystack.owned_value_at(1)),
4567 Token::from(yystack.owned_value_at(0)),
4568 )
4569 )?
4570 );
4571 },
4572
4573
4574 126 => {
4577 yyval = Value::Node(
4578 self.builder.assignable(
4579 self.builder.const_global(
4580 Token::from(yystack.owned_value_at(1)),
4581 Token::from(yystack.owned_value_at(0)),
4582 )
4583 )?
4584 );
4585 },
4586
4587
4588 127 => {
4591 yyval = Value::Node(
4592 self.builder.assignable(
4593 BoxedNode::from(yystack.owned_value_at(0))
4594 )?
4595 );
4596 },
4597
4598
4599 128 => {
4602 return self.yyerror(yystack.location_at (0), DiagnosticMessage::ClassOrModuleNameMustBeConstant {});
4603 },
4604
4605
4606 129 => {
4609 yyval = yystack.owned_value_at(0);
4610 },
4611
4612
4613 130 => {
4616 yyval = Value::Node(
4617 self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
4618 );
4619 },
4620
4621
4622 131 => {
4625 yyval = Value::Node(
4626 self.builder.const_( Token::from(yystack.owned_value_at(0)))
4627 );
4628 },
4629
4630
4631 132 => {
4634 yyval = Value::Node(
4635 self.builder.const_fetch(
4636 BoxedNode::from(yystack.owned_value_at(2)),
4637 Token::from(yystack.owned_value_at(1)),
4638 Token::from(yystack.owned_value_at(0)),
4639 )
4640 );
4641 },
4642
4643
4644 133 => {
4647 yyval = yystack.owned_value_at(0);
4648 },
4649
4650
4651 134 => {
4654 yyval = yystack.owned_value_at(0);
4655 },
4656
4657
4658 135 => {
4661 yyval = yystack.owned_value_at(0);
4662 },
4663
4664
4665 136 => {
4668 self.yylexer.lex_state.set(EXPR_ENDFN);
4669 yyval = yystack.owned_value_at(0);
4670 },
4671
4672
4673 137 => {
4676 yyval = yystack.owned_value_at(0);
4677 },
4678
4679
4680 138 => {
4683 yyval = Value::Node(
4684 self.builder.symbol_internal( Token::from(yystack.owned_value_at(0)))
4685 );
4686 },
4687
4688
4689 139 => {
4692 yyval = yystack.owned_value_at(0);
4693 },
4694
4695
4696 140 => {
4699 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
4700 },
4701
4702
4703 141 => {
4706 self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
4707 yyval = Value::None;
4708 },
4709
4710
4711 142 => {
4714 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
4715 nodes.push( Node::from(yystack.owned_value_at(0)) );
4716 yyval = Value::NodeList(nodes);
4717 },
4718
4719
4720 143 => { yyval = yystack.owned_value_at(0); },
4723
4724
4725 144 => { yyval = yystack.owned_value_at(0); },
4728
4729
4730 145 => { yyval = yystack.owned_value_at(0); },
4733
4734
4735 146 => { yyval = yystack.owned_value_at(0); },
4738
4739
4740 147 => { yyval = yystack.owned_value_at(0); },
4743
4744
4745 148 => { yyval = yystack.owned_value_at(0); },
4748
4749
4750 149 => { yyval = yystack.owned_value_at(0); },
4753
4754
4755 150 => { yyval = yystack.owned_value_at(0); },
4758
4759
4760 151 => { yyval = yystack.owned_value_at(0); },
4763
4764
4765 152 => { yyval = yystack.owned_value_at(0); },
4768
4769
4770 153 => { yyval = yystack.owned_value_at(0); },
4773
4774
4775 154 => { yyval = yystack.owned_value_at(0); },
4778
4779
4780 155 => { yyval = yystack.owned_value_at(0); },
4783
4784
4785 156 => { yyval = yystack.owned_value_at(0); },
4788
4789
4790 157 => { yyval = yystack.owned_value_at(0); },
4793
4794
4795 158 => { yyval = yystack.owned_value_at(0); },
4798
4799
4800 159 => { yyval = yystack.owned_value_at(0); },
4803
4804
4805 160 => { yyval = yystack.owned_value_at(0); },
4808
4809
4810 161 => { yyval = yystack.owned_value_at(0); },
4813
4814
4815 162 => { yyval = yystack.owned_value_at(0); },
4818
4819
4820 163 => { yyval = yystack.owned_value_at(0); },
4823
4824
4825 164 => { yyval = yystack.owned_value_at(0); },
4828
4829
4830 165 => { yyval = yystack.owned_value_at(0); },
4833
4834
4835 166 => { yyval = yystack.owned_value_at(0); },
4838
4839
4840 167 => { yyval = yystack.owned_value_at(0); },
4843
4844
4845 168 => { yyval = yystack.owned_value_at(0); },
4848
4849
4850 169 => { yyval = yystack.owned_value_at(0); },
4853
4854
4855 170 => { yyval = yystack.owned_value_at(0); },
4858
4859
4860 171 => { yyval = yystack.owned_value_at(0); },
4863
4864
4865 172 => { yyval = yystack.owned_value_at(0); },
4868
4869
4870 173 => { yyval = yystack.owned_value_at(0); },
4873
4874
4875 174 => { yyval = yystack.owned_value_at(0); },
4878
4879
4880 175 => { yyval = yystack.owned_value_at(0); },
4883
4884
4885 176 => { yyval = yystack.owned_value_at(0); },
4888
4889
4890 177 => { yyval = yystack.owned_value_at(0); },
4893
4894
4895 178 => { yyval = yystack.owned_value_at(0); },
4898
4899
4900 179 => { yyval = yystack.owned_value_at(0); },
4903
4904
4905 180 => { yyval = yystack.owned_value_at(0); },
4908
4909
4910 181 => { yyval = yystack.owned_value_at(0); },
4913
4914
4915 182 => { yyval = yystack.owned_value_at(0); },
4918
4919
4920 183 => { yyval = yystack.owned_value_at(0); },
4923
4924
4925 184 => { yyval = yystack.owned_value_at(0); },
4928
4929
4930 185 => { yyval = yystack.owned_value_at(0); },
4933
4934
4935 186 => { yyval = yystack.owned_value_at(0); },
4938
4939
4940 187 => { yyval = yystack.owned_value_at(0); },
4943
4944
4945 188 => { yyval = yystack.owned_value_at(0); },
4948
4949
4950 189 => { yyval = yystack.owned_value_at(0); },
4953
4954
4955 190 => { yyval = yystack.owned_value_at(0); },
4958
4959
4960 191 => { yyval = yystack.owned_value_at(0); },
4963
4964
4965 192 => { yyval = yystack.owned_value_at(0); },
4968
4969
4970 193 => { yyval = yystack.owned_value_at(0); },
4973
4974
4975 194 => { yyval = yystack.owned_value_at(0); },
4978
4979
4980 195 => { yyval = yystack.owned_value_at(0); },
4983
4984
4985 196 => { yyval = yystack.owned_value_at(0); },
4988
4989
4990 197 => { yyval = yystack.owned_value_at(0); },
4993
4994
4995 198 => { yyval = yystack.owned_value_at(0); },
4998
4999
5000 199 => { yyval = yystack.owned_value_at(0); },
5003
5004
5005 200 => { yyval = yystack.owned_value_at(0); },
5008
5009
5010 201 => { yyval = yystack.owned_value_at(0); },
5013
5014
5015 202 => { yyval = yystack.owned_value_at(0); },
5018
5019
5020 203 => { yyval = yystack.owned_value_at(0); },
5023
5024
5025 204 => { yyval = yystack.owned_value_at(0); },
5028
5029
5030 205 => { yyval = yystack.owned_value_at(0); },
5033
5034
5035 206 => { yyval = yystack.owned_value_at(0); },
5038
5039
5040 207 => { yyval = yystack.owned_value_at(0); },
5043
5044
5045 208 => { yyval = yystack.owned_value_at(0); },
5048
5049
5050 209 => { yyval = yystack.owned_value_at(0); },
5053
5054
5055 210 => { yyval = yystack.owned_value_at(0); },
5058
5059
5060 211 => { yyval = yystack.owned_value_at(0); },
5063
5064
5065 212 => { yyval = yystack.owned_value_at(0); },
5068
5069
5070 213 => { yyval = yystack.owned_value_at(0); },
5073
5074
5075 214 => {
5078 yyval = Value::Node(
5079 self.builder.assign(
5080 BoxedNode::from(yystack.owned_value_at(2)),
5081 Token::from(yystack.owned_value_at(1)),
5082 BoxedNode::from(yystack.owned_value_at(0))
5083 )
5084 );
5085 },
5086
5087
5088 215 => {
5091 yyval = Value::Node(
5092 self.builder.op_assign(
5093 BoxedNode::from(yystack.owned_value_at(2)),
5094 Token::from(yystack.owned_value_at(1)),
5095 BoxedNode::from(yystack.owned_value_at(0))
5096 )?
5097 );
5098 },
5099
5100
5101 216 => {
5104 yyval = Value::Node(
5105 self.builder.op_assign(
5106 self.builder.index(
5107 BoxedNode::from(yystack.owned_value_at(5)),
5108 Token::from(yystack.owned_value_at(4)),
5109 NodeList::from(yystack.owned_value_at(3)),
5110 Token::from(yystack.owned_value_at(2))
5111 ),
5112 Token::from(yystack.owned_value_at(1)),
5113 BoxedNode::from(yystack.owned_value_at(0))
5114 )?
5115 );
5116 },
5117
5118
5119 217 => {
5122 yyval = Value::Node(
5123 self.builder.op_assign(
5124 self.builder.call_method(
5125 Some( BoxedNode::from(yystack.owned_value_at(4))),
5126 Some( Token::from(yystack.owned_value_at(3))),
5127 Some( Token::from(yystack.owned_value_at(2))),
5128 None,
5129 vec![],
5130 None
5131 ),
5132 Token::from(yystack.owned_value_at(1)),
5133 BoxedNode::from(yystack.owned_value_at(0))
5134 )?
5135 );
5136 },
5137
5138
5139 218 => {
5142 yyval = Value::Node(
5143 self.builder.op_assign(
5144 self.builder.call_method(
5145 Some( BoxedNode::from(yystack.owned_value_at(4))),
5146 Some( Token::from(yystack.owned_value_at(3))),
5147 Some( Token::from(yystack.owned_value_at(2))),
5148 None,
5149 vec![],
5150 None
5151 ),
5152 Token::from(yystack.owned_value_at(1)),
5153 BoxedNode::from(yystack.owned_value_at(0))
5154 )?
5155 );
5156 },
5157
5158
5159 219 => {
5162 yyval = Value::Node(
5163 self.builder.op_assign(
5164 self.builder.call_method(
5165 Some( BoxedNode::from(yystack.owned_value_at(4))),
5166 Some( Token::from(yystack.owned_value_at(3))),
5167 Some( Token::from(yystack.owned_value_at(2))),
5168 None,
5169 vec![],
5170 None
5171 ),
5172 Token::from(yystack.owned_value_at(1)),
5173 BoxedNode::from(yystack.owned_value_at(0))
5174 )?
5175 );
5176 },
5177
5178
5179 220 => {
5182 let const_ = self.builder.const_op_assignable(
5183 self.builder.const_fetch(
5184 BoxedNode::from(yystack.owned_value_at(4)),
5185 Token::from(yystack.owned_value_at(3)),
5186 Token::from(yystack.owned_value_at(2))
5187 )
5188 );
5189 yyval = Value::Node(
5190 self.builder.op_assign(
5191 const_,
5192 Token::from(yystack.owned_value_at(1)),
5193 BoxedNode::from(yystack.owned_value_at(0))
5194 )?
5195 );
5196 },
5197
5198
5199 221 => {
5202 let const_ = self.builder.const_op_assignable(
5203 self.builder.const_global(
5204 Token::from(yystack.owned_value_at(3)),
5205 Token::from(yystack.owned_value_at(2))
5206 )
5207 );
5208 yyval = Value::Node(
5209 self.builder.op_assign(
5210 const_,
5211 Token::from(yystack.owned_value_at(1)),
5212 BoxedNode::from(yystack.owned_value_at(0))
5213 )?
5214 );
5215 },
5216
5217
5218 222 => {
5221 yyval = Value::Node(
5222 self.builder.op_assign(
5223 BoxedNode::from(yystack.owned_value_at(2)),
5224 Token::from(yystack.owned_value_at(1)),
5225 BoxedNode::from(yystack.owned_value_at(0))
5226 )?
5227 );
5228 },
5229
5230
5231 223 => {
5234 let left = BoxedNode::from(yystack.owned_value_at(2));
5235 self.value_expr(&left)?;
5236
5237 let right = BoxedNode::from(yystack.owned_value_at(0));
5238 self.value_expr(&right)?;
5239
5240 yyval = Value::Node(
5241 self.builder.range_inclusive(
5242 Some(left),
5243 Token::from(yystack.owned_value_at(1)),
5244 Some(right)
5245 )
5246 );
5247 },
5248
5249
5250 224 => {
5253 let left = BoxedNode::from(yystack.owned_value_at(2));
5254 self.value_expr(&left)?;
5255
5256 let right = BoxedNode::from(yystack.owned_value_at(0));
5257 self.value_expr(&right)?;
5258
5259 yyval = Value::Node(
5260 self.builder.range_exclusive(
5261 Some(left),
5262 Token::from(yystack.owned_value_at(1)),
5263 Some(right)
5264 )
5265 );
5266 },
5267
5268
5269 225 => {
5272 let left = BoxedNode::from(yystack.owned_value_at(1));
5273 self.value_expr(&left)?;
5274
5275 yyval = Value::Node(
5276 self.builder.range_inclusive(
5277 Some(left),
5278 Token::from(yystack.owned_value_at(0)),
5279 None
5280 )
5281 );
5282 },
5283
5284
5285 226 => {
5288 let left = BoxedNode::from(yystack.owned_value_at(1));
5289 self.value_expr(&left)?;
5290
5291 yyval = Value::Node(
5292 self.builder.range_exclusive(
5293 Some(left),
5294 Token::from(yystack.owned_value_at(0)),
5295 None
5296 )
5297 );
5298 },
5299
5300
5301 227 => {
5304 let right = BoxedNode::from(yystack.owned_value_at(0));
5305 self.value_expr(&right)?;
5306
5307 yyval = Value::Node(
5308 self.builder.range_inclusive(
5309 None,
5310 Token::from(yystack.owned_value_at(1)),
5311 Some(right)
5312 )
5313 );
5314 },
5315
5316
5317 228 => {
5320 let right = BoxedNode::from(yystack.owned_value_at(0));
5321 self.value_expr(&right)?;
5322
5323 yyval = Value::Node(
5324 self.builder.range_exclusive(
5325 None,
5326 Token::from(yystack.owned_value_at(1)),
5327 Some(right)
5328 )
5329 );
5330 },
5331
5332
5333 229 => {
5336 yyval = Value::Node(
5337 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5338 );
5339 },
5340
5341
5342 230 => {
5345 yyval = Value::Node(
5346 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5347 );
5348 },
5349
5350
5351 231 => {
5354 yyval = Value::Node(
5355 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5356 );
5357 },
5358
5359
5360 232 => {
5363 yyval = Value::Node(
5364 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5365 );
5366 },
5367
5368
5369 233 => {
5372 yyval = Value::Node(
5373 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5374 );
5375 },
5376
5377
5378 234 => {
5381 yyval = Value::Node(
5382 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5383 );
5384 },
5385
5386
5387 235 => {
5390 yyval = Value::Node(
5391 self.builder.unary_op(
5392 Token::from(yystack.owned_value_at(3)),
5393 self.builder.binary_op(
5394 BoxedNode::from(yystack.owned_value_at(2)),
5395 Token::from(yystack.owned_value_at(1)),
5396 BoxedNode::from(yystack.owned_value_at(0))
5397 )?
5398 )?
5399 );
5400 },
5401
5402
5403 236 => {
5406 yyval = Value::Node(
5407 self.builder.unary_op(
5408 Token::from(yystack.owned_value_at(1)),
5409 BoxedNode::from(yystack.owned_value_at(0))
5410 )?
5411 );
5412 },
5413
5414
5415 237 => {
5418 yyval = Value::Node(
5419 self.builder.unary_op(
5420 Token::from(yystack.owned_value_at(1)),
5421 BoxedNode::from(yystack.owned_value_at(0))
5422 )?
5423 );
5424 },
5425
5426
5427 238 => {
5430 yyval = Value::Node(
5431 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5432 );
5433 },
5434
5435
5436 239 => {
5439 yyval = Value::Node(
5440 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5441 );
5442 },
5443
5444
5445 240 => {
5448 yyval = Value::Node(
5449 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5450 );
5451 },
5452
5453
5454 241 => {
5457 yyval = Value::Node(
5458 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5459 );
5460 },
5461
5462
5463 242 => {
5466 yyval = yystack.owned_value_at(0);
5467 },
5468
5469
5470 243 => {
5473 yyval = Value::Node(
5474 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5475 );
5476 },
5477
5478
5479 244 => {
5482 yyval = Value::Node(
5483 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5484 );
5485 },
5486
5487
5488 245 => {
5491 yyval = Value::Node(
5492 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5493 );
5494 },
5495
5496
5497 246 => {
5500 yyval = Value::Node(
5501 self.builder.match_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5502 );
5503 },
5504
5505
5506 247 => {
5509 yyval = Value::Node(
5510 self.builder.binary_op(
5511 BoxedNode::from(yystack.owned_value_at(2)),
5512 Token::from(yystack.owned_value_at(1)),
5513 BoxedNode::from(yystack.owned_value_at(0))
5514 )?
5515 );
5516 },
5517
5518
5519 248 => {
5522 yyval = Value::Node(
5523 self.builder.not_op(
5524 Token::from(yystack.owned_value_at(1)),
5525 None,
5526 Some( BoxedNode::from(yystack.owned_value_at(0))),
5527 None
5528 )?
5529 );
5530 },
5531
5532
5533 249 => {
5536 yyval = Value::Node(
5537 self.builder.unary_op(
5538 Token::from(yystack.owned_value_at(1)),
5539 BoxedNode::from(yystack.owned_value_at(0))
5540 )?
5541 );
5542 },
5543
5544
5545 250 => {
5548 yyval = Value::Node(
5549 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5550 );
5551 },
5552
5553
5554 251 => {
5557 yyval = Value::Node(
5558 self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
5559 );
5560 },
5561
5562
5563 252 => {
5566 yyval = Value::Node(
5567 self.builder.logical_op(
5568 LogicalOp::And,
5569 BoxedNode::from(yystack.owned_value_at(2)),
5570 Token::from(yystack.owned_value_at(1)),
5571 BoxedNode::from(yystack.owned_value_at(0))
5572 )?
5573 );
5574 },
5575
5576
5577 253 => {
5580 yyval = Value::Node(
5581 self.builder.logical_op(
5582 LogicalOp::Or,
5583 BoxedNode::from(yystack.owned_value_at(2)),
5584 Token::from(yystack.owned_value_at(1)),
5585 BoxedNode::from(yystack.owned_value_at(0))
5586 )?
5587 );
5588 },
5589
5590
5591 254 => {
5594 self.context.set_in_defined(true);
5595 yyval = Value::None;
5596 },
5597
5598
5599 255 => {
5602 self.context.set_in_defined(false);
5603 yyval = Value::Node(
5604 self.builder.keyword_cmd(
5605 KeywordCmd::Defined,
5606 Token::from(yystack.owned_value_at(3)),
5607 None,
5608 vec![ Node::from(yystack.owned_value_at(0)) ],
5609 None
5610 )?
5611 );
5612 },
5613
5614
5615 256 => {
5618 let expr = BoxedNode::from(yystack.owned_value_at(5));
5619 self.value_expr(&expr)?;
5620
5621 yyval = Value::Node(
5622 self.builder.ternary(
5623 expr,
5624 Token::from(yystack.owned_value_at(4)),
5625 BoxedNode::from(yystack.owned_value_at(3)),
5626 Token::from(yystack.owned_value_at(1)),
5627 BoxedNode::from(yystack.owned_value_at(0))
5628 )
5629 );
5630 },
5631
5632
5633 257 => {
5636 let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
5637 let TokenWithContext { token: name_t, ctx } = name_t;
5638 self.validate_endless_method_name(&name_t)?;
5639
5640 yyval = Value::Node(
5641 self.builder.def_endless_method(
5642 def_t,
5643 name_t,
5644 MaybeBoxedNode::from(yystack.owned_value_at(2)),
5645 Token::from(yystack.owned_value_at(1)),
5646 Some( BoxedNode::from(yystack.owned_value_at(0)))
5647 )?
5648 );
5649
5650 self.local_pop();
5651 self.current_arg_stack.pop();
5652 self.context.set_in_def(ctx.in_def());
5653 },
5654
5655
5656 258 => {
5659 let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(5));
5660 let TokenWithContext { token: name_t, ctx } = name_t;
5661 self.validate_endless_method_name(&name_t)?;
5662
5663 let rescue_body = self.builder.rescue_body(
5664 Token::from(yystack.owned_value_at(1)),
5665 None,
5666 None,
5667 None,
5668 None,
5669 Some( BoxedNode::from(yystack.owned_value_at(0)))
5670 );
5671
5672 let method_body = self.builder.begin_body(
5673 Some( BoxedNode::from(yystack.owned_value_at(2))),
5674 vec![ *rescue_body ],
5675 None,
5676 None,
5677 );
5678
5679 yyval = Value::Node(
5680 self.builder.def_endless_method(
5681 def_t,
5682 name_t,
5683 MaybeBoxedNode::from(yystack.owned_value_at(4)),
5684 Token::from(yystack.owned_value_at(3)),
5685 method_body
5686 )?
5687 );
5688
5689 self.local_pop();
5690 self.current_arg_stack.pop();
5691 self.context.set_in_def(ctx.in_def());
5692 },
5693
5694
5695 259 => {
5698 let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
5699 let TokenWithContext { token: name_t, ctx } = name_t;
5700 self.validate_endless_method_name(&name_t)?;
5701
5702 yyval = Value::Node(
5703 self.builder.def_endless_singleton(
5704 def_t,
5705 definee,
5706 dot_t,
5707 name_t,
5708 MaybeBoxedNode::from(yystack.owned_value_at(2)),
5709 Token::from(yystack.owned_value_at(1)),
5710 Some( BoxedNode::from(yystack.owned_value_at(0)))
5711 )?
5712 );
5713
5714 self.local_pop();
5715 self.current_arg_stack.pop();
5716 self.context.set_in_def(ctx.in_def());
5717 },
5718
5719
5720 260 => {
5723 let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(5));
5724 let TokenWithContext { token: name_t, ctx } = name_t;
5725 self.validate_endless_method_name(&name_t)?;
5726
5727 let rescue_body = self.builder.rescue_body(
5728 Token::from(yystack.owned_value_at(1)),
5729 None,
5730 None,
5731 None,
5732 None,
5733 Some( BoxedNode::from(yystack.owned_value_at(0)))
5734 );
5735
5736 let method_body = self.builder.begin_body(
5737 Some( BoxedNode::from(yystack.owned_value_at(2))),
5738 vec![ *rescue_body ],
5739 None,
5740 None,
5741 );
5742
5743 yyval = Value::Node(
5744 self.builder.def_endless_singleton(
5745 def_t,
5746 definee,
5747 dot_t,
5748 name_t,
5749 MaybeBoxedNode::from(yystack.owned_value_at(4)),
5750 Token::from(yystack.owned_value_at(3)),
5751 method_body
5752 )?
5753 );
5754
5755 self.local_pop();
5756 self.current_arg_stack.pop();
5757 self.context.set_in_def(ctx.in_def());
5758 },
5759
5760
5761 261 => {
5764 yyval = yystack.owned_value_at(0);
5765 },
5766
5767
5768 262 => {
5771 yyval = yystack.owned_value_at(0);
5772 },
5773
5774
5775 263 => {
5778 yyval = yystack.owned_value_at(0);
5779 },
5780
5781
5782 264 => {
5785 yyval = yystack.owned_value_at(0);
5786 },
5787
5788
5789 265 => {
5792 yyval = yystack.owned_value_at(0);
5793 },
5794
5795
5796 266 => {
5799 yyval = Value::Node(
5800 self.builder.binary_op(
5801 BoxedNode::from(yystack.owned_value_at(2)),
5802 Token::from(yystack.owned_value_at(1)),
5803 BoxedNode::from(yystack.owned_value_at(0))
5804 )?
5805 );
5806 },
5807
5808
5809 267 => {
5812 let op_t = Token::from(yystack.owned_value_at(1));
5813 self.warn(
5814 yystack.location_at (1),
5815 DiagnosticMessage::ComparisonAfterComparison { comparison: clone_value(&op_t) }
5816 );
5817 yyval = Value::Node(
5818 self.builder.binary_op(
5819 BoxedNode::from(yystack.owned_value_at(2)),
5820 op_t,
5821 BoxedNode::from(yystack.owned_value_at(0))
5822 )?
5823 );
5824 },
5825
5826
5827 268 => {
5830 let arg = BoxedNode::from(yystack.owned_value_at(0));
5831 self.value_expr(&arg)?;
5832 yyval = Value::Node(arg);
5833 },
5834
5835
5836 269 => {
5839 yyval = Value::NodeList( Box::default() );
5840 },
5841
5842
5843 270 => {
5846 yyval = yystack.owned_value_at(1);
5847 },
5848
5849
5850 271 => {
5853 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
5854 nodes.push(
5855 *self.builder.associate(
5856 None,
5857 NodeList::from(yystack.owned_value_at(1)),
5858 None
5859 )
5860 );
5861 yyval = Value::NodeList(nodes);
5862 },
5863
5864
5865 272 => {
5868 yyval = Value::NodeList(
5869 Box::new(
5870 vec![
5871 *self.builder.associate(
5872 None,
5873 NodeList::from(yystack.owned_value_at(1)),
5874 None
5875 )
5876 ]
5877 )
5878 );
5879 },
5880
5881
5882 273 => {
5885 let arg = BoxedNode::from(yystack.owned_value_at(0));
5886 self.value_expr(&arg)?;
5887 yyval = Value::Node(arg);
5888 },
5889
5890
5891 274 => {
5894 let arg = BoxedNode::from(yystack.owned_value_at(2));
5895 self.value_expr(&arg)?;
5896
5897 let rescue_body = self.builder.rescue_body(
5898 Token::from(yystack.owned_value_at(1)),
5899 None,
5900 None,
5901 None,
5902 None,
5903 Some( BoxedNode::from(yystack.owned_value_at(0)))
5904 );
5905
5906 yyval = Value::Node(
5907 self.builder.begin_body(
5908 Some(arg),
5909 vec![ *rescue_body ],
5910 None,
5911 None,
5912 ).expect("expected begin_body to return Some (compound_stmt was given)")
5913 );
5914 },
5915
5916
5917 275 => {
5920 yyval = Value::new_paren_args(
5921 ParenArgs {
5922 begin_t: Token::from(yystack.owned_value_at(2)),
5923 args: NodeList::from(yystack.owned_value_at(1)),
5924 end_t: Token::from(yystack.owned_value_at(0))
5925 }
5926 );
5927 },
5928
5929
5930 276 => {
5933 if !self.static_env.is_forward_args_declared() {
5934 return self.yyerror(
5935 yystack.location_at (1),
5936 DiagnosticMessage::UnexpectedToken { token_name: "tBDOT3".to_string() }
5937 );
5938 }
5939
5940 let mut args = NodeList::from(yystack.owned_value_at(3));
5941 let forwarded_args = *self.builder.forwarded_args( Token::from(yystack.owned_value_at(1)));
5942 args.push(forwarded_args);
5943
5944 yyval = Value::new_paren_args(
5945 ParenArgs {
5946 begin_t: Token::from(yystack.owned_value_at(4)),
5947 args,
5948 end_t: Token::from(yystack.owned_value_at(0))
5949 }
5950 );
5951 },
5952
5953
5954 277 => {
5957 if !self.static_env.is_forward_args_declared() {
5958 return self.yyerror(yystack.location_at (1), DiagnosticMessage::UnexpectedToken { token_name: "tBDOT3".to_string() });
5959 }
5960
5961 yyval = Value::new_paren_args(
5962 ParenArgs {
5963 begin_t: Token::from(yystack.owned_value_at(2)),
5964 args: vec![ *self.builder.forwarded_args( Token::from(yystack.owned_value_at(1))) ],
5965 end_t: Token::from(yystack.owned_value_at(0))
5966 }
5967 );
5968 },
5969
5970
5971 278 => {
5974 yyval = Value::new_opt_paren_args(
5975 OptParenArgs {
5976 begin_t: None,
5977 args: vec![],
5978 end_t: None
5979 }
5980 );
5981 },
5982
5983
5984 279 => {
5987 let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
5988 yyval = Value::new_opt_paren_args(
5989 OptParenArgs {
5990 begin_t: Some(begin_t),
5991 args,
5992 end_t: Some(end_t)
5993 }
5994 );
5995 },
5996
5997
5998 280 => {
6001 yyval = Value::NodeList( Box::default() );
6002 },
6003
6004
6005 281 => {
6008 yyval = yystack.owned_value_at(0);
6009 },
6010
6011
6012 282 => {
6015 yyval = yystack.owned_value_at(1);
6016 },
6017
6018
6019 283 => {
6022 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
6023 let pair = *self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None);
6024 nodes.push(pair);
6025 yyval = Value::NodeList(nodes);
6026 },
6027
6028
6029 284 => {
6032 yyval = Value::NodeList(
6033 Box::new(
6034 vec![
6035 *self.builder.associate(
6036 None,
6037 NodeList::from(yystack.owned_value_at(1)),
6038 None
6039 )
6040 ]
6041 )
6042 );
6043 },
6044
6045
6046 285 => {
6049 let command = Node::from(yystack.owned_value_at(0));
6050 self.value_expr(&command)?;
6051 yyval = Value::NodeList( Box::new(vec![ command ]) );
6052 },
6053
6054
6055 286 => {
6058 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
6059 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
6060
6061 yyval = Value::NodeList(nodes);
6062 },
6063
6064
6065 287 => {
6068 let hash = *self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None);
6069 let mut opt_block_arg = NodeList::from(yystack.owned_value_at(0));
6070
6071 let mut nodes = Box::new(Vec::with_capacity(1 + opt_block_arg.len()));
6072 nodes.push(hash);
6073 nodes.append(&mut opt_block_arg);
6074
6075 yyval = Value::NodeList(nodes);
6076 },
6077
6078
6079 288 => {
6082 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
6083 let hash = *self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None);
6084 let mut opt_block_arg = NodeList::from(yystack.owned_value_at(0));
6085
6086 nodes.reserve(1 + opt_block_arg.len());
6087 nodes.push(hash);
6088 nodes.append(&mut opt_block_arg);
6089
6090 yyval = Value::NodeList(nodes);
6091 },
6092
6093
6094 289 => {
6097 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
6098 },
6099
6100
6101 290 => {
6104 let lookahead =
6105 matches!(
6106 self.last_token_type,
6107 Lexer::tLPAREN2
6108 | Lexer::tLPAREN
6109 | Lexer:: tLPAREN_ARG
6110 | Lexer::tLBRACK2
6111 | Lexer::tLBRACK
6112 );
6113
6114 if lookahead { self.yylexer.cmdarg.pop() }
6115 self.yylexer.cmdarg.push(true);
6116 if lookahead { self.yylexer.cmdarg.push(false) }
6117 yyval = Value::None;
6118 },
6119
6120
6121 291 => {
6124 let lookahead = matches!(self.last_token_type, Lexer::tLBRACE_ARG);
6125
6126 if lookahead { self.yylexer.cmdarg.pop() }
6127 self.yylexer.cmdarg.pop();
6128 if lookahead { self.yylexer.cmdarg.push(false) }
6129
6130 yyval = yystack.owned_value_at(0);
6131 },
6132
6133
6134 292 => {
6137 yyval = Value::Node(
6138 self.builder.block_pass(
6139 Token::from(yystack.owned_value_at(1)),
6140 Some( BoxedNode::from(yystack.owned_value_at(0)))
6141 )
6142 );
6143 },
6144
6145
6146 293 => {
6149 if !self.static_env.is_anonymous_blockarg_declared() {
6150 return self.yyerror(yystack.location_at (0), DiagnosticMessage::NoAnonymousBlockarg {});
6151 }
6152
6153 yyval = Value::Node(
6154 self.builder.block_pass(
6155 Token::from(yystack.owned_value_at(0)),
6156 None,
6157 )
6158 );
6159 },
6160
6161
6162 294 => {
6165 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
6166 },
6167
6168
6169 295 => {
6172 yyval = Value::NodeList( Box::default() );
6173 },
6174
6175
6176 296 => {
6179 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
6180 },
6181
6182
6183 297 => {
6186 yyval = Value::NodeList(
6187 Box::new(
6188 vec![
6189 *self.builder.splat(
6190 Token::from(yystack.owned_value_at(1)),
6191 Some( BoxedNode::from(yystack.owned_value_at(0)))
6192 )
6193 ]
6194 )
6195 );
6196 },
6197
6198
6199 298 => {
6202 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
6203 nodes.push( Node::from(yystack.owned_value_at(0)) );
6204 yyval = Value::NodeList(nodes);
6205 },
6206
6207
6208 299 => {
6211 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
6212 let splat = *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))));
6213 nodes.push(splat);
6214 yyval = Value::NodeList(nodes);
6215 },
6216
6217
6218 300 => {
6221 yyval = Value::Node(
6222 self.builder.array(None, NodeList::from(yystack.owned_value_at(0)), None)
6223 );
6224 },
6225
6226
6227 301 => {
6230 yyval = yystack.owned_value_at(0);
6231 },
6232
6233
6234 302 => {
6237 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
6238 nodes.push( Node::from(yystack.owned_value_at(0)) );
6239 yyval = Value::NodeList(nodes);
6240 },
6241
6242
6243 303 => {
6246 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
6247 nodes.push(
6248 *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))))
6249 );
6250 yyval = Value::NodeList(nodes);
6251 },
6252
6253
6254 304 => {
6257 yyval = Value::NodeList(
6258 Box::new(
6259 vec![
6260 *self.builder.splat(
6261 Token::from(yystack.owned_value_at(1)),
6262 Some( BoxedNode::from(yystack.owned_value_at(0)))
6263 )
6264 ]
6265 )
6266 );
6267 },
6268
6269
6270 305 => {
6273 yyval = yystack.owned_value_at(0);
6274 },
6275
6276
6277 306 => {
6280 yyval = yystack.owned_value_at(0);
6281 },
6282
6283
6284 307 => {
6287 yyval = yystack.owned_value_at(0);
6288 },
6289
6290
6291 308 => {
6294 yyval = yystack.owned_value_at(0);
6295 },
6296
6297
6298 309 => {
6301 yyval = yystack.owned_value_at(0);
6302 },
6303
6304
6305 310 => {
6308 yyval = yystack.owned_value_at(0);
6309 },
6310
6311
6312 311 => {
6315 yyval = yystack.owned_value_at(0);
6316 },
6317
6318
6319 312 => {
6322 yyval = yystack.owned_value_at(0);
6323 },
6324
6325
6326 313 => {
6329 yyval = yystack.owned_value_at(0);
6330 },
6331
6332
6333 314 => {
6336 yyval = yystack.owned_value_at(0);
6337 },
6338
6339
6340 315 => {
6343 yyval = Value::Node(
6344 self.builder.call_method(
6345 None,
6346 None,
6347 Some( Token::from(yystack.owned_value_at(0))),
6348 None,
6349 vec![],
6350 None
6351 )
6352 );
6353 },
6354
6355
6356 316 => {
6359 self.yylexer.cmdarg.push(false);
6360 yyval = Value::None;
6361 },
6362
6363
6364 317 => {
6367 self.yylexer.cmdarg.pop();
6368
6369 yyval = Value::Node(
6370 self.builder.begin_keyword( Token::from(yystack.owned_value_at(3)), MaybeBoxedNode::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
6371 );
6372 },
6373
6374
6375 318 => { self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
6378
6379
6380 319 => {
6383 yyval = Value::Node(
6384 self.builder.begin(
6385 Token::from(yystack.owned_value_at(2)),
6386 None,
6387 Token::from(yystack.owned_value_at(0))
6388 )
6389 );
6390 },
6391
6392
6393 320 => { self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
6396
6397
6398 321 => {
6401 yyval = Value::Node(
6402 self.builder.begin(
6403 Token::from(yystack.owned_value_at(3)),
6404 Some( BoxedNode::from(yystack.owned_value_at(2))),
6405 Token::from(yystack.owned_value_at(0))
6406 )
6407 );
6408 },
6409
6410
6411 322 => {
6414 yyval = Value::Node(
6415 self.builder.begin(
6416 Token::from(yystack.owned_value_at(2)),
6417 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6418 Token::from(yystack.owned_value_at(0))
6419 )
6420 );
6421 },
6422
6423
6424 323 => {
6427 yyval = Value::Node(
6428 self.builder.const_fetch(
6429 BoxedNode::from(yystack.owned_value_at(2)),
6430 Token::from(yystack.owned_value_at(1)),
6431 Token::from(yystack.owned_value_at(0)),
6432 )
6433 );
6434 },
6435
6436
6437 324 => {
6440 yyval = Value::Node(
6441 self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
6442 );
6443 },
6444
6445
6446 325 => {
6449 yyval = Value::Node(
6450 self.builder.array(
6451 Some( Token::from(yystack.owned_value_at(2))),
6452 NodeList::from(yystack.owned_value_at(1)),
6453 Some( Token::from(yystack.owned_value_at(0)))
6454 )
6455 );
6456 },
6457
6458
6459 326 => {
6462 yyval = Value::Node(
6463 self.builder.associate(
6464 Some( Token::from(yystack.owned_value_at(2))),
6465 NodeList::from(yystack.owned_value_at(1)),
6466 Some( Token::from(yystack.owned_value_at(0)))
6467 )
6468 );
6469 },
6470
6471
6472 327 => {
6475 yyval = Value::Node(
6476 self.builder.keyword_cmd(
6477 KeywordCmd::Return,
6478 Token::from(yystack.owned_value_at(0)),
6479 None,
6480 vec![],
6481 None
6482 )?
6483 );
6484 },
6485
6486
6487 328 => {
6490 yyval = Value::Node(
6491 self.builder.keyword_cmd(
6492 KeywordCmd::Yield,
6493 Token::from(yystack.owned_value_at(3)),
6494 Some( Token::from(yystack.owned_value_at(2))),
6495 NodeList::from(yystack.owned_value_at(1)),
6496 Some( Token::from(yystack.owned_value_at(0)))
6497 )?
6498 );
6499 },
6500
6501
6502 329 => {
6505 yyval = Value::Node(
6506 self.builder.keyword_cmd(
6507 KeywordCmd::Yield,
6508 Token::from(yystack.owned_value_at(2)),
6509 Some( Token::from(yystack.owned_value_at(1))),
6510 vec![],
6511 Some( Token::from(yystack.owned_value_at(0)))
6512 )?
6513 );
6514 },
6515
6516
6517 330 => {
6520 yyval = Value::Node(
6521 self.builder.keyword_cmd(
6522 KeywordCmd::Yield,
6523 Token::from(yystack.owned_value_at(0)),
6524 None,
6525 vec![],
6526 None
6527 )?
6528 );
6529 },
6530
6531
6532 331 => {
6535 self.context.set_in_defined(true);
6536 yyval = Value::None;
6537 },
6538
6539
6540 332 => {
6543 self.context.set_in_defined(false);
6544 yyval = Value::Node(
6545 self.builder.keyword_cmd(
6546 KeywordCmd::Defined,
6547 Token::from(yystack.owned_value_at(5)),
6548 Some( Token::from(yystack.owned_value_at(3))),
6549 vec![ Node::from(yystack.owned_value_at(1)) ],
6550 Some( Token::from(yystack.owned_value_at(0)))
6551 )?
6552 );
6553 },
6554
6555
6556 333 => {
6559 yyval = Value::Node(
6560 self.builder.not_op(
6561 Token::from(yystack.owned_value_at(3)),
6562 Some( Token::from(yystack.owned_value_at(2))),
6563 Some( BoxedNode::from(yystack.owned_value_at(1))),
6564 Some( Token::from(yystack.owned_value_at(0)))
6565 )?
6566 );
6567 },
6568
6569
6570 334 => {
6573 yyval = Value::Node(
6574 self.builder.not_op(
6575 Token::from(yystack.owned_value_at(2)),
6576 Some( Token::from(yystack.owned_value_at(1))),
6577 None,
6578 Some( Token::from(yystack.owned_value_at(0)))
6579 )?
6580 );
6581 },
6582
6583
6584 335 => {
6587 let method_call = self.builder.call_method(
6588 None,
6589 None,
6590 Some( Token::from(yystack.owned_value_at(1))),
6591 None,
6592 vec![],
6593 None
6594 );
6595 let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
6596
6597 yyval = Value::Node(
6598 self.builder.block(
6599 method_call,
6600 begin_t,
6601 args_type,
6602 body,
6603 end_t
6604 )?
6605 );
6606 },
6607
6608
6609 336 => {
6612 yyval = yystack.owned_value_at(0);
6613 },
6614
6615
6616 337 => {
6619 let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
6620 yyval = Value::Node(
6621 self.builder.block(
6622 BoxedNode::from(yystack.owned_value_at(1)),
6623 begin_t,
6624 args_type,
6625 body,
6626 end_t
6627 )?
6628 );
6629 },
6630
6631
6632 338 => {
6635 yyval = yystack.owned_value_at(0);
6636 },
6637
6638
6639 339 => {
6642 let IfTail { keyword_t, body: else_body } = IfTail::from(yystack.owned_value_at(1));
6643
6644 yyval = Value::Node(
6645 self.builder.condition(
6646 Token::from(yystack.owned_value_at(5)),
6647 BoxedNode::from(yystack.owned_value_at(4)),
6648 Token::from(yystack.owned_value_at(3)),
6649 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6650 keyword_t,
6651 else_body,
6652 Some( Token::from(yystack.owned_value_at(0)))
6653 )
6654 );
6655 },
6656
6657
6658 340 => {
6661 let (else_t, body) = OptElse::from(yystack.owned_value_at(1)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6662
6663 yyval = Value::Node(
6664 self.builder.condition(
6665 Token::from(yystack.owned_value_at(5)),
6666 BoxedNode::from(yystack.owned_value_at(4)),
6667 Token::from(yystack.owned_value_at(3)),
6668 body,
6669 else_t,
6670 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6671 Some( Token::from(yystack.owned_value_at(0)))
6672 )
6673 );
6674 },
6675
6676
6677 341 => {
6680 let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
6681 yyval = Value::Node(
6682 self.builder.loop_(
6683 LoopType::While,
6684 Token::from(yystack.owned_value_at(3)),
6685 value,
6686 do_t,
6687 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6688 Token::from(yystack.owned_value_at(0))
6689 )
6690 );
6691 },
6692
6693
6694 342 => {
6697 let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
6698 yyval = Value::Node(
6699 self.builder.loop_(
6700 LoopType::Until,
6701 Token::from(yystack.owned_value_at(3)),
6702 value,
6703 do_t,
6704 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6705 Token::from(yystack.owned_value_at(0))
6706 )
6707 );
6708 },
6709
6710
6711 343 => {
6714 yyval = Value::None;
6717 },
6718
6719
6720 344 => {
6723 let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(1));
6724 let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6725
6726 yyval = Value::Node(
6727 self.builder.case(
6728 Token::from(yystack.owned_value_at(5)),
6729 Some( BoxedNode::from(yystack.owned_value_at(4))),
6730 when_bodies,
6731 else_t,
6732 else_body,
6733 Token::from(yystack.owned_value_at(0))
6734 )
6735 );
6736 },
6737
6738
6739 345 => {
6742 yyval = Value::None;
6745 },
6746
6747
6748 346 => {
6751 let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(1));
6752 let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6753
6754 yyval = Value::Node(
6755 self.builder.case(
6756 Token::from(yystack.owned_value_at(4)),
6757 None,
6758 when_bodies,
6759 else_t,
6760 else_body,
6761 Token::from(yystack.owned_value_at(0))
6762 )
6763 );
6764 },
6765
6766
6767 347 => {
6770 let PCaseBody { in_bodies, opt_else } = PCaseBody::from(yystack.owned_value_at(1));
6771 let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
6772
6773 yyval = Value::Node(
6774 self.builder.case_match(
6775 Token::from(yystack.owned_value_at(4)),
6776 BoxedNode::from(yystack.owned_value_at(3)),
6777 in_bodies,
6778 else_t,
6779 else_body,
6780 Token::from(yystack.owned_value_at(0))
6781 )
6782 );
6783 },
6784
6785
6786 348 => {
6789 let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
6790 yyval = Value::Node(
6791 self.builder.for_(
6792 Token::from(yystack.owned_value_at(5)),
6793 BoxedNode::from(yystack.owned_value_at(4)),
6794 Token::from(yystack.owned_value_at(3)),
6795 value,
6796 do_t,
6797 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6798 Token::from(yystack.owned_value_at(0))
6799 )
6800 );
6801 },
6802
6803
6804 349 => {
6807 self.local_push();
6808 self.context.set_in_class(true);
6809 yyval = Value::None;
6810 },
6811
6812
6813 350 => {
6816 let TokenWithContext { token: k_class, ctx } = TokenWithContext::from(yystack.owned_value_at(5));
6817 if self.context.in_def() {
6818 return self.yyerror(&k_class.loc, DiagnosticMessage::ClassDefinitionInMethodBody {});
6819 }
6820
6821 let Superclass { lt_t, value } = Superclass::from(yystack.owned_value_at(3));
6822
6823 yyval = Value::Node(
6824 self.builder.def_class(
6825 k_class,
6826 BoxedNode::from(yystack.owned_value_at(4)),
6827 lt_t,
6828 value,
6829 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6830 Token::from(yystack.owned_value_at(0))
6831 )
6832 );
6833
6834 self.local_pop();
6835 self.context.set_in_class(ctx.in_class());
6836 },
6837
6838
6839 351 => {
6842 self.context.set_in_def(false);
6843 self.context.set_in_class(false);
6844 self.local_push();
6845 yyval = Value::None;
6846 },
6847
6848
6849 352 => {
6852 let TokenWithContext { token: k_class, ctx } = TokenWithContext::from(yystack.owned_value_at(6));
6853 yyval = Value::Node(
6854 self.builder.def_sclass(
6855 k_class,
6856 Token::from(yystack.owned_value_at(5)),
6857 BoxedNode::from(yystack.owned_value_at(4)),
6858 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6859 Token::from(yystack.owned_value_at(0))
6860 )
6861 );
6862
6863 self.local_pop();
6864 self.context.set_in_def(ctx.in_def());
6865 self.context.set_in_class(ctx.in_class());
6866 },
6867
6868
6869 353 => {
6872 self.local_push();
6873 self.context.set_in_class(true);
6874 yyval = Value::None;
6875 },
6876
6877
6878 354 => {
6881 let TokenWithContext { token: k_module, ctx } = TokenWithContext::from(yystack.owned_value_at(4));
6882 if self.context.in_def() {
6883 return self.yyerror(&k_module.loc, DiagnosticMessage::ModuleDefinitionInMethodBody {});
6884 }
6885
6886 yyval = Value::Node(
6887 self.builder.def_module(
6888 k_module,
6889 BoxedNode::from(yystack.owned_value_at(3)),
6890 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6891 Token::from(yystack.owned_value_at(0))
6892 )
6893 );
6894
6895 self.local_pop();
6896 self.context.set_in_class(ctx.in_class());
6897 },
6898
6899
6900 355 => {
6903 let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
6904 let TokenWithContext { token: name_t, ctx } = name_t;
6905
6906 yyval = Value::Node(
6907 self.builder.def_method(
6908 def_t,
6909 name_t,
6910 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6911 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6912 Token::from(yystack.owned_value_at(0))
6913 )?
6914 );
6915
6916 self.local_pop();
6917 self.current_arg_stack.pop();
6918 self.context.set_in_def(ctx.in_def());
6919 },
6920
6921
6922 356 => {
6925 let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
6926 let TokenWithContext { token: name_t, ctx } = name_t;
6927
6928 yyval = Value::Node(
6929 self.builder.def_singleton(
6930 def_t,
6931 definee,
6932 dot_t,
6933 name_t,
6934 MaybeBoxedNode::from(yystack.owned_value_at(2)),
6935 MaybeBoxedNode::from(yystack.owned_value_at(1)),
6936 Token::from(yystack.owned_value_at(0))
6937 )?
6938 );
6939
6940 self.local_pop();
6941 self.current_arg_stack.pop();
6942 self.context.set_in_def(ctx.in_def());
6943 },
6944
6945
6946 357 => {
6949 yyval = Value::Node(
6950 self.builder.keyword_cmd(
6951 KeywordCmd::Break,
6952 Token::from(yystack.owned_value_at(0)),
6953 None,
6954 vec![],
6955 None
6956 )?
6957 );
6958 },
6959
6960
6961 358 => {
6964 yyval = Value::Node(
6965 self.builder.keyword_cmd(
6966 KeywordCmd::Next,
6967 Token::from(yystack.owned_value_at(0)),
6968 None,
6969 vec![],
6970 None
6971 )?
6972 );
6973 },
6974
6975
6976 359 => {
6979 yyval = Value::Node(
6980 self.builder.keyword_cmd(
6981 KeywordCmd::Redo,
6982 Token::from(yystack.owned_value_at(0)),
6983 None,
6984 vec![],
6985 None
6986 )?
6987 );
6988 },
6989
6990
6991 360 => {
6994 yyval = Value::Node(
6995 self.builder.keyword_cmd(
6996 KeywordCmd::Retry,
6997 Token::from(yystack.owned_value_at(0)),
6998 None,
6999 vec![],
7000 None
7001 )?
7002 );
7003 },
7004
7005
7006 361 => {
7009 let primary = BoxedNode::from(yystack.owned_value_at(0));
7010 self.value_expr(&primary)?;
7011 yyval = Value::Node(primary);
7012 },
7013
7014
7015 362 => {
7018 yyval = yystack.owned_value_at(0);
7019 },
7020
7021
7022 363 => {
7025 self.warn_eol(yystack.location_at (0), "if");
7026 yyval = yystack.owned_value_at(0);
7027 },
7028
7029
7030 364 => {
7033 yyval = yystack.owned_value_at(0);
7034 },
7035
7036
7037 365 => {
7040 yyval = yystack.owned_value_at(0);
7041 },
7042
7043
7044 366 => {
7047 yyval = yystack.owned_value_at(0);
7048 },
7049
7050
7051 367 => {
7054 yyval = yystack.owned_value_at(0);
7055 },
7056
7057
7058 368 => {
7061 yyval = yystack.owned_value_at(0);
7062 },
7063
7064
7065 369 => {
7068 yyval = Value::TokenWithContext(
7069 Box::new(
7070 TokenWithContext {
7071 token: Token::from(yystack.owned_value_at(0)),
7072 ctx: self.context.dump(),
7073 }
7074 )
7075 );
7076 },
7077
7078
7079 370 => {
7082 yyval = Value::TokenWithContext(
7083 Box::new(
7084 TokenWithContext {
7085 token: Token::from(yystack.owned_value_at(0)),
7086 ctx: self.context.dump(),
7087 }
7088 )
7089 );
7090 },
7091
7092
7093 371 => {
7096 yyval = yystack.owned_value_at(0);
7097 self.context.set_in_argdef(true);
7098 },
7099
7100
7101 372 => {
7104 yyval = yystack.owned_value_at(0);
7105 },
7106
7107
7108 373 => {
7111 yyval = yystack.owned_value_at(0);
7112 },
7113
7114
7115 374 => {
7118 yyval = yystack.owned_value_at(0);
7119 },
7120
7121
7122 375 => {
7125 yyval = yystack.owned_value_at(0);
7126 },
7127
7128
7129 376 => {
7132 yyval = yystack.owned_value_at(0);
7133 },
7134
7135
7136 377 => {
7139 yyval = yystack.owned_value_at(0);
7140 },
7141
7142
7143 378 => {
7146 self.warn_eol(yystack.location_at (0), "elsif");
7147 yyval = yystack.owned_value_at(0);
7148 },
7149
7150
7151 379 => {
7154 yyval = yystack.owned_value_at(0);
7155 },
7156
7157
7158 380 => {
7161 if self.context.in_class() && !self.context.in_def() && !(self.context.in_block() || self.context.in_lambda()) {
7162 return self.yyerror(yystack.location_at (0), DiagnosticMessage::InvalidReturnInClassOrModuleBody {});
7163 }
7164 yyval = yystack.owned_value_at(0);
7165 },
7166
7167
7168 381 => {
7171 yyval = yystack.owned_value_at(0);
7172 },
7173
7174
7175 382 => {
7178 yyval = yystack.owned_value_at(0);
7179 },
7180
7181
7182 383 => {
7185 yyval = yystack.owned_value_at(0);
7186 },
7187
7188
7189 384 => {
7192 yyval = yystack.owned_value_at(0);
7193 },
7194
7195
7196 385 => {
7199 yyval = yystack.owned_value_at(0);
7200 },
7201
7202
7203 386 => {
7206 let (keyword_t, body) = OptElse::from(yystack.owned_value_at(0)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
7207 yyval = Value::new_if_tail(IfTail { keyword_t, body });
7208 },
7209
7210
7211 387 => {
7214 let IfTail { keyword_t, body: else_body } = IfTail::from(yystack.owned_value_at(0));
7215
7216 let elsif_t = Token::from(yystack.owned_value_at(4));
7217
7218 yyval = Value::new_if_tail(
7219 IfTail {
7220 keyword_t: Some(elsif_t.clone()),
7221 body: Some(
7222 self.builder.condition(
7223 elsif_t,
7224 BoxedNode::from(yystack.owned_value_at(3)),
7225 Token::from(yystack.owned_value_at(2)),
7226 MaybeBoxedNode::from(yystack.owned_value_at(1)),
7227 keyword_t,
7228 else_body,
7229 None
7230 )
7231 )
7232 }
7233 );
7234 },
7235
7236
7237 388 => {
7240 yyval = Value::new_opt_else(None);
7241 },
7242
7243
7244 389 => {
7247 let else_t = Token::from(yystack.owned_value_at(1));
7248 let body = MaybeBoxedNode::from(yystack.owned_value_at(0));
7249 yyval = Value::new_opt_else(Some(Else { else_t, body }));
7250 },
7251
7252
7253 390 => {
7256 yyval = yystack.owned_value_at(0);
7257 },
7258
7259
7260 391 => {
7263 yyval = yystack.owned_value_at(0);
7264 },
7265
7266
7267 392 => {
7270 yyval = Value::Node(
7271 self.builder.arg( Token::from(yystack.owned_value_at(0)))?
7272 );
7273 },
7274
7275
7276 393 => {
7279 yyval = Value::Node(
7280 self.builder.multi_lhs(
7281 Some( Token::from(yystack.owned_value_at(2))),
7282 NodeList::from(yystack.owned_value_at(1)),
7283 Some( Token::from(yystack.owned_value_at(0)))
7284 )
7285 );
7286 },
7287
7288
7289 394 => {
7292 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
7293 },
7294
7295
7296 395 => {
7299 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
7300 nodes.push( Node::from(yystack.owned_value_at(0)) );
7301 yyval = Value::NodeList(nodes);
7302 },
7303
7304
7305 396 => {
7308 yyval = yystack.owned_value_at(0);
7309 },
7310
7311
7312 397 => {
7315 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
7316 nodes.push( Node::from(yystack.owned_value_at(0)) );
7317 yyval = Value::NodeList(nodes);
7318 },
7319
7320
7321 398 => {
7324 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(4));
7325 let f_rest_marg = Node::from(yystack.owned_value_at(2));
7326 let mut f_marg_list = NodeList::from(yystack.owned_value_at(0));
7327
7328 nodes.reserve(1 + f_marg_list.len());
7329 nodes.push(f_rest_marg);
7330 nodes.append(&mut f_marg_list);
7331
7332 yyval = Value::NodeList(nodes);
7333 },
7334
7335
7336 399 => {
7339 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
7340 },
7341
7342
7343 400 => {
7346 let f_rest_marg = Node::from(yystack.owned_value_at(2));
7347 let mut f_marg_list = NodeList::from(yystack.owned_value_at(0));
7348
7349 let mut nodes = Box::new( Vec::with_capacity(1 + f_marg_list.len()) );
7350 nodes.push(f_rest_marg);
7351 nodes.append(&mut f_marg_list);
7352
7353 yyval = Value::NodeList(nodes);
7354 },
7355
7356
7357 401 => {
7360 yyval = Value::Node(
7361 self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
7362 );
7363 },
7364
7365
7366 402 => {
7369 yyval = Value::Node(
7370 self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?
7371 );
7372 },
7373
7374
7375 403 => {
7378 yyval = yystack.owned_value_at(0);
7379 },
7380
7381
7382 404 => {
7385 yyval = yystack.owned_value_at(0);
7386 },
7387
7388
7389 405 => {
7392 self.context.set_in_argdef(false);
7393 yyval = Value::None;
7394 },
7395
7396
7397 406 => {
7400 yyval = yystack.owned_value_at(0);
7401 },
7402
7403
7404 407 => {
7407 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
7408 let mut f_kwrest = NodeList::from(yystack.owned_value_at(1));
7409 let mut opt_f_block_arg = NodeList::from(yystack.owned_value_at(0));
7410
7411 nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
7412 nodes.append(&mut f_kwrest);
7413 nodes.append(&mut opt_f_block_arg);
7414
7415 yyval = Value::NodeList(nodes);
7416 },
7417
7418
7419 408 => {
7422 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
7423 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
7424
7425 yyval = Value::NodeList(nodes);
7426 },
7427
7428
7429 409 => {
7432 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
7433 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
7434
7435 yyval = Value::NodeList(nodes);
7436 },
7437
7438
7439 410 => {
7442 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
7443 },
7444
7445
7446 411 => {
7449 yyval = yystack.owned_value_at(0);
7450 },
7451
7452
7453 412 => {
7456 yyval = Value::NodeList( Box::default() );
7457 },
7458
7459
7460 413 => {
7463 yyval = yystack.owned_value_at(0);
7464 },
7465
7466
7467 414 => {
7470 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
7471 let mut f_block_optarg = NodeList::from(yystack.owned_value_at(3));
7472 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
7473 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7474
7475 nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + opt_block_args_tail.len());
7476 nodes.append(&mut f_block_optarg);
7477 nodes.append(&mut f_rest_arg);
7478 nodes.append(&mut opt_block_args_tail);
7479
7480 yyval = Value::NodeList(nodes);
7481 },
7482
7483
7484 415 => {
7487 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(7));
7488 let mut f_block_optarg = NodeList::from(yystack.owned_value_at(5));
7489 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
7490 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
7491 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7492
7493 nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
7494 nodes.append(&mut f_block_optarg);
7495 nodes.append(&mut f_rest_arg);
7496 nodes.append(&mut f_arg);
7497 nodes.append(&mut opt_block_args_tail);
7498
7499 yyval = Value::NodeList(nodes);
7500 },
7501
7502
7503 416 => {
7506 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
7507 let mut f_block_optarg = NodeList::from(yystack.owned_value_at(1));
7508 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7509
7510 nodes.reserve(f_block_optarg.len() + opt_block_args_tail.len());
7511 nodes.append(&mut f_block_optarg);
7512 nodes.append(&mut opt_block_args_tail);
7513
7514 yyval = Value::NodeList(nodes);
7515 },
7516
7517
7518 417 => {
7521 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
7522 let mut f_block_optarg = NodeList::from(yystack.owned_value_at(3));
7523 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
7524 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7525
7526 nodes.reserve(f_block_optarg.len() + f_arg.len() + opt_block_args_tail.len());
7527 nodes.append(&mut f_block_optarg);
7528 nodes.append(&mut f_arg);
7529 nodes.append(&mut opt_block_args_tail);
7530
7531 yyval = Value::NodeList(nodes);
7532 },
7533
7534
7535 418 => {
7538 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
7539 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
7540 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7541
7542 nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
7543 nodes.append(&mut f_rest_arg);
7544 nodes.append(&mut opt_block_args_tail);
7545
7546 yyval = Value::NodeList(nodes);
7547 },
7548
7549
7550 419 => {
7553 yyval = yystack.owned_value_at(1);
7554 },
7555
7556
7557 420 => {
7560 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
7561 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
7562 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
7563 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7564
7565 nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
7566 nodes.append(&mut f_rest_arg);
7567 nodes.append(&mut f_arg);
7568 nodes.append(&mut opt_block_args_tail);
7569
7570 yyval = Value::NodeList(nodes);
7571 },
7572
7573
7574 421 => {
7577 let f_arg = BoxedNodeList::from(yystack.owned_value_at(1));
7578 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7579 let mut nodes;
7580
7581 if opt_block_args_tail.is_empty() && f_arg.len() == 1 {
7582 let procarg0 = *self.builder.procarg0(
7583 Box::new(f_arg.into_iter().next().unwrap())
7584 );
7585 nodes = Box::new( vec![ procarg0 ] );
7586 } else {
7587 nodes = f_arg;
7588 nodes.append(&mut opt_block_args_tail);
7589 }
7590
7591 yyval = Value::NodeList(nodes);
7592 },
7593
7594
7595 422 => {
7598 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
7599 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
7600 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7601
7602 nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
7603 nodes.append(&mut f_rest_arg);
7604 nodes.append(&mut opt_block_args_tail);
7605
7606 yyval = Value::NodeList(nodes);
7607 },
7608
7609
7610 423 => {
7613 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
7614 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
7615 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
7616 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7617
7618 nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
7619 nodes.append(&mut f_rest_arg);
7620 nodes.append(&mut f_arg);
7621 nodes.append(&mut opt_block_args_tail);
7622
7623 yyval = Value::NodeList(nodes);
7624 },
7625
7626
7627 424 => {
7630 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
7631 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
7632
7633 yyval = Value::NodeList(nodes);
7634 },
7635
7636
7637 425 => {
7640 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
7641 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
7642 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7643
7644 nodes.reserve(f_arg.len() + opt_block_args_tail.len());
7645 nodes.append(&mut f_arg);
7646 nodes.append(&mut opt_block_args_tail);
7647
7648 yyval = Value::NodeList(nodes);
7649 },
7650
7651
7652 426 => {
7655 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
7656 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
7657
7658 yyval = Value::NodeList(nodes);
7659 },
7660
7661
7662 427 => {
7665 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
7666 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
7667 let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
7668
7669 nodes.reserve(f_arg.len() + opt_block_args_tail.len());
7670 nodes.append(&mut f_arg);
7671 nodes.append(&mut opt_block_args_tail);
7672
7673 yyval = Value::NodeList(nodes);
7674 },
7675
7676
7677 428 => {
7680 yyval = yystack.owned_value_at(0);
7681 },
7682
7683
7684 429 => {
7687 yyval = Value::MaybeNode(
7688 self.builder.args(None, vec![], None)
7689 );
7690 },
7691
7692
7693 430 => {
7696 self.yylexer.command_start = true;
7697 yyval = yystack.owned_value_at(0);
7698 },
7699
7700
7701 431 => {
7704 self.max_numparam_stack.set_has_ordinary_params();
7705 self.current_arg_stack.set(None);
7706 self.context.set_in_argdef(false);
7707
7708 yyval = Value::MaybeNode(
7709 self.builder.args(
7710 Some( Token::from(yystack.owned_value_at(2))),
7711 NodeList::from(yystack.owned_value_at(1)),
7712 Some( Token::from(yystack.owned_value_at(0)))
7713 )
7714 );
7715 },
7716
7717
7718 432 => {
7721 self.max_numparam_stack.set_has_ordinary_params();
7722 self.current_arg_stack.set(None);
7723 self.context.set_in_argdef(false);
7724
7725 let mut nodes = NodeList::from(yystack.owned_value_at(2));
7726 nodes.append(&mut NodeList::from(yystack.owned_value_at(1)));
7727
7728 yyval = Value::MaybeNode(
7729 self.builder.args(
7730 Some( Token::from(yystack.owned_value_at(3))),
7731 nodes,
7732 Some( Token::from(yystack.owned_value_at(0)))
7733 )
7734 );
7735 },
7736
7737
7738 433 => {
7741 yyval = Value::NodeList( Box::default() );
7742 },
7743
7744
7745 434 => {
7748 yyval = yystack.owned_value_at(1);
7749 },
7750
7751
7752 435 => {
7755 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
7756 },
7757
7758
7759 436 => {
7762 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
7763 nodes.push( Node::from(yystack.owned_value_at(0)) );
7764 yyval = Value::NodeList(nodes);
7765 },
7766
7767
7768 437 => {
7771 let ident_t = Token::from(yystack.owned_value_at(0));
7772 self.static_env.declare(clone_value(&ident_t).as_str());
7773 yyval = Value::Node(
7774 self.builder.shadowarg(ident_t)?
7775 );
7776 },
7777
7778
7779 438 => {
7782 yyval = Value::None;
7783 },
7784
7785
7786 439 => {
7789 self.static_env.extend_dynamic();
7790 self.max_numparam_stack.push(false);
7791 yyval = Value::Num(self.yylexer.lpar_beg);
7792 self.yylexer.lpar_beg = self.yylexer.paren_nest;
7793 },
7794
7795
7796 440 => {
7799 yyval = Value::Context(self.context.dump());
7800 self.context.set_in_lambda(true);
7801 },
7802
7803
7804 441 => {
7807 self.yylexer.cmdarg.push(false);
7808 yyval = Value::None;
7809 },
7810
7811
7812 442 => {
7815 self.yylexer.lpar_beg = Num::from(yystack.owned_value_at(4));
7816
7817 let lambda_call = self.builder.call_lambda( Token::from(yystack.owned_value_at(5)));
7818 let args = if self.max_numparam_stack.has_numparams() {
7819 ArgsType::Numargs(self.max_numparam_stack.top() as u8)
7820 } else {
7821 ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(2)))
7822 };
7823 let LambdaBody { begin_t, body, end_t } = LambdaBody::from(yystack.owned_value_at(0));
7824
7825 self.max_numparam_stack.pop();
7826 self.static_env.unextend();
7827 self.yylexer.cmdarg.pop();
7828 self.context.set_in_lambda( Context::from(yystack.owned_value_at(3)).in_lambda());
7829
7830 yyval = Value::Node(
7831 self.builder.block(
7832 lambda_call,
7833 begin_t,
7834 args,
7835 body,
7836 end_t
7837 )?
7838 );
7839 },
7840
7841
7842 443 => {
7845 self.context.set_in_argdef(false);
7846 self.max_numparam_stack.set_has_ordinary_params();
7847
7848 let mut nodes = NodeList::from(yystack.owned_value_at(2));
7849 nodes.append(&mut NodeList::from(yystack.owned_value_at(1)));
7850
7851 yyval = Value::MaybeNode(
7852 self.builder.args(
7853 Some( Token::from(yystack.owned_value_at(3))),
7854 nodes,
7855 Some( Token::from(yystack.owned_value_at(0)))
7856 )
7857 );
7858 },
7859
7860
7861 444 => {
7864 self.context.set_in_argdef(false);
7865 let args = NodeList::from(yystack.owned_value_at(0));
7866 if !args.is_empty() {
7867 self.max_numparam_stack.set_has_ordinary_params();
7868 }
7869 yyval = Value::MaybeNode(
7870 self.builder.args(None, args, None)
7871 );
7872 },
7873
7874
7875 445 => {
7878 yyval = Value::Context(self.context.dump());
7879 self.context.set_in_lambda(true);
7880 },
7881
7882
7883 446 => {
7886 self.context.set_in_lambda( Context::from(yystack.owned_value_at(2)).in_lambda());
7887 yyval = Value::new_lambda_body(
7888 LambdaBody {
7889 begin_t: Token::from(yystack.owned_value_at(3)),
7890 body: MaybeBoxedNode::from(yystack.owned_value_at(1)),
7891 end_t: Token::from(yystack.owned_value_at(0))
7892 }
7893 );
7894 },
7895
7896
7897 447 => {
7900 yyval = Value::Context(self.context.dump());
7901 self.context.set_in_lambda(true);
7902 },
7903
7904
7905 448 => {
7908 self.context.set_in_lambda( Context::from(yystack.owned_value_at(2)).in_lambda());
7909 yyval = Value::new_lambda_body(
7910 LambdaBody {
7911 begin_t: Token::from(yystack.owned_value_at(3)),
7912 body: MaybeBoxedNode::from(yystack.owned_value_at(1)),
7913 end_t: Token::from(yystack.owned_value_at(0))
7914 }
7915 );
7916 },
7917
7918
7919 449 => {
7922 yyval = Value::Context(self.context.dump());
7923 self.context.set_in_block(true);
7924 },
7925
7926
7927 450 => {
7930 self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
7931 let DoBody { args_type, body } = DoBody::from(yystack.owned_value_at(1));
7932 yyval = Value::new_do_block(
7933 DoBlock {
7934 begin_t: Token::from(yystack.owned_value_at(3)),
7935 args_type,
7936 body,
7937 end_t: Token::from(yystack.owned_value_at(0))
7938 }
7939 );
7940 },
7941
7942
7943 451 => {
7946 let DoBlock { begin_t, args_type, body, end_t } = DoBlock::from(yystack.owned_value_at(0));
7947 yyval = Value::Node(
7948 self.builder.block(
7949 BoxedNode::from(yystack.owned_value_at(1)),
7950 begin_t,
7951 args_type,
7952 body,
7953 end_t
7954 )?
7955 );
7956 },
7957
7958
7959 452 => {
7962 let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(0));
7963 yyval = Value::Node(
7964 self.builder.call_method(
7965 Some( BoxedNode::from(yystack.owned_value_at(3))),
7966 Some( Token::from(yystack.owned_value_at(2))),
7967 Some( Token::from(yystack.owned_value_at(1))),
7968 begin_t,
7969 args,
7970 end_t
7971 )
7972 );
7973 },
7974
7975
7976 453 => {
7979 let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(1));
7980 let method_call = self.builder.call_method(
7981 Some( BoxedNode::from(yystack.owned_value_at(4))),
7982 Some( Token::from(yystack.owned_value_at(3))),
7983 Some( Token::from(yystack.owned_value_at(2))),
7984 begin_t,
7985 args,
7986 end_t
7987 );
7988
7989 let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
7990 yyval = Value::Node(
7991 self.builder.block(
7992 method_call,
7993 begin_t,
7994 args_type,
7995 body,
7996 end_t
7997 )?
7998 );
7999 },
8000
8001
8002 454 => {
8005 let method_call = self.builder.call_method(
8006 Some( BoxedNode::from(yystack.owned_value_at(4))),
8007 Some( Token::from(yystack.owned_value_at(3))),
8008 Some( Token::from(yystack.owned_value_at(2))),
8009 None,
8010 NodeList::from(yystack.owned_value_at(1)),
8011 None
8012 );
8013
8014 let DoBlock { begin_t, args_type, body, end_t } = DoBlock::from(yystack.owned_value_at(0));
8015 yyval = Value::Node(
8016 self.builder.block(
8017 method_call,
8018 begin_t,
8019 args_type,
8020 body,
8021 end_t
8022 )?
8023 );
8024 },
8025
8026
8027 455 => {
8030 let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
8031
8032 yyval = Value::Node(
8033 self.builder.call_method(
8034 None,
8035 None,
8036 Some( Token::from(yystack.owned_value_at(1))),
8037 Some(begin_t),
8038 args,
8039 Some(end_t)
8040 )
8041 );
8042 },
8043
8044
8045 456 => {
8048 let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(0));
8049
8050 yyval = Value::Node(
8051 self.builder.call_method(
8052 Some( BoxedNode::from(yystack.owned_value_at(3))),
8053 Some( Token::from(yystack.owned_value_at(2))),
8054 Some( Token::from(yystack.owned_value_at(1))),
8055 begin_t,
8056 args,
8057 end_t
8058 )
8059 );
8060 },
8061
8062
8063 457 => {
8066 let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
8067
8068 yyval = Value::Node(
8069 self.builder.call_method(
8070 Some( BoxedNode::from(yystack.owned_value_at(3))),
8071 Some( Token::from(yystack.owned_value_at(2))),
8072 Some( Token::from(yystack.owned_value_at(1))),
8073 Some(begin_t),
8074 args,
8075 Some(end_t)
8076 )
8077 );
8078 },
8079
8080
8081 458 => {
8084 yyval = Value::Node(
8085 self.builder.call_method(
8086 Some( BoxedNode::from(yystack.owned_value_at(2))),
8087 Some( Token::from(yystack.owned_value_at(1))),
8088 Some( Token::from(yystack.owned_value_at(0))),
8089 None,
8090 vec![],
8091 None
8092 )
8093 );
8094 },
8095
8096
8097 459 => {
8100 let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
8101
8102 yyval = Value::Node(
8103 self.builder.call_method(
8104 Some( BoxedNode::from(yystack.owned_value_at(2))),
8105 Some( Token::from(yystack.owned_value_at(1))),
8106 None,
8107 Some(begin_t),
8108 args,
8109 Some(end_t)
8110 )
8111 );
8112 },
8113
8114
8115 460 => {
8118 let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
8119
8120 yyval = Value::Node(
8121 self.builder.call_method(
8122 Some( BoxedNode::from(yystack.owned_value_at(2))),
8123 Some( Token::from(yystack.owned_value_at(1))),
8124 None,
8125 Some(begin_t),
8126 args,
8127 Some(end_t)
8128 )
8129 );
8130 },
8131
8132
8133 461 => {
8136 let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
8137
8138 yyval = Value::Node(
8139 self.builder.keyword_cmd(
8140 KeywordCmd::Super,
8141 Token::from(yystack.owned_value_at(1)),
8142 Some(begin_t),
8143 args,
8144 Some(end_t)
8145 )?
8146 );
8147 },
8148
8149
8150 462 => {
8153 yyval = Value::Node(
8154 self.builder.keyword_cmd(
8155 KeywordCmd::Zsuper,
8156 Token::from(yystack.owned_value_at(0)),
8157 None,
8158 vec![],
8159 None
8160 )?
8161 );
8162 },
8163
8164
8165 463 => {
8168 yyval = Value::Node(
8169 self.builder.index(
8170 BoxedNode::from(yystack.owned_value_at(3)),
8171 Token::from(yystack.owned_value_at(2)),
8172 NodeList::from(yystack.owned_value_at(1)),
8173 Token::from(yystack.owned_value_at(0))
8174 )
8175 );
8176 },
8177
8178
8179 464 => {
8182 yyval = Value::Context(self.context.dump());
8183 self.context.set_in_block(true);
8184 },
8185
8186
8187 465 => {
8190 let BraceBody { args_type, body } = BraceBody::from(yystack.owned_value_at(1));
8191 self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
8192
8193 yyval = Value::new_brace_block(
8194 BraceBlock {
8195 begin_t: Token::from(yystack.owned_value_at(3)),
8196 args_type,
8197 body,
8198 end_t: Token::from(yystack.owned_value_at(0))
8199 }
8200 );
8201 },
8202
8203
8204 466 => {
8207 yyval = Value::Context(self.context.dump());
8208 self.context.set_in_block(true);
8209 },
8210
8211
8212 467 => {
8215 let DoBody { args_type, body } = DoBody::from(yystack.owned_value_at(1));
8216 self.context.set_in_block( Context::from(yystack.owned_value_at(2)).in_block());
8217
8218 yyval = Value::new_brace_block(
8219 BraceBlock {
8220 begin_t: Token::from(yystack.owned_value_at(3)),
8221 args_type,
8222 body,
8223 end_t: Token::from(yystack.owned_value_at(0))
8224 }
8225 );
8226 },
8227
8228
8229 468 => {
8232 self.static_env.extend_dynamic();
8233 self.max_numparam_stack.push(false);
8234 yyval = Value::None;
8235 },
8236
8237
8238 469 => {
8241 let args_type = if self.max_numparam_stack.has_numparams() {
8242 ArgsType::Numargs(self.max_numparam_stack.top() as u8)
8243 } else {
8244 ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(1)))
8245 };
8246
8247 self.max_numparam_stack.pop();
8248 self.static_env.unextend();
8249
8250 yyval = Value::new_brace_body(
8251 BraceBody {
8252 args_type,
8253 body: MaybeBoxedNode::from(yystack.owned_value_at(0))
8254 }
8255 );
8256 },
8257
8258
8259 470 => {
8262 self.static_env.extend_dynamic();
8263 self.max_numparam_stack.push(false);
8264 self.yylexer.cmdarg.push(false);
8265 yyval = Value::None;
8266 },
8267
8268
8269 471 => {
8272 let args_type = if self.max_numparam_stack.has_numparams() {
8273 ArgsType::Numargs(self.max_numparam_stack.top() as u8)
8274 } else {
8275 ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(1)))
8276 };
8277
8278 self.max_numparam_stack.pop();
8279 self.static_env.unextend();
8280 self.yylexer.cmdarg.pop();
8281
8282 yyval = Value::new_do_body(
8283 DoBody { args_type, body: MaybeBoxedNode::from(yystack.owned_value_at(0)) }
8284 );
8285 },
8286
8287
8288 472 => {
8291 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
8292 },
8293
8294
8295 473 => {
8298 yyval = Value::NodeList(
8299 Box::new(
8300 vec![
8301 *self.builder.splat(
8302 Token::from(yystack.owned_value_at(1)),
8303 Some( BoxedNode::from(yystack.owned_value_at(0)))
8304 )
8305 ]
8306 )
8307 );
8308 },
8309
8310
8311 474 => {
8314 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
8315 nodes.push( Node::from(yystack.owned_value_at(0)) );
8316 yyval = Value::NodeList(nodes);
8317 },
8318
8319
8320 475 => {
8323 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
8324 let splat = *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))));
8325 nodes.push(splat);
8326 yyval = Value::NodeList(nodes);
8327 },
8328
8329
8330 476 => {
8333 let when = *self.builder.when( Token::from(yystack.owned_value_at(4)), NodeList::from(yystack.owned_value_at(3)), Token::from(yystack.owned_value_at(2)), MaybeBoxedNode::from(yystack.owned_value_at(1)));
8334 let Cases { mut when_bodies, opt_else } = Cases::from(yystack.owned_value_at(0));
8335
8336 let mut nodes = Vec::with_capacity(1 + when_bodies.len());
8337 nodes.push(when);
8338 nodes.append(&mut when_bodies);
8339
8340 yyval = Value::new_case_body(CaseBody { when_bodies: nodes, opt_else });
8341 },
8342
8343
8344 477 => {
8347 yyval = Value::new_cases(Cases { when_bodies: vec![], opt_else: OptElse::from(yystack.owned_value_at(0)) });
8348 },
8349
8350
8351 478 => {
8354 let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(0));
8355 yyval = Value::new_cases(Cases { when_bodies, opt_else });
8356 },
8357
8358
8359 479 => {
8362 self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
8363 self.yylexer.command_start = false;
8364 self.pattern_variables.push();
8365 self.pattern_hash_keys.push();
8366
8367 yyval = Value::Bool(self.context.in_kwarg());
8368 self.context.set_in_kwarg(true);
8369 },
8370
8371
8372 480 => {
8375 self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(2)));
8376 self.pattern_variables.pop();
8377 self.pattern_hash_keys.pop();
8378 yyval = Value::None;
8379 },
8380
8381
8382 481 => {
8385 let PCases { mut in_bodies, opt_else } = PCases::from(yystack.owned_value_at(0));
8386 let PTopExpr { pattern, guard } = PTopExpr::from(yystack.owned_value_at(4));
8387
8388 let mut nodes = Vec::with_capacity(1 + in_bodies.len());
8389 nodes.push(
8390 *self.builder.in_pattern(
8391 Token::from(yystack.owned_value_at(6)),
8392 pattern,
8393 guard,
8394 Token::from(yystack.owned_value_at(3)),
8395 MaybeBoxedNode::from(yystack.owned_value_at(1))
8396 )
8397 );
8398 nodes.append(&mut in_bodies);
8399
8400 yyval = Value::new_p_case_body(PCaseBody { in_bodies: nodes, opt_else });
8401 },
8402
8403
8404 482 => {
8407 yyval = Value::new_p_cases(PCases { in_bodies: vec![], opt_else: OptElse::from(yystack.owned_value_at(0)) });
8408 },
8409
8410
8411 483 => {
8414 let PCaseBody { in_bodies, opt_else } = PCaseBody::from(yystack.owned_value_at(0));
8415 yyval = Value::new_p_cases(PCases { in_bodies, opt_else });
8416 },
8417
8418
8419 484 => {
8422 yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::from(yystack.owned_value_at(0)), guard: None });
8423 },
8424
8425
8426 485 => {
8429 let guard = self.builder.if_guard( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)));
8430 yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::from(yystack.owned_value_at(2)), guard: Some(guard) });
8431 },
8432
8433
8434 486 => {
8437 let guard = self.builder.unless_guard( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)));
8438 yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::from(yystack.owned_value_at(2)), guard: Some(guard) });
8439 },
8440
8441
8442 487 => {
8445 yyval = yystack.owned_value_at(0);
8446 },
8447
8448
8449 488 => {
8452 yyval = Value::Node(
8453 self.builder.array_pattern(
8454 None,
8455 vec![ Node::from(yystack.owned_value_at(1)) ],
8456 Some( Token::from(yystack.owned_value_at(0))),
8457 None
8458 )
8459 );
8460 },
8461
8462
8463 489 => {
8466 let MatchPatternWithTrailingComma { mut elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(0));
8467
8468 let mut nodes = Vec::with_capacity(1 + elements.len());
8469 nodes.push( Node::from(yystack.owned_value_at(2)));
8470 nodes.append(&mut elements);
8471
8472 yyval = Value::Node(
8473 self.builder.array_pattern(None, nodes, trailing_comma, None)
8474 );
8475 },
8476
8477
8478 490 => {
8481 yyval = Value::Node(
8482 self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(0)), None)
8483 );
8484 },
8485
8486
8487 491 => {
8490 yyval = Value::Node(
8491 self.builder.array_pattern(None, NodeList::from(yystack.owned_value_at(0)), None, None)
8492 );
8493 },
8494
8495
8496 492 => {
8499 yyval = Value::Node(
8500 self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(0)), None)
8501 );
8502 },
8503
8504
8505 493 => {
8508 yyval = yystack.owned_value_at(0);
8509 },
8510
8511
8512 494 => {
8515 yyval = Value::Node(
8516 self.builder.match_as(
8517 BoxedNode::from(yystack.owned_value_at(2)),
8518 Token::from(yystack.owned_value_at(1)),
8519 BoxedNode::from(yystack.owned_value_at(0))
8520 )
8521 );
8522 },
8523
8524
8525 495 => {
8528 yyval = yystack.owned_value_at(0);
8529 },
8530
8531
8532 496 => {
8535 yyval = Value::Node(
8536 self.builder.match_alt(
8537 BoxedNode::from(yystack.owned_value_at(2)),
8538 Token::from(yystack.owned_value_at(1)),
8539 BoxedNode::from(yystack.owned_value_at(0))
8540 )
8541 );
8542 },
8543
8544
8545 497 => {
8548 yyval = yystack.owned_value_at(0);
8549 },
8550
8551
8552 498 => {
8555 yyval = yystack.owned_value_at(0);
8556 self.pattern_hash_keys.push();
8557 },
8558
8559
8560 499 => {
8563 yyval = yystack.owned_value_at(0);
8564 self.pattern_hash_keys.push();
8565 },
8566
8567
8568 500 => {
8571 yyval = yystack.owned_value_at(0);
8572 },
8573
8574
8575 501 => {
8578 yyval = yystack.owned_value_at(0);
8579 },
8580
8581
8582 502 => {
8585 self.pattern_hash_keys.pop();
8586 let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
8587 let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
8588 yyval = Value::Node(
8589 self.builder.const_pattern(
8590 BoxedNode::from(yystack.owned_value_at(3)),
8591 Token::from(yystack.owned_value_at(2)),
8592 pattern,
8593 Token::from(yystack.owned_value_at(0))
8594 )
8595 );
8596 },
8597
8598
8599 503 => {
8602 self.pattern_hash_keys.pop();
8603 let pattern = self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
8604 yyval = Value::Node(
8605 self.builder.const_pattern(
8606 BoxedNode::from(yystack.owned_value_at(3)),
8607 Token::from(yystack.owned_value_at(2)),
8608 pattern,
8609 Token::from(yystack.owned_value_at(0))
8610 )
8611 );
8612 },
8613
8614
8615 504 => {
8618 self.pattern_hash_keys.pop();
8619 let pattern = self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
8620 yyval = Value::Node(
8621 self.builder.const_pattern(
8622 BoxedNode::from(yystack.owned_value_at(3)),
8623 Token::from(yystack.owned_value_at(2)),
8624 pattern,
8625 Token::from(yystack.owned_value_at(0))
8626 )
8627 );
8628 },
8629
8630
8631 505 => {
8634 let lparen = Token::from(yystack.owned_value_at(1));
8635 let rparen = Token::from(yystack.owned_value_at(0));
8636 let pattern = self.builder.array_pattern(
8637 Some(lparen.clone()),
8638 vec![],
8639 None,
8640 Some(rparen.clone())
8641 );
8642 yyval = Value::Node(
8643 self.builder.const_pattern(
8644 BoxedNode::from(yystack.owned_value_at(2)),
8645 lparen,
8646 pattern,
8647 rparen
8648 )
8649 );
8650 },
8651
8652
8653 506 => {
8656 self.pattern_hash_keys.pop();
8657 let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
8658 let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
8659 yyval = Value::Node(
8660 self.builder.const_pattern(
8661 BoxedNode::from(yystack.owned_value_at(3)),
8662 Token::from(yystack.owned_value_at(2)),
8663 pattern,
8664 Token::from(yystack.owned_value_at(0))
8665 )
8666 );
8667 },
8668
8669
8670 507 => {
8673 self.pattern_hash_keys.pop();
8674 let pattern = self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
8675 yyval = Value::Node(
8676 self.builder.const_pattern(
8677 BoxedNode::from(yystack.owned_value_at(3)),
8678 Token::from(yystack.owned_value_at(2)),
8679 pattern,
8680 Token::from(yystack.owned_value_at(0))
8681 )
8682 );
8683 },
8684
8685
8686 508 => {
8689 self.pattern_hash_keys.pop();
8690 let pattern = self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
8691 yyval = Value::Node(
8692 self.builder.const_pattern(
8693 BoxedNode::from(yystack.owned_value_at(3)),
8694 Token::from(yystack.owned_value_at(2)),
8695 pattern,
8696 Token::from(yystack.owned_value_at(0))
8697 )
8698 );
8699 },
8700
8701
8702 509 => {
8705 let lparen = Token::from(yystack.owned_value_at(1));
8706 let rparen = Token::from(yystack.owned_value_at(0));
8707 let pattern = self.builder.array_pattern(
8708 Some(lparen.clone()),
8709 vec![],
8710 None,
8711 Some(rparen.clone())
8712 );
8713 yyval = Value::Node(
8714 self.builder.const_pattern(
8715 BoxedNode::from(yystack.owned_value_at(2)),
8716 lparen,
8717 pattern,
8718 rparen
8719 )
8720 );
8721 },
8722
8723
8724 510 => {
8727 let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
8728 yyval = Value::Node(
8729 self.builder.array_pattern(
8730 Some( Token::from(yystack.owned_value_at(2))),
8731 elements,
8732 trailing_comma,
8733 Some( Token::from(yystack.owned_value_at(0)))
8734 )
8735 );
8736 },
8737
8738
8739 511 => {
8742 yyval = Value::Node(
8743 self.builder.find_pattern(
8744 Some( Token::from(yystack.owned_value_at(2))),
8745 NodeList::from(yystack.owned_value_at(1)),
8746 Some( Token::from(yystack.owned_value_at(0)))
8747 )
8748 );
8749 },
8750
8751
8752 512 => {
8755 yyval = Value::Node(
8756 self.builder.array_pattern(
8757 Some( Token::from(yystack.owned_value_at(1))),
8758 vec![],
8759 None,
8760 Some( Token::from(yystack.owned_value_at(0)))
8761 )
8762 );
8763 },
8764
8765
8766 513 => {
8769 self.pattern_hash_keys.push();
8770 yyval = Value::Bool(self.context.in_kwarg());
8771 self.context.set_in_kwarg(false);
8772 },
8773
8774
8775 514 => {
8778 self.pattern_hash_keys.pop();
8779 self.context.set_in_kwarg( Bool::from(yystack.owned_value_at(2)));
8780 yyval = Value::Node(
8781 self.builder.hash_pattern(
8782 Some( Token::from(yystack.owned_value_at(3))),
8783 NodeList::from(yystack.owned_value_at(1)),
8784 Some( Token::from(yystack.owned_value_at(0)))
8785 )
8786 );
8787 },
8788
8789
8790 515 => {
8793 yyval = Value::Node(
8794 self.builder.hash_pattern(
8795 Some( Token::from(yystack.owned_value_at(1))),
8796 vec![],
8797 Some( Token::from(yystack.owned_value_at(0))),
8798 )
8799 );
8800 },
8801
8802
8803 516 => {
8806 self.pattern_hash_keys.push();
8807 yyval = Value::None;
8808 },
8809
8810
8811 517 => {
8814 self.pattern_hash_keys.pop();
8815 yyval = Value::Node(
8816 self.builder.begin(
8817 Token::from(yystack.owned_value_at(3)),
8818 Some( BoxedNode::from(yystack.owned_value_at(1))),
8819 Token::from(yystack.owned_value_at(0))
8820 )
8821 );
8822 },
8823
8824
8825 518 => {
8828 yyval = Value::new_match_pattern_with_trailing_comma(
8829 MatchPatternWithTrailingComma {
8830 elements: vec![ Node::from(yystack.owned_value_at(0)) ],
8831 trailing_comma: None
8832 }
8833 );
8834 },
8835
8836
8837 519 => {
8840 yyval = yystack.owned_value_at(0);
8841 },
8842
8843
8844 520 => {
8847 let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements;
8848 elements.push( Node::from(yystack.owned_value_at(0)));
8849
8850 yyval = Value::new_match_pattern_with_trailing_comma(
8851 MatchPatternWithTrailingComma {
8852 elements,
8853 trailing_comma: None
8854 }
8855 );
8856 },
8857
8858
8859 521 => {
8862 let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements;
8863 let p_rest = Node::from(yystack.owned_value_at(0));
8864 elements.push(p_rest);
8865
8866 yyval = Value::new_match_pattern_with_trailing_comma(
8867 MatchPatternWithTrailingComma {
8868 elements,
8869 trailing_comma: None
8870 }
8871 );
8872 },
8873
8874
8875 522 => {
8878 let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(3)).elements;
8879 let p_rest = Node::from(yystack.owned_value_at(2));
8880 let mut p_args_post = NodeList::from(yystack.owned_value_at(0));
8881
8882 elements.reserve(1 + p_args_post.len());
8883 elements.push(p_rest);
8884 elements.append(&mut p_args_post);
8885
8886 yyval = Value::new_match_pattern_with_trailing_comma(
8887 MatchPatternWithTrailingComma {
8888 elements,
8889 trailing_comma: None
8890 }
8891 );
8892 },
8893
8894
8895 523 => {
8898 yyval = Value::new_match_pattern_with_trailing_comma(
8899 MatchPatternWithTrailingComma {
8900 elements: NodeList::from(yystack.owned_value_at(0)),
8901 trailing_comma: None
8902 }
8903 );
8904 },
8905
8906
8907 524 => {
8910 yyval = Value::new_match_pattern_with_trailing_comma(
8911 MatchPatternWithTrailingComma {
8912 elements: vec![ Node::from(yystack.owned_value_at(1))],
8913 trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
8914 }
8915 );
8916 },
8917
8918
8919 525 => {
8922 let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(2)).elements;
8923 elements.push( Node::from(yystack.owned_value_at(1)));
8924
8925 yyval = Value::new_match_pattern_with_trailing_comma(
8926 MatchPatternWithTrailingComma {
8927 elements,
8928 trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
8929 }
8930 );
8931 },
8932
8933
8934 526 => {
8937 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
8938 },
8939
8940
8941 527 => {
8944 let mut p_args_post = NodeList::from(yystack.owned_value_at(0));
8945 let mut nodes = Box::new(Vec::with_capacity(1 + p_args_post.len()));
8946 nodes.push( Node::from(yystack.owned_value_at(2)));
8947 nodes.append(&mut p_args_post);
8948
8949 yyval = Value::NodeList(nodes);
8950 },
8951
8952
8953 528 => {
8956 let mut p_args_post = NodeList::from(yystack.owned_value_at(2));
8957 let mut nodes = Box::new(Vec::with_capacity(1 + p_args_post.len() + 1));
8958 nodes.push( Node::from(yystack.owned_value_at(4)));
8959 nodes.append(&mut p_args_post);
8960 nodes.push( Node::from(yystack.owned_value_at(0)));
8961
8962 yyval = Value::NodeList(nodes);
8963 },
8964
8965
8966 529 => {
8969 yyval = Value::Node(
8970 self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
8971 );
8972 },
8973
8974
8975 530 => {
8978 yyval = Value::Node(
8979 self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?
8980 );
8981 },
8982
8983
8984 531 => {
8987 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
8988 },
8989
8990
8991 532 => {
8994 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
8995 nodes.push( Node::from(yystack.owned_value_at(0)) );
8996 yyval = Value::NodeList(nodes);
8997 },
8998
8999
9000 533 => {
9003 yyval = yystack.owned_value_at(0);
9004 },
9005
9006
9007 534 => {
9010 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
9011 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
9012
9013 yyval = Value::NodeList(nodes);
9014 },
9015
9016
9017 535 => {
9020 yyval = yystack.owned_value_at(0);
9021 },
9022
9023
9024 536 => {
9027 yyval = yystack.owned_value_at(1);
9028 },
9029
9030
9031 537 => {
9034 yyval = yystack.owned_value_at(0);
9035 },
9036
9037
9038 538 => {
9041 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
9042 },
9043
9044
9045 539 => {
9048 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
9049 nodes.push( Node::from(yystack.owned_value_at(0)) );
9050 yyval = Value::NodeList(nodes);
9051 },
9052
9053
9054 540 => {
9057 yyval = Value::Node(
9058 self.builder.match_pair(
9059 PKwLabel::from(yystack.owned_value_at(1)),
9060 BoxedNode::from(yystack.owned_value_at(0))
9061 )?
9062 );
9063 },
9064
9065
9066 541 => {
9069 yyval = Value::Node(
9070 self.builder.match_label(
9071 PKwLabel::from(yystack.owned_value_at(0)),
9072 )?
9073 );
9074 },
9075
9076
9077 542 => {
9080 yyval = Value::new_p_kw_label(
9081 PKwLabel::PlainLabel( Token::from(yystack.owned_value_at(0)))
9082 );
9083 },
9084
9085
9086 543 => {
9089 yyval = Value::new_p_kw_label(
9090 PKwLabel::QuotedLabel( ( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0))) )
9091 );
9092 },
9093
9094
9095 544 => {
9098 yyval = Value::NodeList(
9099 Box::new(
9100 vec![
9101 *self.builder.match_rest(
9102 Token::from(yystack.owned_value_at(1)),
9103 Some( Token::from(yystack.owned_value_at(0)))
9104 )?
9105 ]
9106 )
9107 );
9108 },
9109
9110
9111 545 => {
9114 yyval = Value::NodeList(
9115 Box::new(
9116 vec![
9117 *self.builder.match_rest(
9118 Token::from(yystack.owned_value_at(0)),
9119 None
9120 )?
9121 ]
9122 )
9123 );
9124 },
9125
9126
9127 546 => {
9130 yyval = Value::new_no_kw_rest(
9131 NoKwRest {
9132 kwrest_mark: Token::from(yystack.owned_value_at(1)),
9133 k_nil: Token::from(yystack.owned_value_at(0))
9134 }
9135 );
9136 },
9137
9138
9139 547 => {
9142 yyval = yystack.owned_value_at(0);
9143 },
9144
9145
9146 548 => {
9149 let NoKwRest { kwrest_mark, k_nil } = NoKwRest::from(yystack.owned_value_at(0));
9150 yyval = Value::NodeList(
9151 Box::new(
9152 vec![
9153 *self.builder.match_nil_pattern(
9154 kwrest_mark,
9155 k_nil
9156 )
9157 ]
9158 )
9159 );
9160 },
9161
9162
9163 549 => {
9166 yyval = yystack.owned_value_at(0);
9167 },
9168
9169
9170 550 => {
9173 let left = BoxedNode::from(yystack.owned_value_at(2));
9174 self.value_expr(&left)?;
9175
9176 let right = BoxedNode::from(yystack.owned_value_at(0));
9177 self.value_expr(&right)?;
9178
9179 yyval = Value::Node(
9180 self.builder.range_inclusive(
9181 Some(left),
9182 Token::from(yystack.owned_value_at(1)),
9183 Some(right)
9184 )
9185 );
9186 },
9187
9188
9189 551 => {
9192 let left = BoxedNode::from(yystack.owned_value_at(2));
9193 self.value_expr(&left)?;
9194
9195 let right = BoxedNode::from(yystack.owned_value_at(0));
9196 self.value_expr(&right)?;
9197
9198 yyval = Value::Node(
9199 self.builder.range_exclusive(
9200 Some(left),
9201 Token::from(yystack.owned_value_at(1)),
9202 Some(right)
9203 )
9204 );
9205 },
9206
9207
9208 552 => {
9211 let left = BoxedNode::from(yystack.owned_value_at(1));
9212 self.value_expr(&left)?;
9213
9214 yyval = Value::Node(
9215 self.builder.range_inclusive(
9216 Some(left),
9217 Token::from(yystack.owned_value_at(0)),
9218 None
9219 )
9220 );
9221 },
9222
9223
9224 553 => {
9227 let left = BoxedNode::from(yystack.owned_value_at(1));
9228 self.value_expr(&left)?;
9229
9230 yyval = Value::Node(
9231 self.builder.range_exclusive(
9232 Some(left),
9233 Token::from(yystack.owned_value_at(0)),
9234 None
9235 )
9236 );
9237 },
9238
9239
9240 554 => {
9243 yyval = yystack.owned_value_at(0);
9244 },
9245
9246
9247 555 => {
9250 yyval = yystack.owned_value_at(0);
9251 },
9252
9253
9254 556 => {
9257 yyval = yystack.owned_value_at(0);
9258 },
9259
9260
9261 557 => {
9264 let right = BoxedNode::from(yystack.owned_value_at(0));
9265 self.value_expr(&right)?;
9266
9267 yyval = Value::Node(
9268 self.builder.range_inclusive(
9269 None,
9270 Token::from(yystack.owned_value_at(1)),
9271 Some(right)
9272 )
9273 );
9274 },
9275
9276
9277 558 => {
9280 let right = BoxedNode::from(yystack.owned_value_at(0));
9281 self.value_expr(&right)?;
9282
9283 yyval = Value::Node(
9284 self.builder.range_exclusive(
9285 None,
9286 Token::from(yystack.owned_value_at(1)),
9287 Some(right)
9288 )
9289 );
9290 },
9291
9292
9293 559 => {
9296 yyval = yystack.owned_value_at(0);
9297 },
9298
9299
9300 560 => {
9303 yyval = yystack.owned_value_at(0);
9304 },
9305
9306
9307 561 => {
9310 yyval = yystack.owned_value_at(0);
9311 },
9312
9313
9314 562 => {
9317 yyval = yystack.owned_value_at(0);
9318 },
9319
9320
9321 563 => {
9324 yyval = yystack.owned_value_at(0);
9325 },
9326
9327
9328 564 => {
9331 yyval = yystack.owned_value_at(0);
9332 },
9333
9334
9335 565 => {
9338 yyval = yystack.owned_value_at(0);
9339 },
9340
9341
9342 566 => {
9345 yyval = yystack.owned_value_at(0);
9346 },
9347
9348
9349 567 => {
9352 yyval = Value::Node(
9353 self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
9354 );
9355 },
9356
9357
9358 568 => {
9361 yyval = yystack.owned_value_at(0);
9362 },
9363
9364
9365 569 => {
9368 yyval = Value::Node(
9369 self.builder.assignable(
9370 self.builder.match_var( Token::from(yystack.owned_value_at(0)))?
9371 )?
9372 );
9373 },
9374
9375
9376 570 => {
9379 let ident_t = Token::from(yystack.owned_value_at(0));
9380 let name = clone_value(&ident_t);
9381
9382 if !self.static_env.is_declared(name.as_str()) {
9383 return self.yyerror(
9384 yystack.location_at (0),
9385 DiagnosticMessage::NoSuchLocalVariable { var_name: name }
9386 );
9387 }
9388
9389 let lvar = self.builder.accessible(self.builder.lvar(ident_t));
9390 yyval = Value::Node(
9391 self.builder.pin( Token::from(yystack.owned_value_at(1)), lvar)
9392 );
9393 },
9394
9395
9396 571 => {
9399 let non_lvar = self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)));
9400 yyval = Value::Node(
9401 self.builder.pin(
9402 Token::from(yystack.owned_value_at(1)),
9403 non_lvar,
9404 )
9405 );
9406 },
9407
9408
9409 572 => {
9412 let expr = self.builder.begin(
9413 Token::from(yystack.owned_value_at(2)),
9414 Some( BoxedNode::from(yystack.owned_value_at(1))),
9415 Token::from(yystack.owned_value_at(0))
9416 );
9417 yyval = Value::Node(
9418 self.builder.pin(
9419 Token::from(yystack.owned_value_at(3)),
9420 expr
9421 )
9422 );
9423 },
9424
9425
9426 573 => {
9429 yyval = Value::Node(
9430 self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
9431 );
9432 },
9433
9434
9435 574 => {
9438 yyval = Value::Node(
9439 self.builder.const_fetch(
9440 BoxedNode::from(yystack.owned_value_at(2)),
9441 Token::from(yystack.owned_value_at(1)),
9442 Token::from(yystack.owned_value_at(0)),
9443 )
9444 );
9445 },
9446
9447
9448 575 => {
9451 yyval = Value::Node(self.builder.const_( Token::from(yystack.owned_value_at(0))));
9452 },
9453
9454
9455 576 => {
9458 let ExcVar { assoc_t, exc_var } = ExcVar::from(yystack.owned_value_at(3));
9459
9460 let exc_list = NodeList::from(yystack.owned_value_at(4));
9461 let exc_list = if exc_list.is_empty() {
9462 None
9463 } else {
9464 Some(self.builder.array(None, exc_list, None))
9465 };
9466
9467 let rescue_body = *self.builder.rescue_body(
9468 Token::from(yystack.owned_value_at(5)),
9469 exc_list,
9470 assoc_t,
9471 exc_var,
9472 Some( Token::from(yystack.owned_value_at(2))),
9473 MaybeBoxedNode::from(yystack.owned_value_at(1))
9474 );
9475 let mut opt_rescue = NodeList::from(yystack.owned_value_at(0));
9476 let mut nodes = Box::new(Vec::with_capacity(1 + opt_rescue.len()));
9477 nodes.push(rescue_body);
9478 nodes.append(&mut opt_rescue);
9479
9480 yyval = Value::NodeList(nodes);
9481 },
9482
9483
9484 577 => {
9487 yyval = Value::NodeList( Box::default() );
9488 },
9489
9490
9491 578 => {
9494 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
9495 },
9496
9497
9498 579 => {
9501 yyval = yystack.owned_value_at(0);
9502 },
9503
9504
9505 580 => {
9508 yyval = Value::NodeList( Box::default() );
9509 },
9510
9511
9512 581 => {
9515 let assoc_t = Some( Token::from(yystack.owned_value_at(1)));
9516 let exc_var = Some( BoxedNode::from(yystack.owned_value_at(0)));
9517 yyval = Value::new_exc_var(ExcVar { assoc_t, exc_var });
9518 },
9519
9520
9521 582 => {
9524 yyval = Value::new_exc_var(ExcVar { assoc_t: None, exc_var: None });
9525 },
9526
9527
9528 583 => {
9531 let ensure_t = Token::from(yystack.owned_value_at(1));
9532 let body = MaybeBoxedNode::from(yystack.owned_value_at(0));
9533 yyval = Value::new_opt_ensure(Some(Ensure { ensure_t, body }));
9534 },
9535
9536
9537 584 => {
9540 yyval = Value::new_opt_ensure(None);
9541 },
9542
9543
9544 585 => {
9547 yyval = yystack.owned_value_at(0);
9548 },
9549
9550
9551 586 => {
9554 yyval = yystack.owned_value_at(0);
9555 },
9556
9557
9558 587 => {
9561 yyval = Value::Node(
9562 self.builder.string_compose(
9563 None,
9564 NodeList::from(yystack.owned_value_at(0)),
9565 None
9566 )
9567 );
9568 },
9569
9570
9571 588 => {
9574 yyval = Value::NodeList(
9575 Box::new(
9576 vec![
9577 *self.builder.character( Token::from(yystack.owned_value_at(0)))
9578 ]
9579 )
9580 );
9581 },
9582
9583
9584 589 => {
9587 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
9588 },
9589
9590
9591 590 => {
9594 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
9595 nodes.push( Node::from(yystack.owned_value_at(0)) );
9596 yyval = Value::NodeList(nodes);
9597 },
9598
9599
9600 591 => {
9603 let mut string = self.builder.string_compose(
9604 Some( Token::from(yystack.owned_value_at(2))),
9605 NodeList::from(yystack.owned_value_at(1)),
9606 Some( Token::from(yystack.owned_value_at(0)))
9607 );
9608 let indent = self.yylexer.buffer.heredoc_indent;
9609 self.yylexer.buffer.heredoc_indent = 0;
9610 string = self.builder.heredoc_dedent(string, indent);
9611 yyval = Value::Node(string);
9612 },
9613
9614
9615 592 => {
9618 let mut string = self.builder.xstring_compose(
9619 Token::from(yystack.owned_value_at(2)),
9620 NodeList::from(yystack.owned_value_at(1)),
9621 Token::from(yystack.owned_value_at(0))
9622 );
9623 let indent = self.yylexer.buffer.heredoc_indent;
9624 self.yylexer.buffer.heredoc_indent = 0;
9625 string = self.builder.heredoc_dedent(string, indent);
9626 yyval = Value::Node(string);
9627 },
9628
9629
9630 593 => {
9633 let regexp_end = Token::from(yystack.owned_value_at(0));
9634 let opts = self.builder.regexp_options(regexp_end.clone());
9635 yyval = Value::Node(
9636 self.builder.regexp_compose(
9637 Token::from(yystack.owned_value_at(2)),
9638 NodeList::from(yystack.owned_value_at(1)),
9639 regexp_end,
9640 opts
9641 )
9642 );
9643 },
9644
9645
9646 594 => {
9649 yyval = Value::Node(
9650 self.builder.words_compose(
9651 Token::from(yystack.owned_value_at(3)),
9652 NodeList::from(yystack.owned_value_at(1)),
9653 Token::from(yystack.owned_value_at(0))
9654 )
9655 );
9656 },
9657
9658
9659 595 => {
9662 yyval = Value::NodeList( Box::default() );
9663
9664 },
9665
9666
9667 596 => {
9670 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
9671 nodes.push(
9672 *self.builder.word( NodeList::from(yystack.owned_value_at(1)) )
9673 );
9674 yyval = Value::NodeList(nodes);
9675 },
9676
9677
9678 597 => {
9681 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
9682 },
9683
9684
9685 598 => {
9688 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
9689 nodes.push( Node::from(yystack.owned_value_at(0)) );
9690 yyval = Value::NodeList(nodes);
9691 },
9692
9693
9694 599 => {
9697 yyval = Value::Node(
9698 self.builder.symbols_compose(
9699 Token::from(yystack.owned_value_at(3)),
9700 NodeList::from(yystack.owned_value_at(1)),
9701 Token::from(yystack.owned_value_at(0))
9702 )
9703 );
9704 },
9705
9706
9707 600 => {
9710 yyval = Value::NodeList( Box::default() );
9711 },
9712
9713
9714 601 => {
9717 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
9718 nodes.push(
9719 *self.builder.word( NodeList::from(yystack.owned_value_at(1)) )
9720 );
9721 yyval = Value::NodeList(nodes);
9722 },
9723
9724
9725 602 => {
9728 yyval = Value::Node(
9729 self.builder.words_compose(
9730 Token::from(yystack.owned_value_at(3)),
9731 NodeList::from(yystack.owned_value_at(1)),
9732 Token::from(yystack.owned_value_at(0))
9733 )
9734 );
9735 },
9736
9737
9738 603 => {
9741 yyval = Value::Node(
9742 self.builder.symbols_compose(
9743 Token::from(yystack.owned_value_at(3)),
9744 NodeList::from(yystack.owned_value_at(1)),
9745 Token::from(yystack.owned_value_at(0))
9746 )
9747 );
9748 },
9749
9750
9751 604 => {
9754 yyval = Value::NodeList( Box::default() );
9755 },
9756
9757
9758 605 => {
9761 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
9762 nodes.push(
9763 *self.builder.string_internal( Token::from(yystack.owned_value_at(1)) )
9764 );
9765 yyval = Value::NodeList(nodes);
9766 },
9767
9768
9769 606 => {
9772 yyval = Value::NodeList( Box::default() );
9773 },
9774
9775
9776 607 => {
9779 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
9780 nodes.push(
9781 *self.builder.symbol_internal( Token::from(yystack.owned_value_at(1)) )
9782 );
9783 yyval = Value::NodeList(nodes);
9784 },
9785
9786
9787 608 => {
9790 yyval = Value::NodeList( Box::default() );
9791 },
9792
9793
9794 609 => {
9797 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
9798 nodes.push( Node::from(yystack.owned_value_at(0)));
9799 yyval = Value::NodeList(nodes);
9800 },
9801
9802
9803 610 => {
9806 yyval = Value::NodeList( Box::default() );
9807 },
9808
9809
9810 611 => {
9813 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
9814 nodes.push( Node::from(yystack.owned_value_at(0)));
9815 yyval = Value::NodeList(nodes);
9816 },
9817
9818
9819 612 => {
9822 yyval = Value::NodeList( Box::default() );
9823 },
9824
9825
9826 613 => {
9829 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
9830 nodes.push( Node::from(yystack.owned_value_at(0)) );
9831 yyval = Value::NodeList(nodes);
9832 },
9833
9834
9835 614 => {
9838 yyval = Value::Node(
9839 self.builder.string_internal( Token::from(yystack.owned_value_at(0)))
9840 );
9841 },
9842
9843
9844 615 => {
9847 yyval = Value::MaybeStrTerm(std::mem::take(&mut self.yylexer.strterm));
9848 self.yylexer.lex_state.set(EXPR_BEG);
9849 },
9850
9851
9852 616 => {
9855 self.yylexer.strterm = MaybeStrTerm::from(yystack.owned_value_at(1));
9856 yyval = yystack.owned_value_at(0);
9857 },
9858
9859
9860 617 => {
9863 self.yylexer.cmdarg.push(false);
9864 self.yylexer.cond.push(false);
9865 yyval = Value::None;
9866 },
9867
9868
9869 618 => {
9872 yyval = Value::MaybeStrTerm(std::mem::take(&mut self.yylexer.strterm));
9873 },
9874
9875
9876 619 => {
9879 yyval = Value::Num( self.yylexer.lex_state.get() );
9880 self.yylexer.lex_state.set(EXPR_BEG);
9881 },
9882
9883
9884 620 => {
9887 yyval = Value::Num( self.yylexer.brace_nest );
9888 self.yylexer.brace_nest = 0;
9889 },
9890
9891
9892 621 => {
9895 yyval = Value::Num( self.yylexer.buffer.heredoc_indent );
9896 self.yylexer.buffer.heredoc_indent = 0;
9897 },
9898
9899
9900 622 => {
9903 self.yylexer.cond.pop();
9904 self.yylexer.cmdarg.pop();
9905 self.yylexer.strterm = MaybeStrTerm::from(yystack.owned_value_at(5));
9906 self.yylexer.lex_state.set( Num::from(yystack.owned_value_at(4)));
9907 self.yylexer.brace_nest = Num::from(yystack.owned_value_at(3));
9908 self.yylexer.buffer.heredoc_indent = Num::from(yystack.owned_value_at(2));
9909 self.yylexer.buffer.heredoc_line_indent = -1;
9910
9911 yyval = Value::Node(
9912 self.builder.begin(
9913 Token::from(yystack.owned_value_at(7)),
9914 MaybeBoxedNode::from(yystack.owned_value_at(1)),
9915 Token::from(yystack.owned_value_at(0))
9916 )
9917 );
9918 },
9919
9920
9921 623 => {
9924 yyval = Value::Node(self.builder.gvar( Token::from(yystack.owned_value_at(0))));
9925 },
9926
9927
9928 624 => {
9931 yyval = Value::Node(self.builder.ivar( Token::from(yystack.owned_value_at(0))));
9932
9933 },
9934
9935
9936 625 => {
9939 yyval = Value::Node(self.builder.cvar( Token::from(yystack.owned_value_at(0))));
9940 },
9941
9942
9943 626 => {
9946 yyval = yystack.owned_value_at(0);
9947 },
9948
9949
9950 627 => { yyval = yystack.owned_value_at(0); },
9953
9954
9955 628 => { yyval = yystack.owned_value_at(0); },
9958
9959
9960 629 => {
9963 self.yylexer.lex_state.set(EXPR_END);
9964 yyval = Value::Node(
9965 self.builder.symbol( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
9966 );
9967 },
9968
9969
9970 630 => { yyval = yystack.owned_value_at(0); },
9973
9974
9975 631 => { yyval = yystack.owned_value_at(0); },
9978
9979
9980 632 => { yyval = yystack.owned_value_at(0); },
9983
9984
9985 633 => { yyval = yystack.owned_value_at(0); },
9988
9989
9990 634 => {
9993 self.yylexer.lex_state.set(EXPR_END);
9994 yyval = Value::Node(
9995 self.builder.symbol_compose( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
9996 );
9997 },
9998
9999
10000 635 => {
10003 yyval = yystack.owned_value_at(0);
10004 },
10005
10006
10007 636 => {
10010 yyval = Value::Node(
10011 self.builder.unary_num(
10012 Token::from(yystack.owned_value_at(1)),
10013 BoxedNode::from(yystack.owned_value_at(0))
10014 )
10015 );
10016 },
10017
10018
10019 637 => {
10022 yyval = Value::Node(
10023 self.builder.integer( Token::from(yystack.owned_value_at(0)))
10024 );
10025 },
10026
10027
10028 638 => {
10031 yyval = Value::Node(
10032 self.builder.float( Token::from(yystack.owned_value_at(0)))
10033 );
10034 },
10035
10036
10037 639 => {
10040 yyval = Value::Node(
10041 self.builder.rational( Token::from(yystack.owned_value_at(0)))
10042 );
10043 },
10044
10045
10046 640 => {
10049 yyval = Value::Node(
10050 self.builder.complex( Token::from(yystack.owned_value_at(0)))
10051 );
10052 },
10053
10054
10055 641 => {
10058 yyval = Value::Node(
10059 self.builder.ivar( Token::from(yystack.owned_value_at(0)))
10060 );
10061 },
10062
10063
10064 642 => {
10067 yyval = Value::Node(
10068 self.builder.gvar( Token::from(yystack.owned_value_at(0)))
10069 );
10070 },
10071
10072
10073 643 => {
10076 yyval = Value::Node(
10077 self.builder.cvar( Token::from(yystack.owned_value_at(0)))
10078 );
10079 },
10080
10081
10082 644 => {
10085 yyval = Value::Node(
10086 self.builder.lvar( Token::from(yystack.owned_value_at(0)))
10087 );
10088 },
10089
10090
10091 645 => {
10094 yyval = Value::Node(
10095 self.builder.ivar( Token::from(yystack.owned_value_at(0)))
10096 );
10097 },
10098
10099
10100 646 => {
10103 yyval = Value::Node(
10104 self.builder.gvar( Token::from(yystack.owned_value_at(0)))
10105 );
10106 },
10107
10108
10109 647 => {
10112 yyval = Value::Node(
10113 self.builder.const_( Token::from(yystack.owned_value_at(0)))
10114 );
10115 },
10116
10117
10118 648 => {
10121 yyval = Value::Node(
10122 self.builder.cvar( Token::from(yystack.owned_value_at(0)))
10123 );
10124 },
10125
10126
10127 649 => {
10130 yyval = Value::Node(
10131 self.builder.nil( Token::from(yystack.owned_value_at(0)))
10132 );
10133 },
10134
10135
10136 650 => {
10139 yyval = Value::Node(
10140 self.builder.self_( Token::from(yystack.owned_value_at(0)))
10141 );
10142 },
10143
10144
10145 651 => {
10148 yyval = Value::Node(
10149 self.builder.true_( Token::from(yystack.owned_value_at(0)))
10150 );
10151 },
10152
10153
10154 652 => {
10157 yyval = Value::Node(
10158 self.builder.false_( Token::from(yystack.owned_value_at(0)))
10159 );
10160 },
10161
10162
10163 653 => {
10166 yyval = Value::Node(
10167 self.builder.__file__( Token::from(yystack.owned_value_at(0)))
10168 );
10169 },
10170
10171
10172 654 => {
10175 yyval = Value::Node(
10176 self.builder.__line__( Token::from(yystack.owned_value_at(0)))
10177 );
10178 },
10179
10180
10181 655 => {
10184 yyval = Value::Node(
10185 self.builder.__encoding__( Token::from(yystack.owned_value_at(0)))
10186 );
10187 },
10188
10189
10190 656 => {
10193 yyval = Value::Node(
10194 self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
10195 );
10196 },
10197
10198
10199 657 => {
10202 yyval = Value::Node(
10203 self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
10204 );
10205 },
10206
10207
10208 658 => {
10211 yyval = Value::Node(
10212 self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
10213 );
10214 },
10215
10216
10217 659 => {
10220 yyval = Value::Node(
10221 self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
10222 );
10223 },
10224
10225
10226 660 => {
10229 yyval = Value::Node(
10230 self.builder.nth_ref( Token::from(yystack.owned_value_at(0)))
10231 );
10232 },
10233
10234
10235 661 => {
10238 yyval = Value::Node(
10239 self.builder.back_ref( Token::from(yystack.owned_value_at(0)))
10240 );
10241 },
10242
10243
10244 662 => {
10247 self.yylexer.lex_state.set(EXPR_BEG);
10248 self.yylexer.command_start = true;
10249 yyval = Value::None;
10250 },
10251
10252
10253 663 => {
10256 let lt_t = Some( Token::from(yystack.owned_value_at(3)));
10257 let value = Some( BoxedNode::from(yystack.owned_value_at(1)));
10258 yyval = Value::new_superclass(
10259 Superclass { lt_t, value }
10260 );
10261 },
10262
10263
10264 664 => {
10267 yyval = Value::new_superclass(Superclass { lt_t: None, value: None });
10268 },
10269
10270
10271 665 => {
10274 yyval = yystack.owned_value_at(0);
10275 },
10276
10277
10278 666 => {
10281 self.context.set_in_argdef(false);
10282 yyval = Value::MaybeNode(None);
10283 },
10284
10285
10286 667 => {
10289 yyval = Value::MaybeNode(
10290 self.builder.args(Some( Token::from(yystack.owned_value_at(2))), NodeList::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))
10291 );
10292
10293 self.yylexer.lex_state.set(EXPR_BEG);
10294 self.yylexer.command_start = true;
10295 self.context.set_in_argdef(false);
10296 },
10297
10298
10299 668 => {
10302 yyval = yystack.owned_value_at(0);
10303 },
10304
10305
10306 669 => {
10309 yyval = Value::Context(self.context.dump());
10310 self.context.set_in_kwarg(true);
10311 self.context.set_in_argdef(true);
10312 self.yylexer.lex_state.set(self.yylexer.lex_state.get()|EXPR_LABEL);
10313 },
10314
10315
10316 670 => {
10319 self.context.set_in_kwarg( Context::from(yystack.owned_value_at(2)).in_kwarg());
10320 self.context.set_in_argdef(false);
10321 yyval = Value::MaybeNode(
10322 self.builder.args(None, NodeList::from(yystack.owned_value_at(1)), None)
10323 );
10324 self.yylexer.lex_state.set(EXPR_BEG);
10325 self.yylexer.command_start = true;
10326 },
10327
10328
10329 671 => {
10332 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
10333 let mut f_kwrest = NodeList::from(yystack.owned_value_at(1));
10334 let mut opt_f_block_arg = NodeList::from(yystack.owned_value_at(0));
10335
10336 nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
10337 nodes.append(&mut f_kwrest);
10338 nodes.append(&mut opt_f_block_arg);
10339
10340 yyval = Value::NodeList(nodes);
10341 },
10342
10343
10344 672 => {
10347 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
10348 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
10349
10350 yyval = Value::NodeList(nodes);
10351 },
10352
10353
10354 673 => {
10357 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
10358 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
10359
10360 yyval = Value::NodeList(nodes);
10361 },
10362
10363
10364 674 => {
10367 yyval = Value::NodeList(
10368 Box::new(
10369 vec![ Node::from(yystack.owned_value_at(0)) ]
10370 )
10371 );
10372 },
10373
10374
10375 675 => {
10378 let forward_arg = *self.builder.forward_arg( Token::from(yystack.owned_value_at(0)));
10379 self.static_env.declare_forward_args();
10380 yyval = Value::NodeList(
10381 Box::new(
10382 vec![ forward_arg ]
10383 )
10384 );
10385 },
10386
10387
10388 676 => {
10391 yyval = yystack.owned_value_at(0);
10392 },
10393
10394
10395 677 => {
10398 yyval = Value::NodeList( Box::default() );
10399 },
10400
10401
10402 678 => {
10405 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
10406 let mut f_optarg = NodeList::from(yystack.owned_value_at(3));
10407 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
10408 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10409
10410 nodes.reserve(f_optarg.len() + f_rest_arg.len() + opt_args_tail.len());
10411 nodes.append(&mut f_optarg);
10412 nodes.append(&mut f_rest_arg);
10413 nodes.append(&mut opt_args_tail);
10414
10415 yyval = Value::NodeList(nodes);
10416 },
10417
10418
10419 679 => {
10422 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(7));
10423 let mut f_optarg = NodeList::from(yystack.owned_value_at(5));
10424 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
10425 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
10426 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10427
10428 nodes.reserve(f_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
10429 nodes.append(&mut f_optarg);
10430 nodes.append(&mut f_rest_arg);
10431 nodes.append(&mut f_arg);
10432 nodes.append(&mut opt_args_tail);
10433
10434 yyval = Value::NodeList(nodes);
10435 },
10436
10437
10438 680 => {
10441 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
10442 let mut f_optarg = NodeList::from(yystack.owned_value_at(1));
10443 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10444
10445 nodes.reserve(f_optarg.len() + opt_args_tail.len());
10446 nodes.append(&mut f_optarg);
10447 nodes.append(&mut opt_args_tail);
10448
10449 yyval = Value::NodeList(nodes);
10450 },
10451
10452
10453 681 => {
10456 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
10457 let mut f_optarg = NodeList::from(yystack.owned_value_at(3));
10458 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
10459 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10460
10461 nodes.reserve(f_optarg.len() + f_arg.len() + opt_args_tail.len());
10462 nodes.append(&mut f_optarg);
10463 nodes.append(&mut f_arg);
10464 nodes.append(&mut opt_args_tail);
10465
10466 yyval = Value::NodeList(nodes);
10467 },
10468
10469
10470 682 => {
10473 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
10474 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
10475 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10476
10477 nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
10478 nodes.append(&mut f_rest_arg);
10479 nodes.append(&mut opt_args_tail);
10480
10481 yyval = Value::NodeList(nodes);
10482 },
10483
10484
10485 683 => {
10488 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
10489 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
10490 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
10491 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10492
10493 nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
10494 nodes.append(&mut f_rest_arg);
10495 nodes.append(&mut f_arg);
10496 nodes.append(&mut opt_args_tail);
10497
10498 yyval = Value::NodeList(nodes);
10499 },
10500
10501
10502 684 => {
10505 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
10506 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
10507
10508 yyval = Value::NodeList(nodes);
10509 },
10510
10511
10512 685 => {
10515 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
10516 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
10517 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10518
10519 nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
10520 nodes.append(&mut f_rest_arg);
10521 nodes.append(&mut opt_args_tail);
10522
10523 yyval = Value::NodeList(nodes);
10524 },
10525
10526
10527 686 => {
10530 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(5));
10531 let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
10532 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
10533 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10534
10535 nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
10536 nodes.append(&mut f_rest_arg);
10537 nodes.append(&mut f_arg);
10538 nodes.append(&mut opt_args_tail);
10539
10540 yyval = Value::NodeList(nodes);
10541 },
10542
10543
10544 687 => {
10547 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
10548 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
10549
10550 yyval = Value::NodeList(nodes);
10551 },
10552
10553
10554 688 => {
10557 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
10558 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
10559 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10560
10561 nodes.reserve(f_arg.len() + opt_args_tail.len());
10562 nodes.append(&mut f_arg);
10563 nodes.append(&mut opt_args_tail);
10564
10565 yyval = Value::NodeList(nodes);
10566 },
10567
10568
10569 689 => {
10572 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(1));
10573 nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
10574
10575 yyval = Value::NodeList(nodes);
10576 },
10577
10578
10579 690 => {
10582 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(3));
10583 let mut f_arg = NodeList::from(yystack.owned_value_at(1));
10584 let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
10585
10586 nodes.reserve(f_arg.len() + opt_args_tail.len());
10587 nodes.append(&mut f_arg);
10588 nodes.append(&mut opt_args_tail);
10589
10590 yyval = Value::NodeList(nodes);
10591 },
10592
10593
10594 691 => {
10597 yyval = Value::NodeList( BoxedNodeList::from(yystack.owned_value_at(0)));
10598 },
10599
10600
10601 692 => {
10604 yyval = Value::NodeList( Box::default() );
10605 },
10606
10607
10608 693 => {
10611 yyval = yystack.owned_value_at(0);
10612 },
10613
10614
10615 694 => {
10618 return self.yyerror(yystack.location_at (0), DiagnosticMessage::ConstArgument {});
10619 },
10620
10621
10622 695 => {
10625 return self.yyerror(yystack.location_at (0), DiagnosticMessage::IvarArgument {});
10626 },
10627
10628
10629 696 => {
10632 return self.yyerror(yystack.location_at (0), DiagnosticMessage::GvarArgument {});
10633 },
10634
10635
10636 697 => {
10639 return self.yyerror(yystack.location_at (0), DiagnosticMessage::CvarArgument {});
10640 },
10641
10642
10643 698 => {
10646 yyval = yystack.owned_value_at(0);
10647 },
10648
10649
10650 699 => {
10653 let ident_t = Token::from(yystack.owned_value_at(0));
10654 let name = clone_value(&ident_t);
10655 self.static_env.declare(name.as_str());
10656 self.max_numparam_stack.set_has_ordinary_params();
10657 yyval = Value::Token(ident_t);
10658 },
10659
10660
10661 700 => {
10664 let arg_t = Token::from(yystack.owned_value_at(0));
10665 let arg_name = clone_value(&arg_t);
10666 self.current_arg_stack.set(Some(arg_name));
10667 yyval = Value::Token(arg_t);
10668 },
10669
10670
10671 701 => {
10674 self.current_arg_stack.set(None);
10675 yyval = Value::Node(
10676 self.builder.arg( Token::from(yystack.owned_value_at(0)))?
10677 );
10678 },
10679
10680
10681 702 => {
10684 yyval = Value::Node(
10685 self.builder.multi_lhs(
10686 Some( Token::from(yystack.owned_value_at(2))),
10687 NodeList::from(yystack.owned_value_at(1)),
10688 Some( Token::from(yystack.owned_value_at(0)))
10689 )
10690 );
10691 },
10692
10693
10694 703 => {
10697 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
10698 },
10699
10700
10701 704 => {
10704 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
10705 nodes.push( Node::from(yystack.owned_value_at(0)) );
10706 yyval = Value::NodeList(nodes);
10707 },
10708
10709
10710 705 => {
10713 let ident_t = Token::from(yystack.owned_value_at(0));
10714 self.check_kwarg_name(&ident_t)?;
10715
10716 let ident = clone_value(&ident_t);
10717 self.static_env.declare(&ident);
10718
10719 self.max_numparam_stack.set_has_ordinary_params();
10720
10721 self.current_arg_stack.set(Some(ident));
10722 self.context.set_in_argdef(false);
10723
10724 yyval = Value::Token(ident_t);
10725 },
10726
10727
10728 706 => {
10731 self.current_arg_stack.set(None);
10732 self.context.set_in_argdef(true);
10733 yyval = Value::Node(
10734 self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
10735 );
10736 },
10737
10738
10739 707 => {
10742 self.current_arg_stack.set(None);
10743 self.context.set_in_argdef(true);
10744 yyval = Value::Node(
10745 self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
10746 );
10747 },
10748
10749
10750 708 => {
10753 self.context.set_in_argdef(true);
10754 yyval = Value::Node(
10755 self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
10756 );
10757 },
10758
10759
10760 709 => {
10763 self.context.set_in_argdef(true);
10764 yyval = Value::Node(
10765 self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
10766 );
10767 },
10768
10769
10770 710 => {
10773 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
10774 },
10775
10776
10777 711 => {
10780 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
10781 nodes.push( Node::from(yystack.owned_value_at(0)) );
10782 yyval = Value::NodeList(nodes);
10783 },
10784
10785
10786 712 => {
10789 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
10790 },
10791
10792
10793 713 => {
10796 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
10797 nodes.push( Node::from(yystack.owned_value_at(0)) );
10798 yyval = Value::NodeList(nodes);
10799 },
10800
10801
10802 714 => {
10805 yyval = yystack.owned_value_at(0);
10806 },
10807
10808
10809 715 => {
10812 yyval = yystack.owned_value_at(0);
10813 },
10814
10815
10816 716 => {
10819 let NoKwRest { kwrest_mark, k_nil } = NoKwRest::from(yystack.owned_value_at(0));
10820 yyval = Value::NodeList(
10821 Box::new(
10822 vec![
10823 *self.builder.kwnilarg(
10824 kwrest_mark,
10825 k_nil
10826 )
10827 ]
10828 )
10829 );
10830 },
10831
10832
10833 717 => {
10836 let ident_t = Token::from(yystack.owned_value_at(0));
10837 self.static_env.declare(clone_value(&ident_t).as_str());
10838 yyval = Value::NodeList(
10839 Box::new(
10840 vec![
10841 *(self.builder.kwrestarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?)
10842 ]
10843 )
10844 );
10845 },
10846
10847
10848 718 => {
10851 yyval = Value::NodeList(
10852 Box::new(
10853 vec![
10854 *(self.builder.kwrestarg( Token::from(yystack.owned_value_at(0)), None)?)
10855 ]
10856 )
10857 );
10858 },
10859
10860
10861 719 => {
10864 self.current_arg_stack.set(None);
10865 self.context.set_in_argdef(true);
10866 yyval = Value::Node(
10867 self.builder.optarg(
10868 Token::from(yystack.owned_value_at(2)),
10869 Token::from(yystack.owned_value_at(1)),
10870 BoxedNode::from(yystack.owned_value_at(0))
10871 )?
10872 );
10873 },
10874
10875
10876 720 => {
10879 self.current_arg_stack.set(None);
10880 self.context.set_in_argdef(true);
10881 yyval = Value::Node(
10882 self.builder.optarg(
10883 Token::from(yystack.owned_value_at(2)),
10884 Token::from(yystack.owned_value_at(1)),
10885 BoxedNode::from(yystack.owned_value_at(0))
10886 )?
10887 );
10888 },
10889
10890
10891 721 => {
10894 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
10895 },
10896
10897
10898 722 => {
10901 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
10902 nodes.push( Node::from(yystack.owned_value_at(0)) );
10903 yyval = Value::NodeList(nodes);
10904 },
10905
10906
10907 723 => {
10910 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
10911 },
10912
10913
10914 724 => {
10917 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
10918 nodes.push( Node::from(yystack.owned_value_at(0)) );
10919 yyval = Value::NodeList(nodes);
10920 },
10921
10922
10923 725 => {
10926 yyval = yystack.owned_value_at(0);
10927 },
10928
10929
10930 726 => {
10933 yyval = yystack.owned_value_at(0);
10934 },
10935
10936
10937 727 => {
10940 let ident_t = Token::from(yystack.owned_value_at(0));
10941 self.static_env.declare(clone_value(&ident_t).as_str());
10942
10943 yyval = Value::NodeList(
10944 Box::new(
10945 vec![
10946 *(self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?)
10947 ]
10948 )
10949 );
10950 },
10951
10952
10953 728 => {
10956 yyval = Value::NodeList(
10957 Box::new(
10958 vec![
10959 *(self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?)
10960 ]
10961 )
10962 );
10963 },
10964
10965
10966 729 => {
10969 yyval = yystack.owned_value_at(0);
10970 },
10971
10972
10973 730 => {
10976 yyval = yystack.owned_value_at(0);
10977 },
10978
10979
10980 731 => {
10983 let ident_t = Token::from(yystack.owned_value_at(0));
10984 self.static_env.declare(clone_value(&ident_t).as_str());
10985 yyval = Value::Node(
10986 self.builder.blockarg(
10987 Token::from(yystack.owned_value_at(1)),
10988 Some(ident_t),
10989 )?
10990 );
10991 },
10992
10993
10994 732 => {
10997 self.static_env.declare_anonymous_blockarg();
10998 yyval = Value::Node(
10999 self.builder.blockarg(
11000 Token::from(yystack.owned_value_at(0)),
11001 None
11002 )?
11003 );
11004 },
11005
11006
11007 733 => {
11010 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
11011 },
11012
11013
11014 734 => {
11017 yyval = Value::NodeList( Box::default() );
11018 },
11019
11020
11021 735 => {
11024 let var_ref = BoxedNode::from(yystack.owned_value_at(0));
11025 self.value_expr(&var_ref)?;
11026 yyval = Value::Node(var_ref);
11027 },
11028
11029
11030 736 => { self.yylexer.lex_state.set(EXPR_BEG); yyval = Value::None; },
11033
11034
11035 737 => {
11038 let expr = BoxedNode::from(yystack.owned_value_at(1));
11039
11040 match &*expr {
11041 Node::Int(nodes::Int { expression_l, .. })
11042 | Node::Float(nodes::Float { expression_l, .. })
11043 | Node::Rational(nodes::Rational { expression_l, .. })
11044 | Node::Complex(nodes::Complex { expression_l, .. })
11045 | Node::Str(nodes::Str { expression_l, .. })
11046 | Node::Dstr(nodes::Dstr { expression_l, .. })
11047 | Node::Sym(nodes::Sym { expression_l, .. })
11048 | Node::Dsym(nodes::Dsym { expression_l, .. })
11049 | Node::Heredoc(nodes::Heredoc { expression_l, .. })
11050 | Node::XHeredoc(nodes::XHeredoc { expression_l, .. })
11051 | Node::Regexp(nodes::Regexp { expression_l, .. })
11052 | Node::Array(nodes::Array { expression_l, .. })
11053 | Node::Hash(nodes::Hash { expression_l, .. }) => {
11054 self.yyerror1(
11055 DiagnosticMessage::SingletonLiteral {},
11056 *expression_l,
11057 )?;
11058 }
11059 other => {
11060 self.value_expr(other)?
11061 }
11062 }
11063
11064 yyval = Value::Node(expr);
11065 },
11066
11067
11068 738 => {
11071 yyval = Value::NodeList( Box::default() );
11072 },
11073
11074
11075 739 => {
11078 yyval = yystack.owned_value_at(1);
11079 },
11080
11081
11082 740 => {
11085 yyval = Value::NodeList( Box::new(vec![ Node::from(yystack.owned_value_at(0)) ]) );
11086 },
11087
11088
11089 741 => {
11092 let mut nodes = BoxedNodeList::from(yystack.owned_value_at(2));
11093 nodes.push( Node::from(yystack.owned_value_at(0)));
11094 yyval = Value::NodeList(nodes);
11095 },
11096
11097
11098 742 => {
11101 yyval = Value::Node(
11102 self.builder.pair(
11103 BoxedNode::from(yystack.owned_value_at(2)),
11104 Token::from(yystack.owned_value_at(1)),
11105 BoxedNode::from(yystack.owned_value_at(0))
11106 )
11107 );
11108 },
11109
11110
11111 743 => {
11114 yyval = Value::Node(
11115 self.builder.pair_keyword(
11116 Token::from(yystack.owned_value_at(1)),
11117 BoxedNode::from(yystack.owned_value_at(0))
11118 )
11119 );
11120 },
11121
11122
11123 744 => {
11126 yyval = Value::Node(
11127 self.builder.pair_label( Token::from(yystack.owned_value_at(0)))
11128 );
11129 },
11130
11131
11132 745 => {
11135 yyval = Value::Node(
11136 self.builder.pair_quoted(
11137 Token::from(yystack.owned_value_at(3)),
11138 NodeList::from(yystack.owned_value_at(2)),
11139 Token::from(yystack.owned_value_at(1)),
11140 BoxedNode::from(yystack.owned_value_at(0))
11141 )
11142 );
11143 },
11144
11145
11146 746 => {
11149 yyval = Value::Node(
11150 self.builder.kwsplat( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))
11151 );
11152 },
11153
11154
11155 747 => {
11158 yyval = yystack.owned_value_at(0);
11159 },
11160
11161
11162 748 => {
11165 yyval = yystack.owned_value_at(0);
11166 },
11167
11168
11169 749 => {
11172 yyval = yystack.owned_value_at(0);
11173 },
11174
11175
11176 750 => {
11179 yyval = yystack.owned_value_at(0);
11180 },
11181
11182
11183 751 => {
11186 yyval = yystack.owned_value_at(0);
11187 },
11188
11189
11190 752 => {
11193 yyval = yystack.owned_value_at(0);
11194 },
11195
11196
11197 753 => {
11200 yyval = yystack.owned_value_at(0);
11201 },
11202
11203
11204 754 => {
11207 yyval = yystack.owned_value_at(0);
11208 },
11209
11210
11211 755 => {
11214 yyval = yystack.owned_value_at(0);
11215 },
11216
11217
11218 756 => {
11221 yyval = yystack.owned_value_at(0);
11222 },
11223
11224
11225 757 => {
11228 yyval = yystack.owned_value_at(0);
11229 },
11230
11231
11232 758 => {
11235 yyval = yystack.owned_value_at(0);
11236 },
11237
11238
11239 759 => {
11242 yyval = yystack.owned_value_at(0);
11243 },
11244
11245
11246 760 => {
11249 yyval = yystack.owned_value_at(0);
11250 },
11251
11252
11253 761 => {
11256 yyval = Value::None;
11257 },
11258
11259
11260 762 => {
11263 yyval = Value::None;
11264 },
11265
11266
11267 763 => {
11270 yyval = Value::None;
11271 },
11272
11273
11274 764 => {
11277 yyval = Value::None;
11278 },
11279
11280
11281 765 => {
11284 yyval = yystack.owned_value_at(0);
11285 },
11286
11287
11288 766 => {
11291 yyval = yystack.owned_value_at(0);
11292 },
11293
11294
11295 767 => {
11298 yyval = yystack.owned_value_at(0);
11299 },
11300
11301
11302 768 => {
11305 yyval = Value::None;
11306 },
11307
11308
11309 769 => {
11312 yyval = Value::None;
11313 },
11314
11315
11316 770 => {
11319 yyval = Value::None;
11320 },
11321
11322
11323 771 => {
11326 yyval = yystack.owned_value_at(0);
11327 },
11328
11329
11330 772 => {
11333 yyval = yystack.owned_value_at(0);
11334 },
11335
11336
11337 773 => {
11340 yyval = Value::None;
11341 },
11342
11343
11344 774 => {
11347 yyval = Value::None;
11348 },
11349
11350
11351 775 => {
11354 yyval = Value::None;
11355 },
11356
11357
11358
11359_ => {}
11362 }
11363
11364 assert!(
11365 !yyval.is_uninitialized(),
11366 "yyval is Uninitialized in rule at line {}",
11367 Self::yyrline_[i32_to_usize(yyn)],
11368 );
11369
11370 self.yy_symbol_print("-> $$ =", SymbolKind::get(Self::yyr1_[i32_to_usize(yyn)]), &yyval, &yyloc);
11371
11372 yystack.pop_n(*yylen);
11373 *yylen = 0;
11374 let yystate = self.yy_lr_goto_state(yystack.state_at(0), Self::yyr1_[i32_to_usize(yyn)]);
11376 yystack.push(yystate, yyval, yyloc);
11377 Ok(Self::YYNEWSTATE)
11378 }
11379
11380 fn yy_symbol_print(&self, s: &str, yykind: &SymbolKind, yyvalue: &YYValue, yylocation: &YYLoc) {
11382 if self.is_debug() {
11383 self.yycdebug(
11384 &format!("{}{} {:?} ( {:?}: {:?} )", s,
11386 if yykind.code() < Self::YYNTOKENS_ { " token " } else { " nterm " },
11387 yykind.name(),
11388 yylocation,
11389 yyvalue
11390 )
11391 )
11392 }
11393 }
11394
11395 #[allow(clippy::manual_range_contains)]
11397 pub fn parse(&mut self) -> bool {
11398 let mut yyloc: YYLoc;
11400
11401 let mut yychar: i32 = Self::YYEMPTY_;
11403 let mut yytoken = &DYMMY_SYMBOL_KIND;
11405
11406 let mut yyn: i32 = 0;
11408 let mut yylen: usize = 0;
11409 let mut yystate: i32 = 0;
11410 let mut yystack = YYStack::new();
11411 let mut label: i32 = Self::YYNEWSTATE;
11412
11413 let mut yyerrloc: YYLoc = YYLoc { begin: 0, end: 0 };
11415
11416 let mut yylloc: YYLoc = YYLoc { begin: 0, end: 0 };
11418
11419 let mut yylval: YYValue = YYValue::new_uninitialized();
11421
11422 self.yycdebug("Starting parse");
11423 self.yyerrstatus_ = 0;
11424 self.yynerrs = 0;
11425
11426 yystack.push(yystate, yylval.clone(), yylloc);
11428
11429 loop {
11430 match label {
11431 Self::YYNEWSTATE => {
11435 if self.is_debug() {
11436 self.yycdebug(&format!("Entering state {}", yystate));
11437 eprintln!("{}", yystack);
11438 }
11439
11440 if yystate == Self::YYFINAL_ {
11442 return true;
11443 }
11444
11445 yyn = Self::yypact_[i32_to_usize(yystate)];
11447 if yy_pact_value_is_default(yyn) {
11448 label = Self::YYDEFAULT;
11449 continue;
11450 }
11451
11452 if yychar == Self::YYEMPTY_ {
11454 self.yycdebug("Reading a token");
11455 let token = self.next_token();
11456 yychar = token.token_type;
11457 yylloc = token.loc;
11458 yylval = YYValue::from_token(token);
11459 }
11460
11461 yytoken = Self::yytranslate_(yychar);
11463 self.yy_symbol_print("Next token is", yytoken, &yylval, &yylloc);
11464
11465 if yytoken == SymbolKind::get(1) {
11466 yychar = Lexer::YYUNDEF;
11471 yytoken = SymbolKind::get(2);
11472 yyerrloc = yylloc;
11473 label = Self::YYERRLAB1;
11474 } else {
11475 yyn += yytoken.code();
11478 if yyn < 0 || Self::YYLAST_ < yyn || Self::yycheck_[i32_to_usize(yyn)] != yytoken.code() {
11479 label = Self::YYDEFAULT;
11480 }
11481
11482 else {
11484 yyn = Self::yytable_[i32_to_usize(yyn)];
11485 if yyn <= 0 {
11486 if yy_table_value_is_error(yyn) {
11487 label = Self::YYERRLAB;
11488 } else {
11489 yyn = -yyn;
11490 label = Self::YYREDUCE;
11491 }
11492 } else {
11493 self.yy_symbol_print("Shifting", yytoken, &yylval, &yylloc);
11495
11496 yychar = Self::YYEMPTY_;
11498
11499 if self.yyerrstatus_ > 0 {
11501 self.yyerrstatus_ -= 1;
11502 }
11503
11504 yystate = yyn;
11505 yystack.push(yystate, std::mem::take(&mut yylval), std::mem::take(&mut yylloc));
11506 label = Self::YYNEWSTATE;
11507 }
11508 }
11509 }
11510 continue;
11511 }, Self::YYDEFAULT => {
11515 yyn = Self::yydefact_[i32_to_usize(yystate)];
11516 if yyn == 0 {
11517 label = Self::YYERRLAB;
11518 } else {
11519 label = Self::YYREDUCE;
11520 }
11521 continue;
11522 } Self::YYREDUCE => {
11526 yylen = i32_to_usize(Self::yyr2_[i32_to_usize(yyn)]);
11527 label = match self.yyaction(yyn, &mut yystack, &mut yylen) {
11528 Ok(label) => label,
11529 Err(_) => Self::YYERROR
11530 };
11531 yystate = yystack.state_at(0);
11532 continue;
11533 }, Self::YYERRLAB => {
11537 if self.yyerrstatus_ == 0 {
11539 self.yynerrs += 1;
11540 if yychar == Self::YYEMPTY_ {
11541 yytoken = &DYMMY_SYMBOL_KIND;
11542 }
11543 self.report_syntax_error(&yystack, yytoken, yylloc);
11544 }
11545 yyerrloc = yylloc;
11546 if self.yyerrstatus_ == 3 {
11547 if yychar <= Lexer::END_OF_INPUT {
11550 if yychar == Lexer::END_OF_INPUT {
11552 return false;
11553 }
11554 }
11555 else {
11556 yychar = Self::YYEMPTY_;
11557 }
11558 }
11559
11560 label = Self::YYERRLAB1;
11562 continue;
11563 }, Self::YYERROR => {
11567 yystack.pop_n(yylen);
11570 yylen = 0;
11571 yystate = yystack.state_at(0);
11572 label = Self::YYERRLAB1;
11573 continue;
11574 }, Self::YYERRLAB1 => {
11578 self.yyerrstatus_ = 3; loop {
11582 yyn = Self::yypact_[i32_to_usize(yystate)];
11583 if !yy_pact_value_is_default(yyn) {
11584 yyn += SymbolKind { value: SymbolKind::S_YYerror }.code();
11585 if (0..=Self::YYLAST_).contains(&yyn) {
11586 let yyn_usize = i32_to_usize(yyn);
11587 if Self::yycheck_[yyn_usize] == SymbolKind::S_YYerror {
11588 yyn = Self::yytable_[yyn_usize];
11589 if 0 < yyn {
11590 break;
11591 }
11592 }
11593 }
11594 }
11595
11596 if yystack.len() == 1 {
11598 return false;
11599 }
11600
11601 yyerrloc = *yystack.location_at(0);
11602 yystack.pop();
11603 yystate = yystack.state_at(0);
11604 if self.is_debug() {
11605 eprintln!("{}", yystack);
11606 }
11607 }
11608
11609 if label == Self::YYABORT {
11610 continue;
11612 }
11613
11614 yystack.push(0, YYValue::new_uninitialized(), yylloc);
11616 yystack.push(0, YYValue::new_uninitialized(), yyerrloc);
11617 yyloc = make_yylloc(&yystack, 2);
11618 yystack.pop_n(2);
11619
11620 self.yy_symbol_print("Shifting", SymbolKind::get(Self::yystos_[i32_to_usize(yyn)]), &yylval, &yyloc);
11622
11623 yystate = yyn;
11624 yystack.push(yyn, yylval.clone(), yyloc);
11625 label = Self::YYNEWSTATE;
11626 continue;
11627 }, Self::YYACCEPT => {
11631 return true;
11632 }
11633
11634 Self::YYABORT => {
11636 return false;
11637 },
11638
11639 _ => {
11640 panic!("internal bison error: unknown label {}", label);
11641 }
11642 }
11643 }
11644 }
11645}
11646
11647fn yy_pact_value_is_default(yyvalue: i32) -> bool {
11649 yyvalue == YYPACT_NINF_
11650}
11651
11652fn yy_table_value_is_error(yyvalue: i32) -> bool {
11656 yyvalue == YYTABLE_NINF_
11657}
11658
11659const YYPACT_NINF_: i32 = -1039;
11660const YYTABLE_NINF_: i32 = -776;
11661
11662impl Parser {
11663
11664#[allow(non_upper_case_globals)]
11667const yypact_: &'static [i32] = &[ -1039, 124, 4301, -1039, 8635, -1039, -1039, -1039, 12927, -1039,
11668 -1039, -1039, -1039, -1039, -1039, -1039, 8910, 8910, -1039, -1039,
11669 -1039, 7630, 7338, -1039, -1039, -1039, -1039, 579, 12782, 24,
11670 72, 106, -1039, -1039, -1039, 6462, 7192, -1039, -1039, 6608,
11671 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, 11104, 11104,
11672 11104, 11104, 94, 5491, 9047, 9595, 10006, 4455, -1039, 12637,
11673 -1039, -1039, -1039, 134, 145, 197, 256, 11104, 11241, 1173,
11674 -1039, 520, -1039, 1294, -1039, 484, 617, 617, -1039, -1039,
11675 176, 213, 314, -1039, 290, 11515, -1039, 334, 3059, 465,
11676 569, 641, -1039, 11378, 11378, -1039, -1039, 10143, 11637, 11759,
11677 12004, 12492, 8910, -1039, 839, 60, -1039, -1039, 444, -1039,
11678 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11679 -1039, 292, 303, -1039, 533, 593, -1039, -1039, -1039, -1039,
11680 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11681 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11682 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11683 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11684 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11685 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11686 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11687 -1039, -1039, -1039, -1039, -1039, 359, -1039, -1039, -1039, 448,
11688 11104, 544, 5629, 11104, 11104, 11104, -1039, 11104, 617, 617,
11689 -1039, 511, 14388, 576, -1039, -1039, 595, 741, 6, 40,
11690 605, 43, 643, -1039, -1039, 8772, -1039, 8910, 9184, -1039,
11691 -1039, 10281, -1039, 11378, 510, -1039, 606, 5767, -1039, 5905,
11692 -1039, -1039, 630, 675, 176, -1039, 748, -1039, 700, 14461,
11693 14461, 705, -1039, -1039, 5491, 676, 520, -1039, 1294, 24,
11694 672, -1039, 1294, 24, 682, 27, 483, -1039, 576, 708,
11695 483, -1039, 24, 803, 12126, 1173, 715, 715, 743, -1039,
11696 768, 795, 814, 844, -1039, -1039, -1039, -1039, -1039, 464,
11697 -1039, 720, 862, 650, -1039, -1039, -1039, -1039, -1039, -1039,
11698 -1039, 789, -1039, -1039, -1039, -1039, 8361, 11378, 11378, 11378,
11699 11378, 9047, 11378, 11378, 1440, 765, 773, 4639, 1440, -1039,
11700 785, 4639, -1039, -1039, -1039, 818, -1039, -1039, -1039, -1039,
11701 -1039, 10419, -1039, 5491, 11881, 792, 10419, -1039, 11104, 11104,
11702 11104, 11104, 11104, -1039, -1039, 11104, 11104, 11104, 11104, 11104,
11703 11104, 11104, 11104, -1039, 11104, 11104, -1039, -1039, 11104, 11104,
11704 11104, 11104, 11104, 11104, 11104, 11104, 11104, -1039, -1039, 13261,
11705 8910, 13334, 4639, 484, 104, 104, 6043, 11378, 6043, 520,
11706 -1039, 782, 878, -1039, -1039, 983, 921, 89, 146, 286,
11707 830, 899, 11378, 91, -1039, 816, 1008, -1039, -1039, -1039,
11708 -1039, 233, 282, 284, 385, 442, 642, 731, 825, 833,
11709 -1039, -1039, -1039, -1039, 847, -1039, -1039, -1039, 14356, -1039,
11710 -1039, 11241, 11241, -1039, -1039, 50, -1039, -1039, -1039, 766,
11711 822, 828, 11104, 11104, 9321, -1039, -1039, 13407, 8910, 13480,
11712 11104, 11104, 9732, -1039, 24, 851, -1039, -1039, 11104, 24,
11713 -1039, 853, 24, 868, -1039, 75, -1039, -1039, -1039, -1039,
11714 -1039, 12927, -1039, 11104, 842, 879, 13407, 13480, 11104, 72,
11715 24, -1039, -1039, 8498, 888, 24, -1039, -1039, 9869, -1039,
11716 -1039, 10006, -1039, -1039, -1039, 606, 1035, -1039, 895, -1039,
11717 -1039, 12126, 13553, 8910, 13626, 1268, -1039, -1039, -1039, -1039,
11718 -1039, -1039, -1039, -1039, -1039, -1039, 866, 36, 897, 71,
11719 11104, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11720 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, 1308, -1039,
11721 -1039, -1039, -1039, -1039, 901, -1039, -1039, 24, -1039, -1039,
11722 -1039, 900, -1039, 903, 11104, -1039, 908, 102, -1039, -1039,
11723 -1039, 913, 970, 916, 980, -1039, 11241, 963, 1034, 520,
11724 11241, 963, -1039, -1039, -1039, -1039, -1039, 11104, -1039, 928,
11725 930, 1012, -1039, 24, 12126, 932, -1039, -1039, -1039, 1017,
11726 936, 3757, -1039, -1039, -1039, 1038, 271, 3665, 700, 4153,
11727 4153, 4153, 4153, 4630, 3201, 4153, 4153, 14461, 14461, 616,
11728 616, 3665, 1174, 1478, 1174, 435, 435, 700, 700, 700,
11729 3086, 1694, 1694, 7776, 6754, 8068, 6900, -1039, -1039, 675,
11730 -1039, 24, 947, 804, -1039, 846, -1039, -1039, 7484, 963,
11731 -1039, 4790, 1070, 5204, 963, 93, 963, 1059, 1069, 340,
11732 13699, 8910, 13772, -1039, 484, -1039, 1035, -1039, -1039, -1039,
11733 13845, 8910, 13918, 4639, 11378, -1039, -1039, -1039, -1039, -1039,
11734 2736, -1039, 3317, -1039, -1039, -1039, 12927, 11104, 11104, 11104,
11735 -1039, 11104, 576, -1039, 643, 6316, 7046, 24, 294, 306,
11736 -1039, -1039, -1039, -1039, 9458, -1039, 9732, -1039, -1039, 11378,
11737 14388, -1039, -1039, 675, 675, -1039, -1039, 688, -1039, -1039,
11738 483, 12126, 895, 452, 639, 24, 566, 571, 1440, -1039,
11739 -1039, -1039, 1150, -1039, 480, -1039, 951, -1039, -1039, 506,
11740 959, -1039, 700, 1308, 1275, -1039, 974, 24, 976, -1039,
11741 149, -1039, -1039, -1039, 11104, 979, 1440, -1039, -1039, 406,
11742 -1039, -1039, -1039, 1440, -1039, -1039, 1740, -1039, -1039, 1066,
11743 4120, -1039, -1039, -1039, 10556, 324, -1039, -1039, 1076, 13177,
11744 -1039, 997, 996, -1039, 963, 996, 963, 1002, 10693, 9047,
11745 -1039, 895, 12126, 9047, 11241, 11104, 13991, 8910, 14064, -1039,
11746 -1039, -1039, 2470, 2470, 801, -1039, 3442, 47, 1078, -1039,
11747 673, -1039, -1039, 151, -1039, 1003, -1039, -1039, -1039, 1013,
11748 -1039, 1018, -1039, 13135, -1039, -1039, -1039, -1039, 811, -1039,
11749 -1039, -1039, 258, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11750 -1039, -1039, 186, -1039, 987, 11241, 11241, -1039, 818, 1009,
11751 1098, 9321, 11241, 11241, -1039, -1039, 818, -1039, -1039, 869,
11752 -1039, 1124, -1039, -1039, -1039, -1039, -1039, -1039, 1069, 963,
11753 -1039, 10830, 963, 59, 309, 24, 343, 372, 6043, 520,
11754 11378, 4639, 966, 639, -1039, 24, 963, 75, 13072, 60,
11755 213, -1039, -1039, -1039, -1039, 11104, 11104, 491, 11104, 11104,
11756 24, 1028, 75, -1039, -1039, 574, 24, 70, -1039, -1039,
11757 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, 24,
11758 -1039, 1308, -1039, 1186, -1039, -1039, -1039, -1039, -1039, 1031,
11759 1036, -1039, 1113, 901, 1042, -1039, 1043, -1039, 1042, 11104,
11760 11104, 928, -1039, 1071, -1039, -1039, -1039, 6043, 5353, -1039,
11761 -1039, 11104, 11104, -1039, 2257, 5905, -1039, -1039, 1046, -1039,
11762 4639, -1039, 11104, 1049, -1039, 895, -1039, 14388, 7922, 8214,
11763 24, 665, 689, -1039, -1039, -1039, -1039, 13135, 416, 24,
11764 4028, -1039, 24, 1052, -1039, 459, 1053, -1039, -1039, 893,
11765 -1039, -1039, -1039, -1039, 11378, -1039, 1129, 4028, 13135, 13135,
11766 459, 1084, 2470, 2470, 801, 561, 22, 3665, 3665, -1039,
11767 11104, -1039, -1039, -1039, -1039, -1039, -1039, 11241, -1039, -1039,
11768 -1039, -1039, -1039, -1039, 6043, 11378, 963, -1039, -1039, 963,
11769 3665, 963, -1039, 11104, -1039, 150, -1039, 374, 963, 4639,
11770 520, 963, -1039, -1039, -1039, -1039, -1039, -1039, 11104, -1039,
11771 9732, -1039, 1083, 1058, -1039, -1039, -1039, -1039, -1039, -1039,
11772 1065, 1077, 1440, -1039, 1740, -1039, -1039, 1740, -1039, 1740,
11773 -1039, -1039, 14388, 14388, 12248, 104, -1039, -1039, 1182, 14388,
11774 14388, 901, -1039, 24, 1089, 900, 1095, 12370, -1039, 1097,
11775 -1039, 1099, 1112, -1039, -1039, -1039, -1039, 1119, 711, 4,
11776 -1039, 1084, 1125, 1127, -1039, -1039, -1039, 24, -1039, -1039,
11777 1146, -1039, -1039, 1131, -1039, 1133, -1039, -1039, -1039, -1039,
11778 -1039, -1039, -1039, -1039, 24, 24, 24, 24, 24, 24,
11779 14388, -1039, -1039, -1039, 104, -1039, -1039, 104, 960, -1039,
11780 -1039, 10967, 4928, -1039, 963, -1039, -1039, -1039, 1367, 4639,
11781 5905, -1039, 1186, 1186, 1042, 1134, 1042, 1042, 1198, -1039,
11782 1044, 160, 200, 237, 4639, -1039, -1039, 1135, -1039, 12370,
11783 2230, -1039, -1039, 1205, 1051, 406, -1039, 2230, -1039, 1865,
11784 -1039, -1039, 13135, -1039, 563, -1039, -1039, 13135, 4028, -1039,
11785 -1039, -1039, -1039, -1039, -1039, 4790, -1039, 11378, 11378, 11104,
11786 -1039, 633, -1039, -1039, 501, -1039, -1039, 963, 1145, 6181,
11787 1077, -1039, 1740, -1039, -1039, -1039, 270, 14137, 8910, 14210,
11788 1034, -1039, 1051, -1039, 1151, 1154, -1039, 14283, -1039, 901,
11789 1155, -1039, 1157, 1155, 1160, 1160, -1039, -1039, 869, 5066,
11790 -1039, -1039, -1039, -1039, -1039, -1039, 1367, -1039, -1039, -1039,
11791 1166, 1042, 87, 183, 24, 276, 280, -1039, 2230, -1039,
11792 1865, -1039, 1152, 1156, -1039, 1865, -1039, 1865, -1039, -1039,
11793 13135, -1039, 493, -1039, -1039, -1039, 367, 1155, 1169, 1155,
11794 1155, -1039, -1039, -1039, -1039, 1865, -1039, -1039, -1039, 1155,
11795 -1039 ];
11796
11797#[allow(non_upper_case_globals)]
11801const yydefact_: &'static [i32] = &[ 2, 0, 0, 1, 0, 369, 370, 371, 0, 362,
11802 363, 364, 367, 365, 366, 368, 357, 358, 359, 360,
11803 380, 290, 290, 650, 649, 651, 652, 763, 0, 763,
11804 0, 0, 654, 653, 655, 747, 749, 646, 645, 748,
11805 648, 637, 638, 639, 640, 588, 660, 661, 0, 0,
11806 0, 0, 0, 0, 318, 775, 775, 102, 439, 608,
11807 608, 610, 612, 0, 0, 0, 0, 0, 0, 0,
11808 3, 761, 6, 9, 34, 39, 669, 669, 55, 73,
11809 290, 72, 0, 90, 0, 94, 104, 0, 64, 242,
11810 261, 0, 316, 0, 0, 70, 70, 761, 0, 0,
11811 0, 0, 327, 338, 74, 336, 305, 306, 587, 589,
11812 307, 308, 309, 311, 310, 312, 586, 627, 628, 585,
11813 635, 656, 657, 313, 0, 314, 78, 5, 8, 183,
11814 194, 184, 207, 180, 200, 190, 189, 210, 211, 205,
11815 188, 187, 182, 208, 212, 213, 192, 181, 195, 199,
11816 201, 193, 186, 202, 209, 204, 203, 196, 206, 191,
11817 179, 198, 197, 178, 185, 176, 177, 173, 174, 175,
11818 133, 135, 134, 168, 169, 164, 146, 147, 148, 155,
11819 152, 154, 149, 150, 170, 171, 156, 157, 161, 165,
11820 143, 145, 151, 153, 172, 144, 158, 159, 160, 162,
11821 163, 167, 166, 138, 140, 27, 136, 137, 139, 0,
11822 744, 0, 0, 0, 0, 293, 608, 0, 669, 669,
11823 285, 0, 268, 296, 88, 289, 775, 0, 656, 657,
11824 0, 314, 775, 740, 89, 763, 86, 0, 775, 461,
11825 85, 763, 764, 0, 0, 22, 254, 0, 10, 0,
11826 357, 358, 330, 462, 0, 236, 0, 327, 237, 227,
11827 228, 324, 18, 20, 0, 0, 761, 16, 19, 763,
11828 92, 15, 320, 763, 0, 768, 768, 269, 0, 0,
11829 768, 738, 763, 0, 0, 0, 669, 669, 100, 361,
11830 0, 110, 111, 118, 440, 632, 631, 633, 630, 0,
11831 629, 0, 0, 0, 595, 604, 600, 606, 249, 59,
11832 248, 636, 771, 772, 4, 773, 762, 0, 0, 0,
11833 0, 0, 0, 0, 692, 0, 668, 0, 692, 666,
11834 0, 0, 372, 464, 455, 79, 466, 335, 373, 449,
11835 451, 0, 106, 0, 98, 95, 0, 62, 0, 0,
11836 0, 0, 0, 264, 265, 0, 0, 0, 0, 225,
11837 226, 0, 0, 60, 0, 0, 262, 263, 0, 0,
11838 0, 0, 0, 0, 0, 0, 0, 757, 758, 0,
11839 775, 0, 0, 69, 0, 0, 0, 0, 0, 761,
11840 345, 762, 0, 391, 390, 0, 0, 656, 657, 314,
11841 128, 129, 0, 0, 131, 664, 0, 656, 657, 314,
11842 353, 203, 196, 206, 191, 173, 174, 175, 133, 134,
11843 736, 66, 65, 735, 0, 87, 760, 759, 0, 337,
11844 590, 0, 0, 141, 743, 324, 297, 746, 292, 0,
11845 0, 0, 0, 0, 0, 286, 295, 0, 775, 0,
11846 0, 0, 0, 287, 763, 0, 329, 291, 693, 763,
11847 281, 775, 763, 775, 280, 763, 334, 58, 24, 26,
11848 25, 0, 331, 0, 0, 0, 0, 0, 0, 0,
11849 763, 322, 14, 762, 91, 763, 319, 325, 770, 769,
11850 270, 770, 272, 326, 739, 0, 117, 108, 103, 636,
11851 668, 0, 0, 775, 0, 692, 614, 634, 617, 615,
11852 609, 591, 592, 611, 593, 613, 0, 0, 0, 0,
11853 0, 774, 7, 28, 29, 30, 31, 32, 56, 57,
11854 699, 696, 695, 694, 697, 705, 714, 693, 0, 726,
11855 715, 730, 729, 725, 775, 716, 691, 763, 675, 698,
11856 700, 701, 703, 677, 707, 712, 775, 718, 404, 403,
11857 723, 677, 728, 677, 732, 674, 0, 0, 775, 0,
11858 0, 0, 468, 76, 80, 470, 470, 0, 35, 301,
11859 0, 38, 300, 763, 0, 96, 107, 54, 40, 52,
11860 0, 273, 296, 214, 36, 0, 314, 0, 234, 241,
11861 243, 244, 245, 252, 253, 246, 247, 223, 224, 250,
11862 251, 0, 238, 240, 239, 229, 230, 231, 232, 233,
11863 763, 266, 267, 747, 749, 748, 751, 460, 750, 290,
11864 458, 763, 775, 747, 749, 748, 751, 459, 290, 0,
11865 382, 0, 381, 0, 0, 0, 0, 343, 0, 324,
11866 0, 775, 0, 70, 351, 128, 129, 130, 662, 349,
11867 0, 775, 0, 0, 0, 755, 756, 67, 747, 748,
11868 290, 41, 273, 215, 51, 222, 0, 0, 0, 0,
11869 742, 0, 298, 294, 775, 747, 748, 763, 747, 748,
11870 741, 328, 765, 275, 282, 277, 284, 333, 23, 0,
11871 255, 11, 33, 0, 775, 221, 21, 93, 17, 321,
11872 768, 0, 101, 752, 116, 763, 747, 748, 692, 441,
11873 444, 618, 0, 594, 0, 597, 0, 602, 599, 0,
11874 0, 603, 235, 0, 402, 394, 396, 763, 399, 392,
11875 0, 673, 734, 667, 0, 0, 0, 684, 706, 0,
11876 672, 546, 717, 0, 687, 727, 0, 689, 731, 47,
11877 257, 379, 355, 374, 775, 775, 577, 670, 49, 259,
11878 356, 0, 775, 468, 0, 775, 0, 304, 0, 0,
11879 105, 99, 0, 0, 0, 0, 0, 775, 0, 569,
11880 575, 542, 0, 0, 0, 516, 763, 513, 530, 608,
11881 0, 568, 63, 487, 493, 495, 497, 491, 490, 526,
11882 492, 535, 538, 541, 547, 548, 537, 500, 549, 501,
11883 554, 555, 556, 559, 560, 561, 562, 563, 565, 564,
11884 566, 567, 545, 61, 0, 0, 0, 457, 83, 0,
11885 463, 282, 0, 0, 279, 456, 81, 278, 317, 775,
11886 383, 775, 341, 385, 71, 384, 342, 479, 0, 0,
11887 376, 0, 0, 752, 323, 763, 747, 748, 0, 0,
11888 0, 0, 128, 129, 132, 763, 0, 763, 0, 452,
11889 75, 142, 745, 299, 288, 0, 0, 463, 0, 0,
11890 763, 775, 763, 271, 109, 463, 763, 0, 619, 623,
11891 624, 625, 616, 626, 596, 598, 605, 601, 607, 763,
11892 401, 0, 702, 0, 733, 719, 406, 676, 704, 677,
11893 677, 713, 718, 775, 677, 724, 677, 701, 677, 0,
11894 0, 578, 579, 775, 580, 375, 377, 0, 0, 13,
11895 584, 0, 0, 465, 763, 0, 430, 429, 0, 467,
11896 0, 450, 0, 302, 37, 97, 53, 274, 747, 748,
11897 763, 747, 748, 557, 558, 129, 573, 0, 518, 763,
11898 519, 523, 763, 0, 512, 0, 0, 515, 529, 0,
11899 570, 642, 641, 643, 0, 571, 0, 488, 0, 0,
11900 536, 540, 552, 553, 0, 499, 498, 0, 0, 544,
11901 0, 46, 219, 45, 220, 84, 766, 0, 43, 217,
11902 44, 218, 82, 378, 0, 0, 0, 386, 388, 0,
11903 0, 0, 347, 0, 472, 0, 346, 463, 0, 0,
11904 0, 0, 463, 354, 737, 68, 453, 454, 0, 276,
11905 283, 332, 0, 433, 447, 445, 442, 620, 393, 395,
11906 397, 400, 0, 680, 0, 682, 671, 0, 688, 0,
11907 685, 690, 48, 258, 0, 0, 582, 583, 775, 50,
11908 260, 775, 428, 763, 0, 701, 412, 709, 710, 775,
11909 721, 412, 412, 410, 469, 77, 471, 303, 463, 763,
11910 510, 533, 521, 520, 511, 524, 608, 763, 767, 543,
11911 0, 494, 489, 526, 496, 527, 531, 539, 534, 550,
11912 551, 574, 509, 505, 763, 763, 763, 763, 763, 763,
11913 256, 42, 216, 389, 0, 339, 340, 0, 484, 344,
11914 473, 0, 0, 348, 0, 663, 350, 443, 0, 0,
11915 0, 621, 0, 0, 677, 677, 677, 677, 0, 581,
11916 0, 656, 657, 314, 0, 12, 409, 0, 431, 0,
11917 413, 421, 419, 0, 708, 0, 408, 0, 424, 0,
11918 426, 517, 0, 525, 0, 514, 572, 0, 0, 502,
11919 503, 504, 506, 507, 508, 0, 480, 0, 0, 0,
11920 474, 775, 352, 437, 763, 435, 438, 0, 0, 0,
11921 398, 681, 0, 678, 683, 686, 324, 0, 775, 0,
11922 775, 432, 720, 411, 412, 412, 324, 0, 711, 775,
11923 412, 722, 412, 412, 522, 527, 528, 532, 775, 0,
11924 485, 486, 475, 477, 478, 476, 0, 434, 448, 446,
11925 0, 677, 752, 323, 763, 747, 748, 576, 0, 416,
11926 0, 418, 752, 323, 407, 0, 425, 0, 422, 427,
11927 0, 387, 775, 436, 622, 679, 463, 412, 412, 412,
11928 412, 482, 483, 481, 417, 0, 414, 420, 423, 412,
11929 415 ];
11930
11931#[allow(non_upper_case_globals)]
11933const yypgoto_: &'static [i32] = &[ -1039, -1039, -1039, 1048, -1039, 16, 817, -306, 217, -1039,
11934 823, -1039, 126, -1039, -225, -340, 25, -1039, -1039, 421,
11935 2287, 2600, -1039, -65, -85, -1039, -28, -1039, -232, -1039,
11936 1287, -9, 1202, -149, -27, -49, -1039, -419, 14, 2729,
11937 -369, 1201, -56, -1, -1039, -1039, 2, -1039, 3595, -1039,
11938 1219, -1039, 1138, -1039, -273, 9, 644, -347, 80, -7,
11939 -1039, -397, -186, 90, -1039, -309, -41, -1039, -1039, -1039,
11940 -1039, -1039, -1039, -1039, -1039, -1039, 727, -1039, -1039, -1039,
11941 -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039, -1039,
11942 -1039, -1039, 547, -1039, 1184, 1706, -379, -1039, 81, -782,
11943 -1039, -861, -832, 588, 431, -888, 268, -1039, 400, -22,
11944 -1039, -1039, 581, -1039, -882, -1039, 118, 470, -1039, -1039,
11945 -1039, -1039, -1039, -1039, -1039, 478, -1039, -1039, -1039, -96,
11946 -1039, -1039, 594, -1039, 796, -1039, -1039, -819, -1039, 111,
11947 -1039, -1039, -1039, -1039, -598, -363, -1039, -1039, -1039, -1039,
11948 386, -1039, -1039, 7, -1039, -545, -702, -854, -619, -771,
11949 -243, -1039, 389, -1039, -1039, -123, 392, -1039, -604, 397,
11950 -1039, -1039, -1039, 175, -1039, -1039, 318, 485, 891, -1039,
11951 1279, 907, 1014, 1176, -1039, 875, 1451, -1039, 1464, 1797,
11952 -1039, -1039, -59, -1039, -1039, -142, -1039, -1039, -1039, -1039,
11953 -1039, -1039, -1039, -4, -1039, -1039, -1039, -1039, 1, -1039,
11954 207, 10, 1293, 3042, 2181, -1039, -1039, 21, 651, 0,
11955 -1039, -256, -395, -249, -216, -1015, -487, -305, -711, -371,
11956 -72, 647, 232, -1039, -1039, -471, -1039, -708, -688, -1038,
11957 238, 655, -1039, -615, -1039, 476, -539, -1039, -1039, -1039,
11958 32, -431, -301, -296, -1039, -1039, -86, -1039, -54, 156,
11959 848, 295, 308, -238, -69, 19, -2 ];
11960
11961#[allow(non_upper_case_globals)]
11963const yydefgoto_: &'static [i32] = &[ 0, 1, 2, 70, 71, 72, 248, 567, 568, 266,
11964 267, 479, 268, 471, 74, 588, 75, 611, 597, 421,
11965 218, 219, 878, 384, 386, 387, 78, 79, 574, 773,
11966 254, 81, 82, 269, 83, 84, 85, 498, 86, 221,
11967 404, 405, 203, 204, 205, 676, 626, 207, 88, 473,
11968 375, 89, 223, 274, 593, 627, 845, 459, 460, 236,
11969 237, 225, 445, 632, 581, 582, 90, 382, 273, 485,
11970 699, 858, 648, 871, 869, 663, 256, 92, 93, 94,
11971 95, 96, 97, 98, 99, 100, 101, 336, 339, 764,
11972 937, 861, 1014, 1015, 762, 257, 641, 854, 1016, 1017,
11973 396, 735, 736, 737, 738, 544, 744, 745, 1213, 1161,
11974 1162, 1073, 945, 946, 1042, 1194, 1195, 103, 294, 505,
11975 897, 719, 1046, 1140, 1139, 340, 576, 104, 105, 337,
11976 572, 575, 771, 772, 774, 775, 1025, 862, 1235, 859,
11977 1020, 1229, 1273, 1127, 802, 1091, 804, 805, 997, 998,
11978 806, 975, 967, 969, 970, 971, 808, 809, 1105, 973,
11979 810, 811, 812, 813, 814, 545, 816, 817, 818, 819,
11980 820, 821, 822, 765, 933, 1065, 939, 106, 107, 108,
11981 109, 110, 111, 112, 516, 724, 113, 518, 114, 115,
11982 517, 519, 299, 302, 303, 510, 722, 721, 898, 1047,
11983 1141, 1199, 902, 116, 117, 300, 118, 119, 120, 985,
11984 228, 229, 123, 230, 231, 659, 870, 325, 326, 327,
11985 328, 917, 747, 547, 548, 549, 550, 927, 552, 553,
11986 554, 555, 1078, 1079, 556, 557, 558, 559, 560, 1080,
11987 1081, 561, 562, 563, 564, 565, 741, 424, 664, 279,
11988 463, 233, 126, 703, 630, 667, 662, 428, 314, 455,
11989 456, 840, 977, 490, 642, 391, 271 ];
11990
11991#[allow(non_upper_case_globals)]
11995const yytable_: &'static [i32] = &[ 127, 301, 315, 298, 208, 381, 643, 220, 220, 429,
11996 206, 388, 122, 833, 122, 240, 289, 750, 427, 551,
11997 128, 690, 462, 551, 208, 571, 270, 245, 315, 385,
11998 206, 239, 389, 631, 657, 918, 345, 594, 492, 1021,
11999 309, 923, 494, 390, 289, 422, 453, 683, 232, 232,
12000 1049, 739, 807, 277, 281, 683, 1071, 289, 289, 289,
12001 690, 206, 1074, 122, 122, 925, 807, 292, 546, 1019,
12002 311, 288, 546, 335, 329, 329, 639, 331, 628, 569,
12003 628, 1051, 712, 629, -123, 638, 332, 276, 280, 334,
12004 316, 671, 674, 220, 972, 292, 224, 234, 330, 1044,
12005 -123, 687, 726, 206, 986, -658, 226, 226, 398, 408,
12006 408, 408, 322, 323, -119, 480, 1092, 640, 383, 383,
12007 853, 587, 383, 1196, 3, -763, 832, 628, 73, 1221,
12008 73, 920, 670, 1103, 232, -119, 751, 730, 926, -659,
12009 832, 449, 451, 655, 242, 275, 628, 656, 628, 478,
12010 261, 629, 488, 638, 752, 727, 715, 439, 673, 675,
12011 513, 515, 242, 640, 242, 781, 754, 489, 757, -120,
12012 477, -120, -127, -119, -763, 628, 628, 673, 675, -126,
12013 272, 704, 425, 243, -114, 246, 333, 242, 963, 964,
12014 731, 1157, 226, 1045, 583, -747, -125, 315, 247, 1093,
12015 551, 628, 332, 628, 504, 705, 587, 587, 704, 121,
12016 1221, 121, 482, -120, -110, 242, 329, 329, 1106, 331,
12017 751, 1196, 122, -747, 446, -123, 220, -123, 220, 220,
12018 446, 312, 249, 313, 803, 497, 464, 270, 999, 440,
12019 441, 338, 312, 289, 313, 127, 739, 910, 803, 546,
12020 -127, 986, 523, 524, 525, 526, 720, 122, 541, 122,
12021 121, 121, 239, 334, 291, 690, 465, 232, 467, 232,
12022 265, -111, 1071, 304, 122, 1131, 987, 453, 922, 1071,
12023 542, 1071, 1049, -126, 305, 483, 499, 331, 312, -122,
12024 313, 874, 291, -124, 292, 1115, 1118, 683, -119, 683,
12025 -119, -650, 333, 289, 865, 397, 407, 407, 407, 652,
12026 1200, -127, 238, 578, 875, 454, 270, 457, 589, -748,
12027 315, -125, 645, -125, 1226, 226, 122, 226, 461, 1082,
12028 -650, 122, 522, 935, -125, 647, 306, 122, -120, 936,
12029 -120, 122, 383, 383, 383, 383, 918, 528, 529, 628,
12030 -649, 628, -651, 122, 292, 994, 704, 876, 585, 628,
12031 1071, 628, 1071, 955, 925, -126, 704, 1071, -122, 1071,
12032 432, 220, 1234, 73, 725, -127, 725, -127, 464, -649,
12033 -121, -651, 924, 636, 1056, 928, 995, 1071, 1109, 1110,
12034 637, -658, 122, 888, 996, 307, 122, -124, 122, -121,
12035 -127, 1106, -659, 589, 589, 889, 1106, 1227, -126, 1233,
12036 -126, -118, 383, 551, -122, 342, -122, -110, -124, 121,
12037 -124, -119, 1128, -122, 739, 966, 739, 654, -111, 265,
12038 636, 580, -120, 968, -116, -124, 580, 1145, 495, 220,
12039 960, 551, 73, 341, 683, -748, 464, 527, 551, 918,
12040 991, 636, 497, -652, 121, 932, 121, 1219, 637, 446,
12041 289, 446, 546, 346, 535, -117, 475, 208, -113, 896,
12042 698, 121, 893, 206, 815, 807, 684, -114, 890, 636,
12043 1271, 265, -652, 536, 433, 628, 637, 628, 815, 1227,
12044 629, 291, 638, 122, 220, 1001, 1003, -115, 884, -112,
12045 767, 464, 1008, 1010, 832, -121, 636, -121, 936, 788,
12046 -654, 292, 348, 637, 540, 541, 986, 791, 857, 832,
12047 710, 322, 323, 121, 1053, 1055, 832, 832, 121, 1058,
12048 506, 1060, 1156, 1061, 121, 497, 536, 542, 121, -654,
12049 1166, -533, 742, 289, 918, 1215, 506, 353, 354, 832,
12050 121, 291, 1222, 1224, 742, -114, 60, 759, 1225, 587,
12051 265, 768, 1002, 1004, 468, 1031, 766, 540, 868, 1009,
12052 1011, 1096, 506, 1076, 469, 470, 855, -114, 371, 372,
12053 373, -114, 905, 507, 241, 508, 509, 905, -747, 121,
12054 1038, -113, -114, 121, 292, 121, -115, 366, 367, -112,
12055 435, 508, 509, 644, 1089, 646, 1005, 831, 491, 690,
12056 587, 587, 1002, 1004, 1012, 1009, 1011, 587, 587, 904,
12057 -121, 831, 838, 489, 968, 1111, 1236, 508, 509, 506,
12058 446, 846, 431, 1268, 968, 968, 847, -361, 837, 1075,
12059 442, 242, 220, 683, 1086, 907, 1132, 844, 936, 464,
12060 860, 122, 220, 122, 636, 739, 739, 803, 312, 464,
12061 313, 637, 894, 880, 636, -361, -361, 1121, 847, -113,
12062 289, 637, 208, 122, -115, 881, 443, -112, 206, 844,
12063 1254, 1144, 446, 1146, 508, 509, 1154, 1099, 1147, 877,
12064 121, -113, 432, 348, 922, -113, -115, -361, -763, -112,
12065 -115, 242, 847, -112, 450, 884, -113, -323, 291, 377,
12066 -653, -115, 837, 844, -112, 241, 506, 514, -118, 242,
12067 444, 292, -127, 1134, 892, 980, 891, 981, 982, 91,
12068 983, 91, 1097, 497, 1122, -323, -323, 378, 379, -653,
12069 979, 289, 472, 227, 227, 1185, -775, 551, 1186, 1201,
12070 1203, 1204, 1205, 324, 1116, 1119, 589, 369, 370, 371,
12071 372, 373, 934, 940, 842, 1122, 235, -323, 452, 380,
12072 947, 508, 509, 947, 984, -748, 834, 348, 220, 481,
12073 91, 91, 587, 1036, 290, 464, 506, 839, 843, 122,
12074 636, 291, 292, 122, -122, 227, 1220, 637, 1223, -655,
12075 1029, -90, 831, 831, 478, 1030, 831, 589, 589, 377,
12076 1007, 238, 290, -105, 589, 589, 377, -91, -124, 487,
12077 227, 227, 422, 831, 227, 395, 406, 406, -655, 227,
12078 -117, 1241, 506, 1197, -126, 493, 377, 378, 447, 511,
12079 -121, 508, 509, 839, 378, 476, 1265, 1018, 121, 1018,
12080 121, 324, 815, 655, 580, 1075, -747, 965, 849, 496,
12081 851, 1244, 1075, -656, 378, 502, 520, 815, 501, 448,
12082 121, 839, 1077, 891, 815, 815, 448, 1267, 122, 1269,
12083 206, 122, -657, 1013, 936, 511, 1270, 508, 509, 446,
12084 677, -656, -656, -644, 566, 383, 503, 815, -644, 992,
12085 993, -647, -665, 842, 1279, 954, 628, 377, 628, 956,
12086 -657, -657, -314, 704, 570, 665, 628, 586, 291, 1100,
12087 521, 742, -644, -656, 573, -748, -644, -644, 506, -113,
12088 -647, 1066, 506, -122, 649, 378, 426, 500, 500, 91,
12089 -314, -314, -657, 1075, 666, 843, 653, 122, 122, 658,
12090 1124, 678, 839, 976, 692, 122, -747, 679, -644, 506,
12091 122, 1135, 227, 506, 227, 227, -747, -647, 227, 701,
12092 227, -115, -314, 761, 91, -124, 91, 831, 694, 589,
12093 831, 512, 887, 508, 509, 723, 121, 508, 509, 291,
12094 121, 91, -752, 696, 1102, -647, -647, 831, 831, 831,
12095 1187, 1188, 831, 831, 1114, 1117, 702, 831, 831, 383,
12096 895, 290, 511, -105, 508, 509, 728, 1099, 508, 509,
12097 711, 839, 755, 289, 122, -748, 740, -647, 746, -405,
12098 831, 839, 758, 749, -752, -748, 289, 1174, 753, 122,
12099 383, 756, 763, 91, 227, 227, 227, 227, 91, 227,
12100 227, 377, 1043, -296, 91, 778, 779, 782, 91, 1168,
12101 1170, 783, -752, -752, 1209, 784, 940, 801, 227, 742,
12102 91, 290, 841, 595, 1152, 121, 377, 742, 121, 378,
12103 650, 801, 823, 850, 857, 1028, 860, 408, 1077, 466,
12104 906, 974, -752, 1077, -752, 1077, 823, 1077, 908, 911,
12105 1043, 913, -747, -324, 378, 660, 377, 227, 916, 91,
12106 929, 651, 377, 91, 227, 91, 839, 484, 289, 377,
12107 941, 486, 1230, 1231, 943, 839, 944, -297, 839, 227,
12108 978, -324, -324, 988, 378, 786, 661, 1000, 989, 936,
12109 378, 1207, 122, 990, 121, 121, 1006, 378, 1217, 122,
12110 122, 839, 121, 1040, 1067, 1068, 1052, 121, 595, 595,
12111 1027, 1054, 1084, -324, 122, 752, 787, 1057, 1059, 408,
12112 1032, 1064, 1208, 1085, -298, 227, 1077, 1095, 1077, 661,
12113 1098, 789, 831, 1077, 986, 1077, 1137, 831, 831, 1018,
12114 1142, 935, 1249, 1251, 278, 122, 1138, 1007, 1256, 220,
12115 1258, 1259, 1143, 1077, 899, 900, 464, 901, 766, 122,
12116 91, 636, 383, 383, 46, 47, 914, 742, 637, 1158,
12117 1160, 121, 1165, -112, 1167, 914, 1018, -121, 290, 1043,
12118 227, 1123, 41, 42, 43, 44, 121, 1169, 530, 122,
12119 531, 532, 533, 534, -299, 1274, 1276, 1277, 1278, 1176,
12120 1172, 348, 1173, 976, 1206, 1088, 1177, 1280, 1178, 1202,
12121 1018, 1216, 801, 801, 1090, 1211, 801, 1094, 361, 362,
12122 831, 1151, 1239, 839, 839, 839, 1248, 823, 823, 1250,
12123 1255, 823, 1257, 801, 407, 1260, 1264, 733, -747, 80,
12124 1112, 80, -748, 227, 1275, 474, 706, 227, 823, 1035,
12125 393, 410, 691, 80, 80, 365, 708, 693, 376, 1261,
12126 695, 290, 938, 697, 879, 369, 370, 371, 372, 373,
12127 530, 909, 531, 532, 533, 534, 535, 530, 707, 531,
12128 532, 533, 534, 709, 317, 318, 319, 320, 321, 121,
12129 80, 80, 1050, 1159, 1072, 536, 121, 121, 434, 1191,
12130 1237, 436, 437, 438, 1263, 80, 950, 1198, 1037, 537,
12131 530, 121, 531, 532, 533, 534, 407, 948, 91, 538,
12132 91, 1210, 776, 1272, 1104, 539, 540, 541, 227, 1107,
12133 80, 80, 1108, 1101, 80, 1247, 1155, 430, 227, 80,
12134 91, 227, 121, 729, 423, 743, 921, 1218, 1214, 542,
12135 839, 919, 1228, 0, 718, 1175, 121, 0, 0, 733,
12136 0, 543, 1182, 1183, 1184, 734, 1240, 0, 0, 1193,
12137 1083, 531, 532, 533, 534, 0, 227, 0, 0, 0,
12138 0, 780, 0, 0, 0, 0, 121, 801, 290, 0,
12139 801, 0, 0, 0, 0, 0, 1262, 0, 0, 0,
12140 0, 0, 823, 0, 0, 823, 0, 801, 801, 801,
12141 0, 0, 801, 801, 0, 0, 0, 801, 801, 0,
12142 0, 0, 823, 823, 823, 0, 0, 823, 823, 579,
12143 0, 0, 823, 823, 592, 0, 0, 0, 824, 0,
12144 801, 0, 530, 0, 531, 532, 533, 534, 535, 80,
12145 0, 0, 824, 0, 825, 823, 91, 0, 0, 290,
12146 91, 595, 0, 0, 227, 0, 0, 536, 825, 0,
12147 0, 0, 80, 0, 80, 80, 0, 0, 80, 0,
12148 80, 537, 0, 0, 80, 0, 80, 0, 0, 1266,
12149 0, 538, 0, 0, 0, 0, 0, 539, 540, 541,
12150 0, 80, 0, 0, 0, 348, 0, 0, 0, 0,
12151 0, 0, 595, 595, 0, 0, 0, 0, 0, 595,
12152 595, 542, 361, 362, 0, 0, 0, 0, 0, 0,
12153 0, 680, 682, 543, 0, 912, 0, 0, 0, 0,
12154 278, 0, 0, 0, 0, 91, 0, 227, 91, 0,
12155 0, 0, 0, 80, 80, 80, 80, 80, 80, 80,
12156 80, 826, 0, 0, 80, 0, 0, 0, 80, 369,
12157 370, 371, 372, 373, 0, 826, 682, 0, 80, 278,
12158 80, 0, 0, 80, 0, 0, 1083, 0, 0, 0,
12159 0, 914, 801, 1083, 0, 1083, 0, 801, 801, 0,
12160 0, 0, 0, 0, 0, 0, 0, 823, 0, 0,
12161 0, 0, 823, 823, 91, 91, 0, 80, 0, 80,
12162 0, 0, 91, 80, 80, 80, 0, 91, 0, 0,
12163 0, 0, 0, 824, 824, 0, 0, 824, 0, 80,
12164 0, 0, 748, 0, 0, 0, 0, 0, 0, 825,
12165 825, 0, 0, 825, 824, 0, 0, 0, 102, 0,
12166 102, 227, 0, 0, 0, 777, 0, 0, 80, 80,
12167 825, 0, 102, 102, 1083, 1034, 1083, 0, 0, 0,
12168 801, 1083, 0, 1083, 595, 80, 0, 0, 1039, 0,
12169 1041, 91, 227, 0, 0, 823, 0, 0, 0, 0,
12170 0, 1083, 0, 0, 0, 770, 91, 1048, 0, 102,
12171 102, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12172 80, 348, 0, 827, 102, 0, 0, 0, 0, 0,
12173 0, 0, 0, 0, 0, 0, 0, 827, 361, 362,
12174 80, 1150, 530, 0, 531, 532, 533, 534, 535, 102,
12175 102, 0, 0, 102, 1164, 0, 826, 826, 102, 0,
12176 826, 0, 0, 0, 0, 882, 0, 536, 0, 883,
12177 0, 0, 0, 848, 364, 365, 0, 826, 852, 368,
12178 856, 537, 682, 0, 278, 369, 370, 371, 372, 373,
12179 0, 538, 0, 0, 1113, 0, 0, 0, 540, 541,
12180 0, 0, 0, 80, 0, 0, 0, 80, 824, 91,
12181 0, 824, 0, 0, 0, 0, 91, 91, 0, 0,
12182 0, 542, 0, 0, 825, 0, 0, 825, 824, 824,
12183 824, 91, 915, 824, 824, 0, 1212, 0, 824, 824,
12184 0, 0, 0, 0, 825, 825, 825, 0, 0, 825,
12185 825, 0, 931, 0, 825, 825, 0, 0, 0, 0,
12186 0, 824, 91, 0, 227, 227, 953, 530, 102, 531,
12187 532, 533, 534, 535, 0, 0, 91, 825, 80, 0,
12188 80, 0, 0, 0, 0, 227, 0, 1171, 80, 0,
12189 0, 102, 536, 102, 102, 0, 0, 102, 80, 102,
12190 80, 80, 0, 102, 0, 102, 91, 0, 949, 0,
12191 951, 0, 1179, 1180, 1181, 0, 538, 0, 827, 827,
12192 102, 0, 827, 540, 541, 0, 0, 0, 0, 682,
12193 0, 826, 0, 0, 826, 0, 80, 0, 0, 827,
12194 0, 0, 0, 0, 0, 0, 542, 0, 0, 1024,
12195 0, 826, 826, 826, 0, 0, 826, 826, 0, 0,
12196 0, 826, 826, 0, 0, 0, 0, 0, 0, 0,
12197 0, 0, 102, 102, 102, 102, 102, 102, 102, 102,
12198 0, 0, 0, 102, 826, 0, 0, 102, 0, 0,
12199 0, 0, 0, 1022, 0, 0, 1026, 102, 828, 102,
12200 0, 0, 102, 0, 0, 0, 0, 0, 0, 0,
12201 1033, 829, 828, 824, 0, 0, 80, 0, 824, 824,
12202 80, 80, 0, 0, 80, 829, 0, 0, 0, 825,
12203 0, 0, 0, 0, 825, 825, 102, 0, 102, 0,
12204 1087, 0, 102, 102, 102, 0, 0, 0, 0, 0,
12205 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
12206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12207 0, 0, 80, 80, 0, 0, 0, 0, 0, 80,
12208 80, 0, 0, 0, 0, 0, 0, 102, 102, 0,
12209 0, 0, 0, 827, 0, 0, 827, 0, 0, 0,
12210 0, 824, 0, 0, 102, 80, 0, 80, 80, 0,
12211 0, 1130, 0, 827, 827, 827, 0, 825, 827, 827,
12212 0, 0, 0, 827, 827, 0, 0, 0, 278, 0,
12213 0, 0, 0, 125, 0, 125, 826, 0, 0, 102,
12214 0, 826, 826, 0, 0, 0, 827, 0, 0, 0,
12215 1125, 0, 0, 1126, 0, 1129, 0, 0, 0, 102,
12216 0, 0, 1133, 0, 0, 1136, 0, 0, 0, 0,
12217 0, 0, 0, 0, 80, 80, 0, 0, 0, 0,
12218 0, 0, 80, 0, 125, 125, 0, 80, 293, 0,
12219 0, 0, 0, 828, 828, 0, 0, 828, 0, 0,
12220 0, 0, 0, 0, 0, 0, 829, 829, 0, 0,
12221 829, 0, 0, 0, 828, 0, 293, 0, 0, 1190,
12222 0, 80, 102, 0, 826, 0, 102, 829, 0, 399,
12223 409, 409, 530, 0, 531, 532, 533, 534, 535, 76,
12224 0, 76, 0, 0, 80, 0, 0, 0, 0, 0,
12225 0, 80, 80, 0, 0, 0, 0, 536, 0, 530,
12226 0, 531, 532, 533, 534, 535, 80, 0, 1192, 0,
12227 0, 0, 0, 0, 0, 0, 0, 1232, 0, 0,
12228 0, 538, 0, 0, 536, 0, 0, 539, 540, 541,
12229 76, 76, 0, 0, 286, 0, 0, 102, 827, 102,
12230 0, 0, 0, 827, 827, 0, 0, 102, 538, 0,
12231 0, 542, 0, 0, 539, 540, 541, 102, 0, 102,
12232 102, 0, 286, 543, 0, 0, 0, 0, 0, 0,
12233 0, 1238, 0, 0, 0, 286, 286, 286, 542, 0,
12234 0, 0, 0, 125, 830, 0, 0, 242, 0, 0,
12235 543, 0, 0, 0, 0, 102, 0, 0, 830, 0,
12236 0, 0, 0, 0, 0, 0, 0, 0, 828, 80,
12237 0, 828, 0, 0, 0, 0, 80, 80, 125, 0,
12238 125, 829, 0, 0, 829, 0, 827, 0, 828, 828,
12239 828, 80, 0, 828, 828, 125, 0, 0, 828, 828,
12240 0, 829, 829, 829, 0, 0, 829, 829, 0, 0,
12241 0, 829, 829, 0, 0, 293, 0, 0, 0, 0,
12242 0, 828, 80, 0, 80, 80, 0, 0, 0, 0,
12243 0, 0, 0, 0, 829, 102, 80, 0, 0, 102,
12244 102, 0, 0, 102, 0, 80, 0, 125, 0, 76,
12245 0, 0, 125, 23, 24, 25, 26, 0, 125, 0,
12246 0, 0, 125, 0, 0, 0, 80, 0, 0, 32,
12247 33, 34, 0, 0, 125, 293, 0, 596, 0, 41,
12248 42, 43, 44, 45, 76, 0, 76, 0, 0, 0,
12249 0, 102, 102, 0, 0, 0, 0, 0, 102, 102,
12250 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
12251 0, 0, 0, 125, 0, 0, 0, 125, 0, 125,
12252 0, 286, 0, 0, 102, 0, 102, 102, 0, 0,
12253 58, 59, 60, 61, 62, 63, 64, 65, 66, 830,
12254 830, 0, 0, 830, 0, 0, 0, 0, 0, 0,
12255 0, 0, 77, 76, 77, 0, 0, 0, 76, 0,
12256 830, 0, 596, 596, 76, 0, 0, 0, 76, 0,
12257 0, 285, 0, 828, 0, 0, 0, 0, 828, 828,
12258 76, 286, 0, 76, 0, 0, 829, 0, 0, 0,
12259 0, 829, 829, 102, 102, 0, 0, 0, 0, 0,
12260 0, 102, 0, 77, 77, 0, 102, 287, 0, 0,
12261 0, 0, 0, 0, 125, 0, 0, 0, 0, 76,
12262 0, 0, 0, 76, 0, 76, 0, 0, 0, 0,
12263 0, 0, 293, 0, 0, 287, 0, 0, 0, 0,
12264 102, 0, 0, 0, 0, 0, 0, 0, 287, 287,
12265 287, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12266 0, 828, 0, 102, 0, 0, 0, 0, 76, 76,
12267 102, 102, 0, 0, 829, 0, 0, 0, 0, 0,
12268 0, 87, 0, 87, 0, 102, -775, 0, 0, 0,
12269 0, 0, 0, 0, -775, -775, -775, 0, 0, -775,
12270 -775, -775, 0, -775, 0, 0, 0, 0, 0, 0,
12271 0, -775, -775, -775, 830, 293, 0, 830, 0, 0,
12272 76, 0, 0, -775, -775, 0, -775, -775, -775, -775,
12273 -775, 0, 87, 87, 830, 830, 830, 0, 286, 830,
12274 830, 0, 0, 0, 830, 830, 0, 0, 0, 0,
12275 0, 0, 0, 0, -775, 0, 0, 0, 0, 0,
12276 0, 0, 77, 0, 0, 0, 0, 830, 0, 0,
12277 0, 0, 125, 0, 125, 0, 0, 394, 0, 0,
12278 0, 0, -775, -775, 0, 0, 0, 0, 102, -775,
12279 0, 0, 0, 0, 125, 102, 102, 77, 0, 77,
12280 0, 0, 0, 0, 0, 0, -775, 0, 0, 0,
12281 102, 0, -775, -775, 77, 0, 0, 0, 0, 0,
12282 0, 286, 238, 0, -775, 0, -775, 0, 0, 0,
12283 0, 0, 0, 0, 287, 0, 0, 0, 0, 0,
12284 0, 102, 293, 102, 102, 0, 0, 0, 0, 0,
12285 0, 0, 0, 903, 0, 102, 0, 0, 0, 0,
12286 0, 0, 0, 0, 102, 0, 77, 0, 0, 0,
12287 0, 77, 0, 0, 0, 0, 0, 77, 76, 0,
12288 76, 77, 0, 0, 0, 102, 0, 0, 0, 0,
12289 0, 87, 0, 77, 287, 0, 77, 0, 0, 0,
12290 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12291 125, 0, 0, 293, 125, 596, 0, 0, 0, 830,
12292 0, 0, 0, 0, 830, 830, 87, 0, 87, 0,
12293 0, 0, 77, 0, 0, 0, 77, 0, 77, 0,
12294 0, 0, 0, 87, 0, 0, 0, 0, 286, 0,
12295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12296 0, 0, 0, 0, 0, 0, 596, 596, 0, 0,
12297 0, 0, 0, 596, 596, 0, 0, 0, 0, 0,
12298 0, 77, 77, 0, 0, 0, 0, 0, 0, 0,
12299 0, 0, 0, 0, 124, 87, 124, 0, 0, 125,
12300 87, 0, 125, 0, 0, 0, 87, 830, 0, 0,
12301 87, 0, 0, 0, 0, 0, 76, 0, 0, 286,
12302 76, 76, 87, 0, 0, 590, 0, 0, 0, 0,
12303 0, 0, 0, 77, 347, 0, 0, 0, 0, 0,
12304 0, 0, 0, 0, 0, 124, 124, 0, 0, 0,
12305 0, 287, 0, 0, 0, 0, 0, 0, 0, 0,
12306 0, 87, 0, 0, 0, 87, 0, 87, 125, 125,
12307 0, 0, 76, 76, 0, 0, 125, 0, 0, 76,
12308 76, 125, 0, 0, 0, 0, 348, 349, 350, 351,
12309 352, 353, 354, 355, 356, 357, 358, 359, 360, 0,
12310 0, 0, 0, 361, 362, 76, 0, 0, 76, 363,
12311 590, 590, 0, 348, 349, 350, 351, 352, 353, 354,
12312 355, 356, 357, 358, 359, 360, 0, 0, 0, 0,
12313 361, 362, 0, 0, 287, 0, 0, 0, 596, 364,
12314 365, 366, 367, 0, 368, 125, 0, 0, 0, 0,
12315 369, 370, 371, 372, 373, 0, 0, 0, 374, 0,
12316 125, 0, 87, 0, 0, 0, 364, 365, 366, 367,
12317 0, 368, 0, 0, 76, 76, 242, 369, 370, 371,
12318 372, 373, 76, 0, 0, 374, 0, 76, 0, 0,
12319 0, 77, 0, 77, 0, 1153, 0, 0, 0, 0,
12320 0, 0, 0, 0, 124, 0, 0, 0, 409, 0,
12321 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
12322 0, 0, 0, 0, 0, 0, 0, 0, 348, 349,
12323 350, 351, 352, 353, 354, 355, 0, 357, 358, 124,
12324 0, 124, 0, 0, 76, 361, 362, 0, 0, 0,
12325 0, 76, 0, 0, 0, 0, 124, 0, 0, 0,
12326 0, 287, 0, 125, 0, 0, 76, 0, 0, 0,
12327 125, 125, 0, 0, 0, 0, 0, 0, 0, 0,
12328 0, 364, 365, 366, 367, 125, 368, 0, 0, 0,
12329 409, 0, 369, 370, 371, 372, 373, 0, 0, 0,
12330 0, 286, 0, 0, 0, 0, 0, 0, 124, 0,
12331 0, 785, 0, 124, 286, 0, 125, 0, 0, 124,
12332 87, 0, 87, 124, 0, 0, 0, 0, 0, 77,
12333 125, 0, 287, 77, 77, 124, 0, 0, 124, 0,
12334 0, 0, 87, 0, 348, 349, 350, 351, 352, 353,
12335 354, 355, 356, 357, 358, 359, 360, 0, 0, 0,
12336 125, 361, 362, 0, 0, 0, 0, 0, 0, 76,
12337 0, 0, 0, 0, 124, 0, 76, 76, 124, 0,
12338 124, 0, 0, 0, 0, 77, 77, 0, 0, 0,
12339 0, 76, 77, 77, 0, 0, 286, 364, 365, 366,
12340 367, 0, 368, 0, 0, 0, 0, 0, 369, 370,
12341 371, 372, 373, 0, 0, 0, 374, 0, 77, 0,
12342 0, 77, 76, 124, 124, 23, 24, 25, 26, 0,
12343 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
12344 0, 32, 33, 34, 789, 0, 0, 0, 790, 0,
12345 0, 41, 42, 43, 44, 45, 0, 0, 87, 0,
12346 0, 0, 87, 590, 0, 0, 76, 0, 0, 0,
12347 0, 0, 0, 0, 0, 124, 0, 0, 0, 0,
12348 0, 0, 792, 793, 0, 0, 0, 77, 77, 0,
12349 794, 0, 0, 795, 0, 77, 796, 797, 0, 798,
12350 77, 0, 58, 59, 60, 61, 62, 63, 64, 65,
12351 66, 0, 0, 0, 590, 590, 0, 0, 0, 0,
12352 0, 590, 590, 0, 0, 0, 0, 800, 0, 0,
12353 0, 0, 242, 0, 0, 0, 0, 0, 0, 0,
12354 0, 0, 0, 285, 0, 0, 0, 87, 0, 0,
12355 87, 0, 0, 0, 0, 0, 0, 77, 0, 0,
12356 0, 222, 222, 0, 77, 0, 0, 0, 0, 0,
12357 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,
12358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12359 0, 0, 0, 255, 258, 259, 260, 0, 0, 0,
12360 222, 222, 0, 0, 0, 0, 0, 0, 0, 0,
12361 0, 0, 308, 310, 287, 0, 87, 87, 0, 0,
12362 0, 0, 0, 0, 87, 0, 0, 287, 0, 87,
12363 0, 0, 0, 124, 0, 124, 0, 0, 0, 0,
12364 0, 0, 0, 0, 0, 0, 0, 222, 23, 24,
12365 25, 26, 0, 0, 0, 124, 0, 0, 0, 0,
12366 0, 0, 0, 0, 32, 33, 34, 789, 0, 0,
12367 0, 790, 0, 791, 41, 42, 43, 44, 45, 0,
12368 0, 0, 77, 0, 0, 0, 590, 0, 0, 77,
12369 77, 0, 536, 87, 0, 0, 0, 0, 0, 0,
12370 0, 0, 0, 0, 77, 792, 793, 0, 87, 287,
12371 0, 0, 0, 794, 0, 0, 795, 0, 0, 796,
12372 797, 0, 798, 540, 0, 58, 59, 799, 61, 62,
12373 63, 64, 65, 66, 0, 77, 0, 0, 0, 0,
12374 0, 0, 0, 1149, 0, 0, 0, 0, 0, 77,
12375 800, 785, 0, 0, 0, 222, 0, 0, 222, 222,
12376 222, 0, 310, 0, 0, 0, 285, 0, 0, 0,
12377 0, 124, 0, 0, 0, 124, 124, 0, 0, 77,
12378 222, 0, 222, 222, 348, 349, 350, 351, 352, 353,
12379 354, 355, 356, 357, 358, 359, 360, 0, 0, 0,
12380 0, 361, 362, 0, 0, 0, 0, 0, 0, 0,
12381 0, 87, 0, 0, 0, 0, 0, 0, 87, 87,
12382 0, 0, 0, 0, 0, 0, 0, 124, 124, 0,
12383 0, 0, -268, 87, 124, 124, 0, 364, 365, 366,
12384 367, 0, 368, 0, 0, 0, 0, 0, 369, 370,
12385 371, 372, 373, 0, 0, 0, 374, 0, 0, 0,
12386 124, 0, 0, 124, 87, 0, 0, 0, 0, 0,
12387 0, 0, 0, 0, 0, 0, 0, 0, 87, 0,
12388 0, 0, 0, 0, 0, 0, 222, 0, 0, 0,
12389 0, 591, 0, 598, 599, 600, 601, 602, 0, 0,
12390 603, 604, 605, 606, 607, 608, 609, 610, 87, 612,
12391 613, 0, 0, 614, 615, 616, 617, 618, 619, 620,
12392 621, 622, 0, 0, 0, 222, 0, 0, 0, 124,
12393 124, 0, 0, 0, 0, 0, 0, 124, 0, 0,
12394 0, 0, 124, 0, 0, 0, 0, 0, 0, 0,
12395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12397 0, 0, 0, 0, 0, 0, 672, 672, 0, 0,
12398 0, 0, 0, 0, 0, 0, 0, 672, 222, 222,
12399 0, 0, 0, 222, 0, 672, 672, 222, 0, 124,
12400 0, 0, 0, 260, 0, 0, 124, 0, 0, 0,
12401 0, 23, 24, 25, 26, 0, 0, 0, 700, 0,
12402 0, 124, 0, 672, 0, 0, 0, 32, 33, 34,
12403 789, 0, 0, 222, 790, 0, 222, 41, 42, 43,
12404 44, 45, 0, 0, 0, 0, 0, 0, 222, 0,
12405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12406 0, 0, 0, 0, 0, 732, 0, 0, 792, 793,
12407 0, 0, 0, 0, 0, 0, 794, 0, 0, 795,
12408 0, 0, 796, 797, 0, 798, 0, 0, 58, 59,
12409 60, 61, 62, 63, 64, 65, 66, 0, 0, 222,
12410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12411 0, 760, 0, 800, 930, 769, 0, 0, 0, 0,
12412 0, 0, 222, 0, 124, 0, 0, 0, 0, 285,
12413 0, 124, 124, 0, 0, 0, 0, 0, 0, 0,
12414 0, 0, 0, 0, 0, 0, 124, 348, 349, 350,
12415 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
12416 0, 0, 0, 0, 361, 362, 0, 0, 0, 0,
12417 0, 0, 0, 0, 0, 0, 0, 124, 0, 0,
12418 348, -776, -776, -776, -776, 353, 354, 0, 0, -776,
12419 -776, 124, 0, 0, 0, 0, 222, 361, 362, 0,
12420 364, 365, 366, 367, 0, 368, 222, 0, 0, 0,
12421 0, 369, 370, 371, 372, 373, 0, 0, 0, 374,
12422 0, 124, 222, 760, 769, 0, 222, 0, 0, 0,
12423 0, 0, 0, 364, 365, 366, 367, 0, 368, 222,
12424 0, 222, 0, 0, 369, 370, 371, 372, 373, 0,
12425 0, -775, 4, 0, 5, 6, 7, 8, 9, 0,
12426 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
12427 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
12428 0, 20, 21, 22, 23, 24, 25, 26, 0, 222,
12429 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
12430 32, 33, 34, 35, 36, 37, 38, 39, 40, 222,
12431 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
12432 0, 0, 0, 222, 0, 0, 48, 49, 0, 672,
12433 957, 0, 222, 0, 0, 0, 0, 0, 0, 0,
12434 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
12435 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
12436 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
12437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12438 672, 672, 0, 0, 0, 0, 222, 672, 672, -775,
12439 0, -775, 0, 0, 0, 0, 0, 67, 68, 0,
12440 0, 0, 69, 0, 0, 0, 222, 0, 5, 6,
12441 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
12442 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
12443 672, 672, 0, 672, 672, 20, 252, 253, 23, 24,
12444 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
12445 0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
12446 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
12447 47, 0, 0, 0, 1062, 1063, 0, 0, 0, 0,
12448 0, 0, 0, 0, 0, 0, 1069, 1070, 0, 0,
12449 0, 0, 0, 0, 0, 0, 0, 222, 0, 0,
12450 0, 0, 0, 283, 0, 0, 212, 54, 0, 55,
12451 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
12452 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
12453 284, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12454 0, 0, 0, 0, 0, 1120, 0, 0, 0, 0,
12455 0, 0, 672, 0, 0, 0, 285, 0, 0, 0,
12456 0, 0, 0, 0, 0, 0, 0, 0, 222, 0,
12457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12458 0, 0, 0, 672, 0, 222, 0, 0, 0, 0,
12459 262, 0, 5, 6, 7, 8, 9, -775, -775, -775,
12460 10, 11, 0, 0, -775, 12, 0, 13, 14, 15,
12461 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
12462 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
12463 0, 0, 0, 0, 28, 29, 263, 31, 32, 33,
12464 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
12465 43, 44, 45, 46, 47, 0, 0, 348, 349, 350,
12466 351, 352, 353, 354, 48, 49, 357, 358, 0, 0,
12467 0, 0, 0, 0, 361, 362, 222, 0, 0, 50,
12468 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
12469 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
12470 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
12471 364, 365, 366, 367, 0, 368, 0, 0, 0, 0,
12472 0, 369, 370, 371, 372, 373, 0, -775, 0, -775,
12473 0, 0, 0, 0, 222, 67, 68, 0, 0, 0,
12474 69, 262, 0, 5, 6, 7, 8, 9, 0, 0,
12475 -775, 10, 11, 222, -775, -775, 12, 0, 13, 14,
12476 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
12477 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
12478 0, 0, 0, 0, 0, 28, 29, 263, 31, 32,
12479 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
12480 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
12481 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
12482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12483 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
12484 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
12485 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
12486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12487 0, 0, 0, 0, 0, 0, 0, 0, -775, 262,
12488 -775, 5, 6, 7, 8, 9, 67, 68, -775, 10,
12489 11, 69, 0, -775, 12, -775, 13, 14, 15, 16,
12490 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
12491 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
12492 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
12493 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
12494 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
12495 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
12496 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
12497 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
12498 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
12499 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
12500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12501 0, 0, 0, 0, 0, 0, -775, 262, -775, 5,
12502 6, 7, 8, 9, 67, 68, -775, 10, 11, 69,
12503 0, -775, 12, 0, 13, 14, 15, 16, 17, 18,
12504 19, -775, 0, 0, 0, 0, 20, 21, 22, 23,
12505 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
12506 0, 28, 29, 263, 31, 32, 33, 34, 35, 36,
12507 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
12508 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
12509 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
12510 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
12511 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
12512 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
12513 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
12514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12515 0, 0, 0, 0, -775, 262, -775, 5, 6, 7,
12516 8, 9, 67, 68, -775, 10, 11, 69, 0, -775,
12517 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
12518 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
12519 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
12520 29, 263, 31, 32, 33, 34, 35, 36, 37, 38,
12521 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
12522 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
12523 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12524 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
12525 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
12526 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
12527 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
12528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12529 0, 0, -775, 0, -775, 0, 0, 0, 0, 0,
12530 67, 68, 0, 0, 262, 69, 5, 6, 7, 8,
12531 9, 0, -775, -775, 10, 11, 0, 0, 0, 12,
12532 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
12533 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
12534 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
12535 263, 31, 32, 33, 34, 35, 36, 37, 38, 39,
12536 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
12537 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
12538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12539 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
12540 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
12541 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
12542 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
12543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12544 0, -775, 262, -775, 5, 6, 7, 8, 9, 67,
12545 68, 0, 10, 11, 69, 0, 0, 12, 0, 13,
12546 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
12547 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
12548 27, 0, 0, 0, 0, 0, 28, 29, 263, 31,
12549 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
12550 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
12551 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
12552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12553 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
12554 0, 0, 264, 54, -775, 55, 56, 0, 57, 0,
12555 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
12556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12557 0, 0, 0, 0, 0, 0, 0, 0, 0, -775,
12558 262, -775, 5, 6, 7, 8, 9, 67, 68, 0,
12559 10, 11, 69, 0, 0, 12, 0, 13, 14, 15,
12560 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
12561 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
12562 0, 0, 0, 0, 28, 29, 263, 31, 32, 33,
12563 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
12564 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
12565 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
12566 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
12567 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
12568 53, 54, -775, 55, 56, 0, 57, 0, 0, 58,
12569 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
12570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12571 0, 0, 0, 0, 0, 0, 0, -775, 4, -775,
12572 5, 6, 7, 8, 9, 67, 68, 0, 10, 11,
12573 69, 0, 0, 12, 0, 13, 14, 15, 16, 17,
12574 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
12575 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
12576 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
12577 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
12578 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
12579 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
12580 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
12581 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
12582 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
12583 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
12584 0, 0, 0, 0, -775, 0, 0, 0, 0, 0,
12585 0, 0, 0, 0, 0, -775, 262, -775, 5, 6,
12586 7, 8, 9, 67, 68, 0, 10, 11, 69, 0,
12587 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
12588 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
12589 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
12590 28, 29, 263, 31, 32, 33, 34, 35, 36, 37,
12591 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
12592 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12593 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
12594 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
12595 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
12596 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
12597 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
12598 0, 0, -775, 0, 0, 0, 0, 0, 0, 0,
12599 0, 0, 0, -775, 262, -775, 5, 6, 7, 8,
12600 9, 67, 68, -775, 10, 11, 69, 0, 0, 12,
12601 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
12602 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
12603 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
12604 263, 31, 32, 33, 34, 35, 36, 37, 38, 39,
12605 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
12606 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
12607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12608 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
12609 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
12610 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
12611 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
12612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12613 0, -775, 262, -775, 5, 6, 7, 8, 9, 67,
12614 68, 0, 10, 11, 69, 0, 0, 12, 0, 13,
12615 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
12616 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
12617 27, 0, 0, 0, 0, 0, 28, 29, 263, 31,
12618 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
12619 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
12620 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
12621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12622 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
12623 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
12624 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
12625 0, -775, 0, 0, 0, 0, 0, 0, 0, 0,
12626 0, 0, 0, 0, 0, 0, -752, 0, 0, -775,
12627 0, -775, 0, 0, -752, -752, -752, 67, 68, -752,
12628 -752, -752, 69, -752, 0, 0, 0, 0, 0, 0,
12629 0, -752, -752, -752, -752, -752, 0, 0, 0, 0,
12630 0, 0, 0, -752, -752, 0, -752, -752, -752, -752,
12631 -752, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12633 0, 0, 0, 0, -752, 0, 0, 0, 0, 0,
12634 0, 0, 0, -752, -752, -752, -752, -752, -752, -752,
12635 -752, -752, -752, -752, -752, -752, 0, 0, 0, 0,
12636 -752, -752, -752, -752, 0, 885, -752, 0, 0, -752,
12637 0, 0, -752, 0, 0, 0, 0, 0, 0, 0,
12638 0, 0, 0, 0, 0, 0, -752, 0, 0, -752,
12639 0, -752, -752, -752, -752, -123, -752, -752, -752, -752,
12640 0, -752, 0, -752, -752, 0, -752, -752, -752, -752,
12641 -752, -752, -644, 0, 0, -752, -752, 0, 0, 0,
12642 -644, -644, -644, 0, 0, -644, -644, -644, 0, -644,
12643 0, 0, 0, 0, 0, 0, 0, -644, 0, -644,
12644 -644, -644, 0, 0, 0, 0, 0, 0, 0, -644,
12645 -644, 0, -644, -644, -644, -644, -644, 0, 0, 0,
12646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12648 -644, 0, 0, 0, 0, 0, 0, 0, 0, -644,
12649 -644, -644, -644, -644, -644, -644, -644, -644, -644, -644,
12650 -644, -644, 0, 0, 0, 0, -644, -644, -644, -644,
12651 0, -644, -644, 0, 0, -644, 0, 0, -644, 0,
12652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12653 0, 0, -644, 0, 0, -644, 0, -644, 0, -644,
12654 -644, -644, -644, -644, -644, -644, 0, -644, 0, -644,
12655 -644, 0, -644, -644, -644, -644, -644, -644, -647, 0,
12656 0, -644, -644, 0, 0, 0, -647, -647, -647, 0,
12657 0, -647, -647, -647, 0, -647, 0, 0, 0, 0,
12658 0, 0, 0, -647, 0, -647, -647, -647, 0, 0,
12659 0, 0, 0, 0, 0, -647, -647, 0, -647, -647,
12660 -647, -647, -647, 0, 0, 0, 0, 0, 0, 0,
12661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12662 0, 0, 0, 0, 0, 0, -647, 0, 0, 0,
12663 0, 0, 0, 0, 0, -647, -647, -647, -647, -647,
12664 -647, -647, -647, -647, -647, -647, -647, -647, 0, 0,
12665 0, 0, -647, -647, -647, -647, 0, -647, -647, 0,
12666 0, -647, 0, 0, -647, 0, 0, 0, 0, 0,
12667 0, 0, 0, 0, 0, 0, 0, 0, -647, 0,
12668 0, -647, 0, -647, 0, -647, -647, -647, -647, -647,
12669 -647, -647, 0, -647, 0, -647, -647, 0, -647, -647,
12670 -647, -647, -647, -647, -753, 0, 0, -647, -647, 0,
12671 0, 0, -753, -753, -753, 0, 0, -753, -753, -753,
12672 0, -753, 0, 0, 0, 0, 0, 0, 0, -753,
12673 -753, -753, -753, -753, 0, 0, 0, 0, 0, 0,
12674 0, -753, -753, 0, -753, -753, -753, -753, -753, 0,
12675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12677 0, 0, -753, 0, 0, 0, 0, 0, 0, 0,
12678 0, -753, -753, -753, -753, -753, -753, -753, -753, -753,
12679 -753, -753, -753, -753, 0, 0, 0, 0, -753, -753,
12680 -753, -753, 0, 0, -753, 0, 0, -753, 0, 0,
12681 -753, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12682 0, 0, 0, 0, -753, 0, 0, -753, 0, -753,
12683 -753, -753, -753, 0, -753, -753, -753, -753, 0, -753,
12684 0, -753, -753, 0, -753, -753, -753, -753, -753, -753,
12685 -754, 0, 0, -753, -753, 0, 0, 0, -754, -754,
12686 -754, 0, 0, -754, -754, -754, 0, -754, 0, 0,
12687 0, 0, 0, 0, 0, -754, -754, -754, -754, -754,
12688 0, 0, 0, 0, 0, 0, 0, -754, -754, 0,
12689 -754, -754, -754, -754, -754, 0, 0, 0, 0, 0,
12690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12691 0, 0, 0, 0, 0, 0, 0, 0, -754, 0,
12692 0, 0, 0, 0, 0, 0, 0, -754, -754, -754,
12693 -754, -754, -754, -754, -754, -754, -754, -754, -754, -754,
12694 0, 0, 0, 0, -754, -754, -754, -754, 0, 0,
12695 -754, 0, 0, -754, 0, 0, -754, 0, 0, 0,
12696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12697 -754, 0, 0, -754, 0, -754, -754, -754, -754, 0,
12698 -754, -754, -754, -754, 0, -754, 0, -754, -754, 0,
12699 -754, -754, -754, -754, -754, -754, -323, 0, 0, -754,
12700 -754, 0, 0, 0, -323, -323, -323, 0, 0, -323,
12701 -323, -323, 0, -323, 0, 0, 0, 0, 0, 0,
12702 0, -323, 0, -323, -323, -323, 0, 0, 0, 0,
12703 0, 0, 0, -323, -323, 0, -323, -323, -323, -323,
12704 -323, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12706 0, 0, 0, 0, -323, 0, 0, 0, 0, 0,
12707 0, 0, 0, -323, -323, -323, -323, -323, -323, -323,
12708 -323, -323, -323, -323, -323, -323, 0, 0, 0, 0,
12709 -323, -323, -323, -323, 0, 886, -323, 0, 0, -323,
12710 0, 0, -323, 0, 0, 0, 0, 0, 0, 0,
12711 0, 0, 0, 0, 0, 0, -323, 0, 0, -323,
12712 0, -323, 0, -323, -323, -125, -323, -323, -323, -323,
12713 0, -323, 0, -323, -323, 0, -323, -323, -323, -323,
12714 -323, -323, -315, 0, 0, -323, -323, 0, 0, 0,
12715 -315, -315, -315, 0, 0, -315, -315, -315, 0, -315,
12716 0, 0, 0, 0, 0, 0, 0, -315, 0, -315,
12717 -315, -315, 0, 0, 0, 0, 0, 0, 0, -315,
12718 -315, 0, -315, -315, -315, -315, -315, 0, 0, 0,
12719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12721 -315, 0, 0, 0, 0, 0, 0, 0, 0, -315,
12722 -315, -315, -315, -315, -315, -315, -315, -315, -315, -315,
12723 -315, -315, 0, 0, 0, 0, -315, -315, -315, -315,
12724 0, 0, -315, 0, 0, -315, 0, 0, -315, 0,
12725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12726 0, 0, -315, 0, 0, -315, 0, -315, 0, -315,
12727 -315, 0, -315, -315, -315, -315, 0, -315, 0, -315,
12728 -315, 0, -315, -315, -315, -315, -315, -315, -462, 0,
12729 0, -315, -315, 0, 0, 0, -462, -462, -462, 0,
12730 0, -462, -462, -462, 0, -462, 0, 0, 0, 0,
12731 0, 0, 0, -462, -462, -462, -462, 0, 0, 0,
12732 0, 0, 0, 0, 0, -462, -462, 0, -462, -462,
12733 -462, -462, -462, 0, 0, 0, 0, 0, 0, 0,
12734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12735 0, 0, 0, 0, 0, 0, -462, 0, 0, 0,
12736 0, 0, 0, 0, 0, -462, -462, -462, -462, -462,
12737 -462, -462, -462, -462, -462, -462, -462, -462, 0, 0,
12738 0, 0, -462, -462, -462, -462, 0, 0, -462, 0,
12739 0, -462, 0, 0, -462, 0, 0, 0, 0, 0,
12740 0, 0, 0, 0, 0, 0, 0, 0, -462, 0,
12741 0, 0, 0, -462, -462, -462, -462, 0, -462, -462,
12742 -462, -462, 0, -462, 238, -462, -462, 0, -462, -462,
12743 -462, -462, -462, -462, -775, 0, 0, -462, 0, 0,
12744 0, 0, -775, -775, -775, 0, 0, -775, -775, -775,
12745 0, -775, 0, 0, 0, 0, 0, 0, 0, -775,
12746 -775, -775, -775, 0, 0, 0, 0, 0, 0, 0,
12747 0, -775, -775, 0, -775, -775, -775, -775, -775, 0,
12748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12750 0, 0, -775, 0, 0, 0, 0, 0, 0, 0,
12751 0, -775, -775, -775, -775, -775, -775, -775, -775, -775,
12752 -775, -775, -775, -775, 0, 0, 0, 0, -775, -775,
12753 -775, -775, 0, 0, -775, 0, 0, -775, 0, 0,
12754 -775, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12755 0, 0, 0, 0, -775, 0, 0, 0, 0, -775,
12756 -775, -775, -775, 0, -775, -775, -775, -775, 0, -775,
12757 238, -775, -775, 0, -775, -775, -775, -775, -775, -775,
12758 -330, 0, 0, -775, 0, 0, 0, 0, -330, -330,
12759 -330, 0, 0, -330, -330, -330, 0, -330, 0, 0,
12760 0, 0, 0, 0, 0, -330, 0, -330, -330, 0,
12761 0, 0, 0, 0, 0, 0, 0, -330, -330, 0,
12762 -330, -330, -330, -330, -330, 0, 0, 0, 0, 0,
12763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12764 0, 0, 0, 0, 0, 0, 0, 0, -330, 0,
12765 0, 0, 0, 0, 0, 0, 0, -330, -330, -330,
12766 -330, -330, -330, -330, -330, -330, -330, -330, -330, -330,
12767 0, 0, 0, 0, -330, -330, -330, -330, 0, 0,
12768 -330, 0, 0, -330, 0, 0, -330, 0, 0, 0,
12769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12770 -330, 0, 0, 0, 0, -330, 0, -330, -330, 0,
12771 -330, -330, -330, -330, 0, -330, 235, -330, -330, 0,
12772 -330, -330, -330, -330, -330, -330, -752, 0, 0, -330,
12773 0, 0, 0, 0, -752, -752, -752, 0, 0, 0,
12774 -752, -752, 0, -752, 0, 0, 0, 0, 0, 0,
12775 0, -752, -752, 0, 0, 0, 0, 0, 0, 0,
12776 0, 0, 0, -752, -752, 0, -752, -752, -752, -752,
12777 -752, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12779 0, 0, 0, 0, -752, 0, 0, 0, 0, 0,
12780 0, 0, 0, -752, -752, -752, -752, -752, -752, -752,
12781 -752, -752, -752, -752, -752, -752, 0, 0, 0, 0,
12782 -752, -752, -752, -752, 0, 835, -752, 0, 0, -752,
12783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12784 0, 0, 0, 0, 0, 0, -752, 0, 0, 0,
12785 0, -114, -752, -752, -752, -123, -752, -752, -752, -752,
12786 0, -752, 0, 0, -752, 0, -752, -752, -752, -752,
12787 -752, -752, -752, 0, 0, -752, 0, 0, 0, 0,
12788 -752, -752, -752, 0, 0, 0, -752, -752, 0, -752,
12789 0, 0, 0, 0, 0, 0, 0, -752, -752, 0,
12790 0, 0, 0, 0, 0, 0, 0, 0, 0, -752,
12791 -752, 0, -752, -752, -752, -752, -752, 0, 0, 0,
12792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12794 -752, 0, 0, 0, 0, 0, 0, 0, 0, -752,
12795 -752, -752, -752, -752, -752, -752, -752, -752, -752, -752,
12796 -752, -752, 0, 0, 0, 0, -752, -752, -752, -752,
12797 0, 835, -752, 0, 0, -752, 0, 0, 0, 0,
12798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12799 0, 0, -752, 0, 0, 0, 0, -752, -752, -752,
12800 -752, -123, -752, -752, -752, -752, 0, -752, 0, 0,
12801 -752, 0, -752, -752, -752, -752, -752, -752, -323, 0,
12802 0, -752, 0, 0, 0, 0, -323, -323, -323, 0,
12803 0, 0, -323, -323, 0, -323, 0, 0, 0, 0,
12804 0, 0, 0, -323, 0, 0, 0, 0, 0, 0,
12805 0, 0, 0, 0, 0, -323, -323, 0, -323, -323,
12806 -323, -323, -323, 0, 0, 0, 0, 0, 0, 0,
12807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12808 0, 0, 0, 0, 0, 0, -323, 0, 0, 0,
12809 0, 0, 0, 0, 0, -323, -323, -323, -323, -323,
12810 -323, -323, -323, -323, -323, -323, -323, -323, 0, 0,
12811 0, 0, -323, -323, -323, -323, 0, 836, -323, 0,
12812 0, -323, 0, 0, 0, 0, 0, 0, 0, 0,
12813 0, 0, 0, 0, 0, 0, 0, 0, -323, 0,
12814 0, 0, 0, -116, 0, -323, -323, -125, -323, -323,
12815 -323, -323, 0, -323, 0, 0, -323, 0, -323, -323,
12816 -323, -323, -323, -323, -323, 0, 0, -323, 0, 0,
12817 0, 0, -323, -323, -323, 0, 0, 0, -323, -323,
12818 0, -323, 0, 0, 0, 0, 0, 0, 0, -323,
12819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12820 0, -323, -323, 0, -323, -323, -323, -323, -323, 0,
12821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12823 0, 0, -323, 0, 0, 0, 0, 0, 0, 0,
12824 0, -323, -323, -323, -323, -323, -323, -323, -323, -323,
12825 -323, -323, -323, -323, 0, 0, 0, 0, -323, -323,
12826 -323, -323, 0, 836, -323, 0, 0, -323, 0, 0,
12827 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12828 0, 0, 0, 0, -323, 0, 0, 0, 0, -323,
12829 0, -323, -323, -125, -323, -323, -323, -323, 0, -323,
12830 0, 0, -323, 0, -323, -323, -323, -323, -323, -323,
12831 0, 0, 0, -323, 5, 6, 7, 8, 9, 0,
12832 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
12833 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
12834 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
12835 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
12836 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
12837 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
12838 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
12839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12840 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
12841 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
12842 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
12843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12844 0, 0, 0, 0, 0, 0, 0, 0, 0, 521,
12845 0, 5, 6, 7, 8, 9, 0, 67, 68, 10,
12846 11, 0, 69, 0, 12, 0, 13, 14, 15, 16,
12847 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
12848 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
12849 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
12850 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
12851 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
12852 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
12853 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
12854 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
12855 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
12856 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
12857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12858 0, 0, 0, 0, 0, 0, 521, 0, 5, 6,
12859 7, 8, 9, 0, 67, 68, 10, 11, 0, 69,
12860 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
12861 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
12862 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
12863 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
12864 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
12865 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12866 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
12867 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
12868 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
12869 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
12870 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
12871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12872 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
12873 0, 67, 68, 10, 11, 0, 69, 0, 12, 0,
12874 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
12875 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
12876 0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
12877 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
12878 210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
12879 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
12880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12881 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
12882 211, 0, 0, 212, 54, 0, 55, 56, 0, 213,
12883 214, 215, 58, 59, 216, 61, 62, 63, 64, 65,
12884 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12886 0, 0, 242, 5, 6, 7, 0, 9, 67, 217,
12887 0, 10, 11, 69, 0, 0, 12, 0, 13, 14,
12888 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
12889 20, 21, 22, 23, 24, 25, 26, 0, 0, 209,
12890 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
12891 33, 34, 35, 36, 37, 38, 39, 40, 210, 41,
12892 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
12893 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
12894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12895 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
12896 0, 212, 54, 0, 55, 56, 0, 213, 214, 215,
12897 58, 59, 216, 61, 62, 63, 64, 65, 66, 0,
12898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12900 5, 6, 7, 8, 9, 0, 67, 217, 10, 11,
12901 0, 69, 0, 12, 0, 13, 14, 15, 16, 17,
12902 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
12903 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
12904 0, 0, 28, 29, 0, 31, 32, 33, 34, 35,
12905 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
12906 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
12907 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
12908 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
12909 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
12910 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
12911 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
12912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12913 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
12914 0, 9, 0, 67, 68, 10, 11, 0, 69, 0,
12915 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
12916 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
12917 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
12918 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
12919 39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
12920 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
12921 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12922 0, 0, 0, 0, 50, 458, 0, 0, 0, 0,
12923 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
12924 0, 213, 214, 215, 58, 59, 216, 61, 62, 63,
12925 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
12926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12927 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
12928 67, 217, 10, 11, 0, 69, 0, 12, 0, 13,
12929 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
12930 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
12931 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
12932 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
12933 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
12934 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
12935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12936 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
12937 0, 0, 212, 54, 0, 55, 56, 0, 681, 214,
12938 215, 58, 59, 216, 61, 62, 63, 64, 65, 66,
12939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12941 0, 5, 6, 7, 0, 9, 0, 67, 217, 10,
12942 11, 0, 69, 0, 12, 0, 13, 14, 15, 250,
12943 251, 18, 19, 0, 0, 0, 0, 0, 20, 252,
12944 253, 23, 24, 25, 26, 0, 0, 209, 0, 0,
12945 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
12946 35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
12947 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
12948 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
12949 0, 0, 0, 0, 0, 0, 0, 0, 50, 458,
12950 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
12951 54, 0, 55, 56, 0, 681, 214, 215, 58, 59,
12952 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
12953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12954 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
12955 7, 0, 9, 0, 67, 217, 10, 11, 0, 69,
12956 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
12957 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
12958 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
12959 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
12960 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
12961 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12962 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
12963 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
12964 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
12965 56, 0, 213, 214, 0, 58, 59, 216, 61, 62,
12966 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
12967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12968 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
12969 0, 67, 217, 10, 11, 0, 69, 0, 12, 0,
12970 13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
12971 0, 0, 20, 252, 253, 23, 24, 25, 26, 0,
12972 0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
12973 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
12974 210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
12975 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
12976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12977 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
12978 211, 0, 0, 212, 54, 0, 55, 56, 0, 0,
12979 214, 215, 58, 59, 216, 61, 62, 63, 64, 65,
12980 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12982 0, 0, 5, 6, 7, 0, 9, 0, 67, 217,
12983 10, 11, 0, 69, 0, 12, 0, 13, 14, 15,
12984 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
12985 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
12986 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
12987 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
12988 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
12989 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
12990 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
12991 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
12992 212, 54, 0, 55, 56, 0, 681, 214, 0, 58,
12993 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
12994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12995 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
12996 6, 7, 0, 9, 0, 67, 217, 10, 11, 0,
12997 69, 0, 12, 0, 13, 14, 15, 250, 251, 18,
12998 19, 0, 0, 0, 0, 0, 20, 252, 253, 23,
12999 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
13000 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
13001 37, 38, 39, 40, 210, 41, 42, 43, 44, 45,
13002 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
13003 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
13004 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
13005 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
13006 55, 56, 0, 0, 214, 0, 58, 59, 216, 61,
13007 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
13008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13009 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
13010 9, 0, 67, 217, 10, 11, 0, 69, 0, 12,
13011 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
13012 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
13013 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
13014 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
13015 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
13016 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
13017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13018 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
13019 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
13020 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
13021 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
13022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13023 0, 312, 0, 313, 5, 6, 7, 0, 9, 67,
13024 68, 0, 10, 11, 69, 0, 0, 12, 0, 13,
13025 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
13026 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
13027 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
13028 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
13029 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
13030 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
13031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13032 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
13033 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
13034 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
13035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13037 0, 242, 5, 6, 7, 0, 9, 67, 68, 0,
13038 10, 11, 69, 0, 0, 12, 0, 13, 14, 15,
13039 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
13040 21, 22, 23, 24, 25, 26, 0, 0, 209, 0,
13041 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
13042 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
13043 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
13044 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
13045 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
13046 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
13047 212, 54, 0, 55, 56, 0, 577, 0, 0, 58,
13048 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
13049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13050 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
13051 6, 7, 0, 9, 0, 67, 217, 10, 11, 0,
13052 69, 0, 12, 0, 13, 14, 15, 250, 251, 18,
13053 19, 0, 0, 0, 0, 0, 20, 252, 253, 23,
13054 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
13055 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
13056 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
13057 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
13058 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
13059 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
13060 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
13061 55, 56, 0, 577, 0, 0, 58, 59, 60, 61,
13062 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
13063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13064 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
13065 9, 0, 67, 217, 10, 11, 0, 69, 0, 12,
13066 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
13067 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
13068 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
13069 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
13070 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
13071 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
13072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13073 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
13074 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
13075 952, 0, 0, 58, 59, 60, 61, 62, 63, 64,
13076 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
13077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13078 0, 0, 0, 5, 6, 7, 0, 9, 0, 67,
13079 217, 10, 11, 0, 69, 0, 12, 0, 13, 14,
13080 15, 250, 251, 18, 19, 0, 0, 0, 0, 0,
13081 20, 252, 253, 23, 24, 25, 26, 0, 0, 209,
13082 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
13083 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
13084 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
13085 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
13086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13087 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
13088 0, 212, 54, 0, 55, 56, 0, 1023, 0, 0,
13089 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
13090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13092 5, 6, 7, 0, 9, 0, 67, 217, 10, 11,
13093 0, 69, 0, 12, 0, 13, 14, 15, 250, 251,
13094 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
13095 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
13096 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
13097 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
13098 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
13099 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
13100 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
13101 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
13102 0, 55, 56, 0, 1189, 0, 0, 58, 59, 60,
13103 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
13104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13105 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
13106 0, 9, 0, 67, 217, 10, 11, 0, 69, 0,
13107 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
13108 0, 0, 0, 0, 20, 252, 253, 23, 24, 25,
13109 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
13110 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
13111 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
13112 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
13113 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13114 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
13115 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
13116 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
13117 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
13118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13119 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
13120 67, 217, 10, 11, 0, 69, 0, 12, 0, 13,
13121 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
13122 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
13123 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
13124 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
13125 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
13126 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
13127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13128 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
13129 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
13130 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
13131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13133 0, 5, 6, 7, 0, 9, 0, 67, 217, 10,
13134 11, 0, 69, 0, 12, 0, 13, 14, 15, 16,
13135 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
13136 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
13137 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
13138 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
13139 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
13140 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
13141 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
13142 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
13143 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
13144 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
13145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13146 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
13147 7, 0, 9, 0, 67, 68, 10, 11, 0, 69,
13148 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
13149 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
13150 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
13151 0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
13152 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
13153 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13156 0, 0, 0, 283, 0, 0, 343, 54, 0, 55,
13157 56, 0, 344, 0, 0, 58, 59, 60, 61, 62,
13158 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
13159 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
13160 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
13161 18, 19, 0, 0, 0, 0, 285, 20, 252, 253,
13162 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
13163 0, 0, 0, 282, 0, 0, 32, 33, 34, 35,
13164 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
13165 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
13166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13168 0, 0, 0, 0, 0, 392, 0, 0, 53, 54,
13169 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
13170 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
13171 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
13172 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
13173 250, 251, 18, 19, 0, 0, 0, 0, 285, 20,
13174 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
13175 0, 0, 0, 0, 0, 282, 0, 0, 32, 33,
13176 34, 400, 36, 37, 38, 401, 40, 0, 41, 42,
13177 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
13178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13180 0, 0, 0, 402, 0, 0, 0, 403, 0, 0,
13181 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
13182 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
13183 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
13184 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
13185 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
13186 285, 20, 252, 253, 23, 24, 25, 26, 0, 0,
13187 209, 0, 0, 0, 0, 0, 0, 282, 0, 0,
13188 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
13189 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
13190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13192 0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
13193 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
13194 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
13195 0, 0, 0, 0, 0, 0, 584, 5, 6, 7,
13196 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
13197 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
13198 0, 0, 285, 0, 20, 252, 253, 23, 24, 25,
13199 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
13200 282, 0, 0, 32, 33, 34, 400, 36, 37, 38,
13201 401, 40, 0, 41, 42, 43, 44, 45, 46, 47,
13202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13205 0, 0, 403, 0, 0, 212, 54, 0, 55, 56,
13206 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
13207 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
13208 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
13209 0, 0, 12, 0, 13, 14, 15, 250, 251, 18,
13210 19, 0, 0, 0, 0, 285, 20, 252, 253, 23,
13211 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
13212 0, 0, 282, 0, 0, 32, 33, 34, 35, 36,
13213 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
13214 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
13215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13217 0, 0, 0, 0, 283, 0, 0, 343, 54, 0,
13218 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
13219 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
13220 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
13221 11, 0, 0, 0, 12, 0, 13, 14, 15, 250,
13222 251, 18, 19, 0, 0, 0, 0, 285, 20, 252,
13223 253, 23, 24, 25, 26, 0, 0, 209, 0, 0,
13224 0, 0, 0, 0, 282, 0, 0, 32, 33, 34,
13225 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
13226 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
13227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13229 0, 0, 0, 0, 0, 0, 1148, 0, 0, 212,
13230 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
13231 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
13232 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
13233 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
13234 15, 250, 251, 18, 19, 0, 0, 0, 0, 285,
13235 20, 252, 253, 23, 24, 25, 26, 0, 0, 209,
13236 0, 0, 0, 0, 0, 0, 282, 0, 0, 32,
13237 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
13238 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
13239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13241 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0,
13242 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
13243 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
13244 0, 0, 0, 0, 0, 129, 130, 131, 132, 133,
13245 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
13246 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
13247 0, 285, 153, 154, 155, 411, 412, 413, 414, 160,
13248 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
13249 166, 415, 416, 417, 418, 171, 37, 38, 419, 40,
13250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13251 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
13252 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
13253 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
13254 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
13255 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13257 0, 0, 190, 191, 192, 193, 194, 195, 420, 0,
13258 0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
13259 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
13260 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
13261 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
13262 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
13263 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
13264 171, 295, 296, 172, 297, 0, 0, 0, 0, 0,
13265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13266 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
13267 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
13268 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
13269 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
13270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13271 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
13272 193, 194, 195, 0, 0, 0, 0, 0, 196, 197,
13273 198, 199, 200, 201, 202, 129, 130, 131, 132, 133,
13274 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
13275 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
13276 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
13277 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
13278 166, 167, 168, 169, 170, 171, 244, 0, 172, 0,
13279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13280 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
13281 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
13282 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
13283 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
13284 189, 0, 0, 59, 0, 0, 0, 0, 0, 0,
13285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13286 0, 0, 190, 191, 192, 193, 194, 195, 0, 0,
13287 0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
13288 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
13289 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
13290 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
13291 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
13292 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
13293 171, 0, 0, 172, 0, 0, 0, 0, 0, 0,
13294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13295 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
13296 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
13297 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
13298 0, 0, 0, 0, 188, 189, 0, 0, 59, 0,
13299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13300 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
13301 193, 194, 195, 0, 0, 0, 0, 0, 196, 197,
13302 198, 199, 200, 201, 202, 129, 130, 131, 132, 133,
13303 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
13304 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
13305 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
13306 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
13307 166, 167, 168, 169, 170, 171, 0, 0, 172, 0,
13308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13309 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
13310 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
13311 0, 0, 0, 0, 184, 185, 186, 187, 23, 24,
13312 25, 26, 0, 0, 0, 0, 0, 0, 0, 188,
13313 189, 0, 0, 0, 32, 33, 34, 789, 0, 0,
13314 0, 790, 0, 0, 41, 42, 43, 44, 45, 0,
13315 0, 0, 190, 191, 192, 193, 194, 195, 0, 0,
13316 0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
13317 0, 942, 0, 0, 0, 792, 793, 0, 0, 0,
13318 0, 0, 0, 794, 0, 0, 795, 0, 0, 796,
13319 797, 0, 0, 0, 0, 58, 59, 60, 61, 62,
13320 63, 64, 65, 66, 348, 349, 350, 351, 352, 353,
13321 354, 355, 356, 357, 358, 359, 360, 0, 0, 0,
13322 800, 361, 362, 0, 0, 0, 0, 0, 0, 0,
13323 0, 0, 0, 0, 0, 0, 285, 0, 0, 0,
13324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13325 0, 0, 0, 0, 0, 0, 0, 364, 365, 366,
13326 367, 0, 368, 623, 624, 0, 0, 625, 369, 370,
13327 371, 372, 373, 0, 0, 0, 374, 0, 0, 0,
13328 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
13329 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
13330 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
13331 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
13332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13333 0, 0, 0, 0, 0, 0, 633, 634, 0, 0,
13334 635, 190, 191, 192, 193, 194, 195, 238, 0, 0,
13335 0, 0, 196, 197, 198, 199, 200, 201, 202, 173,
13336 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
13337 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
13338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13339 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
13340 0, 0, 0, 0, 0, 0, 0, 0, 0, 685,
13341 624, 0, 0, 686, 190, 191, 192, 193, 194, 195,
13342 238, 0, 0, 0, 0, 196, 197, 198, 199, 200,
13343 201, 202, 173, 174, 175, 176, 177, 178, 179, 180,
13344 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
13345 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
13346 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
13347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13348 0, 0, 688, 634, 0, 0, 689, 190, 191, 192,
13349 193, 194, 195, 238, 0, 0, 0, 0, 196, 197,
13350 198, 199, 200, 201, 202, 173, 174, 175, 176, 177,
13351 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
13352 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
13353 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
13354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13355 0, 0, 0, 0, 0, 713, 624, 0, 0, 714,
13356 190, 191, 192, 193, 194, 195, 238, 0, 0, 0,
13357 0, 196, 197, 198, 199, 200, 201, 202, 173, 174,
13358 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
13359 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
13360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13361 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
13362 0, 0, 0, 0, 0, 0, 0, 0, 716, 634,
13363 0, 0, 717, 190, 191, 192, 193, 194, 195, 238,
13364 0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
13365 202, 173, 174, 175, 176, 177, 178, 179, 180, 181,
13366 0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
13367 186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
13368 0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
13369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13370 0, 863, 624, 0, 0, 864, 190, 191, 192, 193,
13371 194, 195, 238, 0, 0, 0, 0, 196, 197, 198,
13372 199, 200, 201, 202, 173, 174, 175, 176, 177, 178,
13373 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
13374 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
13375 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
13376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13377 0, 0, 0, 0, 866, 634, 0, 0, 867, 190,
13378 191, 192, 193, 194, 195, 238, 0, 0, 0, 0,
13379 196, 197, 198, 199, 200, 201, 202, 173, 174, 175,
13380 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
13381 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
13382 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
13383 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13384 0, 0, 0, 0, 0, 0, 0, 872, 624, 0,
13385 0, 873, 190, 191, 192, 193, 194, 195, 238, 0,
13386 0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
13387 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
13388 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
13389 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13390 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
13391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13392 668, 634, 0, 0, 669, 190, 191, 192, 193, 194,
13393 195, 238, 0, 0, 0, 0, 196, 197, 198, 199,
13394 200, 201, 202, 173, 174, 175, 176, 177, 178, 179,
13395 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
13396 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
13397 0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
13398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13399 0, 0, 0, 958, 624, 0, 0, 959, 190, 191,
13400 192, 193, 194, 195, 238, 0, 0, 0, 0, 196,
13401 197, 198, 199, 200, 201, 202, 173, 174, 175, 176,
13402 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
13403 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
13404 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
13405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13406 0, 0, 0, 0, 0, 0, 961, 634, 0, 0,
13407 962, 190, 191, 192, 193, 194, 195, 238, 0, 0,
13408 0, 0, 196, 197, 198, 199, 200, 201, 202, 173,
13409 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
13410 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
13411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13412 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
13413 0, 0, 0, 0, 0, 0, 0, 0, 0, 1242,
13414 624, 0, 0, 1243, 190, 191, 192, 193, 194, 195,
13415 238, 0, 0, 0, 0, 196, 197, 198, 199, 200,
13416 201, 202, 173, 174, 175, 176, 177, 178, 179, 180,
13417 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
13418 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
13419 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
13420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13421 0, 0, 1245, 634, 0, 0, 1246, 190, 191, 192,
13422 193, 194, 195, 238, 0, 0, 0, 0, 196, 197,
13423 198, 199, 200, 201, 202, 173, 174, 175, 176, 177,
13424 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
13425 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
13426 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
13427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13428 0, 0, 0, 0, 0, 1252, 624, 0, 0, 1253,
13429 190, 191, 192, 193, 194, 195, 238, 0, 0, 0,
13430 0, 196, 197, 198, 199, 200, 201, 202, 173, 174,
13431 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
13432 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
13433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13434 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
13435 0, 0, 0, 0, 0, 0, 0, 0, 668, 634,
13436 0, 0, 669, 190, 191, 192, 193, 194, 195, 238,
13437 0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
13438 202, 173, 174, 175, 176, 177, 178, 179, 180, 181,
13439 0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
13440 186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
13441 0, 0, 0, 188, 189, 348, 349, 350, 351, 352,
13442 353, 354, 355, 356, 357, 358, 359, 360, 0, 0,
13443 0, 0, 361, 362, 0, 0, 190, 191, 192, 193,
13444 194, 195, 0, 0, 0, 0, 0, 196, 197, 198,
13445 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
13446 0, 0, 0, 0, 0, 0, 0, 0, 364, 365,
13447 366, 367, 0, 368, 0, 0, 0, 0, 0, 369,
13448 370, 371, 372, 373, 0, 0, 0, 374, 348, 349,
13449 350, 351, 352, 353, 354, 355, 356, 357, 358, -776,
13450 -776, 0, 0, 0, 0, 361, 362, 0, 0, 0,
13451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
13454 0, 364, 365, 366, 367, 0, 368, 0, 0, 0,
13455 0, 0, 369, 370, 371, 372, 373 ];
13456
13457#[allow(non_upper_case_globals)]
13458const yycheck_: &'static [i32] = &[ 2, 60, 71, 59, 8, 91, 385, 16, 17, 105,
13459 8, 96, 2, 611, 4, 22, 57, 556, 104, 324,
13460 4, 452, 238, 328, 28, 331, 53, 28, 97, 94,
13461 28, 22, 97, 380, 403, 746, 85, 346, 276, 858,
13462 68, 749, 280, 97, 85, 101, 232, 444, 16, 17,
13463 911, 538, 597, 55, 56, 452, 944, 98, 99, 100,
13464 491, 59, 944, 53, 54, 753, 611, 57, 324, 851,
13465 69, 57, 328, 80, 76, 77, 382, 77, 379, 328,
13466 381, 913, 501, 379, 25, 381, 26, 55, 56, 80,
13467 71, 431, 432, 102, 796, 85, 16, 17, 77, 29,
13468 13, 448, 66, 101, 100, 99, 16, 17, 98, 99,
13469 100, 101, 37, 38, 25, 264, 970, 13, 93, 94,
13470 27, 346, 97, 1138, 0, 103, 597, 428, 2, 1167,
13471 4, 746, 428, 987, 102, 129, 34, 66, 753, 99,
13472 611, 227, 99, 52, 140, 55, 447, 56, 449, 99,
13473 56, 447, 125, 449, 52, 119, 503, 216, 431, 432,
13474 302, 303, 140, 13, 140, 584, 561, 140, 563, 129,
13475 256, 25, 129, 13, 127, 476, 477, 450, 451, 129,
13476 54, 477, 102, 27, 125, 29, 126, 140, 792, 793,
13477 119, 1073, 102, 123, 343, 136, 13, 266, 126, 970,
13478 505, 502, 26, 504, 290, 478, 431, 432, 504, 2,
13479 1248, 4, 266, 13, 125, 140, 218, 219, 989, 219,
13480 34, 1236, 212, 136, 226, 138, 235, 140, 237, 238,
13481 232, 138, 126, 140, 597, 284, 238, 264, 52, 218,
13482 219, 28, 138, 284, 140, 247, 733, 734, 611, 505,
13483 13, 100, 317, 318, 319, 320, 505, 247, 109, 249,
13484 53, 54, 253, 254, 57, 696, 241, 235, 243, 237,
13485 53, 125, 1160, 139, 264, 125, 125, 463, 749, 1167,
13486 131, 1169, 1143, 13, 139, 266, 285, 287, 138, 13,
13487 140, 660, 85, 13, 284, 997, 998, 694, 138, 696,
13488 140, 68, 126, 344, 651, 98, 99, 100, 101, 395,
13489 1142, 25, 136, 341, 661, 235, 343, 237, 346, 136,
13490 389, 138, 387, 140, 1178, 235, 316, 237, 238, 944,
13491 97, 321, 316, 9, 25, 389, 139, 327, 138, 15,
13492 140, 331, 317, 318, 319, 320, 1057, 322, 323, 650,
13493 68, 652, 68, 343, 344, 97, 652, 663, 344, 660,
13494 1248, 662, 1250, 782, 1052, 25, 662, 1255, 25, 1257,
13495 99, 380, 1191, 247, 516, 138, 518, 140, 380, 97,
13496 13, 97, 753, 381, 923, 756, 128, 1275, 992, 993,
13497 381, 99, 382, 99, 136, 139, 386, 25, 388, 25,
13498 129, 1172, 99, 431, 432, 99, 1177, 1178, 138, 1191,
13499 140, 125, 387, 718, 138, 125, 140, 125, 138, 212,
13500 140, 129, 1020, 129, 911, 794, 913, 402, 125, 212,
13501 428, 341, 129, 796, 125, 129, 346, 1052, 282, 448,
13502 787, 746, 316, 129, 841, 136, 448, 321, 753, 1160,
13503 813, 449, 501, 68, 247, 764, 249, 1165, 449, 461,
13504 501, 463, 718, 129, 58, 125, 249, 471, 125, 718,
13505 471, 264, 710, 471, 597, 1020, 444, 25, 694, 477,
13506 1262, 264, 97, 77, 125, 786, 477, 788, 611, 1260,
13507 786, 284, 788, 483, 503, 835, 836, 125, 684, 125,
13508 569, 503, 842, 843, 975, 138, 504, 140, 15, 595,
13509 68, 501, 77, 504, 108, 109, 100, 58, 25, 990,
13510 488, 37, 38, 316, 919, 920, 997, 998, 321, 924,
13511 66, 926, 1071, 928, 327, 584, 77, 131, 331, 97,
13512 1079, 125, 544, 584, 1255, 1160, 66, 82, 83, 1020,
13513 343, 344, 1167, 1172, 556, 103, 112, 566, 1177, 784,
13514 343, 570, 835, 836, 54, 871, 568, 108, 653, 842,
13515 843, 112, 66, 944, 64, 65, 645, 125, 143, 144,
13516 145, 129, 724, 119, 136, 121, 122, 729, 136, 382,
13517 99, 25, 140, 386, 584, 388, 25, 132, 133, 25,
13518 56, 121, 122, 386, 967, 388, 838, 597, 125, 1040,
13519 835, 836, 885, 886, 846, 888, 889, 842, 843, 139,
13520 129, 611, 629, 140, 987, 994, 125, 121, 122, 66,
13521 632, 638, 99, 1248, 997, 998, 638, 68, 629, 944,
13522 129, 140, 651, 1040, 950, 139, 1025, 638, 15, 651,
13523 17, 641, 661, 643, 652, 1142, 1143, 1020, 138, 661,
13524 140, 652, 711, 670, 662, 96, 97, 1007, 670, 103,
13525 711, 662, 676, 663, 103, 676, 100, 103, 676, 670,
13526 1219, 1052, 684, 1054, 121, 122, 1065, 124, 1059, 664,
13527 483, 125, 99, 77, 1165, 129, 125, 128, 137, 125,
13528 129, 140, 704, 129, 99, 891, 140, 68, 501, 68,
13529 68, 140, 703, 704, 140, 136, 66, 67, 125, 140,
13530 125, 711, 129, 1029, 699, 52, 694, 54, 55, 2,
13531 57, 4, 975, 782, 1007, 96, 97, 96, 97, 97,
13532 799, 782, 136, 16, 17, 1124, 129, 1052, 1127, 1144,
13533 1145, 1146, 1147, 136, 997, 998, 784, 141, 142, 143,
13534 144, 145, 764, 765, 99, 1038, 136, 128, 125, 128,
13535 772, 121, 122, 775, 101, 136, 620, 77, 787, 103,
13536 53, 54, 1007, 879, 57, 787, 66, 631, 99, 779,
13537 788, 584, 782, 783, 129, 68, 1167, 788, 1169, 68,
13538 869, 129, 792, 793, 99, 870, 796, 835, 836, 68,
13539 99, 136, 85, 125, 842, 843, 68, 129, 129, 137,
13540 93, 94, 878, 813, 97, 98, 99, 100, 97, 102,
13541 125, 1202, 66, 1139, 129, 127, 68, 96, 97, 119,
13542 129, 121, 122, 687, 96, 97, 1241, 849, 641, 851,
13543 643, 136, 975, 52, 764, 1160, 26, 56, 641, 56,
13544 643, 1208, 1167, 68, 96, 97, 77, 990, 125, 128,
13545 663, 715, 944, 841, 997, 998, 128, 1248, 868, 1250,
13546 878, 871, 68, 14, 15, 119, 1257, 121, 122, 891,
13547 124, 96, 97, 68, 129, 870, 128, 1020, 68, 88,
13548 89, 68, 129, 99, 1275, 779, 1207, 68, 1209, 783,
13549 96, 97, 68, 1209, 129, 68, 1217, 125, 711, 984,
13550 138, 923, 97, 128, 106, 26, 96, 97, 66, 125,
13551 97, 933, 66, 129, 56, 96, 97, 286, 287, 212,
13552 96, 97, 128, 1248, 97, 99, 25, 937, 938, 133,
13553 1015, 129, 796, 797, 103, 945, 126, 129, 128, 66,
13554 950, 1030, 235, 66, 237, 238, 136, 68, 241, 127,
13555 243, 125, 128, 10, 247, 129, 249, 967, 125, 1007,
13556 970, 119, 687, 121, 122, 119, 779, 121, 122, 782,
13557 783, 264, 26, 125, 987, 96, 97, 987, 988, 989,
13558 40, 41, 992, 993, 997, 998, 127, 997, 998, 984,
13559 715, 284, 119, 125, 121, 122, 119, 124, 121, 122,
13560 125, 865, 52, 1064, 1014, 126, 125, 128, 125, 129,
13561 1020, 875, 52, 125, 68, 136, 1077, 1096, 125, 1029,
13562 1015, 125, 8, 316, 317, 318, 319, 320, 321, 322,
13563 323, 68, 896, 125, 327, 125, 44, 125, 331, 1081,
13564 1082, 44, 96, 97, 1150, 129, 1068, 597, 341, 1071,
13565 343, 344, 125, 346, 1064, 868, 68, 1079, 871, 96,
13566 97, 611, 597, 13, 25, 868, 17, 1077, 1160, 241,
13567 139, 796, 126, 1165, 128, 1167, 611, 1169, 139, 125,
13568 944, 125, 136, 68, 96, 97, 68, 380, 129, 382,
13569 44, 128, 68, 386, 387, 388, 960, 269, 1159, 68,
13570 44, 273, 1187, 1188, 127, 969, 130, 125, 972, 402,
13571 52, 96, 97, 130, 96, 97, 128, 150, 125, 15,
13572 96, 97, 1132, 125, 937, 938, 137, 96, 97, 1139,
13573 1140, 995, 945, 125, 937, 938, 125, 950, 431, 432,
13574 865, 125, 945, 128, 1154, 52, 128, 125, 125, 1159,
13575 875, 100, 128, 127, 125, 448, 1248, 125, 1250, 128,
13576 127, 52, 1172, 1255, 100, 1257, 103, 1177, 1178, 1191,
13577 125, 9, 1214, 1215, 56, 1185, 138, 99, 1220, 1208,
13578 1222, 1223, 125, 1275, 54, 55, 1208, 57, 1210, 1199,
13579 483, 1209, 1187, 1188, 64, 65, 740, 1219, 1209, 130,
13580 125, 1014, 125, 125, 125, 749, 1228, 129, 501, 1073,
13581 503, 1014, 59, 60, 61, 62, 1029, 125, 52, 1229,
13582 54, 55, 56, 57, 125, 1267, 1268, 1269, 1270, 103,
13583 125, 77, 125, 1097, 56, 960, 125, 1279, 125, 125,
13584 1262, 56, 792, 793, 969, 130, 796, 972, 94, 95,
13585 1260, 1064, 127, 1117, 1118, 1119, 125, 792, 793, 125,
13586 125, 796, 125, 813, 1077, 125, 120, 101, 136, 2,
13587 995, 4, 136, 566, 125, 247, 479, 570, 813, 878,
13588 98, 100, 454, 16, 17, 131, 483, 459, 89, 1228,
13589 462, 584, 765, 465, 670, 141, 142, 143, 144, 145,
13590 52, 733, 54, 55, 56, 57, 58, 52, 480, 54,
13591 55, 56, 57, 485, 40, 41, 42, 43, 44, 1132,
13592 53, 54, 911, 1075, 944, 77, 1139, 1140, 210, 1132,
13593 1194, 213, 214, 215, 1236, 68, 775, 1140, 880, 91,
13594 52, 1154, 54, 55, 56, 57, 1159, 773, 641, 101,
13595 643, 1154, 576, 1262, 988, 107, 108, 109, 651, 990,
13596 93, 94, 990, 986, 97, 1210, 1068, 108, 661, 102,
13597 663, 664, 1185, 518, 101, 547, 749, 1165, 1160, 131,
13598 1244, 746, 1185, -1, 136, 1097, 1199, -1, -1, 101,
13599 -1, 143, 1117, 1118, 1119, 107, 1199, -1, -1, 52,
13600 944, 54, 55, 56, 57, -1, 699, -1, -1, -1,
13601 -1, 583, -1, -1, -1, -1, 1229, 967, 711, -1,
13602 970, -1, -1, -1, -1, -1, 1229, -1, -1, -1,
13603 -1, -1, 967, -1, -1, 970, -1, 987, 988, 989,
13604 -1, -1, 992, 993, -1, -1, -1, 997, 998, -1,
13605 -1, -1, 987, 988, 989, -1, -1, 992, 993, 341,
13606 -1, -1, 997, 998, 346, -1, -1, -1, 597, -1,
13607 1020, -1, 52, -1, 54, 55, 56, 57, 58, 212,
13608 -1, -1, 611, -1, 597, 1020, 779, -1, -1, 782,
13609 783, 784, -1, -1, 787, -1, -1, 77, 611, -1,
13610 -1, -1, 235, -1, 237, 238, -1, -1, 241, -1,
13611 243, 91, -1, -1, 247, -1, 249, -1, -1, 1244,
13612 -1, 101, -1, -1, -1, -1, -1, 107, 108, 109,
13613 -1, 264, -1, -1, -1, 77, -1, -1, -1, -1,
13614 -1, -1, 835, 836, -1, -1, -1, -1, -1, 842,
13615 843, 131, 94, 95, -1, -1, -1, -1, -1, -1,
13616 -1, 443, 444, 143, -1, 737, -1, -1, -1, -1,
13617 452, -1, -1, -1, -1, 868, -1, 870, 871, -1,
13618 -1, -1, -1, 316, 317, 318, 319, 320, 321, 322,
13619 323, 597, -1, -1, 327, -1, -1, -1, 331, 141,
13620 142, 143, 144, 145, -1, 611, 488, -1, 341, 491,
13621 343, -1, -1, 346, -1, -1, 1160, -1, -1, -1,
13622 -1, 1165, 1172, 1167, -1, 1169, -1, 1177, 1178, -1,
13623 -1, -1, -1, -1, -1, -1, -1, 1172, -1, -1,
13624 -1, -1, 1177, 1178, 937, 938, -1, 380, -1, 382,
13625 -1, -1, 945, 386, 387, 388, -1, 950, -1, -1,
13626 -1, -1, -1, 792, 793, -1, -1, 796, -1, 402,
13627 -1, -1, 554, -1, -1, -1, -1, -1, -1, 792,
13628 793, -1, -1, 796, 813, -1, -1, -1, 2, -1,
13629 4, 984, -1, -1, -1, 577, -1, -1, 431, 432,
13630 813, -1, 16, 17, 1248, 877, 1250, -1, -1, -1,
13631 1260, 1255, -1, 1257, 1007, 448, -1, -1, 890, -1,
13632 892, 1014, 1015, -1, -1, 1260, -1, -1, -1, -1,
13633 -1, 1275, -1, -1, -1, 571, 1029, 909, -1, 53,
13634 54, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13635 483, 77, -1, 597, 68, -1, -1, -1, -1, -1,
13636 -1, -1, -1, -1, -1, -1, -1, 611, 94, 95,
13637 503, 1064, 52, -1, 54, 55, 56, 57, 58, 93,
13638 94, -1, -1, 97, 1077, -1, 792, 793, 102, -1,
13639 796, -1, -1, -1, -1, 677, -1, 77, -1, 681,
13640 -1, -1, -1, 639, 130, 131, -1, 813, 644, 135,
13641 646, 91, 694, -1, 696, 141, 142, 143, 144, 145,
13642 -1, 101, -1, -1, 996, -1, -1, -1, 108, 109,
13643 -1, -1, -1, 566, -1, -1, -1, 570, 967, 1132,
13644 -1, 970, -1, -1, -1, -1, 1139, 1140, -1, -1,
13645 -1, 131, -1, -1, 967, -1, -1, 970, 987, 988,
13646 989, 1154, 744, 992, 993, -1, 1159, -1, 997, 998,
13647 -1, -1, -1, -1, 987, 988, 989, -1, -1, 992,
13648 993, -1, 764, -1, 997, 998, -1, -1, -1, -1,
13649 -1, 1020, 1185, -1, 1187, 1188, 778, 52, 212, 54,
13650 55, 56, 57, 58, -1, -1, 1199, 1020, 641, -1,
13651 643, -1, -1, -1, -1, 1208, -1, 1089, 651, -1,
13652 -1, 235, 77, 237, 238, -1, -1, 241, 661, 243,
13653 663, 664, -1, 247, -1, 249, 1229, -1, 774, -1,
13654 776, -1, 1114, 1115, 1116, -1, 101, -1, 792, 793,
13655 264, -1, 796, 108, 109, -1, -1, -1, -1, 841,
13656 -1, 967, -1, -1, 970, -1, 699, -1, -1, 813,
13657 -1, -1, -1, -1, -1, -1, 131, -1, -1, 861,
13658 -1, 987, 988, 989, -1, -1, 992, 993, -1, -1,
13659 -1, 997, 998, -1, -1, -1, -1, -1, -1, -1,
13660 -1, -1, 316, 317, 318, 319, 320, 321, 322, 323,
13661 -1, -1, -1, 327, 1020, -1, -1, 331, -1, -1,
13662 -1, -1, -1, 859, -1, -1, 862, 341, 597, 343,
13663 -1, -1, 346, -1, -1, -1, -1, -1, -1, -1,
13664 876, 597, 611, 1172, -1, -1, 779, -1, 1177, 1178,
13665 783, 784, -1, -1, 787, 611, -1, -1, -1, 1172,
13666 -1, -1, -1, -1, 1177, 1178, 380, -1, 382, -1,
13667 952, -1, 386, 387, 388, -1, -1, -1, -1, -1,
13668 -1, -1, -1, -1, -1, -1, -1, -1, 402, -1,
13669 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13670 -1, -1, 835, 836, -1, -1, -1, -1, -1, 842,
13671 843, -1, -1, -1, -1, -1, -1, 431, 432, -1,
13672 -1, -1, -1, 967, -1, -1, 970, -1, -1, -1,
13673 -1, 1260, -1, -1, 448, 868, -1, 870, 871, -1,
13674 -1, 1023, -1, 987, 988, 989, -1, 1260, 992, 993,
13675 -1, -1, -1, 997, 998, -1, -1, -1, 1040, -1,
13676 -1, -1, -1, 2, -1, 4, 1172, -1, -1, 483,
13677 -1, 1177, 1178, -1, -1, -1, 1020, -1, -1, -1,
13678 1016, -1, -1, 1019, -1, 1021, -1, -1, -1, 503,
13679 -1, -1, 1028, -1, -1, 1031, -1, -1, -1, -1,
13680 -1, -1, -1, -1, 937, 938, -1, -1, -1, -1,
13681 -1, -1, 945, -1, 53, 54, -1, 950, 57, -1,
13682 -1, -1, -1, 792, 793, -1, -1, 796, -1, -1,
13683 -1, -1, -1, -1, -1, -1, 792, 793, -1, -1,
13684 796, -1, -1, -1, 813, -1, 85, -1, -1, 1131,
13685 -1, 984, 566, -1, 1260, -1, 570, 813, -1, 98,
13686 99, 100, 52, -1, 54, 55, 56, 57, 58, 2,
13687 -1, 4, -1, -1, 1007, -1, -1, -1, -1, -1,
13688 -1, 1014, 1015, -1, -1, -1, -1, 77, -1, 52,
13689 -1, 54, 55, 56, 57, 58, 1029, -1, 1134, -1,
13690 -1, -1, -1, -1, -1, -1, -1, 1189, -1, -1,
13691 -1, 101, -1, -1, 77, -1, -1, 107, 108, 109,
13692 53, 54, -1, -1, 57, -1, -1, 641, 1172, 643,
13693 -1, -1, -1, 1177, 1178, -1, -1, 651, 101, -1,
13694 -1, 131, -1, -1, 107, 108, 109, 661, -1, 663,
13695 664, -1, 85, 143, -1, -1, -1, -1, -1, -1,
13696 -1, 1197, -1, -1, -1, 98, 99, 100, 131, -1,
13697 -1, -1, -1, 212, 597, -1, -1, 140, -1, -1,
13698 143, -1, -1, -1, -1, 699, -1, -1, 611, -1,
13699 -1, -1, -1, -1, -1, -1, -1, -1, 967, 1132,
13700 -1, 970, -1, -1, -1, -1, 1139, 1140, 247, -1,
13701 249, 967, -1, -1, 970, -1, 1260, -1, 987, 988,
13702 989, 1154, -1, 992, 993, 264, -1, -1, 997, 998,
13703 -1, 987, 988, 989, -1, -1, 992, 993, -1, -1,
13704 -1, 997, 998, -1, -1, 284, -1, -1, -1, -1,
13705 -1, 1020, 1185, -1, 1187, 1188, -1, -1, -1, -1,
13706 -1, -1, -1, -1, 1020, 779, 1199, -1, -1, 783,
13707 784, -1, -1, 787, -1, 1208, -1, 316, -1, 212,
13708 -1, -1, 321, 33, 34, 35, 36, -1, 327, -1,
13709 -1, -1, 331, -1, -1, -1, 1229, -1, -1, 49,
13710 50, 51, -1, -1, 343, 344, -1, 346, -1, 59,
13711 60, 61, 62, 63, 247, -1, 249, -1, -1, -1,
13712 -1, 835, 836, -1, -1, -1, -1, -1, 842, 843,
13713 -1, 264, -1, -1, -1, -1, -1, -1, -1, -1,
13714 -1, -1, -1, 382, -1, -1, -1, 386, -1, 388,
13715 -1, 284, -1, -1, 868, -1, 870, 871, -1, -1,
13716 110, 111, 112, 113, 114, 115, 116, 117, 118, 792,
13717 793, -1, -1, 796, -1, -1, -1, -1, -1, -1,
13718 -1, -1, 2, 316, 4, -1, -1, -1, 321, -1,
13719 813, -1, 431, 432, 327, -1, -1, -1, 331, -1,
13720 -1, 151, -1, 1172, -1, -1, -1, -1, 1177, 1178,
13721 343, 344, -1, 346, -1, -1, 1172, -1, -1, -1,
13722 -1, 1177, 1178, 937, 938, -1, -1, -1, -1, -1,
13723 -1, 945, -1, 53, 54, -1, 950, 57, -1, -1,
13724 -1, -1, -1, -1, 483, -1, -1, -1, -1, 382,
13725 -1, -1, -1, 386, -1, 388, -1, -1, -1, -1,
13726 -1, -1, 501, -1, -1, 85, -1, -1, -1, -1,
13727 984, -1, -1, -1, -1, -1, -1, -1, 98, 99,
13728 100, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13729 -1, 1260, -1, 1007, -1, -1, -1, -1, 431, 432,
13730 1014, 1015, -1, -1, 1260, -1, -1, -1, -1, -1,
13731 -1, 2, -1, 4, -1, 1029, 0, -1, -1, -1,
13732 -1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
13733 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
13734 -1, 25, 26, 27, 967, 584, -1, 970, -1, -1,
13735 483, -1, -1, 37, 38, -1, 40, 41, 42, 43,
13736 44, -1, 53, 54, 987, 988, 989, -1, 501, 992,
13737 993, -1, -1, -1, 997, 998, -1, -1, -1, -1,
13738 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
13739 -1, -1, 212, -1, -1, -1, -1, 1020, -1, -1,
13740 -1, -1, 641, -1, 643, -1, -1, 98, -1, -1,
13741 -1, -1, 96, 97, -1, -1, -1, -1, 1132, 103,
13742 -1, -1, -1, -1, 663, 1139, 1140, 247, -1, 249,
13743 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
13744 1154, -1, 126, 127, 264, -1, -1, -1, -1, -1,
13745 -1, 584, 136, -1, 138, -1, 140, -1, -1, -1,
13746 -1, -1, -1, -1, 284, -1, -1, -1, -1, -1,
13747 -1, 1185, 711, 1187, 1188, -1, -1, -1, -1, -1,
13748 -1, -1, -1, 722, -1, 1199, -1, -1, -1, -1,
13749 -1, -1, -1, -1, 1208, -1, 316, -1, -1, -1,
13750 -1, 321, -1, -1, -1, -1, -1, 327, 641, -1,
13751 643, 331, -1, -1, -1, 1229, -1, -1, -1, -1,
13752 -1, 212, -1, 343, 344, -1, 346, -1, -1, -1,
13753 663, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13754 779, -1, -1, 782, 783, 784, -1, -1, -1, 1172,
13755 -1, -1, -1, -1, 1177, 1178, 247, -1, 249, -1,
13756 -1, -1, 382, -1, -1, -1, 386, -1, 388, -1,
13757 -1, -1, -1, 264, -1, -1, -1, -1, 711, -1,
13758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13759 -1, -1, -1, -1, -1, -1, 835, 836, -1, -1,
13760 -1, -1, -1, 842, 843, -1, -1, -1, -1, -1,
13761 -1, 431, 432, -1, -1, -1, -1, -1, -1, -1,
13762 -1, -1, -1, -1, 2, 316, 4, -1, -1, 868,
13763 321, -1, 871, -1, -1, -1, 327, 1260, -1, -1,
13764 331, -1, -1, -1, -1, -1, 779, -1, -1, 782,
13765 783, 784, 343, -1, -1, 346, -1, -1, -1, -1,
13766 -1, -1, -1, 483, 25, -1, -1, -1, -1, -1,
13767 -1, -1, -1, -1, -1, 53, 54, -1, -1, -1,
13768 -1, 501, -1, -1, -1, -1, -1, -1, -1, -1,
13769 -1, 382, -1, -1, -1, 386, -1, 388, 937, 938,
13770 -1, -1, 835, 836, -1, -1, 945, -1, -1, 842,
13771 843, 950, -1, -1, -1, -1, 77, 78, 79, 80,
13772 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
13773 -1, -1, -1, 94, 95, 868, -1, -1, 871, 100,
13774 431, 432, -1, 77, 78, 79, 80, 81, 82, 83,
13775 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
13776 94, 95, -1, -1, 584, -1, -1, -1, 1007, 130,
13777 131, 132, 133, -1, 135, 1014, -1, -1, -1, -1,
13778 141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
13779 1029, -1, 483, -1, -1, -1, 130, 131, 132, 133,
13780 -1, 135, -1, -1, 937, 938, 140, 141, 142, 143,
13781 144, 145, 945, -1, -1, 149, -1, 950, -1, -1,
13782 -1, 641, -1, 643, -1, 1064, -1, -1, -1, -1,
13783 -1, -1, -1, -1, 212, -1, -1, -1, 1077, -1,
13784 -1, -1, -1, 663, -1, -1, -1, -1, -1, -1,
13785 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
13786 79, 80, 81, 82, 83, 84, -1, 86, 87, 247,
13787 -1, 249, -1, -1, 1007, 94, 95, -1, -1, -1,
13788 -1, 1014, -1, -1, -1, -1, 264, -1, -1, -1,
13789 -1, 711, -1, 1132, -1, -1, 1029, -1, -1, -1,
13790 1139, 1140, -1, -1, -1, -1, -1, -1, -1, -1,
13791 -1, 130, 131, 132, 133, 1154, 135, -1, -1, -1,
13792 1159, -1, 141, 142, 143, 144, 145, -1, -1, -1,
13793 -1, 1064, -1, -1, -1, -1, -1, -1, 316, -1,
13794 -1, 44, -1, 321, 1077, -1, 1185, -1, -1, 327,
13795 641, -1, 643, 331, -1, -1, -1, -1, -1, 779,
13796 1199, -1, 782, 783, 784, 343, -1, -1, 346, -1,
13797 -1, -1, 663, -1, 77, 78, 79, 80, 81, 82,
13798 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
13799 1229, 94, 95, -1, -1, -1, -1, -1, -1, 1132,
13800 -1, -1, -1, -1, 382, -1, 1139, 1140, 386, -1,
13801 388, -1, -1, -1, -1, 835, 836, -1, -1, -1,
13802 -1, 1154, 842, 843, -1, -1, 1159, 130, 131, 132,
13803 133, -1, 135, -1, -1, -1, -1, -1, 141, 142,
13804 143, 144, 145, -1, -1, -1, 149, -1, 868, -1,
13805 -1, 871, 1185, 431, 432, 33, 34, 35, 36, -1,
13806 -1, -1, -1, -1, -1, -1, 1199, -1, -1, -1,
13807 -1, 49, 50, 51, 52, -1, -1, -1, 56, -1,
13808 -1, 59, 60, 61, 62, 63, -1, -1, 779, -1,
13809 -1, -1, 783, 784, -1, -1, 1229, -1, -1, -1,
13810 -1, -1, -1, -1, -1, 483, -1, -1, -1, -1,
13811 -1, -1, 90, 91, -1, -1, -1, 937, 938, -1,
13812 98, -1, -1, 101, -1, 945, 104, 105, -1, 107,
13813 950, -1, 110, 111, 112, 113, 114, 115, 116, 117,
13814 118, -1, -1, -1, 835, 836, -1, -1, -1, -1,
13815 -1, 842, 843, -1, -1, -1, -1, 135, -1, -1,
13816 -1, -1, 140, -1, -1, -1, -1, -1, -1, -1,
13817 -1, -1, -1, 151, -1, -1, -1, 868, -1, -1,
13818 871, -1, -1, -1, -1, -1, -1, 1007, -1, -1,
13819 -1, 16, 17, -1, 1014, -1, -1, -1, -1, -1,
13820 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1029,
13821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13822 -1, -1, -1, 48, 49, 50, 51, -1, -1, -1,
13823 55, 56, -1, -1, -1, -1, -1, -1, -1, -1,
13824 -1, -1, 67, 68, 1064, -1, 937, 938, -1, -1,
13825 -1, -1, -1, -1, 945, -1, -1, 1077, -1, 950,
13826 -1, -1, -1, 641, -1, 643, -1, -1, -1, -1,
13827 -1, -1, -1, -1, -1, -1, -1, 102, 33, 34,
13828 35, 36, -1, -1, -1, 663, -1, -1, -1, -1,
13829 -1, -1, -1, -1, 49, 50, 51, 52, -1, -1,
13830 -1, 56, -1, 58, 59, 60, 61, 62, 63, -1,
13831 -1, -1, 1132, -1, -1, -1, 1007, -1, -1, 1139,
13832 1140, -1, 77, 1014, -1, -1, -1, -1, -1, -1,
13833 -1, -1, -1, -1, 1154, 90, 91, -1, 1029, 1159,
13834 -1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
13835 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
13836 115, 116, 117, 118, -1, 1185, -1, -1, -1, -1,
13837 -1, -1, -1, 1064, -1, -1, -1, -1, -1, 1199,
13838 135, 44, -1, -1, -1, 210, -1, -1, 213, 214,
13839 215, -1, 217, -1, -1, -1, 151, -1, -1, -1,
13840 -1, 779, -1, -1, -1, 783, 784, -1, -1, 1229,
13841 235, -1, 237, 238, 77, 78, 79, 80, 81, 82,
13842 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
13843 -1, 94, 95, -1, -1, -1, -1, -1, -1, -1,
13844 -1, 1132, -1, -1, -1, -1, -1, -1, 1139, 1140,
13845 -1, -1, -1, -1, -1, -1, -1, 835, 836, -1,
13846 -1, -1, 125, 1154, 842, 843, -1, 130, 131, 132,
13847 133, -1, 135, -1, -1, -1, -1, -1, 141, 142,
13848 143, 144, 145, -1, -1, -1, 149, -1, -1, -1,
13849 868, -1, -1, 871, 1185, -1, -1, -1, -1, -1,
13850 -1, -1, -1, -1, -1, -1, -1, -1, 1199, -1,
13851 -1, -1, -1, -1, -1, -1, 341, -1, -1, -1,
13852 -1, 346, -1, 348, 349, 350, 351, 352, -1, -1,
13853 355, 356, 357, 358, 359, 360, 361, 362, 1229, 364,
13854 365, -1, -1, 368, 369, 370, 371, 372, 373, 374,
13855 375, 376, -1, -1, -1, 380, -1, -1, -1, 937,
13856 938, -1, -1, -1, -1, -1, -1, 945, -1, -1,
13857 -1, -1, 950, -1, -1, -1, -1, -1, -1, -1,
13858 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13859 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13860 -1, -1, -1, -1, -1, -1, 431, 432, -1, -1,
13861 -1, -1, -1, -1, -1, -1, -1, 442, 443, 444,
13862 -1, -1, -1, 448, -1, 450, 451, 452, -1, 1007,
13863 -1, -1, -1, 458, -1, -1, 1014, -1, -1, -1,
13864 -1, 33, 34, 35, 36, -1, -1, -1, 473, -1,
13865 -1, 1029, -1, 478, -1, -1, -1, 49, 50, 51,
13866 52, -1, -1, 488, 56, -1, 491, 59, 60, 61,
13867 62, 63, -1, -1, -1, -1, -1, -1, 503, -1,
13868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13869 -1, -1, -1, -1, -1, 520, -1, -1, 90, 91,
13870 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
13871 -1, -1, 104, 105, -1, 107, -1, -1, 110, 111,
13872 112, 113, 114, 115, 116, 117, 118, -1, -1, 554,
13873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13874 -1, 566, -1, 135, 44, 570, -1, -1, -1, -1,
13875 -1, -1, 577, -1, 1132, -1, -1, -1, -1, 151,
13876 -1, 1139, 1140, -1, -1, -1, -1, -1, -1, -1,
13877 -1, -1, -1, -1, -1, -1, 1154, 77, 78, 79,
13878 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
13879 -1, -1, -1, -1, 94, 95, -1, -1, -1, -1,
13880 -1, -1, -1, -1, -1, -1, -1, 1185, -1, -1,
13881 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
13882 87, 1199, -1, -1, -1, -1, 651, 94, 95, -1,
13883 130, 131, 132, 133, -1, 135, 661, -1, -1, -1,
13884 -1, 141, 142, 143, 144, 145, -1, -1, -1, 149,
13885 -1, 1229, 677, 678, 679, -1, 681, -1, -1, -1,
13886 -1, -1, -1, 130, 131, 132, 133, -1, 135, 694,
13887 -1, 696, -1, -1, 141, 142, 143, 144, 145, -1,
13888 -1, 0, 1, -1, 3, 4, 5, 6, 7, -1,
13889 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
13890 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
13891 -1, 30, 31, 32, 33, 34, 35, 36, -1, 744,
13892 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
13893 49, 50, 51, 52, 53, 54, 55, 56, 57, 764,
13894 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
13895 -1, -1, -1, 778, -1, -1, 75, 76, -1, 784,
13896 785, -1, 787, -1, -1, -1, -1, -1, -1, -1,
13897 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
13898 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
13899 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
13900 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13901 835, 836, -1, -1, -1, -1, 841, 842, 843, 138,
13902 -1, 140, -1, -1, -1, -1, -1, 146, 147, -1,
13903 -1, -1, 151, -1, -1, -1, 861, -1, 3, 4,
13904 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
13905 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
13906 885, 886, -1, 888, 889, 30, 31, 32, 33, 34,
13907 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
13908 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
13909 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
13910 65, -1, -1, -1, 929, 930, -1, -1, -1, -1,
13911 -1, -1, -1, -1, -1, -1, 941, 942, -1, -1,
13912 -1, -1, -1, -1, -1, -1, -1, 952, -1, -1,
13913 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
13914 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
13915 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
13916 125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13917 -1, -1, -1, -1, -1, 1000, -1, -1, -1, -1,
13918 -1, -1, 1007, -1, -1, -1, 151, -1, -1, -1,
13919 -1, -1, -1, -1, -1, -1, -1, -1, 1023, -1,
13920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13921 -1, -1, -1, 1038, -1, 1040, -1, -1, -1, -1,
13922 1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
13923 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
13924 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
13925 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
13926 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
13927 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
13928 61, 62, 63, 64, 65, -1, -1, 77, 78, 79,
13929 80, 81, 82, 83, 75, 76, 86, 87, -1, -1,
13930 -1, -1, -1, -1, 94, 95, 1131, -1, -1, 90,
13931 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
13932 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
13933 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
13934 130, 131, 132, 133, -1, 135, -1, -1, -1, -1,
13935 -1, 141, 142, 143, 144, 145, -1, 138, -1, 140,
13936 -1, -1, -1, -1, 1189, 146, 147, -1, -1, -1,
13937 151, 1, -1, 3, 4, 5, 6, 7, -1, -1,
13938 10, 11, 12, 1208, 14, 15, 16, -1, 18, 19,
13939 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
13940 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
13941 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
13942 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
13943 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
13944 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
13945 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13946 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
13947 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
13948 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
13949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13950 -1, -1, -1, -1, -1, -1, -1, -1, 138, 1,
13951 140, 3, 4, 5, 6, 7, 146, 147, 10, 11,
13952 12, 151, -1, 15, 16, 17, 18, 19, 20, 21,
13953 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
13954 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
13955 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
13956 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
13957 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
13958 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
13959 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
13960 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
13961 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
13962 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
13963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13964 -1, -1, -1, -1, -1, -1, 138, 1, 140, 3,
13965 4, 5, 6, 7, 146, 147, 10, 11, 12, 151,
13966 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
13967 24, 25, -1, -1, -1, -1, 30, 31, 32, 33,
13968 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
13969 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
13970 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
13971 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
13972 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
13973 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
13974 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
13975 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
13976 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
13977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13978 -1, -1, -1, -1, 138, 1, 140, 3, 4, 5,
13979 6, 7, 146, 147, 10, 11, 12, 151, -1, 15,
13980 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
13981 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
13982 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
13983 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
13984 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
13985 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
13986 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13987 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
13988 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
13989 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
13990 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
13991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
13992 -1, -1, 138, -1, 140, -1, -1, -1, -1, -1,
13993 146, 147, -1, -1, 1, 151, 3, 4, 5, 6,
13994 7, -1, 9, 10, 11, 12, -1, -1, -1, 16,
13995 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
13996 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
13997 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
13998 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
13999 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
14000 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
14001 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14002 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
14003 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
14004 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
14005 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
14006 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14007 -1, 138, 1, 140, 3, 4, 5, 6, 7, 146,
14008 147, -1, 11, 12, 151, -1, -1, 16, -1, 18,
14009 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14010 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14011 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
14012 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
14013 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14014 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
14015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14016 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
14017 -1, -1, 101, 102, 103, 104, 105, -1, 107, -1,
14018 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14020 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
14021 1, 140, 3, 4, 5, 6, 7, 146, 147, -1,
14022 11, 12, 151, -1, -1, 16, -1, 18, 19, 20,
14023 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
14024 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
14025 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
14026 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
14027 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
14028 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
14029 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
14030 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
14031 101, 102, 103, 104, 105, -1, 107, -1, -1, 110,
14032 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
14033 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14034 -1, -1, -1, -1, -1, -1, -1, 138, 1, 140,
14035 3, 4, 5, 6, 7, 146, 147, -1, 11, 12,
14036 151, -1, -1, 16, -1, 18, 19, 20, 21, 22,
14037 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
14038 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
14039 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
14040 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
14041 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
14042 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
14043 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
14044 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
14045 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
14046 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
14047 -1, -1, -1, -1, 127, -1, -1, -1, -1, -1,
14048 -1, -1, -1, -1, -1, 138, 1, 140, 3, 4,
14049 5, 6, 7, 146, 147, -1, 11, 12, 151, -1,
14050 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
14051 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
14052 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
14053 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
14054 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
14055 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14056 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
14057 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
14058 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
14059 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
14060 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
14061 -1, -1, 127, -1, -1, -1, -1, -1, -1, -1,
14062 -1, -1, -1, 138, 1, 140, 3, 4, 5, 6,
14063 7, 146, 147, 10, 11, 12, 151, -1, -1, 16,
14064 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
14065 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
14066 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
14067 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
14068 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
14069 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
14070 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14071 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
14072 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
14073 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
14074 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
14075 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14076 -1, 138, 1, 140, 3, 4, 5, 6, 7, 146,
14077 147, -1, 11, 12, 151, -1, -1, 16, -1, 18,
14078 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14079 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14080 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
14081 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
14082 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14083 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
14084 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14085 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
14086 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
14087 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14088 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
14089 -1, -1, -1, -1, -1, -1, 0, -1, -1, 138,
14090 -1, 140, -1, -1, 8, 9, 10, 146, 147, 13,
14091 14, 15, 151, 17, -1, -1, -1, -1, -1, -1,
14092 -1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
14093 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
14094 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14095 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14096 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
14097 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
14098 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
14099 94, 95, 96, 97, -1, 99, 100, -1, -1, 103,
14100 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
14101 -1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
14102 -1, 125, 126, 127, 128, 129, 130, 131, 132, 133,
14103 -1, 135, -1, 137, 138, -1, 140, 141, 142, 143,
14104 144, 145, 0, -1, -1, 149, 150, -1, -1, -1,
14105 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
14106 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
14107 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
14108 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
14109 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14111 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
14112 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
14113 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
14114 -1, 99, 100, -1, -1, 103, -1, -1, 106, -1,
14115 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14116 -1, -1, 120, -1, -1, 123, -1, 125, -1, 127,
14117 128, 129, 130, 131, 132, 133, -1, 135, -1, 137,
14118 138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
14119 -1, 149, 150, -1, -1, -1, 8, 9, 10, -1,
14120 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
14121 -1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
14122 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
14123 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
14124 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14125 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
14126 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
14127 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
14128 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
14129 -1, 103, -1, -1, 106, -1, -1, -1, -1, -1,
14130 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
14131 -1, 123, -1, 125, -1, 127, 128, 129, 130, 131,
14132 132, 133, -1, 135, -1, 137, 138, -1, 140, 141,
14133 142, 143, 144, 145, 0, -1, -1, 149, 150, -1,
14134 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
14135 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
14136 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
14137 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
14138 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14140 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
14141 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
14142 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
14143 96, 97, -1, -1, 100, -1, -1, 103, -1, -1,
14144 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14145 -1, -1, -1, -1, 120, -1, -1, 123, -1, 125,
14146 126, 127, 128, -1, 130, 131, 132, 133, -1, 135,
14147 -1, 137, 138, -1, 140, 141, 142, 143, 144, 145,
14148 0, -1, -1, 149, 150, -1, -1, -1, 8, 9,
14149 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
14150 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
14151 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
14152 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
14153 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14154 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
14155 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
14156 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
14157 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
14158 100, -1, -1, 103, -1, -1, 106, -1, -1, -1,
14159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14160 120, -1, -1, 123, -1, 125, 126, 127, 128, -1,
14161 130, 131, 132, 133, -1, 135, -1, 137, 138, -1,
14162 140, 141, 142, 143, 144, 145, 0, -1, -1, 149,
14163 150, -1, -1, -1, 8, 9, 10, -1, -1, 13,
14164 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
14165 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
14166 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
14167 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14169 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
14170 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
14171 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
14172 94, 95, 96, 97, -1, 99, 100, -1, -1, 103,
14173 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
14174 -1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
14175 -1, 125, -1, 127, 128, 129, 130, 131, 132, 133,
14176 -1, 135, -1, 137, 138, -1, 140, 141, 142, 143,
14177 144, 145, 0, -1, -1, 149, 150, -1, -1, -1,
14178 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
14179 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
14180 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
14181 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
14182 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14183 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14184 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
14185 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
14186 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
14187 -1, -1, 100, -1, -1, 103, -1, -1, 106, -1,
14188 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14189 -1, -1, 120, -1, -1, 123, -1, 125, -1, 127,
14190 128, -1, 130, 131, 132, 133, -1, 135, -1, 137,
14191 138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
14192 -1, 149, 150, -1, -1, -1, 8, 9, 10, -1,
14193 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
14194 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
14195 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
14196 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
14197 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14198 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
14199 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
14200 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
14201 -1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
14202 -1, 103, -1, -1, 106, -1, -1, -1, -1, -1,
14203 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
14204 -1, -1, -1, 125, 126, 127, 128, -1, 130, 131,
14205 132, 133, -1, 135, 136, 137, 138, -1, 140, 141,
14206 142, 143, 144, 145, 0, -1, -1, 149, -1, -1,
14207 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
14208 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
14209 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
14210 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
14211 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14212 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14213 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
14214 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
14215 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
14216 96, 97, -1, -1, 100, -1, -1, 103, -1, -1,
14217 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14218 -1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
14219 126, 127, 128, -1, 130, 131, 132, 133, -1, 135,
14220 136, 137, 138, -1, 140, 141, 142, 143, 144, 145,
14221 0, -1, -1, 149, -1, -1, -1, -1, 8, 9,
14222 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
14223 -1, -1, -1, -1, -1, 25, -1, 27, 28, -1,
14224 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
14225 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
14226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14227 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
14228 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
14229 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
14230 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
14231 100, -1, -1, 103, -1, -1, 106, -1, -1, -1,
14232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14233 120, -1, -1, -1, -1, 125, -1, 127, 128, -1,
14234 130, 131, 132, 133, -1, 135, 136, 137, 138, -1,
14235 140, 141, 142, 143, 144, 145, 0, -1, -1, 149,
14236 -1, -1, -1, -1, 8, 9, 10, -1, -1, -1,
14237 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
14238 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
14239 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
14240 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14242 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
14243 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
14244 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
14245 94, 95, 96, 97, -1, 99, 100, -1, -1, 103,
14246 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14247 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
14248 -1, 125, 126, 127, 128, 129, 130, 131, 132, 133,
14249 -1, 135, -1, -1, 138, -1, 140, 141, 142, 143,
14250 144, 145, 0, -1, -1, 149, -1, -1, -1, -1,
14251 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
14252 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
14253 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
14254 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
14255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14256 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14257 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
14258 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
14259 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
14260 -1, 99, 100, -1, -1, 103, -1, -1, -1, -1,
14261 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14262 -1, -1, 120, -1, -1, -1, -1, 125, 126, 127,
14263 128, 129, 130, 131, 132, 133, -1, 135, -1, -1,
14264 138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
14265 -1, 149, -1, -1, -1, -1, 8, 9, 10, -1,
14266 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
14267 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
14268 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
14269 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
14270 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14271 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
14272 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
14273 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
14274 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
14275 -1, 103, -1, -1, -1, -1, -1, -1, -1, -1,
14276 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
14277 -1, -1, -1, 125, -1, 127, 128, 129, 130, 131,
14278 132, 133, -1, 135, -1, -1, 138, -1, 140, 141,
14279 142, 143, 144, 145, 0, -1, -1, 149, -1, -1,
14280 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
14281 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
14282 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14283 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
14284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14286 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
14287 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
14288 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
14289 96, 97, -1, 99, 100, -1, -1, 103, -1, -1,
14290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14291 -1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
14292 -1, 127, 128, 129, 130, 131, 132, 133, -1, 135,
14293 -1, -1, 138, -1, 140, 141, 142, 143, 144, 145,
14294 -1, -1, -1, 149, 3, 4, 5, 6, 7, -1,
14295 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
14296 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14297 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14298 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
14299 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
14300 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14301 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
14302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14303 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
14304 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
14305 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14307 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
14308 -1, 3, 4, 5, 6, 7, -1, 146, 147, 11,
14309 12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
14310 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
14311 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
14312 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
14313 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
14314 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
14315 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
14316 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
14317 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
14318 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
14319 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
14320 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14321 -1, -1, -1, -1, -1, -1, 138, -1, 3, 4,
14322 5, 6, 7, -1, 146, 147, 11, 12, -1, 151,
14323 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
14324 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
14325 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
14326 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
14327 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
14328 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14329 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
14330 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
14331 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
14332 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
14333 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
14334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14335 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
14336 -1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
14337 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
14338 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
14339 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
14340 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
14341 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
14342 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
14343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14344 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
14345 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
14346 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
14347 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14349 -1, -1, 140, 3, 4, 5, -1, 7, 146, 147,
14350 -1, 11, 12, 151, -1, -1, 16, -1, 18, 19,
14351 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
14352 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
14353 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
14354 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
14355 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
14356 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
14357 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14358 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
14359 -1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
14360 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
14361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14363 3, 4, 5, 6, 7, -1, 146, 147, 11, 12,
14364 -1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
14365 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
14366 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
14367 -1, -1, 45, 46, -1, 48, 49, 50, 51, 52,
14368 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
14369 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
14370 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
14371 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
14372 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
14373 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
14374 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
14375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14376 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
14377 -1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
14378 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
14379 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
14380 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
14381 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
14382 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
14383 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
14384 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14385 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
14386 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
14387 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
14388 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
14389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14390 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
14391 146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
14392 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14393 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14394 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
14395 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
14396 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14397 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
14398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14399 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
14400 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
14401 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14402 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14404 -1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
14405 12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
14406 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
14407 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
14408 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
14409 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
14410 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
14411 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
14412 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
14413 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
14414 102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
14415 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
14416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14417 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
14418 5, -1, 7, -1, 146, 147, 11, 12, -1, 151,
14419 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
14420 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
14421 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
14422 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
14423 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
14424 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14425 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
14426 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
14427 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
14428 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
14429 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
14430 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14431 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
14432 -1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
14433 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
14434 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
14435 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
14436 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
14437 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
14438 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
14439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14440 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
14441 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
14442 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
14443 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14445 -1, -1, 3, 4, 5, -1, 7, -1, 146, 147,
14446 11, 12, -1, 151, -1, 16, -1, 18, 19, 20,
14447 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
14448 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
14449 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
14450 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
14451 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
14452 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
14453 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
14454 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
14455 101, 102, -1, 104, 105, -1, 107, 108, -1, 110,
14456 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
14457 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14458 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
14459 4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
14460 151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
14461 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
14462 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
14463 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
14464 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
14465 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
14466 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
14467 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
14468 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
14469 104, 105, -1, -1, 108, -1, 110, 111, 112, 113,
14470 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
14471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14472 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
14473 7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
14474 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
14475 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
14476 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
14477 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
14478 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
14479 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
14480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14481 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
14482 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
14483 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
14484 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
14485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14486 -1, 138, -1, 140, 3, 4, 5, -1, 7, 146,
14487 147, -1, 11, 12, 151, -1, -1, 16, -1, 18,
14488 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14489 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14490 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
14491 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
14492 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14493 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
14494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14495 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
14496 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
14497 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14498 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14500 -1, 140, 3, 4, 5, -1, 7, 146, 147, -1,
14501 11, 12, 151, -1, -1, 16, -1, 18, 19, 20,
14502 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
14503 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
14504 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
14505 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
14506 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
14507 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
14508 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
14509 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
14510 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
14511 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
14512 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14513 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
14514 4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
14515 151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
14516 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
14517 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
14518 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
14519 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
14520 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
14521 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
14522 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
14523 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
14524 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
14525 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
14526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14527 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
14528 7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
14529 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
14530 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
14531 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
14532 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
14533 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
14534 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
14535 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14536 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
14537 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
14538 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
14539 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
14540 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14541 -1, -1, -1, 3, 4, 5, -1, 7, -1, 146,
14542 147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
14543 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
14544 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
14545 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
14546 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
14547 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
14548 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
14549 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14550 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
14551 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
14552 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
14553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14554 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14555 3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
14556 -1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
14557 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
14558 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
14559 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
14560 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
14561 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
14562 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
14563 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
14564 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
14565 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
14566 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
14567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14568 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
14569 -1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
14570 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
14571 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
14572 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
14573 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
14574 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
14575 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
14576 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14577 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
14578 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
14579 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
14580 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
14581 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14582 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
14583 146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
14584 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14585 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14586 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
14587 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
14588 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14589 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
14590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14591 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
14592 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
14593 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14594 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14596 -1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
14597 12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
14598 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
14599 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
14600 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
14601 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
14602 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
14603 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
14604 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
14605 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
14606 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
14607 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
14608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14609 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
14610 5, -1, 7, -1, 146, 147, 11, 12, -1, 151,
14611 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
14612 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
14613 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
14614 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
14615 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
14616 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14619 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
14620 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
14621 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
14622 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
14623 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
14624 23, 24, -1, -1, -1, -1, 151, 30, 31, 32,
14625 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
14626 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
14627 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
14628 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
14629 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14631 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
14632 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
14633 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
14634 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
14635 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
14636 21, 22, 23, 24, -1, -1, -1, -1, 151, 30,
14637 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
14638 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
14639 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
14640 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
14641 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14642 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14643 -1, -1, -1, 94, -1, -1, -1, 98, -1, -1,
14644 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
14645 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
14646 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
14647 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
14648 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
14649 151, 30, 31, 32, 33, 34, 35, 36, -1, -1,
14650 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
14651 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
14652 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
14653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14655 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
14656 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
14657 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
14658 -1, -1, -1, -1, -1, -1, 125, 3, 4, 5,
14659 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
14660 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
14661 -1, -1, 151, -1, 30, 31, 32, 33, 34, 35,
14662 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
14663 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
14664 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
14665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14668 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
14669 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
14670 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
14671 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
14672 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
14673 24, -1, -1, -1, -1, 151, 30, 31, 32, 33,
14674 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
14675 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
14676 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
14677 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
14678 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14680 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
14681 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
14682 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
14683 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
14684 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
14685 22, 23, 24, -1, -1, -1, -1, 151, 30, 31,
14686 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
14687 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
14688 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
14689 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
14690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14692 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
14693 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
14694 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
14695 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
14696 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
14697 20, 21, 22, 23, 24, -1, -1, -1, -1, 151,
14698 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
14699 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
14700 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
14701 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
14702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14704 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
14705 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
14706 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
14707 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
14708 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
14709 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
14710 -1, 151, 30, 31, 32, 33, 34, 35, 36, 37,
14711 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
14712 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
14713 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14714 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
14715 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
14716 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
14717 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
14718 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14719 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14720 -1, -1, 130, 131, 132, 133, 134, 135, 136, -1,
14721 -1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
14722 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
14723 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
14724 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
14725 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
14726 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
14727 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
14728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14729 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
14730 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
14731 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
14732 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
14733 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14734 -1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
14735 133, 134, 135, -1, -1, -1, -1, -1, 141, 142,
14736 143, 144, 145, 146, 147, 3, 4, 5, 6, 7,
14737 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
14738 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
14739 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
14740 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
14741 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
14742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14743 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
14744 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
14745 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
14746 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
14747 108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
14748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14749 -1, -1, 130, 131, 132, 133, 134, 135, -1, -1,
14750 -1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
14751 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
14752 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
14753 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
14754 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
14755 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
14756 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
14757 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14758 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
14759 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
14760 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
14761 -1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
14762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14763 -1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
14764 133, 134, 135, -1, -1, -1, -1, -1, 141, 142,
14765 143, 144, 145, 146, 147, 3, 4, 5, 6, 7,
14766 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
14767 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
14768 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
14769 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
14770 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
14771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14772 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
14773 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
14774 -1, -1, -1, -1, 92, 93, 94, 95, 33, 34,
14775 35, 36, -1, -1, -1, -1, -1, -1, -1, 107,
14776 108, -1, -1, -1, 49, 50, 51, 52, -1, -1,
14777 -1, 56, -1, -1, 59, 60, 61, 62, 63, -1,
14778 -1, -1, 130, 131, 132, 133, 134, 135, -1, -1,
14779 -1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
14780 -1, 44, -1, -1, -1, 90, 91, -1, -1, -1,
14781 -1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
14782 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
14783 115, 116, 117, 118, 77, 78, 79, 80, 81, 82,
14784 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
14785 135, 94, 95, -1, -1, -1, -1, -1, -1, -1,
14786 -1, -1, -1, -1, -1, -1, 151, -1, -1, -1,
14787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14788 -1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
14789 133, -1, 135, 52, 53, -1, -1, 56, 141, 142,
14790 143, 144, 145, -1, -1, -1, 149, -1, -1, -1,
14791 -1, -1, -1, -1, -1, -1, 75, 76, 77, 78,
14792 79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
14793 -1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
14794 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
14795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14796 -1, -1, -1, -1, -1, -1, 52, 53, -1, -1,
14797 56, 130, 131, 132, 133, 134, 135, 136, -1, -1,
14798 -1, -1, 141, 142, 143, 144, 145, 146, 147, 75,
14799 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
14800 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
14801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14802 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
14803 -1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
14804 53, -1, -1, 56, 130, 131, 132, 133, 134, 135,
14805 136, -1, -1, -1, -1, 141, 142, 143, 144, 145,
14806 146, 147, 75, 76, 77, 78, 79, 80, 81, 82,
14807 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
14808 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
14809 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
14810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14811 -1, -1, 52, 53, -1, -1, 56, 130, 131, 132,
14812 133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
14813 143, 144, 145, 146, 147, 75, 76, 77, 78, 79,
14814 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
14815 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
14816 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
14817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14818 -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
14819 130, 131, 132, 133, 134, 135, 136, -1, -1, -1,
14820 -1, 141, 142, 143, 144, 145, 146, 147, 75, 76,
14821 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
14822 87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
14823 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14824 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
14825 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
14826 -1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
14827 -1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
14828 147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
14829 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
14830 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
14831 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
14832 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14833 -1, 52, 53, -1, -1, 56, 130, 131, 132, 133,
14834 134, 135, 136, -1, -1, -1, -1, 141, 142, 143,
14835 144, 145, 146, 147, 75, 76, 77, 78, 79, 80,
14836 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
14837 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
14838 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
14839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14840 -1, -1, -1, -1, 52, 53, -1, -1, 56, 130,
14841 131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
14842 141, 142, 143, 144, 145, 146, 147, 75, 76, 77,
14843 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
14844 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
14845 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
14846 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14847 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
14848 -1, 56, 130, 131, 132, 133, 134, 135, 136, -1,
14849 -1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
14850 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
14851 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
14852 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14853 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
14854 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14855 52, 53, -1, -1, 56, 130, 131, 132, 133, 134,
14856 135, 136, -1, -1, -1, -1, 141, 142, 143, 144,
14857 145, 146, 147, 75, 76, 77, 78, 79, 80, 81,
14858 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
14859 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
14860 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
14861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14862 -1, -1, -1, 52, 53, -1, -1, 56, 130, 131,
14863 132, 133, 134, 135, 136, -1, -1, -1, -1, 141,
14864 142, 143, 144, 145, 146, 147, 75, 76, 77, 78,
14865 79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
14866 -1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
14867 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
14868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14869 -1, -1, -1, -1, -1, -1, 52, 53, -1, -1,
14870 56, 130, 131, 132, 133, 134, 135, 136, -1, -1,
14871 -1, -1, 141, 142, 143, 144, 145, 146, 147, 75,
14872 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
14873 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
14874 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14875 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
14876 -1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
14877 53, -1, -1, 56, 130, 131, 132, 133, 134, 135,
14878 136, -1, -1, -1, -1, 141, 142, 143, 144, 145,
14879 146, 147, 75, 76, 77, 78, 79, 80, 81, 82,
14880 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
14881 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
14882 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
14883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14884 -1, -1, 52, 53, -1, -1, 56, 130, 131, 132,
14885 133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
14886 143, 144, 145, 146, 147, 75, 76, 77, 78, 79,
14887 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
14888 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
14889 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
14890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14891 -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
14892 130, 131, 132, 133, 134, 135, 136, -1, -1, -1,
14893 -1, 141, 142, 143, 144, 145, 146, 147, 75, 76,
14894 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
14895 87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
14896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14897 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
14898 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
14899 -1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
14900 -1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
14901 147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
14902 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
14903 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
14904 -1, -1, -1, 107, 108, 77, 78, 79, 80, 81,
14905 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
14906 -1, -1, 94, 95, -1, -1, 130, 131, 132, 133,
14907 134, 135, -1, -1, -1, -1, -1, 141, 142, 143,
14908 144, 145, 146, 147, -1, -1, -1, -1, -1, -1,
14909 -1, -1, -1, -1, -1, -1, -1, -1, 130, 131,
14910 132, 133, -1, 135, -1, -1, -1, -1, -1, 141,
14911 142, 143, 144, 145, -1, -1, -1, 149, 77, 78,
14912 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
14913 89, -1, -1, -1, -1, 94, 95, -1, -1, -1,
14914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
14917 -1, 130, 131, 132, 133, -1, 135, -1, -1, -1,
14918 -1, -1, 141, 142, 143, 144, 145 ];
14919
14920#[allow(non_upper_case_globals)]
14923const yystos_: &'static [i32] = &[ 0, 154, 155, 0, 1, 3, 4, 5, 6, 7,
14924 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
14925 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
14926 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
14927 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
14928 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
14929 112, 113, 114, 115, 116, 117, 118, 146, 147, 151,
14930 156, 157, 158, 165, 167, 169, 173, 174, 179, 180,
14931 183, 184, 185, 187, 188, 189, 191, 192, 201, 204,
14932 219, 229, 230, 231, 232, 233, 234, 235, 236, 237,
14933 238, 239, 248, 270, 280, 281, 330, 331, 332, 333,
14934 334, 335, 336, 339, 341, 342, 356, 357, 359, 360,
14935 361, 363, 364, 365, 366, 367, 405, 419, 158, 3,
14936 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14937 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
14938 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
14939 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
14940 52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
14941 82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
14942 130, 131, 132, 133, 134, 135, 141, 142, 143, 144,
14943 145, 146, 147, 195, 196, 197, 199, 200, 356, 39,
14944 58, 98, 101, 107, 108, 109, 112, 147, 173, 174,
14945 184, 192, 201, 205, 211, 214, 216, 229, 363, 364,
14946 366, 367, 403, 404, 211, 136, 212, 213, 136, 208,
14947 212, 136, 140, 412, 54, 196, 412, 126, 159, 126,
14948 21, 22, 31, 32, 183, 201, 229, 248, 201, 201,
14949 201, 56, 1, 47, 101, 161, 162, 163, 165, 186,
14950 187, 419, 165, 221, 206, 216, 403, 419, 205, 402,
14951 403, 419, 46, 98, 125, 151, 173, 174, 191, 219,
14952 229, 363, 364, 367, 271, 54, 55, 57, 195, 345,
14953 358, 345, 346, 347, 139, 139, 139, 139, 201, 179,
14954 201, 361, 138, 140, 411, 417, 418, 40, 41, 42,
14955 43, 44, 37, 38, 136, 370, 371, 372, 373, 419,
14956 370, 372, 26, 126, 208, 212, 240, 282, 28, 241,
14957 278, 129, 125, 101, 107, 188, 129, 25, 77, 78,
14958 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
14959 89, 94, 95, 100, 130, 131, 132, 133, 135, 141,
14960 142, 143, 144, 145, 149, 203, 203, 68, 96, 97,
14961 128, 409, 220, 169, 176, 176, 177, 178, 177, 176,
14962 411, 418, 98, 185, 192, 229, 253, 363, 364, 367,
14963 52, 56, 94, 98, 193, 194, 229, 363, 364, 367,
14964 194, 33, 34, 35, 36, 49, 50, 51, 52, 56,
14965 136, 172, 195, 365, 400, 211, 97, 409, 410, 282,
14966 333, 99, 99, 125, 205, 56, 205, 205, 205, 345,
14967 370, 370, 129, 100, 125, 215, 419, 97, 128, 409,
14968 99, 99, 125, 215, 211, 412, 413, 211, 91, 210,
14969 211, 216, 377, 403, 419, 169, 413, 169, 54, 64,
14970 65, 166, 136, 202, 156, 161, 97, 409, 99, 164,
14971 186, 103, 411, 418, 413, 222, 413, 137, 125, 140,
14972 416, 125, 416, 127, 416, 412, 56, 188, 190, 361,
14973 371, 125, 97, 128, 409, 272, 66, 119, 121, 122,
14974 348, 119, 119, 348, 67, 348, 337, 343, 340, 344,
14975 77, 138, 158, 176, 176, 176, 176, 165, 169, 169,
14976 52, 54, 55, 56, 57, 58, 77, 91, 101, 107,
14977 108, 109, 131, 143, 258, 318, 374, 376, 377, 378,
14978 379, 380, 381, 382, 383, 384, 387, 388, 389, 390,
14979 391, 394, 395, 396, 397, 398, 129, 160, 161, 376,
14980 129, 160, 283, 106, 181, 284, 279, 107, 179, 205,
14981 216, 217, 218, 186, 125, 191, 125, 167, 168, 179,
14982 192, 201, 205, 207, 218, 229, 367, 171, 201, 201,
14983 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
14984 201, 170, 201, 201, 201, 201, 201, 201, 201, 201,
14985 201, 201, 201, 52, 53, 56, 199, 208, 405, 406,
14986 407, 210, 216, 52, 53, 56, 199, 208, 406, 160,
14987 13, 249, 417, 249, 161, 176, 161, 411, 225, 56,
14988 97, 128, 409, 25, 169, 52, 56, 193, 133, 368,
14989 97, 128, 409, 228, 401, 68, 97, 408, 52, 56,
14990 406, 168, 201, 207, 168, 207, 198, 124, 129, 129,
14991 205, 107, 205, 214, 403, 52, 56, 210, 52, 56,
14992 404, 413, 103, 413, 125, 413, 125, 413, 196, 223,
14993 201, 127, 127, 406, 406, 207, 159, 413, 163, 413,
14994 403, 125, 190, 52, 56, 210, 52, 56, 136, 274,
14995 376, 350, 349, 119, 338, 348, 66, 119, 119, 338,
14996 66, 119, 201, 101, 107, 254, 255, 256, 257, 379,
14997 125, 399, 419, 413, 259, 260, 125, 375, 205, 125,
14998 399, 34, 52, 125, 375, 52, 125, 375, 52, 184,
14999 201, 10, 247, 8, 242, 326, 419, 417, 184, 201,
15000 247, 285, 286, 182, 287, 288, 287, 205, 125, 44,
15001 413, 190, 125, 44, 129, 44, 97, 128, 409, 52,
15002 56, 58, 90, 91, 98, 101, 104, 105, 107, 112,
15003 135, 270, 297, 298, 299, 300, 303, 308, 309, 310,
15004 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
15005 323, 324, 325, 330, 331, 334, 335, 336, 339, 341,
15006 342, 364, 388, 297, 412, 99, 99, 208, 212, 412,
15007 414, 125, 99, 99, 208, 209, 212, 419, 247, 161,
15008 13, 161, 247, 27, 250, 417, 247, 25, 224, 292,
15009 17, 244, 290, 52, 56, 210, 52, 56, 177, 227,
15010 369, 226, 52, 56, 193, 210, 160, 169, 175, 209,
15011 212, 196, 205, 205, 215, 99, 99, 414, 99, 99,
15012 377, 403, 169, 416, 188, 414, 376, 273, 351, 54,
15013 55, 57, 355, 367, 139, 348, 139, 139, 139, 256,
15014 379, 125, 413, 125, 398, 205, 129, 374, 381, 394,
15015 396, 384, 388, 390, 382, 391, 396, 380, 382, 44,
15016 44, 205, 218, 327, 419, 9, 15, 243, 245, 329,
15017 419, 44, 44, 127, 130, 265, 266, 419, 285, 247,
15018 265, 247, 107, 205, 165, 190, 165, 201, 52, 56,
15019 210, 52, 56, 321, 321, 56, 193, 305, 298, 306,
15020 307, 308, 309, 312, 414, 304, 412, 415, 52, 345,
15021 52, 54, 55, 57, 101, 362, 100, 125, 130, 125,
15022 125, 298, 88, 89, 97, 128, 136, 301, 302, 52,
15023 150, 168, 207, 168, 207, 181, 137, 99, 168, 207,
15024 168, 207, 181, 14, 245, 246, 251, 252, 419, 252,
15025 293, 290, 247, 107, 205, 289, 247, 414, 161, 417,
15026 176, 160, 414, 247, 413, 172, 282, 278, 99, 413,
15027 125, 413, 267, 412, 29, 123, 275, 352, 413, 254,
15028 257, 255, 125, 375, 125, 375, 399, 125, 375, 125,
15029 375, 375, 201, 201, 100, 328, 419, 161, 161, 201,
15030 201, 258, 261, 264, 267, 380, 382, 383, 385, 386,
15031 392, 393, 396, 398, 161, 127, 160, 205, 414, 298,
15032 414, 298, 310, 312, 414, 125, 112, 313, 127, 124,
15033 176, 322, 306, 310, 303, 311, 312, 315, 319, 321,
15034 321, 193, 414, 413, 306, 309, 313, 306, 309, 313,
15035 201, 168, 207, 161, 176, 247, 247, 296, 297, 247,
15036 205, 125, 249, 247, 160, 417, 247, 103, 138, 277,
15037 276, 353, 125, 125, 382, 396, 382, 382, 98, 192,
15038 229, 363, 364, 367, 249, 329, 399, 267, 130, 259,
15039 125, 262, 263, 98, 229, 125, 399, 125, 262, 125,
15040 262, 413, 125, 125, 345, 415, 103, 125, 125, 413,
15041 413, 413, 414, 414, 414, 249, 249, 40, 41, 107,
15042 205, 161, 247, 52, 268, 269, 378, 160, 161, 354,
15043 255, 375, 125, 375, 375, 375, 56, 97, 128, 409,
15044 161, 130, 229, 261, 393, 396, 56, 97, 385, 390,
15045 382, 392, 396, 382, 311, 311, 310, 312, 161, 294,
15046 176, 176, 205, 252, 290, 291, 125, 412, 247, 127,
15047 161, 382, 52, 56, 210, 52, 56, 326, 125, 262,
15048 125, 262, 52, 56, 399, 125, 262, 125, 262, 262,
15049 125, 251, 161, 269, 120, 375, 414, 382, 396, 382,
15050 382, 252, 292, 295, 262, 125, 262, 262, 262, 382,
15051 262 ];
15052
15053#[allow(non_upper_case_globals)]
15055const yyr1_: &'static [i32] = &[ 0, 153, 155, 154, 156, 157, 157, 157, 157, 158,
15056 158, 159, 160, 160, 161, 162, 162, 162, 162, 163,
15057 164, 163, 166, 165, 165, 165, 165, 165, 165, 165,
15058 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
15059 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
15060 167, 167, 168, 168, 168, 169, 169, 169, 169, 169,
15061 170, 169, 171, 169, 169, 172, 173, 175, 174, 176,
15062 178, 177, 179, 179, 180, 180, 182, 181, 183, 184,
15063 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
15064 185, 185, 186, 186, 187, 187, 187, 187, 187, 187,
15065 187, 187, 187, 187, 188, 188, 189, 189, 190, 190,
15066 191, 191, 191, 191, 191, 191, 191, 191, 191, 192,
15067 192, 192, 192, 192, 192, 192, 192, 192, 193, 193,
15068 194, 194, 194, 195, 195, 195, 195, 195, 196, 196,
15069 197, 198, 197, 199, 199, 199, 199, 199, 199, 199,
15070 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
15071 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
15072 199, 199, 199, 200, 200, 200, 200, 200, 200, 200,
15073 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
15074 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
15075 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
15076 200, 200, 200, 200, 201, 201, 201, 201, 201, 201,
15077 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
15078 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
15079 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
15080 201, 201, 201, 201, 202, 201, 201, 201, 201, 201,
15081 201, 201, 203, 203, 203, 203, 204, 204, 205, 206,
15082 206, 206, 206, 207, 207, 208, 208, 208, 209, 209,
15083 210, 210, 210, 210, 210, 211, 211, 211, 211, 211,
15084 213, 212, 214, 214, 215, 215, 216, 216, 216, 216,
15085 217, 217, 218, 218, 218, 219, 219, 219, 219, 219,
15086 219, 219, 219, 219, 219, 219, 220, 219, 221, 219,
15087 222, 219, 219, 219, 219, 219, 219, 219, 219, 219,
15088 219, 223, 219, 219, 219, 219, 219, 219, 219, 219,
15089 219, 219, 219, 224, 219, 225, 219, 219, 219, 226,
15090 219, 227, 219, 228, 219, 219, 219, 219, 219, 219,
15091 219, 229, 230, 231, 232, 233, 234, 235, 236, 237,
15092 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
15093 248, 249, 249, 249, 250, 250, 251, 251, 252, 252,
15094 253, 253, 254, 254, 255, 255, 256, 256, 256, 256,
15095 256, 257, 257, 258, 258, 260, 259, 261, 261, 261,
15096 261, 262, 262, 263, 264, 264, 264, 264, 264, 264,
15097 264, 264, 264, 264, 264, 264, 264, 264, 264, 265,
15098 265, 266, 266, 267, 267, 268, 268, 269, 269, 271,
15099 272, 273, 270, 274, 274, 276, 275, 277, 275, 279,
15100 278, 280, 280, 280, 280, 281, 281, 281, 281, 281,
15101 281, 281, 281, 281, 283, 282, 284, 282, 286, 285,
15102 288, 287, 289, 289, 289, 289, 290, 291, 291, 293,
15103 294, 292, 295, 295, 296, 296, 296, 297, 297, 297,
15104 297, 297, 297, 298, 299, 299, 300, 300, 301, 302,
15105 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
15106 303, 303, 303, 304, 303, 303, 305, 303, 306, 306,
15107 306, 306, 306, 306, 307, 307, 308, 308, 309, 310,
15108 310, 311, 311, 312, 313, 313, 313, 313, 314, 314,
15109 315, 315, 316, 316, 317, 317, 318, 319, 319, 320,
15110 320, 320, 320, 320, 320, 320, 320, 320, 320, 321,
15111 321, 321, 321, 321, 321, 321, 321, 321, 321, 322,
15112 323, 323, 324, 325, 325, 325, 326, 326, 327, 327,
15113 327, 328, 328, 329, 329, 330, 330, 331, 332, 332,
15114 332, 333, 334, 335, 336, 337, 337, 338, 338, 339,
15115 340, 340, 341, 342, 343, 343, 344, 344, 345, 345,
15116 346, 346, 347, 347, 348, 349, 348, 350, 351, 352,
15117 353, 354, 348, 355, 355, 355, 355, 356, 356, 357,
15118 358, 358, 358, 358, 359, 360, 360, 361, 361, 361,
15119 361, 362, 362, 362, 363, 363, 363, 363, 363, 364,
15120 364, 364, 364, 364, 364, 364, 365, 365, 366, 366,
15121 367, 367, 369, 368, 368, 370, 370, 371, 372, 373,
15122 372, 374, 374, 374, 374, 374, 375, 375, 376, 376,
15123 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
15124 376, 376, 376, 377, 378, 378, 378, 378, 379, 379,
15125 380, 381, 381, 382, 382, 383, 384, 384, 385, 385,
15126 386, 386, 387, 387, 388, 388, 389, 390, 390, 391,
15127 392, 393, 393, 394, 394, 395, 395, 396, 396, 397,
15128 397, 398, 398, 399, 399, 400, 401, 400, 402, 402,
15129 403, 403, 404, 404, 404, 404, 404, 405, 405, 405,
15130 406, 406, 407, 407, 407, 408, 408, 409, 409, 410,
15131 410, 411, 411, 412, 412, 413, 414, 415, 416, 416,
15132 416, 417, 417, 418, 418, 419 ];
15133
15134#[allow(non_upper_case_globals)]
15136const yyr2_: &'static [i32] = &[ 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
15137 2, 3, 5, 3, 2, 1, 1, 3, 1, 1,
15138 0, 3, 0, 4, 3, 3, 3, 2, 3, 3,
15139 3, 3, 3, 4, 1, 3, 3, 5, 3, 1,
15140 3, 3, 6, 5, 5, 5, 5, 4, 6, 4,
15141 6, 3, 1, 3, 1, 1, 3, 3, 3, 2,
15142 0, 4, 0, 4, 1, 1, 2, 0, 5, 1,
15143 0, 3, 1, 1, 1, 4, 0, 4, 1, 2,
15144 3, 4, 5, 4, 5, 2, 2, 2, 2, 2,
15145 1, 3, 1, 3, 1, 2, 3, 5, 2, 4,
15146 2, 4, 1, 3, 1, 3, 2, 3, 1, 3,
15147 1, 1, 4, 3, 3, 3, 3, 2, 1, 1,
15148 1, 4, 3, 3, 3, 3, 2, 1, 1, 1,
15149 2, 1, 3, 1, 1, 1, 1, 1, 1, 1,
15150 1, 0, 4, 1, 1, 1, 1, 1, 1, 1,
15151 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15152 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15153 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15154 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15155 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15156 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15157 1, 1, 1, 1, 3, 3, 6, 5, 5, 5,
15158 5, 4, 3, 3, 3, 2, 2, 2, 2, 3,
15159 3, 3, 3, 3, 3, 4, 2, 2, 3, 3,
15160 3, 3, 1, 3, 3, 3, 3, 3, 2, 2,
15161 3, 3, 3, 3, 0, 4, 6, 4, 6, 4,
15162 6, 1, 1, 1, 1, 1, 3, 3, 1, 1,
15163 2, 4, 2, 1, 3, 3, 5, 3, 1, 1,
15164 1, 1, 2, 4, 2, 1, 2, 2, 4, 1,
15165 0, 2, 2, 1, 2, 1, 1, 2, 3, 4,
15166 1, 1, 3, 4, 2, 1, 1, 1, 1, 1,
15167 1, 1, 1, 1, 1, 1, 0, 4, 0, 3,
15168 0, 4, 3, 3, 2, 3, 3, 1, 4, 3,
15169 1, 0, 6, 4, 3, 2, 1, 2, 1, 6,
15170 6, 4, 4, 0, 6, 0, 5, 5, 6, 0,
15171 6, 0, 7, 0, 5, 4, 4, 1, 1, 1,
15172 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15173 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15174 1, 1, 1, 2, 1, 1, 1, 5, 1, 2,
15175 1, 1, 1, 3, 1, 3, 1, 3, 5, 1,
15176 3, 2, 1, 1, 1, 0, 2, 4, 2, 2,
15177 1, 2, 0, 1, 6, 8, 4, 6, 4, 2,
15178 6, 2, 4, 6, 2, 4, 2, 4, 1, 1,
15179 1, 3, 4, 1, 4, 1, 3, 1, 1, 0,
15180 0, 0, 6, 4, 1, 0, 4, 0, 4, 0,
15181 4, 2, 4, 5, 5, 2, 4, 4, 3, 3,
15182 3, 2, 1, 4, 0, 4, 0, 4, 0, 3,
15183 0, 3, 1, 2, 3, 4, 5, 1, 1, 0,
15184 0, 7, 1, 1, 1, 3, 3, 1, 2, 3,
15185 1, 1, 1, 1, 3, 1, 3, 1, 1, 1,
15186 1, 1, 4, 4, 4, 3, 4, 4, 4, 3,
15187 3, 3, 2, 0, 4, 2, 0, 4, 1, 1,
15188 2, 2, 4, 1, 2, 3, 1, 3, 5, 2,
15189 1, 1, 3, 1, 3, 1, 2, 1, 1, 3,
15190 2, 1, 1, 3, 2, 1, 2, 1, 1, 1,
15191 3, 3, 2, 2, 1, 1, 1, 2, 2, 1,
15192 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15193 2, 2, 4, 2, 3, 1, 6, 1, 1, 1,
15194 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
15195 2, 3, 3, 3, 4, 0, 3, 1, 2, 4,
15196 0, 3, 4, 4, 0, 3, 0, 3, 0, 2,
15197 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
15198 0, 0, 8, 1, 1, 1, 1, 1, 1, 2,
15199 1, 1, 1, 1, 3, 1, 2, 1, 1, 1,
15200 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15201 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15202 1, 1, 0, 4, 0, 1, 1, 3, 1, 0,
15203 3, 4, 2, 2, 1, 1, 2, 0, 6, 8,
15204 4, 6, 4, 6, 2, 4, 6, 2, 4, 2,
15205 4, 1, 0, 1, 1, 1, 1, 1, 1, 1,
15206 1, 1, 3, 1, 3, 1, 2, 1, 2, 1,
15207 1, 3, 1, 3, 1, 1, 1, 2, 1, 3,
15208 3, 1, 3, 1, 3, 1, 1, 2, 1, 1,
15209 1, 2, 1, 2, 1, 1, 0, 4, 1, 2,
15210 1, 3, 3, 2, 1, 4, 2, 1, 1, 1,
15211 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15212 1, 0, 1, 0, 1, 2, 2, 2, 0, 1,
15213 1, 1, 1, 1, 2, 0 ];
15214
15215
15216#[allow(non_upper_case_globals)]
15218const yyrline_: &'static [i32] = &[ 0, 346, 346, 346, 364, 373, 377, 381, 387, 393,
15219 397, 406, 418, 441, 460, 469, 473, 477, 483, 489,
15220 494, 493, 504, 503, 514, 524, 534, 538, 547, 558,
15221 569, 580, 591, 611, 626, 630, 643, 660, 689, 699,
15222 705, 715, 725, 740, 757, 774, 791, 808, 828, 864,
15223 886, 924, 936, 942, 965, 971, 975, 986, 997, 1008,
15224 1020, 1019, 1050, 1049, 1079, 1085, 1103, 1115, 1114, 1135,
15225 1143, 1143, 1161, 1165, 1171, 1175, 1191, 1190, 1210, 1216,
15226 1229, 1251, 1264, 1286, 1299, 1321, 1333, 1345, 1357, 1369,
15227 1383, 1393, 1405, 1415, 1437, 1441, 1447, 1454, 1466, 1473,
15228 1485, 1498, 1509, 1522, 1535, 1539, 1551, 1555, 1563, 1567,
15229 1575, 1581, 1587, 1598, 1613, 1623, 1638, 1650, 1661, 1671,
15230 1677, 1683, 1694, 1704, 1714, 1724, 1736, 1747, 1757, 1761,
15231 1767, 1773, 1779, 1791, 1795, 1799, 1803, 1808, 1814, 1820,
15232 1826, 1831, 1830, 1843, 1844, 1845, 1846, 1847, 1848, 1849,
15233 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859,
15234 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869,
15235 1870, 1871, 1872, 1875, 1876, 1877, 1878, 1879, 1880, 1881,
15236 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891,
15237 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901,
15238 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911,
15239 1912, 1913, 1914, 1915, 1918, 1928, 1938, 1953, 1970, 1987,
15240 2004, 2021, 2037, 2047, 2063, 2079, 2092, 2105, 2118, 2131,
15241 2137, 2143, 2149, 2155, 2161, 2167, 2180, 2189, 2198, 2204,
15242 2210, 2216, 2222, 2226, 2232, 2238, 2244, 2250, 2260, 2271,
15243 2280, 2286, 2292, 2303, 2315, 2314, 2332, 2347, 2367, 2403,
15244 2425, 2463, 2469, 2473, 2477, 2481, 2487, 2497, 2514, 2522,
15245 2526, 2530, 2542, 2558, 2564, 2589, 2599, 2620, 2636, 2646,
15246 2659, 2663, 2667, 2671, 2678, 2694, 2700, 2707, 2718, 2730,
15247 2736, 2736, 2764, 2773, 2788, 2792, 2798, 2802, 2815, 2821,
15248 2830, 2836, 2842, 2848, 2856, 2871, 2875, 2879, 2883, 2887,
15249 2891, 2895, 2899, 2903, 2907, 2911, 2925, 2924, 2938, 2938,
15250 2948, 2948, 2958, 2968, 2978, 2984, 2994, 3004, 3016, 3028,
15251 3040, 3053, 3052, 3070, 3081, 3092, 3114, 3118, 3131, 3135,
15252 3154, 3173, 3189, 3206, 3205, 3229, 3228, 3251, 3269, 3287,
15253 3286, 3317, 3316, 3343, 3342, 3368, 3387, 3408, 3420, 3432,
15254 3444, 3458, 3466, 3472, 3479, 3485, 3491, 3497, 3503, 3509,
15255 3522, 3535, 3542, 3548, 3554, 3560, 3566, 3572, 3578, 3585,
15256 3591, 3600, 3604, 3608, 3614, 3618, 3624, 3629, 3656, 3660,
15257 3668, 3672, 3678, 3684, 3696, 3700, 3708, 3712, 3718, 3730,
15258 3734, 3747, 3753, 3761, 3765, 3771, 3771, 3781, 3793, 3800,
15259 3807, 3814, 3819, 3824, 3830, 3844, 3860, 3872, 3886, 3898,
15260 3902, 3916, 3934, 3946, 3960, 3967, 3979, 3986, 3998, 4004,
15261 4010, 4017, 4031, 4051, 4055, 4061, 4065, 4073, 4081, 4088,
15262 4094, 4099, 4087, 4132, 4148, 4162, 4161, 4178, 4177, 4196,
15263 4195, 4215, 4228, 4242, 4265, 4289, 4304, 4319, 4334, 4347,
15264 4362, 4377, 4391, 4403, 4417, 4416, 4436, 4435, 4456, 4456,
15265 4481, 4481, 4505, 4509, 4522, 4528, 4537, 4552, 4556, 4564,
15266 4574, 4563, 4602, 4606, 4613, 4617, 4622, 4629, 4633, 4644,
15267 4656, 4662, 4668, 4676, 4682, 4692, 4698, 4708, 4714, 4721,
15268 4728, 4732, 4736, 4750, 4763, 4776, 4795, 4809, 4822, 4835,
15269 4854, 4866, 4876, 4888, 4887, 4905, 4916, 4915, 4933, 4942,
15270 4946, 4958, 4971, 4988, 4999, 5008, 5022, 5026, 5037, 5050,
15271 5056, 5064, 5068, 5076, 5082, 5089, 5093, 5097, 5103, 5107,
15272 5115, 5124, 5134, 5140, 5148, 5161, 5176, 5187, 5191, 5207,
15273 5211, 5227, 5243, 5256, 5269, 5273, 5277, 5281, 5294, 5309,
15274 5313, 5317, 5321, 5325, 5329, 5333, 5337, 5341, 5347, 5353,
15275 5363, 5380, 5392, 5408, 5414, 5424, 5430, 5458, 5464, 5468,
15276 5472, 5478, 5484, 5490, 5496, 5502, 5506, 5512, 5524, 5534,
15277 5538, 5546, 5560, 5574, 5589, 5602, 5606, 5616, 5620, 5628,
15278 5641, 5644, 5654, 5666, 5679, 5682, 5693, 5696, 5707, 5710,
15279 5719, 5722, 5731, 5734, 5742, 5749, 5748, 5759, 5764, 5767,
15280 5771, 5775, 5758, 5799, 5803, 5808, 5812, 5818, 5819, 5822,
15281 5831, 5832, 5833, 5834, 5837, 5846, 5850, 5861, 5867, 5873,
15282 5879, 5887, 5893, 5899, 5907, 5913, 5919, 5925, 5931, 5939,
15283 5945, 5951, 5957, 5963, 5969, 5975, 5983, 5989, 5997, 6003,
15284 6011, 6017, 6026, 6025, 6040, 6045, 6049, 6056, 6068, 6072,
15285 6072, 6090, 6102, 6109, 6116, 6124, 6136, 6141, 6146, 6160,
15286 6176, 6188, 6202, 6214, 6228, 6235, 6247, 6261, 6268, 6280,
15287 6287, 6299, 6304, 6309, 6315, 6319, 6323, 6327, 6333, 6337,
15288 6347, 6356, 6363, 6375, 6379, 6388, 6405, 6413, 6423, 6430,
15289 6439, 6443, 6452, 6456, 6464, 6468, 6474, 6490, 6502, 6514,
15290 6528, 6542, 6546, 6554, 6558, 6566, 6570, 6576, 6589, 6601,
15291 6605, 6611, 6622, 6634, 6638, 6644, 6650, 6650, 6682, 6686,
15292 6692, 6696, 6704, 6714, 6723, 6729, 6740, 6748, 6752, 6756,
15293 6762, 6766, 6772, 6776, 6780, 6786, 6790, 6796, 6800, 6806,
15294 6810, 6817, 6820, 6827, 6830, 6836, 6842, 6848, 6855, 6858,
15295 6862, 6868, 6872, 6878, 6882, 6889 ];
15296
15297
15298 fn yy_reduce_print(&self, yyrule: i32, yystack: &YYStack) {
15300 if !( self.is_debug() ) {
15301 return;
15302 }
15303
15304 let yylno = Self::yyrline_[i32_to_usize(yyrule)];
15305 let yynrhs = Self::yyr2_[i32_to_usize(yyrule)];
15306 self.yycdebug(&format!("Reducing stack by rule {} (line {}):", yyrule - 1, yylno));
15308
15309 for yyi in 0..yynrhs {
15311 let state: usize = i32_to_usize(yystack.state_at(i32_to_usize(yynrhs - (yyi + 1))));
15312 self.yy_symbol_print(
15313 &format!(" ${} =", yyi + 1),
15314 SymbolKind::get(Self::yystos_[state]),
15315 yystack.borrow_value_at(i32_to_usize(yynrhs - (yyi + 1))),
15316 yystack.location_at(i32_to_usize(yynrhs - (yyi + 1)))
15317 );
15318 }
15319 }
15320
15321 fn yytranslate_(t: i32) -> &'static SymbolKind
15324 {
15325 let code_max: i32 = 407;
15327 if t <= 0 {
15328 SymbolKind::get(0)
15329 } else if t <= code_max {
15330 let t = i32_to_usize(t);
15331 SymbolKind::get(Self::yytranslate_table_[t])
15332 } else {
15333 SymbolKind::get(2)
15334 }
15335 }
15336 #[allow(non_upper_case_globals)]
15337const yytranslate_table_: &'static [i32] = &[ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15340 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15341 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15342 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15343 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15356 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15357 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15358 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15359 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15360 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15361 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
15362 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
15363 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15364 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
15365 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
15366 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
15367 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
15368 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
15369 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
15370 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
15371 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
15372 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
15373 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
15374 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
15375 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
15376 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
15377 145, 146, 147, 148, 149, 150, 151, 152 ];
15378
15379
15380const YYLAST_: i32 = 14606;
15381const YYEMPTY_: i32 = -2;
15382const YYFINAL_: i32 = 3;
15383const YYNTOKENS_: i32 = 153;
15384
15385
15386}
15387
15388impl Parser {
15400 pub fn new<TInput>(input: TInput, options: ParserOptions) -> Self
15404 where
15405 TInput: Into<Vec<u8>>
15406 {
15407 let ParserOptions {
15408 buffer_name,
15409 decoder,
15410 record_tokens,
15411 } = options;
15412
15413 let context = ParserContext::new();
15414 let current_arg_stack = CurrentArgStack::new();
15415 let max_numparam_stack = MaxNumparamStack::new();
15416 let pattern_variables = VariablesStack::new();
15417 let pattern_hash_keys = VariablesStack::new();
15418 let static_env = StaticEnvironment::new();
15419 let diagnostics = Diagnostics::new();
15420 let tokens_pool = Pool::new();
15421
15422 let input: Vec<u8> = input.into();
15423 let buffer_name: String = buffer_name;
15424
15425 let mut lexer = Lexer::new(input, buffer_name, decoder);
15426 lexer.context = context.clone();
15427 lexer.static_env = static_env.clone();
15428 lexer.diagnostics = diagnostics.clone();
15429 lexer.tokens_factory = tokens_pool.factory();
15430
15431 let builder = Builder::new(
15432 static_env.clone(),
15433 context.clone(),
15434 current_arg_stack.clone(),
15435 max_numparam_stack.clone(),
15436 pattern_variables.clone(),
15437 pattern_hash_keys.clone(),
15438 diagnostics.clone(),
15439 tokens_pool.factory(),
15440 );
15441
15442 let last_token_type = 0;
15443
15444 Self {
15445 yy_error_verbose: true,
15446 yynerrs: 0,
15447 yyerrstatus_: 0,
15448 result: None,
15449
15450 builder,
15451 context,
15452 current_arg_stack,
15453 max_numparam_stack,
15454 pattern_variables,
15455 pattern_hash_keys,
15456 static_env,
15457 last_token_type,
15458 tokens: vec![],
15459 diagnostics,
15460 yylexer: lexer,
15461 record_tokens,
15462 tokens_pool,
15463 }
15464 }
15465
15466 pub fn do_parse(mut self) -> ParserResult {
15474 self.parse();
15475
15476 ParserResult {
15477 ast: self.result,
15478 tokens: self.tokens,
15479 diagnostics: self.diagnostics.take_inner(),
15480 comments: self.yylexer.comments,
15481 magic_comments: self.yylexer.magic_comments,
15482 input: self.yylexer.buffer.input.decoded,
15483 }
15484 }
15485
15486 #[doc(hidden)]
15487 pub fn do_parse_with_state_validation(mut self) -> ParserResult {
15488 self.parse();
15489
15490 self.assert_state_is_final();
15491
15492 ParserResult {
15493 ast: self.result,
15494 tokens: self.tokens,
15495 diagnostics: self.diagnostics.take_inner(),
15496 comments: self.yylexer.comments,
15497 magic_comments: self.yylexer.magic_comments,
15498 input: self.yylexer.buffer.input.decoded,
15499 }
15500 }
15501
15502 fn warn(&mut self, loc: &Loc, message: DiagnosticMessage) {
15503 let diagnostic = Diagnostic {
15504 level: ErrorLevel::Warning,
15505 message,
15506 loc: *loc,
15507 };
15508 self.diagnostics.emit(diagnostic);
15509 }
15510
15511 fn yylex(&mut self) -> PoolValue<Token> {
15512 self.yylexer.yylex()
15513 }
15514
15515 fn next_token(&mut self) -> PoolValue<Token> {
15516 let token = self.yylex();
15517
15518 self.last_token_type = token.token_type;
15519
15520 if self.record_tokens {
15521 let mut token = token.clone();
15522 self.tokens.push(token.take_value());
15523 }
15524
15525 token
15526 }
15527
15528 fn check_kwarg_name(&self, ident_t: &Token) -> Result<(), ()> {
15529 let name = clone_value(ident_t);
15530 let first_char = name.as_str().chars().next().expect("kwarg name can't be empty");
15531 if first_char.is_lowercase() || first_char == '_' {
15532 Ok(())
15533 } else {
15534 let loc = ident_t.loc;
15535 self.diagnostics.emit(
15536 Diagnostic {
15537 level: ErrorLevel::Error,
15538 message: DiagnosticMessage::ConstArgument {},
15539 loc
15540 }
15541 );
15542 Err(())
15543 }
15544 }
15545
15546 fn validate_endless_method_name(&mut self, name_t: &Token) -> Result<(), ()> {
15547 let name = clone_value(name_t);
15548 match &name[..] {
15549 "==" | "===" | ">=" | "<=" | "!=" => Ok(()),
15550 other if other.ends_with('=') => {
15551 self.yyerror(&name_t.loc, DiagnosticMessage::EndlessSetterDefinition {}).map(|_| ())
15552 }
15553 _ => Ok(())
15554 }
15555 }
15556
15557 fn yyerror(&mut self, loc: &Loc, message: DiagnosticMessage) -> Result<i32, ()> {
15558 self.yyerror1(
15559 message,
15560 *loc
15561 )
15562 }
15563
15564 fn yyerror1(&mut self, message: DiagnosticMessage, loc: Loc) -> Result<i32, ()> {
15565 let diagnostic = Diagnostic { level: ErrorLevel::Error, message, loc };
15566 self.diagnostics.emit(diagnostic);
15567 Err(())
15568 }
15569
15570 fn report_syntax_error(&mut self, _stack: &YYStack, yytoken: &SymbolKind, loc: YYLoc) {
15571 let id: usize = yytoken.code().try_into().expect("failed to convert token code into i32, is it too big?");
15572 let diagnostic = Diagnostic {
15573 level: ErrorLevel::Error,
15574 message: DiagnosticMessage::UnexpectedToken {
15575 token_name: Lexer::TOKEN_NAMES[id].to_string()
15576 },
15577 loc,
15578 };
15579 self.diagnostics.emit(diagnostic);
15580 }
15581
15582 fn warn_eol(&mut self, loc: &Loc, tok: &str) {
15583 if self.yylexer.buffer.is_looking_at_eol() {
15584 self.warn(loc, DiagnosticMessage::TokAtEolWithoutExpression { token_name: tok.to_string() });
15585 }
15586 }
15587
15588 fn value_expr(&self, node: &Node) -> Result<(), ()> {
15589 self.builder.value_expr(node)
15590 }
15591
15592 #[doc(hidden)]
15593 fn assert_state_is_final(&self) {
15594 assert!(self.yylexer.cmdarg.is_empty());
15595 assert!(self.yylexer.cond.is_empty());
15596 assert!(self.yylexer.paren_nest == 0);
15597
15598 assert!(self.static_env.is_empty());
15599 assert!(self.context.is_empty());
15600 assert!(self.max_numparam_stack.is_empty());
15601 assert!(self.current_arg_stack.is_empty());
15602 assert!(self.pattern_variables.is_empty());
15603 assert!(self.pattern_hash_keys.is_empty());
15604 }
15605
15606 #[inline]
15607 fn is_debug(&self) -> bool {
15608 cfg!(feature = "debug-parser")
15609 }
15610
15611 fn local_push(&mut self) {
15612 self.static_env.extend_static();
15613 self.yylexer.cmdarg.push(false);
15614 self.yylexer.cond.push(false);
15615 self.max_numparam_stack.push(true);
15616 }
15617
15618 fn local_pop(&mut self) {
15619 self.static_env.unextend();
15620 self.yylexer.cmdarg.pop();
15621 self.yylexer.cond.pop();
15622 self.max_numparam_stack.pop();
15623 }
15624}